<?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>163900</bug_id>
          
          <creation_ts>2016-10-24 10:29:47 -0700</creation_ts>
          <short_desc>[DOMJIT] Tell IDL result type to DFG to drop type checks in AI</short_desc>
          <delta_ts>2016-10-28 02:06:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>162544</blocked>
    
    <blocked>162980</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1243764</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-24 10:29:47 -0700</bug_when>
    <thetext>We use heap prediction in propagation phase since it is more accurate,
but we can use IDL result type in AI to drop type checks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244490</commentid>
    <comment_count>1</comment_count>
      <attachid>292835</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-25 15:30:47 -0700</bug_when>
    <thetext>Created attachment 292835
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244502</commentid>
    <comment_count>2</comment_count>
      <attachid>292837</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-25 15:44:37 -0700</bug_when>
    <thetext>Created attachment 292837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244503</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-25 15:44:57 -0700</bug_when>
    <thetext>Added more tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244631</commentid>
    <comment_count>4</comment_count>
      <attachid>292837</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-10-25 22:30:03 -0700</bug_when>
    <thetext>Comment on attachment 292837
Patch

Awesome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244636</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-25 22:45:58 -0700</bug_when>
    <thetext>Committed r207869: &lt;http://trac.webkit.org/changeset/207869&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244637</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-25 22:46:20 -0700</bug_when>
    <thetext>Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244653</commentid>
    <comment_count>7</comment_count>
      <attachid>292837</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-26 00:17:30 -0700</bug_when>
    <thetext>Comment on attachment 292837
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2506
&gt; +        &quot;long&quot; =&gt; &quot;SpecInt32Only&quot;,

This shouldn&apos;t be SpecBytecodeNumber?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1244733</commentid>
    <comment_count>8</comment_count>
      <attachid>292837</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-26 02:12:41 -0700</bug_when>
    <thetext>Comment on attachment 292837
Patch

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

&gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2506
&gt;&gt; +        &quot;long&quot; =&gt; &quot;SpecInt32Only&quot;,
&gt; 
&gt; This shouldn&apos;t be SpecBytecodeNumber?

Do you mean this `long` exceeds the range of SpecInt32Only?
According to the WebIDL spec, the long is defined as a range of int32_t.
https://www.w3.org/TR/WebIDL/#idl-long</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245495</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-28 02:06:00 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 292837 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=292837&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2506
&gt; &gt;&gt; +        &quot;long&quot; =&gt; &quot;SpecInt32Only&quot;,
&gt; &gt; 
&gt; &gt; This shouldn&apos;t be SpecBytecodeNumber?
&gt; 
&gt; Do you mean this `long` exceeds the range of SpecInt32Only?
&gt; According to the WebIDL spec, the long is defined as a range of int32_t.
&gt; https://www.w3.org/TR/WebIDL/#idl-long

Yeah I was worried about that but if it&apos;s int32 then we&apos;re fine :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292835</attachid>
            <date>2016-10-25 15:30:47 -0700</date>
            <delta_ts>2016-10-25 15:44:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163900-20161025152700.patch</filename>
            <type>text/plain</type>
            <size>90068</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3ODQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YjgzNDZiNmY3ZTlhYjcyZmIzNzY2MGQwZjQwNzBlZGFmYmUyZDMyLi43MTgyNTFjYjg5MGUyZDBm
