<?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>110676</bug_id>
          
          <creation_ts>2013-02-22 18:16:41 -0800</creation_ts>
          <short_desc>[V8] Generate xxxAttrGetterCallback()</short_desc>
          <delta_ts>2013-02-24 23:14:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>110667</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>840222</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-22 18:16:41 -0800</bug_when>
    <thetext>This is one of steps to insert TRACE_EVENT_STATE() macros into DOM bindings. This patch introduces an indirection function for xxxAttrGetter(), like this:

// For non-custom getters
Handle&lt;Value&gt; xxxAttrGetterCallback(...) {
  return xxxAttrGetter(...);
}

// For custom getters.
Handle&lt;Value&gt; xxxAttrGetterCallback(...) {
  return xxxAttrGetterCustom(...);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840235</commentid>
    <comment_count>1</comment_count>
      <attachid>189892</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-22 18:36:05 -0800</bug_when>
    <thetext>Created attachment 189892
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840392</commentid>
    <comment_count>2</comment_count>
      <attachid>189892</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-23 09:54:58 -0800</bug_when>
    <thetext>Comment on attachment 189892
Patch

Does this have any impact on microbenchmark performance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840503</commentid>
    <comment_count>3</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-23 18:41:05 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 189892 [details])
&gt; Does this have any impact on microbenchmark performance?

I couldn&apos;t observe any perf regression in Bindings/first-child.html, so I think it&apos;s OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840506</commentid>
    <comment_count>4</comment_count>
      <attachid>189892</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-23 18:45:08 -0800</bug_when>
    <thetext>Comment on attachment 189892
Patch

Rejecting attachment 189892 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 189892, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
8TestObj.cpp
patching file Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp
Hunk #5 FAILED at 163.
1 out of 6 hunks FAILED -- saving rejects to file Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.cpp.rej
patching file Source/WebCore/bindings/scripts/test/V8/V8TestTypedefs.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, &apos;Adam Barth&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/16723963</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840507</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-23 18:56:42 -0800</bug_when>
    <thetext>Committed r143856: &lt;http://trac.webkit.org/changeset/143856&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189892</attachid>
            <date>2013-02-22 18:36:05 -0800</date>
            <delta_ts>2013-02-23 18:57:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110676-20130222183223.patch</filename>
            <type>text/plain</type>
            <size>117450</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZhZGY3YjVlZDE1ZDZk
