<?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>172566</bug_id>
          
          <creation_ts>2017-05-24 17:45:24 -0700</creation_ts>
          <short_desc>[WebIDL] Do a pass of cleanup in the bindings generator</short_desc>
          <delta_ts>2017-05-30 20:25:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1312463</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-24 17:45:24 -0700</bug_when>
    <thetext>[WebIDL] Do a pass of cleanup in the bindings generator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312666</commentid>
    <comment_count>1</comment_count>
      <attachid>311228</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-25 09:27:30 -0700</bug_when>
    <thetext>Created attachment 311228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312714</commentid>
    <comment_count>2</comment_count>
      <attachid>311228</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-25 10:35:50 -0700</bug_when>
    <thetext>Comment on attachment 311228
Patch

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

&gt; Source/WebCore/bindings/js/JSReadableStreamSourceCustom.cpp:42
&gt; +    // FIXME: Why is it ok to ASSERT the argument count here?

I don&apos;t think it is OK :S</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312715</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-25 10:40:00 -0700</bug_when>
    <thetext>Committed r217433: &lt;http://trac.webkit.org/changeset/217433&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312727</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-25 10:47:53 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #2)
&gt; Comment on attachment 311228 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=311228&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/js/JSReadableStreamSourceCustom.cpp:42
&gt; &gt; +    // FIXME: Why is it ok to ASSERT the argument count here?
&gt; 
&gt; I don&apos;t think it is OK :S

Youenn says it is &quot;safe&quot; because this API is only called from internal JS, not exposed to the Web. Either way, I still think this is very unnecessarily fragile and we should do an arg count check. Right now, it is calling uncheckedArgument() and would likely crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1312730</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-05-25 10:55:44 -0700</bug_when>
    <thetext>JSReadableStreamSourceCustom start/pull is only to be called by ReadableStream implementation which will always pass a controller.
It is safe to do so and all fetch API+body as stream tests would crash if we were to have an issue there.
If you want more safety here, removing uncheckedArgument and ensuring we got a controller would be needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314052</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-30 20:25:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/32479796&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311228</attachid>
            <date>2017-05-25 09:27:30 -0700</date>
            <delta_ts>2017-05-25 10:35:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172566-20170525092718.patch</filename>
            <type>text/plain</type>
            <size>593292</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzQyNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyOCBAQAorMjAxNy0wNS0yNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIFtXZWJJRExdIERvIGEgcGFzcyBvZiBj
bGVhbnVwIGluIHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MjU2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gU3BsaXQgSlNET01CaW5kaW5nQ2FsbGVyLmggaW50
byBmb3VyIG5ldyBmaWxlcyB0byBhbGxvdyBmb3IgbGVzcyAKKyAgICAgICAgICBoZWFkZXIgaW5j
bHVzaW9uIChvbmUgaW5jbHVkZXMgYSBidW5jaCBvZiBwcm9taXNlIHN0dWZmIHRoYXQgdXN1YWxs
eQorICAgICAgICAgIGlzbid0IG5lZWRlZCk6IAorICAgICAgICAgICAgLSBKU0RPTUNhc3RlZFRo
aXNFcnJvckJlaGF2aW9yICh3aXRoIHNoYXJlZCBjYXN0aW5nIGVudW0pCisgICAgICAgICAgICAt
IEpTRE9NQXR0cmlidXRlIChmb3IgYXR0cmlidXRlIGdldHRpbmcgLyBzZXR0aW5nKQorICAgICAg
ICAgICAgLSBKU0RPTU9wZXJhdGlvbiAoZm9yIG5vcm1hbCBvcGVyYXRpb25zKQorICAgICAgICAg
ICAgLSBKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UgKGZvciBvcGVyYXRpb25zIHJldHVy
bmluZyBwcm9taXNlcywgb2J2aW91c2x5KS4KKworICAgICAgICAgIEluIGFkZGl0aW9uIHRvIHNl
cGFyYXRpbmcgdGhlIGZpbGVzLCByZW5hbWUgdG8gYmUgbW9yZSBjb25zaXN0ZW50IHdpdGggbW9k
ZXJuCisgICAgICAgICAgYmluZGluZ3MgY29udmVudGlvbnMgKG5ldyBjbGFzc2VzIGFyZSBJRExB
dHRyaWJ1dGUsIElETE9wZXJhdGlvbiwgYW5kIAorICAgICAgICAgIElETE9wZXJhdGlvblJldHVy
bmluZ1Byb21pc2UpIGFuZCBzaW1wbGlmeSBmdW5jdGlvbiBuYW1lcworICAgICAgICAgICAgLSAn
Y2FsbE9wZXJhdGlvbicgYmVjb21lcyAnY2FsbCcKKyAgICAgICAgICAgIC0gJ2F0dHJpYnV0ZScg
YmVjb21lcyAnZ2V0JworICAgICAgICAgICAgLSAnc2V0QXR0cmlidXRlJyBiZWNvbWVzICdzZXQn
CisKKyAgICAgICAgLSBSZW1vdmUgZXh0cmEgZ2VuZXJhdGVkIHRyYW1wb2xpbmUgZnVuY3Rpb24g
Zm9yIG9wZXJhdGlvbnMgcmV0dXJuaW5nIHByb21pc2VzCisgICAgICAgICAgYnkgbWFraW5nIEpT
RE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZSBoYW5kbGUgYWxsIHRoZSBwcm9taXNlIHJlbGF0
ZWQgb3ZlcmhlYWQuCisKKyAgICAgICAgLSBNYWtlIFtDdXN0b21dIG9wZXJhdGlvbnMgcmV0dXJu
aW5nIHByb21pc2VzIGdvIHRocm91Z2ggdGhlIG5vcm1hbCBJRExPcGVyYXRpb25SZXR1cm5pbmdQ
cm9taXNlCisgICAgICAgICAgY29kZSBwYXRoIChzaW1wbGlmeWluZyBKU1JlYWRhYmxlU3RyZWFt
U291cmNlIGFuZCBKU1N1YnRsZUNyeXB0bykuIEFkZGVkIFtSZXR1cm5zT3duUHJvbWlzZV0KKyAg
ICAgICAgICBleHRlbmRlZCBhdHRyaWJ1dGUgdG8gYWxsb3cgc29tZSBmdW5jdGlvbnMgdGhhdCB3
YW50IHRvIHJldGFpbiBzcGVjaWFsaXplZCBiZWhhdmlvciB0byBkbyBzbworCisgICAgICAgIC0g
U3dhcCBvcmRlciBvZiB0cmFtcG9saW5lIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBvcGVyYXRpb24s
IHRvIGF2b2lkIHRoZSBuZWVkIGZvcgorICAgICAgICAgIGEgZm9yd2FyZCBkZWNsYXJhdGlvbiBh
bmQgbWFrZSByZWFkaW5nIG1vcmUgc3RyYWlnaHRmb3J3YXJkLgorCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgLyByZW1vdmUgZmlsZXMu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmdDYWxsZXIuaDogUmVtb3ZlZC4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaDog
QWRkZWQuCisgICAgICAgIFNoYXJlZCBoZWFkZXIgZm9yIGVudW0gbmVlZGVkIGJ5IEpTRE9NQXR0
cmlidXRlLCBKU0RPTU9wZXJhdGlvbiBhbmQgSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNl
LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01BdHRyaWJ1dGUuaDogQWRkZWQuCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01PcGVyYXRpb24uaDogQWRkZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmg6IEFkZGVkLgorICAgICAg
ICBTcGxpdCBvdXQgSlNET01CaW5kaW5nQ2FsbGVyIGltcGxlbWVudGF0aW9ucyBpbnRvIG93biBj
bGFzc2VzIC8gZmlsZXMuIFNpbXBsaWZ5CisgICAgICAgIG5hbWluZy4KKyAgICAKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5oOgorICAgICAgICAoV2ViQ29yZTo6
Y2FsbFByb21pc2VGdW5jdGlvbik6CisgICAgICAgIEFkZCBhIHZhcmlhbnQgb2YgY2FsbFByb21p
c2VGdW5jdGlvbiB0aGF0IHRha2VzIGEgbGFtYmRhLgorCisgICAgICAgICogYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldEN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6SURMT3BlcmF0aW9uPEpT
RXZlbnRUYXJnZXQ+OjpjYWxsKToKKyAgICAgICAgVXBkYXRlIG9wZXJhdGlvbiBzcGVjaWFsaXph
dGlvbiB0byB1c2UgbmV3IGNsYXNzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTdWJ0bGVD
cnlwdG9DdXN0b20uY3BwOgorICAgICAgICBTaW1wbGlmeSBub3cgdGhhdCB0aGUgY2FsbFByb21p
c2VGdW5jdGlvbiBpcyBjYWxsZWQgZm9yIHVzLgorCisgICAgICAgICogY3J5cHRvL1dlYktpdFN1
YnRsZUNyeXB0by5pZGw6CisgICAgICAgICogY3NzL0ZvbnRGYWNlLmlkbDoKKyAgICAgICAgKiBk
b20vQ3VzdG9tRWxlbWVudFJlZ2lzdHJ5LmlkbDoKKyAgICAgICAgQWRkIFtSZXR1cm5zT3duUHJv
bWlzZV0gdG8gcmV0YWluIGN1c3RvbSBwcm9taXNlIGJlaGF2aW9yLgorCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRl
cik6CisgICAgICAgIFVwZGF0ZSBoZWFkZXIgZ2VuZXJhdGlvbiB0byBhY2NvdW50IGZvciBjdXN0
b20gZnVuY3Rpb25zIHRoYXQgcmV0dXJuIHByb21pc2VzIG5vdworICAgICAgICBoYXZpbmcgYSBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHBhcmFtZXRlci4KKworICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIC0gVXBkYXRlIGZvciBuZXcgbmFtaW5nIG9mIGNhc3QgZnVu
Y3Rpb25zLgorICAgICAgICAtIFVzZSBBZGRUb0ltcGxJbmNsdWRlcyAoYW5kIHBhc3MgaW4gY29u
ZGl0aW9uYWwpIHJhdGhlciB0aGFuIHVzaW5nICRpbXBsSW5jbHVkZXMKKyAgICAgICAgICBkaXJl
Y3RseSwgI2luY2x1ZGVzIHRvIGJlIGdyb3VwZWQgY29ycmVjdGx5LgorICAgICAgICAtIFJlbW92
ZSBkZWFkICRpbkFwcGxlQ29weXJpZ2h0IGNvZGUgKGl0IHdhcyBtb3ZlZCB0byBHZW5lcmF0ZU9w
ZXJhdGlvbkRlZmluaXRpb24gCisgICAgICAgICAgZWFybGllcikuCisKKyAgICAgICAgKEdlbmVy
YXRlT3BlcmF0aW9uRGVmaW5pdGlvbik6CisgICAgICAgIC0gVXNlICRjb2RlR2VuZXJhdG9yLT5J
c1Byb21pc2VUeXBlKCkgcmF0aGVyIHRoYW4gZGlyZWN0bHkgY29tcGFyaW5nIHRvICJQcm9taXNl
IiBzdHJpbmcuCisgICAgICAgIC0gUmVzdHJ1Y3R1cmUgY29kZSB0byBhbGxvdyB0cmFtcG9saW5l
ICh0aGUgY29kZSB0aGF0IGNhbGxzIElETE9wZXJhdGlvbikgdG8gY29tZSBhZnRlcgorICAgICAg
ICAgIHRoZSBtYWluIG9wZXJhdGlvbiBpbXBsZW1lbnRhdGlvbiAodGhlIHBhcnQgdGhhdCBjYWxs
cyBpbnRvIHRoZSBpbXBsKS4KKyAgICAgICAgLSBTdXBwb3J0IGN1c3RvbSBmdW5jdGlvbnMgcmV0
dXJuaW5nIHByb21pc2VzIChhbmQgdGhlIFtSZXR1cm5zT3duUHJvbWlzZV0gdmFyaWFudCkuCisK
KyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb25JdGVyYWJsZUZ1bmN0aW9ucyk6CisgICAg
ICAgIFVwZGF0ZSBmb3IgbmFtZSBjaGFuZ2UgdG8gSURMT3BlcmF0aW9uLgorCisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246CisgICAgICAgIEFkZCBbUmV0dXJu
c093blByb21pc2VdLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50
ZXJmYWNlTmFtZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTTWFw
TGlrZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlN
YXBMaWtlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Q0VSZWFjdGlvbnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdC5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRl
cmFibGUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1
aWx0aW5Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5j
cHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVp
bHRpbnMuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQcm9t
aXNlUmVqZWN0aW9uRXZlbnQuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICBVcGRhdGUgdGVzdCByZXN1bHRzLgorCisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICBBZGQgYWRkaXRp
b25hbCB0ZXN0IGNhc2VzIGZvciBvcGVyYXRpb25zIHJldHVybmluZyBwcm9taXNlcy4KKwogMjAx
Ny0wNS0yNSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgW21h
Y09TIFdLMiBEZWJ1Z10gTGF5b3V0IFRlc3Qgd2VicnRjL3ZpZGVvLmh0bWwgaXMgY3Jhc2hpbmcu
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyMTc0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTMxMTAsNyArMzExMCw2IEBA
CiAJCTdDNDVDOUQyMUUzRUZFMDgwMEFBQjU1OCAvKiBKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNDVDOUND
MUUzRThGMDgwMEFBQjU1OCAvKiBKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcCAqLzsgfTsKIAkJ
N0M0NUM5RDMxRTNGQ0JENzAwQUFCNTU4IC8qIEpTRE9NV3JhcHBlckNhY2hlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzQ1QzlDODFFM0U4QjUxMDBB
QUI1NTggLyogSlNET01XcmFwcGVyQ2FjaGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzQ1QzlENDFFM0ZDQkRGMDBBQUI1NTggLyogSlNET01C
aW5kaW5nU2VjdXJpdHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDNDVDOUM5MUUzRThDRDcwMEFBQjU1OCAvKiBKU0RPTUJpbmRpbmdTZWN1cml0eS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTdDNDVD
OUQ1MUUzRkNCRTQwMEFBQjU1OCAvKiBKU0RPTUJpbmRpbmdDYWxsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNDVDOUM2MUUzRThBQkEwMEFBQjU1
OCAvKiBKU0RPTUJpbmRpbmdDYWxsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk3QzQ1QzlENjFFM0ZDQkY4MDBBQUI1NTggLyogSlNET01FeGNl
cHRpb25IYW5kbGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M0NUM5QzcxRTNFOEFGRjAwQUFCNTU4IC8qIEpTRE9NRXhjZXB0aW9uSGFuZGxpbmcu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzQ4
QTZEMDE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDNDhBNkNFMTkxQzlENjUwMDAyNjY3
NCAvKiBXZWJLaXROYW1lc3BhY2UuY3BwICovOyB9OwogCQk3QzQ4QTZEMTE5MUM5RDY1MDAwMjY2
NzQgLyogV2ViS2l0TmFtZXNwYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QzQ4QTZDRjE5MUM5RDY1MDAwMjY2NzQgLyogV2ViS2l0TmFtZXNwYWNl
LmggKi87IH07CkBAIC0zMTcwLDYgKzMxNjksMTAgQEAKIAkJN0M3N0MzREMxREVGODZENzAwQTUw
QkZBIC8qIEpTQmxvYkxpbmVFbmRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3Qzc3QzNEQTFERUY4NkQ3MDBBNTBCRkEgLyogSlNCbG9iTGluZUVu
ZGluZ3MuaCAqLzsgfTsKIAkJN0M3OTQxRTQxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3Rv
cnNDb3JlU29mdExpbmsubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3Qzc5NDFFMjFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0
TGluay5tbSAqLzsgfTsKIAkJN0M3OTQxRTUxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3Rv
cnNDb3JlU29mdExpbmsuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDdDNzk0MUUzMUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRM
aW5rLmggKi87IH07CisJCTdDODEzOUE2MUVENjI4NkEwMENFMjZFOCAvKiBKU0RPTUF0dHJpYnV0
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4MTM5
QTMxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NQXR0cmlidXRlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0M4MTM5QTcxRUQ2Mjg3NDAwQ0UyNkU4
IC8qIEpTRE9NT3BlcmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3QzgxMzlBNDFFRDYyODFEMDBDRTI2RTggLyogSlNET01PcGVyYXRpb24uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3QzgxMzlB
ODFFRDYyODc0MDBDRTI2RTggLyogSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgxMzlBNTFFRDYy
ODFEMDBDRTI2RTggLyogSlNET01PcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJN0M4MTM5QUExRUQ2NjA0
QjAwQ0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDODEzOUE5MUVENjJERjIwMENFMjZF
OCAvKiBKU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0M4M0RFODYxRDA0Q0M1RDAwRkVCQ0YzIC8q
IFNwcmluZ1NvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICovOyB9Owog
CQk3QzhFMzRBRDFFNEEzM0FGMDA1NENFMjMgLyogSlNET01Db252ZXJ0QW55LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzhFMzQ5MjFFNEEzMzhFMDA1
NENFMjMgLyogSlNET01Db252ZXJ0QW55LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0M4RTM0QUUxRTRBMzNBRjAwNTRDRTIzIC8qIEpTRE9NQ29u
dmVydEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDdDOEUzNDkzMUU0QTMzOEUwMDU0Q0UyMyAvKiBKU0RPTUNvbnZlcnRCYXNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMTI0LDcgKzExMTI3
LDYgQEAKIAkJN0MzRjAxQzAxQzhFNUFCMTAwQUREOTYyIC8qIFVzZXJDb250ZW50UHJvdmlkZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlckNvbnRlbnRQcm92aWRlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQxODlBQjFCMDdDMTcwMDAwRkE3NTcg
LyogR2xvYmFsRXZlbnRIYW5kbGVycy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2xvYmFsRXZlbnRIYW5kbGVycy5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNDE4OUFDMUIwN0NCRjIwMDBGQTc1NyAv
KiBXaW5kb3dFdmVudEhhbmRsZXJzLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXaW5kb3dFdmVudEhhbmRsZXJzLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJN0M0NUM5QzYxRTNFOEFCQTAwQUFCNTU4IC8q
IEpTRE9NQmluZGluZ0NhbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0RPTUJpbmRpbmdDYWxsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0NUM5
QzcxRTNFOEFGRjAwQUFCNTU4IC8qIEpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01FeGNlcHRpb25IYW5kbGluZy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk3QzQ1QzlDODFFM0U4QjUxMDBBQUI1NTggLyogSlNET01X
cmFwcGVyQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNET01XcmFw
cGVyQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M0NUM5QzkxRTNFOENE
NzAwQUFCNTU4IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTRE9NQmluZGluZ1NlY3VyaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xMTIxMiw2ICsxMTIxNCwxMCBAQAogCQk3Qzc3QzNEQTFERUY4NkQ3MDBBNTBC
RkEgLyogSlNCbG9iTGluZUVuZGluZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNCbG9iTGluZUVuZGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M3
OTQxRTIxQzU2QzI5MzAwQTRDNThFIC8qIERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRhRGV0ZWN0b3JzQ29yZVNv
ZnRMaW5rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3Qzc5NDFFMzFDNTZDMjkz
MDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5rLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdDODEzOUEzMUVENjI4MUQwMENFMjZFOCAvKiBKU0RPTUF0dHJp
YnV0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTUF0dHJpYnV0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzgxMzlBNDFFRDYyODFEMDBDRTI2RTgg
LyogSlNET01PcGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNE
T01PcGVyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4MTM5QTUxRUQ2
MjgxRDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4MTM5QTkxRUQ2MkRGMjAwQ0UyNkU4
IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhhdmlvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29sdmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwcmluZ1NvbHZlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzhFMzQ5MjFFNEEzMzhFMDA1NENFMjMgLyogSlNE
T01Db252ZXJ0QW55LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRE9NQ29u
dmVydEFueS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzhFMzQ5MzFFNEEzMzhF
MDA1NENFMjMgLyogSlNET01Db252ZXJ0QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0RPTUNvbnZlcnRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC0yMzQyMiw3ICsyMzQyOCw4IEBACiAJCQkJOUJENEU5MTQxQzQ2Mjg3MjAwNTA2NUJDIC8qIEpT
Q3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAgKi8sCiAJCQkJOUJENEU5MTUxQzQ2Mjg3MjAwNTA2
NUJDIC8qIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5oICovLAogCQkJCTkzQjcwRDQ4MDlFQjBD
N0MwMDlEODQ2OCAvKiBKU0RPTUJpbmRpbmcuaCAqLywKLQkJCQk3QzQ1QzlDNjFFM0U4QUJBMDBB
QUI1NTggLyogSlNET01CaW5kaW5nQ2FsbGVyLmggKi8sCisJCQkJN0M4MTM5QTkxRUQ2MkRGMjAw
Q0UyNkU4IC8qIEpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCAqLywKKwkJCQk3QzgxMzlB
MzFFRDYyODFEMDBDRTI2RTggLyogSlNET01BdHRyaWJ1dGUuaCAqLywKIAkJCQk0MURFRkNCMjFF
NTZDMUI5MDAwRDlFNUYgLyogSlNET01CaW5kaW5nSW50ZXJuYWxzLmpzICovLAogCQkJCTdDNDVD
OUNBMUUzRThEMkUwMEFBQjU1OCAvKiBKU0RPTUJpbmRpbmdTZWN1cml0eS5jcHAgKi8sCiAJCQkJ
N0M0NUM5QzkxRTNFOENENzAwQUFCNTU4IC8qIEpTRE9NQmluZGluZ1NlY3VyaXR5LmggKi8sCkBA
IC0yMzQzOCw2ICsyMzQ0NSw4IEBACiAJCQkJNDEzOEY4NTYxRDI1M0VFRTAwMUNCNjFFIC8qIEpT
RE9NSXRlcmF0b3IuaCAqLywKIAkJCQk0MURFRkNCMzFFNTZDMUI5MDAwRDlFNUYgLyogSlNET01N
YXBMaWtlLmNwcCAqLywKIAkJCQk0MURFRkNCNDFFNTZDMUI5MDAwRDlFNUYgLyogSlNET01NYXBM
aWtlLmggKi8sCisJCQkJN0M4MTM5QTQxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9u
LmggKi8sCisJCQkJN0M4MTM5QTUxRUQ2MjgxRDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9uUmV0
dXJuaW5nUHJvbWlzZS5oICovLAogCQkJCUUzN0M4NjRGMUVCNjNFMkQwMDg3QzZDQSAvKiBKU0RP
TVByb21pc2UuaCAqLywKIAkJCQlFMTcyQUY4RDE4MTFCQzM3MDBGQkFEQjkgLyogSlNET01Qcm9t
aXNlRGVmZXJyZWQuY3BwICovLAogCQkJCUUxNzJBRjhFMTgxMUJDMzcwMEZCQURCOSAvKiBKU0RP
TVByb21pc2VEZWZlcnJlZC5oICovLApAQCAtMjc0OTIsNiArMjc1MDEsNyBAQAogCQkJCTUxODVG
QzhEMUJCNEM0RTgwMDEyODk4RiAvKiBJREJGYWN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTlEQkM2RjFEQzAxMUE3MDAzMjlCRjUgLyogSURCR2V0QWxsUmVjb3Jkc0RhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxOURCQzcyMURDMTBGNTIwMDMyOUJGNSAvKiBJREJHZXRBbGxSZXN1bHQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTdDODEzOUFBMUVENjYwNEIwMENFMjZFOCAvKiBKU0RPTUNh
c3RlZFRoaXNFcnJvckJlaGF2aW9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1RjA2OTFENEJB
OUQ5MDBGQjgwQkMgLyogSURCR2V0UmVjb3JkRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE4
NUZDOEYxQkI0QzRFODAwMTI4OThGIC8qIElEQkdldFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE4NUZDOTExQkI0QzRFODAwMTI4OThGIC8qIElEQkluZGV4LmggaW4gSGVhZGVycyAqLywK
QEAgLTI3NjAwLDYgKzI3NjEwLDcgQEAKIAkJCQk3QTc0RUNCQjEwMTgzOUE2MDBCRjkzOUUgLyog
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlGMzQ0QzcxNDEx
MjVCODJDMDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUYzNDRDNzUzMTEyOTREOUQwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmggaW4gSGVhZGVycyAqLywKKwkJCQk3QzgxMzlBNzFFRDYyODc0MDBDRTI2RTggLyog
SlNET01PcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdBMEU3NzBGMTBDMDBBODgwMEEw
Mjc2RSAvKiBJbnNwZWN0b3JGcm9udGVuZEhvc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBNTQ4
NTgwMTRFMDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0b3JIaXN0b3J5LmggaW4gSGVhZGVycyAqLywK
IAkJCQk3QUNEODhENDE0QzA4QkQ2MDA4NEVERDIgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
aCBpbiBIZWFkZXJzICovLApAQCAtMjc3NDgsNyArMjc3NTksNiBAQAogCQkJCTY1REYzMUY2MDlE
MUNDNjAwMDBCRTMyNSAvKiBKU0RvY3VtZW50VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFD
MjI2MEQwREI2OUYxOTAwODlCNjY5IC8qIEpTRE9NQXBwbGljYXRpb25DYWNoZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTNCNzBENjQwOUVCMEM3QzAwOUQ4NDY4IC8qIEpTRE9NQmluZGluZy5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJN0M0NUM5RDUxRTNGQ0JFNDAwQUFCNTU4IC8qIEpTRE9NQmluZGlu
Z0NhbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDE2RTZGRTgxQkJEMTJERjAwMEEzRjY1IC8q
IEpTRE9NQmluZGluZ0ludGVybmFsc0J1aWx0aW5zLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzQ1
QzlENDFFM0ZDQkRGMDBBQUI1NTggLyogSlNET01CaW5kaW5nU2VjdXJpdHkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTQxM0MyQzM0MUJDMjlBOEYwMDc1MjA0QyAvKiBKU0RPTUNvbnN0cnVjdG9yLmgg
aW4gSGVhZGVycyAqLywKQEAgLTI5MjA2LDYgKzI5MjE2LDcgQEAKIAkJCQk0NEM5OTE4NjBGM0Qx
RUJFMDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
OEI4NTNFMEU3QzdGMTEwMEFCNjk4NCAvKiBTY3JvbGxiYXJUaGVtZU1hYy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEZFNzE0MDYxNDIxNzBCODAwREIzM0JBIC8qIFNjcm9sbGJhclRoZW1lTW9jay5o
IGluIEhlYWRlcnMgKi8sCisJCQkJN0M4MTM5QTYxRUQ2Mjg2QTAwQ0UyNkU4IC8qIEpTRE9NQXR0
cmlidXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUE4NEYwNTE0M0JBN0JEMDA1MUQxNTMgLyog
U2Nyb2xsQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY2MDVBRUQxNUY5NDg0ODAw
NERGMEMwIC8qIFNjcm9sbGluZ0NvbnN0cmFpbnRzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUY2
MkVFODE0REEyMkE3MDA0MTU1NkMgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJz
ICovLApAQCAtMjkzNDksNiArMjkzNjAsNyBAQAogCQkJCTFBMjI0NjRDMENDOThEREIwMEMwNTI0
MCAvKiBTUUxpdGVTdGF0ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMjI0NjRFMENDOThE
REIwMEMwNTI0MCAvKiBTUUxpdGVUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdC
QzZBNDIxNTA1RjA4MTAwMUI3NEFDIC8qIFNRTFJlc3VsdFNldC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJN0M4MTM5QTgxRUQ2Mjg3NDAwQ0UyNkU4IC8qIEpTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJv
bWlzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCQzZBNDUxNTA1RjA4MTAwMUI3NEFDIC8qIFNR
TFJlc3VsdFNldFJvd0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFOEE2NzQ4MTZDREQxOUUw
MDkzMEJGOCAvKiBTUUxTdGF0ZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3QkM2QTQ5MTUw
NUYwODEwMDFCNzRBQyAvKiBTUUxTdGF0ZW1lbnRDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUF0dHJpYnV0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXR0cmlidXRlLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01BdHRyaWJ1dGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY5IEBACisvKgorICogIENvcHlyaWdodCAoQykgMTk5
OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAy
MDAzLTIwMDYsIDIwMDgtMjAwOSwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgPHNhbUB3ZWJraXQu
b3JnPgorICogIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEzIE1pY2hhZWwgUHJ1ZXR0IDxtaWNoYWVsQDY4
ay5vcmc+CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgIkpTRE9NQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaCIKKyNpbmNsdWRlICJKU0RP
TUV4Y2VwdGlvbkhhbmRsaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8
dHlwZW5hbWUgSlNDbGFzcz4KK2NsYXNzIElETEF0dHJpYnV0ZSB7CitwdWJsaWM6CisgICAgdXNp
bmcgU2V0dGVyID0gYm9vbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQ2xhc3MmLCBKU0M6OkpTVmFsdWUs
IEpTQzo6VGhyb3dTY29wZSYpOworICAgIHVzaW5nIEdldHRlciA9IEpTQzo6SlNWYWx1ZShKU0M6
OkV4ZWNTdGF0ZSYsIEpTQ2xhc3MmLCBKU0M6OlRocm93U2NvcGUmKTsKKworICAgIHN0YXRpYyBK
U0NsYXNzKiBjYXN0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisKKyAg
ICB0ZW1wbGF0ZTxTZXR0ZXIgc2V0dGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRU
aHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4KKyAgICBzdGF0aWMgYm9vbCBz
ZXQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5h
bWUpCisgICAgeworICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHN0YXRlLnZtKCkpOworCisgICAgICAgIGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0KHN0YXRlLCB0
aGlzVmFsdWUpOworICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQorICAgICAgICAg
ICAgcmV0dXJuIChzaG91bGRUaHJvdyA9PSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6VGhyb3cp
ID8gdGhyb3dTZXR0ZXJUeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIEpTQ2xhc3M6OmluZm8o
KS0+Y2xhc3NOYW1lLCBhdHRyaWJ1dGVOYW1lKSA6IGZhbHNlOworCisgICAgICAgIHJldHVybiBz
ZXR0ZXIoc3RhdGUsICp0aGlzT2JqZWN0LCBKU0M6OkpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpLCB0aHJvd1Njb3BlKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxHZXR0ZXIgZ2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpUaHJvdz4KKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBnZXQoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgY29uc3QgY2hhciog
YXR0cmlidXRlTmFtZSkKKyAgICB7CisgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUoc3RhdGUudm0oKSk7CisKKyAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNh
c3Qoc3RhdGUsIHRoaXNWYWx1ZSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghdGhpc09iamVjdCkp
IHsKKyAgICAgICAgICAgIGlmIChzaG91bGRUaHJvdyA9PSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlv
cjo6VGhyb3cpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlLCBKU0NsYXNzOjppbmZvKCktPmNsYXNzTmFtZSwgYXR0cmlidXRlTmFt
ZSk7CisgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cgPT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OlJlamVjdFByb21pc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlamVjdFByb21pc2VX
aXRoR2V0dGVyVHlwZUVycm9yKHN0YXRlLCBKU0NsYXNzOjppbmZvKCktPmNsYXNzTmFtZSwgYXR0
cmlidXRlTmFtZSk7CisgICAgICAgICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjplbmNvZGUoSlND
Ojpqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBKU0M6OkpTVmFs
dWU6OmVuY29kZShnZXR0ZXIoc3RhdGUsICp0aGlzT2JqZWN0LCB0aHJvd1Njb3BlKSk7CisgICAg
fQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nQ2FsbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nQ2FsbGVyLmgJKHJldmlzaW9uIDIxNzQyNSkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZ0NhbGxlci5oCShub25leGlz
dGVudCkKQEAgLTEsMTAyICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDEg
SGFycmkgUG9ydGVuIChwb3J0ZW5Aa2RlLm9yZykKLSAqICBDb3B5cmlnaHQgKEMpIDIwMDMtMjAw
NiwgMjAwOC0yMDA5LCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqICBDb3B5cmlnaHQgKEMpIDIwMDcgU2FtdWVsIFdlaW5pZyA8c2FtQHdlYmtpdC5vcmc+Ci0g
KiAgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogIENvcHlyaWdodCAoQykgMjAxMiBFcmljc3NvbiBBQi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqICBDb3B5cmlnaHQgKEMpIDIwMTMgTWljaGFlbCBQcnVldHQgPG1pY2hhZWxANjhrLm9yZz4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiAgTGljZW5zZSBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQot
ICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWVu
dW0gY2xhc3MgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IgeyBUaHJvdywgUmV0dXJuRWFybHksIFJl
amVjdFByb21pc2UsIEFzc2VydCB9OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBKU0NsYXNzPgotc3Ry
dWN0IEJpbmRpbmdDYWxsZXIgewotICAgIHVzaW5nIEF0dHJpYnV0ZVNldHRlckZ1bmN0aW9uID0g
Ym9vbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQ2xhc3MmLCBKU0M6OkpTVmFsdWUsIEpTQzo6VGhyb3dT
Y29wZSYpOwotICAgIHVzaW5nIEF0dHJpYnV0ZUdldHRlckZ1bmN0aW9uID0gSlNDOjpKU1ZhbHVl
KEpTQzo6RXhlY1N0YXRlJiwgSlNDbGFzcyYsIEpTQzo6VGhyb3dTY29wZSYpOwotICAgIHVzaW5n
IE9wZXJhdGlvbkNhbGxlckZ1bmN0aW9uID0gSlNDOjpFbmNvZGVkSlNWYWx1ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQ2xhc3MqLCBKU0M6OlRocm93U2NvcGUmKTsKLSAgICB1c2luZyBQcm9taXNlT3Bl
cmF0aW9uQ2FsbGVyRnVuY3Rpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpTQzo6RXhlY1N0YXRl
KiwgSlNDbGFzcyosIFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIEpTQzo6VGhyb3dTY29wZSYpOwot
Ci0gICAgc3RhdGljIEpTQ2xhc3MqIGNhc3RGb3JBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUmLCBK
U0M6OkVuY29kZWRKU1ZhbHVlKTsKLSAgICBzdGF0aWMgSlNDbGFzcyogY2FzdEZvck9wZXJhdGlv
bihKU0M6OkV4ZWNTdGF0ZSYpOwotCi0gICAgdGVtcGxhdGU8UHJvbWlzZU9wZXJhdGlvbkNhbGxl
ckZ1bmN0aW9uIG9wZXJhdGlvbkNhbGxlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxk
VGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmVqZWN0UHJvbWlzZT4KLSAgICBzdGF0
aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBjYWxsUHJvbWlzZU9wZXJhdGlvbihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgY29uc3QgY2hhciogb3Bl
cmF0aW9uTmFtZSkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChzdGF0ZSk7Ci0gICAgICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3RhdGUtPnZtKCkpOwotICAgICAgICBh
dXRvKiB0aGlzT2JqZWN0ID0gY2FzdEZvck9wZXJhdGlvbigqc3RhdGUpOwotICAgICAgICBpZiAo
c2hvdWxkVGhyb3cgIT0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydCAmJiBVTkxJS0VM
WSghdGhpc09iamVjdCkpCi0gICAgICAgICAgICByZXR1cm4gcmVqZWN0UHJvbWlzZVdpdGhUaGlz
VHlwZUVycm9yKHByb21pc2UuZ2V0KCksIEpTQ2xhc3M6OmluZm8oKS0+Y2xhc3NOYW1lLCBvcGVy
YXRpb25OYW1lKTsKLSAgICAgICAgQVNTRVJUKHRoaXNPYmplY3QpOwotICAgICAgICBBU1NFUlRf
R0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIEpTQ2xhc3M6OmluZm8oKSk7Ci0gICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgcmVmYWN0b3IgdGhlIGJpbmRpbmcgZ2VuZXJhdGVkIGNvZGUg
dG8gdXNlIHJlZmVyZW5jZXMgZm9yIHN0YXRlIGFuZCB0aGlzT2JqZWN0LgotICAgICAgICByZXR1
cm4gb3BlcmF0aW9uQ2FsbGVyKHN0YXRlLCB0aGlzT2JqZWN0LCBXVEZNb3ZlKHByb21pc2UpLCB0
aHJvd1Njb3BlKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0ZTxPcGVyYXRpb25DYWxsZXJGdW5jdGlv
biBvcGVyYXRpb25DYWxsZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yIHNob3VsZFRocm93ID0g
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93PgotICAgIHN0YXRpYyBKU0M6OkVuY29kZWRK
U1ZhbHVlIGNhbGxPcGVyYXRpb24oSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBjb25zdCBjaGFyKiBv
cGVyYXRpb25OYW1lKQotICAgIHsKLSAgICAgICAgQVNTRVJUKHN0YXRlKTsKLSAgICAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7Ci0gICAgICAg
IGF1dG8qIHRoaXNPYmplY3QgPSBjYXN0Rm9yT3BlcmF0aW9uKCpzdGF0ZSk7Ci0gICAgICAgIGlm
IChzaG91bGRUaHJvdyAhPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0ICYmIFVOTElL
RUxZKCF0aGlzT2JqZWN0KSkgewotICAgICAgICAgICAgaWYgKHNob3VsZFRocm93ID09IENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdykKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgdGhyb3dTY29wZSwgSlNDbGFzczo6aW5mbygpLT5jbGFzc05h
bWUsIG9wZXJhdGlvbk5hbWUpOwotICAgICAgICAgICAgLy8gRm9yIGN1c3RvbSBwcm9taXNlLXJl
dHVybmluZyBvcGVyYXRpb25zCi0gICAgICAgICAgICByZXR1cm4gcmVqZWN0UHJvbWlzZVdpdGhU
aGlzVHlwZUVycm9yKCpzdGF0ZSwgSlNDbGFzczo6aW5mbygpLT5jbGFzc05hbWUsIG9wZXJhdGlv
bk5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0KTsKLSAgICAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBKU0NsYXNzOjppbmZvKCkpOwot
ICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHJlZmFjdG9yIHRoZSBiaW5kaW5nIGdlbmVyYXRl
ZCBjb2RlIHRvIHVzZSByZWZlcmVuY2VzIGZvciBzdGF0ZSBhbmQgdGhpc09iamVjdC4KLSAgICAg
ICAgcmV0dXJuIG9wZXJhdGlvbkNhbGxlcihzdGF0ZSwgdGhpc09iamVjdCwgdGhyb3dTY29wZSk7
Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8QXR0cmlidXRlU2V0dGVyRnVuY3Rpb24gc2V0dGVyLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpUaHJvdz4KLSAgICBzdGF0aWMgYm9vbCBzZXRBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0M6OkVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUpCi0gICAgewotICAgICAg
ICBBU1NFUlQoc3RhdGUpOwotICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHN0YXRlLT52bSgpKTsKLSAgICAgICAgYXV0byogdGhpc09iamVjdCA9IGNhc3RGb3JB
dHRyaWJ1dGUoKnN0YXRlLCB0aGlzVmFsdWUpOwotICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNP
YmplY3QpKQotICAgICAgICAgICAgcmV0dXJuIChzaG91bGRUaHJvdyA9PSBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6VGhyb3cpID8gdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Nj
b3BlLCBKU0NsYXNzOjppbmZvKCktPmNsYXNzTmFtZSwgYXR0cmlidXRlTmFtZSkgOiBmYWxzZTsK
LSAgICAgICAgcmV0dXJuIHNldHRlcigqc3RhdGUsICp0aGlzT2JqZWN0LCBKU0M6OkpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpLCB0aHJvd1Njb3BlKTsKLSAgICB9Ci0KLSAgICB0ZW1wbGF0
ZTxBdHRyaWJ1dGVHZXR0ZXJGdW5jdGlvbiBnZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
IHNob3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93PgotICAgIHN0YXRp
YyBKU0M6OkVuY29kZWRKU1ZhbHVlIGF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQot
ICAgIHsKLSAgICAgICAgQVNTRVJUKHN0YXRlKTsKLSAgICAgICAgYXV0byB0aHJvd1Njb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS0+dm0oKSk7Ci0gICAgICAgIGF1dG8qIHRoaXNPYmpl
Y3QgPSBjYXN0Rm9yQXR0cmlidXRlKCpzdGF0ZSwgdGhpc1ZhbHVlKTsKLSAgICAgICAgaWYgKFVO
TElLRUxZKCF0aGlzT2JqZWN0KSkgewotICAgICAgICAgICAgaWYgKHNob3VsZFRocm93ID09IENh
c3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdykKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhy
b3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCB0aHJvd1Njb3BlLCBKU0NsYXNzOjppbmZvKCktPmNs
YXNzTmFtZSwgYXR0cmlidXRlTmFtZSk7Ci0gICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cgPT0g
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFByb21pc2UpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHJlamVjdFByb21pc2VXaXRoR2V0dGVyVHlwZUVycm9yKCpzdGF0ZSwgSlNDbGFzczo6
aW5mbygpLT5jbGFzc05hbWUsIGF0dHJpYnV0ZU5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIEpT
Qzo6SlNWYWx1ZTo6ZW5jb2RlKEpTQzo6anNVbmRlZmluZWQoKSk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGdldHRlcigqc3RhdGUsICp0aGlzT2JqZWN0
LCB0aHJvd1Njb3BlKSk7Ci0gICAgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJv
cGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
Q2FsbGVyLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMK
LW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01DYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvci5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBA
CisvKgorICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtk
ZS5vcmcpCisgKiAgQ29weXJpZ2h0IChDKSAyMDAzLTIwMDYsIDIwMDgtMjAwOSwgMjAxMywgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3
IFNhbXVlbCBXZWluaWcgPHNhbUB3ZWJraXQub3JnPgorICogIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIg
RXJpY3Nzb24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEz
IE1pY2hhZWwgUHJ1ZXR0IDxtaWNoYWVsQDY4ay5vcmc+CisgKgorICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg
KiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlm
IG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNs
YXNzIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yIHsKKyAgICBUaHJvdywKKyAgICBSZXR1cm5FYXJs
eSwKKyAgICBSZWplY3RQcm9taXNlLAorICAgIEFzc2VydAorfTsKKworfQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01PcGVyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvbi5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJy
aSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQorICogIENvcHlyaWdodCAoQykgMjAwMy0yMDA2LCAy
MDA4LTIwMDksIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAwNyBTYW11ZWwgV2VpbmlnIDxzYW1Ad2Via2l0Lm9yZz4KKyAqICBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAg
Q29weXJpZ2h0IChDKSAyMDEyIEVyaWNzc29uIEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
IENvcHlyaWdodCAoQykgMjAxMyBNaWNoYWVsIFBydWV0dCA8bWljaGFlbEA2OGsub3JnPgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisgKgorICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqICBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiAg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u
LCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJK
U0RPTUNhc3RlZFRoaXNFcnJvckJlaGF2aW9yLmgiCisjaW5jbHVkZSAiSlNET01FeGNlcHRpb25I
YW5kbGluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIEpT
Q2xhc3M+CitjbGFzcyBJRExPcGVyYXRpb24geworcHVibGljOgorICAgIHVzaW5nIENsYXNzUGFy
YW1ldGVyID0gSlNDbGFzcyo7CisgICAgdXNpbmcgT3BlcmF0aW9uID0gSlNDOjpFbmNvZGVkSlNW
YWx1ZShKU0M6OkV4ZWNTdGF0ZSosIENsYXNzUGFyYW1ldGVyLCBKU0M6OlRocm93U2NvcGUmKTsK
KworICAgIHN0YXRpYyBKU0NsYXNzKiBjYXN0KEpTQzo6RXhlY1N0YXRlJik7CisKKyAgICB0ZW1w
bGF0ZTxPcGVyYXRpb24gb3BlcmF0aW9uLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRU
aHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpUaHJvdz4KKyAgICBzdGF0aWMgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBjYWxsKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogb3Bl
cmF0aW9uTmFtZSkKKyAgICB7CisgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoc3RhdGUudm0oKSk7CisgICAgICAgIAorICAgICAgICBhdXRvKiB0aGlzT2JqZWN0
ID0gY2FzdChzdGF0ZSk7CisgICAgICAgIGlmIChzaG91bGRUaHJvdyAhPSBDYXN0ZWRUaGlzRXJy
b3JCZWhhdmlvcjo6QXNzZXJ0ICYmIFVOTElLRUxZKCF0aGlzT2JqZWN0KSkKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd1RoaXNUeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIEpTQ2xhc3M6Omlu
Zm8oKS0+Y2xhc3NOYW1lLCBvcGVyYXRpb25OYW1lKTsKKyAgICAgICAgCisgICAgICAgIEFTU0VS
VCh0aGlzT2JqZWN0KTsKKyAgICAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2Jq
ZWN0LCBKU0NsYXNzOjppbmZvKCkpOworICAgICAgICAKKyAgICAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCByZWZhY3RvciB0aGUgYmluZGluZyBnZW5lcmF0ZWQgY29kZSB0byB1c2UgcmVmZXJlbmNl
cyBmb3Igc3RhdGUgYW5kIHRoaXNPYmplY3QuCisgICAgICAgIHJldHVybiBvcGVyYXRpb24oJnN0
YXRlLCB0aGlzT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlv
blJldHVybmluZ1Byb21pc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDc0IEBACisvKgorICogIENvcHlyaWdodCAoQykg
MTk5OS0yMDAxIEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCisgKiAgQ29weXJpZ2h0IChD
KSAyMDAzLTIwMDYsIDIwMDgtMjAwOSwgMjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3IFNhbXVlbCBXZWluaWcgPHNhbUB3ZWJr
aXQub3JnPgorICogIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTIgRXJpY3Nzb24gQUIuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDEzIE1pY2hhZWwgUHJ1ZXR0IDxtaWNoYWVs
QDY4ay5vcmc+CisgKgorICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiAgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogIExp
Y2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUg
U29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVm
ZXJyZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBKU0Ns
YXNzPgorY2xhc3MgSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZSB7CitwdWJsaWM6CisgICAg
dXNpbmcgQ2xhc3NQYXJhbWV0ZXIgPSBKU0NsYXNzKjsKKyAgICB1c2luZyBPcGVyYXRpb24gPSBK
U0M6OkVuY29kZWRKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgQ2xhc3NQYXJhbWV0ZXIsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYsIEpTQzo6VGhyb3dTY29wZSYpOworCisgICAgdGVtcGxhdGU8T3Bl
cmF0aW9uIG9wZXJhdGlvbiwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlIGV4ZWN1dGlvblNjb3BlLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9IENhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpSZWplY3RQcm9taXNlPgorICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIGNhbGwo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBvcGVyYXRpb25OYW1lKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZTo6ZW5jb2RlKGNhbGxQcm9taXNlRnVuY3Rpb248
ZXhlY3V0aW9uU2NvcGU+KHN0YXRlLCBbJm9wZXJhdGlvbk5hbWVdIChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkgeworICAgICAgICAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS52bSgpKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgYXV0byogdGhpc09iamVjdCA9IElETE9wZXJhdGlvbjxKU0NsYXNz
Pjo6Y2FzdChzdGF0ZSk7CisgICAgICAgICAgICBpZiAoc2hvdWxkVGhyb3cgIT0gQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3I6OkFzc2VydCAmJiBVTkxJS0VMWSghdGhpc09iamVjdCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJlamVjdFByb21pc2VXaXRoVGhpc1R5cGVFcnJvcihwcm9taXNlLmdl
dCgpLCBKU0NsYXNzOjppbmZvKCktPmNsYXNzTmFtZSwgb3BlcmF0aW9uTmFtZSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0KTsKKyAgICAgICAgICAgIEFTU0VS
VF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgSlNDbGFzczo6aW5mbygpKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWZhY3RvciB0aGUgYmlu
ZGluZyBnZW5lcmF0ZWQgY29kZSB0byB1c2UgcmVmZXJlbmNlcyBmb3Igc3RhdGUgYW5kIHRoaXNP
YmplY3QuCisgICAgICAgICAgICByZXR1cm4gb3BlcmF0aW9uKCZzdGF0ZSwgdGhpc09iamVjdCwg
V1RGTW92ZShwcm9taXNlKSwgdGhyb3dTY29wZSk7CisgICAgICAgIH0pKTsKKyAgICB9CisKKyAg
ICAvLyBUaGlzIGZ1bmN0aW9uIGlzIGEgc3BlY2lhbCBjYXNlIGZvciBjdXN0b20gb3BlcmF0aW9u
cyB3YW50IHRvIGhhbmRsZSB0aGUgY3JlYXRpb24gb2YgdGhlIHByb21pc2UgdGhlbXNlbHZlcy4K
KyAgICAvLyBJdCBpcyB0cmlnZ2VyZWQgdmlhIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgW1JldHVy
bnNPd25Qcm9taXNlXS4KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExPcGVyYXRpb248SlNDbGFz
cz46Ok9wZXJhdGlvbiBvcGVyYXRpb24sIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yIHNob3VsZFRo
cm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFByb21pc2U+CisgICAgc3RhdGlj
IEpTQzo6RW5jb2RlZEpTVmFsdWUgY2FsbFJldHVybmluZ093blByb21pc2UoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBjb25zdCBjaGFyKiBvcGVyYXRpb25OYW1lKQorICAgIHsKKyAgICAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShzdGF0ZS52bSgpKTsKKworICAgICAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0gSURMT3BlcmF0aW9uPEpTQ2xhc3M+OjpjYXN0KHN0YXRlKTsK
KyAgICAgICAgaWYgKHNob3VsZFRocm93ICE9IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQgJiYgVU5MSUtFTFkoIXRoaXNPYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIHJlamVjdFBy
b21pc2VXaXRoVGhpc1R5cGVFcnJvcihzdGF0ZSwgSlNDbGFzczo6aW5mbygpLT5jbGFzc05hbWUs
IG9wZXJhdGlvbk5hbWUpOworCisgICAgICAgIEFTU0VSVCh0aGlzT2JqZWN0KTsKKyAgICAgICAg
QVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBKU0NsYXNzOjppbmZvKCkpOwor
CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmVmYWN0b3IgdGhlIGJpbmRpbmcgZ2VuZXJh
dGVkIGNvZGUgdG8gdXNlIHJlZmVyZW5jZXMgZm9yIHN0YXRlIGFuZCB0aGlzT2JqZWN0LgorICAg
ICAgICByZXR1cm4gb3BlcmF0aW9uKCZzdGF0ZSwgdGhpc09iamVjdCwgdGhyb3dTY29wZSk7Cisg
ICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Qcm9taXNlRGVmZXJyZWQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5oCShyZXZpc2lvbiAyMTc0
MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2VEZWZlcnJlZC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDIsNiArMjQyLDI2IEBAIGlubGluZSBKU0M6OkpTVmFsdWUg
Y2FsbFByb21pc2VGdW5jdGlvbigKICAgICByZXR1cm4gcHJvbWlzZURlZmVycmVkLT5wcm9taXNl
KCk7CiB9CiAKK3RlbXBsYXRlPFByb21pc2VFeGVjdXRpb25TY29wZSBleGVjdXRpb25TY29wZSwg
dHlwZW5hbWUgUHJvbWlzZUZ1bmN0b3I+CitpbmxpbmUgSlNDOjpKU1ZhbHVlIGNhbGxQcm9taXNl
RnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBQcm9taXNlRnVuY3RvciBmdW5jdG9yKQor
eworICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7CisKKyAgICBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oc3RhdGUubGV4aWNhbEdsb2JhbE9i
amVjdCgpKTsKKyAgICBKU0M6OkpTUHJvbWlzZURlZmVycmVkKiBwcm9taXNlRGVmZXJyZWQgPSBK
U0M6OkpTUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoJnN0YXRlLCAmZ2xvYmFsT2JqZWN0KTsKKwor
ICAgIC8vIHByb21pc2VEZWZlcnJlZCBjYW4gYmUgbnVsbCB3aGVuIHRlcm1pbmF0aW5nIGEgV29y
a2VyIGFicnVwdGx5LgorICAgIGlmIChleGVjdXRpb25TY29wZSA9PSBQcm9taXNlRXhlY3V0aW9u
U2NvcGU6OldpbmRvd09yV29ya2VyICYmICFwcm9taXNlRGVmZXJyZWQpCisgICAgICAgIHJldHVy
biBKU0M6OmpzVW5kZWZpbmVkKCk7CisKKyAgICBmdW5jdG9yKHN0YXRlLCBEZWZlcnJlZFByb21p
c2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsICpwcm9taXNlRGVmZXJyZWQpKTsKKworICAgIHJlamVj
dFByb21pc2VXaXRoRXhjZXB0aW9uSWZBbnkoc3RhdGUsIGdsb2JhbE9iamVjdCwgKnByb21pc2VE
ZWZlcnJlZCk7CisgICAgQVNTRVJUX1VOVVNFRChzY29wZSwgIXNjb3BlLmV4Y2VwdGlvbigpKTsK
KyAgICByZXR1cm4gcHJvbWlzZURlZmVycmVkLT5wcm9taXNlKCk7Cit9CisKIHVzaW5nIEJpbmRp
bmdQcm9taXNlRnVuY3Rpb24gPSBKU0M6OkVuY29kZWRKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwg
UmVmPERlZmVycmVkUHJvbWlzZT4mJik7CiB0ZW1wbGF0ZTxCaW5kaW5nUHJvbWlzZUZ1bmN0aW9u
IGJpbmRpbmdGdW5jdGlvbj4KIGlubGluZSB2b2lkIGJpbmRpbmdQcm9taXNlRnVuY3Rpb25BZGFw
dGVyKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
KQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEN1c3RvbS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRD
dXN0b20uaAkocmV2aXNpb24gMjE3NDI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNFdmVudFRhcmdldEN1c3RvbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAK
ICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNs
dWRlICJKU0RPTUJpbmRpbmdDYWxsZXIuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmdTZWN1cml0
eS5oIgorI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNTIsMjcgKzUyLDMwIEBAIHByaXZhdGU6CiAKIHN0ZDo6dW5pcXVlX3B0cjxKU0V2ZW50
VGFyZ2V0V3JhcHBlcj4ganNFdmVudFRhcmdldENhc3QoSlNDOjpWTSYsIEpTQzo6SlNWYWx1ZSB0
aGlzVmFsdWUpOwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBCaW5kaW5nQ2FsbGVyPEpTRXZlbnRUYXJn
ZXQ+IHsKLSAgICB1c2luZyBPcGVyYXRpb25DYWxsZXJGdW5jdGlvbiA9IEpTQzo6RW5jb2RlZEpT
VmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBKU0V2ZW50VGFyZ2V0V3JhcHBlciosIEpTQzo6VGhyb3dT
Y29wZSYpOwordGVtcGxhdGU8PiBjbGFzcyBJRExPcGVyYXRpb248SlNFdmVudFRhcmdldD4gewor
cHVibGljOgorICAgIHVzaW5nIENsYXNzUGFyYW1ldGVyID0gSlNFdmVudFRhcmdldFdyYXBwZXIq
OworICAgIHVzaW5nIE9wZXJhdGlvbiA9IEpTQzo6RW5jb2RlZEpTVmFsdWUoSlNDOjpFeGVjU3Rh
dGUqLCBDbGFzc1BhcmFtZXRlciwgSlNDOjpUaHJvd1Njb3BlJik7CiAKLSAgICB0ZW1wbGF0ZTxP
cGVyYXRpb25DYWxsZXJGdW5jdGlvbiBvcGVyYXRpb25DYWxsZXI+Ci0gICAgc3RhdGljIEpTQzo6
RW5jb2RlZEpTVmFsdWUgY2FsbE9wZXJhdGlvbihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIGNvbnN0
IGNoYXIqIG9wZXJhdGlvbk5hbWUpCisgICAgdGVtcGxhdGU8T3BlcmF0aW9uIG9wZXJhdGlvbiwg
Q2FzdGVkVGhpc0Vycm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhh
dmlvcjo6VGhyb3c+CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgY2FsbChKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIG9wZXJhdGlvbk5hbWUpCiAgICAgewotICAgICAg
ICBBU1NFUlQoc3RhdGUpOwotICAgICAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLT52bSgpOworICAg
ICAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZtKCk7CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgICAgIGF1dG8gdGhpc09iamVjdCA9IGpz
RXZlbnRUYXJnZXRDYXN0KHZtLCBzdGF0ZS0+dGhpc1ZhbHVlKCkudG9UaGlzKHN0YXRlLCBKU0M6
Ok5vdFN0cmljdE1vZGUpKTsKKyAgICAgICAgYXV0byB0aGlzT2JqZWN0ID0ganNFdmVudFRhcmdl
dENhc3Qodm0sIHN0YXRlLnRoaXNWYWx1ZSgpLnRvVGhpcygmc3RhdGUsIEpTQzo6Tm90U3RyaWN0
TW9kZSkpOwogICAgICAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3QpKQotICAgICAgICAgICAg
cmV0dXJuIHRocm93VGhpc1R5cGVFcnJvcigqc3RhdGUsIHRocm93U2NvcGUsICJFdmVudFRhcmdl
dCIsIG9wZXJhdGlvbk5hbWUpOworICAgICAgICAgICAgcmV0dXJuIHRocm93VGhpc1R5cGVFcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgIkV2ZW50VGFyZ2V0Iiwgb3BlcmF0aW9uTmFtZSk7CiAKICAg
ICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IHRoaXNPYmplY3QtPndyYXBwZWQoKS50b0RPTVdpbmRv
dygpKSB7Ci0gICAgICAgICAgICBpZiAoIXdpbmRvdy0+ZnJhbWUoKSB8fCAhQmluZGluZ1NlY3Vy
aXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRE9NV2luZG93KHN0YXRlLCAqd2luZG93LCBUaHJvd1Nl
Y3VyaXR5RXJyb3IpKQorICAgICAgICAgICAgaWYgKCF3aW5kb3ctPmZyYW1lKCkgfHwgIUJpbmRp
bmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdygmc3RhdGUsICp3aW5kb3cs
IFRocm93U2VjdXJpdHlFcnJvcikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1
ZTo6ZW5jb2RlKEpTQzo6anNVbmRlZmluZWQoKSk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1
cm4gb3BlcmF0aW9uQ2FsbGVyKHN0YXRlLCB0aGlzT2JqZWN0LmdldCgpLCB0aHJvd1Njb3BlKTsK
KyAgICAgICAgcmV0dXJuIG9wZXJhdGlvbigmc3RhdGUsIHRoaXNPYmplY3QuZ2V0KCksIHRocm93
U2NvcGUpOwogICAgIH0KKwogfTsKIAorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtU291cmNlQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3Ry
ZWFtU291cmNlQ3VzdG9tLmNwcAkocmV2aXNpb24gMjE3NDI1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVNvdXJjZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM1LDQzICszNSwyNiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHN0YXJ0UmVhZGFibGVTdHJlYW0oSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCi17Ci0gICAgVk0mIHZt
ID0gc3RhdGUudm0oKTsKLSAgICBKU1JlYWRhYmxlU3RyZWFtU291cmNlKiBzb3VyY2UgPSBqc0R5
bmFtaWNEb3duY2FzdDxKU1JlYWRhYmxlU3RyZWFtU291cmNlKj4odm0sIHN0YXRlLnRoaXNWYWx1
ZSgpKTsKLSAgICBBU1NFUlQoc291cmNlKTsKLQotICAgIEFTU0VSVChzdGF0ZS5hcmd1bWVudENv
dW50KCkpOwotICAgIEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciogY29udHJvbGxl
ciA9IGpzRHluYW1pY0Rvd25jYXN0PEpTUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlcio+
KHZtLCBzdGF0ZS51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgQVNTRVJUKGNvbnRyb2xsZXIp
OwotCi0gICAgc291cmNlLT53cmFwcGVkKCkuc3RhcnQoUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29u
dHJvbGxlcihjb250cm9sbGVyKSwgV1RGTW92ZShwcm9taXNlKSk7Ci19Ci0KLUpTVmFsdWUgSlNS
ZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQoRXhlY1N0YXRlJiBzdGF0ZSkKK0pTVmFsdWUgSlNS
ZWFkYWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQoRXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIFZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgCisg
ICAgLy8gRklYTUU6IFdoeSBpcyBpdCBvayB0byBBU1NFUlQgdGhlIGFyZ3VtZW50IGNvdW50IGhl
cmU/CiAgICAgQVNTRVJUKHN0YXRlLmFyZ3VtZW50Q291bnQoKSk7CiAgICAgSlNSZWFkYWJsZVN0
cmVhbURlZmF1bHRDb250cm9sbGVyKiBjb250cm9sbGVyID0ganNEeW5hbWljRG93bmNhc3Q8SlNS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyKj4odm0sIHN0YXRlLnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKICAgICBBU1NFUlQoY29udHJvbGxlcik7CiAKICAgICBtX2NvbnRyb2xsZXIuc2V0
KHZtLCB0aGlzLCBjb250cm9sbGVyKTsKIAotICAgIHJldHVybiBjYWxsUHJvbWlzZUZ1bmN0aW9u
PHN0YXJ0UmVhZGFibGVTdHJlYW0sIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JXb3Jr
ZXI+KHN0YXRlKTsKLX0KKyAgICB3cmFwcGVkKCkuc3RhcnQoUmVhZGFibGVTdHJlYW1EZWZhdWx0
Q29udHJvbGxlcihjb250cm9sbGVyKSwgV1RGTW92ZShwcm9taXNlKSk7CiAKLXN0YXRpYyB2b2lk
IHB1bGxSZWFkYWJsZVN0cmVhbShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSkKLXsKLSAgICBWTSYgdm0gPSBzdGF0ZS52bSgpOwotICAgIEpTUmVh
ZGFibGVTdHJlYW1Tb3VyY2UqIHNvdXJjZSA9IGpzRHluYW1pY0Rvd25jYXN0PEpTUmVhZGFibGVT
dHJlYW1Tb3VyY2UqPih2bSwgc3RhdGUudGhpc1ZhbHVlKCkpOwotICAgIEFTU0VSVChzb3VyY2Up
OwotCi0gICAgc291cmNlLT53cmFwcGVkKCkucHVsbChXVEZNb3ZlKHByb21pc2UpKTsKKyAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtU291cmNl
OjpwdWxsKEV4ZWNTdGF0ZSYgc3RhdGUpCitKU1ZhbHVlIEpTUmVhZGFibGVTdHJlYW1Tb3VyY2U6
OnB1bGwoRXhlY1N0YXRlJiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAg
IHJldHVybiBjYWxsUHJvbWlzZUZ1bmN0aW9uPHB1bGxSZWFkYWJsZVN0cmVhbSwgUHJvbWlzZUV4
ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oc3RhdGUpOworICAgIHdyYXBwZWQoKS5wdWxs
KFdURk1vdmUocHJvbWlzZSkpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCiBKU1Zh
bHVlIEpTUmVhZGFibGVTdHJlYW1Tb3VyY2U6OmNvbnRyb2xsZXIoRXhlY1N0YXRlJikgY29uc3QK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNyeXB0
b0N1c3RvbS5jcHAJKHJldmlzaW9uIDIxNzQyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2MCw2NSAr
MTI2MCw3NiBAQCBzdGF0aWMgdm9pZCBqc1N1YnRsZUNyeXB0b0Z1bmN0aW9uVW53cmFwCiAgICAg
dW53cmFwQWxnb3JpdGhtLT5kZWNyeXB0KFdURk1vdmUodW53cmFwUGFyYW1zKSwgdW53cmFwcGlu
Z0tleS5yZWxlYXNlTm9uTnVsbCgpLCBXVEZNb3ZlKHdyYXBwZWRLZXkpLCBXVEZNb3ZlKGNhbGxi
YWNrKSwgV1RGTW92ZShleGNlcHRpb25DYWxsYmFjayksICpzY3JpcHRFeGVjdXRpb25Db250ZXh0
RnJvbUV4ZWNTdGF0ZSgmc3RhdGUpLCBzdWJ0bGUtPndyYXBwZWQoKS53b3JrUXVldWUoKSk7CiB9
CiAKLUpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSkKK0pT
VmFsdWUgSlNTdWJ0bGVDcnlwdG86OmVuY3J5cHQoRXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIHJldHVybiBjYWxsUHJvbWlzZUZ1bmN0aW9u
PGpzU3VidGxlQ3J5cHRvRnVuY3Rpb25FbmNyeXB0UHJvbWlzZSwgUHJvbWlzZUV4ZWN1dGlvblNj
b3BlOjpXaW5kb3dPcldvcmtlcj4oc3RhdGUpOworICAgIGpzU3VidGxlQ3J5cHRvRnVuY3Rpb25F
bmNyeXB0UHJvbWlzZShzdGF0ZSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiB9CiAKLUpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmRlY3J5cHQoRXhlY1N0YXRl
JiBzdGF0ZSkKK0pTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmRlY3J5cHQoRXhlY1N0YXRlJiBzdGF0
ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIHJldHVybiBjYWxsUHJv
bWlzZUZ1bmN0aW9uPGpzU3VidGxlQ3J5cHRvRnVuY3Rpb25EZWNyeXB0UHJvbWlzZSwgUHJvbWlz
ZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oc3RhdGUpOworICAgIGpzU3VidGxlQ3J5
cHRvRnVuY3Rpb25EZWNyeXB0UHJvbWlzZShzdGF0ZSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLUpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OnNpZ24o
RXhlY1N0YXRlJiBzdGF0ZSkKK0pTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OnNpZ24oRXhlY1N0YXRl
JiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIHJldHVybiBj
YWxsUHJvbWlzZUZ1bmN0aW9uPGpzU3VidGxlQ3J5cHRvRnVuY3Rpb25TaWduUHJvbWlzZSwgUHJv
bWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oc3RhdGUpOworICAgIGpzU3VidGxl
Q3J5cHRvRnVuY3Rpb25TaWduUHJvbWlzZShzdGF0ZSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLUpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OnZlcmlm
eShFeGVjU3RhdGUmIHN0YXRlKQorSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6dmVyaWZ5KEV4ZWNT
dGF0ZSYgc3RhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICByZXR1
cm4gY2FsbFByb21pc2VGdW5jdGlvbjxqc1N1YnRsZUNyeXB0b0Z1bmN0aW9uVmVyaWZ5UHJvbWlz
ZSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oc3RhdGUpOworICAgIGpz
U3VidGxlQ3J5cHRvRnVuY3Rpb25WZXJpZnlQcm9taXNlKHN0YXRlLCBXVEZNb3ZlKHByb21pc2Up
KTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotSlNWYWx1ZSBKU1N1YnRsZUNyeXB0
bzo6ZGlnZXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCitKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjpkaWdl
c3QoRXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewot
ICAgIHJldHVybiBjYWxsUHJvbWlzZUZ1bmN0aW9uPGpzU3VidGxlQ3J5cHRvRnVuY3Rpb25EaWdl
c3RQcm9taXNlLCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPihzdGF0ZSk7
CisgICAganNTdWJ0bGVDcnlwdG9GdW5jdGlvbkRpZ2VzdFByb21pc2Uoc3RhdGUsIFdURk1vdmUo
cHJvbWlzZSkpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi0KLUpTVmFsdWUgSlNT
dWJ0bGVDcnlwdG86OmdlbmVyYXRlS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCitKU1ZhbHVlIEpTU3Vi
dGxlQ3J5cHRvOjpnZW5lcmF0ZUtleShFeGVjU3RhdGUmIHN0YXRlLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UpCiB7Ci0gICAgcmV0dXJuIGNhbGxQcm9taXNlRnVuY3Rpb248anNTdWJ0
bGVDcnlwdG9GdW5jdGlvbkdlbmVyYXRlS2V5UHJvbWlzZSwgUHJvbWlzZUV4ZWN1dGlvblNjb3Bl
OjpXaW5kb3dPcldvcmtlcj4oc3RhdGUpOworICAgIGpzU3VidGxlQ3J5cHRvRnVuY3Rpb25HZW5l
cmF0ZUtleVByb21pc2Uoc3RhdGUsIFdURk1vdmUocHJvbWlzZSkpOworICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogfQogCi1KU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjpkZXJpdmVLZXkoRXhlY1N0
YXRlJiBzdGF0ZSkKK0pTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmRlcml2ZUtleShFeGVjU3RhdGUm
IHN0YXRlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgcmV0dXJuIGNh
bGxQcm9taXNlRnVuY3Rpb248anNTdWJ0bGVDcnlwdG9GdW5jdGlvbkRlcml2ZUtleVByb21pc2Us
IFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JXb3JrZXI+KHN0YXRlKTsKKyAgICBqc1N1
YnRsZUNyeXB0b0Z1bmN0aW9uRGVyaXZlS2V5UHJvbWlzZShzdGF0ZSwgV1RGTW92ZShwcm9taXNl
KSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKLUpTVmFsdWUgSlNTdWJ0bGVDcnlw
dG86OmRlcml2ZUJpdHMoRXhlY1N0YXRlJiBzdGF0ZSkKK0pTVmFsdWUgSlNTdWJ0bGVDcnlwdG86
OmRlcml2ZUJpdHMoRXhlY1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9t
aXNlKQogewotICAgIHJldHVybiBjYWxsUHJvbWlzZUZ1bmN0aW9uPGpzU3VidGxlQ3J5cHRvRnVu
Y3Rpb25EZXJpdmVCaXRzUHJvbWlzZSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldv
cmtlcj4oc3RhdGUpOworICAgIGpzU3VidGxlQ3J5cHRvRnVuY3Rpb25EZXJpdmVCaXRzUHJvbWlz
ZShzdGF0ZSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9
CiAKLUpTVmFsdWUgSlNTdWJ0bGVDcnlwdG86OmltcG9ydEtleShFeGVjU3RhdGUmIHN0YXRlKQor
SlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6aW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKIHsKLSAgICByZXR1cm4gY2FsbFByb21pc2VGdW5j
dGlvbjxqc1N1YnRsZUNyeXB0b0Z1bmN0aW9uSW1wb3J0S2V5UHJvbWlzZSwgUHJvbWlzZUV4ZWN1
dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4oc3RhdGUpOworICAgIGpzU3VidGxlQ3J5cHRvRnVu
Y3Rpb25JbXBvcnRLZXlQcm9taXNlKHN0YXRlLCBXVEZNb3ZlKHByb21pc2UpKTsKKyAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIH0KIAotSlNWYWx1ZSBKU1N1YnRsZUNyeXB0bzo6ZXhwb3J0S2V5
KEV4ZWNTdGF0ZSYgc3RhdGUpCitKU1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjpleHBvcnRLZXkoRXhl
Y1N0YXRlJiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewotICAgIHJl
dHVybiBjYWxsUHJvbWlzZUZ1bmN0aW9uPGpzU3VidGxlQ3J5cHRvRnVuY3Rpb25FeHBvcnRLZXlQ
cm9taXNlLCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09yV29ya2VyPihzdGF0ZSk7Cisg
ICAganNTdWJ0bGVDcnlwdG9GdW5jdGlvbkV4cG9ydEtleVByb21pc2Uoc3RhdGUsIFdURk1vdmUo
cHJvbWlzZSkpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi1KU1ZhbHVlIEpTU3Vi
dGxlQ3J5cHRvOjp3cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUpCitKU1ZhbHVlIEpTU3VidGxlQ3J5
cHRvOjp3cmFwS2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKIHsKLSAgICByZXR1cm4gY2FsbFByb21pc2VGdW5jdGlvbjxqc1N1YnRsZUNyeXB0b0Z1
bmN0aW9uV3JhcEtleVByb21pc2UsIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T3JXb3Jr
ZXI+KHN0YXRlKTsKKyAgICBqc1N1YnRsZUNyeXB0b0Z1bmN0aW9uV3JhcEtleVByb21pc2Uoc3Rh
dGUsIFdURk1vdmUocHJvbWlzZSkpOworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi1K
U1ZhbHVlIEpTU3VidGxlQ3J5cHRvOjp1bndyYXBLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKK0pTVmFs
dWUgSlNTdWJ0bGVDcnlwdG86OnVud3JhcEtleShFeGVjU3RhdGUmIHN0YXRlLCBSZWY8RGVmZXJy
ZWRQcm9taXNlPiYmIHByb21pc2UpCiB7Ci0gICAgcmV0dXJuIGNhbGxQcm9taXNlRnVuY3Rpb248
anNTdWJ0bGVDcnlwdG9GdW5jdGlvblVud3JhcEtleVByb21pc2UsIFByb21pc2VFeGVjdXRpb25T
Y29wZTo6V2luZG93T3JXb3JrZXI+KHN0YXRlKTsKKyAgICBqc1N1YnRsZUNyeXB0b0Z1bmN0aW9u
VW53cmFwS2V5UHJvbWlzZShzdGF0ZSwgV1RGTW92ZShwcm9taXNlKSk7CisgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZp
c2lvbiAyMTc0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjA1NSw2ICsyMDU1LDkgQEAgc3ViIEdlbmVy
YXRlSGVhZGVyCiAgICAgICAgIG15ICRpbkFwcGxlQ29weXJpZ2h0ID0gMDsKICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgIlxuICAgIC8vIEN1c3RvbSBmdW5jdGlvbnNcbiIpOwogICAgICAg
ICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQHskaW50ZXJmYWNlLT5mdW5jdGlvbnN9KSB7CisgICAg
ICAgICAgICBuZXh0IHVubGVzcyBIYXNDdXN0b21NZXRob2QoJGZ1bmN0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMpOworICAgICAgICAgICAgbmV4dCBpZiAkZnVuY3Rpb24tPntvdmVybG9hZHN9ICYm
ICRmdW5jdGlvbi0+e292ZXJsb2FkSW5kZXh9ICE9IDE7CisKICAgICAgICAgICAgIGlmICgkZnVu
Y3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0FwcGxlQ29weXJpZ2h0fSkgewogICAgICAgICAg
ICAgICAgIGlmICghJGluQXBwbGVDb3B5cmlnaHQpIHsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaGVhZGVyQ29udGVudCwgJGJlZ2luQXBwbGVDb3B5cmlnaHRGb3JIZWFkZXJGaWxlcyk7CkBA
IC0yMDY0LDEyICsyMDY3LDE4IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICAgICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCk7CiAgICAgICAgICAgICAg
ICAgJGluQXBwbGVDb3B5cmlnaHQgPSAwOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbmV4
dCB1bmxlc3MgSGFzQ3VzdG9tTWV0aG9kKCRmdW5jdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKTsK
LSAgICAgICAgICAgIG5leHQgaWYgJGZ1bmN0aW9uLT57b3ZlcmxvYWRzfSAmJiAkZnVuY3Rpb24t
PntvdmVybG9hZEluZGV4fSAhPSAxOworCiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJp
bmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24p
OwogICAgICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3Ry
aW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworCiAgICAgICAgICAgICBteSAkZnVuY3Rp
b25JbXBsZW1lbnRhdGlvbk5hbWUgPSAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0lt
cGxlbWVudGVkQXN9IHx8ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRmdW5jdGlvbi0+bmFt
ZSk7Ci0gICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICIgLiAoJGZ1bmN0aW9u
LT5pc1N0YXRpYyA/ICJzdGF0aWMgIiA6ICIiKSAuICJKU0M6OkpTVmFsdWUgIiAuICRmdW5jdGlv
bkltcGxlbWVudGF0aW9uTmFtZSAuICIoSlNDOjpFeGVjU3RhdGUmKTtcbiIpOworCisgICAgICAg
ICAgICBteSBAZnVuY3Rpb25Bcmd1bWVudHMgPSAoKTsKKyAgICAgICAgICAgIHB1c2goQGZ1bmN0
aW9uQXJndW1lbnRzLCAiSlNDOjpFeGVjU3RhdGUmIik7CisgICAgICAgICAgICBwdXNoKEBmdW5j
dGlvbkFyZ3VtZW50cywgIlJlZjxEZWZlcnJlZFByb21pc2U+JiYiKSBpZiAkY29kZUdlbmVyYXRv
ci0+SXNQcm9taXNlVHlwZSgkZnVuY3Rpb24tPnR5cGUpICYmICEkZnVuY3Rpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e1JldHVybnNPd25Qcm9taXNlfTsKKworICAgICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICAiIC4gKCRmdW5jdGlvbi0+aXNTdGF0aWMgPyAic3RhdGljICIgOiAi
IikgLiAiSlNDOjpKU1ZhbHVlICIgLiAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgLiAiKCIg
LiBqb2luKCIsICIsIEBmdW5jdGlvbkFyZ3VtZW50cykgLiAiKTtcbiIpOworCiAgICAgICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7
CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgJGVuZEFwcGxlQ29weXJp
Z2h0KSBpZiAkaW5BcHBsZUNvcHlyaWdodDsKQEAgLTMwNjUsNyArMzA3NCw2IEBAIHN1YiBHZW5l
cmF0ZUltcGxlbWVudGF0aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnRIZWFkZXIsIEdlbmVyYXRl
SW1wbGVtZW50YXRpb25Db250ZW50SGVhZGVyKCRpbnRlcmZhY2UpKTsKIAogICAgICRpbXBsSW5j
bHVkZXN7IkpTRE9NQmluZGluZy5oIn0gPSAxOwotICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NQmlu
ZGluZ0NhbGxlci5oIn0gPSAxOwogICAgICRpbXBsSW5jbHVkZXN7IkpTRE9NRXhjZXB0aW9uSGFu
ZGxpbmcuaCJ9ID0gMTsKICAgICAkaW1wbEluY2x1ZGVzeyJKU0RPTVdyYXBwZXJDYWNoZS5oIn0g
PSAxOwogICAgICRpbXBsSW5jbHVkZXN7Ijx3dGYvR2V0UHRyLmg+In0gPSAxOwpAQCAtMzY0OCwx
MCArMzY1NiwxMiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgIH0KIAogICAgIGlm
ICgkbnVtQXR0cmlidXRlcyA+IDApIHsKKyAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9N
QXR0cmlidXRlLmgiKTsKKwogICAgICAgICBteSAkY2FzdGluZ0Z1bmN0aW9uID0gJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3h5VG9KU09iamVjdCJ9ID8gInRvJHtj
bGFzc05hbWV9IiA6IEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2JqZWN0KCRpbnRlcmZhY2UpOwog
ICAgICAgICAjIEZJWE1FOiBSZW1vdmUgSW1wbGljaXRUaGlzIGtleXdvcmQgYXMgaXQgaXMgbm8g
bG9uZ2VyIGRlZmluZWQgYnkgV2ViSURMIHNwZWMgYW5kIGlzIG9ubHkgdXNlZCBpbiBET01XaW5k
b3cuCiAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1wbGlj
aXRUaGlzIn0pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidGVtcGxhdGU8PiBp
bmxpbmUgJHtjbGFzc05hbWV9KiBCaW5kaW5nQ2FsbGVyPCR7Y2xhc3NOYW1lfT46OmNhc3RGb3JB
dHRyaWJ1dGUoRXhlY1N0YXRlJiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKVxuIik7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4gaW5saW5lICR7Y2xh
c3NOYW1lfSogSURMQXR0cmlidXRlPCR7Y2xhc3NOYW1lfT46OmNhc3QoRXhlY1N0YXRlJiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0
byBkZWNvZGVkVGhpc1ZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7XG4iKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChkZWNvZGVkVGhpc1ZhbHVlLmlz
VW5kZWZpbmVkT3JOdWxsKCkpXG4iKTsKQEAgLTM2NTksNyArMzY2OSw3IEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1
cm4gJGNhc3RpbmdGdW5jdGlvbihzdGF0ZS52bSgpLCBkZWNvZGVkVGhpc1ZhbHVlKTsiKTsKICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidGVtcGxhdGU8PiBpbmxpbmUgJHtjbGFz
c05hbWV9KiBCaW5kaW5nQ2FsbGVyPCR7Y2xhc3NOYW1lfT46OmNhc3RGb3JBdHRyaWJ1dGUoRXhl
Y1N0YXRlJiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKVxuIik7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRlPD4gaW5saW5lICR7Y2xhc3NOYW1lfSogSURM
QXR0cmlidXRlPCR7Y2xhc3NOYW1lfT46OmNhc3QoRXhlY1N0YXRlJiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntc
biIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuICRjYXN0aW5n
RnVuY3Rpb24oc3RhdGUudm0oKSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CkBAIC0zNjY3LDEwICszNjc3
LDEyIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgfQogCiAgICAgaWYgKCRudW1G
dW5jdGlvbnMgPiAwICYmICRpbnRlcmZhY2VOYW1lIG5lICJFdmVudFRhcmdldCIpIHsKLSAgICAg
ICAgIyBGSVhNRTogTWFrZSBjb25zaXN0ZW50IGNhc3RGb3JBdHRpYnV0ZSBhbmQgY2FzdEZvck9w
ZXJhdGlvbiBpbiBjYXNlIG9mIEN1c3RvbVByb3h5VG9KU09iamVjdC4KKyAgICAgICAgQWRkVG9J
bXBsSW5jbHVkZXMoIkpTRE9NT3BlcmF0aW9uLmgiKTsKKworICAgICAgICAjIEZJWE1FOiBNYWtl
IGNvbnNpc3RlbnQgSURMQXR0cmlidXRlPD46OmNhc3QgYW5kIElETE9wZXJhdGlvbjw+OjpjYXN0
IGluIGNhc2Ugb2YgQ3VzdG9tUHJveHlUb0pTT2JqZWN0LgogICAgICAgICBteSAkY2FzdGluZ0Z1
bmN0aW9uID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3h5VG9K
U09iamVjdCJ9ID8gInRvJHtjbGFzc05hbWV9IiA6IEdldENhc3RpbmdIZWxwZXJGb3JUaGlzT2Jq
ZWN0KCRpbnRlcmZhY2UpOwogICAgICAgICBteSAkdGhpc1ZhbHVlID0gJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbVByb3h5VG9KU09iamVjdCJ9ID8gInN0YXRlLnRoaXNW
YWx1ZSgpLnRvVGhpcygmc3RhdGUsIE5vdFN0cmljdE1vZGUpIiA6ICJzdGF0ZS50aGlzVmFsdWUo
KSI7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidGVtcGxhdGU8PiBpbmxpbmUgJHtjbGFz
c05hbWV9KiBCaW5kaW5nQ2FsbGVyPCR7Y2xhc3NOYW1lfT46OmNhc3RGb3JPcGVyYXRpb24oRXhl
Y1N0YXRlJiBzdGF0ZSlcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInRlbXBsYXRl
PD4gaW5saW5lICR7Y2xhc3NOYW1lfSogSURMT3BlcmF0aW9uPCR7Y2xhc3NOYW1lfT46OmNhc3Qo
RXhlY1N0YXRlJiBzdGF0ZSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gJGNhc3RpbmdGdW5jdGlv
bihzdGF0ZS52bSgpLCAkdGhpc1ZhbHVlKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn1cblxuIik7CkBAIC0zNjg2LDE0ICszNjk4LDE5IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAgICAgICAgICAgICBteSAkZ2V0RnVuY3Rpb25OYW1lID0gR2V0QXR0cmlidXRlR2V0
dGVyTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlKTsKICAgICAgICAgICAg
IG15ICRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX2xjZmlyc3Qo
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwgJG5hbWUp
OwogCi0gICAgICAgICAgICBteSAkYXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdl
bmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkYXR0cmlidXRlKTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7YXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmd9
XG4iKSBpZiAkYXR0cmlidXRlQ29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgICAgICBteSAkY29u
ZGl0aW9uYWwgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRpb25hbH07
CisgICAgICAgICAgICBpZiAoJGNvbmRpdGlvbmFsKSB7CisgICAgICAgICAgICAgICAgbXkgJGNv
bmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJp
bmdGcm9tQXR0cmlidXRlVmFsdWUoJGNvbmRpdGlvbmFsKTsKKyAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIik7OworICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoISRhdHRyaWJ1dGUtPmlzU3RhdGljIHx8ICRjb2RlR2Vu
ZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkdHlwZSkpIHsKKyAgICAgICAgICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiSlNET01BdHRyaWJ1dGUuaCIsICRjb25kaXRpb25hbCk7CisKICAgICAg
ICAgICAgICAgICBteSAkdGVtcGxhdGVQYXJhbWV0ZXJzID0gIiR7Z2V0RnVuY3Rpb25OYW1lfUdl
dHRlciI7CiAgICAgICAgICAgICAgICAgaWYgKCRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0xlbmllbnRUaGlzfSkgewogICAgICAgICAgICAgICAgICAgICAkdGVtcGxhdGVQYXJhbWV0
ZXJzIC49ICIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZXR1cm5FYXJseSI7Ci0gICAgICAg
ICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+dHlwZS0+bmFtZSBlcSAiUHJvbWlzZSIpIHsK
KyAgICAgICAgICAgICAgICB9IGVsc2lmICgkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgk
YXR0cmlidXRlLT50eXBlKSkgewogICAgICAgICAgICAgICAgICAgICAkdGVtcGxhdGVQYXJhbWV0
ZXJzIC49ICIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZWplY3RQcm9taXNlIjsKICAgICAg
ICAgICAgICAgICB9CiAKQEAgLTM3MDEsNyArMzcxOCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVu
dGF0aW9uCiAKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1Zh
bHVlICR7Z2V0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIEJpbmRpbmdDYWxsZXI8JHtjbGFzc05hbWV9Pjo6YXR0cmlidXRlPCR7dGVtcGxhdGVQ
YXJhbWV0ZXJzfT4oc3RhdGUsIHRoaXNWYWx1ZSwgXCIkbmFtZVwiKTtcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBJRExBdHRyaWJ1dGU8JHtjbGFz
c05hbWV9Pjo6Z2V0PCR7dGVtcGxhdGVQYXJhbWV0ZXJzfT4oKnN0YXRlLCB0aGlzVmFsdWUsIFwi
JG5hbWVcIik7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7CiAKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSAke2dldEZ1bmN0aW9uTmFtZX1HZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgJHtjbGFz
c05hbWV9JiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKVxuIik7CkBAIC0zNzI0
LDggKzM3NDEsOCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgIyBH
bG9iYWwgY29uc3RydWN0b3JzIGNhbiBiZSBkaXNhYmxlZCBhdCBydW50aW1lLgogICAgICAgICAg
ICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0NvbnN0cnVjdG9yVHlwZSgkdHlwZSkpIHsKICAgICAg
ICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEJ5
U2V0dGluZ30pIHsKLSAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkZyYW1l
LmgiKTsKLSAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNldHRpbmdzLmgi
KTsKKyAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkZyYW1lLmgiLCAkY29u
ZGl0aW9uYWwpOworICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2V0dGlu
Z3MuaCIsICRjb25kaXRpb25hbCk7CiAgICAgICAgICAgICAgICAgICAgIG15ICRlbmFibGVfZnVu
Y3Rpb24gPSBUb01ldGhvZE5hbWUoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RW5h
YmxlZEJ5U2V0dGluZ30pIC4gIkVuYWJsZWQiOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIXRoaXNPYmplY3Qud3JhcHBlZCgpLmZyYW1l
KCkpKVxuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTtcbiIpOwpAQCAtMzc0MCw3ICszNzU3LDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntDaGVja1NlY3VyaXR5fSAmJgogICAgICAgICAgICAgICAgICEkYXR0cmli
dXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHl9ICYmCiAgICAgICAg
ICAgICAgICAgISRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0RvTm90Q2hlY2tTZWN1
cml0eU9uR2V0dGVyfSkgewotICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RP
TUJpbmRpbmdTZWN1cml0eS5oIik7CisgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMo
IkpTRE9NQmluZGluZ1NlY3VyaXR5LmgiLCAkY29uZGl0aW9uYWwpOwogICAgICAgICAgICAgICAg
IGlmICgkaW50ZXJmYWNlTmFtZSBlcSAiRE9NV2luZG93IikgewogICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxs
b3dBY2Nlc3NUb0RPTVdpbmRvdygmc3RhdGUsIHRoaXNPYmplY3Qud3JhcHBlZCgpLCBUaHJvd1Nl
Y3VyaXR5RXJyb3IpKVxuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTM3NjgsNyAr
Mzc4NSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAg
ICRjb25zdHJ1Y3RvclR5cGUgPX4gcy9OYW1lZCQvLzsKICAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiOjpn
ZXQke25hbWVkfUNvbnN0cnVjdG9yKHN0YXRlLnZtKCksICZ0aGlzT2JqZWN0KTtcbiIpOwogICAg
ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1
ZGVzKCJKUyIgLiAkY29uc3RydWN0b3JUeXBlIC4gIi5oIiwgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q29uZGl0aW9uYWx9KTsKKyAgICAgICAgICAgICAgICAgICAgQWRkVG9JbXBs
SW5jbHVkZXMoIkpTIiAuICRjb25zdHJ1Y3RvclR5cGUgLiAiLmgiLCAkY29uZGl0aW9uYWwpOwog
ICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSlMiIC4g
JGNvbnN0cnVjdG9yVHlwZSAuICI6OmdldENvbnN0cnVjdG9yKHN0YXRlLnZtKCksIHRoaXNPYmpl
Y3QuZ2xvYmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fSBlbHNlIHsKQEAgLTM4MTAsMTMgKzM4MjcsMTUgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiRE9N
SklUIn0pIHsKICAgICAgICAgICAgICAgICBhc3NlcnQoIk9ubHkgRE9NSklUPUdldHRlciBpcyBz
dXBwb3J0ZWQgZm9yIGF0dHJpYnV0ZXMiKSB1bmxlc3MgJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVk
QXR0cmlidXRlQ29udGFpbnMoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RE9NSklU
fSwgIkdldHRlciIpOwogCi0gICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPiJ9ID0gMTsKLSAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJET01K
SVRJRExUeXBlRmlsdGVyLmgifSA9IDE7CisgICAgICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVk
ZXMoIjx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4iLCAkY29uZGl0aW9uYWwpOworICAgICAgICAgICAg
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJET01KSVRJRExUeXBlRmlsdGVyLmgiLCAkY29uZGl0aW9u
YWwpOworCiAgICAgICAgICAgICAgICAgbXkgJGdlbmVyYXRvck5hbWUgPSAkaW50ZXJmYWNlLT50
eXBlLT5uYW1lIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJpYnV0ZS0+bmFtZSk7
CiAgICAgICAgICAgICAgICAgbXkgJGRvbUpJVENsYXNzTmFtZSA9ICRnZW5lcmF0b3JOYW1lIC4g
IkRPTUpJVCI7CiAgICAgICAgICAgICAgICAgbXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRl
ck5hbWUoJGludGVyZmFjZSwgJGdlbmVyYXRvck5hbWUsICRhdHRyaWJ1dGUpOwogICAgICAgICAg
ICAgICAgIG15ICRzZXR0ZXIgPSBJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpID8gIm51bGxwdHIiIDog
R2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkZ2VuZXJhdG9yTmFtZSwgJGF0dHJp
YnV0ZSk7CiAgICAgICAgICAgICAgICAgbXkgJHJlc3VsdFR5cGUgPSBHZXRSZXN1bHRUeXBlRmls
dGVyKCRpbnRlcmZhY2UsICRhdHRyaWJ1dGUtPnR5cGUpOworCiAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIke2RvbUpJVENsYXNzTmFtZX06OiR7ZG9tSklUQ2xhc3NOYW1lfSgp
XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoJGdldHRlciwgJHNldHRlciwgJHtjbGFzc05hbWV9OjppbmZvKCks
ICRyZXN1bHRUeXBlKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7
XG4iKTsKQEAgLTM4MjksNyArMzg0OCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuXG4iKSBpZiAkYXR0
cmlidXRlQ29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0aW9uYWw7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
TmVlZHNDb25zdHJ1Y3RvclByb3BlcnR5KCRpbnRlcmZhY2UpKSB7CkBAIC0zODk0LDcgKzM5MTMs
NyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogCiAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJib29sICR7cHV0RnVuY3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSlcbiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8JHtjbGFz
c05hbWV9Pjo6c2V0QXR0cmlidXRlPCR7dGVtcGxhdGVQYXJhbWV0ZXJzfT4oc3RhdGUsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCBcIiRuYW1lXCIpO1xuIik7CisgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIElETEF0dHJpYnV0ZTwke2NsYXNzTmFtZX0+Ojpz
ZXQ8JHt0ZW1wbGF0ZVBhcmFtZXRlcnN9Pigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCBcIiRuYW1lXCIpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOwogCiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgaW5s
aW5lIGJvb2wgJHtzZXR0ZXJGdW5jdGlvbn0oRXhlY1N0YXRlJiBzdGF0ZSwgJHtjbGFzc05hbWV9
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKVxuIik7
CkBAIC00MDUxLDEzICs0MDcwLDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAg
ICMgRnVuY3Rpb25zCiAgICAgaWYgKCRudW1GdW5jdGlvbnMgPiAwKSB7Ci0gICAgICAgIG15ICRp
bkFwcGxlQ29weXJpZ2h0ID0gMDsKLQogICAgICAgICBmb3JlYWNoIG15ICRmdW5jdGlvbiAoQGZ1
bmN0aW9ucykgewogICAgICAgICAgICAgR2VuZXJhdGVPcGVyYXRpb25EZWZpbml0aW9uKCRpbnRl
cmZhY2UsICRjbGFzc05hbWUsICRmdW5jdGlvbik7CiAgICAgICAgIH0KLQotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgJGVuZEFwcGxlQ29weXJpZ2h0KSBpZiAkaW5BcHBsZUNvcHlyaWdodDsK
ICAgICB9CiAKICAgICBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb25zKCRpbnRlcmZhY2Us
ICRjbGFzc05hbWUpOwpAQCAtNDMyMywxNCArNDMzOCwxNiBAQCBzdWIgR2VuZXJhdGVPcGVyYXRp
b25EZWZpbml0aW9uCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG4iKTsKICAgICB9CiAKLSAgICBteSAkaGFzUHJvbWlzZVJldHVyblR5cGUgPSAk
b3BlcmF0aW9uLT50eXBlLT5uYW1lIGVxICJQcm9taXNlIjsKKyAgICBteSAkaGFzUHJvbWlzZVJl
dHVyblR5cGUgPSAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkb3BlcmF0aW9uLT50eXBl
KTsKIAogICAgIEFkZFRvSW1wbEluY2x1ZGVzRm9ySURMVHlwZSgkb3BlcmF0aW9uLT50eXBlLCAk
Y29uZGl0aW9uYWwpIHVubGVzcyAkaXNDdXN0b20gb3IgJGhhc1Byb21pc2VSZXR1cm5UeXBlOwot
ICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJKU0RPTVByb21pc2VEZWZlcnJlZC5oIiwgJGNvbmRpdGlv
bmFsKSBpZiAkaGFzUHJvbWlzZVJldHVyblR5cGU7CisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpT
RE9NT3BlcmF0aW9uLmgiLCAkY29uZGl0aW9uYWwpIGlmICEkaGFzUHJvbWlzZVJldHVyblR5cGU7
CisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5o
IiwgJGNvbmRpdGlvbmFsKSBpZiAkaGFzUHJvbWlzZVJldHVyblR5cGU7CiAgICAgQWRkVG9JbXBs
SW5jbHVkZXMoIjxydW50aW1lL0Vycm9yLmg+IiwgJGNvbmRpdGlvbmFsKTsKIAogICAgIG15ICRm
dW5jdGlvbk5hbWUgPSBHZXRGdW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9w
ZXJhdGlvbik7CiAgICAgbXkgJGZ1bmN0aW9uUmV0dXJuID0gIkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwiOworICAgIG15ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9ICRvcGVyYXRp
b24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQXN9IHx8ICRjb2RlR2VuZXJhdG9y
LT5XS19sY2ZpcnN0KCRvcGVyYXRpb24tPm5hbWUpOwogCiAgICAgaWYgKCEkaXNDdXN0b20gJiYg
JGlzT3ZlcmxvYWRlZCkgewogICAgICAgICAjIEFwcGVuZCBhIG51bWJlciB0byBhbiBvdmVybG9h
ZGVkIG1ldGhvZCdzIG5hbWUgdG8gbWFrZSBpdCB1bmlxdWU6CkBAIC00MzM5LDg1ICs0MzU2LDcw
IEBAIHN1YiBHZW5lcmF0ZU9wZXJhdGlvbkRlZmluaXRpb24KICAgICAgICAgJGZ1bmN0aW9uUmV0
dXJuID0gInN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUiOwogICAgIH0KIAotICAgIG15ICRm
dW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0ltcGxlbWVudGVkQXN9IHx8ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRvcGVyYXRp
b24tPm5hbWUpOwotCi0gICAgaWYgKCEkb3BlcmF0aW9uLT5pc1N0YXRpYykgewotICAgICAgICBt
eSAkY2xhc3NQYXJhbWV0ZXJUeXBlID0gJGNsYXNzTmFtZSBlcSAiSlNFdmVudFRhcmdldCIgPyAi
SlNFdmVudFRhcmdldFdyYXBwZXIqIiA6ICIke2NsYXNzTmFtZX0qIjsKLSAgICAgICAgbXkgJG9w
dGlvbmFsUHJvbWlzZVBhcmFtZXRlciA9ICgkaGFzUHJvbWlzZVJldHVyblR5cGUgJiYgISRpc0N1
c3RvbSkgPyAiIFJlZjxEZWZlcnJlZFByb21pc2U+JiYsIiA6ICIiOwotICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgInN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSAke2Z1bmN0aW9u
TmFtZX1DYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCAke2NsYXNzUGFyYW1ldGVyVHlwZX0sJHtvcHRp
b25hbFByb21pc2VQYXJhbWV0ZXJ9IEpTQzo6VGhyb3dTY29wZSYpO1xuIik7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiXG4iKTsKLSAgICB9CisgICAgaWYgKCRvcGVyYXRpb24tPmlzU3Rh
dGljKSB7CisgICAgICAgIG15ICRyZXF1aXJlc1Byb21pc2VUcmFtcG9saW5lID0gJGhhc1Byb21p
c2VSZXR1cm5UeXBlOworICAgICAgICBpZiAoJHJlcXVpcmVzUHJvbWlzZVRyYW1wb2xpbmUpIHsK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSAke2Z1bmN0aW9uTmFtZX1Qcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSlcbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIke2Z1bmN0aW9uUmV0dXJufSAke2Z1bmN0aW9uTmFtZX0oRXhl
Y1N0YXRlKiBzdGF0ZSlcbiIpOworICAgICAgICB9CiAKLSAgICBpZiAoJGhhc1Byb21pc2VSZXR1
cm5UeXBlICYmICEkaXNDdXN0b20pIHsKLSAgICAgICAgbXkgJHNjb3BlID0gJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RXhwb3NlZH0gPyAiV2luZG93T3JXb3JrZXIiIDogIldpbmRv
d09ubHkiOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSAke2Z1bmN0aW9uTmFtZX1Qcm9taXNlKEV4ZWNTdGF0ZSosIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4iKTsKLSAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIke2Z1bmN0aW9uUmV0dXJufSAke2Z1bmN0aW9uTmFtZX0oRXhlY1N0
YXRlKiBzdGF0ZSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwotICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBBU1NFUlQoc3RhdGUpO1xuIik7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbFByb21p
c2VGdW5jdGlvbjwke2Z1bmN0aW9uTmFtZX1Qcm9taXNlLCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6
OiR7c2NvcGV9Pigqc3RhdGUpKTtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
biIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAic3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSAke2Z1bmN0aW9uTmFtZX1Q
cm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSlc
biIpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtmdW5jdGlv
blJldHVybn0gJHtmdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKLSAgICB9CiAK
LSAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOworICAgICAgICBpZiAoJG9wZXJhdGlvbi0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q0VSZWFjdGlvbnN9KSB7CisgICAgICAgICAgICBBZGRUb0lt
cGxJbmNsdWRlcygiQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCIsICRjb25kaXRpb25hbCk7
CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBDdXN0b21FbGVtZW50UmVhY3Rp
b25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjaztcbiIpOworICAgICAgICB9CiAKKyAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4iKTsK
KyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7CiAKLSAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q0VSZWFjdGlvbnN9KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrO1xuIik7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IkN1c3RvbUVsZW1lbnRSZWFjdGlv
blF1ZXVlLmgifSA9IDE7Ci0gICAgfQorICAgICAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hl
Y2soXEBpbXBsQ29udGVudCwgJG9wZXJhdGlvbiwgJGludGVyZmFjZSk7CiAKLSAgICBpZiAoJG9w
ZXJhdGlvbi0+aXNTdGF0aWMpIHsKICAgICAgICAgaWYgKCRpc0N1c3RvbSkgewotICAgICAgICAg
ICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKFxAaW1wbENvbnRlbnQsICRvcGVyYXRpb24s
ICRpbnRlcmZhY2UpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSgke2NsYXNzTmFtZX06OiIgLiAkZnVuY3Rpb25JbXBsZW1lbnRhdGlv
bk5hbWUgLiAiKHN0YXRlKSk7XG4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7Ci0gICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTtcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7Ci0KLSAgICAgICAgICAgIEdlbmVyYXRlQXJn
dW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlKTsK
KyAgICAgICAgICAgIG15IEBjdXN0b21GdW5jdGlvbkFyZ3VtZW50cyA9ICgpOworICAgICAgICAg
ICAgcHVzaChAY3VzdG9tRnVuY3Rpb25Bcmd1bWVudHMsICIqc3RhdGUiKTsKKyAgICAgICAgICAg
IHB1c2goQGN1c3RvbUZ1bmN0aW9uQXJndW1lbnRzLCAiV1RGTW92ZShwcm9taXNlKSIpIGlmICRo
YXNQcm9taXNlUmV0dXJuVHlwZTsKIAorICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgke2NsYXNzTmFtZX06OiIgLiAkZnVuY3Rpb25JbXBs
ZW1lbnRhdGlvbk5hbWUgLiAiKCIgLiBqb2luKCIsICIsIEBjdXN0b21GdW5jdGlvbkFyZ3VtZW50
cykgLiAiKSk7XG4iKTsKKyAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG15ICRmdW5jdGlv
blN0cmluZyA9IEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKFxAaW1wbENvbnRlbnQsICRvcGVyYXRp
b24sICRpbnRlcmZhY2UsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSk7CiAgICAgICAgICAg
ICBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCRvcGVyYXRpb24sICRmdW5jdGlv
blN0cmluZywgIiAgICAiLCAkaW50ZXJmYWNlKTsKICAgICAgICAgfQorICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIn1cblxuIik7CisKKyAgICAgICAgaWYgKCRyZXF1aXJlc1Byb21pc2VUcmFt
cG9saW5lKSB7CisgICAgICAgICAgICBteSAkZXhwb3N1cmVTY29wZSA9ICRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0V4cG9zZWR9ID8gIldpbmRvd09yV29ya2VyIiA6ICJXaW5kb3dP
bmx5IjsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtmdW5jdGlvblJldHVybn0g
JHtmdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxQcm9taXNlRnVuY3Rpb248JHtmdW5jdGlvbk5h
bWV9UHJvbWlzZSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjoke2V4cG9zdXJlU2NvcGV9Pigqc3Rh
dGUpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOworICAg
ICAgICB9CisKICAgICB9IGVsc2UgewogICAgICAgICBteSAkbWV0aG9kTmFtZSA9ICRvcGVyYXRp
b24tPm5hbWU7CisgICAgICAgIG15ICRpZGxPcGVyYXRpb25UeXBlID0gJGhhc1Byb21pc2VSZXR1
cm5UeXBlID8gIklETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2UiIDogIklETE9wZXJhdGlvbiI7
CisgICAgICAgIG15ICRwYXNzZXNQcm9taXNlSW4gPSAkaGFzUHJvbWlzZVJldHVyblR5cGUgJiYg
ISRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JldHVybnNPd25Qcm9taXNlfTsKIAot
ICAgICAgICBpZiAoJGhhc1Byb21pc2VSZXR1cm5UeXBlICYmICEkaXNDdXN0b20pIHsKLSAgICAg
ICAgICAgIG15ICR0ZW1wbGF0ZVBhcmFtZXRlcnMgPSAiJHtmdW5jdGlvbk5hbWV9Q2FsbGVyIjsK
LSAgICAgICAgICAgICR0ZW1wbGF0ZVBhcmFtZXRlcnMgLj0gIiwgQ2FzdGVkVGhpc0Vycm9yQmVo
YXZpb3I6OkFzc2VydCIgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1ByaXZh
dGVJZGVudGlmaWVyfSBhbmQgbm90ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1B1
YmxpY0lkZW50aWZpZXJ9KTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBCaW5kaW5nQ2FsbGVyPCRjbGFzc05hbWU+OjpjYWxsUHJvbWlzZU9wZXJhdGlvbjwke3Rl
bXBsYXRlUGFyYW1ldGVyc30+KHN0YXRlLCBXVEZNb3ZlKHByb21pc2UpLCBcIiR7bWV0aG9kTmFt
ZX1cIik7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuIik7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgInN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSAke2Z1bmN0aW9uTmFt
ZX1DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCAke2NsYXNzTmFtZX0qIGNhc3RlZFRoaXMs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKVxuIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBteSAkY2xhc3NQYXJhbWV0
ZXJUeXBlID0gJGNsYXNzTmFtZSBlcSAiSlNFdmVudFRhcmdldCIgPyAiSlNFdmVudFRhcmdldFdy
YXBwZXIqIiA6ICIke2NsYXNzTmFtZX0qIjsKLSAgICAgICAgICAgIG15ICR0ZW1wbGF0ZVBhcmFt
ZXRlcnMgPSAiJHtmdW5jdGlvbk5hbWV9Q2FsbGVyIjsKLSAgICAgICAgICAgIGlmICgkb3BlcmF0
aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn0gYW5kIG5vdCAkb3Bl
cmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQdWJsaWNJZGVudGlmaWVyfSkgewotICAgICAg
ICAgICAgICAgICR0ZW1wbGF0ZVBhcmFtZXRlcnMgLj0gIiwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydCI7Ci0gICAgICAgICAgICB9IGVsc2lmICgkaGFzUHJvbWlzZVJldHVyblR5cGUp
IHsKLSAgICAgICAgICAgICAgICAjIEZJWE1FOiBXZSBuZWVkIHRoaXMgc3BlY2lmaWMgaGFuZGxp
bmcgZm9yIGN1c3RvbSBwcm9taXNlLXJldHVybmluZyBmdW5jdGlvbnMuCi0gICAgICAgICAgICAg
ICAgIyBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gaGF2ZSB0aGUgY2FzdGVkLXRoaXMgY29kZSBjYWxs
aW5nIHRoZSBwcm9taXNlLXNwZWNpZmljIGNvZGUuCi0gICAgICAgICAgICAgICAgJHRlbXBsYXRl
UGFyYW1ldGVycyAuPSAiLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmVqZWN0UHJvbWlzZSI7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJl
dHVybiBCaW5kaW5nQ2FsbGVyPCRjbGFzc05hbWU+OjpjYWxsT3BlcmF0aW9uPCR7dGVtcGxhdGVQ
YXJhbWV0ZXJzfT4oc3RhdGUsIFwiJHttZXRob2ROYW1lfVwiKTtcbiIpOwotICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlICR7ZnVuY3Rpb25OYW1lfUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsICR7Y2xhc3NQYXJhbWV0ZXJUeXBlfSBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpXG4iKTsKLSAgICAgICAgfQorICAgICAgICBteSBAc2lnbmF0dXJlQXJndW1l
bnRzID0gKCk7CisgICAgICAgIHB1c2goQHNpZ25hdHVyZUFyZ3VtZW50cywgIkpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSIpOworICAgICAgICBwdXNoKEBzaWduYXR1cmVBcmd1bWVudHMsICJ0eXBlbmFt
ZSAke2lkbE9wZXJhdGlvblR5cGV9PCR7Y2xhc3NOYW1lfT46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMiKTsKKyAgICAgICAgcHVzaChAc2lnbmF0dXJlQXJndW1lbnRzLCAiUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlIikgaWYgJHBhc3Nlc1Byb21pc2VJbjsKKyAgICAgICAgcHVzaChA
c2lnbmF0dXJlQXJndW1lbnRzLCAiSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlIik7CiAKKyAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUgJHtmdW5jdGlvbk5hbWV9Q2FsbGVyKCIgLiBqb2luKCIsICIsIEBzaWduYXR1cmVBcmd1bWVu
dHMpIC4gIilcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oc3RhdGUpO1xuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIp
OwogCisgICAgICAgIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDRVJlYWN0
aW9uc30pIHsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJDdXN0b21FbGVtZW50UmVh
Y3Rpb25RdWV1ZS5oIiwgJGNvbmRpdGlvbmFsKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIEN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlv
blN0YWNrO1xuIik7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57Q2hlY2tTZWN1cml0eX0gYW5kICEkb3BlcmF0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntEb05vdENoZWNrU2VjdXJpdHl9KSB7Ci0gICAgICAgICAgICBBZGRUb0ltcGxJ
bmNsdWRlcygiSlNET01CaW5kaW5nU2VjdXJpdHkuaCIpOworICAgICAgICAgICAgQWRkVG9JbXBs
SW5jbHVkZXMoIkpTRE9NQmluZGluZ1NlY3VyaXR5LmgiLCAkY29uZGl0aW9uYWwpOwogICAgICAg
ICAgICAgaWYgKCRpbnRlcmZhY2UtPnR5cGUtPm5hbWUgZXEgIkRPTVdpbmRvdyIpIHsKICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6
c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgp
LCBUaHJvd1NlY3VyaXR5RXJyb3IpKVxuIik7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDQy
Nyw3ICs0NDI5LDExIEBAIHN1YiBHZW5lcmF0ZU9wZXJhdGlvbkRlZmluaXRpb24KICAgICAgICAg
fQogCiAgICAgICAgIGlmICgkaXNDdXN0b20pIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+IiAuICRmdW5jdGlv
bkltcGxlbWVudGF0aW9uTmFtZSAuICIoKnN0YXRlKSk7XG4iKTsKKyAgICAgICAgICAgIG15IEBj
dXN0b21GdW5jdGlvbkFyZ3VtZW50cyA9ICgpOworICAgICAgICAgICAgcHVzaChAY3VzdG9tRnVu
Y3Rpb25Bcmd1bWVudHMsICIqc3RhdGUiKTsKKyAgICAgICAgICAgIHB1c2goQGN1c3RvbUZ1bmN0
aW9uQXJndW1lbnRzLCAiV1RGTW92ZShwcm9taXNlKSIpIGlmICRwYXNzZXNQcm9taXNlSW47CisK
KyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoY2FzdGVkVGhpcy0+IiAuICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSAuICIoIiAuIGpv
aW4oIiwgIiwgQGN1c3RvbUZ1bmN0aW9uQXJndW1lbnRzKSAuICIpKTtcbiIpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgYXV0byYgaW1wbCA9
IGNhc3RlZFRoaXMtPndyYXBwZWQoKTtcbiIpIHVubGVzcyAkb3BlcmF0aW9uLT5pc01hcExpa2U7
CiAKQEAgLTQ0MzYsOSArNDQ0MiwyMSBAQCBzdWIgR2VuZXJhdGVPcGVyYXRpb25EZWZpbml0aW9u
CiAgICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVj
ayhcQGltcGxDb250ZW50LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25JbXBsZW1l
bnRhdGlvbk5hbWUpOwogICAgICAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9u
Q2FsbCgkb3BlcmF0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICIgICAgIiwgJGludGVyZmFjZSk7CiAg
ICAgICAgIH0KLSAgICB9CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIAot
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKKyAgICAgICAgbXkgJGV4cG9zdXJlU2Nv
cGUgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSA/ICJXaW5kb3dP
cldvcmtlciIgOiAiV2luZG93T25seSI7CisgICAgICAgIG15ICRjYWxsRnVuY3Rpb25OYW1lID0g
JG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmV0dXJuc093blByb21pc2V9ID8gImNh
bGxSZXR1cm5pbmdPd25Qcm9taXNlIiA6ICJjYWxsIjsKKworICAgICAgICBteSBAY2FsbEZ1bmN0
aW9uVGVtcGxhdGVBcmd1bWVudHMgPSAoKTsKKyAgICAgICAgcHVzaChAY2FsbEZ1bmN0aW9uVGVt
cGxhdGVBcmd1bWVudHMsICIke2Z1bmN0aW9uTmFtZX1DYWxsZXIiKTsKKyAgICAgICAgcHVzaChA
Y2FsbEZ1bmN0aW9uVGVtcGxhdGVBcmd1bWVudHMsICJQcm9taXNlRXhlY3V0aW9uU2NvcGU6OiR7
ZXhwb3N1cmVTY29wZX0iKSBpZiAkcGFzc2VzUHJvbWlzZUluOworICAgICAgICBwdXNoKEBjYWxs
RnVuY3Rpb25UZW1wbGF0ZUFyZ3VtZW50cywgIkNhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3Nl
cnQiKSBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZp
ZXJ9IGFuZCBub3QgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHVibGljSWRlbnRp
Zmllcn0pOworCisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtmdW5jdGlvblJldHVybn0g
JHtmdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
ICR7aWRsT3BlcmF0aW9uVHlwZX08JHtjbGFzc05hbWV9Pjo6JHtjYWxsRnVuY3Rpb25OYW1lfTwi
IC4gam9pbigiLCAiLCBAY2FsbEZ1bmN0aW9uVGVtcGxhdGVBcmd1bWVudHMpIC4gIj4oKnN0YXRl
LCBcIiR7bWV0aG9kTmFtZX1cIik7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9
XG5cbiIpOworICAgIH0KIAogICAgIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PntET01KSVR9KSB7CiAgICAgICAgICRpbXBsSW5jbHVkZXN7IjxpbnRlcnByZXRlci9GcmFtZVRy
YWNlcnMuaD4ifSA9IDE7CkBAIC00NTgxLDcgKzQ1OTksNyBAQCBzdWIgR2VuZXJhdGVTZXJpYWxp
emVyRnVuY3Rpb24KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CiAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7c2VyaWFsaXplck5hdGl2
ZUZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOwogICAgIHB1c2goQGltcGxDb250
ZW50LCAie1xuIik7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEJpbmRpbmdD
YWxsZXI8SlMkaW50ZXJmYWNlTmFtZT46OmNhbGxPcGVyYXRpb248JHtzZXJpYWxpemVyTmF0aXZl
RnVuY3Rpb25OYW1lfUNhbGxlcj4oc3RhdGUsIFwiJHNlcmlhbGl6ZXJGdW5jdGlvbk5hbWVcIik7
XG4iKTsKKyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
JHtpbnRlcmZhY2VOYW1lfT46OmNhbGw8JHtzZXJpYWxpemVyTmF0aXZlRnVuY3Rpb25OYW1lfUNh
bGxlcj4oKnN0YXRlLCBcIiRzZXJpYWxpemVyRnVuY3Rpb25OYW1lXCIpO1xuIik7CiAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJ9XG4iKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuIik7CiB9
CkBAIC00ODA4LDcgKzQ4MjYsNyBAQCBzdWIgTmVlZHNFeHBsaWNpdFByb3BhZ2F0ZUV4Y2VwdGlv
bkNhbGwKIAogICAgIHJldHVybiAwIHVubGVzcyAkZnVuY3Rpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e01heVRocm93RXhjZXB0aW9ufTsKIAotICAgIHJldHVybiAkZnVuY3Rpb24tPnR5cGUgJiYg
KCRmdW5jdGlvbi0+dHlwZS0+bmFtZSBlcSAidm9pZCIgfHwgJGZ1bmN0aW9uLT50eXBlLT5uYW1l
IGVxICJQcm9taXNlIik7CisgICAgcmV0dXJuICRmdW5jdGlvbi0+dHlwZSAmJiAoJGZ1bmN0aW9u
LT50eXBlLT5uYW1lIGVxICJ2b2lkIiB8fCAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgk
ZnVuY3Rpb24tPnR5cGUpKTsKIH0KIAogc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCkBAIC00
OTM0LDcgKzQ5NTIsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgJGFy
Z3VtZW50SW5kZXgrKzsKICAgICB9CiAKLSAgICBwdXNoKEBhcmd1bWVudHMsICJXVEZNb3ZlKHBy
b21pc2UpIikgaWYgJGZ1bmN0aW9uLT50eXBlICYmICRmdW5jdGlvbi0+dHlwZS0+bmFtZSBlcSAi
UHJvbWlzZSI7CisgICAgcHVzaChAYXJndW1lbnRzLCAiV1RGTW92ZShwcm9taXNlKSIpIGlmICRm
dW5jdGlvbi0+dHlwZSAmJiAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkZnVuY3Rpb24t
PnR5cGUpOwogCiAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gIiRmdW5jdGlvbk5hbWUoIiAuIGpv
aW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKSI7CiAgICAgJGZ1bmN0aW9uU3RyaW5nID0gInByb3Bh
Z2F0ZUV4Y2VwdGlvbigqc3RhdGUsIHRocm93U2NvcGUsICRmdW5jdGlvblN0cmluZykiIGlmIE5l
ZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxsKCRmdW5jdGlvbik7CkBAIC01MzM0LDcg
KzUzNTIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbAogewogICAg
IG15ICgkZnVuY3Rpb24sICRmdW5jdGlvblN0cmluZywgJGluZGVudCwgJGludGVyZmFjZSkgPSBA
XzsKIAotICAgIGlmICgkZnVuY3Rpb24tPnR5cGUtPm5hbWUgZXEgInZvaWQiIHx8ICRmdW5jdGlv
bi0+dHlwZS0+bmFtZSBlcSAiUHJvbWlzZSIpIHsKKyAgICBpZiAoJGZ1bmN0aW9uLT50eXBlLT5u
YW1lIGVxICJ2b2lkIiB8fCAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgkZnVuY3Rpb24t
PnR5cGUpKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiRmdW5jdGlv
blN0cmluZztcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJyZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CiAgICAgfSBlbHNlIHsKQEAg
LTU0MzEsNyArNTQ0OSw3IEBAIEVORAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5E
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2Z1bmN0aW9uTmFtZX0oSlND
OjpFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPCRjbGFzc05h
bWU+OjpjYWxsT3BlcmF0aW9uPCR7ZnVuY3Rpb25OYW1lfUNhbGxlcj4oc3RhdGUsICIke3Byb3Bl
cnR5TmFtZX0iKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPCR7Y2xhc3NOYW1lfT46OmNhbGw8
JHtmdW5jdGlvbk5hbWV9Q2FsbGVyPigqc3RhdGUsICIke3Byb3BlcnR5TmFtZX0iKTsKIH0KIAog
RU5ECkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMuanNvbgkocmV2aXNpb24gMjE3NDI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24JKHdvcmtpbmcgY29weSkKQEAgLTM3OSw2ICsz
NzksOSBAQAogICAgICAgICAiUmV0aHJvd0V4Y2VwdGlvbiI6IHsKICAgICAgICAgICAgICJjb250
ZXh0c0FsbG93ZWQiOiBbIm9wZXJhdGlvbiIsICJjYWxsYmFjay1mdW5jdGlvbiJdCiAgICAgICAg
IH0sCisgICAgICAgICJSZXR1cm5zT3duUHJvbWlzZSI6IHsKKyAgICAgICAgICAgICJjb250ZXh0
c0FsbG93ZWQiOiBbIm9wZXJhdGlvbiJdCisgICAgICAgIH0sCiAgICAgICAgICJTYW1lT2JqZWN0
IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiYXR0cmlidXRlIl0sCiAgICAg
ICAgICAgICAic3RhbmRhcmQiOiB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE9iai5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCShyZXZpc2lvbiAyMTc0MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTQxNyw2ICs0MTcsOCBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEt
bG93CiAgICAgc3RhdGljIFByb21pc2U8dm9pZD4gdGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbigp
OwogICAgIFtNYXlUaHJvd0V4Y2VwdGlvbl0gc3RhdGljIFByb21pc2U8dm9pZD4gdGVzdFN0YXRp
Y1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oKTsKICAgICBbQ3VzdG9tXSBQcm9taXNlPHZv
aWQ+IHRlc3RDdXN0b21Qcm9taXNlRnVuY3Rpb24oKTsKKyAgICBbQ3VzdG9tXSBzdGF0aWMgUHJv
bWlzZTx2b2lkPiB0ZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uKCk7CisgICAgW0N1c3Rv
bSwgUmV0dXJuc093blByb21pc2VdIFByb21pc2U8dm9pZD4gdGVzdEN1c3RvbVJldHVybnNPd25Q
cm9taXNlRnVuY3Rpb24oKTsKIAogICAgIC8vIFB1dEZvcndhcmRzCiAgICAgW1B1dEZvcndhcmRz
PW5hbWVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBUZXN0Tm9kZSBwdXRGb3J3YXJkc0F0dHJpYnV0ZTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFj
ZU5hbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCShyZXZpc2lvbiAyMTc0MjUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAogI2luY2x1ZGUgIkpTSW50ZXJmYWNlTmFtZS5o
IgogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nQ2Fs
bGVyLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNp
bmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U01hcExpa2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU01hcExpa2UuY3BwCShyZXZpc2lvbiAyMTc0MjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNNYXBMaWtlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjEsMTIgKzIxLDEzIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNN
YXBMaWtlLmgiCiAKKyNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0NhbGxlci5oIgogI2luY2x1ZGUgIkpT
RE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0
LmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9N
TWFwTGlrZS5oIgorI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01X
cmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluTmFtZXMuaD4KICNpbmNs
dWRlIDxydW50aW1lL0Vycm9yLmg+CkBAIC0xNTQsMTIgKzE1NSwxMiBAQCB2b2lkIEpTTWFwTGlr
ZTo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsCiAgICAgdGhpc09iamVjdC0+SlNNYXBMaWtlOjp+
SlNNYXBMaWtlKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTTWFwTGlrZSogQmluZGluZ0Nh
bGxlcjxKU01hcExpa2U+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3RlbXBsYXRlPD4gaW5saW5lIEpTTWFwTGlrZSogSURMQXR0
cmlidXRlPEpTTWFwTGlrZT46OmNhc3QoRXhlY1N0YXRlJiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlKQogewogICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU01hcExpa2UqPihz
dGF0ZS52bSgpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4g
aW5saW5lIEpTTWFwTGlrZSogQmluZGluZ0NhbGxlcjxKU01hcExpa2U+OjpjYXN0Rm9yT3BlcmF0
aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCit0ZW1wbGF0ZTw+IGlubGluZSBKU01hcExpa2UqIElETE9w
ZXJhdGlvbjxKU01hcExpa2U+OjpjYXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgcmV0dXJu
IGpzRHluYW1pY0Rvd25jYXN0PEpTTWFwTGlrZSo+KHN0YXRlLnZtKCksIHN0YXRlLnRoaXNWYWx1
ZSgpKTsKIH0KQEAgLTE2OCw3ICsxNjksNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNNYXBM
aWtlU2l6ZUdldHRlCiAKIEVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVNpemUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNNYXBMaWtlPjo6YXR0cmlidXRlPGpzTWFwTGlrZVNpemVHZXR0
ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJzaXplIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U01hcExpa2U+OjpnZXQ8anNNYXBMaWtlU2l6ZUdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJz
aXplIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc01hcExpa2VTaXplR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTTWFwTGlrZSYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKQEAgLTIwOCwxNCArMjA5LDcgQEAgSlNWYWx1ZSBKU01hcExpa2U6OmdldENvbnN0cnVj
dG9yKFZNJiB2bQogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU01hcExpa2VDb25zdHJ1
Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uR2V0Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNNYXBMaWtlKiwgSlNDOjpU
aHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJv
dG90eXBlRnVuY3Rpb25HZXQoRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gQmluZGlu
Z0NhbGxlcjxKU01hcExpa2U+OjpjYWxsT3BlcmF0aW9uPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uR2V0Q2FsbGVyPihzdGF0ZSwgImdldCIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXRDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBKU01hcExpa2UqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcExpa2VQcm90
b3R5cGVGdW5jdGlvbkdldENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU01hcExpa2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0yMjYsMTQgKzIyMCwxMiBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETEFueT4oZm9yd2FyZEdldFRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBX
VEZNb3ZlKGtleSkpKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhc0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTTWFw
TGlrZSosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KEV4ZWNT
dGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNNYXBMaWtlPjo6Y2Fs
bE9wZXJhdGlvbjxqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhc0NhbGxlcj4oc3RhdGUsICJo
YXMiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25HZXRDYWxsZXI+KCpzdGF0ZSwgImdldCIpOwogfQogCi1zdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXND
YWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU01hcExpa2UqIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhc0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0
ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0yNDQsNTYgKzIzNiw0
OCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEhhc1RvTWFwTGlrZSgqc3RhdGUs
ICpjYXN0ZWRUaGlzLCBXVEZNb3ZlKGtleSkpKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXNDYWxsZXIoSlND
OjpFeGVjU3RhdGUqLCBKU01hcExpa2UqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJv
dG90eXBlRnVuY3Rpb25IYXMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGlu
Z0NhbGxlcjxKU01hcExpa2U+OjpjYWxsT3BlcmF0aW9uPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uRW50cmllc0NhbGxlcj4oc3RhdGUsICJlbnRyaWVzIik7CisgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzQ2FsbGVy
Pigqc3RhdGUsICJoYXMiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllc0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIEpTTWFwTGlrZSogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uRW50cmllc0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU01hcExpa2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElE
TEFueT4oZm9yd2FyZEVudHJpZXNUb01hcExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKIH0K
IAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uS2V5c0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTTWFwTGlrZSosIEpTQzo6VGhyb3dT
Y29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlw
ZUZ1bmN0aW9uS2V5cyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU01hcExpa2U+OjpjYWxsT3BlcmF0aW9uPGpz
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0NhbGxlcj4oc3RhdGUsICJrZXlzIik7CisgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uRW50cmllc0NhbGxlcj4oKnN0YXRlLCAiZW50cmllcyIpOwogfQogCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNNYXBMaWtlKiBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkS2V5c1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0
ZWRUaGlzKSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU01hcExp
a2UqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c01hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXMoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU01hcExpa2U+Ojpj
YWxsT3BlcmF0aW9uPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzQ2FsbGVyPihzdGF0
ZSwgInZhbHVlcyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxq
c01hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXNDYWxsZXI+KCpzdGF0ZSwgImtleXMiKTsKIH0K
IAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uVmFsdWVzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNNYXBMaWtlKiBjYXN0
ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxsZXIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExBbnk+KGZvcndhcmRWYWx1ZXNUb01h
cExpa2UoKnN0YXRlLCAqY2FzdGVkVGhpcykpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaENhbGxlcihKU0M6
OkV4ZWNTdGF0ZSosIEpTTWFwTGlrZSosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaChFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90
b3R5cGVGdW5jdGlvblZhbHVlcyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTTWFwTGlrZT46OmNhbGxPcGVyYXRpb248anNNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25Gb3JFYWNoQ2FsbGVyPihzdGF0ZSwgImZvckVhY2giKTsKKyAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXND
YWxsZXI+KCpzdGF0ZSwgInZhbHVlcyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgSlNNYXBMaWtlKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRo
cm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJv
dG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTMwNCwxNCArMjg4LDEyIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcEwKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkRm9yRWFjaFRvTWFwTGlrZSgqc3RhdGUsICpjYXN0
ZWRUaGlzLCBXVEZNb3ZlKGNhbGxiYWNrKSkpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNNYXBMaWtlKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25BZGQoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25Gb3JFYWNoKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNNYXBMaWtlPjo6Y2FsbE9wZXJhdGlvbjxqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkFk
ZENhbGxlcj4oc3RhdGUsICJhZGQiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlr
ZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyPigqc3RhdGUs
ICJmb3JFYWNoIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01h
cExpa2VQcm90b3R5cGVGdW5jdGlvbkFkZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpT
TWFwTGlrZSogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRk
Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTTWFw
TGlrZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKQEAgLTMyMiwxNCArMzA0LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc01hcEwKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihm
b3J3YXJkQWRkVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlw
ZUZ1bmN0aW9uQ2xlYXJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU01hcExpa2UqLCBKU0M6OlRo
cm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90
b3R5cGVGdW5jdGlvbkNsZWFyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNNYXBMaWtlPjo6Y2FsbE9wZXJhdGlvbjxq
c01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkNsZWFyQ2FsbGVyPihzdGF0ZSwgImNsZWFyIik7Cisg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlw
ZUZ1bmN0aW9uQWRkQ2FsbGVyPigqc3RhdGUsICJhZGQiKTsKIH0KIAotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQ2xlYXJDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU01hcExpa2UqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01h
cExpa2VQcm90b3R5cGVGdW5jdGlvbkNsZWFyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTMzNywxNCArMzE3LDEyIEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcEwKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25EZWxldGVDYWxsZXIoSlNDOjpF
eGVjU3RhdGUqLCBKU01hcExpa2UqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkRlbGV0ZShFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5
cGVGdW5jdGlvbkNsZWFyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdD
YWxsZXI8SlNNYXBMaWtlPjo6Y2FsbE9wZXJhdGlvbjxqc01hcExpa2VQcm90b3R5cGVGdW5jdGlv
bkRlbGV0ZUNhbGxlcj4oc3RhdGUsICJkZWxldGUiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25DbGVhckNhbGxlcj4o
KnN0YXRlLCAiY2xlYXIiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgSlNNYXBMaWtlKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25EZWxldGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNNYXBMaWtlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwpAQCAtMzU1LDYgKzMzMywxMSBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNNYXBMCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pT
PElETEFueT4oZm9yd2FyZERlbGV0ZVRvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzLCBXVEZN
b3ZlKGtleSkpKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25EZWxldGUoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25E
ZWxldGVDYWxsZXI+KCpzdGF0ZSwgImRlbGV0ZSIpOworfQorCiBib29sIEpTTWFwTGlrZU93bmVy
Ojppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhh
bmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIFVOVVNFRF9QQVJBTSho
YW5kbGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
UmVhZE9ubHlNYXBMaWtlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1hcExpa2UuY3BwCShyZXZpc2lvbiAyMTc0MjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNSZWFkT25seU1h
cExpa2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMiArMjEsMTMgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJKU1JlYWRPbmx5TWFwTGlrZS5oIgogCisjaW5jbHVkZSAiSlNE
T01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RP
TUJpbmRpbmdDYWxsZXIuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0
YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0
aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTU1hcExpa2UuaCIKKyNpbmNsdWRlICJKU0RP
TU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSA8
YnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg+CiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgpAQCAt
MTQ4LDEyICsxNDksMTIgQEAgdm9pZCBKU1JlYWRPbmx5TWFwTGlrZTo6ZGVzdHJveShKU0M6OkpT
QwogICAgIHRoaXNPYmplY3QtPkpTUmVhZE9ubHlNYXBMaWtlOjp+SlNSZWFkT25seU1hcExpa2Uo
KTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNSZWFkT25seU1hcExpa2UqIEJpbmRpbmdDYWxs
ZXI8SlNSZWFkT25seU1hcExpa2U+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYgc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3RlbXBsYXRlPD4gaW5saW5lIEpTUmVhZE9ubHlN
YXBMaWtlKiBJRExBdHRyaWJ1dGU8SlNSZWFkT25seU1hcExpa2U+OjpjYXN0KEV4ZWNTdGF0ZSYg
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAgICByZXR1cm4ganNEeW5hbWlj
RG93bmNhc3Q8SlNSZWFkT25seU1hcExpa2UqPihzdGF0ZS52bSgpLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTUmVhZE9ubHlNYXBMaWtlKiBC
aW5kaW5nQ2FsbGVyPEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3Rh
dGUmIHN0YXRlKQordGVtcGxhdGU8PiBpbmxpbmUgSlNSZWFkT25seU1hcExpa2UqIElETE9wZXJh
dGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OmNhc3QoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICBy
ZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNSZWFkT25seU1hcExpa2UqPihzdGF0ZS52bSgpLCBz
dGF0ZS50aGlzVmFsdWUoKSk7CiB9CkBAIC0xNjIsNyArMTYzLDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUwogCiBFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFw
TGlrZVNpemUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNSZWFkT25seU1hcExpa2U+
OjphdHRyaWJ1dGU8anNSZWFkT25seU1hcExpa2VTaXplR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVl
LCAic2l6ZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNSZWFkT25seU1hcExpa2U+Ojpn
ZXQ8anNSZWFkT25seU1hcExpa2VTaXplR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgInNpemUi
KTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlU2l6ZUdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1JlYWRPbmx5TWFwTGlrZSYgdGhpc09iamVjdCwgVGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKQEAgLTIwMiwxNCArMjAzLDcgQEAgSlNWYWx1ZSBKU1JlYWRPbmx5
TWFwTGlrZTo6Z2V0Q29uc3RydWN0bwogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Jl
YWRPbmx5TWFwTGlrZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldENhbGxlcihKU0M6OkV4
ZWNTdGF0ZSosIEpTUmVhZE9ubHlNYXBMaWtlKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlv
bkdldChFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTUmVh
ZE9ubHlNYXBMaWtlPjo6Y2FsbE9wZXJhdGlvbjxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uR2V0Q2FsbGVyPihzdGF0ZSwgImdldCIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldENhbGxl
cihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTUmVhZE9ubHlNYXBMaWtlKiBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkdldENhbGxlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
IHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKQEAgLTIyMCwxNCArMjE0LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1JlYWQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJk
R2V0VG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90
eXBlRnVuY3Rpb25IYXNDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1JlYWRPbmx5TWFwTGlrZSos
IEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVh
ZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlv
bkdldChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTUmVh
ZE9ubHlNYXBMaWtlPjo6Y2FsbE9wZXJhdGlvbjxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uSGFzQ2FsbGVyPihzdGF0ZSwgImhhcyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNSZWFkT25seU1hcExpa2U+OjpjYWxsPGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rp
b25HZXRDYWxsZXI+KCpzdGF0ZSwgImdldCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhc0NhbGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTUmVhZE9ubHlNYXBMaWtlKiBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhc0NhbGxlcihKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
QEAgLTIzOCw1NiArMjMwLDQ4IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1JlYWQKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQW55Pihmb3J3YXJkSGFz
VG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMsIFdURk1vdmUoa2V5KSkpKTsKIH0KIAotc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25FbnRyaWVzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNSZWFkT25seU1hcExpa2Uq
LCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Jl
YWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllcyhFeGVjU3RhdGUqIHN0YXRlKQor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1
bmN0aW9uSGFzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNSZWFkT25seU1hcExpa2U+OjpjYWxsT3BlcmF0aW9uPGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90
eXBlRnVuY3Rpb25FbnRyaWVzQ2FsbGVyPihzdGF0ZSwgImVudHJpZXMiKTsKKyAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uSGFzQ2FsbGVyPigqc3RhdGUsICJoYXMiKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rp
b25FbnRyaWVzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNSZWFkT25seU1hcExpa2Uq
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50
cmllc0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1JlYWRPbmx5TWFwTGlrZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
QW55Pihmb3J3YXJkRW50cmllc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkT25seU1hcExpa2VQcm90
b3R5cGVGdW5jdGlvbktleXNDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1JlYWRPbmx5TWFwTGlr
ZSosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25FbnRyaWVzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNSZWFkT25seU1hcExpa2U+OjpjYWxsT3BlcmF0aW9uPGpzUmVhZE9ubHlNYXBMaWtlUHJv
dG90eXBlRnVuY3Rpb25LZXlzQ2FsbGVyPihzdGF0ZSwgImtleXMiKTsKKyAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uRW50cmllc0NhbGxlcj4oKnN0YXRlLCAiZW50cmllcyIpOwogfQogCi1zdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVG
dW5jdGlvbktleXNDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1JlYWRPbmx5TWFwTGlr
ZSogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25L
ZXlzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
UmVhZE9ubHlNYXBMaWtlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExB
bnk+KGZvcndhcmRLZXlzVG9NYXBMaWtlKCpzdGF0ZSwgKmNhc3RlZFRoaXMpKSk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlw
ZUZ1bmN0aW9uVmFsdWVzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNSZWFkT25seU1hcExpa2Uq
LCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Jl
YWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25LZXlzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNSZWFkT25seU1hcExpa2U+OjpjYWxsT3BlcmF0aW9uPGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90
eXBlRnVuY3Rpb25WYWx1ZXNDYWxsZXI+KHN0YXRlLCAidmFsdWVzIik7CisgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OmNhbGw8anNSZWFkT25seU1hcExpa2VQcm90
b3R5cGVGdW5jdGlvbktleXNDYWxsZXI+KCpzdGF0ZSwgImtleXMiKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rp
b25WYWx1ZXNDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1JlYWRPbmx5TWFwTGlrZSog
Y2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1
ZXNDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNS
ZWFkT25seU1hcExpa2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEFu
eT4oZm9yd2FyZFZhbHVlc1RvTWFwTGlrZSgqc3RhdGUsICpjYXN0ZWRUaGlzKSkpOwogfQogCi1z
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkT25seU1hcExpa2VQcm90b3R5
cGVGdW5jdGlvbkZvckVhY2hDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1JlYWRPbmx5TWFwTGlr
ZSosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25WYWx1ZXMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1JlYWRPbmx5TWFwTGlrZT46OmNhbGxPcGVyYXRpb248anNSZWFkT25seU1hcExpa2VQ
cm90b3R5cGVGdW5jdGlvbkZvckVhY2hDYWxsZXI+KHN0YXRlLCAiZm9yRWFjaCIpOworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNSZWFkT25seU1hcExpa2U+OjpjYWxsPGpzUmVhZE9ubHlNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxsZXI+KCpzdGF0ZSwgInZhbHVlcyIpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkT25seU1hcExpa2VQcm90
b3R5cGVGdW5jdGlvbkZvckVhY2hDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1JlYWRP
bmx5TWFwTGlrZSogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25Gb3JFYWNoQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtMjk4LDYgKzI4MiwxMSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETEFueT4oZm9yd2FyZEZvckVhY2hUb01hcExpa2UoKnN0YXRlLCAqY2Fz
dGVkVGhpcywgV1RGTW92ZShjYWxsYmFjaykpKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goRXhlY1N0
YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtl
Pjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaENhbGxlcj4o
KnN0YXRlLCAiZm9yRWFjaCIpOworfQorCiBib29sIEpTUmVhZE9ubHlNYXBMaWtlT3duZXI6Omlz
UmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxl
LCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGhhbmRs
ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAkocmV2aXNpb24gMjE3
NDI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFj
dGl2ZURPTU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDEyICsyMSwxMyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTVGVzdEFjdGl2ZURPTU9iamVjdC5oIgogCisj
aW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNp
bmNsdWRlICJKU0RPTUJpbmRpbmdDYWxsZXIuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmdTZWN1
cml0eS5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAj
aW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGlu
Zy5oIgorI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVy
Q2FjaGUuaCIKICNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+
CkBAIC0xNTEsMTIgKzE1MiwxMiBAQCB2b2lkIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6ZGVzdHJv
eShKU0M6CiAgICAgdGhpc09iamVjdC0+SlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojp+SlNUZXN0QWN0
aXZlRE9NT2JqZWN0KCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEFjdGl2ZURPTU9i
amVjdCogQmluZGluZ0NhbGxlcjxKU1Rlc3RBY3RpdmVET01PYmplY3Q+OjpjYXN0Rm9yQXR0cmli
dXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3RlbXBsYXRl
PD4gaW5saW5lIEpTVGVzdEFjdGl2ZURPTU9iamVjdCogSURMQXR0cmlidXRlPEpTVGVzdEFjdGl2
ZURPTU9iamVjdD46OmNhc3QoRXhlY1N0YXRlJiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlKQogewogICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RBY3RpdmVET01PYmpl
Y3QqPihzdGF0ZS52bSgpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKLXRlbXBs
YXRlPD4gaW5saW5lIEpTVGVzdEFjdGl2ZURPTU9iamVjdCogQmluZGluZ0NhbGxlcjxKU1Rlc3RB
Y3RpdmVET01PYmplY3Q+OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCit0ZW1w
bGF0ZTw+IGlubGluZSBKU1Rlc3RBY3RpdmVET01PYmplY3QqIElETE9wZXJhdGlvbjxKU1Rlc3RB
Y3RpdmVET01PYmplY3Q+OjpjYXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgcmV0dXJuIGpz
RHluYW1pY0Rvd25jYXN0PEpTVGVzdEFjdGl2ZURPTU9iamVjdCo+KHN0YXRlLnZtKCksIHN0YXRl
LnRoaXNWYWx1ZSgpKTsKIH0KQEAgLTE2NSw3ICsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0QWN0aXZlRE9NT2JqCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9i
amVjdEV4Y2l0aW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RBY3Rp
dmVET01PYmplY3Q+OjphdHRyaWJ1dGU8anNUZXN0QWN0aXZlRE9NT2JqZWN0RXhjaXRpbmdBdHRy
R2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiZXhjaXRpbmdBdHRyIik7CisgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RBY3RpdmVET01PYmplY3Q+OjpnZXQ8anNUZXN0QWN0aXZlRE9NT2Jq
ZWN0RXhjaXRpbmdBdHRyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImV4Y2l0aW5nQXR0ciIp
OwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0RXhjaXRp
bmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdEFjdGl2ZURPTU9iamVjdCYgdGhp
c09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTIwOCwxNCArMjA5LDcgQEAgSlNW
YWx1ZSBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmdldENvbnN0cgogICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8
Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1
bmN0aW9uRXhjaXRpbmdGdW5jdGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdEFjdGl2
ZURPTU9iamVjdCosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5j
dGlvbihFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dEFjdGl2ZURPTU9iamVjdD46OmNhbGxPcGVyYXRpb248anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJv
dG90eXBlRnVuY3Rpb25FeGNpdGluZ0Z1bmN0aW9uQ2FsbGVyPihzdGF0ZSwgImV4Y2l0aW5nRnVu
Y3Rpb24iKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEFj
dGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdGlvbkNhbGxlcihKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdEFjdGl2ZURPTU9iamVjdCogY2FzdGVkVGhpcywgSlND
OjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdGlv
bkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RBY3RpdmVET01PYmplY3Q+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0yMzAsMTQgKzIyNCwxMiBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2VDYWxsZXIoSlND
OjpFeGVjU3RhdGUqLCBKU1Rlc3RBY3RpdmVET01PYmplY3QqLCBKU0M6OlRocm93U2NvcGUmKTsK
LQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90
b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhj
aXRpbmdGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdEFjdGl2ZURPTU9iamVjdD46OmNhbGxPcGVyYXRpb248anNUZXN0QWN0aXZlRE9N
T2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZUNhbGxlcj4oc3RhdGUsICJwb3N0TWVz
c2FnZSIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0QWN0aXZlRE9NT2JqZWN0Pjo6
Y2FsbDxqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3Rp
b25DYWxsZXI+KCpzdGF0ZSwgImV4Y2l0aW5nRnVuY3Rpb24iKTsKIH0KIAotc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0
aW9uUG9zdE1lc3NhZ2VDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RBY3RpdmVE
T01PYmplY3QqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5
cGVGdW5jdGlvblBvc3RNZXNzYWdlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdEFjdGl2ZURPTU9iamVjdD46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTI1MCw2ICsyNDIs
MTEgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVz
c2FnZShFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
QWN0aXZlRE9NT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5j
dGlvblBvc3RNZXNzYWdlQ2FsbGVyPigqc3RhdGUsICJwb3N0TWVzc2FnZSIpOworfQorCiBib29s
IEpTVGVzdEFjdGl2ZURPTU9iamVjdE93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhK
U0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNp
dG9yKQogewogICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFj
dGlvbnMuY3BwCShyZXZpc2lvbiAyMTc0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MywxMSArMjMsMTIgQEAKIAogI2luY2x1ZGUgIkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgi
CiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNp
bmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdDYWxsZXIuaCIK
ICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUg
IkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNp
bmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
CiAjaW5jbHVkZSAiSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oIgogI2luY2x1ZGUgPHJ1
bnRpbWUvRXJyb3IuaD4KQEAgLTE0NCwxMiArMTQ1LDEyIEBAIHZvaWQgSlNUZXN0Q0VSZWFjdGlv
bnM6OmRlc3Ryb3koSlNDOjpKU0MKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RDRVJlYWN0aW9uczo6
fkpTVGVzdENFUmVhY3Rpb25zKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENFUmVh
Y3Rpb25zKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdENFUmVhY3Rpb25zPjo6Y2FzdEZvckF0dHJpYnV0
ZShFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit0ZW1wbGF0ZTw+
IGlubGluZSBKU1Rlc3RDRVJlYWN0aW9ucyogSURMQXR0cmlidXRlPEpTVGVzdENFUmVhY3Rpb25z
Pjo6Y2FzdChFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CiAg
ICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdENFUmVhY3Rpb25zKj4oc3RhdGUudm0o
KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RDRVJlYWN0aW9ucyogQmluZGluZ0NhbGxlcjxKU1Rlc3RDRVJlYWN0aW9ucz46OmNhc3RG
b3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENF
UmVhY3Rpb25zKiBJRExPcGVyYXRpb248SlNUZXN0Q0VSZWFjdGlvbnM+OjpjYXN0KEV4ZWNTdGF0
ZSYgc3RhdGUpCiB7CiAgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdENFUmVhY3Rp
b25zKj4oc3RhdGUudm0oKSwgc3RhdGUudGhpc1ZhbHVlKCkpOwogfQpAQCAtMTU4LDcgKzE1OSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc0EKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0Q0VSZWFjdGlvbnNBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnMoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
cmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnM+OjphdHRyaWJ1dGU8anNUZXN0
Q0VSZWFjdGlvbnNBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnNHZXR0ZXI+KHN0YXRlLCB0aGlzVmFs
dWUsICJhdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdENFUmVhY3Rpb25zPjo6Z2V0PGpzVGVzdENFUmVhY3Rpb25zQXR0cmlidXRlV2l0aENF
UmVhY3Rpb25zR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImF0dHJpYnV0ZVdpdGhDRVJlYWN0
aW9ucyIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNBdHRy
aWJ1dGVXaXRoQ0VSZWFjdGlvbnNHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0Q0VSZWFj
dGlvbnMmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0xNzQsNyArMTc1
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zUgogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc1JlZmxlY3RBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnMo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnM+OjphdHRyaWJ1
dGU8anNUZXN0Q0VSZWFjdGlvbnNSZWZsZWN0QXR0cmlidXRlV2l0aENFUmVhY3Rpb25zR2V0dGVy
PihzdGF0ZSwgdGhpc1ZhbHVlLCAicmVmbGVjdEF0dHJpYnV0ZVdpdGhDRVJlYWN0aW9ucyIpOwor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q0VSZWFjdGlvbnM+OjpnZXQ8anNUZXN0Q0VS
ZWFjdGlvbnNSZWZsZWN0QXR0cmlidXRlV2l0aENFUmVhY3Rpb25zR2V0dGVyPigqc3RhdGUsIHRo
aXNWYWx1ZSwgInJlZmxlY3RBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnMiKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zUmVmbGVjdEF0dHJpYnV0ZVdpdGhDRVJl
YWN0aW9uc0dldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RDRVJlYWN0aW9ucyYgdGhpc09i
amVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTE5MCw3ICsxOTEsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNTCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXJBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdD
YWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnM+OjphdHRyaWJ1dGU8anNUZXN0Q0VSZWFjdGlvbnNTdHJp
bmdpZmllckF0dHJpYnV0ZUdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInN0cmluZ2lmaWVyQXR0
cmlidXRlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RDRVJlYWN0aW9ucz46Omdl
dDxqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQXR0cmlidXRlR2V0dGVyPigqc3RhdGUsIHRo
aXNWYWx1ZSwgInN0cmluZ2lmaWVyQXR0cmlidXRlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQXR0cmlidXRlR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdENFUmVhY3Rpb25zJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQpAQCAtMjMwLDcgKzIzMSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RD
RVJlYWN0aW9uc0EKIAogYm9vbCBzZXRKU1Rlc3RDRVJlYWN0aW9uc0F0dHJpYnV0ZVdpdGhDRVJl
YWN0aW9ucyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rl
c3RDRVJlYWN0aW9ucz46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RDRVJlYWN0aW9uc0F0dHJpYnV0
ZVdpdGhDRVJlYWN0aW9uc0Z1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJhdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdENFUmVhY3Rpb25zPjo6c2V0PHNldEpTVGVzdENFUmVhY3Rpb25zQXR0cmlidXRlV2l0aENF
UmVhY3Rpb25zRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhdHRy
aWJ1dGVXaXRoQ0VSZWFjdGlvbnMiKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVz
dENFUmVhY3Rpb25zQXR0cmlidXRlV2l0aENFUmVhY3Rpb25zRnVuY3Rpb24oRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0Q0VSZWFjdGlvbnMmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpCkBAIC0yNTAsNyArMjUxLDcgQEAgc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdENFUmVhY3Rpb25zUgogCiBib29sIHNldEpTVGVzdENFUmVhY3Rpb25zUmVmbGVj
dEF0dHJpYnV0ZVdpdGhDRVJlYWN0aW9ucyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4g
QmluZGluZ0NhbGxlcjxKU1Rlc3RDRVJlYWN0aW9ucz46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RD
RVJlYWN0aW9uc1JlZmxlY3RBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnNGdW5jdGlvbj4oc3RhdGUs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicmVmbGVjdEF0dHJpYnV0ZVdpdGhDRVJlYWN0aW9u
cyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q0VSZWFjdGlvbnM+OjpzZXQ8c2V0
SlNUZXN0Q0VSZWFjdGlvbnNSZWZsZWN0QXR0cmlidXRlV2l0aENFUmVhY3Rpb25zRnVuY3Rpb24+
KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJyZWZsZWN0QXR0cmlidXRlV2l0aENF
UmVhY3Rpb25zIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RDRVJlYWN0aW9u
c1JlZmxlY3RBdHRyaWJ1dGVXaXRoQ0VSZWFjdGlvbnNGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRl
LCBKU1Rlc3RDRVJlYWN0aW9ucyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKQEAgLTI3MCw3ICsyNzEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0Q0VSZWFjdGlvbnNTCiAKIGJvb2wgc2V0SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
ckF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVu
Y29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxK
U1Rlc3RDRVJlYWN0aW9ucz46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyQXR0cmlidXRlRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
InN0cmluZ2lmaWVyQXR0cmlidXRlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RD
RVJlYWN0aW9ucz46OnNldDxzZXRKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQXR0cmlidXRl
RnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzdHJpbmdpZmllckF0
dHJpYnV0ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllckF0dHJpYnV0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdENFUmVh
Y3Rpb25zJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQpAQCAtMjkyLDIzICsyOTMsMjEgQEAgSlNWYWx1ZSBKU1Rlc3RDRVJlYWN0aW9uczo6Z2V0Q29u
c3RydWN0bwogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RDRVJlYWN0aW9uc0Nv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9i
amVjdCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q0VS
ZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc0NhbGxlcihKU0M6
OkV4ZWNTdGF0ZSosIEpTVGVzdENFUmVhY3Rpb25zKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9ucyhFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIEN1c3Rv
bUVsZW1lbnRSZWFjdGlvblN0YWNrIGN1c3RvbUVsZW1lbnRSZWFjdGlvblN0YWNrOwotICAgIHJl
dHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdENFUmVhY3Rpb25zPjo6Y2FsbE9wZXJhdGlvbjxqc1Rl
c3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zQ2FsbGVy
PihzdGF0ZSwgIm1ldGhvZFdpdGhDRVJlYWN0aW9ucyIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhDRVJlYWN0aW9uc0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdENFUmVh
Y3Rpb25zKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RDRVJlYWN0aW9ucz46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBDdXN0b21FbGVt
ZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjazsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGltcGwubWV0aG9kV2l0aENFUmVhY3Rp
b25zKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDRVJlYWN0aW9ucz46OmNhbGw8anNUZXN0Q0VSZWFjdGlv
bnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc0NhbGxlcj4oKnN0YXRlLCAi
bWV0aG9kV2l0aENFUmVhY3Rpb25zIik7Cit9CisKIGJvb2wgSlNUZXN0Q0VSZWFjdGlvbnNPd25l
cjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBo
YW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICBVTlVTRURfUEFSQU0o
aGFuZGxlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
ci5jcHAJKHJldmlzaW9uIDIxNzQyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjIsMTEgKzIyLDEyIEBACiAjaW5jbHVkZSAiSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdp
Zmllci5oIgogCiAjaW5jbHVkZSAiQ3VzdG9tRWxlbWVudFJlYWN0aW9uUXVldWUuaCIKKyNpbmNs
dWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1
ZGUgIkpTRE9NQmluZGluZ0NhbGxlci5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCiAjaW5jbHVkZSAiSlNE
T01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5j
bHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oPgpAQCAtMTM2LDEyICsxMzcsMTIg
QEAgdm9pZCBKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpkZXN0cgogICAgIHRoaXNPYmpl
Y3QtPkpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6On5KU1Rlc3RDRVJlYWN0aW9uc1N0cmlu
Z2lmaWVyKCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5n
aWZpZXIqIEJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj46OmNhc3RG
b3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQor
dGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciogSURMQXR0cmli
dXRlPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+OjpjYXN0KEV4ZWNTdGF0ZSYgc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAgICByZXR1cm4ganNEeW5hbWljRG93bmNh
c3Q8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcio+KHN0YXRlLnZtKCksIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q0VSZWFjdGlv
bnNTdHJpbmdpZmllciogQmluZGluZ0NhbGxlcjxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
Pjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQordGVtcGxhdGU8PiBpbmxpbmUg
SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciogSURMT3BlcmF0aW9uPEpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXI+OjpjYXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgcmV0dXJuIGpz
RHluYW1pY0Rvd25jYXN0PEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqPihzdGF0ZS52bSgp
LCBzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CkBAIC0xNTAsNyArMTUxLDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zUwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj46OmF0dHJpYnV0ZTxqc1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyVmFsdWVHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJ2YWx1ZSIpOworICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj46OmdldDxqc1Rl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyVmFsdWVHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAi
dmFsdWUiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENFUmVhY3Rpb25zU3Ry
aW5naWZpZXJWYWx1ZUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMTkwLDcg
KzE5MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RDRVJlYWN0aW9uc1MKIAogYm9v
bCBzZXRKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj46
OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyVmFsdWVGdW5jdGlv
bj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidmFsdWUiKTsKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI+OjpzZXQ8c2V0SlNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllclZhbHVlRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJ2YWx1ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllclZhbHVlRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTIxMSwxNCArMjEyLDcgQEAgSlNWYWx1ZSBKU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyOjpnZQogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxK
U1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBl
RnVuY3Rpb25Ub1N0cmluZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXIqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0
cmluZyhFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dENFUmVhY3Rpb25zU3RyaW5naWZpZXI+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdENFUmVhY3Rpb25z
U3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQ2FsbGVyPihzdGF0ZSwgInRvU3Ry
aW5nIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0NhbGxlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIqIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0
cmluZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtMjI2LDYgKzIyMCwxMSBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBsLnZhbHVlKCkpKTsKIH0KIAor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVy
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllcj46OmNhbGw8anNUZXN0
Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdDYWxsZXI+KCpz
dGF0ZSwgInRvU3RyaW5nIik7Cit9CisKIGJvb2wgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
ck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIFVOVVNFRF9Q
QVJBTShoYW5kbGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMTc0MjUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw3ICsyMiw2IEBACiAjaW5jbHVkZSAi
SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaCIKIAogI2luY2x1ZGUgIkpTRE9N
QmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0NhbGxlci5oIgogI2luY2x1ZGUgIkpT
RE9NQnVpbHRpbkNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGlu
Zy5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdC5jcHAJKHJldmlzaW9uIDIxNzQyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRlICJKU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5oIgogCiAjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nQ2FsbGVyLmgiCiAjaW5jbHVkZSAi
SlNET01Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIK
ICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgpJbmRleDogU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyMTc0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMiwxMCArMjIsMTAgQEAKICNpbmNsdWRlICJKU1Rlc3RDdXN0b21OYW1l
ZEdldHRlci5oIgogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01C
aW5kaW5nQ2FsbGVyLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFi
bGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlv
bkhhbmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RP
TVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg+CkBAIC0xNjcsNyArMTY3LDcgQEAgYm9vbCBKU1Rl
c3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0T3duUHJvcAogICAgIHJldHVybiBCYXNlOjpnZXRPd25Q
cm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QsIHN0YXRlLCBpbmRleCwgc2xvdCk7CiB9CiAK
LXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBCaW5kaW5nQ2FsbGVy
PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0
YXRlKQordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIElETE9wZXJh
dGlvbjxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcj46OmNhc3QoRXhlY1N0YXRlJiBzdGF0ZSkKIHsK
ICAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPihz
dGF0ZS52bSgpLCBzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CkBAIC0yMDEsMTQgKzIwMSw3IEBAIEpT
VmFsdWUgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldENvbnMKICAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcj4odm0sICpqc0Nh
c3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90
eXBlRnVuY3Rpb25Bbm90aGVyRnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RD
dXN0b21OYW1lZEdldHRlciosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25Bbm90
aGVyRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcj46OmNhbGxPcGVyYXRpb248anNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkFub3RoZXJGdW5jdGlvbkNhbGxlcj4oc3RhdGUsICJh
bm90aGVyRnVuY3Rpb24iKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25Bbm90aGVyRnVuY3Rpb25D
YWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlciogY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25B
bm90aGVyRnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0yMjEsNiArMjE0LDExIEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25Bbm90aGVyRnVu
Y3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyPjo6Y2FsbDxqc1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlw
ZUZ1bmN0aW9uQW5vdGhlckZ1bmN0aW9uQ2FsbGVyPigqc3RhdGUsICJhbm90aGVyRnVuY3Rpb24i
KTsKK30KKwogYm9vbCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlck93bmVyOjppc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIFVOVVNFRF9QQVJBTShoYW5kbGUpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERPTUpJVC5jcHAJKHJldmlzaW9uIDIxNzQyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NSwxMSArMjUsMTIgQEAKICNpbmNsdWRlICJET01KSVRJRExDb252ZXJ0LmgiCiAjaW5jbHVkZSAi
RE9NSklUSURMVHlwZS5oIgogI2luY2x1ZGUgIkRPTUpJVElETFR5cGVGaWx0ZXIuaCIKKyNpbmNs
dWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1
ZGUgIkpTRE9NQmluZGluZ0NhbGxlci5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RD
b25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCiAjaW5jbHVkZSAiSlNE
T01FeGNlcHRpb25IYW5kbGluZy5oIgorI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5j
bHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU0VsZW1lbnQuaCIKICNpbmNs
dWRlICJKU05vZGVMaXN0LmgiCkBAIC0yMjUsMTIgKzIyNiwxMiBAQCBKU09iamVjdCogSlNUZXN0
RE9NSklUOjpwcm90b3R5cGUoVk0mIHZtCiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rl
c3RET01KSVQ+KHZtLCBnbG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rl
c3RET01KSVQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvckF0dHJpYnV0ZShF
eGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit0ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3RET01KSVQqIElETEF0dHJpYnV0ZTxKU1Rlc3RET01KSVQ+OjpjYXN0KEV4ZWNT
dGF0ZSYgc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAgICByZXR1cm4ganNE
eW5hbWljRG93bmNhc3Q8SlNUZXN0RE9NSklUKj4oc3RhdGUudm0oKSwgSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RET01KSVQqIEJpbmRp
bmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRl
KQordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RE9NSklUKiBJRExPcGVyYXRpb248SlNUZXN0RE9N
SklUPjo6Y2FzdChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIHJldHVybiBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RET01KSVQqPihzdGF0ZS52bSgpLCBzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CkBA
IC0yMzksNyArMjQwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEFueUF0
dAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRBbnlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RET01KSVRBbnlBdHRy
R2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiYW55QXR0ciIpOworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVEFueUF0dHJHZXR0ZXI+KCpzdGF0
ZSwgdGhpc1ZhbHVlLCAiYW55QXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0RE9NSklUQW55QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRo
aXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0yNjYsNyArMjY3LDcgQEAgc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJvb2xlYQogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RET01KSVRCb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rl
c3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUQm9vbGVhbkF0dHJHZXR0ZXI+KHN0YXRl
LCB0aGlzVmFsdWUsICJib29sZWFuQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVEJvb2xlYW5BdHRyR2V0dGVyPigqc3RhdGUsIHRo
aXNWYWx1ZSwgImJvb2xlYW5BdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRCb29sZWFuQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQm
IHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0yOTMsNyArMjk0LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVBdAogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RET01KSVRCeXRlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rl
c3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUQnl0ZUF0dHJHZXR0ZXI+KHN0YXRlLCB0
aGlzVmFsdWUsICJieXRlQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9N
SklUPjo6Z2V0PGpzVGVzdERPTUpJVEJ5dGVBdHRyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwg
ImJ5dGVBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRl
QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0zMjAsNyArMzIxLDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0QQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRP
Y3RldEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0
cmlidXRlPGpzVGVzdERPTUpJVE9jdGV0QXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgIm9j
dGV0QXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpz
VGVzdERPTUpJVE9jdGV0QXR0ckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJvY3RldEF0dHIi
KTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0QXR0ckdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpCkBAIC0zNDcsNyArMzQ4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdERPTUpJVFNob3J0QQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRTaG9ydEF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpz
VGVzdERPTUpJVFNob3J0QXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInNob3J0QXR0ciIp
OworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJ
VFNob3J0QXR0ckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJzaG9ydEF0dHIiKTsKIH0KIAog
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFNob3J0QXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCkBAIC0zNzQsNyArMzc1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VFVuc2lnbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNU
ZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJ1bnNp
Z25lZFNob3J0QXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6
Z2V0PGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1
ZSwgInVuc2lnbmVkU2hvcnRBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RE
T01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC00MDEsNyArNDAy
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdBdAogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUTG9uZ0F0dHJHZXR0ZXI+KHN0
YXRlLCB0aGlzVmFsdWUsICJsb25nQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVExvbmdBdHRyR2V0dGVyPigqc3RhdGUsIHRoaXNW
YWx1ZSwgImxvbmdBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01K
SVRMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmpl
Y3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC00MjgsNyArNDI5LDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RE
T01KSVRVbnNpZ25lZExvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyR2V0dGVyPihz
dGF0ZSwgdGhpc1ZhbHVlLCAidW5zaWduZWRMb25nQXR0ciIpOworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJHZXR0
ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAidW5zaWduZWRMb25nQXR0ciIpOwogfQogCiBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCkBAIC00NTUsNyArNDU2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VExvbmdMbwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nTG9uZ0F0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERP
TUpJVExvbmdMb25nQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImxvbmdMb25nQXR0ciIp
OworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJ
VExvbmdMb25nQXR0ckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJsb25nTG9uZ0F0dHIiKTsK
IH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdMb25nQXR0ckdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpCkBAIC00ODIsNyArNDgzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdERPTUpJVFVuc2lnbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExv
bmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+Ojph
dHRyaWJ1dGU8anNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJHZXR0ZXI+KHN0YXRlLCB0
aGlzVmFsdWUsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyR2V0
dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ckdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpCkBAIC01MDksNyArNTEwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdERPTUpJVEZsb2F0QQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRGbG9hdEF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpz
VGVzdERPTUpJVEZsb2F0QXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImZsb2F0QXR0ciIp
OworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJ
VEZsb2F0QXR0ckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJmbG9hdEF0dHIiKTsKIH0KIAog
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEZsb2F0QXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCkBAIC01MzYsNyArNTM3LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VFVucmVzdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRl
PGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1
ZSwgInVucmVzdHJpY3RlZEZsb2F0QXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckdldHRlcj4o
KnN0YXRlLCB0aGlzVmFsdWUsICJ1bnJlc3RyaWN0ZWRGbG9hdEF0dHIiKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCkBAIC01NjMsNyArNTY0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVERvdWJsZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVREb3VibGVBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rl
c3RET01KSVREb3VibGVBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiZG91YmxlQXR0ciIp
OworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJ
VERvdWJsZUF0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiZG91YmxlQXR0ciIpOwogfQog
CiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlQXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93
U2NvcGUpCkBAIC01OTAsNyArNTkxLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVFVucmVzdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3Vi
bGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0dHJp
YnV0ZTxqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyR2V0dGVyPihzdGF0ZSwgdGhp
c1ZhbHVlLCAidW5yZXN0cmljdGVkRG91YmxlQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJH
ZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAidW5yZXN0cmljdGVkRG91YmxlQXR0ciIpOwogfQog
CiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpCkBAIC02MTcsNyArNjE4LDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdERPTUpJVERvbVN0cgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVREb21T
dHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0
dHJpYnV0ZTxqc1Rlc3RET01KSVREb21TdHJpbmdBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVl
LCAiZG9tU3RyaW5nQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklU
Pjo6Z2V0PGpzVGVzdERPTUpJVERvbVN0cmluZ0F0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVl
LCAiZG9tU3RyaW5nQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9N
SklURG9tU3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRo
aXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC02NDQsNyArNjQ1LDcgQEAgc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdAogCiBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxK
U1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJHZXR0ZXI+
KHN0YXRlLCB0aGlzVmFsdWUsICJieXRlU3RyaW5nQXR0ciIpOworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyR2V0dGVy
Pigqc3RhdGUsIHRoaXNWYWx1ZSwgImJ5dGVTdHJpbmdBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBA
IC02NzEsNyArNjcyLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVzdlN0
cgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVc3ZTdHJpbmdBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJl
dHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RET01KSVRV
c3ZTdHJpbmdBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAidXN2U3RyaW5nQXR0ciIpOwor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVFVz
dlN0cmluZ0F0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAidXN2U3RyaW5nQXR0ciIpOwog
fQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpCkBAIC02OTgsNyArNjk5LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdERPTUpJVE5vZGVBdAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVROb2RlQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNU
ZXN0RE9NSklUTm9kZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJub2RlQXR0ciIpOwor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVE5v
ZGVBdHRyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgIm5vZGVBdHRyIik7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVROb2RlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBA
IC03MjUsNyArNzI2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJvb2xl
YQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RE
T01KSVRCb29sZWFuTnVsbGFibGVBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiYm9vbGVh
bk51bGxhYmxlQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6
Z2V0PGpzVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1Zh
bHVlLCAiYm9vbGVhbk51bGxhYmxlQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC03NTIs
NyArNzUzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVOdQogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RET01KSVRCeXRl
TnVsbGFibGVBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiYnl0ZU51bGxhYmxlQXR0ciIp
OworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJ
VEJ5dGVOdWxsYWJsZUF0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiYnl0ZU51bGxhYmxl
QXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZU51bGxh
YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3Qs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC03NzksNyArNzgwLDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0TgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01K
SVRPY3RldE51bGxhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RE
T01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJHZXR0ZXI+KHN0
YXRlLCB0aGlzVmFsdWUsICJvY3RldE51bGxhYmxlQXR0ciIpOworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyR2V0
dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgIm9jdGV0TnVsbGFibGVBdHRyIik7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93
U2NvcGUpCkBAIC04MDYsNyArODA3LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVFNob3J0TgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8
anNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJz
aG9ydE51bGxhYmxlQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklU
Pjo6Z2V0PGpzVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyR2V0dGVyPigqc3RhdGUsIHRoaXNW
YWx1ZSwgInNob3J0TnVsbGFibGVBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC04MzMsNyAr
ODM0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbgogCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RET01K
SVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAidW5z
aWduZWRTaG9ydE51bGxhYmxlQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJHZXR0ZXI+
KCpzdGF0ZSwgdGhpc1ZhbHVlLCAidW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ciIpOwogfQogCiBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpCkBAIC04NjAsNyArODYxLDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdERPTUpJVExvbmdOdQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25n
TnVsbGFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46
OmF0dHJpYnV0ZTxqc1Rlc3RET01KSVRMb25nTnVsbGFibGVBdHRyR2V0dGVyPihzdGF0ZSwgdGhp
c1ZhbHVlLCAibG9uZ051bGxhYmxlQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJHZXR0ZXI+KCpzdGF0
ZSwgdGhpc1ZhbHVlLCAibG9uZ051bGxhYmxlQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRl
LCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC04
ODcsNyArODg4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbgog
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVz
dERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwg
InVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckdldHRl
cj4oKnN0YXRlLCB0aGlzVmFsdWUsICJ1bnNpZ25lZExvbmdOdWxsYWJsZUF0dHIiKTsKIH0KIAog
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpCkBAIC05MTQsNyArOTE1LDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdERPTUpJVExvbmdMbwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25n
TG9uZ051bGxhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01K
SVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJHZXR0ZXI+KHN0
YXRlLCB0aGlzVmFsdWUsICJsb25nTG9uZ051bGxhYmxlQXR0ciIpOworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVB
dHRyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImxvbmdMb25nTnVsbGFibGVBdHRyIik7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpCkBAIC05NDEsNyArOTQyLDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdERPTUpJVFVuc2lnbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNp
Z25lZExvbmdMb25nTnVsbGFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFi
bGVBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAidW5zaWduZWRMb25nTG9uZ051bGxhYmxl
QXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVz
dERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1Zh
bHVlLCAidW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCkBAIC05NjgsNyArOTY5LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVEZsb2F0TgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRGbG9hdE51bGxhYmxl
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1
dGU8anNUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUs
ICJmbG9hdE51bGxhYmxlQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9N
SklUPjo6Z2V0PGpzVGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyR2V0dGVyPigqc3RhdGUsIHRo
aXNWYWx1ZSwgImZsb2F0TnVsbGFibGVBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC05OTUs
NyArOTk2LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdAogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlz
VmFsdWUsICJ1bnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ciIpOworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0
TnVsbGFibGVBdHRyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgInVucmVzdHJpY3RlZEZsb2F0
TnVsbGFibGVBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRV
bnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0xMDIyLDcg
KzEwMjMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1
cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklURG91
YmxlTnVsbGFibGVBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiZG91YmxlTnVsbGFibGVB
dHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RET01KSVQ+OjpnZXQ8anNUZXN0
RE9NSklURG91YmxlTnVsbGFibGVBdHRyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImRvdWJs
ZU51bGxhYmxlQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklU
RG91YmxlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYg
dGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTEwNDksNyArMTA1MCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3QKIAogRW5jb2RlZEpTVmFs
dWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJl
dHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RET01KSVRV
bnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJ1
bnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdERPTUpJVD46OmdldDxqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVOdWxsYWJs
ZUF0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAidW5yZXN0cmljdGVkRG91YmxlTnVsbGFi
bGVBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3Ry
aWN0ZWREb3VibGVOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9N
SklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMTA3Niw3ICsxMDc3
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERvbVN0cgogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJu
IEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVERvbVN0
cmluZ051bGxhYmxlQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImRvbVN0cmluZ051bGxh
YmxlQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RE9NSklUPjo6Z2V0PGpz
VGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUs
ICJkb21TdHJpbmdOdWxsYWJsZUF0dHIiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0xMTAz
LDcgKzExMDQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZVN0CiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERP
TUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJieXRl
U3RyaW5nTnVsbGFibGVBdHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RET01K
SVQ+OjpnZXQ8anNUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckdldHRlcj4oKnN0YXRl
LCB0aGlzVmFsdWUsICJieXRlU3RyaW5nTnVsbGFibGVBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKQEAgLTExMzAsNyArMTEzMSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RE
T01KSVRVc3ZTdHIKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFi
bGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0dHJp
YnV0ZTxqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlz
VmFsdWUsICJ1c3ZTdHJpbmdOdWxsYWJsZUF0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdERPTUpJVD46OmdldDxqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJHZXR0
ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAidXN2U3RyaW5nTnVsbGFibGVBdHRyIik7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJHZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQpAQCAtMTE1Nyw3ICsxMTU4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVE5vZGVOdQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVROb2RlTnVs
bGFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0
dHJpYnV0ZTxqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1Zh
bHVlLCAibm9kZU51bGxhYmxlQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
RE9NSklUPjo6Z2V0PGpzVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHJHZXR0ZXI+KCpzdGF0ZSwg
dGhpc1ZhbHVlLCAibm9kZU51bGxhYmxlQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0xMjA5
LDE0ICsxMjEwLDcgQEAgSlNWYWx1ZSBKU1Rlc3RET01KSVQ6OmdldENvbnN0cnVjdG9yKFZNJgog
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RET01KSVRDb25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwg
SlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSkKLXsK
LSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYWxsT3BlcmF0aW9uPGpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVyPihzdGF0ZSwgImdl
dEF0dHJpYnV0ZSIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVDYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQ
cm90b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpDbGFzc1BhcmFtZXRlciBjYXN0
ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0xMjI4LDYgKzEyMjIs
MTEgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pigqc3RhdGUs
IGltcGwuZ2V0QXR0cmlidXRlKFdURk1vdmUobmFtZSkpKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUo
RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJ
VD46OmNhbGw8anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVDYWxsZXI+
KCpzdGF0ZSwgImdldEF0dHJpYnV0ZSIpOworfQorCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGUo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIERPTUpJVDo6
SURMSlNBcmd1bWVudFR5cGU8SURMRE9NU3RyaW5nPiBlbmNvZGVkTmFtZSkKIHsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwpAQCAtMTI0MSwxNCArMTI0MCw3IEBAIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSklUX09QRVJBVElPTiB1bnNhZmUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8
SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLmdldEF0dHJpYnV0ZShXVEZN
b3ZlKG5hbWUpKSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNU
ZXN0RE9NSklUKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtKEV4ZWNTdGF0ZSogc3RhdGUp
Ci17Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FsbE9wZXJhdGlv
bjxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1DYWxsZXI+KHN0YXRlLCAiaXRlbSIp
OwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25JdGVtQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9N
SklUKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVt
Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dERPTUpJVD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKQEAgLTEyNjIsNiArMTI1NCwxMSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERP
TVN0cmluZz4oKnN0YXRlLCBpbXBsLml0ZW0oV1RGTW92ZSh4KSwgV1RGTW92ZSh5KSkpKTsKIH0K
IAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkl0ZW0oRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdERPTUpJVD46OmNhbGw8anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtQ2FsbGVy
Pigqc3RhdGUsICJpdGVtIik7Cit9CisKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkl0ZW0oSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5
cGU8SURMVW5zaWduZWRTaG9ydD4gZW5jb2RlZFgsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8
SURMVW5zaWduZWRTaG9ydD4gZW5jb2RlZFkpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
QEAgLTEyNzcsMTQgKzEyNzQsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
dW5zYWZlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0
YXRlLCBpbXBsLml0ZW0oV1RGTW92ZSh4KSwgV1RGTW92ZSh5KSkpKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFz
QXR0cmlidXRlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0RE9NSklUKiwgSlNDOjpUaHJv
d1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJv
dG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1
cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdERPTUpJ
VFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmlidXRlQ2FsbGVyPihzdGF0ZSwgImhhc0F0dHJpYnV0
ZSIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklU
UHJvdG90eXBlRnVuY3Rpb25IYXNBdHRyaWJ1dGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
K3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkhhc0F0dHJpYnV0ZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0xMjkyLDYgKzEyODIsMTEgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExCb29sZWFuPihpbXBsLmhhc0F0dHJpYnV0ZSgpKSk7CiB9CiAKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25I
YXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdERPTUpJVD46OmNhbGw8anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNBdHRy
aWJ1dGVDYWxsZXI+KCpzdGF0ZSwgImhhc0F0dHJpYnV0ZSIpOworfQorCiBKU0M6OkVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gdW5zYWZlSnNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25I
YXNBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRo
aXMpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKQEAgLTEzMDMsMTQgKzEyOTgsNyBAQCBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gdW5zYWZlCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTPElETEJvb2xlYW4+KGltcGwuaGFzQXR0cmlidXRlKCkpKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uR2V0RWxlbWVudEJ5SWRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RET01KSVQq
LCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEV4ZWNTdGF0ZSogc3RhdGUp
Ci17Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FsbE9wZXJhdGlv
bjxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQ2FsbGVyPihzdGF0
ZSwgImdldEVsZW1lbnRCeUlkIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9NSklUKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZENhbGxlcihKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0x
MzIyLDYgKzEzMTAsMTEgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8RWxlbWVudD4+
KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRCeUlk
KFdURk1vdmUoZWxlbWVudElkKSkpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEV4ZWNTdGF0ZSog
c3RhdGUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpjYWxsPGpz
VGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRDYWxsZXI+KCpzdGF0ZSwg
ImdldEVsZW1lbnRCeUlkIik7Cit9CisKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9NSklUKiBjYXN0ZWRUaGlzLCBET01KSVQ6OklETEpT
QXJndW1lbnRUeXBlPElETFJlcXVpcmVzRXhpc3RpbmdBdG9taWNTdHJpbmdBZGFwdG9yPElETERP
TVN0cmluZz4+IGVuY29kZWRFbGVtZW50SWQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
QEAgLTEzMzUsMTQgKzEzMjgsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
dW5zYWZlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxFbGVt
ZW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZ2V0RWxlbWVu
dEJ5SWQoV1RGTW92ZShlbGVtZW50SWQpKSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFt
ZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdERPTUpJVCosIEpTQzo6VGhyb3dTY29wZSYp
OwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1
bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUoRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4g
QmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdERPTUpJVFBy
b3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWVDYWxsZXI+KHN0YXRlLCAiZ2V0RWxlbWVu
dHNCeU5hbWUiKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWVDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01K
SVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lQ2FsbGVyKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTEzNTQs
NiArMTM0MCwxMSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxOb2RlTGlzdD4+KCpz
dGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRzQnlOYW1l
KFdURk1vdmUoZWxlbWVudE5hbWUpKSkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUoRXhlY1N0
YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46OmNh
bGw8anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFtZUNhbGxlcj4o
KnN0YXRlLCAiZ2V0RWxlbWVudHNCeU5hbWUiKTsKK30KKwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVu
dHNCeU5hbWUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRoaXMs
IERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMQXRvbWljU3RyaW5nQWRhcHRvcjxJRExET01T
dHJpbmc+PiBlbmNvZGVkRWxlbWVudE5hbWUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDIxNzQy
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dENvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTVGVzdEV2ZW50Q29uc3RydWN0b3IuaCIKIAorI2lu
Y2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5j
bHVkZSAiSlNET01CaW5kaW5nQ2FsbGVyLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgpAQCAtMTk1LDcgKzE5NSw3IEBAIEpTT2JqZWN0KiBKU1Rlc3RFdmVudENv
bnN0cnVjdG9yOjpwcm90b3QKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdEV2ZW50
Q29uc3RydWN0b3I+KHZtLCBnbG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RFdmVudENvbnN0cnVjdG9yKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEV2ZW50Q29uc3RydWN0
b3I+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSkKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqIElETEF0
dHJpYnV0ZTxKU1Rlc3RFdmVudENvbnN0cnVjdG9yPjo6Y2FzdChFeGVjU3RhdGUmIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CiAgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0
PEpTVGVzdEV2ZW50Q29uc3RydWN0b3IqPihzdGF0ZS52bSgpLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiB9CkBAIC0yMDQsNyArMjA0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdEV2ZW50Q29uc3RydQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9y
QXR0cjEoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
cj46OmF0dHJpYnV0ZTxqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjFHZXR0ZXI+KHN0YXRlLCB0
aGlzVmFsdWUsICJhdHRyMSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0RXZlbnRD
b25zdHJ1Y3Rvcj46OmdldDxqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0cjFHZXR0ZXI+KCpzdGF0
ZSwgdGhpc1ZhbHVlLCAiYXR0cjEiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dEV2ZW50Q29uc3RydWN0b3JBdHRyMUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjIw
LDcgKzIyMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnUKIAog
RW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+OjphdHRyaWJ1dGU8anNUZXN0
RXZlbnRDb25zdHJ1Y3RvckF0dHIyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiYXR0cjIiKTsK
KyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+OjpnZXQ8anNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImF0dHIy
Iik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0
cjJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciYgdGhpc09i
amVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dEV2ZW50Q29uc3RydWN0b3JBdHRyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rl
c3RFdmVudENvbnN0cnVjdG9yPjo6YXR0cmlidXRlPGpzVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRy
M0dldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImF0dHIzIik7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RFdmVudENvbnN0cnVjdG9yPjo6Z2V0PGpzVGVzdEV2ZW50Q29uc3RydWN0b3JB
dHRyM0dldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJhdHRyMyIpOwogfQogCiBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIzR2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdEV2ZW50Q29uc3RydWN0b3ImIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDIxNzQy
NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVu
dFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDEwICsyMiwxMCBAQAogI2luY2x1ZGUg
IkpTVGVzdEV2ZW50VGFyZ2V0LmgiCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNs
dWRlICJKU0RPTUJpbmRpbmdDYWxsZXIuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPgpAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgSlNUZXN0RXZlbnRU
YXJnZXQ6OmdldE93blByb3BlcnR5TmEKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRo
aXNPYmplY3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdGVtcGxhdGU8PiBp
bmxpbmUgSlNUZXN0RXZlbnRUYXJnZXQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0RXZlbnRUYXJnZXQ+
OjpjYXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCit0ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RFdmVudFRhcmdldCogSURMT3BlcmF0aW9uPEpTVGVzdEV2ZW50VGFyZ2V0Pjo6Y2FzdChF
eGVjU3RhdGUmIHN0YXRlKQogewogICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RF
dmVudFRhcmdldCo+KHN0YXRlLnZtKCksIHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KQEAgLTIwOCwx
NCArMjA4LDcgQEAgSlNWYWx1ZSBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0bwogICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yPih2
bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRUYXJnZXRQcm90
b3R5cGVGdW5jdGlvbkl0ZW1DYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RFdmVudFRhcmdl
dCosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCi17
Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RXZlbnRUYXJnZXQ+OjpjYWxsT3BlcmF0
aW9uPGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtQ2FsbGVyPihzdGF0ZSwg
Iml0ZW0iKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2
ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rpb25JdGVtQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgSlNUZXN0RXZlbnRUYXJnZXQqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudFRhcmdl
dFByb3RvdHlwZUZ1bmN0aW9uSXRlbUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RFdmVudFRhcmdldD46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTIyNyw2ICsyMjAsMTEg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgKmNhc3RlZFRo
aXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLml0ZW0oV1RGTW92ZShpbmRleCkpKSk7CiB9CiAKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5j
dGlvbkl0ZW0oRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdEV2ZW50VGFyZ2V0Pjo6Y2FsbDxqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9u
SXRlbUNhbGxlcj4oKnN0YXRlLCAiaXRlbSIpOworfQorCiB2b2lkIEpTVGVzdEV2ZW50VGFyZ2V0
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAg
ICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RFdmVudFRhcmdldCo+KGNlbGwpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2Vw
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHJldmlzaW9uIDIxNzQyNSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMSw4ICsyMSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSlNUZXN0RXhjZXB0aW9uLmgiCiAKKyNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0NhbGxlci5oIgog
I2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAi
SlNET01Db252ZXJ0LmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgpAQCAt
MTQxLDcgKzE0MSw3IEBAIHZvaWQgSlNUZXN0RXhjZXB0aW9uOjpkZXN0cm95KEpTQzo6SlNDZWwK
ICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RFeGNlcHRpb246On5KU1Rlc3RFeGNlcHRpb24oKTsKIH0K
IAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RXhjZXB0aW9uKiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dEV4Y2VwdGlvbj46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlKQordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0RXhjZXB0aW9uKiBJRExB
dHRyaWJ1dGU8SlNUZXN0RXhjZXB0aW9uPjo6Y2FzdChFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCiB7CiAgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVz
dEV4Y2VwdGlvbio+KHN0YXRlLnZtKCksIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0K
QEAgLTE1MCw3ICsxNTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RXhjZXB0aW9u
TmFtCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV4Y2VwdGlvbk5hbWUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJu
IEJpbmRpbmdDYWxsZXI8SlNUZXN0RXhjZXB0aW9uPjo6YXR0cmlidXRlPGpzVGVzdEV4Y2VwdGlv
bk5hbWVHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJuYW1lIik7CisgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3RFeGNlcHRpb24+OjpnZXQ8anNUZXN0RXhjZXB0aW9uTmFtZUdldHRlcj4o
KnN0YXRlLCB0aGlzVmFsdWUsICJuYW1lIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RFeGNlcHRpb25OYW1lR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdEV4Y2VwdGlv
biYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAJKHJldmlzaW9uIDIxNzQyNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNyArMjIsNiBAQAogI2luY2x1ZGUgIkpTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuaCIKIAogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZ0NhbGxlci5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMjE3NDI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIx
LDExICsyMSwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTVGVzdEdsb2Jh
bE9iamVjdC5oIgogCisjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RP
TUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdDYWxsZXIuaCIKICNpbmNsdWRlICJK
U0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVy
dC5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RP
TU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
UnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEu
aCIKQEAgLTE4NywxMiArMTg4LDEyIEBAIHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0OjpkZXN0cm95
KEpTQzo6SlMKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RHbG9iYWxPYmplY3Q6On5KU1Rlc3RHbG9i
YWxPYmplY3QoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0R2xvYmFsT2JqZWN0KiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhc3RGb3JBdHRyaWJ1dGUoRXhlY1N0
YXRlJiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQordGVtcGxhdGU8PiBpbmxpbmUg
SlNUZXN0R2xvYmFsT2JqZWN0KiBJRExBdHRyaWJ1dGU8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2Fz
dChFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CiAgICAgcmV0
dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+KHN0YXRlLnZtKCksIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0
R2xvYmFsT2JqZWN0KiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhc3RGb3JP
cGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEdsb2Jh
bE9iamVjdCogSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhc3QoRXhlY1N0YXRl
JiBzdGF0ZSkKIHsKICAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0R2xvYmFsT2Jq
ZWN0Kj4oc3RhdGUudm0oKSwgc3RhdGUudGhpc1ZhbHVlKCkpOwogfQpAQCAtMjAxLDcgKzIwMiw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3QKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4g
QmluZGluZ0NhbGxlcjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjphdHRyaWJ1dGU8anNUZXN0R2xvYmFs
T2JqZWN0UmVndWxhckF0dHJpYnV0ZUdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInJlZ3VsYXJB
dHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46
OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidXRlR2V0dGVyPigqc3RhdGUsIHRo
aXNWYWx1ZSwgInJlZ3VsYXJBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdEdsb2JhbE9iamVjdFJlZ3VsYXJBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0
ZSwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQpAQCAtMjE3LDcgKzIxOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxP
YmplY3QKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0
ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RHbG9iYWxPYmpl
Y3Q+OjphdHRyaWJ1dGU8anNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0
ZUdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUiKTsK
KyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RH
bG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlR2V0dGVyPigqc3RhdGUsIHRoaXNW
YWx1ZSwgInB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGVHZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQpAQCAtMjM0LDcgKzIzNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RHbG9iYWxPYmplY3QKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
UHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdEdsb2JhbE9iamVjdD46OmF0dHJpYnV0ZTxqc1Rlc3RHbG9iYWxPYmpl
Y3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGVHZXR0ZXI+KHN0YXRlLCB0aGlz
VmFsdWUsICJwdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUiKTsKKyAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmpl
Y3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGVHZXR0ZXI+KCpzdGF0ZSwgdGhp
c1ZhbHVlLCAicHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlIik7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQ29u
ZGl0aW9uYWxBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0R2xvYmFsT2Jq
ZWN0JiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjUzLDcgKzI1NCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3QKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAg
ICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjphdHRyaWJ1dGU8anNU
ZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZUdldHRlcj4oc3RhdGUsIHRo
aXNWYWx1ZSwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OmdldDxqc1Rlc3RHbG9iYWxPYmplY3RFbmFibGVk
QXRSdW50aW1lQXR0cmlidXRlR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImVuYWJsZWRBdFJ1
bnRpbWVBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEdsb2Jh
bE9iamVjdEVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpA
QCAtMjk1LDcgKzI5Niw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3QKIAogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidXRlKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEdsb2JhbE9iamVjdD46
OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidXRlRnVuY3Rp
b24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInJlZ3VsYXJBdHRyaWJ1dGUiKTsK
KyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rl
c3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidXRlRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJyZWd1bGFyQXR0cmlidXRlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RSZWd1bGFyQXR0cmlidXRlRnVuY3Rpb24oRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzE0LDcgKzMxNSw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3QKIAogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldEF0dHJpYnV0ZTxzZXRKU1Rl
c3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlRnVuY3Rpb24+KHN0YXRlLCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUiKTsKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RH
bG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlRnVuY3Rpb24+KCpzdGF0ZSwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJwdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlIik7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRl
QXR0cmlidXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzM0
LDcgKzMzNSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3QKIAog
Ym9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0Fu
ZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZUZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJwdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUiKTsKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RH
bG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGVGdW5jdGlvbj4o
KnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInB1YmxpY0FuZFByaXZhdGVDb25kaXRp
b25hbEF0dHJpYnV0ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0R2xvYmFs
T2JqZWN0UHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlRnVuY3Rpb24oRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzU1LDcgKzM1Niw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3QKIAogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldEF0dHJpYnV0ZTxzZXRKU1Rl
c3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlRnVuY3Rpb24+KHN0YXRlLCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUiKTsKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEdsb2JhbE9iamVjdD46OnNldDxzZXRKU1Rlc3RH
bG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlRnVuY3Rpb24+KCpzdGF0ZSwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIik7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1l
QXR0cmlidXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0R2xvYmFsT2JqZWN0JiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzc2
LDE0ICszNzcsNyBAQCBKU1ZhbHVlIEpTVGVzdEdsb2JhbE9iamVjdDo6Z2V0Q29uc3RydWN0CiAg
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9y
Pih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwog
fQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
SW5zdGFuY2VGdW5jdGlvblJlZ3VsYXJPcGVyYXRpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBK
U1Rlc3RHbG9iYWxPYmplY3QqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9w
ZXJhdGlvbihFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdEdsb2JhbE9iamVjdD46OmNhbGxPcGVyYXRpb248anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFu
Y2VGdW5jdGlvblJlZ3VsYXJPcGVyYXRpb25DYWxsZXI+KHN0YXRlLCAicmVndWxhck9wZXJhdGlv
biIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFs
T2JqZWN0SW5zdGFuY2VGdW5jdGlvblJlZ3VsYXJPcGVyYXRpb25DYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU1Rlc3RHbG9iYWxPYmplY3QqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJhdGlvbkNhbGxlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CkBAIC0zOTYsMTUgKzM5MCwxMyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVP
cGVyYXRpb24xQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0R2xvYmFsT2JqZWN0KiwgSlND
OjpUaHJvd1Njb3BlJik7Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24xKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlRnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbE9wZXJh
dGlvbjxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvbjFDYWxsZXI+KHN0YXRlLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJhdGlvbkNhbGxlcj4oKnN0YXRlLCAi
cmVndWxhck9wZXJhdGlvbiIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVy
YXRpb24xQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0R2xvYmFsT2JqZWN0KiBj
YXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCisjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxP
YmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjFDYWxsZXIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2Jq
ZWN0Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwpAQCAtNDE1LDE3ICs0MDcsMTUgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5h
YmxlZEF0UnVudGltZU9wZXJhdGlvbjJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RHbG9i
YWxPYmplY3QqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvbjIoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRp
b24xKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1
bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjJDYWxsZXI+KHN0YXRlLCAiZW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvbiIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFs
T2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvbjFDYWxsZXI+KCpzdGF0ZSwgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRp
b24iKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2Jh
bE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMkNhbGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdEdsb2JhbE9iamVjdCogY2FzdGVkVGhpcywgSlND
OjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorI2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFU
VVJFKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMkNhbGxlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CkBAIC00MzYsNiArNDI2LDExIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMihFeGVjU3RhdGUqIHN0YXRlKQorewor
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjJDYWxs
ZXI+KCpzdGF0ZSwgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKTsKK30KKwogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpAQCAtNDU5LDE0ICs0NTQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhCiB9CiAjZW5kaWYKIAotc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25F
bmFibGVkSW5TcGVjaWZpY1dvcmxkQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0R2xvYmFs
T2JqZWN0KiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29y
bGQoRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RH
bG9iYWxPYmplY3Q+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVu
Y3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkQ2FsbGVyPihzdGF0ZSwgImVuYWJsZWRJblNwZWNp
ZmljV29ybGQiKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0R2xvYmFsT2JqZWN0KiBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmlj
V29ybGRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248
SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNDc5LDE0ICs0NjcsMTIgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdo
ZW5SdW50aW1lRmVhdHVyZUVuYWJsZWRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RHbG9i
YWxPYmplY3QqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNX
b3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVu
YWJsZWRJblNwZWNpZmljV29ybGQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdEdsb2Jh
bE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVG
ZWF0dXJlRW5hYmxlZENhbGxlcj4oc3RhdGUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1
bnRpbWVGZWF0dXJlRW5hYmxlZCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xv
YmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxl
ZEluU3BlY2lmaWNXb3JsZENhbGxlcj4oKnN0YXRlLCAiZW5hYmxlZEluU3BlY2lmaWNXb3JsZCIp
OwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1
cmVFbmFibGVkQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0R2xvYmFsT2JqZWN0
KiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVu
YWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkQ2FsbGVyKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVj
dD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKQEAgLTQ5OSwxNCArNDg1LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0
SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVz
RW5hYmxlZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdEdsb2JhbE9iamVjdCosIEpTQzo6
VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2Jh
bE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVG
ZWF0dXJlc0VuYWJsZWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmlj
V29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAg
cmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbE9wZXJhdGlvbjxq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdo
ZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkQ2FsbGVyPihzdGF0ZSwgImVuYWJsZWRJblNwZWNpZmlj
V29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZCIpOworICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1
bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWRDYWxs
ZXI+KCpzdGF0ZSwgImVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFi
bGVkIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1l
RmVhdHVyZXNFbmFibGVkQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0R2xvYmFs
T2JqZWN0KiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5j
dGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZENhbGxl
cihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9i
YWxPYmplY3Q+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRo
cm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CkBAIC01MTksMTUgKzUwMywxMyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1zdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQcml2
YXRlRnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RHbG9iYWxPYmplY3QqLCBK
U0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbihFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNF
bmFibGVkKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNU
ZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5j
ZUZ1bmN0aW9uVGVzdFByaXZhdGVGdW5jdGlvbkNhbGxlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OkFzc2VydD4oc3RhdGUsICJ0ZXN0UHJpdmF0ZUZ1bmN0aW9uIik7CisgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0Vu
YWJsZWRDYWxsZXI+KCpzdGF0ZSwgImVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZl
YXR1cmVzRW5hYmxlZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQcml2YXRlRnVuY3Rpb25DYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RHbG9iYWxPYmplY3QqIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTUzNiw2
ICs1MTgsMTEgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQ
cml2YXRlRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhbGw8anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VG
dW5jdGlvblRlc3RQcml2YXRlRnVuY3Rpb25DYWxsZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
OjpBc3NlcnQ+KCpzdGF0ZSwgInRlc3RQcml2YXRlRnVuY3Rpb24iKTsKK30KKwogI2VuZGlmCiAK
IGJvb2wgSlNUZXN0R2xvYmFsT2JqZWN0T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjE3NDI1KQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDExICsyNCwxMiBAQAogCiAjaW5jbHVkZSAiSlNUZXN0
SW50ZXJmYWNlLmgiCiAKKyNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0NhbGxlci5oIgogI2luY2x1ZGUg
IkpTRE9NQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKICNpbmNsdWRl
ICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIK
ICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIlRlc3RTdXBwbGVtZW50
YWwuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CkBAIC00MjMsMTIgKzQyNCwxMiBAQCBi
b29sIEpTVGVzdEludGVyZmFjZTo6cHV0QnlJbmRleChKU0NlbGwqCiAgICAgcmV0dXJuIEJhc2U6
OnB1dEJ5SW5kZXgoY2VsbCwgc3RhdGUsIGluZGV4LCB2YWx1ZSwgc2hvdWxkVGhyb3cpOwogfQog
Ci10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJbnRlcmZhY2UqIEJpbmRpbmdDYWxsZXI8SlNUZXN0
SW50ZXJmYWNlPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUpCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJbnRlcmZhY2UqIElETEF0
dHJpYnV0ZTxKU1Rlc3RJbnRlcmZhY2U+OjpjYXN0KEV4ZWNTdGF0ZSYgc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAgICByZXR1cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0
SW50ZXJmYWNlKj4oc3RhdGUudm0oKSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQog
Ci10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJbnRlcmZhY2UqIEJpbmRpbmdDYWxsZXI8SlNUZXN0
SW50ZXJmYWNlPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQordGVtcGxhdGU8
PiBpbmxpbmUgSlNUZXN0SW50ZXJmYWNlKiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6
Y2FzdChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3RJbnRlcmZhY2UqPihzdGF0ZS52bSgpLCBzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CkBAIC00
NzQsNyArNDc1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcAog
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMShFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBy
ZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RJbnRlcmZhY2U+OjphdHRyaWJ1dGU8anNUZXN0SW50
ZXJmYWNlSW1wbGVtZW50c1N0cjFHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJpbXBsZW1lbnRz
U3RyMSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpz
VGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIxR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImlt
cGxlbWVudHNTdHIxIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzU3RyMUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RJbnRlcmZhY2Um
IHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC00OTMsNyArNDk0LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcAogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RJbnRlcmZhY2U+OjphdHRyaWJ1dGU8anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50
c1N0cjJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJpbXBsZW1lbnRzU3RyMiIpOworICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZUlt
cGxlbWVudHNTdHIyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImltcGxlbWVudHNTdHIyIik7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3Ry
MkdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC01MTIsNyArNTEzLDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZh
Y2VJbXBsZW1lbnRzU3RyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RJbnRl
cmZhY2U+OjphdHRyaWJ1dGU8anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjNHZXR0ZXI+KHN0
YXRlLCB0aGlzVmFsdWUsICJpbXBsZW1lbnRzU3RyMyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIzR2V0
dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImltcGxlbWVudHNTdHIzIik7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyM0dldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93
U2NvcGUpCkBAIC01MjksNyArNTMwLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZUltcAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9k
ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RJbnRlcmZhY2U+OjphdHRyaWJ1
dGU8anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGVHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUs
ICJpbXBsZW1lbnRzTm9kZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJm
YWNlPjo6Z2V0PGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlR2V0dGVyPigqc3RhdGUsIHRo
aXNWYWx1ZSwgImltcGxlbWVudHNOb2RlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzTm9kZUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RJbnRlcmZhY2UmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC01ODQs
NyArNTg1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cAogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIxKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJl
dHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEludGVyZmFjZT46OmF0dHJpYnV0ZTxqc1Rlc3RJbnRl
cmZhY2VTdXBwbGVtZW50YWxTdHIxR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAic3VwcGxlbWVu
dGFsU3RyMSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0
PGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjFHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVl
LCAic3VwcGxlbWVudGFsU3RyMSIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RJ
bnRlcmZhY2UmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC02MDMsNyAr
NjA0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cAogCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdEludGVyZmFjZT46OmF0dHJpYnV0ZTxqc1Rlc3RJbnRlcmZh
Y2VTdXBwbGVtZW50YWxTdHIyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAic3VwcGxlbWVudGFs
U3RyMiIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpz
VGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAi
c3VwcGxlbWVudGFsU3RyMiIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50
ZXJmYWNlU3VwcGxlbWVudGFsU3RyMkdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RJbnRl
cmZhY2UmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC02MjIsNyArNjIz
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cAogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdEludGVyZmFjZT46OmF0dHJpYnV0ZTxqc1Rlc3RJbnRlcmZhY2VT
dXBwbGVtZW50YWxTdHIzR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAic3VwcGxlbWVudGFsU3Ry
MyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVz
dEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjNHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAic3Vw
cGxlbWVudGFsU3RyMyIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJm
YWNlU3VwcGxlbWVudGFsU3RyM0dldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RJbnRlcmZh
Y2UmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC02MzksNyArNjQwLDcg
QEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cAogCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdEludGVyZmFjZT46OmF0dHJpYnV0ZTxqc1Rlc3RJbnRlcmZhY2VTdXBw
bGVtZW50YWxOb2RlR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAic3VwcGxlbWVudGFsTm9kZSIp
OworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6Z2V0PGpzVGVzdElu
dGVyZmFjZVN1cHBsZW1lbnRhbE5vZGVHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAic3VwcGxl
bWVudGFsTm9kZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
U3VwcGxlbWVudGFsTm9kZUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RJbnRlcmZhY2Um
IHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC02OTcsNyArNjk4LDcgQEAg
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZUltcAogCiBib29sIHNldEpTVGVz
dEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdEludGVyZmFjZT46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RJbnRl
cmZhY2VJbXBsZW1lbnRzU3RyMkZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJpbXBsZW1lbnRzU3RyMiIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50
ZXJmYWNlPjo6c2V0PHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyRnVuY3Rpb24+KCpz
dGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbXBsZW1lbnRzU3RyMiIpOwogfQogCiBz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjJGdW5jdGlv
bihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC03MTgsNyArNzE5LDcgQEAgc3RhdGlj
IGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZUltcAogCiBib29sIHNldEpTVGVzdEludGVy
ZmFjZUltcGxlbWVudHNTdHIzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5n
Q2FsbGVyPEpTVGVzdEludGVyZmFjZT46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RJbnRlcmZhY2VJ
bXBsZW1lbnRzU3RyM0Z1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJp
bXBsZW1lbnRzU3RyMyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNl
Pjo6c2V0PHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIzRnVuY3Rpb24+KCpzdGF0ZSwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbXBsZW1lbnRzU3RyMyIpOwogfQogCiBzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjNGdW5jdGlvbihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC03MzYsNyArNzM3LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdEludGVyZmFjZUltcAogCiBib29sIHNldEpTVGVzdEludGVyZmFjZUlt
cGxlbWVudHNOb2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVy
PEpTVGVzdEludGVyZmFjZT46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RJbnRlcmZhY2VJbXBsZW1l
bnRzTm9kZUZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbXBsZW1l
bnRzTm9kZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6c2V0
PHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNOb2RlRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJpbXBsZW1lbnRzTm9kZSIpOwogfQogCiBzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05vZGVGdW5jdGlvbihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpCkBAIC03NzIsNyArNzczLDcgQEAgc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdEludGVyZmFjZVN1cAogCiBib29sIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1l
bnRhbFN0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNU
ZXN0SW50ZXJmYWNlPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRh
bFN0cjJGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3VwcGxlbWVu
dGFsU3RyMiIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNlPjo6c2V0
PHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjJGdW5jdGlvbj4oKnN0YXRlLCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgInN1cHBsZW1lbnRhbFN0cjIiKTsKIH0KIAogc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjJGdW5jdGlvbihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC03OTMsNyArNzk0LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdEludGVyZmFjZVN1cAogCiBib29sIHNldEpTVGVzdEludGVyZmFjZVN1
cHBsZW1lbnRhbFN0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0SW50ZXJmYWNlPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdEludGVyZmFjZVN1cHBs
ZW1lbnRhbFN0cjNGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3Vw
cGxlbWVudGFsU3RyMyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50ZXJmYWNl
Pjo6c2V0PHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjNGdW5jdGlvbj4oKnN0YXRl
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN1cHBsZW1lbnRhbFN0cjMiKTsKIH0KIAogc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbFN0cjNGdW5jdGlv
bihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC04MTEsNyArODEyLDcgQEAgc3RhdGlj
IGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZVN1cAogCiBib29sIHNldEpTVGVzdEludGVy
ZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0SW50ZXJmYWNlPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdEludGVyZmFj
ZVN1cHBsZW1lbnRhbE5vZGVGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAic3VwcGxlbWVudGFsTm9kZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SW50
ZXJmYWNlPjo6c2V0PHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGVGdW5jdGlvbj4o
KnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN1cHBsZW1lbnRhbE5vZGUiKTsKIH0K
IAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEludGVyZmFjZVN1cHBsZW1lbnRhbE5vZGVG
dW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RJbnRlcmZhY2UmIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC04MzMsMTQgKzgzNCw3IEBA
IEpTVmFsdWUgSlNUZXN0SW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3RvcigKIH0KIAogI2lmIEVOQUJM
RShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQotc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50
c01ldGhvZDFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RJbnRlcmZhY2UqLCBKU0M6OlRo
cm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCi17
Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbE9wZXJhdGlv
bjxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QxQ2FsbGVy
PihzdGF0ZSwgImltcGxlbWVudHNNZXRob2QxIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNN
ZXRob2QxQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0SW50ZXJmYWNlKiBjYXN0
ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRz
TWV0aG9kMUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC04NDksMTcgKzg0MywxNSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQ29uZGl0aW9uMjIpIHx8
IEVOQUJMRShDb25kaXRpb24yMykKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNUZXN0SW50ZXJmYWNlKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rp
b25JbXBsZW1lbnRzTWV0aG9kMihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRo
b2QxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0
SW50ZXJmYWNlPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
bkltcGxlbWVudHNNZXRob2QyQ2FsbGVyPihzdGF0ZSwgImltcGxlbWVudHNNZXRob2QyIik7Cisg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVy
ZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDFDYWxsZXI+KCpzdGF0ZSwgImlt
cGxlbWVudHNNZXRob2QxIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCisjZW5kaWYKKworI2lmIEVOQUJMRShDb25kaXRpb24y
MikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDJDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50
ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwpAQCAtODc2LDIzICs4NjgsMjYgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRl
cmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJv
d1Njb3BlLCBpbXBsLmltcGxlbWVudHNNZXRob2QyKCpjb250ZXh0LCBXVEZNb3ZlKHN0ckFyZyks
ICpvYmpBcmcpKSk7CiB9CiAKLSNlbmRpZgotCi0jaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kM0NhbGxlcihKU0M6
OkV4ZWNTdGF0ZSosIEpTVGVzdEludGVyZmFjZSosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9u
SW1wbGVtZW50c01ldGhvZDMoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9k
MihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdElu
dGVyZmFjZT46OmNhbGxPcGVyYXRpb248anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25J
bXBsZW1lbnRzTWV0aG9kM0NhbGxlcj4oc3RhdGUsICJpbXBsZW1lbnRzTWV0aG9kMyIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZh
Y2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QyQ2FsbGVyPigqc3RhdGUsICJpbXBs
ZW1lbnRzTWV0aG9kMiIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kM0NhbGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorI2VuZGlmCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMjIp
IHx8IEVOQUJMRShDb25kaXRpb24yMykKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxlbWVudHNNZXRob2QzQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEludGVy
ZmFjZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPmltcGxlbWVu
dHNNZXRob2QzKCpzdGF0ZSkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMoRXhlY1N0YXRl
KiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNh
bGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kM0NhbGxl
cj4oKnN0YXRlLCAiaW1wbGVtZW50c01ldGhvZDMiKTsKK30KKwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKQEAgLTkwOCwxNCArOTAzLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLXN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1
cHBsZW1lbnRhbE1ldGhvZDFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RJbnRlcmZhY2Uq
LCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDEoRXhlY1N0YXRl
KiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RJbnRlcmZhY2U+Ojpj
YWxsT3BlcmF0aW9uPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFs
TWV0aG9kMUNhbGxlcj4oc3RhdGUsICJzdXBwbGVtZW50YWxNZXRob2QxIik7Ci19Ci0KLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5j
dGlvblN1cHBsZW1lbnRhbE1ldGhvZDFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rl
c3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVG
dW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtOTI0LDE3ICs5MTIs
MTUgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLSNlbmRpZgotCi0jaWYgRU5B
QkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVt
ZW50YWxNZXRob2QyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0SW50ZXJmYWNlKiwgSlND
OjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyKEV4ZWNTdGF0ZSogc3Rh
dGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMShFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJl
dHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEludGVyZmFjZT46OmNhbGxPcGVyYXRpb248anNUZXN0
SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyQ2FsbGVyPihzdGF0
ZSwgInN1cHBsZW1lbnRhbE1ldGhvZDIiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVt
ZW50YWxNZXRob2QxQ2FsbGVyPigqc3RhdGUsICJzdXBwbGVtZW50YWxNZXRob2QxIik7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKKyNlbmRpZgorCisjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTk1MSwy
MyArOTM3LDI2IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3Rh
dGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgV2ViQ29yZTo6VGVz
dFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMihpbXBsLCAqY29udGV4dCwgV1RGTW92
ZShzdHJBcmcpLCAqb2JqQXJnKSkpOwogfQogCi0jZW5kaWYKLQotI2lmIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9k
M0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdEludGVyZmFjZSosIEpTQzo6VGhyb3dTY29w
ZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3Rv
dHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1
cHBsZW1lbnRhbE1ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGlu
Z0NhbGxlcjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdEludGVyZmFjZVBy
b3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kM0NhbGxlcj4oc3RhdGUsICJzdXBwbGVt
ZW50YWxNZXRob2QzIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+
OjpjYWxsPGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9k
MkNhbGxlcj4oKnN0YXRlLCAic3VwcGxlbWVudGFsTWV0aG9kMiIpOwogfQogCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25T
dXBwbGVtZW50YWxNZXRob2QzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0SW50
ZXJmYWNlKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCisjZW5kaWYK
KworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQorc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uU3VwcGxlbWVudGFsTWV0aG9kM0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjYXN0ZWRUaGlzLT5zdXBwbGVtZW50YWxNZXRob2QzKCpzdGF0ZSkpOwogfQogCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uU3VwcGxlbWVudGFsTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDNDYWxsZXI+KCpzdGF0ZSwgInN1cHBsZW1lbnRh
bE1ldGhvZDMiKTsKK30KKwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVO
QUJMRShDb25kaXRpb24xMikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFj
ZUxlYWRpbmdVbmRlcnNjb3JlLmNwcAkocmV2aXNpb24gMjE3NDI1KQorKysgU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIkpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmgiCiAKKyNp
bmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZ0NhbGxlci5oIgogI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JO
b3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCiAjaW5jbHVkZSAi
SlNET01FeGNlcHRpb25IYW5kbGluZy5oIgpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgSlNUZXN0
SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OmQKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RJbnRl
cmZhY2VMZWFkaW5nVW5kZXJzY29yZTo6fkpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
KCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNj
b3JlKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPjo6Y2Fz
dEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUp
Cit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZSogSURM
QXR0cmlidXRlPEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPjo6Y2FzdChFeGVjU3Rh
dGUmIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CiAgICAgcmV0dXJuIGpzRHlu
YW1pY0Rvd25jYXN0PEpTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlKj4oc3RhdGUudm0o
KSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQpAQCAtMTM3LDcgKzEzNyw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VMZWEKIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmVSZWFkb25seShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4g
QmluZGluZ0NhbGxlcjxKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZT46OmF0dHJpYnV0
ZTxqc1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZVJlYWRvbmx5R2V0dGVyPihzdGF0ZSwg
dGhpc1ZhbHVlLCAicmVhZG9ubHkiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdElu
dGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlPjo6Z2V0PGpzVGVzdEludGVyZmFjZUxlYWRpbmdVbmRl
cnNjb3JlUmVhZG9ubHlHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAicmVhZG9ubHkiKTsKIH0K
IAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3Jl
UmVhZG9ubHlHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1Vu
ZGVyc2NvcmUmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SXRlcmFibGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJdGVyYWJsZS5jcHAJKHJldmlzaW9uIDIxNzQyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJdGVyYWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDEwICsyMiwxMCBAQAogI2luY2x1ZGUgIkpTVGVzdEl0ZXJhYmxlLmgiCiAKICNpbmNsdWRl
ICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdDYWxsZXIuaCIKICNpbmNs
dWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9N
RXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTUl0ZXJhdG9yLmgiCisjaW5jbHVk
ZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2lu
Y2x1ZGUgPGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRnVuY3Rp
b25Qcm90b3R5cGUuaD4KQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEpTVGVzdEl0ZXJhYmxlOjpk
ZXN0cm95KEpTQzo6SlNDZWxsCiAgICAgdGhpc09iamVjdC0+SlNUZXN0SXRlcmFibGU6On5KU1Rl
c3RJdGVyYWJsZSgpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RJdGVyYWJsZSogQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RJdGVyYWJsZT46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBz
dGF0ZSkKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdEl0ZXJhYmxlKiBJRExPcGVyYXRpb248SlNU
ZXN0SXRlcmFibGU+OjpjYXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgcmV0dXJuIGpzRHlu
YW1pY0Rvd25jYXN0PEpTVGVzdEl0ZXJhYmxlKj4oc3RhdGUudm0oKSwgc3RhdGUudGhpc1ZhbHVl
KCkpOwogfQpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0SXRlcmEKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0
ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSkKIHsK
LSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RJdGVyYWJsZT46OmNhbGxPcGVyYXRpb248
anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkVudHJpZXNDYWxsZXI+KHN0YXRlLCAiZW50
cmllcyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SXRlcmFibGU+OjpjYWxsPGpz
VGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQ2FsbGVyPigqc3RhdGUsICJlbnRy
aWVzIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0SXRlcmFibGVQ
cm90b3R5cGVGdW5jdGlvbktleXNDYWxsZXIoRXhlY1N0YXRlKiwgSlNUZXN0SXRlcmFibGUqIHRo
aXNPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYpCkBAIC0yMDYsNyArMjA2LDcgQEAgc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJdGVyYQogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbktleXMoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEl0ZXJhYmxl
Pjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0NhbGxl
cj4oc3RhdGUsICJrZXlzIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJdGVyYWJs
ZT46OmNhbGw8anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbktleXNDYWxsZXI+KCpzdGF0
ZSwgImtleXMiKTsKIH0KIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJdGVy
YWJsZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzQ2FsbGVyKEV4ZWNTdGF0ZSosIEpTVGVzdEl0ZXJh
YmxlKiB0aGlzT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmKQpAQCAtMjE2LDcgKzIxNiw3IEBAIHN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0SXRlcmEKIAogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXMo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dEl0ZXJhYmxlPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9u
VmFsdWVzQ2FsbGVyPihzdGF0ZSwgInZhbHVlcyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0SXRlcmFibGU+OjpjYWxsPGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25WYWx1
ZXNDYWxsZXI+KCpzdGF0ZSwgInZhbHVlcyIpOwogfQogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdEl0ZXJhYmxlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTVGVzdEl0ZXJhYmxlKiB0aGlzT2JqZWN0LCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpCkBAIC0yMjYsNyArMjI2LDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RJdGVyYQogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goSlNDOjpFeGVjU3RhdGUqIHN0YXRl
KQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEl0ZXJhYmxlPjo6Y2FsbE9wZXJh
dGlvbjxqc1Rlc3RJdGVyYWJsZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaENhbGxlcj4oc3RhdGUs
ICJmb3JFYWNoIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJdGVyYWJsZT46OmNh
bGw8anNUZXN0SXRlcmFibGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hDYWxsZXI+KCpzdGF0ZSwg
ImZvckVhY2giKTsKIH0KIAogYm9vbCBKU1Rlc3RJdGVyYWJsZU93bmVyOjppc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IuY3BwCShyZXZpc2lvbiAyMTc0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMSwxMCArMjEsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oIgogCisjaW5jbHVkZSAiSlNET01BdHRyaWJ1
dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdD
YWxsZXIuaCIKICNpbmNsdWRlICJKU0RPTUJ1aWx0aW5Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUg
IkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yQnVpbHRpbnMuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CkBAIC0xNDIs
MTIgKzE0MywxMiBAQCB2b2lkIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpkZXN0cm95CiAg
ICAgdGhpc09iamVjdC0+SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6On5KU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvcigpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvciogQmluZGluZ0NhbGxlcjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj46OmNh
c3RGb3JBdHRyaWJ1dGUoRXhlY1N0YXRlJiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
KQordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIElETEF0dHJp
YnV0ZTxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj46OmNhc3QoRXhlY1N0YXRlJiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2Fz
dDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHN0YXRlLnZtKCksIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3IqIEJpbmRpbmdDYWxsZXI8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+OjpjYXN0
Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvciogSURMT3BlcmF0aW9uPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yPjo6Y2FzdChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIHJldHVybiBqc0R5bmFtaWNEb3du
Y2FzdDxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcio+KHN0YXRlLnZtKCksIHN0YXRlLnRoaXNW
YWx1ZSgpKTsKIH0KQEAgLTE1Niw3ICsxNTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0SlNCdWlsdGluQ29uCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yVGVzdEF0dHJpYnV0ZUN1c3RvbShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj46OmF0dHJpYnV0ZTxqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3RvclRlc3RBdHRyaWJ1dGVDdXN0b21HZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJ0ZXN0QXR0
cmlidXRlQ3VzdG9tIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3Rvcj46OmdldDxqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclRlc3RBdHRyaWJ1dGVD
dXN0b21HZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAidGVzdEF0dHJpYnV0ZUN1c3RvbSIpOwog
fQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0
QXR0cmlidXRlQ3VzdG9tR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMTcwLDcg
KzE3MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db24KIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldDdXN0
b20oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3I+OjphdHRyaWJ1dGU8anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldD
dXN0b21HZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJ0ZXN0QXR0cmlidXRlUldDdXN0b20iKTsK
KyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPjo6Z2V0
PGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tR2V0dGVyPigq
c3RhdGUsIHRoaXNWYWx1ZSwgInRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIpOwogfQogCiBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldD
dXN0b21HZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Im
IHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0yMDgsNyArMjA5LDcgQEAg
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdEpTQnVpbHRpbkNvbgogCiBib29sIHNldEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Pjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0
ZVJXQ3VzdG9tRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInRlc3RB
dHRyaWJ1dGVSV0N1c3RvbSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3I+OjpzZXQ8c2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0
cmlidXRlUldDdXN0b21GdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
InRlc3RBdHRyaWJ1dGVSV0N1c3RvbSIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXR0cmlidXRlUldDdXN0b21GdW5jdGlvbihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTIyNSwyMCArMjI2LDE4IEBA
IEpTVmFsdWUgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldEMKICAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJv
dG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAg
ICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj46OmNhbGxP
cGVyYXRpb248anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RD
dXN0b21GdW5jdGlvbkNhbGxlcj4oc3RhdGUsICJ0ZXN0Q3VzdG9tRnVuY3Rpb24iKTsKLX0KLQot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciogY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVu
Y3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShjYXN0ZWRUaGlzLT50ZXN0Q3VzdG9tRnVuY3Rpb24oKnN0YXRlKSk7CiB9CiAKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVG
dW5jdGlvblRlc3RDdXN0b21GdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+OjpjYWxsPGpzVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb25DYWxs
ZXI+KCpzdGF0ZSwgInRlc3RDdXN0b21GdW5jdGlvbiIpOworfQorCiB2b2lkIEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCiB7CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvcio+KGNlbGwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmNwcAkocmV2aXNpb24gMjE3NDI1KQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxMCArMjIsMTAgQEAKICNpbmNsdWRlICJKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmgiCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNs
dWRlICJKU0RPTUJpbmRpbmdDYWxsZXIuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90
Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgpAQCAtMTMzLDcgKzEzMyw3IEBA
IHZvaWQgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6ZGVzdHIKICAgICB0aGlzT2JqZWN0
LT5KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp+SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcigpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+OjpjYXN0Rm9y
T3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyKiBJRExPcGVyYXRpb248SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcj46OmNhc3QoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICByZXR1cm4ganNEeW5hbWljRG93
bmNhc3Q8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcio+KHN0YXRlLnZtKCksIHN0YXRlLnRo
aXNWYWx1ZSgpKTsKIH0KQEAgLTE2NywxNCArMTY3LDcgQEAgSlNWYWx1ZSBKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyOjpnZQogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kKEV4ZWNT
dGF0ZSogc3RhdGUpCi17Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcj46OmNhbGxPcGVyYXRpb248anNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
clByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kQ2FsbGVyPihzdGF0ZSwgIm1ldGhvZCIpOwotfQotCi1z
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZENhbGxlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwpAQCAtMTg3LDYgKzE4MCwxMSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK3sK
KyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+Ojpj
YWxsPGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZENh
bGxlcj4oKnN0YXRlLCAibWV0aG9kIik7Cit9CisKIGJvb2wgSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6
OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewogICAgIFVO
VVNFRF9QQVJBTShoYW5kbGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gMjE3NDI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw3ICsyMiw2IEBACiAjaW5jbHVkZSAiSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIgogCiAjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nQ2FsbGVyLmgiCiAj
aW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJK
U0RPTUNvbnZlcnQuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5vZGUuY3BwCShyZXZpc2lvbiAyMTc0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDEz
ICsyMSwxNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkpTVGVzdE5vZGUuaCIK
IAorI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgi
Ci0jaW5jbHVkZSAiSlNET01CaW5kaW5nQ2FsbGVyLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1
Y3Rvci5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0
aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTUl0ZXJhdG9yLmgiCi0jaW5jbHVkZSAiSlNE
T01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgorI2luY2x1
ZGUgIkpTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1
ZGUgPGJ1aWx0aW5zL0J1aWx0aW5OYW1lcy5oPgpAQCAtMTc1LDEyICsxNzYsMTIgQEAgSlNPYmpl
Y3QqIEpTVGVzdE5vZGU6OnByb3RvdHlwZShWTSYgdm0sIAogICAgIHJldHVybiBnZXRET01Qcm90
b3R5cGU8SlNUZXN0Tm9kZT4odm0sIGdsb2JhbE9iamVjdCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5s
aW5lIEpTVGVzdE5vZGUqIEJpbmRpbmdDYWxsZXI8SlNUZXN0Tm9kZT46OmNhc3RGb3JBdHRyaWJ1
dGUoRXhlY1N0YXRlJiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQordGVtcGxhdGU8
PiBpbmxpbmUgSlNUZXN0Tm9kZSogSURMQXR0cmlidXRlPEpTVGVzdE5vZGU+OjpjYXN0KEV4ZWNT
dGF0ZSYgc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAgICByZXR1cm4ganNE
eW5hbWljRG93bmNhc3Q8SlNUZXN0Tm9kZSo+KHN0YXRlLnZtKCksIEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0Tm9kZSogQmluZGluZ0Nh
bGxlcjxKU1Rlc3ROb2RlPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQordGVt
cGxhdGU8PiBpbmxpbmUgSlNUZXN0Tm9kZSogSURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+OjpjYXN0
KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVz
dE5vZGUqPihzdGF0ZS52bSgpLCBzdGF0ZS50aGlzVmFsdWUoKSk7CiB9CkBAIC0xODksNyArMTkw
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE5vZGVOYW1lR2V0dAogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3ROb2RlTmFtZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rl
c3ROb2RlPjo6YXR0cmlidXRlPGpzVGVzdE5vZGVOYW1lR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVl
LCAibmFtZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0Tm9kZT46OmdldDxqc1Rl
c3ROb2RlTmFtZUdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJuYW1lIik7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3ROb2RlTmFtZUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3ROb2RlJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjI5LDcg
KzIzMCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3ROb2RlTmFtZUZ1bmMKIAogYm9v
bCBzZXRKU1Rlc3ROb2RlTmFtZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGlu
Z0NhbGxlcjxKU1Rlc3ROb2RlPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE5vZGVOYW1lRnVuY3Rp
b24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm5hbWUiKTsKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdE5vZGU+OjpzZXQ8c2V0SlNUZXN0Tm9kZU5hbWVGdW5jdGlvbj4o
KnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm5hbWUiKTsKIH0KIAogc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdE5vZGVOYW1lRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0Tm9kZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKQEAgLTI0OSwyMiArMjUwLDcgQEAgSlNWYWx1ZSBKU1Rlc3ROb2RlOjpnZXRDb25zdHJ1Y3Rv
cihWTSYgdgogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROb2RlQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlUHJvdG90
eXBlRnVuY3Rpb25UZXN0V29ya2VyUHJvbWlzZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVz
dE5vZGUqLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmLCBKU0M6OlRocm93U2NvcGUmKTsKLQotc3Rh
dGljIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQ
cm9taXNlUHJvbWlzZShFeGVjU3RhdGUqLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKLQotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0
V29ya2VyUHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIEFTU0VSVChzdGF0ZSk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0aW9uPGpzVGVzdE5vZGVQ
cm90b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQcm9taXNlUHJvbWlzZSwgUHJvbWlzZUV4ZWN1dGlv
blNjb3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclByb21pc2VQ
cm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkK
LXsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3ROb2RlPjo6Y2FsbFByb21pc2VPcGVy
YXRpb248anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclByb21pc2VDYWxsZXI+
KHN0YXRlLCBXVEZNb3ZlKHByb21pc2UpLCAidGVzdFdvcmtlclByb21pc2UiKTsKLX0KLQotc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlv
blRlc3RXb3JrZXJQcm9taXNlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0Tm9k
ZSogY2FzdGVkVGhpcywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclByb21pc2VDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVz
dE5vZGU+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTI3Myw2ICsyNTks
MTEgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVGVzdFdvcmtlclByb21pc2Uo
RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJv
bWlzZTxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0V29y
a2VyUHJvbWlzZUNhbGxlciwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPcldvcmtlcj4o
KnN0YXRlLCAidGVzdFdvcmtlclByb21pc2UiKTsKK30KKwogc3RydWN0IFRlc3ROb2RlSXRlcmF0
b3JUcmFpdHMgewogICAgIHN0YXRpYyBjb25zdGV4cHIgSlNET01JdGVyYXRvclR5cGUgdHlwZSA9
IEpTRE9NSXRlcmF0b3JUeXBlOjpTZXQ7CiAgICAgdXNpbmcgS2V5VHlwZSA9IHZvaWQ7CkBAIC0y
OTUsNyArMjg2LDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlUAog
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9kZVByb3RvdHlwZUZ1
bmN0aW9uRW50cmllcyhKU0M6OkV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0Tm9kZT46OmNhbGxPcGVyYXRpb248anNUZXN0Tm9kZVByb3RvdHlwZUZ1
bmN0aW9uRW50cmllc0NhbGxlcj4oc3RhdGUsICJlbnRyaWVzIik7CisgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25FbnRy
aWVzQ2FsbGVyPigqc3RhdGUsICJlbnRyaWVzIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0NhbGxlcihFeGVjU3RhdGUq
LCBKU1Rlc3ROb2RlKiB0aGlzT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmKQpAQCAtMzA1LDcgKzI5
Niw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZVAKIAogSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbktl
eXMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdE5vZGU+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbktleXND
YWxsZXI+KHN0YXRlLCAia2V5cyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Tm9k
ZT46OmNhbGw8anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0NhbGxlcj4oKnN0YXRlLCAi
a2V5cyIpOwogfQogCiBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQcm90
b3R5cGVGdW5jdGlvblZhbHVlc0NhbGxlcihFeGVjU3RhdGUqLCBKU1Rlc3ROb2RlKiB0aGlzT2Jq
ZWN0LCBKU0M6OlRocm93U2NvcGUmKQpAQCAtMzE1LDcgKzMwNiw3IEBAIHN0YXRpYyBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZVAKIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0Tm9kZT46OmNhbGxPcGVy
YXRpb248anNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzQ2FsbGVyPihzdGF0ZSwgInZh
bHVlcyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Tm9kZT46OmNhbGw8anNUZXN0
Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzQ2FsbGVyPigqc3RhdGUsICJ2YWx1ZXMiKTsKIH0K
IAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rp
b25Gb3JFYWNoQ2FsbGVyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE5vZGUqIHRoaXNPYmplY3Qs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTMyNSw3ICszMTYsNyBAQCBzdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vZGVQCiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3ROb2RlPjo6
Y2FsbE9wZXJhdGlvbjxqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyPihz
dGF0ZSwgImZvckVhY2giKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+Ojpj
YWxsPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hDYWxsZXI+KCpzdGF0ZSwgImZv
ckVhY2giKTsKIH0KIAogSlNDOjpKU09iamVjdCogSlNUZXN0Tm9kZTo6c2VyaWFsaXplKEV4ZWNT
dGF0ZSogc3RhdGUsIEpTVGVzdE5vZGUqIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCkBAIC0zNDcsNyArMzM4LDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3ROb2RlUAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE5vZGVQcm90b3R5
cGVGdW5jdGlvblRvSlNPTihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5n
Q2FsbGVyPEpTVGVzdE5vZGU+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5j
dGlvblRvSlNPTkNhbGxlcj4oc3RhdGUsICJ0b0pTT04iKTsKKyAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE5vZGU+OjpjYWxsPGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRvSlNPTkNh
bGxlcj4oKnN0YXRlLCAidG9KU09OIik7CiB9CiAKIHZvaWQgSlNUZXN0Tm9kZTo6dmlzaXRDaGls
ZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJ
KHJldmlzaW9uIDIxNzQyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiwxNCArMjYsMTUgQEAKICNp
bmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkpTQmxv
Yi5oIgorI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5n
LmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nQ2FsbGVyLmgiCiAjaW5jbHVkZSAiSlNET01CaW5k
aW5nU2VjdXJpdHkuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAi
SlNET01Db252ZXJ0VmFyaWFkaWMuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5n
LmgiCiAjaW5jbHVkZSAiSlNET01JdGVyYXRvci5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURl
ZmVycmVkLmgiCisjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJKU0RPTU9w
ZXJhdGlvblJldHVybmluZ1Byb21pc2UuaCIKICNpbmNsdWRlICJKU0RPTVN0cmluZ0xpc3QuaCIK
ICNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93QmFzZS5oIgpA
QCAtMTE0Nyw2ICsxMTQ4LDggQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CiBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRl
Kik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CitKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
blRlc3RTdGF0aWNDdXN0b21Qcm9taXNlRnVuY3Rpb24oSlNDOjpFeGVjU3RhdGUqKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RDdXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9uKEpTQzo6RXhlY1N0YXRlKik7CiAjaWYg
RU5BQkxFKENPTkRJVElPTjEpIHx8IEVOQUJMRShDT05ESVRJT04yKQogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxP
dmVybG9hZChKU0M6OkV4ZWNTdGF0ZSopOwogI2VuZGlmCkBAIC0xNDcxLDYgKzE0NzQsNyBAQCBz
dGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqQ29uCiAjZW5kaWYKICAgICB7ICJ0
ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25zdHJ1Y3Rv
ckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbiksIChpbnRwdHJfdCkgKDApIH0gfSwK
ICAgICB7ICJ0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbiIsIEpTQzo6RnVu
Y3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25X
aXRoRXhjZXB0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgInRlc3RTdGF0aWNDdXN0
b21Qcm9taXNlRnVuY3Rpb24iLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25UZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAog
fTsKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKQpAQCAtMTgxMCw2ICsxODE0LDcgQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialBybwogICAgIHsgInRlc3RQcm9taXNlRnVu
Y3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudCIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQpLCAo
aW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAidGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24i
LCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9h
ZGVkRnVuY3Rpb24pLCAoaW50cHRyX3QpICgxKSB9IH0sCiAgICAgeyAidGVzdEN1c3RvbVByb21p
c2VGdW5jdGlvbiIsIEpTQzo6RnVuY3Rpb24sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3Vz
dG9tUHJvbWlzZUZ1bmN0aW9uKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgInRlc3RDdXN0
b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9uIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RDdXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9uKSwgKGludHB0cl90
KSAoMCkgfSB9LAogI2lmIEVOQUJMRShDT05ESVRJT04xKSB8fCBFTkFCTEUoQ09ORElUSU9OMikK
ICAgICB7ICJjb25kaXRpb25hbE92ZXJsb2FkIiwgSlNDOjpGdW5jdGlvbiwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQpLCAoaW50cHRyX3QpICgxKSB9IH0sCiAjZWxz
ZQpAQCAtMTk2MiwxMiArMTk2NywxMiBAQCB2b2lkIEpTVGVzdE9iajo6Z2V0T3duUHJvcGVydHlO
YW1lcyhKU09iCiAgICAgQmFzZTo6Z2V0T3duUHJvcGVydHlOYW1lcyh0aGlzT2JqZWN0LCBzdGF0
ZSwgcHJvcGVydHlOYW1lcywgbW9kZSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE9i
aiogQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYg
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVz
dE9iaiogSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmNhc3QoRXhlY1N0YXRlJiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIHJldHVybiBqc0R5bmFtaWNEb3duY2FzdDxK
U1Rlc3RPYmoqPihzdGF0ZS52bSgpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAK
LXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdE9iaiogQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+Ojpj
YXN0Rm9yT3BlcmF0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rl
c3RPYmoqIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7
CiAgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdE9iaio+KHN0YXRlLnZtKCksIHN0
YXRlLnRoaXNWYWx1ZSgpKTsKIH0KQEAgLTE5NzYsNyArMTk4MSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seUwKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVh
ZE9ubHlMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+Ojph
dHRyaWJ1dGU8anNUZXN0T2JqUmVhZE9ubHlMb25nQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1
ZSwgInJlYWRPbmx5TG9uZ0F0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9i
aj46OmdldDxqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1
ZSwgInJlYWRPbmx5TG9uZ0F0dHIiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dE9ialJlYWRPbmx5TG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0
aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMTk5Miw3ICsxOTk3LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5UwogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpSZWFkT25seVN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0ckdldHRl
cj4oc3RhdGUsIHRoaXNWYWx1ZSwgInJlYWRPbmx5U3RyaW5nQXR0ciIpOworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0ckdl
dHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJyZWFkT25seVN0cmluZ0F0dHIiKTsKIH0KIAogc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3RyaW5nQXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCkBAIC0yMDA4LDcgKzIwMTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2Jq
UmVhZE9ubHlUCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5VGVzdE9iakF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVz
dE9ialJlYWRPbmx5VGVzdE9iakF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJyZWFkT25s
eVRlc3RPYmpBdHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8
anNUZXN0T2JqUmVhZE9ubHlUZXN0T2JqQXR0ckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJy
ZWFkT25seVRlc3RPYmpBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RP
YmpSZWFkT25seVRlc3RPYmpBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYg
dGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTIwNTQsNyArMjA1OSw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3QKIAogRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2JqKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5n
Q2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJP
YmpHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJUZXN0U3ViT2JqIik7CisgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2Jq
R2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgIlRlc3RTdWJPYmoiKTsKIH0KIAogc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yVGVzdFN1Yk9iakdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
CkBAIC0yMDY4LDcgKzIwNzMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqVGVz
dFN1Yk9iCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0
aW5nQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6
YXR0cmlidXRlPGpzVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3JH
ZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpOwor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialRlc3RTdWJP
YmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3JHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAi
VGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3JHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQpAQCAtMjA4Nyw3ICsyMDkyLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9i
akVudW1BdHRyRwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbnVtQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBy
ZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqRW51bUF0
dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJlbnVtQXR0ciIpOworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9iakVudW1BdHRyR2V0dGVyPigqc3RhdGUs
IHRoaXNWYWx1ZSwgImVudW1BdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RPYmpFbnVtQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmpl
Y3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0yMTAzLDcgKzIxMDgsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0T2JqQnl0ZUF0dHJHCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0
dHJpYnV0ZTxqc1Rlc3RPYmpCeXRlQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImJ5dGVB
dHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2Jq
Qnl0ZUF0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiYnl0ZUF0dHIiKTsKIH0KIAogc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakJ5dGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTIx
MTksNyArMjEyNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpPY3RldEF0dHIK
IAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT2N0ZXRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpPY3RldEF0dHJHZXR0ZXI+
KHN0YXRlLCB0aGlzVmFsdWUsICJvY3RldEF0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpPY3RldEF0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1Zh
bHVlLCAib2N0ZXRBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpP
Y3RldEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjEzNSw3ICsyMTQwLDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdE9ialNob3J0QXR0cgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpT
aG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmli
dXRlPGpzVGVzdE9ialNob3J0QXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInNob3J0QXR0
ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialNo
b3J0QXR0ckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJzaG9ydEF0dHIiKTsKIH0KIAogc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialNob3J0QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0y
MTUxLDcgKzIxNTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ2xhbXBlZFNo
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNsYW1wZWRTaG9ydEF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9iakNsYW1wZWRT
aG9ydEF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJjbGFtcGVkU2hvcnRBdHRyIik7Cisg
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqQ2xhbXBlZFNo
b3J0QXR0ckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJjbGFtcGVkU2hvcnRBdHRyIik7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpDbGFtcGVkU2hvcnRBdHRyR2V0dGVy
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKQEAgLTIxNjcsNyArMjE3Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RPYmpFbmZvcmNlUmEKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW5mb3JjZVJhbmdlU2hv
cnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0
ZTxqc1Rlc3RPYmpFbmZvcmNlUmFuZ2VTaG9ydEF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUs
ICJlbmZvcmNlUmFuZ2VTaG9ydEF0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dE9iaj46OmdldDxqc1Rlc3RPYmpFbmZvcmNlUmFuZ2VTaG9ydEF0dHJHZXR0ZXI+KCpzdGF0ZSwg
dGhpc1ZhbHVlLCAiZW5mb3JjZVJhbmdlU2hvcnRBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RPYmpFbmZvcmNlUmFuZ2VTaG9ydEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAt
MjE4Myw3ICsyMTg4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVk
UwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBy
ZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqVW5zaWdu
ZWRTaG9ydEF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJ1bnNpZ25lZFNob3J0QXR0ciIp
OworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialVuc2ln
bmVkU2hvcnRBdHRyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgInVuc2lnbmVkU2hvcnRBdHRy
Iik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpCkBAIC0yMTk5LDcgKzIyMDQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0T2JqTG9uZ0F0dHJHCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakxvbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rl
c3RPYmpMb25nQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImxvbmdBdHRyIik7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqTG9uZ0F0dHJHZXR0
ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAibG9uZ0F0dHIiKTsKIH0KIAogc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdE9iakxvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9i
aiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTIyMTUsNyArMjIyMCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpMb25nTG9uZ0EKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVy
PEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpMb25nTG9uZ0F0dHJHZXR0ZXI+KHN0YXRl
LCB0aGlzVmFsdWUsICJsb25nTG9uZ0F0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdE9iaj46OmdldDxqc1Rlc3RPYmpMb25nTG9uZ0F0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1Zh
bHVlLCAibG9uZ0xvbmdBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RP
YmpMb25nTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2Jq
ZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjIzMSw3ICsyMjM2LDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpVbnNpZ25lZExvbmdMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxK
U1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHJHZXR0ZXI+
KHN0YXRlLCB0aGlzVmFsdWUsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRy
R2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0ckdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCkBAIC0yMjQ3LDcgKzIyNTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0T2JqU3RyaW5nQXR0CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9i
alN0cmluZ0F0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJzdHJpbmdBdHRyIik7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqU3RyaW5nQXR0ckdl
dHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJzdHJpbmdBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTIyNjMsNyAr
MjI2OCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpVc3ZzdHJpbmcKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqVXN2c3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGlu
Z0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqVXN2c3RyaW5nQXR0ckdldHRl
cj4oc3RhdGUsIHRoaXNWYWx1ZSwgInVzdnN0cmluZ0F0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpVc3ZzdHJpbmdBdHRyR2V0dGVyPigqc3Rh
dGUsIHRoaXNWYWx1ZSwgInVzdnN0cmluZ0F0dHIiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdE9ialVzdnN0cmluZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjI3OSw3ICsyMjg0
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialRlc3RPYmpBdAogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqVGVzdE9iakF0dHJHZXR0ZXI+KHN0YXRl
LCB0aGlzVmFsdWUsICJ0ZXN0T2JqQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialRlc3RPYmpBdHRyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1
ZSwgInRlc3RPYmpBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpU
ZXN0T2JqQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3Qs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0yMjk1LDcgKzIzMDAsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0T2JqVGVzdE51bGxhCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alRlc3ROdWxsYWJsZU9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0
T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9ialRlc3ROdWxsYWJsZU9iakF0dHJHZXR0ZXI+KHN0YXRl
LCB0aGlzVmFsdWUsICJ0ZXN0TnVsbGFibGVPYmpBdHRyIik7CisgICAgcmV0dXJuIElETEF0dHJp
YnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqVGVzdE51bGxhYmxlT2JqQXR0ckdldHRlcj4o
KnN0YXRlLCB0aGlzVmFsdWUsICJ0ZXN0TnVsbGFibGVPYmpBdHRyIik7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpUZXN0TnVsbGFibGVPYmpBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
QEAgLTIzMTEsNyArMjMxNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpMZW5p
ZW50VGUKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpM
ZW5pZW50VGVzdE9iakF0dHJHZXR0ZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZXR1cm5F
YXJseT4oc3RhdGUsIHRoaXNWYWx1ZSwgImxlbmllbnRUZXN0T2JqQXR0ciIpOworICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0
ckdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJldHVybkVhcmx5Pigqc3RhdGUsIHRo
aXNWYWx1ZSwgImxlbmllbnRUZXN0T2JqQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0T2JqTGVuaWVudFRlc3RPYmpBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTIzMjcsNyAr
MjMzMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpVbmZvcmdlYWIKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqVW5mb3JnZWFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpVbmZvcmdlYWJsZUF0dHJH
ZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJ1bmZvcmdlYWJsZUF0dHIiKTsKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpVbmZvcmdlYWJsZUF0dHJHZXR0
ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAidW5mb3JnZWFibGVBdHRyIik7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpVbmZvcmdlYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAt
MjM0Myw3ICsyMzQ4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0
dAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0
eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1
dGU8anNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdHZXR0ZXI+KHN0
YXRlLCB0aGlzVmFsdWUsICJzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialN0cmluZ0F0
dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgInN0
cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZ0dldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCkBAIC0yMzU5LDcgKzIzNjQsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0T2JqVXN2c3RyaW5nCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVzdnN0cmluZ0F0dHJU
cmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpVc3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNF
bXB0eVN0cmluZ0dldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInVzdnN0cmluZ0F0dHJUcmVhdGlu
Z051bGxBc0VtcHR5U3RyaW5nIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+
OjpnZXQ8anNUZXN0T2JqVXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdHZXR0
ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAidXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlT
dHJpbmciKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialVzdnN0cmluZ0F0
dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
dE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTIzNzUsNyArMjM4
MCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpCeXRlU3RyaW4KIAogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQnl0ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rl
c3RPYmpCeXRlU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdHZXR0ZXI+KHN0YXRl
LCB0aGlzVmFsdWUsICJieXRlU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsK
KyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpCeXRlU3Ry
aW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVl
LCAiYnl0ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpCeXRlU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmdHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjM5MSw3ICsyMzk2LDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0xvbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpT
dHJpbmdMb25nUmVjb3JkQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RP
Ymo+OjphdHRyaWJ1dGU8anNUZXN0T2JqU3RyaW5nTG9uZ1JlY29yZEF0dHJHZXR0ZXI+KHN0YXRl
LCB0aGlzVmFsdWUsICJzdHJpbmdMb25nUmVjb3JkQXR0ciIpOworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialN0cmluZ0xvbmdSZWNvcmRBdHRyR2V0dGVy
Pigqc3RhdGUsIHRoaXNWYWx1ZSwgInN0cmluZ0xvbmdSZWNvcmRBdHRyIik7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdMb25nUmVjb3JkQXR0ckdldHRlcihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCkBAIC0yNDA3LDcgKzI0MTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2Jq
VXN2c3RyaW5nCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVzdnN0cmluZ0xvbmdSZWNvcmRB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxq
c1Rlc3RPYmpVc3ZzdHJpbmdMb25nUmVjb3JkQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwg
InVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RPYmo+OjpnZXQ8anNUZXN0T2JqVXN2c3RyaW5nTG9uZ1JlY29yZEF0dHJHZXR0ZXI+KCpzdGF0
ZSwgdGhpc1ZhbHVlLCAidXN2c3RyaW5nTG9uZ1JlY29yZEF0dHIiKTsKIH0KIAogc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdE9ialVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKQEAgLTI0MjMsNyArMjQyOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpV
c3ZzdHJpbmcKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVXN2c3RyaW5nTG9uZ1JlY29yZEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpz
VGVzdE9ialVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAi
dXN2c3RyaW5nTG9uZ1JlY29yZEF0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dE9iaj46OmdldDxqc1Rlc3RPYmpVc3ZzdHJpbmdMb25nUmVjb3JkQXR0ckdldHRlcj4oKnN0YXRl
LCB0aGlzVmFsdWUsICJ1c3ZzdHJpbmdMb25nUmVjb3JkQXR0ciIpOwogfQogCiBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0T2JqVXN2c3RyaW5nTG9uZ1JlY29yZEF0dHJHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQpAQCAtMjQzOSw3ICsyNDQ0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialN0
cmluZ09iagogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdPYmpSZWNvcmRBdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RP
YmpTdHJpbmdPYmpSZWNvcmRBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAic3RyaW5nT2Jq
UmVjb3JkQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpz
VGVzdE9ialN0cmluZ09ialJlY29yZEF0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAic3Ry
aW5nT2JqUmVjb3JkQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2Jq
U3RyaW5nT2JqUmVjb3JkQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRo
aXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0yNDU1LDcgKzI0NjAsNyBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqU3RyaW5nTnVsCiAKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialN0cmluZ051bGxhYmxlT2JqUmVjb3JkQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqU3RyaW5nTnVsbGFibGVP
YmpSZWNvcmRBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAic3RyaW5nTnVsbGFibGVPYmpS
ZWNvcmRBdHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNU
ZXN0T2JqU3RyaW5nTnVsbGFibGVPYmpSZWNvcmRBdHRyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1
ZSwgInN0cmluZ051bGxhYmxlT2JqUmVjb3JkQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0T2JqU3RyaW5nTnVsbGFibGVPYmpSZWNvcmRBdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
QEAgLTI0NzEsNyArMjQ3Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpEaWN0
aW9uYXIKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRGljdGlvbmFyeUF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
cmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9iakRpY3Rp
b25hcnlBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiZGljdGlvbmFyeUF0dHIiKTsKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpEaWN0aW9uYXJ5
QXR0ckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJkaWN0aW9uYXJ5QXR0ciIpOwogfQogCiBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqRGljdGlvbmFyeUF0dHJHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQpAQCAtMjQ4Nyw3ICsyNDkyLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iak51
bGxhYmxlRAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZURpY3Rpb25hcnlBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rl
c3RPYmpOdWxsYWJsZURpY3Rpb25hcnlBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAibnVs
bGFibGVEaWN0aW9uYXJ5QXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2Jq
Pjo6Z2V0PGpzVGVzdE9iak51bGxhYmxlRGljdGlvbmFyeUF0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhp
c1ZhbHVlLCAibnVsbGFibGVEaWN0aW9uYXJ5QXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0T2JqTnVsbGFibGVEaWN0aW9uYXJ5QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0y
NTAzLDcgKzI1MDgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQW5ub3RhdGVk
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakFubm90YXRlZFR5cGVJblVuaW9uQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
LSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2Jq
QW5ub3RhdGVkVHlwZUluVW5pb25BdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiYW5ub3Rh
dGVkVHlwZUluVW5pb25BdHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+
OjpnZXQ8anNUZXN0T2JqQW5ub3RhdGVkVHlwZUluVW5pb25BdHRyR2V0dGVyPigqc3RhdGUsIHRo
aXNWYWx1ZSwgImFubm90YXRlZFR5cGVJblVuaW9uQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0T2JqQW5ub3RhdGVkVHlwZUluVW5pb25BdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
QEAgLTI1MTksNyArMjUyNCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpBbm5v
dGF0ZWQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQW5ub3RhdGVkVHlwZUluU2VxdWVuY2VB
dHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxq
c1Rlc3RPYmpBbm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFs
dWUsICJhbm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZUF0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpBbm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZUF0dHJH
ZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiYW5ub3RhdGVkVHlwZUluU2VxdWVuY2VBdHRyIik7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpBbm5vdGF0ZWRUeXBlSW5TZXF1
ZW5jZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjUzNSw3ICsyNTQwLDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdE9iakltcGxlbWVudAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJ
bXBsZW1lbnRhdGlvbkVudW1BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpJbXBsZW1lbnRhdGlvbkVudW1BdHRyR2V0dGVyPihz
dGF0ZSwgdGhpc1ZhbHVlLCAiaW1wbGVtZW50YXRpb25FbnVtQXR0ciIpOworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9iakltcGxlbWVudGF0aW9uRW51bUF0
dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiaW1wbGVtZW50YXRpb25FbnVtQXR0ciIpOwog
fQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqSW1wbGVtZW50YXRpb25FbnVtQXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpCkBAIC0yNTUxLDcgKzI1NTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0T2JqWE1MT2JqQXR0CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialhNTE9iakF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpz
VGVzdE9ialhNTE9iakF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJYTUxPYmpBdHRyIik7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqWE1MT2Jq
QXR0ckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJYTUxPYmpBdHRyIik7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTI1
NjcsNyArMjU3Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpDcmVhdGVHZXQK
IAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3JlYXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5n
Q2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpDcmVhdGVHZXR0ZXI+KHN0YXRl
LCB0aGlzVmFsdWUsICJjcmVhdGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9i
aj46OmdldDxqc1Rlc3RPYmpDcmVhdGVHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiY3JlYXRl
Iik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpDcmVhdGVHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQpAQCAtMjU4Myw3ICsyNTg4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9i
alJlZmxlY3RlZAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rl
c3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAicmVmbGVj
dGVkU3RyaW5nQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0
PGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAi
cmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
T2JqUmVmbGVjdGVkU3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmom
IHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0yNTk5LDcgKzI2MDQsNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkCiAKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialJlZmxlY3RlZFVTVlN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9ialJlZmxlY3RlZFVTVlN0cmlu
Z0F0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJyZWZsZWN0ZWRVU1ZTdHJpbmdBdHRyIik7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqUmVmbGVj
dGVkVVNWU3RyaW5nQXR0ckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJyZWZsZWN0ZWRVU1ZT
dHJpbmdBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRVU1ZTdHJpbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09i
amVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTI2MTUsNyArMjYyMCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWQKIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVy
PEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHJHZXR0
ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKKyAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3Jh
bEF0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAicmVmbGVjdGVkSW50ZWdyYWxBdHRyIik7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0
dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQpAQCAtMjYzMSw3ICsyNjM2LDcgQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdE9ialJlZmxlY3RlZAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRVbnNpZ25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rl
c3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqUmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJH
ZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIp
OworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialJlZmxl
Y3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgInJlZmxl
Y3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0y
NjQ3LDcgKzI2NTIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVk
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAg
IHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpSZWZs
ZWN0ZWRCb29sZWFuQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInJlZmxlY3RlZEJvb2xl
YW5BdHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0
T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAicmVmbGVj
dGVkQm9vbGVhbkF0dHIiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialJl
ZmxlY3RlZEJvb2xlYW5BdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhp
c09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTI2NjMsNyArMjY2OCw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWQKIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxK
U1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0ckdldHRlcj4oc3Rh
dGUsIHRoaXNWYWx1ZSwgInJlZmxlY3RlZFVSTEF0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRyR2V0dGVyPigqc3Rh
dGUsIHRoaXNWYWx1ZSwgInJlZmxlY3RlZFVSTEF0dHIiKTsKIH0KIAogc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjY3OSw3
ICsyNjg0LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZAogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVU1ZVUkxBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpSZWZsZWN0ZWRV
U1ZVUkxBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAicmVmbGVjdGVkVVNWVVJMQXR0ciIp
OworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialJlZmxl
Y3RlZFVTVlVSTEF0dHJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAicmVmbGVjdGVkVVNWVVJM
QXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkVVNW
VVJMQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0yNjk1LDcgKzI3MDAsNyBAQCBzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJl
ZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2Jq
Pjo6YXR0cmlidXRlPGpzVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHJHZXR0ZXI+KHN0YXRlLCB0
aGlzVmFsdWUsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0ckdldHRlcj4oKnN0
YXRlLCB0aGlzVmFsdWUsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAg
LTI3MTEsNyArMjcxNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWQKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rl
c3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUs
ICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJHZXR0
ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3Jh
bEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjcyNyw3ICsyNzMyLDcgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdE9ialJlZmxlY3RlZAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZs
ZWN0ZWRDdXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rl
c3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJHZXR0
ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialJlZmxlY3RlZEN1
c3RvbUJvb2xlYW5BdHRyR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgInJlZmxlY3RlZEN1c3Rv
bUJvb2xlYW5BdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZs
ZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmom
IHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0yNzQzLDcgKzI3NDgsNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkCiAKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVS
TEF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqUmVmbGVj
dGVkQ3VzdG9tVVJMQXR0ckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJyZWZsZWN0ZWRDdXN0
b21VUkxBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRDdXN0b21VUkxBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09i
amVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTI3NjAsNyArMjc2NSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpFbmFibGVkQXQKIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJp
YnV0ZUdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUi
KTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpFbmFi
bGVkQXRSdW50aW1lQXR0cmlidXRlR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImVuYWJsZWRB
dFJ1bnRpbWVBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9i
akVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjc3OSw3ICsyNzg0
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakVuYWJsZWRCeQogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpFbmFibGVkQnlT
ZXR0aW5nQXR0cmlidXRlR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiZW5hYmxlZEJ5U2V0dGlu
Z0F0dHJpYnV0ZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpz
VGVzdE9iakVuYWJsZWRCeVNldHRpbmdBdHRyaWJ1dGVHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVl
LCAiZW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0T2JqRW5hYmxlZEJ5U2V0dGluZ0F0dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0y
Nzk3LDcgKzI4MDIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqVHlwZWRBcnJh
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpUeXBlZEFycmF5
QXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInR5cGVkQXJyYXlBdHRyIik7CisgICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqVHlwZWRBcnJheUF0dHJH
ZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAidHlwZWRBcnJheUF0dHIiKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialR5cGVkQXJyYXlBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAg
LTI4MTMsNyArMjgxOCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1
dGUKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlV2l0aEdldHRlckV4Y2VwdGlv
bihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNU
ZXN0T2JqQXR0cmlidXRlV2l0aEdldHRlckV4Y2VwdGlvbkdldHRlcj4oc3RhdGUsIHRoaXNWYWx1
ZSwgImF0dHJpYnV0ZVdpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoR2V0dGVyRXhjZXB0aW9u
R2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImF0dHJpYnV0ZVdpdGhHZXR0ZXJFeGNlcHRpb24i
KTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZVdpdGhHZXR0
ZXJFeGNlcHRpb25HZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjgyOSw3ICsyODM0LDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpBdHRyaWJ1dGVXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoU2V0dGVyRXhj
ZXB0aW9uR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiYXR0cmlidXRlV2l0aFNldHRlckV4Y2Vw
dGlvbiIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9i
akF0dHJpYnV0ZVdpdGhTZXR0ZXJFeGNlcHRpb25HZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAi
YXR0cmlidXRlV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0T2JqQXR0cmlidXRlV2l0aFNldHRlckV4Y2VwdGlvbkdldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBA
IC0yODQ1LDcgKzI4NTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqU3RyaW5n
QXR0CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxq
c1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkdldHRlcj4oc3RhdGUsIHRoaXNW
YWx1ZSwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIik7CisgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb25HZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNl
cHRpb24iKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhp
c09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTI4NjEsNyArMjg2Niw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHQKIAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJp
bmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9ialN0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAic3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24iKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46Omdl
dDxqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkdldHRlcj4oKnN0YXRlLCB0
aGlzVmFsdWUsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogfQogCiBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25HZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQpAQCAtMjg3Nyw3ICsyODgyLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdE9iakN1c3RvbUF0dAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDdXN0b21BdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RP
YmpDdXN0b21BdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiY3VzdG9tQXR0ciIpOworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9iakN1c3RvbUF0dHJH
ZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiY3VzdG9tQXR0ciIpOwogfQogCiBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0T2JqQ3VzdG9tQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0yODkxLDcg
KzI4OTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqT25mb29HZXR0CiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iak9uZm9vKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVy
PEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpPbmZvb0dldHRlcj4oc3RhdGUsIHRoaXNW
YWx1ZSwgIm9uZm9vIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8
anNUZXN0T2JqT25mb29HZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAib25mb28iKTsKIH0KIAog
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iak9uZm9vR2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTI5
MDUsNyArMjkxMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpPbndlYmtpdGYK
IAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqT253ZWJraXRmb28oRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJp
bmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9iak9ud2Via2l0Zm9vR2V0
dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAib253ZWJraXRmb28iKTsKKyAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpPbndlYmtpdGZvb0dldHRlcj4oKnN0YXRl
LCB0aGlzVmFsdWUsICJvbndlYmtpdGZvbyIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0T2JqT253ZWJraXRmb29HZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0
aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjkxOSw3ICsyOTI0LDcgQEAg
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcAogCiBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZUdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0
ZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialdp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJ3aXRoU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9i
aldpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RP
YmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0yOTM1LDcgKzI5NDAs
NyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqV2l0aENhbGxXCiAKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RP
YmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZUdldHRlcj4oc3RhdGUsIHRo
aXNWYWx1ZSwgIndpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlIik7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqV2l0aENhbGxXaXRo
QW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGVHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAid2l0
aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRl
R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKQEAgLTI5NTEsNyArMjk1Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RPYmpXaXRoU2NyaXAKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QXR0cmlidXRlR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46Omdl
dDxqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUdldHRlcj4oKnN0
YXRlLCB0aGlzVmFsdWUsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIpOwog
fQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2Jq
ZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjk3MCw3ICsyOTc1LDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlc0dldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgIndpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0
PGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0dldHRlcj4oKnN0YXRlLCB0
aGlzVmFsdWUsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0dl
dHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpCkBAIC0yOTg2LDcgKzI5OTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0T2JqV2l0aFNjcmlwCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZVJhaXNlc0dldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVSYWlzZXNHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKQEAgLTMwMDUsNyArMzAxMCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RP
YmpXaXRoU2NyaXAKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgIndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKKyAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlR2V0dGVyPigqc3RhdGUsIHRoaXNW
YWx1ZSwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUi
KTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzAyNCw3
ICszMDI5LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcAogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAid2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNHZXR0ZXI+KCpzdGF0
ZSwgdGhpc1ZhbHVlLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0dldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCkBAIC0zMDQzLDcgKzMwNDgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0T2JqV2l0aFNjcmlwCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJl
dHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUdldHRl
cj4oc3RhdGUsIHRoaXNWYWx1ZSwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rl
c3RPYmo+OjpnZXQ8anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAid2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsK
IH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlR2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAg
LTMwNjIsNyArMzA2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2Ny
aXAKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxT
dGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+Ojph
dHRyaWJ1dGU8anNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0
ZUdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2tBdHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxq
c1Rlc3RPYmpXaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlR2V0dGVyPigq
c3RhdGUsIHRoaXNWYWx1ZSwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1
dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRBcmd1
bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzA3OSw3ICszMDg0
LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbgogCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5n
Q2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxR2V0
dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiY29uZGl0aW9uYWxBdHRyMSIpOworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjFHZXR0
ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiY29uZGl0aW9uYWxBdHRyMSIpOwogfQogCiBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMUdldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBA
IC0zMDk4LDcgKzMxMDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ29uZGl0
aW9uCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
cmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJjb25kaXRpb25hbEF0dHIyIik7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqQ29uZGl0
aW9uYWxBdHRyMkdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJjb25kaXRpb25hbEF0dHIyIik7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIyR2V0
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKQEAgLTMxMTcsNyArMzEyMiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RPYmpDb25kaXRpb24KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8
anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyM0dldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImNvbmRp
dGlvbmFsQXR0cjMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxq
c1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImNvbmRp
dGlvbmFsQXR0cjMiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjNHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzEzNiw3ICszMTQxLDcgQEAgc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25zdHJ1
Y3RvckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImNvbmRpdGlvbmFsQXR0cjQiKTsKKyAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpDb25kaXRpb25hbEF0
dHI0Q29uc3RydWN0b3JHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiY29uZGl0aW9uYWxBdHRy
NCIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRy
NENvbnN0cnVjdG9yR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVj
dCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTMxNTMsNyArMzE1OCw3IEBAIHN0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb24KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI1Q29uc3Ry
dWN0b3JHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJjb25kaXRpb25hbEF0dHI1Iik7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyNUNvbnN0cnVjdG9yR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImNvbmRpdGlvbmFsQXR0
cjUiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjVDb25zdHJ1Y3RvckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmpl
Y3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0zMTcwLDcgKzMxNzUsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNkNvbnN0
cnVjdG9yR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiY29uZGl0aW9uYWxBdHRyNiIpOworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9iakNvbmRpdGlvbmFs
QXR0cjZDb25zdHJ1Y3RvckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJjb25kaXRpb25hbEF0
dHI2Iik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0
dHI2Q29uc3RydWN0b3JHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2Jq
ZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzE4Niw3ICszMTkxLDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDYWNoZWRBdHRyaWJ1dGUxKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUxR2V0dGVyPihzdGF0ZSwg
dGhpc1ZhbHVlLCAiY2FjaGVkQXR0cmlidXRlMSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTFHZXR0ZXI+KCpzdGF0ZSwg
dGhpc1ZhbHVlLCAiY2FjaGVkQXR0cmlidXRlMSIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0zMjA1LDcgKzMy
MTAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0CiAKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTJH
ZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJjYWNoZWRBdHRyaWJ1dGUyIik7CisgICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMkdl
dHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJjYWNoZWRBdHRyaWJ1dGUyIik7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
QEAgLTMyMjQsNyArMzIyOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpBbnlB
dHRyaWIKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJl
dHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpBbnlBdHRy
aWJ1dGVHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJhbnlBdHRyaWJ1dGUiKTsKKyAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpBbnlBdHRyaWJ1dGVHZXR0
ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiYW55QXR0cmlidXRlIik7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RPYmpBbnlBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzI0MCw3
ICszMjQ1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iak9iamVjdEF0dAogCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJp
bmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9iak9iamVjdEF0dHJpYnV0
ZUdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgIm9iamVjdEF0dHJpYnV0ZSIpOworICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9iak9iamVjdEF0dHJpYnV0ZUdl
dHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJvYmplY3RBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iak9iamVjdEF0dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBA
IC0zMjU2LDcgKzMyNjEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ29udGVu
dERvCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudChFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICBy
ZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqQ29udGVu
dERvY3VtZW50R2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiY29udGVudERvY3VtZW50Iik7Cisg
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqQ29udGVudERv
Y3VtZW50R2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImNvbnRlbnREb2N1bWVudCIpOwogfQog
CiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50R2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKQEAgLTMyNzIsNyArMzI3Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RP
YmpNdXRhYmxlUG8KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewot
ICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpN
dXRhYmxlUG9pbnRHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJtdXRhYmxlUG9pbnQiKTsKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpNdXRhYmxlUG9p
bnRHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAibXV0YWJsZVBvaW50Iik7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpNdXRhYmxlUG9pbnRHZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAt
MzI4OCw3ICszMjkzLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialN0cmF3YmVy
cgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpTdHJhd2JlcnJ5R2V0
dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAic3RyYXdiZXJyeSIpOworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9ialN0cmF3YmVycnlHZXR0ZXI+KCpzdGF0ZSwg
dGhpc1ZhbHVlLCAic3RyYXdiZXJyeSIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0T2JqU3RyYXdiZXJyeUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNP
YmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0zMzA0LDcgKzMzMDksNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqRGVzY3JpcHRpCiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakRlc2NyaXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9i
aj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpEZXNjcmlwdGlvbkdldHRlcj4oc3RhdGUsIHRoaXNWYWx1
ZSwgImRlc2NyaXB0aW9uIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+Ojpn
ZXQ8anNUZXN0T2JqRGVzY3JpcHRpb25HZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiZGVzY3Jp
cHRpb24iKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakRlc2NyaXB0aW9u
R2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKQEAgLTMzMjAsNyArMzMyNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RPYmpJZEdldHRlcigKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSWQoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9iaklk
R2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiaWQiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpJZEdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJp
ZCIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqSWRHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQpAQCAtMzMzNiw3ICszMzQxLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakhh
c2hHZXR0ZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpIYXNoR2V0dGVyPihz
dGF0ZSwgdGhpc1ZhbHVlLCAiaGFzaCIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
T2JqPjo6Z2V0PGpzVGVzdE9iakhhc2hHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiaGFzaCIp
OwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqSGFzaEdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
CkBAIC0zMzUyLDcgKzMzNTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqUmVw
bGFjZWFiCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RP
YmpSZXBsYWNlYWJsZUF0dHJpYnV0ZUdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInJlcGxhY2Vh
YmxlQXR0cmlidXRlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8
anNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGVHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAi
cmVwbGFjZWFibGVBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dE9ialJlcGxhY2VhYmxlQXR0cmlidXRlR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9i
aiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTMzNjgsNyArMzM3Myw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUQKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqTnVsbGFibGVEb3VibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJp
bmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9iak51bGxhYmxlRG91Ymxl
QXR0cmlidXRlR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAibnVsbGFibGVEb3VibGVBdHRyaWJ1
dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpO
dWxsYWJsZURvdWJsZUF0dHJpYnV0ZUdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJudWxsYWJs
ZURvdWJsZUF0dHJpYnV0ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2Jq
TnVsbGFibGVEb3VibGVBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2Jq
JiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzM4NCw3ICszMzg5LDcg
QEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTAogCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9iak51bGxhYmxlTG9uZ0F0dHJp
YnV0ZUdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgIm51bGxhYmxlTG9uZ0F0dHJpYnV0ZSIpOwor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9iak51bGxhYmxl
TG9uZ0F0dHJpYnV0ZUdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJudWxsYWJsZUxvbmdBdHRy
aWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9u
Z0F0dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3Qs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0zNDAwLDcgKzM0MDUsNyBAQCBzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVCCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
ak51bGxhYmxlQm9vbGVhbkF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxK
U1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqTnVsbGFibGVCb29sZWFuQXR0cmlidXRlR2V0
dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAibnVsbGFibGVCb29sZWFuQXR0cmlidXRlIik7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqTnVsbGFibGVCb29s
ZWFuQXR0cmlidXRlR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgIm51bGxhYmxlQm9vbGVhbkF0
dHJpYnV0ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVC
b29sZWFuQXR0cmlidXRlR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09i
amVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTM0MTYsNyArMzQyMSw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVMKIAogRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqTnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0T2JqPjo6YXR0cmlidXRlPGpzVGVzdE9iak51bGxhYmxlU3RyaW5nQXR0cmlidXRl
R2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAibnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUiKTsKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpOdWxsYWJsZVN0
cmluZ0F0dHJpYnV0ZUdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJudWxsYWJsZVN0cmluZ0F0
dHJpYnV0ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVT
dHJpbmdBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2Jq
ZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzQzMiw3ICszNDM3LDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTAogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGlu
Z0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFi
bGVBdHRyaWJ1dGVHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJudWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dHJpYnV0ZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpz
VGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlR2V0dGVyPigqc3RhdGUsIHRoaXNW
YWx1ZSwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZUdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93
U2NvcGUpCkBAIC0zNDQ4LDcgKzM0NTMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
T2JqTnVsbGFibGVTCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0
dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6
YXR0cmlidXRlPGpzVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGVHZXR0ZXI+
KHN0YXRlLCB0aGlzVmFsdWUsICJudWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlIik7Cisg
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqTnVsbGFibGVT
dHJpbmdTZXR0YWJsZUF0dHJpYnV0ZUdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJudWxsYWJs
ZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlR2V0dGVyKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAg
LTM0NjQsNyArMzQ2OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJs
ZVUKIAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVVU1ZTdHJpbmdTZXR0YWJsZUF0
dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1
dGU8anNUZXN0T2JqTnVsbGFibGVVU1ZTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZUdldHRlcj4oc3Rh
dGUsIHRoaXNWYWx1ZSwgIm51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUiKTsKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpOdWxsYWJsZVVT
VlN0cmluZ1NldHRhYmxlQXR0cmlidXRlR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgIm51bGxh
YmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdE9iak51bGxhYmxlVVNWU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGVHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQpAQCAtMzQ4MCw3ICszNDg1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9i
ak51bGxhYmxlQgogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUJ5dGVTdHJpbmdT
ZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+
OjphdHRyaWJ1dGU8anNUZXN0T2JqTnVsbGFibGVCeXRlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGVH
ZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJudWxsYWJsZUJ5dGVTdHJpbmdTZXR0YWJsZUF0dHJp
YnV0ZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9i
ak51bGxhYmxlQnl0ZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlR2V0dGVyPigqc3RhdGUsIHRoaXNW
YWx1ZSwgIm51bGxhYmxlQnl0ZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlIik7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUJ5dGVTdHJpbmdTZXR0YWJsZUF0dHJp
YnV0ZUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpCkBAIC0zNDk2LDcgKzM1MDEsNyBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0T2JqTnVsbGFibGVTCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxh
YmxlU3RyaW5nVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6
YXR0cmlidXRlPGpzVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWVHZXR0ZXI+KHN0YXRlLCB0aGlz
VmFsdWUsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RPYmo+OjpnZXQ8anNUZXN0T2JqTnVsbGFibGVTdHJpbmdWYWx1ZUdldHRlcj4oKnN0YXRl
LCB0aGlzVmFsdWUsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1ZhbHVlR2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTM1
MTIsNyArMzUxNyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGUK
IAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RPYmpBdHRyaWJ1dGVHZXR0ZXI+
KHN0YXRlLCB0aGlzVmFsdWUsICJhdHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdE9iaj46OmdldDxqc1Rlc3RPYmpBdHRyaWJ1dGVHZXR0ZXI+KCpzdGF0ZSwgdGhpc1Zh
bHVlLCAiYXR0cmlidXRlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpB
dHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzUyOCw3ICszNTMzLDcgQEAgc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdE9iakF0dHJpYnV0ZQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpB
dHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51
bVR5cGVHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVt
VHlwZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0PGpzVGVzdE9i
akF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwg
ImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZUdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
CkBAIC0zNTQ0LDcgKzM1NDksNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqUHV0
Rm9yd2FyCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmF0dHJpYnV0ZTxqc1Rlc3RP
YmpQdXRGb3J3YXJkc0F0dHJpYnV0ZUdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInB1dEZvcndh
cmRzQXR0cmlidXRlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXQ8
anNUZXN0T2JqUHV0Rm9yd2FyZHNBdHRyaWJ1dGVHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAi
cHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dE9ialB1dEZvcndhcmRzQXR0cmlidXRlR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9i
aiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTM1NjAsNyArMzU2NSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXIKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1
cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1dGU8anNUZXN0T2JqUHV0Rm9yd2Fy
ZHNOdWxsYWJsZUF0dHJpYnV0ZUdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInB1dEZvcndhcmRz
TnVsbGFibGVBdHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46
OmdldDxqc1Rlc3RPYmpQdXRGb3J3YXJkc051bGxhYmxlQXR0cmlidXRlR2V0dGVyPigqc3RhdGUs
IHRoaXNWYWx1ZSwgInB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGVHZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQpAQCAtMzU3Niw3ICszNTgxLDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdE9ialN0cmluZ2lmaQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdpZmllckF0
dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjphdHRyaWJ1
dGU8anNUZXN0T2JqU3RyaW5naWZpZXJBdHRyaWJ1dGVHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUs
ICJzdHJpbmdpZmllckF0dHJpYnV0ZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0
T2JqPjo6Z2V0PGpzVGVzdE9ialN0cmluZ2lmaWVyQXR0cmlidXRlR2V0dGVyPigqc3RhdGUsIHRo
aXNWYWx1ZSwgInN0cmluZ2lmaWVyQXR0cmlidXRlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RPYmpTdHJpbmdpZmllckF0dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUmIHN0YXRl
LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0zNjI5
LDcgKzM2MzQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqVGVzdFN1Yk9iCiAK
IGJvb2wgc2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1Y3RvcihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+Ojpz
ZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2JqVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmdDb25zdHJ1
Y3RvckZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJUZXN0U3ViT2Jq
RW5hYmxlZEJ5U2V0dGluZyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6
c2V0PHNldEpTVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3JGdW5j
dGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlRlc3RTdWJPYmpFbmFibGVk
QnlTZXR0aW5nIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpUZXN0U3Vi
T2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQpAQCAtMzY0NSw3ICszNjUwLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9i
akVudW1BdHRyRgogCiBib29sIHNldEpTVGVzdE9iakVudW1BdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRK
U1Rlc3RPYmpFbnVtQXR0ckZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJlbnVtQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNl
dEpTVGVzdE9iakVudW1BdHRyRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJlbnVtQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqRW51
bUF0dHJGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0zNjY3LDcgKzM2NzIsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQnl0ZUF0dHJGCiAKIGJvb2wgc2V0SlNU
ZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9iakJ5dGVBdHRyRnVuY3Rpb24+
KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJ5dGVBdHRyIik7CisgICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqQnl0ZUF0dHJGdW5jdGlv
bj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImJ5dGVBdHRyIik7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpCeXRlQXR0ckZ1bmN0aW9uKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKQEAgLTM2ODYsNyArMzY5MSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U1Rlc3RPYmpPY3RldEF0dHIKIAogYm9vbCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmli
dXRlPHNldEpTVGVzdE9iak9jdGV0QXR0ckZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJvY3RldEF0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9i
aj46OnNldDxzZXRKU1Rlc3RPYmpPY3RldEF0dHJGdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIm9jdGV0QXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0T2JqT2N0ZXRBdHRyRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzcw
NSw3ICszNzEwLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialNob3J0QXR0cgog
CiBib29sIHNldEpTVGVzdE9ialNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1
cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2JqU2hv
cnRBdHRyRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInNob3J0QXR0
ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9i
alNob3J0QXR0ckZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic2hv
cnRBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpTaG9ydEF0dHJG
dW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUg
dmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0zNzI0LDcgKzM3MjksNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQ2xhbXBlZFNoCiAKIGJvb2wgc2V0SlNUZXN0T2Jq
Q2xhbXBlZFNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2JqQ2xhbXBlZFNob3J0QXR0
ckZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjbGFtcGVkU2hvcnRB
dHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0
T2JqQ2xhbXBlZFNob3J0QXR0ckZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAiY2xhbXBlZFNob3J0QXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0T2JqQ2xhbXBlZFNob3J0QXR0ckZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9i
aiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAg
LTM3NDMsNyArMzc0OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpFbmZvcmNl
UmEKIAogYm9vbCBzZXRKU1Rlc3RPYmpFbmZvcmNlUmFuZ2VTaG9ydEF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFs
dWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRl
PHNldEpTVGVzdE9iakVuZm9yY2VSYW5nZVNob3J0QXR0ckZ1bmN0aW9uPihzdGF0ZSwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJlbmZvcmNlUmFuZ2VTaG9ydEF0dHIiKTsKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpFbmZvcmNlUmFuZ2VTaG9y
dEF0dHJGdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImVuZm9yY2VS
YW5nZVNob3J0QXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqRW5m
b3JjZVJhbmdlU2hvcnRBdHRyRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzc2
Miw3ICszNzY3LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialVuc2lnbmVkUwog
CiBib29sIHNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewot
ICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rl
c3RPYmpVbnNpZ25lZFNob3J0QXR0ckZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJ1bnNpZ25lZFNob3J0QXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyRnVuY3Rpb24+KCpzdGF0
ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ1bnNpZ25lZFNob3J0QXR0ciIpOwogfQogCiBz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqVW5zaWduZWRTaG9ydEF0dHJGdW5jdGlvbihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRo
cm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0zNzgxLDcgKzM3ODYsNyBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0T2JqTG9uZ0F0dHJGCiAKIGJvb2wgc2V0SlNUZXN0T2JqTG9uZ0F0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6
c2V0QXR0cmlidXRlPHNldEpTVGVzdE9iakxvbmdBdHRyRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgImxvbmdBdHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqTG9uZ0F0dHJGdW5jdGlvbj4oKnN0YXRlLCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgImxvbmdBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RPYmpMb25nQXR0ckZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9i
aiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAg
LTM4MDAsNyArMzgwNSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpMb25nTG9u
Z0EKIAogYm9vbCBzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVz
dE9iakxvbmdMb25nQXR0ckZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJsb25nTG9uZ0F0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNl
dDxzZXRKU1Rlc3RPYmpMb25nTG9uZ0F0dHJGdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImxvbmdMb25nQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0T2JqTG9uZ0xvbmdBdHRyRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2Jq
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAt
MzgxOSw3ICszODI0LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialVuc2lnbmVk
TAogCiBib29sIHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxz
ZXRKU1Rlc3RPYmpVbnNpZ25lZExvbmdMb25nQXR0ckZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRy
RnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ1bnNpZ25lZExvbmdM
b25nQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqVW5zaWduZWRM
b25nTG9uZ0F0dHJGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0zODM4LDcgKzM4
NDMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0CiAKIGJvb2wg
c2V0SlNUZXN0T2JqU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2JqU3RyaW5nQXR0
ckZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzdHJpbmdBdHRyIik7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqU3Ry
aW5nQXR0ckZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3RyaW5n
QXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0ckZ1
bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTM4NTcsNyArMzg2Miw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpVc3ZzdHJpbmcKIAogYm9vbCBzZXRKU1Rlc3RPYmpV
c3ZzdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVy
PEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpVc3ZzdHJpbmdBdHRyRnVuY3Rp
b24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInVzdnN0cmluZ0F0dHIiKTsKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpVc3ZzdHJp
bmdBdHRyRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ1c3ZzdHJp
bmdBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpVc3ZzdHJpbmdB
dHRyRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzg3Niw3ICszODgxLDcgQEAg
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialRlc3RPYmpBdAogCiBib29sIHNldEpTVGVz
dE9ialRlc3RPYmpBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpUZXN0T2JqQXR0ckZ1bmN0
aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXN0T2JqQXR0ciIpOworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialRlc3RPYmpB
dHRyRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXN0T2JqQXR0
ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqVGVzdE9iakF0dHJGdW5j
dGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0zODk1LDcgKzM5MDAsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqVGVzdE51bGxhCiAKIGJvb2wgc2V0SlNUZXN0T2JqVGVz
dE51bGxhYmxlT2JqQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2JqVGVzdE51bGxhYmxlT2Jq
QXR0ckZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0ZXN0TnVsbGFi
bGVPYmpBdHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0
SlNUZXN0T2JqVGVzdE51bGxhYmxlT2JqQXR0ckZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAidGVzdE51bGxhYmxlT2JqQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0T2JqVGVzdE51bGxhYmxlT2JqQXR0ckZ1bmN0aW9uKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKQEAgLTM5MTQsNyArMzkxOSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U1Rlc3RPYmpMZW5pZW50VGUKIAogYm9vbCBzZXRKU1Rlc3RPYmpMZW5pZW50VGVzdE9iakF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6
c2V0QXR0cmlidXRlPHNldEpTVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0ckZ1bmN0aW9uLCBDYXN0
ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmV0dXJuRWFybHk+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgImxlbmllbnRUZXN0T2JqQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0ckZ1bmN0aW9uLCBD
YXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmV0dXJuRWFybHk+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJsZW5pZW50VGVzdE9iakF0dHIiKTsKIH0KIAogc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdE9iakxlbmllbnRUZXN0T2JqQXR0ckZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKQEAgLTM5MzMsNyArMzkzOCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rl
c3RPYmpTdHJpbmdBdHQKIAogYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdOdWxs
QXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2JqU3RyaW5nQXR0clRyZWF0aW5n
TnVsbEFzRW1wdHlTdHJpbmdGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAic3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKKyAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZ0Z1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAic3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKIH0KIAogc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
RnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzk1Miw3ICszOTU3LDcgQEAgc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialVzdnN0cmluZwogCiBib29sIHNldEpTVGVzdE9i
alVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRK
U1Rlc3RPYmpVc3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZ0Z1bmN0aW9uPihz
dGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ1c3ZzdHJpbmdBdHRyVHJlYXRpbmdOdWxs
QXNFbXB0eVN0cmluZyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0
PHNldEpTVGVzdE9ialVzdnN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nRnVuY3Rp
b24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ1c3ZzdHJpbmdBdHRyVHJlYXRp
bmdOdWxsQXNFbXB0eVN0cmluZyIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
T2JqVXN2c3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdGdW5jdGlvbihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpCkBAIC0zOTcxLDcgKzM5NzYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0T2JqQnl0ZVN0cmluCiAKIGJvb2wgc2V0SlNUZXN0T2JqQnl0ZVN0cmluZ0F0dHJU
cmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpCeXRlU3Ry
aW5nQXR0clRyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiYnl0ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5n
Iik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2Jq
Qnl0ZVN0cmluZ0F0dHJUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nRnVuY3Rpb24+KCpzdGF0ZSwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJieXRlU3RyaW5nQXR0clRyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmciKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakJ5dGVTdHJp
bmdBdHRyVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZ0Z1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKQEAgLTM5OTAsNyArMzk5NSw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RP
YmpTdHJpbmdMb24KIAogYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdMb25nUmVjb3JkQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRB
dHRyaWJ1dGU8c2V0SlNUZXN0T2JqU3RyaW5nTG9uZ1JlY29yZEF0dHJGdW5jdGlvbj4oc3RhdGUs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3RyaW5nTG9uZ1JlY29yZEF0dHIiKTsKKyAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpTdHJpbmdMb25n
UmVjb3JkQXR0ckZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3Ry
aW5nTG9uZ1JlY29yZEF0dHIiKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9i
alN0cmluZ0xvbmdSZWNvcmRBdHRyRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2Jq
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAt
NDAwOSw3ICs0MDE0LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialVzdnN0cmlu
ZwogCiBib29sIHNldEpTVGVzdE9ialVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0
ZTxzZXRKU1Rlc3RPYmpVc3ZzdHJpbmdMb25nUmVjb3JkQXR0ckZ1bmN0aW9uPihzdGF0ZSwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ1c3ZzdHJpbmdMb25nUmVjb3JkQXR0ciIpOworICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialVzdnN0cmluZ0xv
bmdSZWNvcmRBdHRyRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ1
c3ZzdHJpbmdMb25nUmVjb3JkQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0T2JqVXN2c3RyaW5nTG9uZ1JlY29yZEF0dHJGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCkBAIC00MDI4LDcgKzQwMzMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2Jq
VXN2c3RyaW5nCiAKIGJvb2wgc2V0SlNUZXN0T2JqVXN2c3RyaW5nTG9uZ1JlY29yZEF0dHIoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0
QXR0cmlidXRlPHNldEpTVGVzdE9ialVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyRnVuY3Rpb24+KHN0
YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyIik7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqVXN2
c3RyaW5nTG9uZ1JlY29yZEF0dHJGdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInVzdnN0cmluZ0xvbmdSZWNvcmRBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RPYmpVc3ZzdHJpbmdMb25nUmVjb3JkQXR0ckZ1bmN0aW9uKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKQEAgLTQwNDcsNyArNDA1Miw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U1Rlc3RPYmpTdHJpbmdPYmoKIAogYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdPYmpSZWNvcmRBdHRy
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46
OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpTdHJpbmdPYmpSZWNvcmRBdHRyRnVuY3Rpb24+KHN0
YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN0cmluZ09ialJlY29yZEF0dHIiKTsKKyAg
ICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpTdHJpbmdP
YmpSZWNvcmRBdHRyRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJz
dHJpbmdPYmpSZWNvcmRBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RP
YmpTdHJpbmdPYmpSZWNvcmRBdHRyRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2Jq
JiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAt
NDA2Niw3ICs0MDcxLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialN0cmluZ051
bAogCiBib29sIHNldEpTVGVzdE9ialN0cmluZ051bGxhYmxlT2JqUmVjb3JkQXR0cihFeGVjU3Rh
dGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRy
aWJ1dGU8c2V0SlNUZXN0T2JqU3RyaW5nTnVsbGFibGVPYmpSZWNvcmRBdHRyRnVuY3Rpb24+KHN0
YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN0cmluZ051bGxhYmxlT2JqUmVjb3JkQXR0
ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9i
alN0cmluZ051bGxhYmxlT2JqUmVjb3JkQXR0ckZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAic3RyaW5nTnVsbGFibGVPYmpSZWNvcmRBdHRyIik7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdOdWxsYWJsZU9ialJlY29yZEF0dHJGdW5j
dGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC00MDg1LDcgKzQwOTAsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqRGljdGlvbmFyCiAKIGJvb2wgc2V0SlNUZXN0T2JqRGlj
dGlvbmFyeUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9iakRpY3Rpb25hcnlBdHRyRnVuY3Rp
b24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImRpY3Rpb25hcnlBdHRyIik7Cisg
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqRGljdGlv
bmFyeUF0dHJGdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImRpY3Rp
b25hcnlBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpEaWN0aW9u
YXJ5QXR0ckZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTQxMDQsNyArNDEwOSw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUQKIAogYm9vbCBzZXRK
U1Rlc3RPYmpOdWxsYWJsZURpY3Rpb25hcnlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJl
dHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpO
dWxsYWJsZURpY3Rpb25hcnlBdHRyRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgIm51bGxhYmxlRGljdGlvbmFyeUF0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpOdWxsYWJsZURpY3Rpb25hcnlBdHRyRnVuY3Rp
b24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJudWxsYWJsZURpY3Rpb25hcnlB
dHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZURpY3Rp
b25hcnlBdHRyRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0
LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDEyMyw3ICs0MTI4
LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakFubm90YXRlZAogCiBib29sIHNl
dEpTVGVzdE9iakFubm90YXRlZFR5cGVJblVuaW9uQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAg
ICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0
T2JqQW5ub3RhdGVkVHlwZUluVW5pb25BdHRyRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImFubm90YXRlZFR5cGVJblVuaW9uQXR0ciIpOworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9iakFubm90YXRlZFR5cGVJblVuaW9u
QXR0ckZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYW5ub3RhdGVk
VHlwZUluVW5pb25BdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpB
bm5vdGF0ZWRUeXBlSW5VbmlvbkF0dHJGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RP
YmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBA
IC00MTQyLDcgKzQxNDcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQW5ub3Rh
dGVkCiAKIGJvb2wgc2V0SlNUZXN0T2JqQW5ub3RhdGVkVHlwZUluU2VxdWVuY2VBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0
dHJpYnV0ZTxzZXRKU1Rlc3RPYmpBbm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZUF0dHJGdW5jdGlvbj4o
c3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYW5ub3RhdGVkVHlwZUluU2VxdWVuY2VB
dHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0
T2JqQW5ub3RhdGVkVHlwZUluU2VxdWVuY2VBdHRyRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVl
LCBlbmNvZGVkVmFsdWUsICJhbm5vdGF0ZWRUeXBlSW5TZXF1ZW5jZUF0dHIiKTsKIH0KIAogc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakFubm90YXRlZFR5cGVJblNlcXVlbmNlQXR0ckZ1
bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTQxNjEsNyArNDE2Niw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpJbXBsZW1lbnQKIAogYm9vbCBzZXRKU1Rlc3RPYmpJ
bXBsZW1lbnRhdGlvbkVudW1BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpJbXBsZW1lbnRh
dGlvbkVudW1BdHRyRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImlt
cGxlbWVudGF0aW9uRW51bUF0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9i
aj46OnNldDxzZXRKU1Rlc3RPYmpJbXBsZW1lbnRhdGlvbkVudW1BdHRyRnVuY3Rpb24+KCpzdGF0
ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpbXBsZW1lbnRhdGlvbkVudW1BdHRyIik7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpJbXBsZW1lbnRhdGlvbkVudW1BdHRy
RnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDE4Myw3ICs0MTg4LDcgQEAgc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialhNTE9iakF0dAogCiBib29sIHNldEpTVGVzdE9i
alhNTE9iakF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9ialhNTE9iakF0dHJGdW5jdGlvbj4o
c3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiWE1MT2JqQXR0ciIpOworICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialhNTE9iakF0dHJGdW5j
dGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIlhNTE9iakF0dHIiKTsKIH0K
IAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialhNTE9iakF0dHJGdW5jdGlvbihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpCkBAIC00MjAyLDcgKzQyMDcsNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0T2JqQ3JlYXRlRnVuCiAKIGJvb2wgc2V0SlNUZXN0T2JqQ3JlYXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0
dHJpYnV0ZTxzZXRKU1Rlc3RPYmpDcmVhdGVGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5j
b2RlZFZhbHVlLCAiY3JlYXRlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+
OjpzZXQ8c2V0SlNUZXN0T2JqQ3JlYXRlRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJjcmVhdGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9i
akNyZWF0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTQyMjEsNyArNDIyNiw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWQKIAogYm9vbCBzZXRK
U1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpSZWZs
ZWN0ZWRTdHJpbmdBdHRyRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
InJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9i
aj46OnNldDxzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyRnVuY3Rpb24+KCpzdGF0ZSwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRyRnVuY3Rpb24o
RXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDI0MCw3ICs0MjQ1LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZAogCiBib29sIHNldEpTVGVzdE9ialJlZmxlY3Rl
ZFVTVlN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9ialJlZmxlY3RlZFVTVlN0cmlu
Z0F0dHJGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicmVmbGVjdGVk
VVNWU3RyaW5nQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0
PHNldEpTVGVzdE9ialJlZmxlY3RlZFVTVlN0cmluZ0F0dHJGdW5jdGlvbj4oKnN0YXRlLCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgInJlZmxlY3RlZFVTVlN0cmluZ0F0dHIiKTsKIH0KIAogc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFVTVlN0cmluZ0F0dHJGdW5jdGlv
bihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC00MjU5LDcgKzQyNjQsNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3Jh
bEF0dHJGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicmVmbGVjdGVk
SW50ZWdyYWxBdHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8
c2V0SlNUZXN0T2JqUmVmbGVjdGVkSW50ZWdyYWxBdHRyRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsKIH0KIAogc3RhdGlj
IGlubGluZSBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEludGVncmFsQXR0ckZ1bmN0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTQyNzgsNyArNDI4Myw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWQKIAogYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRV
bnNpZ25lZEludGVncmFsQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGlu
Z0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2JqUmVmbGVjdGVkVW5z
aWduZWRJbnRlZ3JhbEF0dHJGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncmFs
QXR0ckZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicmVmbGVjdGVk
VW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVz
dE9ialJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0
ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQpAQCAtNDI5Nyw3ICs0MzAyLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVz
dE9ialJlZmxlY3RlZAogCiBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEJvb2xlYW5BdHRyKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNl
dEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0ckZ1bmN0aW9uPihzdGF0
ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIpOworICAg
IHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialJlZmxlY3Rl
ZEJvb2xlYW5BdHRyRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJy
ZWZsZWN0ZWRCb29sZWFuQXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHJGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RP
YmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBA
IC00MzE2LDcgKzQzMjEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVj
dGVkCiAKIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0cihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0
SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0ckZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJyZWZsZWN0ZWRVUkxBdHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0ckZ1bmN0aW9uPigqc3Rh
dGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogfQogCiBz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkVVJMQXR0ckZ1bmN0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTQzMzUsNyArNDM0MCw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWQKIAogYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRV
U1ZVUkxBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVU1ZVUkxBdHRyRnVu
Y3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInJlZmxlY3RlZFVTVlVSTEF0
dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RP
YmpSZWZsZWN0ZWRVU1ZVUkxBdHRyRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJyZWZsZWN0ZWRVU1ZVUkxBdHRyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVU1ZVUkxBdHRyRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQpAQCAtNDM1NCw3ICs0MzU5LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9i
alJlZmxlY3RlZAogCiBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0
cmlidXRlPHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmluZ0F0dHJGdW5jdGlvbj4oc3RhdGUsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOworICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialJlZmxlY3RlZFN0cmlu
Z0F0dHJGdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInJlZmxlY3Rl
ZFN0cmluZ0F0dHIiKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialJlZmxl
Y3RlZFN0cmluZ0F0dHJGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC00MzczLDcg
KzQzNzgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkCiAKIGJv
b2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxz
ZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJGdW5jdGlvbj4oc3RhdGUsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7Cisg
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqUmVmbGVj
dGVkQ3VzdG9tSW50ZWdyYWxBdHRyRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHIiKTsKIH0KIAogc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ckZ1bmN0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTQzOTIsNyArNDM5Nyw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWQKIAogYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRD
dXN0b21Cb29sZWFuQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9t
Qm9vbGVhbkF0dHJGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicmVm
bGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVz
dE9iaj46OnNldDxzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckZ1bmN0aW9u
Pigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVh
bkF0dHIiKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1
c3RvbUJvb2xlYW5BdHRyRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDQxMSw3
ICs0NDE2LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialJlZmxlY3RlZAogCiBi
b29sIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7
Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpT
VGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0dHJGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAicmVmbGVjdGVkQ3VzdG9tVVJMQXR0ciIpOworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbVVSTEF0
dHJGdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInJlZmxlY3RlZEN1
c3RvbVVSTEF0dHIiKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialJlZmxl
Y3RlZEN1c3RvbVVSTEF0dHJGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC00NDMx
LDcgKzQ0MzYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqRW5hYmxlZEF0CiAK
IGJvb2wgc2V0SlNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1
ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8
c2V0SlNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZUZ1bmN0aW9uPihzdGF0ZSwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlIik7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqRW5hYmxlZEF0
UnVudGltZUF0dHJpYnV0ZUZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYg
c3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKQEAgLTQ0NTIsNyArNDQ1Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U1Rlc3RPYmpFbmFibGVkQnkKIAogYm9vbCBzZXRKU1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0
cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRl
RnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImVuYWJsZWRCeVNldHRp
bmdBdHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxz
ZXRKU1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlRnVuY3Rpb24+KCpzdGF0ZSwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJlbmFibGVkQnlTZXR0aW5nQXR0cmlidXRlIik7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpFbmFibGVkQnlTZXR0aW5nQXR0cmlidXRl
RnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDQ3Miw3ICs0NDc3LDcgQEAgc3Rh
dGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialR5cGVkQXJyYQogCiBib29sIHNldEpTVGVzdE9i
alR5cGVkQXJyYXlBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpUeXBlZEFycmF5QXR0ckZ1
bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0eXBlZEFycmF5QXR0ciIp
OworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialR5
cGVkQXJyYXlBdHRyRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ0
eXBlZEFycmF5QXR0ciIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqVHlw
ZWRBcnJheUF0dHJGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC00NDkxLDcgKzQ0
OTYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQXR0cmlidXRlCiAKIGJvb2wg
c2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0
SlNUZXN0T2JqQXR0cmlidXRlV2l0aEdldHRlckV4Y2VwdGlvbkZ1bmN0aW9uPihzdGF0ZSwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhdHRyaWJ1dGVXaXRoR2V0dGVyRXhjZXB0aW9uIik7Cisg
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqQXR0cmli
dXRlV2l0aEdldHRlckV4Y2VwdGlvbkZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiYXR0cmlidXRlV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogfQogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aEdldHRlckV4Y2VwdGlvbkZ1bmN0aW9u
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwg
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTQ1MTAsNyArNDUxNSw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RPYmpBdHRyaWJ1dGUKIAogYm9vbCBzZXRKU1Rlc3RPYmpBdHRyaWJ1
dGVXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVX
aXRoU2V0dGVyRXhjZXB0aW9uRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgImF0dHJpYnV0ZVdpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoU2V0dGVyRXhjZXB0
aW9uRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhdHRyaWJ1dGVX
aXRoU2V0dGVyRXhjZXB0aW9uIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RP
YmpBdHRyaWJ1dGVXaXRoU2V0dGVyRXhjZXB0aW9uRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQpAQCAtNDUyOSw3ICs0NTM0LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9i
alN0cmluZ0F0dAogCiBib29sIHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9i
aj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlv
bkZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbiIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6
c2V0PHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uRnVuY3Rpb24+KCpz
dGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbiIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldp
dGhHZXR0ZXJFeGNlcHRpb25GdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC00NTQ4
LDcgKzQ1NTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0CiAK
IGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmli
dXRlPHNldEpTVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uRnVuY3Rpb24+KHN0
YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0
aW9uIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0
T2JqU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25GdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbkZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTQ1NjcsNyArNDU3Miw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpDdXN0b21BdHQKIAogYm9vbCBzZXRKU1Rl
c3RPYmpDdXN0b21BdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpDdXN0b21BdHRyRnVuY3Rp
b24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImN1c3RvbUF0dHIiKTsKKyAgICBy
ZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpDdXN0b21BdHRy
RnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjdXN0b21BdHRyIik7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpDdXN0b21BdHRyRnVuY3Rpb24o
RXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDU4Myw3ICs0NTg4LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdE9iak9uZm9vRnVuYwogCiBib29sIHNldEpTVGVzdE9iak9uZm9vKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNl
dEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpPbmZvb0Z1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJvbmZvbyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2Jq
Pjo6c2V0PHNldEpTVGVzdE9iak9uZm9vRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJvbmZvbyIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2Jq
T25mb29GdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpT
VmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC00NTk5LDcgKzQ2MDQsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqT253ZWJraXRmCiAKIGJvb2wgc2V0SlNU
ZXN0T2JqT253ZWJraXRmb28oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdD
YWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9iak9ud2Via2l0Zm9vRnVu
Y3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm9ud2Via2l0Zm9vIik7Cisg
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqT253ZWJr
aXRmb29GdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm9ud2Via2l0
Zm9vIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpPbndlYmtpdGZvb0Z1
bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTQ2MTUsNyArNDYyMCw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXAKIAogYm9vbCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJp
bmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9ialdpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZUZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUs
ICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpT
VGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVGdW5jdGlv
bj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0
YXRlQXR0cmlidXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDYzNCw3ICs0
NjM5LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialdpdGhDYWxsVwogCiBib29s
IHNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0
dHJpYnV0ZTxzZXRKU1Rlc3RPYmpXaXRoQ2FsbFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0
ZUZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3aXRoQ2FsbFdpdGhB
bmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNU
ZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialdpdGhDYWxsV2l0aEFuZFNldHRlckNhbGxXaXRoQXR0
cmlidXRlRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3aXRoQ2Fs
bFdpdGhBbmRTZXR0ZXJDYWxsV2l0aEF0dHJpYnV0ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0T2JqV2l0aENhbGxXaXRoQW5kU2V0dGVyQ2FsbFdpdGhBdHRyaWJ1dGVGdW5j
dGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC00NjUzLDcgKzQ2NTgsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwCiAKIGJvb2wgc2V0SlNUZXN0T2JqV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAg
cmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlRnVuY3Rpb24+KHN0YXRlLCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
Iik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2Jq
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVGdW5jdGlvbj4oKnN0YXRlLCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
Iik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTQ2
NzUsNyArNDY4MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXAK
IAogYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNv
ZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0
cmlidXRlPHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0Z1bmN0aW9u
PihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGVSYWlzZXMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNGdW5jdGlvbj4oKnN0YXRlLCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIp
OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDY5NCw3ICs0
Njk5LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcAogCiBib29s
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNl
dEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0
ZVJhaXNlc0Z1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIpOworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlUmFpc2VzRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIpOwogfQogCiBz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
dHRyaWJ1dGVSYWlzZXNGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNP
YmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC00NzE2LDcg
KzQ3MjEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwCiAKIGJv
b2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rl
c3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUZ1bmN0
aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAid2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTQ3MzgsNyArNDc0Myw3
IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXAKIAogYm9vbCBzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXMiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNl
dDxzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzRnVuY3Rpb24oRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQpAQCAtNDc2MCw3ICs0NzY1LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpT
VGVzdE9ialdpdGhTY3JpcAogCiBib29sIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRK
U1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZUZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIp
OworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRl
RnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIpOwogfQogCiBz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRl
LCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93
U2NvcGUpCkBAIC00NzgyLDcgKzQ3ODcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
T2JqV2l0aFNjcmlwCiAKIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENh
bGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFyZ3Vt
ZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7Cisg
ICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqV2l0aFNj
cmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUZ1bmN0aW9uPigqc3RhdGUsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJp
YnV0ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEFy
Z3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKQEAgLTQ4MDIsNyArNDgwNyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpD
b25kaXRpb24KIAogYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZh
bHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0
ZTxzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUs
IGVuY29kZWRWYWx1ZSwgImNvbmRpdGlvbmFsQXR0cjEiKTsKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxRnVuY3Rpb24+
KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb25kaXRpb25hbEF0dHIxIik7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxRnVuY3Rp
b24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDgyMyw3ICs0ODI4LDcgQEAgc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbgogCiBib29sIHNldEpTVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjJGdW5j
dGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29uZGl0aW9uYWxBdHRyMiIp
OworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9iakNv
bmRpdGlvbmFsQXR0cjJGdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwg
ImNvbmRpdGlvbmFsQXR0cjIiKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9i
akNvbmRpdGlvbmFsQXR0cjJGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC00ODQ0
LDcgKzQ4NDksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uCiAK
IGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAg
ICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyM0Z1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJjb25kaXRpb25hbEF0dHIzIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RP
Ymo+OjpzZXQ8c2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyM0Z1bmN0aW9uPigqc3RhdGUsIHRo
aXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29uZGl0aW9uYWxBdHRyMyIpOwogfQogCiBzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyM0Z1bmN0aW9uKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKQEAgLTQ4NjUsNyArNDg3MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RPYmpDb25kaXRpb24KIAogYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjRDb25z
dHJ1Y3RvckZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb25kaXRp
b25hbEF0dHI0Iik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0
SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENvbnN0cnVjdG9yRnVuY3Rpb24+KCpzdGF0ZSwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJjb25kaXRpb25hbEF0dHI0Iik7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI0Q29uc3RydWN0b3JGdW5jdGlv
bihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC00ODgzLDcgKzQ4ODgsNyBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uCiAKIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0
aW9uYWxBdHRyNUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpDb25kaXRpb25h
bEF0dHI1Q29uc3RydWN0b3JGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiY29uZGl0aW9uYWxBdHRyNSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2Jq
Pjo6c2V0PHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1Y3RvckZ1bmN0aW9uPigq
c3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiY29uZGl0aW9uYWxBdHRyNSIpOwogfQog
CiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNUNvbnN0cnVj
dG9yRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDkwMSw3ICs0OTA2LDcgQEAg
c3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbgogCiBib29sIHNldEpTVGVz
dE9iakNvbmRpdGlvbmFsQXR0cjZDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBy
ZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyNkNvbnN0cnVjdG9yRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImNvbmRpdGlvbmFsQXR0cjYiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3RydWN0b3JG
dW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNvbmRpdGlvbmFsQXR0
cjYiKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjZDb25zdHJ1Y3RvckZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09i
amVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTQ5MTgsNyAr
NDkyMyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWIKIAogYm9v
bCBzZXRKU1Rlc3RPYmpBbnlBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJu
IEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9iakFueUF0
dHJpYnV0ZUZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhbnlBdHRy
aWJ1dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rl
c3RPYmpBbnlBdHRyaWJ1dGVGdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgImFueUF0dHJpYnV0ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2Jq
QW55QXR0cmlidXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2Jq
ZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDkzNyw3ICs0
OTQyLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iak9iamVjdEF0dAogCiBib29s
IHNldEpTVGVzdE9iak9iamVjdEF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1
cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2JqT2Jq
ZWN0QXR0cmlidXRlRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm9i
amVjdEF0dHJpYnV0ZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0
PHNldEpTVGVzdE9iak9iamVjdEF0dHJpYnV0ZUZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAib2JqZWN0QXR0cmlidXRlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RPYmpPYmplY3RBdHRyaWJ1dGVGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCkBAIC00OTU2LDcgKzQ5NjEsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2Jq
TXV0YWJsZVBvCiAKIGJvb2wgc2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
KQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxz
ZXRKU1Rlc3RPYmpNdXRhYmxlUG9pbnRGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAibXV0YWJsZVBvaW50Iik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RP
Ymo+OjpzZXQ8c2V0SlNUZXN0T2JqTXV0YWJsZVBvaW50RnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJtdXRhYmxlUG9pbnQiKTsKIH0KIAogc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdE9iak11dGFibGVQb2ludEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKQEAgLTQ5NzUsNyArNDk4MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpT
dHJhd2JlcnIKIAogYm9vbCBzZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQog
ewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRK
U1Rlc3RPYmpTdHJhd2JlcnJ5RnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1
ZSwgInN0cmF3YmVycnkiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNl
dDxzZXRKU1Rlc3RPYmpTdHJhd2JlcnJ5RnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJzdHJhd2JlcnJ5Iik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rl
c3RPYmpTdHJhd2JlcnJ5RnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlz
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDk5NCw3
ICs0OTk5LDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iaklkRnVuY3RpbwogCiBi
b29sIHNldEpTVGVzdE9iaklkKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5n
Q2FsbGVyPEpTVGVzdE9iaj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RPYmpJZEZ1bmN0aW9uPihz
dGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpZCIpOworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9iaklkRnVuY3Rpb24+KCpzdGF0ZSwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJpZCIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0
SlNUZXN0T2JqSWRGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC01MDEzLDcgKzUw
MTgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqUmVwbGFjZWFiCiAKIGJvb2wg
c2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAg
cmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9i
alJlcGxhY2VhYmxlQXR0cmlidXRlRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInJlcGxhY2VhYmxlQXR0cmlidXRlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGVGdW5jdGlvbj4o
KnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInJlcGxhY2VhYmxlQXR0cmlidXRlIik7
CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpYnV0
ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1
ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTUwMjksNyArNTAzNCw3IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUwKIAogYm9vbCBzZXRKU1Rlc3RP
YmpOdWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICBy
ZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2Jq
TnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGVGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiKTsKKyAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdT
ZXR0YWJsZUF0dHJpYnV0ZUZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdE9iak51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlRnVuY3Rpb24oRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNTA0OCw3ICs1MDUzLDcgQEAgc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdE9iak51bGxhYmxlUwogCiBib29sIHNldEpTVGVzdE9iak51bGxhYmxlU3Ry
aW5nU2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9iak51bGxhYmxlU3Ry
aW5nU2V0dGFibGVBdHRyaWJ1dGVGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZh
bHVlLCAibnVsbGFibGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOworICAgIHJldHVybiBJRExB
dHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0dGFi
bGVBdHRyaWJ1dGVGdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm51
bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGVGdW5jdGlvbihFeGVj
U3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpCkBAIC01MDY3LDcgKzUwNzIsNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0T2JqTnVsbGFibGVVCiAKIGJvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVVU1ZT
dHJpbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2JqTnVsbGFibGVV
U1ZTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZUZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJudWxsYWJsZVVTVlN0cmluZ1NldHRhYmxlQXR0cmlidXRlIik7CisgICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqTnVsbGFibGVVU1ZT
dHJpbmdTZXR0YWJsZUF0dHJpYnV0ZUZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAibnVsbGFibGVVU1ZTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwogfQogCiBzdGF0
aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqTnVsbGFibGVVU1ZTdHJpbmdTZXR0YWJsZUF0dHJp
YnV0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNW
YWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTUwODYsNyArNTA5MSw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUIKIAogYm9vbCBzZXRKU1Rl
c3RPYmpOdWxsYWJsZUJ5dGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
IHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0
SlNUZXN0T2JqTnVsbGFibGVCeXRlU3RyaW5nU2V0dGFibGVBdHRyaWJ1dGVGdW5jdGlvbj4oc3Rh
dGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibnVsbGFibGVCeXRlU3RyaW5nU2V0dGFibGVB
dHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNldDxzZXRK
U1Rlc3RPYmpOdWxsYWJsZUJ5dGVTdHJpbmdTZXR0YWJsZUF0dHJpYnV0ZUZ1bmN0aW9uPigqc3Rh
dGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAibnVsbGFibGVCeXRlU3RyaW5nU2V0dGFibGVB
dHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iak51bGxhYmxl
Qnl0ZVN0cmluZ1NldHRhYmxlQXR0cmlidXRlRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQpAQCAtNTEwNSw3ICs1MTEwLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iak51
bGxhYmxlUwogCiBib29sIHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmli
dXRlPHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFsdWVGdW5jdGlvbj4oc3RhdGUsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAibnVsbGFibGVTdHJpbmdWYWx1ZSIpOworICAgIHJldHVybiBJ
RExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9iak51bGxhYmxlU3RyaW5nVmFs
dWVGdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgIm51bGxhYmxlU3Ry
aW5nVmFsdWUiKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9iak51bGxhYmxl
U3RyaW5nVmFsdWVGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC01MTI0LDcgKzUx
MjksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqQXR0cmlidXRlCiAKIGJvb2wg
c2V0SlNUZXN0T2JqQXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
CiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNl
dEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlRnVuY3Rpb24+KHN0YXRlLCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqQXR0
cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGVGdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7CiB9CiAKIHN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZUZ1
bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTUxNDYsNyArNTE1MSw3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpQdXRGb3J3YXIKIAogYm9vbCBzZXRKU1Rlc3RPYmpQ
dXRGb3J3YXJkc0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGlu
Z0NhbGxlcjxKU1Rlc3RPYmo+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNB
dHRyaWJ1dGVGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAicHV0Rm9y
d2FyZHNBdHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OnNl
dDxzZXRKU1Rlc3RPYmpQdXRGb3J3YXJkc0F0dHJpYnV0ZUZ1bmN0aW9uPigqc3RhdGUsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAicHV0Rm9yd2FyZHNBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGlj
IGlubGluZSBib29sIHNldEpTVGVzdE9ialB1dEZvcndhcmRzQXR0cmlidXRlRnVuY3Rpb24oRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNTE2Niw3ICs1MTcxLDcgQEAgc3RhdGljIGlubGluZSBi
b29sIHNldEpTVGVzdE9ialB1dEZvcndhcgogCiBib29sIHNldEpTVGVzdE9ialB1dEZvcndhcmRz
TnVsbGFibGVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdD
YWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVs
bGFibGVBdHRyaWJ1dGVGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAi
cHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8
SlNUZXN0T2JqPjo6c2V0PHNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGVG
dW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInB1dEZvcndhcmRzTnVs
bGFibGVBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdE9ialB1
dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGVGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rl
c3RPYmomIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
CkBAIC01MTg4LDcgKzUxOTMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0T2JqU3Ry
aW5naWZpCiAKIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5naWZpZXJBdHRyaWJ1dGUoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVk
VmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6c2V0QXR0cmli
dXRlPHNldEpTVGVzdE9ialN0cmluZ2lmaWVyQXR0cmlidXRlRnVuY3Rpb24+KHN0YXRlLCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgInN0cmluZ2lmaWVyQXR0cmlidXRlIik7CisgICAgcmV0dXJu
IElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXQ8c2V0SlNUZXN0T2JqU3RyaW5naWZpZXJBdHRy
aWJ1dGVGdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN0cmluZ2lm
aWVyQXR0cmlidXRlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpTdHJp
bmdpZmllckF0dHJpYnV0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTUyMDks
MTQgKzUyMTQsNyBAQCBKU1ZhbHVlIEpTVGVzdE9iajo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtCiB9
CiAKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
bjFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsK
LQotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24xKEV4ZWNTdGF0ZSogc3RhdGUpCi17Ci0gICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24xQ2FsbGVyPihzdGF0ZSwgImVu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvbjFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRp
b24xQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKQEAgLTUyMjcsMTcgKzUyMjUsMTUgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLXN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJs
ZWRBdFJ1bnRpbWVPcGVyYXRpb24yQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwg
SlNDOjpUaHJvd1Njb3BlJik7Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMihFeGVjU3RhdGUq
IHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24xKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0g
ICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24yQ2FsbGVyPihzdGF0
ZSwgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50
aW1lT3BlcmF0aW9uMUNhbGxlcj4oKnN0YXRlLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIp
OwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMkNhbGxlcihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQorI2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvbjJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTI0OCw2ICs1MjQ0LDExIEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjIoRXhlY1N0YXRl
KiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMkNhbGxlcj4o
KnN0YXRlLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOworfQorCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShURVNUX0ZFQVRVUkUpCkBAIC01MjcxLDE0ICs1MjcyLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogfQogI2VuZGlmCiAKLXN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNw
ZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkQ2FsbGVyKEpTQzo6RXhlY1N0YXRl
KiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxk
V2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxl
ZENhbGxlcj4oc3RhdGUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJl
RW5hYmxlZCIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0
dXJlRW5hYmxlZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNX
b3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTI5MSwxNCArNTI4NSwx
MiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01l
dGhvZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYp
OwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV29ybGRTcGVjaWZpY01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmlj
V29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAg
cmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2RDYWxsZXI+KHN0YXRlLCAid29ybGRT
cGVjaWZpY01ldGhvZCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVu
dGltZUZlYXR1cmVFbmFibGVkQ2FsbGVyPigqc3RhdGUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxk
V2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0aG9k
Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0aG9kQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
QEAgLTUzMTEsMTUgKzUzMDMsMTMgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LSNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbkNh
bGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5h
YmxlZEJ5U2V0dGluZ09wZXJhdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRo
b2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RP
Ymo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0
dGluZ09wZXJhdGlvbkNhbGxlcj4oc3RhdGUsICJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIik7
CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZENhbGxlcj4oKnN0YXRlLCAid29ybGRTcGVj
aWZpY01ldGhvZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNl
dHRpbmdPcGVyYXRpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTMzMiwxNiArNTMyMiwxNCBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotI2VuZGlmCi0KLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RDYWxsZXIoSlND
OjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2Qo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlv
bjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RDYWxsZXI+KHN0YXRlLCAidm9p
ZE1ldGhvZCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb25DYWxsZXI+KCpz
dGF0ZSwgImVuYWJsZWRCeVNldHRpbmdPcGVyYXRpb24iKTsKIH0KIAotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZENh
bGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RDYWxsZXIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpA
QCAtNTM1MCwxNCArNTMzOCwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVm9pZE1ldGhvZFdpdGhBcmdzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwg
SlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
b2lkTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRN
ZXRob2RXaXRoQXJnc0NhbGxlcj4oc3RhdGUsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiKTsKKyAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Wb2lkTWV0aG9kQ2FsbGVyPigqc3RhdGUsICJ2b2lkTWV0aG9kIik7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZv
aWRNZXRob2RXaXRoQXJnc0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZFdp
dGhBcmdzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKQEAgLTUzNzQsMTQgKzUzNjAsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rl
c3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
b2lkTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGlu
Z0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQnl0ZU1ldGhvZENhbGxlcj4oc3RhdGUsICJieXRlTWV0aG9kIik7CisgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9p
ZE1ldGhvZFdpdGhBcmdzQ2FsbGVyPigqc3RhdGUsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiKTsKIH0K
IAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQnl0ZU1ldGhvZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZENh
bGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CkBAIC01Mzg5LDE0ICs1MzczLDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQnl0ZT4o
aW1wbC5ieXRlTWV0aG9kKCkpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9k
V2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJnc0NhbGxlcj4oc3RhdGUsICJi
eXRlTWV0aG9kV2l0aEFyZ3MiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kQ2FsbGVyPigqc3RhdGUs
ICJieXRlTWV0aG9kIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJnc0NhbGxlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU0MTIsMTQgKzUz
OTQsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCeXRlPihpbXBsLmJ5dGVNZXRob2RXaXRoQXJn
cyhXVEZNb3ZlKGJ5dGVBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk9jdGV0TWV0aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJv
d1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PY3RldE1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJn
cyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9i
aj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZENh
bGxlcj4oc3RhdGUsICJvY3RldE1ldGhvZCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJn
c0NhbGxlcj4oKnN0YXRlLCAiYnl0ZU1ldGhvZFdpdGhBcmdzIik7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0
aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZENhbGxlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01
NDI3LDE0ICs1NDA3LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMT2N0ZXQ+KGltcGwub2N0ZXRN
ZXRob2QoKSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzQ2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdz
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICBy
ZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJnc0NhbGxlcj4oc3RhdGUsICJvY3RldE1l
dGhvZFdpdGhBcmdzIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RDYWxsZXI+KCpzdGF0ZSwgIm9j
dGV0TWV0aG9kIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3NDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3NDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTQ1MCwxNCArNTQy
OCwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE9jdGV0PihpbXBsLm9jdGV0TWV0aG9kV2l0aEFy
Z3MoV1RGTW92ZShvY3RldEFyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTG9uZ01ldGhvZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhy
b3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTG9uZ01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFy
Z3MoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RP
Ymo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZENh
bGxlcj4oc3RhdGUsICJsb25nTWV0aG9kIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJn
c0NhbGxlcj4oKnN0YXRlLCAib2N0ZXRNZXRob2RXaXRoQXJncyIpOwogfQogCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0
aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU0
NjUsMTQgKzU0NDEsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25nPihpbXBsLmxvbmdNZXRo
b2QoKSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3NDYWxsZXIoSlNDOjpFeGVjU3RhdGUq
LCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJncyhFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4g
QmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzQ2FsbGVyPihzdGF0ZSwgImxvbmdNZXRob2RXaXRo
QXJncyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RDYWxsZXI+KCpzdGF0ZSwgImxvbmdNZXRob2Qi
KTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Mb25nTWV0aG9kV2l0aEFyZ3NDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlND
OjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTQ4OCwxNCArNTQ2MiwxMiBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0b0pTPElETExvbmc+KGltcGwubG9uZ01ldGhvZFdpdGhBcmdzKFdURk1vdmUobG9u
Z0FyZyksIFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykpKTsKIH0KIAotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpN
ZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9u
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kQ2FsbGVyPihzdGF0ZSwgIm9iak1l
dGhvZCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJnc0NhbGxlcj4oKnN0YXRlLCAibG9u
Z01ldGhvZFdpdGhBcmdzIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZENhbGxlcihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT2JqTWV0aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU1MDMsMTQgKzU0NzUsMTIgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBpbXBsLm9iak1ldGhvZCgpKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhB
cmdzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7
Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PYmpNZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZChFeGVjU3RhdGUq
IHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVy
YXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJnc0NhbGxlcj4o
c3RhdGUsICJvYmpNZXRob2RXaXRoQXJncyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZENhbGxlcj4o
KnN0YXRlLCAib2JqTWV0aG9kIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJnc0NhbGxlcihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01NTI2LDE0
ICs1NDk2LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigqc3Rh
dGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5vYmpNZXRob2RXaXRoQXJncyhX
VEZNb3ZlKGxvbmdBcmcpLCBXVEZNb3ZlKHN0ckFyZyksICpvYmpBcmcpKSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uVW5m
b3JnZWFibGVNZXRob2RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRo
cm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpJbnN0
YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RX
aXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2Vh
YmxlTWV0aG9kQ2FsbGVyPihzdGF0ZSwgInVuZm9yZ2VhYmxlTWV0aG9kIik7CisgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T2JqTWV0aG9kV2l0aEFyZ3NDYWxsZXI+KCpzdGF0ZSwgIm9iak1ldGhvZFdpdGhBcmdzIik7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJbnN0YW5jZUZ1
bmN0aW9uVW5mb3JnZWFibGVNZXRob2RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uVW5mb3Jn
ZWFibGVNZXRob2RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTU0MSwxNCArNTUwOSwxMiBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTPElETExvbmc+KGltcGwudW5mb3JnZWFibGVNZXRob2QoKSkpOwogfQogCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpT
VGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFz
RW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlTWV0aG9kKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJh
dGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxB
c0VtcHR5U3RyaW5nQ2FsbGVyPihzdGF0ZSwgIm1ldGhvZFdpdGhBcmdUcmVhdGluZ051bGxBc0Vt
cHR5U3RyaW5nIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU1ldGhvZENhbGxlcj4oKnN0YXRlLCAi
dW5mb3JnZWFibGVNZXRob2QiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFz
RW1wdHlTdHJpbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBcmdUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU1NjEsMTQgKzU1MjcsMTIgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2
ZXJQYXJhbWV0ZXJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93
U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0
YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRp
b248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFy
YW1ldGVyQ2FsbGVyPihzdGF0ZSwgIm1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIi
KTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZ0NhbGxl
cj4oKnN0YXRlLCAibWV0aG9kV2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKIH0K
IAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlckNhbGxlcihKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlckNhbGxlcihKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBA
IC01NTgxLDE0ICs1NTQ1LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1z
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25OdWxsYWJsZVN0cmluZ01ldGhvZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaios
IEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdNZXRob2QoRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nTWV0aG9kQ2FsbGVyPihzdGF0ZSwg
Im51bGxhYmxlU3RyaW5nTWV0aG9kIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFhQYXRoTlNSZXNv
bHZlclBhcmFtZXRlckNhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBh
cmFtZXRlciIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZENhbGxlcihKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdNZXRob2RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTU5Niw2ICs1NTU4
LDExIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURMRE9NU3RyaW5nPj4oKnN0YXRl
LCBpbXBsLm51bGxhYmxlU3RyaW5nTWV0aG9kKCkpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nTWV0aG9k
KEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdNZXRob2RDYWxs
ZXI+KCpzdGF0ZSwgIm51bGxhYmxlU3RyaW5nTWV0aG9kIik7Cit9CisKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5n
U3RhdGljTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZt
KCk7CkBAIC01NjA0LDE0ICs1NTcxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpDbwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJ
RExET01TdHJpbmc+Pigqc3RhdGUsIFRlc3RPYmo6Om51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9k
KCkpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1Nw
ZWNpYWxNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVs
bGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kQ2FsbGVyPihzdGF0ZSwgIm51bGxhYmxlU3RyaW5nU3Bl
Y2lhbE1ldGhvZCIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2RDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZENhbGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CkBAIC01NjIzLDE0ICs1NTgzLDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMTnVsbGFibGU8SURM
RE9NU3RyaW5nPj4oKnN0YXRlLCBpbXBsLm51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZChXVEZN
b3ZlKGluZGV4KSkpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmdDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJn
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJh
dGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnQ2FsbGVyPihz
dGF0ZSwgIm1ldGhvZFdpdGhFbnVtQXJnIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVj
aWFsTWV0aG9kQ2FsbGVyPigqc3RhdGUsICJudWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2QiKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1BcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhFbnVtQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU2NDMsMTQgKzU2MDEsMTIgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZ0Nh
bGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEVudW1B
cmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RP
Ymo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFN0
YW5kYWxvbmVFbnVtQXJnQ2FsbGVyPihzdGF0ZSwgIm1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFy
ZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnQ2FsbGVyPigqc3RhdGUsICJtZXRob2RX
aXRoRW51bUFyZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU3RhbmRhbG9uZUVudW1BcmdDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZ0NhbGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CkBAIC01NjYzLDE0ICs1NjE5LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNU
ZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlv
bjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdDYWxs
ZXI+KHN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyIpOworICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhTdGFuZGFsb25lRW51bUFyZ0NhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aFN0YW5kYWxv
bmVFbnVtQXJnIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdDYWxsZXIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdDYWxsZXIoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAt
NTY4MSwxNCArNTYzNSwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZUNhbGxlcihKU0M6OkV4ZWNT
dGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
RW51bUFyZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEVudW1BcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxK
U1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZUNhbGxlcj4oc3RhdGUsICJtZXRob2RX
aXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlIik7CisgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsRW51bUFyZ0NhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFy
ZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVm
YXVsdFZhbHVlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU2OTksMTQgKzU2NTEsMTIgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3ND
YWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0g
ICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NDYWxs
ZXI+KHN0YXRlLCAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIpOworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWVDYWxsZXI+KCpzdGF0
ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUiKTsKIH0KIAotc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0NhbGxlcihKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01NzIw
LDE0ICs1NjcwLDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+Pigq
c3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5tZXRo
b2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzKFdURk1vdmUoc3RyQXJnKSwgKm9iakFyZykp
KTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSos
IEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZyhF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxs
T3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0Fy
Z0NhbGxlcj4oc3RhdGUsICJtZXRob2RXaXRoVVNWU3RyaW5nQXJnIik7CisgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0NhbGxlcj4oKnN0YXRlLCAibWV0aG9kVGhh
dFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5n
QXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKQEAgLTU3NDAsMTQgKzU2ODgsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZ0NhbGxlcihKU0M6OkV4ZWNT
dGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxl
VVNWU3RyaW5nQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZyhFeGVj
U3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNh
bGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVV
U1ZTdHJpbmdBcmdDYWxsZXI+KHN0YXRlLCAibWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJn
Iik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZ0NhbGxlcj4oKnN0YXRlLCAibWV0
aG9kV2l0aFVTVlN0cmluZ0FyZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJp
bmdBcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0
cmluZ0FyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CkBAIC01NzYwLDE0ICs1NzA2LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNF
bXB0eVN0cmluZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dT
Y29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmco
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVVU1ZTdHJpbmdBcmcoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3Bl
cmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1Ry
ZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdDYWxsZXI+KHN0YXRlLCAibWV0aG9kV2l0aFVTVlN0cmlu
Z0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTnVs
bGFibGVVU1ZTdHJpbmdBcmdDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0
cmluZ0FyZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNF
bXB0eVN0cmluZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmlu
Z0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTc4MCwxNCArNTcyNCwx
MiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5dGVT
dHJpbmdBcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2Nv
cGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdDYWxsZXI+KHN0
YXRlLCAibWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNW
U3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZ0NhbGxlcj4oKnN0YXRlLCAibWV0aG9k
V2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmciKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEJ5dGVTdHJpbmdBcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhCeXRlU3RyaW5nQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU4MDAsMTQgKzU3NDIsMTIgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdB
cmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsK
LQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQnl0ZVN0cmluZ0FyZyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5n
Q2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnQ2FsbGVyPihzdGF0ZSwgIm1ldGhvZFdp
dGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmlu
Z0FyZ0NhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmciKTsKIH0KIAotc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0FyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0FyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01ODIwLDE0ICs1
NzYwLDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Qnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdDYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5n
QXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhO
dWxsYWJsZUJ5dGVTdHJpbmdBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nQ2Fs
bGVyPihzdGF0ZSwgIm1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0
cmluZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmdDYWxsZXI+
KCpzdGF0ZSwgIm1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmciKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nQ2FsbGVyKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1w
dHlTdHJpbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwpAQCAtNTg0MCwxNCArNTc3OCwxMiBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlQ2FsbGVyKEpTQzo6RXhlY1N0YXRl
KiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJp
bmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RP
Ymo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZh
bHVlQ2FsbGVyPihzdGF0ZSwgInNlcmlhbGl6ZWRWYWx1ZSIpOworICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZ0NhbGxlcj4oKnN0YXRlLCAi
bWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblNlcmlhbGl6ZWRWYWx1ZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9i
aiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXpl
ZFZhbHVlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKQEAgLTU4NjAsMTQgKzU3OTYsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNvcmRDYWxsZXIoSlNDOjpFeGVjU3RhdGUq
LCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNvcmQoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1
cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFJlY29yZENhbGxlcj4oc3RhdGUsICJtZXRob2RXaXRoUmVj
b3JkIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlQ2FsbGVyPigqc3RhdGUsICJzZXJpYWxp
emVkVmFsdWUiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFJlY29yZENhbGxlcihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aFJlY29yZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01ODgwLDE0ICs1ODE0LDEyIEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9u
Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0K
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFJlY29yZChFeGVj
U3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNh
bGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9u
Q2FsbGVyPihzdGF0ZSwgIm1ldGhvZFdpdGhFeGNlcHRpb24iKTsKKyAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoUmVjb3JkQ2FsbGVyPigqc3RhdGUsICJtZXRob2RXaXRoUmVjb3JkIik7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhFeGNlcHRpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhF
eGNlcHRpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwpAQCAtNTg5NiwxNCArNTgyOCwxMiBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmdDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4
Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZ0NhbGxlcj4oc3RhdGUsICJtZXRob2RXaXRoRXhjZXB0
aW9uUmV0dXJuaW5nTG9uZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25DYWxsZXI+
KCpzdGF0ZSwgIm1ldGhvZFdpdGhFeGNlcHRpb24iKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2Vw
dGlvblJldHVybmluZ0xvbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhF
eGNlcHRpb25SZXR1cm5pbmdMb25nQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU5MTEsMTQgKzU4NDEsMTIgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUzxJRExMb25nPigqc3RhdGUsIHRocm93U2NvcGUsIGltcGwubWV0aG9kV2l0
aEV4Y2VwdGlvblJldHVybmluZ0xvbmcoKSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9u
UmV0dXJuaW5nT2JqZWN0Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpU
aHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0KEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmcoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9u
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09i
amVjdENhbGxlcj4oc3RhdGUsICJtZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0Iik7
CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmdDYWxsZXI+KCpzdGF0
ZSwgIm1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nIik7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhFeGNlcHRpb25SZXR1cm5pbmdPYmplY3RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmplY3RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTkyNiw0MiArNTg1
NCwzNiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETEludGVyZmFjZTxUZXN0T2JqPj4oKnN0YXRlLCAq
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwubWV0aG9kV2l0aEV4
Y2VwdGlvblJldHVybmluZ09iamVjdCgpKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZENhbGxlcihK
U0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0
aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdChF
eGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46
OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RDYWxs
ZXI+KHN0YXRlLCAiY3VzdG9tTWV0aG9kIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlv
blJldHVybmluZ09iamVjdENhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aEV4Y2VwdGlvblJldHVy
bmluZ09iamVjdCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RDYWxsZXIoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkN1c3RvbU1ldGhvZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShj
YXN0ZWRUaGlzLT5jdXN0b21NZXRob2QoKnN0YXRlKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdp
dGhBcmdzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3Bl
Jik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25DdXN0b21NZXRob2RXaXRoQXJncyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZChF
eGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46
OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RXaXRo
QXJnc0NhbGxlcj4oc3RhdGUsICJjdXN0b21NZXRob2RXaXRoQXJncyIpOworICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1
c3RvbU1ldGhvZENhbGxlcj4oKnN0YXRlLCAiY3VzdG9tTWV0aG9kIik7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3Rv
bU1ldGhvZFdpdGhBcmdzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DdXN0b21NZXRob2RX
aXRoQXJnc0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5j
dXN0b21NZXRob2RXaXRoQXJncygqc3RhdGUpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZENhbGxl
cihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0
ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJh
dGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2RDYWxsZXIsIENhc3Rl
ZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KHN0YXRlLCAicHJpdmF0ZU1ldGhvZCIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzQ2FsbGVyPigqc3RhdGUsICJjdXN0b21NZXRob2RX
aXRoQXJncyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Qcml2YXRlTWV0aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU5NzMsMTQgKzU4OTUsMTIgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExET01TdHJpbmc+KCpzdGF0ZSwgaW1wbC5wcml2YXRlTWV0aG9kKFdURk1v
dmUoYXJndW1lbnQpKSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJsaWNBbmRQcml2YXRlTWV0aG9kQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJsaWNBbmRQ
cml2YXRlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUHJpdmF0ZU1ldGhvZChFeGVjU3RhdGUqIHN0
YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRp
b248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJsaWNBbmRQcml2YXRlTWV0aG9kQ2FsbGVy
PihzdGF0ZSwgInB1YmxpY0FuZFByaXZhdGVNZXRob2QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0
aG9kQ2FsbGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigqc3RhdGUsICJwcml2
YXRlTWV0aG9kIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZhdGVNZXRob2RDYWxsZXIoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZhdGVNZXRob2RDYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTk5Miwx
NCArNTkxMiwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRlLCBpbXBs
LnB1YmxpY0FuZFByaXZhdGVNZXRob2QoV1RGTW92ZShhcmd1bWVudCkpKSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFk
ZEV2ZW50TGlzdGVuZXJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRo
cm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJsaWNBbmRQ
cml2YXRlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFk
ZEV2ZW50TGlzdGVuZXJDYWxsZXI+KHN0YXRlLCAiYWRkRXZlbnRMaXN0ZW5lciIpOworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblB1YmxpY0FuZFByaXZhdGVNZXRob2RDYWxsZXI+KCpzdGF0ZSwgInB1YmxpY0FuZFByaXZh
dGVNZXRob2QiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lckNhbGxlcihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lckNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02MDE2LDE0ICs1OTM0LDEyIEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVy
Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0K
LUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25S
ZW1vdmVFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5lcihFeGVj
U3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNh
bGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExpc3RlbmVy
Q2FsbGVyPihzdGF0ZSwgInJlbW92ZUV2ZW50TGlzdGVuZXIiKTsKKyAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVu
dExpc3RlbmVyQ2FsbGVyPigqc3RhdGUsICJhZGRFdmVudExpc3RlbmVyIik7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJl
bW92ZUV2ZW50TGlzdGVuZXJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50
TGlzdGVuZXJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwpAQCAtNjA0MCwxNCArNTk1NiwxMiBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZENhbGxlcihKU0M6OkV4ZWNT
dGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9p
ZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZENhbGxlcj4oc3RhdGUs
ICJ3aXRoU2NyaXB0U3RhdGVWb2lkIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3ZlRXZlbnRMaXN0ZW5lckNh
bGxlcj4oKnN0YXRlLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIpOwogfQogCi1zdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0
U3RhdGVWb2lkQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lk
Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKQEAgLTYwNTYsMTQgKzU5NzAsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iakNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpT
VGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqKEV4ZWNTdGF0
ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJl
dHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpDYWxsZXI+KHN0YXRlLCAid2l0aFNjcmlw
dFN0YXRlT2JqIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZENhbGxlcj4oKnN0YXRl
LCAid2l0aFNjcmlwdFN0YXRlVm9pZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iakNhbGxlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02
MDcxLDE0ICs1OTgzLDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPFRlc3RPYmo+
Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC53aXRoU2NyaXB0U3Rh
dGVPYmooKnN0YXRlKSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
U2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRl
T2JqKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0
T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRT
dGF0ZVZvaWRFeGNlcHRpb25DYWxsZXI+KHN0YXRlLCAid2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2Vw
dGlvbiIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iakNhbGxlcj4oKnN0YXRlLCAid2l0
aFNjcmlwdFN0YXRlT2JqIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb25D
YWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb25D
YWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwpAQCAtNjA4NywxNCArNTk5NywxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpF
eGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6
Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9i
akV4Y2VwdGlvbkNhbGxlcj4oc3RhdGUsICJ3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iKTsK
KyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uQ2FsbGVyPigqc3RhdGUsICJ3
aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9i
akV4Y2VwdGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2Jq
RXhjZXB0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKQEAgLTYxMDIsMTQgKzYwMTAsMTIgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCB0aHJvd1Njb3BlLCBpbXBsLndpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbigqc3RhdGUp
KSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0Q2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNh
bGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dENhbGxlcj4oc3RhdGUsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbkNhbGxlcj4oKnN0YXRlLCAid2l0aFNj
cmlwdFN0YXRlT2JqRXhjZXB0aW9uIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CkBAIC02MTIxLDE0ICs2MDI3LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4g
QmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUNhbGxlcj4o
c3RhdGUsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlIik7CisgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRDYWxsZXI+KCpzdGF0ZSwgIndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjE0MCwxNCArNjA0NCwxMiBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSos
IEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICBy
ZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9i
akV4Y2VwdGlvbkNhbGxlcj4oc3RhdGUsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlT2JqRXhjZXB0aW9uIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUNhbGxlcj4oKnN0YXRlLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZSIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
IHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKQEAgLTYxNTgsMTQgKzYwNjAsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8
VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3Bl
LCBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRp
b24oKnN0YXRlLCAqY29udGV4dCkpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RP
YmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewotICAg
IHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
V2l0aFNwYWNlc0NhbGxlcj4oc3RhdGUsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlcyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb25DYWxsZXI+KCpzdGF0ZSwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNDYWxsZXIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVXaXRoU3BhY2VzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTYxNzYsMTQgKzYwNzYsMTIgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExJbnRlcmZhY2U8VGVzdE9iaj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9i
amVjdCgpLCBpbXBsLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRo
U3BhY2VzKCpzdGF0ZSwgKmNvbnRleHQpKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRBcmd1bWVudHNB
bmRDYWxsU3RhY2tDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93
U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2soRXhlY1N0YXRlKiBzdGF0
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyhFeGVj
U3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNh
bGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0QXJndW1lbnRz
QW5kQ2FsbFN0YWNrQ2FsbGVyPihzdGF0ZSwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2siKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
V2l0aFNwYWNlc0NhbGxlcj4oKnN0YXRlLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZVdpdGhTcGFjZXMiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENh
bGxTdGFja0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0Fu
ZENhbGxTdGFja0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CkBAIC02MTkzLDE0ICs2MDkxLDEyIEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVudENhbGxlcihKU0M6OkV4
ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aERvY3VtZW50QXJn
dW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6
Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVudEFyZ3Vt
ZW50Q2FsbGVyPihzdGF0ZSwgIndpdGhEb2N1bWVudEFyZ3VtZW50Iik7CisgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0NhbGxlcj4oKnN0YXRlLCAid2l0aFNjcmlwdEFy
Z3VtZW50c0FuZENhbGxTdGFjayIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVudENhbGxl
cihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aERvY3VtZW50QXJndW1lbnRDYWxsZXIoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAt
NjIxNCwxNCArNjExMCwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aENhbGxlckRvY3VtZW50QXJndW1lbnRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RP
YmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50KEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aERvY3VtZW50QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAg
ICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50QXJndW1lbnRDYWxsZXI+KHN0YXRl
LCAid2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRB
cmd1bWVudENhbGxlcj4oKnN0YXRlLCAid2l0aERvY3VtZW50QXJndW1lbnQiKTsKIH0KIAotc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aENhbGxlckRvY3VtZW50QXJndW1lbnRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTYyMzMsMTQgKzYxMjcsMTIgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1
bWVudENhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYp
OwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uV2l0aENhbGxlcldpbmRvd0FyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRv
Y3VtZW50QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aENhbGxlcldpbmRvd0FyZ3VtZW50Q2FsbGVyPihzdGF0ZSwgIndpdGhDYWxsZXJXaW5kb3dB
cmd1bWVudCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJEb2N1bWVudEFyZ3VtZW50Q2FsbGVyPigq
c3RhdGUsICJ3aXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVudCIpOwogfQogCi1zdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVy
V2luZG93QXJndW1lbnRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJXaW5k
b3dBcmd1bWVudENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CkBAIC02MjQ5LDE0ICs2MTQxLDEyIEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdDYWxsZXIoSlNDOjpF
eGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1bWVudChFeGVjU3Rh
dGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxP
cGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdD
YWxsZXI+KHN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnIik7CisgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENh
bGxlcldpbmRvd0FyZ3VtZW50Q2FsbGVyPigqc3RhdGUsICJ3aXRoQ2FsbGVyV2luZG93QXJndW1l
bnQiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjI2NywxNCArNjE1Nywx
MiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsQXJnQW5kRGVmYXVsdFZhbHVlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwg
SlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWUo
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZh
bHVlQ2FsbGVyPihzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZSIp
OworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0NhbGxlcj4oKnN0YXRlLCAibWV0aG9k
V2l0aE9wdGlvbmFsQXJnIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1
bHRWYWx1ZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJn
QW5kRGVmYXVsdFZhbHVlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTYyODUsMTQgKzYxNzMsMTIgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9w
dGlvbmFsQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Nj
b3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0
YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRp
b248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRP
cHRpb25hbEFyZ0NhbGxlcj4oc3RhdGUsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRp
b25hbEFyZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1
ZUNhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlIik7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFy
Z0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CkBAIC02MzA3LDE0ICs2MTkzLDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3ND
YWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09w
dGlvbmFsQXJnc0NhbGxlcj4oc3RhdGUsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29P
cHRpb25hbEFyZ3MiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRp
b25hbEFyZ0NhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9u
YWxBcmciKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxB
cmdzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdB
bmRUd29PcHRpb25hbEFyZ3NDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjMzMSwxNCArNjIxNSwxMiBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9u
YWxBcmdBbmRUd29PcHRpb25hbEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4g
QmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQ2FsbGVyPihzdGF0ZSwgIm1ldGhvZFdp
dGhPcHRpb25hbFN0cmluZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0Fu
ZFR3b09wdGlvbmFsQXJnc0NhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJn
QW5kVHdvT3B0aW9uYWxBcmdzIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0Nh
bGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
IHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKQEAgLTYzNDksMTQgKzYyMzEsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSos
IEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3Ry
aW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJh
dGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmlu
Z0NhbGxlcj4oc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmciKTsKKyAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0NhbGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CkBAIC02MzY3LDE0ICs2MjQ3LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUq
LCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21p
Y1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyhFeGVj
U3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNh
bGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxB
dG9taWNTdHJpbmdDYWxsZXI+KHN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5n
Iik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nQ2FsbGVyPigqc3RhdGUs
ICJtZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmciKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsQXRvbWljU3RyaW5nQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxBdG9taWNTdHJpbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjM4NSwxNCArNjI2MywxMiBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5k
RGVmYXVsdFZhbHVlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJv
d1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmcoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9u
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVm
YXVsdFZhbHVlQ2FsbGVyPihzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1
bHRWYWx1ZSIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0NhbGxl
cj4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nIik7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZUNhbGxlcihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
QEAgLTY0MDMsMTQgKzYyNzksMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZUNhbGxlcihK
U0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQXRvbWljU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERl
ZmF1bHRWYWx1ZUNhbGxlcj4oc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdB
bmREZWZhdWx0VmFsdWUiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmRE
ZWZhdWx0VmFsdWVDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERl
ZmF1bHRWYWx1ZSIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmRE
ZWZhdWx0VmFsdWVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02NDIxLDE0ICs2Mjk1LDEy
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdJc051bGxDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRo
cm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbChFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3Rh
dGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxP
cGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJp
bmdJc051bGxDYWxsZXI+KHN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsIik7
CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nQW5kRGVmYXVsdFZhbHVl
Q2FsbGVyPigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmREZWZhdWx0
VmFsdWUiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQog
ewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwpAQCAtNjQzOSwxNCArNjMxMSwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWRDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFN0cmluZ0lzVW5kZWZpbmVkKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3Ry
aW5nSXNOdWxsKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkQ2FsbGVyPihzdGF0ZSwgIm1ldGhvZFdpdGhP
cHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
U3RyaW5nSXNOdWxsQ2FsbGVyPigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051
bGwiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWRDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVk
Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKQEAgLTY0NTcsMTQgKzYzMjcsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbENhbGxlcihK
U0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNOdWxsKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nSXNVbmRlZmluZWQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4g
QmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNOdWxsQ2FsbGVyPihzdGF0
ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbCIpOworICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkQ2FsbGVyPigqc3RhdGUsICJtZXRob2RX
aXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxBdG9taWNTdHJpbmdJc051bGxDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02NDc1LDE0ICs2MzQzLDEy
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdJc0VtcHR5U3RyaW5nQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwg
SlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5n
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNOdWxsKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6
Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFN0cmluZ0lzRW1wdHlTdHJpbmdDYWxsZXI+KHN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsU3Ry
aW5nSXNFbXB0eVN0cmluZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0
cmluZ0lzTnVsbENhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5n
SXNOdWxsIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmdD
YWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1w
dHlTdHJpbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwpAQCAtNjQ5MywxNCArNjM1OSwxMiBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0
cmluZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYp
OwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyhFeGVjU3RhdGUqIHN0
YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9u
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNF
bXB0eVN0cmluZ0NhbGxlcj4oc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0Vt
cHR5U3RyaW5nIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0
cmluZ0NhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmlu
ZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0Vt
cHR5U3RyaW5nQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKQEAgLTY1MTEsMTQgKzYzNzUsMTIgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzRW1w
dHlTdHJpbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2Nv
cGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmcoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2Fs
bE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0
b21pY1N0cmluZ0lzRW1wdHlTdHJpbmdDYWxsZXI+KHN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFs
QXRvbWljU3RyaW5nSXNFbXB0eVN0cmluZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFVTVlN0cmluZ0lzRW1wdHlTdHJpbmdDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25h
bFVTVlN0cmluZ0lzRW1wdHlTdHJpbmciKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRv
bWljU3RyaW5nSXNFbXB0eVN0cmluZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVz
dE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNFbXB0eVN0cmluZ0NhbGxlcihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02NTI5LDE0
ICs2MzkxLDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxEb3VibGVJc05hTkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaios
IEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNOYU4oRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6
Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bERvdWJsZUlzTmFOQ2FsbGVyPihzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFO
Iik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNFbXB0eVN0cmlu
Z0NhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNFbXB0eVN0
cmluZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTkNhbGxlcihKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNOYU5DYWxsZXIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpA
QCAtNjU0NywxNCArNjQwNywxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpT
VGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05h
TihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9w
ZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEZsb2F0
SXNOYU5DYWxsZXI+KHN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTiIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOQ2FsbGVyPigqc3RhdGUsICJtZXRo
b2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTiIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxG
bG9hdElzTmFOQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxG
bG9hdElzTmFOQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKQEAgLTY1NjUsMTQgKzY0MjMsMTIgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxMb25nTG9uZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEZsb2F0
SXNOYU4oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rl
c3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsTG9uZ0xvbmdDYWxsZXI+KHN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xv
bmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOQ2FsbGVyPigqc3Rh
dGUsICJtZXRob2RXaXRoT3B0aW9uYWxGbG9hdElzTmFOIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbExvbmdMb25nQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxMb25nTG9uZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02NTgzLDE0ICs2NDM5LDEyIEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVy
b0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwot
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxMb25nTG9uZyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVyb0NhbGxlcj4oc3RhdGUsICJtZXRo
b2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVybyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbExvbmdMb25nQ2FsbGVyPigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZyIp
OwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVyb0NhbGxlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm9DYWxsZXIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpA
QCAtNjYwMSwxNCArNjQ1NSwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0NhbGxlcihKU0M6OkV4ZWNTdGF0
ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5z
aWduZWRMb25nTG9uZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25n
SXNaZXJvKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNU
ZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdDYWxsZXI+KHN0YXRlLCAibWV0aG9kV2l0aE9wdGlv
bmFsVW5zaWduZWRMb25nTG9uZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdM
b25nSXNaZXJvQ2FsbGVyPigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVy
byIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKQEAgLTY2MTksMTQgKzY0NzEsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm9DYWxsZXIo
SlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm8oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm9DYWxs
ZXI+KHN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyIpOwor
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdDYWxsZXI+KCpzdGF0
ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmciKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVyb0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVyb0NhbGxlcihKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBA
IC02NjM3LDE0ICs2NDg3LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1z
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVz
dE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2UoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6
Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bFNlcXVlbmNlQ2FsbGVyPihzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlIik7Cisg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVyb0NhbGxlcj4o
KnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyIpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjY1NSwxNCArNjUwMywx
MiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU2VxdWVuY2VJc0VtcHR5Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlND
OjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHkoRXhlY1N0
YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZShFeGVjU3RhdGUqIHN0YXRlKQog
ewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHlD
YWxsZXI+KHN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5Iik7CisgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdp
dGhPcHRpb25hbFNlcXVlbmNlIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNl
SXNFbXB0eUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2Vx
dWVuY2VJc0VtcHR5Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTY2NzMsMTQgKzY1MTksMTIgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5DYWxsZXIo
SlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbEJvb2xlYW4oRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1
ZW5jZUlzRW1wdHkoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQm9vbGVhbkNhbGxlcj4oc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxC
b29sZWFuIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5Q2Fs
bGVyPigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHkiKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02NjkxLDE0ICs2NTM1LDEyIEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxC
b29sZWFuSXNGYWxzZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhy
b3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2UoRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAg
cmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlQ2FsbGVyPihz
dGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlIik7CisgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsQm9vbGVhbkNhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFs
Qm9vbGVhbiIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZUNhbGxl
cihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2VD
YWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwpAQCAtNjcwOSwxNCArNjU1MSwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwg
SlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnkoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29sZWFuSXNGYWxzZShFeGVjU3RhdGUq
IHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVy
YXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnlDYWxs
ZXI+KHN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQW55Iik7CisgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQm9vbGVhbklzRmFsc2VDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25h
bEJvb2xlYW5Jc0ZhbHNlIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFueUNhbGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55Q2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTY3
MjcsMTQgKzY1NjcsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbE9iamVjdENhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaios
IEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQW55KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdENhbGxlcj4oc3RhdGUsICJtZXRo
b2RXaXRoT3B0aW9uYWxPYmplY3QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnlD
YWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEFueSIpOwogfQogCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxPYmplY3RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbE9iamVjdENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02NzQ1LDE0ICs2NTgzLDEyIEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBw
ZXJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsK
LQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcihFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbE9iamVjdChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJDYWxsZXI+KHN0YXRlLCAibWV0
aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsT2JqZWN0Q2FsbGVyPigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxPYmplY3QiKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRo
cm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJDYWxsZXIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpA
QCAtNjc2MywxNCArNjU5OSwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxOdWxsYWJsZVdyYXBwZXJJc051bGwoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxOdWxsYWJsZVdyYXBwZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGlu
Z0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsQ2FsbGVyPihzdGF0ZSwg
Im1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbCIpOworICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlckNhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0
aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51
bGxhYmxlV3JhcHBlcklzTnVsbENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9i
aiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTY3ODEsMTQgKzY2MTUs
MTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFhQYXRoTlNSZXNvbHZlckNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpT
Qzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2Fs
bE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQ
YXRoTlNSZXNvbHZlckNhbGxlcj4oc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVz
b2x2ZXIiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051
bGxDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVs
bCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXJDYWxsZXIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlckNhbGxl
cihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CkBAIC02Nzk5LDE0ICs2NjMxLDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZWNvcmRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBK
U1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFJlY29yZChF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlcihFeGVjU3Rh
dGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxP
cGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZWNv
cmRDYWxsZXI+KHN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkIik7CisgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyQ2FsbGVyPigqc3RhdGUsICJtZXRob2RX
aXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
UmVjb3JkQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZWNv
cmRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwpAQCAtNjgxNywxNCArNjY0NywxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRl
KiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmco
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZWNvcmQoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9u
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQXJnQ2FsbGVyPihz
dGF0ZSwgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFJlY29yZENhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkIik7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTY4MzcsMTQgKzY2NjUsMTIgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0Fy
Z0FuZENhbGxiYWNrQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpU
aHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyhFeGVjU3RhdGUqIHN0YXRlKQogewot
ICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Fy
Z0NhbGxlcj4oc3RhdGUsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIp
OworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZ0NhbGxlcj4oKnN0YXRlLCAibWV0aG9k
V2l0aENhbGxiYWNrQXJnIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENh
bGxiYWNrQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJh
Y2tBcmdBbmRDYWxsYmFja0FyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02ODU5LDE0ICs2Njg1LDEyIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRp
b25hbEFyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29w
ZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyhFeGVjU3RhdGUqIHN0YXRlKQog
ewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZ0Nh
bGxlcj4oc3RhdGUsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnQ2FsbGVyPigqc3RhdGUs
ICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOwogfQogCi1zdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjg3NywxNCArNjcw
MSwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENh
bGxiYWNrRnVuY3Rpb25BcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6
OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmdDYWxs
ZXI+KHN0YXRlLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsKKyAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZ0NhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0
aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVu
Y3Rpb25BcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1
bmN0aW9uQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKQEAgLTY4OTcsMTQgKzY3MTksMTIgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNr
RnVuY3Rpb25BcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93
U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25Bcmco
RXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZyhFeGVjU3RhdGUq
IHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVy
YXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdB
bmRDYWxsYmFja0Z1bmN0aW9uQXJnQ2FsbGVyPihzdGF0ZSwgIm1ldGhvZFdpdGhOb25DYWxsYmFj
a0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJh
Y2tGdW5jdGlvbkFyZ0NhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25B
cmciKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlv
bkFyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJn
QW5kQ2FsbGJhY2tGdW5jdGlvbkFyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02OTE5LDE0ICs2NzM5LDEyIEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5j
dGlvbkFuZE9wdGlvbmFsQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlND
OjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJn
KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5j
dGlvbkFyZyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnQ2FsbGVyPihzdGF0ZSwgIm1ldGhvZFdp
dGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
Tm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnQ2FsbGVyPigqc3RhdGUsICJtZXRo
b2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIik7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmdDYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmdDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQog
ewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwpAQCAtNjkzNyw2ICs2NzU1LDExIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZyhFeGVjU3RhdGUqIHN0YXRl
KQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmdD
YWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmci
KTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3Rv
ckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKQEAgLTY5NjIsMTQgKzY3ODUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvCiB9CiAKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMSkKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMUNhbGxlcihKU0M6OkV4ZWNT
dGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2Qx
KEV4ZWNTdGF0ZSogc3RhdGUpCi17Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2Jq
Pjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0
aG9kMUNhbGxlcj4oc3RhdGUsICJjb25kaXRpb25hbE1ldGhvZDEiKTsKLX0KLQotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0
aW9uYWxNZXRob2QxQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhv
ZDFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwpAQCAtNjk3NywxNyArNjc5MywxNSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERP
TVN0cmluZz4oKnN0YXRlLCBpbXBsLmNvbmRpdGlvbmFsTWV0aG9kMSgpKSk7CiB9CiAKLSNlbmRp
ZgotCi0jaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25kaXRpb24yKQotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxNZXRob2QyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpU
aHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRp
b25hbE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxNZXRob2QyQ2FsbGVyPihzdGF0ZSwgImNvbmRpdGlvbmFsTWV0aG9kMiIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMUNhbGxlcj4oKnN0YXRlLCAiY29uZGl0aW9uYWxNZXRo
b2QxIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQorI2VuZGlmCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5BQkxFKENvbmRpdGlvbjIp
CitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Db25kaXRpb25hbE1ldGhvZDJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjk5NiwxNyArNjgxMCwxNSBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotI2VuZGlmCi0KLSNpZiBFTkFCTEUoQ29u
ZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDNDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRp
dGlvbmFsTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMihFeGVjU3Rh
dGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxP
cGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDNDYWxs
ZXI+KHN0YXRlLCAiY29uZGl0aW9uYWxNZXRob2QzIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxN
ZXRob2QyQ2FsbGVyPigqc3RhdGUsICJjb25kaXRpb25hbE1ldGhvZDIiKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29u
ZGl0aW9uYWxNZXRob2QzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCisjZW5kaWYKKworI2lmIEVO
QUJMRShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKK3N0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0
aG9kM0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRo
cm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CkBAIC03MDE1LDE2ICs2ODI3LDE0IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi0jZW5kaWYKLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDFDYWxsZXIoSlNDOjpF
eGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QxKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxQ2FsbGVyPihzdGF0ZSwg
Im92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDNDYWxsZXI+
KCpzdGF0ZSwgImNvbmRpdGlvbmFsTWV0aG9kMyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
MUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlND
OjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Qx
Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKQEAgLTcwMzcsMTQgKzY4NDcsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNU
ZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMihFeGVjU3RhdGUq
IHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJu
IEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyQ2FsbGVyPihzdGF0ZSwgIm92ZXJsb2FkZWRNZXRo
b2QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMUNhbGxlcj4oKnN0YXRlLCAib3Zlcmxv
YWRlZE1ldGhvZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMkNhbGxlcihKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzA1NywxNCArNjg2NSwx
MiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDNDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsK
LQotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2QzKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+Ojpj
YWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDND
YWxsZXI+KHN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZCIpOworICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2QyQ2FsbGVyPigqc3RhdGUsICJvdmVybG9hZGVkTWV0aG9kIik7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2QzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
M0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CkBAIC03MDc1LDE0ICs2ODgxLDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNENhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpT
VGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDQoRXhlY1N0YXRl
KiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNENhbGxlcj4oc3RhdGUsICJvdmVybG9hZGVkTWV0
aG9kIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDNDYWxsZXI+KCpzdGF0ZSwgIm92ZXJs
b2FkZWRNZXRob2QiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDRDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q0Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTcwOTMsMTQgKzY4OTcs
MTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2Q1Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7
Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kNShFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q0KEV4
ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6
Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1
Q2FsbGVyPihzdGF0ZSwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kNENhbGxlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwogfQogCi1zdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kNUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwpAQCAtNzExMSwxNCArNjkxMywxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDZDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBK
U1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2KEV4ZWNTdGF0
ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1
cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDZDYWxsZXI+KHN0YXRlLCAib3ZlcmxvYWRlZE1l
dGhvZCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1Q2FsbGVyPigqc3RhdGUsICJvdmVy
bG9hZGVkTWV0aG9kIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q2Q2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRo
cm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0
ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC03MTI5LDE0ICs2OTI5
LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kN0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYp
OwotCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDcoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNihF
eGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46
OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
N0NhbGxlcj4oc3RhdGUsICJvdmVybG9hZGVkTWV0aG9kIik7CisgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZDZDYWxsZXI+KCpzdGF0ZSwgIm92ZXJsb2FkZWRNZXRob2QiKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZDdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNh
c3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2Q3Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKQEAgLTcxNDcsMTQgKzY5NDUsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q4Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwg
SlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOChFeGVjU3Rh
dGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q4Q2FsbGVyPihzdGF0ZSwgIm92ZXJsb2FkZWRN
ZXRob2QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kN0NhbGxlcj4oKnN0YXRlLCAib3Zl
cmxvYWRlZE1ldGhvZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOENhbGxlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDhDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzE2NSwxNCArNjk2
MSwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDlDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUm
KTsKLQotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2Q5KEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDgo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+
OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZDlDYWxsZXI+KHN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZCIpOworICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2Q4Q2FsbGVyPigqc3RhdGUsICJvdmVybG9hZGVkTWV0aG9kIik7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2Q5Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kOUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRo
cm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CkBAIC03MTgzLDE0ICs2OTc3LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTBDYWxsZXIoSlNDOjpFeGVjU3RhdGUq
LCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotc3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMChFeGVj
U3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q5KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAg
cmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMENhbGxlcj4oc3RhdGUsICJvdmVybG9h
ZGVkTWV0aG9kIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDlDYWxsZXI+KCpzdGF0ZSwg
Im92ZXJsb2FkZWRNZXRob2QiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEwQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTBDYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzIwMSwx
NCArNjk5MywxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDExQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJv
d1Njb3BlJik7Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTEoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kMTAoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxK
U1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDExQ2FsbGVyPihzdGF0ZSwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kMTBDYWxsZXI+KCpzdGF0ZSwgIm92ZXJsb2FkZWRNZXRob2QiKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kMTFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzIxOSwxNCArNzAwOSwxMiBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLXN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kMTIoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTEoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0
aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyQ2FsbGVyPihz
dGF0ZSwgIm92ZXJsb2FkZWRNZXRob2QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTFD
YWxsZXI+KCpzdGF0ZSwgIm92ZXJsb2FkZWRNZXRob2QiKTsKIH0KIAotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZDEyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTJDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwpAQCAtNzIzNywxNCArNzAyNSwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0
T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTMoRXhlY1N0YXRlKiBz
dGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kMTIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4g
QmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEzQ2FsbGVyPihzdGF0ZSwgIm92ZXJsb2FkZWRNZXRo
b2QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTJDYWxsZXI+KCpzdGF0ZSwgIm92ZXJs
b2FkZWRNZXRob2QiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEzQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRo
cm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTNDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzI1NSw2ICs3MDQx
LDExIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitzdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEz
KEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEzQ2FsbGVy
Pigqc3RhdGUsICJvdmVybG9hZGVkTWV0aG9kIik7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7CiAgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CkBAIC03MzAxLDE0ICs3
MDkyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBK
U1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9u
YWxQYXJhbWV0ZXIxKEV4ZWNTdGF0ZSogc3RhdGUpCi17Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIxQ2FsbGVyPihzdGF0ZSwgIm92ZXJs
b2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiKTsKLX0KLQotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIxQ2FsbGVyKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTczMjEsMTQg
KzcxMDUsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNU
ZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFs
UGFyYW1ldGVyMihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQ
YXJhbWV0ZXIxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIyQ2FsbGVyPihzdGF0ZSwgIm92ZXJsb2Fk
ZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyMUNhbGxlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhv
ZFdpdGhPcHRpb25hbFBhcmFtZXRlciIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9w
dGlvbmFsUGFyYW1ldGVyMkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzM0MSw2ICs3MTIzLDExIEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitzdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRp
b25hbFBhcmFtZXRlcjIoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyMkNhbGxlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1l
dGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlciIpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRp
b25hbFBhcmFtZXRlcihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOwpAQCAtNzM2NiwxNCArNzE1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHIKICAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0
ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRo
cm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24xQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0
T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNo
aW5nVW5pb24xKEV4ZWNTdGF0ZSogc3RhdGUpCi17Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbjFDYWxsZXI+KHN0YXRlLCAib3Zlcmxv
YWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbjFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbjFDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzM4
NCwxNCArNzE2NCwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uMkNhbGxlcihKU0M6OkV4ZWNTdGF0
ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1zdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhE
aXN0aW5ndWlzaGluZ1VuaW9uMihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRo
RGlzdGluZ3Vpc2hpbmdVbmlvbjEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uMkNhbGxlcj4oc3Rh
dGUsICJvdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24iKTsKKyAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24xQ2FsbGVyPigqc3RhdGUs
ICJvdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24iKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uMkNhbGxlcihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uMkNhbGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CkBAIC03NDAyLDYgKzcxODAsMTEgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
K3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24yKEV4ZWNTdGF0ZSogc3RhdGUp
Cit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uMkNh
bGxlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uIik7
Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24oRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKQEAgLTc0MjEsMTQgKzcyMDQsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgcmV0dXJuIGFy
Z3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJv
d1Njb3BlKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlv
bnMxQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7
Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9uczEoRXhlY1N0YXRlKiBz
dGF0ZSkKLXsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0
aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGlu
Z3Vpc2hpbmdVbmlvbnMxQ2FsbGVyPihzdGF0ZSwgIm92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rp
bmd1aXNoaW5nVW5pb25zIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1
aXNoaW5nVW5pb25zMUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMxQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTc0MzksMTQgKzcyMTUsMTIg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RX
aXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zMkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9i
aiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hp
bmdVbmlvbnMyKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vp
c2hpbmdVbmlvbnMxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zMkNhbGxlcj4oc3RhdGUsICJv
dmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyIpOworICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zMUNhbGxlcj4oKnN0YXRlLCAi
b3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMiKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMyQ2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9uczJDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwpAQCAtNzQ1Nyw2ICs3MjMxLDExIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMyKEV4ZWNTdGF0ZSog
c3RhdGUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdV
bmlvbnMyQ2FsbGVyPigqc3RhdGUsICJvdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGlu
Z1VuaW9ucyIpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKQEAgLTc0Nzgs
MTQgKzcyNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByCiAg
ICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0
aW5ndWlzaGluZ1VuaW9uMUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6
VGhyb3dTY29wZSYpOwotCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9u
MShFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9i
aj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24xQ2FsbGVyPihzdGF0ZSwgIm92ZXJsb2FkZWRN
ZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbiIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24xQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24xQ2FsbGVyKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAg
LTc0OTgsMTQgKzcyNzAsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbjJDYWxsZXIoSlNDOjpF
eGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbjIoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24xKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0g
ICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdV
bmlvbjJDYWxsZXI+KHN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGlu
Z1VuaW9uIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGlu
Z1VuaW9uMUNhbGxlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlz
aGluZ1VuaW9uIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hp
bmdVbmlvbjJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRo
Tm9uRGlzdGluZ3Vpc2hpbmdVbmlvbjJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzUxOCw2ICs3Mjg4LDExIEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0
aW5ndWlzaGluZ1VuaW9uMihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbjJDYWxsZXI+KCpzdGF0ZSwgIm92ZXJs
b2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbiIpOworfQorCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAgICAg
Vk0mIHZtID0gc3RhdGUtPnZtKCk7CkBAIC03NTM0LDE0ICs3MzA5LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcgogICAgIHJldHVybiBhcmdzQ291bnQgPCAyID8g
dGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24xQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNU
ZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uMShF
eGVjU3RhdGUqIHN0YXRlKQotewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46
OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxs
YWJsZVVuaW9uMUNhbGxlcj4oc3RhdGUsICJvdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uIik7Ci19
Ci0KLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24xQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uMUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0
ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC03NTUyLDE0ICs3MzIw
LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhO
dWxsYWJsZVVuaW9uMkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhy
b3dTY29wZSYpOwotCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbjIoRXhlY1N0YXRlKiBzdGF0ZSkK
K3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uMShFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uMkNhbGxlcj4oc3RhdGUsICJvdmVy
bG9hZFdpdGhOdWxsYWJsZVVuaW9uIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVV
bmlvbjFDYWxsZXI+KCpzdGF0ZSwgIm92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24iKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbjJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24yQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTc1NzAsNiArNzMzNiwxMSBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorc3RhdGljIGlubGluZSBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5p
b24yKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVV
bmlvbjJDYWxsZXI+KCpzdGF0ZSwgIm92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24iKTsKK30KKwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKICAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKQEAgLTc1OTEsMTQgKzczNjIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZN
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRXaXRoT3B0aW9uYWxVbmlvbjFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoq
LCBKU0M6OlRocm93U2NvcGUmKTsKLQotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24xKEV4ZWNTdGF0
ZSogc3RhdGUpCi17Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9w
ZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5p
b24xQ2FsbGVyPihzdGF0ZSwgIm92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24iKTsKLX0KLQotc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbjFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24xQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTc2MDksMTQgKzczNzMsMTIgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE9wdGlvbmFs
VW5pb24yQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3Bl
Jik7Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uMihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGlj
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
V2l0aE9wdGlvbmFsVW5pb24xKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24yQ2FsbGVyPihzdGF0ZSwgIm92ZXJsb2FkV2l0
aE9wdGlvbmFsVW5pb24iKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uMUNh
bGxlcj4oKnN0YXRlLCAib3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbiIpOwogfQogCi1zdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZFdpdGhPcHRpb25hbFVuaW9uMkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVz
dE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRXaXRoT3B0aW9uYWxVbmlvbjJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlND
OjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzYyNyw2ICs3Mzg5LDExIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbjIoRXhl
Y1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uMkNh
bGxlcj4oKnN0YXRlLCAib3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbiIpOworfQorCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRX
aXRoT3B0aW9uYWxVbmlvbihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOwpAQCAtNzY0OSwxNCArNzQxNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHIKICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJh
bWV0ZXIxQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3Bl
Jik7Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyMShFeGVj
U3RhdGUqIHN0YXRlKQotewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNh
bGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJs
ZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyMUNhbGxlcj4oc3RhdGUsICJvdmVybG9hZFdpdGhO
dWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0
aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIxQ2FsbGVyKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyMUNh
bGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CkBAIC03NjY5LDE0ICs3NDI5LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVy
MkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwot
Ci1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcjIoRXhlY1N0YXRl
KiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyMShF
eGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46
OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxs
YWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyMkNhbGxlcj4oc3RhdGUsICJvdmVybG9hZFdp
dGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyIik7CisgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcjFDYWxsZXI+KCpzdGF0ZSwg
Im92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIiKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcjJDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hp
bmdQYXJhbWV0ZXIyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTc2ODksNiArNzQ0NywxMSBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKIH0KIAorc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQ
YXJhbWV0ZXIyKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVs
bGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcjJDYWxsZXI+KCpzdGF0ZSwgIm92ZXJsb2Fk
V2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIiKTsKK30KKwogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0
aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
ICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKQEAgLTc3MjcsOSArNzQ5MCwxMiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kMihFeGVjU3Rh
dGUqIHN0YXRlKQogeworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0T2JqOjpjbGFzc01ldGhvZDIoc3RhdGUpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdE9iajo6Y2xhc3NNZXRob2QyKCpzdGF0ZSkpOwogfQogCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjEpCkBAIC03NzgxLDE0ICs3NTQ3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpDbwogfQogI2VuZGlmCiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1wQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01l
dGhvZFdpdGhDbGFtcChFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIHJldHVybiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
bGFzc01ldGhvZFdpdGhDbGFtcENhbGxlcj4oc3RhdGUsICJjbGFzc01ldGhvZFdpdGhDbGFtcCIp
OwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXBDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzgwMywxNCArNzU2MiwxMiBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXBP
bk9wdGlvbmFsQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Nj
b3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0aW9uYWwoRXhlY1N0YXRlKiBzdGF0ZSkK
K0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
bGFzc01ldGhvZFdpdGhDbGFtcChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0aW9uYWxDYWxsZXI+KHN0YXRlLCAiY2xhc3NN
ZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xh
bXBDYWxsZXI+KCpzdGF0ZSwgImNsYXNzTWV0aG9kV2l0aENsYW1wIik7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNz
TWV0aG9kV2l0aENsYW1wT25PcHRpb25hbENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpT
VGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xh
c3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTc4MjEsMTQgKzc1NzgsMTIg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVu
Zm9yY2VSYW5nZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dT
Y29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xh
c3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZUNhbGxlcj4oc3RhdGUsICJj
bGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2UiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhD
bGFtcE9uT3B0aW9uYWxDYWxsZXI+KCpzdGF0ZSwgImNsYXNzTWV0aG9kV2l0aENsYW1wT25PcHRp
b25hbCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VDYWxsZXIoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZUNhbGxlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC03
ODQzLDE0ICs3NTk4LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
bGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsQ2FsbGVyKEpTQzo6RXhlY1N0YXRl
KiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNl
UmFuZ2VPbk9wdGlvbmFsKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJh
bmdlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0
T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9k
V2l0aEVuZm9yY2VSYW5nZU9uT3B0aW9uYWxDYWxsZXI+KHN0YXRlLCAiY2xhc3NNZXRob2RXaXRo
RW5mb3JjZVJhbmdlT25PcHRpb25hbCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9y
Y2VSYW5nZUNhbGxlcj4oKnN0YXRlLCAiY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlIik7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZU9uT3B0aW9uYWxDYWxsZXIoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZU9uT3B0aW9uYWxDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwpAQCAtNzg2MSwxNCArNzYxNCwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlQ2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRM
b25nU2VxdWVuY2UoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VP
bk9wdGlvbmFsKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZUNhbGxlcj4oc3RhdGUsICJtZXRob2RXaXRoVW5zaWdu
ZWRMb25nU2VxdWVuY2UiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VP
bk9wdGlvbmFsQ2FsbGVyPigqc3RhdGUsICJjbGFzc01ldGhvZFdpdGhFbmZvcmNlUmFuZ2VPbk9w
dGlvbmFsIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZUNhbGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
IHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKQEAgLTc4ODEsMTQgKzc2MzIsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RP
YmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb24oRXhlY1N0YXRlKiBz
dGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
LSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbkNhbGxlcj4oc3RhdGUsICJz
dHJpbmdBcnJheUZ1bmN0aW9uIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1Nl
cXVlbmNlQ2FsbGVyPigqc3RhdGUsICJtZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2UiKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
U3RyaW5nQXJyYXlGdW5jdGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC03OTAwLDE0ICs3NjQ5LDEyIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuc3RyaW5nQXJyYXlGdW5jdGlvbihX
VEZNb3ZlKHZhbHVlcykpKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlvbkNhbGxlcihK
U0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5n
TGlzdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbihFeGVjU3Rh
dGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxP
cGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb25D
YWxsZXI+KHN0YXRlLCAiZG9tU3RyaW5nTGlzdEZ1bmN0aW9uIik7CisgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5n
QXJyYXlGdW5jdGlvbkNhbGxlcj4oKnN0YXRlLCAic3RyaW5nQXJyYXlGdW5jdGlvbiIpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRv
bVN0cmluZ0xpc3RGdW5jdGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC03OTE5LDE0ICs3NjY2LDEyIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPERPTVN0cmluZ0xpc3Q+Pigqc3RhdGUsICpjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC5kb21TdHJpbmdMaXN0RnVuY3Rp
b24oKnZhbHVlcykpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0
ZXJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsK
LQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9t
U3RyaW5nTGlzdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyQ2FsbGVyPihzdGF0ZSwgIm9w
ZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyIik7CisgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5n
TGlzdEZ1bmN0aW9uQ2FsbGVyPigqc3RhdGUsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKTsKIH0K
IAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXJDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
QEAgLTc5MzcsMTQgKzc2ODIsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZUNhbGxlcihKU0M6OkV4ZWNT
dGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhv
dXROdWxsYWJsZVNlcXVlbmNlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFs
VW5pb25QYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVlbmNlQ2FsbGVyPihzdGF0ZSwgIm1ldGhv
ZFdpdGhBbmRXaXRob3V0TnVsbGFibGVTZXF1ZW5jZSIpOworICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldp
dGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyQ2FsbGVyPigqc3RhdGUsICJvcGVyYXRpb25XaXRoT3B0
aW9uYWxVbmlvblBhcmFtZXRlciIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxh
YmxlU2VxdWVuY2VDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRo
b3V0TnVsbGFibGVTZXF1ZW5jZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC03OTU5LDE0ICs3NzAyLDEyIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZENhbGxlcihKU0M6
OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5
SWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2Uo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+
OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRD
YWxsZXI+KHN0YXRlLCAiZ2V0RWxlbWVudEJ5SWQiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5k
V2l0aG91dE51bGxhYmxlU2VxdWVuY2VDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhBbmRXaXRo
b3V0TnVsbGFibGVTZXF1ZW5jZSIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZENhbGxlcihKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzk3OCwxNCArNzcx
OSwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETEludGVyZmFjZTxFbGVtZW50
Pj4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBpbXBsLmdldEVsZW1lbnRC
eUlkKFdURk1vdmUoZWxlbWVudElkKSkpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnRDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0Rv
Y3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnRDYWxsZXI+KHN0YXRlLCAiZ2V0
U1ZHRG9jdW1lbnQiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZENhbGxlcj4oKnN0YXRlLCAi
Z2V0RWxlbWVudEJ5SWQiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnRDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTc5OTMsMTQgKzc3MzIsMTIg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUzxJRExJbnRlcmZhY2U8U1ZHRG9jdW1lbnQ+Pigqc3RhdGUsICpj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgQmluZGluZ1NlY3VyaXR5Ojpj
aGVja1NlY3VyaXR5Rm9yTm9kZSgqc3RhdGUsIGltcGwuZ2V0U1ZHRG9jdW1lbnQoKSkpKTsKIH0K
IAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29udmVydDFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRo
cm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbnZlcnQxKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1lbnQoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+Ojpj
YWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDFDYWxsZXI+KHN0
YXRlLCAiY29udmVydDEiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25HZXRTVkdEb2N1bWVudENhbGxlcj4oKnN0YXRl
LCAiZ2V0U1ZHRG9jdW1lbnQiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDFDYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkNvbnZlcnQxQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTgwMTMsMTQgKzc3NTAsMTIgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyQ2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MihFeGVjU3RhdGUq
IHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbnZlcnQxKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdD
YWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNvbnZlcnQyQ2FsbGVyPihzdGF0ZSwgImNvbnZlcnQyIik7CisgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDFD
YWxsZXI+KCpzdGF0ZSwgImNvbnZlcnQxIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQyQ2FsbGVyKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC04MDMzLDE0ICs3NzY4LDEyIEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0M0NhbGxlcihKU0M6
OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDMoRXhl
Y1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25Db252ZXJ0MihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db252ZXJ0M0NhbGxlcj4oc3RhdGUsICJjb252ZXJ0MyIpOworICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bnZlcnQyQ2FsbGVyPigqc3RhdGUsICJjb252ZXJ0MiIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0M0NhbGxl
cihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDNDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtODA1MywxNCArNzc4
NiwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDRDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZl
cnQ0KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICBy
ZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29udmVydDRDYWxsZXI+KHN0YXRlLCAiY29udmVydDQiKTsKKyAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Db252ZXJ0M0NhbGxlcj4oKnN0YXRlLCAiY29udmVydDMiKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVy
dDRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0Q2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTgwNzMs
MTQgKzc4MDQsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFi
bGVQb2ludEZ1bmN0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpU
aHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZl
cnQ0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0
T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQb2lu
dEZ1bmN0aW9uQ2FsbGVyPihzdGF0ZSwgIm11dGFibGVQb2ludEZ1bmN0aW9uIik7CisgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uQ29udmVydDRDYWxsZXI+KCpzdGF0ZSwgImNvbnZlcnQ0Iik7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk11dGFibGVQ
b2ludEZ1bmN0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5j
dGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRo
cm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CkBAIC04MDg4LDE0ICs3ODE3LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURM
SW50ZXJmYWNlPFNWR1BvaW50Pj4oKnN0YXRlLCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCks
IGltcGwubXV0YWJsZVBvaW50RnVuY3Rpb24oKSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2VDYWxsZXIoSlND
OjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZShFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk11dGFibGVQb2ludEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0g
ICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZUNhbGxlcj4oc3RhdGUsICJvcmFuZ2UiKTsKKyAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbkNhbGxlcj4oKnN0YXRlLCAibXV0YWJsZVBvaW50RnVu
Y3Rpb24iKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFu
Z2VDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwpAQCAtODEwNCwxNCArNzgzMSwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2RDYWxsZXIoSlNDOjpFeGVjU3RhdGUq
LCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEV4
ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3JhbmdlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJp
bmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kQ2FsbGVyPihzdGF0ZSwgInZhcmlhZGljU3RyaW5n
TWV0aG9kIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlQ2FsbGVyPigqc3RhdGUsICJvcmFuZ2UiKTsKIH0K
IAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZh
cmlhZGljU3RyaW5nTWV0aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTgxMjYsMTQgKzc4NTEsMTIgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRp
Y0RvdWJsZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljU3RyaW5nTWV0aG9kKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2Fs
bE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9k
Q2FsbGVyPihzdGF0ZSwgInZhcmlhZGljRG91YmxlTWV0aG9kIik7CisgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFk
aWNTdHJpbmdNZXRob2RDYWxsZXI+KCpzdGF0ZSwgInZhcmlhZGljU3RyaW5nTWV0aG9kIik7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
YXJpYWRpY0RvdWJsZU1ldGhvZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC04MTQ4LDE0ICs3ODcxLDEyIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2RDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGlj
Tm9kZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9w
ZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZENhbGxl
cj4oc3RhdGUsICJ2YXJpYWRpY05vZGVNZXRob2QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY0RvdWJs
ZU1ldGhvZENhbGxlcj4oKnN0YXRlLCAidmFyaWFkaWNEb3VibGVNZXRob2QiKTsKIH0KIAotc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VmFyaWFkaWNOb2RlTWV0aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05v
ZGVNZXRob2RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwpAQCAtODE3MCwxNCArNzg5MSwxMiBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhvZENhbGxlcihKU0M6OkV4ZWNT
dGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhv
ZChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQog
ewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kQ2FsbGVyPihzdGF0ZSwg
InZhcmlhZGljVW5pb25NZXRob2QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2RDYWxs
ZXI+KCpzdGF0ZSwgInZhcmlhZGljTm9kZU1ldGhvZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9u
TWV0aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1VuaW9uTWV0aG9kQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKQEAgLTgxOTIsMTQgKzc5MTEsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkFueUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhy
b3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQW55KEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhvZChFeGVj
U3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNh
bGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnlDYWxsZXI+KHN0YXRlLCAi
YW55Iik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhvZENhbGxlcj4oKnN0YXRlLCAidmFy
aWFkaWNVbmlvbk1ldGhvZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnlDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
K3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkFueUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CkBAIC04MjE0LDIyICs3OTMxLDEyIEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiwgSlNUZXN0T2JqKiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgSlNDOjpUaHJvd1Njb3Bl
Jik7Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RQcm9taXNlRnVuY3Rpb25Qcm9taXNlKEV4ZWNTdGF0ZSosIFJlZjxEZWZlcnJlZFByb21pc2U+
JiYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIEFTU0VS
VChzdGF0ZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0aW9u
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvblByb21pc2UsIFBy
b21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T25seT4oKnN0YXRlKSk7Ci19Ci0KLXN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZUZ1bmN0aW9uUHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYm
IHByb21pc2UpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQW55KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0T2JqPjo6Y2FsbFByb21pc2VPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uQ2FsbGVyPihzdGF0ZSwgV1RGTW92ZShwcm9taXNlKSwg
InRlc3RQcm9taXNlRnVuY3Rpb24iKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnlDYWxsZXI+KCpzdGF0ZSwgImFu
eSIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21p
c2UsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25D
YWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb25SZXR1cm5p
bmdQcm9taXNlPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYgcHJvbWlzZSwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpA
QCAtODIzOCwyMiArNzk0NSwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50Q2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiwgSlNUZXN0T2JqKiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgSlNDOjpUaHJvd1Njb3Bl
Jik7Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudFByb21pc2UoRXhlY1N0YXRlKiwgUmVm
PERlZmVycmVkUHJvbWlzZT4mJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1l
bnQoRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICBBU1NFUlQoc3RhdGUpOwotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoY2FsbFByb21pc2VGdW5jdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudFByb21pc2UsIFByb21pc2VF
eGVjdXRpb25TY29wZTo6V2luZG93T25seT4oKnN0YXRlKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0
aW9uV2l0aEZsb2F0QXJndW1lbnRQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbFByb21pc2VPcGVy
YXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZs
b2F0QXJndW1lbnRDYWxsZXI+KHN0YXRlLCBXVEZNb3ZlKHByb21pc2UpLCAidGVzdFByb21pc2VG
dW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50Iik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVy
bmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRl
c3RQcm9taXNlRnVuY3Rpb25DYWxsZXIsIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T25s
eT4oKnN0YXRlLCAidGVzdFByb21pc2VGdW5jdGlvbiIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1
bmN0aW9uV2l0aEZsb2F0QXJndW1lbnRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFy
Z3VtZW50Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
UmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBS
ZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKQEAgLTgyNjYsMjIgKzc5NjMsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNUZXN0T2JqKiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgSlNDOjpUaHJvd1Nj
b3BlJik7Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uUHJvbWlzZShFeGVjU3RhdGUqLCBSZWY8
RGVmZXJyZWRQcm9taXNlPiYmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKEV4
ZWNTdGF0ZSogc3RhdGUpCi17Ci0gICAgQVNTRVJUKHN0YXRlKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNhbGxQcm9taXNlRnVuY3Rpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25U
ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21pc2UsIFByb21pc2VFeGVjdXRpb25T
Y29wZTo6V2luZG93T25seT4oKnN0YXRlKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4
Y2VwdGlvblByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudChFeGVjU3RhdGUqIHN0
YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxQcm9taXNl
T3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldp
dGhFeGNlcHRpb25DYWxsZXI+KHN0YXRlLCBXVEZNb3ZlKHByb21pc2UpLCAidGVzdFByb21pc2VG
dW5jdGlvbldpdGhFeGNlcHRpb24iKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5n
UHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFBy
b21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3VtZW50Q2FsbGVyLCBQcm9taXNlRXhlY3V0aW9uU2Nv
cGU6OldpbmRvd09ubHk+KCpzdGF0ZSwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1
bWVudCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbkNhbGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHR5cGVuYW1lIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC04MjkwLDIyICs3OTc3LDEyIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9w
dGlvbmFsSW50QXJndW1lbnRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBSZWY8
RGVmZXJyZWRQcm9taXNlPiYmLCBKU0M6OlRocm93U2NvcGUmKTsKLQotc3RhdGljIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhP
cHRpb25hbEludEFyZ3VtZW50UHJvbWlzZShFeGVjU3RhdGUqLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudChFeGVjU3Rh
dGUqIHN0YXRlKQotewotICAgIEFTU0VSVChzdGF0ZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYWxsUHJvbWlzZUZ1bmN0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFBy
b21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50UHJvbWlzZSwgUHJvbWlzZUV4ZWN1
dGlvblNjb3BlOjpXaW5kb3dPbmx5Pigqc3RhdGUpKTsKLX0KLQotc3RhdGljIGlubGluZSBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25X
aXRoT3B0aW9uYWxJbnRBcmd1bWVudFByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiBwcm9taXNlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6
Y2FsbFByb21pc2VPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRDYWxsZXI+KHN0YXRlLCBXVEZNb3ZlKHBy
b21pc2UpLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Iik7Cisg
ICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9u
Q2FsbGVyLCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09ubHk+KCpzdGF0ZSwgInRlc3RQ
cm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rp
b25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpT
VGVzdE9iaiogY2FzdGVkVGhpcywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlv
bmFsSW50QXJndW1lbnRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgSlNDOjpUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwpAQCAtODMxNiwyMiArNzk5MywxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24xQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiwgSlNDOjpU
aHJvd1Njb3BlJik7Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMVByb21pc2UoRXhlY1N0YXRlKiwg
UmVmPERlZmVycmVkUHJvbWlzZT4mJik7Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjEo
RXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICBBU1NFUlQoc3RhdGUpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoY2FsbFByb21pc2VGdW5jdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMVByb21pc2UsIFByb21pc2VFeGVjdXRpb25T
Y29wZTo6V2luZG93T25seT4oKnN0YXRlKSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5j
dGlvbjFQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJv
bWlzZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsUHJv
bWlzZU9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3Zlcmxv
YWRlZEZ1bmN0aW9uMUNhbGxlcj4oc3RhdGUsIFdURk1vdmUocHJvbWlzZSksICJ0ZXN0UHJvbWlz
ZU92ZXJsb2FkZWRGdW5jdGlvbiIpOworICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQ
cm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRDYWxsZXIsIFByb21pc2VFeGVjdXRp
b25TY29wZTo6V2luZG93T25seT4oKnN0YXRlLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRp
b25hbEludEFyZ3VtZW50Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9u
MUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhpcywgUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjFDYWxsZXIoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlz
ZSwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtODM0MiwyMiArODAwOSwxMiBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9h
ZGVkRnVuY3Rpb24yQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T2JqKiwgUmVmPERlZmVy
cmVkUHJvbWlzZT4mJiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLXN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9u
MlByb21pc2UoRXhlY1N0YXRlKiwgUmVmPERlZmVycmVkUHJvbWlzZT4mJik7Ci0KLXN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZU92ZXJsb2FkZWRGdW5jdGlvbjIoRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICBBU1NFUlQoc3Rh
dGUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbFByb21pc2VGdW5jdGlvbjxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMlByb21p
c2UsIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93T25seT4oKnN0YXRlKSk7Ci19Ci0KLXN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjJQcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjEo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+
OjpjYWxsUHJvbWlzZU9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9t
aXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMkNhbGxlcj4oc3RhdGUsIFdURk1vdmUocHJvbWlzZSksICJ0
ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbiIpOworICAgIHJldHVybiBJRExPcGVyYXRpb25S
ZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjFDYWxsZXIsIFByb21pc2VFeGVjdXRpb25T
Y29wZTo6V2luZG93T25seT4oKnN0YXRlLCAidGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24i
KTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24yQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmIHByb21pc2UsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
T3ZlcmxvYWRlZEZ1bmN0aW9uMkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CkBAIC04MzY4LDYgKzgwMjUsMTEgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjIoRXhlY1N0YXRl
KiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9h
ZGVkRnVuY3Rpb24yQ2FsbGVyLCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09ubHk+KCpz
dGF0ZSwgInRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIik7Cit9CisKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92
ZXJsb2FkZWRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewogICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOwpAQCAtODM4NSw2MyArODA0Nyw3MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByCiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkg
OiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1
bmN0aW9uUHJvbWlzZShFeGVjU3RhdGUqLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKK3N0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RT
dGF0aWNQcm9taXNlRnVuY3Rpb25Qcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxEZWZlcnJl
ZFByb21pc2U+JiYgcHJvbWlzZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CisgICAgVGVzdE9iajo6dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbihX
VEZNb3ZlKHByb21pc2UpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOworfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
Ci0gICAgQVNTRVJUKHN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxQcm9t
aXNlRnVuY3Rpb248anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNl
RnVuY3Rpb25Qcm9taXNlLCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09ubHk+KCpzdGF0
ZSkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uUHJvbWlzZShFeGVjU3RhdGUqIHN0
YXRlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpCitzdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlzZUZ1
bmN0aW9uV2l0aEV4Y2VwdGlvblByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwogICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKLSAgICBUZXN0T2JqOjp0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uKFdU
Rk1vdmUocHJvbWlzZSkpOworICAgIHByb3BhZ2F0ZUV4Y2VwdGlvbigqc3RhdGUsIHRocm93U2Nv
cGUsIFRlc3RPYmo6OnRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uKFdURk1v
dmUocHJvbWlzZSkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwogfQogCi1zdGF0aWMgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlv
blRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRoRXhjZXB0aW9uUHJvbWlzZShFeGVjU3RhdGUq
LCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmKTsKLQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldp
dGhFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICBBU1NFUlQoc3RhdGUpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbFByb21pc2VGdW5jdGlvbjxqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Qcm9t
aXNlLCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09ubHk+KCpzdGF0ZSkpOwogfQogCi1z
dGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25U
ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvblByb21pc2UoRXhlY1N0YXRlKiBz
dGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQorc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVByb21p
c2VGdW5jdGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJh
dGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50ZXN0Q3Vz
dG9tUHJvbWlzZUZ1bmN0aW9uKCpzdGF0ZSwgV1RGTW92ZShwcm9taXNlKSkpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1
c3RvbVByb21pc2VGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBJRExP
cGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uQ2FsbGVyLCBQcm9taXNlRXhlY3V0
aW9uU2NvcGU6OldpbmRvd09ubHk+KCpzdGF0ZSwgInRlc3RDdXN0b21Qcm9taXNlRnVuY3Rpb24i
KTsKK30KKworc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3Rv
ckZ1bmN0aW9uVGVzdFN0YXRpY0N1c3RvbVByb21pc2VGdW5jdGlvblByb21pc2UoRXhlY1N0YXRl
KiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlKQogewogICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICBwcm9wYWdhdGVFeGNlcHRp
b24oKnN0YXRlLCB0aHJvd1Njb3BlLCBUZXN0T2JqOjp0ZXN0U3RhdGljUHJvbWlzZUZ1bmN0aW9u
V2l0aEV4Y2VwdGlvbihXVEZNb3ZlKHByb21pc2UpKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9i
ajo6dGVzdFN0YXRpY0N1c3RvbVByb21pc2VGdW5jdGlvbigqc3RhdGUsIFdURk1vdmUocHJvbWlz
ZSkpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbkNhbGxlcihKU0M6OkV4ZWNT
dGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVByb21pc2VG
dW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY0N1c3RvbVByb21pc2VGdW5jdGlv
bihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9i
aj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJv
bWlzZUZ1bmN0aW9uQ2FsbGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmVqZWN0UHJvbWlz
ZT4oc3RhdGUsICJ0ZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0aW9uIik7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0aW9uPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25UZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uUHJvbWlzZSwgUHJvbWlzZUV4ZWN1dGlv
blNjb3BlOjpXaW5kb3dPbmx5Pigqc3RhdGUpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVByb21pc2VG
dW5jdGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiogY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVJldHVybnNPd25Q
cm9taXNlRnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnRlc3RDdXN0b21Qcm9taXNlRnVuY3Rpb24oKnN0YXRlKSk7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT50ZXN0Q3VzdG9tUmV0dXJu
c093blByb21pc2VGdW5jdGlvbigqc3RhdGUpKTsKIH0KIAotI2lmIEVOQUJMRShDT05ESVRJT04x
KQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RP
YmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQxKEV4ZWNTdGF0ZSog
c3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNlRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9u
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDFDYWxsZXI+KHN0
YXRlLCAiY29uZGl0aW9uYWxPdmVybG9hZCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1
cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGxSZXR1cm5pbmdPd25Qcm9taXNlPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNlRnVuY3Rpb25DYWxs
ZXI+KCpzdGF0ZSwgInRlc3RDdXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9uIik7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQxQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCisjaWYgRU5B
QkxFKENPTkRJVElPTjEpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkMUNhbGxlcihKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC04NDUy
LDE3ICs4MTI0LDE1IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi0jZW5kaWYK
LQotI2lmIEVOQUJMRShDT05ESVRJT04yKQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDJDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotc3RhdGlj
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlv
bmFsT3ZlcmxvYWQyKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDEoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxs
T3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDJD
YWxsZXI+KHN0YXRlLCAiY29uZGl0aW9uYWxPdmVybG9hZCIpOworICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlv
bmFsT3ZlcmxvYWQxQ2FsbGVyPigqc3RhdGUsICJjb25kaXRpb25hbE92ZXJsb2FkIik7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCisjZW5kaWYK
KworI2lmIEVOQUJMRShDT05ESVRJT04yKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDJDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQog
ewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwpAQCAtODQ3Myw2ICs4MTQzLDExIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
CitzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29uZGl0aW9uYWxPdmVybG9hZDIoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25k
aXRpb25hbE92ZXJsb2FkMkNhbGxlcj4oKnN0YXRlLCAiY29uZGl0aW9uYWxPdmVybG9hZCIpOwor
fQorCiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05ESVRJT04xKSB8fCBFTkFCTEUoQ09ORElUSU9O
MikKQEAgLTg0OTYsMTQgKzgxNzEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByCiB9CiAjZW5kaWYKIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDFDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotc3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmds
ZUNvbmRpdGlvbmFsT3ZlcmxvYWQxKEV4ZWNTdGF0ZSogc3RhdGUpCi17Ci0gICAgcmV0dXJuIEJp
bmRpbmdDYWxsZXI8SlNUZXN0T2JqPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQxQ2FsbGVyPihzdGF0ZSwgInNpbmdsZUNv
bmRpdGlvbmFsT3ZlcmxvYWQiKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDFD
YWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQxQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKQEAgLTg1MTQsMTUgKzgxODIsMTMgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLSNpZiBFTkFCTEUoQ09ORElUSU9OKQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9h
ZDJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUmKTsK
LQotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQyKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0
aW9uYWxPdmVybG9hZDEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
U2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDJDYWxsZXI+KHN0YXRlLCAic2luZ2xlQ29uZGl0aW9u
YWxPdmVybG9hZCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQxQ2FsbGVy
Pigqc3RhdGUsICJzaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkIik7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNv
bmRpdGlvbmFsT3ZlcmxvYWQyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCisjaWYgRU5BQkxFKENP
TkRJVElPTikKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQyQ2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTg1MzMs
NiArODE5OSwxMSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorc3RhdGljIGlu
bGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRp
dGlvbmFsT3ZlcmxvYWQyKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29u
ZGl0aW9uYWxPdmVybG9hZDJDYWxsZXI+KCpzdGF0ZSwgInNpbmdsZUNvbmRpdGlvbmFsT3Zlcmxv
YWQiKTsKK30KKwogI2VuZGlmCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkKEV4ZWNTdGF0ZSog
c3RhdGUpCkBAIC04NTUyLDE0ICs4MjIzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcgogICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpIDog
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0dGFjaFNoYWRv
d1Jvb3RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RPYmoqLCBKU0M6OlRocm93U2NvcGUm
KTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkF0dGFjaFNoYWRvd1Jvb3QoRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQXR0YWNoU2hhZG93Um9vdENhbGxlcj4oc3RhdGUsICJhdHRhY2hTaGFkb3dSb290Iik7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkF0dGFjaFNoYWRvd1Jvb3RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0
dGFjaFNoYWRvd1Jvb3RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtODU3MiwxNCArODIzNiwxMiBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFy
eVBhcmFtZXRlckNhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dT
Y29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlcihFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkF0dGFjaFNoYWRvd1Jvb3QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1
cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlckNhbGxl
cj4oc3RhdGUsICJvcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyIik7Cisg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdENhbGxlcj4oKnN0YXRlLCAiYXR0YWNoU2hhZG93Um9v
dCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJuYWxEaWN0aW9uYXJ5
UGFyYW1ldGVyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKQEAgLTg1OTIsMTQgKzgyNTQsMTIgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBhcmFtZXRlckNhbGxlcihKU0M6OkV4
ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnVmZmVyU291cmNlUGFy
YW1ldGVyKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBh
cmFtZXRlcihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdE9iaj46OmNhbGxPcGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CdWZmZXJT
b3VyY2VQYXJhbWV0ZXJDYWxsZXI+KHN0YXRlLCAiYnVmZmVyU291cmNlUGFyYW1ldGVyIik7Cisg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlckNhbGxlcj4o
KnN0YXRlLCAib3BlcmF0aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlciIpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25CdWZmZXJTb3VyY2VQYXJhbWV0ZXJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1
ZmZlclNvdXJjZVBhcmFtZXRlckNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC04NjEyLDE0ICs4MjcyLDEyIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1lZENhbGxlcihK
U0M6OkV4ZWNTdGF0ZSosIEpTVGVzdE9iaiosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2Fs
bGVyTmFtZWQoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CdWZmZXJTb3VyY2VQYXJhbWV0ZXIoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RPYmo+OjpjYWxsT3Bl
cmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWRDYWxsZXI+
KHN0YXRlLCAibGVnYWN5Q2FsbGVyTmFtZWQiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CdWZmZXJTb3VyY2VQYXJh
bWV0ZXJDYWxsZXI+KCpzdGF0ZSwgImJ1ZmZlclNvdXJjZVBhcmFtZXRlciIpOwogfQogCi1zdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25M
ZWdhY3lDYWxsZXJOYW1lZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVy
TmFtZWRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwpAQCAtODYzMiwxNCArODI5MCwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RP
YmoqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5
Q2FsbGVyTmFtZWQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjxKU1Rlc3RPYmo+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9T
dHJpbmdDYWxsZXI+KHN0YXRlLCAidG9TdHJpbmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJO
YW1lZENhbGxlcj4oKnN0YXRlLCAibGVnYWN5Q2FsbGVyTmFtZWQiKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVG9TdHJp
bmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQ2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTg2NDcs
NiArODMwMywxMSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFVTVlN0cmluZz4oKnN0YXRlLCBpbXBs
LnN0cmluZ2lmaWVyQXR0cmlidXRlKCkpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUp
Cit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVG9TdHJpbmdDYWxsZXI+KCpzdGF0ZSwgInRvU3RyaW5nIik7Cit9CisK
IHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgY2FsbEpTVGVzdE9iajEoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKQEAgLTg3NDEsNyArODQwMiw3IEBA
IHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHIKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvSlNPTihFeGVjU3Rh
dGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE9iaj46OmNhbGxP
cGVyYXRpb248anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT05DYWxsZXI+KHN0YXRlLCAi
dG9KU09OIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQ2FsbGVyPigqc3RhdGUsICJ0b0pTT04iKTsKIH0K
IAogdm9pZCBKU1Rlc3RPYmo6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPYmouaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgJKHJldmlzaW9uIDIxNzQyNSkKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAkod29ya2luZyBjb3B5KQpA
QCAtNzAsNyArNzAsOSBAQCBwdWJsaWM6CiAgICAgSlNDOjpKU1ZhbHVlIGN1c3RvbU1ldGhvZChK
U0M6OkV4ZWNTdGF0ZSYpOwogICAgIEpTQzo6SlNWYWx1ZSBjdXN0b21NZXRob2RXaXRoQXJncyhK
U0M6OkV4ZWNTdGF0ZSYpOwogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgY2xhc3NNZXRob2QyKEpT
Qzo6RXhlY1N0YXRlJik7Ci0gICAgSlNDOjpKU1ZhbHVlIHRlc3RDdXN0b21Qcm9taXNlRnVuY3Rp
b24oSlNDOjpFeGVjU3RhdGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgdGVzdEN1c3RvbVByb21pc2VG
dW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIHN0
YXRpYyBKU0M6OkpTVmFsdWUgdGVzdFN0YXRpY0N1c3RvbVByb21pc2VGdW5jdGlvbihKU0M6OkV4
ZWNTdGF0ZSYsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYpOworICAgIEpTQzo6SlNWYWx1ZSB0ZXN0
Q3VzdG9tUmV0dXJuc093blByb21pc2VGdW5jdGlvbihKU0M6OkV4ZWNTdGF0ZSYpOwogcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6SGFzU3Rh
dGljUHJvcGVydHlUYWJsZSB8IEpTQzo6SW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5k
ZXhFdmVuV2hlbkxlbmd0aElzTm90WmVybyB8IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgSlNDOjpPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzIHwgSlNDOjpUeXBlT2ZTaG91bGRD
YWxsR2V0Q2FsbERhdGEgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHByb3RlY3RlZDoKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAJKHJldmlzaW9u
IDIxNzQyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMs
NiBAQAogCiAjaW5jbHVkZSAiSlNCbG9iLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0j
aW5jbHVkZSAiSlNET01CaW5kaW5nQ2FsbGVyLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydFZh
cmlhZGljLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuY3BwCShyZXZpc2lvbiAyMTc0MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDcgKzIyLDYgQEAK
ICNpbmNsdWRlICJKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmgiCiAK
ICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdDYWxsZXIu
aCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNET01Db252ZXJ0
LmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAkocmV2aXNpb24gMjE3NDI1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxMCArMjIsMTAgQEAKICNpbmNsdWRlICJKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmgiCiAKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJK
U0RPTUJpbmRpbmdDYWxsZXIuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3Ry
dWN0YWJsZS5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpTRE9NRXhj
ZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUg
IkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSA8cnVu
dGltZS9FcnJvci5oPgpAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgSlNUZXN0T3ZlcnJpZGVCdWls
dGluczo6Z2V0T3duUHJvcGUKICAgICBCYXNlOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXNPYmpl
Y3QsIHN0YXRlLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUg
SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyogQmluZGluZ0NhbGxlcjxKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0YXRlKQordGVtcGxhdGU8PiBpbmxp
bmUgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyogSURMT3BlcmF0aW9uPEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnM+OjpjYXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgcmV0dXJuIGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPihzdGF0ZS52bSgpLCBzdGF0ZS50aGlzVmFs
dWUoKSk7CiB9CkBAIC0yMDcsMTQgKzIwNyw3IEBAIEpTVmFsdWUgSlNUZXN0T3ZlcnJpZGVCdWls
dGluczo6Z2V0Q29uc3QKICAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0T3ZlcnJp
ZGVCdWlsdGluc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyosIEpTQzo6VGhyb3dTY29w
ZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRp
bnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbShFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIHJl
dHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+OjpjYWxsT3BlcmF0aW9u
PGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbUNhbGxlcj4o
c3RhdGUsICJuYW1lZEl0ZW0iKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbUNhbGxl
cihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0
ZW1DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTIyNiw2ICsyMTksMTEgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUzxJRExJbnRlcmZhY2U8Tm9kZT4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBpbXBsLm5hbWVkSXRlbShXVEZNb3ZlKG5hbWUpKSkpOwogfQogCitFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5h
bWVkSXRlbShFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucz46OmNhbGw8anNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlw
ZUZ1bmN0aW9uTmFtZWRJdGVtQ2FsbGVyPigqc3RhdGUsICJuYW1lZEl0ZW0iKTsKK30KKwogYm9v
bCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3Rz
KEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZp
c2l0b3IpCiB7CiAgICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcAkocmV2aXNpb24gMjE3NDI1KQorKysgU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDggKzIxLDggQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaCIKIAorI2lu
Y2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5j
bHVkZSAiSlNET01CaW5kaW5nQ2FsbGVyLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5o
IgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNpbmNsdWRlICJKU0RPTVBy
b21pc2UuaCIKQEAgLTE5MSw3ICsxOTEsNyBAQCBKU09iamVjdCogSlNUZXN0UHJvbWlzZVJlamVj
dGlvbkV2ZW50OjpwCiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RQcm9taXNlUmVq
ZWN0aW9uRXZlbnQ+KHZtLCBnbG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBK
U1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0UHJvbWlzZVJl
amVjdGlvbkV2ZW50Pjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RQcm9taXNlUmVqZWN0
aW9uRXZlbnQqIElETEF0dHJpYnV0ZTxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+OjpjYXN0
KEV4ZWNTdGF0ZSYgc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAgICByZXR1
cm4ganNEeW5hbWljRG93bmNhc3Q8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Kj4oc3RhdGUu
dm0oKSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQpAQCAtMjAwLDcgKzIwMCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RQcm9taXNlUmVqZWMKIAogRW5jb2RlZEpTVmFs
dWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+OjphdHRyaWJ1dGU8anNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OlJlamVjdFByb21pc2U+KHN0YXRlLCB0aGlzVmFsdWUsICJwcm9taXNlIik7CisgICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQ+OjpnZXQ8anNUZXN0
UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZUdldHRlciwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZp
b3I6OlJlamVjdFByb21pc2U+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAicHJvbWlzZSIpOwogfQogCiBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50UHJvbWlzZUdl
dHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQmIHRoaXNP
YmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0yMTYsNyArMjE2LDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdFByb21pc2VSZWplYwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RQcm9taXNlUmVqZWN0aW9uRXZlbnRSZWFzb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6YXR0cmlidXRlPGpzVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudFJlYXNvbkdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInJlYXNvbiIpOwor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Pjo6Z2V0
PGpzVGVzdFByb21pc2VSZWplY3Rpb25FdmVudFJlYXNvbkdldHRlcj4oKnN0YXRlLCB0aGlzVmFs
dWUsICJyZWFzb24iKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFByb21pc2VS
ZWplY3Rpb25FdmVudFJlYXNvbkdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RQcm9taXNl
UmVqZWN0aW9uRXZlbnQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXph
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb24uY3BwCShyZXZpc2lvbiAyMTc0MjUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIxLDExICsyMSwxMiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkpTVGVzdFNlcmlhbGl6YXRpb24uaCIKIAorI2luY2x1ZGUgIkpTRE9NQXR0
cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5k
aW5nQ2FsbGVyLmgiCiAjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUu
aCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnQuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhh
bmRsaW5nLmgiCisjaW5jbHVkZSAiSlNET01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdy
YXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTVGVzdEV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgPHJ1
bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KQEAgLTE1MSwxMiArMTUyLDEyIEBAIHZvaWQgSlNU
ZXN0U2VyaWFsaXphdGlvbjo6ZGVzdHJveShKU0M6OkoKICAgICB0aGlzT2JqZWN0LT5KU1Rlc3RT
ZXJpYWxpemF0aW9uOjp+SlNUZXN0U2VyaWFsaXphdGlvbigpOwogfQogCi10ZW1wbGF0ZTw+IGlu
bGluZSBKU1Rlc3RTZXJpYWxpemF0aW9uKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6YXRp
b24+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSkKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNlcmlhbGl6YXRpb24qIElETEF0dHJp
YnV0ZTxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6Y2FzdChFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCiB7CiAgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVz
dFNlcmlhbGl6YXRpb24qPihzdGF0ZS52bSgpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNlcmlhbGl6YXRpb24qIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0U2VyaWFsaXphdGlvbj46OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0
ZSkKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNlcmlhbGl6YXRpb24qIElETE9wZXJhdGlvbjxK
U1Rlc3RTZXJpYWxpemF0aW9uPjo6Y2FzdChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIHJldHVy
biBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uKj4oc3RhdGUudm0oKSwgc3Rh
dGUudGhpc1ZhbHVlKCkpOwogfQpAQCAtMTY1LDcgKzE2Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW8KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXph
dGlvbkZpcnN0U3RyaW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdFNlcmlhbGl6YXRpb24+OjphdHRyaWJ1dGU8anNUZXN0U2VyaWFsaXphdGlvbkZpcnN0U3Ry
aW5nQXR0cmlidXRlR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiZmlyc3RTdHJpbmdBdHRyaWJ1
dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpnZXQ8
anNUZXN0U2VyaWFsaXphdGlvbkZpcnN0U3RyaW5nQXR0cmlidXRlR2V0dGVyPigqc3RhdGUsIHRo
aXNWYWx1ZSwgImZpcnN0U3RyaW5nQXR0cmlidXRlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uRmlyc3RTdHJpbmdBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKQEAgLTE4MSw3ICsxODIsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0U2VyaWFsaXphdGlvCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25TZWNv
bmRMb25nQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlh
bGl6YXRpb24+OjphdHRyaWJ1dGU8anNUZXN0U2VyaWFsaXphdGlvblNlY29uZExvbmdBdHRyaWJ1
dGVHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJzZWNvbmRMb25nQXR0cmlidXRlIik7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6Z2V0PGpzVGVzdFNlcmlh
bGl6YXRpb25TZWNvbmRMb25nQXR0cmlidXRlR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgInNl
Y29uZExvbmdBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNl
cmlhbGl6YXRpb25TZWNvbmRMb25nQXR0cmlidXRlR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VGVzdFNlcmlhbGl6YXRpb24mIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBA
IC0xOTcsNyArMTk4LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRp
bwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uVGhpcmRVbnNlcmlhbGl6YWJs
ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RTZXJpYWxpemF0
aW9uPjo6YXR0cmlidXRlPGpzVGVzdFNlcmlhbGl6YXRpb25UaGlyZFVuc2VyaWFsaXphYmxlQXR0
cmlidXRlR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAidGhpcmRVbnNlcmlhbGl6YWJsZUF0dHJp
YnV0ZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0U2VyaWFsaXphdGlvbj46Omdl
dDxqc1Rlc3RTZXJpYWxpemF0aW9uVGhpcmRVbnNlcmlhbGl6YWJsZUF0dHJpYnV0ZUdldHRlcj4o
KnN0YXRlLCB0aGlzVmFsdWUsICJ0aGlyZFVuc2VyaWFsaXphYmxlQXR0cmlidXRlIik7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uVGhpcmRVbnNlcmlhbGl6
YWJsZUF0dHJpYnV0ZUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0aW9u
JiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjEzLDcgKzIxNCw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW8KIAogRW5jb2RlZEpTVmFs
dWUganNUZXN0U2VyaWFsaXphdGlvbkZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZShF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6YXR0cmli
dXRlPGpzVGVzdFNlcmlhbGl6YXRpb25Gb3VydGhVbnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1dGVH
ZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJmb3VydGhVbnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1
dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpnZXQ8
anNUZXN0U2VyaWFsaXphdGlvbkZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZUdldHRl
cj4oKnN0YXRlLCB0aGlzVmFsdWUsICJmb3VydGhVbnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1dGUi
KTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Gb3VydGhV
bnJlc3RyaWN0ZWREb3VibGVBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTIy
OSw3ICsyMzAsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvCiAK
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25GaWZ0aExvbmdBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXphdGlvbj46OmF0dHJpYnV0
ZTxqc1Rlc3RTZXJpYWxpemF0aW9uRmlmdGhMb25nQXR0cmlidXRlR2V0dGVyPihzdGF0ZSwgdGhp
c1ZhbHVlLCAiZmlmdGhMb25nQXR0cmlidXRlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxK
U1Rlc3RTZXJpYWxpemF0aW9uPjo6Z2V0PGpzVGVzdFNlcmlhbGl6YXRpb25GaWZ0aExvbmdBdHRy
aWJ1dGVHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiZmlmdGhMb25nQXR0cmlidXRlIik7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW9uRmlmdGhMb25nQXR0
cmlidXRlR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFNlcmlhbGl6YXRpb24mIHRoaXNP
YmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0yNDUsNyArMjQ2LDcgQEAgc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpbwogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RTZXJpYWxpemF0aW9uU2l4dGhUeXBlZGVmQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6YXRpb24+OjphdHRyaWJ1dGU8anNUZXN0U2VyaWFsaXph
dGlvblNpeHRoVHlwZWRlZkF0dHJpYnV0ZUdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInNpeHRo
VHlwZWRlZkF0dHJpYnV0ZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0U2VyaWFs
aXphdGlvbj46OmdldDxqc1Rlc3RTZXJpYWxpemF0aW9uU2l4dGhUeXBlZGVmQXR0cmlidXRlR2V0
dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgInNpeHRoVHlwZWRlZkF0dHJpYnV0ZSIpOwogfQogCiBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvblNpeHRoVHlwZWRlZkF0dHJp
YnV0ZUdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0aW9uJiB0aGlzT2Jq
ZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjg1LDcgKzI4Niw3IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW8KIAogYm9vbCBzZXRKU1Rlc3RTZXJpYWxp
emF0aW9uRmlyc3RTdHJpbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJu
IEJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXphdGlvbj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rl
c3RTZXJpYWxpemF0aW9uRmlyc3RTdHJpbmdBdHRyaWJ1dGVGdW5jdGlvbj4oc3RhdGUsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmlyc3RTdHJpbmdBdHRyaWJ1dGUiKTsKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpzZXQ8c2V0SlNUZXN0U2VyaWFsaXph
dGlvbkZpcnN0U3RyaW5nQXR0cmlidXRlRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNv
ZGVkVmFsdWUsICJmaXJzdFN0cmluZ0F0dHJpYnV0ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvbkZpcnN0U3RyaW5nQXR0cmlidXRlRnVuY3Rpb24oRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwgSlNWYWx1ZSB2
YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTMwNCw3ICszMDUsNyBAQCBzdGF0aWMg
aW5saW5lIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvCiAKIGJvb2wgc2V0SlNUZXN0U2VyaWFs
aXphdGlvblNlY29uZExvbmdBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJu
IEJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXphdGlvbj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rl
c3RTZXJpYWxpemF0aW9uU2Vjb25kTG9uZ0F0dHJpYnV0ZUZ1bmN0aW9uPihzdGF0ZSwgdGhpc1Zh
bHVlLCBlbmNvZGVkVmFsdWUsICJzZWNvbmRMb25nQXR0cmlidXRlIik7CisgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6c2V0PHNldEpTVGVzdFNlcmlhbGl6YXRp
b25TZWNvbmRMb25nQXR0cmlidXRlRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJzZWNvbmRMb25nQXR0cmlidXRlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RTZXJpYWxpemF0aW9uU2Vjb25kTG9uZ0F0dHJpYnV0ZUZ1bmN0aW9uKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdFNlcmlhbGl6YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0zMjMsNyArMzI0LDcgQEAgc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpbwogCiBib29sIHNldEpTVGVzdFNlcmlhbGl6YXRp
b25UaGlyZFVuc2VyaWFsaXphYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJl
dHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpzZXRBdHRyaWJ1dGU8c2V0
SlNUZXN0U2VyaWFsaXphdGlvblRoaXJkVW5zZXJpYWxpemFibGVBdHRyaWJ1dGVGdW5jdGlvbj4o
c3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGhpcmRVbnNlcmlhbGl6YWJsZUF0dHJp
YnV0ZSIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0U2VyaWFsaXphdGlvbj46OnNl
dDxzZXRKU1Rlc3RTZXJpYWxpemF0aW9uVGhpcmRVbnNlcmlhbGl6YWJsZUF0dHJpYnV0ZUZ1bmN0
aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAidGhpcmRVbnNlcmlhbGl6YWJs
ZUF0dHJpYnV0ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXph
dGlvblRoaXJkVW5zZXJpYWxpemFibGVBdHRyaWJ1dGVGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRl
LCBKU1Rlc3RTZXJpYWxpemF0aW9uJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQpAQCAtMzQyLDcgKzM0Myw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RTZXJpYWxpemF0aW8KIAogYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uRm91cnRo
VW5yZXN0cmljdGVkRG91YmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6YXRpb24+OjpzZXRBdHRyaWJ1dGU8c2V0SlNU
ZXN0U2VyaWFsaXphdGlvbkZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0dHJpYnV0ZUZ1bmN0aW9u
PihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmb3VydGhVbnJlc3RyaWN0ZWREb3Vi
bGVBdHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdFNlcmlhbGl6YXRp
b24+OjpzZXQ8c2V0SlNUZXN0U2VyaWFsaXphdGlvbkZvdXJ0aFVucmVzdHJpY3RlZERvdWJsZUF0
dHJpYnV0ZUZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZm91cnRo
VW5yZXN0cmljdGVkRG91YmxlQXR0cmlidXRlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBz
ZXRKU1Rlc3RTZXJpYWxpemF0aW9uRm91cnRoVW5yZXN0cmljdGVkRG91YmxlQXR0cmlidXRlRnVu
Y3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbiYgdGhpc09iamVjdCwg
SlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTM2MSw3ICszNjIsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvCiAKIGJvb2wgc2V0SlNU
ZXN0U2VyaWFsaXphdGlvbkZpZnRoTG9uZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAg
ICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6c2V0QXR0cmlidXRl
PHNldEpTVGVzdFNlcmlhbGl6YXRpb25GaWZ0aExvbmdBdHRyaWJ1dGVGdW5jdGlvbj4oc3RhdGUs
IHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmlmdGhMb25nQXR0cmlidXRlIik7CisgICAgcmV0
dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6c2V0PHNldEpTVGVzdFNlcmlh
bGl6YXRpb25GaWZ0aExvbmdBdHRyaWJ1dGVGdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImZpZnRoTG9uZ0F0dHJpYnV0ZSIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0U2VyaWFsaXphdGlvbkZpZnRoTG9uZ0F0dHJpYnV0ZUZ1bmN0aW9uKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdFNlcmlhbGl6YXRpb24mIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFs
dWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0zODAsNyArMzgxLDcgQEAgc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpbwogCiBib29sIHNldEpTVGVzdFNlcmlhbGl6
YXRpb25TaXh0aFR5cGVkZWZBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJu
IEJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXphdGlvbj46OnNldEF0dHJpYnV0ZTxzZXRKU1Rl
c3RTZXJpYWxpemF0aW9uU2l4dGhUeXBlZGVmQXR0cmlidXRlRnVuY3Rpb24+KHN0YXRlLCB0aGlz
VmFsdWUsIGVuY29kZWRWYWx1ZSwgInNpeHRoVHlwZWRlZkF0dHJpYnV0ZSIpOworICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0U2VyaWFsaXphdGlvbj46OnNldDxzZXRKU1Rlc3RTZXJpYWxp
emF0aW9uU2l4dGhUeXBlZGVmQXR0cmlidXRlRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJzaXh0aFR5cGVkZWZBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25TaXh0aFR5cGVkZWZBdHRyaWJ1dGVGdW5jdGlv
bihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0aW9uJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDM1LDcgKzQzNiw3IEBAIHN0
YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWEKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04o
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RTZXJp
YWxpemF0aW9uPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlRnVu
Y3Rpb25Ub0pTT05DYWxsZXI+KHN0YXRlLCAidG9KU09OIik7CisgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RTZXJpYWxpemF0aW9uPjo6Y2FsbDxqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90
eXBlRnVuY3Rpb25Ub0pTT05DYWxsZXI+KCpzdGF0ZSwgInRvSlNPTiIpOwogfQogCiBib29sIEpT
VGVzdFNlcmlhbGl6YXRpb25Pd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJp
YWxpemF0aW9uSW5oZXJpdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcAkocmV2aXNp
b24gMjE3NDI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTEgKzIx
LDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXQuaCIKIAorI2luY2x1ZGUgIkpTRE9NQXR0cmlidXRlLmgiCiAjaW5jbHVkZSAiSlNE
T01CaW5kaW5nLmgiCi0jaW5jbHVkZSAiSlNET01CaW5kaW5nQ2FsbGVyLmgiCiAjaW5jbHVkZSAi
SlNET01Db25zdHJ1Y3Rvck5vdENvbnN0cnVjdGFibGUuaCIKICNpbmNsdWRlICJKU0RPTUNvbnZl
cnQuaCIKICNpbmNsdWRlICJKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgiCisjaW5jbHVkZSAiSlNE
T01PcGVyYXRpb24uaCIKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUg
PHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CkBA
IC0xMjcsMTIgKzEyOCwxMiBAQCBKU09iamVjdCogSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQ6
OnByCiAgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJp
dD4odm0sIGdsb2JhbE9iamVjdCk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0KiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
Pjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUpCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdCogSURM
QXR0cmlidXRlPEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Pjo6Y2FzdChFeGVjU3RhdGUmIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCiB7CiAgICAgcmV0dXJuIGpzRHluYW1pY0Rv
d25jYXN0PEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Kj4oc3RhdGUudm0oKSwgSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogfQogCi10ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXJpYWxp
emF0aW9uSW5oZXJpdCogQmluZGluZ0NhbGxlcjxKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdD46
OmNhc3RGb3JPcGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKK3RlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0KiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXQ+OjpjYXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgcmV0dXJuIGpzRHluYW1p
Y0Rvd25jYXN0PEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Kj4oc3RhdGUudm0oKSwgc3RhdGUu
dGhpc1ZhbHVlKCkpOwogfQpAQCAtMTQxLDcgKzE0Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RTZXJpYWxpemF0aW8KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRJbmhlcml0TG9uZ0F0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjxKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdD46OmF0dHJpYnV0ZTxqc1Rlc3RTZXJpYWxpemF0
aW9uSW5oZXJpdEluaGVyaXRMb25nQXR0cmlidXRlR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAi
aW5oZXJpdExvbmdBdHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdFNl
cmlhbGl6YXRpb25Jbmhlcml0Pjo6Z2V0PGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0SW5oZXJp
dExvbmdBdHRyaWJ1dGVHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiaW5oZXJpdExvbmdBdHRy
aWJ1dGUiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25J
bmhlcml0SW5oZXJpdExvbmdBdHRyaWJ1dGVHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
U2VyaWFsaXphdGlvbkluaGVyaXQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
CkBAIC0xODEsNyArMTgyLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFNlcmlhbGl6
YXRpbwogCiBib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0SW5oZXJpdExvbmdBdHRy
aWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0
U2VyaWFsaXphdGlvbkluaGVyaXQ+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRJbmhlcml0TG9uZ0F0dHJpYnV0ZUZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJpbmhlcml0TG9uZ0F0dHJpYnV0ZSIpOworICAgIHJldHVybiBJRExBdHRy
aWJ1dGU8SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQ+OjpzZXQ8c2V0SlNUZXN0U2VyaWFsaXph
dGlvbkluaGVyaXRJbmhlcml0TG9uZ0F0dHJpYnV0ZUZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1
ZSwgZW5jb2RlZFZhbHVlLCAiaW5oZXJpdExvbmdBdHRyaWJ1dGUiKTsKIH0KIAogc3RhdGljIGlu
bGluZSBib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0SW5oZXJpdExvbmdBdHRyaWJ1
dGVGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdCYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTIy
MCw3ICsyMjEsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRQ
cm90b3R5cGVGdW5jdGlvblRvSlNPTihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Pjo6Y2FsbE9wZXJhdGlvbjxq
c1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQ2FsbGVyPihz
dGF0ZSwgInRvSlNPTiIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXph
dGlvbkluaGVyaXQ+OjpjYWxsPGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0UHJvdG90eXBlRnVu
Y3Rpb25Ub0pTT05DYWxsZXI+KCpzdGF0ZSwgInRvSlNPTiIpOwogfQogCiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5o
ZXJpdEZpbmFsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAJKHJldmlzaW9u
IDIxNzQyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEsMTEg
KzIxLDEyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSlNUZXN0U2VyaWFsaXph
dGlvbkluaGVyaXRGaW5hbC5oIgogCisjaW5jbHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNs
dWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNsdWRlICJKU0RPTUJpbmRpbmdDYWxsZXIuaCIKICNp
bmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yTm90Q29uc3RydWN0YWJsZS5oIgogI2luY2x1ZGUgIkpT
RE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKKyNpbmNs
dWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAj
aW5jbHVkZSA8cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQ
dHIuaD4KQEAgLTEzMCwxMiArMTMxLDEyIEBAIEpTT2JqZWN0KiBKU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdEZpbmEKICAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0RmluYWw+KHZtLCBnbG9iYWxPYmplY3QpOwogfQogCi10ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsKiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFNl
cmlhbGl6YXRpb25Jbmhlcml0RmluYWw+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNl
cmlhbGl6YXRpb25Jbmhlcml0RmluYWwqIElETEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxpemF0aW9u
SW5oZXJpdEZpbmFsPjo6Y2FzdChFeGVjU3RhdGUmIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUpCiB7CiAgICAgcmV0dXJuIGpzRHluYW1pY0Rvd25jYXN0PEpTVGVzdFNlcmlhbGl6YXRp
b25Jbmhlcml0RmluYWwqPihzdGF0ZS52bSgpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwq
IEJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbD46OmNhc3RGb3JP
cGVyYXRpb24oRXhlY1N0YXRlJiBzdGF0ZSkKK3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0RmluYWwqIElETE9wZXJhdGlvbjxKU1Rlc3RTZXJpYWxpemF0aW9uSW5o
ZXJpdEZpbmFsPjo6Y2FzdChFeGVjU3RhdGUmIHN0YXRlKQogewogICAgIHJldHVybiBqc0R5bmFt
aWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsKj4oc3RhdGUudm0oKSwg
c3RhdGUudGhpc1ZhbHVlKCkpOwogfQpAQCAtMTQ0LDcgKzE0NSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0aW8KIAogRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFs
aXphdGlvbkluaGVyaXRGaW5hbEZpbmFsTG9uZ0F0dHJpYnV0ZUZvbyhFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4g
QmluZGluZ0NhbGxlcjxKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsPjo6YXR0cmlidXRl
PGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxGaW5hbExvbmdBdHRyaWJ1dGVGb29HZXR0
ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJmaW5hbExvbmdBdHRyaWJ1dGVGb28iKTsKKyAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw+OjpnZXQ8anNU
ZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbEZpbmFsTG9uZ0F0dHJpYnV0ZUZvb0dldHRlcj4o
KnN0YXRlLCB0aGlzVmFsdWUsICJmaW5hbExvbmdBdHRyaWJ1dGVGb28iKTsKIH0KIAogc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxGaW5hbExvbmdB
dHRyaWJ1dGVGb29HZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRGaW5hbCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTE2MCw3
ICsxNjEsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvCiAKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxGaW5hbExvbmdBdHRy
aWJ1dGVCYXIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRGaW5hbD46OmF0dHJpYnV0ZTxqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFs
RmluYWxMb25nQXR0cmlidXRlQmFyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiZmluYWxMb25n
QXR0cmlidXRlQmFyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxpemF0
aW9uSW5oZXJpdEZpbmFsPjo6Z2V0PGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxGaW5h
bExvbmdBdHRyaWJ1dGVCYXJHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiZmluYWxMb25nQXR0
cmlidXRlQmFyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemF0
aW9uSW5oZXJpdEZpbmFsRmluYWxMb25nQXR0cmlidXRlQmFyR2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwmIHRoaXNPYmplY3QsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpCkBAIC0yMDAsNyArMjAxLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNl
dEpTVGVzdFNlcmlhbGl6YXRpbwogCiBib29sIHNldEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
RmluYWxGaW5hbExvbmdBdHRyaWJ1dGVGb28oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJu
IEJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbD46OnNldEF0dHJp
YnV0ZTxzZXRKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsRmluYWxMb25nQXR0cmlidXRl
Rm9vRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImZpbmFsTG9uZ0F0
dHJpYnV0ZUZvbyIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRGaW5hbD46OnNldDxzZXRKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsRmlu
YWxMb25nQXR0cmlidXRlRm9vRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJmaW5hbExvbmdBdHRyaWJ1dGVGb28iKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNl
dEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWxGaW5hbExvbmdBdHRyaWJ1dGVGb29GdW5j
dGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsJiB0
aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjE5
LDcgKzIyMCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW8KIAog
Ym9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsRmluYWxMb25nQXR0cmlidXRl
QmFyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpT
VmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFNl
cmlhbGl6YXRpb25Jbmhlcml0RmluYWw+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0U2VyaWFsaXph
dGlvbkluaGVyaXRGaW5hbEZpbmFsTG9uZ0F0dHJpYnV0ZUJhckZ1bmN0aW9uPihzdGF0ZSwgdGhp
c1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJmaW5hbExvbmdBdHRyaWJ1dGVCYXIiKTsKKyAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWw+OjpzZXQ8c2V0
SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbEZpbmFsTG9uZ0F0dHJpYnV0ZUJhckZ1bmN0
aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiZmluYWxMb25nQXR0cmlidXRl
QmFyIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemF0aW9uSW5o
ZXJpdEZpbmFsRmluYWxMb25nQXR0cmlidXRlQmFyRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbCYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1
ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTI1OCw3ICsyNTksNyBAQCBzdGF0aWMgaW5s
aW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9K
U09OKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0
U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbD46OmNhbGxPcGVyYXRpb248anNUZXN0U2VyaWFsaXph
dGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQ2FsbGVyPihzdGF0ZSwgInRv
SlNPTiIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXphdGlvbkluaGVy
aXRGaW5hbD46OmNhbGw8anNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1
bmN0aW9uVG9KU09OQ2FsbGVyPigqc3RhdGUsICJ0b0pTT04iKTsKIH0KIAogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cAkocmV2aXNpb24gMjE3NDI1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI0LDExICsyNCwxMiBAQAogCiAjaW5jbHVkZSAiSlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmgiCiAKKyNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgotI2luY2x1ZGUgIkpTRE9NQmluZGluZ0NhbGxlci5oIgog
I2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlLmgiCiAjaW5jbHVkZSAi
SlNET01Db252ZXJ0LmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5kbGluZy5oIgorI2lu
Y2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIK
ICNpbmNsdWRlICJKU01lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmgiCkBAIC0xNTIsMTIgKzE1MywxMiBAQCB2b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjCiAgICAgdGhpc09iamVjdC0+SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlOjp+SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKCk7CiB9CiAK
LXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSog
QmluZGluZ0NhbGxlcjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+OjpjYXN0
Rm9yQXR0cmlidXRlKEV4ZWNTdGF0ZSYgc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkK
K3RlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSog
SURMQXR0cmlidXRlPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT46OmNhc3Qo
RXhlY1N0YXRlJiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlKQogewogICAgIHJldHVy
biBqc0R5bmFtaWNEb3duY2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uq
PihzdGF0ZS52bSgpLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiB9CiAKLXRlbXBsYXRl
PD4gaW5saW5lIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogQmluZGluZ0Nh
bGxlcjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+OjpjYXN0Rm9yT3BlcmF0
aW9uKEV4ZWNTdGF0ZSYgc3RhdGUpCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UqIElETE9wZXJhdGlvbjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U+OjpjYXN0KEV4ZWNTdGF0ZSYgc3RhdGUpCiB7CiAgICAgcmV0dXJuIGpz
RHluYW1pY0Rvd25jYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KHN0
YXRlLnZtKCksIHN0YXRlLnRoaXNWYWx1ZSgpKTsKIH0KQEAgLTE2Niw3ICsxNjcsNyBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjCiAKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT46OmF0dHJp
YnV0ZTxqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZUdldHRlcj4oc3Rh
dGUsIHRoaXNWYWx1ZSwgInZhbHVlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+OjpnZXQ8anNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlVmFsdWVHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAidmFsdWUiKTsK
IH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVZhbHVlR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAg
LTE4Miw3ICsxODMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNj
CiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVJl
YWRvbmx5VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6YXR0cmlidXRlPGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVJlYWRvbmx5VmFsdWVHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJyZWFk
b25seVZhbHVlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2U+OjpnZXQ8anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlUmVhZG9ubHlWYWx1ZUdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJyZWFkb25seVZhbHVl
Iik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2VSZWFkb25seVZhbHVlR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKQEAgLTE5OCw3ICsxOTksNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
U2VyaWFsaXplZFNjCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT46OmF0dHJpYnV0ZTxqc1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1ZUdldHRlcj4oc3RhdGUsIHRoaXNWYWx1
ZSwgImNhY2hlZFZhbHVlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+OjpnZXQ8anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ2FjaGVkVmFsdWVHZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAiY2FjaGVkVmFs
dWUiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKQEAgLTIxNyw3ICsyMTgsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
U2VyaWFsaXplZFNjCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVBvcnRzKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT46OmF0dHJpYnV0ZTxqc1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VQb3J0c0dldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInBvcnRzIik7
CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U+OjpnZXQ8anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUG9ydHNHZXR0
ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAicG9ydHMiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBvcnRzR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSYgdGhpc09i
amVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTIzMyw3ICsyMzQsNyBAQCBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFJlYWRvbmx5VmFsdWUoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0g
ICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlPjo6YXR0cmlidXRlPGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hl
ZFJlYWRvbmx5VmFsdWVHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJjYWNoZWRSZWFkb25seVZh
bHVlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2U+OjpnZXQ8anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2Fj
aGVkUmVhZG9ubHlWYWx1ZUdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJjYWNoZWRSZWFkb25s
eVZhbHVlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRSZWFkb25seVZhbHVlR2V0dGVyKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSYgdGhpc09iamVjdCwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTI3Niw3ICsyNzcsNyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjCiAKIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6c2V0QXR0cmli
dXRlPHNldEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVZhbHVlRnVuY3Rpb24+
KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInZhbHVlIik7CisgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+OjpzZXQ8c2V0
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVmFsdWVGdW5jdGlvbj4oKnN0YXRl
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInZhbHVlIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWYWx1ZUZ1bmN0aW9u
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTI5
NSw3ICsyOTYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjCiAK
IGJvb2wgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1
ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFs
dWUsIGVuY29kZWRWYWx1ZSwgImNhY2hlZFZhbHVlIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0
ZTxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+OjpzZXQ8c2V0SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWVGdW5jdGlvbj4oKnN0YXRlLCB0
aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImNhY2hlZFZhbHVlIik7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWNoZWRWYWx1
ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZSYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKQEAgLTMxNSwxNCArMzE2LDcgQEAgSlNWYWx1ZSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcgogICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3QgSlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uRnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5
cGVGdW5jdGlvbkZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCi17Ci0gICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6Y2FsbE9wZXJh
dGlvbjxqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
bkZ1bmN0aW9uQ2FsbGVyPihzdGF0ZSwgImZ1bmN0aW9uIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQ
cm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlv
bkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0zMzUsMTQgKzMyOSwxMiBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uRnVuY3Rpb25SZXR1cm5pbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uUmV0dXJuaW5nKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
LSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25SZXR1cm5pbmdDYWxsZXI+KHN0YXRlLCAiZnVuY3Rp
b25SZXR1cm5pbmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZT46OmNhbGw8anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbkNhbGxlcj4oKnN0YXRlLCAiZnVuY3Rpb24i
KTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25SZXR1cm5pbmdD
YWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uUmV0dXJuaW5nQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTM1MCw2ICszNDIsMTEgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExTZXJpYWxpemVkU2NyaXB0VmFsdWU8U2VyaWFsaXplZFNjcmlwdFZhbHVlPj4oKnN0YXRl
LCAqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIGltcGwuZnVuY3Rpb25SZXR1cm5pbmcoKSkp
OwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25SZXR1cm5pbmcoRXhlY1N0
YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZT46OmNhbGw8anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvblJldHVybmluZ0NhbGxlcj4oKnN0YXRlLCAi
ZnVuY3Rpb25SZXR1cm5pbmciKTsKK30KKwogdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKIHsKICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSo+KGNlbGwpOwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCShy
ZXZpc2lvbiAyMTc0MjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSwxMSArMjEsMTIgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU1Rlc3RUeXBlZGVmcy5oIgogCisjaW5j
bHVkZSAiSlNET01BdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKLSNpbmNs
dWRlICJKU0RPTUJpbmRpbmdDYWxsZXIuaCIKICNpbmNsdWRlICJKU0RPTUNvbnN0cnVjdG9yLmgi
CiAjaW5jbHVkZSAiSlNET01Db252ZXJ0LmgiCiAjaW5jbHVkZSAiSlNET01FeGNlcHRpb25IYW5k
bGluZy5oIgorI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFw
cGVyQ2FjaGUuaCIKICNpbmNsdWRlICJKU1NWR1BvaW50LmgiCiAjaW5jbHVkZSAiSlNUZXN0Q2Fs
bGJhY2tGdW5jdGlvbi5oIgpAQCAtMjM0LDEyICsyMzUsMTIgQEAgdm9pZCBKU1Rlc3RUeXBlZGVm
czo6ZGVzdHJveShKU0M6OkpTQ2VsbAogICAgIHRoaXNPYmplY3QtPkpTVGVzdFR5cGVkZWZzOjp+
SlNUZXN0VHlwZWRlZnMoKTsKIH0KIAotdGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0VHlwZWRlZnMq
IEJpbmRpbmdDYWxsZXI8SlNUZXN0VHlwZWRlZnM+OjpjYXN0Rm9yQXR0cmlidXRlKEV4ZWNTdGF0
ZSYgc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKK3RlbXBsYXRlPD4gaW5saW5lIEpT
VGVzdFR5cGVkZWZzKiBJRExBdHRyaWJ1dGU8SlNUZXN0VHlwZWRlZnM+OjpjYXN0KEV4ZWNTdGF0
ZSYgc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSkKIHsKICAgICByZXR1cm4ganNEeW5h
bWljRG93bmNhc3Q8SlNUZXN0VHlwZWRlZnMqPihzdGF0ZS52bSgpLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiB9CiAKLXRlbXBsYXRlPD4gaW5saW5lIEpTVGVzdFR5cGVkZWZzKiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6Y2FzdEZvck9wZXJhdGlvbihFeGVjU3RhdGUmIHN0
YXRlKQordGVtcGxhdGU8PiBpbmxpbmUgSlNUZXN0VHlwZWRlZnMqIElETE9wZXJhdGlvbjxKU1Rl
c3RUeXBlZGVmcz46OmNhc3QoRXhlY1N0YXRlJiBzdGF0ZSkKIHsKICAgICByZXR1cm4ganNEeW5h
bWljRG93bmNhc3Q8SlNUZXN0VHlwZWRlZnMqPihzdGF0ZS52bSgpLCBzdGF0ZS50aGlzVmFsdWUo
KSk7CiB9CkBAIC0yNDgsNyArMjQ5LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFR5
cGVkZWZzVW5zaQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xv
bmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6YXR0
cmlidXRlPGpzVGVzdFR5cGVkZWZzVW5zaWduZWRMb25nTG9uZ0F0dHJHZXR0ZXI+KHN0YXRlLCB0
aGlzVmFsdWUsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOworICAgIHJldHVybiBJRExBdHRyaWJ1
dGU8SlNUZXN0VHlwZWRlZnM+OjpnZXQ8anNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0
ckdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogfQog
CiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RUeXBlZGVmcyYgdGhpc09iamVjdCwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTI2NCw3ICsyNjUsNyBAQCBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0VHlwZWRlZnNTZXJpCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
U2VyaWFsaXplZFNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVz
dFR5cGVkZWZzPjo6YXR0cmlidXRlPGpzVGVzdFR5cGVkZWZzU2VyaWFsaXplZFNjcmlwdFZhbHVl
R2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAic2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RUeXBlZGVmcz46OmdldDxqc1Rlc3RUeXBlZGVmc1Nl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJzZXJpYWxpemVk
U2NyaXB0VmFsdWUiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
U2VyaWFsaXplZFNjcmlwdFZhbHVlR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFR5cGVk
ZWZzJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMjgwLDcgKzI4MSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0NvbnMKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRlc3RTdWJPYmooRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJu
IEJpbmRpbmdDYWxsZXI8SlNUZXN0VHlwZWRlZnM+OjphdHRyaWJ1dGU8anNUZXN0VHlwZWRlZnND
b25zdHJ1Y3RvclRlc3RTdWJPYmpHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJUZXN0U3ViT2Jq
Iik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RUeXBlZGVmcz46OmdldDxqc1Rlc3RU
eXBlZGVmc0NvbnN0cnVjdG9yVGVzdFN1Yk9iakdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJU
ZXN0U3ViT2JqIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0Nv
bnN0cnVjdG9yVGVzdFN1Yk9iakdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RUeXBlZGVm
cyYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTI5NCw3ICsyOTUsNyBA
QCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyCiAKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdFR5cGVkZWZzQXR0cmlidXRlV2l0aENsYW1wKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6YXR0cmlidXRlPGpzVGVzdFR5cGVkZWZzQXR0cmli
dXRlV2l0aENsYW1wR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiYXR0cmlidXRlV2l0aENsYW1w
Iik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RUeXBlZGVmcz46OmdldDxqc1Rlc3RU
eXBlZGVmc0F0dHJpYnV0ZVdpdGhDbGFtcEdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJhdHRy
aWJ1dGVXaXRoQ2xhbXAiKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFR5cGVk
ZWZzQXR0cmlidXRlV2l0aENsYW1wR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFR5cGVk
ZWZzJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzEwLDcgKzMxMSw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHIKIAogRW5jb2RlZEpT
VmFsdWUganNUZXN0VHlwZWRlZnNBdHRyaWJ1dGVXaXRoQ2xhbXBJblR5cGVkZWYoRXhlY1N0YXRl
KiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAg
cmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0VHlwZWRlZnM+OjphdHRyaWJ1dGU8anNUZXN0VHlw
ZWRlZnNBdHRyaWJ1dGVXaXRoQ2xhbXBJblR5cGVkZWZHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUs
ICJhdHRyaWJ1dGVXaXRoQ2xhbXBJblR5cGVkZWYiKTsKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdFR5cGVkZWZzPjo6Z2V0PGpzVGVzdFR5cGVkZWZzQXR0cmlidXRlV2l0aENsYW1wSW5U
eXBlZGVmR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImF0dHJpYnV0ZVdpdGhDbGFtcEluVHlw
ZWRlZiIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyaWJ1
dGVXaXRoQ2xhbXBJblR5cGVkZWZHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0VHlwZWRl
ZnMmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC0zMjYsNyArMzI3LDcg
QEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cgogCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewotICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6YXR0cmlidXRlPGpzVGVzdFR5cGVkZWZz
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb25HZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJhdHRyV2l0
aEdldHRlckV4Y2VwdGlvbiIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0VHlwZWRl
ZnM+OjpnZXQ8anNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkdldHRlcj4oKnN0
YXRlLCB0aGlzVmFsdWUsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogfQogCiBzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0VHlwZWRlZnNBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RUeXBlZGVmcyYgdGhpc09iamVjdCwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKQEAgLTM0Miw3ICszNDMsNyBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0VHlwZWRlZnNBdHRyCiAKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0VHlw
ZWRlZnM+OjphdHRyaWJ1dGU8anNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkdl
dHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CisgICAg
cmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RUeXBlZGVmcz46OmdldDxqc1Rlc3RUeXBlZGVmc0F0
dHJXaXRoU2V0dGVyRXhjZXB0aW9uR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImF0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RUeXBl
ZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
dFR5cGVkZWZzJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtMzU4LDcg
KzM1OSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmkKIAogRW5j
b2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RUeXBlZGVmcz46OmF0dHJpYnV0ZTxq
c1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uR2V0dGVyPihzdGF0ZSwg
dGhpc1ZhbHVlLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICByZXR1cm4g
SURMQXR0cmlidXRlPEpTVGVzdFR5cGVkZWZzPjo6Z2V0PGpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb25HZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCAic3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKIH0KIAogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dFR5cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25HZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNUZXN0VHlwZWRlZnMmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
CkBAIC0zNzQsNyArMzc1LDcgQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
U3RyaQogCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6
YXR0cmlidXRlPGpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25HZXR0
ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0VHlwZWRlZnM+OjpnZXQ8anNUZXN0VHlwZWRl
ZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUs
ICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogfQogCiBzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkdldHRlcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RUeXBlZGVmcyYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKQEAgLTQxNCw3ICs0MTUsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0VHlwZWRlZnNVbnNpCiAKIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25n
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RU
eXBlZGVmcz46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdB
dHRyRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInVuc2lnbmVkTG9u
Z0xvbmdBdHRyIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RUeXBlZGVmcz46OnNl
dDxzZXRKU1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyRnVuY3Rpb24+KCpzdGF0ZSwg
dGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwogfQogCiBz
dGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNVbnNpZ25lZExvbmdMb25nQXR0ckZ1
bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFR5cGVkZWZzJiB0aGlzT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDMzLDcgKzQzNCw3IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc1NlcmkKIAogYm9vbCBzZXRKU1Rlc3RU
eXBlZGVmc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKLSAgICByZXR1
cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RUeXBlZGVmcz46OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RU
eXBlZGVmc1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBl
bmNvZGVkVmFsdWUsICJzZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsKKyAgICByZXR1cm4gSURMQXR0
cmlidXRlPEpTVGVzdFR5cGVkZWZzPjo6c2V0PHNldEpTVGVzdFR5cGVkZWZzU2VyaWFsaXplZFNj
cmlwdFZhbHVlRnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzZXJp
YWxpemVkU2NyaXB0VmFsdWUiKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFR5
cGVkZWZzU2VyaWFsaXplZFNjcmlwdFZhbHVlRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0VHlwZWRlZnMmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93
U2NvcGUpCkBAIC00NTIsNyArNDUzLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFR5
cGVkZWZzQXR0cgogCiBib29sIHNldEpTVGVzdFR5cGVkZWZzQXR0cmlidXRlV2l0aENsYW1wKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZz
Pjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdFR5cGVkZWZzQXR0cmlidXRlV2l0aENsYW1wRnVuY3Rp
b24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImF0dHJpYnV0ZVdpdGhDbGFtcCIp
OworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0VHlwZWRlZnM+OjpzZXQ8c2V0SlNUZXN0
VHlwZWRlZnNBdHRyaWJ1dGVXaXRoQ2xhbXBGdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVu
Y29kZWRWYWx1ZSwgImF0dHJpYnV0ZVdpdGhDbGFtcCIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0VHlwZWRlZnNBdHRyaWJ1dGVXaXRoQ2xhbXBGdW5jdGlvbihFeGVjU3RhdGUm
IHN0YXRlLCBKU1Rlc3RUeXBlZGVmcyYgdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKQEAgLTQ3MSw3ICs0NzIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
c2V0SlNUZXN0VHlwZWRlZnNBdHRyCiAKIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNBdHRyaWJ1dGVX
aXRoQ2xhbXBJblR5cGVkZWYoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdD
YWxsZXI8SlNUZXN0VHlwZWRlZnM+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0VHlwZWRlZnNBdHRy
aWJ1dGVXaXRoQ2xhbXBJblR5cGVkZWZGdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiYXR0cmlidXRlV2l0aENsYW1wSW5UeXBlZGVmIik7CisgICAgcmV0dXJuIElETEF0
dHJpYnV0ZTxKU1Rlc3RUeXBlZGVmcz46OnNldDxzZXRKU1Rlc3RUeXBlZGVmc0F0dHJpYnV0ZVdp
dGhDbGFtcEluVHlwZWRlZkZ1bmN0aW9uPigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVl
LCAiYXR0cmlidXRlV2l0aENsYW1wSW5UeXBlZGVmIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9v
bCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJpYnV0ZVdpdGhDbGFtcEluVHlwZWRlZkZ1bmN0aW9uKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdFR5cGVkZWZzJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQpAQCAtNDkwLDcgKzQ5MSw3IEBAIHN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHIKIAogYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc0F0
dHJXaXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdFR5cGVkZWZz
QXR0cldpdGhHZXR0ZXJFeGNlcHRpb25GdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdFR5cGVkZWZzPjo6c2V0PHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhHZXR0ZXJF
eGNlcHRpb25GdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uIik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RU
eXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0VHlwZWRlZnMmIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRo
cm93U2NvcGUpCkBAIC01MDksNyArNTEwLDcgQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVz
dFR5cGVkZWZzQXR0cgogCiBib29sIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhTZXR0ZXJFeGNl
cHRpb24oRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGVkVmFsdWUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0
VHlwZWRlZnM+OjpzZXRBdHRyaWJ1dGU8c2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4
Y2VwdGlvbkZ1bmN0aW9uPihzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJhdHRyV2l0
aFNldHRlckV4Y2VwdGlvbiIpOworICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0VHlwZWRl
ZnM+OjpzZXQ8c2V0SlNUZXN0VHlwZWRlZnNBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkZ1bmN0aW9u
Pigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24iKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdFR5cGVkZWZzQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25GdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RUeXBlZGVmcyYg
dGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKQEAgLTUy
OCw3ICs1MjksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNTdHJpCiAK
IGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RUeXBlZGVmcz46
OnNldEF0dHJpYnV0ZTxzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uRnVuY3Rpb24+KHN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgInN0cmluZ0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uIik7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RUeXBl
ZGVmcz46OnNldDxzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
RnVuY3Rpb24+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJzdHJpbmdBdHRyV2l0
aEdldHRlckV4Y2VwdGlvbiIpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0VHlw
ZWRlZnNTdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTVGVzdFR5cGVkZWZzJiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQpAQCAtNTQ3LDcgKzU0OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBzZXRK
U1Rlc3RUeXBlZGVmc1N0cmkKIAogYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2Fs
bGVyPEpTVGVzdFR5cGVkZWZzPjo6c2V0QXR0cmlidXRlPHNldEpTVGVzdFR5cGVkZWZzU3RyaW5n
QXR0cldpdGhTZXR0ZXJFeGNlcHRpb25GdW5jdGlvbj4oc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2Rl
ZFZhbHVlLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKKyAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdFR5cGVkZWZzPjo6c2V0PHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0
cldpdGhTZXR0ZXJFeGNlcHRpb25GdW5jdGlvbj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29kZWRW
YWx1ZSwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgYm9vbCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uRnVu
Y3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0VHlwZWRlZnMmIHRoaXNPYmplY3QsIEpTVmFs
dWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCkBAIC01NjcsMTQgKzU2OCw3IEBAIEpT
VmFsdWUgSlNUZXN0VHlwZWRlZnM6OmdldENvbnN0cnVjdG9yKFYKICAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8Y29uc3Qg
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0VHlwZWRlZnMqLCBKU0M6OlRocm93U2NvcGUmKTsK
LQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uRnVuYyhFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVy
PEpTVGVzdFR5cGVkZWZzPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uRnVuY0NhbGxlcj4oc3RhdGUsICJmdW5jIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY0NhbGxl
cihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNDYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01
ODUsMTQgKzU3OSwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rp
b25TZXRTaGFkb3dDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RUeXBlZGVmcyosIEpTQzo6
VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVk
ZWZzUHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3coRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmMo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RUeXBl
ZGVmcz46OmNhbGxPcGVyYXRpb248anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNo
YWRvd0NhbGxlcj4oc3RhdGUsICJzZXRTaGFkb3ciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVu
Y0NhbGxlcj4oKnN0YXRlLCAiZnVuYyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvd0NhbGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvd0NhbGxlcihKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAg
LTYxMywxNCArNjA1LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSosIEpTVGVzdFR5
cGVkZWZzKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5jZUFyZyhF
eGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBl
ZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2V0U2hhZG93KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAg
cmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0VHlwZWRlZnM+OjpjYWxsT3BlcmF0aW9uPGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmdDYWxsZXI+KHN0
YXRlLCAibWV0aG9kV2l0aFNlcXVlbmNlQXJnIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNo
YWRvd0NhbGxlcj4oKnN0YXRlLCAic2V0U2hhZG93Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aFNlcXVlbmNlQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0VHlwZWRlZnMq
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aFNlcXVlbmNlQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlND
OjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjMyLDE0ICs2MjIsMTIgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodG9KUzxJRExVbnNpZ25lZExvbmdMb25nPihpbXBsLm1ldGhvZFdpdGhTZXF1ZW5jZUFy
ZyhXVEZNb3ZlKHNlcXVlbmNlQXJnKSkpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNl
QXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0VHlwZWRlZnMqLCBKU0M6OlRocm93U2Nv
cGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZUFyZyhFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aFNlcXVlbmNlQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0VHlwZWRlZnM+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlQXJnQ2FsbGVyPihzdGF0ZSwgIm51bGxhYmxl
U2VxdWVuY2VBcmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6
Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFNlcXVlbmNlQXJn
Q2FsbGVyPigqc3RhdGUsICJtZXRob2RXaXRoU2VxdWVuY2VBcmciKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25O
dWxsYWJsZVNlcXVlbmNlQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0VHlw
ZWRlZnMqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
TnVsbGFibGVTZXF1ZW5jZUFyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTY1MiwxNCArNjQwLDEyIEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNlcXVlbmNlT2ZOdWxsYWJs
ZXNBcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RUeXBlZGVmcyosIEpTQzo6VGhyb3dT
Y29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rp
b25OdWxsYWJsZVNlcXVlbmNlQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJp
bmRpbmdDYWxsZXI8SlNUZXN0VHlwZWRlZnM+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnQ2FsbGVyPihzdGF0ZSwgInNl
cXVlbmNlT2ZOdWxsYWJsZXNBcmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5
cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1
ZW5jZUFyZ0NhbGxlcj4oKnN0YXRlLCAibnVsbGFibGVTZXF1ZW5jZUFyZyIpOwogfQogCi1zdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvblNlcXVlbmNlT2ZOdWxsYWJsZXNBcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBK
U1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjcyLDE0ICs2
NTgsMTIgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFi
bGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0VHlw
ZWRlZnMqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFi
bGVzQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TZXF1ZW5jZU9mTnVsbGFibGVzQXJnKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0VHlwZWRlZnM+
OjpjYWxsT3BlcmF0aW9uPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNl
cXVlbmNlT2ZOdWxsYWJsZXNBcmdDYWxsZXI+KHN0YXRlLCAibnVsbGFibGVTZXF1ZW5jZU9mTnVs
bGFibGVzQXJnIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNh
bGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNlcXVlbmNlT2ZOdWxsYWJsZXNBcmdD
YWxsZXI+KCpzdGF0ZSwgInNlcXVlbmNlT2ZOdWxsYWJsZXNBcmciKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25O
dWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZOdWxsYWJsZXNBcmdDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBA
IC02OTIsMTQgKzY3NiwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25OdWxsYWJsZVNlcXVlbmNlT2ZVbmlvbnNBcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBK
U1Rlc3RUeXBlZGVmcyosIEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNl
T2ZVbmlvbnNBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZk51bGxh
Ymxlc0FyZyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdFR5cGVkZWZzPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5pb25zQXJnQ2FsbGVyPihzdGF0ZSwgIm51bGxhYmxlU2Vx
dWVuY2VPZlVuaW9uc0FyZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRl
ZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNl
T2ZOdWxsYWJsZXNBcmdDYWxsZXI+KCpzdGF0ZSwgIm51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxl
c0FyZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZ0NhbGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0Fy
Z0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RUeXBlZGVmcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKQEAgLTcxMiwxNCArNjk0LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvblVuaW9uQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNU
ZXN0VHlwZWRlZnMqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmcoRXhlY1N0YXRl
KiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyhFeGVjU3RhdGUqIHN0YXRl
KQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbE9wZXJh
dGlvbjxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmdDYWxsZXI+KHN0YXRl
LCAidW5pb25BcmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6
Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5p
b25zQXJnQ2FsbGVyPigqc3RhdGUsICJudWxsYWJsZVNlcXVlbmNlT2ZVbmlvbnNBcmciKTsKIH0K
IAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25VbmlvbkFyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdFR5
cGVkZWZzKiBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
blVuaW9uQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdFR5cGVkZWZzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzMyLDE0ICs3MTIsMTIgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcENhbGxlcihKU0M6OkV4
ZWNTdGF0ZSosIEpTVGVzdFR5cGVkZWZzKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNX
aXRoQ2xhbXAoRXhlY1N0YXRlKiBzdGF0ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblVuaW9uQXJnKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7Ci0gICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0VHlwZWRlZnM+OjpjYWxsT3BlcmF0
aW9uPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wQ2FsbGVyPihz
dGF0ZSwgImZ1bmNXaXRoQ2xhbXAiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5
cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uVW5pb25BcmdDYWxs
ZXI+KCpzdGF0ZSwgInVuaW9uQXJnIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcENhbGxl
cihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXBDYWxsZXIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CkBAIC03NTQsMTQgKzczMiwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0K
IAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wSW5UeXBlZGVmQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwg
SlNUZXN0VHlwZWRlZnMqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcElu
VHlwZWRlZihFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcChFeGVjU3RhdGUqIHN0
YXRlKQogewotICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbE9w
ZXJhdGlvbjxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluVHlw
ZWRlZkNhbGxlcj4oc3RhdGUsICJmdW5jV2l0aENsYW1wSW5UeXBlZGVmIik7CisgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXBDYWxsZXI+KCpzdGF0ZSwgImZ1bmNXaXRoQ2xhbXAiKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wSW5UeXBlZGVmQ2FsbGVyKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluVHlwZWRlZkNhbGxlcihKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAg
LTc3NCwxNCArNzUwLDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvblBvaW50RnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RUeXBlZGVmcyos
IEpTQzo6VGhyb3dTY29wZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUp
CitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25GdW5jV2l0aENsYW1wSW5UeXBlZGVmKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0VHlwZWRlZnM+OjpjYWxsT3BlcmF0aW9uPGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9uQ2FsbGVyPihzdGF0ZSwgInBvaW50
RnVuY3Rpb24iKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2Fs
bDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluVHlwZWRlZkNh
bGxlcj4oKnN0YXRlLCAiZnVuY1dpdGhDbGFtcEluVHlwZWRlZiIpOwogfQogCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblBv
aW50RnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RUeXBlZGVmcyog
Y2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1
bmN0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdFR5cGVkZWZzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzg5LDE0ICs3NjMsMTIgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9K
UzxJRExJbnRlcmZhY2U8U1ZHUG9pbnQ+Pigqc3RhdGUsICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgaW1wbC5wb2ludEZ1bmN0aW9uKCkpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5j
ZUZ1bmN0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0VHlwZWRlZnMqLCBKU0M6OlRo
cm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRl
KQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uUG9pbnRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5k
aW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbkNhbGxlcj4oc3RhdGUsICJzdHJp
bmdTZXF1ZW5jZUZ1bmN0aW9uIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBl
ZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblBvaW50RnVuY3Rpb25D
YWxsZXI+KCpzdGF0ZSwgInBvaW50RnVuY3Rpb24iKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1
ZW5jZUZ1bmN0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0VHlwZWRlZnMq
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5n
U2VxdWVuY2VGdW5jdGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTgwOCwxNCArNzgwLDEyIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRvSlM8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4oKnN0YXRlLCAqY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCksIHRocm93U2NvcGUsIGltcGwuc3RyaW5nU2VxdWVuY2VGdW5jdGlv
bihXVEZNb3ZlKHZhbHVlcykpKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlv
bjJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqLCBKU1Rlc3RUeXBlZGVmcyosIEpTQzo6VGhyb3dTY29w
ZSYpOwotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMihFeGVjU3RhdGUqIHN0YXRlKQorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
U3RyaW5nU2VxdWVuY2VGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbjJDYWxsZXI+KHN0YXRlLCAi
c3RyaW5nU2VxdWVuY2VGdW5jdGlvbjIiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2Vx
dWVuY2VGdW5jdGlvbkNhbGxlcj4oKnN0YXRlLCAic3RyaW5nU2VxdWVuY2VGdW5jdGlvbiIpOwog
fQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yQ2FsbGVyKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgSlNUZXN0VHlwZWRlZnMqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbjJDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBA
IC04MjcsMTQgKzc5NywxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETFNlcXVlbmNlPElETERPTVN0
cmluZz4+KCpzdGF0ZSwgKmNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBp
bXBsLnN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yKFdURk1vdmUodmFsdWVzKSkpKTsKIH0KIAotc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZUNhbGxlcihKU0M6OkV4ZWNT
dGF0ZSosIEpTVGVzdFR5cGVkZWZzKiwgSlNDOjpUaHJvd1Njb3BlJik7Ci0KLUVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRo
U2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdT
ZXF1ZW5jZUZ1bmN0aW9uMihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBCaW5kaW5n
Q2FsbGVyPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbE9wZXJhdGlvbjxqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGVDYWxsZXI+KHN0
YXRlLCAiY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUiKTsKKyAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbjJDYWxsZXI+KCpzdGF0ZSwgInN0cmluZ1Nl
cXVlbmNlRnVuY3Rpb24yIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1
aXJlc0luY2x1ZGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RUeXBlZGVmcyog
Y2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25DYWxsV2l0
aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTg0NiwxNCArODE0
LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMQm9vbGVhbj4oaW1wbC5jYWxsV2l0aFNlcXVlbmNl
VGhhdFJlcXVpcmVzSW5jbHVkZShXVEZNb3ZlKHNlcXVlbmNlQXJnKSkpKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoRXhjZXB0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNUZXN0VHlwZWRl
ZnMqLCBKU0M6OlRocm93U2NvcGUmKTsKLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbihFeGVjU3Rh
dGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUoRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RUeXBlZGVmcz46
OmNhbGxPcGVyYXRpb248anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhF
eGNlcHRpb25DYWxsZXI+KHN0YXRlLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOworICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25DYWxsV2l0aFNlcXVlbmNlVGhhdFJlcXVpcmVzSW5jbHVkZUNhbGxlcj4oKnN0
YXRlLCAiY2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGUiKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoRXhjZXB0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0
VHlwZWRlZnMqIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTg2Miw2ICs4MjgsMTEgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb24o
RXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVk
ZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2Vw
dGlvbkNhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOworfQorCiBib29sIEpT
VGVzdFR5cGVkZWZzT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxl
PEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKGhhbmRsZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vV2Vi
S2l0U3VidGxlQ3J5cHRvLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jcnlwdG8v
V2ViS2l0U3VidGxlQ3J5cHRvLmlkbAkocmV2aXNpb24gMjE3NDI1KQorKysgU291cmNlL1dlYkNv
cmUvY3J5cHRvL1dlYktpdFN1YnRsZUNyeXB0by5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI4LDE0
ICsyOCwxNCBAQAogICAgIEdlbmVyYXRlSXNSZWFjaGFibGU9SW1wbERvY3VtZW50LAogICAgIE5v
SW50ZXJmYWNlT2JqZWN0LAogXSBpbnRlcmZhY2UgV2ViS2l0U3VidGxlQ3J5cHRvIHsKLSAgICBb
Q3VzdG9tXSBQcm9taXNlPEFycmF5QnVmZmVyPiBlbmNyeXB0KEFsZ29yaXRobUlkZW50aWZpZXIg
YWxnb3JpdGhtLCBLZXkga2V5LCBzZXF1ZW5jZTxCdWZmZXJTb3VyY2U+IGRhdGEpOwotICAgIFtD
dXN0b21dIFByb21pc2U8QXJyYXlCdWZmZXI+IGRlY3J5cHQoQWxnb3JpdGhtSWRlbnRpZmllciBh
bGdvcml0aG0sIEtleSBrZXksIHNlcXVlbmNlPEJ1ZmZlclNvdXJjZT4gZGF0YSk7Ci0gICAgW0N1
c3RvbV0gUHJvbWlzZTxBcnJheUJ1ZmZlcj4gc2lnbihBbGdvcml0aG1JZGVudGlmaWVyIGFsZ29y
aXRobSwgS2V5IGtleSwgc2VxdWVuY2U8QnVmZmVyU291cmNlPiBkYXRhKTsKLSAgICBbQ3VzdG9t
XSBQcm9taXNlPGJvb2xlYW4+IHZlcmlmeShBbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwg
S2V5IGtleSwgQnVmZmVyU291cmNlIHNpZ25hdHVyZSwgc2VxdWVuY2U8QnVmZmVyU291cmNlPiBk
YXRhKTsKLSAgICBbQ3VzdG9tXSBQcm9taXNlPEFycmF5QnVmZmVyPiBkaWdlc3QoQWxnb3JpdGht
SWRlbnRpZmllciBhbGdvcml0aG0sIHNlcXVlbmNlPEJ1ZmZlclNvdXJjZT4gZGF0YSk7Ci0gICAg
W0N1c3RvbV0gUHJvbWlzZTwoQ3J5cHRvS2V5IG9yIENyeXB0b0tleVBhaXIpPiBnZW5lcmF0ZUtl
eShBbGdvcml0aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgb3B0aW9uYWwgYm9vbGVhbiBleHRyYWN0
YWJsZSwgb3B0aW9uYWwgc2VxdWVuY2U8S2V5VXNhZ2U+IGtleVVzYWdlcyk7Ci0gICAgW0N1c3Rv
bV0gUHJvbWlzZTxDcnlwdG9LZXk+IGltcG9ydEtleShLZXlGb3JtYXQgZm9ybWF0LCBCdWZmZXJT
b3VyY2Uga2V5RGF0YSwgQWxnb3JpdGhtSWRlbnRpZmllcj8gYWxnb3JpdGhtLCBvcHRpb25hbCBi
b29sZWFuIGV4dHJhY3RhYmxlLCBvcHRpb25hbCBzZXF1ZW5jZTxLZXlVc2FnZT4ga2V5VXNhZ2Vz
KTsKLSAgICBbQ3VzdG9tXSBQcm9taXNlPEFycmF5QnVmZmVyPiBleHBvcnRLZXkoS2V5Rm9ybWF0
IGZvcm1hdCwgS2V5IGtleSk7Ci0gICAgW0N1c3RvbV0gUHJvbWlzZTxBcnJheUJ1ZmZlcj4gd3Jh
cEtleShLZXlGb3JtYXQgZm9ybWF0LCBLZXkga2V5LCBLZXkgd3JhcHBpbmdLZXksIEFsZ29yaXRo
bUlkZW50aWZpZXIgd3JhcEFsZ29yaXRobSk7Ci0gICAgW0N1c3RvbV0gUHJvbWlzZTxDcnlwdG9L
ZXk+IHVud3JhcEtleShLZXlGb3JtYXQgZm9ybWF0LCBCdWZmZXJTb3VyY2Ugd3JhcHBlZEtleSwg
S2V5IHVud3JhcHBpbmdLZXksIEFsZ29yaXRobUlkZW50aWZpZXIgdW53cmFwQWxnb3JpdGhtLCBB
bGdvcml0aG1JZGVudGlmaWVyPyB1bndyYXBwZWRLZXlBbGdvcml0aG0sIG9wdGlvbmFsIGJvb2xl
YW4gZXh0cmFjdGFibGUsIG9wdGlvbmFsIHNlcXVlbmNlPEtleVVzYWdlPiBrZXlVc2FnZXMpOwor
ICAgIFtDdXN0b20sIFJldHVybnNPd25Qcm9taXNlXSBQcm9taXNlPEFycmF5QnVmZmVyPiBlbmNy
eXB0KEFsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBLZXkga2V5LCBzZXF1ZW5jZTxCdWZm
ZXJTb3VyY2U+IGRhdGEpOworICAgIFtDdXN0b20sIFJldHVybnNPd25Qcm9taXNlXSBQcm9taXNl
PEFycmF5QnVmZmVyPiBkZWNyeXB0KEFsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBLZXkg
a2V5LCBzZXF1ZW5jZTxCdWZmZXJTb3VyY2U+IGRhdGEpOworICAgIFtDdXN0b20sIFJldHVybnNP
d25Qcm9taXNlXSBQcm9taXNlPEFycmF5QnVmZmVyPiBzaWduKEFsZ29yaXRobUlkZW50aWZpZXIg
YWxnb3JpdGhtLCBLZXkga2V5LCBzZXF1ZW5jZTxCdWZmZXJTb3VyY2U+IGRhdGEpOworICAgIFtD
dXN0b20sIFJldHVybnNPd25Qcm9taXNlXSBQcm9taXNlPGJvb2xlYW4+IHZlcmlmeShBbGdvcml0
aG1JZGVudGlmaWVyIGFsZ29yaXRobSwgS2V5IGtleSwgQnVmZmVyU291cmNlIHNpZ25hdHVyZSwg
c2VxdWVuY2U8QnVmZmVyU291cmNlPiBkYXRhKTsKKyAgICBbQ3VzdG9tLCBSZXR1cm5zT3duUHJv
bWlzZV0gUHJvbWlzZTxBcnJheUJ1ZmZlcj4gZGlnZXN0KEFsZ29yaXRobUlkZW50aWZpZXIgYWxn
b3JpdGhtLCBzZXF1ZW5jZTxCdWZmZXJTb3VyY2U+IGRhdGEpOworICAgIFtDdXN0b20sIFJldHVy
bnNPd25Qcm9taXNlXSBQcm9taXNlPChDcnlwdG9LZXkgb3IgQ3J5cHRvS2V5UGFpcik+IGdlbmVy
YXRlS2V5KEFsZ29yaXRobUlkZW50aWZpZXIgYWxnb3JpdGhtLCBvcHRpb25hbCBib29sZWFuIGV4
dHJhY3RhYmxlLCBvcHRpb25hbCBzZXF1ZW5jZTxLZXlVc2FnZT4ga2V5VXNhZ2VzKTsKKyAgICBb
Q3VzdG9tLCBSZXR1cm5zT3duUHJvbWlzZV0gUHJvbWlzZTxDcnlwdG9LZXk+IGltcG9ydEtleShL
ZXlGb3JtYXQgZm9ybWF0LCBCdWZmZXJTb3VyY2Uga2V5RGF0YSwgQWxnb3JpdGhtSWRlbnRpZmll
cj8gYWxnb3JpdGhtLCBvcHRpb25hbCBib29sZWFuIGV4dHJhY3RhYmxlLCBvcHRpb25hbCBzZXF1
ZW5jZTxLZXlVc2FnZT4ga2V5VXNhZ2VzKTsKKyAgICBbQ3VzdG9tLCBSZXR1cm5zT3duUHJvbWlz
ZV0gUHJvbWlzZTxBcnJheUJ1ZmZlcj4gZXhwb3J0S2V5KEtleUZvcm1hdCBmb3JtYXQsIEtleSBr
ZXkpOworICAgIFtDdXN0b20sIFJldHVybnNPd25Qcm9taXNlXSBQcm9taXNlPEFycmF5QnVmZmVy
PiB3cmFwS2V5KEtleUZvcm1hdCBmb3JtYXQsIEtleSBrZXksIEtleSB3cmFwcGluZ0tleSwgQWxn
b3JpdGhtSWRlbnRpZmllciB3cmFwQWxnb3JpdGhtKTsKKyAgICBbQ3VzdG9tLCBSZXR1cm5zT3du
UHJvbWlzZV0gUHJvbWlzZTxDcnlwdG9LZXk+IHVud3JhcEtleShLZXlGb3JtYXQgZm9ybWF0LCBC
dWZmZXJTb3VyY2Ugd3JhcHBlZEtleSwgS2V5IHVud3JhcHBpbmdLZXksIEFsZ29yaXRobUlkZW50
aWZpZXIgdW53cmFwQWxnb3JpdGhtLCBBbGdvcml0aG1JZGVudGlmaWVyPyB1bndyYXBwZWRLZXlB
bGdvcml0aG0sIG9wdGlvbmFsIGJvb2xlYW4gZXh0cmFjdGFibGUsIG9wdGlvbmFsIHNlcXVlbmNl
PEtleVVzYWdlPiBrZXlVc2FnZXMpOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Gb250
RmFjZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmlkbAko
cmV2aXNpb24gMjE3NDI1KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmlkbAkod29y
a2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNiBAQCBkaWN0aW9uYXJ5IEZvbnRGYWNlRGVzY3JpcHRv
cnMgewogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEZvbnRGYWNlTG9hZFN0YXR1cyBzdGF0dXM7
CiAKLSAgICBbQ3VzdG9tXSBQcm9taXNlPEZvbnRGYWNlPiBsb2FkKCk7CisgICAgW0N1c3RvbSwg
UmV0dXJuc093blByb21pc2VdIFByb21pc2U8Rm9udEZhY2U+IGxvYWQoKTsKICAgICBbQ2FjaGVk
QXR0cmlidXRlLCBDdXN0b21HZXR0ZXJdIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlPEZvbnRG
YWNlPiBsb2FkZWQ7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1lbnRS
ZWdpc3RyeS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0N1c3RvbUVsZW1l
bnRSZWdpc3RyeS5pZGwJKHJldmlzaW9uIDIxNzQyNSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9D
dXN0b21FbGVtZW50UmVnaXN0cnkuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw1ICszMCw1IEBA
CiBdIGludGVyZmFjZSBDdXN0b21FbGVtZW50UmVnaXN0cnkgewogICAgIFtDRVJlYWN0aW9ucywg
Q3VzdG9tXSB2b2lkIGRlZmluZShET01TdHJpbmcgbmFtZSwgRnVuY3Rpb24gY29uc3RydWN0b3Ip
OwogICAgIGFueSBnZXQoRE9NU3RyaW5nIG5hbWUpOwotICAgIFtDdXN0b20sIE1heVRocm93RXhj
ZXB0aW9uXSBQcm9taXNlPHZvaWQ+IHdoZW5EZWZpbmVkKERPTVN0cmluZyBuYW1lKTsKKyAgICBb
Q3VzdG9tLCBNYXlUaHJvd0V4Y2VwdGlvbiwgUmV0dXJuc093blByb21pc2VdIFByb21pc2U8dm9p
ZD4gd2hlbkRlZmluZWQoRE9NU3RyaW5nIG5hbWUpOwogfTsK
</data>
<flag name="review"
          id="332235"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>