YmMwYjQwYjdkMDYxNjliMzBiODg4NDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxNi0xMC0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBUZWxsIElETCByZXN1bHQgdHlwZSB0byBERkcgdG8g
ZHJvcCB0eXBlIGNoZWNrcyBpbiBBSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIElETCB0ZWxscyB0aGUgY29uc2VydmF0aXZlIHJlc3VsdCB0eXBl
LiBXaGlsZSB3ZSB1c2UgdGhlIGhlYXAgcHJlZGljdGlvbgorICAgICAgICBmb3IgcHJlZGljdGlv
biBwcm9wYWdhdGlvbiBwaGFzZSBpbiBET01KSVQgZ2V0dGVyIChpdCBpcyBvZmZlcmVkIGJ5IGdl
dF9ieV9pZCEpLAorICAgICAgICB3ZSBsZXZlcmFnZSB0aGUgdHlwZSB0b2xkIGJ5IElETCB0byBm
aWx0ZXIgdGhlIGFic3RyYWN0IHZhbHVlIGluIEFJLgorICAgICAgICBJdCBlZmZlY3RpdmVseSBk
cm9wcyB1bm5lY2Vzc2FyeSB0eXBlIGNoZWNrcyBmb2xsb3dlZCBieSBDYWxsRE9NIG9wZXJhdGlv
bnMuCisKKyAgICAgICAgRm9yIGV4YW1wbGUsIHdoZW4geW91IHdyaXRlIHRoZSBjb2RlIGxpa2Us
CisKKyAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSA5KSB7CisgICAgICAgICAgICAg
ICAgLy8gZG9jdW1lbnQuCisgICAgICAgICAgICB9CisKKyAgICAgICAgUHJldmlvdXNseSwgd2Ug
aW5zZXJ0ZWQgYSBJbnQzMiBjaGVjayBmb3IgdGhlIHJlc3VsdCBvZiBub2RlLm5vZGVUeXBlLgor
ICAgICAgICBJdCBpcyBkcm9wcGVkIG5vdy4KKworICAgICAgICBXZSBhbm5vdGF0ZSB0aGUgRE9N
SklUIGdldHRlciBpbiBqc2MuY3BwIHRvIGVuc3VyZSB0aGF0IHRoZSB1bm5lY2Vzc2FyeSB0eXBl
IGNoZWNrcworICAgICAgICBhcmUgY29ycmVjdGx5IGRyb3BwZWQgd2hlbiBleGVjdXRpbmcgSlNU
ZXN0cy9zdHJlc3MvZG9taml0LWdldHRlci5qcy4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJw
cmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZG9t
aml0L0RPTUpJVEdldHRlclNldHRlci5oOgorICAgICAgICAoSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlcjo6R2V0dGVyU2V0dGVyKToKKyAgICAgICAgKEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXI6
OnJlc3VsdFR5cGUpOgorICAgICAgICAqIGpzYy5jcHA6CisgICAgICAgIChXVEY6OkRPTUpJVEdl
dHRlcjo6RE9NSklUTm9kZURPTUpJVDo6RE9NSklUTm9kZURPTUpJVCk6CisgICAgICAgIChXVEY6
OkRPTUpJVEdldHRlckNvbXBsZXg6OkRPTUpJVE5vZGVET01KSVQ6OkRPTUpJVE5vZGVET01KSVQp
OgorCiAyMDE2LTEwLTI1ICBDaHJpc3RvcGhlciBSZWlkICA8Q2hyaXN0b3BoZXIuUmVpZEBhbS5z
b255LmNvbT4KIAogICAgICAgICBqc2MuY3BwIGlzIGxlYWtpbmcgbWVtb3J5IGFsbG9jYXRlZCBi
eSByZWFkbGluZSBpbiBydW5JbnRlcmFjdGl2ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI3MTk5YTUxYTkzMjM3
OWM4MjUyNmY4YjJjY2RhZTA3OTRhY2M0NmEuLjY5MTMzNmUxNzdlMmIzM2FlZTZjNTQ4NDUwYjg3
ZTM5NmVhMTFlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNjkgQEAKKzIwMTYtMTAtMjUgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0g
VGVsbCBJREwgcmVzdWx0IHR5cGUgdG8gREZHIHRvIGRyb3AgdHlwZSBjaGVja3MgaW4gQUkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzkwMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBUZXN0RE9N
SklULmlkbCBmb3IgYmluZGluZ3MgZ2VuZXJhdGlvbiB0ZXN0cy4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2V0UmVzdWx0VHlwZUZp
bHRlcik6CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RET01KSVRQcm90b3R5cGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RET01KSVRQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpKU1Rlc3RET01KSVRQcm90b3R5cGU6OkpTVGVzdERPTUpJVFByb3RvdHlwZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RET01KSVRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERPTUpJVENvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RET01KSVRQcm90b3R5cGU6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERPTUpJVDo6SlNUZXN0
RE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERPTUpJVDo6Y3JlYXRlUHJvdG90eXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERPTUpJVDo6cHJvdG90eXBlKToKKyAgICAgICAg
KFdlYkNvcmU6OkJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvckF0dHJpYnV0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRBbnlBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERPTUpJVEFueUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERP
TUpJVEFueUF0dHJET01KSVQ6OlRlc3RET01KSVRBbnlBdHRyRE9NSklUKToKKyAgICAgICAgKFdl
YkNvcmU6OmRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRBbnlBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdERPTUpJVEJvb2xlYW5BdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdERPTUpJVEJvb2xlYW5BdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01K
SVRCb29sZWFuQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJvb2xlYW5BdHRyRE9NSklUKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRCb29sZWFuQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRCeXRlQXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RET01KSVRCeXRlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUQnl0ZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlQXR0ckRPTUpJVCk6CisgICAgICAg
IChXZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUQnl0ZUF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUT2N0ZXRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdERPTUpJVE9jdGV0QXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9N
SklUT2N0ZXRBdHRyRE9NSklUOjpUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklUKToKKyAgICAgICAg
KFdlYkNvcmU6OmRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRPY3RldEF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdERPTUpJVFNob3J0QXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9N
SklUU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUKToKKyAgICAgICAg
KFdlYkNvcmU6OmRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRTaG9ydEF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJHZXR0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5z
aWduZWRTaG9ydEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0
dGVyRm9yVGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdERPTUpJVExvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVExvbmdB
dHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nQXR0ckRPTUpJVDo6
VGVzdERPTUpJVExvbmdBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OmRvbUpJVEdldHRl
clNldHRlckZvclRlc3RET01KSVRMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RE
T01KSVRVbnNpZ25lZExvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFVu
c2lnbmVkTG9uZ0F0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2ln
bmVkTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUKToKKyAg
ICAgICAgKFdlYkNvcmU6OmRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnNpZ25lZExv
bmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVExvbmdMb25nQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRMb25nTG9uZ0F0dHJHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdM
b25nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JU
ZXN0RE9NSklUTG9uZ0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFVu
c2lnbmVkTG9uZ0xvbmdBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFVuc2ln
bmVkTG9uZ0xvbmdBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNp
Z25lZExvbmdMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9N
SklUKToKKyAgICAgICAgKFdlYkNvcmU6OmRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRV
bnNpZ25lZExvbmdMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRGbG9h
dEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklURmxvYXRBdHRyR2V0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRGbG9hdEF0dHJET01KSVQ6OlRlc3RET01KSVRG
bG9hdEF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9y
VGVzdERPTUpJVEZsb2F0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRVbnJl
c3RyaWN0ZWRGbG9hdEF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUVW5yZXN0
cmljdGVkRmxvYXRBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnJl
c3RyaWN0ZWRGbG9hdEF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHJE
T01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJ
VFVucmVzdHJpY3RlZEZsb2F0QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRE
b3VibGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVERvdWJsZUF0dHJHZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVERvdWJsZUF0dHJET01KSVQ6OlRlc3RE
T01KSVREb3VibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OmRvbUpJVEdldHRlclNl
dHRlckZvclRlc3RET01KSVREb3VibGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERP
TUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9N
SklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3Rl
ZERvdWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0dGVy
Rm9yVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0RE9NSklURG9tU3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01K
SVREb21TdHJpbmdBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb21T
dHJpbmdBdHRyRE9NSklUOjpUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVCk6CisgICAgICAg
IChXZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklURG9tU3RyaW5nQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0ckdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlU3Ry
aW5nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JU
ZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklU
VXN2U3RyaW5nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRVc3ZTdHJpbmdB
dHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVc3ZTdHJpbmdBdHRyRE9N
SklUOjpUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpk
b21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVXN2U3RyaW5nQXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCb29s
ZWFuTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OmRvbUpJVEdldHRlclNl
dHRlckZvclRlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
RE9NSklUQnl0ZU51bGxhYmxlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9N
SklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJET01K
SVQpOgorICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEJ5
dGVOdWxsYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUT2N0ZXROdWxs
YWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0
dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyR2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VFNob3J0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OmRvbUpJVEdldHRl
clNldHRlckZvclRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQ6OlRl
c3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNv
cmU6OmRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckdldHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERP
TUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0
dGVyU2V0dGVyRm9yVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckdldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0
RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6
OmRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJHZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklU
OjpUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxh
YmxlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRMb25n
TG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJs
ZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVz
dERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
RE9NSklURmxvYXROdWxsYWJsZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERP
TUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJE
T01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJ
VEZsb2F0TnVsbGFibGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFVucmVz
dHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJ
VFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6
OmRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxl
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyR2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQ6
OlRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6
ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFi
bGVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWRE
b3VibGVOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVOdWxs
YWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9y
VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRE
b21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0
dGVyU2V0dGVyRm9yVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RE
T01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OmRv
bUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3Jl
Ojpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdERPTUpJVENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdERPTUpJVDo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RE9N
SklUOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RE9NSklULmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RE9NSklUOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RE9NSklUOjpjcmVhdGVTdHJ1Y3R1cmUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RE9NSklUOjp3cmFwcGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdERPTUpJVDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0RE9NSklULmlkbDogQWRkZWQuCisKIDIwMTYtMTAtMjUgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBJbnB1
dEV2ZW50LmRhdGFUcmFuc2ZlciBmb3IgdGhlIElucHV0RXZlbnQgc3BlYwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCmluZGV4IGYwOWQ0MWI3YjdjYTMzM2EyNDA5YjFlNTQ1YjU1ODQwZGNmMGZhMjEuLjVkMmM4
MTE0Mjc3MWE0OWQ5YWFmNTNmNzEzMWQ0MmI4ZTJiMzU1MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
QEAgLTIyOTAsMTAgKzIyOTAsMTEgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
YnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ2FsbERPTTogewotICAgICAgICBET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50KiBwYXRjaHBvaW50ID0gbm9kZS0+Y2FsbERPTURhdGEoKS0+cGF0Y2hwb2lu
dDsKKyAgICAgICAgQ2FsbERPTURhdGEqIGNhbGxET01EYXRhID0gbm9kZS0+Y2FsbERPTURhdGEo
KTsKKyAgICAgICAgRE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludCogcGF0Y2hwb2ludCA9IGNhbGxE
T01EYXRhLT5wYXRjaHBvaW50OwogICAgICAgICBpZiAocGF0Y2hwb2ludC0+ZWZmZWN0LndyaXRl
cykKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2Ji
ZXJMaW1pdCk7Ci0gICAgICAgIGZvck5vZGUobm9kZSkubWFrZUJ5dGVjb2RlVG9wKCk7CisgICAg
ICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShtX2dyYXBoLCBjYWxsRE9NRGF0YS0+ZG9tSklULT5y
ZXN1bHRUeXBlKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBDaGVja0FycmF5
OiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEdldHRl
clNldHRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRHZXR0ZXJTZXR0
ZXIuaAppbmRleCA0NGM0MzIyOGYzYjdiZDAyYWQ4ZjJlOTBhNmI2NDk3NmNmMjM2NTVkLi41YWQw
M2NlN2ZhYjlmOTY4ZDJiYjEzYmYyYzYxYTU2Y2I3ZTc2ZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZG9taml0L0RPTUpJVEdldHRlclNldHRlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUR2V0dGVyU2V0dGVyLmgKQEAgLTM3LDEwICszNywx
MSBAQCBjbGFzcyBHZXR0ZXJTZXR0ZXIgewogICAgIHR5cGVkZWYgUHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmMgQ3VzdG9tR2V0dGVyOwogICAgIHR5cGVkZWYgUHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmMgQ3VzdG9tU2V0dGVyOwogCi0gICAgR2V0dGVyU2V0dGVyKEN1c3RvbUdldHRlciBn
ZXR0ZXIsIEN1c3RvbVNldHRlciBzZXR0ZXIsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQor
ICAgIEdldHRlclNldHRlcihDdXN0b21HZXR0ZXIgZ2V0dGVyLCBDdXN0b21TZXR0ZXIgc2V0dGVy
LCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywgU3BlY3VsYXRlZFR5cGUgcmVzdWx0VHlwZSkK
ICAgICAgICAgOiBtX2dldHRlcihnZXR0ZXIpCiAgICAgICAgICwgbV9zZXR0ZXIoc2V0dGVyKQog
ICAgICAgICAsIG1fdGhpc0NsYXNzSW5mbyhjbGFzc0luZm8pCisgICAgICAgICwgbV9yZXN1bHRU
eXBlKHJlc3VsdFR5cGUpCiAgICAgewogICAgIH0KIApAQCAtNDksNiArNTAsNyBAQCBjbGFzcyBH
ZXR0ZXJTZXR0ZXIgewogICAgIEN1c3RvbUdldHRlciBnZXR0ZXIoKSBjb25zdCB7IHJldHVybiBt
X2dldHRlcjsgfQogICAgIEN1c3RvbVNldHRlciBzZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX3Nl
dHRlcjsgfQogICAgIGNvbnN0IENsYXNzSW5mbyogdGhpc0NsYXNzSW5mbygpIGNvbnN0IHsgcmV0
dXJuIG1fdGhpc0NsYXNzSW5mbzsgfQorICAgIFNwZWN1bGF0ZWRUeXBlIHJlc3VsdFR5cGUoKSBj
b25zdCB7IHJldHVybiBtX3Jlc3VsdFR5cGU7IH0KIAogI2lmIEVOQUJMRShKSVQpCiAgICAgdmly
dHVhbCBSZWY8RE9NSklUOjpDYWxsRE9NUGF0Y2hwb2ludD4gY2FsbERPTSgpID0gMDsKQEAgLTU5
LDYgKzYxLDcgQEAgY2xhc3MgR2V0dGVyU2V0dGVyIHsKICAgICBDdXN0b21HZXR0ZXIgbV9nZXR0
ZXI7CiAgICAgQ3VzdG9tU2V0dGVyIG1fc2V0dGVyOwogICAgIGNvbnN0IENsYXNzSW5mbyogbV90
aGlzQ2xhc3NJbmZvOworICAgIFNwZWN1bGF0ZWRUeXBlIG1fcmVzdWx0VHlwZTsKIH07CiAKIH0g
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBhMDM5NmFhY2VkYTJmYmI2MjE1NWJiOWEwMjExMTQ2
NDE2ZjFkOGYzLi5jZmNjMDE1OTc3YzE0NDY5ZWU0YjYxNzE1Y2RjMTg4OTRlZjE2MmJiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcApAQCAtNjE2LDcgKzYxNiw3IEBAIGNsYXNzIERPTUpJVEdldHRlciA6
IHB1YmxpYyBET01KSVROb2RlIHsKICAgICBjbGFzcyBET01KSVROb2RlRE9NSklUIDogcHVibGlj
IERPTUpJVDo6R2V0dGVyU2V0dGVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIERPTUpJVE5vZGVE
T01KSVQoKQotICAgICAgICAgICAgOiBET01KSVQ6OkdldHRlclNldHRlcihET01KSVRHZXR0ZXI6
OmN1c3RvbUdldHRlciwgbnVsbHB0ciwgRE9NSklUTm9kZTo6aW5mbygpKQorICAgICAgICAgICAg
OiBET01KSVQ6OkdldHRlclNldHRlcihET01KSVRHZXR0ZXI6OmN1c3RvbUdldHRlciwgbnVsbHB0
ciwgRE9NSklUTm9kZTo6aW5mbygpLCBTcGVjSW50MzJPbmx5KQogICAgICAgICB7CiAgICAgICAg
IH0KIApAQCAtNzAxLDcgKzcwMSw3IEBAIGNsYXNzIERPTUpJVEdldHRlckNvbXBsZXggOiBwdWJs
aWMgRE9NSklUTm9kZSB7CiAgICAgY2xhc3MgRE9NSklUTm9kZURPTUpJVCA6IHB1YmxpYyBET01K
SVQ6OkdldHRlclNldHRlciB7CiAgICAgcHVibGljOgogICAgICAgICBET01KSVROb2RlRE9NSklU
KCkKLSAgICAgICAgICAgIDogRE9NSklUOjpHZXR0ZXJTZXR0ZXIoRE9NSklUR2V0dGVyQ29tcGxl
eDo6Y3VzdG9tR2V0dGVyLCBudWxscHRyLCBET01KSVROb2RlOjppbmZvKCkpCisgICAgICAgICAg
ICA6IERPTUpJVDo6R2V0dGVyU2V0dGVyKERPTUpJVEdldHRlckNvbXBsZXg6OmN1c3RvbUdldHRl
ciwgbnVsbHB0ciwgRE9NSklUTm9kZTo6aW5mbygpLCBTcGVjSW50MzJPbmx5KQogICAgICAgICB7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQppbmRleCA3N2NkOTc0Njc1NzU5NWQ1NDZhZjg5ODkzMzgzNTUzZDNh
ZjBiN2VhLi45M2RmZTZhZmI0YTg3YzVkNDNmYmZjOTMxMmY4NGMwZjk3NTI3ZDNhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpA
QCAtMjQ5MSw2ICsyNDkxLDQyIEBAIHN1YiBhZGRVbnNjb3BhYmxlUHJvcGVydGllcwogICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT51bnNjb3BhYmxlc1N5bWJvbCwgJnVuc2NvcGFibGVzLCBEb250RW51bSB8
IFJlYWRPbmx5KTtcbiIpOwogfQogCitzdWIgR2V0UmVzdWx0VHlwZUZpbHRlcgoreworICAgIG15
ICgkc2lnbmF0dXJlKSA9IEBfOworICAgIG15ICRpZGxUeXBlID0gJHNpZ25hdHVyZS0+aWRsVHlw
ZTsKKworICAgIG15ICVUeXBlRmlsdGVycyA9ICgKKyAgICAgICAgImFueSIgPT4gIlNwZWNIZWFw
VG9wIiwKKyAgICAgICAgImJvb2xlYW4iID0+ICJTcGVjQm9vbGVhbiIsCisgICAgICAgICJieXRl
IiA9PiAiU3BlY0ludDMyT25seSIsCisgICAgICAgICJvY3RldCIgPT4gIlNwZWNJbnQzMk9ubHki
LAorICAgICAgICAic2hvcnQiID0+ICJTcGVjSW50MzJPbmx5IiwKKyAgICAgICAgInVuc2lnbmVk
IHNob3J0IiA9PiAiU3BlY0ludDMyT25seSIsCisgICAgICAgICJsb25nIiA9PiAiU3BlY0ludDMy
T25seSIsCisgICAgICAgICJ1bnNpZ25lZCBsb25nIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwK
KyAgICAgICAgImxvbmcgbG9uZyIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCisgICAgICAgICJ1
bnNpZ25lZCBsb25nIGxvbmciID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAorICAgICAgICAiZmxv
YXQiID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAorICAgICAgICAidW5yZXN0cmljdGVkIGZsb2F0
IiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKKyAgICAgICAgImRvdWJsZSIgPT4gIlNwZWNCeXRl
Y29kZU51bWJlciIsCisgICAgICAgICJ1bnJlc3RyaWN0ZWQgZG91YmxlIiA9PiAiU3BlY0J5dGVj
b2RlTnVtYmVyIiwKKyAgICAgICAgIkRPTVN0cmluZyIgPT4gIlNwZWNTdHJpbmciLAorICAgICAg
ICAiQnl0ZVN0cmluZyIgPT4gIlNwZWNTdHJpbmciLAorICAgICAgICAiVVNWU3RyaW5nIiA9PiAi
U3BlY1N0cmluZyIsCisgICAgKTsKKworICAgIGlmIChleGlzdHMgJFR5cGVGaWx0ZXJzeyRpZGxU
eXBlLT5uYW1lfSkgeworICAgICAgICBteSAkcmVzdWx0VHlwZSA9ICJKU0M6OiRUeXBlRmlsdGVy
c3skaWRsVHlwZS0+bmFtZX0iOworICAgICAgICBpZiAoJGlkbFR5cGUtPmlzTnVsbGFibGUpIHsK
KyAgICAgICAgICAgIGRpZSAiXCJhbnlcIiB0eXBlIG11c3Qgbm90IGJlY29tZSBudWxsYWJsZS4i
IGlmICRpZGxUeXBlLT5uYW1lIGVxICJhbnkiOworICAgICAgICAgICAgJHJlc3VsdFR5cGUgPSAi
KCRyZXN1bHRUeXBlIHwgSlNDOjpTcGVjT3RoZXIpIjsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4gJHJlc3VsdFR5cGU7CisgICAgfQorICAgIHJldHVybiAiU3BlY0hlYXBUb3AiOworfQorCiBz
dWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogewogICAgIG15ICgkb2JqZWN0LCAkaW50ZXJmYWNl
LCAkZW51bWVyYXRpb25zLCAkZGljdGlvbmFyaWVzKSA9IEBfOwpAQCAtMzI2OCw4ICszMzA0LDkg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICBteSAkZG9tSklU
Q2xhc3NOYW1lID0gJGdlbmVyYXRvck5hbWUgLiAiRE9NSklUIjsKICAgICAgICAgICAgICAgICBt
eSAkZ2V0dGVyID0gR2V0QXR0cmlidXRlR2V0dGVyTmFtZSgkaW50ZXJmYWNlLCAkZ2VuZXJhdG9y
TmFtZSwgJGF0dHJpYnV0ZSk7CiAgICAgICAgICAgICAgICAgbXkgJHNldHRlciA9IElzUmVhZG9u
bHkoJGF0dHJpYnV0ZSkgPyAibnVsbHB0ciIgOiBHZXRBdHRyaWJ1dGVTZXR0ZXJOYW1lKCRpbnRl
cmZhY2UsICRnZW5lcmF0b3JOYW1lLCAkYXR0cmlidXRlKTsKKyAgICAgICAgICAgICAgICBteSAk
cmVzdWx0VHlwZSA9IEdldFJlc3VsdFR5cGVGaWx0ZXIoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsK
ICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiRkb21KSVRDbGFzc05hbWU6OiRk
b21KSVRDbGFzc05hbWUoKVxuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKCRnZXR0ZXIsICRzZXR0ZXIsICR7Y2xh
c3NOYW1lfTo6aW5mbygpKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKCRnZXR0ZXIsICRzZXR0ZXIsICR7Y2xh
c3NOYW1lfTo6aW5mbygpLCAkcmVzdWx0VHlwZSlcbiIpOwogICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ9XG5cbiIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4MmE2NzBlYTQyZmUyNzc0
MjZjY2QwMmNhYmEzNjkwM2NlYjExYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RE9NSklULmNwcApAQCAtMCwwICsxLDEx
MTMgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTVGVzdERPTUpJVC5oIgorCisjaW5jbHVkZSAiSlNCeXRlU3RyaW5nLmgiCisjaW5j
bHVkZSAiSlNET01CaW5kaW5nLmgiCisjaW5jbHVkZSAiSlNET01Db25zdHJ1Y3Rvci5oIgorI2lu
Y2x1ZGUgIkpTRE9NQ29udmVydC5oIgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBBdHRyaWJ1dGVzCisKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0RE9NSklUQW55QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUQm9vbGVh
bkF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVBdHRyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRPY3RldEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdERPTUpJVFNob3J0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklU
VW5zaWduZWRTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdB
dHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5h
bWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwor
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nTG9uZ0F0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RET01KSVRGbG9hdEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
RE9NSklURG91YmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0
cmljdGVkRG91YmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklURG9tU3Ry
aW5nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFVzdlN0cmluZ0F0dHIoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHIoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1Zh
bHVlIGpzVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9N
SklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVk
SlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RE
T01KSVRMb25nTG9uZ051bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9N
SklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5j
b2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERP
TUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29k
ZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdERPTUpJVENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RET01KSVRDb25zdHJ1Y3Rv
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFs
dWUpOworCitjbGFzcyBKU1Rlc3RET01KSVRQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU05vbkZp
bmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNDOjpKU05vbkZpbmFsT2Jq
ZWN0OworICAgIHN0YXRpYyBKU1Rlc3RET01KSVRQcm90b3R5cGUqIGNyZWF0ZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorICAgIHsKKyAgICAgICAgSlNUZXN0RE9NSklUUHJvdG90eXBlKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdERPTUpJVFByb3RvdHlwZT4odm0uaGVh
cCkpIEpTVGVzdERPTUpJVFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAg
ICB9CisKKyAgICBERUNMQVJFX0lORk87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3By
aXZhdGU6CisgICAgSlNUZXN0RE9NSklUUHJvdG90eXBlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBKU0M6OkpT
Tm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihKU0M6OlZNJik7Cit9OworCit1c2luZyBKU1Rlc3RET01KSVRDb25zdHJ1
Y3RvciA9IEpTRE9NQ29uc3RydWN0b3JOb3RDb25zdHJ1Y3RhYmxlPEpTVGVzdERPTUpJVD47CisK
K3RlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RET01KSVRDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQoreworICAgIHJldHVybiBKU05vZGU6OmdldENvbnN0cnVjdG9yKHZtLCAmZ2xvYmFsT2Jq
ZWN0KTsKK30KKwordGVtcGxhdGU8PiB2b2lkIEpTVGVzdERPTUpJVENvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
Cit7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVz
dERPTUpJVDo6cHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRP
bmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFt
ZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdERPTUpJ
VCIpKSksIFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7Cit9CisK
K3RlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERPTUpJVENvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0RE9NSklUIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3RET01KSVRDb25zdHJ1Y3RvcikgfTsKKworLyogSGFzaCB0YWJsZSBmb3IgcHJvdG90
eXBlICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RET01KSVRQcm90b3R5
cGVUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7ICJjb25zdHJ1Y3RvciIsIERvbnRFbnVtLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdERPTUpJVENvbnN0cnVjdG9yKSwgKGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQ
cm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0RE9NSklUQ29uc3RydWN0b3IpIH0g
fSwKKyAgICB7ICJhbnlBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0
dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRl
clNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEFueUF0dHIp
LCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAiYm9vbGVhbkF0dHIiLCBSZWFkT25seSB8IEN1
c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qp
c3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0
ZXJGb3JUZXN0RE9NSklUQm9vbGVhbkF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAi
Ynl0ZUF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2Vu
ZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUQnl0ZUF0dHIpLCAoaW50cHRy
X3QpICgwKSB9IH0sCisgICAgeyAib2N0ZXRBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3Nv
ciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0
PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERP
TUpJVE9jdGV0QXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJzaG9ydEF0dHIiLCBS
ZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21K
SVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUU2hvcnRBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9
LAorICAgIHsgInVuc2lnbmVkU2hvcnRBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8
IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PERP
TUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJ
VFVuc2lnbmVkU2hvcnRBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImxvbmdBdHRy
IiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4o
ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVExvbmdBdHRyKSwgKGludHB0cl90KSAoMCkg
fSB9LAorICAgIHsgInVuc2lnbmVkTG9uZ0F0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29y
IHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9N
SklUVW5zaWduZWRMb25nQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJsb25nTG9u
Z0F0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJh
dG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUTG9uZ0xvbmdBdHRyKSwgKGludHB0
cl90KSAoMCkgfSB9LAorICAgIHsgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIiwgUmVhZE9ubHkgfCBD
dXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0
dGVyRm9yVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9
LAorICAgIHsgImZsb2F0QXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRB
dHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0
ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRGbG9hdEF0
dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAidW5yZXN0cmljdGVkRmxvYXRBdHRyIiwg
UmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9t
SklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ciksIChpbnRw
dHJfdCkgKDApIH0gfSwKKyAgICB7ICJkb3VibGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nl
c3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVz
dERPTUpJVERvdWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAidW5yZXN0cmlj
dGVkRG91YmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1
dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0
ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnJlc3RyaWN0ZWRE
b3VibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImRvbVN0cmluZ0F0dHIiLCBS
ZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywg
eyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21K
SVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklURG9tU3RyaW5nQXR0ciksIChpbnRwdHJfdCkgKDAp
IH0gfSwKKyAgICB7ICJieXRlU3RyaW5nQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3Ig
fCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxE
T01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01K
SVRCeXRlU3RyaW5nQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJ1c3ZTdHJpbmdB
dHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRv
cj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVzdlN0cmluZ0F0dHIpLCAoaW50cHRy
X3QpICgwKSB9IH0sCisgICAgeyAiYm9vbGVhbk51bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3Vz
dG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRl
ckZvclRlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAor
ICAgIHsgImJ5dGVOdWxsYWJsZUF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9N
SklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklU
R2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUQnl0
ZU51bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJvY3RldE51bGxhYmxl
QXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0
b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ciksIChp
bnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJzaG9ydE51bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwg
Q3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJf
dClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNl
dHRlckZvclRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwK
KyAgICB7ICJ1bnNpZ25lZFNob3J0TnVsbGFibGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nl
c3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVz
dERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisg
ICAgeyAibG9uZ051bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01K
SVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRH
ZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRMb25n
TnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgInVuc2lnbmVkTG9uZ051
bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUs
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJH
ZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxs
YWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibG9uZ0xvbmdOdWxsYWJsZUF0
dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9y
Pihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHIpLCAo
aW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAidW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ciIs
IFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRv
bUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRy
KSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImZsb2F0TnVsbGFibGVBdHRyIiwgUmVhZE9u
bHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGlu
dHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0
dGVyU2V0dGVyRm9yVGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkg
fSB9LAorICAgIHsgInVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyIiwgUmVhZE9ubHkgfCBD
dXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90
KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0
dGVyRm9yVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyKSwgKGludHB0cl90
KSAoMCkgfSB9LAorICAgIHsgImRvdWJsZU51bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9t
QWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZv
clRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAg
eyAidW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nl
c3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVz
dERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDApIH0g
fSwKKyAgICB7ICJkb21TdHJpbmdOdWxsYWJsZUF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vz
c29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0
RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsg
ImJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9N
SklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklU
R2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUQnl0
ZVN0cmluZ051bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJ1c3ZTdHJp
bmdOdWxsYWJsZUF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmli
dXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0
dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVXN2U3RyaW5nTnVs
bGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAorfTsKKworY29uc3QgQ2xhc3NJbmZvIEpT
VGVzdERPTUpJVFByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdERPTUpJVFByb3RvdHlwZSIsICZC
YXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RE9NSklUUHJvdG90eXBl
KSB9OworCit2b2lkIEpTVGVzdERPTUpJVFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0YXRpY1Byb3Bl
cnRpZXModm0sIEpTVGVzdERPTUpJVFByb3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Cit9CisK
K2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RET01KSVQ6OnNfaW5mbyA9IHsgIlRlc3RET01KSVQiLCAm
QmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERPTUpJVCkgfTsKKwor
SlNUZXN0RE9NSklUOjpKU1Rlc3RET01KSVQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RE9NSklUPiYmIGltcGwpCisgICAgOiBK
U05vZGUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK0pT
T2JqZWN0KiBKU1Rlc3RET01KSVQ6OmNyZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTVGVzdERPTUpJVFByb3RvdHlwZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIEpTVGVzdERPTUpJVFByb3RvdHlwZTo6Y3JlYXRlU3Ry
dWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIEpTTm9kZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmpl
Y3QpKSk7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RET01KSVQ6OnByb3RvdHlwZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlw
ZTxKU1Rlc3RET01KSVQ+KHZtLCBnbG9iYWxPYmplY3QpOworfQorCit0ZW1wbGF0ZTw+IGlubGlu
ZSBKU1Rlc3RET01KSVQqIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvckF0dHJp
YnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJu
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0RE9NSklUKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQW55QXR0ckdldHRlcihF
eGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5j
b2RlZEpTVmFsdWUganNUZXN0RE9NSklUQW55QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUQW55QXR0ckdldHRlcj4o
c3RhdGUsIHRoaXNWYWx1ZSwgImFueUF0dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVEFueUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklU
JiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMQW55
PihpbXBsLmFueUF0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJVEFu
eUF0dHJET01KSVQ6OlRlc3RET01KSVRBbnlBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQW55QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIEpTQzo6U3BlY0hlYXBUb3ApCit7Cit9CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRBbnlBdHRyKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGVzdERPTUpJVEFueUF0dHJET01KSVQ+IGNvbXBpbGVyOwor
ICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRCb29sZWFuQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUQm9v
bGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0
cmlidXRlPGpzVGVzdERPTUpJVEJvb2xlYW5BdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAi
Ym9vbGVhbkF0dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJv
b2xlYW5BdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhpc09iamVj
dCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEJvb2xlYW4+KGltcGwu
Ym9vbGVhbkF0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJVEJvb2xl
YW5BdHRyRE9NSklUOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQoKQorICAgIDogSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCb29sZWFuQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0Jvb2xlYW4pCit7Cit9CisKK0pTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRCb29sZWFuQXR0
cigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRlc3RET01KSVRCb29sZWFuQXR0ckRP
TUpJVD4gY29tcGlsZXI7CisgICAgcmV0dXJuICZjb21waWxlci5nZXQoKTsKK30KKworc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpT
VGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RET01KSVRCeXRlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RE
T01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUQnl0ZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlz
VmFsdWUsICJieXRlQXR0ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9N
SklUQnl0ZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2Jq
ZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Nj
b3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2Jq
ZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMQnl0ZT4oaW1wbC5i
eXRlQXR0cigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitUZXN0RE9NSklUQnl0ZUF0dHJE
T01KSVQ6OlRlc3RET01KSVRCeXRlQXR0ckRPTUpJVCgpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5KQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUQnl0ZUF0dHIoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0RE9NSklUQnl0ZUF0dHJET01KSVQ+IGNvbXBpbGVyOwor
ICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRPY3RldEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0RE9NSklUJiwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0
QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1
dGU8anNUZXN0RE9NSklUT2N0ZXRBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAib2N0ZXRB
dHRyIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRPY3RldEF0dHJH
ZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMT2N0ZXQ+KGltcGwub2N0ZXRBdHRyKCkp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Rlc3RET01KSVRPY3RldEF0dHJET01KSVQ6OlRl
c3RET01KSVRPY3RldEF0dHJET01KSVQoKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRl
cihqc1Rlc3RET01KSVRPY3RldEF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBK
U0M6OlNwZWNJbnQzMk9ubHkpCit7Cit9CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRv
bUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRPY3RldEF0dHIoKQoreworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklUPiBjb21waWxlcjsKKyAgICBy
ZXR1cm4gJmNvbXBpbGVyLmdldCgpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0
RE9NSklUU2hvcnRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRTaG9ydEF0dHIo
RXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
Cit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpz
VGVzdERPTUpJVFNob3J0QXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInNob3J0QXR0ciIp
OworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUU2hvcnRBdHRyR2V0dGVy
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFNob3J0PihpbXBsLnNob3J0QXR0cigpKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9N
SklUU2hvcnRBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpT
cGVjSW50MzJPbmx5KQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRH
ZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUU2hvcnRBdHRyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8VGVzdERPTUpJVFNob3J0QXR0ckRPTUpJVD4gY29tcGlsZXI7CisgICAgcmV0dXJu
ICZjb21waWxlci5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VFVuc2lnbmVkU2hvcnRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25l
ZFNob3J0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+Ojph
dHRyaWJ1dGU8anNUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlz
VmFsdWUsICJ1bnNpZ25lZFNob3J0QXR0ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNU
ZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVO
VVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1
dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlM8SURMVW5zaWduZWRTaG9ydD4oaW1wbC51bnNpZ25lZFNob3J0QXR0cigpKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01KSVQ6OlRlc3RE
T01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVCgpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5KQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0
dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0RE9NSklUVW5zaWduZWRTaG9y
dEF0dHJET01KSVQ+IGNvbXBpbGVyOworICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nQXR0ckdldHRlcihFeGVjU3Rh
dGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpT
VmFsdWUganNUZXN0RE9NSklUTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8
SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVExvbmdBdHRyR2V0dGVyPihzdGF0
ZSwgdGhpc1ZhbHVlLCAibG9uZ0F0dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdERPTUpJVExvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYg
dGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETExvbmc+
KGltcGwubG9uZ0F0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJVExv
bmdBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0F0dHJET01KSVQoKQorICAgIDogSlNDOjpET01K
SVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIEpTQzo6U3BlY0ludDMyT25seSkKK3sKK30KKworSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVExvbmdBdHRyKCkKK3sK
KyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGVzdERPTUpJVExvbmdBdHRyRE9NSklUPiBjb21w
aWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgpOworfQorCitzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rl
c3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNU
ZXN0RE9NSklUVW5zaWduZWRMb25nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxK
U1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ckdldHRl
cj4oc3RhdGUsIHRoaXNWYWx1ZSwgInVuc2lnbmVkTG9uZ0F0dHIiKTsKK30KKworc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlM8SURMVW5zaWduZWRMb25nPihpbXBsLnVuc2lnbmVkTG9uZ0F0dHIoKSk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJET01K
SVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQoreworfQorCitKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVW5z
aWduZWRMb25nQXR0cigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRlc3RET01KSVRV
bnNpZ25lZExvbmdBdHRyRE9NSklUPiBjb21waWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdl
dCgpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdBdHRy
R2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUp
OworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVExv
bmdMb25nQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImxvbmdMb25nQXR0ciIpOworfQor
CitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETExvbmdMb25nPihpbXBsLmxvbmdMb25nQXR0cigpKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUOjpU
ZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0xvbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCit7Cit9CisKK0pTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRMb25nTG9uZ0F0dHIoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklU
PiBjb21waWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgpOworfQorCitzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0
YXRlJiwgSlNUZXN0RE9NSklUJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRK
U1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBC
aW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RET01KSVRVbnNpZ25l
ZExvbmdMb25nQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInVuc2lnbmVkTG9uZ0xvbmdB
dHRyIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExv
bmdMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmpl
Y3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExVbnNpZ25lZExvbmdM
b25nPihpbXBsLnVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2ln
bmVkTG9uZ0xvbmdBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIo
anNUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6
aW5mbygpLCBKU0M6OlNwZWNCeXRlY29kZU51bWJlcikKK3sKK30KKworSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xv
bmdBdHRyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGVzdERPTUpJVFVuc2lnbmVk
TG9uZ0xvbmdBdHRyRE9NSklUPiBjb21waWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgp
OworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURmxvYXRBdHRyR2V0dGVy
KEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRGbG9hdEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVEZsb2F0QXR0ckdl
dHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImZsb2F0QXR0ciIpOworfQorCitzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklURmxvYXRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VGVzdERPTUpJVCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTPElETEZsb2F0PihpbXBsLmZsb2F0QXR0cigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitUZXN0RE9NSklURmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXRBdHRyRE9NSklUKCkK
KyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXRBdHRyLCBu
dWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCit7
Cit9CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRl
c3RET01KSVRGbG9hdEF0dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0RE9N
SklURmxvYXRBdHRyRE9NSklUPiBjb21waWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgp
OworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxv
YXRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93
U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRl
PGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1
ZSwgInVucmVzdHJpY3RlZEZsb2F0QXR0ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTVGVzdERPTUpJVCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAg
ICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSB0b0pTPElETFVucmVzdHJpY3RlZEZsb2F0PihpbXBsLnVucmVzdHJpY3RlZEZsb2F0QXR0cigp
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRB
dHRyRE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUKCkKKyAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1i
ZXIpCit7Cit9CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRl
ckZvclRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHIoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUPiBjb21waWxl
cjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklURG91YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQm
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklU
RG91YmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+Ojph
dHRyaWJ1dGU8anNUZXN0RE9NSklURG91YmxlQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwg
ImRvdWJsZUF0dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERv
dWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0
LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRG91YmxlPihpbXBsLmRv
dWJsZUF0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJVERvdWJsZUF0
dHJET01KSVQ6OlRlc3RET01KSVREb3VibGVBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG91YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQoreworfQorCitKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklURG91YmxlQXR0
cigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRlc3RET01KSVREb3VibGVBdHRyRE9N
SklUPiBjb21waWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgpOworfQorCitzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckdldHRlcihF
eGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5j
b2RlZEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBy
ZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklU
VW5yZXN0cmljdGVkRG91YmxlQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInVucmVzdHJp
Y3RlZERvdWJsZUF0dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VFVucmVzdHJpY3RlZERvdWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9N
SklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURM
VW5yZXN0cmljdGVkRG91YmxlPihpbXBsLnVucmVzdHJpY3RlZERvdWJsZUF0dHIoKSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01K
SVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ciwg
bnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQor
eworfQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0cigpCit7CisgICAgc3RhdGljIE5ldmVyRGVz
dHJveWVkPFRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyRE9NSklUPiBjb21waWxlcjsK
KyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0RE9NSklURG9tU3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQm
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklU
RG9tU3RyaW5nQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+
OjphdHRyaWJ1dGU8anNUZXN0RE9NSklURG9tU3RyaW5nQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNW
YWx1ZSwgImRvbVN0cmluZ0F0dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVERvbVN0cmluZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklU
JiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9N
U3RyaW5nPihzdGF0ZSwgaW1wbC5kb21TdHJpbmdBdHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7
Cit9CisKK1Rlc3RET01KSVREb21TdHJpbmdBdHRyRE9NSklUOjpUZXN0RE9NSklURG9tU3RyaW5n
QXR0ckRPTUpJVCgpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VERvbVN0cmluZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNT
dHJpbmcpCit7Cit9CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNl
dHRlckZvclRlc3RET01KSVREb21TdHJpbmdBdHRyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01KSVQ+IGNvbXBpbGVyOworICAgIHJldHVy
biAmY29tcGlsZXIuZ2V0KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01K
SVRCeXRlU3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZVN0cmlu
Z0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0
eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmli
dXRlPGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAi
Ynl0ZVN0cmluZ0F0dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VEJ5dGVTdHJpbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhp
c09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKCZzdGF0ZSwgdGhp
c09iamVjdC5nbG9iYWxPYmplY3QoKSwgaW1wbC5ieXRlU3RyaW5nQXR0cigpKTsKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01K
SVRCeXRlU3RyaW5nQXR0ckRPTUpJVCgpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgSlNDOjpTcGVjU3RyaW5nKQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBk
b21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHIoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQ+IGNvbXBp
bGVyOworICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNW
YWx1ZSBqc1Rlc3RET01KSVRVc3ZTdHJpbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERP
TUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RE
T01KSVRVc3ZTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERP
TUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RET01KSVRVc3ZTdHJpbmdBdHRyR2V0dGVyPihzdGF0ZSwg
dGhpc1ZhbHVlLCAidXN2U3RyaW5nQXR0ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RE
T01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJ
RExVU1ZTdHJpbmc+KHN0YXRlLCBpbXBsLnVzdlN0cmluZ0F0dHIoKSk7CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworVGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZT
dHJpbmdBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0
RE9NSklUVXN2U3RyaW5nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6
U3BlY1N0cmluZykKK3sKK30KKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0
dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVzdlN0cmluZ0F0dHIoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVD4gY29tcGlsZXI7CisgICAg
cmV0dXJuICZjb21waWxlci5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0RE9NSklU
JiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJ
VEJvb2xlYW5OdWxsYWJsZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0
RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJHZXR0ZXI+
KHN0YXRlLCB0aGlzVmFsdWUsICJib29sZWFuTnVsbGFibGVBdHRyIik7Cit9CisKK3N0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNT
dGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dT
Y29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElETEJvb2xlYW4+PihpbXBsLmJvb2xlYW5O
dWxsYWJsZUF0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJVEJvb2xl
YW5OdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyRE9NSklU
KCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUQm9vbGVhbk51
bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCb29s
ZWFuIHwgSlNDOjpTcGVjT3RoZXIpKQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVy
KiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0cigpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRy
RE9NSklUPiBjb21waWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgpOworfQorCitzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckdldHRlcihFeGVj
U3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2Rl
ZEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUQnl0ZU51bGxh
YmxlQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImJ5dGVOdWxsYWJsZUF0dHIiKTsKK30K
Kworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJHZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMQnl0ZT4+KGltcGwuYnl0
ZU51bGxhYmxlQXR0cigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitUZXN0RE9NSklUQnl0
ZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJET01KSVQoKQor
ICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8
IEpTQzo6U3BlY090aGVyKSkKK3sKK30KKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9t
SklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHIoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVD4gY29t
cGlsZXI7CisgICAgcmV0dXJuICZjb21waWxlci5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpT
VGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RET01KSVRPY3RldE51bGxhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJH
ZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJvY3RldE51bGxhYmxlQXR0ciIpOworfQorCitzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMT2N0ZXQ+PihpbXBsLm9jdGV0TnVs
bGFibGVBdHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Rlc3RET01KSVRPY3RldE51
bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyRE9NSklUKCkKKyAg
ICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0
dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwg
SlNDOjpTcGVjT3RoZXIpKQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21K
SVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHIoKQoreworICAgIHN0
YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJET01KSVQ+IGNv
bXBpbGVyOworICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmLCBK
U1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUg
anNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxs
ZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRy
R2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAic2hvcnROdWxsYWJsZUF0dHIiKTsKK30KKworc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElETFNob3J0Pj4oaW1wbC5zaG9ydE51
bGxhYmxlQXR0cigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitUZXN0RE9NSklUU2hvcnRO
dWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCgpCisg
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFNob3J0TnVsbGFibGVB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0ludDMyT25seSB8
IEpTQzo6U3BlY090aGVyKSkKK3sKK30KKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9t
SklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyRE9NSklUPiBj
b21waWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgpOworfQorCitzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckdldHRlcihFeGVj
U3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2Rl
ZEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBy
ZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklU
VW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInVuc2ln
bmVkU2hvcnROdWxsYWJsZUF0dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlM8SURMTnVsbGFibGU8SURMVW5zaWduZWRTaG9ydD4+KGltcGwudW5zaWduZWRTaG9ydE51
bGxhYmxlQXR0cigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitUZXN0RE9NSklUVW5zaWdu
ZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJs
ZUF0dHJET01KSVQoKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01K
SVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8o
KSwgKEpTQzo6U3BlY0ludDMyT25seSB8IEpTQzo6U3BlY090aGVyKSkKK3sKK30KKworSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVuc2ln
bmVkU2hvcnROdWxsYWJsZUF0dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0
RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVD4gY29tcGlsZXI7CisgICAgcmV0
dXJuICZjb21waWxlci5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVExvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0RE9NSklUJiwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdO
dWxsYWJsZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6
YXR0cmlidXRlPGpzVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlz
VmFsdWUsICJsb25nTnVsbGFibGVBdHRyIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRMb25nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
dERPTUpJVCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
PElETE51bGxhYmxlPElETExvbmc+PihpbXBsLmxvbmdOdWxsYWJsZUF0dHIoKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RE
T01KSVRMb25nTnVsbGFibGVBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIoanNUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklU
OjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhlcikpCit7Cit9CisK
K0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01K
SVRMb25nTnVsbGFibGVBdHRyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGVzdERP
TUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQ+IGNvbXBpbGVyOworICAgIHJldHVybiAmY29tcGls
ZXIuZ2V0KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25l
ZExvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0RE9NSklUJiwgVGhyb3dT
Y29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVk
TG9uZ051bGxhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01K
SVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyR2V0dGVy
PihzdGF0ZSwgdGhpc1ZhbHVlLCAidW5zaWduZWRMb25nTnVsbGFibGVBdHRyIik7Cit9CisKK3N0
YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJH
ZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMVW5zaWduZWRMb25n
Pj4oaW1wbC51bnNpZ25lZExvbmdOdWxsYWJsZUF0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJ
VFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwg
SlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3Bl
Y090aGVyKSkKK3sKK30KKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVy
U2V0dGVyRm9yVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0cigpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01K
SVQ+IGNvbXBpbGVyOworICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9CisKK3N0YXRpYyBp
bmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVj
U3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2Rl
ZEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJu
IEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVExvbmdM
b25nTnVsbGFibGVBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAibG9uZ0xvbmdOdWxsYWJs
ZUF0dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdMb25n
TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhpc09i
amVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dT
Y29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09i
amVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElE
TExvbmdMb25nPj4oaW1wbC5sb25nTG9uZ051bGxhYmxlQXR0cigpKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01K
SVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RE
T01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIp
KQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJG
b3JUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQ+IGNvbXBpbGVyOwor
ICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYs
IEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVy
biBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RET01KSVRVbnNp
Z25lZExvbmdMb25nTnVsbGFibGVBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAidW5zaWdu
ZWRMb25nTG9uZ051bGxhYmxlQXR0ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0
YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7
CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVz
dWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExVbnNpZ25lZExvbmdMb25nPj4oaW1wbC51bnNpZ25l
ZExvbmdMb25nTnVsbGFibGVBdHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Rlc3RE
T01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWdu
ZWRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNw
ZWNPdGhlcikpCit7Cit9CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRl
clNldHRlckZvclRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyKCkKK3sKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJs
ZUF0dHJET01KSVQ+IGNvbXBpbGVyOworICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckdldHRl
cihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKwor
RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVEZs
b2F0TnVsbGFibGVBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiZmxvYXROdWxsYWJsZUF0
dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEZsb2F0TnVsbGFi
bGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhpc09iamVjdCwg
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxlPElETEZsb2F0
Pj4oaW1wbC5mbG9hdE51bGxhYmxlQXR0cigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitU
ZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRGbG9hdE51bGxhYmxl
QXR0ckRPTUpJVCgpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VEZsb2F0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6
U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQoreworfQorCitKU0M6OkRPTUpJ
VDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklURmxvYXROdWxs
YWJsZUF0dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0RE9NSklURmxvYXRO
dWxsYWJsZUF0dHJET01KSVQ+IGNvbXBpbGVyOworICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7
Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9h
dE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVk
RmxvYXROdWxsYWJsZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9N
SklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRy
R2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAidW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHIi
KTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZs
b2F0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhp
c09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxl
PElETFVucmVzdHJpY3RlZEZsb2F0Pj4oaW1wbC51bnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0
cigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxv
YXROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxl
QXR0ckRPTUpJVCgpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJ
VFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQoreworfQor
CitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9N
SklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQ+IGNv
bXBpbGVyOworICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUg
SlNWYWx1ZSBqc1Rlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwg
SlNUZXN0RE9NSklUJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVl
IGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklURG91YmxlTnVsbGFibGVB
dHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiZG91YmxlTnVsbGFibGVBdHRyIik7Cit9CisK
K3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJHZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMRG91YmxlPj4oaW1wbC5k
b3VibGVOdWxsYWJsZUF0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJ
VERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRP
TUpJVCgpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvdWJs
ZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNC
eXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKK3sKK30KKworSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVERvdWJsZU51bGxhYmxl
QXR0cigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRlc3RET01KSVREb3VibGVOdWxs
YWJsZUF0dHJET01KSVQ+IGNvbXBpbGVyOworICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9
CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVO
dWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0RE9NSklUJiwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERv
dWJsZU51bGxhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01K
SVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRy
R2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAidW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRy
Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRE
b3VibGVOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0
aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFi
bGU8SURMVW5yZXN0cmljdGVkRG91YmxlPj4oaW1wbC51bnJlc3RyaWN0ZWREb3VibGVOdWxsYWJs
ZUF0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJVFVucmVzdHJpY3Rl
ZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51
bGxhYmxlQXR0ckRPTUpJVCgpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVz
dERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkK
K3sKK30KKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9y
VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0cigpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHJE
T01KSVQ+IGNvbXBpbGVyOworICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9CisKK3N0YXRp
YyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIo
RXhlY1N0YXRlJiwgSlNUZXN0RE9NSklUJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0Vu
Y29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBy
ZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklU
RG9tU3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiZG9tU3RyaW5n
TnVsbGFibGVBdHRyIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRE
b21TdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklU
JiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwg
PSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVs
bGFibGU8SURMRE9NU3RyaW5nPj4oc3RhdGUsIGltcGwuZG9tU3RyaW5nTnVsbGFibGVBdHRyKCkp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0
dHJET01KSVQ6OlRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQoKQorICAgIDog
SlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0
dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5nIHwgSlND
OjpTcGVjT3RoZXIpKQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRH
ZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyKCkKK3sKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckRPTUpJ
VD4gY29tcGlsZXI7CisgICAgcmV0dXJuICZjb21waWxlci5nZXQoKTsKK30KKworc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiwgSlNUZXN0RE9NSklUJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29k
ZWRKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0
dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVEJ5
dGVTdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJieXRlU3RyaW5n
TnVsbGFibGVBdHRyIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRC
eXRlU3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJ
VCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFS
QU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBs
ID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKCZzdGF0
ZSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgaW1wbC5ieXRlU3RyaW5nTnVsbGFibGVBdHRy
KCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Rlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFi
bGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCgpCisg
ICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5n
IHwgSlNDOjpTcGVjT3RoZXIpKQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBk
b21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0cigpCit7
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVB
dHRyRE9NSklUPiBjb21waWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgpOworfQorCitz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyR2V0
dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOwor
CitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7Cisg
ICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERP
TUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInVzdlN0
cmluZ051bGxhYmxlQXR0ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9N
SklUVXN2U3RyaW5nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERP
TUpJVCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElE
TE51bGxhYmxlPElETFVTVlN0cmluZz4+KHN0YXRlLCBpbXBsLnVzdlN0cmluZ051bGxhYmxlQXR0
cigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFi
bGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKCkKKyAg
ICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFi
bGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY1N0cmluZyB8
IEpTQzo6U3BlY090aGVyKSkKK3sKK30KKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9t
SklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0cigpCit7Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJE
T01KSVQ+IGNvbXBpbGVyOworICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIGpzVGVzdERPTUpJVENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIFZNJiB2bSA9IHN0YXRl
LT52bSgpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
ICAgIEpTVGVzdERPTUpJVFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RET01KSVRQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYg
KFVOTElLRUxZKCFkb21PYmplY3QpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RET01K
SVQ6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7Cit9CisKK2Jvb2wgc2V0SlNUZXN0RE9NSklUQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUp
Cit7CisgICAgVk0mIHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkVmFsdWUpOworICAgIEpTVGVzdERPTUpJVFByb3RvdHlwZSogZG9tT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RET01KSVRQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CisgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKSB7CisgICAgICAgIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNvbnN0cnVjdG9yCisgICAgcmV0dXJu
IGRvbU9iamVjdC0+cHV0RGlyZWN0KHN0YXRlLT52bSgpLCBzdGF0ZS0+cHJvcGVydHlOYW1lcygp
LmNvbnN0cnVjdG9yLCB2YWx1ZSk7Cit9CisKK0pTVmFsdWUgSlNUZXN0RE9NSklUOjpnZXRDb25z
dHJ1Y3RvcihWTSYgdm0sIGNvbnN0IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdERPTUpJVENvbnN0cnVjdG9yPih2bSwg
KmpzQ2FzdDxjb25zdCBKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworfQorCit2
b2lkIEpTVGVzdERPTUpJVDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQoreworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RE9NSklU
Kj4oY2VsbCk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0aGlzT2JqZWN0LCBpbmZv
KCkpOworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7CisgICAg
dGhpc09iamVjdC0+d3JhcHBlZCgpLnZpc2l0SlNFdmVudExpc3RlbmVycyh2aXNpdG9yKTsKK30K
KworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RE9NSklULmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RE9NSklULmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjdjNmUwMjMzNjVhMmU4M2EyZmU3ZjdjODgw
MDI2ZWY4MjI2NmUwMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuaApAQCAtMCwwICsxLDQwNiBAQAorLyoKKyAg
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisg
ICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4g
RE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTTm9kZS5oIgor
I2luY2x1ZGUgIlRlc3RET01KSVQuaCIKKyNpbmNsdWRlIDxkb21qaXQvRE9NSklUR2V0dGVyU2V0
dGVyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNUZXN0RE9NSklUIDogcHVi
bGljIEpTTm9kZSB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9kZTsKKyAgICB1c2lu
ZyBET01XcmFwcGVkID0gVGVzdERPTUpJVDsKKyAgICBzdGF0aWMgSlNUZXN0RE9NSklUKiBjcmVh
dGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmPFRlc3RET01KSVQ+JiYgaW1wbCkKKyAgICB7CisgICAgICAgIEpTVGVzdERPTUpJ
VCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RET01KSVQ+KGds
b2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0RE9NSklUKHN0cnVjdHVyZSwgKmdsb2JhbE9i
amVjdCwgV1RGTW92ZShpbXBsKSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFs
T2JqZWN0LT52bSgpKTsKKyAgICAgICAgcmV0dXJuIHB0cjsKKyAgICB9CisKKyAgICBzdGF0aWMg
SlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kik7CisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIHByb3RvdHlwZShKU0M6OlZNJiwgSlND
OjpKU0dsb2JhbE9iamVjdCopOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAg
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6OkpTVHlwZShKU05vZGVUeXBlKSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworICAgIH0KKworICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3Ry
dWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIEpTQzo6U2xvdFZpc2l0b3ImKTsKKworICAgIFRl
c3RET01KSVQmIHdyYXBwZWQoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFRlc3RET01KSVQmPihCYXNlOjp3cmFwcGVkKCkpOworICAgIH0KK3Byb3RlY3RlZDoKKyAg
ICBKU1Rlc3RET01KSVQoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxU
ZXN0RE9NSklUPiYmKTsKKworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0pCisg
ICAgeworICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIEFTU0VSVChp
bmhlcml0cyhpbmZvKCkpKTsKKyAgICB9CisKK307CisKKworLy8gRE9NSklUIGVtaXR0ZXJzIGZv
ciBhdHRyaWJ1dGVzCisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNl
dHRlckZvclRlc3RET01KSVRBbnlBdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVEFueUF0dHJE
T01KSVQgOiBwdWJsaWMgSlNDOjpET01KSVQ6OkdldHRlclNldHRlciB7CitwdWJsaWM6CisgICAg
VGVzdERPTUpJVEFueUF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6
OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpE
T01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307
CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RE
T01KSVRCb29sZWFuQXR0cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJ
VCA6IHB1YmxpYyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoKKyAgICBUZXN0
RE9NSklUQm9vbGVhbkF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6
OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpE
T01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307
CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RE
T01KSVRCeXRlQXR0cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVRCeXRlQXR0ckRPTUpJVCA6IHB1
YmxpYyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoKKyAgICBUZXN0RE9NSklU
Qnl0ZUF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6
UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNh
bGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pTQzo6
RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRPY3Rl
dEF0dHIodm9pZCk7CitjbGFzcyBUZXN0RE9NSklUT2N0ZXRBdHRyRE9NSklUIDogcHVibGljIEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworcHVibGljOgorICAgIFRlc3RET01KSVRPY3RldEF0
dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hw
b2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01Q
YXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRTaG9ydEF0dHIo
dm9pZCk7CitjbGFzcyBUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUIDogcHVibGljIEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIgeworcHVibGljOgorICAgIFRlc3RET01KSVRTaG9ydEF0dHJET01K
SVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4g
Y2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBv
aW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0
cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVCA6IHB1Ymxp
YyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoKKyAgICBUZXN0RE9NSklUVW5z
aWduZWRTaG9ydEF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRP
TUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01K
SVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisK
K0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01K
SVRMb25nQXR0cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVRMb25nQXR0ckRPTUpJVCA6IHB1Ymxp
YyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoKKyAgICBUZXN0RE9NSklUTG9u
Z0F0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0
Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnNpZ25l
ZExvbmdBdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJET01KSVQg
OiBwdWJsaWMgSlNDOjpET01KSVQ6OkdldHRlclNldHRlciB7CitwdWJsaWM6CisgICAgVGVzdERP
TUpJVFVuc2lnbmVkTG9uZ0F0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxK
U0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlND
OjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYK
K307CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRl
c3RET01KSVRMb25nTG9uZ0F0dHIodm9pZCk7CitjbGFzcyBUZXN0RE9NSklUTG9uZ0xvbmdBdHRy
RE9NSklUIDogcHVibGljIEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworcHVibGljOgorICAg
IFRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJl
ZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8
SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5k
aWYKK307CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZv
clRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVRV
bnNpZ25lZExvbmdMb25nQXR0ckRPTUpJVCA6IHB1YmxpYyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyIHsKK3B1YmxpYzoKKyAgICBUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQo
KTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hl
Y2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50
PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRGbG9hdEF0dHIodm9pZCk7Citj
bGFzcyBUZXN0RE9NSklURmxvYXRBdHRyRE9NSklUIDogcHVibGljIEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIgeworcHVibGljOgorICAgIFRlc3RET01KSVRGbG9hdEF0dHJET01KSVQoKTsKKyNp
ZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00o
KSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxs
RE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIq
IGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHIodm9p
ZCk7CitjbGFzcyBUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUIDogcHVibGlj
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworcHVibGljOgorICAgIFRlc3RET01KSVRVbnJl
c3RyaWN0ZWRGbG9hdEF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6
OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpE
T01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307
CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RE
T01KSVREb3VibGVBdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVERvdWJsZUF0dHJET01KSVQg
OiBwdWJsaWMgSlNDOjpET01KSVQ6OkdldHRlclNldHRlciB7CitwdWJsaWM6CisgICAgVGVzdERP
TUpJVERvdWJsZUF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRP
TUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01K
SVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisK
K0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01K
SVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVFVucmVzdHJp
Y3RlZERvdWJsZUF0dHJET01KSVQgOiBwdWJsaWMgSlNDOjpET01KSVQ6OkdldHRlclNldHRlciB7
CitwdWJsaWM6CisgICAgVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01KSVQoKTsK
KyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tE
T00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBj
YWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVREb21TdHJpbmdBdHRyKHZvaWQpOwor
Y2xhc3MgVGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01KSVQgOiBwdWJsaWMgSlNDOjpET01KSVQ6
OkdldHRlclNldHRlciB7CitwdWJsaWM6CisgICAgVGVzdERPTUpJVERvbVN0cmluZ0F0dHJET01K
SVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4g
Y2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBv
aW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRCeXRlU3RyaW5nQXR0cih2
b2lkKTsKK2NsYXNzIFRlc3RET01KSVRCeXRlU3RyaW5nQXR0ckRPTUpJVCA6IHB1YmxpYyBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoKKyAgICBUZXN0RE9NSklUQnl0ZVN0cmlu
Z0F0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0
Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxE
T01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVc3ZTdHJp
bmdBdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQgOiBwdWJs
aWMgSlNDOjpET01KSVQ6OkdldHRlclNldHRlciB7CitwdWJsaWM6CisgICAgVGVzdERPTUpJVFVz
dlN0cmluZ0F0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJ
VDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6
OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRC
b29sZWFuTnVsbGFibGVBdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJs
ZUF0dHJET01KSVQgOiBwdWJsaWMgSlNDOjpET01KSVQ6OkdldHRlclNldHRlciB7CitwdWJsaWM6
CisgICAgVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUo
SklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlk
ZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3Zl
cnJpZGU7CisjZW5kaWYKK307CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdl
dHRlclNldHRlckZvclRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyKHZvaWQpOworY2xhc3MgVGVz
dERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJET01KSVQgOiBwdWJsaWMgSlNDOjpET01KSVQ6OkdldHRl
clNldHRlciB7CitwdWJsaWM6CisgICAgVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHJET01KSVQo
KTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hl
Y2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50
PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0cih2
b2lkKTsKK2NsYXNzIFRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVCA6IHB1YmxpYyBK
U0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoKKyAgICBUZXN0RE9NSklUT2N0ZXRO
dWxsYWJsZUF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJ
VDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6
OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRT
aG9ydE51bGxhYmxlQXR0cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0
ckRPTUpJVCA6IHB1YmxpYyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoKKyAg
ICBUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQor
ICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAg
ICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7
CisjZW5kaWYKK307CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNl
dHRlckZvclRlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyKHZvaWQpOworY2xhc3Mg
VGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQgOiBwdWJsaWMgSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlciB7CitwdWJsaWM6CisgICAgVGVzdERPTUpJVFVuc2lnbmVkU2hv
cnROdWxsYWJsZUF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRP
TUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01K
SVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisK
K0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01K
SVRMb25nTnVsbGFibGVBdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0
dHJET01KSVQgOiBwdWJsaWMgSlNDOjpET01KSVQ6OkdldHRlclNldHRlciB7CitwdWJsaWM6Cisg
ICAgVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQor
ICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAg
ICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7
CisjZW5kaWYKK307CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNl
dHRlckZvclRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHIodm9pZCk7CitjbGFzcyBU
ZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyRE9NSklUIDogcHVibGljIEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIgeworcHVibGljOgorICAgIFRlc3RET01KSVRVbnNpZ25lZExvbmdO
dWxsYWJsZUF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJ
VDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6
OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRM
b25nTG9uZ051bGxhYmxlQXR0cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVRMb25nTG9uZ051bGxh
YmxlQXR0ckRPTUpJVCA6IHB1YmxpYyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1Ymxp
YzoKKyAgICBUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQoKTsKKyNpZiBFTkFC
TEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVy
cmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkg
b3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJ
VEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyKHZv
aWQpOworY2xhc3MgVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQg
OiBwdWJsaWMgSlNDOjpET01KSVQ6OkdldHRlclNldHRlciB7CitwdWJsaWM6CisgICAgVGVzdERP
TUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklU
KQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsK
KyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJp
ZGU7CisjZW5kaWYKK307CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRl
clNldHRlckZvclRlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0cih2b2lkKTsKK2NsYXNzIFRlc3RE
T01KSVRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVCA6IHB1YmxpYyBKU0M6OkRPTUpJVDo6R2V0dGVy
U2V0dGVyIHsKK3B1YmxpYzoKKyAgICBUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJET01KSVQo
KTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hl
Y2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50
PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51
bGxhYmxlQXR0cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxh
YmxlQXR0ckRPTUpJVCA6IHB1YmxpYyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1Ymxp
YzoKKyAgICBUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQoKTsK
KyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tE
T00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBj
YWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHIodm9p
ZCk7CitjbGFzcyBUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyRE9NSklUIDogcHVibGljIEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworcHVibGljOgorICAgIFRlc3RET01KSVREb3VibGVO
dWxsYWJsZUF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJ
VDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6
OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRV
bnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHIodm9pZCk7CitjbGFzcyBUZXN0RE9NSklUVW5y
ZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUIDogcHVibGljIEpTQzo6RE9NSklUOjpH
ZXR0ZXJTZXR0ZXIgeworcHVibGljOgorICAgIFRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVO
dWxsYWJsZUF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJ
VDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6
OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRE
b21TdHJpbmdOdWxsYWJsZUF0dHIodm9pZCk7CitjbGFzcyBUZXN0RE9NSklURG9tU3RyaW5nTnVs
bGFibGVBdHRyRE9NSklUIDogcHVibGljIEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworcHVi
bGljOgorICAgIFRlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJET01KSVQoKTsKKyNpZiBF
TkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBv
dmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9N
KCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRv
bUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyKHZvaWQp
OworY2xhc3MgVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQgOiBwdWJsaWMg
SlNDOjpET01KSVQ6OkdldHRlclNldHRlciB7CitwdWJsaWM6CisgICAgVGVzdERPTUpJVEJ5dGVT
dHJpbmdOdWxsYWJsZUF0dHJET01KSVQoKTsKKyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6
OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tET00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpE
T01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBjYWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307
CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RE
T01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIodm9pZCk7CitjbGFzcyBUZXN0RE9NSklUVXN2U3Ry
aW5nTnVsbGFibGVBdHRyRE9NSklUIDogcHVibGljIEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIg
eworcHVibGljOgorICAgIFRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQoKTsK
KyNpZiBFTkFCTEUoSklUKQorICAgIFJlZjxKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gY2hlY2tE
T00oKSBvdmVycmlkZTsKKyAgICBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01QYXRjaHBvaW50PiBj
YWxsRE9NKCkgb3ZlcnJpZGU7CisjZW5kaWYKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEpTRE9N
V3JhcHBlckNvbnZlcnRlclRyYWl0czxUZXN0RE9NSklUPiB7CisgICAgdXNpbmcgV3JhcHBlckNs
YXNzID0gSlNUZXN0RE9NSklUOworICAgIHVzaW5nIFRvV3JhcHBlZFJldHVyblR5cGUgPSBUZXN0
RE9NSklUKjsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RE9NSklULmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RE9NSklULmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5j
NGZlYTczNTBlM2Q0OTU1MDA4YmRlOTZkMTdkMzQyZmZkNmNhZmQ1Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQuaWRsCkBA
IC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybSwgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAor
ICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitpbnRlcmZhY2UgVGVzdERPTUpJVCA6IE5vZGUgeworICAgIFtET01KSVRdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBhbnkgYW55QXR0cjsKKyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBib29sZWFuQXR0cjsKKyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgYnl0
ZSBieXRlQXR0cjsKKyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgb2N0ZXQgb2N0ZXRB
dHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBzaG9ydCBzaG9ydEF0dHI7Cisg
ICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHVuc2lnbmVkU2hv
cnRBdHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxvbmdBdHRyOwor
ICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHVuc2lnbmVkTG9u
Z0F0dHI7CisgICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbG9uZyBsb25nTG9u
Z0F0dHI7CisgICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9u
ZyB1bnNpZ25lZExvbmdMb25nQXR0cjsKKyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUg
ZmxvYXQgZmxvYXRBdHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3Ry
aWN0ZWQgZmxvYXQgdW5yZXN0cmljdGVkRmxvYXRBdHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5
IGF0dHJpYnV0ZSBkb3VibGUgZG91YmxlQXR0cjsKKyAgICBbRE9NSklUXSByZWFkb25seSBhdHRy
aWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZSB1bnJlc3RyaWN0ZWREb3VibGVBdHRyOworICAgIFtE
T01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgZG9tU3RyaW5nQXR0cjsKKyAgICBb
RE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgQnl0ZVN0cmluZyBieXRlU3RyaW5nQXR0cjsKKyAg
ICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIHVzdlN0cmluZ0F0dHI7CisK
KyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbj8gYm9vbGVhbk51bGxhYmxl
QXR0cjsKKyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgYnl0ZT8gYnl0ZU51bGxhYmxl
QXR0cjsKKyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgb2N0ZXQ/IG9jdGV0TnVsbGFi
bGVBdHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBzaG9ydD8gc2hvcnROdWxs
YWJsZUF0dHI7CisgICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0
PyB1bnNpZ25lZFNob3J0TnVsbGFibGVBdHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBsb25nPyBsb25nTnVsbGFibGVBdHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nPyB1bnNpZ25lZExvbmdOdWxsYWJsZUF0dHI7CisgICAgW0RPTUpJ
VF0gcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgbG9uZz8gbG9uZ0xvbmdOdWxsYWJsZUF0dHI7Cisg
ICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZz8gdW5zaWdu
ZWRMb25nTG9uZ051bGxhYmxlQXR0cjsKKyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUg
ZmxvYXQ/IGZsb2F0TnVsbGFibGVBdHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0
ZSB1bnJlc3RyaWN0ZWQgZmxvYXQ/IHVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyOworICAg
IFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGU/IGRvdWJsZU51bGxhYmxlQXR0cjsK
KyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJsZT8gdW5y
ZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmc/IGRvbVN0cmluZ051bGxhYmxlQXR0cjsKKyAgICBbRE9NSklUXSByZWFk
b25seSBhdHRyaWJ1dGUgQnl0ZVN0cmluZz8gYnl0ZVN0cmluZ051bGxhYmxlQXR0cjsKKyAgICBb
RE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nPyB1c3ZTdHJpbmdOdWxsYWJsZUF0
dHI7Cit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292837</attachid>
            <date>2016-10-25 15:44:37 -0700</date>
            <delta_ts>2016-10-25 22:30:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163900-20161025154051.patch</filename>
            <type>text/plain</type>
            <size>94009</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA3ODQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
