<?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>172480</bug_id>
          
          <creation_ts>2017-05-22 17:10:23 -0700</creation_ts>
          <short_desc>[WebIDL] Overloaded functions should throw this object check exception before argument check exception</short_desc>
          <delta_ts>2017-05-30 20:24:40 -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>Bindings</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>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1311677</commentid>
    <comment_count>0</comment_count>
      <attachid>310959</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-22 17:10:23 -0700</bug_when>
    <thetext>Created attachment 310959
Test case

Overloaded functions currently do argument checks before the this object check, which leads to the exceptions being thrown in the wrong order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313321</commentid>
    <comment_count>1</comment_count>
      <attachid>311400</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-26 17:15:31 -0700</bug_when>
    <thetext>Created attachment 311400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313341</commentid>
    <comment_count>2</comment_count>
      <attachid>311400</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-26 18:49:54 -0700</bug_when>
    <thetext>Comment on attachment 311400
Patch

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

r=me

&gt; Source/WebCore/ChangeLog:13
&gt; +        - Made is so all operations, including static ones, use the trampoline / body model,

made *it* ?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:4401
&gt; +    assert(&quot;[Custom] is not support for overloaded operations.&quot;) if $isCustom &amp;&amp; $isOverloaded;

*supported*

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp:393
&gt; +static inline JSC::EncodedJSValue jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperationBody2(JSC::ExecState* state, typename IDLOperation&lt;JSTestGlobalObject&gt;::ClassParameter castedThis, JSC::ThrowScope&amp; throwScope)

My personal preference would have been Operation2Body rather than OperationBody2.

&gt; Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp:886
&gt; +static inline JSC::EncodedJSValue jsTestInterfacePrototypeFunctionSupplementalMethod2Body(JSC::ExecState* state, typename IDLOperation&lt;JSTestInterface&gt;::ClassParameter castedThis, JSC::ThrowScope&amp; throwScope)

Notice that the format here is Method2Body, not MethodBody2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1313349</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-05-26 19:54:04 -0700</bug_when>
    <thetext>Committed r217518: &lt;http://trac.webkit.org/changeset/217518&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1314049</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-05-30 20:24:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/32479788&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>310959</attachid>
            <date>2017-05-22 17:10:23 -0700</date>
            <delta_ts>2017-05-22 17:10:23 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>overloadTest.html</filename>
            <type>text/html</type>
            <size>645</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">PHByZSBpZD0nY29uc29sZSc+PC9wcmU+CjxjYW52YXMgaWQ9J2MnPgo8c2NyaXB0PgogICAgZnVu
Y3Rpb24gbG9nKG1zZykKICAgIHsKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29u
c29sZScpLmFwcGVuZChtc2cgKyAnXG4nKTsKICAgIH0KCiAgICB2YXIgYyA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjJyk7CiAgICB2YXIgY29udGV4dCA9IGMuZ2V0Q29udGV4dCgnMmQnKTsK
CiAgICBsb2coIlRlc3QgMTogVGhpcyBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9uIHJlZ2FyZGlu
ZyBub3QgZW5vdWdoIGFyZ3VtZW50cy4iKQogICAgdHJ5IHsKICAgICAgICBjb250ZXh0LmlzUG9p
bnRJblBhdGgoMSk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgbG9nKGUpOwogICAgfQogICAg
bG9nKCIiKTsKCiAgICBsb2coIlRlc3QgMjogVGhpcyBzaG91bGQgdGhyb3cgYW4gZXhjZXB0aW9u
IHJlZ2FyZGluZyB0aGUgZnVuY3Rpb24gb25seSBiZWluZyBjYWxsZWQgb24gaW5zdGFuY2VzIG9m
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCIpCiAgICB0cnkgewogICAgICAgIGNvbnRleHQuaXNQ
b2ludEluUGF0aC5jYWxsKHsgfSwgMSk7CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgbG9nKGUp
OwogICAgfQo8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>311400</attachid>
            <date>2017-05-26 17:15:31 -0700</date>
            <delta_ts>2017-05-26 18:49:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172480-20170526171523.patch</filename>
            <type>text/plain</type>
            <size>306466</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxNzUxMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg1IEBACisyMDE3LTA1LTI2ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dlYklETF0gT3ZlcmxvYWRlZCBmdW5j
