<?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>157210</bug_id>
          
          <creation_ts>2016-04-29 15:55:45 -0700</creation_ts>
          <short_desc>Use LIKELY() / UNLIKELY() hints when suitable in the JavaScript bindings</short_desc>
          <delta_ts>2016-04-29 21:48:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1188830</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-29 15:55:45 -0700</bug_when>
    <thetext>We already make use of them in the JS bindings but they are some cases where we don&apos;t and they may be useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1188833</commentid>
    <comment_count>1</comment_count>
      <attachid>277745</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-29 15:58:03 -0700</bug_when>
    <thetext>Created attachment 277745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189013</commentid>
    <comment_count>2</comment_count>
      <attachid>277745</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-29 21:48:03 -0700</bug_when>
    <thetext>Comment on attachment 277745
Patch

Clearing flags on attachment: 277745

Committed r200286: &lt;http://trac.webkit.org/changeset/200286&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1189014</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-04-29 21:48:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>277745</attachid>
            <date>2016-04-29 15:58:03 -0700</date>
            <delta_ts>2016-04-29 21:48:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157210-20160429155836.patch</filename>
            <type>text/plain</type>
            <size>59572</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwMjY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTM5MmM3YjZlMWY5YmQ5
MjljZDQxMTJlZTI4YWY1YThlYjY5YjQzZi4uZjljMjk1ODVkYzEyYzBjYTRmM2NhYTVjNTZhNWU3
MjJjOWMxMmU4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAxNi0wNC0yOSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBMSUtFTFkoKSAvIFVO
TElLRUxZKCkgaGludHMgd2hlbiBzdWl0YWJsZSBpbiB0aGUgSmF2YVNjcmlwdCBiaW5kaW5ncwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3MjEwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIExJS0VM
WSgpIC8gVU5MSUtFTFkoKSBoaW50cyB3aGVuIHN1aXRhYmxlIGluIHRoZSBKYXZhU2NyaXB0IGJp
bmRpbmdzLgorICAgICAgICBXZSBhbHJlYWR5IG1ha2UgdXNlIG9mIHRoZW0gaW4gdGhlIEpTIGJp
bmRpbmdzIGJ1dCB0aGV5IGFyZSBzb21lIGNhc2VzCisgICAgICAgIHdoZXJlIHdlIGRvbid0IGFu
ZCB0aGV5IG1heSBiZSB1c2VmdWwuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlT3ZlcmxvYWRlZEZ1bmN0aW9uKToKKyAg
ICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0
ZXJzQ2hlY2spOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCk6
CisgICAgICAgIChHZW5lcmF0ZU92ZXJsb2FkZWRDb25zdHJ1Y3RvckRlZmluaXRpb24pOgorICAg
ICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmluaXRpb24pOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNpdGluZ0Z1bmN0aW9u
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNC
dWlsdGluQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0Q2xhc3NXaXRo
SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVy
YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNv
bnN0cnVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvbkltcGxl
bWVudHNNZXRob2QyKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdEludGVyZmFjZVByb3RvdHlw
ZUZ1bmN0aW9uU3VwcGxlbWVudGFsTWV0aG9kMik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmpzVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90
eXBlRnVuY3Rpb25NZXRob2QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
Q29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3ROb2RlQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE5vbmRl
dGVybWluaXN0aWNDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpUZXN0U3ViT2JqRW5h
YmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9iakNv
bnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
RW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpq
c1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkJ5dGVNZXRob2RXaXRoQXJncyk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk9jdGV0TWV0aG9kV2l0aEFyZ3MpOgor
ICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0
aEFyZ3MpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpN
ZXRob2RXaXRoQXJncyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MpOgorICAgICAgICAoV2ViQ29y
ZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBcmcpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2Fs
bGJhY2tBcmdBbmRDYWxsYmFja0FyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJn
QW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJnKToKKyAgICAgICAgKFdl
YkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDUpOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9k
OCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2Fk
ZWRNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25P
dmVybG9hZGVkTWV0aG9kV2l0aE9wdGlvbmFsUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMSk6CisgICAgICAg
IChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uU3RyaWN0RnVuY3Rpb25XaXRoU2Vx
dWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJp
Y3RGdW5jdGlvbldpdGhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudFBy
b21pc2UpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25UZXN0
UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbjFQcm9taXNlKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24yUHJv
bWlzZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblRlc3RQ
cm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMSk6CisgICAgICAgIChXZWJD
b3JlOjpjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNvbnN0cnVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3Ry
dWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpqc1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmNvbnN0cnVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNhdHRy
aWJ1dGVDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
cmVhZG9ubHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6anNyZWFkb25seUNvbnN0cnVjdG9yKToK
KwogMjAxNi0wNC0yOSAgQW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIDxzZWxlY3QgbXVsdGlwbGU+IHBhZGRpbmcgc2hvdWxkIHJlYWN0IHdoZW4gc2Nyb2xs
aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCmluZGV4IDc0MGJiZGQ2Mjk5MzM5YTUwNWVmZTE2MjgyZGY5ZDcwMTY0ZGVhMGQuLjMy
OWFjNjMzYTkxYjBkOTVkYWU5MDZjNTQ0MTJmODk3NmJhNGM4NTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0xNjEyLDcg
KzE2MTIsNyBAQCBFTkQKIAogICAgIH0KICAgICBpZiAoJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1z
ID49IDEpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKGFyZ3NDb3VudCA8
ICRsZWFzdE51bU1hbmRhdG9yeVBhcmFtcylcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICBpZiAoVU5MSUtFTFkoYXJnc0NvdW50IDwgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1z
KSlcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTtcbiIp
OwogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwpAQCAtMjI5MCw5ICsyMjkw
LDkgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgICAgICAgICAgaWYgKCRpbmRl
eGVkR2V0dGVyRnVuY3Rpb24pIHsKICAgICAgICAgICAgICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJG
dW5jdGlvbi0+c2lnbmF0dXJlLT50eXBlIGVxICJET01TdHJpbmciKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChpbmRleCA8PSBNQVhfQVJSQVlfSU5E
RVgpIHtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoTElLRUxZKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkpIHtcbiIpOwogICAgICAgICAgICAg
ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmIChpbmRleCA8IHRoaXNPYmplY3QtPndyYXBwZWQoKS5sZW5ndGgoKSkge1xuIik7CisgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChMSUtFTFkoaW5kZXgg
PCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpKSB7XG4iKTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgIyBBc3N1bWUgdGhhdCBpZiB0aGVyZSdzIGEgc2V0dGVyLCB0
aGUgaW5kZXggd2lsbCBiZSB3cml0YWJsZQogICAgICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tSW5kZXhlZFNldHRlciJ9KSB7CkBAIC0yNDAy
LDcgKzI0MDIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiRnJhbWUuaCIpOwogICAgICAgICAgICAgICAgICAgICBB
ZGRUb0ltcGxJbmNsdWRlcygiU2V0dGluZ3MuaCIpOwogICAgICAgICAgICAgICAgICAgICBteSAk
ZW5hYmxlX2Z1bmN0aW9uID0gVG9NZXRob2ROYW1lKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkVuYWJsZWRCeVNldHRpbmcifSkgLiAiRW5hYmxlZCI7Ci0gICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICghY2FzdGVkVGhpcy0+
d3JhcHBlZCgpLmZyYW1lKCkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzLT53cmFwcGVkKCkuZnJhbWUoKSkp
XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgU2V0dGluZ3MmIHNldHRpbmdzID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpLmZyYW1lKCktPnNldHRpbmdzKCk7XG4iKTsKICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFzZXR0aW5ncy4kZW5hYmxlX2Z1bmN0
aW9uKCkpXG4iKTsKQEAgLTI1NTgsNyArMjU1OCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlICR7Y29u
c3RydWN0b3JGdW5jdGlvbk5hbWV9KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIntcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHtjbGFzc05h
bWV9UHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PCR7Y2xhc3NOYW1lfVByb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTtcbiIpOwotICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFkb21PYmplY3QpXG4iKTsKKyAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSlcbiIpOwogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKHN0YXRlKTtcbiIpOwogCiAgICAgICAgICAgICBpZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJOb0ludGVyZmFjZU9iamVjdCJ9KSB7CkBAIC0yNjE5LDcgKzI2MTksNyBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTtcbiIpOwogCiAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJDdXN0b21JbmRleGVkU2V0dGVyIn0pIHsKLSAgICAgICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgaWYgKGluZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkge1xuIik7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChMSUtFTFko
aW5kZXggPD0gTUFYX0FSUkFZX0lOREVYKSkge1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICB0aGlzT2JqZWN0LT5pbmRleFNldHRlcihzdGF0ZSwg
aW5kZXgsIHZhbHVlKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgfVxuIik7CkBAIC0yNzg1LDcgKzI3ODUsNyBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGlm
ICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUgZXEgImRvdWJsZSIgb3IgJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT50eXBlIGVxICJmbG9hdCIpIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgaWYgKCFzdGQ6OmlzZmluaXRlKG5hdGl2ZVZhbHVlKSkge1xuIik7
CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChVTkxJS0VM
WSghc3RkOjppc2Zpbml0ZShuYXRpdmVWYWx1ZSkpKSB7XG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpO1xu
Iik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1
cm4gZmFsc2U7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgfVxuIik7CkBAIC0yODEwLDEwICsyODEwLDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0
aW9uCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdmdQ
cm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2V0dGVyUmFpc2Vz
RXhjZXB0aW9uV2l0aE1lc3NhZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWVjLmNvZGUpXG4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoTElLRUxZKCFlYy5jb2RlKSlc
biIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICBpbXBsLmNvbW1pdENoYW5nZSgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2lmICgkc2V0dGVyUmFpc2VzRXhjZXB0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCFlYylcbiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmIChMSUtFTFkoIWVjKSlc
biIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICBpbXBsLmNvbW1pdENoYW5nZSgpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAi
ICAgIGltcGwuY29tbWl0Q2hhbmdlKCk7XG4iKTsKQEAgLTM1MzYsOSArMzUzNiw5IEBAIHN1YiBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICB9XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYg
KCRjb2RlR2VuZXJhdG9yLT5Jc0Z1bmN0aW9uT25seUNhbGxiYWNrSW50ZXJmYWNlKCRhcmdUeXBl
KSkgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFz
dGF0ZS0+YXJndW1lbnQoJGFyZ3NJbmRleCkuaXNGdW5jdGlvbigpKVxuIik7CisgICAgICAgICAg
ICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5h
cmd1bWVudCgkYXJnc0luZGV4KS5pc0Z1bmN0aW9uKCkpKVxuIik7CiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlm
ICghc3RhdGUtPmFyZ3VtZW50KCRhcmdzSW5kZXgpLmlzT2JqZWN0KCkpXG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWSghc3RhdGUt
PmFyZ3VtZW50KCRhcmdzSW5kZXgpLmlzT2JqZWN0KCkpKVxuIik7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgJGFyZ3NJbmRleCwgXCIkbmFt
ZVwiLCBcIiRpbnRlcmZhY2VOYW1lXCIsICRxdW90ZWRGdW5jdGlvbk5hbWUpO1xuIik7CiAgICAg
ICAgICAgICAgICAgaWYgKCRmdW5jdGlvbi0+aXNTdGF0aWMpIHsKQEAgLTM2MjQsNyArMzYyNCw3
IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogCiAgICAgICAgICAgICAgICAgbXkgJGFy
Z1ZhbHVlID0gInN0YXRlLT5hcmd1bWVudCgkYXJnc0luZGV4KSI7CiAgICAgICAgICAgICAgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jc1dyYXBwZXJUeXBlKCRhcmdUeXBlKSkgewotICAgICAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEke2FyZ1ZhbHVlfS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpICYmICEke2FyZ1ZhbHVlfS5pbmhlcml0cyhKUyR7YXJnVHlwZX06Omlu
Zm8oKSkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IGlmIChVTkxJS0VMWSghJHthcmdWYWx1ZX0uaXNVbmRlZmluZWRPck51bGwoKSAmJiAhJHthcmdW
YWx1ZX0uaW5oZXJpdHMoSlMke2FyZ1R5cGV9OjppbmZvKCkpKSlcbiIpOwogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50
VHlwZUVycm9yKCpzdGF0ZSwgJGFyZ3NJbmRleCwgXCIkbmFtZVwiLCBcIiRpbnRlcmZhY2VOYW1l
XCIsICRxdW90ZWRGdW5jdGlvbk5hbWUsIFwiJGFyZ1R5cGVcIik7XG4iKTsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zNjgxLDEzICszNjgxLDEzIEBAIHN1YiBHZW5lcmF0
ZVBhcmFtZXRlcnNDaGVjawogCiAgICAgICAgICAgICBteSAkaXNUZWFyT2ZmID0gJGNvZGVHZW5l
cmF0b3ItPklzU1ZHVHlwZU5lZWRpbmdUZWFyT2ZmKCRhcmdUeXBlKSAmJiAkaW50ZXJmYWNlTmFt
ZSAhfiAvTGlzdCQvOwogICAgICAgICAgICAgaWYgKCRpc1RlYXJPZmYgb3IgU2hvdWxkUGFzc1dy
YXBwZXJCeVJlZmVyZW5jZSgkcGFyYW1ldGVyLCAkaW50ZXJmYWNlKSkgewotICAgICAgICAgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISRuYW1lKVxuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWSghJG5hbWUpKVxuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4iKTsKICAgICAgICAgICAgICAgICAkdmFsdWUgPSAkaXNU
ZWFyT2ZmID8gIiRuYW1lLT5wcm9wZXJ0eVJlZmVyZW5jZSgpIiA6ICIqJG5hbWUiOwogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBpZiAoJGFyZ1R5cGUgZXEgImRvdWJsZSIgb3IgJGFyZ1R5
cGUgZXEgImZsb2F0IikgewotICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBpZiAoIXN0ZDo6aXNmaW5pdGUoJG5hbWUpKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWSghc3RkOjppc2Zpbml0ZSgkbmFtZSkpKVxu
Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7XG4iKTsKICAgICAgICAgICAgIH0KIApAQCAtNDAyMCwx
MCArNDAyMCwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbCgpCiAK
ICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eVR5cGUgYW5kICEkZnVuY3Rpb24tPmlzU3RhdGljKSB7
CiAgICAgICAgICAgICBpZiAoJHJhaXNlc0V4Y2VwdGlvbldpdGhNZXNzYWdlKSB7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiaWYgKCFlYy5jb2RlKVxuIik7
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAiaWYgKExJS0VM
WSghZWMuY29kZSkpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgJGlu
ZGVudCAuICIgICAgaW1wbC5jb21taXRDaGFuZ2UoKTtcbiIpOwogICAgICAgICAgICAgfSBlbHNp
ZiAoJHJhaXNlc0V4Y2VwdGlvbikgewotICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAkaW5kZW50IC4gImlmICghZWMpXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgJGluZGVudCAuICJpZiAoTElLRUxZKCFlYykpXG4iKTsKICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgJGluZGVudCAuICIgICAgaW1wbC5jb21taXRDaGFuZ2UoKTtcbiIp
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgJGluZGVudCAuICJpbXBsLmNvbW1pdENoYW5nZSgpO1xuIik7CkBAIC00OTA4LDcgKzQ5MDgs
NyBAQCBFTkQKICAgICB9CiAKICAgICBpZiAoJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zID49IDEp
IHsKLSAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChhcmdzQ291bnQgPCAkbGVh
c3ROdW1NYW5kYXRvcnlQYXJhbXMpXG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgIGlmIChVTkxJS0VMWShhcmdzQ291bnQgPCAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMpKVxu
Iik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTtcbiIpOwog
ICAgIH0KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksIDw8RU5EKTsKQEAgLTUwNTMsMTQgKzUwNTMs
MTQgQEAgRU5ECiAgICAgICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmli
dXRlQ29udGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9y
Q2FsbFdpdGgifSwgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSkgewogICAgICAgICAgICAgICAg
IHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgIipjb250ZXh0Iik7CiAgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQg
PSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKLSAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFjb250ZXh0KVxuIik7CisgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkp
XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVy
biB0aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgXCIke2lu
dGVyZmFjZU5hbWV9XCIpO1xuIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoJGNv
ZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGludGVyZmFjZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yQ2FsbFdpdGgifSwgIkRvY3VtZW50IikpIHsKICAg
ICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJEb2N1bWVudC5oIn0gPSAxOwogICAgICAgICAg
ICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgImRvY3VtZW50Iik7CiAgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKLSAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFjb250ZXh0KVxuIik7Cisg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChVTkxJS0VMWSghY29u
dGV4dCkpXG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IHJldHVybiB0aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwg
XCIke2ludGVyZmFjZU5hbWV9XCIpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpO1xuIik7CiAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNh
c3Q8RG9jdW1lbnQ+KCpjb250ZXh0KTtcbiIpOwpAQCAtNTA5MSw3ICs1MDkxLDcgQEAgRU5ECiAg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ29uc3RydWN0b3JSYWlzZXNFeGNlcHRpb24ifSkgewotICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoZWMpIHtcbiIpOworICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoVU5MSUtFTFkoZWMpKSB7XG4iKTsKICAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHNldERPTUV4Y2VwdGlvbihz
dGF0ZSwgZWMpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7XG4iKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVE
T01PYmplY3QuY3BwCmluZGV4IGZlMTJjN2U5ZjM0MDNiYjEyM2UxMjhkMjMwMmYwZGRlNDQ4OWRk
YTIuLmYzNmRjNjhhYWQzNzMwOTk0ODE4ZjRkNWUwYjY1MTJmYjBjNjYxZTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01P
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAgRW5jb2RlZEpTVmFs
dWUganNUZXN0QWN0aXZlRE9NT2JqZWN0RXhjaXRpbmdBdHRyKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHUKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVj
dG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKQogewogICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0g
anNEeW5hbWljQ2FzdDxKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKCFkb21PYmplY3QpCisgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmdldENvbnN0
cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CkBAIC0y
MDYsNyArMjA2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVE
T01PYmplY3RQcm90b3R5cGVGdW5jdGlvbkV4Y2l0aW5nRnVuY3QKICAgICBOb2RlKiBuZXh0Q2hp
bGQgPSBKU05vZGU6OnRvV3JhcHBlZChzdGF0ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChVTkxJ
S0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGlmICghbmV4dENoaWxkKQorICAgIGlmIChVTkxJS0VM
WSghbmV4dENoaWxkKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwog
ICAgIGltcGwuZXhjaXRpbmdGdW5jdGlvbigqbmV4dENoaWxkKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFz
c1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZGI1ZTc5YmY0OWRiMzk3MWI3YmU2
MmRmNjc1MDgyNjI5NDczMjZjNC4uMmQ2NmIxMzc3NmUxZjY0ZDhjM2I0NjdmMjc2YTRjN2UwOThl
N2UyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29u
c3RydWN0b3IuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBKU1Rlc3RDbGFzc1dpdGhKU0J1
aWx0aW5Db25zdHJ1Y3Rvcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0
YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAg
ICAgSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3JQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKCFkb21PYmplY3Qp
CisgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9i
amVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCmluZGV4IDIz
Mzk3NTMxZDBiYTQzM2M5NThjOTI0OTcyMGE5OGEzYWEwMWJlYjUuLmEyNjY3MTRjYzMwMjYyOWVi
M2MxN2RlMmI4MGYzNjhjYWNmNDUyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFj
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcApAQCAtMTIz
LDcgKzEyMyw3IEBAIHZvaWQgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3Q6OmRlc3Ryb3koSlNDOjpKU0NlbGwqIGNlbGwpCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAg
IEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0UHJvdG90eXBlKiBk
b21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50
ZXJmYWNlT2JqZWN0UHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAg
IGlmICghZG9tT2JqZWN0KQorICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgIEpTVmFsdWUgY29uc3RydWN0b3Ig
PSBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9y
OjpjcmVhdGUoc3RhdGUtPnZtKCksIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShzdGF0ZS0+dm0oKSwgKmRvbU9i
amVjdC0+Z2xvYmFsT2JqZWN0KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFBy
b3RvdHlwZSgpKSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGRvbU9iamVjdC0+Z2xvYmFs
T2JqZWN0KCkpKTsKICAgICAvLyBTaGFkb3dpbmcgY29uc3RydWN0b3IgcHJvcGVydHkgdG8gZW5z
dXJlIHJldXNpbmcgdGhlIHNhbWUgY29uc3RydWN0b3Igb2JqZWN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCBiNTU4ZWNlMjRjZTZlNjBmODAyZWZiYjAwN2JiNjBk
ZDBkYTNiNWQ1Li5hYjg0ZjQwNzIzNTIyYzRjMDE0NjhjMzZmODY0MDE2M2FiMDU4NGFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTE2MSw3ICsxNjEsNyBAQCBi
b29sIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdAogRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3RvdHlw
ZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlclByb3Rv
dHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoIWRvbU9iamVjdCkK
KyAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKHN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxP
YmplY3QoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGUy
YWY2ZDAwODhjOWFhNjliMDQxZmVjNTVhNTJkOWYxYWJmYjcwMzcuLjFmMjJmZjg0ODE2OGJlNTdl
MzUxYTM1M2ZlM2Y3NGU2YjdhOWJlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTIyNiw3ICsyMjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0
cnVjdG9yQXR0cjMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpcwogRW5jb2Rl
ZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVz
dEV2ZW50Q29uc3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKLSAgICBpZiAoIWRvbU9iamVjdCkKKyAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52
bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0
LmNwcAppbmRleCAxZmMzYmU4MTU3NWJiMTE4NDVjN2I2YmY0MTlkZDJhM2JiMjgzNmFiLi4zNjUw
NTY3NzE1MDUwMGFjMmI0NzIxYWIyMDA5YzU1MWEyNWRhNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRh
cmdldC5jcHAKQEAgLTE0OSw3ICsxNDksNyBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRP
d25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogcwogewog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0RXZlbnRUYXJnZXQqPihvYmplY3Qp
OwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKLSAg
ICBpZiAoaW5kZXggPCB0aGlzT2JqZWN0LT53cmFwcGVkKCkubGVuZ3RoKCkpIHsKKyAgICBpZiAo
TElLRUxZKGluZGV4IDwgdGhpc09iamVjdC0+d3JhcHBlZCgpLmxlbmd0aCgpKSkgewogICAgICAg
ICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gRG9udERlbGV0ZSB8IFJlYWRPbmx5OwogICAgICAgICBz
bG90LnNldFZhbHVlKHRoaXNPYmplY3QsIGF0dHJpYnV0ZXMsIHRvSlMoc3RhdGUsIHRoaXNPYmpl
Y3QtPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqZWN0LT53cmFwcGVkKCkuaXRlbShpbmRleCkpKTsK
ICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNjAsNyArMTYwLDcgQEAgYm9vbCBKU1Rlc3RFdmVu
dFRhcmdldDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVj
U3RhdGUqIHMKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNUZXN0RXZlbnRUYXJnZXRQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7Ci0gICAgaWYgKCFkb21PYmplY3QpCisgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQog
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1Rlc3RFdmVudFRhcmdldDo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCks
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKaW5k
ZXggYTJkYzFhMjM5YTBkOWNlMmIxZGJlNDRmMTIxMzJhYzNiNWE0MjY5OC4uMDcwMjI2OTY5YTU5
Mzc3ZmY2MTk5ODMxYTc1MDQ4MDk4NTY4NmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAKQEAg
LTE1OSw3ICsxNTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25OYW1lKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUAogRW5jb2RlZEpTVmFsdWUg
anNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFs
dWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0RXhjZXB0aW9uUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEV4Y2VwdGlvblByb3RvdHlwZSo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoIWRvbU9iamVjdCkKKyAgICBp
ZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdEV4Y2VwdGlvbjo6Z2V0
Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCA3MmNhMTlmNjk0
MDc1Yjc5OWE4MTdiYzIzN2YyYzdlZjE5MWYzZDYzLi5mOTM0N2FmMThhMWQwMzE0NWQ5YjZjYWU1
YTEyNWM4NTAzNDJiOTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUu
Y3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpk
ZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogRW5jb2RlZEpTVmFsdWUganNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVQ
cm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoIWRv
bU9iamVjdCkKKyAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGU6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmpl
Y3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmluZGV4
IDczNzQ5YmZhN2I0ZGQ5NThiZGJkMzg5NDcyM2E4NjM4NDI3N2Q3YTcuLjVkZWRhMDU5ZGM5Zjc1
N2Y5NDFjNWMxMDU3N2Y5MDc1MDk4NjZjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3Bw
CkBAIC0xODgsNyArMTg4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0RW5h
YmxlZEF0UnVudGltZUF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmMKIEVuY29kZWRKU1Zh
bHVlIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdEdsb2JhbE9i
amVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmpl
Y3RQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKCFkb21P
YmplY3QpCisgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RH
bG9iYWxPYmplY3Q6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2Jh
bE9iamVjdCgpKSk7CiB9CkBAIC0zMTYsNyArMzE2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGlt
ZU8KICAgICAgICAgcmV0dXJuIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFi
bGVkQXRSdW50aW1lT3BlcmF0aW9uMihzdGF0ZSk7CiAjZW5kaWYKIAotICAgIGlmIChhcmdzQ291
bnQgPCAxKQorICAgIGlmIChVTkxJS0VMWShhcmdzQ291bnQgPCAxKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCmluZGV4IDg5ZjRkODU5Y2IwMzcwMjk0OTg2MGEzNmRiNDI3NjYxM2VhYmUyOGEuLjlh
NTdjNzQ0ZjM4NjQ5ZTU0YjM3NjViZDY1MTAwNGVkMWJmZjJlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZh
Y2UuY3BwCkBAIC0yMzUsMTAgKzIzNSwxMCBAQCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmNvbnN0cnVjdChFeAogICAg
IGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYg
KCFjb250ZXh0KQorICAgIGlmIChVTkxJS0VMWSghY29udGV4dCkpCiAgICAgICAgIHJldHVybiB0
aHJvd0NvbnN0cnVjdG9yRG9jdW1lbnRVbmF2YWlsYWJsZUVycm9yKCpzdGF0ZSwgIlRlc3RJbnRl
cmZhY2UiKTsKICAgICBSZWZQdHI8VGVzdEludGVyZmFjZT4gb2JqZWN0ID0gVGVzdEludGVyZmFj
ZTo6Y3JlYXRlKCpjb250ZXh0LCBzdHIxLCBzdHIyLCBlYyk7Ci0gICAgaWYgKGVjKSB7CisgICAg
aWYgKFVOTElLRUxZKGVjKSkgewogICAgICAgICBzZXRET01FeGNlcHRpb24oc3RhdGUsIGVjKTsK
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwogICAgIH0KQEAgLTU4
OSw3ICs1ODksNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxO
b2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlCiBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0
aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RJbnRlcmZhY2VQcm90b3R5cGUq
IGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0SW50ZXJmYWNlUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmICghZG9tT2JqZWN0KQorICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SW50ZXJmYWNlOjpnZXRDb25z
dHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQpAQCAt
ODAxLDcgKzgwMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlRnVuY3Rpb25JbXBsZW1lbnRzTWV0aG9kMihFCiAgICAgVGVzdE9iaiogb2Jq
QXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDEpKTsKICAgICBpZiAo
VU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpZiAoIW9iakFyZykKKyAgICBpZiAoVU5MSUtF
TFkoIW9iakFyZykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAg
ICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgp
LCBXVEY6OmdldFB0cihpbXBsLmltcGxlbWVudHNNZXRob2QyKCpjb250ZXh0LCBzdHJBcmcsICpv
YmpBcmcsIGVjKSkpOwogCkBAIC04NjksNyArODY5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBqc1Rlc3RJbnRlcmZhY2VQcm90b3R5cGVGdW5jdGlvblN1cHBsZW1lbnRhbE1ldGhv
ZDIKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJn
dW1lbnQoMSkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGlmICghb2Jq
QXJnKQorICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhzdGF0ZSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKFdlYkNvcmU6OlRlc3RTdXBwbGVtZW50
YWw6OnN1cHBsZW1lbnRhbE1ldGhvZDIoaW1wbCwgKmNvbnRleHQsIHN0ckFyZywgKm9iakFyZywg
ZWMpKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmluZGV4
IDQwMTJiZTUxMjFhZmI4NGE3NThkMWI3NGJmYTdmMjM2YWRkODFhMzkuLjNmZjNlNjY3NmExMjhj
NjVjNDZiZDNhMjIzNWUyY2JmZGY4NjFjNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmNwcApAQCAtMTYxLDcgKzE2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yVGVzdEF0dHJpYnV0ZVJXQ3VzdG9tKEV4ZWNTdGF0ZSogc3Rh
dGUsCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KQogewogICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKiBkb21PYmplY3Qg
PSBqc0R5bmFtaWNDYXN0PEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yUHJvdG90eXBlKj4oSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmICghZG9tT2JqZWN0KQorICAgIGlmIChV
TkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3I6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5k
ZXggY2Y1MDAyYTE5OTgwMTYwNDE0OThhZTQ4NjBmOGFjMTZhZWQ4ZjUxNy4uMWMwZjhiZWNiZGEx
MWQ4MGI1YzdhZTFmYWYzODE5MjA4ZjVmZDdhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6ZGVzdHJveShKU0M6OkpTQ2VsbCogY2VsbCkKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUq
IHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFt
aWNDYXN0PEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGUqPihKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKCFkb21PYmplY3QpCisgICAgaWYgKFVOTElLRUxZ
KCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpn
ZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwog
fQpAQCAtMTU4LDcgKzE1OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kCiAgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFy
Z3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBj
cmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwotICAgIGlmICghc3RhdGUtPmFy
Z3VtZW50KDApLmlzRnVuY3Rpb24oKSkKKyAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVu
dCgwKS5pc0Z1bmN0aW9uKCkpKQogICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1
bmN0aW9uRXJyb3IoKnN0YXRlLCAwLCAibGlzdGVuZXIiLCAiVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIiLCAibWV0aG9kIik7CiAgICAgUmVmUHRyPE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+IGxp
c3RlbmVyID0gSlNNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAg
IGltcGwubWV0aG9kKFdURk1vdmUobGlzdGVuZXIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0
cnVjdG9yLmNwcAppbmRleCA0OWJkMTc3Y2Q2MGI3ZWEwMDgyNmU4NGM2MzQxOGEwZDRmZTRiYzBj
Li4wODg3NWU3YjRmYTBlN2IyMDlhZWNiOTBhMWZmMDg2ZTgwNWNkMWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC05Niw3ICs5Niw3IEBAIHRlbXBsYXRlPD4gRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25z
dHJ1Y3Rvcjo6CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgUmVmUHRyPFRl
c3ROYW1lZENvbnN0cnVjdG9yPiBvYmplY3QgPSBUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Y3JlYXRl
Rm9ySlNDb25zdHJ1Y3RvcigqY2FzdGVkVGhpcy0+ZG9jdW1lbnQoKSwgc3RyMSwgc3RyMiwgc3Ry
MywgZWMpOwotICAgIGlmIChlYykgeworICAgIGlmIChVTkxJS0VMWShlYykpIHsKICAgICAgICAg
c2V0RE9NRXhjZXB0aW9uKHN0YXRlLCBlYyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZSgpKTsKICAgICB9CkBAIC0xNTksNyArMTU5LDcgQEAgdm9pZCBKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yOjpkZXN0cm95KEpTQzo6SlNDZWxsKiBjZWxsKQogRW5jb2RlZEpTVmFsdWUg
anNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3JQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNUZXN0TmFtZWRD
b25zdHJ1Y3RvclByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBp
ZiAoIWRvbU9iamVjdCkKKyAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21P
YmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggNTUyZjcxN2FlOGUx
OTcxOThmYTU2MzRmNDE3MWU5YTg2NGIxYTVjNy4uZDA2M2M3OWMyMmM4MmEwNTcxZmNkYWE1MWQ3
MDBiNWM1N2VlNThmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5vZGVOYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVyCiBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROb2RlQ29uc3RydWN0b3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNUZXN0Tm9kZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rl
c3ROb2RlUHJvdG90eXBlKj4oSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwotICAgIGlmICgh
ZG9tT2JqZWN0KQorICAgIGlmIChVTkxJS0VMWSghZG9tT2JqZWN0KSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNU
ZXN0Tm9kZTo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAppbmRleCA4YzI5
YzRiNjg3ZWJkNzg1YzFhZDM2NzY2ZDc2ZTBkOWMzMzY1ZTVlLi43MDYzMjk2NWE5NDMyODEzMmE4
NzcyZTkzOGQ4ODY4NWIzZmE3ZjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMu
Y3BwCkBAIC0zMjYsNyArMzI2LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY05vbmRldGVybWluaXN0aWNTZXR0ZXJFeGNlcHRpb25BdHRyKEV4ZWNTdGEKIEVuY29kZWRK
U1ZhbHVlIGpzVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RO
b25kZXRlcm1pbmlzdGljUHJvdG90eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVz
dE5vbmRldGVybWluaXN0aWNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
Ci0gICAgaWYgKCFkb21PYmplY3QpCisgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0o
KSwgZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA5Zjg0ZmM2
OGExYTBjNDMyYzAzZTM3NDk2ZWM3NzAzYWM0Y2ZhZmQ5Li42YzgwZjc0MDZkNWQ1MzM4ZjQ2ZDIz
NTM2M2I1N2U3MTdiNWI3NTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtNTI3LDEwICs1MjcsMTAgQEAgdGVt
cGxhdGU8PiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE9iakNvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3QoRXhlY1N0YXQKICAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNDYXN0PEpTVGVz
dE9iakNvbnN0cnVjdG9yKj4oc3RhdGUtPmNhbGxlZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0
YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwotICAgIGlmICghc3Rh
dGUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCisgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJn
dW1lbnQoMCkuaXNPYmplY3QoKSkpCiAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJl
RnVuY3Rpb25FcnJvcigqc3RhdGUsIDAsICJ0ZXN0Q2FsbGJhY2siLCAiVGVzdE9iaiIsIG51bGxw
dHIpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IHRlc3RDYWxsYmFjayA9IEpTVGVzdENhbGxi
YWNrOjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwotICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDEpLmlzRnVu
Y3Rpb24oKSkKKyAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVudCgxKS5pc0Z1bmN0aW9u
KCkpKQogICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0
YXRlLCAxLCAidGVzdENhbGxiYWNrRnVuY3Rpb24iLCAiVGVzdE9iaiIsIG51bGxwdHIpOwogICAg
IFJlZlB0cjxUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gdGVzdENhbGxiYWNrRnVuY3Rpb24gPSBKU1Rl
c3RDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDEpKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIFJlZlB0cjxUZXN0T2Jq
PiBvYmplY3QgPSBUZXN0T2JqOjpjcmVhdGUoKnRlc3RDYWxsYmFjaywgKnRlc3RDYWxsYmFja0Z1
bmN0aW9uKTsKQEAgLTg3OCw3ICs4NzgsNyBAQCBib29sIEpTVGVzdE9iajo6Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0YXRlLCB1bgogewog
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T2JqKj4ob2JqZWN0KTsKICAgICBB
U1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgaWYgKGlu
ZGV4IDw9IE1BWF9BUlJBWV9JTkRFWCkgeworICAgIGlmIChMSUtFTFkoaW5kZXggPD0gTUFYX0FS
UkFZX0lOREVYKSkgewogICAgICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gRG9udERlbGV0ZSB8
IFJlYWRPbmx5OwogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIGF0dHJpYnV0ZXMs
IGpzU3RyaW5nT3JVbmRlZmluZWQoc3RhdGUsIHRoaXNPYmplY3QtPndyYXBwZWQoKS5pdGVtKGlu
ZGV4KSkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk3MSw3ICs5NzEsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpUZXN0U3ViT2JqRW5hYmxlZEJ5U2V0dGluZ0NvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsCiAgICAgaWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgewogICAgICAg
ICByZXR1cm4gdGhyb3dHZXR0ZXJUeXBlRXJyb3IoKnN0YXRlLCAiVGVzdE9iaiIsICJUZXN0U3Vi
T2JqRW5hYmxlZEJ5U2V0dGluZyIpOwogICAgIH0KLSAgICBpZiAoIWNhc3RlZFRoaXMtPndyYXBw
ZWQoKS5mcmFtZSgpKQorICAgIGlmIChVTkxJS0VMWSghY2FzdGVkVGhpcy0+d3JhcHBlZCgpLmZy
YW1lKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwog
ICAgIFNldHRpbmdzJiBzZXR0aW5ncyA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKS5mcmFtZSgpLT5z
ZXR0aW5ncygpOwogICAgIGlmICghc2V0dGluZ3MudGVzdFNldHRpbmdFbmFibGVkKCkpCkBAIC0y
MTg1LDcgKzIxODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQdXRGb3J3YXJkc051bGxh
YmxlQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKUwogRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNUZXN0T2JqUHJvdG90eXBlKiBkb21PYmpl
Y3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE9ialByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0
aGlzVmFsdWUpKTsKLSAgICBpZiAoIWRvbU9iamVjdCkKKyAgICBpZiAoVU5MSUtFTFkoIWRvbU9i
amVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE9iajo6Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCks
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKIH0KQEAgLTM0MTcsNyArMzQxNyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFi
bGVkQXRSdW50aW1lT3BlcmF0aW9uCiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24yKHN0YXRlKTsKICNlbmRpZgogCi0gICAg
aWYgKGFyZ3NDb3VudCA8IDEpCisgICAgaWYgKFVOTElLRUxZKGFyZ3NDb3VudCA8IDEpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihzdGF0ZSkpOwogICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKIH0KQEAg
LTM0NTMsNyArMzQ1Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25Wb2lkTWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiAgICAgVGVzdE9iaiog
b2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDIpKTsKICAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpZiAoIW9iakFyZykKKyAgICBpZiAoVU5M
SUtFTFkoIW9iakFyZykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsK
ICAgICBpbXBsLnZvaWRNZXRob2RXaXRoQXJncyhsb25nQXJnLCBzdHJBcmcsICpvYmpBcmcpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zNDkwLDcgKzM0
OTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQnl0ZU1ldGhvZFdpdGhBcmdzKEV4ZWNTdAogICAgIFRlc3RPYmoqIG9iakFyZyA9IEpT
VGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgyKSk7CiAgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7Ci0gICAgaWYgKCFvYmpBcmcpCisgICAgaWYgKFVOTElLRUxZKCFvYmpB
cmcpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLmJ5dGVNZXRob2RXaXRoQXJncyhieXRlQXJnLCBzdHJB
cmcsICpvYmpBcmcpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0z
NTI3LDcgKzM1MjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uT2N0ZXRNZXRob2RXaXRoQXJncyhFeGVjUwogICAgIFRlc3RPYmoqIG9i
akFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgyKSk7CiAgICAgaWYg
KFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaWYgKCFvYmpBcmcpCisgICAgaWYgKFVOTElL
RUxZKCFvYmpBcmcpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAg
ICAgSlNWYWx1ZSByZXN1bHQgPSBqc051bWJlcihpbXBsLm9jdGV0TWV0aG9kV2l0aEFyZ3Mob2N0
ZXRBcmcsIHN0ckFyZywgKm9iakFyZykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKQEAgLTM1NjQsNyArMzU2NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Mb25nTWV0aG9kV2l0aEFyZ3MoRXhlY1N0CiAgICAg
VGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDIp
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpZiAoIW9iakFyZykKKyAg
ICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTnVtYmVyKGltcGwubG9uZ01ldGhvZFdp
dGhBcmdzKGxvbmdBcmcsIHN0ckFyZywgKm9iakFyZykpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKQEAgLTM2MDEsNyArMzYwMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PYmpNZXRob2RXaXRoQXJncyhFeGVj
U3RhCiAgICAgVGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFy
Z3VtZW50KDIpKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpZiAoIW9i
akFyZykKKyAgICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKHN0YXRlKTsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoc3RhdGUsIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLm9iak1ldGhvZFdpdGhBcmdz
KGxvbmdBcmcsIHN0ckFyZywgKm9iakFyZykpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7CkBAIC0zNzY1LDcgKzM3NjUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJncwog
ICAgIFRlc3RPYmoqIG9iakFyZyA9IEpTVGVzdE9iajo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVu
dCgxKSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaWYgKCFvYmpBcmcp
CisgICAgaWYgKFVOTElLRUxZKCFvYmpBcmcpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihzdGF0ZSk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTKHN0YXRlLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC5tZXRob2RUaGF0UmVxdWlyZXNBbGxB
cmdzQW5kVGhyb3dzKHN0ckFyZywgKm9iakFyZywgZWMpKSk7CiAKQEAgLTQ0ODcsNyArNDQ4Nyw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoQ2FsbGJhY2tBcmcoRXhlCiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOwotICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzT2JqZWN0
KCkpCisgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkpCiAg
ICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIDAs
ICJjYWxsYmFjayIsICJUZXN0T2JqIiwgIm1ldGhvZFdpdGhDYWxsYmFja0FyZyIpOwogICAgIFJl
ZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09i
amVjdChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSk7CiAgICAgaW1wbC5tZXRob2RXaXRoQ2FsbGJhY2tBcmcoV1RGTW92ZShjYWxsYmFjaykp
OwpAQCAtNDUwNyw3ICs0NTA3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0EKICAgICBpbnQg
bm9uQ2FsbGJhY2sgPSB0b0ludDMyKHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMCksIE5vcm1hbENv
bnZlcnNpb24pOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGlmICghc3Rh
dGUtPmFyZ3VtZW50KDEpLmlzT2JqZWN0KCkpCisgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJn
dW1lbnQoMSkuaXNPYmplY3QoKSkpCiAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50TXVzdEJl
RnVuY3Rpb25FcnJvcigqc3RhdGUsIDEsICJjYWxsYmFjayIsICJUZXN0T2JqIiwgIm1ldGhvZFdp
dGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnIik7CiAgICAgUmVmUHRyPFRlc3RDYWxsYmFj
az4gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KHN0YXRlLT51bmNo
ZWNrZWRBcmd1bWVudCgxKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBs
Lm1ldGhvZFdpdGhOb25DYWxsYmFja0FyZ0FuZENhbGxiYWNrQXJnKG5vbkNhbGxiYWNrLCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CkBAIC00NTQyLDcgKzQ1NDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxiYWNrRnVu
Y3RpbwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgaWYgKFVO
TElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKLSAg
ICBpZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCisgICAgaWYgKFVOTElLRUxZ
KCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNGdW5jdGlvbigpKSkKICAgICAgICAgcmV0dXJuIHRocm93
QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RP
YmoiLCAibWV0aG9kV2l0aENhbGxiYWNrRnVuY3Rpb25BcmciKTsKICAgICBSZWZQdHI8VGVzdENh
bGxiYWNrRnVuY3Rpb24+IGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRl
KGFzT2JqZWN0KHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2Jh
bE9iamVjdCgpKTsKICAgICBpbXBsLm1ldGhvZFdpdGhDYWxsYmFja0Z1bmN0aW9uQXJnKFdURk1v
dmUoY2FsbGJhY2spKTsKQEAgLTQ1NjIsNyArNDU2Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoTm9uQ2FsbGJhY2tB
cmdBCiAgICAgaW50IG5vbkNhbGxiYWNrID0gdG9JbnQzMihzdGF0ZSwgc3RhdGUtPmFyZ3VtZW50
KDApLCBOb3JtYWxDb252ZXJzaW9uKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2Vw
dGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
LSAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgxKS5pc0Z1bmN0aW9uKCkpCisgICAgaWYgKFVOTElL
RUxZKCFzdGF0ZS0+YXJndW1lbnQoMSkuaXNGdW5jdGlvbigpKSkKICAgICAgICAgcmV0dXJuIHRo
cm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVycm9yKCpzdGF0ZSwgMSwgImNhbGxiYWNrIiwgIlRl
c3RPYmoiLCAibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyIp
OwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gY2FsbGJhY2sgPSBKU1Rlc3RDYWxs
YmFja0Z1bmN0aW9uOjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDEp
KSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGltcGwubWV0aG9kV2l0aE5vbkNh
bGxiYWNrQXJnQW5kQ2FsbGJhY2tGdW5jdGlvbkFyZyhub25DYWxsYmFjaywgV1RGTW92ZShjYWxs
YmFjaykpOwpAQCAtNDYwMyw3ICs0NjAzLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWMKIHsK
ICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQogICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihz
dGF0ZSkpOwotICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCisgICAgaWYg
KFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkpCiAgICAgICAgIHJldHVy
biB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcigqc3RhdGUsIDAsICJjYWxsYmFjayIs
ICJUZXN0T2JqIiwgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyIpOwogICAgIFJlZlB0cjxU
ZXN0Q2FsbGJhY2s+IGNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNUZXN0
Q2FsbGJhY2s+KHN0YXRlLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihzdGF0ZS0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBUZXN0
T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoV1RGTW92ZShjYWxsYmFjaykpOwpAQCAt
NDczOSw3ICs0NzM5LDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1KEV4ZWNTdGEKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+YXJndW1l
bnRDb3VudCgpIDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7Ci0gICAgaWYgKCFzdGF0ZS0+YXJndW1l
bnQoMCkuaXNPYmplY3QoKSkKKyAgICBpZiAoVU5MSUtFTFkoIXN0YXRlLT5hcmd1bWVudCgwKS5p
c09iamVjdCgpKSkKICAgICAgICAgcmV0dXJuIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlvbkVy
cm9yKCpzdGF0ZSwgMCwgImNhbGxiYWNrIiwgIlRlc3RPYmoiLCAib3ZlcmxvYWRlZE1ldGhvZCIp
OwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNy
ZWF0ZShhc09iamVjdChzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpLCBjYXN0ZWRUaGlzLT5n
bG9iYWxPYmplY3QoKSk7CiAgICAgaW1wbC5vdmVybG9hZGVkTWV0aG9kKFdURk1vdmUoY2FsbGJh
Y2spKTsKQEAgLTQ3OTMsNyArNDc5Myw3IEBAIHN0YXRpYyBpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kOChFeGVjU3RhCiAgICAg
VGVzdE9iaiogb2JqQXJnID0gSlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDAp
KTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpZiAoIW9iakFyZykKKyAg
ICBpZiAoVU5MSUtFTFkoIW9iakFyZykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKICAgICBpbXBsLm92ZXJsb2FkZWRNZXRob2QoKm9iakFyZyk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ4OTcsNyArNDg5Nyw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25PdmVy
bG9hZGVkTWV0aG9kKEV4ZWNTdGF0CiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk92ZXJsb2FkZWRNZXRob2QxMShzdGF0ZSk7CiAgICAgaWYgKCkKICAgICAgICAgcmV0
dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEyKHN0YXRlKTsK
LSAgICBpZiAoYXJnc0NvdW50IDwgMSkKKyAgICBpZiAoVU5MSUtFTFkoYXJnc0NvdW50IDwgMSkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwog
fQpAQCAtNDk1MSw3ICs0OTUxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW8KICAgICAgICAg
cmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZFdpdGhPcHRp
b25hbFBhcmFtZXRlcjEoc3RhdGUpOwogICAgIGlmICgoYXJnc0NvdW50ID09IDEgJiYgKGFyZzAu
aXNOdWxsKCkgfHwgKGFyZzAuaXNPYmplY3QoKSAmJiBhc09iamVjdChhcmcwKS0+aW5oZXJpdHMo
SlNUZXN0T2JqOjppbmZvKCkpKSkpIHx8IChhcmdzQ291bnQgPT0gMiAmJiAoYXJnMC5pc051bGwo
KSB8fCAoYXJnMC5pc09iamVjdCgpICYmIGFzT2JqZWN0KGFyZzApLT5pbmhlcml0cyhKU1Rlc3RP
Ymo6OmluZm8oKSkpKSkpCiAgICAgICAgIHJldHVybiBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk92ZXJsb2FkZWRNZXRob2RXaXRoT3B0aW9uYWxQYXJhbWV0ZXIyKHN0YXRlKTsKLSAgICBpZiAo
YXJnc0NvdW50IDwgMSkKKyAgICBpZiAoVU5MSUtFTFkoYXJnc0NvdW50IDwgMSkpCiAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogfQpAQCAtNTAy
MCw3ICs1MDIwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25z
dHJ1Y3RvckZ1bmN0aW9uT3ZlcmxvYWRlZE1ldGhvZDEoRXhlY1MKICAgICAgICAgcmV0dXJuIGpz
VGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25PdmVybG9hZGVkTWV0aG9kMTIoc3RhdGUpOwogI2Vu
ZGlmCiAKLSAgICBpZiAoYXJnc0NvdW50IDwgMSkKKyAgICBpZiAoVU5MSUtFTFkoYXJnc0NvdW50
IDwgMSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3Rh
dGUpOwogfQpAQCAtNTE5Miw3ICs1MTkyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkNvbnZlcnQxKEV4ZWNTdGF0ZSogc3RhdGUKICAg
ICBUZXN0Tm9kZSogdmFsdWUgPSBKU1Rlc3ROb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50
KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpZiAoIXZhbHVlKQor
ICAgIGlmIChVTkxJS0VMWSghdmFsdWUpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihzdGF0ZSk7CiAgICAgaW1wbC5jb252ZXJ0MSgqdmFsdWUpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01MzIyLDEyICs1MzIyLDEyIEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25TdHJpY3RGdW5j
dGlvbldpdGhTZXF1ZW5jCiAgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkg
PCAyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlTm90RW5vdWdo
QXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBp
ZiAoIXN0YXRlLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFzdGF0ZS0+YXJn
dW1lbnQoMCkuaW5oZXJpdHMoSlNUZXN0T2JqOjppbmZvKCkpKQorICAgIGlmIChVTkxJS0VMWSgh
c3RhdGUtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIXN0YXRlLT5hcmd1bWVu
dCgwKS5pbmhlcml0cyhKU1Rlc3RPYmo6OmluZm8oKSkpKQogICAgICAgICByZXR1cm4gdGhyb3dB
cmd1bWVudFR5cGVFcnJvcigqc3RhdGUsIDAsICJvYmpBcmciLCAiVGVzdE9iaiIsICJzdHJpY3RG
dW5jdGlvbldpdGhTZXF1ZW5jZSIsICJUZXN0T2JqIik7CiAgICAgVGVzdE9iaiogb2JqQXJnID0g
SlNUZXN0T2JqOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtF
TFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpZiAoIW9iakFyZykKKyAgICBpZiAoVU5MSUtFTFkoIW9i
akFyZykpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICBWZWN0
b3I8dW5zaWduZWQ+IGEgPSB0b05hdGl2ZUFycmF5PHVuc2lnbmVkPihzdGF0ZSwgc3RhdGUtPmFy
Z3VtZW50KDEpKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKQEAg
LTUzNDksMTIgKzUzNDksMTIgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblN0cmljdEZ1bmN0aW9uV2l0aEFycmF5KEUKICAgICBpZiAoVU5M
SUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDIpKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKHN0YXRlLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihzdGF0ZSkpOwogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGlmICghc3RhdGUtPmFyZ3VtZW50KDApLmlzVW5k
ZWZpbmVkT3JOdWxsKCkgJiYgIXN0YXRlLT5hcmd1bWVudCgwKS5pbmhlcml0cyhKU1Rlc3RPYmo6
OmluZm8oKSkpCisgICAgaWYgKFVOTElLRUxZKCFzdGF0ZS0+YXJndW1lbnQoMCkuaXNVbmRlZmlu
ZWRPck51bGwoKSAmJiAhc3RhdGUtPmFyZ3VtZW50KDApLmluaGVyaXRzKEpTVGVzdE9iajo6aW5m
bygpKSkpCiAgICAgICAgIHJldHVybiB0aHJvd0FyZ3VtZW50VHlwZUVycm9yKCpzdGF0ZSwgMCwg
Im9iakFyZyIsICJUZXN0T2JqIiwgInN0cmljdEZ1bmN0aW9uV2l0aEFycmF5IiwgIlRlc3RPYmoi
KTsKICAgICBUZXN0T2JqKiBvYmpBcmcgPSBKU1Rlc3RPYmo6OnRvV3JhcHBlZChzdGF0ZS0+YXJn
dW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGlmICghb2Jq
QXJnKQorICAgIGlmIChVTkxJS0VMWSghb2JqQXJnKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3Ioc3RhdGUpOwogICAgIFZlY3RvcjxpbnQ+IGFycmF5ID0gdG9OYXRpdmVBcnJheTxp
bnQ+KHN0YXRlLCBzdGF0ZS0+YXJndW1lbnQoMSkpOwogICAgIGlmIChVTkxJS0VMWShzdGF0ZS0+
aGFkRXhjZXB0aW9uKCkpKQpAQCAtNTQxOCw3ICs1NDE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZhcmlhZGljTm9kZU1ldGhvZChF
eGVjU3QKICAgICBOb2RlKiBoZWFkID0gSlNOb2RlOjp0b1dyYXBwZWQoc3RhdGUtPmFyZ3VtZW50
KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpZiAoIWhlYWQpCisg
ICAgaWYgKFVOTElLRUxZKCFoZWFkKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
c3RhdGUpOwogICAgIFZlY3RvcjxOb2RlKj4gdGFpbDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAx
LCBjb3VudCA9IHN0YXRlLT5hcmd1bWVudENvdW50KCk7IGkgPCBjb3VudDsgKytpKSB7CkBAIC01
NDg3LDcgKzU0ODcsNyBAQCBzdGF0aWMgaW5saW5lIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialBy
b3RvdHlwZUZ1bmN0aW9uVGVzdFByb21pc2VGdW5jdGlvbldpdGhGbAogICAgIGZsb2F0IGEgPSBz
dGF0ZS0+YXJndW1lbnQoMCkudG9GbG9hdChzdGF0ZSk7CiAgICAgaWYgKFVOTElLRUxZKHN0YXRl
LT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7Ci0gICAgaWYgKCFzdGQ6OmlzZmluaXRlKGEpKQorICAgIGlmIChVTkxJS0VMWSgh
c3RkOjppc2Zpbml0ZShhKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
KTsKICAgICBpbXBsLnRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudChhLCBEZWZl
cnJlZFdyYXBwZXIoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBwcm9taXNlRGVm
ZXJyZWQpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAt
NTU1Myw3ICs1NTUzLDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmMKICAgICBmbG9hdCBhID0g
c3RhdGUtPmFyZ3VtZW50KDApLnRvRmxvYXQoc3RhdGUpOwogICAgIGlmIChVTkxJS0VMWShzdGF0
ZS0+aGFkRXhjZXB0aW9uKCkpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwotICAgIGlmICghc3RkOjppc2Zpbml0ZShhKSkKKyAgICBpZiAoVU5MSUtFTFko
IXN0ZDo6aXNmaW5pdGUoYSkpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0
ZSk7CiAgICAgaW1wbC50ZXN0UHJvbWlzZU92ZXJsb2FkZWRGdW5jdGlvbihhLCBEZWZlcnJlZFdy
YXBwZXIoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBwcm9taXNlRGVmZXJyZWQp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNTU3OCw3
ICs1NTc4LDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmMKICAgICBGZXRjaFJlcXVlc3QqIHJl
cXVlc3QgPSBKU0ZldGNoUmVxdWVzdDo6dG9XcmFwcGVkKHN0YXRlLT5hcmd1bWVudCgwKSk7CiAg
ICAgaWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaWYgKCFyZXF1ZXN0KQorICAgIGlm
IChVTkxJS0VMWSghcmVxdWVzdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0
YXRlKTsKICAgICBpbXBsLnRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmN0aW9uKCpyZXF1ZXN0LCBE
ZWZlcnJlZFdyYXBwZXIoc3RhdGUsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBwcm9taXNl
RGVmZXJyZWQpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpA
QCAtNTU5Miw3ICs1NTkyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvblRlc3RQcm9taXNlT3ZlcmxvYWRlZEZ1bmMKICAgICBKU1ZhbHVl
IGFyZzAoc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoKGFyZ3NDb3VudCA9PSAxICYmICgo
YXJnMC5pc09iamVjdCgpICYmIGFzT2JqZWN0KGFyZzApLT5pbmhlcml0cyhKU0ZldGNoUmVxdWVz
dDo6aW5mbygpKSkpKSkKICAgICAgICAgcmV0dXJuIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
VGVzdFByb21pc2VPdmVybG9hZGVkRnVuY3Rpb24yKHN0YXRlKTsKLSAgICBpZiAoYXJnc0NvdW50
IDwgMSkKKyAgICBpZiAoVU5MSUtFTFkoYXJnc0NvdW50IDwgMSkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0YXRlKSk7
CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IDRlNjliNWZiYTc0ZTRjYzE4NTQ2
ZmI5ODdhY2VhYjA1NmU4ODk5ZjQuLmJjNjM1OGJiY2EyYWZhZDIzM2NiNmM3YTQ3NGJjN2RhYTVh
M2I0ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAK
QEAgLTczLDcgKzczLDcgQEAgc3RhdGljIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzMShFeGVjU3RhdGUqIHMKICAgICBBcnJheUJ1ZmZl
ciogYXJyYXlCdWZmZXIgPSB0b0FycmF5QnVmZmVyKHN0YXRlLT5hcmd1bWVudCgwKSk7CiAgICAg
aWYgKFVOTElLRUxZKHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaWYgKCFhcnJheUJ1ZmZlcikKKyAgICBp
ZiAoVU5MSUtFTFkoIWFycmF5QnVmZmVyKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3Ioc3RhdGUpOwogICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gb2JqZWN0
ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZSgqYXJyYXlCdWZmZXIpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhzdGF0ZSwgY2FzdGVkVGhpcy0+
Z2xvYmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKQEAgLTk5LDcgKzk5LDcgQEAgc3RhdGlj
IGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjb25zdHJ1Y3RKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzMyhFeGVjU3RhdGUqIHMKICAgICBCbG9iKiBibG9iID0gSlNCbG9iOjp0b1dyYXBwZWQoc3Rh
dGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhhZEV4Y2VwdGlvbigp
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBp
ZiAoIWJsb2IpCisgICAgaWYgKFVOTElLRUxZKCFibG9iKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3Ioc3RhdGUpOwogICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cz4gb2JqZWN0ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZSgqYmxvYik7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKHN0YXRlLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSwgb2JqZWN0LmdldCgpKSkpOwpAQCAtMTQxLDcgKzE0MSw3IEBAIHRl
bXBsYXRlPD4gRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3I6CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzNChzdGF0ZSk7CiAgICAgaWYgKCkKICAgICAgICAgcmV0dXJuIGNv
bnN0cnVjdEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM1KHN0YXRlKTsKLSAgICBpZiAoYXJn
c0NvdW50IDwgMSkKKyAgICBpZiAoVU5MSUtFTFkoYXJnc0NvdW50IDwgMSkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKHN0
YXRlKSk7CiAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Ioc3RhdGUpOwogfQpAQCAtMjAyLDcg
KzIwMiw3IEBAIHZvaWQgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6ZGVzdHJveShKU0M6
OkpTQ2VsbCogY2VsbCkKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90
eXBlKiBkb21PYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNQcm90b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKCFkb21P
YmplY3QpCisgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihzdGF0ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2Jq
ZWN0LT5nbG9iYWxPYmplY3QoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMu
Y3BwCmluZGV4IDI5OWVlNDFlMDhiZDU3ZDFhNWMzMTcyN2ViMjE2MTc3ZDg1ODFiMjEuLjEzYjc5
ODI4NDZjNjNhYTkwZjA4MWI1OTMxMzNlYWYzODQyZWRmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cnJpZGVCdWlsdGlucy5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBib29sIEpTVGVzdE92ZXJyaWRl
QnVpbHRpbnM6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YQogRW5jb2RlZEpTVmFsdWUganNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQog
ewogICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHlu
YW1pY0Nhc3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoIWRvbU9iamVjdCkKKyAgICBpZiAoVU5MSUtFTFkoIWRv
bU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmdldENvbnN0cnVj
dG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmlu
ZGV4IDk3NzIyNzk4NjdiMWMyM2UwZDhlMjM1NDYwZWIwYWU4OWMwYzEwYjEuLmM3YzgwYTAwOTkx
NmRlYjI0OGE1YzllOWIzNGVmMWMyODAzNjgyMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0yMTgsNyArMjE4LDcg
QEAgRW5jb2RlZEpTVmFsdWUganNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2Fj
aGVkUmVhZG9ubHlWYWx1ZShFeGVjU3RhdGUKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAgIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2Fz
dDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VQcm90b3R5cGUqPihKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKCFkb21PYmplY3QpCisgICAgaWYgKFVOTElL
RUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihzdGF0ZSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9i
amVjdCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAppbmRleCA4MzE2MmU0ZmZlNzQxODY0NWY1
NGViMjg4YjVlMjk2YmNmZmNhMjYwLi42MzZjZDhjMmYwNmNjMTMzNGQ1NTJiM2FjNjZkNGEzMGE2
NTkxNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB0ZW1wbGF0
ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0KEV4ZQogICAgIFN0cmluZyBoZWxsbyA9IHN0YXRlLT5hcmd1bWVudCgwKS50
b1N0cmluZyhzdGF0ZSktPnZhbHVlKHN0YXRlKTsKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmhh
ZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKLSAgICBpZiAoIXN0YXRlLT5hcmd1bWVudCgxKS5pc09iamVjdCgpKQorICAgIGlmIChV
TkxJS0VMWSghc3RhdGUtPmFyZ3VtZW50KDEpLmlzT2JqZWN0KCkpKQogICAgICAgICByZXR1cm4g
dGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IoKnN0YXRlLCAxLCAidGVzdENhbGxiYWNr
IiwgIlRlc3RUeXBlZGVmcyIsIG51bGxwdHIpOwogICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IHRl
c3RDYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3Qoc3RhdGUtPnVuY2hl
Y2tlZEFyZ3VtZW50KDEpKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIFJlZlB0
cjxUZXN0VHlwZWRlZnM+IG9iamVjdCA9IFRlc3RUeXBlZGVmczo6Y3JlYXRlKGhlbGxvLCAqdGVz
dENhbGxiYWNrKTsKQEAgLTMyNyw3ICszMjcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RUeXBl
ZGVmc1N0cmluZ0F0dHJXaXRoU2V0dGVyRXhjZXB0aW9uKEV4ZWNTdGF0ZSogc3RhdGUsIEVuYwog
RW5jb2RlZEpTVmFsdWUganNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKIHsKICAgICBKU1Rlc3RU
eXBlZGVmc1Byb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RUeXBlZGVm
c1Byb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoIWRvbU9i
amVjdCkKKyAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVGVzdFR5
cGVkZWZzOjpnZXRDb25zdHJ1Y3RvcihzdGF0ZS0+dm0oKSwgZG9tT2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTYXR0cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKaW5kZXggNDdmODY2YmYwZmU2YzZhNjg1MDVkODRiMDU0
Mjc2NTgxNWJlZjgyZS4uY2ZmMjBhNDRjYWZkYTRhOTIwZTNhNGQzMTcyM2MxYzgxMWU0Y2UxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0
cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNhdHRyaWJ1dGUuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgRW5jb2RlZEpTVmFsdWUganNhdHRy
aWJ1dGVSZWFkb25seShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFAKIEVuY29kZWRKU1ZhbHVlIGpzYXR0cmlidXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNhdHRy
aWJ1dGVQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNhdHRyaWJ1dGVQcm90
b3R5cGUqPihKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7Ci0gICAgaWYgKCFkb21PYmplY3Qp
CisgICAgaWYgKFVOTElLRUxZKCFkb21PYmplY3QpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihzdGF0ZSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU2F0dHJpYnV0ZTo6
Z2V0Q29uc3RydWN0b3Ioc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U3JlYWRvbmx5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U3JlYWRvbmx5LmNwcAppbmRleCBmODMxZWFiMjM0NTRmNTE3YWRmZGY0Mjk3NjMzN2UxMzY3NGY1
YzQxLi45ZDljNTYyMzY0MzIwMTVkODU2ZTM4ODkxNWI2NTIxZTJjZTU2MTMwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHku
Y3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBKU3JlYWRvbmx5OjpkZXN0cm95KEpTQzo6SlND
ZWxsKiBjZWxsKQogRW5jb2RlZEpTVmFsdWUganNyZWFkb25seUNvbnN0cnVjdG9yKEV4ZWNTdGF0
ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQogewogICAg
IEpTcmVhZG9ubHlQcm90b3R5cGUqIGRvbU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNyZWFkb25s
eVByb3RvdHlwZSo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAgICBpZiAoIWRvbU9i
amVjdCkKKyAgICBpZiAoVU5MSUtFTFkoIWRvbU9iamVjdCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKHN0YXRlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTcmVhZG9u
bHk6OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgp
KSk7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>