YjgzNDZiNmY3ZTlhYjcyZmIzNzY2MGQwZjQwNzBlZGFmYmUyZDMyLi5kNWVlNzQ2NzNhZmU0NTcz
YTRlODVhODI2NjVhOTg3ODVmODFhZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNiBAQAorMjAxNi0xMC0yNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRE9NSklUXSBUZWxsIElETCByZXN1bHQgdHlwZSB0byBERkcgdG8g
ZHJvcCB0eXBlIGNoZWNrcyBpbiBBSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTYzOTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIElETCB0ZWxscyB0aGUgY29uc2VydmF0aXZlIHJlc3VsdCB0eXBl
LiBXaGlsZSB3ZSB1c2UgdGhlIGhlYXAgcHJlZGljdGlvbgorICAgICAgICBmb3IgcHJlZGljdGlv
biBwcm9wYWdhdGlvbiBwaGFzZSBpbiBET01KSVQgZ2V0dGVyIChpdCBpcyBvZmZlcmVkIGJ5IGdl
dF9ieV9pZCEpLAorICAgICAgICB3ZSBsZXZlcmFnZSB0aGUgdHlwZSB0b2xkIGJ5IElETCB0byBw
cm9kdWNlIHRoZSBhYnN0cmFjdCB2YWx1ZSB3aXRoIHRoZSBwcm92ZW4gdHlwZQorICAgICAgICBp
biBBSS4gSXQgZWZmZWN0aXZlbHkgZHJvcHMgdW5uZWNlc3NhcnkgdHlwZSBjaGVja3MgZm9sbG93
ZWQgYnkgQ2FsbERPTSBvcGVyYXRpb25zLgorCisgICAgICAgIEZvciBleGFtcGxlLCB3aGVuIHlv
dSB3cml0ZSB0aGUgY29kZSBsaWtlLAorCisgICAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9
PT0gOSkgeworICAgICAgICAgICAgICAgIC8vIGRvY3VtZW50LgorICAgICAgICAgICAgfQorCisg
ICAgICAgIFByZXZpb3VzbHksIHdlIGluc2VydGVkIGEgSW50MzIgY2hlY2sgZm9yIHRoZSByZXN1
bHQgb2Ygbm9kZS5ub2RlVHlwZS4KKyAgICAgICAgSXQgaXMgZHJvcHBlZCBub3cuCisKKyAgICAg
ICAgV2UgYW5ub3RhdGUgdGhlIERPTUpJVCBnZXR0ZXIgaW4ganNjLmNwcCB0byBlbnN1cmUgdGhh
dCB0aGUgdW5uZWNlc3NhcnkgdHlwZSBjaGVja3MKKyAgICAgICAgYXJlIGNvcnJlY3RseSBkcm9w
cGVkIHdoZW4gZXhlY3V0aW5nIEpTVGVzdHMvc3RyZXNzL2RvbWppdC1nZXR0ZXIuanMuCisKKyAg
ICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVm
ZmVjdHMpOgorICAgICAgICAqIGRvbWppdC9ET01KSVRHZXR0ZXJTZXR0ZXIuaDoKKyAgICAgICAg
KEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXI6OkdldHRlclNldHRlcik6CisgICAgICAgIChKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyOjpyZXN1bHRUeXBlKToKKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXI6OkRPTUpJVE5vZGVET01KSVQ6OkRPTUpJVE5vZGVE
T01KSVQpOgorICAgICAgICAoV1RGOjpET01KSVRHZXR0ZXJDb21wbGV4OjpET01KSVROb2RlRE9N
SklUOjpET01KSVROb2RlRE9NSklUKToKKwogMjAxNi0xMC0yNSAgQ2hyaXN0b3BoZXIgUmVpZCAg
PENocmlzdG9waGVyLlJlaWRAYW0uc29ueS5jb20+CiAKICAgICAgICAganNjLmNwcCBpcyBsZWFr
aW5nIG1lbW9yeSBhbGxvY2F0ZWQgYnkgcmVhZGxpbmUgaW4gcnVuSW50ZXJhY3RpdmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCAyNzE5OWE1MWE5MzIzNzljODI1MjZmOGIyY2NkYWUwNzk0YWNjNDZhLi43ZWU4MzE1
M2M4ZmQyY2Q4ZjI4NDM3YjMzY2UzZGE1ZWExM2IwYTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTc3IEBACisyMDE2LTEwLTI1ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29t
PgorCisgICAgICAgIFtET01KSVRdIFRlbGwgSURMIHJlc3VsdCB0eXBlIHRvIERGRyB0byBkcm9w
IHR5cGUgY2hlY2tzIGluIEFJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjM5MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgVGVzdERPTUpJVC5pZGwgZm9yIGJpbmRpbmdzIGdlbmVyYXRpb24gdGVz
dHMuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEdldFJlc3VsdFR5cGVGaWx0ZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRh
dGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RE9NSklUUHJvdG90eXBlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RE9NSklUUHJvdG90eXBlOjpjcmVhdGVTdHJ1
Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RE9NSklUUHJvdG90eXBlOjpKU1Rlc3RE
T01KSVRQcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RE9NSklUQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RET01K
SVRDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0RE9NSklUUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RET01KSVQ6OkpTVGVzdERPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RE
T01KSVQ6OmNyZWF0ZVByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RET01KSVQ6
OnByb3RvdHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJ
VD46OmNhc3RGb3JBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUQW55
QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRBbnlBdHRyR2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRBbnlBdHRyRE9NSklUOjpUZXN0RE9NSklUQW55QXR0
ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9N
SklUQW55QXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRCb29sZWFuQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRCb29sZWFuQXR0ckdldHRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQm9vbGVhbkF0dHJET01KSVQ6OlRlc3RET01KSVRCb29s
ZWFuQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JU
ZXN0RE9NSklUQm9vbGVhbkF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUQnl0
ZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUQnl0ZUF0dHJHZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0
ZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVz
dERPTUpJVEJ5dGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVE9jdGV0QXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRPY3RldEF0dHJHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVE9jdGV0QXR0ckRPTUpJVDo6VGVzdERPTUpJVE9jdGV0
QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0
RE9NSklUT2N0ZXRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFNob3J0QXR0
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRTaG9ydEF0dHJHZXR0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFNob3J0QXR0ckRPTUpJVDo6VGVzdERPTUpJVFNob3J0
QXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0
RE9NSklUU2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFVuc2lnbmVk
U2hvcnRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnRB
dHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0
ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyRE9NSklUKToKKyAgICAgICAgKFdl
YkNvcmU6OmRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRMb25nQXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RET01KSVRMb25nQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRMb25nQXR0ckRPTUpJVCk6CisgICAgICAg
IChXZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUTG9uZ0F0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyR2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWdu
ZWRMb25nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJG
b3JUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RE
T01KSVRMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUTG9uZ0xv
bmdBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJE
T01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6
ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVExvbmdMb25nQXR0cik6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0cik6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ckdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRV
bnNpZ25lZExvbmdMb25nQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpkb21KSVRHZXR0
ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ0F0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0RE9NSklURmxvYXRBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERP
TUpJVEZsb2F0QXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklURmxvYXRB
dHRyRE9NSklUOjpUZXN0RE9NSklURmxvYXRBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6
OmRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRGbG9hdEF0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyKToKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklU
VW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNvcmU6OmRvbUpJVEdl
dHRlclNldHRlckZvclRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHIpOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0RE9NSklURG91YmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RET01KSVREb3VibGVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRE
b3VibGVBdHRyRE9NSklUOjpUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChX
ZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklURG91YmxlQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJHZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01KSVQ6
OlRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRyRE9NSklUKToKKyAgICAgICAgKFdlYkNv
cmU6OmRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnJlc3RyaWN0ZWREb3VibGVBdHRy
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVERvbVN0cmluZ0F0dHIpOgorICAgICAg
ICAoV2ViQ29yZTo6anNUZXN0RE9NSklURG9tU3RyaW5nQXR0ckdldHRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvbVN0cmlu
Z0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVz
dERPTUpJVERvbVN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUQnl0
ZVN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0
dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9N
SklUOjpUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29yZTo6
ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdERPTUpJVFVzdlN0cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVzdlN0cmluZ0F0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVzdlN0
cmluZ0F0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUTm9kZUF0dHIpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUTm9kZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdERPTUpJVE5vZGVBdHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZUF0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVE5vZGVB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckdldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJ
VDo6VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2ViQ29y
ZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHIpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyR2V0dGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUQnl0
ZU51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0
ZXJGb3JUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RET01KSVRPY3RldE51bGxhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01K
SVRPY3RldE51bGxhYmxlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklU
T2N0ZXROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJ
VCk6CisgICAgICAgIChXZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUT2N0
ZXROdWxsYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUU2hvcnROdWxs
YWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0
dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQpOgorICAgICAgICAoV2Vi
Q29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyKToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0
ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxh
YmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHJET01KSVQp
OgorICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVuc2ln
bmVkU2hvcnROdWxsYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUTG9u
Z051bGxhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRMb25nTnVsbGFi
bGVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRMb25nTnVsbGFibGVB
dHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChX
ZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHIp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRy
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJs
ZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQpOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVuc2lnbmVk
TG9uZ051bGxhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRMb25nTG9u
Z051bGxhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRMb25nTG9uZ051
bGxhYmxlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUTG9uZ0xvbmdO
dWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCk6
CisgICAgICAgIChXZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUTG9uZ0xv
bmdOdWxsYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUVW5zaWduZWRM
b25nTG9uZ051bGxhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRVbnNp
Z25lZExvbmdMb25nTnVsbGFibGVBdHRyR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RE
T01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWdu
ZWRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpkb21KSVRH
ZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0cik6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0cik6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckdldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRG
bG9hdE51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpkb21KSVRHZXR0ZXJT
ZXR0ZXJGb3JUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHIpOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJHZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRy
RE9NSklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJET01KSVQpOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVucmVzdHJp
Y3RlZEZsb2F0TnVsbGFibGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVERv
dWJsZU51bGxhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVREb3VibGVO
dWxsYWJsZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVERvdWJsZU51
bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCk6Cisg
ICAgICAgIChXZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklURG91YmxlTnVs
bGFibGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERv
dWJsZU51bGxhYmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRVbnJlc3Ry
aWN0ZWREb3VibGVOdWxsYWJsZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERP
TUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVucmVz
dHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3JlOjpkb21K
SVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRy
KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0cik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJHZXR0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckRP
TUpJVDo6VGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChX
ZWJDb3JlOjpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVB
dHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0
dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0
ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxl
QXR0ckRPTUpJVDo6VGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQpOgorICAg
ICAgICAoV2ViQ29yZTo6ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEJ5dGVTdHJpbmdO
dWxsYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUVXN2U3RyaW5nTnVs
bGFibGVBdHRyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdERPTUpJVFVzdlN0cmluZ051bGxh
YmxlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RE9NSklUVXN2U3RyaW5nTnVs
bGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKToK
KyAgICAgICAgKFdlYkNvcmU6OmRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVc3ZTdHJp
bmdOdWxsYWJsZUF0dHIpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0RE9NSklUTm9kZU51bGxh
YmxlQXR0cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRy
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyRE9N
SklUOjpUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVCk6CisgICAgICAgIChXZWJDb3Jl
Ojpkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0cik6CisgICAg
ICAgIChXZWJDb3JlOjpqc1Rlc3RET01KSVRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRKU1Rlc3RET01KSVRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RE
T01KSVQ6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERPTUpJVDo6
dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERPTUpJVC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERPTUpJVDo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdERPTUpJVDo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdERPTUpJVDo6d3JhcHBlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RET01KSVQ6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdERPTUpJVC5pZGw6IEFkZGVkLgorCiAyMDE2LTEwLTI1ICBXZW5zb24gSHNp
ZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFN1cHBvcnQgSW5wdXRFdmVu
dC5kYXRhVHJhbnNmZXIgZm9yIHRoZSBJbnB1dEV2ZW50IHNwZWMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApp
bmRleCBmMDlkNDFiN2I3Y2EzMzNhMjQwOWIxZTU0NWI1NTg0MGRjZjBmYTIxLi41ZDJjODExNDI3
NzFhNDlkOWFhZjUzZjcxMzFkNDJiOGUyYjM1NTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCkBAIC0y
MjkwLDEwICsyMjkwLDExIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFr
OwogICAgIH0KICAgICBjYXNlIENhbGxET006IHsKLSAgICAgICAgRE9NSklUOjpDYWxsRE9NUGF0
Y2hwb2ludCogcGF0Y2hwb2ludCA9IG5vZGUtPmNhbGxET01EYXRhKCktPnBhdGNocG9pbnQ7Cisg
ICAgICAgIENhbGxET01EYXRhKiBjYWxsRE9NRGF0YSA9IG5vZGUtPmNhbGxET01EYXRhKCk7Cisg
ICAgICAgIERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQqIHBhdGNocG9pbnQgPSBjYWxsRE9NRGF0
YS0+cGF0Y2hwb2ludDsKICAgICAgICAgaWYgKHBhdGNocG9pbnQtPmVmZmVjdC53cml0ZXMpCiAg
ICAgICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGlt
aXQpOwotICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VCeXRlY29kZVRvcCgpOworICAgICAgICBm
b3JOb2RlKG5vZGUpLnNldFR5cGUobV9ncmFwaCwgY2FsbERPTURhdGEtPmRvbUpJVC0+cmVzdWx0
VHlwZSgpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ2hlY2tBcnJheTogewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RvbWppdC9ET01KSVRHZXR0ZXJTZXR0
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kb21qaXQvRE9NSklUR2V0dGVyU2V0dGVyLmgK
aW5kZXggNDRjNDMyMjhmM2I3YmQwMmFkOGYyZTkwYTZiNjQ5NzZjZjIzNjU1ZC4uNWFkMDNjZTdm
YWI5Zjk2OGQyYmIxM2JmMmM2MWE1NmNiN2U3NmZiZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RvbWppdC9ET01KSVRHZXR0ZXJTZXR0ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZG9taml0L0RPTUpJVEdldHRlclNldHRlci5oCkBAIC0zNywxMCArMzcsMTEgQEAg
Y2xhc3MgR2V0dGVyU2V0dGVyIHsKICAgICB0eXBlZGVmIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jIEN1c3RvbUdldHRlcjsKICAgICB0eXBlZGVmIFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVG
dW5jIEN1c3RvbVNldHRlcjsKIAotICAgIEdldHRlclNldHRlcihDdXN0b21HZXR0ZXIgZ2V0dGVy
LCBDdXN0b21TZXR0ZXIgc2V0dGVyLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykKKyAgICBH
ZXR0ZXJTZXR0ZXIoQ3VzdG9tR2V0dGVyIGdldHRlciwgQ3VzdG9tU2V0dGVyIHNldHRlciwgY29u
c3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8sIFNwZWN1bGF0ZWRUeXBlIHJlc3VsdFR5cGUpCiAgICAg
ICAgIDogbV9nZXR0ZXIoZ2V0dGVyKQogICAgICAgICAsIG1fc2V0dGVyKHNldHRlcikKICAgICAg
ICAgLCBtX3RoaXNDbGFzc0luZm8oY2xhc3NJbmZvKQorICAgICAgICAsIG1fcmVzdWx0VHlwZShy
ZXN1bHRUeXBlKQogICAgIHsKICAgICB9CiAKQEAgLTQ5LDYgKzUwLDcgQEAgY2xhc3MgR2V0dGVy
U2V0dGVyIHsKICAgICBDdXN0b21HZXR0ZXIgZ2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9nZXR0
ZXI7IH0KICAgICBDdXN0b21TZXR0ZXIgc2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0ZXI7
IH0KICAgICBjb25zdCBDbGFzc0luZm8qIHRoaXNDbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBt
X3RoaXNDbGFzc0luZm87IH0KKyAgICBTcGVjdWxhdGVkVHlwZSByZXN1bHRUeXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXN1bHRUeXBlOyB9CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHZpcnR1YWwg
UmVmPERPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSA9IDA7CkBAIC01OSw2ICs2
MSw3IEBAIGNsYXNzIEdldHRlclNldHRlciB7CiAgICAgQ3VzdG9tR2V0dGVyIG1fZ2V0dGVyOwog
ICAgIEN1c3RvbVNldHRlciBtX3NldHRlcjsKICAgICBjb25zdCBDbGFzc0luZm8qIG1fdGhpc0Ns
YXNzSW5mbzsKKyAgICBTcGVjdWxhdGVkVHlwZSBtX3Jlc3VsdFR5cGU7CiB9OwogCiB9IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKaW5kZXggYTAzOTZhYWNlZGEyZmJiNjIxNTViYjlhMDIxMTE0NjQxNmYx
ZDhmMy4uY2ZjYzAxNTk3N2MxNDQ2OWVlNGI2MTcxNWNkYzE4ODk0ZWYxNjJiYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKQEAgLTYxNiw3ICs2MTYsNyBAQCBjbGFzcyBET01KSVRHZXR0ZXIgOiBwdWJs
aWMgRE9NSklUTm9kZSB7CiAgICAgY2xhc3MgRE9NSklUTm9kZURPTUpJVCA6IHB1YmxpYyBET01K
SVQ6OkdldHRlclNldHRlciB7CiAgICAgcHVibGljOgogICAgICAgICBET01KSVROb2RlRE9NSklU
KCkKLSAgICAgICAgICAgIDogRE9NSklUOjpHZXR0ZXJTZXR0ZXIoRE9NSklUR2V0dGVyOjpjdXN0
b21HZXR0ZXIsIG51bGxwdHIsIERPTUpJVE5vZGU6OmluZm8oKSkKKyAgICAgICAgICAgIDogRE9N
SklUOjpHZXR0ZXJTZXR0ZXIoRE9NSklUR2V0dGVyOjpjdXN0b21HZXR0ZXIsIG51bGxwdHIsIERP
TUpJVE5vZGU6OmluZm8oKSwgU3BlY0ludDMyT25seSkKICAgICAgICAgewogICAgICAgICB9CiAK
QEAgLTcwMSw3ICs3MDEsNyBAQCBjbGFzcyBET01KSVRHZXR0ZXJDb21wbGV4IDogcHVibGljIERP
TUpJVE5vZGUgewogICAgIGNsYXNzIERPTUpJVE5vZGVET01KSVQgOiBwdWJsaWMgRE9NSklUOjpH
ZXR0ZXJTZXR0ZXIgewogICAgIHB1YmxpYzoKICAgICAgICAgRE9NSklUTm9kZURPTUpJVCgpCi0g
ICAgICAgICAgICA6IERPTUpJVDo6R2V0dGVyU2V0dGVyKERPTUpJVEdldHRlckNvbXBsZXg6OmN1
c3RvbUdldHRlciwgbnVsbHB0ciwgRE9NSklUTm9kZTo6aW5mbygpKQorICAgICAgICAgICAgOiBE
T01KSVQ6OkdldHRlclNldHRlcihET01KSVRHZXR0ZXJDb21wbGV4OjpjdXN0b21HZXR0ZXIsIG51
bGxwdHIsIERPTUpJVE5vZGU6OmluZm8oKSwgU3BlY0ludDMyT25seSkKICAgICAgICAgewogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KaW5kZXggNzdjZDk3NDY3NTc1OTVkNTQ2YWY4OTg5MzM4MzU1M2QzYWYwYjdl
YS4uOTNkZmU2YWZiNGE4N2M1ZDQzZmJmYzkzMTJmODRjMGY5NzUyN2QzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI0
OTEsNiArMjQ5MSw0MiBAQCBzdWIgYWRkVW5zY29wYWJsZVByb3BlcnRpZXMKICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+dW5zY29wYWJsZXNTeW1ib2wsICZ1bnNjb3BhYmxlcywgRG9udEVudW0gfCBSZWFk
T25seSk7XG4iKTsKIH0KIAorc3ViIEdldFJlc3VsdFR5cGVGaWx0ZXIKK3sKKyAgICBteSAoJHNp
Z25hdHVyZSkgPSBAXzsKKyAgICBteSAkaWRsVHlwZSA9ICRzaWduYXR1cmUtPmlkbFR5cGU7CisK
KyAgICBteSAlVHlwZUZpbHRlcnMgPSAoCisgICAgICAgICJhbnkiID0+ICJTcGVjSGVhcFRvcCIs
CisgICAgICAgICJib29sZWFuIiA9PiAiU3BlY0Jvb2xlYW4iLAorICAgICAgICAiYnl0ZSIgPT4g
IlNwZWNJbnQzMk9ubHkiLAorICAgICAgICAib2N0ZXQiID0+ICJTcGVjSW50MzJPbmx5IiwKKyAg
ICAgICAgInNob3J0IiA9PiAiU3BlY0ludDMyT25seSIsCisgICAgICAgICJ1bnNpZ25lZCBzaG9y
dCIgPT4gIlNwZWNJbnQzMk9ubHkiLAorICAgICAgICAibG9uZyIgPT4gIlNwZWNJbnQzMk9ubHki
LAorICAgICAgICAidW5zaWduZWQgbG9uZyIgPT4gIlNwZWNCeXRlY29kZU51bWJlciIsCisgICAg
ICAgICJsb25nIGxvbmciID0+ICJTcGVjQnl0ZWNvZGVOdW1iZXIiLAorICAgICAgICAidW5zaWdu
ZWQgbG9uZyBsb25nIiA9PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKKyAgICAgICAgImZsb2F0IiA9
PiAiU3BlY0J5dGVjb2RlTnVtYmVyIiwKKyAgICAgICAgInVucmVzdHJpY3RlZCBmbG9hdCIgPT4g
IlNwZWNCeXRlY29kZU51bWJlciIsCisgICAgICAgICJkb3VibGUiID0+ICJTcGVjQnl0ZWNvZGVO
dW1iZXIiLAorICAgICAgICAidW5yZXN0cmljdGVkIGRvdWJsZSIgPT4gIlNwZWNCeXRlY29kZU51
bWJlciIsCisgICAgICAgICJET01TdHJpbmciID0+ICJTcGVjU3RyaW5nIiwKKyAgICAgICAgIkJ5
dGVTdHJpbmciID0+ICJTcGVjU3RyaW5nIiwKKyAgICAgICAgIlVTVlN0cmluZyIgPT4gIlNwZWNT
dHJpbmciLAorICAgICk7CisKKyAgICBpZiAoZXhpc3RzICRUeXBlRmlsdGVyc3skaWRsVHlwZS0+
bmFtZX0pIHsKKyAgICAgICAgbXkgJHJlc3VsdFR5cGUgPSAiSlNDOjokVHlwZUZpbHRlcnN7JGlk
bFR5cGUtPm5hbWV9IjsKKyAgICAgICAgaWYgKCRpZGxUeXBlLT5pc051bGxhYmxlKSB7CisgICAg
ICAgICAgICBkaWUgIlwiYW55XCIgdHlwZSBtdXN0IG5vdCBiZWNvbWUgbnVsbGFibGUuIiBpZiAk
aWRsVHlwZS0+bmFtZSBlcSAiYW55IjsKKyAgICAgICAgICAgICRyZXN1bHRUeXBlID0gIigkcmVz
dWx0VHlwZSB8IEpTQzo6U3BlY090aGVyKSI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICRy
ZXN1bHRUeXBlOworICAgIH0KKyAgICByZXR1cm4gIlNwZWNIZWFwVG9wIjsKK30KKwogc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KIHsKICAgICBteSAoJG9iamVjdCwgJGludGVyZmFjZSwgJGVu
dW1lcmF0aW9ucywgJGRpY3Rpb25hcmllcykgPSBAXzsKQEAgLTMyNjgsOCArMzMwNCw5IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgbXkgJGRvbUpJVENsYXNz
TmFtZSA9ICRnZW5lcmF0b3JOYW1lIC4gIkRPTUpJVCI7CiAgICAgICAgICAgICAgICAgbXkgJGdl
dHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGdlbmVyYXRvck5hbWUs
ICRhdHRyaWJ1dGUpOwogICAgICAgICAgICAgICAgIG15ICRzZXR0ZXIgPSBJc1JlYWRvbmx5KCRh
dHRyaWJ1dGUpID8gIm51bGxwdHIiIDogR2V0QXR0cmlidXRlU2V0dGVyTmFtZSgkaW50ZXJmYWNl
LCAkZ2VuZXJhdG9yTmFtZSwgJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICAgICAgbXkgJHJlc3Vs
dFR5cGUgPSBHZXRSZXN1bHRUeXBlRmlsdGVyKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7CiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIkZG9tSklUQ2xhc3NOYW1lOjokZG9tSklU
Q2xhc3NOYW1lKClcbiIpOwotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcigkZ2V0dGVyLCAkc2V0dGVyLCAke2NsYXNzTmFt
ZX06OmluZm8oKSlcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcigkZ2V0dGVyLCAkc2V0dGVyLCAke2NsYXNzTmFt
ZX06OmluZm8oKSwgJHJlc3VsdFR5cGUpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIntcbiIpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxu
XG4iKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdERPTUpJVC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RE9NSklULmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzk3YmVlNzg0OGVjNjFmYjkzNTk4
YmNjY2M4ZTYzNmE0N2Q0NTg2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAgLTAsMCArMSwxMTcxIEBA
CisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJv
amVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRp
bmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJKU1Rlc3RET01KSVQuaCIKKworI2luY2x1ZGUgIkpTQnl0ZVN0cmluZy5oIgorI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTRE9NQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRl
ICJKU0RPTUNvbnZlcnQuaCIKKyNpbmNsdWRlIDx3dGYvR2V0UHRyLmg+CisjaW5jbHVkZSA8d3Rm
L05ldmVyRGVzdHJveWVkLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworLy8gQXR0cmlidXRlcworCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERP
TUpJVEFueUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVEJvb2xlYW5BdHRy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlQXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0RE9NSklUT2N0ZXRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RET01KSVRTaG9ydEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2ln
bmVkU2hvcnRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nQXR0cihK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsK
K0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0cihKU0M6OkV4
ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6
RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0RE9NSklURmxvYXRBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01K
SVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJ
VERvdWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3Rl
ZERvdWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlBy
b3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVERvbVN0cmluZ0F0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFt
ZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVc3ZTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RET01KSVROb2RlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9N
SklUQnl0ZU51bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUT2N0
ZXROdWxsYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFNob3J0TnVs
bGFibGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0
TnVsbGFibGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRMb25nTnVsbGFi
bGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdOdWxs
YWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3Bl
cnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdMb25nTnVsbGFi
bGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25n
TnVsbGFibGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQ
cm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRGbG9hdE51bGxh
YmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxv
YXROdWxsYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6
OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVERvdWJsZU51
bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVk
RG91YmxlTnVsbGFibGVBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVREb21T
dHJpbmdOdWxsYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVT
dHJpbmdOdWxsYWJsZUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7CitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFVzdlN0
cmluZ051bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpT
Qzo6UHJvcGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUTm9kZU51
bGxhYmxlQXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUQ29uc3RydWN0b3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7
Citib29sIHNldEpTVGVzdERPTUpJVENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisKK2NsYXNzIEpTVGVzdERPTUpJ
VFByb3RvdHlwZSA6IHB1YmxpYyBKU0M6OkpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHVzaW5nIEJhc2UgPSBKU0M6OkpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIEpTVGVzdERP
TUpJVFByb3RvdHlwZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBK
U1Rlc3RET01KSVRQcm90b3R5cGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0RE9NSklUUHJvdG90eXBlPih2bS5oZWFwKSkgSlNUZXN0RE9NSklUUHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QsIHN0cnVjdHVyZSk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRp
b24odm0pOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsK
KyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1Rlc3RET01KSVRQ
cm90b3R5cGUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgICAgICA6IEpTQzo6SlNOb25GaW5hbE9iamVjdCh2bSwgc3RydWN0
dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mKTsK
K307CisKK3VzaW5nIEpTVGVzdERPTUpJVENvbnN0cnVjdG9yID0gSlNET01Db25zdHJ1Y3Rvck5v
dENvbnN0cnVjdGFibGU8SlNUZXN0RE9NSklUPjsKKwordGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVz
dERPTUpJVENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNv
bnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIEpTTm9k
ZTo6Z2V0Q29uc3RydWN0b3Iodm0sICZnbG9iYWxPYmplY3QpOworfQorCit0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0RE9NSklUQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKK3sKKyAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RE9NSklUOjpwcm90b3R5cGUodm0sICZn
bG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZt
LCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0RE9NSklUIikpKSwgUmVhZE9ubHkgfCBEb250RW51
bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKK30KKwordGVtcGxhdGU8PiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0RE9NSklUQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RET01KSVQiLCAmQmFz
ZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdERPTUpJVENvbnN0cnVjdG9y
KSB9OworCisvKiBIYXNoIHRhYmxlIGZvciBwcm90b3R5cGUgKi8KKworc3RhdGljIGNvbnN0IEhh
c2hUYWJsZVZhbHVlIEpTVGVzdERPTUpJVFByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQoreworICAg
IHsgImNvbnN0cnVjdG9yIiwgRG9udEVudW0sIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0RE9NSklUQ29uc3RydWN0
b3IpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5j
PihzZXRKU1Rlc3RET01KSVRDb25zdHJ1Y3RvcikgfSB9LAorICAgIHsgImFueUF0dHIiLCBSZWFk
T25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRH
ZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUQW55QXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAg
ICB7ICJib29sZWFuQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRy
aWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJT
ZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRCb29sZWFuQXR0
ciksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJieXRlQXR0ciIsIFJlYWRPbmx5IHwgQ3Vz
dG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClz
dGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRl
ckZvclRlc3RET01KSVRCeXRlQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJvY3Rl
dEF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJh
dG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUT2N0ZXRBdHRyKSwgKGludHB0cl90
KSAoMCkgfSB9LAorICAgIHsgInNob3J0QXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3Ig
fCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxE
T01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01K
SVRTaG9ydEF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAidW5zaWduZWRTaG9ydEF0
dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9y
Pihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHIpLCAoaW50
cHRyX3QpICgwKSB9IH0sCisgICAgeyAibG9uZ0F0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vz
c29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nh
c3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0
RE9NSklUTG9uZ0F0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAidW5zaWduZWRMb25n
QXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0
b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyKSwgKGlu
dHB0cl90KSAoMCkgfSB9LAorICAgIHsgImxvbmdMb25nQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9t
QWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0
aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZv
clRlc3RET01KSVRMb25nTG9uZ0F0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAidW5z
aWduZWRMb25nTG9uZ0F0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0
cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVy
U2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVW5zaWduZWRM
b25nTG9uZ0F0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAiZmxvYXRBdHRyIiwgUmVh
ZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklU
R2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEZsb2F0QXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwK
KyAgICB7ICJ1bnJlc3RyaWN0ZWRGbG9hdEF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29y
IHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9N
SklUVW5yZXN0cmljdGVkRmxvYXRBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImRv
dWJsZUF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2Vu
ZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklURG91YmxlQXR0ciksIChpbnRw
dHJfdCkgKDApIH0gfSwKKyAgICB7ICJ1bnJlc3RyaWN0ZWREb3VibGVBdHRyIiwgUmVhZE9ubHkg
fCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0
cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVy
U2V0dGVyRm9yVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHIpLCAoaW50cHRyX3QpICgw
KSB9IH0sCisgICAgeyAiZG9tU3RyaW5nQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3Ig
fCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxE
T01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01K
SVREb21TdHJpbmdBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgImJ5dGVTdHJpbmdB
dHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRv
cj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyKSwgKGludHB0
cl90KSAoMCkgfSB9LAorICAgIHsgInVzdlN0cmluZ0F0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFj
Y2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGlj
X2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JU
ZXN0RE9NSklUVXN2U3RyaW5nQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJub2Rl
QXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50
cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0
b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVROb2RlQXR0ciksIChpbnRwdHJfdCkg
KDApIH0gfSwKKyAgICB7ICJib29sZWFuTnVsbGFibGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21B
Y2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9y
VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAg
eyAiYnl0ZU51bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRB
dHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0
ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRCeXRlTnVs
bGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgIm9jdGV0TnVsbGFibGVBdHRy
IiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4o
ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyKSwgKGludHB0
cl90KSAoMCkgfSB9LAorICAgIHsgInNob3J0TnVsbGFibGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0
b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVy
Rm9yVGVzdERPTUpJVFNob3J0TnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAg
IHsgInVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29y
IHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9N
SklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7
ICJsb25nTnVsbGFibGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0
dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRl
clNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVExvbmdOdWxs
YWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAidW5zaWduZWRMb25nTnVsbGFi
bGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVy
YXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxl
QXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJsb25nTG9uZ051bGxhYmxlQXR0ciIs
IFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRv
bUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ciksIChpbnRw
dHJfdCkgKDApIH0gfSwKKyAgICB7ICJ1bnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyIiwgUmVh
ZE9ubHkgfCBDdXN0b21BY2Nlc3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklU
R2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIpLCAo
aW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAiZmxvYXROdWxsYWJsZUF0dHIiLCBSZWFkT25seSB8
IEN1c3RvbUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJT
ZXR0ZXJGb3JUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0s
CisgICAgeyAidW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHIiLCBSZWFkT25seSB8IEN1c3Rv
bUFjY2Vzc29yIHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJG
b3JUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgw
KSB9IH0sCisgICAgeyAiZG91YmxlTnVsbGFibGVBdHRyIiwgUmVhZE9ubHkgfCBDdXN0b21BY2Nl
c3NvciB8IERPTUpJVEF0dHJpYnV0ZSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PERPTUpJVEdldHRlclNldHRlckdlbmVyYXRvcj4oZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVz
dERPTUpJVERvdWJsZU51bGxhYmxlQXR0ciksIChpbnRwdHJfdCkgKDApIH0gfSwKKyAgICB7ICJ1
bnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHIiLCBSZWFkT25seSB8IEN1c3RvbUFjY2Vzc29y
IHwgRE9NSklUQXR0cmlidXRlLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
RE9NSklUR2V0dGVyU2V0dGVyR2VuZXJhdG9yPihkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9N
SklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAor
ICAgIHsgImRvbVN0cmluZ051bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3Ig
fCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxE
T01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01K
SVREb21TdHJpbmdOdWxsYWJsZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAiYnl0
ZVN0cmluZ051bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRB
dHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0
ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRCeXRlU3Ry
aW5nTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAoMCkgfSB9LAorICAgIHsgInVzdlN0cmluZ051
bGxhYmxlQXR0ciIsIFJlYWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUs
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJH
ZW5lcmF0b3I+KGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJs
ZUF0dHIpLCAoaW50cHRyX3QpICgwKSB9IH0sCisgICAgeyAibm9kZU51bGxhYmxlQXR0ciIsIFJl
YWRPbmx5IHwgQ3VzdG9tQWNjZXNzb3IgfCBET01KSVRBdHRyaWJ1dGUsIE5vSW50cmluc2ljLCB7
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxET01KSVRHZXR0ZXJTZXR0ZXJHZW5lcmF0b3I+KGRvbUpJ
VEdldHRlclNldHRlckZvclRlc3RET01KSVROb2RlTnVsbGFibGVBdHRyKSwgKGludHB0cl90KSAo
MCkgfSB9LAorfTsKKworY29uc3QgQ2xhc3NJbmZvIEpTVGVzdERPTUpJVFByb3RvdHlwZTo6c19p
bmZvID0geyAiVGVzdERPTUpJVFByb3RvdHlwZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0RE9NSklUUHJvdG90eXBlKSB9OworCit2b2lkIEpTVGVzdERPTUpJ
VFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdERPTUpJVFBy
b3RvdHlwZVRhYmxlVmFsdWVzLCAqdGhpcyk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rlc3RE
T01KSVQ6OnNfaW5mbyA9IHsgIlRlc3RET01KSVQiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdERPTUpJVCkgfTsKKworSlNUZXN0RE9NSklUOjpKU1Rlc3RET01K
SVQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IFJlZjxUZXN0RE9NSklUPiYmIGltcGwpCisgICAgOiBKU05vZGUoc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QsIFdURk1vdmUoaW1wbCkpCit7Cit9CisKK0pTT2JqZWN0KiBKU1Rlc3RET01KSVQ6OmNy
ZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgcmV0dXJuIEpTVGVzdERPTUpJVFByb3RvdHlwZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IEpTVGVzdERPTUpJVFByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3Qs
IEpTTm9kZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpKSk7Cit9CisKK0pTT2JqZWN0KiBK
U1Rlc3RET01KSVQ6OnByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCit7CisgICAgcmV0dXJuIGdldERPTVByb3RvdHlwZTxKU1Rlc3RET01KSVQ+KHZtLCBnbG9i
YWxPYmplY3QpOworfQorCit0ZW1wbGF0ZTw+IGlubGluZSBKU1Rlc3RET01KSVQqIEJpbmRpbmdD
YWxsZXI8SlNUZXN0RE9NSklUPjo6Y2FzdEZvckF0dHJpYnV0ZShFeGVjU3RhdGUmLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUpCit7CisgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNUZXN0RE9N
SklUKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworfQorCitzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RE9NSklUQW55QXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQm
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklU
QW55QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRy
aWJ1dGU8anNUZXN0RE9NSklUQW55QXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImFueUF0
dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEFueUF0dHJHZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMQW55PihpbXBsLmFueUF0dHIoKSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJVEFueUF0dHJET01KSVQ6OlRlc3RET01KSVRB
bnlBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklUQW55QXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0hlYXBU
b3ApCit7Cit9CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRl
ckZvclRlc3RET01KSVRBbnlBdHRyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGVz
dERPTUpJVEFueUF0dHJET01KSVQ+IGNvbXBpbGVyOworICAgIHJldHVybiAmY29tcGlsZXIuZ2V0
KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCb29sZWFuQXR0ckdl
dHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsK
KworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUQm9vbGVhbkF0dHIoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJu
IEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVEJvb2xl
YW5BdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiYm9vbGVhbkF0dHIiKTsKK30KKworc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJvb2xlYW5BdHRyR2V0dGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29w
ZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSB0b0pTPElETEJvb2xlYW4+KGltcGwuYm9vbGVhbkF0dHIoKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJVEJvb2xlYW5BdHRyRE9NSklUOjpUZXN0RE9NSklU
Qm9vbGVhbkF0dHJET01KSVQoKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rl
c3RET01KSVRCb29sZWFuQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6
U3BlY0Jvb2xlYW4pCit7Cit9CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdl
dHRlclNldHRlckZvclRlc3RET01KSVRCb29sZWFuQXR0cigpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJVD4gY29tcGlsZXI7CisgICAgcmV0
dXJuICZjb21waWxlci5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVEJ5dGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sK
KyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0
RE9NSklUQnl0ZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJieXRlQXR0ciIpOworfQor
CitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZUF0dHJHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0o
c3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IHRvSlM8SURMQnl0ZT4oaW1wbC5ieXRlQXR0cigpKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitUZXN0RE9NSklUQnl0ZUF0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlQXR0
ckRPTUpJVCgpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5
dGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5
KQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJG
b3JUZXN0RE9NSklUQnl0ZUF0dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0
RE9NSklUQnl0ZUF0dHJET01KSVQ+IGNvbXBpbGVyOworICAgIHJldHVybiAmY29tcGlsZXIuZ2V0
KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRPY3RldEF0dHJHZXR0
ZXIoRXhlY1N0YXRlJiwgSlNUZXN0RE9NSklUJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CisK
K0VuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0QXR0cihFeGVjU3RhdGUqIHN0YXRlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmlu
ZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUT2N0ZXRBdHRy
R2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAib2N0ZXRBdHRyIik7Cit9CisKK3N0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRPY3RldEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwg
SlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAg
IFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAg
IGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IHRvSlM8SURMT2N0ZXQ+KGltcGwub2N0ZXRBdHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK1Rlc3RET01KSVRPY3RldEF0dHJET01KSVQ6OlRlc3RET01KSVRPY3RldEF0dHJET01KSVQo
KQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRPY3RldEF0dHIs
IG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNJbnQzMk9ubHkpCit7Cit9
CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RE
T01KSVRPY3RldEF0dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0RE9NSklU
T2N0ZXRBdHRyRE9NSklUPiBjb21waWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgpOwor
fQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUU2hvcnRBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRTaG9ydEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdD
YWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVFNob3J0QXR0ckdldHRl
cj4oc3RhdGUsIHRoaXNWYWx1ZSwgInNob3J0QXR0ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RE9NSklUU2hvcnRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVz
dERPTUpJVCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
PElETFNob3J0PihpbXBsLnNob3J0QXR0cigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitU
ZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUOjpUZXN0RE9NSklUU2hvcnRBdHRyRE9NSklUKCkKKyAg
ICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnRBdHRyLCBudWxs
cHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50MzJPbmx5KQoreworfQorCitK
U0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklU
U2hvcnRBdHRyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGVzdERPTUpJVFNob3J0
QXR0ckRPTUpJVD4gY29tcGlsZXI7CisgICAgcmV0dXJuICZjb21waWxlci5nZXQoKTsKK30KKwor
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyR2V0dGVy
KEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1
cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUVW5z
aWduZWRTaG9ydEF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJ1bnNpZ25lZFNob3J0QXR0
ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRTaG9y
dEF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
KyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMVW5zaWduZWRTaG9ydD4oaW1w
bC51bnNpZ25lZFNob3J0QXR0cigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitUZXN0RE9N
SklUVW5zaWduZWRTaG9ydEF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckRP
TUpJVCgpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2ln
bmVkU2hvcnRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjSW50
MzJPbmx5KQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJT
ZXR0ZXJGb3JUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHIoKQoreworICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxUZXN0RE9NSklUVW5zaWduZWRTaG9ydEF0dHJET01KSVQ+IGNvbXBpbGVyOwor
ICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0F0
dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRl
PGpzVGVzdERPTUpJVExvbmdBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAibG9uZ0F0dHIi
KTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdBdHRyR2V0dGVy
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VE
X1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETExvbmc+KGltcGwubG9uZ0F0dHIoKSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJVExvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklU
TG9uZ0F0dHJET01KSVQoKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RE
T01KSVRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0lu
dDMyT25seSkKK3sKK30KKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVy
U2V0dGVyRm9yVGVzdERPTUpJVExvbmdBdHRyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8VGVzdERPTUpJVExvbmdBdHRyRE9NSklUPiBjb21waWxlcjsKKyAgICByZXR1cm4gJmNvbXBp
bGVyLmdldCgpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWdu
ZWRMb25nQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0
cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8
anNUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInVu
c2lnbmVkTG9uZ0F0dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJ
VFVuc2lnbmVkTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0
aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0
aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMVW5zaWdu
ZWRMb25nPihpbXBsLnVuc2lnbmVkTG9uZ0F0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExv
bmdBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklUVW5zaWduZWRMb25nQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6
U3BlY0J5dGVjb2RlTnVtYmVyKQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBk
b21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0cigpCit7CisgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFRlc3RET01KSVRVbnNpZ25lZExvbmdBdHRyRE9NSklUPiBj
b21waWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgpOworfQorCitzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVz
dERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RET01KSVRMb25nTG9uZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0
RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVExvbmdMb25nQXR0ckdldHRlcj4oc3RhdGUs
IHRoaXNWYWx1ZSwgImxvbmdMb25nQXR0ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUg
anNUZXN0RE9NSklUTG9uZ0xvbmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERP
TUpJVCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURf
UEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBp
bXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElE
TExvbmdMb25nPihpbXBsLmxvbmdMb25nQXR0cigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQor
CitUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUOjpUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9N
SklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9uZ0xv
bmdBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVO
dW1iZXIpCit7Cit9CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNl
dHRlckZvclRlc3RET01KSVRMb25nTG9uZ0F0dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ry
b3llZDxUZXN0RE9NSklUTG9uZ0xvbmdBdHRyRE9NSklUPiBjb21waWxlcjsKKyAgICByZXR1cm4g
JmNvbXBpbGVyLmdldCgpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklU
VW5zaWduZWRMb25nTG9uZ0F0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0RE9NSklUJiwgVGhy
b3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2ln
bmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJ
VD46OmF0dHJpYnV0ZTxqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ckdldHRlcj4oc3Rh
dGUsIHRoaXNWYWx1ZSwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7Cit9CisKK3N0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdMb25nQXR0ckdldHRlcihFeGVjU3Rh
dGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2Nv
cGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShz
dGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFs
dWUgcmVzdWx0ID0gdG9KUzxJRExVbnNpZ25lZExvbmdMb25nPihpbXBsLnVuc2lnbmVkTG9uZ0xv
bmdBdHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Rlc3RET01KSVRVbnNpZ25lZExv
bmdMb25nQXR0ckRPTUpJVDo6VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9NSklUKCkK
KyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5zaWduZWRMb25n
TG9uZ0F0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNCeXRlY29k
ZU51bWJlcikKK3sKK30KKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVy
U2V0dGVyRm9yVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9NSklUPiBjb21w
aWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgpOworfQorCitzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RE9NSklURmxvYXRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJ
VCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01K
SVRGbG9hdEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6
YXR0cmlidXRlPGpzVGVzdERPTUpJVEZsb2F0QXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwg
ImZsb2F0QXR0ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURmxv
YXRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhpc09iamVjdCwg
VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7
CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETEZsb2F0PihpbXBsLmZsb2F0
QXR0cigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitUZXN0RE9NSklURmxvYXRBdHRyRE9N
SklUOjpUZXN0RE9NSklURmxvYXRBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6Omlu
Zm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCit7Cit9CisKK0pTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRGbG9hdEF0dHIoKQorewor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0RE9NSklURmxvYXRBdHRyRE9NSklUPiBjb21w
aWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgpOworfQorCitzdGF0aWMgaW5saW5lIEpT
VmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYs
IEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRp
bmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVFVucmVzdHJpY3Rl
ZEZsb2F0QXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInVucmVzdHJpY3RlZEZsb2F0QXR0
ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVk
RmxvYXRBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhpc09iamVj
dCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29w
ZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETFVucmVzdHJpY3RlZEZs
b2F0PihpbXBsLnVucmVzdHJpY3RlZEZsb2F0QXR0cigpKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5y
ZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0
ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXRBdHRyLCBudWxscHRyLCBKU1Rlc3RET01K
SVQ6OmluZm8oKSwgSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIpCit7Cit9CisKK0pTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnJlc3RyaWN0
ZWRGbG9hdEF0dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0RE9NSklUVW5y
ZXN0cmljdGVkRmxvYXRBdHRyRE9NSklUPiBjb21waWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVy
LmdldCgpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlQXR0
ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlQXR0cihFeGVjU3RhdGUqIHN0
YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1
cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklURG91
YmxlQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImRvdWJsZUF0dHIiKTsKK30KKworc3Rh
dGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERvdWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlM8SURMRG91YmxlPihpbXBsLmRvdWJsZUF0dHIoKSk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworVGVzdERPTUpJVERvdWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVREb3Vi
bGVBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklURG91YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY0J5
dGVjb2RlTnVtYmVyKQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRH
ZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklURG91YmxlQXR0cigpCit7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFRlc3RET01KSVREb3VibGVBdHRyRE9NSklUPiBjb21waWxlcjsKKyAgICByZXR1
cm4gJmNvbXBpbGVyLmdldCgpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9N
SklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQm
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklU
VW5yZXN0cmljdGVkRG91YmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rl
c3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckdl
dHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgInVucmVzdHJpY3RlZERvdWJsZUF0dHIiKTsKK30KKwor
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJH
ZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMVW5yZXN0cmljdGVkRG91YmxlPihpbXBs
LnVucmVzdHJpY3RlZERvdWJsZUF0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVGVz
dERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnJlc3RyaWN0
ZWREb3VibGVBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNU
ZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjpp
bmZvKCksIEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyKQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91
YmxlQXR0cigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRlc3RET01KSVRVbnJlc3Ry
aWN0ZWREb3VibGVBdHRyRE9NSklUPiBjb21waWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdl
dCgpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklURG9tU3RyaW5nQXR0
ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklURG9tU3RyaW5nQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBy
ZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklU
RG9tU3RyaW5nQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImRvbVN0cmluZ0F0dHIiKTsK
K30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERvbVN0cmluZ0F0dHJHZXR0
ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3Bl
JiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgaW1wbC5kb21T
dHJpbmdBdHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Rlc3RET01KSVREb21TdHJp
bmdBdHRyRE9NSklUOjpUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVCgpCisgICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVERvbVN0cmluZ0F0dHIsIG51bGxwdHIs
IEpTVGVzdERPTUpJVDo6aW5mbygpLCBKU0M6OlNwZWNTdHJpbmcpCit7Cit9CisKK0pTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVREb21TdHJp
bmdBdHRyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGVzdERPTUpJVERvbVN0cmlu
Z0F0dHJET01KSVQ+IGNvbXBpbGVyOworICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRCeXRlU3RyaW5nQXR0ckdldHRlcihF
eGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5j
b2RlZEpTVmFsdWUganNUZXN0RE9NSklUQnl0ZVN0cmluZ0F0dHIoRXhlY1N0YXRlKiBzdGF0ZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJp
bmRpbmdDYWxsZXI8SlNUZXN0RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVEJ5dGVTdHJp
bmdBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAiYnl0ZVN0cmluZ0F0dHIiKTsKK30KKwor
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhy
b3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BB
UkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSB0b0pTKCZzdGF0ZSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwg
aW1wbC5ieXRlU3RyaW5nQXR0cigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitUZXN0RE9N
SklUQnl0ZVN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVRCeXRlU3RyaW5nQXR0ckRPTUpJVCgp
CisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdB
dHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgSlNDOjpTcGVjU3RyaW5nKQorewor
fQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0
RE9NSklUQnl0ZVN0cmluZ0F0dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0
RE9NSklUQnl0ZVN0cmluZ0F0dHJET01KSVQ+IGNvbXBpbGVyOworICAgIHJldHVybiAmY29tcGls
ZXIuZ2V0KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVc3ZTdHJp
bmdBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93
U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVc3ZTdHJpbmdBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorewor
ICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RE
T01KSVRVc3ZTdHJpbmdBdHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAidXN2U3RyaW5nQXR0
ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVXN2U3RyaW5nQXR0
ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93
U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBl
ZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExVU1ZTdHJpbmc+KHN0YXRlLCBpbXBs
LnVzdlN0cmluZ0F0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJVFVz
dlN0cmluZ0F0dHJET01KSVQ6OlRlc3RET01KSVRVc3ZTdHJpbmdBdHRyRE9NSklUKCkKKyAgICA6
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVXN2U3RyaW5nQXR0ciwgbnVs
bHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCksIEpTQzo6U3BlY1N0cmluZykKK3sKK30KKworSlND
OjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVz
dlN0cmluZ0F0dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0RE9NSklUVXN2
U3RyaW5nQXR0ckRPTUpJVD4gY29tcGlsZXI7CisgICAgcmV0dXJuICZjb21waWxlci5nZXQoKTsK
K30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVE5vZGVBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVROb2RlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0Nh
bGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUTm9kZUF0dHJHZXR0ZXI+
KHN0YXRlLCB0aGlzVmFsdWUsICJub2RlQXR0ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklUTm9kZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9N
SklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoJnN0
YXRlLCB0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCBpbXBsLm5vZGVBdHRyKCkpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK1Rlc3RET01KSVROb2RlQXR0ckRPTUpJVDo6VGVzdERPTUpJVE5v
ZGVBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9N
SklUTm9kZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBTcGVjSGVhcFRvcCkK
K3sKK30KKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9y
VGVzdERPTUpJVE5vZGVBdHRyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGVzdERP
TUpJVE5vZGVBdHRyRE9NSklUPiBjb21waWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgp
OworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxl
QXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0cihF
eGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
K3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNU
ZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImJv
b2xlYW5OdWxsYWJsZUF0dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9N
SklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9Q
QVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURM
TnVsbGFibGU8SURMQm9vbGVhbj4+KGltcGwuYm9vbGVhbk51bGxhYmxlQXR0cigpKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OworfQorCitUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQoKQorICAgIDogSlNDOjpET01KSVQ6
OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyLCBudWxscHRyLCBK
U1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0Jvb2xlYW4gfCBKU0M6OlNwZWNPdGhlcikp
Cit7Cit9CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZv
clRlc3RET01KSVRCb29sZWFuTnVsbGFibGVBdHRyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VGVzdERPTUpJVEJvb2xlYW5OdWxsYWJsZUF0dHJET01KSVQ+IGNvbXBpbGVyOworICAg
IHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRCeXRlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRC
eXRlTnVsbGFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJ
VD46OmF0dHJpYnV0ZTxqc1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyR2V0dGVyPihzdGF0ZSwg
dGhpc1ZhbHVlLCAiYnl0ZU51bGxhYmxlQXR0ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFs
dWUganNUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUzxJRExOdWxsYWJsZTxJRExCeXRlPj4oaW1wbC5ieXRlTnVsbGFibGVBdHRyKCkpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK1Rlc3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUOjpU
ZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVCgpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyKGpzVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorewor
fQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0
RE9NSklUQnl0ZU51bGxhYmxlQXR0cigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRl
c3RET01KSVRCeXRlTnVsbGFibGVBdHRyRE9NSklUPiBjb21waWxlcjsKKyAgICByZXR1cm4gJmNv
bXBpbGVyLmdldCgpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUT2N0
ZXROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0RE9NSklUJiwgVGhyb3dTY29w
ZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVE9jdGV0TnVsbGFi
bGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0dHJp
YnV0ZTxqc1Rlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1
ZSwgIm9jdGV0TnVsbGFibGVBdHRyIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RET01KSVRPY3RldE51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RE
T01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VE
X1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJ
RExOdWxsYWJsZTxJRExPY3RldD4+KGltcGwub2N0ZXROdWxsYWJsZUF0dHIoKSk7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyRE9NSklUOjpUZXN0
RE9NSklUT2N0ZXROdWxsYWJsZUF0dHJET01KSVQoKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRl
clNldHRlcihqc1Rlc3RET01KSVRPY3RldE51bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIChKU0M6OlNwZWNJbnQzMk9ubHkgfCBKU0M6OlNwZWNPdGhlcikpCit7Cit9
CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RE
T01KSVRPY3RldE51bGxhYmxlQXR0cigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRl
c3RET01KSVRPY3RldE51bGxhYmxlQXR0ckRPTUpJVD4gY29tcGlsZXI7CisgICAgcmV0dXJuICZj
b21waWxlci5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFNo
b3J0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRTaG9ydE51bGxh
YmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRy
aWJ1dGU8anNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFs
dWUsICJzaG9ydE51bGxhYmxlQXR0ciIpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNU
ZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0
RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNF
RF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8
SURMTnVsbGFibGU8SURMU2hvcnQ+PihpbXBsLnNob3J0TnVsbGFibGVBdHRyKCkpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK1Rlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVDo6VGVz
dERPTUpJVFNob3J0TnVsbGFibGVBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERP
TUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5IHwgSlNDOjpTcGVjT3RoZXIpKQorewor
fQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0
RE9NSklUU2hvcnROdWxsYWJsZUF0dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxU
ZXN0RE9NSklUU2hvcnROdWxsYWJsZUF0dHJET01KSVQ+IGNvbXBpbGVyOworICAgIHJldHVybiAm
Y29tcGlsZXIuZ2V0KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRV
bnNpZ25lZFNob3J0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRV
bnNpZ25lZFNob3J0TnVsbGFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVB
dHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAidW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ciIp
OworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51
bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmpl
Y3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExV
bnNpZ25lZFNob3J0Pj4oaW1wbC51bnNpZ25lZFNob3J0TnVsbGFibGVBdHRyKCkpOworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK1Rlc3RET01KSVRVbnNpZ25lZFNob3J0TnVsbGFibGVBdHRyRE9N
SklUOjpUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCgpCisgICAgOiBK
U0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJs
ZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjSW50MzJPbmx5
IHwgSlNDOjpTcGVjT3RoZXIpKQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBk
b21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0cigp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRlc3RET01KSVRVbnNpZ25lZFNob3J0TnVs
bGFibGVBdHRyRE9NSklUPiBjb21waWxlcjsKKyAgICByZXR1cm4gJmNvbXBpbGVyLmdldCgpOwor
fQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckdl
dHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsK
KworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0cihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICBy
ZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklU
TG9uZ051bGxhYmxlQXR0ckdldHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImxvbmdOdWxsYWJsZUF0
dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVExvbmdOdWxsYWJs
ZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
KyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0Lndy
YXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMTG9uZz4+
KGltcGwubG9uZ051bGxhYmxlQXR0cigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitUZXN0
RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHJE
T01KSVQoKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRlclNldHRlcihqc1Rlc3RET01KSVRMb25n
TnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0lu
dDMyT25seSB8IEpTQzo6U3BlY090aGVyKSkKK3sKK30KKworSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVExvbmdOdWxsYWJsZUF0dHIoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckRP
TUpJVD4gY29tcGlsZXI7CisgICAgcmV0dXJuICZjb21waWxlci5nZXQoKTsKK30KKworc3RhdGlj
IGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckdldHRl
cihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKwor
RW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorewor
ICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RE
T01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJ1
bnNpZ25lZExvbmdOdWxsYWJsZUF0dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpz
VGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRl
LCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Cisg
ICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gdG9KUzxJRExOdWxsYWJsZTxJRExVbnNpZ25lZExvbmc+PihpbXBsLnVuc2lnbmVkTG9uZ051
bGxhYmxlQXR0cigpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitUZXN0RE9NSklUVW5zaWdu
ZWRMb25nTnVsbGFibGVBdHRyRE9NSklUOjpUZXN0RE9NSklUVW5zaWduZWRMb25nTnVsbGFibGVB
dHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklU
VW5zaWduZWRMb25nTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwg
KEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQoreworfQorCitKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVW5z
aWduZWRMb25nTnVsbGFibGVBdHRyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGVz
dERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0ckRPTUpJVD4gY29tcGlsZXI7CisgICAgcmV0
dXJuICZjb21waWxlci5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERP
TUpJVExvbmdMb25nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRM
b25nTG9uZ051bGxhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RE
T01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJHZXR0ZXI+
KHN0YXRlLCB0aGlzVmFsdWUsICJsb25nTG9uZ051bGxhYmxlQXR0ciIpOworfQorCitzdGF0aWMg
aW5saW5lIEpTVmFsdWUganNUZXN0RE9NSklUTG9uZ0xvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJv
d1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMTG9uZ0xvbmc+PihpbXBsLmxvbmdM
b25nTnVsbGFibGVBdHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Rlc3RET01KSVRM
b25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVExvbmdMb25nTnVsbGFibGVBdHRy
RE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUTG9u
Z0xvbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpT
cGVjQnl0ZWNvZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCit7Cit9CisKK0pTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRMb25nTG9uZ051
bGxhYmxlQXR0cigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRlc3RET01KSVRMb25n
TG9uZ051bGxhYmxlQXR0ckRPTUpJVD4gY29tcGlsZXI7CisgICAgcmV0dXJuICZjb21waWxlci5n
ZXQoKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVkTG9u
Z0xvbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0RE9NSklUJiwgVGhyb3dT
Y29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVFVuc2lnbmVk
TG9uZ0xvbmdOdWxsYWJsZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0
RE9NSklUPjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0
dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJ1bnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRy
Iik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnNpZ25lZExvbmdM
b25nTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdERPTUpJVCYgdGhp
c09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0odGhy
b3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETE51bGxhYmxl
PElETFVuc2lnbmVkTG9uZ0xvbmc+PihpbXBsLnVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIo
KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdO
dWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01KSVRVbnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRy
RE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5z
aWduZWRMb25nTG9uZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9NSklUOjppbmZvKCks
IChKU0M6OlNwZWNCeXRlY29kZU51bWJlciB8IEpTQzo6U3BlY090aGVyKSkKK3sKK30KKworSlND
OjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVu
c2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVD4gY29tcGlsZXI7
CisgICAgcmV0dXJuICZjb21waWxlci5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYsIEpTVGVzdERP
TUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RE
T01KSVRGbG9hdE51bGxhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rl
c3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJHZXR0ZXI+
KHN0YXRlLCB0aGlzVmFsdWUsICJmbG9hdE51bGxhYmxlQXR0ciIpOworfQorCitzdGF0aWMgaW5s
aW5lIEpTVmFsdWUganNUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURfUEFSQU0oc3Rh
dGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMRmxvYXQ+PihpbXBsLmZsb2F0TnVsbGFibGVB
dHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Rlc3RET01KSVRGbG9hdE51bGxhYmxl
QXR0ckRPTUpJVDo6VGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKCkKKyAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURmxvYXROdWxsYWJsZUF0dHIsIG51
bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNvZGVOdW1iZXIgfCBK
U0M6OlNwZWNPdGhlcikpCit7Cit9CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJ
VEdldHRlclNldHRlckZvclRlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0cigpCit7CisgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFRlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVD4gY29t
cGlsZXI7CisgICAgcmV0dXJuICZjb21waWxlci5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBK
U1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyR2V0dGVyKEV4
ZWNTdGF0ZSYsIEpTVGVzdERPTUpJVCYsIFRocm93U2NvcGUmIHRocm93U2NvcGUpOworCitFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0cihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sK
KyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0
RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFs
dWUsICJ1bnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ciIpOworfQorCitzdGF0aWMgaW5saW5l
IEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0dHJHZXR0ZXIo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBVTlVTRURf
UEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMVW5yZXN0cmljdGVkRmxvYXQ+
PihpbXBsLnVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyKCkpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK1Rlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVDo6
VGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVsbGFibGVBdHRyRE9NSklUKCkKKyAgICA6IEpT
Qzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRmxvYXROdWxs
YWJsZUF0dHIsIG51bGxwdHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjQnl0ZWNv
ZGVOdW1iZXIgfCBKU0M6OlNwZWNPdGhlcikpCit7Cit9CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJT
ZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51
bGxhYmxlQXR0cigpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRlc3RET01KSVRVbnJl
c3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVD4gY29tcGlsZXI7CisgICAgcmV0dXJuICZj
b21waWxlci5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERv
dWJsZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklURG91YmxlTnVs
bGFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0
dHJpYnV0ZTxqc1Rlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlz
VmFsdWUsICJkb3VibGVOdWxsYWJsZUF0dHIiKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBK
U1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAg
VU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CisgICAg
YXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0g
dG9KUzxJRExOdWxsYWJsZTxJRExEb3VibGU+PihpbXBsLmRvdWJsZU51bGxhYmxlQXR0cigpKTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyRE9N
SklUOjpUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9N
SklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyLCBudWxscHRy
LCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3BlY0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpT
cGVjT3RoZXIpKQoreworfQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0
ZXJTZXR0ZXJGb3JUZXN0RE9NSklURG91YmxlTnVsbGFibGVBdHRyKCkKK3sKKyAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8VGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVD4gY29tcGls
ZXI7CisgICAgcmV0dXJuICZjb21waWxlci5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckdldHRlcihFeGVj
U3RhdGUmLCBKU1Rlc3RET01KSVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2Rl
ZEpTVmFsdWUganNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQorewor
ICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpTVGVzdERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RE
T01KSVRVbnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHJHZXR0ZXI+KHN0YXRlLCB0aGlzVmFs
dWUsICJ1bnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHIiKTsKK30KKworc3RhdGljIGlubGlu
ZSBKU1ZhbHVlIGpzVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckdldHRl
cihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExVbnJlc3RyaWN0ZWREb3Vi
bGU+PihpbXBsLnVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0cigpKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyRE9N
SklUOjpUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlTnVsbGFibGVBdHRyRE9NSklUKCkKKyAg
ICA6IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIoanNUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91
YmxlTnVsbGFibGVBdHRyLCBudWxscHRyLCBKU1Rlc3RET01KSVQ6OmluZm8oKSwgKEpTQzo6U3Bl
Y0J5dGVjb2RlTnVtYmVyIHwgSlNDOjpTcGVjT3RoZXIpKQoreworfQorCitKU0M6OkRPTUpJVDo6
R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0RE9NSklUVW5yZXN0cmljdGVk
RG91YmxlTnVsbGFibGVBdHRyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGVzdERP
TUpJVFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0ckRPTUpJVD4gY29tcGlsZXI7CisgICAg
cmV0dXJuICZjb21waWxlci5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01K
SVQmLCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9N
SklURG9tU3RyaW5nTnVsbGFibGVBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVybiBCaW5kaW5nQ2FsbGVyPEpT
VGVzdERPTUpJVD46OmF0dHJpYnV0ZTxqc1Rlc3RET01KSVREb21TdHJpbmdOdWxsYWJsZUF0dHJH
ZXR0ZXI+KHN0YXRlLCB0aGlzVmFsdWUsICJkb21TdHJpbmdOdWxsYWJsZUF0dHIiKTsKK30KKwor
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckdl
dHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RET01KSVQmIHRoaXNPYmplY3QsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExOdWxsYWJsZTxJRExET01TdHJpbmc+Pihz
dGF0ZSwgaW1wbC5kb21TdHJpbmdOdWxsYWJsZUF0dHIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVDo6VGVzdERPTUpJVERv
bVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCgpCisgICAgOiBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0
dGVyKGpzVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNUZXN0RE9N
SklUOjppbmZvKCksIChKU0M6OlNwZWNTdHJpbmcgfCBKU0M6OlNwZWNPdGhlcikpCit7Cit9CisK
K0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRlc3RET01K
SVREb21TdHJpbmdOdWxsYWJsZUF0dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxU
ZXN0RE9NSklURG9tU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUPiBjb21waWxlcjsKKyAgICByZXR1
cm4gJmNvbXBpbGVyLmdldCgpOworfQorCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0RE9N
SklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckdldHRlcihFeGVjU3RhdGUmLCBKU1Rlc3RET01KSVQm
LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKTsKKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklU
Qnl0ZVN0cmluZ051bGxhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxlcjxKU1Rl
c3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckdl
dHRlcj4oc3RhdGUsIHRoaXNWYWx1ZSwgImJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIiKTsKK30KKwor
c3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJH
ZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJvd1Nj
b3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQo
KTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoJnN0YXRlLCB0aGlzT2JqZWN0Lmdsb2JhbE9i
amVjdCgpLCBpbXBsLmJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIoKSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01K
SVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyRE9NSklUKCkKKyAgICA6IEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIoanNUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ciwgbnVsbHB0ciwgSlNU
ZXN0RE9NSklUOjppbmZvKCksIChKU0M6OlNwZWNTdHJpbmcgfCBKU0M6OlNwZWNPdGhlcikpCit7
Cit9CisKK0pTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIqIGRvbUpJVEdldHRlclNldHRlckZvclRl
c3RET01KSVRCeXRlU3RyaW5nTnVsbGFibGVBdHRyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ+IGNvbXBpbGVyOwor
ICAgIHJldHVybiAmY29tcGlsZXIuZ2V0KCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBq
c1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0
RE9NSklUJiwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVz
dERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0cihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sKKyAgICByZXR1cm4gQmluZGluZ0NhbGxl
cjxKU1Rlc3RET01KSVQ+OjphdHRyaWJ1dGU8anNUZXN0RE9NSklUVXN2U3RyaW5nTnVsbGFibGVB
dHRyR2V0dGVyPihzdGF0ZSwgdGhpc1ZhbHVlLCAidXN2U3RyaW5nTnVsbGFibGVBdHRyIik7Cit9
CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0
dHJHZXR0ZXIoRXhlY1N0YXRlJiBzdGF0ZSwgSlNUZXN0RE9NSklUJiB0aGlzT2JqZWN0LCBUaHJv
d1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAg
ICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBw
ZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlM8SURMTnVsbGFibGU8SURMVVNWU3RyaW5n
Pj4oc3RhdGUsIGltcGwudXN2U3RyaW5nTnVsbGFibGVBdHRyKCkpOworICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQ6OlRlc3RET01K
SVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHJET01KSVQoKQorICAgIDogSlNDOjpET01KSVQ6OkdldHRl
clNldHRlcihqc1Rlc3RET01KSVRVc3ZTdHJpbmdOdWxsYWJsZUF0dHIsIG51bGxwdHIsIEpTVGVz
dERPTUpJVDo6aW5mbygpLCAoSlNDOjpTcGVjU3RyaW5nIHwgSlNDOjpTcGVjT3RoZXIpKQorewor
fQorCitKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyKiBkb21KSVRHZXR0ZXJTZXR0ZXJGb3JUZXN0
RE9NSklUVXN2U3RyaW5nTnVsbGFibGVBdHRyKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8VGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ckRPTUpJVD4gY29tcGlsZXI7CisgICAg
cmV0dXJuICZjb21waWxlci5nZXQoKTsKK30KKworc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVz
dERPTUpJVE5vZGVOdWxsYWJsZUF0dHJHZXR0ZXIoRXhlY1N0YXRlJiwgSlNUZXN0RE9NSklUJiwg
VGhyb3dTY29wZSYgdGhyb3dTY29wZSk7CisKK0VuY29kZWRKU1ZhbHVlIGpzVGVzdERPTUpJVE5v
ZGVOdWxsYWJsZUF0dHIoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIEJpbmRpbmdDYWxsZXI8SlNUZXN0RE9NSklU
Pjo6YXR0cmlidXRlPGpzVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHJHZXR0ZXI+KHN0YXRlLCB0
aGlzVmFsdWUsICJub2RlTnVsbGFibGVBdHRyIik7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBqc1Rlc3RET01KSVROb2RlTnVsbGFibGVBdHRyR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpT
VGVzdERPTUpJVCYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0
b0pTKCZzdGF0ZSwgdGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgaW1wbC5ub2RlTnVsbGFibGVB
dHRyKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Rlc3RET01KSVROb2RlTnVsbGFibGVB
dHRyRE9NSklUOjpUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVCgpCisgICAgOiBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyKGpzVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHIsIG51bGxw
dHIsIEpTVGVzdERPTUpJVDo6aW5mbygpLCBTcGVjSGVhcFRvcCkKK3sKK30KKworSlNDOjpET01K
SVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVE5vZGVOdWxs
YWJsZUF0dHIoKQoreworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXN0RE9NSklUTm9kZU51
bGxhYmxlQXR0ckRPTUpJVD4gY29tcGlsZXI7CisgICAgcmV0dXJuICZjb21waWxlci5nZXQoKTsK
K30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0RE9NSklUQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7CisgICAgVk0m
IHZtID0gc3RhdGUtPnZtKCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisgICAgSlNUZXN0RE9NSklUUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdERPTUpJVFByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKKyAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdERPTUpJVDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xv
YmFsT2JqZWN0KCkpKTsKK30KKworYm9vbCBzZXRKU1Rlc3RET01KSVRDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CisgICAgSlNUZXN0RE9NSklUUHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdERPTUpJVFByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpIHsKKyAg
ICAgICAgdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9CisgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IK
KyAgICByZXR1cm4gZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9w
ZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIHZhbHVlKTsKK30KKworSlNWYWx1ZSBKU1Rlc3RET01K
SVQ6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgY29uc3QgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RE9NSklUQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7Cit9CisKK3ZvaWQgSlNUZXN0RE9NSklUOjp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwg
U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U1Rlc3RET01KSVQqPihjZWxsKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNP
YmplY3QsIGluZm8oKSk7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNp
dG9yKTsKKyAgICB0aGlzT2JqZWN0LT53cmFwcGVkKCkudmlzaXRKU0V2ZW50TGlzdGVuZXJzKHZp
c2l0b3IpOworfQorCisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42NDJjNmZkMDIyZmQ3NDM3
MTU1MTA4NzVhYzdmNzg4ZjA3YmI2YmE2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5oCkBAIC0wLDAgKzEsNDI2
IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2Ug
cHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJp
bmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAi
SlNOb2RlLmgiCisjaW5jbHVkZSAiVGVzdERPTUpJVC5oIgorI2luY2x1ZGUgPGRvbWppdC9ET01K
SVRHZXR0ZXJTZXR0ZXIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3RE
T01KSVQgOiBwdWJsaWMgSlNOb2RlIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb2Rl
OworICAgIHVzaW5nIERPTVdyYXBwZWQgPSBUZXN0RE9NSklUOworICAgIHN0YXRpYyBKU1Rlc3RE
T01KSVQqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdERPTUpJVD4mJiBpbXBsKQorICAgIHsKKyAgICAgICAg
SlNUZXN0RE9NSklUKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dERPTUpJVD4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RET01KSVQoc3RydWN0dXJl
LCAqZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKwor
ICAgIHN0YXRpYyBKU0M6OkpTT2JqZWN0KiBjcmVhdGVQcm90b3R5cGUoSlNDOjpWTSYsIEpTQzo6
SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogcHJvdG90eXBlKEpT
Qzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6SlNUeXBlKEpTTm9kZVR5cGUpLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIEpTQzo6SlNWYWx1
ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgY29uc3QgSlNDOjpKU0dsb2JhbE9iamVjdCopOwor
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYp
OworCisgICAgVGVzdERPTUpJVCYgd3JhcHBlZCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8VGVzdERPTUpJVCY+KEJhc2U6OndyYXBwZWQoKSk7CisgICAgfQorcHJv
dGVjdGVkOgorICAgIEpTVGVzdERPTUpJVChKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0JiwgUmVmPFRlc3RET01KSVQ+JiYpOworCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6
OlZNJiB2bSkKKyAgICB7CisgICAgICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICAg
ICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIH0KKworfTsKKworCisvLyBET01KSVQg
ZW1pdHRlcnMgZm9yIGF0dHJpYnV0ZXMKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9t
SklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEFueUF0dHIodm9pZCk7CitjbGFzcyBUZXN0RE9N
SklUQW55QXR0ckRPTUpJVCA6IHB1YmxpYyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1
YmxpYzoKKyAgICBUZXN0RE9NSklUQW55QXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisg
ICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAg
IFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsK
KyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0
dGVyRm9yVGVzdERPTUpJVEJvb2xlYW5BdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVEJvb2xl
YW5BdHRyRE9NSklUIDogcHVibGljIEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworcHVibGlj
OgorICAgIFRlc3RET01KSVRCb29sZWFuQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisg
ICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAg
IFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsK
KyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0
dGVyRm9yVGVzdERPTUpJVEJ5dGVBdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVEJ5dGVBdHRy
RE9NSklUIDogcHVibGljIEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworcHVibGljOgorICAg
IFRlc3RET01KSVRCeXRlQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpT
Qzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6
OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgor
fTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVz
dERPTUpJVE9jdGV0QXR0cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVRPY3RldEF0dHJET01KSVQg
OiBwdWJsaWMgSlNDOjpET01KSVQ6OkdldHRlclNldHRlciB7CitwdWJsaWM6CisgICAgVGVzdERP
TUpJVE9jdGV0QXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9N
SklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKwor
SlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJ
VFNob3J0QXR0cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVRTaG9ydEF0dHJET01KSVQgOiBwdWJs
aWMgSlNDOjpET01KSVQ6OkdldHRlclNldHRlciB7CitwdWJsaWM6CisgICAgVGVzdERPTUpJVFNo
b3J0QXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9NSklUOjpQ
YXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2Fs
bERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKworSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVuc2ln
bmVkU2hvcnRBdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVFVuc2lnbmVkU2hvcnRBdHRyRE9N
SklUIDogcHVibGljIEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworcHVibGljOgorICAgIFRl
c3RET01KSVRVbnNpZ25lZFNob3J0QXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAg
UmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJl
ZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNl
bmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVy
Rm9yVGVzdERPTUpJVExvbmdBdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVExvbmdBdHRyRE9N
SklUIDogcHVibGljIEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworcHVibGljOgorICAgIFRl
c3RET01KSVRMb25nQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6
RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRP
TUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsK
KworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERP
TUpJVFVuc2lnbmVkTG9uZ0F0dHIodm9pZCk7CitjbGFzcyBUZXN0RE9NSklUVW5zaWduZWRMb25n
QXR0ckRPTUpJVCA6IHB1YmxpYyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoK
KyAgICBUZXN0RE9NSklUVW5zaWduZWRMb25nQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQp
CisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOwor
ICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlk
ZTsKKyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVy
U2V0dGVyRm9yVGVzdERPTUpJVExvbmdMb25nQXR0cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVRM
b25nTG9uZ0F0dHJET01KSVQgOiBwdWJsaWMgSlNDOjpET01KSVQ6OkdldHRlclNldHRlciB7Citw
dWJsaWM6CisgICAgVGVzdERPTUpJVExvbmdMb25nQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShK
SVQpCisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRl
OworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVy
cmlkZTsKKyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0
dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyKHZvaWQpOworY2xhc3Mg
VGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdBdHRyRE9NSklUIDogcHVibGljIEpTQzo6RE9NSklU
OjpHZXR0ZXJTZXR0ZXIgeworcHVibGljOgorICAgIFRlc3RET01KSVRVbnNpZ25lZExvbmdMb25n
QXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRj
aHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERP
TVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKworSlNDOjpET01K
SVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEZsb2F0QXR0
cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVRGbG9hdEF0dHJET01KSVQgOiBwdWJsaWMgSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlciB7CitwdWJsaWM6CisgICAgVGVzdERPTUpJVEZsb2F0QXR0ckRP
TUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50
PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNo
cG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6Okdl
dHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVucmVzdHJpY3RlZEZs
b2F0QXR0cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdEF0dHJET01K
SVQgOiBwdWJsaWMgSlNDOjpET01KSVQ6OkdldHRlclNldHRlciB7CitwdWJsaWM6CisgICAgVGVz
dERPTUpJVFVucmVzdHJpY3RlZEZsb2F0QXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisg
ICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAg
IFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsK
KyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0
dGVyRm9yVGVzdERPTUpJVERvdWJsZUF0dHIodm9pZCk7CitjbGFzcyBUZXN0RE9NSklURG91Ymxl
QXR0ckRPTUpJVCA6IHB1YmxpYyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoK
KyAgICBUZXN0RE9NSklURG91YmxlQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAg
UmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJl
ZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNl
bmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVy
Rm9yVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJsZUF0dHIodm9pZCk7CitjbGFzcyBUZXN0RE9N
SklUVW5yZXN0cmljdGVkRG91YmxlQXR0ckRPTUpJVCA6IHB1YmxpYyBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyIHsKK3B1YmxpYzoKKyAgICBUZXN0RE9NSklUVW5yZXN0cmljdGVkRG91YmxlQXR0
ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBv
aW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBh
dGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6
OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVERvbVN0cmluZ0F0
dHIodm9pZCk7CitjbGFzcyBUZXN0RE9NSklURG9tU3RyaW5nQXR0ckRPTUpJVCA6IHB1YmxpYyBK
U0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoKKyAgICBUZXN0RE9NSklURG9tU3Ry
aW5nQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9NSklUOjpQ
YXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2Fs
bERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKworSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEJ5dGVT
dHJpbmdBdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVEJ5dGVTdHJpbmdBdHRyRE9NSklUIDog
cHVibGljIEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworcHVibGljOgorICAgIFRlc3RET01K
SVRCeXRlU3RyaW5nQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6
RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRP
TUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsK
KworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERP
TUpJVFVzdlN0cmluZ0F0dHIodm9pZCk7CitjbGFzcyBUZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRP
TUpJVCA6IHB1YmxpYyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoKKyAgICBU
ZXN0RE9NSklUVXN2U3RyaW5nQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVm
PEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxK
U0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRp
ZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9y
VGVzdERPTUpJVE5vZGVBdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVE5vZGVBdHRyRE9NSklU
IDogcHVibGljIEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworcHVibGljOgorICAgIFRlc3RE
T01KSVROb2RlQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9N
SklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKwor
SlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJ
VEJvb2xlYW5OdWxsYWJsZUF0dHIodm9pZCk7CitjbGFzcyBUZXN0RE9NSklUQm9vbGVhbk51bGxh
YmxlQXR0ckRPTUpJVCA6IHB1YmxpYyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1Ymxp
YzoKKyAgICBUZXN0RE9NSklUQm9vbGVhbk51bGxhYmxlQXR0ckRPTUpJVCgpOworI2lmIEVOQUJM
RShKSVQpCisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJy
aWRlOworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBv
dmVycmlkZTsKKyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklU
R2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEJ5dGVOdWxsYWJsZUF0dHIodm9pZCk7CitjbGFzcyBU
ZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJVCA6IHB1YmxpYyBKU0M6OkRPTUpJVDo6R2V0
dGVyU2V0dGVyIHsKK3B1YmxpYzoKKyAgICBUZXN0RE9NSklUQnl0ZU51bGxhYmxlQXR0ckRPTUpJ
VCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBj
aGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9p
bnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRl
clNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRy
KHZvaWQpOworY2xhc3MgVGVzdERPTUpJVE9jdGV0TnVsbGFibGVBdHRyRE9NSklUIDogcHVibGlj
IEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworcHVibGljOgorICAgIFRlc3RET01KSVRPY3Rl
dE51bGxhYmxlQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9N
SklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKwor
SlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJ
VFNob3J0TnVsbGFibGVBdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVFNob3J0TnVsbGFibGVB
dHRyRE9NSklUIDogcHVibGljIEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworcHVibGljOgor
ICAgIFRlc3RET01KSVRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQp
CisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOwor
ICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlk
ZTsKKyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVy
U2V0dGVyRm9yVGVzdERPTUpJVFVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHIodm9pZCk7CitjbGFz
cyBUZXN0RE9NSklUVW5zaWduZWRTaG9ydE51bGxhYmxlQXR0ckRPTUpJVCA6IHB1YmxpYyBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoKKyAgICBUZXN0RE9NSklUVW5zaWduZWRT
aG9ydE51bGxhYmxlQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6
RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRP
TUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsK
KworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERP
TUpJVExvbmdOdWxsYWJsZUF0dHIodm9pZCk7CitjbGFzcyBUZXN0RE9NSklUTG9uZ051bGxhYmxl
QXR0ckRPTUpJVCA6IHB1YmxpYyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoK
KyAgICBUZXN0RE9NSklUTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQp
CisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOwor
ICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlk
ZTsKKyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVy
U2V0dGVyRm9yVGVzdERPTUpJVFVuc2lnbmVkTG9uZ051bGxhYmxlQXR0cih2b2lkKTsKK2NsYXNz
IFRlc3RET01KSVRVbnNpZ25lZExvbmdOdWxsYWJsZUF0dHJET01KSVQgOiBwdWJsaWMgSlNDOjpE
T01KSVQ6OkdldHRlclNldHRlciB7CitwdWJsaWM6CisgICAgVGVzdERPTUpJVFVuc2lnbmVkTG9u
Z051bGxhYmxlQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9N
SklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKwor
SlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJ
VExvbmdMb25nTnVsbGFibGVBdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVExvbmdMb25nTnVs
bGFibGVBdHRyRE9NSklUIDogcHVibGljIEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworcHVi
bGljOgorICAgIFRlc3RET01KSVRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpOworI2lmIEVO
QUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92
ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00o
KSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9t
SklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVuc2lnbmVkTG9uZ0xvbmdOdWxsYWJsZUF0dHIo
dm9pZCk7CitjbGFzcyBUZXN0RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJ
VCA6IHB1YmxpYyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoKKyAgICBUZXN0
RE9NSklUVW5zaWduZWRMb25nTG9uZ051bGxhYmxlQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShK
SVQpCisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRl
OworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVy
cmlkZTsKKyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0
dGVyU2V0dGVyRm9yVGVzdERPTUpJVEZsb2F0TnVsbGFibGVBdHRyKHZvaWQpOworY2xhc3MgVGVz
dERPTUpJVEZsb2F0TnVsbGFibGVBdHRyRE9NSklUIDogcHVibGljIEpTQzo6RE9NSklUOjpHZXR0
ZXJTZXR0ZXIgeworcHVibGljOgorICAgIFRlc3RET01KSVRGbG9hdE51bGxhYmxlQXR0ckRPTUpJ
VCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBj
aGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9p
bnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRl
clNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0
TnVsbGFibGVBdHRyKHZvaWQpOworY2xhc3MgVGVzdERPTUpJVFVucmVzdHJpY3RlZEZsb2F0TnVs
bGFibGVBdHRyRE9NSklUIDogcHVibGljIEpTQzo6RE9NSklUOjpHZXR0ZXJTZXR0ZXIgeworcHVi
bGljOgorICAgIFRlc3RET01KSVRVbnJlc3RyaWN0ZWRGbG9hdE51bGxhYmxlQXR0ckRPTUpJVCgp
OworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVj
a0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+
IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVERvdWJsZU51bGxhYmxlQXR0cih2
b2lkKTsKK2NsYXNzIFRlc3RET01KSVREb3VibGVOdWxsYWJsZUF0dHJET01KSVQgOiBwdWJsaWMg
SlNDOjpET01KSVQ6OkdldHRlclNldHRlciB7CitwdWJsaWM6CisgICAgVGVzdERPTUpJVERvdWJs
ZU51bGxhYmxlQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9N
SklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKwor
SlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJ
VFVucmVzdHJpY3RlZERvdWJsZU51bGxhYmxlQXR0cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVRV
bnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHJET01KSVQgOiBwdWJsaWMgSlNDOjpET01KSVQ6
OkdldHRlclNldHRlciB7CitwdWJsaWM6CisgICAgVGVzdERPTUpJVFVucmVzdHJpY3RlZERvdWJs
ZU51bGxhYmxlQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9N
SklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJ
VDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKwor
SlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJ
VERvbVN0cmluZ051bGxhYmxlQXR0cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVREb21TdHJpbmdO
dWxsYWJsZUF0dHJET01KSVQgOiBwdWJsaWMgSlNDOjpET01KSVQ6OkdldHRlclNldHRlciB7Citw
dWJsaWM6CisgICAgVGVzdERPTUpJVERvbVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCgpOworI2lm
IEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgp
IG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxE
T00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciog
ZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVEJ5dGVTdHJpbmdOdWxsYWJsZUF0dHIodm9p
ZCk7CitjbGFzcyBUZXN0RE9NSklUQnl0ZVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCA6IHB1Ymxp
YyBKU0M6OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoKKyAgICBUZXN0RE9NSklUQnl0
ZVN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpT
Qzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6
OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgor
fTsKKworSlNDOjpET01KSVQ6OkdldHRlclNldHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVz
dERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0cih2b2lkKTsKK2NsYXNzIFRlc3RET01KSVRVc3ZT
dHJpbmdOdWxsYWJsZUF0dHJET01KSVQgOiBwdWJsaWMgSlNDOjpET01KSVQ6OkdldHRlclNldHRl
ciB7CitwdWJsaWM6CisgICAgVGVzdERPTUpJVFVzdlN0cmluZ051bGxhYmxlQXR0ckRPTUpJVCgp
OworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9NSklUOjpQYXRjaHBvaW50PiBjaGVj
a0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTVBhdGNocG9pbnQ+
IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKworSlNDOjpET01KSVQ6OkdldHRlclNl
dHRlciogZG9tSklUR2V0dGVyU2V0dGVyRm9yVGVzdERPTUpJVE5vZGVOdWxsYWJsZUF0dHIodm9p
ZCk7CitjbGFzcyBUZXN0RE9NSklUTm9kZU51bGxhYmxlQXR0ckRPTUpJVCA6IHB1YmxpYyBKU0M6
OkRPTUpJVDo6R2V0dGVyU2V0dGVyIHsKK3B1YmxpYzoKKyAgICBUZXN0RE9NSklUTm9kZU51bGxh
YmxlQXR0ckRPTUpJVCgpOworI2lmIEVOQUJMRShKSVQpCisgICAgUmVmPEpTQzo6RE9NSklUOjpQ
YXRjaHBvaW50PiBjaGVja0RPTSgpIG92ZXJyaWRlOworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2Fs
bERPTVBhdGNocG9pbnQ+IGNhbGxET00oKSBvdmVycmlkZTsKKyNlbmRpZgorfTsKKwordGVtcGxh
dGU8PiBzdHJ1Y3QgSlNET01XcmFwcGVyQ29udmVydGVyVHJhaXRzPFRlc3RET01KSVQ+IHsKKyAg
ICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBKU1Rlc3RET01KSVQ7CisgICAgdXNpbmcgVG9XcmFwcGVk
UmV0dXJuVHlwZSA9IFRlc3RET01KSVQqOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01K
SVQuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RET01KSVQu
aWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmJlN2VkMDRmZjYzZGU2ODZiYzg3NjQ4MjgyYjZhYWY2NGMyNzczZTcK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VGVzdERPTUpJVC5pZGwKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3JtLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKK2ludGVyZmFjZSBUZXN0RE9NSklUIDogTm9kZSB7CisgICAg
W0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIGFueSBhbnlBdHRyOworICAgIFtET01KSVRdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGJvb2xlYW5BdHRyOworICAgIFtET01KSVRdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBieXRlIGJ5dGVBdHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJp
YnV0ZSBvY3RldCBvY3RldEF0dHI7CisgICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIHNo
b3J0IHNob3J0QXR0cjsKKyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQg
c2hvcnQgdW5zaWduZWRTaG9ydEF0dHI7CisgICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRl
IGxvbmcgbG9uZ0F0dHI7CisgICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgdW5zaWduZWRMb25nQXR0cjsKKyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUg
bG9uZyBsb25nIGxvbmdMb25nQXR0cjsKKyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBsb25nIHVuc2lnbmVkTG9uZ0xvbmdBdHRyOworICAgIFtET01KSVRdIHJl
YWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBmbG9hdEF0dHI7CisgICAgW0RPTUpJVF0gcmVhZG9ubHkg
YXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdCB1bnJlc3RyaWN0ZWRGbG9hdEF0dHI7CisgICAg
W0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBkb3VibGVBdHRyOworICAgIFtET01K
SVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91YmxlIHVucmVzdHJpY3RlZERv
dWJsZUF0dHI7CisgICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBkb21T
dHJpbmdBdHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBCeXRlU3RyaW5nIGJ5
dGVTdHJpbmdBdHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmcg
dXN2U3RyaW5nQXR0cjsKKyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgTm9kZSBub2Rl
QXR0cjsKKworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuPyBib29sZWFu
TnVsbGFibGVBdHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBieXRlPyBieXRl
TnVsbGFibGVBdHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBvY3RldD8gb2N0
ZXROdWxsYWJsZUF0dHI7CisgICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIHNob3J0PyBz
aG9ydE51bGxhYmxlQXR0cjsKKyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgc2hvcnQ/IHVuc2lnbmVkU2hvcnROdWxsYWJsZUF0dHI7CisgICAgW0RPTUpJVF0gcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmc/IGxvbmdOdWxsYWJsZUF0dHI7CisgICAgW0RPTUpJVF0gcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmc/IHVuc2lnbmVkTG9uZ051bGxhYmxlQXR0cjsKKyAg
ICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBsb25nPyBsb25nTG9uZ051bGxhYmxl
QXR0cjsKKyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25n
PyB1bnNpZ25lZExvbmdMb25nTnVsbGFibGVBdHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0
dHJpYnV0ZSBmbG9hdD8gZmxvYXROdWxsYWJsZUF0dHI7CisgICAgW0RPTUpJVF0gcmVhZG9ubHkg
YXR0cmlidXRlIHVucmVzdHJpY3RlZCBmbG9hdD8gdW5yZXN0cmljdGVkRmxvYXROdWxsYWJsZUF0
dHI7CisgICAgW0RPTUpJVF0gcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZT8gZG91YmxlTnVsbGFi
bGVBdHRyOworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnJlc3RyaWN0ZWQgZG91
YmxlPyB1bnJlc3RyaWN0ZWREb3VibGVOdWxsYWJsZUF0dHI7CisgICAgW0RPTUpJVF0gcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZz8gZG9tU3RyaW5nTnVsbGFibGVBdHRyOworICAgIFtET01K
SVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBCeXRlU3RyaW5nPyBieXRlU3RyaW5nTnVsbGFibGVBdHRy
OworICAgIFtET01KSVRdIHJlYWRvbmx5IGF0dHJpYnV0ZSBVU1ZTdHJpbmc/IHVzdlN0cmluZ051
bGxhYmxlQXR0cjsKKyAgICBbRE9NSklUXSByZWFkb25seSBhdHRyaWJ1dGUgTm9kZT8gbm9kZU51
bGxhYmxlQXR0cjsKK307Cg==
</data>
<flag name="review"
          id="315824"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>