dGlvbnMgc2hvdWxkIHRocm93IHRoaXMgb2JqZWN0IGNoZWNrIGV4Y2VwdGlvbiBiZWZvcmUgYXJn
dW1lbnQgY2hlY2sgZXhjZXB0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzI0ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAtIENvZGlmaWVzIG5hbWluZyBmb3IgYm90aCBwYXJ0cyBvZiB0aGUgb3Bl
cmF0aW9uL2F0dHJpYnV0ZSBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbjoKKyAgICAgICAgICAtIFRo
ZSAndHJhbXBvbGluZScgd2hpY2ggaXMgdGhlIGFjdHVhbCBob3N0IGZ1bmN0aW9uIGFuZCBzaW1w
bHkgY2FsbHMgSURMT3BlcmF0aW9uLAorICAgICAgICAgICAgSURMT3BlcmF0aW9uUmV0dXJuaW5n
UHJvbWlzZSBvciBJRExBdHRyaWJ1dGUuCisgICAgICAgICAgLSBUaGUgJ2JvZHknIHdoaWNoIGlz
IHdoZXJlIGFyZ3VtZW50IGNoZWNraW5nIGFuZCBjYWxsaW5nIGludG8gdGhlIGltcGxlbWVudGF0
aW9uCisgICAgICAgICAgICB0YWtlcyBwbGFjZS4KKyAgICAgICAgLSBNYWRlIGlzIHNvIGFsbCBv
cGVyYXRpb25zLCBpbmNsdWRpbmcgc3RhdGljIG9uZXMsIHVzZSB0aGUgdHJhbXBvbGluZSAvIGJv
ZHkgbW9kZWwsCisgICAgICAgICAgc2ltcGxpZnlpbmcgY29kZSBnZW5lcmF0aW9uLiBUaGUgb25l
IGV4Y2VwdGlvbiBpcyBmb3Igb3ZlcmxvYWRlZCBvcGVyYXRpb25zLCB3aGljaAorICAgICAgICAg
IG5vdyBoYXZlIGEgdHJhbXBvbGluZSBhbmQgYm9keSBmb3IgdGhlIGRpc3BhdGNoZXIsIGFuZCBv
bmx5IGJvZGllcyBmb3IgYWxsIHRoZSAKKyAgICAgICAgICBvdmVybG9hZHMuIFRoaXMgaXMgd2hh
dCBmaXhlcyB0aGUgYnVnLCBzaW5jZSBub3cgdGhhdCB0aGUgZGlzcGF0Y2hlciBoYXMgYSB0cmFt
cG9saW5lLAorICAgICAgICAgIGl0IGNhbiBkbyB0aGUgY29ycmVjdCB0aGlzIG9iamVjdCBjaGVj
a2luZyB2aWEgSURMT3BlcmF0aW9uIC8gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS4KKyAg
ICAgICAgLSBTcGxpdCBvdXQgY29kZSBnZW5lcmF0aW9uIGZvciB0cmFtcG9saW5lIGFuZCBib2R5
IGludG8gc2VwYXJhdGUgc3Vicm91dGluZXMgYW5kIAorICAgICAgICAgIHNpbXBsaWZpZWQgdGhl
aXIgaW1wbGVtZW50YXRpb25zLgorICAgICAgICAtIENoYW5nZWQgR2VuZXJhdGVPdmVybG9hZERp
c3BhdGNoZXIgdG8gb25seSBnZW5lcmF0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24sIGxlYXZp
bmcgaXQKKyAgICAgICAgICB1cCB0byB0aGUgY2FsbGVyIHRvIGdlbmVyYXRlIHRoZSBzaWduYXR1
cmUsIGJyYWNlcyBhbmQgY29uZGl0aW9uYWxzIGlmIG5lZWRlZC4KKyAgICAgICAgLSBNYWRlIG1v
cmUgc3Vicm91dGluZXMgdGFrZSBhbiBvdXRwdXQgYXJyYXkgYW5kIGluZGVudCwgaW4gc3VwcG9y
dCBvZiBmdXR1cmUgZW5kZWF2b3JzCisgICAgICAgICAgdGhhdCB3aWxsIG5lZWQgdGhhdCBzdXBw
b3J0LgorICAgICAgICAtIFJlbW92ZSB1bm5lY2Vzc2FyeSAjaW5jbHVkZXMgb2YgPHJ1bnRpbWUv
RXJyb3IuaD4sIHdoaWNoIGdldHMgaW5jbHVkZWQgYWxyZWFkeSBieSB2aXJ0dWUKKyAgICAgICAg
ICBvZiBKU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmgKKworICAgICAgICBUZXN0OiBqcy9kb20vb3Zl
cmxvYWRlZC1vcGVyYXRpb24tZXhjZXB0aW9uLW9yZGVyLmh0bWwKKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTRE9NT3BlcmF0aW9uLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01PcGVy
YXRpb25SZXR1cm5pbmdQcm9taXNlLmg6CisgICAgICAgIEFkZCBuby1vcCBzdGF0aWMgdmVyc2lv
bnMgb2YgdGhlIGJvdW5jZXIgZnVuY3Rpb25zLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZU92ZXJsb2FkRGlzcGF0Y2hl
cik6CisgICAgICAgIChHZW5lcmF0ZU9wZXJhdGlvblRyYW1wb2xpbmVEZWZpbml0aW9uKToKKyAg
ICAgICAgKEdlbmVyYXRlT3BlcmF0aW9uQm9keURlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJh
dGVPcGVyYXRpb25EZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlU2VyaWFsaXplckRlZmlu
aXRpb24pOgorICAgICAgICAoR2VuZXJhdGVMZWdhY3lDYWxsZXJEZWZpbml0aW9ucyk6CisgICAg
ICAgIChHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVB
cmd1bWVudHNDb3VudENoZWNrKToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToK
KyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwpOgorICAgICAgICAo
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbkN1c3RvbUZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChHZW5l
cmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbnMpOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3Rv
ckRlZmluaXRpb24pOgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTSW50
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
ZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICBVcGRhdGUgdGVzdCByZXN1bHRzLgorCiAyMDE3LTA1
LTI2ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgSlND
b250ZXh0IEluc3BlY3RvcjogSW1wcm92ZSB0aGUgcmVsaWFiaWxpdHkgb2YgYXV0b21hdGljYWxs
eSBwYXVzaW5nIGluIGF1dG8tYXR0YWNoCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTU9wZXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NT3BlcmF0aW9uLmgJKHJldmlzaW9uIDIxNzUxMikKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NT3BlcmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAgY2xhc3MgSURMT3BlcmF0aW9uIHsKIHB1YmxpYzoKICAgICB1c2luZyBDbGFzc1BhcmFt
ZXRlciA9IEpTQ2xhc3MqOwogICAgIHVzaW5nIE9wZXJhdGlvbiA9IEpTQzo6RW5jb2RlZEpTVmFs
dWUoSlNDOjpFeGVjU3RhdGUqLCBDbGFzc1BhcmFtZXRlciwgSlNDOjpUaHJvd1Njb3BlJik7Cisg
ICAgdXNpbmcgU3RhdGljT3BlcmF0aW9uID0gSlNDOjpFbmNvZGVkSlNWYWx1ZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6VGhyb3dTY29wZSYpOwogCiAgICAgc3RhdGljIEpTQ2xhc3MqIGNhc3QoSlND
OjpFeGVjU3RhdGUmKTsKIApAQCAtNTEsNiArNTIsMTUgQEAgcHVibGljOgogICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHJlZmFjdG9yIHRoZSBiaW5kaW5nIGdlbmVyYXRlZCBjb2RlIHRvIHVz
ZSByZWZlcmVuY2VzIGZvciBzdGF0ZSBhbmQgdGhpc09iamVjdC4KICAgICAgICAgcmV0dXJuIG9w
ZXJhdGlvbigmc3RhdGUsIHRoaXNPYmplY3QsIHRocm93U2NvcGUpOwogICAgIH0KKworICAgIHRl
bXBsYXRlPFN0YXRpY09wZXJhdGlvbiBvcGVyYXRpb24sIENhc3RlZFRoaXNFcnJvckJlaGF2aW9y
IHNob3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlRocm93PgorICAgIHN0YXRp
YyBKU0M6OkVuY29kZWRKU1ZhbHVlIGNhbGxTdGF0aWMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBj
b25zdCBjaGFyKikKKyAgICB7CisgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUoc3RhdGUudm0oKSk7CisKKyAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWZh
Y3RvciB0aGUgYmluZGluZyBnZW5lcmF0ZWQgY29kZSB0byB1c2UgcmVmZXJlbmNlcyBmb3Igc3Rh
dGUuCisgICAgICAgIHJldHVybiBvcGVyYXRpb24oJnN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICB9
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU9wZXJhdGlvblJldHVybmluZ1Byb21pc2Uu
aAkocmV2aXNpb24gMjE3NTEyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01P
cGVyYXRpb25SZXR1cm5pbmdQcm9taXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAgY2xhc3MgSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZSB7CiBwdWJsaWM6CiAgICAgdXNp
bmcgQ2xhc3NQYXJhbWV0ZXIgPSBKU0NsYXNzKjsKICAgICB1c2luZyBPcGVyYXRpb24gPSBKU0M6
OkVuY29kZWRKU1ZhbHVlKEpTQzo6RXhlY1N0YXRlKiwgQ2xhc3NQYXJhbWV0ZXIsIFJlZjxEZWZl
cnJlZFByb21pc2U+JiYsIEpTQzo6VGhyb3dTY29wZSYpOworICAgIHVzaW5nIFN0YXRpY09wZXJh
dGlvbiA9IEpTQzo6RW5jb2RlZEpTVmFsdWUoSlNDOjpFeGVjU3RhdGUqLCBSZWY8RGVmZXJyZWRQ
cm9taXNlPiYmLCBKU0M6OlRocm93U2NvcGUmKTsKIAogICAgIHRlbXBsYXRlPE9wZXJhdGlvbiBv
cGVyYXRpb24sIFByb21pc2VFeGVjdXRpb25TY29wZSBleGVjdXRpb25TY29wZSwgQ2FzdGVkVGhp
c0Vycm9yQmVoYXZpb3Igc2hvdWxkVGhyb3cgPSBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6UmVq
ZWN0UHJvbWlzZT4KICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBjYWxsKEpTQzo6RXhl
Y1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogb3BlcmF0aW9uTmFtZSkKQEAgLTY5LDYgKzcwLDI4
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCByZWZhY3RvciB0aGUgYmlu
ZGluZyBnZW5lcmF0ZWQgY29kZSB0byB1c2UgcmVmZXJlbmNlcyBmb3Igc3RhdGUgYW5kIHRoaXNP
YmplY3QuCiAgICAgICAgIHJldHVybiBvcGVyYXRpb24oJnN0YXRlLCB0aGlzT2JqZWN0LCB0aHJv
d1Njb3BlKTsKICAgICB9CisKKyAgICB0ZW1wbGF0ZTxTdGF0aWNPcGVyYXRpb24gb3BlcmF0aW9u
LCBQcm9taXNlRXhlY3V0aW9uU2NvcGUgZXhlY3V0aW9uU2NvcGUsIENhc3RlZFRoaXNFcnJvckJl
aGF2aW9yIHNob3VsZFRocm93ID0gQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OlJlamVjdFByb21p
c2U+CisgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgY2FsbFN0YXRpYyhKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqKQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6SlNW
YWx1ZTo6ZW5jb2RlKGNhbGxQcm9taXNlRnVuY3Rpb248ZXhlY3V0aW9uU2NvcGU+KHN0YXRlLCBb
XSAoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2Up
IHsKKyAgICAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoc3Rh
dGUudm0oKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQg
cmVmYWN0b3IgdGhlIGJpbmRpbmcgZ2VuZXJhdGVkIGNvZGUgdG8gdXNlIHJlZmVyZW5jZXMgZm9y
IHN0YXRlLgorICAgICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbigmc3RhdGUsIFdURk1vdmUocHJv
bWlzZSksIHRocm93U2NvcGUpOworICAgICAgICB9KSk7CisgICAgfQorCisgICAgLy8gVGhpcyBm
dW5jdGlvbiBpcyBhIHNwZWNpYWwgY2FzZSBmb3IgY3VzdG9tIG9wZXJhdGlvbnMgd2FudCB0byBo
YW5kbGUgdGhlIGNyZWF0aW9uIG9mIHRoZSBwcm9taXNlIHRoZW1zZWx2ZXMuCisgICAgLy8gSXQg
aXMgdHJpZ2dlcmVkIHZpYSB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIFtSZXR1cm5zT3duUHJvbWlz
ZV0uCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTQ2xhc3M+OjpTdGF0aWNP
cGVyYXRpb24gb3BlcmF0aW9uLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvciBzaG91bGRUaHJvdyA9
IENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpSZWplY3RQcm9taXNlPgorICAgIHN0YXRpYyBKU0M6
OkVuY29kZWRKU1ZhbHVlIGNhbGxTdGF0aWNSZXR1cm5pbmdPd25Qcm9taXNlKEpTQzo6RXhlY1N0
YXRlJiBzdGF0ZSwgY29uc3QgY2hhciopCisgICAgeworICAgICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHN0YXRlLnZtKCkpOworCisgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgcmVmYWN0b3IgdGhlIGJpbmRpbmcgZ2VuZXJhdGVkIGNvZGUgdG8gdXNlIHJlZmVy
ZW5jZXMgZm9yIHN0YXRlLgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uKCZzdGF0ZSwgdGhyb3dT
Y29wZSk7CisgICAgfQogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJl
dmlzaW9uIDIxNzUxMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBAIC0yNjA0LDcgKzI2MDQsNyBAQCBzdWIgR2V0
Q29uZGl0aW9uYWxGb3JPcGVyYXRpb25Db25zaWRlcmluCiAjIGh0dHA6Ly9oZXljYW0uZ2l0aHVi
LmlvL3dlYmlkbC8jZXMtb3ZlcmxvYWRzCiBzdWIgR2VuZXJhdGVPdmVybG9hZERpc3BhdGNoZXIK
IHsKLSAgICBteSAoJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJG92ZXJsb2FkRnVuY3Rpb25QcmVm
aXgsICRmdW5jdGlvblNpZ25hdHVyZSkgPSBAXzsKKyAgICBteSAoJG9wZXJhdGlvbiwgJGludGVy
ZmFjZSwgJG92ZXJsb2FkRnVuY3Rpb25QcmVmaXgsICRwYXJhbWV0ZXJzVG9Gb3J3YXJkKSA9IEBf
OwogICAgIAogICAgIG15ICVhbGxTZXRzID0gQ29tcHV0ZUVmZmVjdGl2ZU92ZXJsb2FkU2V0KCRv
cGVyYXRpb24tPntvdmVybG9hZHN9KTsKIApAQCAtMjYxNCw3ICsyNjE0LDcgQEAgc3ViIEdlbmVy
YXRlT3ZlcmxvYWREaXNwYXRjaGVyCiAgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRj
b2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRvdmVybG9hZCk7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAk
Y29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBp
ZiAoJGNvbmRpdGlvbilcbiAgICAiKSBpZiAkY29uZGl0aW9uOwotICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAgICAgcmV0dXJuICR7b3ZlcmxvYWRGdW5jdGlvblByZWZpeH0iIC4gJG92
ZXJsb2FkLT57b3ZlcmxvYWRJbmRleH0gLiAiKHN0YXRlKTtcbiIpOworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuICR7b3ZlcmxvYWRGdW5jdGlvblByZWZpeH0iIC4g
JG92ZXJsb2FkLT57b3ZlcmxvYWRJbmRleH0gLiAiKCR7cGFyYW1ldGVyc1RvRm9yd2FyZH0pO1xu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9u
YWxTdHJpbmc7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCRpbmNsdWRlLCAkb3ZlcmxvYWQt
PmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25kaXRpb25hbCJ9KSBpZiAkaW5jbHVkZTsKICAgICB9
OwpAQCAtMjY4NSwyMiArMjY4NSwxMSBAQCBzdWIgR2VuZXJhdGVPdmVybG9hZERpc3BhdGNoZXIK
IAogICAgIG15ICRtYXhBcmdDb3VudCA9IExlbmd0aE9mTG9uZ2VzdE9wZXJhdGlvblBhcmFtZXRl
ckxpc3QoJG9wZXJhdGlvbi0+e292ZXJsb2Fkc30pOwogCi0gICAgbXkgJGNvbmRpdGlvbmFsQXR0
cmlidXRlID0gR2V0Q29uZGl0aW9uYWxGb3JPcGVyYXRpb25Db25zaWRlcmluZ092ZXJsb2Fkcygk
b3BlcmF0aW9uKTsKLSAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29uZGl0aW9uYWxBdHRy
aWJ1dGUgPyAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZ0Zyb21BdHRy
aWJ1dGVWYWx1ZSgkY29uZGl0aW9uYWxBdHRyaWJ1dGUpIDogdW5kZWY7Ci0gICAgcHVzaChAaW1w
bENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIiRmdW5jdGlvblNpZ25hdHVyZVxuIik7Ci0g
ICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsgICAgCi17Ci0gICAgVk0mIHZtID0gc3RhdGUt
PnZtKCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0g
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwotICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGQ6
Om1pbjxzaXplX3Q+KCRtYXhBcmdDb3VudCwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7Ci1FTkQK
KyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48
c2l6ZV90Pigke21heEFyZ0NvdW50fSwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7XG4iKTsKIAog
ICAgIGZvciBteSAkbGVuZ3RoICggc29ydCBrZXlzICVhbGxTZXRzICkgewotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAgIGlmIChhcmdzQ291bnQgPT0gJGxlbmd0aCkgewot
RU5ECisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChhcmdzQ291bnQgPT0gJHts
ZW5ndGh9KSB7XG4iKTsKKwogICAgICAgICBteSAkUyA9ICRhbGxTZXRzeyRsZW5ndGh9OwogICAg
ICAgICBpZiAoc2NhbGFyKEAkUykgPiAxKSB7CiAgICAgICAgICAgICBteSAkZCA9IEdldERpc3Rp
bmd1aXNoaW5nQXJndW1lbnRJbmRleCgkb3BlcmF0aW9uLCAkUyk7CkBAIC0yNzgxLDkgKzI3NzAs
NiBAQCBFTkQKICAgICB9IGVsc2UgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7XG4iKQogICAgIH0KLSAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn1cbiIpOwotICAgIHB1c2goQGltcGxDb250ZW50LCAiI2Vu
ZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7Ci0gICAgcHVzaChAaW1wbENvbnRlbnQsICJc
biIpOwogfQogCiAjIEFzIHBlciBXZWIgSURMIHNwZWNpZmljYXRpb24sIHRoZSBsZW5ndGggb2Yg
YSBmdW5jdGlvbiBPYmplY3QgaXMgaXRzIG51bWJlciBvZiBtYW5kYXRvcnkgcGFyYW1ldGVycy4K
QEAgLTQzMTAsNiArNDI5Niw5NyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJEZWZpbml0
aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcblxuIikgaWYgJGNvbmRpdGlvbmFs
OwogfQogCitzdWIgR2VuZXJhdGVPcGVyYXRpb25UcmFtcG9saW5lRGVmaW5pdGlvbgoreworICAg
IG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRvcGVyYXRpb24sICRm
dW5jdGlvbk5hbWUsICRmdW5jdGlvbkJvZHlOYW1lKSA9IEBfOworCisgICAgbXkgJGhhc1Byb21p
c2VSZXR1cm5UeXBlID0gJGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUoJG9wZXJhdGlvbi0+
dHlwZSk7CisgICAgbXkgJGlkbE9wZXJhdGlvblR5cGUgPSAkaGFzUHJvbWlzZVJldHVyblR5cGUg
PyAiSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZSIgOiAiSURMT3BlcmF0aW9uIjsKKyAgICBt
eSAkZXhwb3N1cmVTY29wZSA9ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0V4cG9z
ZWR9ID8gIldpbmRvd09yV29ya2VyIiA6ICJXaW5kb3dPbmx5IjsKKworICAgIG15ICRjYWxsRnVu
Y3Rpb25OYW1lID0gImNhbGwiOworICAgICRjYWxsRnVuY3Rpb25OYW1lIC49ICJTdGF0aWMiIGlm
ICRvcGVyYXRpb24tPmlzU3RhdGljOworICAgICRjYWxsRnVuY3Rpb25OYW1lIC49ICJSZXR1cm5p
bmdPd25Qcm9taXNlIiBpZiAkaGFzUHJvbWlzZVJldHVyblR5cGUgJiYgJG9wZXJhdGlvbi0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57UmV0dXJuc093blByb21pc2V9OworCisgICAgbXkgQGNhbGxGdW5j
dGlvblRlbXBsYXRlQXJndW1lbnRzID0gKCk7CisgICAgcHVzaChAY2FsbEZ1bmN0aW9uVGVtcGxh
dGVBcmd1bWVudHMsICRmdW5jdGlvbkJvZHlOYW1lKTsKKyAgICBwdXNoKEBjYWxsRnVuY3Rpb25U
ZW1wbGF0ZUFyZ3VtZW50cywgIlByb21pc2VFeGVjdXRpb25TY29wZTo6JHtleHBvc3VyZVNjb3Bl
fSIpIGlmICRoYXNQcm9taXNlUmV0dXJuVHlwZSAmJiAhJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57UmV0dXJuc093blByb21pc2V9OworICAgIHB1c2goQGNhbGxGdW5jdGlvblRlbXBs
YXRlQXJndW1lbnRzLCAiQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydCIpIGlmICgkb3Bl
cmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQcml2YXRlSWRlbnRpZmllcn0gYW5kIG5vdCAk
b3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntQdWJsaWNJZGVudGlmaWVyfSk7CisKKyAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7ZnVu
Y3Rpb25OYW1lfShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5
LCAie1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHJldHVybiAke2lkbE9wZXJh
dGlvblR5cGV9PCR7Y2xhc3NOYW1lfT46OiR7Y2FsbEZ1bmN0aW9uTmFtZX08IiAuIGpvaW4oIiwg
IiwgQGNhbGxGdW5jdGlvblRlbXBsYXRlQXJndW1lbnRzKSAuICI+KCpzdGF0ZSwgXCIiIC4gJG9w
ZXJhdGlvbi0+bmFtZSAuICJcIik7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5c
biIpOworfQorCitzdWIgR2VuZXJhdGVPcGVyYXRpb25Cb2R5RGVmaW5pdGlvbgoreworICAgIG15
ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRvcGVyYXRpb24sICRmdW5j
dGlvbk5hbWUsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJGZ1bmN0aW9uQm9keU5hbWUs
ICRnZW5lcmF0aW5nT3ZlcmxvYWREaXNwYXRjaGVyKSA9IEBfOworCisgICAgbXkgJGhhc1Byb21p
c2VSZXR1cm5UeXBlID0gJGNvZGVHZW5lcmF0b3ItPklzUHJvbWlzZVR5cGUoJG9wZXJhdGlvbi0+
dHlwZSk7CisgICAgbXkgJGlkbE9wZXJhdGlvblR5cGUgPSAkaGFzUHJvbWlzZVJldHVyblR5cGUg
PyAiSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZSIgOiAiSURMT3BlcmF0aW9uIjsKKyAgICBt
eSAkY29uZGl0aW9uYWwgPSAkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb25kaXRp
b25hbH07CisKKyAgICBteSBAc2lnbmF0dXJlQXJndW1lbnRzID0gKCk7CisgICAgcHVzaChAc2ln
bmF0dXJlQXJndW1lbnRzLCAiSlNDOjpFeGVjU3RhdGUqIHN0YXRlIik7CisgICAgcHVzaChAc2ln
bmF0dXJlQXJndW1lbnRzLCAidHlwZW5hbWUgJHtpZGxPcGVyYXRpb25UeXBlfTwke2NsYXNzTmFt
ZX0+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzIikgaWYgISRvcGVyYXRpb24tPmlzU3RhdGlj
OworICAgIHB1c2goQHNpZ25hdHVyZUFyZ3VtZW50cywgIlJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSIpIGlmICRoYXNQcm9taXNlUmV0dXJuVHlwZSAmJiAhJG9wZXJhdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57UmV0dXJuc093blByb21pc2V9OworICAgIHB1c2goQHNpZ25hdHVyZUFy
Z3VtZW50cywgIkpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSIpOworCisgICAgcHVzaChAJG91
dHB1dEFycmF5LCAic3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlICR7ZnVuY3Rpb25C
b2R5TmFtZX0oIiAuIGpvaW4oIiwgIiwgQHNpZ25hdHVyZUFyZ3VtZW50cykgLiAiKVxuIik7Cisg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpO1xuIik7CisKKyAgICBpZiAoISRnZW5lcmF0aW5n
T3ZlcmxvYWREaXNwYXRjaGVyKSB7CisgICAgICAgIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntDRVJlYWN0aW9uc30pIHsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJDdXN0b21FbGVtZW50UmVhY3Rpb25RdWV1ZS5oIiwgJGNvbmRpdGlvbmFsKTsKKyAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBj
dXN0b21FbGVtZW50UmVhY3Rpb25TdGFjaztcbiIpOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NoZWNrU2VjdXJpdHl9IGFuZCAhJG9w
ZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57RG9Ob3RDaGVja1NlY3VyaXR5fSkgeworICAg
ICAgICAgICAgYXNzZXJ0KCJTZWN1cml0eSBjaGVja3MgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIHN0
YXRpYyBvcGVyYXRpb25zLiIpIGlmICRvcGVyYXRpb24tPmlzU3RhdGljOworICAgICAgICAgICAg
CisgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNET01CaW5kaW5nU2VjdXJpdHkuaCIs
ICRjb25kaXRpb25hbCk7CisgICAgICAgICAgICBpZiAoJGludGVyZmFjZS0+dHlwZS0+bmFtZSBl
cSAiRE9NV2luZG93IikgeworICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhzdGF0
ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLCBUaHJvd1NlY3VyaXR5RXJyb3IpKVxuIik7CisgICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6
c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJh
bWUoKSwgVGhyb3dTZWN1cml0eUVycm9yKSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTtcbiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbXkgJGluZGVu
dCA9ICIgICAgIjsKKworICAgIGlmICgkZ2VuZXJhdGluZ092ZXJsb2FkRGlzcGF0Y2hlcikgewor
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7XG4i
KTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFVOVVNFRF9QQVJBTSh2bSk7XG4i
KTsKKworICAgICAgICBteSBAYXJndW1lbnRzVG9Gb3J3YXJkID0gKCk7CisgICAgICAgIHB1c2go
QGFyZ3VtZW50c1RvRm9yd2FyZCwgInN0YXRlIik7CisgICAgICAgIHB1c2goQGFyZ3VtZW50c1Rv
Rm9yd2FyZCwgImNhc3RlZFRoaXMiKSBpZiAhJG9wZXJhdGlvbi0+aXNTdGF0aWM7CisgICAgICAg
IHB1c2goQGFyZ3VtZW50c1RvRm9yd2FyZCwgIldURk1vdmUocHJvbWlzZSkiKSBpZiAkaGFzUHJv
bWlzZVJldHVyblR5cGUgJiYgISRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JldHVy
bnNPd25Qcm9taXNlfTsKKyAgICAgICAgcHVzaChAYXJndW1lbnRzVG9Gb3J3YXJkLCAidGhyb3dT
Y29wZSIpOworCisgICAgICAgIG15ICRvdmVybG9hZEZ1bmN0aW9uUHJlZml4ID0gJGZ1bmN0aW9u
TmFtZSAuICJCb2R5IjsKKyAgICAgICAgR2VuZXJhdGVPdmVybG9hZERpc3BhdGNoZXIoJG9wZXJh
dGlvbiwgJGludGVyZmFjZSwgJG92ZXJsb2FkRnVuY3Rpb25QcmVmaXgsIGpvaW4oIiwgIiwgQGFy
Z3VtZW50c1RvRm9yd2FyZCkpOworICAgIH0gZWxzaWYgKEhhc0N1c3RvbU1ldGhvZCgkb3BlcmF0
aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMpKSB7CisgICAgICAgIEdlbmVyYXRlSW1wbGVtZW50YXRp
b25DdXN0b21GdW5jdGlvbkNhbGwoJG91dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNl
LCAkY2xhc3NOYW1lLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUsICRpbmRlbnQpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGlmICghJG9wZXJhdGlvbi0+aXNNYXBMaWtlICYmICEkb3BlcmF0
aW9uLT5pc1N0YXRpYykgeworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1
dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7XG4iKTsKKyAgICAgICAgfQorCisgICAg
ICAgIEdlbmVyYXRlQXJndW1lbnRzQ291bnRDaGVjaygkb3V0cHV0QXJyYXksICRvcGVyYXRpb24s
ICRpbnRlcmZhY2UsICRpbmRlbnQpOworICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSBHZW5l
cmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRpbnRlcmZhY2Us
ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwgJGluZGVudCk7CisgICAgICAgIEdlbmVyYXRl
SW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoJG91dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAkaW50
ZXJmYWNlLCAkZnVuY3Rpb25TdHJpbmcsICRpbmRlbnQpOworICAgIH0KKworICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIn1cblxuIik7Cit9CisKIHN1YiBHZW5lcmF0ZU9wZXJhdGlvbkRlZmluaXRp
b24KIHsKICAgICBteSAoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbikgPSBAXzsK
QEAgLTQzMjEsNyArNDM5OCw3IEBAIHN1YiBHZW5lcmF0ZU9wZXJhdGlvbkRlZmluaXRpb24KICAg
ICBteSAkaXNDdXN0b20gPSBIYXNDdXN0b21NZXRob2QoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzKTsKICAgICBteSAkaXNPdmVybG9hZGVkID0gJG9wZXJhdGlvbi0+e292ZXJsb2Fkc30g
JiYgQHskb3BlcmF0aW9uLT57b3ZlcmxvYWRzfX0gPiAxOwogCi0gICAgcmV0dXJuIGlmICRpc0N1
c3RvbSAmJiAkaXNPdmVybG9hZGVkICYmICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fSA+IDE7
CisgICAgYXNzZXJ0KCJbQ3VzdG9tXSBpcyBub3Qgc3VwcG9ydCBmb3Igb3ZlcmxvYWRlZCBvcGVy
YXRpb25zLiIpIGlmICRpc0N1c3RvbSAmJiAkaXNPdmVybG9hZGVkOwogCiAgICAgbXkgJGluQXBw
bGVDb3B5cmlnaHQgPSAwOwogCkBAIC00MzQ2LDEyMyArNDQyMyw0MyBAQCBzdWIgR2VuZXJhdGVP
cGVyYXRpb25EZWZpbml0aW9uCiAgICAgQWRkVG9JbXBsSW5jbHVkZXNGb3JJRExUeXBlKCRvcGVy
YXRpb24tPnR5cGUsICRjb25kaXRpb25hbCkgdW5sZXNzICRpc0N1c3RvbSBvciAkaGFzUHJvbWlz
ZVJldHVyblR5cGU7CiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkpTRE9NT3BlcmF0aW9uLmgiLCAk
Y29uZGl0aW9uYWwpIGlmICEkaGFzUHJvbWlzZVJldHVyblR5cGU7CiAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIkpTRE9NT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZS5oIiwgJGNvbmRpdGlvbmFsKSBp
ZiAkaGFzUHJvbWlzZVJldHVyblR5cGU7Ci0gICAgQWRkVG9JbXBsSW5jbHVkZXMoIjxydW50aW1l
L0Vycm9yLmg+IiwgJGNvbmRpdGlvbmFsKTsKIAogICAgIG15ICRmdW5jdGlvbk5hbWUgPSBHZXRG
dW5jdGlvbk5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJG9wZXJhdGlvbik7Ci0gICAgbXkg
JGZ1bmN0aW9uUmV0dXJuID0gIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwiOwogICAgIG15
ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0ltcGxlbWVudGVkQXN9IHx8ICRjb2RlR2VuZXJhdG9yLT5XS19sY2ZpcnN0KCRvcGVy
YXRpb24tPm5hbWUpOworICAgIG15ICRmdW5jdGlvbkJvZHlOYW1lID0gJGZ1bmN0aW9uTmFtZSAu
ICJCb2R5IjsKKyAgICAkZnVuY3Rpb25Cb2R5TmFtZSAuPSAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJ
bmRleH0gaWYgJGlzT3ZlcmxvYWRlZDsKIAotICAgIGlmICghJGlzQ3VzdG9tICYmICRpc092ZXJs
b2FkZWQpIHsKLSAgICAgICAgIyBBcHBlbmQgYSBudW1iZXIgdG8gYW4gb3ZlcmxvYWRlZCBtZXRo
b2QncyBuYW1lIHRvIG1ha2UgaXQgdW5pcXVlOgotICAgICAgICAkZnVuY3Rpb25OYW1lID0gJGZ1
bmN0aW9uTmFtZSAuICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fTsKLSAgICAgICAgIyBNYWtl
IHRoaXMgZnVuY3Rpb24gc3RhdGljIHRvIGF2b2lkIGNvbXBpbGVyIHdhcm5pbmdzLCBzaW5jZSB3
ZSBkb24ndCBnZW5lcmF0ZSBhIHByb3RvdHlwZSBmb3IgaXQgaW4gdGhlIGhlYWRlci4KLSAgICAg
ICAgJGZ1bmN0aW9uUmV0dXJuID0gInN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUiOwotICAg
IH0KLQotICAgIGlmICgkb3BlcmF0aW9uLT5pc1N0YXRpYykgewotICAgICAgICBteSAkcmVxdWly
ZXNQcm9taXNlVHJhbXBvbGluZSA9ICRoYXNQcm9taXNlUmV0dXJuVHlwZTsKLSAgICAgICAgaWYg
KCRyZXF1aXJlc1Byb21pc2VUcmFtcG9saW5lKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgInN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgJHtmdW5jdGlvbk5hbWV9UHJvbWlz
ZShFeGVjU3RhdGUqIHN0YXRlLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UpXG4iKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtmdW5j
dGlvblJldHVybn0gJHtmdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKLSAgICAg
ICAgfQotCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0KLSAgICAgICAgaWYg
KCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NFUmVhY3Rpb25zfSkgewotICAgICAg
ICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkN1c3RvbUVsZW1lbnRSZWFjdGlvblF1ZXVlLmgiLCAk
Y29uZGl0aW9uYWwpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgQ3VzdG9t
RWxlbWVudFJlYWN0aW9uU3RhY2sgY3VzdG9tRWxlbWVudFJlYWN0aW9uU3RhY2s7XG4iKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8gdGhyb3dT
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOwotCi0gICAgICAgIEdl
bmVyYXRlQXJndW1lbnRzQ291bnRDaGVjayhcQGltcGxDb250ZW50LCAkb3BlcmF0aW9uLCAkaW50
ZXJmYWNlKTsKLQotICAgICAgICBpZiAoJGlzQ3VzdG9tKSB7Ci0gICAgICAgICAgICBteSBAY3Vz
dG9tRnVuY3Rpb25Bcmd1bWVudHMgPSAoKTsKLSAgICAgICAgICAgIHB1c2goQGN1c3RvbUZ1bmN0
aW9uQXJndW1lbnRzLCAiKnN0YXRlIik7Ci0gICAgICAgICAgICBwdXNoKEBjdXN0b21GdW5jdGlv
bkFyZ3VtZW50cywgIldURk1vdmUocHJvbWlzZSkiKSBpZiAkaGFzUHJvbWlzZVJldHVyblR5cGU7
Ci0KLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoJHtjbGFzc05hbWV9OjoiIC4gJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lIC4gIigi
IC4gam9pbigiLCAiLCBAY3VzdG9tRnVuY3Rpb25Bcmd1bWVudHMpIC4gIikpO1xuIik7Ci0gICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSBHZW5lcmF0ZVBh
cmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkZnVu
Y3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUpOwotICAgICAgICAgICAgR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbkZ1bmN0aW9uQ2FsbCgkb3BlcmF0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICIgICAgIiwgJGlu
dGVyZmFjZSk7Ci0gICAgICAgIH0KLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIp
OwotCi0gICAgICAgIGlmICgkcmVxdWlyZXNQcm9taXNlVHJhbXBvbGluZSkgewotICAgICAgICAg
ICAgbXkgJGV4cG9zdXJlU2NvcGUgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntF
eHBvc2VkfSA/ICJXaW5kb3dPcldvcmtlciIgOiAiV2luZG93T25seSI7Ci0gICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiR7ZnVuY3Rpb25SZXR1cm59ICR7ZnVuY3Rpb25OYW1lfShFeGVj
U3RhdGUqIHN0YXRlKVxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIntcbiIp
OwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShjYWxsUHJvbWlzZUZ1bmN0aW9uPCR7ZnVuY3Rpb25OYW1lfVByb21pc2UsIFByb21pc2VF
eGVjdXRpb25TY29wZTo6JHtleHBvc3VyZVNjb3BlfT4oKnN0YXRlKSk7XG4iKTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgfQotCi0gICAgfSBlbHNl
IHsKLSAgICAgICAgbXkgJG1ldGhvZE5hbWUgPSAkb3BlcmF0aW9uLT5uYW1lOwotICAgICAgICBt
eSAkaWRsT3BlcmF0aW9uVHlwZSA9ICRoYXNQcm9taXNlUmV0dXJuVHlwZSA/ICJJRExPcGVyYXRp
b25SZXR1cm5pbmdQcm9taXNlIiA6ICJJRExPcGVyYXRpb24iOwotICAgICAgICBteSAkcGFzc2Vz
UHJvbWlzZUluID0gJGhhc1Byb21pc2VSZXR1cm5UeXBlICYmICEkb3BlcmF0aW9uLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntSZXR1cm5zT3duUHJvbWlzZX07Ci0KLSAgICAgICAgbXkgQHNpZ25hdHVy
ZUFyZ3VtZW50cyA9ICgpOwotICAgICAgICBwdXNoKEBzaWduYXR1cmVBcmd1bWVudHMsICJKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUiKTsKLSAgICAgICAgcHVzaChAc2lnbmF0dXJlQXJndW1lbnRzLCAi
dHlwZW5hbWUgJHtpZGxPcGVyYXRpb25UeXBlfTwke2NsYXNzTmFtZX0+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzIik7Ci0gICAgICAgIHB1c2goQHNpZ25hdHVyZUFyZ3VtZW50cywgIlJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSIpIGlmICRwYXNzZXNQcm9taXNlSW47Ci0gICAgICAg
IHB1c2goQHNpZ25hdHVyZUFyZ3VtZW50cywgIkpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSIp
OwotCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlICR7ZnVuY3Rpb25OYW1lfUNhbGxlcigiIC4gam9pbigiLCAiLCBAc2lnbmF0dXJl
QXJndW1lbnRzKSAuICIpXG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsK
LSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTtcbiIp
OwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7XG4iKTsKLQotICAgICAgICBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q0VSZWFjdGlvbnN9KSB7Ci0gICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiQ3VzdG9tRWxl
bWVudFJlYWN0aW9uUXVldWUuaCIsICRjb25kaXRpb25hbCk7Ci0gICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBDdXN0b21FbGVtZW50UmVhY3Rpb25TdGFjayBjdXN0b21FbGVtZW50
UmVhY3Rpb25TdGFjaztcbiIpOwotICAgICAgICB9CisgICAgR2VuZXJhdGVPcGVyYXRpb25Cb2R5
RGVmaW5pdGlvbihcQGltcGxDb250ZW50LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0
aW9uLCAkZnVuY3Rpb25OYW1lLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUsICRmdW5jdGlv
bkJvZHlOYW1lKTsKIAotICAgICAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q2hlY2tTZWN1cml0eX0gYW5kICEkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntE
b05vdENoZWNrU2VjdXJpdHl9KSB7Ci0gICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiSlNE
T01CaW5kaW5nU2VjdXJpdHkuaCIsICRjb25kaXRpb25hbCk7Ci0gICAgICAgICAgICBpZiAoJGlu
dGVyZmFjZS0+dHlwZS0+bmFtZSBlcSAiRE9NV2luZG93IikgewotICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0Fj
Y2Vzc1RvRE9NV2luZG93KHN0YXRlLCBjYXN0ZWRUaGlzLT53cmFwcGVkKCksIFRocm93U2VjdXJp
dHlFcnJvcikpXG4iKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNj
ZXNzVG9GcmFtZShzdGF0ZSwgY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZyYW1lKCksIFRocm93U2Vj
dXJpdHlFcnJvcikpXG4iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xu
Iik7Ci0gICAgICAgIH0KKyAgICAjIE92ZXJsb2FkZWQgb3BlcmF0aW9ucyBkb24ndCBnZW5lcmF0
ZSBhIHRyYW1wb2xpbmUgZm9yIGVhY2ggb3ZlcmxvYWQsIGFuZCBpbnN0ZWFkIGhhdmUgYSBzaW5n
bGUgZGlzcGF0Y2ggdHJhbXBvbGluZQorICAgICMgdGhhdCBnZXRzIGdlbmVyYXRlZCBhZnRlciB0
aGUgbGFzdCBvdmVybG9hZCBib2R5IGhhcyBiZWVuIGdlbmVyYXRlZC4KKyAgICB1bmxlc3MgKCRp
c092ZXJsb2FkZWQpIHsKKyAgICAgICAgR2VuZXJhdGVPcGVyYXRpb25UcmFtcG9saW5lRGVmaW5p
dGlvbihcQGltcGxDb250ZW50LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkb3BlcmF0aW9uLCAk
ZnVuY3Rpb25OYW1lLCAkZnVuY3Rpb25Cb2R5TmFtZSk7CisgICAgfQogCi0gICAgICAgIGlmICgk
aXNDdXN0b20pIHsKLSAgICAgICAgICAgIG15IEBjdXN0b21GdW5jdGlvbkFyZ3VtZW50cyA9ICgp
OwotICAgICAgICAgICAgcHVzaChAY3VzdG9tRnVuY3Rpb25Bcmd1bWVudHMsICIqc3RhdGUiKTsK
LSAgICAgICAgICAgIHB1c2goQGN1c3RvbUZ1bmN0aW9uQXJndW1lbnRzLCAiV1RGTW92ZShwcm9t
aXNlKSIpIGlmICRwYXNzZXNQcm9taXNlSW47CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5k
aWZcblxuIikgaWYgJGNvbmRpdGlvbmFsOwogCi0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPiIgLiAkZnVuY3Rpb25J
bXBsZW1lbnRhdGlvbk5hbWUgLiAiKCIgLiBqb2luKCIsICIsIEBjdXN0b21GdW5jdGlvbkFyZ3Vt
ZW50cykgLiAiKSk7XG4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7XG4iKSB1
bmxlc3MgJG9wZXJhdGlvbi0+aXNNYXBMaWtlOworICAgICMgR2VuZXJhdGUgYSBmdW5jdGlvbiBk
aXNwYXRjaGluZyBjYWxsIHRvIHRoZSByZXN0IG9mIHRoZSBvdmVybG9hZHMuCisgICAgaWYgKCRp
c092ZXJsb2FkZWQgJiYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ID09IEB7JG9wZXJhdGlv
bi0+e292ZXJsb2Fkc319KSB7CisgICAgICAgIG15ICRvdmVybG9hZHNDb25kaXRpb25hbEF0dHJp
YnV0ZSA9IEdldENvbmRpdGlvbmFsRm9yT3BlcmF0aW9uQ29uc2lkZXJpbmdPdmVybG9hZHMoJG9w
ZXJhdGlvbik7CisgICAgICAgIG15ICRvdmVybG9hZHNDb25kaXRpb25hbFN0cmluZyA9ICRvdmVy
bG9hZHNDb25kaXRpb25hbEF0dHJpYnV0ZSA/ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRp
dGlvbmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRvdmVybG9hZHNDb25kaXRpb25hbEF0dHJp
YnV0ZSkgOiB1bmRlZjsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjaWYgJHtvdmVybG9h
ZHNDb25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJG92ZXJsb2Fkc0NvbmRpdGlvbmFsU3RyaW5n
OworCisgICAgICAgIG15ICRvdmVybG9hZERpc3BhdGNoZXJGdW5jdGlvbkJvZHlOYW1lID0gJGZ1
bmN0aW9uTmFtZSAuICJPdmVybG9hZERpc3BhdGNoZXIiOworICAgICAgICBHZW5lcmF0ZU9wZXJh
dGlvbkJvZHlEZWZpbml0aW9uKFxAaW1wbENvbnRlbnQsICRpbnRlcmZhY2UsICRjbGFzc05hbWUs
ICRvcGVyYXRpb24sICRmdW5jdGlvbk5hbWUsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSwg
JG92ZXJsb2FkRGlzcGF0Y2hlckZ1bmN0aW9uQm9keU5hbWUsIDEpOworICAgICAgICBHZW5lcmF0
ZU9wZXJhdGlvblRyYW1wb2xpbmVEZWZpbml0aW9uKFxAaW1wbENvbnRlbnQsICRpbnRlcmZhY2Us
ICRjbGFzc05hbWUsICRvcGVyYXRpb24sICRmdW5jdGlvbk5hbWUsICRvdmVybG9hZERpc3BhdGNo
ZXJGdW5jdGlvbkJvZHlOYW1lKTsKKyAgICAKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIj
ZW5kaWZcblxuIikgaWYgJG92ZXJsb2Fkc0NvbmRpdGlvbmFsU3RyaW5nOworICAgIH0KIAotICAg
ICAgICAgICAgR2VuZXJhdGVBcmd1bWVudHNDb3VudENoZWNrKFxAaW1wbENvbnRlbnQsICRvcGVy
YXRpb24sICRpbnRlcmZhY2UpOwogCi0gICAgICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayhcQGltcGxDb250ZW50LCAkb3BlcmF0aW9uLCAkaW50ZXJm
YWNlLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUpOwotICAgICAgICAgICAgR2VuZXJhdGVJ
bXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgkb3BlcmF0aW9uLCAkZnVuY3Rpb25TdHJpbmcsICIg
ICAgIiwgJGludGVyZmFjZSk7CisgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0RPTUpJVH0pIHsKKyAgICAgICAgaWYgKCRjb25kaXRpb25hbCkgeworICAgICAgICAgICAg
bXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9u
YWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUoJGNvbmRpdGlvbmFsKTsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKTsKICAgICAgICAg
fQotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CiAKLSAgICAgICAgbXkgJGV4
cG9zdXJlU2NvcGUgPSAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSA/
ICJXaW5kb3dPcldvcmtlciIgOiAiV2luZG93T25seSI7Ci0gICAgICAgIG15ICRjYWxsRnVuY3Rp
b25OYW1lID0gJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmV0dXJuc093blByb21p
c2V9ID8gImNhbGxSZXR1cm5pbmdPd25Qcm9taXNlIiA6ICJjYWxsIjsKLQotICAgICAgICBteSBA
Y2FsbEZ1bmN0aW9uVGVtcGxhdGVBcmd1bWVudHMgPSAoKTsKLSAgICAgICAgcHVzaChAY2FsbEZ1
bmN0aW9uVGVtcGxhdGVBcmd1bWVudHMsICIke2Z1bmN0aW9uTmFtZX1DYWxsZXIiKTsKLSAgICAg
ICAgcHVzaChAY2FsbEZ1bmN0aW9uVGVtcGxhdGVBcmd1bWVudHMsICJQcm9taXNlRXhlY3V0aW9u
U2NvcGU6OiR7ZXhwb3N1cmVTY29wZX0iKSBpZiAkcGFzc2VzUHJvbWlzZUluOwotICAgICAgICBw
dXNoKEBjYWxsRnVuY3Rpb25UZW1wbGF0ZUFyZ3VtZW50cywgIkNhc3RlZFRoaXNFcnJvckJlaGF2
aW9yOjpBc3NlcnQiKSBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0
ZUlkZW50aWZpZXJ9IGFuZCBub3QgJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHVi
bGljSWRlbnRpZmllcn0pOwotCi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtmdW5jdGlv
blJldHVybn0gJHtmdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpXG4iKTsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgcmV0dXJuICR7aWRsT3BlcmF0aW9uVHlwZX08JHtjbGFzc05hbWV9Pjo6JHtjYWxsRnVuY3Rp
b25OYW1lfTwiIC4gam9pbigiLCAiLCBAY2FsbEZ1bmN0aW9uVGVtcGxhdGVBcmd1bWVudHMpIC4g
Ij4oKnN0YXRlLCBcIiR7bWV0aG9kTmFtZX1cIik7XG4iKTsKLSAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICJ9XG5cbiIpOwotICAgIH0KLQotICAgIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntET01KSVR9KSB7Ci0gICAgICAgICRpbXBsSW5jbHVkZXN7IjxpbnRlcnByZXRl
ci9GcmFtZVRyYWNlcnMuaD4ifSA9IDE7CisgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8aW50
ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmg+IiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgbXkgJHVu
c2FmZUZ1bmN0aW9uTmFtZSA9ICJ1bnNhZmUiIC4gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3Qo
JGZ1bmN0aW9uTmFtZSk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OICR7dW5zYWZlRnVuY3Rpb25OYW1lfShKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsICRjbGFzc05hbWUqIGNhc3RlZFRoaXMiKTsKICAgICAgICAgZm9yZWFjaCBteSAk
YXJndW1lbnQgKEB7JG9wZXJhdGlvbi0+YXJndW1lbnRzfSkgewpAQCAtNDQ4NSw3ICs0NDgyLDcg
QEAgc3ViIEdlbmVyYXRlT3BlcmF0aW9uRGVmaW5pdGlvbgogICAgICAgICBteSAkaW1wbGVtZW50
ZWRCeSA9ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQnl9Owog
CiAgICAgICAgIGlmICgkaW1wbGVtZW50ZWRCeSkgewotICAgICAgICAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIiR7aW1wbGVtZW50ZWRCeX0uaCIsICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRl
cy0+e0NvbmRpdGlvbmFsfSk7CisgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiJHtpbXBs
ZW1lbnRlZEJ5fS5oIiwgJGNvbmRpdGlvbmFsKTsKICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3Vt
ZW50cywgImltcGwiKSBpZiAhJG9wZXJhdGlvbi0+aXNTdGF0aWM7CiAgICAgICAgICAgICAkaW1w
bEZ1bmN0aW9uTmFtZSA9ICJXZWJDb3JlOjoiIC4gJGltcGxlbWVudGVkQnkgLiAiOjoiIC4gJGZ1
bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lOwogICAgICAgICB9IGVsc2lmICgkb3BlcmF0aW9uLT5p
c1N0YXRpYykgewpAQCAtNDUxNSwxNiArNDUxMiw4IEBAIHN1YiBHZW5lcmF0ZU9wZXJhdGlvbkRl
ZmluaXRpb24KICAgICAgICAgJGZ1bmN0aW9uU3RyaW5nID0gInByb3BhZ2F0ZUV4Y2VwdGlvbigq
c3RhdGUsIHRocm93U2NvcGUsICRmdW5jdGlvblN0cmluZykiIGlmIE5lZWRzRXhwbGljaXRQcm9w
YWdhdGVFeGNlcHRpb25DYWxsKCRvcGVyYXRpb24pOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKCIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1Bv
aW50ZXJzKCRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywgIipjYXN0ZWRU
aGlzLT5nbG9iYWxPYmplY3QoKSIpIC4gIik7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJ9XG5cbiIpOwotICAgIH0KLQotICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmXG5c
biIpIGlmICRjb25kaXRpb25hbDsKLQotICAgICMgR2VuZXJhdGUgYSBmdW5jdGlvbiBkaXNwYXRj
aGluZyBjYWxsIHRvIHRoZSByZXN0IG9mIHRoZSBvdmVybG9hZHMuCi0gICAgaWYgKCEkaXNDdXN0
b20gJiYgJGlzT3ZlcmxvYWRlZCAmJiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gPT0gQHsk
b3BlcmF0aW9uLT57b3ZlcmxvYWRzfX0pIHsKLSAgICAgICAgbXkgJG92ZXJsb2FkRGlzcGF0Y2hl
ckZ1bmN0aW9uTmFtZSA9IEdldEZ1bmN0aW9uTmFtZSgkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAk
b3BlcmF0aW9uKTsKLSAgICAgICAgbXkgJG92ZXJsb2FkRGlzcGF0Y2hlckZ1bmN0aW9uU2lnbmF0
dXJlID0gIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtvdmVybG9hZERpc3BhdGNoZXJG
dW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUpIjsKIAotICAgICAgICBHZW5lcmF0ZU92ZXJs
b2FkRGlzcGF0Y2hlcigkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkb3ZlcmxvYWREaXNwYXRjaGVy
RnVuY3Rpb25OYW1lLCAkb3ZlcmxvYWREaXNwYXRjaGVyRnVuY3Rpb25TaWduYXR1cmUpOworICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZlxuXG4iKSBpZiAkY29uZGl0aW9uYWw7CiAg
ICAgfQogCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICRlbmRBcHBsZUNvcHlyaWdodCkgaWYgJGlu
QXBwbGVDb3B5cmlnaHQ7CkBAIC00NTk1LDE0ICs0NTg0LDE0IEBAIHN1YiBHZW5lcmF0ZVNlcmlh
bGl6ZXJEZWZpbml0aW9uCiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIlxuIik7CiAKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgJHtzZXJpYWxpemVyTmF0aXZlRnVuY3Rpb25OYW1lfUNhbGxl
cihFeGVjU3RhdGUqIHN0YXRlLCBKUyR7aW50ZXJmYWNlTmFtZX0qIHRoaXNPYmplY3QsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSlcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAic3Rh
dGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSAke3NlcmlhbGl6ZXJOYXRpdmVGdW5jdGlvbk5hbWV9
Qm9keShFeGVjU3RhdGUqIHN0YXRlLCBKUyR7aW50ZXJmYWNlTmFtZX0qIHRoaXNPYmplY3QsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSlcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAi
e1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKUyR7aW50ZXJmYWNlTmFtZX06OnNlcmlhbGl6ZShzdGF0ZSwgdGhpc09iamVjdCwgdGhyb3dT
Y29wZSkpO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIlxuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMICR7c2VyaWFsaXplck5hdGl2ZUZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRl
KiBzdGF0ZSlcbiIpOwogICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKUyR7aW50ZXJmYWNlTmFtZX0+
OjpjYWxsPCR7c2VyaWFsaXplck5hdGl2ZUZ1bmN0aW9uTmFtZX1DYWxsZXI+KCpzdGF0ZSwgXCIk
c2VyaWFsaXplckZ1bmN0aW9uTmFtZVwiKTtcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlMke2ludGVyZmFjZU5hbWV9Pjo6Y2FsbDwke3Nlcmlh
bGl6ZXJOYXRpdmVGdW5jdGlvbk5hbWV9Qm9keT4oKnN0YXRlLCBcIiRzZXJpYWxpemVyRnVuY3Rp
b25OYW1lXCIpO1xuIik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG4iKTsKICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIlxuIik7CiB9CkBAIC00NjIxLDEwICs0NjEwLDE3IEBAIHN1YiBHZW5l
cmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb25zCiAgICAgICAgICAgICBHZW5lcmF0ZUxlZ2FjeUNh
bGxlckRlZmluaXRpb24oJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGxlZ2FjeUNhbGxlcik7CiAg
ICAgICAgIH0KIAotICAgICAgICBteSAkb3ZlcmxvYWREaXNwYXRjaGVyRnVuY3Rpb25OYW1lID0g
ImNhbGwke2NsYXNzTmFtZX0iOwotICAgICAgICBteSAkb3ZlcmxvYWREaXNwYXRjaGVyRnVuY3Rp
b25TaWduYXR1cmUgPSAiRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke292ZXJsb2FkRGlz
cGF0Y2hlckZ1bmN0aW9uTmFtZX0oRXhlY1N0YXRlKiBzdGF0ZSkiOworICAgICAgICBteSAkb3Zl
cmxvYWRGdW5jdGlvblByZWZpeCA9ICJjYWxsJHtjbGFzc05hbWV9IjsKKworICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgJHtvdmVybG9hZEZ1
bmN0aW9uUHJlZml4fShFeGVjU3RhdGUqIHN0YXRlKVxuIik7CisgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xuIik7CisgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTtcbiIpOworCisgICAg
ICAgIEdlbmVyYXRlT3ZlcmxvYWREaXNwYXRjaGVyKCRsZWdhY3lDYWxsZXJzWzBdLCAkaW50ZXJm
YWNlLCAkb3ZlcmxvYWRGdW5jdGlvblByZWZpeCwgInN0YXRlIik7CiAKLSAgICAgICAgR2VuZXJh
dGVPdmVybG9hZERpc3BhdGNoZXIoJGxlZ2FjeUNhbGxlcnNbMF0sICRpbnRlcmZhY2UsICRvdmVy
bG9hZERpc3BhdGNoZXJGdW5jdGlvbk5hbWUsICRvdmVybG9hZERpc3BhdGNoZXJGdW5jdGlvblNp
Z25hdHVyZSk7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKICAgICB9IGVs
c2UgewogICAgICAgICBHZW5lcmF0ZUxlZ2FjeUNhbGxlckRlZmluaXRpb24oJGludGVyZmFjZSwg
JGNsYXNzTmFtZSwgJGxlZ2FjeUNhbGxlcnNbMF0pOwogICAgIH0KQEAgLTQ2NTMsMTYgKzQ2NDks
MTcgQEAgc3ViIEdlbmVyYXRlTGVnYWN5Q2FsbGVyRGVmaW5pdGlvbgogICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pO1xu
Iik7CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
O1xuIik7CiAKLSAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soXEBpbXBsQ29udGVudCwg
JG9wZXJhdGlvbiwgJGludGVyZmFjZSk7CisgICAgbXkgJGluZGVudCA9ICIgICAgIjsKKyAgICBH
ZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soXEBpbXBsQ29udGVudCwgJG9wZXJhdGlvbiwgJGlu
dGVyZmFjZSwgJGluZGVudCk7CiAKICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBhdXRvKiBj
YXN0ZWRUaGlzID0ganNDYXN0PCR7Y2xhc3NOYW1lfSo+KHN0YXRlLT5qc0NhbGxlZSgpKTtcbiIp
OwogICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEFTU0VSVChjYXN0ZWRUaGlzKTtcbiIpOwog
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFw
cGVkKCk7XG4iKTsKIAogICAgIG15ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9ICRvcGVy
YXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0ltcGxlbWVudGVkQXN9IHx8ICRjb2RlR2VuZXJh
dG9yLT5XS19sY2ZpcnN0KCRvcGVyYXRpb24tPm5hbWUpIHx8ICJsZWdhY3lDYWxsZXJPcGVyYXRp
b25Gcm9tQmluZGluZ3MiOwotICAgIG15ICRmdW5jdGlvblN0cmluZyA9IEdlbmVyYXRlUGFyYW1l
dGVyc0NoZWNrKFxAaW1wbENvbnRlbnQsICRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRmdW5jdGlv
bkltcGxlbWVudGF0aW9uTmFtZSk7CisgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gR2VuZXJhdGVQ
YXJhbWV0ZXJzQ2hlY2soXEBpbXBsQ29udGVudCwgJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1
bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkaW5kZW50KTsKIAotICAgIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb25GdW5jdGlvbkNhbGwoJG9wZXJhdGlvbiwgJGZ1bmN0aW9uU3RyaW5nLCAiICAgICIs
ICRpbnRlcmZhY2UpOworICAgIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoXEBp
bXBsQ29udGVudCwgJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAkaW5k
ZW50KTsKIAogICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKIH0KQEAgLTQ3NjIsNyAr
NDc1OSw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxXaXRoCiAKIHN1YiBHZW5lcmF0ZUFyZ3VtZW50c0Nv
dW50Q2hlY2sKIHsKLSAgICBteSAoJG91dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNl
KSA9IEBfOworICAgIG15ICgkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRp
bmRlbnQpID0gQF87CiAKICAgICAjIE92ZXJsb2FkZWQgb3BlcmF0aW9ucyBkb24ndCBuZWVkIHRv
IGNoZWNrIHRoZSBhcmd1bWVudCBjb3VudCBzaW5jZSB0aGUgCiAgICAgIyBkaXNwYXRjaCBmdW5j
dGlvbiBkb2VzIGZvciB0aGVtLgpAQCAtNDc3Nyw4ICs0Nzc0LDggQEAgc3ViIEdlbmVyYXRlQXJn
dW1lbnRzQ291bnRDaGVjawogICAgICAgICB9CiAgICAgfQogICAgIGlmICgkbnVtTWFuZGF0b3J5
QXJndW1lbnRzID49IDEpIHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgJG51bU1hbmRhdG9yeUFyZ3VtZW50cykp
XG4iKTsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJpZiAo
VU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8ICRudW1NYW5kYXRvcnlBcmd1bWVudHMp
KVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICIgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRz
RXJyb3Ioc3RhdGUpKTtcbiIpOwogICAgIH0KIH0KIApAQCAtNDgzNCw3ICs0ODMxLDcgQEAgc3Vi
IE5lZWRzRXhwbGljaXRQcm9wYWdhdGVFeGNlcHRpb25DYWxsCiAKIHN1YiBHZW5lcmF0ZVBhcmFt
ZXRlcnNDaGVjawogewotICAgIG15ICgkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRpbnRlcmZh
Y2UsICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSkgPSBAXzsKKyAgICBteSAoJG91dHB1dEFy
cmF5LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUs
ICRpbmRlbnQpID0gQF87CiAKICAgICBteSAkaW50ZXJmYWNlTmFtZSA9ICRpbnRlcmZhY2UtPnR5
cGUtPm5hbWU7CiAgICAgbXkgJHZpc2libGVJbnRlcmZhY2VOYW1lID0gJGNvZGVHZW5lcmF0b3It
PkdldFZpc2libGVJbnRlcmZhY2VOYW1lKCRpbnRlcmZhY2UpOwpAQCAtNDkwNyw4ICs0OTA0LDgg
QEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrCiAgICAgICAgIAogICAgICAgICAgICAgbXkg
JElETFR5cGUgPSBHZXRJRExUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKIAotICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8gJHtuYW1lfSA9IGNvbnZlcnRWYXJpYWRpY0Fy
Z3VtZW50czwke0lETFR5cGV9Pigqc3RhdGUsICR7YXJndW1lbnRJbmRleH0pO1xuIik7Ci0gICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAkaW5kZW50IC4gImF1dG8gJHtuYW1lfSA9IGNvbnZlcnRWYXJpYWRpY0FyZ3VtZW50
czwke0lETFR5cGV9Pigqc3RhdGUsICR7YXJndW1lbnRJbmRleH0pO1xuIik7CisgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTtcbiIpOwogCiAgICAgICAgICAgICAkdmFsdWUgPSAi
V1RGTW92ZSgke25hbWV9LmFyZ3VtZW50cy52YWx1ZSgpKSI7CiAgICAgICAgIH0gZWxzZSB7CkBA
IC00OTQ1LDggKzQ5NDIsOCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAg
ICAgICRuYXRpdmVWYWx1ZSA9ICIke25hdGl2ZVZhbHVlQ2FzdEZ1bmN0aW9ufSgiIC4gJG5hdGl2
ZVZhbHVlIC4gIikiIGlmIGRlZmluZWQgJG5hdGl2ZVZhbHVlQ2FzdEZ1bmN0aW9uOwogICAgICAg
ICAgICAgJG5hdGl2ZVZhbHVlID0gJG9wdGlvbmFsQ2hlY2sgLiAkbmF0aXZlVmFsdWUgaWYgZGVm
aW5lZCAkb3B0aW9uYWxDaGVjazsKIAotICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIGF1dG8gJG5hbWUgPSAke25hdGl2ZVZhbHVlfTtcbiIpOwotICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVu
dCAuICJhdXRvICRuYW1lID0gJHtuYXRpdmVWYWx1ZX07XG4iKTsKKyAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpO1xuIik7CiAKICAgICAgICAgICAgICR2YWx1ZSA9IFBhc3NBcmd1
bWVudEV4cHJlc3Npb24oJG5hbWUsICRhcmd1bWVudCk7CiAgICAgICAgIH0KQEAgLTUzNTMsMTQg
KzUzNTAsMjkgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbkNvbnRlbgogCiBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbAogewotICAgIG15ICgkb3BlcmF0
aW9uLCAkZnVuY3Rpb25TdHJpbmcsICRpbmRlbnQsICRpbnRlcmZhY2UpID0gQF87CisgICAgbXkg
KCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGZ1bmN0aW9uU3RyaW5nLCAk
aW5kZW50KSA9IEBfOwogCiAgICAgaWYgKCRvcGVyYXRpb24tPnR5cGUtPm5hbWUgZXEgInZvaWQi
IHx8ICRjb2RlR2VuZXJhdG9yLT5Jc1Byb21pc2VUeXBlKCRvcGVyYXRpb24tPnR5cGUpKSB7Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gIiRmdW5jdGlvblN0cmluZztcbiIp
OwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJyZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
JGluZGVudCAuICIkZnVuY3Rpb25TdHJpbmc7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAkaW5kZW50IC4gInJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4i
KTsKICAgICB9IGVsc2UgewogICAgICAgICBteSAkZ2xvYmFsT2JqZWN0UmVmZXJlbmNlID0gJG9w
ZXJhdGlvbi0+aXNTdGF0aWMgPyAiKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpIiA6ICIqY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkiOwot
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICJyZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKCIgLiBOYXRpdmVUb0pTVmFsdWVVc2luZ1BvaW50ZXJzKCRvcGVyYXRpb24sICRpbnRlcmZh
Y2UsICRmdW5jdGlvblN0cmluZywgJGdsb2JhbE9iamVjdFJlZmVyZW5jZSkgLiAiKTtcbiIpOwor
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAicmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSgiIC4gTmF0aXZlVG9KU1ZhbHVlVXNpbmdQb2ludGVycygkb3BlcmF0aW9uLCAkaW50ZXJm
YWNlLCAkZnVuY3Rpb25TdHJpbmcsICRnbG9iYWxPYmplY3RSZWZlcmVuY2UpIC4gIik7XG4iKTsK
KyAgICB9Cit9CisKK3N1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uQ3VzdG9tRnVuY3Rpb25DYWxs
Cit7CisgICAgbXkgKCRvdXRwdXRBcnJheSwgJG9wZXJhdGlvbiwgJGludGVyZmFjZSwgJGNsYXNz
TmFtZSwgJGZ1bmN0aW9uSW1wbGVtZW50YXRpb25OYW1lLCAkaW5kZW50KSA9IEBfOworCisgICAg
bXkgQGN1c3RvbUZ1bmN0aW9uQXJndW1lbnRzID0gKCk7CisgICAgcHVzaChAY3VzdG9tRnVuY3Rp
b25Bcmd1bWVudHMsICIqc3RhdGUiKTsKKyAgICBwdXNoKEBjdXN0b21GdW5jdGlvbkFyZ3VtZW50
cywgIldURk1vdmUocHJvbWlzZSkiKSBpZiAkY29kZUdlbmVyYXRvci0+SXNQcm9taXNlVHlwZSgk
b3BlcmF0aW9uLT50eXBlKSAmJiAhJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmV0
dXJuc093blByb21pc2V9OworCisgICAgaWYgKCRvcGVyYXRpb24tPmlzU3RhdGljKSB7CisgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJyZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KCR7Y2xhc3NOYW1lfTo6IiAuICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSAuICIoIiAuIGpv
aW4oIiwgIiwgQGN1c3RvbUZ1bmN0aW9uQXJndW1lbnRzKSAuICIpKTtcbiIpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJyZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPiIgLiAkZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUgLiAi
KCIgLiBqb2luKCIsICIsIEBjdXN0b21GdW5jdGlvbkFyZ3VtZW50cykgLiAiKSk7XG4iKTsKICAg
ICB9CiB9CiAKQEAgLTYxOTQsMTAgKzYyMDYsMTcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JE
ZWZpbml0aW9ucwogICAgICAgICAgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9u
KCRvdXRwdXRBcnJheSwgJGNsYXNzTmFtZSwgJHByb3RvQ2xhc3NOYW1lLCAkdmlzaWJsZUludGVy
ZmFjZU5hbWUsICRpbnRlcmZhY2UsICRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3RvciwgJGNvbnN0
cnVjdG9yKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbXkgJG92ZXJsb2FkRGlzcGF0
Y2hlckZ1bmN0aW9uTmFtZSA9ICJjb25zdHJ1Y3Qke2NsYXNzTmFtZX0iOwotICAgICAgICAgICAg
bXkgJG92ZXJsb2FkRGlzcGF0Y2hlckZ1bmN0aW9uU2lnbmF0dXJlID0gInRlbXBsYXRlPD4gRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCAke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6Y29uc3Ry
dWN0KEV4ZWNTdGF0ZSogc3RhdGUpIjsKKyAgICAgICAgICAgIG15ICRvdmVybG9hZEZ1bmN0aW9u
UHJlZml4ID0gImNvbnN0cnVjdCR7Y2xhc3NOYW1lfSI7CiAKLSAgICAgICAgICAgIEdlbmVyYXRl
T3ZlcmxvYWREaXNwYXRjaGVyKEB7JGludGVyZmFjZS0+Y29uc3RydWN0b3JzfVswXSwgJGludGVy
ZmFjZSwgJG92ZXJsb2FkRGlzcGF0Y2hlckZ1bmN0aW9uTmFtZSwgJG92ZXJsb2FkRGlzcGF0Y2hl
ckZ1bmN0aW9uU2lnbmF0dXJlKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAidGVt
cGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMICR7Y2xhc3NOYW1lfUNvbnN0cnVj
dG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRlKiBzdGF0ZSlcbiIpOworICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJ7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpO1xuIik7CisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpO1xuIik7CisKKyAgICAgICAgICAgIEdlbmVyYXRlT3ZlcmxvYWREaXNwYXRjaGVyKEB7JGlu
dGVyZmFjZS0+Y29uc3RydWN0b3JzfVswXSwgJGludGVyZmFjZSwgJG92ZXJsb2FkRnVuY3Rpb25Q
cmVmaXgsICJzdGF0ZSIpOworCisgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7CiAgICAgICAgIH0gZWxzaWYgKEBjb25zdHJ1Y3RvcnMgPT0gMSkgewogICAgICAgICAgICAg
R2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24oJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAk
cHJvdG9DbGFzc05hbWUsICR2aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVy
YXRpbmdOYW1lZENvbnN0cnVjdG9yLCAkY29uc3RydWN0b3JzWzBdKTsKICAgICAgICAgfSBlbHNl
IHsKQEAgLTYyMzksMTIgKzYyNTgsMTIgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0
aW9uCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgYXV0byogY2FzdGVkVGhp
cyA9IGpzQ2FzdDwke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfSo+KHN0YXRlLT5qc0NhbGxlZSgpKTtc
biIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEFTU0VSVChjYXN0ZWRU
aGlzKTtcbiIpOwogCi0gICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyI8cnVudGltZS9FcnJvci5o
PiJ9ID0gMTsKKyAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCI8cnVudGltZS9FcnJvci5o
PiIpOwogCi0gICAgICAgICAgICBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2soJG91dHB1dEFy
cmF5LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlKTsKKyAgICAgICAgICAgIEdlbmVyYXRlQXJndW1l
bnRzQ291bnRDaGVjaygkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRpbnRlcmZhY2UsICIgICAg
Iik7CiAKICAgICAgICAgICAgIG15ICRmdW5jdGlvbkltcGxlbWVudGF0aW9uTmFtZSA9ICRnZW5l
cmF0aW5nTmFtZWRDb25zdHJ1Y3RvciA/ICJjcmVhdGVGb3JKU0NvbnN0cnVjdG9yIiA6ICJjcmVh
dGUiOwotICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gR2VuZXJhdGVQYXJhbWV0ZXJz
Q2hlY2soJG91dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAkZnVuY3Rpb25JbXBs
ZW1lbnRhdGlvbk5hbWUpOworICAgICAgICAgICAgbXkgJGZ1bmN0aW9uU3RyaW5nID0gR2VuZXJh
dGVQYXJhbWV0ZXJzQ2hlY2soJG91dHB1dEFycmF5LCAkb3BlcmF0aW9uLCAkaW50ZXJmYWNlLCAk
ZnVuY3Rpb25JbXBsZW1lbnRhdGlvbk5hbWUsICIgICAgIik7CiAKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBhdXRvIG9iamVjdCA9ICR7ZnVuY3Rpb25TdHJpbmd9O1xuIik7
CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTtcbiIpIGlmICRjb2RlR2VuZXJhdG9yLT5F
eHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0NvbnN0cnVjdG9yQ2FsbFdpdGh9LCAiU2NyaXB0U3RhdGUiKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU01hcExpa2UuY3BwCShy
ZXZpc2lvbiAyMTc1MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNNYXBMaWtlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1
ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNp
bmNsdWRlIDxidWlsdGlucy9CdWlsdGluTmFtZXMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0Vycm9y
Lmg+CiAjaW5jbHVkZSA8cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPHd0
Zi9HZXRQdHIuaD4KIApAQCAtMjA2LDcgKzIwNSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzTWFwTGlr
ZVNpemUoRXhlY1N0YXRlKiAKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTTWFwTGlrZT46Omdl
dDxqc01hcExpa2VTaXplR2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgInNpemUiKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uR2V0Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTTWFwTGlrZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcExpa2VQ
cm90b3R5cGVGdW5jdGlvbkdldEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNNYXBMaWtlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtMjE5LDEwICsyMTgsMTAgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0KEV4ZWNTdGF0ZSogc3RhdGUpCiB7
Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uR2V0Q2FsbGVyPigqc3RhdGUsICJnZXQiKTsKKyAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXRCb2R5
Pigqc3RhdGUsICJnZXQiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkhhc0JvZHkoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtMjM1
LDEwICsyMzQsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTAog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
SGFzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExp
a2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzQ2FsbGVyPigqc3RhdGUsICJo
YXMiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtl
UHJvdG90eXBlRnVuY3Rpb25IYXNCb2R5Pigqc3RhdGUsICJoYXMiKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmll
c0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU01h
cExpa2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90
eXBlRnVuY3Rpb25FbnRyaWVzQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU01hcExpa2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0yNDcsMTAgKzI0NiwxMCBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVBy
b3RvdHlwZUZ1bmN0aW9uRW50cmllc0NhbGxlcj4oKnN0YXRlLCAiZW50cmllcyIpOworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5cGVGdW5j
dGlvbkVudHJpZXNCb2R5Pigqc3RhdGUsICJlbnRyaWVzIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXNDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uS2V5c0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248
SlNNYXBMaWtlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwpAQCAtMjU5LDEwICsyNTgsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzTWFwTAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzTWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5cyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxqc01hcExpa2VQcm90b3R5cGVGdW5jdGlv
bktleXNDYWxsZXI+KCpzdGF0ZSwgImtleXMiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
TWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzQm9keT4oKnN0YXRl
LCAia2V5cyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uVmFsdWVzQm9keShKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0yNzEs
MTAgKzI3MCwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25W
YWx1ZXMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFw
TGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxsZXI+KCpzdGF0
ZSwgInZhbHVlcyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Y2FsbDxq
c01hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlc0JvZHk+KCpzdGF0ZSwgInZhbHVlcyIpOwog
fQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25Gb3JFYWNoQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTTWFwTGlrZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2hCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTI4NywxMCArMjg2LDEw
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcEwKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OmNh
bGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyPigqc3RhdGUsICJmb3JF
YWNoIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlr
ZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaEJvZHk+KCpzdGF0ZSwgImZvckVhY2giKTsKIH0KIAot
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0
aW9uQWRkQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTTWFwTGlrZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01hcExpa2VQ
cm90b3R5cGVGdW5jdGlvbkFkZEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNNYXBMaWtlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtMzAzLDEwICszMDIsMTAgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQWRkKEV4ZWNTdGF0ZSogc3RhdGUpCiB7
Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3Rv
dHlwZUZ1bmN0aW9uQWRkQ2FsbGVyPigqc3RhdGUsICJhZGQiKTsKKyAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25BZGRCb2R5
Pigqc3RhdGUsICJhZGQiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQ2xlYXJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNNYXBMaWtlPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQ2xlYXJCb2R5KEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAg
LTMxNiwxMCArMzE1LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc01h
cEwKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc01hcExpa2VQcm90b3R5cGVGdW5j
dGlvbkNsZWFyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U01hcExpa2U+OjpjYWxsPGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQ2xlYXJDYWxsZXI+KCpz
dGF0ZSwgImNsZWFyIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxs
PGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uQ2xlYXJCb2R5Pigqc3RhdGUsICJjbGVhciIpOwog
fQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNNYXBMaWtlUHJvdG90eXBl
RnVuY3Rpb25EZWxldGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNNYXBMaWtlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0zMzIsNyArMzMxLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzTWFwTAogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzTWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU01hcExpa2U+OjpjYWxsPGpz
TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRGVsZXRlQ2FsbGVyPigqc3RhdGUsICJkZWxldGUiKTsK
KyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTTWFwTGlrZT46OmNhbGw8anNNYXBMaWtlUHJvdG90
eXBlRnVuY3Rpb25EZWxldGVCb2R5Pigqc3RhdGUsICJkZWxldGUiKTsKIH0KIAogYm9vbCBKU01h
cExpa2VPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1JlYWRPbmx5TWFwTGlrZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
UmVhZE9ubHlNYXBMaWtlLmNwcAkocmV2aXNpb24gMjE3NTEyKQorKysgU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUmVhZE9ubHlNYXBMaWtlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5j
bHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRlIDxidWlsdGlucy9CdWlsdGluTmFt
ZXMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIApAQCAtMjAwLDcgKzE5
OSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlU2l6ZShFeGUKICAgICByZXR1
cm4gSURMQXR0cmlidXRlPEpTUmVhZE9ubHlNYXBMaWtlPjo6Z2V0PGpzUmVhZE9ubHlNYXBMaWtl
U2l6ZUdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJzaXplIik7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
R2V0Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
UmVhZE9ubHlNYXBMaWtlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVh
ZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25HZXRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtMjEzLDEw
ICsyMTIsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZAogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVu
Y3Rpb25HZXQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
UmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9u
R2V0Q2FsbGVyPigqc3RhdGUsICJnZXQiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVh
ZE9ubHlNYXBMaWtlPjo6Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uR2V0
Qm9keT4oKnN0YXRlLCAiZ2V0Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90
eXBlRnVuY3Rpb25IYXNCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3Bl
cmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlND
OjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtMjI5LDEwICsyMjgsMTAgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25IYXMoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6
Y2FsbDxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzQ2FsbGVyPigqc3RhdGUs
ICJoYXMiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2Fs
bDxqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uSGFzQm9keT4oKnN0YXRlLCAiaGFz
Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFw
TGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllc0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50
cmllc0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNS
ZWFkT25seU1hcExpa2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CkBAIC0yNDEsMTAgKzI0MCwxMCBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNSZWFkCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkVudHJpZXMoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxq
c1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRW50cmllc0NhbGxlcj4oKnN0YXRlLCAi
ZW50cmllcyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNSZWFkT25seU1hcExpa2U+Ojpj
YWxsPGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25FbnRyaWVzQm9keT4oKnN0YXRl
LCAiZW50cmllcyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNS
ZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXNDYWxsZXIoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNSZWFkT25seU1hcExpa2U+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5j
dGlvbktleXNCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTUmVhZE9ubHlNYXBMaWtlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtMjUzLDEwICsyNTIsMTAgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25LZXlzKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1JlYWRPbmx5TWFwTGlrZT46OmNhbGw8
anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbktleXNDYWxsZXI+KCpzdGF0ZSwgImtl
eXMiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxq
c1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uS2V5c0JvZHk+KCpzdGF0ZSwgImtleXMi
KTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBM
aWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNSZWFkT25seU1hcExpa2U+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVl
c0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNSZWFk
T25seU1hcExpa2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CkBAIC0yNjUsMTAgKzI2NCwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNSZWFkCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNS
ZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvblZhbHVlcyhFeGVjU3RhdGUqIHN0YXRlKQog
ewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNSZWFkT25seU1hcExpa2U+OjpjYWxsPGpzUmVh
ZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNDYWxsZXI+KCpzdGF0ZSwgInZhbHVl
cyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNSZWFkT25seU1hcExpa2U+OjpjYWxsPGpz
UmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25WYWx1ZXNCb2R5Pigqc3RhdGUsICJ2YWx1
ZXMiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlN
YXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25G
b3JFYWNoQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1JlYWRPbmx5TWFwTGlrZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTI4MSw3ICsyODAsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNSZWFkCiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNSZWFkT25seU1hcExpa2VQcm90b3R5cGVGdW5jdGlvbkZvckVhY2goRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTUmVhZE9ubHlNYXBMaWtlPjo6Y2FsbDxq
c1JlYWRPbmx5TWFwTGlrZVByb3RvdHlwZUZ1bmN0aW9uRm9yRWFjaENhbGxlcj4oKnN0YXRlLCAi
Zm9yRWFjaCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNSZWFkT25seU1hcExpa2U+Ojpj
YWxsPGpzUmVhZE9ubHlNYXBMaWtlUHJvdG90eXBlRnVuY3Rpb25Gb3JFYWNoQm9keT4oKnN0YXRl
LCAiZm9yRWFjaCIpOwogfQogCiBib29sIEpTUmVhZE9ubHlNYXBMaWtlT3duZXI6OmlzUmVhY2hh
YmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lk
KiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0LmNwcAkocmV2aXNpb24gMjE3NTEyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpT
RE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCi0jaW5jbHVkZSA8cnVudGlt
ZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNs
dWRlIDx3dGYvR2V0UHRyLmg+CiAKQEAgLTIwNiw3ICsyMDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RBY3RpdmVET01PYmplY3RFeGNpCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RB
Y3RpdmVET01PYmplY3Q+OjpnZXQ8anNUZXN0QWN0aXZlRE9NT2JqZWN0RXhjaXRpbmdBdHRyR2V0
dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImV4Y2l0aW5nQXR0ciIpOwogfQogCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVu
Y3Rpb25FeGNpdGluZ0Z1bmN0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdEFjdGl2ZURPTU9iamVjdD46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4
Y2l0aW5nRnVuY3Rpb25Cb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3Bl
cmF0aW9uPEpTVGVzdEFjdGl2ZURPTU9iamVjdD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTIyMywxMCArMjIyLDEwIEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0
aW5nRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdEFjdGl2ZURPTU9iamVjdD46OmNhbGw8anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90
eXBlRnVuY3Rpb25FeGNpdGluZ0Z1bmN0aW9uQ2FsbGVyPigqc3RhdGUsICJleGNpdGluZ0Z1bmN0
aW9uIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RBY3RpdmVET01PYmplY3Q+Ojpj
YWxsPGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uRXhjaXRpbmdGdW5jdGlv
bkJvZHk+KCpzdGF0ZSwgImV4Y2l0aW5nRnVuY3Rpb24iKTsKIH0KIAotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9u
UG9zdE1lc3NhZ2VDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNUZXN0QWN0aXZlRE9NT2JqZWN0Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZUZ1bmN0aW9uUG9zdE1lc3NhZ2VC
b2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEFj
dGl2ZURPTU9iamVjdD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKQEAgLTI0MSw3ICsyNDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25Qb3N0TWVzc2FnZShFeGVjU3RhdGUq
IHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0QWN0aXZlRE9NT2JqZWN0
Pjo6Y2FsbDxqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5jdGlvblBvc3RNZXNzYWdl
Q2FsbGVyPigqc3RhdGUsICJwb3N0TWVzc2FnZSIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0QWN0aXZlRE9NT2JqZWN0Pjo6Y2FsbDxqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5
cGVGdW5jdGlvblBvc3RNZXNzYWdlQm9keT4oKnN0YXRlLCAicG9zdE1lc3NhZ2UiKTsKIH0KIAog
Ym9vbCBKU1Rlc3RBY3RpdmVET01PYmplY3RPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYg
dmlzaXRvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDRVJlYWN0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcAkocmV2aXNpb24gMjE3NTEy
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVh
Y3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIkpT
RE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUuaCIKICNpbmNsdWRl
ICJKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJv
ci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDx3
dGYvR2V0UHRyLmg+CiAKQEAgLTI3Nyw3ICsyNzYsNyBAQCBib29sIHNldEpTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXJBdHRyCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RDRVJlYWN0
aW9ucz46OnNldDxzZXRKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyQXR0cmlidXRlU2V0dGVy
Pigqc3RhdGUsIHRoaXNWYWx1ZSwgZW5jb2RlZFZhbHVlLCAic3RyaW5naWZpZXJBdHRyaWJ1dGUi
KTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENFUmVhY3Rp
b25zUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ0VSZWFjdGlvbnNDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q0VSZWFjdGlvbnM+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q0VSZWFjdGlvbnNQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhDRVJlYWN0aW9uc0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q0VSZWFjdGlvbnM+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0yODksNyAr
Mjg4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdENFUmVhY3Rpb25zUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQ0VSZWFjdGlvbnMoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdENFUmVhY3Rpb25zPjo6Y2FsbDxqc1Rlc3RDRVJlYWN0aW9uc1By
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENFUmVhY3Rpb25zQ2FsbGVyPigqc3RhdGUsICJtZXRo
b2RXaXRoQ0VSZWFjdGlvbnMiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdENFUmVh
Y3Rpb25zPjo6Y2FsbDxqc1Rlc3RDRVJlYWN0aW9uc1Byb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aENFUmVhY3Rpb25zQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aENFUmVhY3Rpb25zIik7CiB9CiAK
IGJvb2wgSlNUZXN0Q0VSZWFjdGlvbnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5j
cHAJKHJldmlzaW9uIDIxNzUxMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIkpTRE9NRXhjZXB0aW9uSGFuZGxpbmcuaCIKICNp
bmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgi
Ci0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRnVuY3Rpb25Q
cm90b3R5cGUuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAKQEAgLTIwNiw3ICsyMDUsNyBA
QCBib29sIHNldEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJWYWx1CiAgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPjo6c2V0PHNldEpTVGVzdENF
UmVhY3Rpb25zU3RyaW5naWZpZXJWYWx1ZVNldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsIGVuY29k
ZWRWYWx1ZSwgInZhbHVlIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0Nh
bGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RD
RVJlYWN0aW9uc1N0cmluZ2lmaWVyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQm9k
eShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RDRVJl
YWN0aW9uc1N0cmluZ2lmaWVyPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtMjE2LDcgKzIxNSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhF
eGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllcj46OmNhbGw8anNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllclByb3Rv
dHlwZUZ1bmN0aW9uVG9TdHJpbmdDYWxsZXI+KCpzdGF0ZSwgInRvU3RyaW5nIik7CisgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyPjo6Y2FsbDxqc1Rl
c3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyUHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZ0JvZHk+KCpz
dGF0ZSwgInRvU3RyaW5nIik7CiB9CiAKIGJvb2wgSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
ck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25v
d24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpJbmRleDogU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCShyZXZpc2lvbiAyMTc1MTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiSlNET01FeGNl
cHRpb25IYW5kbGluZy5oIgogI2luY2x1ZGUgIkpTRE9NT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyQ2FjaGUuaCIKLSNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
IApAQCAtMjAwLDcgKzE5OSw3IEBAIGJvb2wgc2V0SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25z
dHJ1Y3QKICAgICByZXR1cm4gcHJvdG90eXBlLT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRl
LT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rpb25Bbm90aGVyRnVuY3Rpb25DYWxsZXIoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXI+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkFub3RoZXJGdW5jdGlvbkJvZHkoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CkBAIC0yMTUsNyArMjE0LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEN1c3RvbU5hbWVk
R2V0dGVyUHJvdG90eXBlRnVuY3Rpb25Bbm90aGVyRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyPjo6Y2Fs
bDxqc1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlwZUZ1bmN0aW9uQW5vdGhlckZ1bmN0aW9u
Q2FsbGVyPigqc3RhdGUsICJhbm90aGVyRnVuY3Rpb24iKTsKKyAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyPjo6Y2FsbDxqc1Rlc3RDdXN0b21OYW1lZEdldHRl
clByb3RvdHlwZUZ1bmN0aW9uQW5vdGhlckZ1bmN0aW9uQm9keT4oKnN0YXRlLCAiYW5vdGhlckZ1
bmN0aW9uIik7CiB9CiAKIGJvb2wgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJPd25lcjo6aXNSZWFj
aGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZv
aWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCShyZXZpc2lv
biAyMTc1MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RE9NSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUg
IkpTRWxlbWVudC5oIgogI2luY2x1ZGUgIkpTTm9kZUxpc3QuaCIKICNpbmNsdWRlIDxpbnRlcnBy
ZXRlci9GcmFtZVRyYWNlcnMuaD4KLSNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVk
ZSA8d3RmL0dldFB0ci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC0x
MTM5LDcgKzExMzgsNyBAQCBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJT
CiAgICAgcmV0dXJuICZjb21waWxlci5nZXQoKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdERP
TUpJVD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90
b3R5cGVGdW5jdGlvbkdldEF0dHJpYnV0ZUJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0RE9NSklUPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtMTE1Myw3ICsxMTUyLDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRl
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RET01K
SVQ+OjpjYWxsPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmlidXRlQ2FsbGVy
Pigqc3RhdGUsICJnZXRBdHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dERPTUpJVD46OmNhbGw8anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRBdHRyaWJ1dGVC
b2R5Pigqc3RhdGUsICJnZXRBdHRyaWJ1dGUiKTsKIH0KIAogSlNDOjpFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0QXR0cmli
dXRlKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9NSklUKiBjYXN0ZWRUaGlzLCBET01K
SVQ6OklETEpTQXJndW1lbnRUeXBlPElETERPTVN0cmluZz4gZW5jb2RlZE5hbWUpCkBAIC0xMTY5
LDcgKzExNjgsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gdW5zYWZlCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETE51bGxhYmxlPElETERPTVN0cmluZz4+
KCpzdGF0ZSwgaW1wbC5nZXRBdHRyaWJ1dGUoV1RGTW92ZShuYW1lKSkpKTsKIH0KIAotc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
SXRlbUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RET01KSVQ+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9N
SklUUHJvdG90eXBlRnVuY3Rpb25JdGVtQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0xMTg1LDcgKzExODQsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25JdGVtKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpjYWxs
PGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSXRlbUNhbGxlcj4oKnN0YXRlLCAiaXRlbSIp
OworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RE9NSklUPjo6Y2FsbDxqc1Rlc3RET01K
SVRQcm90b3R5cGVGdW5jdGlvbkl0ZW1Cb2R5Pigqc3RhdGUsICJpdGVtIik7CiB9CiAKIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiB1bnNhZmVKc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkl0ZW0oSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRo
aXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMVW5zaWduZWRTaG9ydD4gZW5jb2RlZFgs
IERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMVW5zaWduZWRTaG9ydD4gZW5jb2RlZFkpCkBA
IC0xMjAzLDcgKzEyMDIsNyBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gdW5z
YWZlCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTPElETERPTVN0cmluZz4oKnN0YXRl
LCBpbXBsLml0ZW0oV1RGTW92ZSh4KSwgV1RGTW92ZSh5KSkpKTsKIH0KIAotc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0
cmlidXRlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdERPTUpJVD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RE
T01KSVRQcm90b3R5cGVGdW5jdGlvbkhhc0F0dHJpYnV0ZUJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0RE9NSklUPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtMTIxMyw3ICsx
MjEyLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFz
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RET01KSVQ+OjpjYWxsPGpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uSGFzQXR0cmli
dXRlQ2FsbGVyPigqc3RhdGUsICJoYXNBdHRyaWJ1dGUiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdERPTUpJVD46OmNhbGw8anNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25IYXNB
dHRyaWJ1dGVCb2R5Pigqc3RhdGUsICJoYXNBdHRyaWJ1dGUiKTsKIH0KIAogSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9u
SGFzQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0RE9NSklUKiBjYXN0ZWRU
aGlzKQpAQCAtMTIyNyw3ICsxMjI2LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIHVuc2FmZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExCb29sZWFuPihp
bXBsLmhhc0F0dHJpYnV0ZSgpKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
K3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVG
dW5jdGlvbkdldEVsZW1lbnRCeUlkQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0xMjQxLDcgKzEyNDAsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50QnlJZChF
eGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RE9NSklU
Pjo6Y2FsbDxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRCeUlkQ2FsbGVy
Pigqc3RhdGUsICJnZXRFbGVtZW50QnlJZCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0RE9NSklUPjo6Y2FsbDxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRC
eUlkQm9keT4oKnN0YXRlLCAiZ2V0RWxlbWVudEJ5SWQiKTsKIH0KIAogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIHVuc2FmZUpzVGVzdERPTUpJVFByb3RvdHlwZUZ1bmN0aW9uR2V0
RWxlbWVudEJ5SWQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RET01KSVQqIGNhc3RlZFRo
aXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMUmVxdWlyZXNFeGlzdGluZ0F0b21pY1N0
cmluZ0FkYXB0b3I8SURMRE9NU3RyaW5nPj4gZW5jb2RlZEVsZW1lbnRJZCkKQEAgLTEyNTcsNyAr
MTI1Niw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiB1bnNhZmUKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlM8SURMSW50ZXJmYWNlPEVsZW1lbnQ+Pigqc3RhdGUs
ICpjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgaW1wbC5nZXRFbGVtZW50QnlJZChXVEZNb3Zl
KGVsZW1lbnRJZCkpKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1lQ2FsbGVyKEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdERPTUpJVD46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5j
dGlvbkdldEVsZW1lbnRzQnlOYW1lQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RET01KSVQ+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0xMjcxLDcgKzEyNzAsNyBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0RE9NSklUUHJvdG90eXBlRnVuY3Rpb25HZXRFbGVtZW50c0J5TmFt
ZShFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0RE9N
SklUPjo6Y2FsbDxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdldEVsZW1lbnRzQnlOYW1l
Q2FsbGVyPigqc3RhdGUsICJnZXRFbGVtZW50c0J5TmFtZSIpOworICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0RE9NSklUPjo6Y2FsbDxqc1Rlc3RET01KSVRQcm90b3R5cGVGdW5jdGlvbkdl
dEVsZW1lbnRzQnlOYW1lQm9keT4oKnN0YXRlLCAiZ2V0RWxlbWVudHNCeU5hbWUiKTsKIH0KIAog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIHVuc2FmZUpzVGVzdERPTUpJVFByb3Rv
dHlwZUZ1bmN0aW9uR2V0RWxlbWVudHNCeU5hbWUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU1Rl
c3RET01KSVQqIGNhc3RlZFRoaXMsIERPTUpJVDo6SURMSlNBcmd1bWVudFR5cGU8SURMQXRvbWlj
U3RyaW5nQWRhcHRvcjxJRExET01TdHJpbmc+PiBlbmNvZGVkRWxlbWVudE5hbWUpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDIxNzUxMikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCi0jaW5j
bHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvUHJvcGVydHlOYW1lQXJy
YXkuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAKQEAgLTIwNyw3ICsyMDYsNyBAQCBib29s
IHNldEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoRXhlCiAgICAgcmV0dXJuIHByb3RvdHlw
ZS0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVj
dG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRl
bUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RFdmVudFRhcmdldD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RF
dmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbUJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0RXZlbnRUYXJnZXQ+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0yMjEsNyAr
MjIwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEV2ZW50VGFyZ2V0UHJvdG90eXBlRnVuY3Rp
b25JdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RFdmVudFRhcmdldD46OmNhbGw8anNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGVGdW5jdGlvbkl0
ZW1DYWxsZXI+KCpzdGF0ZSwgIml0ZW0iKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dEV2ZW50VGFyZ2V0Pjo6Y2FsbDxqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRl
bUJvZHk+KCpzdGF0ZSwgIml0ZW0iKTsKIH0KIAogdm9pZCBKU1Rlc3RFdmVudFRhcmdldDo6dmlz
aXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpJbmRleDogU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDIxNzUxMikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSlNET01XcmFwcGVyQ2FjaGUu
aCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oIgotI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KICNpbmNsdWRlIDxy
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmg+CiAjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgogCkBA
IC0zNTgsNyArMzU3LDcgQEAgYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50
aQogCiAjZW5kaWYKIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
K3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uUmVndWxhck9wZXJhdGlvbkJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtMzczLDExICsz
NzIsMTEgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rp
b25SZWd1bGFyT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uQ2FsbGVyPigqc3RhdGUsICJyZWd1bGFyT3BlcmF0
aW9uIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxs
PGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uQm9keT4o
KnN0YXRlLCAicmVndWxhck9wZXJhdGlvbiIpOwogfQogCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjFDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uQm9keTEoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAt
Mzg4LDE1ICszODcsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlv
bkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24xKEV4ZWNTdGF0ZSogc3RhdGUpCi17Ci0gICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMUNhbGxlcj4oKnN0
YXRlLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbiIpOwotfQotCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShURVNUX0ZFQVRVUkUpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24y
Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dEdsb2JhbE9iamVjdD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbkJvZHky
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEdsb2Jh
bE9iamVjdD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKQEAgLTQwNywzNSArNDAxLDM4IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMihFeGVjU3RhdGUqIHN0
YXRlKQotewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2Fs
bDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvbjJDYWxsZXI+KCpzdGF0ZSwgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24iKTsKLX0KLQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRp
bWVPcGVyYXRpb25PdmVybG9hZERpc3BhdGNoZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAg
c2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGlu
Z3Vpc2hpbmdBcmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKICAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzTnVtYmVyKCkpCi0g
ICAgICAgICAgICByZXR1cm4ganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJs
ZWRBdFJ1bnRpbWVPcGVyYXRpb24yKHN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBqc1Rlc3RH
bG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbkJvZHky
KHN0YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKICNlbmRpZgogI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCi0gICAgICAgIHJldHVybiBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0
aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbjEoc3RhdGUpOworICAgICAgICByZXR1cm4ganNU
ZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25C
b2R5MShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CiAjZW5kaWYKICAgICB9CiAgICAg
cmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlLCB0aHJvd1Njb3BlKTsKIH0KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihF
eGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFs
T2JqZWN0Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvbk92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAiZW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvbiIpOworfQorCiAjZW5kaWYKIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVj
aWZpY1dvcmxkQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3Js
ZEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
R2xvYmFsT2JqZWN0Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwpAQCAtNDUwLDEwICs0NDcsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5T
cGVjaWZpY1dvcmxkQ2FsbGVyPigqc3RhdGUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxkIik7Cisg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEds
b2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkQm9keT4oKnN0
YXRlLCAiZW5hYmxlZEluU3BlY2lmaWNXb3JsZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJ
blNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkQ2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5j
ZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWRC
b2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEds
b2JhbE9iamVjdD46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKQEAgLTQ2OCwxMCArNDY1LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5S
dW50aW1lRmVhdHVyZUVuYWJsZWQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhbGw8anNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFi
bGVkQ2FsbGVyPigqc3RhdGUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0
dXJlRW5hYmxlZCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0
Pjo6Y2FsbDxqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lm
aWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWRCb2R5Pigqc3RhdGUsICJlbmFibGVkSW5T
cGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZCIpOwogfQogCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlv
bkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVzRW5hYmxlZENhbGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1
cmVzRW5hYmxlZEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRp
b248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNDg2LDExICs0ODMsMTEgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZp
Y1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhbGw8anNUZXN0R2xv
YmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGlt
ZUZlYXR1cmVzRW5hYmxlZENhbGxlcj4oKnN0YXRlLCAiZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdo
ZW5SdW50aW1lRmVhdHVyZXNFbmFibGVkIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RHbG9iYWxPYmplY3Q+OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25F
bmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWRCb2R5Pigqc3Rh
dGUsICJlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQiKTsK
IH0KIAogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvblRlc3RQcml2YXRlRnVu
Y3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248
SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uQm9keShK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxP
YmplY3Q+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CkBAIC01MDEsNyArNDk4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2Jh
bE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxs
PGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0aW9uQ2Fs
bGVyLCBDYXN0ZWRUaGlzRXJyb3JCZWhhdmlvcjo6QXNzZXJ0Pigqc3RhdGUsICJ0ZXN0UHJpdmF0
ZUZ1bmN0aW9uIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+
OjpjYWxsPGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25UZXN0UHJpdmF0ZUZ1bmN0
aW9uQm9keSwgQ2FzdGVkVGhpc0Vycm9yQmVoYXZpb3I6OkFzc2VydD4oKnN0YXRlLCAidGVzdFBy
aXZhdGVGdW5jdGlvbiIpOwogfQogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3Bw
CShyZXZpc2lvbiAyMTc1MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzkzLDcgKzc5Myw3
IEBAIGJvb2wgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZSgKICNlbmRpZgogCiAj
aWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25J
bXBsZW1lbnRzTWV0aG9kMUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMUJv
ZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50
ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwpAQCAtODA0LDEzICs4MDQsMTMgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdElu
dGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDEoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNU
ZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMUNhbGxlcj4oKnN0
YXRlLCAiaW1wbGVtZW50c01ldGhvZDEiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1l
bnRzTWV0aG9kMUJvZHk+KCpzdGF0ZSwgImltcGxlbWVudHNNZXRob2QxIik7CiB9CiAKICNlbmRp
ZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMpCi1zdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25JbXBsZW1lbnRzTWV0aG9kMkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0
aG9kMkJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwpAQCAtODI5LDEzICs4MjksMTMgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDIoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNh
bGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMkNhbGxl
cj4oKnN0YXRlLCAiaW1wbGVtZW50c01ldGhvZDIiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25J
bXBsZW1lbnRzTWV0aG9kMkJvZHk+KCpzdGF0ZSwgImltcGxlbWVudHNNZXRob2QyIik7CiB9CiAK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0aW9uMjMp
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90
eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kM0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1l
bnRzTWV0aG9kM0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRp
b248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtODQ0LDI1ICs4NDQsMjkgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDMoRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFj
ZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9k
M0NhbGxlcj4oKnN0YXRlLCAiaW1wbGVtZW50c01ldGhvZDMiKTsKKyAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVu
Y3Rpb25JbXBsZW1lbnRzTWV0aG9kM0JvZHk+KCpzdGF0ZSwgImltcGxlbWVudHNNZXRob2QzIik7
CiB9CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjIyKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMjMpCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZUNvbnN0
cnVjdG9yRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kNChFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVu
Y3Rpb25JbXBsZW1lbnRzTWV0aG9kNEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Ci0gICAg
YXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVGVzdEludGVy
ZmFjZTo6aW1wbGVtZW50c01ldGhvZDQoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kNChFeGVjU3RhdGUqIHN0
YXRlKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbFN0
YXRpYzxqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uSW1wbGVtZW50c01ldGhvZDRC
b2R5Pigqc3RhdGUsICJpbXBsZW1lbnRzTWV0aG9kNCIpOworfQorCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxl
bWVudGFsTWV0aG9kMUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxQm9k
eShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRl
cmZhY2U+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CkBAIC04NzMsMTMgKzg3NywxMyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QxKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpz
VGVzdEludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMUNhbGxlcj4o
KnN0YXRlLCAic3VwcGxlbWVudGFsTWV0aG9kMSIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1
cHBsZW1lbnRhbE1ldGhvZDFCb2R5Pigqc3RhdGUsICJzdXBwbGVtZW50YWxNZXRob2QxIik7CiB9
CiAKICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlUHJv
dG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2QyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1
cHBsZW1lbnRhbE1ldGhvZDJCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTg5OCwxMyArOTAyLDEzIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1l
dGhvZDIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dEludGVyZmFjZT46OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVt
ZW50YWxNZXRob2QyQ2FsbGVyPigqc3RhdGUsICJzdXBwbGVtZW50YWxNZXRob2QyIik7CisgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RJbnRlcmZhY2U+OjpjYWxsPGpzVGVzdEludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMkJvZHk+KCpzdGF0ZSwgInN1cHBs
ZW1lbnRhbE1ldGhvZDIiKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDNDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50
ZXJmYWNlPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFj
ZVByb3RvdHlwZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kM0JvZHkoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtOTEz
LDIxICs5MTcsMjUgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEludGVyZmFjZVByb3RvdHlwZUZ1
bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhvZDNDYWxsZXI+KCpzdGF0ZSwgInN1cHBsZW1l
bnRhbE1ldGhvZDMiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdEludGVyZmFjZT46
OmNhbGw8anNUZXN0SW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25TdXBwbGVtZW50YWxNZXRob2Qz
Qm9keT4oKnN0YXRlLCAic3VwcGxlbWVudGFsTWV0aG9kMyIpOwogfQogCiAjZW5kaWYKIAogI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uU3VwcGxl
bWVudGFsTWV0aG9kNChFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yRnVuY3Rpb25TdXBwbGVtZW50YWxN
ZXRob2Q0Qm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBXZWJDb3JlOjpUZXN0U3VwcGxlbWVudGFs
OjpzdXBwbGVtZW50YWxNZXRob2Q0KCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kNChFeGVjU3RhdGUqIHN0
YXRlKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0SW50ZXJmYWNlPjo6Y2FsbFN0
YXRpYzxqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvckZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9k
NEJvZHk+KCpzdGF0ZSwgInN1cHBsZW1lbnRhbE1ldGhvZDQiKTsKK30KKwogI2VuZGlmCiAKIGJv
b2wgSlNUZXN0SW50ZXJmYWNlT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6
SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNC
dWlsdGluQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHJldmlz
aW9uIDIxNzUxMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4
LDYgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBl
ckNhY2hlLmgiCiAjaW5jbHVkZSAiVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQnVpbHRpbnMuaCIK
LSNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KIApAQCAtMjE4LDcgKzIxNyw3IEBA
IGJvb2wgc2V0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JUZXN0QXQKICAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPjo6c2V0PHNldEpTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tU2V0dGVyPigqc3RhdGUsIHRoaXNW
YWx1ZSwgZW5jb2RlZFZhbHVlLCAidGVzdEF0dHJpYnV0ZVJXQ3VzdG9tIik7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclBy
b3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tRnVuY3Rpb25Cb2R5KEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwpAQCAtMjI3LDcgKzIyNiw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RKU0J1aWx0aW5D
b25zdHJ1Y3RvclByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbUZ1bmN0aW9uKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcj46OmNhbGw8anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRl
c3RDdXN0b21GdW5jdGlvbkNhbGxlcj4oKnN0YXRlLCAidGVzdEN1c3RvbUZ1bmN0aW9uIik7Cisg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj46OmNhbGw8
anNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21GdW5j
dGlvbkJvZHk+KCpzdGF0ZSwgInRlc3RDdXN0b21GdW5jdGlvbiIpOwogfQogCiB2b2lkIEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXIuY3BwCShyZXZpc2lvbiAyMTc1MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJKU0RPTU9wZXJhdGlvbi5oIgog
I2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAKQEAgLTE2
Niw3ICsxNjUsNyBAQCBib29sIHNldEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zCiAg
ICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
K3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2RCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBA
IC0xODEsNyArMTgwLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj46OmNhbGw8anNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kQ2FsbGVyPigq
c3RhdGUsICJtZXRob2QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXI+OjpjYWxsPGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZEJvZHk+KCpzdGF0ZSwgIm1ldGhvZCIpOwogfQogCiBib29sIEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMo
SlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlz
aXRvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAJKHJldmlzaW9uIDIxNzUxMikKKysrIFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjQ0LDcgKzI0NCw3IEBAIGJvb2wgc2V0SlNUZXN0Tm9kZU5hbWUoRXhlY1N0YXRlKiBz
dGF0ZSwKICAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE5vZGU+OjpzZXQ8c2V0SlNUZXN0
Tm9kZU5hbWVTZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFsdWUsICJuYW1lIik7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlUHJvdG90
eXBlRnVuY3Rpb25UZXN0V29ya2VyUHJvbWlzZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHR5cGVuYW1lIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0Tm9kZT46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgSlND
OjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE5vZGVQcm90b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQcm9taXNlQm9keShKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8
SlNUZXN0Tm9kZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIFJlZjxEZWZlcnJlZFByb21p
c2U+JiYgcHJvbWlzZSwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtMjU1LDcg
KzI1NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25UZXN0
V29ya2VyUHJvbWlzZShFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRp
b25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE5vZGU+OjpjYWxsPGpzVGVzdE5vZGVQcm90b3R5cGVG
dW5jdGlvblRlc3RXb3JrZXJQcm9taXNlQ2FsbGVyLCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6Oldp
bmRvd09yV29ya2VyPigqc3RhdGUsICJ0ZXN0V29ya2VyUHJvbWlzZSIpOworICAgIHJldHVybiBJ
RExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE5vZGU+OjpjYWxsPGpzVGVzdE5vZGVQ
cm90b3R5cGVGdW5jdGlvblRlc3RXb3JrZXJQcm9taXNlQm9keSwgUHJvbWlzZUV4ZWN1dGlvblNj
b3BlOjpXaW5kb3dPcldvcmtlcj4oKnN0YXRlLCAidGVzdFdvcmtlclByb21pc2UiKTsKIH0KIAog
c3RydWN0IFRlc3ROb2RlSXRlcmF0b3JUcmFpdHMgewpAQCAtMzI1LDE0ICszMjUsMTQgQEAgSlND
OjpKU09iamVjdCogSlNUZXN0Tm9kZTo6c2VyaWFsaXplKEV4ZQogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9kZVByb3RvdHlwZUZ1
bmN0aW9uVG9KU09OQ2FsbGVyKEV4ZWNTdGF0ZSogc3RhdGUsIEpTVGVzdE5vZGUqIHRoaXNPYmpl
Y3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpT
VmFsdWUganNUZXN0Tm9kZVByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keShFeGVjU3RhdGUqIHN0
YXRlLCBKU1Rlc3ROb2RlKiB0aGlzT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3ROb2RlOjpzZXJpYWxpemUoc3Rh
dGUsIHRoaXNPYmplY3QsIHRocm93U2NvcGUpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3ROb2RlUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE5vZGU+OjpjYWxsPGpzVGVzdE5v
ZGVQcm90b3R5cGVGdW5jdGlvblRvSlNPTkNhbGxlcj4oKnN0YXRlLCAidG9KU09OIik7CisgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3ROb2RlPjo6Y2FsbDxqc1Rlc3ROb2RlUHJvdG90eXBl
RnVuY3Rpb25Ub0pTT05Cb2R5Pigqc3RhdGUsICJ0b0pTT04iKTsKIH0KIAogdm9pZCBKU1Rlc3RO
b2RlOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMjE3NTEyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NzQs
NyArNDc3NCw3IEBAIGJvb2wgc2V0SlNUZXN0T2JqU3RyaW5naWZpZXJBdHRyaWJ1dGUoRXgKIH0K
IAogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9u
MUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uQm9keTEoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9Q
QVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNDc4NSwxNSAr
NDc4NSwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRp
bWVPcGVyYXRpb24xKEV4ZWNTdGF0ZSogc3RhdGUpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvbjFDYWxsZXI+KCpzdGF0ZSwgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24i
KTsKLX0KLQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQotc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvbjJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbkJvZHky
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
IHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKQEAgLTQ4MDQsMzUgKzQ3OTksMzggQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uMihFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24yQ2FsbGVyPigqc3RhdGUsICJlbmFibGVkQXRS
dW50aW1lT3BlcmF0aW9uIik7Ci19Ci0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCisKK3N0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJs
ZWRBdFJ1bnRpbWVPcGVyYXRpb25PdmVybG9hZERpc3BhdGNoZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFZNJiB2bSA9IHN0
YXRlLT52bSgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAg
c2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50Q291
bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGlu
Z3Vpc2hpbmdBcmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKICAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzTnVtYmVyKCkpCi0g
ICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50
aW1lT3BlcmF0aW9uMihzdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uQm9keTIoc3RhdGUsIGNhc3RlZFRo
aXMsIHRocm93U2NvcGUpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKLSAgICAg
ICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvbjEoc3RhdGUpOworICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25F
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uQm9keTEoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2Nv
cGUpOwogI2VuZGlmCiAgICAgfQogICAgIHJldHVybiBhcmdzQ291bnQgPCAxID8gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CisKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRS
dW50aW1lT3BlcmF0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvbk92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAiZW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvbiIpOworfQorCiAjZW5kaWYKIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3Js
ZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3Js
ZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTQ4NDcsMTAgKzQ4NDUsMTAgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lm
aWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZENh
bGxlcj4oKnN0YXRlLCAiZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVu
YWJsZWQiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0
dXJlRW5hYmxlZEJvZHk+KCpzdGF0ZSwgImVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGlt
ZUZlYXR1cmVFbmFibGVkIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2RDYWxsZXIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V29ybGRTcGVjaWZpY01ldGhvZEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNDg2NSwxMSArNDg2MywxMSBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmljTWV0aG9kKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZENhbGxlcj4o
KnN0YXRlLCAid29ybGRTcGVjaWZpY01ldGhvZCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNN
ZXRob2RCb2R5Pigqc3RhdGUsICJ3b3JsZFNwZWNpZmljTWV0aG9kIik7CiB9CiAKICNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbkNhbGxlcihKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25F
bmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC00ODg0LDEyICs0ODgyLDEyIEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRCeVNldHRpbmdP
cGVyYXRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQnlTZXR0aW5n
T3BlcmF0aW9uQ2FsbGVyPigqc3RhdGUsICJlbmFibGVkQnlTZXR0aW5nT3BlcmF0aW9uIik7Cisg
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uRW5hYmxlZEJ5U2V0dGluZ09wZXJhdGlvbkJvZHk+KCpzdGF0ZSwgImVuYWJsZWRC
eVNldHRpbmdPcGVyYXRpb24iKTsKIH0KIAogI2VuZGlmCiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVm9pZE1ldGhvZEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNDkwMCwxMCArNDg5OCwxMCBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZENhbGxlcj4oKnN0YXRlLCAidm9pZE1ldGhvZCIpOwor
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZvaWRNZXRob2RCb2R5Pigqc3RhdGUsICJ2b2lkTWV0aG9kIik7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZvaWRNZXRob2RXaXRoQXJnc0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3NCb2R5KEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAg
LTQ5MjIsMTAgKzQ5MjAsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVm9pZE1ldGhvZFdpdGhBcmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Vm9pZE1ldGhvZFdpdGhBcmdzQ2FsbGVyPigqc3RhdGUsICJ2b2lkTWV0aG9kV2l0aEFyZ3MiKTsK
KyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3NCb2R5Pigqc3RhdGUsICJ2b2lkTWV0aG9kV2l0
aEFyZ3MiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kQm9keShKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBA
IC00OTM1LDEwICs0OTMzLDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkJ5dGVNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0
aG9kQ2FsbGVyPigqc3RhdGUsICJieXRlTWV0aG9kIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZEJv
ZHk+KCpzdGF0ZSwgImJ5dGVNZXRob2QiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJnc0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNDk1NiwxMCArNDk1NCwxMCBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFy
Z3MoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25CeXRlTWV0aG9kV2l0aEFyZ3NDYWxs
ZXI+KCpzdGF0ZSwgImJ5dGVNZXRob2RXaXRoQXJncyIpOworICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RX
aXRoQXJnc0JvZHk+KCpzdGF0ZSwgImJ5dGVNZXRob2RXaXRoQXJncyIpOwogfQogCi1zdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3Rl
dE1ldGhvZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNDk2OSwxMCArNDk2NywxMCBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZChF
eGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kQ2FsbGVyPigqc3RhdGUs
ICJvY3RldE1ldGhvZCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kQm9keT4oKnN0YXRlLCAib2N0
ZXRNZXRob2QiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJnc0NhbGxlcihKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1l
dGhvZFdpdGhBcmdzQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CkBAIC00OTkwLDEwICs0OTg4LDEwIEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRl
KiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PY3RldE1ldGhvZFdpdGhBcmdzQ2FsbGVyPigqc3RhdGUs
ICJvY3RldE1ldGhvZFdpdGhBcmdzIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJnc0Jv
ZHk+KCpzdGF0ZSwgIm9jdGV0TWV0aG9kV2l0aEFyZ3MiKTsKIH0KIAotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZENh
bGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Mb25nTWV0aG9kQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01MDAzLDEwICs1MDAxLDEwIEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2QoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kQ2FsbGVyPigqc3RhdGUsICJsb25nTWV0aG9k
Iik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTG9uZ01ldGhvZEJvZHk+KCpzdGF0ZSwgImxvbmdNZXRob2QiKTsKIH0K
IAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTG9uZ01ldGhvZFdpdGhBcmdzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJnc0JvZHko
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQog
ewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwpAQCAtNTAyNCwxMCArNTAyMiwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3NDYWxsZXI+KCpzdGF0ZSwgImxvbmdNZXRob2RXaXRoQXJn
cyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkxvbmdNZXRob2RXaXRoQXJnc0JvZHk+KCpzdGF0ZSwgImxvbmdNZXRo
b2RXaXRoQXJncyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kQm9keShK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CkBAIC01MDM3LDEwICs1MDM1LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk9iak1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1l
dGhvZENhbGxlcj4oKnN0YXRlLCAib2JqTWV0aG9kIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kQm9k
eT4oKnN0YXRlLCAib2JqTWV0aG9kIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
K3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk9iak1ldGhvZFdpdGhBcmdzQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01MDU4LDEwICs1MDU2LDEwIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9iak1ldGhvZFdpdGhBcmdzKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3NDYWxsZXI+KCpz
dGF0ZSwgIm9iak1ldGhvZFdpdGhBcmdzIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT2JqTWV0aG9kV2l0aEFyZ3NC
b2R5Pigqc3RhdGUsICJvYmpNZXRob2RXaXRoQXJncyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSW5zdGFuY2VGdW5jdGlvblVuZm9yZ2VhYmxlTWV0
aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJbnN0
YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVNZXRob2RCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTUwNzEsMTAgKzUwNjksMTAg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU1l
dGhvZChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpJbnN0YW5jZUZ1bmN0aW9uVW5mb3JnZWFibGVNZXRob2RDYWxs
ZXI+KCpzdGF0ZSwgInVuZm9yZ2VhYmxlTWV0aG9kIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9iakluc3RhbmNlRnVuY3Rpb25VbmZvcmdlYWJsZU1l
dGhvZEJvZHk+KCpzdGF0ZSwgInVuZm9yZ2VhYmxlTWV0aG9kIik7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBcmdUcmVh
dGluZ051bGxBc0VtcHR5U3RyaW5nQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01MDg5LDEwICs1MDg3LDEwIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBcmdUcmVhdGlu
Z051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aEFyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdp
dGhBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFy
Z1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoQXJnVHJl
YXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jlc29s
dmVyUGFyYW1ldGVyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXJC
b2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKQEAgLTUxMDcsMTAgKzUxMDUsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlcihFeGVjU3Rh
dGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0
ZXJDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhYUGF0aE5TUmVzb2x2ZXJQYXJhbWV0ZXIiKTsK
KyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoWFBhdGhOU1Jlc29sdmVyUGFyYW1ldGVyQm9keT4oKnN0YXRl
LCAibWV0aG9kV2l0aFhQYXRoTlNSZXNvbHZlclBhcmFtZXRlciIpOwogfQogCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJs
ZVN0cmluZ01ldGhvZENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVN0cmluZ01ldGhvZEJvZHkoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTEy
MCwxOCArNTExOCwyMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25OdWxsYWJsZVN0cmluZ01ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51
bGxhYmxlU3RyaW5nTWV0aG9kQ2FsbGVyPigqc3RhdGUsICJudWxsYWJsZVN0cmluZ01ldGhvZCIp
OworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nTWV0aG9kQm9keT4oKnN0YXRlLCAibnVsbGFibGVT
dHJpbmdNZXRob2QiKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpDb25zdHJ1Y3RvckZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2QoRXhlY1N0YXRl
KiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2RCb2R5KEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFZNJiB2bSA9
IHN0YXRlLT52bSgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExOdWxsYWJsZTxJRExET01T
dHJpbmc+Pigqc3RhdGUsIFRlc3RPYmo6Om51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKCkpKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTnVsbGFibGVTdHJpbmdTcGVjaWFsTWV0aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk51bGxhYmxlU3RyaW5n
U3RhdGljTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25OdWxs
YWJsZVN0cmluZ1N0YXRpY01ldGhvZEJvZHk+KCpzdGF0ZSwgIm51bGxhYmxlU3RyaW5nU3RhdGlj
TWV0aG9kIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZEJvZHkoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAt
NTE0NSwxMCArNTE0NywxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25OdWxsYWJsZVN0cmluZ1NwZWNpYWxNZXRob2RDYWxsZXI+KCpzdGF0ZSwgIm51bGxh
YmxlU3RyaW5nU3BlY2lhbE1ldGhvZCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU3RyaW5nU3BlY2lh
bE1ldGhvZEJvZHk+KCpzdGF0ZSwgIm51bGxhYmxlU3RyaW5nU3BlY2lhbE1ldGhvZCIpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoRW51bUFyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZ0JvZHkoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpA
QCAtNTE2MywxMCArNTE2NSwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoRW51bUFyZyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhFbnVtQXJnQ2FsbGVyPigqc3RhdGUsICJtZXRob2RXaXRoRW51bUFyZyIpOwor
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhFbnVtQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aEVudW1B
cmciKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFN0YW5kYWxvbmVFbnVtQXJnQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhTdGFuZGFsb25lRW51bUFyZ0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlND
OjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTE4MSwxMCArNTE4MywxMCBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU3RhbmRhbG9u
ZUVudW1BcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU3RhbmRh
bG9uZUVudW1BcmdDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZyIp
OworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZ0JvZHk+KCpzdGF0ZSwgIm1l
dGhvZFdpdGhTdGFuZGFsb25lRW51bUFyZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxF
bnVtQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdCb2R5KEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTUxOTcs
MTAgKzUxOTksMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEVudW1BcmdDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRp
b25hbEVudW1BcmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxFbnVtQXJnQm9keT4o
KnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsRW51bUFyZyIpOwogfQogCi1zdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEVudW1BcmdBbmREZWZhdWx0VmFsdWVCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTUyMTMsMTAgKzUyMTUsMTAgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
RW51bUFyZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWVDYWxsZXI+KCpzdGF0ZSwgIm1l
dGhvZFdpdGhPcHRpb25hbEVudW1BcmdBbmREZWZhdWx0VmFsdWUiKTsKKyAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxFbnVtQXJnQW5kRGVmYXVsdFZhbHVlQm9keT4oKnN0YXRlLCAibWV0aG9k
V2l0aE9wdGlvbmFsRW51bUFyZ0FuZERlZmF1bHRWYWx1ZSIpOwogfQogCi1zdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RUaGF0
UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFy
Z3NBbmRUaHJvd3NCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKQEAgLTUyMzIsMTAgKzUyMzQsMTAgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRo
cm93cyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFRoYXRSZXF1aXJlc0Fs
bEFyZ3NBbmRUaHJvd3NDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NB
bmRUaHJvd3MiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dz
Qm9keT4oKnN0YXRlLCAibWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdB
cmdCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKQEAgLTUyNTAsMTAgKzUyNTIsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZyhFeGVjU3RhdGUqIHN0YXRl
KQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdDYWxsZXI+KCpzdGF0ZSwgIm1l
dGhvZFdpdGhVU1ZTdHJpbmdBcmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVVNWU3RyaW5nQXJn
Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aFVTVlN0cmluZ0FyZyIpOwogfQogCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoTnVsbGFibGVVU1ZTdHJpbmdBcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlVVNWU3Ry
aW5nQXJnQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRo
cm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CkBAIC01MjY4LDEwICs1MjcwLDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0FyZyhFeGVj
U3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOdWxsYWJsZVVTVlN0cmluZ0Fy
Z0NhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnIik7CisgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnQm9keT4oKnN0YXRlLCAibWV0aG9k
V2l0aE51bGxhYmxlVVNWU3RyaW5nQXJnIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdB
cmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZTdHJpbmdB
cmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01Mjg2LDEwICs1Mjg4LDEwIEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhVU1ZT
dHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0g
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdD
YWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhVU1ZTdHJpbmdBcmdUcmVhdGluZ051bGxBc0VtcHR5
U3RyaW5nIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVTVlN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFz
RW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoVVNWU3RyaW5nQXJnVHJlYXRpbmdO
dWxsQXNFbXB0eVN0cmluZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ0NhbGxl
cihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTMwNCwxMCArNTMwNiwxMCBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0
ZVN0cmluZ0FyZyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRl
U3RyaW5nQXJnQ2FsbGVyPigqc3RhdGUsICJtZXRob2RXaXRoQnl0ZVN0cmluZ0FyZyIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aEJ5
dGVTdHJpbmdBcmciKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxhYmxlQnl0ZVN0cmluZ0FyZ0Nh
bGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnQm9keShKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01MzIyLDEw
ICs1MzI0LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJpbmdBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnQ2FsbGVyPigqc3RhdGUsICJtZXRo
b2RXaXRoTnVsbGFibGVCeXRlU3RyaW5nQXJnIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE51bGxh
YmxlQnl0ZVN0cmluZ0FyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhOdWxsYWJsZUJ5dGVTdHJp
bmdBcmciKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEJ5dGVTdHJpbmdBcmdUcmVhdGluZ051bGxBc0Vt
cHR5U3RyaW5nQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNF
bXB0eVN0cmluZ0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwpAQCAtNTM0MCwxMCArNTM0MiwxMCBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5n
TnVsbEFzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoQnl0ZVN0cmluZ0FyZ1RyZWF0aW5nTnVsbEFzRW1wdHlTdHJpbmdDYWxsZXI+KCpzdGF0ZSwg
Im1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZyIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0cmluZ0Jv
ZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhCeXRlU3RyaW5nQXJnVHJlYXRpbmdOdWxsQXNFbXB0eVN0
cmluZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25TZXJpYWxpemVkVmFsdWVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVl
Qm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CkBAIC01MzU4LDEwICs1MzYwLDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblNlcmlhbGl6ZWRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQogewotICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblNlcmlhbGl6ZWRWYWx1ZUNhbGxlcj4oKnN0YXRlLCAic2VyaWFsaXplZFZhbHVlIik7
CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uU2VyaWFsaXplZFZhbHVlQm9keT4oKnN0YXRlLCAic2VyaWFsaXplZFZhbHVl
Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNvcmRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFJlY29yZEJv
ZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwpAQCAtNTM3NiwxMCArNTM3OCwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoUmVjb3JkKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aFJlY29yZENhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aFJlY29yZCIp
OworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhSZWNvcmRCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoUmVj
b3JkIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4
Y2VwdGlvbkJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwpAQCAtNTM5MCwxMCArNTM5MiwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbkNhbGxlcj4oKnN0YXRlLCAibWV0
aG9kV2l0aEV4Y2VwdGlvbiIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25Cb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoRXhjZXB0aW9uIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRp
b25SZXR1cm5pbmdMb25nQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25n
Qm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CkBAIC01NDAzLDEwICs1NDA1LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmdD
YWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdMb25nIik7CisgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ0xvbmdCb2R5Pigqc3RhdGUsICJtZXRo
b2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nTG9uZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0
aW9uUmV0dXJuaW5nT2JqZWN0Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdP
YmplY3RCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKQEAgLTU0MTYsMTAgKzU0MTgsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdChF
eGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5p
bmdPYmplY3RDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhFeGNlcHRpb25SZXR1cm5pbmdPYmpl
Y3QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uUmV0dXJuaW5nT2JqZWN0Qm9keT4o
KnN0YXRlLCAibWV0aG9kV2l0aEV4Y2VwdGlvblJldHVybmluZ09iamVjdCIpOwogfQogCi1zdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25D
dXN0b21NZXRob2RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kQm9keShKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0
ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01NDI4LDEwICs1NDMw
LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1l
dGhvZChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZENhbGxlcj4o
KnN0YXRlLCAiY3VzdG9tTWV0aG9kIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kQm9keT4oKnN0
YXRlLCAiY3VzdG9tTWV0aG9kIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
K3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkN1c3RvbU1ldGhvZFdpdGhBcmdzQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01NDQwLDEwICs1NDQyLDEwIEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkN1c3RvbU1ldGhvZFdpdGhB
cmdzKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9tTWV0aG9kV2l0aEFyZ3ND
YWxsZXI+KCpzdGF0ZSwgImN1c3RvbU1ldGhvZFdpdGhBcmdzIik7CisgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ3VzdG9t
TWV0aG9kV2l0aEFyZ3NCb2R5Pigqc3RhdGUsICJjdXN0b21NZXRob2RXaXRoQXJncyIpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Qcml2YXRlTWV0aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRob2RCb2R5KEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU0NTcs
MTAgKzU0NTksMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
UHJpdmF0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblByaXZhdGVNZXRo
b2RDYWxsZXIsIENhc3RlZFRoaXNFcnJvckJlaGF2aW9yOjpBc3NlcnQ+KCpzdGF0ZSwgInByaXZh
dGVNZXRob2QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Qcml2YXRlTWV0aG9kQm9keSwgQ2FzdGVkVGhpc0Vycm9y
QmVoYXZpb3I6OkFzc2VydD4oKnN0YXRlLCAicHJpdmF0ZU1ldGhvZCIpOwogfQogCi1zdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJs
aWNBbmRQcml2YXRlTWV0aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblB1YmxpY0FuZFByaXZhdGVNZXRob2RCb2R5KEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
QEAgLTU0NzQsMTAgKzU0NzYsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uUHVibGljQW5kUHJpdmF0ZU1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQogewotICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblB1YmxpY0FuZFByaXZhdGVNZXRob2RDYWxsZXI+KCpzdGF0ZSwgInB1YmxpY0FuZFBy
aXZhdGVNZXRob2QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25QdWJsaWNBbmRQcml2YXRlTWV0aG9kQm9keT4oKnN0
YXRlLCAicHVibGljQW5kUHJpdmF0ZU1ldGhvZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVy
Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXJCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU0OTYsMTAgKzU0OTgsMTAgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQWRkRXZlbnRMaXN0ZW5l
cihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkFkZEV2ZW50TGlzdGVuZXJDYWxsZXI+
KCpzdGF0ZSwgImFkZEV2ZW50TGlzdGVuZXIiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BZGRFdmVudExpc3RlbmVy
Qm9keT4oKnN0YXRlLCAiYWRkRXZlbnRMaXN0ZW5lciIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25SZW1vdmVFdmVudExp
c3RlbmVyQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50TGlzdGVuZXJCb2R5KEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU1MTgsMTAgKzU1
MjAsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uUmVtb3Zl
RXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblJlbW92ZUV2ZW50
TGlzdGVuZXJDYWxsZXI+KCpzdGF0ZSwgInJlbW92ZUV2ZW50TGlzdGVuZXIiKTsKKyAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25SZW1vdmVFdmVudExpc3RlbmVyQm9keT4oKnN0YXRlLCAicmVtb3ZlRXZlbnRMaXN0ZW5lciIp
OwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZv
aWRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKQEAgLTU1MzIsMTAgKzU1MzQsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZChFeGVjU3RhdGUqIHN0YXRlKQog
ewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWRDYWxsZXI+KCpzdGF0ZSwgIndpdGhTY3Jp
cHRTdGF0ZVZvaWQiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkQm9keT4oKnN0YXRl
LCAid2l0aFNjcmlwdFN0YXRlVm9pZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01NTQ1LDEwICs1NTQ3LDEwIEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9i
aihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iakNhbGxl
cj4oKnN0YXRlLCAid2l0aFNjcmlwdFN0YXRlT2JqIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0
YXRlT2JqQm9keT4oKnN0YXRlLCAid2l0aFNjcmlwdFN0YXRlT2JqIik7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhT
Y3JpcHRTdGF0ZVZvaWRFeGNlcHRpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2Vw
dGlvbkJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwpAQCAtNTU1OSwxMCArNTU2MSwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbkNhbGxl
cj4oKnN0YXRlLCAid2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbiIpOworICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb25Cb2R5Pigqc3RhdGUsICJ3aXRoU2NyaXB0U3RhdGVW
b2lkRXhjZXB0aW9uIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbkNhbGxl
cihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb25Cb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU1NzIsMTAgKzU1NzQs
MTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dFN0YXRlT2JqRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdFN0YXRlT2JqRXhjZXB0aW9uQ2FsbGVyPigqc3RhdGUsICJ3aXRoU2NyaXB0U3RhdGVPYmpF
eGNlcHRpb24iKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb25Cb2R5Pigq
c3RhdGUsICJ3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iKTsKIH0KIAotc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRCb2R5
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
IHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKQEAgLTU1ODksMTAgKzU1OTEsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dENhbGxlcj4oKnN0YXRlLCAi
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEJvZHk+KCpzdGF0ZSwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0Iik7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVDYWxsZXIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUJvZHkoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTYwNiwx
MCArNTYwOCwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25X
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUNh
bGxlcj4oKnN0YXRlLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZSIp
OworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVCb2R5
Pigqc3RhdGUsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlIik7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRp
b25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4
Y2VwdGlvbkJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFN
KHRocm93U2NvcGUpOwpAQCAtNTYyMiwxMCArNTYyNCwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlT2JqRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbkNhbGxlcj4oKnN0
YXRlLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlv
biIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVP
YmpFeGNlcHRpb25Cb2R5Pigqc3RhdGUsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlT2JqRXhjZXB0aW9uIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01NjM4LDEwICs1NjQwLDEw
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdp
dGhTcGFjZXNDYWxsZXI+KCpzdGF0ZSwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNCb2R5Pigqc3RhdGUsICJ3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyIpOwogfQogCi1zdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0
QXJndW1lbnRzQW5kQ2FsbFN0YWNrQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxs
U3RhY2tCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKQEAgLTU2NTMsMTAgKzU2NTUsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayhFeGVj
U3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3Rh
Y2tDYWxsZXI+KCpzdGF0ZSwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2siKTsKKyAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQm9keT4oKnN0YXRlLCAid2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFjayIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1
bWVudENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRo
cm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoRG9jdW1lbnRBcmd1bWVudEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTY3MiwxMCArNTY3
NCwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoRG9j
dW1lbnRBcmd1bWVudChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhEb2N1bWVu
dEFyZ3VtZW50Q2FsbGVyPigqc3RhdGUsICJ3aXRoRG9jdW1lbnRBcmd1bWVudCIpOworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbldpdGhEb2N1bWVudEFyZ3VtZW50Qm9keT4oKnN0YXRlLCAid2l0aERvY3VtZW50QXJndW1l
bnQiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50QXJndW1lbnRDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENh
bGxlckRvY3VtZW50QXJndW1lbnRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU2ODksMTAgKzU2OTEsMTAgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxlckRvY3VtZW50QXJn
dW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyRG9jdW1lbnRB
cmd1bWVudENhbGxlcj4oKnN0YXRlLCAid2l0aENhbGxlckRvY3VtZW50QXJndW1lbnQiKTsKKyAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoQ2FsbGVyRG9jdW1lbnRBcmd1bWVudEJvZHk+KCpzdGF0ZSwgIndpdGhDYWxs
ZXJEb2N1bWVudEFyZ3VtZW50Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhDYWxsZXJXaW5kb3dBcmd1bWVudENh
bGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU3MDMsMTAgKzU3MDUs
MTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxl
cldpbmRvd0FyZ3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aENhbGxl
cldpbmRvd0FyZ3VtZW50Q2FsbGVyPigqc3RhdGUsICJ3aXRoQ2FsbGVyV2luZG93QXJndW1lbnQi
KTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoQ2FsbGVyV2luZG93QXJndW1lbnRCb2R5Pigqc3RhdGUsICJ3aXRo
Q2FsbGVyV2luZG93QXJndW1lbnQiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTcxOSwxMCArNTcyMSwxMCBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxBcmcoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxBcmdDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEFyZyIpOworICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEFy
ZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmdBbmREZWZhdWx0VmFsdWVDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlQm9keShKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01NzM1LDEw
ICs1NzM3LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZShFeGVjU3RhdGUqIHN0YXRlKQogewot
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZ0FuZERlZmF1bHRWYWx1ZUNhbGxlcj4oKnN0
YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlIik7CisgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlQm9keT4oKnN0YXRlLCAibWV0aG9k
V2l0aE9wdGlvbmFsQXJnQW5kRGVmYXVsdFZhbHVlIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25P
cHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFy
Z0FuZE9wdGlvbmFsQXJnQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01NzU1LDEwICs1NzU3LDEwIEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0Fu
ZE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5v
bk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmdDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhOb25P
cHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlv
bmFsQXJnQW5kT3B0aW9uYWxBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoTm9uT3B0aW9uYWxB
cmdBbmRPcHRpb25hbEFyZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRU
d29PcHRpb25hbEFyZ3NDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0
aW9uYWxBcmdzQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CkBAIC01Nzc3LDEwICs1Nzc5LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09w
dGlvbmFsQXJncyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25P
cHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJnc0NhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE5v
bk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5v
bk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE5v
bk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdCb2R5KEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU3
OTMsMTAgKzU3OTUsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQ2FsbGVyPigqc3RhdGUsICJtZXRob2RXaXRoT3B0
aW9uYWxTdHJpbmciKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdCb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmciKTsKIH0KIAotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsVVNWU3RyaW5nQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZ0JvZHko
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQog
ewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwpAQCAtNTgwOSwxMCArNTgxMSwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmcoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZTdHJpbmdDYWxsZXI+KCpzdGF0ZSwg
Im1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248
SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFVTVlN0cmluZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFVTVlN0cmluZyIp
OwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01ODI1LDEwICs1ODI3LDEwIEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bEF0b21pY1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEF0b21pY1N0cmluZ0NhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRv
bWljU3RyaW5nIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nQm9k
eT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nIik7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0FuZERlZmF1bHRWYWx1ZUNhbGxlcihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWVCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU4NDEsMTAgKzU4NDMsMTAg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nQW5kRGVmYXVsdFZhbHVlQ2FsbGVyPigqc3RhdGUs
ICJtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUiKTsKKyAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWVCb2R5Pigqc3RhdGUsICJtZXRo
b2RXaXRoT3B0aW9uYWxTdHJpbmdBbmREZWZhdWx0VmFsdWUiKTsKIH0KIAotc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQXRvbWljU3RyaW5nQW5kRGVmYXVsdFZhbHVlQ2FsbGVyKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1bHRWYWx1ZUJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTg1NywxMCArNTg1
OSwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmREZWZhdWx0VmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdBbmREZWZhdWx0VmFs
dWVDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERlZmF1
bHRWYWx1ZSIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0FuZERl
ZmF1bHRWYWx1ZUJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0Fu
ZERlZmF1bHRWYWx1ZSIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxD
YWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsQm9keShKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01ODczLDEw
ICs1ODc1LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbENhbGxlcj4oKnN0YXRlLCAibWV0aG9k
V2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
U3RyaW5nSXNOdWxsQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxs
Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkQ2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkQm9keShKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01ODg5LDEwICs1
ODkxLDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWRDYWxsZXI+KCpzdGF0ZSwg
Im1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkIik7CisgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWRCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0
aW9uYWxTdHJpbmdJc1VuZGVmaW5lZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBdG9t
aWNTdHJpbmdJc051bGxDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNO
dWxsQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CkBAIC01OTA1LDEwICs1OTA3LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzTnVsbChF
eGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0
cmluZ0lzTnVsbENhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5n
SXNOdWxsIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNOdWxs
Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNOdWxsIik7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmdDYWxsZXIoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZ0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTkyMSwxMCArNTky
MywxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RX
aXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZ0NhbGxlcj4oKnN0YXRl
LCAibWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNFbXB0eVN0cmluZyIpOworICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzRW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RX
aXRoT3B0aW9uYWxTdHJpbmdJc0VtcHR5U3RyaW5nIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVVNW
U3RyaW5nSXNFbXB0eVN0cmluZ0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTkzNywxMCArNTkzOSwxMCBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVU1ZT
dHJpbmdJc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZ0NhbGxlcj4oKnN0YXRlLCAibWV0aG9k
V2l0aE9wdGlvbmFsVVNWU3RyaW5nSXNFbXB0eVN0cmluZyIpOworICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFVTVlN0cmluZ0lzRW1wdHlTdHJpbmdCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRo
T3B0aW9uYWxVU1ZTdHJpbmdJc0VtcHR5U3RyaW5nIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
QXRvbWljU3RyaW5nSXNFbXB0eVN0cmluZ0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTk1MywxMCArNTk1NSwxMCBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNFbXB0eVN0cmluZ0NhbGxlcj4oKnN0
YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQXRvbWljU3RyaW5nSXNFbXB0eVN0cmluZyIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEF0b21pY1N0cmluZ0lzRW1wdHlTdHJpbmdCb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxBdG9taWNTdHJpbmdJc0VtcHR5U3RyaW5nIik7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFOQ2FsbGVyKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbERvdWJsZUlzTmFOQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01OTY5LDEwICs1OTcxLDEwIEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbERvdWJs
ZUlzTmFOKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFs
RG91YmxlSXNOYU5DYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbERvdWJsZUlzTmFO
Iik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRG91YmxlSXNOYU5Cb2R5Pigqc3RhdGUs
ICJtZXRob2RXaXRoT3B0aW9uYWxEb3VibGVJc05hTiIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxGbG9hdElzTmFOQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEZsb2F0SXNOYU5Cb2R5
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
IHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKQEAgLTU5ODUsMTAgKzU5ODcsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJc05hTihFeGVjU3RhdGUqIHN0YXRl
KQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEZsb2F0SXNOYU5DYWxsZXI+KCpzdGF0
ZSwgIm1ldGhvZFdpdGhPcHRpb25hbEZsb2F0SXNOYU4iKTsKKyAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxGbG9hdElzTmFOQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsRmxvYXRJ
c05hTiIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0NhbGxlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxMb25nTG9uZ0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlND
OjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjAwMSwxMCArNjAwMywxMCBAQCBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxM
b25nTG9uZyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25h
bExvbmdMb25nQ2FsbGVyPigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZyIpOwor
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbExvbmdMb25nQm9keT4oKnN0YXRlLCAibWV0aG9k
V2l0aE9wdGlvbmFsTG9uZ0xvbmciKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xv
bmdJc1plcm9DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm9Cb2R5KEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
QEAgLTYwMTcsMTAgKzYwMTksMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8oRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVyb0NhbGxlcj4o
KnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsTG9uZ0xvbmdJc1plcm8iKTsKKyAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25N
ZXRob2RXaXRoT3B0aW9uYWxMb25nTG9uZ0lzWmVyb0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhP
cHRpb25hbExvbmdMb25nSXNaZXJvIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2ln
bmVkTG9uZ0xvbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0Jv
ZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwpAQCAtNjAzMywxMCArNjAzNSwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9u
Z0NhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZyIpOwor
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdCb2R5Pigqc3RhdGUs
ICJtZXRob2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nIik7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm9DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsVW5zaWduZWRMb25nTG9uZ0lzWmVyb0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjA0OSwxMCArNjA1MSwxMCBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxVbnNpZ25lZExvbmdMb25nSXNaZXJvKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVyb0NhbGxlcj4oKnN0YXRlLCAi
bWV0aG9kV2l0aE9wdGlvbmFsVW5zaWduZWRMb25nTG9uZ0lzWmVybyIpOworICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhPcHRpb25hbFVuc2lnbmVkTG9uZ0xvbmdJc1plcm9Cb2R5Pigqc3RhdGUsICJtZXRo
b2RXaXRoT3B0aW9uYWxVbnNpZ25lZExvbmdMb25nSXNaZXJvIik7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhPcHRpb25hbFNlcXVlbmNlQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlQm9k
eShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CkBAIC02MDY1LDEwICs2MDY3LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VDYWxsZXI+KCpzdGF0ZSwg
Im1ldGhvZFdpdGhPcHRpb25hbFNlcXVlbmNlIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlv
bmFsU2VxdWVuY2VCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZSIpOwog
fQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxTZXF1ZW5jZUlzRW1wdHlDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsU2VxdWVuY2VJc0VtcHR5Qm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02MDgxLDEwICs2MDgzLDEwIEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRp
b25hbFNlcXVlbmNlSXNFbXB0eShFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFNlcXVlbmNlSXNFbXB0eUNhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE9w
dGlvbmFsU2VxdWVuY2VJc0VtcHR5Iik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsU2Vx
dWVuY2VJc0VtcHR5Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsU2VxdWVuY2VJc0Vt
cHR5Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5DYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsQm9vbGVhbkJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjA5NywxMCArNjA5OSwxMCBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxCb29s
ZWFuKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9v
bGVhbkNhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbiIpOworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Cb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0
aW9uYWxCb29sZWFuIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNl
Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlQm9keShKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02MTEz
LDEwICs2MTE1LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
IAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0g
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsQm9vbGVhbklzRmFsc2VDYWxsZXI+KCpzdGF0ZSwg
Im1ldGhvZFdpdGhPcHRpb25hbEJvb2xlYW5Jc0ZhbHNlIik7CisgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0
aE9wdGlvbmFsQm9vbGVhbklzRmFsc2VCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxC
b29sZWFuSXNGYWxzZSIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBbnlDYWxsZXIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE9wdGlvbmFsQW55Qm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02MTI5LDEwICs2MTMxLDEwIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFu
eShFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFueUNh
bGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQW55Iik7CisgICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsQW55Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsQW55Iik7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE9iamVjdENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0
ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9u
YWxPYmplY3RCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKQEAgLTYxNDUsMTAgKzYxNDcsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0KEV4ZWNTdGF0
ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsT2JqZWN0Q2FsbGVyPigq
c3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxPYmplY3QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
T3B0aW9uYWxPYmplY3RCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxPYmplY3QiKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVyQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlckJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjE2MSwxMCArNjE2MywxMCBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0
aW9uYWxOdWxsYWJsZVdyYXBwZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhP
cHRpb25hbE51bGxhYmxlV3JhcHBlciIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51
bGxhYmxlV3JhcHBlckJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3Jh
cHBlciIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxOdWxsYWJsZVdyYXBwZXJJc051bGxD
YWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsQm9keShKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBA
IC02MTc3LDEwICs2MTc5LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklzTnVsbChFeGVjU3RhdGUq
IHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbE51bGxhYmxlV3JhcHBlcklz
TnVsbENhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNO
dWxsIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxs
Qm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aE9wdGlvbmFsTnVsbGFibGVXcmFwcGVySXNOdWxsIik7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbFhQYXRoTlNSZXNvbHZlckNhbGxlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXJCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTYxOTMsMTAgKzYxOTUsMTAg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9w
dGlvbmFsWFBhdGhOU1Jlc29sdmVyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE9wdGlvbmFsWFBhdGhOU1Jlc29sdmVyQ2FsbGVyPigqc3RhdGUsICJtZXRob2RXaXRo
T3B0aW9uYWxYUGF0aE5TUmVzb2x2ZXIiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxY
UGF0aE5TUmVzb2x2ZXJCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoT3B0aW9uYWxYUGF0aE5TUmVz
b2x2ZXIiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE9wdGlvbmFsUmVjb3JkQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhPcHRpb25hbFJlY29yZEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjIwOSwxMCArNjIxMSwxMCBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZWNv
cmQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxSZWNv
cmRDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25hbFJlY29yZCIpOworICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhPcHRpb25hbFJlY29yZEJvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhPcHRpb25h
bFJlY29yZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmdDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aENhbGxiYWNrQXJnQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02MjI3LDEwICs2MjI5LDEwIEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZyhFeGVj
U3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FyZ0NhbGxlcj4o
KnN0YXRlLCAibWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENh
bGxiYWNrQXJnQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aENhbGxiYWNrQXJnIik7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnQ2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdp
dGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02MjQ3LDEwICs2MjQ5LDEw
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhO
b25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmdDYWxsZXI+KCpzdGF0ZSwg
Im1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIik7CisgICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmdCb2R5Pigqc3RhdGUsICJtZXRob2RX
aXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0FyZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2Fs
bGJhY2tBbmRPcHRpb25hbEFyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25h
bEFyZ0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwpAQCAtNjI2MywxMCArNjI2NSwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhFeGVj
U3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFs
QXJnQ2FsbGVyPigqc3RhdGUsICJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOwor
ICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnQm9keT4oKnN0YXRlLCAi
bWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciKTsKIH0KIAotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENh
bGxiYWNrRnVuY3Rpb25BcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmdC
b2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKQEAgLTYyODEsMTAgKzYyODMsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmcoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZ0NhbGxlcj4o
KnN0YXRlLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsKKyAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFyZ0JvZHk+KCpzdGF0ZSwgIm1ldGhvZFdpdGhDYWxsYmFj
a0Z1bmN0aW9uQXJnIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxi
YWNrRnVuY3Rpb25BcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJh
Y2tGdW5jdGlvbkFyZ0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjMwMSwxMCArNjMwMywxMCBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRD
YWxsYmFja0Z1bmN0aW9uQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZ0NhbGxlcj4oKnN0YXRlLCAi
bWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIpOworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrRnVuY3Rpb25BcmdCb2R5Pigq
c3RhdGUsICJtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxsYmFja0Z1bmN0aW9uQXJnIik7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmdDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFyZ0JvZHkoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjMx
NywxMyArNjMxOSwxMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogc3Rh
dGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFy
Z0NhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BbmRPcHRpb25hbEFy
ZyIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQW5kT3B0aW9uYWxBcmdC
b2R5Pigqc3RhdGUsICJtZXRob2RXaXRoQ2FsbGJhY2tGdW5jdGlvbkFuZE9wdGlvbmFsQXJnIik7
CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSog
c3RhdGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnQm9keShK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBhdXRvIGNhbGxiYWNrID0gY29udmVydDxJRExOdWxsYWJsZTxJ
RExDYWxsYmFja0ludGVyZmFjZTxKU1Rlc3RDYWxsYmFja0ludGVyZmFjZT4+Pigqc3RhdGUsIHN0
YXRlLT5hcmd1bWVudCgwKSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpLCBbXShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6VGhyb3dT
Y29wZSYgc2NvcGUpIHsgdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3Ioc3RhdGUsIHNj
b3BlLCAwLCAiY2FsbGJhY2siLCAiVGVzdE9iamVjdCIsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJh
Y2tBbmRPcHRpb25hbEFyZyIpOyB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtNjMzMSwxMCArNjMzMiwxNCBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKEV4ZWNT
dGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0
cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhFeGVj
U3RhdGUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwotICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3Rh
dGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmdCb2R5Pigqc3RhdGUsICJzdGF0aWNN
ZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpOworfQorCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhv
ZFdpdGhDYWxsYmFja0FyZ0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50
KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwg
Y3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKQEAgLTYzNDQsOCArNjM0OSwx
MyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENh
bGxiYWNrQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNN
ZXRob2RXaXRoQ2FsbGJhY2tBcmdCb2R5Pigqc3RhdGUsICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJh
Y2tBcmciKTsKK30KKwogI2lmIEVOQUJMRShDb25kaXRpb24xKQotc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRo
b2QxQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMUJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjM1NSwxMyArNjM2NSwx
MyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25h
bE1ldGhvZDEoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhv
ZDFDYWxsZXI+KCpzdGF0ZSwgImNvbmRpdGlvbmFsTWV0aG9kMSIpOworICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRp
dGlvbmFsTWV0aG9kMUJvZHk+KCpzdGF0ZSwgImNvbmRpdGlvbmFsTWV0aG9kMSIpOwogfQogCiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKLXN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkNvbmRpdGlvbmFsTWV0aG9kMkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDJCb2R5KEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAg
LTYzNzIsMTMgKzYzODIsMTMgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
Q29uZGl0aW9uYWxNZXRob2QyQ2FsbGVyPigqc3RhdGUsICJjb25kaXRpb25hbE1ldGhvZDIiKTsK
KyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDJCb2R5Pigqc3RhdGUsICJjb25kaXRpb25hbE1l
dGhvZDIiKTsKIH0KIAogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjIpCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE1ldGhvZDNDYWxsZXIoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIg
Y2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxN
ZXRob2QzQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRo
cm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CkBAIC02Mzg5LDEyICs2Mzk5LDEyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kMyhFeGVjU3RhdGUqIHN0YXRl
KQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsTWV0aG9kM0NhbGxlcj4oKnN0YXRlLCAiY29uZGl0
aW9uYWxNZXRob2QzIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxNZXRob2QzQm9keT4oKnN0YXRl
LCAiY29uZGl0aW9uYWxNZXRob2QzIik7CiB9CiAKICNlbmRpZgogCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kMUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRo
cm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kQm9keTEoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjQwNywxMiArNjQxNyw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoRXhl
Y1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMUNhbGxlcj4oKnN0
YXRlLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMkNhbGxl
cihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kQm9keTIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlND
OjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjQyNSwxMiArNjQzMCw3IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIoRXhlY1N0YXRlKiBz
dGF0ZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMkNhbGxlcj4oKnN0YXRlLCAib3Zl
cmxvYWRlZE1ldGhvZCIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kM0NhbGxlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kQm9keTMoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjQ0MSwxMiArNjQ0MSw3IEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDMoRXhlY1N0YXRlKiBzdGF0ZSkKLXsK
LSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kM0NhbGxlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1l
dGhvZCIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNENhbGxlcihKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kQm9keTQoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwpAQCAtNjQ1NywxMiArNjQ1Miw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDQoRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kNENhbGxlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwot
fQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kQm9keTUo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQog
ewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwpAQCAtNjQ3MywxMiArNjQ2Myw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDUoRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kNUNhbGxlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwotfQotCi1zdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kNkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kQm9keTYoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjQ4
OSwxMiArNjQ3NCw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMg
aW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZDYoRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
NkNhbGxlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwotfQotCi1zdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kN0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kQm9keTcoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjUwNSwxMiArNjQ4
NSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDco
RXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kN0NhbGxlcj4o
KnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOENh
bGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kQm9keTgoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjUyMSwxMiArNjQ5Niw3IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDgoRXhlY1N0YXRl
KiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOENhbGxlcj4oKnN0YXRlLCAi
b3ZlcmxvYWRlZE1ldGhvZCIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUNhbGxlcihKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kQm9keTkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjUzNywxMiArNjUwNyw3IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDkoRXhlY1N0YXRlKiBzdGF0ZSkK
LXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOUNhbGxlcj4oKnN0YXRlLCAib3ZlcmxvYWRl
ZE1ldGhvZCIpOwotfQotCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTBDYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZEJvZHkxMChKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CkBAIC02NTUzLDEyICs2NTE4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTAoRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTBDYWxsZXI+KCpzdGF0ZSwgIm92ZXJsb2FkZWRNZXRo
b2QiKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNh
c3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2RCb2R5MTEoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwpAQCAtNjU2OSwxMiArNjUyOSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDExKEV4ZWNTdGF0ZSogc3RhdGUpCi17Ci0gICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDExQ2FsbGVyPigqc3RhdGUsICJvdmVybG9hZGVkTWV0aG9kIik7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kQm9k
eTEyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKQEAgLTY1ODUsMTIgKzY1NDAsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
IH0KIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2QxMihFeGVjU3RhdGUqIHN0YXRlKQotewotICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2QxMkNhbGxlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZCIpOwotfQot
Ci1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kMTNDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZEJvZHkxMyhK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CkBAIC02NjAxLDU4ICs2NTUxLDU5IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQog
Ci1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZDEzKEV4ZWNTdGF0ZSogc3RhdGUpCi17Ci0gICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZDEzQ2FsbGVyPigqc3RhdGUsICJvdmVybG9hZGVkTWV0aG9kIik7Ci19Ci0KLUVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kT3Zlcmxv
YWREaXNwYXRjaGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKKyAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGQ6Om1p
bjxzaXplX3Q+KDIsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIGlmIChhcmdzQ291bnQg
PT0gMCkgewotICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kMTMoc3RhdGUpOworICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kQm9keTEzKHN0YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3Bl
KTsKICAgICB9CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlz
dGluZ3Vpc2hpbmdBcmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgICAgIGlm
IChkaXN0aW5ndWlzaGluZ0FyZy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgcmV0
dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIoc3RhdGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZEJvZHkyKHN0YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKICAgICAgICAgaWYgKGRp
c3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcp
LT5pbmhlcml0cyh2bSwgSlNUZXN0T2JqOjppbmZvKCkpKQotICAgICAgICAgICAgcmV0dXJuIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIoc3RhdGUpOworICAgICAg
ICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZEJv
ZHkyKHN0YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKICAgICAgICAgaWYgKGRpc3Rpbmd1
aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhl
cml0cyh2bSwgSlNUZXN0Q2FsbGJhY2tJbnRlcmZhY2U6OmluZm8oKSkpCi0gICAgICAgICAgICBy
ZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNShzdGF0ZSk7
CisgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kQm9keTUoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAo
ZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0Fy
ZyktPmluaGVyaXRzKHZtLCBKU0RPTVN0cmluZ0xpc3Q6OmluZm8oKSkpCi0gICAgICAgICAgICBy
ZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNihzdGF0ZSk7
CisgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kQm9keTYoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAo
ZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0Fy
ZyktPmluaGVyaXRzKHZtLCBKU1Rlc3RPYmo6OmluZm8oKSkpCi0gICAgICAgICAgICByZXR1cm4g
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOChzdGF0ZSk7CisgICAg
ICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
Qm9keTgoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGlu
Z3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiAoYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5p
bmhlcml0cyh2bSwgSlNET01XaW5kb3dTaGVsbDo6aW5mbygpKSB8fCBhc09iamVjdChkaXN0aW5n
dWlzaGluZ0FyZyktPmluaGVyaXRzKHZtLCBKU0RPTVdpbmRvdzo6aW5mbygpKSkpCi0gICAgICAg
ICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOShz
dGF0ZSk7CisgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kQm9keTkoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwogICAgICAg
ICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiBhc09iamVjdChkaXN0aW5ndWlz
aGluZ0FyZyktPmluaGVyaXRzKHZtLCBKU0Jsb2I6OmluZm8oKSkpCi0gICAgICAgICAgICByZXR1
cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTMoc3RhdGUpOwor
ICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1l
dGhvZEJvZHkxMyhzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlmICho
YXNJdGVyYXRvck1ldGhvZCgqc3RhdGUsIGRpc3Rpbmd1aXNoaW5nQXJnKSkKLSAgICAgICAgICAg
IHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q3KHN0YXRl
KTsKKyAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2RCb2R5NyhzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlm
IChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5n
QXJnKS0+dHlwZSgpICE9IFJlZ0V4cE9iamVjdFR5cGUpCi0gICAgICAgICAgICByZXR1cm4ganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kNShzdGF0ZSk7CisgICAgICAg
ICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kQm9k
eTUoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vp
c2hpbmdBcmcuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q0KHN0YXRlKTsKLSAgICAgICAgcmV0dXJuIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDMoc3RhdGUpOworICAgICAgICAg
ICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZEJvZHk0
KHN0YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZEJvZHkzKHN0YXRlLCBjYXN0ZWRUaGlz
LCB0aHJvd1Njb3BlKTsKICAgICB9CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAyKSB7CiAgICAgICAg
IEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMSk7
CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc1VuZGVmaW5lZCgpKQotICAgICAgICAg
ICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDIoc3Rh
dGUpOworICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZEJvZHkyKHN0YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKICAgICAgICAg
aWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hp
bmdBcmcpLT5pbmhlcml0cyh2bSwgSlNCbG9iOjppbmZvKCkpKQotICAgICAgICAgICAgcmV0dXJu
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEzKHN0YXRlKTsKKyAg
ICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2RCb2R5MTMoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlz
dGluZ3Vpc2hpbmdBcmcuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QyKHN0YXRlKTsKLSAgICAgICAgcmV0dXJu
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoc3RhdGUpOworICAg
ICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZEJvZHkyKHN0YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZEJvZHkxKHN0YXRlLCBjYXN0
ZWRUaGlzLCB0aHJvd1Njb3BlKTsKICAgICB9CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFs
UGFyYW1ldGVyMUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZChFeGVjU3RhdGUqIHN0YXRlKQoreworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2RPdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJs
b2FkZWRNZXRob2QiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFt
ZXRlckJvZHkxKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKQEAgLTY2NjUsMTIgKzY2MTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIxKEV4ZWNTdGF0
ZSogc3RhdGUpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFt
ZXRlcjFDYWxsZXI+KCpzdGF0ZSwgIm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0
ZXIiKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjJDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlckJvZHkyKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTY2
ODMsMzcgKzY2MjksMzggQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9h
ZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyMihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlck92ZXJsb2FkRGlzcGF0Y2hlcihKU0M6
OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFz
c1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0g
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjJDYWxsZXI+KCpz
dGF0ZSwgIm92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIiKTsKLX0KLQotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAg
ICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBVTlVTRURfUEFS
QU0odm0pOwogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KDIsIHN0YXRl
LT5hcmd1bWVudENvdW50KCkpOwogICAgIGlmIChhcmdzQ291bnQgPT0gMSkgewogICAgICAgICBK
U1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApOwog
ICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAg
ICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RX
aXRoT3B0aW9uYWxQYXJhbWV0ZXIyKHN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXJC
b2R5MihzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0aW5n
dWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5o
ZXJpdHModm0sIEpTVGVzdE9iajo6aW5mbygpKSkKLSAgICAgICAgICAgIHJldHVybiBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIy
KHN0YXRlKTsKLSAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjEoc3RhdGUpOworICAgICAgICAgICAgcmV0
dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25h
bFBhcmFtZXRlckJvZHkyKHN0YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKKyAgICAgICAg
cmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRp
b25hbFBhcmFtZXRlckJvZHkxKHN0YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKICAgICB9
CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAyKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hp
bmdBcmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgICAgIGlmIChkaXN0aW5n
dWlzaGluZ0FyZy5pc1VuZGVmaW5lZE9yTnVsbCgpKQotICAgICAgICAgICAgcmV0dXJuIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRl
cjIoc3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlckJvZHkyKHN0YXRlLCBjYXN0ZWRU
aGlzLCB0aHJvd1Njb3BlKTsKICAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0
KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0cyh2bSwgSlNUZXN0T2Jq
OjppbmZvKCkpKQotICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlcjIoc3RhdGUpOwotICAgICAgICBy
ZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlv
bmFsUGFyYW1ldGVyMShzdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyQm9keTIoc3Rh
dGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyQm9keTEo
c3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwogICAgIH0KICAgICByZXR1cm4gYXJnc0Nv
dW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2Nv
cGUpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24xQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyKEV4ZWNTdGF0ZSogc3RhdGUp
Cit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFtZXRlck92ZXJs
b2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRpb25hbFBhcmFt
ZXRlciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb25C
b2R5MShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CkBAIC02NzI0LDEyICs2NjcxLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24xKEV4ZWNTdGF0ZSog
c3RhdGUpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1Vu
aW9uMUNhbGxlcj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1Vu
aW9uIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbjJD
YWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uQm9keTIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpA
QCAtNjc0MCwzMSArNjY4MiwzMiBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbjIoRXhlY1N0YXRlKiBzdGF0ZSkK
LXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24yQ2Fs
bGVyPigqc3RhdGUsICJvdmVybG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24iKTsK
LX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbihFeGVjU3RhdGUqIHN0
YXRlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uT3ZlcmxvYWRE
aXNwYXRjaGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwog
ICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsK
KyAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxz
aXplX3Q+KDEsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIGlmIChhcmdzQ291bnQgPT0g
MSkgewogICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAm
JiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzKHZtLCBKU1Rlc3RPYmo6Omlu
Zm8oKSkpCi0gICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24xKHN0YXRlKTsKKyAgICAgICAgICAg
IHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoRGlz
dGluZ3Vpc2hpbmdVbmlvbkJvZHkxKHN0YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKICAg
ICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0KCkgJiYgYXNPYmplY3QoZGlzdGlu
Z3Vpc2hpbmdBcmcpLT5pbmhlcml0cyh2bSwgSlNUZXN0Tm9kZTo6aW5mbygpKSkKLSAgICAgICAg
ICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRo
RGlzdGluZ3Vpc2hpbmdVbmlvbjEoc3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9u
Qm9keTEoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGlu
Z3Vpc2hpbmdBcmcuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hpbmdVbmlvbjIoc3Rh
dGUpOwotICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kV2l0aERpc3Rpbmd1aXNoaW5nVW5pb24yKHN0YXRlKTsKKyAgICAgICAgICAgIHJldHVy
biBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vp
c2hpbmdVbmlvbkJvZHkyKHN0YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKKyAgICAgICAg
cmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhEaXN0
aW5ndWlzaGluZ1VuaW9uQm9keTIoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwogICAg
IH0KICAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dT
Y29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1UeXBl
RXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aDJE
aXN0aW5ndWlzaGluZ1VuaW9uczFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlND
OjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoRGlzdGluZ3Vpc2hp
bmdVbmlvbihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RX
aXRoRGlzdGluZ3Vpc2hpbmdVbmlvbk92ZXJsb2FkRGlzcGF0Y2hlcj4oKnN0YXRlLCAib3Zlcmxv
YWRlZE1ldGhvZFdpdGhEaXN0aW5ndWlzaGluZ1VuaW9uIik7Cit9CisKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zQm9keTEoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNjc3NSwxMiArNjcxOCw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgy
RGlzdGluZ3Vpc2hpbmdVbmlvbnMxKEV4ZWNTdGF0ZSogc3RhdGUpCi17Ci0gICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMxQ2FsbGVyPigqc3RhdGUsICJv
dmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyIpOwotfQotCi1zdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9uczJDYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRl
ZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnNCb2R5MihKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0
ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02NzkxLDMzICs2NzI5
LDM0IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdp
dGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMyKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9uc092ZXJsb2FkRGlzcGF0Y2hlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMyQ2FsbGVyPigq
c3RhdGUsICJvdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyIpOwotfQot
Ci1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlvbnMoRXhlY1N0YXRlKiBzdGF0
ZSkKLXsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBV
TlVTRURfUEFSQU0odm0pOwogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+
KDEsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIGlmIChhcmdzQ291bnQgPT0gMSkgewog
ICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNPYmplY3QoKSAmJiBhc09i
amVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzKHZtLCBKU1Rlc3RPYmo6OmluZm8oKSkp
Ci0gICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9uczEoc3RhdGUpOworICAgICAgICAgICAgcmV0
dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGlu
Z3Vpc2hpbmdVbmlvbnNCb2R5MShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAg
ICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1
aXNoaW5nQXJnKS0+aW5oZXJpdHModm0sIEpTVGVzdE5vZGU6OmluZm8oKSkpCi0gICAgICAgICAg
ICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aDJE
aXN0aW5ndWlzaGluZ1VuaW9uczEoc3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vpc2hpbmdVbmlv
bnNCb2R5MShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0
aW5ndWlzaGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+
aW5oZXJpdHModm0sIEpTVGVzdEludGVyZmFjZTo6aW5mbygpKSkKLSAgICAgICAgICAgIHJldHVy
biBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRpc3Rpbmd1
aXNoaW5nVW5pb25zMihzdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9uc0JvZHky
KHN0YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKICAgICAgICAgaWYgKGRpc3Rpbmd1aXNo
aW5nQXJnLmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9uczIoc3RhdGUp
OwotICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0
aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9uczIoc3RhdGUpOworICAgICAgICAgICAgcmV0dXJu
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGgyRGlzdGluZ3Vp
c2hpbmdVbmlvbnNCb2R5MihzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CisgICAgICAg
IHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoMkRp
c3Rpbmd1aXNoaW5nVW5pb25zQm9keTIoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwog
ICAgIH0KICAgICByZXR1cm4gYXJnc0NvdW50IDwgMSA/IHRocm93Vk1FcnJvcihzdGF0ZSwgdGhy
b3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6IHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0
aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24xQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5n
dWlzaGluZ1VuaW9ucyhFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2RXaXRoMkRpc3Rpbmd1aXNoaW5nVW5pb25zT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUs
ICJvdmVybG9hZGVkTWV0aG9kV2l0aDJEaXN0aW5ndWlzaGluZ1VuaW9ucyIpOworfQorCitzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb25Cb2R5MShKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02ODMw
LDEyICs2NzY5LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVk
TWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24xKEV4ZWNTdGF0ZSogc3RhdGUpCi17Ci0g
ICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uMUNhbGxl
cj4oKnN0YXRlLCAib3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uIik7
Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbjJDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uQm9keTIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewog
ICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpA
QCAtNjg0OCwyOCArNjc4MiwyOSBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAot
c3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbjIoRXhlY1N0YXRlKiBzdGF0
ZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5p
b24yQ2FsbGVyPigqc3RhdGUsICJvdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5n
VW5pb24iKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbihF
eGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGlu
Z1VuaW9uT3ZlcmxvYWREaXNwYXRjaGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHNpemVfdCBhcmdzQ291
bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KDIsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIGlm
IChhcmdzQ291bnQgPT0gMikgewogICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0g
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdB
cmcuaXNPYmplY3QoKSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzKHZt
LCBKU1Rlc3RPYmo6OmluZm8oKSkpCi0gICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24xKHN0
YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJs
b2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbkJvZHkxKHN0YXRlLCBjYXN0ZWRU
aGlzLCB0aHJvd1Njb3BlKTsKICAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzT2JqZWN0
KCkgJiYgYXNPYmplY3QoZGlzdGluZ3Vpc2hpbmdBcmcpLT5pbmhlcml0cyh2bSwgSlNUZXN0Tm9k
ZTo6aW5mbygpKSkKLSAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2RXaXRoTm9uRGlzdGluZ3Vpc2hpbmdVbmlvbjIoc3RhdGUpOworICAg
ICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhv
ZFdpdGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uQm9keTIoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93
U2NvcGUpOwogICAgIH0KICAgICByZXR1cm4gYXJnc0NvdW50IDwgMiA/IHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKSA6
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1zdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdp
dGhOdWxsYWJsZVVuaW9uMUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhOb25EaXN0aW5ndWlzaGlu
Z1VuaW9uKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdp
dGhOb25EaXN0aW5ndWlzaGluZ1VuaW9uT3ZlcmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJvdmVy
bG9hZGVkTWV0aG9kV2l0aE5vbkRpc3Rpbmd1aXNoaW5nVW5pb24iKTsKK30KKworc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRXaXRoTnVsbGFibGVVbmlvbkJvZHkxKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTY4ODAsMTIgKzY4MTUsNyBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24xKEV4ZWNT
dGF0ZSogc3RhdGUpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbjFDYWxs
ZXI+KCpzdGF0ZSwgIm92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24iKTsKLX0KLQotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zlcmxv
YWRXaXRoTnVsbGFibGVVbmlvbjJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlND
OjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbkJv
ZHkyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKQEAgLTY4OTYsMzMgKzY4MjYsMzQgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uMihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRXaXRoTnVsbGFibGVVbmlvbk92ZXJsb2FkRGlzcGF0Y2hlcihKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3Zl
cmxvYWRXaXRoTnVsbGFibGVVbmlvbjJDYWxsZXI+KCpzdGF0ZSwgIm92ZXJsb2FkV2l0aE51bGxh
YmxlVW5pb24iKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24oRXhlY1N0YXRlKiBzdGF0
ZSkKLXsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBV
TlVTRURfUEFSQU0odm0pOwogICAgIHNpemVfdCBhcmdzQ291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+
KDEsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIGlmIChhcmdzQ291bnQgPT0gMSkgewog
ICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0gc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNVbmRlZmluZWRPck51bGwo
KSkKLSAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
V2l0aE51bGxhYmxlVW5pb24xKHN0YXRlKTsKKyAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb25Cb2R5MShzdGF0ZSwgY2Fz
dGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGluZ0FyZy5pc09i
amVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHModm0sIEpTVGVz
dE9iajo6aW5mbygpKSkKLSAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24xKHN0YXRlKTsKKyAgICAgICAgICAgIHJldHVy
biBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb25Cb2R5
MShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlz
aGluZ0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJp
dHModm0sIEpTVGVzdE5vZGU6OmluZm8oKSkpCi0gICAgICAgICAgICByZXR1cm4ganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uMShzdGF0ZSk7CisgICAg
ICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxs
YWJsZVVuaW9uQm9keTEoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93U2NvcGUpOwogICAgICAgICBp
ZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24yKHN0YXRlKTsK
LSAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVs
bGFibGVVbmlvbjIoc3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbkJvZHkyKHN0YXRlLCBjYXN0ZWRUaGlz
LCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRXaXRoTnVsbGFibGVVbmlvbkJvZHkyKHN0YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Nj
b3BlKTsKICAgICB9CiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KIAotc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRo
T3B0aW9uYWxVbmlvbjFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlVW5pb24oRXhlY1N0YXRlKiBz
dGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uT3ZlcmxvYWREaXNw
YXRjaGVyPigqc3RhdGUsICJvdmVybG9hZFdpdGhOdWxsYWJsZVVuaW9uIik7Cit9CisKK3N0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb25Cb2R5MShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02OTMzLDEyICs2ODY0LDcgQEAgc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uMShF
eGVjU3RhdGUqIHN0YXRlKQotewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24x
Q2FsbGVyPigqc3RhdGUsICJvdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uIik7Ci19Ci0KLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92
ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24yQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5p
b25Cb2R5MihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CkBAIC02OTQ5LDM0ICs2ODc1LDM1IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbjIoRXhlY1N0YXRlKiBzdGF0ZSkKLXsK
LSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uMkNhbGxlcj4oKnN0YXRlLCAib3Zl
cmxvYWRXaXRoT3B0aW9uYWxVbmlvbiIpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbihF
eGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbk92ZXJsb2FkRGlz
cGF0Y2hlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Ci0gICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHZtKTsKICAgICBzaXplX3QgYXJnc0NvdW50ID0gc3RkOjptaW48c2l6
ZV90PigxLCBzdGF0ZS0+YXJndW1lbnRDb3VudCgpKTsKICAgICBpZiAoYXJnc0NvdW50ID09IDAp
IHsKLSAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRo
T3B0aW9uYWxVbmlvbjEoc3RhdGUpOworICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uQm9keTEoc3RhdGUsIGNhc3RlZFRoaXMs
IHRocm93U2NvcGUpOwogICAgIH0KICAgICBpZiAoYXJnc0NvdW50ID09IDEpIHsKICAgICAgICAg
SlNWYWx1ZSBkaXN0aW5ndWlzaGluZ0FyZyA9IHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
ICAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAg
ICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhPcHRpb25hbFVu
aW9uMShzdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uQm9keTEoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93
U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNCb29sZWFuKCkpCi0gICAg
ICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhPcHRp
b25hbFVuaW9uMShzdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25PdmVybG9hZFdpdGhPcHRpb25hbFVuaW9uQm9keTEoc3RhdGUsIGNhc3RlZFRoaXMs
IHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNOdW1iZXIoKSkK
LSAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0
aE9wdGlvbmFsVW5pb24yKHN0YXRlKTsKLSAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbjEoc3RhdGUpOworICAgICAgICAgICAg
cmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlv
bkJvZHkyKHN0YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlvbkJvZHkxKHN0
YXRlLCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKICAgICB9CiAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJs
ZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyMUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoT3B0aW9uYWxVbmlv
bihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE9wdGlvbmFsVW5p
b25PdmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2FkV2l0aE9wdGlvbmFsVW5pb24i
KTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRl
ckJvZHkxKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKQEAgLTY5ODksMTIgKzY5MTYsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKIH0KIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIxKEV4
ZWNTdGF0ZSogc3RhdGUpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0
aW5ndWlzaGluZ1BhcmFtZXRlcjFDYWxsZXI+KCpzdGF0ZSwgIm92ZXJsb2FkV2l0aE51bGxhYmxl
Tm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIiKTsKLX0KLQotc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFi
bGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlcjJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFi
bGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlckJvZHkyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTcwMDcsNjIgKzY5MjksNzIg
QEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZFdpdGhOdWxsYWJsZU5v
bkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyMihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRX
aXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlck92ZXJsb2FkRGlzcGF0Y2hlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7
Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRl
cjJDYWxsZXI+KCpzdGF0ZSwgIm92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQ
YXJhbWV0ZXIiKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJh
bWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAg
ICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBWTSYgdm0g
PSBzdGF0ZS0+dm0oKTsKKyAgICBVTlVTRURfUEFSQU0odm0pOwogICAgIHNpemVfdCBhcmdzQ291
bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KDIsIHN0YXRlLT5hcmd1bWVudENvdW50KCkpOwogICAgIGlm
IChhcmdzQ291bnQgPT0gMikgewogICAgICAgICBKU1ZhbHVlIGRpc3Rpbmd1aXNoaW5nQXJnID0g
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdB
cmcuaXNPYmplY3QoKSAmJiBhc09iamVjdChkaXN0aW5ndWlzaGluZ0FyZyktPmluaGVyaXRzKHZt
LCBKU1Rlc3ROb2RlOjppbmZvKCkpKQotICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRl
cjEoc3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGluZ1BhcmFtZXRlckJvZHkxKHN0YXRl
LCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKICAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJn
LmlzTnVtYmVyKCkpCi0gICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25PdmVybG9hZFdpdGhOdWxsYWJsZU5vbkRpc3Rpbmd1aXNoaW5nUGFyYW1ldGVyMihzdGF0ZSk7
Ci0gICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51
bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXIyKHN0YXRlKTsKKyAgICAgICAgICAgIHJl
dHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlz
dGluZ3Vpc2hpbmdQYXJhbWV0ZXJCb2R5MihzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7
CisgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkV2l0aE51
bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXJCb2R5MihzdGF0ZSwgY2FzdGVkVGhpcywg
dGhyb3dTY29wZSk7CiAgICAgfQogICAgIHJldHVybiBhcmdzQ291bnQgPCAyID8gdGhyb3dWTUVy
cm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0
ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0
aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRXaXRoTnVsbGFibGVOb25EaXN0aW5ndWlzaGlu
Z1BhcmFtZXRlcihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hpbmdQYXJhbWV0ZXJPdmVybG9h
ZERpc3BhdGNoZXI+KCpzdGF0ZSwgIm92ZXJsb2FkV2l0aE51bGxhYmxlTm9uRGlzdGluZ3Vpc2hp
bmdQYXJhbWV0ZXIiKTsKK30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZEJvZHkoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVGVzdE9iajo6Y2xh
c3NNZXRob2QoKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVu
Y3Rpb25DbGFzc01ldGhvZFdpdGhPcHRpb25hbChFeGVjU3RhdGUqIHN0YXRlKQorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRo
b2QoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAgICBh
dXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5j
dGlvbkNsYXNzTWV0aG9kQm9keT4oKnN0YXRlLCAiY2xhc3NNZXRob2QiKTsKK30KKworc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25D
bGFzc01ldGhvZFdpdGhPcHRpb25hbEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byBhcmcgPSBzdGF0ZS0+YXJndW1lbnQo
MCkuaXNVbmRlZmluZWQoKSA/IHN0ZDo6b3B0aW9uYWw8Q29udmVydGVyPElETExvbmc+OjpSZXR1
cm5UeXBlPigpIDogc3RkOjpvcHRpb25hbDxDb252ZXJ0ZXI8SURMTG9uZz46OlJldHVyblR5cGU+
KGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExMb25nPihUZXN0T2JqOjpjbGFzc01l
dGhvZFdpdGhPcHRpb25hbChXVEZNb3ZlKGFyZykpKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kMihFeGVj
U3RhdGUqIHN0YXRlKQorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aE9w
dGlvbmFsQm9keT4oKnN0YXRlLCAiY2xhc3NNZXRob2RXaXRoT3B0aW9uYWwiKTsKK30KKworc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rp
b25DbGFzc01ldGhvZDJCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BB
UkFNKHRocm93U2NvcGUpOwotICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgp
IDwgMSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1Rlc3RPYmo6OmNsYXNzTWV0aG9kMigqc3RhdGUpKTsKIH0KIAorRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uQ2xhc3NNZXRo
b2QyKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25DbGFzc01ldGhvZDJC
b2R5Pigqc3RhdGUsICJjbGFzc01ldGhvZDIiKTsKK30KKwogI2lmIEVOQUJMRShDb25kaXRpb24x
KQotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDExKEV4ZWNTdGF0ZSogc3RhdGUpCitzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2QxQm9keTEoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7Ci0gICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7Ci0gICAgYXV0byB0aHJvd1Njb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgYXV0byBhcmcgPSBjb252ZXJ0PElETExv
bmc+KCpzdGF0ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtNzA3MywxMCArNzAw
NSw5IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ28KICNlbmRpZgog
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTIoRXhlY1N0YXRlKiBz
dGF0ZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1
Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDFCb2R5MihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKLSAgICBWTSYgdm0gPSBzdGF0ZS0+dm0o
KTsKLSAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBh
dXRvIHR5cGUgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CkBAIC03MDg3LDI3ICs3MDE4LDM1IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ28KICNlbmRpZgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCi1F
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kMShFeGVjU3RhdGUqIHN0YXRlKQorCitzdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2QxT3ZlcmxvYWREaXNwYXRjaGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwotICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0
ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFyZ3ND
b3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCk7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiAgICAgICAgIGlm
IChkaXN0aW5ndWlzaGluZ0FyZy5pc051bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTEoc3RhdGUpOworICAgICAg
ICAgICAgcmV0dXJuIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
MUJvZHkxKHN0YXRlLCB0aHJvd1Njb3BlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDb25kaXRpb24x
KQotICAgICAgICByZXR1cm4ganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRN
ZXRob2QxMihzdGF0ZSk7CisgICAgICAgIHJldHVybiBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uT3ZlcmxvYWRlZE1ldGhvZDFCb2R5MihzdGF0ZSwgdGhyb3dTY29wZSk7CiAjZW5kaWYKICAg
ICB9CiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93
U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoRXhlY1N0
YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGxT
dGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxT3Zlcmxv
YWREaXNwYXRjaGVyPigqc3RhdGUsICJvdmVybG9hZGVkTWV0aG9kMSIpOworfQorCiAjZW5kaWYK
IAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXBDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXBC
b2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKQEAgLTcxMjQsMTAgKzcwNjMsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXAoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
LSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcENhbGxlcj4oKnN0YXRlLCAiY2xhc3NNZXRo
b2RXaXRoQ2xhbXAiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcEJvZHk+KCpzdGF0
ZSwgImNsYXNzTWV0aG9kV2l0aENsYW1wIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aENsYW1w
T25PcHRpb25hbENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0aW9uYWxCb2R5KEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
QEAgLTcxNDAsMTAgKzcwNzksMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoQ2xhbXBPbk9wdGlvbmFsQ2FsbGVyPigqc3Rh
dGUsICJjbGFzc01ldGhvZFdpdGhDbGFtcE9uT3B0aW9uYWwiKTsKKyAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01l
dGhvZFdpdGhDbGFtcE9uT3B0aW9uYWxCb2R5Pigqc3RhdGUsICJjbGFzc01ldGhvZFdpdGhDbGFt
cE9uT3B0aW9uYWwiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJhbmdlQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
K3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZUJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVk
VGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzE2MCwxMCArNzA5OSwx
MCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhv
ZFdpdGhFbmZvcmNlUmFuZ2UoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01l
dGhvZFdpdGhFbmZvcmNlUmFuZ2VDYWxsZXI+KCpzdGF0ZSwgImNsYXNzTWV0aG9kV2l0aEVuZm9y
Y2VSYW5nZSIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZUJvZHk+KCpz
dGF0ZSwgImNsYXNzTWV0aG9kV2l0aEVuZm9yY2VSYW5nZSIpOwogfQogCi1zdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhv
ZFdpdGhFbmZvcmNlUmFuZ2VPbk9wdGlvbmFsQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwg
dHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRo
aXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9kV2l0aEVuZm9y
Y2VSYW5nZU9uT3B0aW9uYWxCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTcxNzYsMTAgKzcxMTUsMTAgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ2xhc3NNZXRob2RXaXRoRW5mb3JjZVJh
bmdlT25PcHRpb25hbChFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNsYXNzTWV0aG9k
V2l0aEVuZm9yY2VSYW5nZU9uT3B0aW9uYWxDYWxsZXI+KCpzdGF0ZSwgImNsYXNzTWV0aG9kV2l0
aEVuZm9yY2VSYW5nZU9uT3B0aW9uYWwiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DbGFzc01ldGhvZFdpdGhFbmZv
cmNlUmFuZ2VPbk9wdGlvbmFsQm9keT4oKnN0YXRlLCAiY2xhc3NNZXRob2RXaXRoRW5mb3JjZVJh
bmdlT25PcHRpb25hbCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoVW5zaWduZWRMb25nU2VxdWVuY2VD
YWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlQm9keShKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC03MTk0LDEw
ICs3MTMzLDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1l
dGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZShFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhVbnNpZ25lZExvbmdTZXF1ZW5jZUNhbGxlcj4oKnN0YXRlLCAibWV0aG9k
V2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNlIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aFVuc2lnbmVk
TG9uZ1NlcXVlbmNlQm9keT4oKnN0YXRlLCAibWV0aG9kV2l0aFVuc2lnbmVkTG9uZ1NlcXVlbmNl
Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2Fz
dGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5j
dGlvbkJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRo
cm93U2NvcGUpOwpAQCAtNzIxMSwxMCArNzE1MCwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdBcnJheUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uU3RyaW5nQXJyYXlGdW5jdGlvbkNhbGxlcj4oKnN0YXRlLCAic3RyaW5n
QXJyYXlGdW5jdGlvbiIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblN0cmluZ0FycmF5RnVuY3Rpb25Cb2R5Pigqc3Rh
dGUsICJzdHJpbmdBcnJheUZ1bmN0aW9uIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkRvbVN0cmluZ0xpc3RGdW5jdGlv
bkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb25Cb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTcyMjgsMTAgKzcxNjcs
MTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5n
TGlzdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRG9tU3RyaW5nTGlz
dEZ1bmN0aW9uQ2FsbGVyPigqc3RhdGUsICJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKTsKKyAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25Eb21TdHJpbmdMaXN0RnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJkb21TdHJpbmdMaXN0RnVu
Y3Rpb24iKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXJDYWxs
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uT3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXJCb2R5KEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTcyNDQs
MTAgKzcxODMsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXIoRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
LSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRlckNhbGxlcj4oKnN0
YXRlLCAib3BlcmF0aW9uV2l0aE9wdGlvbmFsVW5pb25QYXJhbWV0ZXIiKTsKKyAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
cGVyYXRpb25XaXRoT3B0aW9uYWxVbmlvblBhcmFtZXRlckJvZHk+KCpzdGF0ZSwgIm9wZXJhdGlv
bldpdGhPcHRpb25hbFVuaW9uUGFyYW1ldGVyIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhBbmRXaXRo
b3V0TnVsbGFibGVTZXF1ZW5jZUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxl
U2VxdWVuY2VCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKQEAgLTcyNjQsMTAgKzcyMDMsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXROdWxsYWJsZVNlcXVl
bmNlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aEFuZFdpdGhvdXRO
dWxsYWJsZVNlcXVlbmNlQ2FsbGVyPigqc3RhdGUsICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxh
YmxlU2VxdWVuY2UiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2Vx
dWVuY2VCb2R5Pigqc3RhdGUsICJtZXRob2RXaXRoQW5kV2l0aG91dE51bGxhYmxlU2VxdWVuY2Ui
KTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWRCb2R5KEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsK
ICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
QEAgLTcyODEsMTAgKzcyMjAsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uR2V0RWxlbWVudEJ5SWQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4g
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25H
ZXRFbGVtZW50QnlJZENhbGxlcj4oKnN0YXRlLCAiZ2V0RWxlbWVudEJ5SWQiKTsKKyAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25HZXRFbGVtZW50QnlJZEJvZHk+KCpzdGF0ZSwgImdldEVsZW1lbnRCeUlkIik7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bkdldFNWR0RvY3VtZW50Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdldFNWR0RvY3VtZW50Qm9keShKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC03Mjk0LDEw
ICs3MjMzLDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkdl
dFNWR0RvY3VtZW50KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9jdW1l
bnRDYWxsZXI+KCpzdGF0ZSwgImdldFNWR0RvY3VtZW50Iik7CisgICAgcmV0dXJuIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uR2V0U1ZHRG9j
dW1lbnRCb2R5Pigqc3RhdGUsICJnZXRTVkdEb2N1bWVudCIpOwogfQogCi1zdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MUNh
bGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RP
Ymo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25Db252ZXJ0MUJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzMxMiwxMCArNzI1MSwxMCBAQCBzdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MShFeGVjU3RhdGUqIHN0YXRl
KQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxQ2FsbGVyPigqc3RhdGUsICJjb252ZXJ0MSIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbnZlcnQxQm9keT4oKnN0YXRlLCAiY29udmVydDEiKTsKIH0KIAotc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVy
dDJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uQ29udmVydDJCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTczMzAsMTAgKzcyNjksMTAgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDIoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0MkNhbGxlcj4oKnN0YXRlLCAiY29udmVydDIiKTsK
KyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25Db252ZXJ0MkJvZHk+KCpzdGF0ZSwgImNvbnZlcnQyIik7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bnZlcnQzQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBK
U0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsK
ICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC03MzQ4LDEwICs3Mjg3LDEwIEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQzKEV4ZWNTdGF0
ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29udmVydDNDYWxsZXI+KCpzdGF0ZSwgImNvbnZlcnQz
Iik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uQ29udmVydDNCb2R5Pigqc3RhdGUsICJjb252ZXJ0MyIpOwogfQogCi1z
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25Db252ZXJ0NENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzM2NiwxMCArNzMwNSwxMCBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db252ZXJ0NChFeGVj
U3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2Fs
bDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0Q2FsbGVyPigqc3RhdGUsICJjb252
ZXJ0NCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQ0Qm9keT4oKnN0YXRlLCAiY29udmVydDQiKTsKIH0K
IAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb25DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb25C
b2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKQEAgLTczNzksMTAgKzczMTgsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uTXV0YWJsZVBvaW50RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
LSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbkNhbGxlcj4oKnN0YXRlLCAibXV0YWJsZVBv
aW50RnVuY3Rpb24iKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NdXRhYmxlUG9pbnRGdW5jdGlvbkJvZHk+KCpzdGF0
ZSwgIm11dGFibGVQb2ludEZ1bmN0aW9uIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9yYW5nZUNhbGxlcihKU0M6OkV4
ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFu
Z2VCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVz
dE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJv
d1Njb3BlKTsKQEAgLTczOTMsMTAgKzczMzIsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uT3JhbmdlKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
T3JhbmdlQ2FsbGVyPigqc3RhdGUsICJvcmFuZ2UiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcmFuZ2VCb2R5Pigq
c3RhdGUsICJvcmFuZ2UiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2RDYWxsZXIoSlND
OjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VmFyaWFkaWNTdHJpbmdNZXRob2RCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUg
SURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTc0MTMsMTAgKzczNTIsMTAgQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNTdHJpbmdNZXRob2Qo
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46
OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0cmluZ01ldGhvZENhbGxl
cj4oKnN0YXRlLCAidmFyaWFkaWNTdHJpbmdNZXRob2QiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY1N0
cmluZ01ldGhvZEJvZHk+KCpzdGF0ZSwgInZhcmlhZGljU3RyaW5nTWV0aG9kIik7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blZhcmlhZGljRG91YmxlTWV0aG9kQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kQm9keShK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CkBAIC03NDMzLDEwICs3MzcyLDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZhcmlhZGljRG91YmxlTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2RDYWxsZXI+KCpzdGF0ZSwgInZhcmlhZGljRG91Ymxl
TWV0aG9kIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNEb3VibGVNZXRob2RCb2R5Pigqc3RhdGUsICJ2
YXJpYWRpY0RvdWJsZU1ldGhvZCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2RDYWxsZXIo
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQor
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uVmFyaWFkaWNOb2RlTWV0aG9kQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC03NDUzLDEwICs3MzkyLDEwIEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZChF
eGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZENhbGxlcj4o
KnN0YXRlLCAidmFyaWFkaWNOb2RlTWV0aG9kIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNOb2RlTWV0
aG9kQm9keT4oKnN0YXRlLCAidmFyaWFkaWNOb2RlTWV0aG9kIik7CiB9CiAKLXN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGlj
VW5pb25NZXRob2RDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFkaWNVbmlvbk1ldGhvZEJvZHkoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzQ3Mywx
MCArNzQxMiwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25W
YXJpYWRpY1VuaW9uTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFk
aWNVbmlvbk1ldGhvZENhbGxlcj4oKnN0YXRlLCAidmFyaWFkaWNVbmlvbk1ldGhvZCIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvblZhcmlhZGljVW5pb25NZXRob2RCb2R5Pigqc3RhdGUsICJ2YXJpYWRpY1VuaW9uTWV0
aG9kIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkFueUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BbnlCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3Rl
ZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTc0OTMsMTAgKzc0MzIs
MTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55KEV4ZWNT
dGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQW55Q2FsbGVyPigqc3RhdGUsICJhbnkiKTsKKyAg
ICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25BbnlCb2R5Pigqc3RhdGUsICJhbnkiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5j
dGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvblJl
dHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgUmVm
PERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUp
CitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVu
YW1lIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0
ZXIgY2FzdGVkVGhpcywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC03NTA3LDEwICs3NDQ2LDEwIEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb24oRXhlY1N0
YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxK
U1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5j
dGlvbkNhbGxlciwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPbmx5Pigqc3RhdGUsICJ0
ZXN0UHJvbWlzZUZ1bmN0aW9uIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1By
b21pc2U8SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9t
aXNlRnVuY3Rpb25Cb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09ubHk+KCpzdGF0
ZSwgInRlc3RQcm9taXNlRnVuY3Rpb24iKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldp
dGhGbG9hdEFyZ3VtZW50Q2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0
ZWRUaGlzLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudEJvZHko
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9t
aXNlPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzUy
NSwxMCArNzQ2NCwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkK
IHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+Ojpj
YWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9h
dEFyZ3VtZW50Q2FsbGVyLCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09ubHk+KCpzdGF0
ZSwgInRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudCIpOworICAgIHJldHVybiBJ
RExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnRCb2R5LCBQ
cm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09ubHk+KCpzdGF0ZSwgInRlc3RQcm9taXNlRnVu
Y3Rpb25XaXRoRmxvYXRBcmd1bWVudCIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0
aEV4Y2VwdGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJh
dGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbkJvZHkoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVz
dE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYg
cHJvbWlzZSwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJB
TShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzUzOSwxMCArNzQ3
OCwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVy
biBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbkNhbGxlciwg
UHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPbmx5Pigqc3RhdGUsICJ0ZXN0UHJvbWlzZUZ1
bmN0aW9uV2l0aEV4Y2VwdGlvbiIpOworICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQ
cm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbkJvZHksIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2lu
ZG93T25seT4oKnN0YXRlLCAidGVzdFByb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24iKTsKIH0K
IAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3VtZW50Q2FsbGVyKEpT
Qzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlz
ZTxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBSZWY8RGVmZXJyZWRQcm9t
aXNlPiYmIHByb21pc2UsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9t
aXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OkNs
YXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzU1NSwxMCArNzQ5NCwxMCBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0
aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnQoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1
cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhPcHRpb25hbEludEFyZ3Vt
ZW50Q2FsbGVyLCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09ubHk+KCpzdGF0ZSwgInRl
c3RQcm9taXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudCIpOworICAgIHJldHVybiBJ
RExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aE9wdGlvbmFsSW50QXJndW1lbnRC
b2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09ubHk+KCpzdGF0ZSwgInRlc3RQcm9t
aXNlRnVuY3Rpb25XaXRoT3B0aW9uYWxJbnRBcmd1bWVudCIpOwogfQogCi1zdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZU92ZXJsb2FkZWRGdW5jdGlvbjFDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgSlNDOjpUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb25Cb2R5MShK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvblJldHVybmluZ1Byb21p
c2U8SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC03NTY5
LDEyICs3NTA4LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlz
ZU92ZXJsb2FkZWRGdW5jdGlvbjEoRXhlY1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gSURM
T3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24xQ2FsbGVyLCBQcm9taXNl
RXhlY3V0aW9uU2NvcGU6OldpbmRvd09ubHk+KCpzdGF0ZSwgInRlc3RQcm9taXNlT3ZlcmxvYWRl
ZEZ1bmN0aW9uIik7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMkNhbGxl
cihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvblJldHVybmluZ1By
b21pc2U8SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgUmVmPERlZmVycmVk
UHJvbWlzZT4mJiBwcm9taXNlLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbkJvZHkyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzLCBSZWY8RGVmZXJyZWRQcm9taXNlPiYmIHByb21pc2UsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTc1ODUsMzIgKzc1MTksMzIgQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjIoRXhl
Y1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlz
ZTxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VP
dmVybG9hZGVkRnVuY3Rpb24yQ2FsbGVyLCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09u
bHk+KCpzdGF0ZSwgInRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uIik7Ci19Ci0KLUVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJv
bWlzZU92ZXJsb2FkZWRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQorc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VP
dmVybG9hZGVkRnVuY3Rpb25PdmVybG9hZERpc3BhdGNoZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwgSlND
OjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwot
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFZNJiB2
bSA9IHN0YXRlLT52bSgpOworICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgc2l6ZV90IGFyZ3ND
b3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAg
aWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcg
PSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGlu
Z0FyZy5pc09iamVjdCgpICYmIGFzT2JqZWN0KGRpc3Rpbmd1aXNoaW5nQXJnKS0+aW5oZXJpdHMo
dm0sIEpTRmV0Y2hSZXF1ZXN0OjppbmZvKCkpKQotICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24yKHN0YXRlKTsK
KyAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNl
T3ZlcmxvYWRlZEZ1bmN0aW9uQm9keTIoc3RhdGUsIGNhc3RlZFRoaXMsIFdURk1vdmUocHJvbWlz
ZSksIHRocm93U2NvcGUpOwogICAgICAgICBpZiAoZGlzdGluZ3Vpc2hpbmdBcmcuaXNOdW1iZXIo
KSkKLSAgICAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9t
aXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMShzdGF0ZSk7Ci0gICAgICAgIHJldHVybiBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uMShzdGF0ZSk7Cisg
ICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92
ZXJsb2FkZWRGdW5jdGlvbkJvZHkxKHN0YXRlLCBjYXN0ZWRUaGlzLCBXVEZNb3ZlKHByb21pc2Up
LCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb25Cb2R5MShzdGF0ZSwgY2FzdGVkVGhpcywgV1RG
TW92ZShwcm9taXNlKSwgdGhyb3dTY29wZSk7CiAgICAgfQogICAgIHJldHVybiBhcmdzQ291bnQg
PCAxID8gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpIDogdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25Qcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUs
IFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5j
dGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwotICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIHJldHVybiBJ
RExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25UZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbk92ZXJsb2FkRGlzcGF0
Y2hlciwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPbmx5Pigqc3RhdGUsICJ0ZXN0UHJv
bWlzZU92ZXJsb2FkZWRGdW5jdGlvbiIpOworfQorCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVu
Y3Rpb25Cb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBw
cm9taXNlLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CiAgICAgVGVzdE9iajo6dGVz
dFN0YXRpY1Byb21pc2VGdW5jdGlvbihXVEZNb3ZlKHByb21pc2UpKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNzYxOCwxMyArNzU1MiwxMiBAQCBzdGF0
aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvCiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNl
RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGNhbGxQcm9taXNlRnVuY3Rpb248anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0
aWNQcm9taXNlRnVuY3Rpb25Qcm9taXNlLCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09u
bHk+KCpzdGF0ZSkpOworICAgIHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpT
VGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0
aWNQcm9taXNlRnVuY3Rpb25Cb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09ubHk+
KCpzdGF0ZSwgInRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb24iKTsKIH0KIAotc3RhdGljIGlubGlu
ZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1By
b21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb25Qcm9taXNlKEV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxE
ZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlv
bldpdGhFeGNlcHRpb25Cb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7Ci0gICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7Ci0gICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CiAgICAgcHJvcGFnYXRlRXhjZXB0aW9uKCpzdGF0ZSwgdGhyb3dTY29wZSwgVGVz
dE9iajo6dGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oV1RGTW92ZShwcm9t
aXNlKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC03
NjMyLDEwICs3NTY1LDEwIEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q28KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uVGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24oRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhbGxQcm9taXNlRnVuY3Rpb248
anNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblRlc3RTdGF0aWNQcm9taXNlRnVuY3Rpb25XaXRo
RXhjZXB0aW9uUHJvbWlzZSwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPbmx5Pigqc3Rh
dGUpKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+
OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljUHJvbWlz
ZUZ1bmN0aW9uV2l0aEV4Y2VwdGlvbkJvZHksIFByb21pc2VFeGVjdXRpb25TY29wZTo6V2luZG93
T25seT4oKnN0YXRlLCAidGVzdFN0YXRpY1Byb21pc2VGdW5jdGlvbldpdGhFeGNlcHRpb24iKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uVGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvblJldHVybmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6
Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgUmVmPERlZmVycmVkUHJvbWlzZT4mJiBwcm9taXNl
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUHJvbWlzZUZ1bmN0
aW9uQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvblJldHVy
bmluZ1Byb21pc2U8SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgUmVmPERl
ZmVycmVkUHJvbWlzZT4mJiBwcm9taXNlLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CkBAIC03NjQ0LDIzICs3NTc3LDIyIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RDdXN0b21Qcm9taXNlRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsK
LSAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxs
PGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVByb21pc2VGdW5jdGlvbkNhbGxl
ciwgUHJvbWlzZUV4ZWN1dGlvblNjb3BlOjpXaW5kb3dPbmx5Pigqc3RhdGUsICJ0ZXN0Q3VzdG9t
UHJvbWlzZUZ1bmN0aW9uIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvblJldHVybmluZ1Byb21p
c2U8SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21Q
cm9taXNlRnVuY3Rpb25Cb2R5LCBQcm9taXNlRXhlY3V0aW9uU2NvcGU6OldpbmRvd09ubHk+KCpz
dGF0ZSwgInRlc3RDdXN0b21Qcm9taXNlRnVuY3Rpb24iKTsKIH0KIAotc3RhdGljIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uVGVzdFN0YXRpY0N1c3Rv
bVByb21pc2VGdW5jdGlvblByb21pc2UoRXhlY1N0YXRlKiBzdGF0ZSwgUmVmPERlZmVycmVkUHJv
bWlzZT4mJiBwcm9taXNlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uQm9k
eShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFJlZjxEZWZlcnJlZFByb21pc2U+JiYgcHJvbWlzZSwg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgp
OwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqOjp0ZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1
bmN0aW9uKCpzdGF0ZSwgV1RGTW92ZShwcm9taXNlKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25UZXN0U3RhdGljQ3VzdG9t
UHJvbWlzZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShjYWxsUHJvbWlzZUZ1bmN0aW9uPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25U
ZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uUHJvbWlzZSwgUHJvbWlzZUV4ZWN1dGlvblNj
b3BlOjpXaW5kb3dPbmx5Pigqc3RhdGUpKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0dXJu
aW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVu
Y3Rpb25UZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0aW9uQm9keSwgUHJvbWlzZUV4ZWN1dGlv
blNjb3BlOjpXaW5kb3dPbmx5Pigqc3RhdGUsICJ0ZXN0U3RhdGljQ3VzdG9tUHJvbWlzZUZ1bmN0
aW9uIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9uQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uUmV0dXJuaW5nUHJv
bWlzZTxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0Q3VzdG9tUmV0dXJuc093blByb21pc2VGdW5jdGlvbkJv
ZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb25SZXR1cm5pbmdQ
cm9taXNlPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTc2NjksMTEgKzc2MDEsMTEgQEAgc3RhdGljIGlubGlu
ZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVJldHVybnNPd25Qcm9taXNl
RnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uUmV0
dXJuaW5nUHJvbWlzZTxKU1Rlc3RPYmo+OjpjYWxsUmV0dXJuaW5nT3duUHJvbWlzZTxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRlc3RDdXN0b21SZXR1cm5zT3duUHJvbWlzZUZ1bmN0aW9uQ2Fs
bGVyPigqc3RhdGUsICJ0ZXN0Q3VzdG9tUmV0dXJuc093blByb21pc2VGdW5jdGlvbiIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb25SZXR1cm5pbmdQcm9taXNlPEpTVGVzdE9iaj46OmNhbGxSZXR1
cm5pbmdPd25Qcm9taXNlPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdEN1c3RvbVJldHVy
bnNPd25Qcm9taXNlRnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJ0ZXN0Q3VzdG9tUmV0dXJuc093blBy
b21pc2VGdW5jdGlvbiIpOwogfQogCiAjaWYgRU5BQkxFKENPTkRJVElPTjEpCi1zdGF0aWMgaW5s
aW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRp
b25hbE92ZXJsb2FkMUNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93
U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkQm9keTEoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzY4
NCwxNSArNzYxNiwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAotc3RhdGlj
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlv
bmFsT3ZlcmxvYWQxKEV4ZWNTdGF0ZSogc3RhdGUpCi17Ci0gICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxP
dmVybG9hZDFDYWxsZXI+KCpzdGF0ZSwgImNvbmRpdGlvbmFsT3ZlcmxvYWQiKTsKLX0KLQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoQ09ORElUSU9OMikKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWQyQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWRCb2R5MihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC03NzAzLDM1ICs3NjMwLDM4IEBA
IHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDIoRXhl
Y1N0YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkMkNhbGxlcj4o
KnN0YXRlLCAiY29uZGl0aW9uYWxPdmVybG9hZCIpOwotfQotCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShDT05ESVRJT04xKSB8fCBFTkFCTEUoQ09ORElUSU9OMikKLUVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkKEV4
ZWNTdGF0ZSogc3RhdGUpCisKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3ZlcmxvYWRPdmVybG9hZERpc3BhdGNo
ZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2Jq
Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFVO
VVNFRF9QQVJBTSh2bSk7CiAgICAgc2l6ZV90IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4o
MSwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAg
ICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hpbmdBcmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1l
bnQoMCk7CiAjaWYgRU5BQkxFKENPTkRJVElPTjIpCiAgICAgICAgIGlmIChkaXN0aW5ndWlzaGlu
Z0FyZy5pc051bWJlcigpKQotICAgICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZDIoc3RhdGUpOworICAgICAgICAgICAgcmV0dXJuIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQ29uZGl0aW9uYWxPdmVybG9hZEJvZHkyKHN0YXRlLCBj
YXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKICNlbmRpZgogI2lmIEVOQUJMRShDT05ESVRJT04xKQot
ICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJs
b2FkMShzdGF0ZSk7CisgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNv
bmRpdGlvbmFsT3ZlcmxvYWRCb2R5MShzdGF0ZSwgY2FzdGVkVGhpcywgdGhyb3dTY29wZSk7CiAj
ZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8IDEgPyB0aHJvd1ZNRXJyb3Ioc3Rh
dGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSkgOiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKIH0KKworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbmRpdGlvbmFsT3Zlcmxv
YWQoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9i
aj46OmNhbGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Db25kaXRpb25hbE92ZXJsb2FkT3Zl
cmxvYWREaXNwYXRjaGVyPigqc3RhdGUsICJjb25kaXRpb25hbE92ZXJsb2FkIik7Cit9CisKICNl
bmRpZgogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkMUNhbGxlcihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25k
aXRpb25hbE92ZXJsb2FkQm9keTEoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5V
U0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzc0MiwxMyArNzY3Miw4IEBAIHN0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDEoRXhlY1N0YXRl
KiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkMUNhbGxlcj4o
KnN0YXRlLCAic2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZCIpOwotfQotCiAjaWYgRU5BQkxFKENP
TkRJVElPTikKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQyQ2FsbGVyKEpTQzo6RXhlY1N0
YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNv
bmRpdGlvbmFsT3ZlcmxvYWRCb2R5MihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElE
TE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRo
cm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC03NzU5LDMxICs3Njg0LDMyIEBAIHN0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZDIoRXhlY1N0
YXRlKiBzdGF0ZSkKLXsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkMkNhbGxl
cj4oKnN0YXRlLCAic2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZCIpOwotfQotCiAjZW5kaWYKIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNp
bmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQoRXhlY1N0YXRlKiBzdGF0ZSkKK3N0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRp
dGlvbmFsT3ZlcmxvYWRPdmVybG9hZERpc3BhdGNoZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewotICAgIFZNJiB2bSA9IHN0YXRlLT52
bSgpOwotICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAg
IFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgIFVOVVNFRF9QQVJBTSh2bSk7CiAgICAgc2l6ZV90
IGFyZ3NDb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oMSwgc3RhdGUtPmFyZ3VtZW50Q291bnQoKSk7
CiAgICAgaWYgKGFyZ3NDb3VudCA9PSAxKSB7CiAgICAgICAgIEpTVmFsdWUgZGlzdGluZ3Vpc2hp
bmdBcmcgPSBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAjaWYgRU5BQkxFKENPTkRJVElP
TikKICAgICAgICAgaWYgKGRpc3Rpbmd1aXNoaW5nQXJnLmlzTnVtYmVyKCkpCi0gICAgICAgICAg
ICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TaW5nbGVDb25kaXRpb25hbE92ZXJs
b2FkMihzdGF0ZSk7CisgICAgICAgICAgICByZXR1cm4ganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25TaW5nbGVDb25kaXRpb25hbE92ZXJsb2FkQm9keTIoc3RhdGUsIGNhc3RlZFRoaXMsIHRocm93
U2NvcGUpOwogI2VuZGlmCi0gICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQxKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZEJvZHkxKHN0YXRl
LCBjYXN0ZWRUaGlzLCB0aHJvd1Njb3BlKTsKICAgICB9CiAgICAgcmV0dXJuIGFyZ3NDb3VudCA8
IDEgPyB0aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSkgOiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5
cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU2luZ2xlQ29uZGl0aW9uYWxPdmVybG9hZChF
eGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6
Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWRP
dmVybG9hZERpc3BhdGNoZXI+KCpzdGF0ZSwgInNpbmdsZUNvbmRpdGlvbmFsT3ZlcmxvYWQiKTsK
K30KKworc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdEJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywg
SlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzc5OCwxMCArNzcyNCwxMCBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25BdHRhY2hTaGFkb3dSb290
KEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+
OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQXR0YWNoU2hhZG93Um9vdENhbGxlcj4o
KnN0YXRlLCAiYXR0YWNoU2hhZG93Um9vdCIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkF0dGFjaFNoYWRvd1Jvb3RC
b2R5Pigqc3RhdGUsICJhdHRhY2hTaGFkb3dSb290Iik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlvbldpdGhF
eHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXJDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0
eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0aW9uV2l0aEV4dGVybmFs
RGljdGlvbmFyeVBhcmFtZXRlckJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJ
RExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CiAgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzgxNiwxMCArNzc0MiwxMCBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PcGVyYXRpb25XaXRoRXh0ZXJuYWxE
aWN0aW9uYXJ5UGFyYW1ldGVyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3BlcmF0
aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlckNhbGxlcj4oKnN0YXRlLCAib3BlcmF0
aW9uV2l0aEV4dGVybmFsRGljdGlvbmFyeVBhcmFtZXRlciIpOworICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9wZXJhdGlv
bldpdGhFeHRlcm5hbERpY3Rpb25hcnlQYXJhbWV0ZXJCb2R5Pigqc3RhdGUsICJvcGVyYXRpb25X
aXRoRXh0ZXJuYWxEaWN0aW9uYXJ5UGFyYW1ldGVyIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ1ZmZlclNvdXJjZVBh
cmFtZXRlckNhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUm
IHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25CdWZmZXJTb3VyY2VQYXJhbWV0ZXJCb2R5KEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVy
IGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTc4MzQsMTAg
Kzc3NjAsMTAgQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnVm
ZmVyU291cmNlUGFyYW1ldGVyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9w
ZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uQnVmZmVy
U291cmNlUGFyYW1ldGVyQ2FsbGVyPigqc3RhdGUsICJidWZmZXJTb3VyY2VQYXJhbWV0ZXIiKTsK
KyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25CdWZmZXJTb3VyY2VQYXJhbWV0ZXJCb2R5Pigqc3RhdGUsICJidWZmZXJTb3Vy
Y2VQYXJhbWV0ZXIiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWRDYWxsZXIoSlNDOjpFeGVj
U3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQYXJh
bWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5
Q2FsbGVyTmFtZWRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKQEAgLTc4NTIsMTAgKzc3NzgsMTAgQEAgc3RhdGljIGlubGluZSBK
U0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTGVnYWN5Q2FsbGVyTmFtZWQoRXhlY1N0YXRlKiBz
dGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGw8anNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1lZENhbGxlcj4oKnN0YXRlLCAibGVn
YWN5Q2FsbGVyTmFtZWQiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNh
bGw8anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25MZWdhY3lDYWxsZXJOYW1lZEJvZHk+KCpzdGF0
ZSwgImxlZ2FjeUNhbGxlck5hbWVkIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5nQ2FsbGVyKEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3Ry
aW5nQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CkBAIC03ODY1LDcgKzc3OTEsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Ub1N0cmluZyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVy
biBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
blRvU3RyaW5nQ2FsbGVyPigqc3RhdGUsICJ0b1N0cmluZyIpOworICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvU3RyaW5n
Qm9keT4oKnN0YXRlLCAidG9TdHJpbmciKTsKIH0KIAogc3RhdGljIGlubGluZSBFbmNvZGVkSlNW
YWx1ZSBjYWxsSlNUZXN0T2JqMShFeGVjU3RhdGUqIHN0YXRlKQpAQCAtNzk1NSwxNCArNzg4MSwx
NCBAQCBKU0M6OkpTT2JqZWN0KiBKU1Rlc3RPYmo6OnNlcmlhbGl6ZShFeGVjCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvblRvSlNPTkNhbGxlcihFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RPYmoqIHRo
aXNPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Ub0pTT05Cb2R5KEV4ZWNTdGF0
ZSogc3RhdGUsIEpTVGVzdE9iaiogdGhpc09iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqOjpzZXJpYWxpemUo
c3RhdGUsIHRoaXNPYmplY3QsIHRocm93U2NvcGUpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRvSlNPTihFeGVjU3RhdGUqIHN0
YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Y2FsbDxqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRvSlNPTkNhbGxlcj4oKnN0YXRlLCAidG9KU09OIik7CisgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpjYWxsPGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uVG9KU09OQm9keT4oKnN0YXRlLCAidG9KU09OIik7CiB9CiAKIHZvaWQgSlNUZXN0T2Jq
Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVC
dWlsdGlucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCShyZXZpc2lvbiAyMTc1MTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVC
dWlsdGlucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJK
U0RPTU9wZXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiSlNOb2RlLmgiCi0jaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRp
bWUvRnVuY3Rpb25Qcm90b3R5cGUuaD4KICNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CiAKQEAgLTIw
Niw3ICsyMDUsNyBAQCBib29sIHNldEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvCiAg
ICAgcmV0dXJuIHByb3RvdHlwZS0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVy
dHlOYW1lcygpLmNvbnN0cnVjdG9yLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVycmlkZUJ1aWx0
aW5zUHJvdG90eXBlRnVuY3Rpb25OYW1lZEl0ZW1DYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRl
LCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T3ZlcnJpZGVCdWlsdGlucz46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPdmVycmlkZUJ1aWx0aW5zUHJvdG90eXBl
RnVuY3Rpb25OYW1lZEl0ZW1Cb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURM
T3BlcmF0aW9uPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0yMjAsNyArMjE5LDcgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5h
bWVkSXRlbShFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucz46OmNhbGw8anNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlw
ZUZ1bmN0aW9uTmFtZWRJdGVtQ2FsbGVyPigqc3RhdGUsICJuYW1lZEl0ZW0iKTsKKyAgICByZXR1
cm4gSURMT3BlcmF0aW9uPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+OjpjYWxsPGpzVGVzdE92ZXJy
aWRlQnVpbHRpbnNQcm90b3R5cGVGdW5jdGlvbk5hbWVkSXRlbUJvZHk+KCpzdGF0ZSwgIm5hbWVk
SXRlbSIpOwogfQogCiBib29sIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNPd25lcjo6aXNSZWFjaGFi
bGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQq
LCBTbG90VmlzaXRvciYgdmlzaXRvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbi5j
cHAJKHJldmlzaW9uIDIxNzUxMikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk4LDE0
ICszOTgsMTQgQEAgSlNDOjpKU09iamVjdCogSlNUZXN0U2VyaWFsaXphdGlvbjo6c2VyaQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
U2VyaWFsaXphdGlvblByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQ2FsbGVyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTVGVzdFNlcmlhbGl6YXRpb24qIHRoaXNPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlv
blByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keShFeGVjU3RhdGUqIHN0YXRlLCBKU1Rlc3RTZXJp
YWxpemF0aW9uKiB0aGlzT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTZXJpYWxpemF0aW9uOjpzZXJpYWxpemUo
c3RhdGUsIHRoaXNPYmplY3QsIHRocm93U2NvcGUpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04oRXhl
Y1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6
YXRpb24+OjpjYWxsPGpzVGVzdFNlcmlhbGl6YXRpb25Qcm90b3R5cGVGdW5jdGlvblRvSlNPTkNh
bGxlcj4oKnN0YXRlLCAidG9KU09OIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RT
ZXJpYWxpemF0aW9uPjo6Y2FsbDxqc1Rlc3RTZXJpYWxpemF0aW9uUHJvdG90eXBlRnVuY3Rpb25U
b0pTT05Cb2R5Pigqc3RhdGUsICJ0b0pTT04iKTsKIH0KIAogYm9vbCBKU1Rlc3RTZXJpYWxpemF0
aW9uT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXphdGlvbkluaGVy
aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdC5jcHAJKHJldmlzaW9uIDIxNzUxMikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0
aW9uSW5oZXJpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOCwxNCArMjA4LDE0IEBAIEpTQzo6
SlNPYmplY3QqIEpTVGVzdFNlcmlhbGl6YXRpb25JbmhlcmkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1zdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0UHJvdG90eXBlRnVuY3Rpb25Ub0pTT05DYWxsZXIoRXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0
U2VyaWFsaXphdGlvbkluaGVyaXQqIHRoaXNPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlvbklu
aGVyaXRQcm90b3R5cGVGdW5jdGlvblRvSlNPTkJvZHkoRXhlY1N0YXRlKiBzdGF0ZSwgSlNUZXN0
U2VyaWFsaXphdGlvbkluaGVyaXQqIHRoaXNPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKIHsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFNlcmlhbGl6YXRpb25J
bmhlcml0OjpzZXJpYWxpemUoc3RhdGUsIHRoaXNPYmplY3QsIHRocm93U2NvcGUpKTsKIH0KIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdFBy
b3RvdHlwZUZ1bmN0aW9uVG9KU09OKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElE
TE9wZXJhdGlvbjxKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdD46OmNhbGw8anNUZXN0U2VyaWFs
aXphdGlvbkluaGVyaXRQcm90b3R5cGVGdW5jdGlvblRvSlNPTkNhbGxlcj4oKnN0YXRlLCAidG9K
U09OIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJp
dD46OmNhbGw8anNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRQcm90b3R5cGVGdW5jdGlvblRvSlNP
TkJvZHk+KCpzdGF0ZSwgInRvSlNPTiIpOwogfQogCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5jcHAJKHJldmlzaW9uIDIxNzUxMikKKysr
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemF0
aW9uSW5oZXJpdEZpbmFsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQxLDE0ICsyNDEsMTQgQEAg
SlNDOjpKU09iamVjdCogSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQ2FsbGVyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEpTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwqIHRoaXNPYmplY3QsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUganNUZXN0
U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbFByb3RvdHlwZUZ1bmN0aW9uVG9KU09OQm9keShFeGVj
U3RhdGUqIHN0YXRlLCBKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsKiB0aGlzT2JqZWN0
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsOjpzZXJpYWxpemUoc3RhdGUsIHRo
aXNPYmplY3QsIHRocm93U2NvcGUpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25Ub0pTT04o
RXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlh
bGl6YXRpb25Jbmhlcml0RmluYWw+OjpjYWxsPGpzVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Rmlu
YWxQcm90b3R5cGVGdW5jdGlvblRvSlNPTkNhbGxlcj4oKnN0YXRlLCAidG9KU09OIik7CisgICAg
cmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsPjo6Y2Fs
bDxqc1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsUHJvdG90eXBlRnVuY3Rpb25Ub0pTT05C
b2R5Pigqc3RhdGUsICJ0b0pTT04iKTsKIH0KIAogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAkocmV2aXNpb24gMjE3
NTEyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcg
KzMzLDYgQEAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXJDYWNoZS5oIgogI2luY2x1ZGUgIkpTTWVz
c2FnZVBvcnQuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKLSNpbmNsdWRl
IDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNBcnJheS5oPgogI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
QEAgLTI5OSw3ICsyOTgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsCiAgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2U+OjpnZXQ8anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVk
UmVhZG9ubHlWYWx1ZUdldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUsICJjYWNoZWRSZWFkb25seVZh
bHVlIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uQ2FsbGVy
KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
bkZ1bmN0aW9uQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+OjpDbGFzc1BhcmFtZXRlciBj
YXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC0zMTQsMTAgKzMx
MywxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25GdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6
Y2FsbDxqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlv
bkZ1bmN0aW9uQ2FsbGVyPigqc3RhdGUsICJmdW5jdGlvbiIpOworICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uQm9k
eT4oKnN0YXRlLCAiZnVuY3Rpb24iKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0
aW9uRnVuY3Rpb25SZXR1cm5pbmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6Q2xh
c3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3Rh
dGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZVByb3RvdHlwZUZ1bmN0aW9uRnVuY3Rpb25SZXR1cm5pbmdCb2R5KEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZT46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTMyNyw3ICszMjYsNyBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlRnVuY3Rpb25GdW5j
dGlvblJldHVybmluZyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6Y2FsbDxqc1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9uUmV0dXJu
aW5nQ2FsbGVyPigqc3RhdGUsICJmdW5jdGlvblJldHVybmluZyIpOworICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPjo6Y2FsbDxqc1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkZ1bmN0aW9u
UmV0dXJuaW5nQm9keT4oKnN0YXRlLCAiZnVuY3Rpb25SZXR1cm5pbmciKTsKIH0KIAogdm9pZCBK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAko
cmV2aXNpb24gMjE3NTEyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI1LDcgKzUyNSw3IEBA
IGJvb2wgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdBdHRyV2l0aFNldHQKICAgICByZXR1cm4gSURM
QXR0cmlidXRlPEpTVGVzdFR5cGVkZWZzPjo6c2V0PHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0
cldpdGhTZXR0ZXJFeGNlcHRpb25TZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogfQogCi1zdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmND
YWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0
VHlwZWRlZnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRo
cm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNTM4LDEwICs1MzgsMTAgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKEV4ZWNT
dGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46
OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1bmNDYWxsZXI+KCpzdGF0ZSwg
ImZ1bmMiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY0JvZHk+KCpzdGF0ZSwgImZ1bmMiKTsK
IH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25TZXRTaGFkb3dDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBl
bmFtZSBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRU
aGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5j
b2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvd0JvZHko
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRl
ZnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CkBAIC01NjQsMTAgKzU2NCwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvblNldFNoYWRvdyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25TZXRTaGFkb3dDYWxsZXI+KCpzdGF0ZSwgInNldFNoYWRvdyIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25TZXRTaGFkb3dCb2R5Pigqc3RhdGUsICJzZXRTaGFkb3ciKTsKIH0K
IAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90
eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmdDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpDbGFzc1BhcmFtZXRl
ciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhv
ZFdpdGhTZXF1ZW5jZUFyZ0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExP
cGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6
OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01ODEsMTAgKzU4MSwxMCBAQCBzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhTZXF1ZW5j
ZUFyZyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0
VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRo
U2VxdWVuY2VBcmdDYWxsZXI+KCpzdGF0ZSwgIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpOworICAg
IHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoU2VxdWVuY2VBcmdCb2R5Pigqc3RhdGUsICJtZXRo
b2RXaXRoU2VxdWVuY2VBcmciKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlQXJnQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdFR5
cGVkZWZzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlQXJnQm9keShKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTU5OSwx
MCArNTk5LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uTnVsbGFibGVTZXF1ZW5jZUFyZyhFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJ
RExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBl
RnVuY3Rpb25OdWxsYWJsZVNlcXVlbmNlQXJnQ2FsbGVyPigqc3RhdGUsICJudWxsYWJsZVNlcXVl
bmNlQXJnIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VBcmdCb2R5Pigq
c3RhdGUsICJudWxsYWJsZVNlcXVlbmNlQXJnIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2VxdWVuY2VPZk51
bGxhYmxlc0FyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJh
dGlvbjxKU1Rlc3RUeXBlZGVmcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhy
b3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2VxdWVuY2VPZk51bGxhYmxlc0FyZ0JvZHko
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRl
ZnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2Nv
cGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CkBAIC02MTcsMTAgKzYxNywxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpT
VmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvblNlcXVlbmNlT2ZOdWxsYWJsZXNBcmcoRXhlY1N0YXRlKiBzdGF0
ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU2VxdWVuY2VPZk51bGxhYmxlc0FyZ0NhbGxlcj4o
KnN0YXRlLCAic2VxdWVuY2VPZk51bGxhYmxlc0FyZyIpOworICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25T
ZXF1ZW5jZU9mTnVsbGFibGVzQXJnQm9keT4oKnN0YXRlLCAic2VxdWVuY2VPZk51bGxhYmxlc0Fy
ZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRl
ZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxlc0FyZ0NhbGxlcihK
U0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVm
cz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3Rv
dHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnQm9keShKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OkNsYXNz
UGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAg
LTYzNSwxMCArNjM1LDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnKEV4ZWNTdGF0ZSogc3RhdGUp
CiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxlc0FyZ0Nh
bGxlcj4oKnN0YXRlLCAibnVsbGFibGVTZXF1ZW5jZU9mTnVsbGFibGVzQXJnIik7CisgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxlc0FyZ0JvZHk+KCpzdGF0ZSwg
Im51bGxhYmxlU2VxdWVuY2VPZk51bGxhYmxlc0FyZyIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxl
U2VxdWVuY2VPZlVuaW9uc0FyZ0NhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1l
IElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9m
VW5pb25zQXJnQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlv
bjxKU1Rlc3RUeXBlZGVmcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dT
Y29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTY1MywxMCArNjUzLDEwIEBAIHN0YXRpYyBpbmxpbmUg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uTnVsbGFibGVTZXF1ZW5jZU9mVW5pb25z
QXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RU
eXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2Vx
dWVuY2VPZlVuaW9uc0FyZ0NhbGxlcj4oKnN0YXRlLCAibnVsbGFibGVTZXF1ZW5jZU9mVW5pb25z
QXJnIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNU
ZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbk51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZ0Jv
ZHk+KCpzdGF0ZSwgIm51bGxhYmxlU2VxdWVuY2VPZlVuaW9uc0FyZyIpOwogfQogCi1zdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
blVuaW9uQXJnQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0
aW9uPEpTVGVzdFR5cGVkZWZzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25VbmlvbkFyZ0JvZHkoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02NzEs
MTAgKzY3MSwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvblVuaW9uQXJnKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblVu
aW9uQXJnQ2FsbGVyPigqc3RhdGUsICJ1bmlvbkFyZyIpOworICAgIHJldHVybiBJRExPcGVyYXRp
b248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25V
bmlvbkFyZ0JvZHk+KCpzdGF0ZSwgInVuaW9uQXJnIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhD
bGFtcENhbGxlcihKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxK
U1Rlc3RUeXBlZGVmcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29w
ZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEJvZHkoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpDbGFzc1BhcmFt
ZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC02OTEs
MTAgKzY5MSwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5j
dGlvbkZ1bmNXaXRoQ2xhbXAoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uRnVuY1dpdGhDbGFtcENhbGxlcj4oKnN0YXRlLCAiZnVuY1dpdGhDbGFtcCIpOworICAgIHJl
dHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJv
dG90eXBlRnVuY3Rpb25GdW5jV2l0aENsYW1wQm9keT4oKnN0YXRlLCAiZnVuY1dpdGhDbGFtcCIp
OwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQ
cm90b3R5cGVGdW5jdGlvbkZ1bmNXaXRoQ2xhbXBJblR5cGVkZWZDYWxsZXIoSlNDOjpFeGVjU3Rh
dGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpDbGFzc1Bh
cmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCitzdGF0aWMg
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
bkZ1bmNXaXRoQ2xhbXBJblR5cGVkZWZCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhp
cywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0
ZSk7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwpAQCAtNzA5LDEwICs3MDksMTAgQEAg
c3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdAogCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jV2l0aENs
YW1wSW5UeXBlZGVmKEV4ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlv
bjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkZ1
bmNXaXRoQ2xhbXBJblR5cGVkZWZDYWxsZXI+KCpzdGF0ZSwgImZ1bmNXaXRoQ2xhbXBJblR5cGVk
ZWYiKTsKKyAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uRnVuY1dpdGhDbGFtcEluVHlwZWRlZkJvZHk+KCpz
dGF0ZSwgImZ1bmNXaXRoQ2xhbXBJblR5cGVkZWYiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6
OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0
aW9uQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpT
VGVzdFR5cGVkZWZzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5
cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25Qb2ludEZ1bmN0aW9uQm9keShKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTcyMiwx
MCArNzIyLDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0
aW9uUG9pbnRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rp
b25Qb2ludEZ1bmN0aW9uQ2FsbGVyPigqc3RhdGUsICJwb2ludEZ1bmN0aW9uIik7CisgICAgcmV0
dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90
b3R5cGVGdW5jdGlvblBvaW50RnVuY3Rpb25Cb2R5Pigqc3RhdGUsICJwb2ludEZ1bmN0aW9uIik7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1By
b3RvdHlwZUZ1bmN0aW9uU3RyaW5nU2VxdWVuY2VGdW5jdGlvbkNhbGxlcihKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3N0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9u
U3RyaW5nU2VxdWVuY2VGdW5jdGlvbkJvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFt
ZSBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlz
LCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRl
KTsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC03MzksMTAgKzczOSwxMCBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVl
bmNlRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9u
PEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uU3Ry
aW5nU2VxdWVuY2VGdW5jdGlvbkNhbGxlcj4oKnN0YXRlLCAic3RyaW5nU2VxdWVuY2VGdW5jdGlv
biIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVz
dFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uQm9keT4oKnN0
YXRlLCAic3RyaW5nU2VxdWVuY2VGdW5jdGlvbiIpOwogfQogCi1zdGF0aWMgaW5saW5lIEpTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVl
bmNlRnVuY3Rpb24yQ2FsbGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3Bl
cmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMkJv
ZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0VHlw
ZWRlZnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93
U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKICAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CkBAIC03NTYsMTAgKzc1NiwxMCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlw
ZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yKEV4ZWNTdGF0ZSog
c3RhdGUpCiB7Ci0gICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OmNhbGw8
anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvblN0cmluZ1NlcXVlbmNlRnVuY3Rpb24yQ2Fs
bGVyPigqc3RhdGUsICJzdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMiIpOworICAgIHJldHVybiBJRExP
cGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVu
Y3Rpb25TdHJpbmdTZXF1ZW5jZUZ1bmN0aW9uMkJvZHk+KCpzdGF0ZSwgInN0cmluZ1NlcXVlbmNl
RnVuY3Rpb24yIik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0lu
Y2x1ZGVDYWxsZXIoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248
SlNUZXN0VHlwZWRlZnM+OjpDbGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2Nv
cGUmIHRocm93U2NvcGUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2VxdWVuY2VUaGF0UmVxdWlyZXNJbmNs
dWRlQm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rl
c3RUeXBlZGVmcz46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKQEAgLTc3MywxMCArNzczLDEwIEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3QKIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhTZXF1ZW5jZVRoYXRSZXF1aXJlc0lu
Y2x1ZGUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVz
dFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1bmN0aW9uQ2FsbFdpdGhT
ZXF1ZW5jZVRoYXRSZXF1aXJlc0luY2x1ZGVDYWxsZXI+KCpzdGF0ZSwgImNhbGxXaXRoU2VxdWVu
Y2VUaGF0UmVxdWlyZXNJbmNsdWRlIik7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rlc3RU
eXBlZGVmcz46OmNhbGw8anNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlvbkNhbGxXaXRoU2Vx
dWVuY2VUaGF0UmVxdWlyZXNJbmNsdWRlQm9keT4oKnN0YXRlLCAiY2FsbFdpdGhTZXF1ZW5jZVRo
YXRSZXF1aXJlc0luY2x1ZGUiKTsKIH0KIAotc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uQ2Fs
bGVyKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdFR5
cGVkZWZzPjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZz
UHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uQm9keShKU0M6OkV4ZWNTdGF0ZSog
c3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RUeXBlZGVmcz46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTc4Nyw3
ICs3ODcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0CiAKIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhFeGNlcHRpb24oRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICByZXR1cm4gSURM
T3BlcmF0aW9uPEpTVGVzdFR5cGVkZWZzPjo6Y2FsbDxqc1Rlc3RUeXBlZGVmc1Byb3RvdHlwZUZ1
bmN0aW9uTWV0aG9kV2l0aEV4Y2VwdGlvbkNhbGxlcj4oKnN0YXRlLCAibWV0aG9kV2l0aEV4Y2Vw
dGlvbiIpOworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0VHlwZWRlZnM+OjpjYWxsPGpz
VGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoRXhjZXB0aW9uQm9keT4oKnN0
YXRlLCAibWV0aG9kV2l0aEV4Y2VwdGlvbiIpOwogfQogCiBib29sIEpTVGVzdFR5cGVkZWZzT3du
ZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4g
aGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCkluZGV4OiBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MTc1MTIpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNyBAQAorMjAxNy0wNS0yNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFtXZWJJRExdIE92ZXJsb2FkZWQgZnVuY3Rpb25zIHNob3VsZCB0aHJvdyB0aGlzIG9iamVj
dCBjaGVjayBleGNlcHRpb24gYmVmb3JlIGFyZ3VtZW50IGNoZWNrIGV4Y2VwdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyNDgwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgY2FzZSB0
aGF0IHNob3dzIHRoYXQgdXNpbmcgdGhlIHdyb25nIHRoaXMgb2JqZWN0IG9uIGFuIG92ZXJsb2Fk
ZWQgZnVuY3Rpb24sCisgICAgICAgIGV2ZW4gaWYgeW91IGFyZSBwYXNzaW5nIHRoZSB3cm9uZyBu
dW1iZXIgb2YgYXJndW1lbnRzLCByZXN1bHRzIGluIGFuIGludmFsaWQgdGhpcworICAgICAgICBv
YmplY3QgZXhjZXB0aW9uLgorCisgICAgICAgICoganMvZG9tL292ZXJsb2FkZWQtb3BlcmF0aW9u
LWV4Y2VwdGlvbi1vcmRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9v
dmVybG9hZGVkLW9wZXJhdGlvbi1leGNlcHRpb24tb3JkZXIuaHRtbDogQWRkZWQuCisKIDIwMTct
MDUtMjYgIFJ5YW4gSGFkZGFkICA8cnlhbmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIxNzQ1OC4KSW5kZXg6IExheW91dFRlc3RzL2pzL2RvbS9v
dmVybG9hZGVkLW9wZXJhdGlvbi1leGNlcHRpb24tb3JkZXItZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2pzL2RvbS9vdmVybG9hZGVkLW9wZXJhdGlvbi1leGNlcHRpb24t
b3JkZXItZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2pzL2RvbS9v
dmVybG9hZGVkLW9wZXJhdGlvbi1leGNlcHRpb24tb3JkZXItZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIEFuIG92ZXJsb2FkZWQgZnVuY3Rpb24gdGhh
dCBpcyBwYXNzZWQgdG9vIGZldyBhcmd1bWVudHMgZm9yIGFueSBvdmVybG9hZCBzaG91bGQgdGhy
b3cgYSAnTm90IGVub3VnaCBhcmd1bWVudHMnIGV4Y2VwdGlvbiAKK1BBU1MgQW4gb3ZlcmxvYWRl
ZCBmdW5jdGlvbiB0aGF0IGlzIHBhc3NlZCB0b28gZmV3IGFyZ3VtZW50cyBmb3IgYW55IG92ZXJs
b2FkLCBhbmQgYWxzbyBhbiBpbnZhbGlkIHRoaXMgb2JqZWN0LCBzaG91bGQgdGhyb3cgYW4gJ0lu
dmFsaWQgdGhpcyBvYmplY3QnIGV4Y2VwdGlvbiAKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvZG9t
L292ZXJsb2FkZWQtb3BlcmF0aW9uLWV4Y2VwdGlvbi1vcmRlci5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2pzL2RvbS9vdmVybG9hZGVkLW9wZXJhdGlvbi1leGNlcHRpb24tb3JkZXIu
aHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vb3ZlcmxvYWRlZC1vcGVy
YXRpb24tZXhjZXB0aW9uLW9yZGVyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0PgorCXZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdj
YW52YXMnKTsKKwl2YXIgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOworCisgICAg
dGVzdChmdW5jdGlvbigpIHsKKwkgICAgdHJ5IHsKKwkgICAgICAgIGNvbnRleHQuaXNQb2ludElu
UGF0aCgxKTsKKwkgICAgfSBjYXRjaCAoZSkgeworCQkJYXNzZXJ0X3RydWUoZSBpbnN0YW5jZW9m
IFR5cGVFcnJvcik7CisJCQlhc3NlcnRfZXF1YWxzKGUubmFtZSwgIlR5cGVFcnJvciIpOworCQkJ
YXNzZXJ0X2VxdWFscyhlLm1lc3NhZ2UsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpOworCSAgICB9
CisgICAgfSwgIkFuIG92ZXJsb2FkZWQgZnVuY3Rpb24gdGhhdCBpcyBwYXNzZWQgdG9vIGZldyBh
cmd1bWVudHMgZm9yIGFueSBvdmVybG9hZCBzaG91bGQgdGhyb3cgYSAnTm90IGVub3VnaCBhcmd1
bWVudHMnIGV4Y2VwdGlvbiIpOworCisgICAgdGVzdChmdW5jdGlvbigpIHsKKyAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgIGNvbnRleHQuaXNQb2ludEluUGF0aC5jYWxsKHsgfSwgMSk7CisgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKwkJCWFzc2VydF90cnVlKGUgaW5zdGFuY2VvZiBUeXBlRXJyb3Ip
OworCQkJYXNzZXJ0X2VxdWFscyhlLm5hbWUsICJUeXBlRXJyb3IiKTsKKwkJCWFzc2VydF9lcXVh
bHMoZS5tZXNzYWdlLCAiQ2FuIG9ubHkgY2FsbCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaXNQ
b2ludEluUGF0aCBvbiBpbnN0YW5jZXMgb2YgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIik7Cisg
ICAgICAgIH0KKyAgICB9LCAiQW4gb3ZlcmxvYWRlZCBmdW5jdGlvbiB0aGF0IGlzIHBhc3NlZCB0
b28gZmV3IGFyZ3VtZW50cyBmb3IgYW55IG92ZXJsb2FkLCBhbmQgYWxzbyBhbiBpbnZhbGlkIHRo
aXMgb2JqZWN0LCBzaG91bGQgdGhyb3cgYW4gJ0ludmFsaWQgdGhpcyBvYmplY3QnIGV4Y2VwdGlv
biIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="332402"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
      

    </bug>

</bugzilla>