<?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>133233</bug_id>
          
          <creation_ts>2014-05-23 14:14:04 -0700</creation_ts>
          <short_desc>Reduce the size of the bindings by factoring error case out into its own function</short_desc>
          <delta_ts>2016-11-11 07:00:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>alecflett</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1011348</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-05-23 14:14:04 -0700</bug_when>
    <thetext>Reduce the size of the bindings by factoring error case out into its own function</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011351</commentid>
    <comment_count>1</comment_count>
      <attachid>231984</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-05-23 14:16:42 -0700</bug_when>
    <thetext>Created attachment 231984
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1011361</commentid>
    <comment_count>2</comment_count>
      <attachid>231984</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2014-05-23 14:25:53 -0700</bug_when>
    <thetext>Comment on attachment 231984
Patch

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231984</attachid>
            <date>2014-05-23 14:16:42 -0700</date>
            <delta_ts>2014-05-23 14:25:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133233-20140523141618.patch</filename>
            <type>text/plain</type>
            <size>141820</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2OTI3OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE0LTA1LTIzICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHRoZSBzaXplIG9mIHRoZSBi
aW5kaW5ncyBieSBmYWN0b3JpbmcgZXJyb3IgY2FzZSBvdXQgaW50byBpdHMgb3duIGZ1bmN0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzMyMzMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNZXJnZSB0
aGUgY2FsbHMgdG8gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yICYgdGhyb3dHZXR0ZXJUeXBl
RXJyb3IgYW5kIAorICAgICAgICByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IgJiB0aHJvd1Nl
dHRlclR5cGVFcnJvciBpbnRvIGhlbHBlcnMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6aGFuZGxlR2V0dGVyVHlwZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmhhbmRsZVNldHRl
clR5cGVFcnJvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHA6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcDoKKwogMjAx
NC0wNS0yMyAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbQ1NTIEdyaWQgTGF5b3V0XSBVc2UgZ3JpZFJvd0NvdW50KCkgYW5kIGdyaWRDb2x1bW5D
b3VudCgpIHdoZW4gcG9zc2libGUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAx
NjkyNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpA
QCAtOTI0LDYgKzkyNCw4IEBAIF9fWk43V2ViQ29yZTIxV2luZG93c0xhdGluMUVuY29kaW5nRXYK
IF9fWk43V2ViQ29yZTIxY3JlYXRlQ0ZVUkxGcm9tQnVmZmVyRVBLY21QSzdfX0NGVVJMCiBfX1pO
N1dlYkNvcmUyMWZpbmRFdmVudFdpdGhLZXlTdGF0ZUVQTlNfNUV2ZW50RQogX19aTjdXZWJDb3Jl
MjFnZXRDYWNoZWRET01TdHJ1Y3R1cmVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUEtOM0pTQzlD
bGFzc0luZm9FCitfX1pON1dlYkNvcmUyMWhhbmRsZUdldHRlclR5cGVFcnJvckVSTjNKU0M5RXhl
Y1N0YXRlRVBOUzBfOEpTT2JqZWN0RVBLTlMwXzlDbGFzc0luZm9FUEtjUzlfCitfX1pON1dlYkNv
cmUyMWhhbmRsZVNldHRlclR5cGVFcnJvckVSTjNKU0M5RXhlY1N0YXRlRXhQS05TMF85Q2xhc3NJ
bmZvRVBLY1M3XwogX19aTjdXZWJDb3JlMjFpc0JhY2tGb3J3YXJkTG9hZFR5cGVFTlNfMTNGcmFt
ZUxvYWRUeXBlRQogX19aTjdXZWJDb3JlMjFtYWluVGhyZWFkTm9ybWFsV29ybGRFdgogX19aTjdX
ZWJDb3JlMjFtYXJrZXJUZXh0Rm9yTGlzdEl0ZW1FUE5TXzdFbGVtZW50RQpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiAxNjkyNjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NzAsNiArNTcwLDIxIEBAIHN0YXRpYyB2b2lkIGFwcGVuZEFyZ3VtZW50TXVz
dEJlKFN0cmluZ0IKICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIiBtdXN0IGJlICIpOwogfQog
CitFbmNvZGVkSlNWYWx1ZSBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoRXhlY1N0YXRlJiBleGVjLCBK
U09iamVjdCogc2xvdEJhc2UsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBjb25zdCBjaGFy
KiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKQoreworICAgIGlmIChz
bG90QmFzZS0+aW5oZXJpdHMoY2xhc3NJbmZvKSkKKyAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcihleGVjLCBpbnRlcmZhY2VOYW1lLCBhdHRyaWJ1dGVOYW1lKTsKKyAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoZXhlYywgaW50ZXJmYWNlTmFtZSwgYXR0cmli
dXRlTmFtZSk7Cit9CisKK3ZvaWQgaGFuZGxlU2V0dGVyVHlwZUVycm9yKEV4ZWNTdGF0ZSYgZXhl
YywgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbywg
Y29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSkKK3sK
KyAgICBpZiAoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkuaW5oZXJpdHMoY2xhc3NJbmZvKSkK
KyAgICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKGV4ZWMsIGludGVyZmFjZU5hbWUs
IGF0dHJpYnV0ZU5hbWUpOworICAgIGVsc2UKKyAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
ZXhlYywgaW50ZXJmYWNlTmFtZSwgYXR0cmlidXRlTmFtZSk7Cit9CisKIEpTQzo6RW5jb2RlZEpT
VmFsdWUgcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
Y29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSkKIHsK
ICAgICBhdXRvJiBjb250ZXh0ID0gKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KHN0YXRlLmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiAxNjkyNjUp
CisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNiArNjYsOSBAQCB0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwogRE9NV2lu
ZG93JiBhY3RpdmVET01XaW5kb3coSlNDOjpFeGVjU3RhdGUqKTsKIERPTVdpbmRvdyYgZmlyc3RE
T01XaW5kb3coSlNDOjpFeGVjU3RhdGUqKTsKIAorSlNDOjpFbmNvZGVkSlNWYWx1ZSBoYW5kbGVH
ZXR0ZXJUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0KiBzbG90QmFzZSwg
Y29uc3QgSlNDOjpDbGFzc0luZm8qLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBj
aGFyKiBhdHRyaWJ1dGVOYW1lKTsKK3ZvaWQgaGFuZGxlU2V0dGVyVHlwZUVycm9yKEpTQzo6RXhl
Y1N0YXRlJiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgY29uc3QgSlNDOjpDbGFzc0luZm8qLCBjb25z
dCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1lKTsKKwogSlND
OjpFbmNvZGVkSlNWYWx1ZSByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoSlNDOjpFeGVjU3Rh
dGUmLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBhdHRyaWJ1dGVOYW1l
KTsKIHZvaWQgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKEpTQzo6RXhlY1N0YXRlJiwgY29u
c3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogYXR0cmlidXRlTmFtZSk7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCShyZXZpc2lvbiAxNjkyNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpAQCAtMjEzMywxMSArMjEzMyw4
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2FzdGVkVGhpcyA9ICIgLiBHZXRDYXN0
aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAuICIoSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICRpbXBs
SW5jbHVkZXN7IlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCJ9ID0gMTsKLSAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7XG4i
KTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8JHtjbGFzc05hbWV9UHJvdG90eXBlKj4oc2xvdEJhc2UpKVxuIik7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpleGVjLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVcIik7
XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCBcIiRpbnRlcmZhY2VOYW1lXCIsIFwiJG5hbWVc
Iik7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsK
KyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCAke2NsYXNz
TmFtZX1Qcm90b3R5cGU6OmluZm8oKSwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xu
IikKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7XG4iKTsKICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oc2xvdEJhc2UpO1xuIik7CkBAIC0y
NDgzLDEwICsyNDgwLDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICR7Y2xhc3NOYW1lfSogY2FzdGVk
VGhpcyA9ICIgLiBHZXRDYXN0aW5nSGVscGVyRm9yVGhpc09iamVjdCgkaW50ZXJmYWNlKSAuICIo
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDwke2NsYXNzTmFtZX1Qcm90b3R5cGUqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpXG4iKTsKLSAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3Io
KmV4ZWMsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOwotICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZWxzZVxuIik7Ci0gICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsIFwiJGludGVyZmFjZU5hbWVcIiwgXCIkbmFtZVwiKTtcbiIpOworICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGhhbmRs
ZVNldHRlclR5cGVFcnJvcigqZXhlYywgdGhpc1ZhbHVlLCAke2NsYXNzTmFtZX1Qcm90b3R5cGU6
OmluZm8oKSwgXCIkaW50ZXJmYWNlTmFtZVwiLCBcIiRuYW1lXCIpO1xuIik7CiAgICAgICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgICAg
ICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAJKHJldmlzaW9u
IDE2OTI2NSkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RBY3RpdmVET01PYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsMTEgKzE0Nyw4IEBA
IGJvb2wgSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpnZXRPd25Qcm9wZXIKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdEFjdGl2ZURPTU9iamVjdEV4Y2l0aW5nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RBY3RpdmVET01PYmplY3QqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEFjdGl2ZURPTU9i
amVjdCIsICJleGNpdGluZ0F0dHIiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0F0dHIiKTsKLSAgICB9
CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdl
dHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3Rv
dHlwZTo6aW5mbygpLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsICJleGNpdGluZ0F0dHIiKTsKICAg
ICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhleGVj
LCBjYXN0ZWRUaGlzLT5pbXBsKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogICAgIFRlc3RBY3RpdmVET01PYmplY3QmIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAxNjkyNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCwxMSArMTgw
LDggQEAgYm9vbCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpnZXRPd25Qcm9wZQogRW5jb2RlZEpT
VmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHIxKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RFdmVudENvbnN0cnVjdG9yKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0RXZlbnRDb25z
dHJ1Y3RvciIsICJhdHRyMSIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICJhdHRyMSIpOwotICAgIH0KKyAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVy
cm9yKCpleGVjLCBzbG90QmFzZSwgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZTo6aW5m
bygpLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAiYXR0cjEiKTsKICAgICBUZXN0RXZlbnRDb25z
dHJ1Y3RvciYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9
IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuYXR0cjEoKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTk0LDExICsxOTEsOCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RFdmVudENvbnN0cnVjdG9yQXR0CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0
cnVjdG9yQXR0cjIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3IqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV2ZW50Q29uc3RydWN0b3Iq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RFdmVudENvbnN0cnVjdG9y
UHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RFdmVudENvbnN0cnVjdG9yIiwgImF0dHIyIik7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RFdmVudENvbnN0
cnVjdG9yIiwgImF0dHIyIik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBK
U1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlOjppbmZvKCksICJUZXN0RXZlbnRDb25zdHJ1
Y3RvciIsICJhdHRyMiIpOwogICAgIFRlc3RFdmVudENvbnN0cnVjdG9yJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhl
YywgaW1wbC5hdHRyMigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAkocmV2aXNpb24gMTY5MjY1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzOSwxMSArMTM5LDggQEAgYm9vbCBKU1Rlc3RFeGNlcHRpb246OmdldE93
blByb3BlcnR5U2xvdAogRW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0aW9uTmFtZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0RXhjZXB0aW9uKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RFeGNlcHRpb24qPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEV4Y2VwdGlvbiIsICJu
YW1lIik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RF
eGNlcHRpb24iLCAibmFtZSIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVjLCBzbG90QmFzZSwg
SlNUZXN0RXhjZXB0aW9uUHJvdG90eXBlOjppbmZvKCksICJUZXN0RXhjZXB0aW9uIiwgIm5hbWUi
KTsKICAgICBUZXN0RXhjZXB0aW9uJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5uYW1lKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
Y3BwCShyZXZpc2lvbiAxNjkyNjUpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM3LDExICs0
MzcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvCiBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VJbXBsZW1lbnRzU3RyMShFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3Ry
MSIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50
ZXJmYWNlIiwgImltcGxlbWVudHNTdHIxIik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2Fz
dGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNs
b3RCYXNlLCBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RJbnRlcmZhY2Ui
LCAiaW1wbGVtZW50c1N0cjEiKTsKICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywg
aW1wbC5pbXBsZW1lbnRzU3RyMSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkBAIC00NTMsMTEgKzQ1MCw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUlt
cGxlbWVudHMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAg
IHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNl
IiwgImltcGxlbWVudHNTdHIyIik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjIiKTsKLSAgICB9CisgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5
cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6aW5mbygp
LCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOwogICAgIFRlc3RJbnRlcmZhY2Um
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmlu
Z1dpdGhDYWNoZShleGVjLCBpbXBsLmltcGxlbWVudHNTdHIyKCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTQ2OSwxMSArNDYzLDggQEAgRW5jb2RlZEpTVmFsdWUg
anNUZXN0SW50ZXJmYWNlSW1wbGVtZW50cwogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNl
SW1wbGVtZW50c1N0cjMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEludGVyZmFj
ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJh
c2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhl
YywgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjMiKTsKLSAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3Ry
MyIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1
cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVjLCBzbG90QmFzZSwgSlNUZXN0SW50ZXJmYWNl
UHJvdG90eXBlOjppbmZvKCksICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIzIik7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXN0ZWRUaGlzLT5pbXBsZW1lbnRzU3RyMyhleGVj
KSk7CiB9CiAKQEAgLTQ4MywxMSArNDc0LDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJm
YWNlSW1wbGVtZW50cwogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c05v
ZGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RJbnRl
cmZhY2UiLCAiaW1wbGVtZW50c05vZGUiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwotICAgIH0K
KyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0
dGVyVHlwZUVycm9yKCpleGVjLCBzbG90QmFzZSwgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpp
bmZvKCksICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNOb2RlIik7CiAgICAgVGVzdEludGVy
ZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwuaW1w
bGVtZW50c05vZGUoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAg
LTUyMSwxMSArNTA5LDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlQ29uc3RydWN0
bwogRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJz
dXBwbGVtZW50YWxTdHIxIik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMSIpOwotICAgIH0KKyAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlw
ZUVycm9yKCpleGVjLCBzbG90QmFzZSwgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjppbmZvKCks
ICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0cjEiKTsKICAgICBUZXN0SW50ZXJmYWNl
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJp
bmdXaXRoQ2FjaGUoZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMSgmaW1w
bCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTUzNywxMSArNTIy
LDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudAogRW5jb2RlZEpT
VmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMihFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRl
cmZhY2VQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxT
dHIyIik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJ
bnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMiIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVj
LCBzbG90QmFzZSwgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjppbmZvKCksICJUZXN0SW50ZXJm
YWNlIiwgInN1cHBsZW1lbnRhbFN0cjIiKTsKICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
ZXhlYywgVGVzdFN1cHBsZW1lbnRhbDo6c3VwcGxlbWVudGFsU3RyMigmaW1wbCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTU1MywxMSArNTM1LDggQEAgRW5jb2Rl
ZEpTVmFsdWUganNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudAogRW5jb2RlZEpTVmFsdWUganNUZXN0
SW50ZXJmYWNlU3VwcGxlbWVudGFsU3RyMyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNU
ZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2Uq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90b3R5
cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRl
ckVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVtZW50YWxTdHIzIik7Ci0gICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAi
c3VwcGxlbWVudGFsU3RyMyIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVjLCBzbG90QmFzZSwg
SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjppbmZvKCksICJUZXN0SW50ZXJmYWNlIiwgInN1cHBs
ZW1lbnRhbFN0cjMiKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhc3RlZFRoaXMtPnN1
cHBsZW1lbnRhbFN0cjMoZXhlYykpOwogfQogCkBAIC01NjcsMTEgKzU0Niw4IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdEludGVyZmFjZVN1cHBsZW1lbnQKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdElu
dGVyZmFjZVN1cHBsZW1lbnRhbE5vZGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
Kj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJF
cnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOwotICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1
cHBsZW1lbnRhbE5vZGUiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
KyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpT
VGVzdEludGVyZmFjZVByb3RvdHlwZTo6aW5mbygpLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVt
ZW50YWxOb2RlIik7CiAgICAgVGVzdEludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCksIFdURjo6Z2V0UHRyKFRlc3RTdXBwbGVtZW50YWw6OnN1cHBsZW1lbnRhbE5vZGUoJmlt
cGwpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtNjI1LDEwICs2
MDEsNyBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVudHNTdHIyKEV4CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdElu
dGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
IHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKQotICAgICAgICAgICAgcmVwb3J0RGVwcmVjYXRl
ZFNldHRlckVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c1N0cjIiKTsKKyAgICAgICAgaGFuZGxlU2V0dGVyVHlw
ZUVycm9yKCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdEludGVyZmFjZVByb3RvdHlwZTo6aW5mbygp
LCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMiIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC02
NDYsMTAgKzYxOSw3IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlSW1wbGVtZW50c1N0cjMoRXgK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
SlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZh
Y2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RJbnRlcmZhY2VQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAgICAgICAgICByZXBvcnRE
ZXByZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNT
dHIzIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzU3RyMyIpOworICAgICAgICBoYW5kbGVT
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBl
OjppbmZvKCksICJUZXN0SW50ZXJmYWNlIiwgImltcGxlbWVudHNTdHIzIik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgY2FzdGVkVGhpcy0+c2V0SW1wbGVtZW50c1N0cjMoZXhlYywgdmFs
dWUpOwpAQCAtNjYzLDEwICs2MzMsNyBAQCB2b2lkIHNldEpTVGVzdEludGVyZmFjZUltcGxlbWVu
dHNOb2RlKEV4CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIEpTVGVzdEludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0SW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50
ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKQotICAgICAgICAg
ICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAiVGVzdEludGVyZmFjZSIsICJp
bXBsZW1lbnRzTm9kZSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAiaW1wbGVtZW50c05vZGUiKTsKKyAgICAg
ICAgaGFuZGxlU2V0dGVyVHlwZUVycm9yKCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdEludGVyZmFj
ZVByb3RvdHlwZTo6aW5mbygpLCAiVGVzdEludGVyZmFjZSIsICJpbXBsZW1lbnRzTm9kZSIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CkBAIC02OTYsMTAgKzY2Myw3IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNl
U3VwcGxlbWVudGFsU3RyMigKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVu
Y29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0SW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0g
ICAgICAgICAgICByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJm
YWNlIiwgInN1cHBsZW1lbnRhbFN0cjIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhy
b3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbFN0
cjIiKTsKKyAgICAgICAgaGFuZGxlU2V0dGVyVHlwZUVycm9yKCpleGVjLCB0aGlzVmFsdWUsIEpT
VGVzdEludGVyZmFjZVByb3RvdHlwZTo6aW5mbygpLCAiVGVzdEludGVyZmFjZSIsICJzdXBwbGVt
ZW50YWxTdHIyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdEludGVyZmFjZSYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTcxNywxMCArNjgxLDcgQEAgdm9pZCBzZXRK
U1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxTdHIzKAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RJbnRlcmZhY2UqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhl
YywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsU3RyMyIpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAi
c3VwcGxlbWVudGFsU3RyMyIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
IHRoaXNWYWx1ZSwgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjppbmZvKCksICJUZXN0SW50ZXJm
YWNlIiwgInN1cHBsZW1lbnRhbFN0cjMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBj
YXN0ZWRUaGlzLT5zZXRTdXBwbGVtZW50YWxTdHIzKGV4ZWMsIHZhbHVlKTsKQEAgLTczNCwxMCAr
Njk1LDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxOb2RlKAogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RJ
bnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZSo+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdEludGVyZmFjZVByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0
ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RJbnRlcmZhY2UiLCAic3VwcGxlbWVudGFsTm9kZSIpOworICAgICAgICBoYW5kbGVTZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlOjpp
bmZvKCksICJUZXN0SW50ZXJmYWNlIiwgInN1cHBsZW1lbnRhbE5vZGUiKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBUZXN0SW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
bmRldGVybWluaXN0aWMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAkocmV2aXNpb24gMTY5
MjY1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5v
bmRldGVybWluaXN0aWMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsMTEgKzE1NSw4IEBAIGJv
b2wgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6Z2V0T3duUHJvcGUKIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSo+KHNsb3RCYXNl
KSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMs
ICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljUmVhZG9ubHlBdHRyIik7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3ROb25kZXRl
cm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNSZWFkb25seUF0dHIiKTsKLSAgICB9CisgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5
cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGU6
OmluZm8oKSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNSZWFkb25s
eUF0dHIiKTsKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpOwogICAgIElucHV0Q3Vyc29y
JiBjdXJzb3IgPSBnbG9iYWxPYmplY3QtPmlucHV0Q3Vyc29yKCk7CkBAIC0xODksMTEgKzE4Niw4
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb24KIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pbmlzdGljV3JpdGVhYmxlQXR0cihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUqPihz
bG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9y
KCpleGVjLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJs
ZUF0dHIiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVz
dE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIiKTsKLSAg
ICB9CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRs
ZUdldHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpTVGVzdE5vbmRldGVybWluaXN0aWNQ
cm90b3R5cGU6OmluZm8oKSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0
aWNXcml0ZWFibGVBdHRyIik7CiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKICAgICBJ
bnB1dEN1cnNvciYgY3Vyc29yID0gZ2xvYmFsT2JqZWN0LT5pbnB1dEN1cnNvcigpOwpAQCAtMjIz
LDExICsyMTcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY0V4Y2Vw
dGlvbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE5vbmRldGVybWluaXN0
aWMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJv
dG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRH
ZXR0ZXJFcnJvcigqZXhlYywgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0
aWNFeGNlcHRpb25BdHRyIik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigq
ZXhlYywgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNFeGNlcHRpb25B
dHRyIik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJl
dHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3ROb25kZXRl
cm1pbmlzdGljUHJvdG90eXBlOjppbmZvKCksICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25k
ZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ciIpOwogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQogICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCk7CiAgICAgSW5wdXRDdXJzb3ImIGN1cnNvciA9IGdsb2JhbE9iamVjdC0+aW5wdXRDdXJzb3Io
KTsKQEAgLTI1NywxMSArMjQ4LDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY05vbgogRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWlu
aXN0aWNHZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3ROb25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIs
ICJub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciIpOwotICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25k
ZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpl
eGVjLCBzbG90QmFzZSwgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZTo6aW5mbygpLCAi
VGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0
dHIiKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkK
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+bGV4aWNhbEdsb2JhbE9i
amVjdCgpOwpAQCAtMjk1LDExICsyODMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRl
cm1pbmlzdGljTm9uCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0
ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAg
IEpTVGVzdE5vbmRldGVybWluaXN0aWMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE5vbmRldGVybWluaXN0aWMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3ROb25kZXRlcm1pbmlz
dGljIiwgIm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyIik7Ci0gICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwg
Im5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyIik7Ci0gICAgfQorICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBlOjppbmZv
KCksICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljU2V0dGVyRXhjZXB0
aW9uQXR0ciIpOwogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7CiAgICAgSW5wdXRDdXJz
b3ImIGN1cnNvciA9IGdsb2JhbE9iamVjdC0+aW5wdXRDdXJzb3IoKTsKQEAgLTMzOSwxMCArMzI0
LDcgQEAgdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaQogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1p
bmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpY1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAgICAgICAg
ICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3ROb25kZXRlcm1pbmlz
dGljIiwgIm5vbmRldGVybWluaXN0aWNXcml0ZWFibGVBdHRyIik7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE5vbmRldGVybWluaXN0
aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1dyaXRlYWJsZUF0dHIiKTsKKyAgICAgICAgaGFuZGxlU2V0
dGVyVHlwZUVycm9yKCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdE5vbmRldGVybWluaXN0aWNQcm90
b3R5cGU6OmluZm8oKSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNX
cml0ZWFibGVBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE5vbmRldGVy
bWluaXN0aWMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0zNTgsMTAgKzM0MCw3IEBA
IHZvaWQgc2V0SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY05vbmRldGVybWkKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Yyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0
aWNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAgICAgICAgICBy
ZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIs
ICJub25kZXRlcm1pbmlzdGljRXhjZXB0aW9uQXR0ciIpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwg
Im5vbmRldGVybWluaXN0aWNFeGNlcHRpb25BdHRyIik7CisgICAgICAgIGhhbmRsZVNldHRlclR5
cGVFcnJvcigqZXhlYywgdGhpc1ZhbHVlLCBKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJvdG90eXBl
OjppbmZvKCksICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIsICJub25kZXRlcm1pbmlzdGljRXhjZXB0
aW9uQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3ROb25kZXRlcm1pbmlz
dGljJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMzc3LDEwICszNTYsNyBAQCB2b2lk
IHNldEpTVGVzdE5vbmRldGVybWluaXN0aWNOb25kZXRlcm1pCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE5vbmRldGVybWluaXN0
aWMqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE5vbmRldGVybWluaXN0aWMqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljUHJv
dG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKQotICAgICAgICAgICAgcmVwb3J0
RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9u
ZGV0ZXJtaW5pc3RpY0dldHRlckV4Y2VwdGlvbkF0dHIiKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0Tm9uZGV0ZXJtaW5pc3RpYyIs
ICJub25kZXRlcm1pbmlzdGljR2V0dGVyRXhjZXB0aW9uQXR0ciIpOworICAgICAgICBoYW5kbGVT
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1By
b3RvdHlwZTo6aW5mbygpLCAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3Rp
Y0dldHRlckV4Y2VwdGlvbkF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTM5NiwxMCAr
MzcyLDcgQEAgdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaQogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RO
b25kZXRlcm1pbmlzdGljKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3ROb25kZXRl
cm1pbmlzdGljKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAgICAg
ICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3ROb25kZXRlcm1p
bmlzdGljIiwgIm5vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyIik7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE5vbmRl
dGVybWluaXN0aWMiLCAibm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIiKTsKKyAg
ICAgICAgaGFuZGxlU2V0dGVyVHlwZUVycm9yKCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdE5vbmRl
dGVybWluaXN0aWNQcm90b3R5cGU6OmluZm8oKSwgIlRlc3ROb25kZXRlcm1pbmlzdGljIiwgIm5v
bmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgVGVzdE5vbmRldGVybWluaXN0aWMmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAkocmV2aXNpb24gMTY5MjY1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MDksMTEgKzEwMDksOCBAQCBib29sIEpTVGVzdE9iajo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2Jq
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWFkT25seUxvbmdBdHRyKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlYWRPbmx5TG9uZ0F0dHIiKTsKLSAgICAgICAgcmV0
dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWFkT25seUxvbmdB
dHRyIik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJl
dHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90
b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAicmVhZE9ubHlMb25nQXR0ciIpOwogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051
bWJlcihpbXBsLnJlYWRPbmx5TG9uZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShyZXN1bHQpOwpAQCAtMTAyMywxMSArMTAyMCw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9i
alJlYWRPbmx5TG9uZ0F0dHIKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3RyaW5n
QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWFkT25seVN0cmlu
Z0F0dHIiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJyZWFkT25seVN0cmluZ0F0dHIiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywg
c2xvdEJhc2UsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJyZWFkT25s
eVN0cmluZ0F0dHIiKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwog
ICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5yZWFkT25s
eVN0cmluZ0F0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAt
MTAzNywxMSArMTAzMSw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5U3RyaW5n
QXQKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlYWRPbmx5VGVzdE9iakF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJv
dG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRH
ZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVhZE9ubHlUZXN0T2JqQXR0ciIpOwotICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlYWRP
bmx5VGVzdE9iakF0dHIiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
KyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpT
VGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJyZWFkT25seVRlc3RPYmpBdHRy
Iik7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0
UHRyKGltcGwucmVhZE9ubHlUZXN0T2JqQXR0cigpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOwpAQCAtMTA2OSwxMSArMTA2MCw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakNvbnN0cnVjdG9yU3RhdGkKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9y
VGVzdFN1Yk9iaihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJUZXN0U3Vi
T2JqIik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAiVGVzdFN1Yk9iaiIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVjLCBzbG90QmFzZSwg
SlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgIlRlc3RTdWJPYmoiKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFN1Yk9iajo6Z2V0Q29uc3RydWN0b3IoZXhl
Yy0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KIApAQCAtMTA4MSwxMSAr
MTA2OSw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yVGVzdFMKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiVGVzdFN1Yk9iakVuYWJsZWRC
eVNldHRpbmciKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZyIpOwotICAgIH0KKyAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVy
cm9yKCpleGVjLCBzbG90QmFzZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2Jq
IiwgIlRlc3RTdWJPYmpFbmFibGVkQnlTZXR0aW5nIik7CiAgICAgaWYgKCFjYXN0ZWRUaGlzLT5p
bXBsKCkuZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBTZXR0aW5ncyYgc2V0dGluZ3MgPSBjYXN0ZWRUaGlzLT5pbXBsKCkuZnJhbWUo
KS0+c2V0dGluZ3MoKTsKQEAgLTEwOTgsMTEgKzEwODMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpUZXN0U3ViT2JqRW5hYmxlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbnVtQXR0cihF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOwotICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImVudW1BdHRy
Iik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVy
biBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5
cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAiZW51bUF0dHIiKTsKICAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2Fj
aGUoZXhlYywgaW1wbC5lbnVtQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC0xMTEyLDExICsxMDk0LDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRW51
bUF0dHIoRXhlY1N0YQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQnl0ZUF0dHIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJv
cGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VM
WSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJv
dG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRH
ZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKLSAgICAgICAgcmV0dXJu
IHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJieXRlQXR0ciIpOwotICAg
IH0KKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxl
R2V0dGVyVHlwZUVycm9yKCpleGVjLCBzbG90QmFzZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZv
KCksICJUZXN0T2JqIiwgImJ5dGVBdHRyIik7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYnl0ZUF0dHIo
KSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTEyNiwxMSArMTEw
NSw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGEKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iak9jdGV0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0g
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJvY3RldEF0dHIiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJvY3RldEF0dHIiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhl
Yywgc2xvdEJhc2UsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJvY3Rl
dEF0dHIiKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5vY3RldEF0dHIoKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTE0MCwxMSArMTExNiw4IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9iak9jdGV0QXR0cihFeGVjU3QKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialNo
b3J0QXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIi
KTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJzaG9ydEF0dHIiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAg
ICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpTVGVz
dE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJzaG9ydEF0dHIiKTsKICAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC5zaG9ydEF0dHIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMTE1NCwxMSArMTEyNyw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialNob3J0
QXR0cihFeGVjU3QKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVz
dE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXBy
ZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInVuc2lnbmVkU2hvcnRBdHRyIik7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
dW5zaWduZWRTaG9ydEF0dHIiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2Us
IEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0QXR0
ciIpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLnVuc2lnbmVkU2hvcnRBdHRyKCkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTExNjgsMTEgKzExMzgsOCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpVbnNpZ25lZFNob3J0QXR0CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpMb25nQXR0cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpT
VmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1
cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJsb25nQXR0
ciIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgImxvbmdBdHRyIik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisg
ICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rl
c3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAibG9uZ0F0dHIiKTsKICAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNO
dW1iZXIoaW1wbC5sb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkBAIC0xMTgyLDExICsxMTQ5LDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0F0
dHIoRXhlY1N0YQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialBy
b3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVk
R2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImxvbmdMb25nQXR0ciIpOwotICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImxvbmdMb25nQXR0
ciIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1
cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVjLCBzbG90QmFzZSwgSlNUZXN0T2JqUHJvdG90
eXBlOjppbmZvKCksICJUZXN0T2JqIiwgImxvbmdMb25nQXR0ciIpOwogICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihp
bXBsLmxvbmdMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7
CkBAIC0xMTk2LDExICsxMTYwLDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTG9uZ0xvbmdB
dHRyKEV4ZQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqVW5zaWduZWRMb25nTG9uZ0F0dHIoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0
T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJl
Y2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIi
KTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVjLCBzbG90
QmFzZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgInVuc2lnbmVkTG9u
Z0xvbmdBdHRyIik7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwudW5zaWduZWRMb25nTG9uZ0F0dHIoKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTIxMCwxMSArMTE3MSw4
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmcKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAg
ICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAic3RyaW5nQXR0ciIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgInN0cmluZ0F0dHIiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhl
Yywgc2xvdEJhc2UsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJzdHJp
bmdBdHRyIik7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwuc3RyaW5nQXR0cigp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMjI0LDExICsxMTgy
LDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqU3RyaW5nQXR0cihFeGVjUwogRW5jb2RlZEpT
VmFsdWUganNUZXN0T2JqVGVzdE9iakF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xv
dEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQot
ICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAidGVzdE9iakF0dHIiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJ0ZXN0T2JqQXR0ciIpOwotICAgIH0KKyAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9y
KCpleGVjLCBzbG90QmFzZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwg
InRlc3RPYmpBdHRyIik7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIFdURjo6Z2V0UHRyKGltcGwudGVzdE9iakF0dHIoKSkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKQEAgLTEyMzgsMTEgKzExOTMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpUZXN0T2JqQXR0cihFeGVjCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpB
dHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIlhNTE9iakF0dHIiKTsK
LSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJY
TUxPYmpBdHRyIik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAg
ICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RP
YmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAiWE1MT2JqQXR0ciIpOwogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pT
KGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLnhtbE9i
akF0dHIoKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEyNTIs
MTEgKzEyMDQsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpYTUxPYmpBdHRyKEV4ZWNTCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCog
c2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAg
IEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsK
LSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2Up
KQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAiY3JlYXRlIik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiY3JlYXRlIik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
IHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAiY3JlYXRl
Iik7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVl
IHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsLmlzQ3JlYXRlKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKQEAgLTEyNjYsMTEgKzEyMTUsOCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0
ZWRTdHJpbmdBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxl
Y3RlZFN0cmluZ0F0dHIiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7Ci0gICAgfQorICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoi
LCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBp
bXBsLmZhc3RHZXRBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpyZWZsZWN0ZWRzdHJpbmdh
dHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEyODAs
MTEgKzEyMjYsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBCiBF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRJbnRlZ3JhbEF0dHIoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90
eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkSW50ZWdyYWxBdHRyIik7Ci0gICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVj
dGVkSW50ZWdyYWxBdHRyIik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBK
U1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkSW50ZWdyYWxB
dHRyIik7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6
SFRNTE5hbWVzOjpyZWZsZWN0ZWRpbnRlZ3JhbGF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTI5NCwxMSArMTIzNyw4IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialJlZmxlY3RlZEludGVncmEKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJlZmxl
Y3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgInJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7Ci0gICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkVW5zaWduZWRJ
bnRlZ3JhbEF0dHIiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAg
ICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpTVGVz
dE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVbnNpZ25lZEludGVn
cmFsQXR0ciIpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihzdGQ6Om1heCgwLCBpbXBsLmdldEludGVncmFsQXR0
cmlidXRlKFdlYkNvcmU6OkhUTUxOYW1lczo6cmVmbGVjdGVkdW5zaWduZWRpbnRlZ3JhbGF0dHJB
dHRyKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTEzMDgsMTEg
KzEyNDgsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRCb29sZWFuQXR0cihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5h
bWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRCb29sZWFuQXR0ciIpOwotICAgICAgICBy
ZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEJv
b2xlYW5BdHRyIik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAg
ICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RP
YmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkQm9vbGVhbkF0dHIiKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNCb29sZWFuKGltcGwuZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6
OnJlZmxlY3RlZGJvb2xlYW5hdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKQEAgLTEzMjIsMTEgKzEyNTksOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpS
ZWZsZWN0ZWRCb29sZWFuCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRVUkxBdHRy
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZFVSTEF0dHIi
KTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJyZWZsZWN0ZWRVUkxBdHRyIik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNl
LCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkVVJMQXR0
ciIpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmdldFVSTEF0dHJpYnV0ZShX
ZWJDb3JlOjpIVE1MTmFtZXM6OnJlZmxlY3RlZHVybGF0dHJBdHRyKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTMzNiwxMSArMTI3MCw4IEBAIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialJl
ZmxlY3RlZFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
cmVmbGVjdGVkU3RyaW5nQXR0ciIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKLSAgICB9CisgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5
cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVz
dE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4
ZWMsIGltcGwuZmFzdEdldEF0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRl
bnRTdHJpbmdBdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
QEAgLTEzNTAsMTEgKzEyODEsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRT
dHJpbmdBCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21JbnRlZ3JhbEF0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9y
dERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9t
SW50ZWdyYWxBdHRyIik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7Ci0gICAgfQorICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRl
c3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGlt
cGwuZ2V0SW50ZWdyYWxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50
SW50ZWdyYWxBdHRyQXR0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
QEAgLTEzNjQsMTEgKzEyOTIsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRD
dXN0b21JCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4gcmVwb3J0
RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21C
b29sZWFuQXR0ciIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BdHRyIik7Ci0gICAgfQorICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RP
YmoiLCAicmVmbGVjdGVkQ3VzdG9tQm9vbGVhbkF0dHIiKTsKICAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFuKGltcGwu
ZmFzdEhhc0F0dHJpYnV0ZShXZWJDb3JlOjpIVE1MTmFtZXM6OmN1c3RvbUNvbnRlbnRCb29sZWFu
QXR0ckF0dHIpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMzc4
LDExICsxMzAzLDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tQgog
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJMQXR0cihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90
b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdl
dHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRDdXN0b21VUkxBdHRyIik7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVm
bGVjdGVkQ3VzdG9tVVJMQXR0ciIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVjLCBzbG90QmFz
ZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3Rv
bVVSTEF0dHIiKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAg
IEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbC5nZXRVUkxBdHRy
aWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjpjdXN0b21Db250ZW50VVJMQXR0ckF0dHIpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMzkyLDExICsxMzE0LDggQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVQogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqVHlwZWRBcnJheUF0dHIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJh
c2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAg
ICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAg
ICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAidHlwZWRBcnJheUF0dHIiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJ0eXBlZEFycmF5QXR0ciIpOwotICAgIH0KKyAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVy
cm9yKCpleGVjLCBzbG90QmFzZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2Jq
IiwgInR5cGVkQXJyYXlBdHRyIik7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwudHlwZWRBcnJheUF0dHIoKSkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0MDYsMTEgKzEzMjUsOCBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpUeXBlZEFycmF5QXR0cihFCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
YmpBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0g
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwotICAgICAgICByZXR1cm4gdGhyb3dH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImF0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
Iik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVy
biBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5
cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aEdldHRlckV4
Y2VwdGlvbihlYykpOwpAQCAtMTQyMiwxMSArMTMzOCw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakF0dHJXaXRoR2V0dGVyRXgKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakF0dHJXaXRoU2V0
dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJl
dHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImF0dHJX
aXRoU2V0dGVyRXhjZXB0aW9uIik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKLSAgICB9Cisg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRl
clR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAi
VGVzdE9iaiIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIFRlc3RPYmomIGltcGwg
PSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBs
LmF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKQEAgLTE0MzYsMTEgKzEzNDksOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpB
dHRyV2l0aFNldHRlckV4CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2Rl
ZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJp
bmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9u
Iik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVy
biBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5
cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhp
cy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywg
aW1wbC5zdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbihlYykpOwpAQCAtMTQ1MiwxMSArMTM2
Miw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoR2UKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3Rv
dHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
Iik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAic3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKLSAgICB9CisgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigq
ZXhlYywgc2xvdEJhc2UsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJz
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShl
eGVjLCBpbXBsLnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE0NjYsMTEgKzEzNzMsOCBAQCBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpTdHJpbmdBdHRyV2l0aFNlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
dXN0b21BdHRyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImN1c3RvbUF0
dHIiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJjdXN0b21BdHRyIik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBK
U1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAiY3VzdG9tQXR0ciIpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FzdGVkVGhpcy0+Y3VzdG9tQXR0cihleGVjKSk7CiB9
CiAKQEAgLTE0NzgsMTEgKzEzODIsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDdXN0b21B
dHRyKEV4ZWNTCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1
dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9y
dERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRl
QXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7Ci0gICAgfQorICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoi
LCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlIik7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3Rl
ZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwud2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlKGV4ZWMpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC0xNDkyLDExICsxMzkzLDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0
aFNjcmlwdFN0YXRlQQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZSIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVjLCBzbG90QmFzZSwg
SlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QXR0cmlidXRlIik7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRl
eHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0x
NTA5LDExICsxNDA3LDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5
bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwotICAgIH0K
KyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0
dGVyVHlwZUVycm9yKCpleGVjLCBzbG90QmFzZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCks
ICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIpOwogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpLCBXVEY6OmdldFB0cihpbXBsLndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhleGVj
LCBlYykpKTsKQEAgLTE1MjUsMTEgKzE0MjAsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpX
aXRoU2NyaXB0U3RhdGVBCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90
QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNU
ZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAg
ICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0g
ICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIpOwotICAg
ICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIik7Ci0gICAgfQorICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoi
LCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250
ZXh0ID0ganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghc2NyaXB0Q29udGV4dCkK
QEAgLTE1NDQsMTEgKzE0MzYsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0
RXhlY3V0CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rl
c3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAg
ICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAg
ICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUi
KTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlIik7Ci0g
ICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5k
bGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6Omlu
Zm8oKSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZSIpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQg
PSBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250ZXh0KQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtMTU2MSwxMSAr
MTQ1MCw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXQKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAg
ICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIp
OwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMi
KTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJu
IGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpTVGVzdE9ialByb3RvdHlw
ZTo6aW5mbygpLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKICAgICBpZiAoIXNjcmlwdENvbnRleHQpCkBAIC0xNTgwLDExICsxNDY2LDggQEAg
RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsK
LSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZSIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1
cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVjLCBzbG90QmFzZSwgSlNUZXN0T2JqUHJvdG90
eXBlOjppbmZvKCksICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlIik7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0Q29udGV4dCA9IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBpZiAoIXNj
cmlwdENvbnRleHQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC0xNTk3LDExICsxNDgwLDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNj
cmlwdEV4ZWN1dAogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEFyZ3VtZW50c0Fu
ZENhbGxTdGFja0F0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2Jq
KiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAg
ICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJ3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlIik7Ci0gICAgICAgIHJl
dHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFy
Z3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVj
LCBzbG90QmFzZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgIndpdGhT
Y3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiKTsKICAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC53aXRoU2NyaXB0QXJn
dW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlKCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CkBAIC0xNjEyLDExICsxNDkyLDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqV2l0aFNjcmlwdEFyZ3VtZQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyMShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0
dHIxIik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAiY29uZGl0aW9uYWxBdHRyMSIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVjLCBzbG90
QmFzZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgImNvbmRpdGlvbmFs
QXR0cjEiKTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpT
VmFsdWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5jb25kaXRpb25hbEF0dHIxKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE2MjgsMTEgKzE1MDUsOCBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RPYmpDb25kaXRpb25hbEF0dHIyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAg
ICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgImNvbmRpdGlvbmFsQXR0cjIiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIyIik7Ci0gICAgfQorICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RP
YmoiLCAiY29uZGl0aW9uYWxBdHRyMiIpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmNvbmRpdGlvbmFs
QXR0cjIoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTY0NCwx
MSArMTUxOCw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjIKIEVu
Y29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjMoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwotICAgICAgICByZXR1cm4g
dGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjMi
KTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJu
IGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpTVGVzdE9ialByb3RvdHlw
ZTo6aW5mbygpLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIzIik7CiAgICAgVGVzdE9iaiYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVy
KGltcGwuY29uZGl0aW9uYWxBdHRyMygpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CkBAIC0xNjYwLDExICsxNTMxLDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29u
ZGl0aW9uYWxBdHRyMwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyNENv
bnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNW
YWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVy
biByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlv
bmFsQXR0cjQiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI0Iik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
IHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAiY29uZGl0
aW9uYWxBdHRyNCIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0T2JqZWN0QTo6
Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KIApAQCAtMTY3NCwxMSArMTU0Miw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRp
dGlvbmFsQXR0cjQKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25z
dHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25h
bEF0dHI1Iik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRl
c3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNSIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVjLCBz
bG90QmFzZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgImNvbmRpdGlv
bmFsQXR0cjUiKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iamVjdEI6Omdl
dENvbnN0cnVjdG9yKGV4ZWMtPnZtKCksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKSk7CiB9
CiAKQEAgLTE2ODgsMTEgKzE1NTMsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRp
b25hbEF0dHI1CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHI2Q29uc3Ry
dWN0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwot
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJl
cG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxB
dHRyNiIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImNvbmRpdGlvbmFsQXR0cjYiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywgc2xv
dEJhc2UsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJjb25kaXRpb25h
bEF0dHI2Iik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RPYmplY3RDOjpnZXRD
b25zdHJ1Y3RvcihleGVjLT52bSgpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSkpOwogfQog
CkBAIC0xNzAxLDExICsxNTYzLDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uZGl0aW9u
YWxBdHRyNgogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ2FjaGVkQXR0cmlidXRlMShFeGVjU3Rh
dGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVwcmVjYXRl
ZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjYWNoZWRBdHRyaWJ1dGUxIik7Ci0gICAg
ICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY2FjaGVk
QXR0cmlidXRlMSIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAg
ICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVjLCBzbG90QmFzZSwgSlNUZXN0
T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgImNhY2hlZEF0dHJpYnV0ZTEiKTsKICAg
ICBpZiAoSlNWYWx1ZSBjYWNoZWRWYWx1ZSA9IGNhc3RlZFRoaXMtPm1fY2FjaGVkQXR0cmlidXRl
MS5nZXQoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7CiAg
ICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTE3MTgsMTEgKzE1Nzcs
OCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUxCiBFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RPYmpDYWNoZWRBdHRyaWJ1dGUyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNl
KSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgImNhY2hlZEF0dHJpYnV0ZTIiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjYWNoZWRBdHRyaWJ1dGUyIik7Ci0gICAg
fQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8o
KSwgIlRlc3RPYmoiLCAiY2FjaGVkQXR0cmlidXRlMiIpOwogICAgIGlmIChKU1ZhbHVlIGNhY2hl
ZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRBdHRyaWJ1dGUyLmdldCgpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKICAgICBUZXN0T2JqJiBpbXBsID0g
Y2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMTczNSwxMSArMTU5MSw4IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNhY2hlZEF0dHJpYnV0ZTIKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakFueUF0
dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1
dGUiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJhbnlBdHRyaWJ1dGUiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2Us
IEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJhbnlBdHRyaWJ1dGUiKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0gKGltcGwuYW55QXR0cmlidXRlKCkuaGFzTm9WYWx1ZSgpID8ganNOdWxsKCkgOiBpbXBs
LmFueUF0dHJpYnV0ZSgpLmpzVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOwpAQCAtMTc0OSwxMSArMTYwMiw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakFu
eUF0dHJpYnV0ZShFeGUKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnRlbnREb2N1bWVudChF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb250ZW50RG9jdW1lbnQiKTsK
LSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJj
b250ZW50RG9jdW1lbnQiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
KyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpT
VGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJjb250ZW50RG9jdW1lbnQiKTsK
ICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoc2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoZXhlYywgaW1wbC5jb250ZW50RG9j
dW1lbnQoKSkgPyB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6Omdl
dFB0cihpbXBsLmNvbnRlbnREb2N1bWVudCgpKSkgOiBqc051bGwoKSk7CiB9CkBAIC0xNzYyLDEx
ICsxNjEyLDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29udGVudERvY3VtZW50KAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqTXV0YWJsZVBvaW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RC
YXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwotICAgIH0KKyAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVy
VHlwZUVycm9yKCpleGVjLCBzbG90QmFzZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJU
ZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihTVkdTdGF0aWNQcm9wZXJ0eVRlYXJPZmY8VGVzdE9i
aiwgU1ZHUG9pbnQ+OjpjcmVhdGUoaW1wbCwgaW1wbC5tdXRhYmxlUG9pbnQoKSwgJlRlc3RPYmo6
OnVwZGF0ZU11dGFibGVQb2ludCkpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7CkBAIC0xNzc2LDExICsxNjIzLDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTXV0YWJs
ZVBvaW50KEV4ZQogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqSW1tdXRhYmxlUG9pbnQoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
UHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQiKTsKLSAgICAg
ICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJpbW11dGFi
bGVQb2ludCIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAg
ICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVjLCBzbG90QmFzZSwgSlNUZXN0T2Jq
UHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgImltbXV0YWJsZVBvaW50Iik7CiAgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRv
SlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFNWR1Byb3Bl
cnR5VGVhck9mZjxTVkdQb2ludD46OmNyZWF0ZShpbXBsLmltbXV0YWJsZVBvaW50KCkpKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTc5MCwxMSArMTYzNCw4IEBA
IEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakltbXV0YWJsZVBvaW50KEUKIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdE9ialN0cmF3YmVycnkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAic3RyYXdiZXJyeSIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgInN0cmF3YmVycnkiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFj
YXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywg
c2xvdEJhc2UsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJzdHJhd2Jl
cnJ5Iik7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1Zh
bHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwuYmx1ZWJlcnJ5KCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE4MDQsMTEgKzE2NDUsOCBAQCBFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpTdHJhd2JlcnJ5KEV4ZWNTCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpTdHJp
Y3RGbG9hdChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4g
cmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9h
dCIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgInN0cmljdEZsb2F0Iik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykp
CisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBK
U1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAic3RyaWN0RmxvYXQiKTsKICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5zdHJpY3RGbG9hdCgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CkBAIC0xODE4LDExICsxNjU2LDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqU3RyaWN0RmxvYXQoRXhlYwogRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqRGVzY3JpcHRpb24o
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERl
cHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiZGVzY3JpcHRpb24iKTsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJkZXNj
cmlwdGlvbiIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAg
ICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVjLCBzbG90QmFzZSwgSlNUZXN0T2Jq
UHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgImRlc2NyaXB0aW9uIik7CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVt
YmVyKGltcGwuZGVzY3JpcHRpb24oKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOwpAQCAtMTgzMiwxMSArMTY2Nyw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakRlc2Ny
aXB0aW9uKEV4ZWMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iaklkKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgImlkIik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiaWQiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZ
KCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhl
Yywgc2xvdEJhc2UsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJpZCIp
OwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBqc051bWJlcihpbXBsLmlkKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKQEAgLTE4NDYsMTEgKzE2NzgsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpJ
ZChFeGVjU3RhdGUqIGV4CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpIYXNoKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3Rv
dHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0
dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImhhc2giKTsKLSAgICAgICAgcmV0dXJuIHRocm93
R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJoYXNoIik7Ci0gICAgfQorICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RP
YmoiLCAiaGFzaCIpOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBsLmhhc2goKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTg2MCwxMSArMTY4OSw4
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakhhc2goRXhlY1N0YXRlKiAKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdE9ialJlcGxhY2VhYmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RC
YXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4
ZWMsICJUZXN0T2JqIiwgInJlcGxhY2VhYmxlQXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybiB0
aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVwbGFjZWFibGVBdHRyaWJ1
dGUiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0
dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpTVGVzdE9ialByb3Rv
dHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihpbXBsLnJlcGxhY2VhYmxlQXR0cmlidXRlKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUocmVzdWx0KTsKQEAgLTE4NzQsMTEgKzE3MDAsOCBAQCBFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpSZXBsYWNlYWJsZUF0dHJpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJs
ZURvdWJsZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAg
ICByZXR1cm4gcmVwb3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJu
dWxsYWJsZURvdWJsZUF0dHJpYnV0ZSIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlRG91YmxlQXR0cmlidXRlIik7Ci0gICAg
fQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8o
KSwgIlRlc3RPYmoiLCAibnVsbGFibGVEb3VibGVBdHRyaWJ1dGUiKTsKICAgICBib29sIGlzTnVs
bCA9IGZhbHNlOwogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAg
SlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm51bGxhYmxlRG91YmxlQXR0cmlidXRlKGlz
TnVsbCkpOwpAQCAtMTg5MSwxMSArMTcxNCw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51
bGxhYmxlRG91YmxlQXQKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlTG9uZ0F0dHJp
YnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4gcmVw
b3J0RGVwcmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJudWxsYWJsZUxvbmdB
dHRyaWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJudWxsYWJsZUxvbmdBdHRyaWJ1dGUiKTsKLSAgICB9CisgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigq
ZXhlYywgc2xvdEJhc2UsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJu
dWxsYWJsZUxvbmdBdHRyaWJ1dGUiKTsKICAgICBib29sIGlzTnVsbCA9IGZhbHNlOwogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c051bWJlcihpbXBsLm51bGxhYmxlTG9uZ0F0dHJpYnV0ZShpc051bGwpKTsKQEAgLTE5MDgsMTEg
KzE3MjgsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUxvbmdBdHRyCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZUJvb2xlYW5BdHRyaWJ1dGUoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90
eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVCb29sZWFuQXR0cmlidXRlIik7Ci0g
ICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVs
bGFibGVCb29sZWFuQXR0cmlidXRlIik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RC
YXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAibnVsbGFibGVCb29s
ZWFuQXR0cmlidXRlIik7CiAgICAgYm9vbCBpc051bGwgPSBmYWxzZTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNCb29sZWFu
KGltcGwubnVsbGFibGVCb29sZWFuQXR0cmlidXRlKGlzTnVsbCkpOwpAQCAtMTkyNSwxMSArMTc0
Miw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlQm9vbGVhbkEKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9iak51bGxhYmxlU3RyaW5nQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nQXR0cmlidXRlIik7Ci0gICAgICAg
IHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVT
dHJpbmdBdHRyaWJ1dGUiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkK
KyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpT
VGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJudWxsYWJsZVN0cmluZ0F0dHJp
YnV0ZSIpOwogICAgIGJvb2wgaXNOdWxsID0gZmFsc2U7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNh
c3RlZFRoaXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hl
KGV4ZWMsIGltcGwubnVsbGFibGVTdHJpbmdBdHRyaWJ1dGUoaXNOdWxsKSk7CkBAIC0xOTQyLDEx
ICsxNzU2LDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVTdHJpbmdBdAogRW5j
b2RlZEpTVmFsdWUganNUZXN0T2JqTnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUoRXhlY1N0
YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwg
UHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
UHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFibGVBdHRy
aWJ1dGUiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJudWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZSIpOwotICAgIH0KKyAgICBpZiAo
VU5MSUtFTFkoIWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVy
cm9yKCpleGVjLCBzbG90QmFzZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2Jq
IiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CiAgICAgYm9vbCBpc051bGwgPSBm
YWxzZTsKICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFs
dWUgcmVzdWx0ID0ganNOdW1iZXIoaW1wbC5udWxsYWJsZUxvbmdTZXR0YWJsZUF0dHJpYnV0ZShp
c051bGwpKTsKQEAgLTE5NTksMTEgKzE3NzAsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpO
dWxsYWJsZUxvbmdTZXR0CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmluZ1Zh
bHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdE9ialByb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5n
VmFsdWUiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
IHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAibnVsbGFi
bGVTdHJpbmdWYWx1ZSIpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGJvb2wgaXNO
dWxsID0gZmFsc2U7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAg
LTE5NzgsMTEgKzE3ODYsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpOdWxsYWJsZVN0cmlu
Z1ZhCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
c2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiYXR0cmlidXRlIik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYXR0cmlidXRlIik7Ci0gICAgfQorICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRl
c3RPYmoiLCAiYXR0cmlidXRlIik7CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmlt
cGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGltcGwu
YXR0cmlidXRlKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKQEAgLTE5
OTIsMTEgKzE3OTcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGUoRXhlY1N0
CiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpBdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZShF
eGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RPYmpQcm90b3R5cGUqPihzbG90QmFzZSkpCi0gICAgICAgICAgICByZXR1cm4gcmVwb3J0RGVw
cmVjYXRlZEdldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2
ZWRFbnVtVHlwZSIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgImF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVudW1UeXBlIik7Ci0gICAgfQorICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRl
c3RPYmoiLCAiYXR0cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiKTsKICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdX
aXRoQ2FjaGUoZXhlYywgaW1wbC5hdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSgpKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0yMDI2LDEwICsxODI4LDcgQEAg
dm9pZCBzZXRKU1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dAogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAiVGVzdFN1Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIlRlc3RTdWJPYmpF
bmFibGVkQnlTZXR0aW5nIik7CisgICAgICAgIGhhbmRsZVNldHRlclR5cGVFcnJvcigqZXhlYywg
dGhpc1ZhbHVlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAiVGVzdFN1
Yk9iakVuYWJsZWRCeVNldHRpbmciKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBT
aGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMjA0MiwxMCArMTg0MSw3IEBAIHZv
aWQgc2V0SlNUZXN0T2JqRW51bUF0dHIoRXhlY1N0YXRlKiBleGUKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkp
Ci0gICAgICAgICAgICByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgImVudW1BdHRyIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJlbnVtQXR0ciIpOworICAgICAgICBoYW5kbGVTZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCks
ICJUZXN0T2JqIiwgImVudW1BdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTIwNjMsMTAgKzE4NTksNyBAQCB2
b2lkIHNldEpTVGVzdE9iakJ5dGVBdHRyKEV4ZWNTdGF0ZSogZXhlCiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
KQotICAgICAgICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJieXRlQXR0ciIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYnl0ZUF0dHIiKTsKKyAgICAgICAgaGFuZGxlU2V0
dGVyVHlwZUVycm9yKCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygp
LCAiVGVzdE9iaiIsICJieXRlQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRl
c3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yMDgyLDEwICsxODc1LDcgQEAg
dm9pZCBzZXRKU1Rlc3RPYmpPY3RldEF0dHIoRXhlY1N0YXRlKiBleAogICAgIEpTVmFsdWUgdmFs
dWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5
bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RP
YmoiLCAib2N0ZXRBdHRyIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJvY3RldEF0dHIiKTsKKyAgICAgICAgaGFuZGxl
U2V0dGVyVHlwZUVycm9yKCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5m
bygpLCAiVGVzdE9iaiIsICJvY3RldEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjEwMSwxMCArMTg5MSw3
IEBAIHZvaWQgc2V0SlNUZXN0T2JqU2hvcnRBdHRyKEV4ZWNTdGF0ZSogZXgKICAgICBKU1ZhbHVl
IHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBj
YXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSkpCi0gICAgICAgICAgICByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInNob3J0QXR0ciIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic2hvcnRBdHRyIik7CisgICAgICAgIGhh
bmRsZVNldHRlclR5cGVFcnJvcigqZXhlYywgdGhpc1ZhbHVlLCBKU1Rlc3RPYmpQcm90b3R5cGU6
OmluZm8oKSwgIlRlc3RPYmoiLCAic2hvcnRBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTIxMjAsMTAgKzE5
MDcsNyBAQCB2b2lkIHNldEpTVGVzdE9ialVuc2lnbmVkU2hvcnRBdHRyKEV4ZWNTCiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpKQotICAgICAgICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0QXR0ciIpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidW5zaWduZWRTaG9y
dEF0dHIiKTsKKyAgICAgICAgaGFuZGxlU2V0dGVyVHlwZUVycm9yKCpleGVjLCB0aGlzVmFsdWUs
IEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJ1bnNpZ25lZFNob3J0QXR0
ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRU
aGlzLT5pbXBsKCk7CkBAIC0yMTM5LDEwICsxOTIzLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpMb25n
QXR0cihFeGVjU3RhdGUqIGV4ZQogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0
PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialBy
b3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAgICAgICAgICAgIHJlcG9y
dERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibG9uZ0F0dHIiKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImxvbmdBdHRyIik7CisgICAgICAgIGhhbmRsZVNldHRlclR5cGVFcnJvcigqZXhlYywg
dGhpc1ZhbHVlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAibG9uZ0F0
dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwpAQCAtMjE1OCwxMCArMTkzOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqTG9u
Z0xvbmdBdHRyKEV4ZWNTdGF0ZSoKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAgICAgICAgICByZXBv
cnREZXByZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImxvbmdMb25nQXR0ciIp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAibG9uZ0xvbmdBdHRyIik7CisgICAgICAgIGhhbmRsZVNldHRlclR5cGVFcnJv
cigqZXhlYywgdGhpc1ZhbHVlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoi
LCAibG9uZ0xvbmdBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYg
aW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTIxNzcsMTAgKzE5NTUsNyBAQCB2b2lkIHNl
dEpTVGVzdE9ialVuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nh
c3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKQotICAg
ICAgICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ1
bnNpZ25lZExvbmdMb25nQXR0ciIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAidW5zaWduZWRMb25nTG9uZ0F0dHIiKTsK
KyAgICAgICAgaGFuZGxlU2V0dGVyVHlwZUVycm9yKCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdE9i
alByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CkBAIC0yMTk2LDEwICsxOTcxLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpTdHJpbmdBdHRy
KEV4ZWNTdGF0ZSogZQogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNh
c3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJl
Y2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXR0ciIpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAic3RyaW5nQXR0ciIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHRo
aXNWYWx1ZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgInN0cmluZ0F0
dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwpAQCAtMjIxNSwxMCArMTk4Nyw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqVGVz
dE9iakF0dHIoRXhlY1N0YXRlKiAKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAgICAgICAgICByZXBv
cnREZXByZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInRlc3RPYmpBdHRyIik7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJ0ZXN0T2JqQXR0ciIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwg
InRlc3RPYmpBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTIyMzQsMTAgKzIwMDMsNyBAQCB2b2lkIHNldEpT
VGVzdE9ialhNTE9iakF0dHIoRXhlY1N0YXRlKiBlCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKQotICAgICAg
ICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJYTUxP
YmpBdHRyIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJYTUxPYmpBdHRyIik7CisgICAgICAgIGhhbmRsZVNldHRlclR5
cGVFcnJvcigqZXhlYywgdGhpc1ZhbHVlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRl
c3RPYmoiLCAiWE1MT2JqQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yMjUzLDEwICsyMDE5LDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpDcmVhdGUoRXhlY1N0YXRlKiBleGVjLAogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkK
LSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAiY3JlYXRlIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVy
cm9yKCpleGVjLCAiVGVzdE9iaiIsICJjcmVhdGUiKTsKKyAgICAgICAgaGFuZGxlU2V0dGVyVHlw
ZUVycm9yKCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVz
dE9iaiIsICJjcmVhdGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBp
bXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjI3MiwxMCArMjAzNSw3IEBAIHZvaWQgc2V0
SlNUZXN0T2JqUmVmbGVjdGVkU3RyaW5nQXR0cihFeGUKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAg
ICAgICAgICByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJl
ZmxlY3RlZFN0cmluZ0F0dHIiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dTZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKKyAg
ICAgICAgaGFuZGxlU2V0dGVyVHlwZUVycm9yKCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdE9ialBy
b3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRTdHJpbmdBdHRyIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwo
KTsKQEAgLTIyOTEsMTAgKzIwNTEsNyBAQCB2b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEludGVn
cmFsQXR0cihFCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFs
dWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2Jq
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4o
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKQotICAgICAgICAgICAgcmVwb3J0RGVwcmVjYXRl
ZFNldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRJbnRlZ3JhbEF0dHIiKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgInJlZmxlY3RlZEludGVncmFsQXR0ciIpOworICAgICAgICBoYW5kbGVTZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJU
ZXN0T2JqIiwgInJlZmxlY3RlZEludGVncmFsQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yMzEwLDEwICsy
MDY3LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRVbnNpZ25lZEludGVncgogICAgIEpT
VmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RP
YmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAg
IGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
InJlZmxlY3RlZFVuc2lnbmVkSW50ZWdyYWxBdHRyIik7CisgICAgICAgIGhhbmRsZVNldHRlclR5
cGVFcnJvcigqZXhlYywgdGhpc1ZhbHVlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRl
c3RPYmoiLCAicmVmbGVjdGVkVW5zaWduZWRJbnRlZ3JhbEF0dHIiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjMy
OSwxMCArMjA4Myw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQm9vbGVhbkF0dHIoRXgK
ICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAg
SlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAgICAgICAgICByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJy
b3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlZmxlY3RlZEJvb2xlYW5BdHRyIik7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJy
ZWZsZWN0ZWRCb29sZWFuQXR0ciIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgInJl
ZmxlY3RlZEJvb2xlYW5BdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTIzNDgsMTAgKzIwOTksNyBAQCB2b2lk
IHNldEpTVGVzdE9ialJlZmxlY3RlZFVSTEF0dHIoRXhlY1N0CiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKQot
ICAgICAgICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJyZWZsZWN0ZWRVUkxBdHRyIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZWZsZWN0ZWRVUkxBdHRyIik7CisgICAg
ICAgIGhhbmRsZVNldHRlclR5cGVFcnJvcigqZXhlYywgdGhpc1ZhbHVlLCBKU1Rlc3RPYmpQcm90
b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAicmVmbGVjdGVkVVJMQXR0ciIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBA
IC0yMzY3LDEwICsyMTE1LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRTdHJpbmdBdHRy
KEV4ZQogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAicmVmbGVjdGVkU3RyaW5nQXR0ciIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwg
InJlZmxlY3RlZFN0cmluZ0F0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0
T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjM4NiwxMCArMjEzMSw3IEBAIHZv
aWQgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tSW50ZWdyYWwKICAgICBKU1ZhbHVlIHZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkp
Ci0gICAgICAgICAgICByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgInJlZmxlY3RlZEN1c3RvbUludGVncmFsQXR0ciIpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3Vz
dG9tSW50ZWdyYWxBdHRyIik7CisgICAgICAgIGhhbmRsZVNldHRlclR5cGVFcnJvcigqZXhlYywg
dGhpc1ZhbHVlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAicmVmbGVj
dGVkQ3VzdG9tSW50ZWdyYWxBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI0MDUsMTAgKzIxNDcsNyBAQCB2
b2lkIHNldEpTVGVzdE9ialJlZmxlY3RlZEN1c3RvbUJvb2xlYW5BCiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
KQotICAgICAgICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJyZWZsZWN0ZWRDdXN0b21Cb29sZWFuQXR0ciIpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3Vz
dG9tQm9vbGVhbkF0dHIiKTsKKyAgICAgICAgaGFuZGxlU2V0dGVyVHlwZUVycm9yKCpleGVjLCB0
aGlzVmFsdWUsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJyZWZsZWN0
ZWRDdXN0b21Cb29sZWFuQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNDI0LDEwICsyMTYzLDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKAogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkK
LSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAicmVmbGVjdGVkQ3VzdG9tVVJMQXR0ciIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAicmVmbGVjdGVkQ3VzdG9tVVJM
QXR0ciIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHRoaXNWYWx1ZSwg
SlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgInJlZmxlY3RlZEN1c3RvbVVS
TEF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwpAQCAtMjQ0MywxMCArMjE3OSw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
VHlwZWRBcnJheUF0dHIoRXhlY1N0YXQKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAgICAgICAgICBy
ZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInR5cGVkQXJyYXlB
dHRyIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdE9iaiIsICJ0eXBlZEFycmF5QXR0ciIpOworICAgICAgICBoYW5kbGVTZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJU
ZXN0T2JqIiwgInR5cGVkQXJyYXlBdHRyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
VGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI0NjIsMTAgKzIxOTUsNyBA
QCB2b2lkIHNldEpTVGVzdE9iakF0dHJXaXRoR2V0dGVyRXhjZXB0aW9uCiAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpKQotICAgICAgICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAiVGVz
dE9iaiIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYXR0cldpdGhHZXR0
ZXJFeGNlcHRpb24iKTsKKyAgICAgICAgaGFuZGxlU2V0dGVyVHlwZUVycm9yKCpleGVjLCB0aGlz
VmFsdWUsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJhdHRyV2l0aEdl
dHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGlt
cGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNDgxLDEwICsyMjExLDcgQEAgdm9pZCBzZXRK
U1Rlc3RPYmpBdHRyV2l0aFNldHRlckV4Y2VwdGlvbgogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0
PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAgICAg
ICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYXR0
cldpdGhTZXR0ZXJFeGNlcHRpb24iKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dT
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9u
Iik7CisgICAgICAgIGhhbmRsZVNldHRlclR5cGVFcnJvcigqZXhlYywgdGhpc1ZhbHVlLCBKU1Rl
c3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAiYXR0cldpdGhTZXR0ZXJFeGNlcHRp
b24iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVk
VGhpcy0+aW1wbCgpOwpAQCAtMjUwMiwxMCArMjIyOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqU3Ry
aW5nQXR0cldpdGhHZXR0ZXJFeGMKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElL
RUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQ
cm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAgICAgICAgICByZXBv
cnREZXByZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRo
R2V0dGVyRXhjZXB0aW9uIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlv
biIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHRoaXNWYWx1ZSwgSlNU
ZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgInN0cmluZ0F0dHJXaXRoR2V0dGVy
RXhjZXB0aW9uIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI1MjEsMTAgKzIyNDUsNyBAQCB2b2lkIHNldEpTVGVz
dE9ialN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKQotICAgICAgICAg
ICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJzdHJpbmdB
dHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24iKTsKKyAgICAgICAgaGFuZGxlU2V0dGVyVHlwZUVycm9yKCpleGVjLCB0aGlzVmFs
dWUsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJzdHJpbmdBdHRyV2l0
aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmom
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNTQyLDEwICsyMjYzLDcgQEAgdm9pZCBz
ZXRKU1Rlc3RPYmpDdXN0b21BdHRyKEV4ZWNTdGF0ZSogZQogICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAg
ICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAi
Y3VzdG9tQXR0ciIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvd1NldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY3VzdG9tQXR0ciIpOworICAgICAgICBoYW5kbGVTZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCks
ICJUZXN0T2JqIiwgImN1c3RvbUF0dHIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBj
YXN0ZWRUaGlzLT5zZXRDdXN0b21BdHRyKGV4ZWMsIHZhbHVlKTsKQEAgLTI1NTcsMTAgKzIyNzUs
NyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0CiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpKQotICAgICAgICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJ3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZSIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
IHRoaXNWYWx1ZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgIndpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RP
YmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNTc2LDEwICsyMjkxLDcgQEAgdm9p
ZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udAogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRo
aXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFt
aWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkK
LSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoi
LCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlIik7CisgICAgICAgIGhhbmRsZVNldHRlclR5
cGVFcnJvcigqZXhlYywgdGhpc1ZhbHVlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRl
c3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpA
QCAtMjU5OCwxMCArMjMxMCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0
cmlidXQKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAgICAgICAgICByZXBvcnREZXByZWNhdGVkU2V0
dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
cyIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhl
YywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CisgICAgICAg
IGhhbmRsZVNldHRlclR5cGVFcnJvcigqZXhlYywgdGhpc1ZhbHVlLCBKU1Rlc3RPYmpQcm90b3R5
cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKQEAgLTI2MTcsMTAgKzIzMjYsNyBAQCB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3Jp
cHRFeGVjdXRpb25Db250CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSgh
Y2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90
eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKQotICAgICAgICAgICAgcmVwb3J0RGVw
cmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEF0dHJpYnV0ZVJhaXNlcyIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJv
d1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVSYWlzZXMiKTsKKyAgICAgICAgaGFuZGxlU2V0dGVyVHlwZUVycm9yKCpl
eGVjLCB0aGlzVmFsdWUsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJ3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0y
NjM5LDEwICsyMzQ1LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJF
cnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvd1NldHRl
clR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwpAQCAtMjY2MSwxMCArMjM2NCw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnQKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAgICAgICAgICByZXBvcnREZXByZWNh
dGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiKTsKKyAgICAgICAg
aGFuZGxlU2V0dGVyVHlwZUVycm9yKCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdE9ialByb3RvdHlw
ZTo6aW5mbygpLCAiVGVzdE9iaiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVz
dE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI2ODMsMTAgKzIzODMsNyBAQCB2
b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250CiAgICAgSlNWYWx1ZSB2YWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
KQotICAgICAgICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAiVGVzdE9i
aiIsICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0
dHJpYnV0ZSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUiKTsKKyAgICAgICAgaGFuZGxlU2V0dGVyVHlwZUVycm9y
KCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIs
ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNzA1LDEwICsyNDAyLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0QXJndW1lbnRzQW5kQwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWND
YXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5M
SUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
alByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAgICAgICAgICAgIHJl
cG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFy
Z3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAid2l0aFNjcmlwdEFyZ3Vt
ZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZSIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2Jq
IiwgIndpdGhTY3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpA
QCAtMjcyNSwxMCArMjQxOSw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShF
eGVjU3QKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7
CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlz
KSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAgICAgICAgICByZXBvcnREZXByZWNhdGVkU2V0
dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjEiKTsKLSAgICAgICAg
ZWxzZQotICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwg
ImNvbmRpdGlvbmFsQXR0cjEiKTsKKyAgICAgICAgaGFuZGxlU2V0dGVyVHlwZUVycm9yKCpleGVj
LCB0aGlzVmFsdWUsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9iaiIsICJjb25k
aXRpb25hbEF0dHIxIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9iaiYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI3NDYsMTAgKzI0MzcsNyBAQCB2b2lkIHNldEpT
VGVzdE9iakNvbmRpdGlvbmFsQXR0cjIoRXhlY1N0CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8
SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKQotICAgICAg
ICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25k
aXRpb25hbEF0dHIyIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93U2V0dGVyVHlw
ZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHIyIik7CisgICAgICAgIGhh
bmRsZVNldHRlclR5cGVFcnJvcigqZXhlYywgdGhpc1ZhbHVlLCBKU1Rlc3RPYmpQcm90b3R5cGU6
OmluZm8oKSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMiIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNzY3
LDEwICsyNDU1LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0dHIzKEV4ZWNTdAog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBK
U1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0g
ICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJv
cigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyMyIpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0
aW9uYWxBdHRyMyIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHRoaXNW
YWx1ZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgImNvbmRpdGlvbmFs
QXR0cjMiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwpAQCAtMjc4OCwxMCArMjQ3Myw3IEBAIHZvaWQgc2V0SlNUZXN0T2Jq
Q29uZGl0aW9uYWxBdHRyNENvbnN0cnUKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWlj
Q2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmpQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAgICAgICAgICBy
ZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFs
QXR0cjQiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgImNvbmRpdGlvbmFsQXR0cjQiKTsKKyAgICAgICAgaGFuZGxlU2V0
dGVyVHlwZUVycm9yKCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygp
LCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gY29uc3RydWN0b3IKQEAgLTI4MDYsMTAgKzI0
ODgsNyBAQCB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjVDb25zdHJ1CiAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE9i
aiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2Rl
KHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAg
aWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpKQotICAgICAgICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVj
LCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0dHI1Iik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHRocm93U2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJjb25kaXRpb25hbEF0
dHI1Iik7CisgICAgICAgIGhhbmRsZVNldHRlclR5cGVFcnJvcigqZXhlYywgdGhpc1ZhbHVlLCBK
U1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNSIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIC8vIFNoYWRvd2luZyBhIGJ1aWx0LWluIGNv
bnN0cnVjdG9yCkBAIC0yODI0LDEwICsyNTAzLDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpDb25kaXRp
b25hbEF0dHI2Q29uc3RydQogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAgICAgICAgICAgIHJlcG9ydERl
cHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNiIp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAiY29uZGl0aW9uYWxBdHRyNiIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0
T2JqIiwgImNvbmRpdGlvbmFsQXR0cjYiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAv
LyBTaGFkb3dpbmcgYSBidWlsdC1pbiBjb25zdHJ1Y3RvcgpAQCAtMjg0MSwxMCArMjUxNyw3IEBA
IHZvaWQgc2V0SlNUZXN0T2JqQW55QXR0cmlidXRlKEV4ZWNTdGF0ZSoKICAgICBKU1ZhbHVlIHZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSkpCi0gICAgICAgICAgICByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0
T2JqIiwgImFueUF0dHJpYnV0ZSIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvd1Nl
dHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYW55QXR0cmlidXRlIik7CisgICAgICAg
IGhhbmRsZVNldHRlclR5cGVFcnJvcigqZXhlYywgdGhpc1ZhbHVlLCBKU1Rlc3RPYmpQcm90b3R5
cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAiYW55QXR0cmlidXRlIik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI4NjAs
MTAgKzI1MzMsNyBAQCB2b2lkIHNldEpTVGVzdE9iak11dGFibGVQb2ludChFeGVjU3RhdGUqCiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpT
VGVzdE9iaiogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6
ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAg
ICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpKQotICAgICAgICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9y
KCpleGVjLCAiVGVzdE9iaiIsICJtdXRhYmxlUG9pbnQiKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm11dGFibGVQb2lu
dCIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHRoaXNWYWx1ZSwgSlNU
ZXN0T2JqUHJvdG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgIm11dGFibGVQb2ludCIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBs
KCk7CkBAIC0yODc5LDEwICsyNTQ5LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpJbW11dGFibGVQb2lu
dChFeGVjU3RhdAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZh
bHVlKTsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9i
aio+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3Rl
ZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0
ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiaW1tdXRhYmxlUG9pbnQiKTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0T2Jq
IiwgImltbXV0YWJsZVBvaW50Iik7CisgICAgICAgIGhhbmRsZVNldHRlclR5cGVFcnJvcigqZXhl
YywgdGhpc1ZhbHVlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RPYmoiLCAiaW1t
dXRhYmxlUG9pbnQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjg5OCwxMCArMjU2NSw3IEBAIHZvaWQgc2V0SlNU
ZXN0T2JqU3RyYXdiZXJyeShFeGVjU3RhdGUqIGUKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAgICAg
ICAgICByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInN0cmF3
YmVycnkiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsICJUZXN0T2JqIiwgInN0cmF3YmVycnkiKTsKKyAgICAgICAgaGFuZGxlU2V0dGVyVHlw
ZUVycm9yKCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVz
dE9iaiIsICJzdHJhd2JlcnJ5Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdE9i
aiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTI5MTcsMTAgKzI1ODEsNyBAQCB2b2lk
IHNldEpTVGVzdE9ialN0cmljdEZsb2F0KEV4ZWNTdGF0ZSogCiAgICAgSlNWYWx1ZSB2YWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKQot
ICAgICAgICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAiVGVzdE9iaiIs
ICJzdHJpY3RGbG9hdCIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvd1NldHRlclR5
cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAic3RyaWN0RmxvYXQiKTsKKyAgICAgICAgaGFuZGxl
U2V0dGVyVHlwZUVycm9yKCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5m
bygpLCAiVGVzdE9iaiIsICJzdHJpY3RGbG9hdCIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yOTM2LDEwICsyNTk3
LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpJZChFeGVjU3RhdGUqIGV4ZWMsIEpTTwogICAgIEpTVmFs
dWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RPYmoq
IGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywg
IlRlc3RPYmoiLCAiaWQiKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dTZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgImlkIik7CisgICAgICAgIGhhbmRsZVNldHRlclR5
cGVFcnJvcigqZXhlYywgdGhpc1ZhbHVlLCBKU1Rlc3RPYmpQcm90b3R5cGU6OmluZm8oKSwgIlRl
c3RPYmoiLCAiaWQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBs
ID0gY2FzdGVkVGhpcy0+aW1wbCgpOwpAQCAtMjk1NSwxMCArMjYxMyw3IEBAIHZvaWQgc2V0SlNU
ZXN0T2JqUmVwbGFjZWFibGVBdHRyaWJ1dGUoRXgKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RPYmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RPYmpQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAgICAg
ICAgICByZXBvcnREZXByZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgInJlcGxh
Y2VhYmxlQXR0cmlidXRlIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93U2V0dGVy
VHlwZUVycm9yKCpleGVjLCAiVGVzdE9iaiIsICJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIpOworICAg
ICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0T2JqUHJv
dG90eXBlOjppbmZvKCksICJUZXN0T2JqIiwgInJlcGxhY2VhYmxlQXR0cmlidXRlIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gU2hhZG93aW5nIGEgYnVpbHQtaW4gb2JqZWN0CkBA
IC0yOTcxLDEwICsyNjI2LDcgQEAgdm9pZCBzZXRKU1Rlc3RPYmpOdWxsYWJsZUxvbmdTZXR0YWJs
ZUF0dAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsK
ICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9iaio+KEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMp
KSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0
ZXJFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUi
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0T2JqIiwgIm51bGxhYmxlTG9uZ1NldHRhYmxlQXR0cmlidXRlIik7CisgICAgICAgIGhh
bmRsZVNldHRlclR5cGVFcnJvcigqZXhlYywgdGhpc1ZhbHVlLCBKU1Rlc3RPYmpQcm90b3R5cGU6
OmluZm8oKSwgIlRlc3RPYmoiLCAibnVsbGFibGVMb25nU2V0dGFibGVBdHRyaWJ1dGUiKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBUZXN0T2JqJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1w
bCgpOwpAQCAtMjk5MCwxMCArMjY0Miw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqTnVsbGFibGVTdHJp
bmdWYWx1ZShFeGUKICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRW
YWx1ZSk7CiAgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RP
YmoqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RPYmpQcm90b3R5cGUq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAgICAgICAgICByZXBvcnREZXByZWNh
dGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nVmFsdWUiKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0T2JqIiwgIm51bGxhYmxlU3RyaW5nVmFsdWUiKTsKKyAgICAgICAgaGFuZGxlU2V0dGVyVHlw
ZUVycm9yKCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVz
dE9iaiIsICJudWxsYWJsZVN0cmluZ1ZhbHVlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgVGVzdE9iaiYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTMwMDksMTAgKzI2NTgs
NyBAQCB2b2lkIHNldEpTVGVzdE9iakF0dHJpYnV0ZVdpdGhSZXNlcnZlZEVuCiAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpOwogICAgIEpTVGVzdE9iaiog
Y2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqKj4oSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYg
KGpzRHluYW1pY0Nhc3Q8SlNUZXN0T2JqUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpKQotICAgICAgICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAi
VGVzdE9iaiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RPYmoiLCAiYXR0
cmlidXRlV2l0aFJlc2VydmVkRW51bVR5cGUiKTsKKyAgICAgICAgaGFuZGxlU2V0dGVyVHlwZUVy
cm9yKCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdE9ialByb3RvdHlwZTo6aW5mbygpLCAiVGVzdE9i
aiIsICJhdHRyaWJ1dGVXaXRoUmVzZXJ2ZWRFbnVtVHlwZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIFRlc3RPYmomIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cAkocmV2aXNpb24gMTY5MjY1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE1MCwxMSArMTUwLDggQEAgYm9vbCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhYwogRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRK
U1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwotICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oc2xv
dEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigq
ZXhlYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUiKTsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVj
LCBzbG90QmFzZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBl
OjppbmZvKCksICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInZhbHVlIik7
CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRo
aXMtPmltcGwoKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGltcGwudmFsdWUoKSA/IGltcGwudmFs
dWUoKS0+ZGVzZXJpYWxpemUoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIDApIDog
anNOdWxsKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpAQCAtMTY0LDEx
ICsxNjEsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VSZWFkb25seVZh
bHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkK
LSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInJlYWRvbmx5VmFsdWUiKTsKLSAg
ICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSIsICJyZWFkb25seVZhbHVlIik7Ci0gICAgfQorICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQ
cm90b3R5cGU6OmluZm8oKSwgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAi
cmVhZG9ubHlWYWx1ZSIpOwogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Um
IGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBpbXBsLnJl
YWRvbmx5VmFsdWUoKSA/IGltcGwucmVhZG9ubHlWYWx1ZSgpLT5kZXNlcmlhbGl6ZShleGVjLCBj
YXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgMCkgOiBqc051bGwoKTsKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xNzgsMTEgKzE3Miw4IEBAIEVuY29kZWRKU1ZhbHVl
IGpzVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWwKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
Y3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsK
ICAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBq
c0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZVByb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnRE
ZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlIiwgImNhY2hlZFZhbHVlIik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVF
cnJvcigqZXhlYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVk
VmFsdWUiKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAg
cmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZTo6aW5mbygpLCAiVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJjYWNoZWRWYWx1ZSIpOwogICAgIGlmIChKU1ZhbHVl
IGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRWYWx1ZS5nZXQoKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYWNoZWRWYWx1ZSk7CiAgICAgVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTE5NSwx
MSArMTg2LDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbAogRW5j
b2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUG9ydHMoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmIChVTkxJ
S0VMWSghY2FzdGVkVGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAicG9ydHMiKTsKLSAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZSIsICJwb3J0cyIpOwotICAgIH0KKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKQor
ICAgICAgICByZXR1cm4gaGFuZGxlR2V0dGVyVHlwZUVycm9yKCpleGVjLCBzbG90QmFzZSwgSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlOjppbmZvKCksICJUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgInBvcnRzIik7CiAgICAgVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGpzQXJyYXkoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIGltcGwucG9ydHMoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwpA
QCAtMjA5LDExICsxOTcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VD
YWNoZWRSZWFkb25seVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNhY2hl
ZFJlYWRvbmx5VmFsdWUiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpl
eGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJjYWNoZWRSZWFkb25s
eVZhbHVlIik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAg
IHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCAiY2FjaGVkUmVhZG9ubHlWYWx1ZSIpOwogICAgIGlm
IChKU1ZhbHVlIGNhY2hlZFZhbHVlID0gY2FzdGVkVGhpcy0+bV9jYWNoZWRSZWFkb25seVZhbHVl
LmdldCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNhY2hlZFZhbHVlKTsKICAg
ICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlJiBpbXBsID0gY2FzdGVkVGhpcy0+
aW1wbCgpOwpAQCAtMjM2LDEwICsyMjEsNyBAQCB2b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyCiAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
VmFsdWUpOwogICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY2FzdGVk
VGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Kj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmIChVTkxJS0VMWSghY2FzdGVk
VGhpcykpIHsKLSAgICAgICAgaWYgKGpzRHluYW1pY0Nhc3Q8SlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpKQot
ICAgICAgICAgICAgcmVwb3J0RGVwcmVjYXRlZFNldHRlckVycm9yKCpleGVjLCAiVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJ2YWx1ZSIpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UiLCAidmFsdWUiKTsKKyAgICAgICAgaGFuZGxlU2V0dGVyVHlwZUVycm9y
KCpleGVjLCB0aGlzVmFsdWUsIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVBy
b3RvdHlwZTo6aW5mbygpLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsICJ2
YWx1ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2UmIGltcGwgPSBjYXN0ZWRUaGlzLT5pbXBsKCk7CkBAIC0yNTUsMTAgKzIz
Nyw3IEBAIHZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXIKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7CiAgICAgSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAo
anNEeW5hbWljQ2FzdDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5
cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSkpCi0gICAgICAgICAgICByZXBvcnREZXBy
ZWNhdGVkU2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlIiwgImNhY2hlZFZhbHVlIik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRocm93U2V0
dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIs
ICJjYWNoZWRWYWx1ZSIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHRo
aXNWYWx1ZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90eXBlOjpp
bmZvKCksICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgImNhY2hlZFZhbHVl
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcAkocmV2aXNpb24gMTY5MjY1KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUzLDEx
ICsyNTMsOCBAQCBib29sIEpTVGVzdFR5cGVkZWZzOjpnZXRPd25Qcm9wZXJ0eVNsb3QoCiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc1Vuc2lnbmVkTG9uZ0xvbmdBdHRyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkKIHsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYg
KFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rl
c3RUeXBlZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBv
cnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAidW5zaWduZWRM
b25nTG9uZ0F0dHIiKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVj
LCAiVGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7Ci0gICAgfQorICAgIGlm
IChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBl
RXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZTo6aW5mbygpLCAi
VGVzdFR5cGVkZWZzIiwgInVuc2lnbmVkTG9uZ0xvbmdBdHRyIik7CiAgICAgVGVzdFR5cGVkZWZz
JiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNOdW1i
ZXIoaW1wbC51bnNpZ25lZExvbmdMb25nQXR0cigpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CkBAIC0yNjcsMTEgKzI2NCw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5
cGVkZWZzVW5zaWduZWRMb24KIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzSW1tdXRhYmxl
U2VyaWFsaXplZFNjcmlwdFZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RU
eXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkg
ewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KHNs
b3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3Io
KmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7
Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVm
cyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsKLSAgICB9CisgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJv
cigqZXhlYywgc2xvdEJhc2UsIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlOjppbmZvKCksICJUZXN0
VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CiAgICAgVGVzdFR5
cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0g
aW1wbC5pbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUoKSA/IGltcGwuaW1tdXRhYmxlU2Vy
aWFsaXplZFNjcmlwdFZhbHVlKCktPmRlc2VyaWFsaXplKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpLCAwKSA6IGpzTnVsbCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKQEAgLTI4MSwxMSArMjc1LDggQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNJ
bW11dGFibGVTZQogRW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRlc3RT
dWJPYmooRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRU
aGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChq
c0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAg
ICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBl
ZGVmcyIsICJUZXN0U3ViT2JqIik7Ci0gICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJUZXN0U3ViT2JqIik7Ci0gICAgfQorICAgIGlmIChV
TkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJy
b3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZTo6aW5mbygpLCAiVGVz
dFR5cGVkZWZzIiwgIlRlc3RTdWJPYmoiKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpT
VGVzdFN1Yk9iajo6Z2V0Q29uc3RydWN0b3IoZXhlYy0+dm0oKSwgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCkpKTsKIH0KIApAQCAtMjkzLDExICsyODQsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RUeXBlZGVmc0NvbnN0cnVjdG9yCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBF
bmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RUeXBl
ZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewot
ICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KHNsb3RC
YXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4
ZWMsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKLSAgICAgICAg
cmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uIik7Ci0gICAgfQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhp
cykpCisgICAgICAgIHJldHVybiBoYW5kbGVHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNl
LCBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZTo6aW5mbygpLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJX
aXRoR2V0dGVyRXhjZXB0aW9uIik7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgVGVz
dFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0
ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aEdldHRlckV4Y2VwdGlvbihlYykpOwpAQCAtMzA5LDEx
ICsyOTcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoR2V0CiBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFBy
b3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiBy
ZXBvcnREZXByZWNhdGVkR2V0dGVyRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAiYXR0cldp
dGhTZXR0ZXJFeGNlcHRpb24iKTsKLSAgICAgICAgcmV0dXJuIHRocm93R2V0dGVyVHlwZUVycm9y
KCpleGVjLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7Ci0gICAg
fQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZTo6
aW5mbygpLCAiVGVzdFR5cGVkZWZzIiwgImF0dHJXaXRoU2V0dGVyRXhjZXB0aW9uIik7CiAgICAg
VGVzdFR5cGVkZWZzJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVz
dWx0ID0ganNOdW1iZXIoaW1wbC5hdHRyV2l0aFNldHRlckV4Y2VwdGlvbigpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0zMjMsMTEgKzMwOCw4IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdFR5cGVkZWZzQXR0cldpdGhTZXQKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5
cGVkZWZzU3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjLCBKU09i
amVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RU
eXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoVU5MSUtFTFko
IWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVGVzdFR5cGVkZWZz
UHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0dXJuIHJlcG9ydERlcHJlY2F0
ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRl
ckV4Y2VwdGlvbiIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKmV4ZWMs
ICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsKLSAgICB9
CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUdl
dHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlOjpp
bmZvKCksICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhHZXR0ZXJFeGNlcHRpb24iKTsK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0
ZWRUaGlzLT5pbXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShl
eGVjLCBpbXBsLnN0cmluZ0F0dHJXaXRoR2V0dGVyRXhjZXB0aW9uKGVjKSk7CkBAIC0zMzksMTEg
KzMyMSw4IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0clcKIEVuY29k
ZWRKU1ZhbHVlIGpzVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFR5cGVkZWZzKiBjYXN0ZWRUaGlzID0ganNE
eW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmcyo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
LSAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7Ci0gICAgICAgIGlmIChqc0R5bmFtaWND
YXN0PEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlKj4oc2xvdEJhc2UpKQotICAgICAgICAgICAgcmV0
dXJuIHJlcG9ydERlcHJlY2F0ZWRHZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJz
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwotICAgICAgICByZXR1cm4gdGhyb3dHZXR0
ZXJUeXBlRXJyb3IoKmV4ZWMsICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhTZXR0ZXJF
eGNlcHRpb24iKTsKLSAgICB9CisgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkKKyAgICAg
ICAgcmV0dXJuIGhhbmRsZUdldHRlclR5cGVFcnJvcigqZXhlYywgc2xvdEJhc2UsIEpTVGVzdFR5
cGVkZWZzUHJvdG90eXBlOjppbmZvKCksICJUZXN0VHlwZWRlZnMiLCAic3RyaW5nQXR0cldpdGhT
ZXR0ZXJFeGNlcHRpb24iKTsKICAgICBUZXN0VHlwZWRlZnMmIGltcGwgPSBjYXN0ZWRUaGlzLT5p
bXBsKCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBpbXBs
LnN0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKQEAgLTM2MywxMCArMzQyLDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVm
c1Vuc2lnbmVkTG9uZ0xvbmdBdAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1p
Y0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxK
U1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAg
ICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVm
cyIsICJ1bnNpZ25lZExvbmdMb25nQXR0ciIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0
aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJ1bnNpZ25lZExvbmdM
b25nQXR0ciIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHRoaXNWYWx1
ZSwgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RUeXBlZGVmcyIsICJ1bnNp
Z25lZExvbmdMb25nQXR0ciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RUeXBl
ZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTM4MiwxMCArMzU4LDcgQEAgdm9p
ZCBzZXRKU1Rlc3RUeXBlZGVmc0ltbXV0YWJsZVNlcmlhbGl6ZQogICAgIEpTVmFsdWUgdmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2Fz
dGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBp
ZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigq
ZXhlYywgIlRlc3RUeXBlZGVmcyIsICJpbW11dGFibGVTZXJpYWxpemVkU2NyaXB0VmFsdWUiKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgdGhyb3dTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsICJU
ZXN0VHlwZWRlZnMiLCAiaW1tdXRhYmxlU2VyaWFsaXplZFNjcmlwdFZhbHVlIik7CisgICAgICAg
IGhhbmRsZVNldHRlclR5cGVFcnJvcigqZXhlYywgdGhpc1ZhbHVlLCBKU1Rlc3RUeXBlZGVmc1By
b3RvdHlwZTo6aW5mbygpLCAiVGVzdFR5cGVkZWZzIiwgImltbXV0YWJsZVNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RUeXBlZGVmcyYgaW1w
bCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTQwMSwxMCArMzc0LDcgQEAgdm9pZCBzZXRKU1Rl
c3RUeXBlZGVmc0F0dHJXaXRoR2V0dGVyRXhjZQogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9
IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5h
bWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRl
c3RUeXBlZGVmcyIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJh
dHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3Io
KmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RU
eXBlZGVmcyIsICJhdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTQy
MCwxMCArMzkwLDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc0F0dHJXaXRoU2V0dGVyRXhjZQog
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBK
U1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMq
PihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRU
aGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJl
Y2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4
Y2VwdGlvbiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJv
cigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOworICAg
ICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0VHlwZWRl
ZnNQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RUeXBlZGVmcyIsICJhdHRyV2l0aFNldHRlckV4Y2Vw
dGlvbiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9
IGNhc3RlZFRoaXMtPmltcGwoKTsKQEAgLTQ0MSwxMCArNDA4LDcgQEAgdm9pZCBzZXRKU1Rlc3RU
eXBlZGVmc1N0cmluZ0F0dHJXaXRoR2V0dAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWlj
Q2FzdDxKU1Rlc3RUeXBlZGVmc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KSkKLSAgICAgICAgICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RU
eXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwotICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIs
ICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOworICAgICAgICBoYW5kbGVTZXR0ZXJU
eXBlRXJyb3IoKmV4ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGU6OmluZm8o
KSwgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRyV2l0aEdldHRlckV4Y2VwdGlvbiIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMt
PmltcGwoKTsKQEAgLTQ2MCwxMCArNDI0LDcgQEAgdm9pZCBzZXRKU1Rlc3RUeXBlZGVmc1N0cmlu
Z0F0dHJXaXRoU2V0dAogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKTsKICAgICBKU1Rlc3RUeXBlZGVmcyogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8
SlNUZXN0VHlwZWRlZnMqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKFVO
TElLRUxZKCFjYXN0ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKSkKLSAgICAgICAg
ICAgIHJlcG9ydERlcHJlY2F0ZWRTZXR0ZXJFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJz
dHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB0aHJvd1NldHRlclR5cGVFcnJvcigqZXhlYywgIlRlc3RUeXBlZGVmcyIsICJzdHJpbmdBdHRy
V2l0aFNldHRlckV4Y2VwdGlvbiIpOworICAgICAgICBoYW5kbGVTZXR0ZXJUeXBlRXJyb3IoKmV4
ZWMsIHRoaXNWYWx1ZSwgSlNUZXN0VHlwZWRlZnNQcm90b3R5cGU6OmluZm8oKSwgIlRlc3RUeXBl
ZGVmcyIsICJzdHJpbmdBdHRyV2l0aFNldHRlckV4Y2VwdGlvbiIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIFRlc3RUeXBlZGVmcyYgaW1wbCA9IGNhc3RlZFRoaXMtPmltcGwoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTYXR0cmlidXRlLmNwcAkocmV2aXNpb24gMTY5MjY1KQorKysgU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTI4LDExICsxMjgsOCBAQCBib29sIEpTYXR0cmlidXRlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNP
CiBFbmNvZGVkSlNWYWx1ZSBqc2F0dHJpYnV0ZVJlYWRvbmx5KEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkK
IHsKICAgICBKU2F0dHJpYnV0ZSogY2FzdGVkVGhpcyA9IGpzRHluYW1pY0Nhc3Q8SlNhdHRyaWJ1
dGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKFVOTElLRUxZKCFjYXN0
ZWRUaGlzKSkgewotICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU2F0dHJpYnV0ZVByb3RvdHlw
ZSo+KHNsb3RCYXNlKSkKLSAgICAgICAgICAgIHJldHVybiByZXBvcnREZXByZWNhdGVkR2V0dGVy
RXJyb3IoKmV4ZWMsICJhdHRyaWJ1dGUiLCAicmVhZG9ubHkiKTsKLSAgICAgICAgcmV0dXJuIHRo
cm93R2V0dGVyVHlwZUVycm9yKCpleGVjLCAiYXR0cmlidXRlIiwgInJlYWRvbmx5Iik7Ci0gICAg
fQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcykpCisgICAgICAgIHJldHVybiBoYW5kbGVH
ZXR0ZXJUeXBlRXJyb3IoKmV4ZWMsIHNsb3RCYXNlLCBKU2F0dHJpYnV0ZVByb3RvdHlwZTo6aW5m
bygpLCAiYXR0cmlidXRlIiwgInJlYWRvbmx5Iik7CiAgICAgYXR0cmlidXRlJiBpbXBsID0gY2Fz
dGVkVGhpcy0+aW1wbCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdXaXRoQ2FjaGUo
ZXhlYywgaW1wbC5yZWFkb25seSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3Vs
dCk7Cg==
</data>
<flag name="review"
          id="256456"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>