MGViN2IyZTEyNTY2OGJlMDZiNjRjMzAzZi4uYmI3MWQ2ZDNlN2IxMjVmZDhiYmE4MGE2MzQzYzAw
ZjI2NTU1OWU1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE0MSBAQAogMjAxMy0wMi0yMiAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW1Y4XSBHZW5lcmF0
ZSB4eHhBdHRyR2V0dGVyQ2FsbGJhY2soKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNjc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBvbmUgb2Ygc3RlcHMgdG8gaW5zZXJ0IFRSQUNFX0VW
RU5UX1NUQVRFKCkgbWFjcm9zCisgICAgICAgIGludG8gRE9NIGJpbmRpbmdzLiBUaGlzIHBhdGNo
IGludHJvZHVjZXMgYW4gaW5kaXJlY3Rpb24KKyAgICAgICAgZnVuY3Rpb24gZm9yIHh4eEF0dHJH
ZXR0ZXIoKSwgbGlrZSB0aGlzOgorCisgICAgICAgIC8vIEZvciBub24tY3VzdG9tIGdldHRlcnMK
KyAgICAgICAgSGFuZGxlPFZhbHVlPiB4eHhBdHRyR2V0dGVyQ2FsbGJhY2soLi4uKSB7CisgICAg
ICAgICAgcmV0dXJuIHh4eEF0dHJHZXR0ZXIoLi4uKTsKKyAgICAgICAgfQorCisgICAgICAgIC8v
IEZvciBjdXN0b20gZ2V0dGVycy4KKyAgICAgICAgSGFuZGxlPFZhbHVlPiB4eHhBdHRyR2V0dGVy
Q2FsbGJhY2soLi4uKSB7CisgICAgICAgICAgcmV0dXJuIHh4eEF0dHJHZXR0ZXJDdXN0b20oLi4u
KTsKKyAgICAgICAgfQorCisgICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3Iu
CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAg
ICAgKEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRl
Tm9ybWFsQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdl
dHRlcik6CisgICAgICAgIChHZW5lcmF0ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUpOgorICAgICAg
ICAoR2VuZXJhdGVOb25TdGFuZGFyZEZ1bmN0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3Rp
dmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9iamVjdFY4
SW50ZXJuYWw6OmV4Y2l0aW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChUZXN0
QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0QWN0aXZl
RE9NT2JqZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RBY3RpdmVE
T01PYmplY3RUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEV2ZW50Q29u
c3RydWN0b3JWOEludGVybmFsOjphdHRyMUF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChU
ZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEV2
ZW50Q29uc3RydWN0b3JWOEludGVybmFsOjphdHRyMkF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RFeGNlcHRpb25WOEludGVybmFs
OjpuYW1lQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFRlc3RFeGNlcHRpb25WOEludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFj
ZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ckF0dHJHZXR0ZXJDYWxs
YmFjayk6CisgICAgICAgIChUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5h
bDo6c3VwcGxlbWVudGFsU3RyMUF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyMkF0dHJHZXR0ZXJDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxl
bWVudGFsU3RyM0F0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0SW50
ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTm9kZUF0dHJHZXR0ZXJDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFkT25s
eUxvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFRlc3RPYmpWOEludGVybmFs
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVN0cmluZ0F0
dHJBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6OnJlYWRPbmx5VGVzdE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1JlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVy
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0YXRpY1N0
cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OmVudW1BdHRyQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjpzaG9ydEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkU2hvcnRBdHRyQXR0ckdldHRl
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0
ckF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6bG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0ckF0dHJHZXR0
ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9i
akF0dHJBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp0
ZXN0T2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdl
dHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZs
ZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0ckdldHRl
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0
ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxB
dHRyQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjpyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0
dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
dHlwZWRBcnJheUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNr
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjphdHRyV2l0aFNldHRlckV4
Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjpjdXN0b21BdHRyQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0
dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVS
YWlzZXNBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdldHRl
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxi
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJHZXR0ZXJD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlw
dEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMUF0dHJHZXR0
ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0
aW9uYWxBdHRyMkF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y2FjaGVkQXR0cmlidXRlMUF0dHJHZXR0ZXJD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y2FjaGVkQXR0
cmlidXRlMkF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6YW55QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyR2V0dGVyQ2Fs
bGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1
bnRpbWVBdHRyMkF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2Jq
VjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0dHJHZXR0ZXJDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRy
MkF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6ZmxvYXRBcnJheUF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6ZG91YmxlQXJyYXlBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbnRlbnREb2N1bWVudEF0dHJHZXR0ZXJDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50
QXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjppbW11dGFibGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJyeUF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RmxvYXRBdHRyR2V0dGVyQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmRlc2NyaXB0aW9uQXR0
ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpp
ZEF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6aGFzaEF0dHJHZXR0ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6cmVwbGFjZWFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6Omluc3RhbGxQZXJDb250ZXh0UHJvcGVy
dGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFsdWVBdHRyR2V0dGVyQ2FsbGJh
Y2spOgorICAgICAgICAoVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVY4SW50ZXJuYWw6OnJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNh
Y2hlZFZhbHVlQXR0ckdldHRlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpwb3J0c0F0dHJHZXR0ZXJDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlVjhJbnRlcm5hbDo6Y2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5h
bDo6dW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoVGVz
dFR5cGVkZWZzVjhJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOElu
dGVybmFsOjppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0
ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5
cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0
cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25B
dHRyR2V0dGVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZSk6CisKKzIwMTMtMDItMjIgIEtl
bnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFVucmV2aWV3ZWQg
YnVpbGQgZml4LiBBZGRlZCBtaXNzaW5nICNpZiBQTEFURk9STShDSFJPTUlVTSkuCiAKICAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBmYmFkZWIwYWJmM2I1OWI0ZWY4M2ZhNjNh
ZDFhNzg3OTBiZjMwMjhhLi4yODUyODM1Mzk4NzgzMjllZTU1NDU2MzI5NjUwZDg0NjYzMTYyYmE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbQpAQCAtODE3LDYgKzgxNywxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
ICR7ZnVuY05hbWV9QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgYwogICAg
IHJldHVybiBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiB9CiAKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gJHtmdW5jTmFtZX1BdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
cmV0dXJuICR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke2Z1bmNOYW1lfUF0dHJHZXR0ZXIo
bmFtZSwgaW5mbyk7Cit9CisKIEVORAogfQogCkBAIC04NzEsNiArODc2LDMxIEBAIHN1YiBHZW5l
cmF0ZUZlYXR1cmVPYnNlcnZhdGlvbgogICAgIHJldHVybiAiIjsKIH0KIAorc3ViIEdlbmVyYXRl
Tm9ybWFsQXR0ckdldHRlckNhbGxiYWNrCit7CisgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0Owor
ICAgIG15ICRpbnRlcmZhY2UgPSBzaGlmdDsKKworICAgIG15ICRpbnRlcmZhY2VOYW1lID0gJGlu
dGVyZmFjZS0+bmFtZTsKKyAgICBteSAkdjhJbnRlcmZhY2VOYW1lID0gIlY4JGludGVyZmFjZU5h
bWUiOworICAgIG15ICRhdHRyRXh0ID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXM7CisgICAgbXkgJGF0dHJOYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1l
OworCisgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRl
Q29uZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKKworICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICJzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+ICR7YXR0ck5hbWV9QXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKVxuIik7CisgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIntcbiIpOworICAgIHB1c2goQGltcGxDb250ZW50RGVj
bHMsIEdlbmVyYXRlRmVhdHVyZU9ic2VydmF0aW9uKCRhdHRyRXh0LT57IlY4TWVhc3VyZUFzIn0p
KTsKKyAgICBpZiAoSGFzQ3VzdG9tR2V0dGVyKCRhdHRyRXh0KSkgeworICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCAiICAgIHJldHVybiAke3Y4SW50ZXJmYWNlTmFtZX06OiR7YXR0ck5h
bWV9QXR0ckdldHRlckN1c3RvbShuYW1lLCBpbmZvKTtcbiIpOworICAgIH0gZWxzZSB7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgcmV0dXJuICR7aW50ZXJmYWNlTmFtZX1W
OEludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7XG4iKTsKKyAgICB9
CisgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIn1cblxuIik7CisgICAgcHVzaChAaW1wbENv
bnRlbnREZWNscywgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuXG4iKSBpZiAkY29u
ZGl0aW9uYWxTdHJpbmc7Cit9CisKIHN1YiBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIKIHsKICAg
ICBteSAkYXR0cmlidXRlID0gc2hpZnQ7CkBAIC04ODEsMzIgKzkxMSwyMiBAQCBzdWIgR2VuZXJh
dGVOb3JtYWxBdHRyR2V0dGVyCiAgICAgbXkgJGF0dHJFeHQgPSAkYXR0cmlidXRlLT5zaWduYXR1
cmUtPmV4dGVuZGVkQXR0cmlidXRlczsKICAgICBteSAkYXR0ck5hbWUgPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPm5hbWU7CiAgICAgbXkgJGF0dHJUeXBlID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT50eXBlOwotICAgICRjb2RlR2VuZXJhdG9yLT5Bc3NlcnROb3RTZXF1ZW5jZVR5cGUoJGF0dHJU
eXBlKTsKLSAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRh
dHRyaWJ1dGUtPnNpZ25hdHVyZSwgLTEpOwogCisgICAgaWYgKEhhc0N1c3RvbUdldHRlcigkYXR0
ckV4dCkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICRjb2RlR2VuZXJhdG9yLT5B
c3NlcnROb3RTZXF1ZW5jZVR5cGUoJGF0dHJUeXBlKTsKICAgICBteSAkZ2V0dGVyU3RyaW5nVXNl
c0ltcCA9ICRpbnRlcmZhY2VOYW1lIG5lICJTVkdOdW1iZXIiOworICAgIG15ICRuYXRpdmVUeXBl
ID0gR2V0TmF0aXZlVHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLCAtMSk7
CiAgICAgbXkgJHN2Z05hdGl2ZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHVHlwZU5lZWRp
bmdUZWFyT2ZmKCRpbnRlcmZhY2VOYW1lKTsKIAotICAgICMgR2V0dGVyCiAgICAgbXkgJGNvbmRp
dGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmco
JGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiI2lm
ICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLQogICAg
IHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gJHthdHRyTmFtZX1BdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogRU5ECi0gICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgR2VuZXJhdGVGZWF0dXJlT2JzZXJ2YXRpb24oJGF0dHJFeHQtPnsiVjhNZWFzdXJl
QXMifSkpOwotCi0gICAgaWYgKEhhc0N1c3RvbUdldHRlcigkYXR0ckV4dCkpIHsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgPDxFTkQpOwotICAgICAgICByZXR1cm4gJHt2OEludGVy
ZmFjZU5hbWV9Ojoke2F0dHJOYW1lfUF0dHJHZXR0ZXJDdXN0b20obmFtZSwgaW5mbyk7Ci19Ci0K
LUVORAotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiI2VuZGlmIC8vICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQogICAgIGlmICgkc3ZnTmF0aXZlVHlwZSkgewogICAgICAgICBteSAkc3ZnV3Jh
cHBlZE5hdGl2ZVR5cGUgPSAkY29kZUdlbmVyYXRvci0+R2V0U1ZHV3JhcHBlZFR5cGVOZWVkaW5n
VGVhck9mZigkaW50ZXJmYWNlTmFtZSk7CiAgICAgICAgIGlmICgkc3ZnV3JhcHBlZE5hdGl2ZVR5
cGUgPX4gL0xpc3QvKSB7CkBAIC0yMzAwLDcgKzIzMjAsNyBAQCBzdWIgR2VuZXJhdGVTaW5nbGVC
YXRjaGVkQXR0cmlidXRlCiAgICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1lfVY4SW50
ZXJuYWw6OiR7aW50ZXJmYWNlTmFtZX1SZXBsYWNlYWJsZUF0dHJTZXR0ZXIiOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgICMgRGVmYXVsdCBHZXR0ZXIgYW5kIFNldHRlcgotICAgICAgICAkZ2V0dGVy
ID0gIiR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke2F0dHJOYW1lfUF0dHJHZXR0ZXIiOwor
ICAgICAgICAkZ2V0dGVyID0gIiR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke2F0dHJOYW1l
fUF0dHJHZXR0ZXJDYWxsYmFjayI7CiAgICAgICAgICRzZXR0ZXIgPSAiJHtpbnRlcmZhY2VOYW1l
fVY4SW50ZXJuYWw6OiR7YXR0ck5hbWV9QXR0clNldHRlciI7CiAKICAgICAgICAgaWYgKCFIYXND
dXN0b21TZXR0ZXIoJGF0dHJFeHQpICYmICRhdHRyRXh0LT57IlJlcGxhY2VhYmxlIn0pIHsKQEAg
LTIzOTEsNyArMjQxMSw3IEBAIHN1YiBHZW5lcmF0ZU5vblN0YW5kYXJkRnVuY3Rpb24KICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAogICAgIC8vICRjb21tZW50SW5mbwotICAg
ICR7Y29uZGl0aW9uYWx9JHRlbXBsYXRlLT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXdTeW1i
b2woIiRuYW1lIiksICR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9QXR0ckdldHRl
ciwgJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7aW50ZXJmYWNlTmFtZX1Eb21haW5TYWZl
RnVuY3Rpb25TZXR0ZXIsIHY4VW5kZWZpbmVkKCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BlcnR5X2F0dHJpYnV0ZXMpKTsKKyAgICAk
e2NvbmRpdGlvbmFsfSR0ZW1wbGF0ZS0+U2V0QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3U3ltYm9s
KCIkbmFtZSIpLCAke2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHtuYW1lfUF0dHJHZXR0ZXJD
YWxsYmFjaywgJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7aW50ZXJmYWNlTmFtZX1Eb21h
aW5TYWZlRnVuY3Rpb25TZXR0ZXIsIHY4VW5kZWZpbmVkKCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4oJHByb3BlcnR5X2F0dHJpYnV0ZXMpKTsK
IEVORAogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMjcwNyw2ICsyNzI3LDcgQEAgRU5ECiAg
ICAgICAgIH0KIAogICAgICAgICBHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIoJGF0dHJpYnV0ZSwg
JGludGVyZmFjZSk7CisgICAgICAgIEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlckNhbGxiYWNrKCRh
dHRyaWJ1dGUsICRpbnRlcmZhY2UpOwogCiAgICAgICAgIGlmICghSGFzQ3VzdG9tU2V0dGVyKCRh
dHRyRXh0KSAmJiAkYXR0ckV4dC0+eyJSZXBsYWNlYWJsZSJ9KSB7CiAgICAgICAgICAgICAkaGFz
UmVwbGFjZWFibGUgPSAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCBm
MTI1MjhiMjE3YjYwZDk0YmJmOTI0NmE3OWYxMmJkMzcxNWEyOWM5Li45Y2IyODBhMjYyYTNiZGMz
NzU0MDNjMzBkNjFhZTZhZjMzOGYyNzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0
LmNwcApAQCAtNzcsNiArNzcsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGNp
dGluZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogICAgIHJldHVy
biB2OEludGVnZXIoaW1wLT5leGNpdGluZ0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQog
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2l0aW5nQXR0ckF0dHJHZXR0ZXJDYWxs
YmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYg
aW5mbykKK3sKKyAgICByZXR1cm4gVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4Y2l0
aW5nQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZXhjaXRpbmdGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQpAQCAtMTIxLDYgKzEyNiwxMSBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvc3RNZXNzYWdlQXR0ckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgYwogICAgIHJldHVybiBwcml2YXRlVGVtcGxhdGUtPkdldEZ1
bmN0aW9uKCk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9zdE1lc3NhZ2VB
dHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RBY3RpdmVET01PYmplY3RWOElu
dGVybmFsOjpwb3N0TWVzc2FnZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2
b2lkIFRlc3RBY3RpdmVET01PYmplY3REb21haW5TYWZlRnVuY3Rpb25TZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVy
ID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhUZXN0QWN0aXZl
RE9NT2JqZWN0OjpHZXRUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSkpOwpAQCAtMTM3LDcgKzE0
Nyw3IEBAIHN0YXRpYyB2b2lkIFRlc3RBY3RpdmVET01PYmplY3REb21haW5TYWZlRnVuY3Rpb25T
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZp
Z3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0QWN0aXZlRE9NT2JqZWN0QXR0cnNbXSA9
IHsKICAgICAvLyBBdHRyaWJ1dGUgJ2V4Y2l0aW5nQXR0cicgKFR5cGU6ICdyZWFkb25seSBhdHRy
aWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiZXhjaXRpbmdBdHRyIiwgVGVzdEFjdGl2ZURPTU9i
amVjdFY4SW50ZXJuYWw6OmV4Y2l0aW5nQXR0ckF0dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorICAgIHsiZXhjaXRpbmdBdHRyIiwgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4
Y2l0aW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiB9OwogCiBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVz
dEFjdGl2ZURPTU9iamVjdFRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBkZXNjLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKQEAgLTE2Miw3ICsxNzIsNyBAQCBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEFj
dGl2ZURPTU9iamVjdFRlbXBsYQogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9s
KCJleGNpdGluZ0Z1bmN0aW9uIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEFjdGl2
ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4Y2l0aW5nRnVuY3Rpb25DYWxsYmFjaywgdjhVbmRlZmlu
ZWQoKSwgZXhjaXRpbmdGdW5jdGlvblNpZ25hdHVyZSkpOwogCiAgICAgLy8gRnVuY3Rpb24gJ3Bv
c3RNZXNzYWdlJyAoRXh0QXR0cjogJ0RvTm90Q2hlY2tTZWN1cml0eScpCi0gICAgcHJvdG8tPlNl
dEFjY2Vzc29yKHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgicG9zdE1lc3NhZ2UiKSwgVGVzdEFjdGl2
ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RNZXNzYWdlQXR0ckdldHRlciwgVGVzdEFjdGl2ZURP
TU9iamVjdFY4SW50ZXJuYWw6OlRlc3RBY3RpdmVET01PYmplY3REb21haW5TYWZlRnVuY3Rpb25T
ZXR0ZXIsIHY4VW5kZWZpbmVkKCksIHY4OjpBTExfQ0FOX1JFQUQsIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6OkRvbnREZWxldGUpKTsKKyAgICBwcm90by0+U2V0QWNjZXNz
b3Iodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJwb3N0TWVzc2FnZSIpLCBUZXN0QWN0aXZlRE9NT2Jq
ZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RBY3RpdmVE
T01PYmplY3RWOEludGVybmFsOjpUZXN0QWN0aXZlRE9NT2JqZWN0RG9tYWluU2FmZUZ1bmN0aW9u
U2V0dGVyLCB2OFVuZGVmaW5lZCgpLCB2ODo6QUxMX0NBTl9SRUFELCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlKSk7CiAKICAgICAvLyBDdXN0b20gdG9T
dHJpbmcgdGVtcGxhdGUKICAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0
cmluZyIpLCBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5nVGVtcGxhdGUoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYzc1Y2RiYTI5MTQyNTlk
NGE4YThlYzUyNmZkODE1OWRkMDliZTA0OC4uYmZlNjEyZWNhOWQxOGFhZjA1ZWQ5MWM3MTE2OWU2
MDgzYTNmNzA3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtNzYs
MTkgKzc2LDI5IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cjFBdHRyR2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2CiAgICAgcmV0dXJuIHY4U3RyaW5n
KGltcC0+YXR0cjEoKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRsZSk7CiB9
CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2so
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgcmV0dXJuIFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjFBdHRy
R2V0dGVyKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0
dHIyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wID0gVjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvcjo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4
U3RyaW5nKGltcC0+YXR0cjIoKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRs
ZSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cjJBdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0
cjJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0RXZlbnRD
b25zdHJ1Y3RvclY4SW50ZXJuYWwKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6
QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RFdmVudENvbnN0cnVjdG9yQXR0cnNbXSA9IHsKICAgICAv
LyBBdHRyaWJ1dGUgJ2F0dHIxJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjog
JycpCi0gICAgeyJhdHRyMSIsIFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjFB
dHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250
cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6
Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImF0dHIxIiwgVGVzdEV2ZW50Q29u
c3RydWN0b3JWOEludGVybmFsOjphdHRyMUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdhdHRyMicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1
dGUnIEV4dEF0dHI6ICdJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3RvcicpCi0gICAgeyJhdHRy
MiIsIFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjJBdHRyR2V0dGVyLCAwLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKKyAgICB7ImF0dHIyIiwgVGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVy
bmFsOjphdHRyMkF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiB9OwogCiB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcApp
bmRleCA1ZWIxOTczNmYwZTE5NmIzOGUyOWUyZTg2YjJmZWFlOGI4N2Y4Nzk0Li5kODZkY2Q5Yzk1
N2VjMzE5Njc4NDEyMzYyYzVlNzMxMGVmNTM0ZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcApA
QCAtNzUsMTEgKzc1LDE2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmFtZUF0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4CiAgICAgcmV0dXJuIHY4
U3RyaW5nKGltcC0+bmFtZSgpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFuZGxl
KTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuYW1lQXR0ckdldHRlckNhbGxi
YWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIHJldHVybiBUZXN0RXhjZXB0aW9uVjhJbnRlcm5hbDo6bmFtZUF0dHJHZXR0
ZXIobmFtZSwgaW5mbyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RFeGNlcHRpb25WOEludGVy
bmFsCiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUg
VjhUZXN0RXhjZXB0aW9uQXR0cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1dGUgJ25hbWUnIChUeXBl
OiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7Im5hbWUiLCBUZXN0RXhj
ZXB0aW9uVjhJbnRlcm5hbDo6bmFtZUF0dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAg
IHsibmFtZSIsIFRlc3RFeGNlcHRpb25WOEludGVybmFsOjpuYW1lQXR0ckdldHRlckNhbGxiYWNr
LCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKIH07CiAKIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUodjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBmOWYwZGFiZWY2YjY4MGZmOTcyNDFiZmVhZDFhMWZj
Y2UxOTZiMDFmLi43M2NjN2EzMTJlNTMwYzk5YjI0MDU3MDZmMmM2MDdiNmZkZmRlZjU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0SW50ZXJmYWNlLmNwcApAQCAtODgsNiArODgsMTUgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHJBdHRyR2V0dGVyKHY4OjpM
b2NhbDwKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQog
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5
QXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdEludGVyZmFjZVY4SW50
ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5m
byk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRp
b24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQor
CiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0YXRpY0F0dHJBdHRy
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIHJldHVybiB2OFN0cmluZyhUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVt
ZW50YWxTdGF0aWNBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUp
OwpAQCAtOTcsNiArMTA2LDE1IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxl
bWVudGFsU3RhdGljQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpCiAKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIAorc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdGF0aWNBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIHJldHVybiBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGlj
QXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKworI2lmIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKQorCiBzdGF0aWMgdm9pZCBzdXBwbGVtZW50YWxTdGF0aWNB
dHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVjhUUllD
QVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRV9WT0lEKFY4U3RyaW5nUmVzb3VyY2U8PiwgdiwgdmFs
dWUpOwpAQCAtMTE4LDYgKzEzNiwxNSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1
cHBsZW1lbnRhbFN0cjFBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsU3RyMUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICByZXR1cm4gVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjFBdHRy
R2V0dGVyKG5hbWUsIGluZm8pOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8
fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50
YWxTdHIyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRl
cmZhY2U6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTI4LDYgKzE1NSwxNSBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjJBdHRyR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYQogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUo
Q29uZGl0aW9uMTIpCiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFs
U3RyMkF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdEludGVyZmFjZVY4SW50
ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCisjZW5k
aWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCisKKyNpZiBF
TkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKKwogc3RhdGljIHZvaWQg
c3VwcGxlbWVudGFsU3RyMkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewogICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVyZmFjZTo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CkBAIC0xNDAsOSArMTc2LDkgQEAgc3RhdGljIHZvaWQgc3VwcGxlbWVudGFs
U3RyMkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODoK
IAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogCi1zdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbFN0cjNBdHRyR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxTdHIzQXR0ckdldHRlckNhbGxi
YWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQogewotICAgICAgICByZXR1cm4gVjhUZXN0SW50ZXJmYWNlOjpzdXBwbGVtZW50YWxTdHIz
QXR0ckdldHRlckN1c3RvbShuYW1lLCBpbmZvKTsKKyAgICByZXR1cm4gVjhUZXN0SW50ZXJmYWNl
OjpzdXBwbGVtZW50YWxTdHIzQXR0ckdldHRlckN1c3RvbShuYW1lLCBpbmZvKTsKIH0KIAogI2Vu
ZGlmIC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQpAQCAtMTY4
LDYgKzIwNCwxNSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE5v
ZGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogCiAjaWYgRU5BQkxFKENvbmRp
dGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gc3VwcGxlbWVudGFsTm9kZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4g
VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyR2V0dGVyKG5hbWUs
IGluZm8pOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29u
ZGl0aW9uMTIpCisKKyNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKKwogc3RhdGljIHZvaWQgc3VwcGxlbWVudGFsTm9kZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RJbnRlcmZhY2UqIGltcCA9IFY4VGVzdEludGVy
ZmFjZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0yMzYsMjcgKzI4MSwyNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDRDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcgogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0
Y2hlZEF0dHJpYnV0ZSBWOFRlc3RJbnRlcmZhY2VBdHRyc1tdID0gewogI2lmIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIC8vIEF0dHJpYnV0ZSAnc3VwcGxl
bWVudGFsU3RhdGljUmVhZE9ubHlBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0
QXR0cjogJ0NvbmRpdGlvbmFsIEltcGxlbWVudGVkQnknKQotICAgIHsic3VwcGxlbWVudGFsU3Rh
dGljUmVhZE9ubHlBdHRyIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0
YXRpY1JlYWRPbmx5QXR0ckF0dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3Vw
cGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1
cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTIpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAg
ICAgLy8gQXR0cmlidXRlICdzdXBwbGVtZW50YWxTdGF0aWNBdHRyJyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFsIEltcGxlbWVudGVkQnknKQotICAgIHsic3VwcGxlbWVu
dGFsU3RhdGljQXR0ciIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdGF0
aWNBdHRyQXR0ckdldHRlciwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0
YXRpY0F0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InN1cHBsZW1lbnRhbFN0
YXRpY0F0dHIiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljQXR0
ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRh
bFN0YXRpY0F0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICAvLyBBdHRyaWJ1dGUgJ3N1cHBsZW1lbnRh
bFN0cjEnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwg
SW1wbGVtZW50ZWRCeScpCi0gICAgeyJzdXBwbGVtZW50YWxTdHIxIiwgVGVzdEludGVyZmFjZVY4
SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjFBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
KyAgICB7InN1cHBsZW1lbnRhbFN0cjEiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxl
bWVudGFsU3RyMUF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAjZW5kaWYg
Ly8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgLy8gQXR0cmlidXRlICdz
dXBwbGVtZW50YWxTdHIyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFs
IEltcGxlbWVudGVkQnknKQotICAgIHsic3VwcGxlbWVudGFsU3RyMiIsIFRlc3RJbnRlcmZhY2VW
OEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIyQXR0ckdldHRlciwgVGVzdEludGVyZmFjZVY4SW50
ZXJuYWw6OnN1cHBsZW1lbnRhbFN0cjJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7
InN1cHBsZW1lbnRhbFN0cjIiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFs
U3RyMkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1l
bnRhbFN0cjJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEp
IHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICAvLyBBdHRyaWJ1dGUgJ3N1cHBsZW1lbnRhbFN0
cjMnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ3VzdG9tU2V0dGVyIEN1c3RvbUdldHRl
ciBDb25kaXRpb25hbCBJbXBsZW1lbnRlZEJ5JykKLSAgICB7InN1cHBsZW1lbnRhbFN0cjMiLCBU
ZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RyM0F0dHJHZXR0ZXIsIFRlc3RJ
bnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdHIzQXR0clNldHRlciwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJzdXBwbGVtZW50YWxTdHIzIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6
OnN1cHBsZW1lbnRhbFN0cjNBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RJbnRlcmZhY2VWOEludGVy
bmFsOjpzdXBwbGVtZW50YWxTdHIzQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAjZW5kaWYg
Ly8gRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAjaWYgRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgLy8gQXR0cmlidXRlICdz
dXBwbGVtZW50YWxOb2RlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFs
IEltcGxlbWVudGVkQnknKQotICAgIHsic3VwcGxlbWVudGFsTm9kZSIsIFRlc3RJbnRlcmZhY2VW
OEludGVybmFsOjpzdXBwbGVtZW50YWxOb2RlQXR0ckdldHRlciwgVGVzdEludGVyZmFjZVY4SW50
ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7
InN1cHBsZW1lbnRhbE5vZGUiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFs
Tm9kZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1l
bnRhbE5vZGVBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggMjkz
MmVkYjVkNzEwMmY5OWFmOTFkYTg4ZmU3ZWU1OWQ5YzUzNGUwZS4uZjY0Yzk1ZWNiYzQ3NTdlMmU0
YjFhNjE2MDFmZTc1NGIxYzAyNDIxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTExOCwxMiArMTE4LDIyIEBA
IHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiAgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPnJlYWRP
bmx5TG9uZ0F0dHIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
cmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seUxvbmdBdHRyQXR0ckdldHRlcihuYW1l
LCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWFkT25seVN0cmlu
Z0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+cmVhZE9ubHlTdHJp
bmdBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUpOwogfQogCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlYWRPbmx5U3RyaW5nQXR0ckF0dHJHZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5U3RyaW5n
QXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gcmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEzNywxNiArMTQ3LDMx
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5VGVzdE9i
akF0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHN0YXRpY1JlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHJldHVybiB2
OEludGVnZXIoVGVzdE9iajo6c3RhdGljUmVhZE9ubHlMb25nQXR0cigpLCBpbmZvLkdldElzb2xh
dGUoKSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RhdGljUmVhZE9ubHlM
b25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJu
YWw6OnN0YXRpY1JlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCiBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0YXRpY1N0cmluZ0F0dHJBdHRyR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQog
ewogICAgIHJldHVybiB2OFN0cmluZyhUZXN0T2JqOjpzdGF0aWNTdHJpbmdBdHRyKCksIGluZm8u
R2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUpOwogfQogCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHN0YXRpY1N0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
cmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNTdHJpbmdBdHRyQXR0ckdldHRlcihuYW1l
LCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgc3RhdGljU3RyaW5nQXR0ckF0dHJTZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5H
UkVTT1VSQ0VfVk9JRChWOFN0cmluZ1Jlc291cmNlPD4sIHYsIHZhbHVlKTsKQEAgLTE2MCw2ICsx
ODUsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnVtQXR0ckF0dHJHZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnMKICAgICByZXR1cm4gdjhTdHJpbmcoaW1w
LT5lbnVtQXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFuZGxlKTsKIH0K
IAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbnVtQXR0ckF0dHJHZXR0ZXJDYWxsYmFj
ayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVudW1BdHRyQXR0ckdldHRlcihu
YW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgZW51bUF0dHJBdHRyU2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMTc3LDYgKzIwNywxMSBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHNob3J0QXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbgogICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5zaG9ydEF0dHIoKSwgaW5mby5H
ZXRJc29sYXRlKCkpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNob3J0QXR0
ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnNo
b3J0QXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHNob3J0QXR0
ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0xOTEsNiArMjI2
LDExIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdW5zaWduZWRTaG9ydEF0dHJBdHRy
R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAt
PnVuc2lnbmVkU2hvcnRBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB1bnNpZ25lZFNob3J0QXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkU2hvcnRBdHRyQXR0ckdl
dHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgdW5zaWduZWRTaG9ydEF0dHJBdHRy
U2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2
YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAg
PSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMjA1LDYgKzI0NSwxMSBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGxvbmdBdHRyQXR0ckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29ucwogICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5sb25n
QXR0cigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gbG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpW
OEludGVybmFsOjpsb25nQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2
b2lkIGxvbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6Okxv
Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAg
LTIxOSw2ICsyNjQsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBsb25nTG9uZ0F0
dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLAogICAgIHJldHVybiB2ODo6
TnVtYmVyOjpOZXcoc3RhdGljX2Nhc3Q8ZG91YmxlPihpbXAtPmxvbmdMb25nQXR0cigpKSk7CiB9
CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbG9uZ0xvbmdBdHRyQXR0ckdldHRlckNh
bGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ0xvbmdBdHRyQXR0
ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgbG9uZ0xvbmdBdHRyQXR0clNl
dHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs
dWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0g
VjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTIzMyw2ICsyODMsMTEgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmcKICAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KHN0YXRp
Y19jYXN0PGRvdWJsZT4oaW1wLT51bnNpZ25lZExvbmdMb25nQXR0cigpKSk7CiB9CiAKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZExvbmdMb25n
QXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHVuc2lnbmVkTG9u
Z0xvbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAg
VGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTI0
Nyw2ICszMDIsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyQXR0
ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY28KICAgICByZXR1cm4gdjhTdHJp
bmcoaW1wLT5zdHJpbmdBdHRyKCksIGluZm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5k
bGUpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0F0dHJBdHRyR2V0
dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRy
QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgc3RyaW5nQXR0ckF0dHJT
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0yNTcsMTEgKzMxNywxNiBA
QCBzdGF0aWMgdm9pZCBzdHJpbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRlc3RPYmpBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKLSAgICBGZWF0dXJlT2JzZXJ2ZXI6Om9ic2VydmUo
YWN0aXZlRE9NV2luZG93KEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSksIEZlYXR1cmVPYnNlcnZl
cjo6VGVzdEZlYXR1cmUpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcC0+dGVzdE9iakF0dHIoKSwg
aW5mbywgaW1wKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0ZXN0T2JqQXR0
ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBGZWF0dXJlT2JzZXJ2ZXI6Om9ic2VydmUoYWN0
aXZlRE9NV2luZG93KEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSksIEZlYXR1cmVPYnNlcnZlcjo6
VGVzdEZlYXR1cmUpOworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9iakF0dHJB
dHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0T2JqQXR0ckF0dHJT
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZh
bHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIEZlYXR1cmVPYnNlcnZl
cjo6b2JzZXJ2ZShhY3RpdmVET01XaW5kb3coQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpKSwgRmVh
dHVyZU9ic2VydmVyOjpUZXN0RmVhdHVyZSk7CkBAIC0yNzcsNiArMzQyLDExIEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gWE1MT2JqQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvCiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcC0+eG1sT2JqQXR0cigpLCBp
bmZvLCBpbXApOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFhNTE9iakF0dHJB
dHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpYTUxP
YmpBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgWE1MT2JqQXR0
ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0yOTEsNiArMzYx
LDExIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3JlYXRlQXR0ckdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3QKICAgICByZXR1cm4gdjhCb29sZWFuKGltcC0+
aXNDcmVhdGUoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGNyZWF0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9i
alY4SW50ZXJuYWw6OmNyZWF0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2
b2lkIGNyZWF0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0z
MDUsNiArMzgwLDExIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkU3Ry
aW5nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIHY4U3Ry
aW5nKGltcC0+ZmFzdEdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHN0
cmluZ2F0dHJBdHRyKSwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRsZSk7CiB9
CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJH
ZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3Rl
ZFN0cmluZ0F0dHJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCByZWZs
ZWN0ZWRTdHJpbmdBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
QEAgLTMxOSw2ICszOTksMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0
ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW4KICAgICByZXR1cm4g
djhJbnRlZ2VyKGltcC0+Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpy
ZWZsZWN0ZWRpbnRlZ3JhbGF0dHJBdHRyKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZEludGVncmFsQXR0ckF0dHJHZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEludGVn
cmFsQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3Rl
ZEludGVncmFsQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpM
b2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBA
IC0zMzMsNiArNDE4LDExIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVk
VW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2CiAgICAgcmV0dXJuIHY4
VW5zaWduZWRJbnRlZ2VyKHN0ZDo6bWF4KDAsIGltcC0+Z2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2Vi
Q29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1bnNpZ25lZGludGVncmFsYXR0ckF0dHIpKSwgaW5m
by5HZXRJc29sYXRlKCkpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlZmxl
Y3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVy
biBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHJBdHRyR2V0
dGVyKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCByZWZsZWN0ZWRVbnNpZ25lZEludGVn
cmFsQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0zNDcs
NiArNDM3LDExIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQm9vbGVh
bkF0dHJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiAgICAgcmV0dXJuIHY4Qm9vbGVh
bihpbXAtPmZhc3RIYXNBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRib29s
ZWFuYXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gcmVmbGVjdGVkQm9vbGVhbkF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJHZXR0
ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTM2MSw2ICs0NTYsMTEg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZsZWN0ZWRVUkxBdHRyQXR0ckdldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmEKICAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5nZXRV
UkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWR1cmxhdHRyQXR0ciksIGlu
Zm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUpOwogfQogCitzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZFVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVUkxBdHRyQXR0ckdldHRlcihu
YW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgcmVmbGVjdGVkVVJMQXR0ckF0dHJTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVz
dE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0zNzUsNiArNDc1LDExIEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+ZmFzdEdldEF0dHJp
YnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRTdHJpbmdBdHRyQXR0ciksIGlu
Zm8uR2V0SXNvbGF0ZSgpLCBSZXR1cm5VbnNhZmVIYW5kbGUpOwogfQogCitzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdl
dHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgcmVmbGVjdGVkU3RyaW5nQXR0ckF0
dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+
IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC0zODksNiArNDk0LDEx
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxB
dHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6CiAgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPmdl
dEludGVncmFsQXR0cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6Y3VzdG9tQ29udGVudEludGVn
cmFsQXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0ckdldHRlckNhbGxiYWNr
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tSW50ZWdy
YWxBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgcmVmbGVjdGVk
Q3VzdG9tSW50ZWdyYWxBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKQEAgLTQwMyw2ICs1MTMsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZs
ZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjoKICAgICByZXR1
cm4gdjhCb29sZWFuKGltcC0+ZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1
c3RvbUNvbnRlbnRCb29sZWFuQXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHJBdHRy
R2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0
ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2
b2lkIHJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKQEAgLTQxNyw2ICs1MzIsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiByZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0
cmkKICAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRN
TE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0
dXJuVW5zYWZlSGFuZGxlKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZWZs
ZWN0ZWRDdXN0b21VUkxBdHRyQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5m
byk7Cit9CisKIHN0YXRpYyB2b2lkIHJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyU2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNDMxLDYgKzU1MSwxMSBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHR5cGVkQXJyYXlBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZQogICAgIHJldHVybiB0b1Y4RmFzdChpbXAtPnR5cGVkQXJyYXlBdHRy
KCksIGluZm8sIGltcCk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdHlwZWRB
cnJheUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVy
bmFsOjp0eXBlZEFycmF5QXR0ckF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2
b2lkIHR5cGVkQXJyYXlBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKQEAgLTQ0OSw2ICs1NzQsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRy
V2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHIKICAgICByZXR1
cm4gdjhJbnRlZ2VyKHYsIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAorc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjayh2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgYXR0cldpdGhHZXR0ZXJF
eGNlcHRpb25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNDYz
LDYgKzU5MywxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJXaXRoU2V0dGVy
RXhjZXB0aW9uQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cgogICAgIHJldHVybiB2OEludGVn
ZXIoaW1wLT5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9
CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25B
dHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjphdHRy
V2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2
b2lkIGF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZv
LkhvbGRlcigpKTsKQEAgLTQ4NCw2ICs2MTksMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIodjg6OkxvY2FsPHYK
ICAgICByZXR1cm4gdjhTdHJpbmcodiwgaW5mby5HZXRJc29sYXRlKCksIFJldHVyblVuc2FmZUhh
bmRsZSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhH
ZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpW
OEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIobmFtZSwg
aW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1w
ID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTQ5OCw2ICs2MzgsMTEg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbkF0dHJHZXR0ZXIodjg6OkxvY2FsPHYKICAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5zdHJp
bmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5z
YWZlSGFuZGxlKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcihu
YW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgc3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRp
b25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNTA5LDkgKzY1
NCw5IEBAIHN0YXRpYyB2b2lkIHN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRl
cih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwKICAgICByZXR1cm47CiB9CiAKLXN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VzdG9tQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCitzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGN1c3RvbUF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7Ci0gICAgICAg
IHJldHVybiBWOFRlc3RPYmo6OmN1c3RvbUF0dHJBdHRyR2V0dGVyQ3VzdG9tKG5hbWUsIGluZm8p
OworICAgIHJldHVybiBWOFRlc3RPYmo6OmN1c3RvbUF0dHJBdHRyR2V0dGVyQ3VzdG9tKG5hbWUs
IGluZm8pOwogfQogCiBzdGF0aWMgdm9pZCBjdXN0b21BdHRyQXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCkBAIC01MjksNiArNjc0LDExIEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlcih2ODo6TG9jYWw8
djg6OlN0CiAgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0
ZSgmc3RhdGUpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQorewor
ICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0
ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgd2l0aFNjcmlwdFN0YXRlQXR0
cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTU1MCw2
ICs3MDAsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJHZXR0ZXIodjg6OkwKICAgICByZXR1cm4gdG9WOEZhc3Qo
aW1wLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShzY3JpcHRDb250ZXh0KSwg
aW5mbywgaW1wKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1
cm4gVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRl
QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwpAQCAtNTc1LDYgKzczMCwxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdp
dGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIodjg6OkxvY2FsPAogICAgIHJl
dHVybiB0b1Y4RmFzdCh2LnJlbGVhc2UoKSwgaW5mbywgaW1wKTsKIH0KIAorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVy
Q2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3Nvcklu
Zm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9p
ZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwpAQCAtNjAwLDYgKzc2MCwxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdl
dHRlcgogICAgIHJldHVybiB0b1Y4RmFzdCh2LnJlbGVhc2UoKSwgaW5mbywgaW1wKTsKIH0KIAor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0
dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0ckdl
dHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5m
bykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVy
KCkpOwpAQCAtNjIwLDYgKzc4NSwxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdAogICAgIHJl
dHVybiB0b1Y4RmFzdChpbXAtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGUoJnN0YXRlLCBzY3JpcHRDb250ZXh0KSwgaW5mbywgaW1wKTsKIH0KIAorc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0
T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNjUyLDYgKzgyMiwxMSBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYQogICAgIHJldHVybiB0b1Y4RmFzdCh2LnJlbGVhc2UoKSwgaW5mbywgaW1w
KTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9
CisKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpA
QCAtNjc4LDYgKzg1MywxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQQogICAgIHJldHVybiB0
b1Y4RmFzdChpbXAtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRo
U3BhY2VzQXR0cmlidXRlKCZzdGF0ZSwgc2NyaXB0Q29udGV4dCksIGluZm8sIGltcCk7CiB9CiAK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7Cisg
ICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9
CisKIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVX
aXRoU3BhY2VzQXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKQEAgLTY5OSw2ICs4NzksMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRo
U2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRlcigKICAgICByZXR1
cm4gdG9WOEZhc3QoaW1wLT53aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
KCksIGluZm8sIGltcCk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNj
cmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sK
KyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxs
U3RhY2tBdHRyaWJ1dGVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCB3
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0clNldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTcxOSw2ICs5MDQsMTUgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25hbEF0dHIxQXR0ckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmEKIAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFsQXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAg
cmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIxQXR0ckdldHRlcihuYW1l
LCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDb25kaXRpb24xKQorCisjaWYgRU5BQkxF
KENvbmRpdGlvbjEpCisKIHN0YXRpYyB2b2lkIGNvbmRpdGlvbmFsQXR0cjFBdHRyU2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtNzQxLDYgKzkzNSwxNSBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFsQXR0cjJBdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYQogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJMRShDb25k
aXRpb24yKQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbmRpdGlvbmFsQXR0cjJB
dHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpjb25k
aXRpb25hbEF0dHIyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKworI2VuZGlmIC8vIEVOQUJM
RShDb25kaXRpb24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKKworI2lmIEVOQUJMRShDb25kaXRp
b24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKKwogc3RhdGljIHZvaWQgY29uZGl0aW9uYWxBdHRy
MkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC03NjMsNiArOTY2
LDE1IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxBdHRyM0F0dHJH
ZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjIpCiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29u
ZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjNBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorCisjaWYg
RU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQorCiBzdGF0aWMgdm9pZCBj
b25kaXRpb25hbEF0dHIzQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7
CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsK
QEAgLTc3OSwxOCArOTkxLDMzIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FjaGVk
QXR0cmlidXRlMUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiAgICAgcmV0dXJu
IGltcC0+Y2FjaGVkQXR0cmlidXRlMSgpLnY4VmFsdWUoKTsKIH0KIAorc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBjYWNoZWRBdHRyaWJ1dGUxQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6Y2FjaGVkQXR0cmlidXRlMUF0dHJHZXR0ZXIobmFt
ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2FjaGVkQXR0cmli
dXRlMkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKICAgICByZXR1cm4gaW1wLT5jYWNoZWRBdHRyaWJ1dGUyKCkudjhW
YWx1ZSgpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZEF0dHJpYnV0
ZTJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpj
YWNoZWRBdHRyaWJ1dGUyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhbnlBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIGlt
cC0+YW55QXR0cmlidXRlKCkudjhWYWx1ZSgpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFueUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmlu
Zz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVz
dE9ialY4SW50ZXJuYWw6OmFueUF0dHJpYnV0ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisK
IHN0YXRpYyB2b2lkIGFueUF0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5I
b2xkZXIoKSk7CkBAIC04MDUsNiArMTAzMiwxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbgog
ICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5lbmFibGVkQXRSdW50aW1lQXR0cjEoKSwgaW5mby5H
ZXRJc29sYXRlKCkpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRB
dFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9
CisKIHN0YXRpYyB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC04MTksNiArMTA1MSwxMSBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbgogICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5lbmFibGVkQXRSdW50aW1lQXR0
cjIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1
cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXIobmFt
ZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4
VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC04MzMsNiArMTA3MCwxMSBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRyR2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaQogICAgIHJldHVybiB2OEludGVnZXIoaW1wLT5lbmFibGVk
UGVyQ29udGV4dEF0dHIxKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBlbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0ckdldHRlckNhbGxiYWNr
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRy
MUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGVuYWJsZWRQZXJDb250
ZXh0QXR0cjFBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8
djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBU
ZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtODQ3
LDYgKzEwODksMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkUGVyQ29u
dGV4dEF0dHIyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmkKICAgICByZXR1cm4gdjhJbnRl
Z2VyKGltcC0+ZW5hYmxlZFBlckNvbnRleHRBdHRyMigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9
CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZFBlckNvbnRleHRBdHRyMkF0
dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJs
ZWRQZXJDb250ZXh0QXR0cjJBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9p
ZCBlbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhv
bGRlcigpKTsKQEAgLTg2MSw2ICsxMTA4LDExIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gZmxvYXRBcnJheUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvCiAg
ICAgcmV0dXJuIHY4QXJyYXkoaW1wLT5mbG9hdEFycmF5KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsK
IH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmbG9hdEFycmF5QXR0ckdldHRlckNh
bGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZv
JiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJH
ZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGZsb2F0QXJyYXlBdHRyU2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwg
Y29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtODc1LDYgKzExMjcsMTEgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBkb3VibGVBcnJheUF0dHJHZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIGMKICAgICByZXR1cm4gdjhBcnJheShpbXAtPmRvdWJsZUFycmF5
KCksIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBkb3VibGVBcnJheUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4
SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGlj
IHZvaWQgZG91YmxlQXJyYXlBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwpAQCAtODkyLDEyICsxMTQ5LDIyIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29u
dGVudERvY3VtZW50QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAgICAgcmV0
dXJuIHRvVjhGYXN0KGltcC0+Y29udGVudERvY3VtZW50KCksIGluZm8sIGltcCk7CiB9CiAKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udGVudERvY3VtZW50QXR0ckdldHRlckNhbGxi
YWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBp
bmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6Y29udGVudERvY3VtZW50QXR0
ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBt
dXRhYmxlUG9pbnRBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHRvVjhGYXN0KFdURjo6Z2V0UHRy
KFNWR1N0YXRpY1Byb3BlcnR5VGVhck9mZjxUZXN0T2JqLCBGbG9hdFBvaW50Pjo6Y3JlYXRlKGlt
cCwgaW1wLT5tdXRhYmxlUG9pbnQoKSwgJlRlc3RPYmo6OnVwZGF0ZU11dGFibGVQb2ludCkpLCBp
bmZvLCBpbXApOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG11dGFibGVQb2lu
dEF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6Om11
dGFibGVQb2ludEF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIG11dGFi
bGVQb2ludEF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CkBAIC05MTIs
NiArMTE3OSwxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGltbXV0YWJsZVBvaW50
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZQogICAgIHJldHVybiB0b1Y4RmFz
dChXVEY6OmdldFB0cihTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD46OmNyZWF0ZShpbXAt
PmltbXV0YWJsZVBvaW50KCkpKSwgaW5mbywgaW1wKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBpbW11dGFibGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1
cm4gVGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0ckdldHRlcihuYW1lLCBpbmZv
KTsKK30KKwogc3RhdGljIHZvaWQgaW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtOTI2LDYgKzExOTgsMTEgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzdHJhd2JlcnJ5QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgY28KICAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+Ymx1ZWJlcnJ5KCksIGluZm8uR2V0
SXNvbGF0ZSgpKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJhd2JlcnJ5
QXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5hbDo6c3Ry
YXdiZXJyeUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIHN0cmF3YmVy
cnlBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtOTQwLDYgKzEy
MTcsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpY3RGbG9hdEF0dHJHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGMKICAgICByZXR1cm4gdjg6Ok51bWJlcjo6
TmV3KGltcC0+c3RyaWN0RmxvYXQoKSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gc3RyaWN0RmxvYXRBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpW
OEludGVybmFsOjpzdHJpY3RGbG9hdEF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRp
YyB2b2lkIHN0cmljdEZsb2F0QXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
CiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigp
KTsKQEAgLTk1NCwxMiArMTIzNiwyMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRl
c2NyaXB0aW9uQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgYwogICAgIHJl
dHVybiB2OEludGVnZXIoaW1wLT5kZXNjcmlwdGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiB9
CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGVzY3JpcHRpb25BdHRyR2V0dGVyQ2Fs
bGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
IGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RPYmpWOEludGVybmFsOjpkZXNjcmlwdGlvbkF0dHJH
ZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaWRB
dHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4SW50ZWdlcihpbXAtPmlkKCksIGluZm8uR2V0SXNv
bGF0ZSgpKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpZEF0dHJHZXR0ZXJD
YWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OmlkQXR0ckdldHRlcihu
YW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgaWRBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZl
KGluZm8uSG9sZGVyKCkpOwpAQCAtOTc0LDEyICsxMjY2LDIyIEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gaGFzaEF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4CiAgICAgcmV0dXJuIHY4U3RyaW5nKGltcC0+aGFzaCgpLCBpbmZvLkdldElzb2xhdGUo
KSwgUmV0dXJuVW5zYWZlSGFuZGxlKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBoYXNoQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25z
dCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0T2JqVjhJbnRlcm5h
bDo6aGFzaEF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gcmVwbGFjZWFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoq
IGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHY4
SW50ZWdlcihpbXAtPnJlcGxhY2VhYmxlQXR0cmlidXRlKCksIGluZm8uR2V0SXNvbGF0ZSgpKTsK
IH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXBsYWNlYWJsZUF0dHJpYnV0ZUF0
dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdE9ialY4SW50ZXJuYWw6OnJlcGxh
Y2VhYmxlQXR0cmlidXRlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBUZXN0T2JqQ29uc3RydWN0b3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGRhdGEgPSBpbmZvLkRhdGEoKTsKQEAgLTE4OTIsOTQgKzIxOTQsOTQg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YXJpYWRpY05vZGVNZXRob2RDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJh
dGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RPYmpBdHRyc1tdID0gewogICAgIC8vIEF0dHJp
YnV0ZSAncmVhZE9ubHlMb25nQXR0cicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0
dHI6ICcnKQotICAgIHsicmVhZE9ubHlMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWFk
T25seUxvbmdBdHRyQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWFkT25s
eUxvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRPbmx5TG9uZ0F0dHJBdHRyR2V0dGVy
Q2FsbGJhY2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVhZE9ubHlT
dHJpbmdBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAg
eyJyZWFkT25seVN0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlTdHJpbmdB
dHRyQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWFkT25seVN0cmluZ0F0
dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlTdHJpbmdBdHRyQXR0ckdldHRlckNhbGxi
YWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlYWRPbmx5VGVzdE9i
akF0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InJl
YWRPbmx5VGVzdE9iakF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVhZE9ubHlUZXN0T2JqQXR0
ckF0dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsicmVhZE9ubHlUZXN0T2JqQXR0
ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWFkT25seVRlc3RPYmpBdHRyQXR0ckdldHRlckNhbGxi
YWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0YXRpY1JlYWRPbmx5
TG9uZ0F0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7
InN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljUmVhZE9u
bHlMb25nQXR0ckF0dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3RhdGljUmVh
ZE9ubHlMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNSZWFkT25seUxvbmdBdHRy
QXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUg
J3N0YXRpY1N0cmluZ0F0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7
InN0YXRpY1N0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljU3RyaW5nQXR0ckF0
dHJHZXR0ZXIsIFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNTdHJpbmdBdHRyQXR0clNldHRlciwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCisgICAgeyJzdGF0aWNTdHJpbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJu
YWw6OnN0YXRpY1N0cmluZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFs
OjpzdGF0aWNTdHJpbmdBdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0
cmlidXRlICdUZXN0U3ViT2JqJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjog
JycpCiAgICAgeyJUZXN0U3ViT2JqIiwgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpDb25zdHJ1
Y3RvckdldHRlciwgMCwgJlY4VGVzdFN1Yk9iajo6aW5mbywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnZW51
bUF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImVudW1BdHRyIiwg
VGVzdE9ialY4SW50ZXJuYWw6OmVudW1BdHRyQXR0ckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6
OmVudW1BdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJlbnVtQXR0ciIsIFRl
c3RPYmpWOEludGVybmFsOjplbnVtQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OmVudW1BdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmli
dXRlICdzaG9ydEF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InNo
b3J0QXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzaG9ydEF0dHJBdHRyR2V0dGVyLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6c2hvcnRBdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJz
aG9ydEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c2hvcnRBdHRyQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6c2hvcnRBdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiAgICAgLy8gQXR0cmlidXRlICd1bnNpZ25lZFNob3J0QXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUn
IEV4dEF0dHI6ICcnKQotICAgIHsidW5zaWduZWRTaG9ydEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5h
bDo6dW5zaWduZWRTaG9ydEF0dHJBdHRyR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWdu
ZWRTaG9ydEF0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InVuc2lnbmVkU2hv
cnRBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkU2hvcnRBdHRyQXR0ckdldHRlckNh
bGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6dW5zaWduZWRTaG9ydEF0dHJBdHRyU2V0dGVyLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2xvbmdBdHRyJyAoVHlwZTogJ2F0dHJp
YnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJsb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjps
b25nQXR0ckF0dHJHZXR0ZXIsIFRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0dHJTZXR0ZXIs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAorICAgIHsibG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bG9u
Z0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpsb25nQXR0ckF0dHJT
ZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnbG9uZ0xvbmdBdHRyJyAo
VHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJsb25nTG9uZ0F0dHIiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6bG9uZ0xvbmdBdHRyQXR0ckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6
OmxvbmdMb25nQXR0ckF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsibG9uZ0xvbmdB
dHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywg
VGVzdE9ialY4SW50ZXJuYWw6OmxvbmdMb25nQXR0ckF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogICAgIC8vIEF0dHJpYnV0ZSAndW5zaWduZWRMb25nTG9uZ0F0dHInIChUeXBlOiAnYXR0cmli
dXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgVGVzdE9ialY4
SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlciwgVGVzdE9ialY4SW50ZXJu
YWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAg
eyJ1bnNpZ25lZExvbmdMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjp1bnNpZ25lZExvbmdM
b25nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnVuc2lnbmVkTG9u
Z0xvbmdBdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdz
dHJpbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJzdHJpbmdB
dHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJBdHRyR2V0dGVyLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6c3RyaW5nQXR0ckF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3Ry
aW5nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyQXR0ckdldHRlckNhbGxiYWNr
LCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0ckF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogICAgIC8vIEF0dHJpYnV0ZSAndGVzdE9iakF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRB
dHRyOiAnVjhNZWFzdXJlQXMnKQotICAgIHsidGVzdE9iakF0dHIiLCBUZXN0T2JqVjhJbnRlcm5h
bDo6dGVzdE9iakF0dHJBdHRyR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6dGVzdE9iakF0dHJB
dHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InRlc3RPYmpBdHRyIiwgVGVzdE9ialY4
SW50ZXJuYWw6OnRlc3RPYmpBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5h
bDo6dGVzdE9iakF0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1
dGUgJ1hNTE9iakF0dHInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7IlhN
TE9iakF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6WE1MT2JqQXR0ckF0dHJHZXR0ZXIsIFRlc3RP
YmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAg
eyJYTUxPYmpBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyR2V0dGVyQ2Fs
bGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpYTUxPYmpBdHRyQXR0clNldHRlciwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdjcmVhdGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRB
dHRyOiAnJykKLSAgICB7ImNyZWF0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpjcmVhdGVBdHRyR2V0
dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0clNldHRlciwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgeyJjcmVhdGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0ckdldHRlckNhbGxi
YWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3JlYXRlQXR0clNldHRlciwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRTdHJpbmdBdHRyJyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQotICAgIHsicmVmbGVjdGVkU3RyaW5nQXR0ciIsIFRlc3RP
YmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0ckdldHRlciwgVGVzdE9ialY4SW50
ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAg
ICB7InJlZmxlY3RlZFN0cmluZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkU3Ry
aW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0
cmluZ0F0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3Jl
ZmxlY3RlZEludGVncmFsQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0
JykKLSAgICB7InJlZmxlY3RlZEludGVncmFsQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZs
ZWN0ZWRJbnRlZ3JhbEF0dHJBdHRyR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVk
SW50ZWdyYWxBdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWZsZWN0ZWRJ
bnRlZ3JhbEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkSW50ZWdyYWxBdHRyQXR0
ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkSW50ZWdyYWxBdHRy
QXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRV
bnNpZ25lZEludGVncmFsQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0
JykKLSAgICB7InJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIiwgVGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0ckdldHRlciwgVGVzdE9ialY4SW50
ZXJuYWw6OnJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0clNldHRlciwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ciIsIFRlc3RPYmpWOElu
dGVybmFsOjpyZWZsZWN0ZWRVbnNpZ25lZEludGVncmFsQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywg
VGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyQXR0clNldHRl
ciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRCb29sZWFuQXR0
cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKLSAgICB7InJlZmxlY3Rl
ZEJvb2xlYW5BdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0
ckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0clNldHRl
ciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWZsZWN0ZWRCb29sZWFuQXR0ciIsIFRlc3RPYmpW
OEludGVybmFsOjpyZWZsZWN0ZWRCb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OnJlZmxlY3RlZEJvb2xlYW5BdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRVUkxBdHRyJyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJ1VSTCBSZWZsZWN0JykKLSAgICB7InJlZmxlY3RlZFVSTEF0dHIiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkVVJMQXR0ckF0dHJHZXR0ZXIsIFRlc3RPYmpWOEludGVy
bmFsOjpyZWZsZWN0ZWRVUkxBdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJy
ZWZsZWN0ZWRVUkxBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFVSTEF0dHJBdHRy
R2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRVUkxBdHRyQXR0clNl
dHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRTdHJpbmdB
dHRyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1JlZmxlY3QnKQotICAgIHsicmVmbGVj
dGVkU3RyaW5nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRTdHJpbmdBdHRyQXR0
ckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVy
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKKyAgICB7InJlZmxlY3RlZFN0cmluZ0F0dHIiLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6cmVmbGVjdGVkU3RyaW5nQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4
SW50ZXJuYWw6OnJlZmxlY3RlZFN0cmluZ0F0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
ICAgICAvLyBBdHRyaWJ1dGUgJ3JlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0cicgKFR5cGU6ICdh
dHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZsZWN0JykKLSAgICB7InJlZmxlY3RlZEN1c3RvbUludGVn
cmFsQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0dHJB
dHRyR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRy
QXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZWZsZWN0ZWRDdXN0b21JbnRlZ3Jh
bEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyQXR0
ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tSW50ZWdy
YWxBdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZs
ZWN0ZWRDdXN0b21Cb29sZWFuQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdSZWZs
ZWN0JykKLSAgICB7InJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIiwgVGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0ckdldHRlciwgVGVzdE9ialY4SW50ZXJu
YWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CisgICAgeyJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpy
ZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50
ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiAgICAgLy8gQXR0cmlidXRlICdyZWZsZWN0ZWRDdXN0b21VUkxBdHRyJyAoVHlwZTogJ2F0
dHJpYnV0ZScgRXh0QXR0cjogJ1VSTCBSZWZsZWN0JykKLSAgICB7InJlZmxlY3RlZEN1c3RvbVVS
TEF0dHIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVmbGVjdGVkQ3VzdG9tVVJMQXR0ckF0dHJHZXR0
ZXIsIFRlc3RPYmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlciwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL30sCisgICAgeyJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIiwgVGVzdE9ialY4
SW50ZXJuYWw6OnJlZmxlY3RlZEN1c3RvbVVSTEF0dHJBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RP
YmpWOEludGVybmFsOjpyZWZsZWN0ZWRDdXN0b21VUkxBdHRyQXR0clNldHRlciwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICd0eXBlZEFycmF5QXR0cicgKFR5cGU6ICdhdHRyaWJ1
dGUnIEV4dEF0dHI6ICcnKQotICAgIHsidHlwZWRBcnJheUF0dHIiLCBUZXN0T2JqVjhJbnRlcm5h
bDo6dHlwZWRBcnJheUF0dHJBdHRyR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6dHlwZWRBcnJh
eUF0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InR5cGVkQXJyYXlBdHRyIiwg
VGVzdE9ialY4SW50ZXJuYWw6OnR5cGVkQXJyYXlBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0
T2JqVjhJbnRlcm5hbDo6dHlwZWRBcnJheUF0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
ICAgICAvLyBBdHRyaWJ1dGUgJ2F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJp
YnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIsIFRlc3RP
YmpWOEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIsIFRlc3RPYmpW
OEludGVybmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAorICAgIHsiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6
YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVy
bmFsOjphdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAog
ICAgIC8vIEF0dHJpYnV0ZSAnYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24nIChUeXBlOiAnYXR0cmli
dXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIiwgVGVzdE9i
alY4SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlciwgVGVzdE9ialY4
SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlciwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisgICAgeyJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOEludGVybmFsOjph
dHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJu
YWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAg
ICAgLy8gQXR0cmlidXRlICdzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbicgKFR5cGU6ICdh
dHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRp
b24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRy
R2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25B
dHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InN0cmluZ0F0dHJXaXRoR2V0dGVyRXhj
ZXB0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb25BdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUg
J3N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0
cjogJycpCi0gICAgeyJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RPYmpWOElu
dGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIsIFRlc3RPYmpW
OEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIHsic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJT
ZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnY3VzdG9tQXR0cicgKFR5
cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDdXN0b20nKQotICAgIHsiY3VzdG9tQXR0ciIsIFRl
c3RPYmpWOEludGVybmFsOjpjdXN0b21BdHRyQXR0ckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6
OmN1c3RvbUF0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImN1c3RvbUF0dHIi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6Y3VzdG9tQXR0ckF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OmN1c3RvbUF0dHJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRp
Y19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQ
cm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAv
LyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1dGUn
IEV4dEF0dHI6ICdDYWxsV2l0aCcpCi0gICAgeyJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlciwgVGVz
dE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXIsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIHsid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIiwgVGVzdE9ialY4SW50
ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXIsIDAgLyogbm8g
ZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3Rh
dGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFu
Y2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQotICAgIHsid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVyLCBUZXN0T2JqVjhJbnRl
cm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKKyAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIiwg
VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0
ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1
dGUgJ3dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcycgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4
dEF0dHI6ICdDYWxsV2l0aCcpCi0gICAgeyJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdl
dHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0
dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
c0F0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0
ZSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMnIChUeXBlOiAnYXR0
cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQotICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVSYWlzZXMiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyLCAwIC8q
IG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKKyAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFp
c2VzIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmli
dXRlUmFpc2VzQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fSwKICAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQot
ICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIs
IFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlQXR0ckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKKyAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6
OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0
dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMnIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQotICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRl
ciwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7Indp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6Ondp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRy
U2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlJyAoVHlwZTogJ2F0
dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRoJykKLSAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJu
YWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0
cmlidXRlQXR0ckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0clNldHRlciwgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCisgICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
V2l0aFNwYWNlc0F0dHJpYnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJHZXR0ZXJDYWxs
YmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAg
ICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRl
JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRoJykKLSAgICB7IndpdGhTY3Jp
cHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJHZXR0ZXIsIFRlc3RPYmpW
OEludGVybmFsOjp3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0clNl
dHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0
YWNrQXR0cmlidXRlIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjp3
aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0clNldHRlciwgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiAgICAgLy8gQXR0cmlidXRlICdjb25k
aXRpb25hbEF0dHIxJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFsJykK
LSAgICB7ImNvbmRpdGlvbmFsQXR0cjEiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxB
dHRyMUF0dHJHZXR0ZXIsIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIxQXR0clNl
dHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJjb25kaXRpb25hbEF0dHIxIiwgVGVzdE9ialY4
SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOElu
dGVybmFsOjpjb25kaXRpb25hbEF0dHIxQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAjZW5k
aWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpICYmIEVOQUJM
RShDb25kaXRpb24yKQogICAgIC8vIEF0dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRyMicgKFR5cGU6
ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCcpCi0gICAgeyJjb25kaXRpb25hbEF0
dHIyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsQXR0cjJBdHRyR2V0dGVyLCBUZXN0
T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyMkF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAorICAgIHsiY29uZGl0aW9uYWxBdHRyMiIsIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25h
bEF0dHIyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxB
dHRyMkF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRp
b24xKSAmJiBFTkFCTEUoQ29uZGl0aW9uMikKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5B
QkxFKENvbmRpdGlvbjIpCiAgICAgLy8gQXR0cmlidXRlICdjb25kaXRpb25hbEF0dHIzJyAoVHlw
ZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFsJykKLSAgICB7ImNvbmRpdGlvbmFs
QXR0cjMiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxBdHRyM0F0dHJHZXR0ZXIsIFRl
c3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbEF0dHIzQXR0clNldHRlciwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisgICAgeyJjb25kaXRpb25hbEF0dHIzIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlv
bmFsQXR0cjNBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25h
bEF0dHIzQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAjZW5kaWYgLy8gRU5BQkxFKENvbmRp
dGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogI2lmIEVOQUJMRShDb25kaXRpb24xKQogICAg
IC8vIEF0dHJpYnV0ZSAnY29uZGl0aW9uYWxBdHRyNCcgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0
dHI6ICdDb25kaXRpb25hbCcpCkBAIC0xOTk0LDMzICsyMjk2LDMzIEBAIHN0YXRpYyBjb25zdCBW
OERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0T2JqQXR0cnNbXSA9IHsK
ICAgICB7ImNvbmRpdGlvbmFsQXR0cjYiLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9iakNvbnN0
cnVjdG9yR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9ialJlcGxhY2VhYmxlQXR0clNl
dHRlciwgJlY4VGVzdE9iamVjdEM6OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICNlbmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjIpCiAgICAgLy8gQXR0cmlidXRlICdjYWNoZWRBdHRyaWJ1dGUx
JyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0NhY2hlZEF0dHJpYnV0ZScp
Ci0gICAgeyJjYWNoZWRBdHRyaWJ1dGUxIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0dHJp
YnV0ZTFBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImNhY2hlZEF0dHJpYnV0
ZTEiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y2FjaGVkQXR0cmlidXRlMUF0dHJHZXR0ZXJDYWxsYmFj
aywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdjYWNoZWRBdHRyaWJ1dGUy
JyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0NhY2hlZEF0dHJpYnV0ZScp
Ci0gICAgeyJjYWNoZWRBdHRyaWJ1dGUyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNhY2hlZEF0dHJp
YnV0ZTJBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImNhY2hlZEF0dHJpYnV0
ZTIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y2FjaGVkQXR0cmlidXRlMkF0dHJHZXR0ZXJDYWxsYmFj
aywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdhbnlBdHRyaWJ1dGUnIChU
eXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImFueUF0dHJpYnV0ZSIsIFRlc3RP
YmpWOEludGVybmFsOjphbnlBdHRyaWJ1dGVBdHRyR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6
YW55QXR0cmlidXRlQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJhbnlBdHRyaWJ1
dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6YW55QXR0cmlidXRlQXR0ckdldHRlckNhbGxiYWNrLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6YW55QXR0cmlidXRlQXR0clNldHRlciwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiAgICAgLy8gQXR0cmlidXRlICdmbG9hdEFycmF5JyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0
cjogJycpCi0gICAgeyJmbG9hdEFycmF5IiwgVGVzdE9ialY4SW50ZXJuYWw6OmZsb2F0QXJyYXlB
dHRyR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJTZXR0ZXIsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIHsiZmxvYXRBcnJheSIsIFRlc3RPYmpWOEludGVybmFsOjpmbG9hdEFy
cmF5QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZmxvYXRBcnJheUF0dHJT
ZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnZG91YmxlQXJyYXknIChU
eXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKLSAgICB7ImRvdWJsZUFycmF5IiwgVGVzdE9i
alY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0ckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OmRv
dWJsZUFycmF5QXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNj
ZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1
dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJkb3VibGVBcnJheSIs
IFRlc3RPYmpWOEludGVybmFsOjpkb3VibGVBcnJheUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdE9i
alY4SW50ZXJuYWw6OmRvdWJsZUFycmF5QXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAg
Ly8gQXR0cmlidXRlICdjb250ZW50RG9jdW1lbnQnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRl
JyBFeHRBdHRyOiAnQ2hlY2tTZWN1cml0eUZvck5vZGUnKQotICAgIHsiY29udGVudERvY3VtZW50
IiwgVGVzdE9ialY4SW50ZXJuYWw6OmNvbnRlbnREb2N1bWVudEF0dHJHZXR0ZXIsIDAsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAorICAgIHsiY29udGVudERvY3VtZW50IiwgVGVzdE9ialY4SW50ZXJuYWw6OmNv
bnRlbnREb2N1bWVudEF0dHJHZXR0ZXJDYWxsYmFjaywgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAg
Ly8gQXR0cmlidXRlICdtdXRhYmxlUG9pbnQnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAn
JykKLSAgICB7Im11dGFibGVQb2ludCIsIFRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRB
dHRyR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBvaW50QXR0clNldHRlciwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCisgICAgeyJtdXRhYmxlUG9pbnQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bXV0
YWJsZVBvaW50QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJsZVBv
aW50QXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdpbW11dGFi
bGVQb2ludCcgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdJbW11dGFibGUnKQotICAgIHsi
aW1tdXRhYmxlUG9pbnQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRyR2V0
dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRBdHRyU2V0dGVyLCAwIC8qIG5v
IGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0
YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3Rh
bmNlICovfSwKKyAgICB7ImltbXV0YWJsZVBvaW50IiwgVGVzdE9ialY4SW50ZXJuYWw6OmltbXV0
YWJsZVBvaW50QXR0ckdldHRlckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxl
UG9pbnRBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3N0cmF3
YmVycnknIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnSW1wbGVtZW50ZWRBcycpCi0gICAg
eyJzdHJhd2JlcnJ5IiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmF3YmVycnlBdHRyR2V0dGVyLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJyeUF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAor
ICAgIHsic3RyYXdiZXJyeSIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJhd2JlcnJ5QXR0ckdldHRl
ckNhbGxiYWNrLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyYXdiZXJyeUF0dHJTZXR0ZXIsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnc3RyaWN0RmxvYXQnIChUeXBlOiAnYXR0cmli
dXRlJyBFeHRBdHRyOiAnU3RyaWN0VHlwZUNoZWNraW5nJykKLSAgICB7InN0cmljdEZsb2F0Iiwg
VGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0ckdldHRlciwgVGVzdE9ialY4SW50ZXJu
YWw6OnN0cmljdEZsb2F0QXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2
ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlB
dHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJzdHJpY3RG
bG9hdCIsIFRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGbG9hdEF0dHJHZXR0ZXJDYWxsYmFjaywg
VGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZsb2F0QXR0clNldHRlciwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiAgICAgLy8gQXR0cmlidXRlICdkZXNjcmlwdGlvbicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1
dGUnIEV4dEF0dHI6ICcnKQotICAgIHsiZGVzY3JpcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6
ZGVzY3JpcHRpb25BdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImRlc2NyaXB0
aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OmRlc2NyaXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2lkJyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJycpCi0gICAgeyJpZCIsIFRlc3RPYmpWOEludGVybmFsOjppZEF0dHJHZXR0
ZXIsIFRlc3RPYmpWOEludGVybmFsOjppZEF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAg
IHsiaWQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6aWRBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpW
OEludGVybmFsOjppZEF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6
OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0
cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0
ZSAnaGFzaCcgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsi
aGFzaCIsIFRlc3RPYmpWOEludGVybmFsOjpoYXNoQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCisgICAgeyJoYXNoIiwgVGVzdE9ialY4SW50ZXJuYWw6Omhhc2hBdHRyR2V0dGVyQ2FsbGJh
Y2ssIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVwbGFjZWFibGVBdHRy
aWJ1dGUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnUmVwbGFjZWFibGUn
KQotICAgIHsicmVwbGFjZWFibGVBdHRyaWJ1dGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6cmVwbGFj
ZWFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6VGVzdE9ialJlcGxh
Y2VhYmxlQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNz
Q29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+
KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJyZXBsYWNlYWJsZUF0dHJp
YnV0ZSIsIFRlc3RPYmpWOEludGVybmFsOjpyZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXJD
YWxsYmFjaywgVGVzdE9ialY4SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0ZXIs
IDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZB
VUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyog
b24gaW5zdGFuY2UgKi99LAogfTsKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6
QmF0Y2hlZENhbGxiYWNrIFY4VGVzdE9iakNhbGxiYWNrc1tdID0gewpAQCAtMjE0NywxMyArMjQ0
OSwxMyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZp
Z3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjplbmFibGVkQXRSdW50aW1lQXR0cjFFbmFibGVkKCkpIHsKICAgICAgICAgc3RhdGlj
IGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAog
ICAgICAgICAvLyBBdHRyaWJ1dGUgJ2VuYWJsZWRBdFJ1bnRpbWVBdHRyMScgKFR5cGU6ICdhdHRy
aWJ1dGUnIEV4dEF0dHI6ICdWOEVuYWJsZWRBdFJ1bnRpbWUnKQotICAgICAgICB7ImVuYWJsZWRB
dFJ1bnRpbWVBdHRyMSIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFB
dHRyR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0clNl
dHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL307CisgICAgICAgIHsiZW5hYmxlZEF0UnVudGltZUF0dHIxIiwg
VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXJDYWxsYmFj
aywgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXIsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99OwogICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJp
YnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhLCBpc29sYXRlKTsKICAgICB9CiAgICAgaWYg
KFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmZlYXR1cmVOYW1lRW5hYmxlZCgpKSB7CiAgICAgICAg
IHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRh
dGEgPVwKICAgICAgICAgLy8gQXR0cmlidXRlICdlbmFibGVkQXRSdW50aW1lQXR0cjInIChUeXBl
OiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnVjhFbmFibGVkQXRSdW50aW1lJykKLSAgICAgICAgeyJl
bmFibGVkQXRSdW50aW1lQXR0cjIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGlt
ZUF0dHIyQXR0ckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRy
MkF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99OworICAgICAgICB7ImVuYWJsZWRBdFJ1bnRpbWVB
dHRyMiIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVy
Q2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyU2V0
dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfTsKICAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1
cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSwgaXNvbGF0ZSk7CiAgICAgfQog
CkBAIC0yMjg1LDEzICsyNTg3LDEzIEBAIHZvaWQgVjhUZXN0T2JqOjppbnN0YWxsUGVyQ29udGV4
dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBpbnN0YW5jZSwgVGVzCiAgICAgaWYg
KENvbnRleHRGZWF0dXJlczo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMUVuYWJsZWQoaW1wbC0+ZG9j
dW1lbnQoKSkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0
Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAogICAgICAgICAvLyBBdHRyaWJ1dGUgJ2VuYWJsZWRQ
ZXJDb250ZXh0QXR0cjEnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnVjhFbmFibGVkUGVy
Q29udGV4dCcpCi0gICAgICAgIHsiZW5hYmxlZFBlckNvbnRleHRBdHRyMSIsIFRlc3RPYmpWOElu
dGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0ckdldHRlciwgVGVzdE9ialY4SW50ZXJu
YWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfTsKKyAg
ICAgICAgeyJlbmFibGVkUGVyQ29udGV4dEF0dHIxIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJs
ZWRQZXJDb250ZXh0QXR0cjFBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RPYmpWOEludGVybmFsOjpl
bmFibGVkUGVyQ29udGV4dEF0dHIxQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNf
Y2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJv
cGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL307CiAgICAgICAg
IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywg
YXR0ckRhdGEsIGlzb2xhdGUpOwogICAgIH0KICAgICBpZiAoQ29udGV4dEZlYXR1cmVzOjpmZWF0
dXJlTmFtZUVuYWJsZWQoaW1wbC0+ZG9jdW1lbnQoKSkpIHsKICAgICAgICAgc3RhdGljIGNvbnN0
IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAogICAgICAg
ICAvLyBBdHRyaWJ1dGUgJ2VuYWJsZWRQZXJDb250ZXh0QXR0cjInIChUeXBlOiAnYXR0cmlidXRl
JyBFeHRBdHRyOiAnVjhFbmFibGVkUGVyQ29udGV4dCcpCi0gICAgICAgIHsiZW5hYmxlZFBlckNv
bnRleHRBdHRyMiIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0
ckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjJBdHRyU2V0
dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfTsKKyAgICAgICAgeyJlbmFibGVkUGVyQ29udGV4dEF0dHIyIiwg
VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjJBdHRyR2V0dGVyQ2FsbGJh
Y2ssIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIyQXR0clNldHRlciwg
MCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFV
TFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBv
biBpbnN0YW5jZSAqL307CiAgICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0
cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEsIGlzb2xhdGUpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5j
cHAKaW5kZXggN2U5NmUwYjRkN2ZmNWI1MDhjNTdhZTMwNzM1M2QxNGYzY2NhYTQ5OS4uMzgyMGZj
OTk0NDI4ZWJmYjdmMTI2OWNlMzNjNTA1YmJiMzhlYjFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTgxLDYgKzgx
LDExIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWVBdHRyR2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2CiAgICAgcmV0dXJuIGltcC0+dmFsdWUoKSA/
IGltcC0+dmFsdWUoKS0+ZGVzZXJpYWxpemUoKSA6IHY4OjpIYW5kbGU8djg6OlZhbHVlPih2OE51
bGwoaW5mby5HZXRJc29sYXRlKCkpKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZUF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0ckdldHRlcihuYW1lLCBpbmZv
KTsKK30KKwogc3RhdGljIHZvaWQgdmFsdWVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXAg
PSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8uSG9s
ZGVyKCkpOwpAQCAtOTUsNiArMTAwLDExIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiAgICAg
cmV0dXJuIGltcC0+cmVhZG9ubHlWYWx1ZSgpID8gaW1wLT5yZWFkb25seVZhbHVlKCktPmRlc2Vy
aWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgp
KSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVhZG9ubHlWYWx1ZUF0dHJH
ZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVY4SW50ZXJuYWw6OnJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyKG5hbWUsIGluZm8pOwor
fQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZFZhbHVlQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICB2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IHByb3BlcnR5TmFtZSA9IHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgiY2FjaGVkVmFsdWUiKTsKQEAgLTEwOCw2ICsxMTgsMTEgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBjYWNoZWRWYWx1ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGMKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY2FjaGVkVmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpT
dHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJu
IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRWYWx1
ZUF0dHJHZXR0ZXIobmFtZSwgaW5mbyk7Cit9CisKIHN0YXRpYyB2b2lkIGNhY2hlZFZhbHVlQXR0
clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
dmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogaW1wID0gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEzMCw2ICsxNDUsMTEgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwb3J0c0F0dHJHZXR0ZXIodjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHYKICAgICByZXR1cm4gcG9ydEFycmF5OwogfQogCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvcnRzQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAg
IHJldHVybiBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6cG9y
dHNBdHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHY4OjpIYW5kbGU8djg6
OlN0cmluZz4gcHJvcGVydHlOYW1lID0gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjYWNoZWRSZWFk
b25seVZhbHVlIik7CkBAIC0xNDMsNiArMTYzLDExIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY2FjaGVkUmVhZG9ubHlWYWx1ZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNh
Y2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRSZWFkb25seVZh
bHVlQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhY2NlcHRUcmFuc2Zlckxpc3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKQEAgLTIxMywxNSArMjM4LDE1IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbXVsdGlUcmFuc2Zlckxpc3RDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzCiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246
OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQXR0
cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1dGUgJ3ZhbHVlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0
QXR0cjogJycpCi0gICAgeyJ2YWx1ZSIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VWOEludGVybmFsOjp2YWx1ZUF0dHJHZXR0ZXIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VWOEludGVybmFsOjp2YWx1ZUF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3Rh
dGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6
OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAg
IHsidmFsdWUiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6
dmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VWOEludGVybmFsOjp2YWx1ZUF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nh
c3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3Bl
cnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0
dHJpYnV0ZSAncmVhZG9ubHlWYWx1ZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0
dHI6ICcnKQotICAgIHsicmVhZG9ubHlWYWx1ZSIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VWOEludGVybmFsOjpyZWFkb25seVZhbHVlQXR0ckdldHRlciwgMCwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL30sCisgICAgeyJyZWFkb25seVZhbHVlIiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVY4SW50ZXJuYWw6OnJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyQ2FsbGJhY2ssIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAnY2FjaGVkVmFsdWUnIChUeXBlOiAnYXR0
cmlidXRlJyBFeHRBdHRyOiAnQ2FjaGVkQXR0cmlidXRlJykKLSAgICB7ImNhY2hlZFZhbHVlIiwg
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVl
QXR0ckdldHRlciwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6
OmNhY2hlZFZhbHVlQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJjYWNoZWRWYWx1
ZSIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRW
YWx1ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVY4SW50ZXJuYWw6OmNhY2hlZFZhbHVlQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0
aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAg
Ly8gQXR0cmlidXRlICdwb3J0cycgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6
ICcnKQotICAgIHsicG9ydHMiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJ
bnRlcm5hbDo6cG9ydHNBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InBvcnRz
IiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnBvcnRzQXR0
ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2Nh
Y2hlZFJlYWRvbmx5VmFsdWUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAn
Q2FjaGVkQXR0cmlidXRlJykKLSAgICB7ImNhY2hlZFJlYWRvbmx5VmFsdWUiLCBUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkUmVhZG9ubHlWYWx1ZUF0
dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsiY2FjaGVkUmVhZG9ubHlWYWx1ZSIs
IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRSZWFk
b25seVZhbHVlQXR0ckdldHRlckNhbGxiYWNrLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19j
YXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9w
ZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKIH07CiAKIHN0
YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDYWxsYmFjayBWOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWxsYmFja3NbXSA9IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMu
Y3BwCmluZGV4IGZlZjBhODAwMTU5Mzg2Y2Q3MWRiZmEwNjc5Y2RmNzE2YzJlMmU1YTIuLmU5YzJh
NTM1Mzk2ODg0NjJmYzk3YmUwODFjYmE0ZTY1YjE0N2EzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNw
cApAQCAtODYsNiArODYsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bnNpZ25l
ZExvbmdMb25nQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmcKICAgICByZXR1cm4g
djg6Ok51bWJlcjo6TmV3KHN0YXRpY19jYXN0PGRvdWJsZT4oaW1wLT51bnNpZ25lZExvbmdMb25n
QXR0cigpKSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdW5zaWduZWRMb25n
TG9uZ0F0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30K
Kwogc3RhdGljIHZvaWQgdW5zaWduZWRMb25nTG9uZ0F0dHJBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVk
ZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTEwMCw2ICsxMDUsMTEgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRy
R2V0dGVyKHY4OjpMb2NhbDwKICAgICByZXR1cm4gaW1wLT5pbW11dGFibGVTZXJpYWxpemVkU2Ny
aXB0VmFsdWUoKSA/IGltcC0+aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlKCktPmRlc2Vy
aWFsaXplKCkgOiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjhOdWxsKGluZm8uR2V0SXNvbGF0ZSgp
KSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW1tdXRhYmxlU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIHJldHVybiBUZXN0VHlwZWRl
ZnNWOEludGVybmFsOjppbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWVBdHRyR2V0dGVyKG5h
bWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFs
dWVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0VHlw
ZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAg
LTExOCw2ICsxMjgsMTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHIKICAgICByZXR1cm4gdjhJ
bnRlZ2VyKHYsIGluZm8uR2V0SXNvbGF0ZSgpKTsKIH0KIAorc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBhdHRyV2l0aEdldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICByZXR1cm4gVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25B
dHRyR2V0dGVyKG5hbWUsIGluZm8pOworfQorCiBzdGF0aWMgdm9pZCBhdHRyV2l0aEdldHRlckV4
Y2VwdGlvbkF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRl
c3RUeXBlZGVmcyogaW1wID0gVjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwpAQCAtMTMyLDYgKzE0NywxMSBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cgogICAgIHJldHVy
biB2OEludGVnZXIoaW1wLT5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpLCBpbmZvLkdldElzb2xh
dGUoKSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXR0cldpdGhTZXR0ZXJF
eGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNv
bnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgcmV0dXJuIFRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0ckdldHRlcihuYW1lLCBpbmZvKTsK
K30KKwogc3RhdGljIHZvaWQgYXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVz
dFR5cGVkZWZzOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE1Myw2ICsxNzMsMTEgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlv
bkF0dHJHZXR0ZXIodjg6OkxvY2FsPHYKICAgICByZXR1cm4gdjhTdHJpbmcodiwgaW5mby5HZXRJ
c29sYXRlKCksIFJldHVyblVuc2FmZUhhbmRsZSk7CiB9CiAKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2so
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8p
Cit7CisgICAgcmV0dXJuIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoR2V0
dGVyRXhjZXB0aW9uQXR0ckdldHRlcihuYW1lLCBpbmZvKTsKK30KKwogc3RhdGljIHZvaWQgc3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5m
byYgaW5mbykKIHsKICAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKQEAgLTE2Nyw2ICsxOTIsMTEgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIodjg6
OkxvY2FsPHYKICAgICByZXR1cm4gdjhTdHJpbmcoaW1wLT5zdHJpbmdBdHRyV2l0aFNldHRlckV4
Y2VwdGlvbigpLCBpbmZvLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFuZGxlKTsKIH0KIAor
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
bkF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICByZXR1cm4gVGVzdFR5cGVkZWZzVjhJbnRlcm5h
bDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyKG5hbWUsIGluZm8pOwor
fQorCiBzdGF0aWMgdm9pZCBzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIo
djg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBj
b25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RUeXBlZGVmcyogaW1wID0g
VjhUZXN0VHlwZWRlZnM6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwpAQCAtMzY3LDE5ICszOTcs
MTkgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoRXhjZXB0aW9uQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmln
dXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBWOFRlc3RUeXBlZGVmc0F0dHJzW10gPSB7CiAgICAg
Ly8gQXR0cmlidXRlICd1bnNpZ25lZExvbmdMb25nQXR0cicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4
dEF0dHI6ICcnKQotICAgIHsidW5zaWduZWRMb25nTG9uZ0F0dHIiLCBUZXN0VHlwZWRlZnNWOElu
dGVybmFsOjp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJHZXR0ZXIsIFRlc3RUeXBlZGVmc1Y4SW50
ZXJuYWw6OnVuc2lnbmVkTG9uZ0xvbmdBdHRyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisg
ICAgeyJ1bnNpZ25lZExvbmdMb25nQXR0ciIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnVuc2ln
bmVkTG9uZ0xvbmdBdHRyQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFs
Ojp1bnNpZ25lZExvbmdMb25nQXR0ckF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8v
IEF0dHJpYnV0ZSAnaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlJyAoVHlwZTogJ2F0dHJp
YnV0ZScgRXh0QXR0cjogJ0ltbXV0YWJsZScpCi0gICAgeyJpbW11dGFibGVTZXJpYWxpemVkU2Ny
aXB0VmFsdWUiLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjppbW11dGFibGVTZXJpYWxpemVkU2Ny
aXB0VmFsdWVBdHRyR2V0dGVyLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjppbW11dGFibGVTZXJp
YWxpemVkU2NyaXB0VmFsdWVBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0
PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0
eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImltbXV0
YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmltbXV0
YWJsZVNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZz
VjhJbnRlcm5hbDo6aW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlQXR0clNldHRlciwgMCAv
KiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQp
LCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBp
bnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdUZXN0U3ViT2JqJyAoVHlwZTogJ3JlYWRv
bmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCiAgICAgeyJUZXN0U3ViT2JqIiwgVGVzdFR5cGVk
ZWZzVjhJbnRlcm5hbDo6VGVzdFR5cGVkZWZzQ29uc3RydWN0b3JHZXR0ZXIsIDAsICZWOFRlc3RT
dWJPYmo6OmluZm8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCks
IHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGlu
c3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uJyAo
VHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJhdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uQXR0
ckdldHRlciwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25B
dHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9s
Pih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5v
bmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7ImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
IiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6YXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyR2V0
dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoR2V0dGVyRXhjZXB0
aW9uQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdhdHRyV2l0
aFNldHRlckV4Y2VwdGlvbicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQotICAgIHsi
YXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjphdHRyV2l0
aFNldHRlckV4Y2VwdGlvbkF0dHJHZXR0ZXIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgeyJhdHRy
V2l0aFNldHRlckV4Y2VwdGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmF0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uQXR0ckdldHRlckNhbGxiYWNrLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjph
dHRyV2l0aFNldHRlckV4Y2VwdGlvbkF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8v
IEF0dHJpYnV0ZSAnc3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24nIChUeXBlOiAnYXR0cmli
dXRlJyBFeHRBdHRyOiAnJykKLSAgICB7InN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uIiwg
VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRy
R2V0dGVyLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2Vw
dGlvbkF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIHsic3RyaW5nQXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24iLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbkF0dHJHZXR0ZXJDYWxsYmFjaywgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb25BdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAg
ICAvLyBBdHRyaWJ1dGUgJ3N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uJyAoVHlwZTogJ2F0
dHJpYnV0ZScgRXh0QXR0cjogJycpCi0gICAgeyJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlv
biIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
QXR0ckdldHRlciwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb25BdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICB7InN0cmluZ0F0dHJXaXRo
U2V0dGVyRXhjZXB0aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb25BdHRyR2V0dGVyQ2FsbGJhY2ssIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6
OnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uQXR0clNldHRlciwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiB9OwogCiBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQ2FsbGJhY2sg
VjhUZXN0VHlwZWRlZnNDYWxsYmFja3NbXSA9IHsK
</data>
<flag name="commit-queue"
          id="210517"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>