<?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>149872</bug_id>
          
          <creation_ts>2015-10-07 00:38:27 -0700</creation_ts>
          <short_desc>Binding generated JS constructors should use GlobalObject references</short_desc>
          <delta_ts>2015-10-08 00:30:59 -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>WebCore JavaScript</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="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1131246</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-07 00:38:27 -0700</bug_when>
    <thetext>Following on bug 149838, generated JS constructors should manipulate GlobalObject references.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131252</commentid>
    <comment_count>1</comment_count>
      <attachid>262589</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-07 02:07:31 -0700</bug_when>
    <thetext>Created attachment 262589
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131253</commentid>
    <comment_count>2</comment_count>
      <attachid>262590</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-10-07 02:35:43 -0700</bug_when>
    <thetext>Created attachment 262590
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131254</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-07 02:38:16 -0700</bug_when>
    <thetext>Attachment 262590 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSDOMConstructor.h:45:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
Total errors found: 1 in 53 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131568</commentid>
    <comment_count>4</comment_count>
      <attachid>262590</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-08 00:30:56 -0700</bug_when>
    <thetext>Comment on attachment 262590
Patch

Clearing flags on attachment: 262590

Committed r190714: &lt;http://trac.webkit.org/changeset/190714&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131569</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-10-08 00:30:59 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262589</attachid>
            <date>2015-10-07 02:07:31 -0700</date>
            <delta_ts>2015-10-07 02:35:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149872-20151007110657.patch</filename>
            <type>text/plain</type>
            <size>165143</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNjIyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2E3M2RlZjZhOTViZTcx
YWRjMTVmOTZkM2Y0MWMyOGJlNGQwMDgwNC4uY2YwMzkzZDUwNDJjYTg4YTFlNGMxNzYzYWE1ZWVh
OWQ3NTE5ZjQzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0NCBAQAorMjAxNS0xMC0wNyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIEJpbmRp
bmcgZ2VuZXJhdGVkIEpTIGNvbnN0cnVjdG9ycyBzaG91bGQgdXNlIEdsb2JhbE9iamVjdCByZWZl
cmVuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDk4NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGVkIGJpbmRpbmcgZ2VuZXJhdG9yIHRvIGdlbmVyYXRlIEpTIERPTSBjb25zdHJ1Y3RvcnMg
Y29kZSB3aXRoIEpTRE9NR2xvYmFsT0JqZWN0IHJlZmVyZW5jZXMuCisgICAgICAgIFVwZGF0ZWQg
V2ViQ29yZSBKUyBiaW5kaW5nIGxheWVyIGFjY29yZGluZ2x5LgorCisgICAgICAgIENvdmVyZWQg
YnkgdXBkYXRlZCBiaW5kaW5nIHRlc3RzLgorCisgICAgICAgICogYmluZGluZ3MvanMvRE9NQ29u
c3RydWN0b3JXaXRoRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNvbnN0cnVjdG9y
V2l0aERvY3VtZW50OjpET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRD
YWNoZWRET01TdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVET01TdHJ1Y3R1cmUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NQ29uc3RydWN0b3JPYmplY3Q6OkRPTUNvbnN0cnVjdG9yT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNvbnN0cnVjdG9ySlNCdWlsdGluT2JqZWN0OjpET01Db25zdHJ1Y3RvckpT
QnVpbHRpbk9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRET01TdHJ1Y3R1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpnZXRET01Qcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSlNCdWlsdGlu
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQnVpbHRpbkNvbnN0
cnVjdG9yOjpKU0J1aWx0aW5Db25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERPTUNvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3c6OnRvdWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp0b3VjaExpc3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XcmFwcGVyOjpKU0RPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XcmFw
cGVyV2l0aEltcGxlbWVudGF0aW9uOjpKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OkpTSW1hZ2VDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
SW1hZ2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRh
YmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0J1
aWx0aW5SZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlSlNPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNCdWlsdGluUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
UHJpdmF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVKU09iamVjdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6Cisg
ICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJh
Y2tJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRp
b24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVj
dENvbnN0cnVjdG9yOjpKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpKU1Rlc3RBY3Rp
dmVET01PYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojpn
ZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEFjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0NvbnN0cnVjdG9y
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrQ29uc3Ry
dWN0b3I6OkpTVGVzdENhbGxiYWNrQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0Q2FsbGJhY2s6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0OjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
dXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21OYW1l
ZEdldHRlckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3I6OkpTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0
b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RFdmVudFRhcmdldENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3I6OkpTVGVzdEV2ZW50VGFyZ2V0Q29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6
OkpTVGVzdEV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0
OjpnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRhcmdldDo6
Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb25Db25zdHJ1
Y3Rvcjo6SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdEV4Y2VwdGlvbjo6SlNUZXN0RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEV4Y2VwdGlvbjo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEV4Y2VwdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3I6
OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OkpTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZTo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpKU1Rlc3RJbnRlcmZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0
cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1
Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3Ry
dWN0b3I6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
Q29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpT
VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRO
YW1lZENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OkpTVGVz
dE5vZGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGU6OkpTVGVz
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9kZTo6Z2V0Q29uc3RydWN0b3IpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmg6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY0NvbnN0cnVjdG9yOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpKU1Rl
c3ROb25kZXRlcm1pbmlzdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWlu
aXN0aWM6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYzo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iakNvbnN0cnVjdG9y
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6SlNU
ZXN0T2JqQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6SlNUZXN0
T2JqKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6Z2V0Q29uc3RydWN0b3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE9iajo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3I6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0Q29uc3RydWN0b3IpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRp
bnNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRl
QnVpbHRpbnNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6SlNUZXN0T3ZlcnJpZGVCdWlsdGlu
c0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3Zl
cnJpZGVCdWlsdGluczo6SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmNyZWF0ZSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29u
c3RydWN0b3I6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNyZWF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6SlNUZXN0
VHlwZWRlZnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBlZGVmc0Nv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBl
ZGVmczo6SlNUZXN0VHlwZWRlZnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnM6
OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0VHlwZWRlZnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzOjpjcmVhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNhdHRyaWJ1dGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTYXR0cmlidXRlQ29uc3RydWN0b3I6OkpTYXR0cmlidXRlQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNhdHRyaWJ1dGVDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNhdHRyaWJ1dGU6OkpTYXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTYXR0cmlidXRlOjpnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU2F0dHJpYnV0ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNyZWFkb25seS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5Q29uc3Ry
dWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5Q29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5Q29uc3RydWN0
b3I6OkpTcmVhZG9ubHlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTcmVhZG9u
bHk6OkpTcmVhZG9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seTo6Z2V0Q29uc3Ry
dWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5Lmg6
CisgICAgICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5OjpjcmVhdGUpOgorCiAyMDE1LTEwLTA2ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYiBJRExdICdsZW5n
dGgnIHByb3BlcnR5IGlzIHdyb25nIGZvciB2YXJpYWRpYyBvcGVyYXRpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQu
aAppbmRleCAzZTI2OTg4MmYxMmFmN2QyNzcxMDhkNTI3MTExYzUyNWZhYTVhYjExLi42ODRiNDcw
OTZlNWJhZjA1ODFkODhiYTZiZGJlNTBiNmVhMjJjOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9ET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmgKQEAgLTM2
LDE1ICszNiwxNSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgRE9NQ29uc3Ry
dWN0b3JXaXRoRG9jdW1lbnQoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudChKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ICAgICAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQog
ICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsT2JqZWN0LT52bSgpKTsKLSAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpOworICAgICAgICBCYXNlOjpmaW5pc2hDcmVh
dGlvbihnbG9iYWxPYmplY3Qudm0oKSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3Quc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpOwogICAgIH0KIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDRlNjVlZTczZTIw
M2YwM2Q4NmE5MmRjZmZlYWQyYzQwOGYzMjk4MjMuLmUxYjBiNWJhMmM4YjE4MjJiM2MzYWU3ZWY1
NmI5M2YzY2Q3ZTM2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcApAQCAtMjk1LDE3ICsyOTUsMTcgQEAgRW5jb2RlZEpTVmFsdWUgb2JqZWN0VG9TdHJp
bmdGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEoKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLT52bSgpLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCks
IG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKSk7CiB9CiAKLVN0cnVjdHVyZSogZ2V0Q2FjaGVkRE9N
U3RydWN0dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IENsYXNzSW5m
byogY2xhc3NJbmZvKQorU3RydWN0dXJlKiBnZXRDYWNoZWRET01TdHJ1Y3R1cmUoSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiB7Ci0g
ICAgSlNET01TdHJ1Y3R1cmVNYXAmIHN0cnVjdHVyZXMgPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVy
ZXMoKTsKKyAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcyA9IGdsb2JhbE9iamVjdC5z
dHJ1Y3R1cmVzKCk7CiAgICAgcmV0dXJuIHN0cnVjdHVyZXMuZ2V0KGNsYXNzSW5mbykuZ2V0KCk7
CiB9CiAKLVN0cnVjdHVyZSogY2FjaGVET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJ
bmZvKQorU3RydWN0dXJlKiBjYWNoZURPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0lu
Zm8pCiB7Ci0gICAgSlNET01TdHJ1Y3R1cmVNYXAmIHN0cnVjdHVyZXMgPSBnbG9iYWxPYmplY3Qt
PnN0cnVjdHVyZXMoKTsKKyAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcyA9IGdsb2Jh
bE9iamVjdC5zdHJ1Y3R1cmVzKCk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmVzLmNvbnRhaW5zKGNs
YXNzSW5mbykpOwotICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNldChjbGFzc0luZm8sIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1
cmUpKS5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgcmV0dXJuIHN0cnVjdHVyZXMuc2V0KGNs
YXNzSW5mbywgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4oZ2xvYmFsT2JqZWN0LnZtKCksICZnbG9i
YWxPYmplY3QsIHN0cnVjdHVyZSkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAogc3RhdGlj
IGNvbnN0IGludDMyX3Qga01heEludDMyID0gMHg3ZmZmZmZmZjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01CaW5kaW5nLmgKaW5kZXggNGY2ZjZhNmZlMjYzMjAwN2E4MDVhNjE4MDhi
NTMzNGNkNjBjZGUwYi4uOGI5YjFjYzM5OTg5MWI2ODMwZTE4Mjk1NGQ3MGY1ZGJhY2RmNDU4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTk3LDcgKzk3
LDcgQEAgcHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIERPTUNvbnN0cnVjdG9yT2Jq
ZWN0KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCisgICAgRE9NQ29uc3RydWN0b3JPYmplY3QoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICAgICAgOiBKU0RPTVdyYXBw
ZXIoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiAgICAgewogICAgIH0KQEAgLTEwOCw3ICsxMDgs
NyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwogCiBw
cm90ZWN0ZWQ6Ci0gICAgRE9NQ29uc3RydWN0b3JKU0J1aWx0aW5PYmplY3QoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBET01D
b25zdHJ1Y3RvckpTQnVpbHRpbk9iamVjdChKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgICAgICA6IERPTUNvbnN0cnVjdG9yT2Jq
ZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KSB7IH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CkBAIC0xMjAsOCArMTIw
LDggQEAgcHJpdmF0ZToKICAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1f
aW5pdGlhbGl6ZUZ1bmN0aW9uOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgSlNDOjpTdHJ1Y3R1cmUq
IGdldENhY2hlZERPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IEpTQzo6Q2xh
c3NJbmZvKik7Ci1XRUJDT1JFX0VYUE9SVCBKU0M6OlN0cnVjdHVyZSogY2FjaGVET01TdHJ1Y3R1
cmUoSlNET01HbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvKik7CitXRUJDT1JFX0VYUE9SVCBKU0M6OlN0cnVjdHVyZSogZ2V0Q2FjaGVkRE9NU3RydWN0
dXJlKEpTRE9NR2xvYmFsT2JqZWN0JiwgY29uc3QgSlNDOjpDbGFzc0luZm8qKTsKK1dFQkNPUkVf
RVhQT1JUIEpTQzo6U3RydWN0dXJlKiBjYWNoZURPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVj
dCYsIEpTQzo6U3RydWN0dXJlKiwgY29uc3QgSlNDOjpDbGFzc0luZm8qKTsKIAogaW5saW5lIEpT
RE9NR2xvYmFsT2JqZWN0KiBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKEpTQzo6
RXhlY1N0YXRlKiBleGVjKQogewpAQCAtMTMxLDI5ICsxMzEsMjkgQEAgaW5saW5lIEpTRE9NR2xv
YmFsT2JqZWN0KiBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKEpTQzo6RXhlY1N0
YXRlKiBleGUKICAgICByZXR1cm4gSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVy
Q2xhc3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZ2V0RE9NU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8dHlwZW5hbWUgV3Jh
cHBlckNsYXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIGdldERPTVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBpZiAoSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGdldENhY2hlZERPTVN0cnVjdHVyZShnbG9iYWxPYmplY3Qs
IFdyYXBwZXJDbGFzczo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKLSAgICBy
ZXR1cm4gY2FjaGVET01TdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBXcmFwcGVyQ2xhc3M6OmNyZWF0
ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBXcmFwcGVyQ2xhc3M6OmNyZWF0ZVByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0KSksIFdyYXBwZXJDbGFzczo6aW5mbygpKTsKKyAgICByZXR1cm4g
Y2FjaGVET01TdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBXcmFwcGVyQ2xhc3M6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgJmdsb2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpjcmVhdGVQcm90b3R5cGUodm0s
ICZnbG9iYWxPYmplY3QpKSwgV3JhcHBlckNsYXNzOjppbmZvKCkpOwogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZGVwcmVjYXRlZEdl
dERPTVN0cnVjdHVyZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyBGSVhNRTogVGhp
cyBmdW5jdGlvbiBpcyB3cm9uZy4gSXQgdXNlcyB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdCBmb3Ig
Y3JlYXRpbmcgdGhlIHByb3RvdHlwZSBzdHJ1Y3R1cmUuCi0gICAgcmV0dXJuIGdldERPTVN0cnVj
dHVyZTxXcmFwcGVyQ2xhc3M+KGV4ZWMtPnZtKCksIGRlcHJlY2F0ZWRHbG9iYWxPYmplY3RGb3JQ
cm90b3R5cGUoZXhlYykpOworICAgIHJldHVybiBnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNz
PihleGVjLT52bSgpLCAqZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3RvdHlwZShleGVjKSk7
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gaW5saW5lIEpTQzo6SlNPYmpl
Y3QqIGdldERPTVByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewotICAgIHJldHVybiBKU0M6OmpzQ2FzdDxKU0M6OkpTT2JqZWN0Kj4oYXNP
YmplY3QoZ2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4odm0sIEpTQzo6anNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSktPnN0b3JlZFByb3RvdHlwZSgpKSk7CisgICAg
cmV0dXJuIEpTQzo6anNDYXN0PEpTQzo6SlNPYmplY3QqPihhc09iamVjdChnZXRET01TdHJ1Y3R1
cmU8V3JhcHBlckNsYXNzPih2bSwgKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KSktPnN0b3JlZFByb3RvdHlwZSgpKSk7CiB9CiAKIHZvaWQgY2FsbEZ1bmN0aW9u
V2l0aEN1cnJlbnRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiB0aGlz
T2JqZWN0LCBKU0M6OkpTRnVuY3Rpb24mKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4g
aW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlSlNCdWlsdGluKEpTQzo6RXhlY1N0YXRl
JiBzdGF0ZSwgSlNDOjpKU0Z1bmN0aW9uJiBpbml0aWFsaXplRnVuY3Rpb24sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgSlNDOjpKU09iamVjdCogb2JqZWN0ID0gSlND
bGFzczo6Y3JlYXRlKGdldERPTVN0cnVjdHVyZTxKU0NsYXNzPihnbG9iYWxPYmplY3Qudm0oKSwg
Jmdsb2JhbE9iamVjdCksICZnbG9iYWxPYmplY3QpOworICAgIEpTQzo6SlNPYmplY3QqIG9iamVj
dCA9IEpTQ2xhc3M6OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8SlNDbGFzcz4oZ2xvYmFsT2JqZWN0
LnZtKCksIGdsb2JhbE9iamVjdCksICZnbG9iYWxPYmplY3QpOwogICAgIGNhbGxGdW5jdGlvbldp
dGhDdXJyZW50QXJndW1lbnRzKHN0YXRlLCAqb2JqZWN0LCBpbml0aWFsaXplRnVuY3Rpb24pOwog
ICAgIHJldHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShvYmplY3QpOwogfQpAQCAtMjQwLDcgKzI0
MCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+
IGlubGluZSBKU0RPTVdyYXBwZXIqIGNyZWF0ZVdyCiB7CiAgICAgQVNTRVJUKG5vZGUpOwogICAg
IEFTU0VSVCghZ2V0Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIG5vZGUpKTsK
LSAgICBXcmFwcGVyQ2xhc3MqIHdyYXBwZXIgPSBXcmFwcGVyQ2xhc3M6OmNyZWF0ZShnZXRET01T
dHJ1Y3R1cmU8V3JhcHBlckNsYXNzPihnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCks
IGdsb2JhbE9iamVjdCwgUmVmPERPTUNsYXNzPigqbm9kZSkpOworICAgIFdyYXBwZXJDbGFzcyog
d3JhcHBlciA9IFdyYXBwZXJDbGFzczo6Y3JlYXRlKGdldERPTVN0cnVjdHVyZTxXcmFwcGVyQ2xh
c3M+KGdsb2JhbE9iamVjdC0+dm0oKSwgKmdsb2JhbE9iamVjdCksIGdsb2JhbE9iamVjdCwgUmVm
PERPTUNsYXNzPigqbm9kZSkpOwogICAgIGNhY2hlV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxk
KCksIG5vZGUsIHdyYXBwZXIpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCmluZGV4IDVkNjljNTlhMDRlODI3
YTUwMzZiM2I2YjJkMWRlNTU3M2FhY2JlODAuLjI5ZDZmMzVlOWQ1NjA3ZjExMzEwN2JlNzZlNDNk
MDdkYzZlMzA5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0
cnVjdG9yLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIERFQ0xBUkVfSU5GTzsKIAog
cHJpdmF0ZToKLSAgICBKU0J1aWx0aW5Db25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KTogQmFzZShzdHJ1Y3R1cmUsICZn
bG9iYWxPYmplY3QpIHsgfQorICAgIEpTQnVpbHRpbkNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpIDogQmFzZShzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCkgeyB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6
Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZVByb3BlcnRpZXMo
SlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuaAppbmRleCA4YmNiMzE2ZGMwNzk3ZmI0NzNmOTlk
MDMyMDdmMjcwZGFkNTY0MDFkLi5lNmI1M2RiN2Q4OTgzOTM5YzM5M2Y1NjFkYTZiN2Q4NThlZmQx
NGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0
LmgKQEAgLTg4LDE0ICs4OCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKIAogICAg
IHRlbXBsYXRlPGNsYXNzIENvbnN0cnVjdG9yQ2xhc3M+Ci0gICAgaW5saW5lIEpTQzo6SlNPYmpl
Y3QqIGdldERPTUNvbnN0cnVjdG9yKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQorICAgIGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRET01Db25zdHJ1
Y3RvcihKU0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
ICAgICB7Ci0gICAgICAgIGlmIChKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNvbnN0X2Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5nZXQo
Q29uc3RydWN0b3JDbGFzczo6aW5mbygpKS5nZXQoKSkKKyAgICAgICAgaWYgKEpTQzo6SlNPYmpl
Y3QqIGNvbnN0cnVjdG9yID0gY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCY+KGdsb2JhbE9i
amVjdCkuY29uc3RydWN0b3JzKCkuZ2V0KENvbnN0cnVjdG9yQ2xhc3M6OmluZm8oKSkuZ2V0KCkp
CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7Ci0gICAgICAgIEpTQzo6SlNPYmplY3Qq
IGNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3JDbGFzczo6Y3JlYXRlKHZtLCBDb25zdHJ1Y3RvckNs
YXNzOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgY29uc3RfY2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwotICAgICAgICBBU1NFUlQoIWNv
bnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMo
KS5jb250YWlucyhDb25zdHJ1Y3RvckNsYXNzOjppbmZvKCkpKTsKKyAgICAgICAgSlNDOjpKU09i
amVjdCogY29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvckNsYXNzOjpjcmVhdGUodm0sIENvbnN0cnVj
dG9yQ2xhc3M6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVj
dCY+KGdsb2JhbE9iamVjdCksIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSksIGNvbnN0
X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QmPihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgQVNTRVJU
KCFjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Jj4oZ2xvYmFsT2JqZWN0KS5jb25zdHJ1Y3Rv
cnMoKS5jb250YWlucyhDb25zdHJ1Y3RvckNsYXNzOjppbmZvKCkpKTsKICAgICAgICAgSlNDOjpX
cml0ZUJhcnJpZXI8SlNDOjpKU09iamVjdD4gdGVtcDsKLSAgICAgICAgY29uc3RfY2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmFkZChDb25zdHJ1
Y3RvckNsYXNzOjppbmZvKCksIHRlbXApLml0ZXJhdG9yLT52YWx1ZS5zZXQodm0sIGdsb2JhbE9i
amVjdCwgY29uc3RydWN0b3IpOworICAgICAgICBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Jj4oZ2xvYmFsT2JqZWN0KS5jb25zdHJ1Y3RvcnMoKS5hZGQoQ29uc3RydWN0b3JDbGFzczo6aW5m
bygpLCB0ZW1wKS5pdGVyYXRvci0+dmFsdWUuc2V0KHZtLCAmZ2xvYmFsT2JqZWN0LCBjb25zdHJ1
Y3Rvcik7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAyNTdhOTU4
NjM5ZWRlNzdjMGJhMmExYTE2ZjQ4ZWE3OTM1MDlkZGM1Li4yMTNiOWJiMjU2MTQ4Nzk3ZWQ2NDM4
MjJiODY1NjIwM2UyMDk4Y2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCkBAIC01MDEsMTggKzUwMSwxOCBAQCBKU1ZhbHVlIEpTRE9N
V2luZG93OjpldmVudChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpTRE9NV2lu
ZG93OjppbWFnZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU0ltYWdlQ29uc3RydWN0b3I+KHN0YXRlLnZtKCksIHRoaXMpOworICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU0ltYWdlQ29uc3RydWN0b3I+KHN0YXRlLnZtKCksICp0
aGlzKTsKIH0KIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogSlNWYWx1ZSBKU0RPTVdp
bmRvdzo6dG91Y2goRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUb3VjaENvbnN0cnVjdG9yPihzdGF0ZS52bSgpLCB0aGlzKTsKKyAgICBy
ZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUb3VjaENvbnN0cnVjdG9yPihzdGF0ZS52bSgpLCAq
dGhpcyk7CiB9CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OnRvdWNoTGlzdChFeGVjU3RhdGUmIHN0
YXRlKSBjb25zdAogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1RvdWNoTGlzdENv
bnN0cnVjdG9yPihzdGF0ZS52bSgpLCB0aGlzKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8SlNUb3VjaExpc3RDb25zdHJ1Y3Rvcj4oc3RhdGUudm0oKSwgKnRoaXMpOwogfQogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKaW5kZXggMmI0Njc3
MGVhMTJmNjllZmNmOTUwNjJkNmY3ZDYzYzVhZWMwY2ZjZC4uMDUxNTNkN2RiN2U5MmYyNDFiZDNh
N2M2NjAwYjlmNjczNDcyMWUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
cmFwcGVyLmgKQEAgLTQxLDggKzQxLDggQEAgcHVibGljOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmpl
Y3QoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBKU0RP
TVdyYXBwZXIoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KSAKLSAgICAgICAgOiBCYXNlKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0
dXJlKQorICAgIEpTRE9NV3JhcHBlcihKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6OkpT
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpIAorICAgICAgICA6IEJhc2UoZ2xvYmFsT2JqZWN0
LnZtKCksIHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOwogICAgIH0KQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIH5KU0RPTVdy
YXBwZXJXaXRoSW1wbGVtZW50YXRpb24oKSB7IHN0ZDo6ZXhjaGFuZ2UobV9pbXBsLCBudWxscHRy
KS0+ZGVyZWYoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSlNET01XcmFwcGVyV2l0aEltcGxlbWVu
dGF0aW9uKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgUmVmPEltcGxlbWVudGF0aW9uQ2xhc3M+JiYgaW1wbCkKKyAgICBKU0RPTVdy
YXBwZXJXaXRoSW1wbGVtZW50YXRpb24oSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDOjpK
U0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8SW1wbGVtZW50YXRpb25DbGFzcz4mJiBp
bXBsKQogICAgICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiAgICAgICAgICwg
bV9pbXBsKCZpbXBsLmxlYWtSZWYoKSkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCmluZGV4IDczY2NiM2QwMjNkYTBlYzk2MTA3
Y2I5YWEzZjM2NTU4ZGVjNTM1OTcuLmM2Y2VjYWYyNzFjOTg2NmI4OGI0MTJhMDAyNDZkNGRjNGUw
NDJjOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0
cnVjdG9yLmNwcApAQCAtMzQsMTYgKzM0LDE2IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZ
X0RFU1RSVUNUSUJMRShKU0ltYWdlQ29uc3RydWN0b3IpOwogCiBjb25zdCBDbGFzc0luZm8gSlNJ
bWFnZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJJbWFnZUNvbnN0cnVjdG9yIiwgJkJhc2U6OnNf
aW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0ltYWdlQ29uc3RydWN0b3IpIH07CiAKLUpT
SW1hZ2VDb25zdHJ1Y3Rvcjo6SlNJbWFnZUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNJbWFnZUNvbnN0cnVjdG9yOjpK
U0ltYWdlQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudChzdHJ1Y3R1
cmUsIGdsb2JhbE9iamVjdCkKIHsKIH0KIAotdm9pZCBKU0ltYWdlQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3ZvaWQg
SlNJbWFnZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2Jq
ZWN0KTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTSFRNTEltYWdlRWxlbWVudDo6Z2V0UHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBOb25lKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgSlNIVE1MSW1hZ2VFbGVtZW50OjpnZXRQcm90b3R5cGUodm0s
ICZnbG9iYWxPYmplY3QpLCBOb25lKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0SW1hZ2UoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAppbmRleCBiOTIzMjE1YjM0ZDNk
ZjRkODRjNWY2ZmFmZmNhZDBiMzk1NjRlYjc5Li5jYzgxMTgzYjhhZDBjMjI2MzQwNjZjNTBhOTk0
OTc3NDQ4ZDFmN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0lt
YWdlQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdl
Q29uc3RydWN0b3IuaApAQCAtMzAsMjMgKzMwLDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgQmFz
ZTsKIAotICAgICAgICBzdGF0aWMgSlNJbWFnZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYg
dm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCisgICAgICAgIHN0YXRpYyBKU0ltYWdlQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKICAgICAgICAgewogICAgICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKiBjb25z
dHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNJbWFnZUNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgSlNJbWFnZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0
KTsKICAgICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCi0gICAg
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgICAg
IH0KIAogICAgICAgICBERUNMQVJFX0lORk87CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU0lt
YWdlQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwotICAg
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCopOwor
ICAgICAgICBKU0ltYWdlQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9i
amVjdCYpOworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2Jh
bE9iamVjdCYpOwogICAgICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVj
dERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAgICB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0
ZUNvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxl
U3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKaW5kZXggZDZhYzMxMWU0MjdkMWFlYTVjZTE4
MTY0MThjY2YyNzRhOWVjYWVhZi4uZWQ4YTZmNTNiMDFjYWRiODk5OGVmZjQyMWRkOGFkOWZiZjg1
NGQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0
cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcApAQCAtNjUsMTIgKzY1
LDEyIEBAIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTQnVpbHRpblJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlclByaXZhdGVDb25zdHJ1Y3Rvcjo6CiAKIHRlbXBsYXRlPD4gSlNPYmplY3QqIEpT
QnVpbHRpblJlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVKU09i
amVjdCgpCiB7Ci0gICAgcmV0dXJuIEpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNyZWF0ZShnZXRE
T01TdHJ1Y3R1cmU8SlNSZWFkYWJsZVN0cmVhbVJlYWRlcj4oZ2xvYmFsT2JqZWN0KCktPnZtKCks
IGdsb2JhbE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0KCksIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpj
cmVhdGUoKSk7CisgICAgcmV0dXJuIEpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNyZWF0ZShnZXRE
T01TdHJ1Y3R1cmU8SlNSZWFkYWJsZVN0cmVhbVJlYWRlcj4oZ2xvYmFsT2JqZWN0KCktPnZtKCks
ICpnbG9iYWxPYmplY3QoKSksIGdsb2JhbE9iamVjdCgpLCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6
Y3JlYXRlKCkpOwogfQogCiB0ZW1wbGF0ZTw+IEpTT2JqZWN0KiBKU0J1aWx0aW5SZWFkYWJsZVN0
cmVhbUNvbnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3I6OmNyZWF0ZUpTT2JqZWN0KCkKIHsKLSAg
ICByZXR1cm4gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNyZWF0ZShnZXRET01TdHJ1Y3R1
cmU8SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+KGdsb2JhbE9iamVjdCgpLT52bSgpLCBnbG9i
YWxPYmplY3QoKSksIGdsb2JhbE9iamVjdCgpLCBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNy
ZWF0ZSgpKTsKKyAgICByZXR1cm4gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNyZWF0ZShn
ZXRET01TdHJ1Y3R1cmU8SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+KGdsb2JhbE9iamVjdCgp
LT52bSgpLCAqZ2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3QoKSwgUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyOjpjcmVhdGUoKSk7CiB9CiAKIHRlbXBsYXRlPD4gSlNGdW5jdGlvbiogSlNCdWls
dGluUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRlQ29uc3RydWN0b3I6OmNyZWF0ZUluaXRpYWxp
emVGdW5jdGlvbihKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQppbmRleCA5ODgzNGRmZWY4NTllNDk0OTFkYWViYzVjOTEzNmY4ODA5YWNiYTI5Li4wYTli
NWU3NjE4MGQ1NjM4MzdiYzdiZTE1NDJlMDM5YjAxZThjMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtOTM4LDE0ICs5
MzgsMTQgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8JGltcGxUeXBlPiYmIGltcGwp
XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5maXJlQWxsKFwiQWxsb2NhdGVkIG1hc3F1ZXJhZGluZyBv
YmplY3RcIik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNs
YXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1l
PihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpICRjbGFzc05hbWUoc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QsIFdURjo6bW92ZShpbXBsKSk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpICRjbGFzc05hbWUoc3Ry
dWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpO1xuIik7CiAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2Jq
ZWN0LT52bSgpKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gcHRyO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4i
KTsKICAgICB9IGVsc2lmICghTmVlZHNJbXBsZW1lbnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpKSB7
CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNy
ZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KVxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7Ci0g
ICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0LT52
bSgpLmhlYXApKSAkY2xhc3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTtcbiIpOworICAg
ICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcg
KE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbE9iamVjdC0+dm0o
KS5oZWFwKSkgJGNsYXNzTmFtZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QpO1xuIik7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xv
YmFsT2JqZWN0LT52bSgpKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAg
ICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
fVxuXG4iKTsgIApAQCAtOTUzLDcgKzk1Myw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAg
ICBBZGRJbmNsdWRlc0ZvclR5cGVJbkhlYWRlcigkaW1wbFR5cGUpIHVubGVzcyAkc3ZnUHJvcGVy
dHlPckxpc3RQcm9wZXJ0eVR5cGU7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8JGltcGxUeXBlPiYmIGltcGwpXG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKLSAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpICRj
bGFzc05hbWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7XG4iKTsK
KyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3Qt
PnZtKCkuaGVhcCkpICRjbGFzc05hbWUoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1v
dmUoaW1wbCkpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTtcbiIpOwogICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKQEAgLTEyMTYsOSArMTIxNiw5IEBAIHN1YiBH
ZW5lcmF0ZUhlYWRlcgogICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVy
ZmFjZSgkaW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSkgewogICAgICAgICBwdXNoKEBo
ZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwg
UmVmPCRpbXBsVHlwZT4mJik7XG4iKTsKICAgICB9IGVsc2lmICghTmVlZHNJbXBsZW1lbnRhdGlv
bkNsYXNzKCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
JGNsYXNzTmFtZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7XG5cbiIpOwor
ICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpTdHJ1Y3R1
cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpO1xuXG4iKTsKICAgICAgfSBlbHNlIHsKLSAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QqLCBSZWY8JGltcGxUeXBlPiYmKTtcblxuIik7CisgICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xv
YmFsT2JqZWN0JiwgUmVmPCRpbXBsVHlwZT4mJik7XG5cbiIpOwogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0pXG4iKTsKICAg
ICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKICAgICAgICAgcHVzaChAaGVh
ZGVyQ29udGVudCwgIiAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pO1xuIik7CkBAIC0y
MTU0LDEwICsyMTU0LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxu
XG4iKTsKICAgICB9IGVsc2lmICghTmVlZHNJbXBsZW1lbnRhdGlvbkNsYXNzKCRpbnRlcmZhY2Up
KSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1l
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxu
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1l
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KVxu
Iik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZShz
dHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkgeyB9XG5cbiIpOwotICAgICB9ZWxzZSB7Ci0gICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8JGltcGxUeXBl
PiYmIGltcGwpXG4iKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiR7Y2xhc3NOYW1lfTo6JGNsYXNzTmFtZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPCRpbXBsVHlwZT4mJiBpbXBsKVxuIik7CiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZShzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKQEAg
LTI1MTgsNyArMjUxOCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAg
ICBpZiAoISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOb0ludGVyZmFjZU9iamVj
dCJ9KSB7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSgke2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBk
b21PYmplY3QtPmdsb2JhbE9iamVjdCgpKSk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSBjb25zdHJ1Y3Rv
ciA9ICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjcmVhdGUoc3RhdGUtPnZtKCksICR7Y2xhc3NO
YW1lfUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+
Z2xvYmFsT2JqZWN0KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlw
ZSgpKSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZG9tT2JqZWN0LT5nbG9iYWxPYmplY3Qo
KSkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1
ZSBjb25zdHJ1Y3RvciA9ICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjcmVhdGUoc3RhdGUtPnZt
KCksICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoc3RhdGUtPnZtKCks
ICpkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpLT5v
YmplY3RQcm90b3R5cGUoKSksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihkb21PYmplY3Qt
Pmdsb2JhbE9iamVjdCgpKSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAvLyBTaGFkb3dpbmcgY29uc3RydWN0b3IgcHJvcGVydHkgdG8gZW5zdXJlIHJldXNp
bmcgdGhlIHNhbWUgY29uc3RydWN0b3Igb2JqZWN0XG4iKTsKICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3Rh
dGUtPnByb3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgY29uc3RydWN0b3IsIERvbnRFbnVtIHwg
UmVhZE9ubHkpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3Rvcik7XG4iKTsKQEAgLTI4MzMsMTEgKzI4
MzMsMTEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgIGlmICghJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW50ZXJmYWNlT2JqZWN0In0pIHsKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3Io
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxue1xuIik7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFt
ZX1Db25zdHJ1Y3Rvcj4odm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpO1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn1cblxuIik7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiTmFtZWRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IkpTVmFsdWUgJHtjbGFzc05hbWV9OjpnZXROYW1lZENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdClcbntcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfU5hbWVkQ29u
c3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtc
biIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNv
bnN0cnVjdG9yPCR7Y2xhc3NOYW1lfU5hbWVkQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAifVxuXG4iKTsKICAgICAgICAgfQogICAgIH0KQEAgLTM3MzAsNyArMzczMCw3
IEBAIHN1YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAgICAgICBHZW5lcmF0ZUNv
bnN0cnVjdG9yRGVmaW5pdGlvbnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgIiIsICRpbnRl
cmZhY2VOYW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UpOwogCiAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3Io
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxue1xuIik7Ci0gICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1l
fUNvbnN0cnVjdG9yPih2bSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7XG4iKTsKKyAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0RE9NQ29u
c3RydWN0b3I8JHtjbGFzc05hbWV9Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
In1cblxuIik7CiAgICAgfQogCkBAIC00NjA2LDIzICs0NjA2LDIzIEBAIHN1YiBHZW5lcmF0ZUNv
bnN0cnVjdG9yRGVjbGFyYXRpb24KIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImNsYXNzICR7
Y29uc3RydWN0b3JDbGFzc05hbWV9IDogcHVibGljICIgLiAkcGFyZW50Q2xhc3NOYW1lIC4gIiB7
XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJwcml2YXRlOlxuIik7Ci0gICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgICR7Y29uc3RydWN0b3JDbGFzc05hbWV9KEpTQzo6U3RydWN0dXJl
KiwgSlNET01HbG9iYWxPYmplY3QqKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0Jik7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTtcblxuIik7CiAKICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICJwdWJsaWM6XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
dHlwZWRlZiAiIC4gJHBhcmVudENsYXNzTmFtZSAuICIgQmFzZTtcbiIpOwotICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICBzdGF0aWMgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKiBjcmVhdGUoSlND
OjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljICRj
b25zdHJ1Y3RvckNsYXNzTmFtZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIHtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPCRjb25zdHJ1Y3RvckNsYXNzTmFtZT4odm0uaGVhcCkpICRjb25zdHJ1Y3RvckNs
YXNzTmFtZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sICpnbG9iYWxPYmplY3QpO1xu
Iik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KHZtLCBnbG9iYWxPYmplY3QpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICByZXR1cm4gcHRyO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cblxuIik7
CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgREVDTEFSRV9JTkZPO1xuIik7CiAKLSAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSlcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKVxu
Iik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHtcbiIpOwotICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90
eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZv
KCkpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogCiAgICAgaWYg
KElzQ29uc3RydWN0YWJsZSgkaW50ZXJmYWNlKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Ik5hbWVkQ29uc3RydWN0b3IifSkgewpAQCAtNDY1MSwyMiArNDY1MSwyMiBAQCBj
bGFzcyBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0
cnVjdG9yV2l0aERvY3VtZW50IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9y
V2l0aERvY3VtZW50IEJhc2U7CiAKLSAgICBzdGF0aWMgSlMke2ludGVyZmFjZU5hbWV9TmFtZWRD
b25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBKUyR7aW50ZXJm
YWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgewog
ICAgICAgICBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlMke2ludGVyZmFjZU5hbWV9TmFtZWRD
b25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEpTJHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3Io
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwotICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sICpnbG9iYWxPYmplY3QpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3Jl
YXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAg
ICB9CiAKLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCiAgICAgREVD
TEFSRV9JTkZPOwogCiBwcml2YXRlOgotICAgIEpTJHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29uc3Ry
dWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTJHtpbnRl
cmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9i
amVjdCYpOwogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29u
c3RydWN0SlMke2ludGVyZmFjZU5hbWV9KEpTQzo6RXhlY1N0YXRlKik7CiAgICAgc3RhdGljIEpT
Qzo6Q29uc3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25z
dHJ1Y3REYXRhJik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9i
YWxPYmplY3QmKTsKQEAgLTQ5NzEsNyArNDk3MSw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9y
SGVscGVyTWV0aG9kcwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiY29uc3QgQ2xhc3NJbmZv
ICR7Y29uc3RydWN0b3JDbGFzc05hbWV9OjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlSW50ZXJmYWNl
TmFtZX1Db25zdHJ1Y3RvclwiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KCRjb25zdHJ1Y3RvckNsYXNzTmFtZSkgfTtcblxuIik7CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0oU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsK
KyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6JHtjb25z
dHJ1Y3RvckNsYXNzTmFtZX0oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgOiBCYXNl
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
e1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKQEAgLTQ5ODAsNyArNDk4
MCw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIntcbiIpOwogCiAgICAgaWYgKCRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3Rv
cikgewotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24oJmdsb2JhbE9iamVjdCk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7XG4iKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
O1xuIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCA4MTY1
NTEzZTljMTQ2MjdjN2RjMjQxZDJiYzdiOGZlYjBkNzQ2MmNjLi41MTkxZGY5NTg2ZTFlZDJjNWNh
OTIzZDYyMjU0ZjQ1Nzg0ZDZiODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cApAQCAtNjgsMjIgKzY4LDIyIEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTVGVzdEFjdGl2ZURPTU9i
amVjdENvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKIHByaXZhdGU6
Ci0gICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBK
U0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9y
KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBKU1Rlc3RBY3RpdmVE
T01PYmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBK
U1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ICAgIHsKICAgICAgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3Ry
dWN0b3I+KHZtLmhlYXApKSBKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihzdHJ1Y3R1
cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sICpnbG9i
YWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3Qp
OwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKLSAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogfTsKIApAQCAtMTA2LDcgKzEwNiw3
IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RBY3RpdmVET01PYmplY3RUYWJs
ZVZhbHVlc1tdID0KIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0QWN0aXZlRE9NT2JqZWN0
VGFibGUgPSB7IDIsIDMsIHRydWUsIEpTVGVzdEFjdGl2ZURPTU9iamVjdFRhYmxlVmFsdWVzLCBK
U1Rlc3RBY3RpdmVET01PYmplY3RUYWJsZUluZGV4IH07CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RBY3RpdmVET01PYmpl
Y3RDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IpIH07CiAKLUpTVGVzdEFjdGl2ZURPTU9iamVj
dENvbnN0cnVjdG9yOjpKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdEFjdGl2
ZURPTU9iamVjdENvbnN0cnVjdG9yOjpKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAg
ICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiB7CiB9CkBAIC0xMTUsNyArMTE1LDcg
QEAgdm9pZCBKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmdldFByb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RB
Y3RpdmVET01PYmplY3Q6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwo
IlRlc3RBY3RpdmVET01PYmplY3QiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5
IHwgRG9udEVudW0pOwogfQpAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgSlNUZXN0QWN0aXZlRE9N
T2JqZWN0UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKIGNvbnN0IENsYXNzSW5m
byBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OnNfaW5mbyA9IHsgIlRlc3RBY3RpdmVET01PYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0QWN0aXZlRE9NT2JqZWN0VGFibGUsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0QWN0aXZlRE9NT2JqZWN0KSB9OwogCi1KU1Rlc3RBY3RpdmVET01PYmpl
Y3Q6OkpTVGVzdEFjdGl2ZURPTU9iamVjdChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RBY3RpdmVET01PYmplY3Q+JiYgaW1wbCkK
K0pTVGVzdEFjdGl2ZURPTU9iamVjdDo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0KFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEFjdGl2
ZURPTU9iamVjdD4mJiBpbXBsKQogICAgIDogSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9u
PFRlc3RBY3RpdmVET01PYmplY3Q+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUo
aW1wbCkpCiB7CiB9CkBAIC0xOTQsNyArMTk0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0QWN0
aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqLCBFbmMK
IAogSlNWYWx1ZSBKU1Rlc3RBY3RpdmVET01PYmplY3Q6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0QWN0aXZlRE9NT2JqZWN0UHJvdG90eXBlRnVuY3Rpb25FeGNpdGluZ0Z1bmN0
aW9uKEV4ZWNTdGF0ZSogc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmgKaW5kZXgg
MjRjYzU2MWUzMTNlMWU3MWU5Zjg0NTgzYzJkNzc5OGI4NDQ4NzEzNC4uODM5ZmNhYTQ0ZGFmZGVk
YTIwZTYzYTBjYzk1NTM4NzMwNTUwYjBmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3Qu
aApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0RPTVdyYXBwZXJXaXRo
SW1wbGVtZW50YXRpb248VGVzdEFjdGl2ZURPTU9iamVjdD4gQmFzZTsKICAgICBzdGF0aWMgSlNU
ZXN0QWN0aXZlRE9NT2JqZWN0KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RBY3RpdmVET01PYmplY3Q+JiYg
aW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdCogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RBY3RpdmVET01PYmplY3Q+KGdsb2JhbE9i
amVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0QWN0aXZlRE9NT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RBY3RpdmVET01PYmplY3Qq
IHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0PihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEFjdGl2ZURPTU9iamVjdChzdHJ1
Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAg
ICB9CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xv
dCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogcHJvdGVjdGVkOgotICAgIEpTVGVzdEFjdGl2ZURP
TU9iamVjdChKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RBY3Rp
dmVET01PYmplY3Q+JiYpOworICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdChKU0M6OlN0cnVjdHVy
ZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RBY3RpdmVET01PYmplY3Q+JiYpOwogCiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiB2bSkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNr
LmNwcAppbmRleCA4ODBkMjE3MGEyNDczNzc3MDVkMjlhNjFmMzg1NTk4MTdlYzEzYTI4Li4yODc3
MDUwMjVmOTIwNzExYzI4ZWQyYWVkYjRjYzJkZTUwODQ4ODYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFjay5j
cHAKQEAgLTYxLDIyICs2MSwyMiBAQCBKU1Rlc3RDYWxsYmFjazo6fkpTVGVzdENhbGxiYWNrKCkK
IAogY2xhc3MgSlNUZXN0Q2FsbGJhY2tDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rv
ck9iamVjdCB7CiBwcml2YXRlOgotICAgIEpTVGVzdENhbGxiYWNrQ29uc3RydWN0b3IoSlNDOjpT
dHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdENhbGxiYWNrQ29uc3Ry
dWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAKIHB1YmxpYzoKICAg
ICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpTVGVzdENh
bGxiYWNrQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgSlNU
ZXN0Q2FsbGJhY2tDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIHsKICAg
ICAgICAgSlNUZXN0Q2FsbGJhY2tDb25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDYWxsYmFja0NvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNUZXN0
Q2FsbGJhY2tDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24odm0sICpnbG9iYWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0K
IAogICAgIERFQ0xBUkVfSU5GTzsKLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1
Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVy
biBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAg
ICAgfQogfTsKIApAQCAtOTQsNyArOTQsNyBAQCBDT01QSUxFX0FTU0VSVCgyID09IFRlc3RDYWxs
YmFjazo6Q09OU1RBTlQyLCBUZXN0Q2FsbGJhY2tFbnVtQ09OU1RBTlQySXNXcm9uZ1VzZQogCiBj
b25zdCBDbGFzc0luZm8gSlNUZXN0Q2FsbGJhY2tDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVz
dENhbGxiYWNrQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdENhbGxiYWNrQ29uc3RydWN0b3IpIH07CiAKLUpTVGVzdENhbGxiYWNrQ29uc3Ry
dWN0b3I6OkpTVGVzdENhbGxiYWNrQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU1Rlc3RDYWxsYmFja0NvbnN0cnVjdG9y
OjpKU1Rlc3RDYWxsYmFja0NvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCkKIHsKIH0KQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIEpTVGVzdENhbGxiYWNrQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbAog
CiBKU1ZhbHVlIEpTVGVzdENhbGxiYWNrOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpT
VGVzdENhbGxiYWNrQ29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0Q2FsbGJh
Y2tDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNv
bnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcAppbmRleCBmZDViZDhlOTVhNTFiY2Iy
YWJhMDgyMmY0N2QyY2U4YzcyMmY4MGQ3Li43YWM0MmU3MzgyZTQxMTYwMTMxODcwNzVmOTkzZThh
ZWViYmM1NDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5jcHAKQEAgLTU5LDI5ICs1OSwyOSBAQCBw
cml2YXRlOgogCiBjbGFzcyBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdENvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKIHByaXZhdGU6
Ci0gICAgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1
Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6
OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKIAogcHVibGljOgogICAgIHR5cGVkZWYgRE9NQ29u
c3RydWN0b3JPYmplY3QgQmFzZTsKLSAgICBzdGF0aWMgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
ICAgIHN0YXRpYyBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENv
bnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgewogICAgICAgICBKU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1Rlc3RDdXN0b21Db25z
dHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgKmdsb2JhbE9iamVjdCk7
CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAg
IHJldHVybiBwdHI7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwotICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpT
Qzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5m
bygpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVy
ZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAgICAgc3RhdGljIEpTQzo6Q29uc3RydWN0VHlwZSBn
ZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3REYXRhJik7CiB9Owog
CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3RDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29u
c3RydWN0b3IpIH07CiAKLUpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0Q29uc3RydWN0b3I6OkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0Q29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCitKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dENvbnN0cnVjdG9yOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dENvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKIHsKIH0KQEAg
LTkwLDcgKzkwLDcgQEAgdm9pZCBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFj
ZU9iamVjdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6Z2V0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0OjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVs
ZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFs
KCJUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QiKSkpLCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTE4LDcgKzExOCw3
IEBAIHZvaWQgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6c19pbmZvID0geyAiVGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JF
QVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdCkgfTsKIAotSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6
OkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEN1c3Rv
bUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0PiYmIGltcGwpCitKU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdDo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3QoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3Q+JiYgaW1wbCkKICAgICA6IEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q+KHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpCiB7CiB9CkBAIC0xNDQsNyArMTQ0LDcgQEAgRW5j
b2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RD
b25zdHJ1Y3RvcihFeGVjU3RhdGUKICAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdFByb3RvdHlwZSogZG9tT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSo+KGJhc2VWYWx1
ZSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KHN0YXRlKTsKLSAgICBKU1ZhbHVlIGNvbnN0cnVjdG9yID0gSlNUZXN0Q3VzdG9tQ29uc3RydWN0
b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHN0YXRlLT52bSgpLCBK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUoc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCksIGRv
bU9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSwganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpOworICAgIEpTVmFsdWUg
Y29uc3RydWN0b3IgPSBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVj
dENvbnN0cnVjdG9yOjpjcmVhdGUoc3RhdGUtPnZtKCksIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShzdGF0ZS0+
dm0oKSwgKmRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0
KCktPm9iamVjdFByb3RvdHlwZSgpKSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGRvbU9i
amVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKICAgICAvLyBTaGFkb3dpbmcgY29uc3RydWN0b3IgcHJv
cGVydHkgdG8gZW5zdXJlIHJldXNpbmcgdGhlIHNhbWUgY29uc3RydWN0b3Igb2JqZWN0CiAgICAg
ZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUtPnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCku
Y29uc3RydWN0b3IsIGNvbnN0cnVjdG9yLCBEb250RW51bSB8IFJlYWRPbmx5KTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmgKaW5kZXgg
OGY0ZjBhNjZjODRhYWI5ZmZhMGU3MzhjZDBiZGFkMDExNjNjYTk2Ny4uZGFhMjA5MDhiNGJmNmFl
ZmUyZTQ3YmY0NDIxMDQ3NTljOThmYzM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmgKQEAgLTMyLDcg
KzMyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0
aW9uPFRlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdD4gQmFzZTsKICAg
ICBzdGF0aWMgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqIGNy
ZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWY8VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0PiYm
IGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdD4oZ2xvYmFsT2JqZWN0LT52bSgp
LmhlYXApKSBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdChzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqIHB0ciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VP
YmplY3Q+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3Qoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUo
aW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7
CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAg
ICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3QoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q+JiYpOworICAgIEpTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0KEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0PiYmKTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0pCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggOGMyNTcyMjQ2MzNj
YzYyZmM5MzhkM2M1ODRhM2IzOTExNTYwMzg5Yi4uOTZlOGE1ZTQ4ZjAyMTYyMzYyMmMxNWMxYzY4
NWRiNDYxY2RiMzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBA
IC02NiwyMiArNjYsMjIgQEAgcHJpdmF0ZToKIAogY2xhc3MgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7CiBwcml2YXRlOgot
ICAgIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBK
U0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0
b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAKIHB1YmxpYzoKICAgICB0
eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0
aWMgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZt
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogICAgIHsKICAgICAgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvciog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1
Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRp
b24odm0sICpnbG9iYWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBn
bG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAogICAgIERFQ0xBUkVf
SU5GTzsKLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogfTsKIApAQCAt
MTAxLDcgKzEwMSw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDdXN0b21O
YW1lZEdldHRlclRhYmxlVmFsdWVzW10gPQogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RD
dXN0b21OYW1lZEdldHRlclRhYmxlID0geyAxLCAxLCB0cnVlLCBKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlclRhYmxlVmFsdWVzLCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclRhYmxlSW5kZXggfTsKIGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yOjpzX2luZm8g
PSB7ICJUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcikg
fTsKIAotSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcjo6SlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXJDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3I6OkpT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBCYXNlKHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0KQogewogfQpAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgSlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChpbmhlcml0
cyhpbmZvKCkpKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0
UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250
cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdEN1c3RvbU5hbWVkR2V0
dGVyIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0K
QEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDdXN0b21O
YW1lZEdldHRlcjo6c19pbmZvID0geyAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyIiwgJkJhc2U6OnNf
aW5mbywgJkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIpIH07CiAKLUpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpK
U1Rlc3RDdXN0b21OYW1lZEdldHRlcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RDdXN0b21OYW1lZEdldHRlcj4mJiBpbXBsKQor
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKFN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEN1
c3RvbU5hbWVkR2V0dGVyPiYmIGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50
YXRpb248VGVzdEN1c3RvbU5hbWVkR2V0dGVyPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RG
Ojptb3ZlKGltcGwpKQogewogfQpAQCAtMTk4LDcgKzE5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIGpz
VGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
Y3QqLCBFCiAKIEpTVmFsdWUgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldENvbnN0cnVjdG9y
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcj4odm0sIGpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRE
T01Db25zdHJ1Y3RvcjxKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yPih2bSwgKmpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEN1c3RvbU5hbWVkR2V0dGVyUHJvdG90eXBlRnVuY3Rp
b25Bbm90aGVyRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyLmgKaW5kZXggNmI0ZDlmOWNjMzI2YTBiN2ZkOGEzMTQ4NDgzNjg1MmZjOTVmOTBi
Ni4uZjVlN2M2NjFmMzI4ZDNjNmJhYjg3ZmJjOGQ0YzcwZmRmMTdlODM5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogICAgIHR5
cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RDdXN0b21OYW1lZEdldHRl
cj4gQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGNyZWF0ZShKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWY8VGVzdEN1c3RvbU5hbWVkR2V0dGVyPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RD
dXN0b21OYW1lZEdldHRlciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RDdXN0b21OYW1lZEdldHRlcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RD
dXN0b21OYW1lZEdldHRlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwp
KTsKKyAgICAgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIHB0ciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+KGdsb2JhbE9iamVjdC0+
dm0oKS5oZWFwKSkgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2Jq
ZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2Jh
bE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpAQCAtNTUsNyArNTUs
NyBAQCBwdWJsaWM6CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gSlNDOjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVu
TGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNl
OjpTdHJ1Y3R1cmVGbGFnczsKIHByb3RlY3RlZDoKLSAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRl
cihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RDdXN0b21OYW1l
ZEdldHRlcj4mJik7CisgICAgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIoSlNDOjpTdHJ1Y3R1cmUq
LCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI+JiYpOwogCiAg
ICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiB2bSkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYmNhOTIyNWZkMjVkNzU5MzkyMDUxMGY1ZmEzYTUz
YTEwZTU2MzljYi4uMTQ2ZGU2OWVkNjgyOWE2Yjc5NDI2Y2IyYjM5ZmM1NDhmOThhZWU2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtNjUsMjIgKzY1LDIyIEBAIHBy
aXZhdGU6CiAKIGNsYXNzIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciA6IHB1Ymxp
YyBET01Db25zdHJ1Y3Rvck9iamVjdCB7CiBwcml2YXRlOgotICAgIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7Cisg
ICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RP
TUdsb2JhbE9iamVjdCYpOwogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9i
amVjdCBCYXNlOwotICAgIHN0YXRpYyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3Iq
IGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgewogICAgICAgICBKU1Rl
c3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yPih2bS5oZWFwKSkg
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0
KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgKmdsb2JhbE9iamVjdCk7CisgICAg
ICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVy
biBwdHI7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwotICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKICAgICB9CiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1Rlc3RFdmVudENvbnN0cnVjdG9yKEpTQzo6
RXhlY1N0YXRlKik7CkBAIC0xMzAsNyArMTMwLDcgQEAgYm9vbCBmaWxsVGVzdEV2ZW50Q29uc3Ry
dWN0b3JJbml0KFRlc3RFdmVudENvbnN0cnVjdG9ySW5pdCYgZXZlbnRJbml0LCBKU0RpY3Rpb24K
IAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8s
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
KSB9OwogCi1KU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpTVGVzdEV2ZW50Q29u
c3RydWN0b3JDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6SlNU
ZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2Jh
bE9iamVjdCkKIHsKIH0KQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIEpTVGVzdEV2ZW50Q29uc3Ry
dWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVj
dAogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMo
aW5mbygpKSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwg
RG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpnZXRQcm90
b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZp
YWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0RXZlbnRDb25zdHJ1Y3RvciIp
KSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0x
NjksNyArMTY5LDcgQEAgdm9pZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RFdmVudENvbnN0cnVj
dG9yOjpzX2luZm8gPSB7ICJUZXN0RXZlbnRDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcikgfTsKIAotSlNUZXN0
RXZlbnRDb25zdHJ1Y3Rvcjo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RFdmVudENvbnN0
cnVjdG9yPiYmIGltcGwpCitKU1Rlc3RFdmVudENvbnN0cnVjdG9yOjpKU1Rlc3RFdmVudENvbnN0
cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0LCBSZWY8VGVzdEV2ZW50Q29uc3RydWN0b3I+JiYgaW1wbCkKICAgICA6IEpTRE9NV3JhcHBl
cldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4oc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KQEAgLTIzNCw3ICsyMzQsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqIGJhcwogCiBKU1ZhbHVlIEpTVGVzdEV2ZW50Q29uc3RydWN0b3I6Omdl
dENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yPih2bSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAg
cmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
cj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAog
Ym9vbCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaAppbmRleCBkYzcyOGU1ZDZk
OTE1Mjg4YmNlYWNjYjgxMjJkYmEzNjA0YzJkMDE1Li5iM2RkYTIzYmMzOGY4NGNkYTUzNGNhMDVi
YzNkNmEzMDE1NjUxNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKQEAgLTM0
LDcgKzM0LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVu
dGF0aW9uPFRlc3RFdmVudENvbnN0cnVjdG9yPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RFdmVudENvbnN0cnVjdG9yPiYmIGltcGwp
CiAgICAgewotICAgICAgICBKU1Rlc3RFdmVudENvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEV2ZW50Q29uc3RydWN0b3I+KGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKSkgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCwgV1RGOjptb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvciog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFdmVudENvbnN0cnVj
dG9yPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEV2ZW50Q29uc3RydWN0b3Ioc3Ry
dWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZp
bmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAg
ICAgfQpAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVl
IGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiBwcm90ZWN0
ZWQ6Ci0gICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiwgUmVmPFRlc3RFdmVudENvbnN0cnVjdG9yPiYmKTsKKyAgICBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVz
dEV2ZW50Q29uc3RydWN0b3I+JiYpOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZN
JiB2bSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCAzYjQ5MDczYTc3Nzg3
Y2NmYjQ4YjM4NDQyNDA4N2Y1NDA3ZmY4ZDk1Li4wMGFjODBlNDMxN2VhZWE1OGZhYzU1ZWRmNDEw
NDgwODBkZmEwYWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKQEAgLTc1LDIyICs3NSwy
MiBAQCBwcml2YXRlOgogCiBjbGFzcyBKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yIDogcHVi
bGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgSlNUZXN0RXZlbnRUYXJn
ZXRDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAg
SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFs
T2JqZWN0Jik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxP
YmplY3QmKTsKIAogcHVibGljOgogICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JPYmplY3QgQmFz
ZTsKLSAgICBzdGF0aWMgSlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6
Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQorICAgIHN0YXRpYyBKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yKiBjcmVh
dGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgewogICAgICAgICBKU1Rlc3RFdmVudFRhcmdldENvbnN0
cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEV2ZW50
VGFyZ2V0Q29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9y
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2
bSwgKmdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2Jh
bE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZP
OwotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiB9OwogCkBAIC0xMTAs
NyArMTEwLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEV2ZW50VGFyZ2V0
VGFibGVWYWx1ZXNbXSA9CiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEV2ZW50VGFyZ2V0
VGFibGUgPSB7IDEsIDEsIHRydWUsIEpTVGVzdEV2ZW50VGFyZ2V0VGFibGVWYWx1ZXMsIEpTVGVz
dEV2ZW50VGFyZ2V0VGFibGVJbmRleCB9OwogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV2ZW50VGFy
Z2V0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yIiwg
JkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFdmVudFRhcmdldENv
bnN0cnVjdG9yKSB9OwogCi1KU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yOjpKU1Rlc3RFdmVu
dFRhcmdldENvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQorSlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcjo6SlNUZXN0RXZl
bnRUYXJnZXRDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiB7
CiB9CkBAIC0xMTksNyArMTE5LDcgQEAgdm9pZCBKU1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG8KIHsKICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwot
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RFdmVu
dFRhcmdldDo6Z2V0UHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmpl
Y3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmco
QVNDSUlMaXRlcmFsKCJUZXN0RXZlbnRUYXJnZXQiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCks
IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgSlNUZXN0
RXZlbnRUYXJnZXRQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIAogY29uc3QgQ2xh
c3NJbmZvIEpTVGVzdEV2ZW50VGFyZ2V0OjpzX2luZm8gPSB7ICJUZXN0RXZlbnRUYXJnZXQiLCAm
QmFzZTo6c19pbmZvLCAmSlNUZXN0RXZlbnRUYXJnZXRUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3RFdmVudFRhcmdldCkgfTsKIAotSlNUZXN0RXZlbnRUYXJnZXQ6OkpTVGVzdEV2ZW50
VGFyZ2V0KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZWY8VGVzdEV2ZW50VGFyZ2V0PiYmIGltcGwpCitKU1Rlc3RFdmVudFRhcmdldDo6SlNU
ZXN0RXZlbnRUYXJnZXQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIFJlZjxUZXN0RXZlbnRUYXJnZXQ+JiYgaW1wbCkKICAgICA6IEpTRE9NV3Jh
cHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0RXZlbnRUYXJnZXQ+KHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpCiB7CiB9CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBK
U1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIHN0YXRlLAogCiBKU1ZhbHVlIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRDb25zdHJ1
Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3I+KHZtLCBqc0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9N
Q29uc3RydWN0b3I8SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbShFeGVjU3Rh
dGUqIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaAppbmRleCBkMmI5OTgzODNlNjEzZjk0NDU1
N2NlNjAyZjAzZjk1MzY0ODEzZGVjLi42ZGI5NjY0NTIzZjRjNTk4M2Q1ZTJiYjExZWI0YWYyZTMx
Y2JmYTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0RXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuaApAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIEpTVGVzdEV2ZW50VGFyZ2V0KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RFdmVudFRh
cmdldD4mJiBpbXBsKQogICAgIHsKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkV2F0Y2hwb2ludCgpLT5maXJlQWxsKCJBbGxvY2F0ZWQgbWFzcXVlcmFkaW5nIG9i
amVjdCIpOwotICAgICAgICBKU1Rlc3RFdmVudFRhcmdldCogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFdmVudFRhcmdldD4oZ2xvYmFsT2JqZWN0LT52bSgpLmhl
YXApKSBKU1Rlc3RFdmVudFRhcmdldChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3Zl
KGltcGwpKTsKKyAgICAgICAgSlNUZXN0RXZlbnRUYXJnZXQqIHB0ciA9IG5ldyAoTm90TnVsbCwg
SlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RXZlbnRUYXJnZXQ+KGdsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKSkgSlNUZXN0RXZlbnRUYXJnZXQoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1v
dmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0o
KSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6
CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlND
OjpJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3Ra
ZXJvIHwgSlNDOjpNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1
Y3R1cmVGbGFnczsKIHByb3RlY3RlZDoKLSAgICBKU1Rlc3RFdmVudFRhcmdldChKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RFdmVudFRhcmdldD4mJik7CisgICAg
SlNUZXN0RXZlbnRUYXJnZXQoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJl
ZjxUZXN0RXZlbnRUYXJnZXQ+JiYpOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZN
JiB2bSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCmluZGV4IDFhYzY0MzkzOGI1ZmE4ODIw
Y2UyMWQ1Yzk4YWE3YjQ1ZjJiOWY0MTkuLjk3NjZhNDgzYjI3YjI3NDE4MmJkZGRiZjk4NTIzOTE4
MThhYTc4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uY3BwCkBAIC02MiwyMiArNjIsMjIgQEAgcHJp
dmF0ZToKIAogY2xhc3MgSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29u
c3RydWN0b3JPYmplY3QgewogcHJpdmF0ZToKLSAgICBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rv
cihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0RXhjZXB0
aW9uQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAKIHB1
YmxpYzoKICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGlj
IEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAg
c3RhdGljIEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiAgICAgewogICAgICAgICBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvciogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcj4odm0u
aGVhcCkpIEpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0
KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgKmdsb2JhbE9iamVjdCk7CisgICAg
ICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVy
biBwdHI7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwotICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6U3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
KyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKICAgICB9CiB9OwogCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RFeGNlcHRpb25UYWJsZVZhbHVlc1tdID0KIHN0YXRpYyBjb25z
dCBIYXNoVGFibGUgSlNUZXN0RXhjZXB0aW9uVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTVGVzdEV4
Y2VwdGlvblRhYmxlVmFsdWVzLCBKU1Rlc3RFeGNlcHRpb25UYWJsZUluZGV4IH07CiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RFeGNl
cHRpb25Db25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUo
SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IpIH07CiAKLUpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVj
dG9yOjpKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9y
OjpKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QpCiB7CiB9CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBKU1Rlc3RFeGNlcHRpb25Db25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmEK
IHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGlu
Zm8oKSkpOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3RFeGNlcHRpb246OmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RFeGNlcHRpb246OmdldFByb3RvdHlwZSh2bSwgJmdsb2Jh
bE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0
cmluZyhBU0NJSUxpdGVyYWwoIlRlc3RFeGNlcHRpb24iKSkpLCBSZWFkT25seSB8IERvbnRFbnVt
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgSlNU
ZXN0RXhjZXB0aW9uUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKIGNvbnN0IENs
YXNzSW5mbyBKU1Rlc3RFeGNlcHRpb246OnNfaW5mbyA9IHsgIlRlc3RFeGNlcHRpb24iLCAmQmFz
ZTo6c19pbmZvLCAmSlNUZXN0RXhjZXB0aW9uVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNU
ZXN0RXhjZXB0aW9uKSB9OwogCi1KU1Rlc3RFeGNlcHRpb246OkpTVGVzdEV4Y2VwdGlvbihTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRl
c3RFeGNlcHRpb24+JiYgaW1wbCkKK0pTVGVzdEV4Y2VwdGlvbjo6SlNUZXN0RXhjZXB0aW9uKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdEV4Y2VwdGlvbj4mJiBpbXBsKQogICAgIDogSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0
aW9uPFRlc3RFeGNlcHRpb24+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1w
bCkpCiB7CiB9CkBAIC0xODAsNyArMTgwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0RXhjZXB0
aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VWYWx1ZSwKIAog
SlNWYWx1ZSBKU1Rlc3RFeGNlcHRpb246OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNU
ZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0RXhjZXB0
aW9uQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSk7CiB9CiAKIGJvb2wgSlNUZXN0RXhjZXB0aW9uT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmgKaW5kZXggM2UxNTcwYzE4ZWU3NmU4NWZh
YWE2NDUxZTY4NDA5NmJjMDk0OWQ1Yi4uYTQ5YjUwOTI1YTYxNDEwMjg3MmZlZGE0MDg1NTY5OTkz
NDdlZWExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uaApAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEV4Y2VwdGlvbj4g
QmFzZTsKICAgICBzdGF0aWMgSlNUZXN0RXhjZXB0aW9uKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RFeGNl
cHRpb24+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdEV4Y2VwdGlvbiogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFeGNlcHRpb24+KGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKSkgSlNUZXN0RXhjZXB0aW9uKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBX
VEY6Om1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RFeGNlcHRpb24qIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RXhjZXB0aW9uPihnbG9iYWxPYmplY3QtPnZt
KCkuaGVhcCkpIEpTVGVzdEV4Y2VwdGlvbihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURjo6
bW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52
bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkBAIC01NSw3ICs1NSw3IEBAIHB1Ymxp
YzoKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBK
U0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwog
cHJvdGVjdGVkOgotICAgIEpTVGVzdEV4Y2VwdGlvbihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xv
YmFsT2JqZWN0KiwgUmVmPFRlc3RFeGNlcHRpb24+JiYpOworICAgIEpTVGVzdEV4Y2VwdGlvbihK
U0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RFeGNlcHRpb24+JiYp
OwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiB2bSkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJh
dGVJc1JlYWNoYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKaW5kZXggZDQ0Y2U3MTA1ZjA1MDJmZTBl
MTAzZDkxNDhkYmQ3NjJjMmM1NTVmMC4uZDI4ZjMwMjE1YjczMzdlMzRlMDE3ODFhYTQ5YWE0YTU3
NDIyYzExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcApAQCAt
NTksMjggKzU5LDI4IEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFi
bGVDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7CiBwcml2YXRlOgot
ICAgIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSos
IEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0
cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAg
ICBzdGF0aWMgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlND
OjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCiAgICAgewogICAgICAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29u
c3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNUZXN0R2VuZXJhdGVJc1Jl
YWNoYWJsZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbih2bSwgKmdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQog
CiAgICAgREVDTEFSRV9JTkZPOwotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3Ry
dWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVT
dHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
SlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhK
U0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJu
IEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlND
OjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAg
ICB9CiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0
cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yIiwg
JkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlQ29uc3RydWN0b3IpIH07CiAKLUpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1
Y3Rvcjo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZUNvbnN0cnVjdG9yOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0
b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiAgICAgOiBCYXNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogewogfQpAQCAtODksNyArODks
NyBAQCB2b2lkIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBKU0RPTUdsb2JhbE9iagogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6Omdl
dFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9u
dEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3Qp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVND
SUlMaXRlcmFsKCJUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSIpKSksIFJlYWRPbmx5IHwgRG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0p
CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpzX2luZm8gPSB7
ICJUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRI
T0RfVEFCTEUoSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZSkgfTsKIAotSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlPiYmIGltcGwpCitKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpKU1Rlc3RHZW5lcmF0
ZUlzUmVhY2hhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+JiYgaW1wbCkKICAgICA6IEpT
RE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4oc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KQEAgLTE0Miw3ICsx
NDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0
b3IoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAKIEpTVmFsdWUgSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlQ29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOwogfQogCiBib29sIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVPd25lcjo6
aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5k
bGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZS5oCmluZGV4IDkyOTMzYWE1MzA0M2UzNzExZTRmMWFmMGI5YTk0ZWE2MWE4ZmZk
YzAuLjkwMDk4YjBlY2RiZTI3YWNlNGViZGVlNzQ4OGQ1YTAwNGIzOTZkMDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEdlbmVyYXRlSXNS
ZWFjaGFibGU+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqIGNy
ZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBSZWY8VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+JiYgaW1wbCkKICAgICB7Ci0gICAg
ICAgIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4oZ2xvYmFsT2JqZWN0LT52bSgp
LmhlYXApKSBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0
LCBXVEY6Om1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEdlbmVyYXRlSXNSZWFj
aGFibGU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CiAgICAgICAgIHB0
ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0
cjsKICAgICB9CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OkpT
VmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKIHBy
b3RlY3RlZDoKLSAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+JiYpOworICAg
IEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9i
amVjdCYsIFJlZjxUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4mJik7CiAKICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTQzo6Vk0mIHZtKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXgg
N2RjNzgyNmQ5Zjc5YTJjNDdmN2M1NzhkN2NjNjBhOTc2NGI5YjAzMC4uMjk2MGY3MjA0ZTUwZTYw
MDk1ZTBhYmVmOTkxM2JiMGYyNjMyYTQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTE0
NSwyMiArMTQ1LDIyIEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTVGVzdEludGVyZmFjZUNvbnN0cnVj
dG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgSlNUZXN0
SW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCop
OworICAgIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01H
bG9iYWxPYmplY3QmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUds
b2JhbE9iamVjdCYpOwogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVj
dCBCYXNlOwotICAgIHN0YXRpYyBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciogY3JlYXRlKEpT
Qzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciogY3Jl
YXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIHsKICAgICAgICAgSlNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SW50ZXJm
YWNlQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sICpn
bG9iYWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKLSAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogcHJvdGVjdGVkOgogICAgIHN0
YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNUZXN0SW50
ZXJmYWNlKEpTQzo6RXhlY1N0YXRlKik7CkBAIC0yODksNyArMjg5LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNU
ZXN0SW50ZXJmYWMKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKSB9OwogCi1K
U1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU1Rl
c3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBC
YXNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogewogfQpAQCAtMjk4LDcgKzI5OCw3IEBAIHZv
aWQgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwog
ICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0SW50ZXJmYWNlOjpnZXRQcm90b3R5cGUodm0sIGds
b2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0SW50ZXJmYWNlOjpn
ZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05v
bnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0SW50ZXJmYWNlIikp
KSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDEpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICByZWlm
eVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yVGFibGVWYWx1
ZXMsICp0aGlzKTsKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIEpTVGVzdEludGVyZmFjZVByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SW50
ZXJmYWNlOjpzX2luZm8gPSB7ICJUZXN0SW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVz
dEludGVyZmFjZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEludGVyZmFjZSkgfTsK
IAotSlNUZXN0SW50ZXJmYWNlOjpKU1Rlc3RJbnRlcmZhY2UoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0SW50ZXJmYWNlPiYmIGlt
cGwpCitKU1Rlc3RJbnRlcmZhY2U6OkpTVGVzdEludGVyZmFjZShTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RJbnRlcmZhY2U+JiYg
aW1wbCkKICAgICA6IEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0SW50ZXJmYWNl
PihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQogewogfQpAQCAtNzk3
LDcgKzc5Nyw3IEBAIHZvaWQgc2V0SlNUZXN0SW50ZXJmYWNlU3VwcGxlbWVudGFsTm9kZShFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iamVjdCwKIAogSlNWYWx1ZSBKU1Rlc3RJbnRl
cmZhY2U6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKICNpZiBF
TkFCTEUoQ29uZGl0aW9uMjIpIHx8IEVOQUJMRShDb25kaXRpb24yMykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2Uu
aAppbmRleCA2YTYyNTAyYjk5ZThiYzkyNDZjNDBhZTU5NDhkNTM3ZjViNWY5NmNhLi42MzI4ZjJi
ZjMzN2FkOThhZTU0N2I0OTAxNDc2YWMyZmY3YTk0N2ExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oCkBA
IC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJbXBs
ZW1lbnRhdGlvbjxUZXN0SW50ZXJmYWNlPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RJbnRlcmZh
Y2UqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWY8VGVzdEludGVyZmFjZT4mJiBpbXBsKQogICAgIHsKLSAgICAgICAg
SlNUZXN0SW50ZXJmYWNlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdEludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RJbnRlcmZhY2Uo
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVz
dEludGVyZmFjZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RJ
bnRlcmZhY2U+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0SW50ZXJmYWNlKHN0cnVj
dHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5p
c2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAg
IH0KQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90
IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiBwcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0SW50ZXJmYWNl
KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdEludGVyZmFjZT4m
Jik7CisgICAgSlNUZXN0SW50ZXJmYWNlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmpl
Y3QmLCBSZWY8VGVzdEludGVyZmFjZT4mJik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
Qzo6Vk0mIHZtKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDRkMzZiOGYzYWMzMTg2ZGExZjdjYzZmMTkzMjE2MGU4ZjU0MjVkZDAuLjQ2NjNi
MGI2NmVmM2YyYTFkMTA3ZTM2N2Y2ZmNlZDMyZDU3NmNkNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtNjAsMjIgKzYwLDIyIEBAIHByaXZhdGU6CiAK
IGNsYXNzIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9N
Q29uc3RydWN0b3JKU0J1aWx0aW5PYmplY3QgewogcHJpdmF0ZToKLSAgICBKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmpl
Y3QqKTsKKyAgICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6U3Ry
dWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
Qzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBET01D
b25zdHJ1Y3RvckpTQnVpbHRpbk9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3Rh
dGljIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKICAgICB7CiAgICAgICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3Ry
dWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yQ29uc3RydWN0b3Ioc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwotICAgICAgICBwdHIt
PmZpbmlzaENyZWF0aW9uKHZtLCAqZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAK
ICAgICBERUNMQVJFX0lORk87Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlND
OjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0
cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4g
SlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6
OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAg
IH0KIHByb3RlY3RlZDoKICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNvbnN0cnVjdEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKik7
CkBAIC05MCw3ICs5MCw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpjb25zdHJ1CiAKIGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcikg
fTsKIAotSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6SlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3Ry
dWN0b3I6OkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBCYXNlKHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogewogfQpAQCAtOTksMTAgKzk5LDEwIEBAIHZvaWQgSlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBKU0RPTUdsb2JhbE9iCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFT
U0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmdldFByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3Rvcjo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFk
T25seSB8IERvbnRFbnVtKTsKLSAgICBzZXRJbml0aWFsaXplRnVuY3Rpb24odm0sICpKU0M6OkpT
RnVuY3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgdGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9ySW5pdGlhbGl6ZVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvZGVHZW5lcmF0b3Iodm0pLCBn
bG9iYWxPYmplY3QpKTsKKyAgICBzZXRJbml0aWFsaXplRnVuY3Rpb24odm0sICpKU0M6OkpTRnVu
Y3Rpb246OmNyZWF0ZUJ1aWx0aW5GdW5jdGlvbih2bSwgdGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9y
SW5pdGlhbGl6ZVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvZGVHZW5lcmF0b3Iodm0pLCAmZ2xv
YmFsT2JqZWN0KSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBj
b25zdHJ1Y3REYXRhKQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIAogY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yKSB9OwogCi1KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6SlNU
ZXN0SlNCdWlsdGluQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBKU0RPTVdyYXBwZXIoc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QpIHsgfQogCiBKU09iamVjdCogSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OmNy
ZWF0ZVByb3RvdHlwZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC0x
NTcsNyArMTU3LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKIAogSlNWYWx1ZSBKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yPih2bSwganNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIHZvaWQgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3I6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgKaW5kZXggY2NiMjA0NDBlMTIx
OWM0ZDQ3YzFkMjRiMTA2YTA4ZTBkYWRkNmY5My4uZWEyMDk3NDg4YzE4NTdiMGM0MTRiNWVkNzgy
MzE4NWY1OWY1OWVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmgK
QEAgLTMwLDcgKzMwLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyIEJhc2U7
CiAgICAgc3RhdGljIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICB7
Ci0gICAgICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yPihnbG9iYWxPYmpl
Y3QtPnZtKCkuaGVhcCkpIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I+
KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3Ioc3Ry
dWN0dXJlLCAqZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9i
YWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KQEAgLTUwLDcgKzUw
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgSlND
OjpTbG90VmlzaXRvciYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsK
IAogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmlu
ZGV4IDI3ZTUxMWExMGIzMDFhYzY2ZmQ3N2I0YzE5ZGIzYzEyYTQzZDY5Y2UuLmNiNDFhMjk5MjNj
NTIyY2JkOGMyZThhNzM1M2Y2MGFkOTBkN2E2YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTY2LDI4ICs2NiwyOCBAQCBwcml2YXRlOgogCiBj
bGFzcyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9N
Q29uc3RydWN0b3JPYmplY3QgewogcHJpdmF0ZToKLSAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwor
ICAgIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVy
ZSosIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZN
JiwgSlNET01HbG9iYWxPYmplY3QmKTsKIAogcHVibGljOgogICAgIHR5cGVkZWYgRE9NQ29uc3Ry
dWN0b3JPYmplY3QgQmFzZTsKLSAgICBzdGF0aWMgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ckNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIEpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ICAgIHsKICAgICAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKiBw
dHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1lZGlhUXVlcnlMaXN0
TGlzdGVuZXJDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXJDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24odm0sICpnbG9iYWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0
aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAogICAg
IERFQ0xBUkVfSU5GTzsKLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVy
ZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpT
VmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQog
fTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvciIs
ICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lckNvbnN0cnVjdG9yKSB9OwogCi1KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Q29uc3RydWN0b3I6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcjo6SlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lckNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQogICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKIHsK
IH0KQEAgLTk2LDcgKzk2LDcgQEAgdm9pZCBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNET01HbG9iYWwKIHsKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyOjpnZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxl
dGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2V0UHJvdG90
eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFs
U3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpA
QCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6c19pbmZvID0geyAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIpIH07CiAKLUpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4mJiBp
bXBsKQorSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6SlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCwgUmVmPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiYmIGltcGwpCiAgICAgOiBKU0RP
TVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+KHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpCiB7CiB9CkBAIC0xNTAsNyAr
MTUwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0
cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWMKIAogSlNWYWx1ZSBKU1Rlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcj4odm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kKEV4
ZWNTdGF0ZSogc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
aAppbmRleCAxYzczMWMwZDBhNGEyMWMxZTNhMjdiMDFjYTEyNzY5YTgwMmI2MDhkLi45OTc3Yjk1
ZjNkMWMwNmIyNjQwNzNhNmRkNTc3YjhhYWU5ZTc5NDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogICAgIHR5
cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBj
cmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiYmIGltcGwpCiAgICAgewot
ICAgICAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+KGdsb2JhbE9i
amVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1v
dmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0o
KSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CiBwcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyPiYmKTsKKyAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXI+JiYpOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiB2bSkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNjA5Zjc4NTFi
YzUxYjU3ZmQwZmU3MGVlMTRlMzQzNTBkZWVmZjg4YS4uZGM5NTIxMWE0NDQxYTVmYjUyMzhlYmZl
Y2YyOTUyZjhiMGE0ZjA4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApA
QCAtNjIsMjIgKzYyLDIyIEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7CiBwcml2YXRlOgot
ICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpT
RE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMg
SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiAgICAgewogICAgICAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yPih2bS5oZWFwKSkgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwg
Kmdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9i
amVjdCk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwot
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiB9OwogCkBAIC04NSwyMiAr
ODUsMjIgQEAgY2xhc3MgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IgOiBw
dWJsaWMgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQKIHB1YmxpYzoKICAgICB0eXBlZGVmIERP
TUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IEJhc2U7CiAKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBz
dGF0aWMgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6
OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCkKICAgICB7CiAgICAgICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENv
bnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7
Ci0gICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgKmdsb2JhbE9iamVjdCk7
CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwogICAgIH0KIAotICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87CiAKIHByaXZhdGU6Ci0g
ICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUq
LCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENv
bnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICBzdGF0
aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdE5hbWVk
Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqKTsKICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwpA
QCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3ROYW1lZENvbnN0cnVjdG9y
Q29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcikgfTsKIAotSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ckNvbnN0cnVjdG9yOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
ICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiB7CiB9CkBAIC0xMTcsNyArMTE3
LDcgQEAgdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRQ
cm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9u
dERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0
ZXJhbCgiVGVzdE5hbWVkQ29uc3RydWN0b3IiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJl
YWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTQ3LDE2ICsxNDcsMTYgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6
Y29uc3RydWN0SlMKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1l
ZENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJBdWRpb0NvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25z
dHJ1Y3RvcikgfTsKIAotSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6OkpT
VGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNUZXN0TmFtZWRDb25zdHJ1Y3Rv
ck5hbWVkQ29uc3RydWN0b3I6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9y
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKIHsKIH0KIAogdm9pZCBKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKCZnbG9iYWxPYmplY3QpOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVj
dCk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRQcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVt
KTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0
TmFtZWRDb25zdHJ1Y3Rvcjo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJh
bCgiQXVkaW8iKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0p
OwogfQpAQCAtMTg0LDcgKzE4NCw3IEBAIHZvaWQgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvclByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFt
ZWRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdE5hbWVkQ29uc3RydWN0b3IiLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3IpIH07
CiAKLUpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3IoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0
TmFtZWRDb25zdHJ1Y3Rvcj4mJiBpbXBsKQorSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SlNUZXN0
TmFtZWRDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZENvbnN0cnVjdG9yPiYmIGltcGwpCiAgICAgOiBK
U0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdE5hbWVkQ29uc3RydWN0b3I+KHN0cnVj
dHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpCiB7CiB9CkBAIC0yMTUsMTIgKzIx
NSwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhcwogCiBKU1ZhbHVlIEpTVGVzdE5hbWVkQ29u
c3RydWN0b3I6OmdldENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRDb25zdHJ1
Y3RvckNvbnN0cnVjdG9yPih2bSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5hbWVkQ29uc3RydWN0
b3JDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmpl
Y3QpKTsKIH0KIAogSlNWYWx1ZSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXROYW1lZENvbnN0
cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0
b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICBy
ZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3Ry
dWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9
CiAKIGJvb2wgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFx
dWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgKaW5kZXggYzQ3NTIx
NjQ5MThlZmRiYzBhM2Q2NjgyOGE1YjZmOTNmZWY1NjQwYy4uN2YxOTgyZmQ5MjZmMWZlYTRhYzgy
MjYyMjAzNWY2Njg1MWJiYzNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCkBA
IC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJbXBs
ZW1lbnRhdGlvbjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4gQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0
TmFtZWRDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4mJiBp
bXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvciogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yPihnbG9iYWxP
YmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5hbWVkQ29uc3RydWN0b3Ioc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0
b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKICAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRy
OwogICAgIH0KQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU0M6OkpTVmFs
dWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKICAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldE5hbWVkQ29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKIHByb3RlY3RlZDoKLSAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKEpT
Qzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdE5hbWVkQ29uc3RydWN0
b3I+JiYpOworICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RP
TUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4mJik7CiAKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mIHZtKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAppbmRleCA0ZDY3
NmQ5ZGNmYTU4NjUwNTUzYTRjNzBkMzQ3YTNjMmJkZWNlMDRmLi4wZGZlZmJkNjQ3ZDY4Nzk5YjUx
MDA5YTdkMzEzOTA3YmI5NjY3ZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCkBAIC02NSwyMiArNjUsMjIgQEAg
cHJpdmF0ZToKIAogY2xhc3MgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0
cnVjdG9yT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgSlNUZXN0Tm9kZUNvbnN0cnVjdG9yKEpTQzo6
U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKKyAgICBKU1Rlc3ROb2RlQ29uc3RydWN0
b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAKIHB1YmxpYzoKICAgICB0
eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpTVGVzdE5vZGVD
b25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBKU1Rlc3ROb2Rl
Q29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICB7CiAgICAgICAgIEpTVGVz
dE5vZGVDb25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3ROb2RlQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1Rlc3ROb2RlQ29uc3RydWN0b3Ioc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCAq
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87Ci0g
ICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkK
KyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0
VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIHByb3RlY3RlZDoKICAgICBz
dGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdE5v
ZGUoSlNDOjpFeGVjU3RhdGUqKTsKQEAgLTk2LDcgKzk2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdE5vZGUoRXhl
Y1N0YXQKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdE5vZGVDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0Rf
VEFCTEUoSlNUZXN0Tm9kZUNvbnN0cnVjdG9yKSB9OwogCi1KU1Rlc3ROb2RlQ29uc3RydWN0b3I6
OkpTVGVzdE5vZGVDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6SlNUZXN0Tm9kZUNv
bnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFs
T2JqZWN0KQogICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKIHsKIH0KQEAgLTEw
NSw3ICsxMDUsNyBAQCB2b2lkIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZQogewogICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Ci0gICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5vZGU6OmdldFByb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RO
b2RlOjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9u
bHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0Tm9kZSIp
KSksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiB9CkBAIC0x
MzQsNyArMTM0LDcgQEAgdm9pZCBKU1Rlc3ROb2RlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROb2RlOjpzX2luZm8gPSB7ICJUZXN0Tm9k
ZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Tm9kZSkgfTsK
IAotSlNUZXN0Tm9kZTo6SlNUZXN0Tm9kZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROb2RlPiYmIGltcGwpCitKU1Rlc3ROb2Rl
OjpKU1Rlc3ROb2RlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdE5vZGU+JiYgaW1wbCkKICAgICA6IEpTTm9kZShzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKQogewogfQpAQCAtMTk2LDcgKzE5Niw3IEBA
IHZvaWQgc2V0SlNUZXN0Tm9kZU5hbWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VP
YmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoCiAKIEpTVmFsdWUgSlNUZXN0Tm9kZTo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROb2RlQ29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUZXN0Tm9kZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdE5vZGU6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCmluZGV4IGVhZGEwOTVj
Y2JhMzQ0ZmM3M2UxM2QxOWJmNzcyYzQyYmJiMmE3OWEuLjhmZDBkM2QyMmNkNDVkNzljY2E3Y2Nh
YTNhZGJhMTM3ZDgwNjc5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaApAQCAtMzEsNyArMzEsNyBAQCBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBKU05vZGUgQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0Tm9kZSogY3JlYXRlKEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFJlZjxUZXN0Tm9kZT4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0Tm9kZSogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROb2RlPihnbG9iYWxPYmplY3Qt
PnZtKCkuaGVhcCkpIEpTVGVzdE5vZGUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92
ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdE5vZGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjph
bGxvY2F0ZUNlbGw8SlNUZXN0Tm9kZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RO
b2RlKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKICAgICAgICAg
cHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4g
cHRyOwogICAgIH0KQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8VGVzdE5vZGUmPihCYXNlOjppbXBsKCkpOwogICAgIH0KIHByb3RlY3RlZDoKLSAg
ICBKU1Rlc3ROb2RlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVz
dE5vZGU+JiYpOworICAgIEpTVGVzdE5vZGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9i
amVjdCYsIFJlZjxUZXN0Tm9kZT4mJik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6
Vk0mIHZtKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNwcAppbmRleCA4
MzNhYTM5MmFkOThhZmRiYWY4NDZiZmNkMGYyYzI5MGY5ZTk4ODY4Li40ZjQyOTAyMzU2NTFlOTE1
ZTc2ZGE2ODcwNmE0MTVjNjgwY2U2YjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0
aWMuY3BwCkBAIC04MiwyOCArODIsMjggQEAgcHJpdmF0ZToKIAogY2xhc3MgSlNUZXN0Tm9uZGV0
ZXJtaW5pc3RpY0NvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKIHBy
aXZhdGU6Ci0gICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKEpTQzo6U3RydWN0
dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKKyAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29u
c3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQg
ZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAKIHB1YmxpYzoK
ICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpTVGVz
dE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAg
IHN0YXRpYyBKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZN
JiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKICAgICB7CiAgICAgICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3Rv
ciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROb25kZXRlcm1p
bmlzdGljQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3Ry
dWN0b3Ioc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0
aW9uKHZtLCAqZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwg
Z2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKICAgICBERUNMQVJF
X0lORk87Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIH07CiAKIGNv
bnN0IENsYXNzSW5mbyBKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3I6OnNfaW5mbyA9
IHsgIlRlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcikgfTsK
IAotSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yOjpKU1Rlc3ROb25kZXRlcm1pbmlz
dGljQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCitKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3I6OkpTVGVzdE5v
bmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmpl
Y3QpCiB7CiB9CkBAIC0xMTIsNyArMTEyLDcgQEAgdm9pZCBKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QKIHsK
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8o
KSkpOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rl
c3ROb25kZXRlcm1pbmlzdGljOjpnZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnRE
ZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6Z2V0UHJvdG90eXBl
KHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3Ry
aW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiVGVzdE5vbmRldGVybWluaXN0aWMiKSkpLCBS
ZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTQwLDcg
KzE0MCw3IEBAIHZvaWQgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6
c19pbmZvID0geyAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5vbmRldGVybWluaXN0aWMpIH07CiAKLUpTVGVzdE5vbmRl
dGVybWluaXN0aWM6OkpTVGVzdE5vbmRldGVybWluaXN0aWMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Yz4mJiBpbXBsKQorSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6SlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
YyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwg
UmVmPFRlc3ROb25kZXRlcm1pbmlzdGljPiYmIGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXJXaXRo
SW1wbGVtZW50YXRpb248VGVzdE5vbmRldGVybWluaXN0aWM+KHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0LCBXVEY6Om1vdmUoaW1wbCkpCiB7CiB9CkBAIC00NDIsNyArNDQyLDcgQEAgdm9pZCBzZXRK
U1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRlckV4Y2VwdGlvbkF0dHIo
RXhlY1N0YXRlKiBzdGEKIAogSlNWYWx1ZSBKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpnZXRDb25z
dHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3Rvcj4o
dm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3I+KHZt
LCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3RvdHlwZUZ1
bmN0aW9uTm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5vbmRldGVybWluaXN0aWMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmgKaW5kZXggNzM3Y2I4ZjQxNDRjYzhjZDQ2Mzhl
NDcyYWVlNDIyYzM1YjVhMmFkMy4uYjcyOWQzYjM3ZGQ0ZjNkYTFjOTdjM2VlN2IzNGRmZTlkNzlk
NTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5vbmRldGVybWluaXN0aWMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oCkBAIC0zMiw3ICszMiw3IEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0
Tm9uZGV0ZXJtaW5pc3RpYz4gQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
YyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4mJiBpbXBsKQogICAgIHsKLSAg
ICAgICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPihnbG9iYWxPYmplY3QtPnZtKCkuaGVh
cCkpIEpTVGVzdE5vbmRldGVybWluaXN0aWMoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6
bW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMqIHB0ciA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4oZ2xvYmFs
T2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROb25kZXRlcm1pbmlzdGljKHN0cnVjdHVyZSwgKmds
b2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlv
bihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KQEAgLTUx
LDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25zdHJ1
Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogcHJvdGVjdGVkOgotICAgIEpT
VGVzdE5vbmRldGVybWluaXN0aWMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCos
IFJlZjxUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4mJik7CisgICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
YyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3ROb25kZXRlcm1p
bmlzdGljPiYmKTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0pCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcAppbmRleCA2YmUwY2IyZWM0MmZjNTBkMDIzMWJiZmE3MDhlZWQzMmE3MTVjMzI4
Li40MTViMmRkOGRmZjFlYTk4MDg5NjIxMTQzZThjMjIwZDAxMDYzMDU3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApA
QCAtMzQ3LDIyICszNDcsMjIgQEAgcHJpdmF0ZToKIAogY2xhc3MgSlNUZXN0T2JqQ29uc3RydWN0
b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgewogcHJpdmF0ZToKLSAgICBKU1Rlc3RP
YmpDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAg
SlNUZXN0T2JqQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYp
OwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7
CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7Ci0gICAg
c3RhdGljIEpTVGVzdE9iakNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAg
c3RhdGljIEpTVGVzdE9iakNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAg
ewogICAgICAgICBKU1Rlc3RPYmpDb25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEpTVGVzdE9iakNv
bnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hD
cmVhdGlvbih2bSwgKmdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCiAgICAgREVD
TEFSRV9JTkZPOwotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUo
SlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3Ry
dWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiBwcm90
ZWN0ZWQ6CiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKU1Rlc3RPYmooSlNDOjpFeGVjU3RhdGUqKTsKQEAgLTQ4NSw3ICs0ODUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RK
U1Rlc3RPYmooRXhlY1N0YXRlKgogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIlRlc3RPYmplY3RDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T2JqQ29uc3RydWN0b3IpIH07CiAKLUpTVGVzdE9i
akNvbnN0cnVjdG9yOjpKU1Rlc3RPYmpDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdE9iakNvbnN0cnVjdG9yOjpK
U1Rlc3RPYmpDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiB7
CiB9CkBAIC00OTQsNyArNDk0LDcgQEAgdm9pZCBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWMKIHsKICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwot
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RPYmo6
OmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwg
RG9udEVudW0pOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBKU1Rlc3RPYmo6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRl
c3RPYmplY3QiKSkpLCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udEVudW0p
OwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0T2JqQ29uc3RydWN0b3JUYWJs
ZVZhbHVlcywgKnRoaXMpOwpAQCAtNzI1LDcgKzcyNSw3IEBAIHZvaWQgSlNUZXN0T2JqUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPYmo6
OnNfaW5mbyA9IHsgIlRlc3RPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0T2JqVGFibGUs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T2JqKSB9OwogCi1KU1Rlc3RPYmo6OkpTVGVzdE9i
aihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UmVmPFRlc3RPYmo+JiYgaW1wbCkKK0pTVGVzdE9iajo6SlNUZXN0T2JqKFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE9iaj4mJiBp
bXBsKQogICAgIDogSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RPYmo+KHN0cnVj
dHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpCiB7CiB9CkBAIC0zMTYyLDcgKzMx
NjIsNyBAQCB2b2lkIHNldEpTVGVzdE9ialB1dEZvcndhcmRzTnVsbGFibGVBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgSlNPYmplY3QqIGJhc2VPYgogCiBKU1ZhbHVlIEpTVGVzdE9iajo6Z2V0
Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcj4odm0sIGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvblZvaWRNZXRob2QoRXhlY1N0YXRlKiBzdGF0ZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouaAppbmRleCBhNDczYTg0MGNjOWU3NWFkZjUwOGI2ZDA1MDI2MDcyZWIxZDBlNGY0Li43Njlm
MWVlMTY2OTU4NzJkZTE1NzA2MmIzYWY4MTVlY2M4YTgzYTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCkBAIC0zMiw3ICsz
Miw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlv
bjxUZXN0T2JqPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RPYmoqIGNyZWF0ZShKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVz
dE9iaj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0T2JqKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE9iaj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXAp
KSBKU1Rlc3RPYmooc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7Cisg
ICAgICAgIEpTVGVzdE9iaiogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RPYmo+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0T2JqKHN0cnVjdHVyZSwg
Kmdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KQEAg
LTY3LDcgKzY3LDcgQEAgcHVibGljOgogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFz
ZTo6U3RydWN0dXJlRmxhZ3M7CiBwcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0T2JqKEpTQzo6U3RydWN0
dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdE9iaj4mJik7CisgICAgSlNUZXN0T2Jq
KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE9iaj4mJik7CiAK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mIHZtKQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCBhMGE3NjhlNjkyYjNiNjE1
MDVmOGI4MTVjNGJjOTUwYTIyZmM2ZjhjLi42YWM1ZmEzZTk1MTM4Y2Q4ZWZkZWRhZjVmMjg4NzU0
NjdkZTQyZGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwCkBAIC02MiwyMiArNjIsMjIgQEAgcHJpdmF0ZToKIAogY2xhc3MgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsK
IHByaXZhdGU6Ci0gICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKEpT
Qzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKKyAgICBKU1Rlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0
Jik7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7Ci0g
ICAgc3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciogY3JlYXRl
KEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
Q29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICB7CiAgICAgICAgIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I+
KHZtLmhlYXApKSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3Ioc3RydWN0
dXJlLCBnbG9iYWxPYmplY3QpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCAqZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0
KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87Ci0gICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIHByb3RlY3RlZDoKICAgICBzdGF0
aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMoSlNDOjpFeGVjU3RhdGUqKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnND
b25zdHJ1Y3Rvcjo6Y29uc3RydWN0SgogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9yc0NvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IpIH07CiAKLUpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rvcjo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc0NvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQorSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpK
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBCYXNlKHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0KQogewogfQpAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
RE9NR2xvYmFsCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChp
bmhlcml0cyhpbmZvKCkpKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0UHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM6OmdldFByb3RvdHlwZSh2bSwgJmdsb2JhbE9iamVjdCksIERvbnREZWxldGUg
fCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIlRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFk
T25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIAogY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OnNfaW5mbyA9IHsgIlRl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKSB9OwogCi1KU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM+JiYgaW1wbCkKK0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6
OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cz4mJiBpbXBsKQogICAgIDogSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGlt
cGwpKQogewogfQpAQCAtMjM2LDcgKzIzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjCiAK
IEpTVmFsdWUgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I+KHZtLCBq
c0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yPih2
bSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiBib29s
IEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVl
Um9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRv
ciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCmlu
ZGV4IDhhZGU1NzY0ZDY2ZjYxYTdiYjI2ZjA2ZDhmMGQ0NWI1M2I2MTBkYWIuLjEzOWUzNDQxNjgz
MGRiZDM5Njc5OTcwOTUyMjRlM2I2MGExNGE3MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnM+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIGNyZWF0
ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZWY8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+JiYgaW1wbCkKICAgICB7Ci0gICAg
ICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlND
OjphbGxvY2F0ZUNlbGw8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oZ2xvYmFsT2JqZWN0
LT52bSgpLmhlYXApKSBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKHN0cnVjdHVyZSwgZ2xv
YmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOworICAgICAgICBKU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyhzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURjo6bW92ZShp
bXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsK
ICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNH
bG9iYWxPYmplY3QqKTsKIHByb3RlY3RlZDoKLSAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM+JiYpOworICAgIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoSlND
OjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycz4mJik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mIHZtKQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRleCA5YWE1YTg3YWNlNDI3
NGY2MWE3NWNkMjRkYTY4MzE1NDg4N2NkZjhiLi5lODlmZTFjYmE1MGQ3MDI4MWM5MGQxY2E3YTcz
MzE3MDc1OTAzOGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCkBAIC02
OCwyMiArNjgsMjIgQEAgcHJpdmF0ZToKIAogY2xhc3MgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc0Nv
bnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAg
SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01H
bG9iYWxPYmplY3QqKTsKKyAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IoSlND
OjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVm
IERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpTVGVzdE92ZXJyaWRlQnVp
bHRpbnNDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAg
ICB7CiAgICAgICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvciogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3Ry
dWN0b3I+KHZtLmhlYXApKSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3Ioc3RydWN0
dXJlLCBnbG9iYWxPYmplY3QpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCAqZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0
KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87Ci0gICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIH07CiAKQEAgLTEwMyw3ICsxMDMs
NyBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Rh
YmxlVmFsdWVzW10gPQogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNUYWJsZVZhbHVl
cywgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1RhYmxlSW5kZXggfTsKIGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcikgfTsKIAotSlNUZXN0T3ZlcnJp
ZGVCdWlsdGluc0NvbnN0cnVjdG9yOjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3Io
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiB7CiB9CkBAIC0x
MTIsNyArMTEyLDcgQEAgdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zOjpnZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0UHJvdG90eXBlKHZtLCAmZ2xvYmFsT2Jq
ZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5n
KEFTQ0lJTGl0ZXJhbCgiVGVzdE92ZXJyaWRlQnVpbHRpbnMiKSkpLCBSZWFkT25seSB8IERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQg
SlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6c19pbmZvID0geyAiVGVz
dE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
c1RhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMpIH07CiAK
LUpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnMoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0T3Zl
cnJpZGVCdWlsdGlucz4mJiBpbXBsKQorSlNUZXN0T3ZlcnJpZGVCdWlsdGluczo6SlNUZXN0T3Zl
cnJpZGVCdWlsdGlucyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCwgUmVmPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpCiAgICAgOiBKU0RP
TVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdE92ZXJyaWRlQnVpbHRpbnM+KHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpCiB7CiB9CkBAIC0yMDcsNyArMjA3LDcg
QEAgdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3QKIAogSlNWYWx1ZSBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3Rvcj4odm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29u
c3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T3ZlcnJpZGVCdWlsdGlu
c1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEV4ZWNTdGF0ZSogc3RhdGUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVC
dWlsdGlucy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE92ZXJyaWRlQnVpbHRpbnMuaAppbmRleCBlNGUyMDBjN2QwOTM2NDZhMWFiN2U5MTNkN2FlNjIz
N2RmYTNhOTJkLi44MzkzOThkNTMwNmQwMzMzYjVlMWE2MjdhMjBmMzY5MWQ3ZjE4MmI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3Zl
cnJpZGVCdWlsdGlucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgog
ICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RPdmVycmlkZUJ1
aWx0aW5zPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKiBjcmVhdGUo
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUmVmPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rl
c3RPdmVycmlkZUJ1aWx0aW5zKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0
T3ZlcnJpZGVCdWlsdGlucyhzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwp
KTsKKyAgICAgICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zPihnbG9iYWxPYmplY3QtPnZt
KCkuaGVhcCkpIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0
LCBXVEY6Om1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9i
amVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpAQCAtNTYsNyArNTYsNyBA
QCBwdWJsaWM6CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gSlNDOjpIYXNJbXB1cmVHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6OkludGVyY2VwdHNH
ZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92
ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1l
cyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogcHJvdGVjdGVkOgotICAgIEpTVGVzdE92ZXJyaWRl
QnVpbHRpbnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0T3Zl
cnJpZGVCdWlsdGlucz4mJik7CisgICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyhKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiYmKTsK
IAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0pCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRl
eCA0NjgxMmZmYTk3MGMwMzUzOGQ3NTI3MTEwNWQ5OWE2NTgwYjdlZTJlLi5jZTQzZTBhMzhjMDQ0
Y2JmZTNhN2YzNmIxMTY4NjU1ZGI0MDRjYjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtNzMsMjggKzczLDI4IEBA
IHByaXZhdGU6CiAKIGNsYXNzIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNv
bnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAg
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoSlNDOjpTdHJ1
Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVj
dCYpOwogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwot
ICAgIHN0YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rv
ciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAg
IHsKICAgICAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0
b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1Rlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVj
dCk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sICpnbG9iYWxPYmplY3QpOworICAg
ICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1
cm4gcHRyOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKLSAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CiAgICAgfQogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBD
UkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNv
bnN0cnVjdG9yKSB9OwogCi1KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25z
dHJ1Y3Rvcjo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3Io
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6SlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBCYXNlKHN0cnVjdHVy
ZSwgZ2xvYmFsT2JqZWN0KQogewogfQpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgSlNECiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAgIEFTU0VSVChp
bmhlcml0cyhpbmZvKCkpKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpnZXRQcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpnZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmpl
Y3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmco
QVNDSUlMaXRlcmFsKCJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIikpKSwgUmVh
ZE9ubHkgfCBEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTEzMCw3ICsx
MzAsNyBAQCB2b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpzX2luZm8gPSB7ICJUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UpIH07CiAKLUpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4mJiBpbXBsKQorSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIFJlZjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiYmIGltcGwp
CiAgICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZT4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBs
KSkKIHsKIH0KQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lkIHNldEpTVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZUNhY2hlZFZhbHVlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZQogCiBK
U1ZhbHVlIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6Z2V0Q29uc3RydWN0
b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25z
dHJ1Y3Rvcj4odm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwor
ICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2VDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2U6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaApp
bmRleCBlYjkyNDZiMmY0NDQxYTdjNjEyN2QzNDM2YmJhOWJkMTFiZmYxMTRhLi5mMWM4YWVmMGE1
MmE1MDMwMzFiYzQ2MTA0OWY5ZjMwNGIxY2Y5ZjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCkBAIC0zNCw3ICszNCw3IEBAIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZT4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4oZ2xvYmFsT2JqZWN0
LT52bSgpLmhlYXApKSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uoc3RydWN0
dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+KGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKSkgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKHN0cnVj
dHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5p
c2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAg
IH0KQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgSlNDOjpTbG90VmlzaXRvciYpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9i
YWxPYmplY3QqLCBSZWY8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4mJik7Cisg
ICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZT4mJik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mIHZtKQogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RU
eXBlZGVmcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0VHlwZWRlZnMuY3BwCmluZGV4IGU2YjJmYzBiYWZmNDE4NzdmYTg2YTM0Mjg2ZGM4MzZlYjcy
MzVmMjQuLmRjNDU5ZjllNDA5MTNiNzM4MjdkYjRkNzRmZjJhNTE0Yzc4ZDRhOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVm
cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmNwcApAQCAtOTksMjIgKzk5LDIyIEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTVGVz
dFR5cGVkZWZzQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgewogcHJp
dmF0ZToKLSAgICBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QqKTsKKyAgICBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKEpTQzo6U3Ry
dWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
Qzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBET01D
b25zdHJ1Y3Rvck9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVj
dG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIEpTVGVzdFR5cGVkZWZzQ29u
c3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICB7CiAgICAgICAgIEpTVGVzdFR5
cGVkZWZzQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8
SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEpTVGVzdFR5cGVkZWZzQ29uc3Ry
dWN0b3Ioc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0
aW9uKHZtLCAqZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwg
Z2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKICAgICBERUNMQVJF
X0lORk87Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpW
TSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHBy
b3RvdHlwZSkKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIHByb3RlY3Rl
ZDoKICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTVGVzdFR5cGVkZWZzKEpTQzo6RXhlY1N0YXRlKik7CkBAIC0xNTksNyArMTU5LDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpjb25z
dHJ1Y3RKU1Rlc3RUeXBlZGVmcygKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdFR5cGVkZWZzQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RUeXBlZGVmc0NvbnN0cnVjdG9yIiwgJkJhc2U6OnNf
aW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKSB9
OwogCi1KU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9y
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvcihTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICA6
IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiB7CiB9CkBAIC0xNjgsNyArMTY4LDcgQEAg
dm9pZCBKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWwKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RUeXBlZGVmczo6Z2V0UHJvdG90eXBlKHZtLCBn
bG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFR5cGVkZWZzOjpn
ZXRQcm90b3R5cGUodm0sICZnbG9iYWxPYmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBqc05v
bnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoQVNDSUlMaXRlcmFsKCJUZXN0VHlwZWRlZnMiKSkp
LCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMiksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogICAgIHJlaWZ5
U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3RvclRhYmxlVmFsdWVz
LCAqdGhpcyk7CkBAIC0yMTMsNyArMjEzLDcgQEAgdm9pZCBKU1Rlc3RUeXBlZGVmc1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0VHlwZWRl
ZnM6OnNfaW5mbyA9IHsgIlRlc3RUeXBlZGVmcyIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RUeXBl
ZGVmc1RhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFR5cGVkZWZzKSB9OwogCi1KU1Rl
c3RUeXBlZGVmczo6SlNUZXN0VHlwZWRlZnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0VHlwZWRlZnM+JiYgaW1wbCkKK0pTVGVz
dFR5cGVkZWZzOjpKU1Rlc3RUeXBlZGVmcyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RUeXBlZGVmcz4mJiBpbXBsKQogICAgIDog
SlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RUeXBlZGVmcz4oc3RydWN0dXJlLCBn
bG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KQEAgLTQ5Myw3ICs0OTMsNyBAQCB2
b2lkIHNldEpTVGVzdFR5cGVkZWZzU3RyaW5nQXR0cldpdGhTZXR0ZXJFeGNlcHRpb24oRXhlY1N0
YXRlKiBzdGF0ZSwgSlNPYmplY3QqCiAKIEpTVmFsdWUgSlNUZXN0VHlwZWRlZnM6OmdldENvbnN0
cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1
cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcj4odm0sIGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdFR5cGVkZWZzUHJvdG90eXBlRnVuY3Rpb25GdW5jKEV4ZWNTdGF0ZSogc3Rh
dGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0VHlwZWRlZnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RUeXBlZGVmcy5oCmluZGV4IGYyY2U5MzZiN2FkZDcwNTI3Y2Q0Mzc5ZmMyYTNmMDc3
ZTQ2YTA3NjYuLjhjYTc3NmY5MmNmMWZjYjc3MTVkMzE5YWQ4Y2M0NWI3NzEzY2NkYWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBl
ZGVmcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RUeXBlZGVmcy5oCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9N
V3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0VHlwZWRlZnM+IEJhc2U7CiAgICAgc3RhdGlj
IEpTVGVzdFR5cGVkZWZzKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RUeXBlZGVmcz4mJiBpbXBsKQogICAg
IHsKLSAgICAgICAgSlNUZXN0VHlwZWRlZnMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0VHlwZWRlZnM+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0
VHlwZWRlZnMoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAg
ICAgIEpTVGVzdFR5cGVkZWZzKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdFR5cGVkZWZzPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdFR5cGVkZWZz
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKICAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRy
OwogICAgIH0KQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVy
dHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiBwcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0VHlw
ZWRlZnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0VHlwZWRl
ZnM+JiYpOworICAgIEpTVGVzdFR5cGVkZWZzKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxP
YmplY3QmLCBSZWY8VGVzdFR5cGVkZWZzPiYmKTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
SlNDOjpWTSYgdm0pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKaW5kZXggZjJjNTczMWVmZWM2YzgzYjk2
MDM2OTVhMzUxMmU0NjE0ODRmMWI3ZS4uZGM1NjY1ZDAzZjQ0NmY5MThjNzQyNzFjNWEyZWFlN2Mw
ZTY4ZThhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTYXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCkBAIC02MiwyOCArNjIsMjggQEAgcHJpdmF0ZToKIAog
Y2xhc3MgSlNhdHRyaWJ1dGVDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVj
dCB7CiBwcml2YXRlOgotICAgIEpTYXR0cmlidXRlQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUq
LCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTYXR0cmlidXRlQ29uc3RydWN0b3IoSlNDOjpT
dHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
SlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIERP
TUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpTYXR0cmlidXRlQ29uc3RydWN0
b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgSlNhdHRyaWJ1dGVDb25zdHJ1
Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIHsKICAgICAgICAgSlNhdHRyaWJ1dGVD
b25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU2F0dHJp
YnV0ZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNhdHRyaWJ1dGVDb25zdHJ1Y3RvcihzdHJ1Y3R1
cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sICpnbG9i
YWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3Qp
OwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKLSAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogfTsKIAogY29uc3QgQ2xhc3NJbmZv
IEpTYXR0cmlidXRlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgImF0dHJpYnV0ZUNvbnN0cnVjdG9y
IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU2F0dHJpYnV0ZUNvbnN0
cnVjdG9yKSB9OwogCi1KU2F0dHJpYnV0ZUNvbnN0cnVjdG9yOjpKU2F0dHJpYnV0ZUNvbnN0cnVj
dG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQorSlNhdHRyaWJ1dGVDb25zdHJ1Y3Rvcjo6SlNhdHRyaWJ1dGVDb25zdHJ1Y3RvcihTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICA6IEJh
c2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiB7CiB9CkBAIC05Miw3ICs5Miw3IEBAIHZvaWQg
SlNhdHRyaWJ1dGVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOwogICAg
IEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKLSAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNhdHRyaWJ1dGU6OmdldFByb3RvdHlwZSh2bSwgZ2xvYmFsT2Jq
ZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOworICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU2F0dHJpYnV0ZTo6Z2V0UHJvdG90eXBl
KHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3Ry
aW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgiYXR0cmlidXRlIikpKSwgUmVhZE9ubHkgfCBE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDApLCBSZWFkT25seSB8IERvbnRFbnVtKTsKIH0KQEAgLTExNSw3ICsxMTUsNyBAQCB2
b2lkIEpTYXR0cmlidXRlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKIGNvbnN0
IENsYXNzSW5mbyBKU2F0dHJpYnV0ZTo6c19pbmZvID0geyAiYXR0cmlidXRlIiwgJkJhc2U6OnNf
aW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU2F0dHJpYnV0ZSkgfTsKIAotSlNhdHRyaWJ1
dGU6OkpTYXR0cmlidXRlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWY8YXR0cmlidXRlPiYmIGltcGwpCitKU2F0dHJpYnV0ZTo6SlNhdHRy
aWJ1dGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QsIFJlZjxhdHRyaWJ1dGU+JiYgaW1wbCkKICAgICA6IEpTRE9NV3JhcHBlcldpdGhJbXBsZW1l
bnRhdGlvbjxhdHRyaWJ1dGU+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1w
bCkpCiB7CiB9CkBAIC0xNjMsNyArMTYzLDcgQEAgRW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZVZhbHVlLCBFbmMKIAog
SlNWYWx1ZSBKU2F0dHJpYnV0ZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU2F0dHJp
YnV0ZUNvbnN0cnVjdG9yPih2bSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTYXR0cmlidXRlQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAK
IGJvb2wgSlNhdHRyaWJ1dGVPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpI
YW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0
dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0
cmlidXRlLmgKaW5kZXggY2EzYjExMDMyNzE2OTAyYjEyYjI2MmQxYmJhYTY0Y2QyMzI0ZWY1ZC4u
ZjZlZGNlMzA0Y2IwYmY3YTg4MjdmNDk3NjU3OGI5ZjE1OTZlNmFjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKQEAg
LTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxl
bWVudGF0aW9uPGF0dHJpYnV0ZT4gQmFzZTsKICAgICBzdGF0aWMgSlNhdHRyaWJ1dGUqIGNyZWF0
ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZWY8YXR0cmlidXRlPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU2F0dHJpYnV0ZSog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU2F0dHJpYnV0ZT4oZ2xvYmFs
T2JqZWN0LT52bSgpLmhlYXApKSBKU2F0dHJpYnV0ZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwg
V1RGOjptb3ZlKGltcGwpKTsKKyAgICAgICAgSlNhdHRyaWJ1dGUqIHB0ciA9IG5ldyAoTm90TnVs
bCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNhdHRyaWJ1dGU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFw
KSkgSlNhdHRyaWJ1dGUoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkp
OwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAg
ICAgIHJldHVybiBwdHI7CiAgICAgfQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFs
T2JqZWN0Kik7CiBwcm90ZWN0ZWQ6Ci0gICAgSlNhdHRyaWJ1dGUoSlNDOjpTdHJ1Y3R1cmUqLCBK
U0RPTUdsb2JhbE9iamVjdCosIFJlZjxhdHRyaWJ1dGU+JiYpOworICAgIEpTYXR0cmlidXRlKEpT
Qzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8YXR0cmlidXRlPiYmKTsKIAog
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0pCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCmlu
ZGV4IGY0NDhmNTUzMjc5MjgxNTVjYTBkNmRhYzRiZmNjOTQxM2U4YzMyOWUuLjlkNTgwODQxY2Mx
ODA3YTQyOThkNTMzMGJhMWZjYjhkMzM1NWQxMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5jcHAKQEAgLTU5LDI4ICs1
OSwyOCBAQCBwcml2YXRlOgogCiBjbGFzcyBKU3JlYWRvbmx5Q29uc3RydWN0b3IgOiBwdWJsaWMg
RE9NQ29uc3RydWN0b3JPYmplY3QgewogcHJpdmF0ZToKLSAgICBKU3JlYWRvbmx5Q29uc3RydWN0
b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTcmVhZG9ubHlD
b25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKIAogcHVibGlj
OgogICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JPYmplY3QgQmFzZTsKLSAgICBzdGF0aWMgSlNy
ZWFkb25seUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIEpT
cmVhZG9ubHlDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIHsKICAgICAg
ICAgSlNyZWFkb25seUNvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTcmVhZG9ubHlDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEpTcmVhZG9ubHlDb25zdHJ1
Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRp
b24odm0sICpnbG9iYWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBn
bG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAogICAgIERFQ0xBUkVf
SU5GTzsKLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJv
dG90eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVy
ZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlND
OjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogfTsKIAogY29u
c3QgQ2xhc3NJbmZvIEpTcmVhZG9ubHlDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAicmVhZG9ubHlD
b25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNyZWFk
b25seUNvbnN0cnVjdG9yKSB9OwogCi1KU3JlYWRvbmx5Q29uc3RydWN0b3I6OkpTcmVhZG9ubHlD
b25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKK0pTcmVhZG9ubHlDb25zdHJ1Y3Rvcjo6SlNyZWFkb25seUNvbnN0cnVjdG9yKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAg
IDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKIHsKIH0KQEAgLTg5LDcgKzg5LDcgQEAg
dm9pZCBKU3JlYWRvbmx5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamUKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7
CiAgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOwotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU3JlYWRvbmx5OjpnZXRQcm90b3R5cGUodm0sIGdsb2Jh
bE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKKyAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNyZWFkb25seTo6Z2V0UHJvdG90
eXBlKHZtLCAmZ2xvYmFsT2JqZWN0KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFs
U3RyaW5nKCZ2bSwgU3RyaW5nKEFTQ0lJTGl0ZXJhbCgicmVhZG9ubHkiKSkpLCBSZWFkT25seSB8
IERvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMCksIFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQpAQCAtMTExLDcgKzExMSw3IEBA
IHZvaWQgSlNyZWFkb25seVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiBjb25z
dCBDbGFzc0luZm8gSlNyZWFkb25seTo6c19pbmZvID0geyAicmVhZG9ubHkiLCAmQmFzZTo6c19p
bmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTcmVhZG9ubHkpIH07CiAKLUpTcmVhZG9ubHk6
OkpTcmVhZG9ubHkoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFJlZjxyZWFkb25seT4mJiBpbXBsKQorSlNyZWFkb25seTo6SlNyZWFkb25seShT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVm
PHJlYWRvbmx5PiYmIGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248
cmVhZG9ubHk+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpCiB7CiB9
CkBAIC0xNDIsNyArMTQyLDcgQEAgRW5jb2RlZEpTVmFsdWUganNyZWFkb25seUNvbnN0cnVjdG9y
KEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlVmFsdWUsIEVuY28KIAogSlNWYWx1ZSBK
U3JlYWRvbmx5OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTcmVhZG9ubHlDb25zdHJ1
Y3Rvcj4odm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU3JlYWRvbmx5Q29uc3RydWN0b3I+KHZtLCAqanND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIGJvb2wgSlNyZWFk
b25seU93bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVu
a25vd24+IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5LmgKaW5kZXgg
ZmM0OGFmOGIzYWNlZTE1ODYwMGU0MTkyYjhjYmRlYTM3Y2QyZWMxMS4uZTI5YTcxNmNjNjdhNTIw
YTZkMWU5ZjAxNDU1NDg3MzBiM2Q2NDQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVhZG9ubHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNyZWFkb25seS5oCkBAIC0zMiw3ICszMiw3IEBAIHB1
YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxyZWFkb25s
eT4gQmFzZTsKICAgICBzdGF0aWMgSlNyZWFkb25seSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxyZWFkb25seT4m
JiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNyZWFkb25seSogcHRyID0gbmV3IChOb3ROdWxsLCBK
U0M6OmFsbG9jYXRlQ2VsbDxKU3JlYWRvbmx5PihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpT
cmVhZG9ubHkoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAg
ICAgIEpTcmVhZG9ubHkqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNy
ZWFkb25seT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU3JlYWRvbmx5KHN0cnVjdHVyZSwg
Kmdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5maW5pc2hDcmVh
dGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KQEAg
LTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBnZXRDb25z
dHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogcHJvdGVjdGVkOgotICAg
IEpTcmVhZG9ubHkoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxyZWFk
b25seT4mJik7CisgICAgSlNyZWFkb25seShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0JiwgUmVmPHJlYWRvbmx5PiYmKTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpW
TSYgdm0pCiAgICAgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262590</attachid>
            <date>2015-10-07 02:35:43 -0700</date>
            <delta_ts>2015-10-08 00:30:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149872-20151007113509.patch</filename>
            <type>text/plain</type>
            <size>151035</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDdiNGZmOGRiMDQ3MGI5
YTU4MTcwODgxMzJmZTEzMDI4NzFiNTQyYS4uMTAwNGFkMDRmMzMxMzYzNGUyNGJiNGQ4MjQwYTc4
NGU5ZmRiM2MyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0NCBAQAorMjAxNS0xMC0wNyAgWW91
ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIEJpbmRp
bmcgZ2VuZXJhdGVkIEpTIGNvbnN0cnVjdG9ycyBzaG91bGQgdXNlIEdsb2JhbE9iamVjdCByZWZl
cmVuY2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NDk4NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGVkIGJpbmRpbmcgZ2VuZXJhdG9yIHRvIGdlbmVyYXRlIEpTIERPTSBjb25zdHJ1Y3RvcnMg
Y29kZSB3aXRoIEpTRE9NR2xvYmFsT0JqZWN0IHJlZmVyZW5jZXMuCisgICAgICAgIFVwZGF0ZWQg
V2ViQ29yZSBKUyBiaW5kaW5nIGxheWVyIGFjY29yZGluZ2x5LgorCisgICAgICAgIENvdmVyZWQg
YnkgdXBkYXRlZCBiaW5kaW5nIHRlc3RzLgorCisgICAgICAgICogYmluZGluZ3MvanMvRE9NQ29u
c3RydWN0b3JXaXRoRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUNvbnN0cnVjdG9y
V2l0aERvY3VtZW50OjpET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRD
YWNoZWRET01TdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FjaGVET01TdHJ1Y3R1cmUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NQ29uc3RydWN0b3JPYmplY3Q6OkRPTUNvbnN0cnVjdG9yT2JqZWN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUNvbnN0cnVjdG9ySlNCdWlsdGluT2JqZWN0OjpET01Db25zdHJ1Y3RvckpT
QnVpbHRpbk9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpnZXRET01TdHJ1Y3R1cmUpOgorICAg
ICAgICAoV2ViQ29yZTo6ZGVwcmVjYXRlZEdldERPTVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJD
b3JlOjpnZXRET01Qcm90b3R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSlNCdWlsdGlu
KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdyYXBwZXIpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTRE9NQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQnVpbHRpbkNvbnN0
cnVjdG9yOjpKU0J1aWx0aW5Db25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OmdldERPTUNvbnN0cnVjdG9yKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTVdpbmRvdzo6aW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3c6OnRvdWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93Ojp0b3VjaExpc3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01XcmFwcGVyOjpKU0RPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XcmFw
cGVyV2l0aEltcGxlbWVudGF0aW9uOjpKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb24pOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OkpTSW1hZ2VDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpKU0ltYWdlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpT
SW1hZ2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW1hZ2VDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRh
YmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0J1
aWx0aW5SZWFkYWJsZVN0cmVhbVJlYWRlclByaXZhdGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlSlNPYmpl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNCdWlsdGluUmVhZGFibGVTdHJlYW1Db250cm9sbGVy
UHJpdmF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVKU09iamVjdCk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6Cisg
ICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbGJh
Y2tJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVjbGFyYXRp
b24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEFjdGl2ZURPTU9iamVj
dENvbnN0cnVjdG9yOjpKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpKU1Rlc3RBY3Rp
dmVET01PYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0Ojpn
ZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEFjdGl2ZURPTU9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDYWxsYmFja0NvbnN0cnVjdG9y
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q2FsbGJhY2tDb25zdHJ1Y3Rvcjo6
Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdENhbGxiYWNrQ29uc3Ry
dWN0b3I6OkpTVGVzdENhbGxiYWNrQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0Q2FsbGJhY2s6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3RDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yOjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0OjpKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdCk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2Jq
ZWN0OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
dXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21OYW1l
ZEdldHRlckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3I6OkpTVGVzdEN1c3RvbU5h
bWVkR2V0dGVyQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50Q29uc3RydWN0
b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpK
U1Rlc3RFdmVudENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3RFdmVudFRhcmdldENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3I6OkpTVGVzdEV2ZW50VGFyZ2V0Q29u
c3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXZlbnRUYXJnZXQ6
OkpTVGVzdEV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV2ZW50VGFyZ2V0
OjpnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFdmVudFRhcmdldDo6
Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RFeGNlcHRpb25Db25zdHJ1
Y3Rvcjo6SlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTVGVzdEV4Y2VwdGlvbjo6SlNUZXN0RXhjZXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdEV4Y2VwdGlvbjo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVz
dEV4Y2VwdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3I6
OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU6OkpTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2VuZXJhdGVJc1JlYWNo
YWJsZTo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50
ZXJmYWNlQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRl
cmZhY2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpKU1Rlc3RJbnRlcmZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SW50ZXJmYWNlOjpnZXRDb25zdHJ1Y3Rvcik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5oOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0
cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3JDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
VGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpTVGVzdEpTQnVpbHRpbkNvbnN0
cnVjdG9yQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1
Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRp
bkNvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1
Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3Ry
dWN0b3I6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcik6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Z2V0Q29uc3RydWN0b3IpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpjcmVhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rv
cjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5hbWVk
Q29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpT
VGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpKU1Rlc3RO
YW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rl
c3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRDb25z
dHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpnZXRO
YW1lZENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OkpTVGVz
dE5vZGVDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb2RlQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vZGU6OkpTVGVz
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9kZTo6Z2V0Q29uc3RydWN0b3IpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmg6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9y
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY0NvbnN0cnVjdG9yOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3ROb25kZXRlcm1pbmlzdGljOjpKU1Rl
c3ROb25kZXRlcm1pbmlzdGljKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE5vbmRldGVybWlu
aXN0aWM6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYzo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iakNvbnN0cnVjdG9y
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6SlNU
ZXN0T2JqQ29uc3RydWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2JqQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6SlNUZXN0
T2JqKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE9iajo6Z2V0Q29uc3RydWN0b3IpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTVGVzdE9iajo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3I6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAgICAgICAo
V2ViQ29yZTo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6Z2V0Q29uc3RydWN0b3IpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmg6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
OjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRp
bnNDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRl
QnVpbHRpbnNDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6SlNUZXN0T3ZlcnJpZGVCdWlsdGlu
c0NvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnND
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T3Zl
cnJpZGVCdWlsdGluczo6SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OmNyZWF0ZSk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VDb25zdHJ1Y3Rvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29u
c3RydWN0b3I6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9y
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2U6OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmNyZWF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rvcjo6SlNUZXN0
VHlwZWRlZnNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBlZGVmc0Nv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RUeXBl
ZGVmczo6SlNUZXN0VHlwZWRlZnMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnM6
OmdldENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0VHlwZWRlZnMuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTVGVzdFR5cGVkZWZzOjpjcmVhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SlNhdHRyaWJ1dGVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTYXR0cmlidXRlQ29uc3RydWN0b3I6OkpTYXR0cmlidXRlQ29uc3Ry
dWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNhdHRyaWJ1dGVDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNhdHRyaWJ1dGU6OkpTYXR0cmlidXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTYXR0cmlidXRlOjpnZXRDb25zdHJ1Y3Rvcik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmg6CisgICAgICAgIChXZWJD
b3JlOjpKU2F0dHJpYnV0ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNyZWFkb25seS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5Q29uc3Ry
dWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5Q29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5Q29uc3RydWN0
b3I6OkpTcmVhZG9ubHlDb25zdHJ1Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkpTcmVhZG9u
bHk6OkpTcmVhZG9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNyZWFkb25seTo6Z2V0Q29uc3Ry
dWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRvbmx5Lmg6
CisgICAgICAgIChXZWJDb3JlOjpKU3JlYWRvbmx5OjpjcmVhdGUpOgorCiAyMDE1LTEwLTA3ICBD
aGFuZ1Nlb2sgT2ggIDxjaGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBbR1RL
XSBQcm9ncmVzcyBiYXIgaXMgYnJva2VuIG9uIHJlY2VudCBHVEsrCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9ET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQuaAppbmRl
eCAzZTI2OTg4MmYxMmFmN2QyNzcxMDhkNTI3MTExYzUyNWZhYTVhYjExLi42ODRiNDcwOTZlNWJh
ZjA1ODFkODhiYTZiZGJlNTBiNmVhMjJjOTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9ET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0RPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50LmgKQEAgLTM2LDE1ICsz
NiwxNSBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgRE9NQ29uc3RydWN0b3JX
aXRoRG9jdW1lbnQoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKKyAgICBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudChKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgICAg
ICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogICAgIHsK
ICAgICB9CiAKLSAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2Jq
ZWN0LT52bSgpKTsKLSAgICAgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5pc0RvY3VtZW50KCkpOworICAgICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbihn
bG9iYWxPYmplY3Qudm0oKSk7CisgICAgICAgIEFTU0VSVChnbG9iYWxPYmplY3Quc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5pc0RvY3VtZW50KCkpOwogICAgIH0KIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDRlNjVlZTczZTIwM2YwM2Q4
NmE5MmRjZmZlYWQyYzQwOGYzMjk4MjMuLmUxYjBiNWJhMmM4YjE4MjJiM2MzYWU3ZWY1NmI5M2Yz
Y2Q3ZTM2NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNw
cApAQCAtMjk1LDE3ICsyOTUsMTcgQEAgRW5jb2RlZEpTVmFsdWUgb2JqZWN0VG9TdHJpbmdGdW5j
dGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiwgRW5jb2RlZEoKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCksIDAsIHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCksIG9iamVj
dFByb3RvRnVuY1RvU3RyaW5nKSk7CiB9CiAKLVN0cnVjdHVyZSogZ2V0Q2FjaGVkRE9NU3RydWN0
dXJlKEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvKQorU3RydWN0dXJlKiBnZXRDYWNoZWRET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiB7Ci0gICAgSlNE
T01TdHJ1Y3R1cmVNYXAmIHN0cnVjdHVyZXMgPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZXMoKTsK
KyAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcyA9IGdsb2JhbE9iamVjdC5zdHJ1Y3R1
cmVzKCk7CiAgICAgcmV0dXJuIHN0cnVjdHVyZXMuZ2V0KGNsYXNzSW5mbykuZ2V0KCk7CiB9CiAK
LVN0cnVjdHVyZSogY2FjaGVET01TdHJ1Y3R1cmUoSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKQor
U3RydWN0dXJlKiBjYWNoZURPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiB7
Ci0gICAgSlNET01TdHJ1Y3R1cmVNYXAmIHN0cnVjdHVyZXMgPSBnbG9iYWxPYmplY3QtPnN0cnVj
dHVyZXMoKTsKKyAgICBKU0RPTVN0cnVjdHVyZU1hcCYgc3RydWN0dXJlcyA9IGdsb2JhbE9iamVj
dC5zdHJ1Y3R1cmVzKCk7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmVzLmNvbnRhaW5zKGNsYXNzSW5m
bykpOwotICAgIHJldHVybiBzdHJ1Y3R1cmVzLnNldChjbGFzc0luZm8sIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+KGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpKS5p
dGVyYXRvci0+dmFsdWUuZ2V0KCk7CisgICAgcmV0dXJuIHN0cnVjdHVyZXMuc2V0KGNsYXNzSW5m
bywgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4oZ2xvYmFsT2JqZWN0LnZtKCksICZnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSkpLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAogc3RhdGljIGNvbnN0
IGludDMyX3Qga01heEludDMyID0gMHg3ZmZmZmZmZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01CaW5kaW5nLmgKaW5kZXggNGY2ZjZhNmZlMjYzMjAwN2E4MDVhNjE4MDhiNTMzNGNk
NjBjZGUwYi4uOGI5YjFjYzM5OTg5MWI2ODMwZTE4Mjk1NGQ3MGY1ZGJhY2RmNDU4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgKQEAgLTk3LDcgKzk3LDcgQEAg
cHVibGljOgogICAgIH0KIAogcHJvdGVjdGVkOgotICAgIERPTUNvbnN0cnVjdG9yT2JqZWN0KEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CisgICAgRE9NQ29uc3RydWN0b3JPYmplY3QoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICAgICAgOiBKU0RPTVdyYXBwZXIoc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QpCiAgICAgewogICAgIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBw
dWJsaWM6CiAgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwogCiBwcm90ZWN0
ZWQ6Ci0gICAgRE9NQ29uc3RydWN0b3JKU0J1aWx0aW5PYmplY3QoSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBET01Db25zdHJ1
Y3RvckpTQnVpbHRpbk9iamVjdChKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgICAgICA6IERPTUNvbnN0cnVjdG9yT2JqZWN0KHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KSB7IH0KIAogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDOjpKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CkBAIC0xMjAsOCArMTIwLDggQEAg
cHJpdmF0ZToKICAgICBKU0M6OldyaXRlQmFycmllcjxKU0M6OkpTRnVuY3Rpb24+IG1faW5pdGlh
bGl6ZUZ1bmN0aW9uOwogfTsKIAotV0VCQ09SRV9FWFBPUlQgSlNDOjpTdHJ1Y3R1cmUqIGdldENh
Y2hlZERPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCosIGNvbnN0IEpTQzo6Q2xhc3NJbmZv
Kik7Ci1XRUJDT1JFX0VYUE9SVCBKU0M6OlN0cnVjdHVyZSogY2FjaGVET01TdHJ1Y3R1cmUoSlNE
T01HbG9iYWxPYmplY3QqLCBKU0M6OlN0cnVjdHVyZSosIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKik7
CitXRUJDT1JFX0VYUE9SVCBKU0M6OlN0cnVjdHVyZSogZ2V0Q2FjaGVkRE9NU3RydWN0dXJlKEpT
RE9NR2xvYmFsT2JqZWN0JiwgY29uc3QgSlNDOjpDbGFzc0luZm8qKTsKK1dFQkNPUkVfRVhQT1JU
IEpTQzo6U3RydWN0dXJlKiBjYWNoZURPTVN0cnVjdHVyZShKU0RPTUdsb2JhbE9iamVjdCYsIEpT
Qzo6U3RydWN0dXJlKiwgY29uc3QgSlNDOjpDbGFzc0luZm8qKTsKIAogaW5saW5lIEpTRE9NR2xv
YmFsT2JqZWN0KiBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKEpTQzo6RXhlY1N0
YXRlKiBleGVjKQogewpAQCAtMTMxLDI5ICsxMzEsMjkgQEAgaW5saW5lIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKEpTQzo6RXhlY1N0YXRlKiBl
eGUKICAgICByZXR1cm4gSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBXcmFwcGVyQ2xhc3M+
IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZ2V0RE9NU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQordGVtcGxhdGU8dHlwZW5hbWUgV3JhcHBlckNs
YXNzPiBpbmxpbmUgSlNDOjpTdHJ1Y3R1cmUqIGdldERPTVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBpZiAoSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGdldENhY2hlZERPTVN0cnVjdHVyZShnbG9iYWxPYmplY3QsIFdyYXBw
ZXJDbGFzczo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKLSAgICByZXR1cm4g
Y2FjaGVET01TdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBXcmFwcGVyQ2xhc3M6OmNyZWF0ZVN0cnVj
dHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBXcmFwcGVyQ2xhc3M6OmNyZWF0ZVByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KSksIFdyYXBwZXJDbGFzczo6aW5mbygpKTsKKyAgICByZXR1cm4gY2FjaGVE
T01TdHJ1Y3R1cmUoZ2xvYmFsT2JqZWN0LCBXcmFwcGVyQ2xhc3M6OmNyZWF0ZVN0cnVjdHVyZSh2
bSwgJmdsb2JhbE9iamVjdCwgV3JhcHBlckNsYXNzOjpjcmVhdGVQcm90b3R5cGUodm0sICZnbG9i
YWxPYmplY3QpKSwgV3JhcHBlckNsYXNzOjppbmZvKCkpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBXcmFwcGVyQ2xhc3M+IGlubGluZSBKU0M6OlN0cnVjdHVyZSogZGVwcmVjYXRlZEdldERPTVN0
cnVjdHVyZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICAvLyBGSVhNRTogVGhpcyBmdW5j
dGlvbiBpcyB3cm9uZy4gSXQgdXNlcyB0aGUgd3JvbmcgZ2xvYmFsIG9iamVjdCBmb3IgY3JlYXRp
bmcgdGhlIHByb3RvdHlwZSBzdHJ1Y3R1cmUuCi0gICAgcmV0dXJuIGdldERPTVN0cnVjdHVyZTxX
cmFwcGVyQ2xhc3M+KGV4ZWMtPnZtKCksIGRlcHJlY2F0ZWRHbG9iYWxPYmplY3RGb3JQcm90b3R5
cGUoZXhlYykpOworICAgIHJldHVybiBnZXRET01TdHJ1Y3R1cmU8V3JhcHBlckNsYXNzPihleGVj
LT52bSgpLCAqZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3RvdHlwZShleGVjKSk7CiB9CiAK
IHRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcz4gaW5saW5lIEpTQzo6SlNPYmplY3QqIGdl
dERPTVByb3RvdHlwZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogewotICAgIHJldHVybiBKU0M6OmpzQ2FzdDxKU0M6OkpTT2JqZWN0Kj4oYXNPYmplY3Qo
Z2V0RE9NU3RydWN0dXJlPFdyYXBwZXJDbGFzcz4odm0sIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSktPnN0b3JlZFByb3RvdHlwZSgpKSk7CisgICAgcmV0dXJu
IEpTQzo6anNDYXN0PEpTQzo6SlNPYmplY3QqPihhc09iamVjdChnZXRET01TdHJ1Y3R1cmU8V3Jh
cHBlckNsYXNzPih2bSwgKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2Jq
ZWN0KSktPnN0b3JlZFByb3RvdHlwZSgpKSk7CiB9CiAKIHZvaWQgY2FsbEZ1bmN0aW9uV2l0aEN1
cnJlbnRBcmd1bWVudHMoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTT2JqZWN0JiB0aGlzT2JqZWN0
LCBKU0M6OkpTRnVuY3Rpb24mKTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgSlNDbGFzcz4gaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUgY3JlYXRlSlNCdWlsdGluKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpKU0Z1bmN0aW9uJiBpbml0aWFsaXplRnVuY3Rpb24sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgSlNDOjpKU09iamVjdCogb2JqZWN0ID0gSlNDbGFzczo6
Y3JlYXRlKGdldERPTVN0cnVjdHVyZTxKU0NsYXNzPihnbG9iYWxPYmplY3Qudm0oKSwgJmdsb2Jh
bE9iamVjdCksICZnbG9iYWxPYmplY3QpOworICAgIEpTQzo6SlNPYmplY3QqIG9iamVjdCA9IEpT
Q2xhc3M6OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8SlNDbGFzcz4oZ2xvYmFsT2JqZWN0LnZtKCks
IGdsb2JhbE9iamVjdCksICZnbG9iYWxPYmplY3QpOwogICAgIGNhbGxGdW5jdGlvbldpdGhDdXJy
ZW50QXJndW1lbnRzKHN0YXRlLCAqb2JqZWN0LCBpbml0aWFsaXplRnVuY3Rpb24pOwogICAgIHJl
dHVybiBKU0M6OkpTVmFsdWU6OmVuY29kZShvYmplY3QpOwogfQpAQCAtMjQwLDcgKzI0MCw3IEBA
IHRlbXBsYXRlPHR5cGVuYW1lIFdyYXBwZXJDbGFzcywgdHlwZW5hbWUgRE9NQ2xhc3M+IGlubGlu
ZSBKU0RPTVdyYXBwZXIqIGNyZWF0ZVdyCiB7CiAgICAgQVNTRVJUKG5vZGUpOwogICAgIEFTU0VS
VCghZ2V0Q2FjaGVkV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIG5vZGUpKTsKLSAgICBX
cmFwcGVyQ2xhc3MqIHdyYXBwZXIgPSBXcmFwcGVyQ2xhc3M6OmNyZWF0ZShnZXRET01TdHJ1Y3R1
cmU8V3JhcHBlckNsYXNzPihnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdCksIGdsb2Jh
bE9iamVjdCwgUmVmPERPTUNsYXNzPigqbm9kZSkpOworICAgIFdyYXBwZXJDbGFzcyogd3JhcHBl
ciA9IFdyYXBwZXJDbGFzczo6Y3JlYXRlKGdldERPTVN0cnVjdHVyZTxXcmFwcGVyQ2xhc3M+KGds
b2JhbE9iamVjdC0+dm0oKSwgKmdsb2JhbE9iamVjdCksIGdsb2JhbE9iamVjdCwgUmVmPERPTUNs
YXNzPigqbm9kZSkpOwogICAgIGNhY2hlV3JhcHBlcihnbG9iYWxPYmplY3QtPndvcmxkKCksIG5v
ZGUsIHdyYXBwZXIpOwogICAgIHJldHVybiB3cmFwcGVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01Db25zdHJ1Y3Rvci5oCmluZGV4IDVkNjljNTlhMDRlODI3YTUwMzZi
M2I2YjJkMWRlNTU3M2FhY2JlODAuLjI5ZDZmMzVlOWQ1NjA3ZjExMzEwN2JlNzZlNDNkMDdkYzZl
MzA5MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29uc3Ry
dWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnN0cnVjdG9y
LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIERFQ0xBUkVfSU5GTzsKIAogcHJpdmF0
ZToKLSAgICBKU0J1aWx0aW5Db25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KTogQmFzZShzdHJ1Y3R1cmUsICZnbG9iYWxP
YmplY3QpIHsgfQorICAgIEpTQnVpbHRpbkNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpIDogQmFzZShzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdCkgeyB9CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBK
U0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgaW5pdGlhbGl6ZVByb3BlcnRpZXMoSlNDOjpW
TSYsIEpTRE9NR2xvYmFsT2JqZWN0JikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01HbG9iYWxPYmplY3QuaAppbmRleCA4YmNiMzE2ZGMwNzk3ZmI0NzNmOTlkMDMyMDdm
MjcwZGFkNTY0MDFkLi5lNmI1M2RiN2Q4OTgzOTM5YzM5M2Y1NjFkYTZiN2Q4NThlZmQxNGE4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmgKQEAg
LTg4LDE0ICs4OCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgfTsKIAogICAgIHRlbXBs
YXRlPGNsYXNzIENvbnN0cnVjdG9yQ2xhc3M+Ci0gICAgaW5saW5lIEpTQzo6SlNPYmplY3QqIGdl
dERPTUNvbnN0cnVjdG9yKEpTQzo6Vk0mIHZtLCBjb25zdCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQorICAgIGlubGluZSBKU0M6OkpTT2JqZWN0KiBnZXRET01Db25zdHJ1Y3RvcihK
U0M6OlZNJiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICB7
Ci0gICAgICAgIGlmIChKU0M6OkpTT2JqZWN0KiBjb25zdHJ1Y3RvciA9IGNvbnN0X2Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5nZXQoQ29uc3Ry
dWN0b3JDbGFzczo6aW5mbygpKS5nZXQoKSkKKyAgICAgICAgaWYgKEpTQzo6SlNPYmplY3QqIGNv
bnN0cnVjdG9yID0gY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCY+KGdsb2JhbE9iamVjdCku
Y29uc3RydWN0b3JzKCkuZ2V0KENvbnN0cnVjdG9yQ2xhc3M6OmluZm8oKSkuZ2V0KCkpCiAgICAg
ICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7Ci0gICAgICAgIEpTQzo6SlNPYmplY3QqIGNvbnN0
cnVjdG9yID0gQ29uc3RydWN0b3JDbGFzczo6Y3JlYXRlKHZtLCBDb25zdHJ1Y3RvckNsYXNzOjpj
cmVhdGVTdHJ1Y3R1cmUodm0sIGNvbnN0X2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxP
YmplY3QpLCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSwgY29uc3RfY2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwotICAgICAgICBBU1NFUlQoIWNvbnN0X2Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpLT5jb25zdHJ1Y3RvcnMoKS5jb250
YWlucyhDb25zdHJ1Y3RvckNsYXNzOjppbmZvKCkpKTsKKyAgICAgICAgSlNDOjpKU09iamVjdCog
Y29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvckNsYXNzOjpjcmVhdGUodm0sIENvbnN0cnVjdG9yQ2xh
c3M6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgY29uc3RfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCY+KGds
b2JhbE9iamVjdCksIGdsb2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSksIGNvbnN0X2Nhc3Q8
SlNET01HbG9iYWxPYmplY3QmPihnbG9iYWxPYmplY3QpKTsKKyAgICAgICAgQVNTRVJUKCFjb25z
dF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Jj4oZ2xvYmFsT2JqZWN0KS5jb25zdHJ1Y3RvcnMoKS5j
b250YWlucyhDb25zdHJ1Y3RvckNsYXNzOjppbmZvKCkpKTsKICAgICAgICAgSlNDOjpXcml0ZUJh
cnJpZXI8SlNDOjpKU09iamVjdD4gdGVtcDsKLSAgICAgICAgY29uc3RfY2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCktPmNvbnN0cnVjdG9ycygpLmFkZChDb25zdHJ1Y3RvckNs
YXNzOjppbmZvKCksIHRlbXApLml0ZXJhdG9yLT52YWx1ZS5zZXQodm0sIGdsb2JhbE9iamVjdCwg
Y29uc3RydWN0b3IpOworICAgICAgICBjb25zdF9jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Jj4oZ2xv
YmFsT2JqZWN0KS5jb25zdHJ1Y3RvcnMoKS5hZGQoQ29uc3RydWN0b3JDbGFzczo6aW5mbygpLCB0
ZW1wKS5pdGVyYXRvci0+dmFsdWUuc2V0KHZtLCAmZ2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3Rvcik7
CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAyNTdhOTU4NjM5ZWRl
NzdjMGJhMmExYTE2ZjQ4ZWE3OTM1MDlkZGM1Li4yMTNiOWJiMjU2MTQ4Nzk3ZWQ2NDM4MjJiODY1
NjIwM2UyMDk4Y2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCkBAIC01MDEsMTggKzUwMSwxOCBAQCBKU1ZhbHVlIEpTRE9NV2luZG93
OjpldmVudChFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogCiBKU1ZhbHVlIEpTRE9NV2luZG93Ojpp
bWFnZShFeGVjU3RhdGUmIHN0YXRlKSBjb25zdAogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU0ltYWdlQ29uc3RydWN0b3I+KHN0YXRlLnZtKCksIHRoaXMpOworICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU0ltYWdlQ29uc3RydWN0b3I+KHN0YXRlLnZtKCksICp0aGlzKTsK
IH0KIAogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6
dG91Y2goRXhlY1N0YXRlJiBzdGF0ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gZ2V0RE9NQ29uc3Ry
dWN0b3I8SlNUb3VjaENvbnN0cnVjdG9yPihzdGF0ZS52bSgpLCB0aGlzKTsKKyAgICByZXR1cm4g
Z2V0RE9NQ29uc3RydWN0b3I8SlNUb3VjaENvbnN0cnVjdG9yPihzdGF0ZS52bSgpLCAqdGhpcyk7
CiB9CiAKIEpTVmFsdWUgSlNET01XaW5kb3c6OnRvdWNoTGlzdChFeGVjU3RhdGUmIHN0YXRlKSBj
b25zdAogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1RvdWNoTGlzdENvbnN0cnVj
dG9yPihzdGF0ZS52bSgpLCB0aGlzKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNU
b3VjaExpc3RDb25zdHJ1Y3Rvcj4oc3RhdGUudm0oKSwgKnRoaXMpOwogfQogI2VuZGlmCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV3JhcHBlci5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVyLmgKaW5kZXggMmI0Njc3MGVhMTJm
NjllZmNmOTUwNjJkNmY3ZDYzYzVhZWMwY2ZjZC4uMDUxNTNkN2RiN2U5MmYyNDFiZDNhN2M2NjAw
YjlmNjczNDcyMWUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XcmFwcGVy
LmgKQEAgLTQxLDggKzQxLDggQEAgcHVibGljOgogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCB7IHJldHVybiBnbG9iYWxPYmplY3QoKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKIHByb3RlY3RlZDoKLSAgICBKU0RPTVdyYXBw
ZXIoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KSAKLSAgICAgICAgOiBCYXNlKGdsb2JhbE9iamVjdC0+dm0oKSwgc3RydWN0dXJlKQor
ICAgIEpTRE9NV3JhcHBlcihKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0M6OkpTR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpIAorICAgICAgICA6IEJhc2UoZ2xvYmFsT2JqZWN0LnZtKCks
IHN0cnVjdHVyZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCkpOwogICAgIH0KQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIH5KU0RPTVdyYXBwZXJX
aXRoSW1wbGVtZW50YXRpb24oKSB7IHN0ZDo6ZXhjaGFuZ2UobV9pbXBsLCBudWxscHRyKS0+ZGVy
ZWYoKTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9u
KEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgUmVmPEltcGxlbWVudGF0aW9uQ2xhc3M+JiYgaW1wbCkKKyAgICBKU0RPTVdyYXBwZXJX
aXRoSW1wbGVtZW50YXRpb24oSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8SW1wbGVtZW50YXRpb25DbGFzcz4mJiBpbXBsKQog
ICAgICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiAgICAgICAgICwgbV9pbXBs
KCZpbXBsLmxlYWtSZWYoKSkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCmluZGV4IDczY2NiM2QwMjNkYTBlYzk2MTA3Y2I5YWEz
ZjM2NTU4ZGVjNTM1OTcuLmM2Y2VjYWYyNzFjOTg2NmI4OGI0MTJhMDAyNDZkNGRjNGUwNDJjOGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9y
LmNwcApAQCAtMzQsMTYgKzM0LDE2IEBAIFNUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RS
VUNUSUJMRShKU0ltYWdlQ29uc3RydWN0b3IpOwogCiBjb25zdCBDbGFzc0luZm8gSlNJbWFnZUNv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJJbWFnZUNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywg
MCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0ltYWdlQ29uc3RydWN0b3IpIH07CiAKLUpTSW1hZ2VD
b25zdHJ1Y3Rvcjo6SlNJbWFnZUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNJbWFnZUNvbnN0cnVjdG9yOjpKU0ltYWdl
Q29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiAgICAgOiBET01Db25zdHJ1Y3RvcldpdGhEb2N1bWVudChzdHJ1Y3R1cmUsIGds
b2JhbE9iamVjdCkKIHsKIH0KIAotdm9pZCBKU0ltYWdlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3ZvaWQgSlNJbWFn
ZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsK
ICAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7Ci0gICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTSFRNTEltYWdlRWxlbWVudDo6Z2V0UHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QpLCBOb25lKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNIVE1MSW1hZ2VFbGVtZW50OjpnZXRQcm90b3R5cGUodm0sICZnbG9i
YWxPYmplY3QpLCBOb25lKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0SW1hZ2UoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuaAppbmRleCBiOTIzMjE1YjM0ZDNkZjRkODRj
NWY2ZmFmZmNhZDBiMzk1NjRlYjc5Li5jYzgxMTgzYjhhZDBjMjI2MzQwNjZjNTBhOTk0OTc3NDQ4
ZDFmN2JhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29u
c3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3Ry
dWN0b3IuaApAQCAtMzAsMjMgKzMwLDIzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJs
aWM6CiAgICAgICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1lbnQgQmFzZTsKIAot
ICAgICAgICBzdGF0aWMgSlNJbWFnZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CisgICAgICAgIHN0YXRpYyBKU0ltYWdlQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwg
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKICAgICAgICAgewogICAgICAgICAgICAgSlNJbWFnZUNvbnN0cnVjdG9yKiBjb25zdHJ1Y3Rv
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNJbWFnZUNvbnN0cnVjdG9yPih2
bS5oZWFwKSkgSlNJbWFnZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKICAg
ICAgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICAgICAgfQogCi0gICAgICAgIHN0
YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAg
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiBKU0M6OlN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgICAgIH0KIAog
ICAgICAgICBERUNMQVJFX0lORk87CiAKICAgICBwcml2YXRlOgotICAgICAgICBKU0ltYWdlQ29u
c3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwotICAgICAgICB2
b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgICAg
ICBKU0ltYWdlQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYp
OworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVj
dCYpOwogICAgICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEo
SlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAgICB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0
cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFt
UHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKaW5kZXggZDZhYzMxMWU0MjdkMWFlYTVjZTE4MTY0MThj
Y2YyNzRhOWVjYWVhZi4uZWQ4YTZmNTNiMDFjYWRiODk5OGVmZjQyMWRkOGFkOWZiZjg1NGQxOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVBy
aXZhdGVDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3JzLmNwcApAQCAtNjUsMTIgKzY1LDEyIEBA
IHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTQnVpbHRpblJlYWRhYmxlU3RyZWFtQ29udHJv
bGxlclByaXZhdGVDb25zdHJ1Y3Rvcjo6CiAKIHRlbXBsYXRlPD4gSlNPYmplY3QqIEpTQnVpbHRp
blJlYWRhYmxlU3RyZWFtUmVhZGVyUHJpdmF0ZUNvbnN0cnVjdG9yOjpjcmVhdGVKU09iamVjdCgp
CiB7Ci0gICAgcmV0dXJuIEpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNyZWF0ZShnZXRET01TdHJ1
Y3R1cmU8SlNSZWFkYWJsZVN0cmVhbVJlYWRlcj4oZ2xvYmFsT2JqZWN0KCktPnZtKCksIGdsb2Jh
bE9iamVjdCgpKSwgZ2xvYmFsT2JqZWN0KCksIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjcmVhdGUo
KSk7CisgICAgcmV0dXJuIEpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNyZWF0ZShnZXRET01TdHJ1
Y3R1cmU8SlNSZWFkYWJsZVN0cmVhbVJlYWRlcj4oZ2xvYmFsT2JqZWN0KCktPnZtKCksICpnbG9i
YWxPYmplY3QoKSksIGdsb2JhbE9iamVjdCgpLCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y3JlYXRl
KCkpOwogfQogCiB0ZW1wbGF0ZTw+IEpTT2JqZWN0KiBKU0J1aWx0aW5SZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXJQcml2YXRlQ29uc3RydWN0b3I6OmNyZWF0ZUpTT2JqZWN0KCkKIHsKLSAgICByZXR1
cm4gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNyZWF0ZShnZXRET01TdHJ1Y3R1cmU8SlNS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+KGdsb2JhbE9iamVjdCgpLT52bSgpLCBnbG9iYWxPYmpl
Y3QoKSksIGdsb2JhbE9iamVjdCgpLCBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNyZWF0ZSgp
KTsKKyAgICByZXR1cm4gSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmNyZWF0ZShnZXRET01T
dHJ1Y3R1cmU8SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+KGdsb2JhbE9iamVjdCgpLT52bSgp
LCAqZ2xvYmFsT2JqZWN0KCkpLCBnbG9iYWxPYmplY3QoKSwgUmVhZGFibGVTdHJlYW1Db250cm9s
bGVyOjpjcmVhdGUoKSk7CiB9CiAKIHRlbXBsYXRlPD4gSlNGdW5jdGlvbiogSlNCdWlsdGluUmVh
ZGFibGVTdHJlYW1SZWFkZXJQcml2YXRlQ29uc3RydWN0b3I6OmNyZWF0ZUluaXRpYWxpemVGdW5j
dGlvbihKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMu
cG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpp
bmRleCA5ODgzNGRmZWY4NTllNDk0OTFkYWViYzVjOTEzNmY4ODA5YWNiYTI5Li4wYTliNWU3NjE4
MGQ1NjM4MzdiYzdiZTE1NDJlMDM5YjAxZThjMmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtOTM4LDE0ICs5MzgsMTQg
QEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
c3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8JGltcGxUeXBlPiYmIGltcGwpXG4iKTsK
ICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKICAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICAgICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0FzVW5kZWZp
bmVkV2F0Y2hwb2ludCgpLT5maXJlQWxsKFwiQWxsb2NhdGVkIG1hc3F1ZXJhZGluZyBvYmplY3Rc
Iik7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFt
ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9i
YWxPYmplY3QtPnZtKCkuaGVhcCkpICRjbGFzc05hbWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qs
IFdURjo6bW92ZShpbXBsKSk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwk
Y2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpICRjbGFzc05hbWUoc3RydWN0dXJl
LCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpO1xuIik7CiAgICAgICAgIHB1c2goQGhl
YWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52
bSgpKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICByZXR1cm4g
cHRyO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4iKTsKICAg
ICB9IGVsc2lmICghTmVlZHNJbXBsZW1lbnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpKSB7CiAgICAg
ICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljICRjbGFzc05hbWUqIGNyZWF0ZShK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KVxuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAge1xuIik7Ci0gICAgICAg
IHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgICRjbGFzc05hbWUqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8JGNsYXNzTmFtZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhl
YXApKSAkY2xhc3NOYW1lKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTtcbiIpOworICAgICAgICBw
dXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICAkY2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPCRjbGFzc05hbWU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFw
KSkgJGNsYXNzTmFtZShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QpO1xuIik7CiAgICAgICAgIHB1
c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2Jq
ZWN0LT52bSgpKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICAgICBy
ZXR1cm4gcHRyO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgfVxuXG4i
KTsgIApAQCAtOTUzLDcgKzk1Myw3IEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgICAgICBBZGRJ
bmNsdWRlc0ZvclR5cGVJbkhlYWRlcigkaW1wbFR5cGUpIHVubGVzcyAkc3ZnUHJvcGVydHlPckxp
c3RQcm9wZXJ0eVR5cGU7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
ICRjbGFzc05hbWUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8JGltcGxUeXBlPiYmIGltcGwpXG4iKTsKICAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVy
Q29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpICRjbGFzc05h
bWUoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7XG4iKTsKKyAgICAg
ICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICAgICAgJGNsYXNzTmFtZSogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDwkY2xhc3NOYW1lPihnbG9iYWxPYmplY3QtPnZtKCku
aGVhcCkpICRjbGFzc05hbWUoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1w
bCkpO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFk
ZXJDb250ZW50LCAiICAgICAgICByZXR1cm4gcHRyO1xuIik7CiAgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgfVxuXG4iKTsKQEAgLTEyMTYsOSArMTIxNiw5IEBAIHN1YiBHZW5lcmF0
ZUhlYWRlcgogICAgIH0gZWxzaWYgKCRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFjZSgk
aW50ZXJmYWNlLCAiV29ya2VyR2xvYmFsU2NvcGUiKSkgewogICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpWTSYsIEpTQzo6U3RydWN0dXJlKiwgUmVmPCRp
bXBsVHlwZT4mJik7XG4iKTsKICAgICB9IGVsc2lmICghTmVlZHNJbXBsZW1lbnRhdGlvbkNsYXNz
KCRpbnRlcmZhY2UpKSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgJGNsYXNz
TmFtZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7XG5cbiIpOworICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgICRjbGFzc05hbWUoSlNDOjpTdHJ1Y3R1cmUqLCBK
U0RPTUdsb2JhbE9iamVjdCYpO1xuXG4iKTsKICAgICAgfSBlbHNlIHsKLSAgICAgICAgcHVzaChA
aGVhZGVyQ29udGVudCwgIiAgICAkY2xhc3NOYW1lKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9i
YWxPYmplY3QqLCBSZWY8JGltcGxUeXBlPiYmKTtcblxuIik7CisgICAgICAgIHB1c2goQGhlYWRl
ckNvbnRlbnQsICIgICAgJGNsYXNzTmFtZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0JiwgUmVmPCRpbXBsVHlwZT4mJik7XG5cbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0pXG4iKTsKICAgICAgICAg
cHVzaChAaGVhZGVyQ29udGVudCwgIiAgICB7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pO1xuIik7CkBAIC0yMTU0LDEw
ICsyMTU0LDEwIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsK
ICAgICB9IGVsc2lmICghTmVlZHNJbXBsZW1lbnRhdGlvbkNsYXNzKCRpbnRlcmZhY2UpKSB7Ci0g
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxuIik7Cisg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KVxuIik7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZShzdHJ1Y3R1
cmUsIGdsb2JhbE9iamVjdCkgeyB9XG5cbiIpOwotICAgICB9ZWxzZSB7Ci0gICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiJHtjbGFzc05hbWV9OjokY2xhc3NOYW1lKFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8JGltcGxUeXBlPiYmIGlt
cGwpXG4iKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiR7Y2xh
c3NOYW1lfTo6JGNsYXNzTmFtZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgUmVmPCRpbXBsVHlwZT4mJiBpbXBsKVxuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIDogJHBhcmVudENsYXNzTmFtZShzdHJ1Y3R1cmUsIGdsb2Jh
bE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAie1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKQEAgLTI1MTgs
NyArMjUxOCw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICBpZiAo
ISRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJOb0ludGVyZmFjZU9iamVjdCJ9KSB7
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSgke2NsYXNzTmFtZX06OmdldENvbnN0cnVjdG9yKHN0YXRlLT52bSgpLCBkb21PYmpl
Y3QtPmdsb2JhbE9iamVjdCgpKSk7XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSBjb25zdHJ1Y3RvciA9ICR7
Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjcmVhdGUoc3RhdGUtPnZtKCksICR7Y2xhc3NOYW1lfUNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoc3RhdGUtPnZtKCksIGRvbU9iamVjdC0+Z2xvYmFs
T2JqZWN0KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSwg
anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZG9tT2JqZWN0LT5nbG9iYWxPYmplY3QoKSkpO1xu
Iik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSBjb25z
dHJ1Y3RvciA9ICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjcmVhdGUoc3RhdGUtPnZtKCksICR7
Y2xhc3NOYW1lfUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoc3RhdGUtPnZtKCksICpkb21P
YmplY3QtPmdsb2JhbE9iamVjdCgpLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpLT5vYmplY3RQ
cm90b3R5cGUoKSksICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihkb21PYmplY3QtPmdsb2Jh
bE9iamVjdCgpKSk7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAvLyBTaGFkb3dpbmcgY29uc3RydWN0b3IgcHJvcGVydHkgdG8gZW5zdXJlIHJldXNpbmcgdGhl
IHNhbWUgY29uc3RydWN0b3Igb2JqZWN0XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBkb21PYmplY3QtPnB1dERpcmVjdChzdGF0ZS0+dm0oKSwgc3RhdGUtPnBy
b3BlcnR5TmFtZXMoKS5jb25zdHJ1Y3RvciwgY29uc3RydWN0b3IsIERvbnRFbnVtIHwgUmVhZE9u
bHkpO1xuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShjb25zdHJ1Y3Rvcik7XG4iKTsKQEAgLTI4MzMsMTEgKzI4MzMsMTEg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KIAogICAgIGlmICghJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW50ZXJmYWNlT2JqZWN0In0pIHsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxue1xuIik7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3Rvcjwke2NsYXNzTmFtZX1Db25z
dHJ1Y3Rvcj4odm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpO1xu
Iik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3Rvcjwke2NsYXNzTmFtZX1Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiTmFt
ZWRDb25zdHJ1Y3RvciJ9KSB7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkpTVmFs
dWUgJHtjbGFzc05hbWV9OjpnZXROYW1lZENvbnN0cnVjdG9yKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdClcbntcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfU5hbWVkQ29uc3RydWN0
b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTtcbiIpOwor
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVj
dG9yPCR7Y2xhc3NOYW1lfU5hbWVkQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAifVxuXG4iKTsKICAgICAgICAgfQogICAgIH0KQEAgLTM3MzAsNyArMzczMCw3IEBAIHN1
YiBHZW5lcmF0ZUNhbGxiYWNrSW1wbGVtZW50YXRpb24KICAgICAgICBHZW5lcmF0ZUNvbnN0cnVj
dG9yRGVmaW5pdGlvbnMoXEBpbXBsQ29udGVudCwgJGNsYXNzTmFtZSwgIiIsICRpbnRlcmZhY2VO
YW1lLCAkdmlzaWJsZUludGVyZmFjZU5hbWUsICRpbnRlcmZhY2UpOwogCiAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICJKU1ZhbHVlICR7Y2xhc3NOYW1lfTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KVxue1xuIik7Ci0gICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPCR7Y2xhc3NOYW1lfUNvbnN0
cnVjdG9yPih2bSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7XG4i
KTsKKyAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0
b3I8JHtjbGFzc05hbWV9Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZ2xvYmFsT2JqZWN0KSk7XG4iKTsKICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7CiAgICAgfQogCkBAIC00NjA2LDIzICs0NjA2LDIzIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVj
dG9yRGVjbGFyYXRpb24KIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImNsYXNzICR7Y29uc3Ry
dWN0b3JDbGFzc05hbWV9IDogcHVibGljICIgLiAkcGFyZW50Q2xhc3NOYW1lIC4gIiB7XG4iKTsK
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJwcml2YXRlOlxuIik7Ci0gICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgICR7Y29uc3RydWN0b3JDbGFzc05hbWV9KEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QqKTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAke2Nv
bnN0cnVjdG9yQ2xhc3NOYW1lfShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Jik7
XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihK
U0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTtcblxuIik7CiAKICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJwdWJsaWM6XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgdHlwZWRl
ZiAiIC4gJHBhcmVudENsYXNzTmFtZSAuICIgQmFzZTtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBzdGF0aWMgJGNvbnN0cnVjdG9yQ2xhc3NOYW1lKiBjcmVhdGUoSlNDOjpWTSYg
dm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljICRjb25zdHJ1
Y3RvckNsYXNzTmFtZSogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgIHtcbiIpOwogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAg
JGNvbnN0cnVjdG9yQ2xhc3NOYW1lKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVD
ZWxsPCRjb25zdHJ1Y3RvckNsYXNzTmFtZT4odm0uaGVhcCkpICRjb25zdHJ1Y3RvckNsYXNzTmFt
ZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7XG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sICpnbG9iYWxPYmplY3QpO1xuIik7Cisg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBn
bG9iYWxPYmplY3QpO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1
cm4gcHRyO1xuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cblxuIik7CiAKICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgREVDTEFSRV9JTkZPO1xuIik7CiAKLSAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1
cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpK
U1ZhbHVlIHByb3RvdHlwZSlcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0
aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0ds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKVxuIik7CiAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIHtcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpO1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBK
U0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpO1xu
Iik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOwogCiAgICAgaWYgKElzQ29u
c3RydWN0YWJsZSgkaW50ZXJmYWNlKSAmJiAhJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Ik5hbWVkQ29uc3RydWN0b3IifSkgewpAQCAtNDY1MSwyMiArNDY1MSwyMiBAQCBjbGFzcyBK
UyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9y
V2l0aERvY3VtZW50IHsKIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yV2l0aERv
Y3VtZW50IEJhc2U7CiAKLSAgICBzdGF0aWMgSlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1
Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBKUyR7aW50ZXJmYWNlTmFt
ZX1OYW1lZENvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgewogICAgICAg
ICBKUyR7aW50ZXJmYWNlTmFtZX1OYW1lZENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlMke2ludGVyZmFjZU5hbWV9TmFtZWRDb25zdHJ1
Y3Rvcj4odm0uaGVhcCkpIEpTJHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3Ioc3RydWN0
dXJlLCBnbG9iYWxPYmplY3QpOwotICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24o
dm0sICpnbG9iYWxPYmplY3QpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24o
dm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKICAgICB9CiAK
LSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBl
KQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3Jl
YXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogCiAgICAgREVDTEFSRV9J
TkZPOwogCiBwcml2YXRlOgotICAgIEpTJHtpbnRlcmZhY2VOYW1lfU5hbWVkQ29uc3RydWN0b3Io
SlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTJHtpbnRlcmZhY2VO
YW1lfU5hbWVkQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYp
OwogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0
SlMke2ludGVyZmFjZU5hbWV9KEpTQzo6RXhlY1N0YXRlKik7CiAgICAgc3RhdGljIEpTQzo6Q29u
c3RydWN0VHlwZSBnZXRDb25zdHJ1Y3REYXRhKEpTQzo6SlNDZWxsKiwgSlNDOjpDb25zdHJ1Y3RE
YXRhJik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKQEAgLTQ5NzEsNyArNDk3MSw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVy
TWV0aG9kcwogCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiY29uc3QgQ2xhc3NJbmZvICR7Y29u
c3RydWN0b3JDbGFzc05hbWV9OjpzX2luZm8gPSB7IFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1D
b25zdHJ1Y3RvclwiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKCRjb25z
dHJ1Y3RvckNsYXNzTmFtZSkgfTtcblxuIik7CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIk
e2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6JHtjb25zdHJ1Y3RvckNsYXNzTmFtZX0oU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpXG4iKTsKKyAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIke2NvbnN0cnVjdG9yQ2xhc3NOYW1lfTo6JHtjb25zdHJ1Y3Rv
ckNsYXNzTmFtZX0oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpXG4iKTsKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgOiBCYXNlKHN0cnVj
dHVyZSwgZ2xvYmFsT2JqZWN0KVxuIik7CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAie1xuIik7
CiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKQEAgLTQ5ODAsNyArNDk4MCw3IEBA
IHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9kcwogICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIntcbiIpOwogCiAgICAgaWYgKCRnZW5lcmF0aW5nTmFtZWRDb25zdHJ1Y3Rvcikgewot
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oJmds
b2JhbE9iamVjdCk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdCk7XG4iKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pO1xuIik7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCAwMjU4NDRiYmRm
NWVhMTFiMTQ4Y2IyMzhmYjIzZGRjOTVmYjQzY2UwLi41MTkxZGY5NTg2ZTFlZDJjNWNhOTIzZDYy
MjU0ZjQ1Nzg0ZDZiODYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAt
NjgsMjIgKzY4LDIyIEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTVGVzdEFjdGl2ZURPTU9iamVjdENv
bnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAg
SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCopOworICAgIEpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0cnVjdG9yKEpTQzo6
U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBE
T01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBKU1Rlc3RBY3RpdmVET01PYmpl
Y3RDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBKU1Rlc3RB
Y3RpdmVET01PYmplY3RDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIHsK
ICAgICAgICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0QWN0aXZlRE9NT2JqZWN0Q29uc3RydWN0b3I+
KHZtLmhlYXApKSBKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGds
b2JhbE9iamVjdCk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sICpnbG9iYWxPYmpl
Y3QpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAg
ICAgICByZXR1cm4gcHRyOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKLSAgICBzdGF0aWMg
SlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRp
YyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewot
ICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogfTsKIApAQCAtMTA2LDcgKzEwNiw3IEBAIHN0
YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RBY3RpdmVET01PYmplY3RUYWJsZVZhbHVl
c1tdID0KIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0QWN0aXZlRE9NT2JqZWN0VGFibGUg
PSB7IDIsIDMsIHRydWUsIEpTVGVzdEFjdGl2ZURPTU9iamVjdFRhYmxlVmFsdWVzLCBKU1Rlc3RB
Y3RpdmVET01PYmplY3RUYWJsZUluZGV4IH07CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0QWN0aXZl
RE9NT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RBY3RpdmVET01PYmplY3RDb25z
dHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0QWN0
aXZlRE9NT2JqZWN0Q29uc3RydWN0b3IpIH07CiAKLUpTVGVzdEFjdGl2ZURPTU9iamVjdENvbnN0
cnVjdG9yOjpKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdEFjdGl2ZURPTU9i
amVjdENvbnN0cnVjdG9yOjpKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICA6IEJh
c2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiB7CiB9CkBAIC0xMzgsNyArMTM4LDcgQEAgdm9p
ZCBKU1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
IAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6c19pbmZvID0geyAiVGVz
dEFjdGl2ZURPTU9iamVjdCIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RBY3RpdmVET01PYmplY3RU
YWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RBY3RpdmVET01PYmplY3QpIH07CiAKLUpT
VGVzdEFjdGl2ZURPTU9iamVjdDo6SlNUZXN0QWN0aXZlRE9NT2JqZWN0KFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEFjdGl2ZURP
TU9iamVjdD4mJiBpbXBsKQorSlNUZXN0QWN0aXZlRE9NT2JqZWN0OjpKU1Rlc3RBY3RpdmVET01P
YmplY3QoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QsIFJlZjxUZXN0QWN0aXZlRE9NT2JqZWN0PiYmIGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXJX
aXRoSW1wbGVtZW50YXRpb248VGVzdEFjdGl2ZURPTU9iamVjdD4oc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KQEAgLTE5NCw3ICsxOTQsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRl
LCBKU09iamVjdCosIEVuYwogCiBKU1ZhbHVlIEpTVGVzdEFjdGl2ZURPTU9iamVjdDo6Z2V0Q29u
c3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJl
dHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcj4o
dm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RBY3RpdmVET01PYmplY3RDb25zdHJ1Y3Rvcj4odm0s
ICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RBY3RpdmVET01PYmplY3RQcm90b3R5cGVGdW5j
dGlvbkV4Y2l0aW5nRnVuY3Rpb24oRXhlY1N0YXRlKiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVET01PYmplY3Qu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RBY3RpdmVE
T01PYmplY3QuaAppbmRleCAyNGNjNTYxZTMxM2UxZTcxZTlmODQ1ODNjMmQ3Nzk4Yjg0NDg3MTM0
Li44MzlmY2FhNDRkYWZkZWRhMjBlNjNhMGNjOTU1Mzg3MzA1NTBiMGY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEFjdGl2ZURPTU9iamVjdC5oCkBAIC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVm
IEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0QWN0aXZlRE9NT2JqZWN0PiBCYXNl
OwogICAgIHN0YXRpYyBKU1Rlc3RBY3RpdmVET01PYmplY3QqIGNyZWF0ZShKU0M6OlN0cnVjdHVy
ZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEFj
dGl2ZURPTU9iamVjdD4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0KiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEFjdGl2ZURP
TU9iamVjdD4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RBY3RpdmVET01PYmplY3Qo
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVz
dEFjdGl2ZURPTU9iamVjdCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RBY3RpdmVET01PYmplY3Q+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0QWN0
aXZlRE9NT2JqZWN0KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsK
ICAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAg
ICByZXR1cm4gcHRyOwogICAgIH0KQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiBwcm90ZWN0ZWQ6Ci0g
ICAgSlNUZXN0QWN0aXZlRE9NT2JqZWN0KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmpl
Y3QqLCBSZWY8VGVzdEFjdGl2ZURPTU9iamVjdD4mJik7CisgICAgSlNUZXN0QWN0aXZlRE9NT2Jq
ZWN0KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdEFjdGl2ZURP
TU9iamVjdD4mJik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mIHZtKQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2FsbGJhY2suY3BwCmluZGV4IDg4MGQyMTcwYTI0NzM3NzcwNWQyOWE2MWYzODU1
OTgxN2VjMTNhMjguLjI4NzcwNTAyNWY5MjA3MTFjMjhlZDJhZWRiNGNjMmRlNTA4NDg4NjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxiYWNrLmNwcApAQCAtNjEsMjIgKzYxLDIyIEBAIEpTVGVzdENhbGxiYWNrOjp+
SlNUZXN0Q2FsbGJhY2soKQogCiBjbGFzcyBKU1Rlc3RDYWxsYmFja0NvbnN0cnVjdG9yIDogcHVi
bGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgSlNUZXN0Q2FsbGJhY2tD
b25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNU
ZXN0Q2FsbGJhY2tDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0
Jik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3Qm
KTsKIAogcHVibGljOgogICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JPYmplY3QgQmFzZTsKLSAg
ICBzdGF0aWMgSlNUZXN0Q2FsbGJhY2tDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBK
U0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQorICAgIHN0YXRpYyBKU1Rlc3RDYWxsYmFja0NvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYg
dm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiAgICAgewogICAgICAgICBKU1Rlc3RDYWxsYmFja0NvbnN0cnVjdG9yKiBwdHIgPSBu
ZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdENhbGxiYWNrQ29uc3RydWN0b3I+
KHZtLmhlYXApKSBKU1Rlc3RDYWxsYmFja0NvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgKmdsb2JhbE9iamVjdCk7Cisg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJl
dHVybiBwdHI7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwotICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKICAgICB9CiB9OwogCkBAIC05NCw3ICs5NCw3IEBAIENPTVBJTEVfQVNT
RVJUKDIgPT0gVGVzdENhbGxiYWNrOjpDT05TVEFOVDIsIFRlc3RDYWxsYmFja0VudW1DT05TVEFO
VDJJc1dyb25nVXNlCiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDYWxsYmFja0NvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJUZXN0Q2FsbGJhY2tDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q2FsbGJhY2tDb25zdHJ1Y3RvcikgfTsKIAotSlNU
ZXN0Q2FsbGJhY2tDb25zdHJ1Y3Rvcjo6SlNUZXN0Q2FsbGJhY2tDb25zdHJ1Y3RvcihTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdENh
bGxiYWNrQ29uc3RydWN0b3I6OkpTVGVzdENhbGxiYWNrQ29uc3RydWN0b3IoU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBCYXNlKHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogewogfQpAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgSlNU
ZXN0Q2FsbGJhY2tDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsCiAKIEpTVmFsdWUgSlNUZXN0Q2FsbGJhY2s6OmdldENvbnN0cnVjdG9y
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNUZXN0Q2FsbGJhY2tDb25zdHJ1Y3Rvcj4odm0sIGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU1Rlc3RDYWxsYmFja0NvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0lu
dGVyZmFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QuY3BwCmluZGV4
IDg5YThlYTMyZGRkZGZmNTlhZDNkNWQyMGZkODZlYzI3MzYwMDM1NWYuLjdhYzQyZTczODJlNDEx
NjAxMzE4NzA3NWY5OTNlOGFlZWJiYzU0NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmNwcApAQCAt
NTksMjkgKzU5LDI5IEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JP
YmplY3QgewogcHJpdmF0ZToKLSAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdENvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3Qq
KTsKKyAgICBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0
cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCiBwdWJsaWM6CiAg
ICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBKU1Rlc3RD
dXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yKiBjcmVhdGUo
SlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5v
SW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICB7
CiAgICAgICAgIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29u
c3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rvcj4odm0uaGVhcCkp
IEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3Io
c3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZt
LCAqZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFs
T2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87
Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KICAgICBzdGF0aWMgSlND
OjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0
cnVjdERhdGEmKTsKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDdXN0b21Db25zdHJ1Y3Rv
cldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Q3VzdG9t
Q29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcikgfTsKIAotSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3Rvcjo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JX
aXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3I6OkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBCYXNlKHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0KQogewogfQpAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
CiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFj
ZU9iamVjdDo6c19pbmZvID0geyAiVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDdXN0
b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCkgfTsKIAotSlNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q6OkpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNl
T2JqZWN0PiYmIGltcGwpCitKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9i
amVjdDo6SlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0
Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q+JiYgaW1wbCkKICAgICA6IEpT
RE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9J
bnRlcmZhY2VPYmplY3Q+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkp
CiB7CiB9CkBAIC0xNDQsNyArMTQ0LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9tQ29u
c3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25zdHJ1Y3RvcihFeGVjU3RhdGUKICAgICBK
U1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdFByb3RvdHlwZSogZG9t
T2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdFByb3RvdHlwZSo+KGJhc2VWYWx1ZSk7CiAgICAgaWYgKCFkb21PYmplY3QpCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlKTsKLSAgICBKU1ZhbHVlIGNvbnN0
cnVjdG9yID0gSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3RDb25z
dHJ1Y3Rvcjo6Y3JlYXRlKHN0YXRlLT52bSgpLCBKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhO
b0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoc3RhdGUtPnZtKCks
IGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPm9i
amVjdFByb3RvdHlwZSgpKSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZG9tT2JqZWN0LT5n
bG9iYWxPYmplY3QoKSkpOworICAgIEpTVmFsdWUgY29uc3RydWN0b3IgPSBKU1Rlc3RDdXN0b21D
b25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdENvbnN0cnVjdG9yOjpjcmVhdGUoc3RhdGUt
PnZtKCksIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0Q29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShzdGF0ZS0+dm0oKSwgKmRvbU9iamVjdC0+Z2xvYmFsT2Jq
ZWN0KCksIGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPm9iamVjdFByb3RvdHlwZSgpKSwgKmpz
Q2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGRvbU9iamVjdC0+Z2xvYmFsT2JqZWN0KCkpKTsKICAg
ICAvLyBTaGFkb3dpbmcgY29uc3RydWN0b3IgcHJvcGVydHkgdG8gZW5zdXJlIHJldXNpbmcgdGhl
IHNhbWUgY29uc3RydWN0b3Igb2JqZWN0CiAgICAgZG9tT2JqZWN0LT5wdXREaXJlY3Qoc3RhdGUt
PnZtKCksIHN0YXRlLT5wcm9wZXJ0eU5hbWVzKCkuY29uc3RydWN0b3IsIGNvbnN0cnVjdG9yLCBE
b250RW51bSB8IFJlYWRPbmx5KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVj
dG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdC5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9y
V2l0aE5vSW50ZXJmYWNlT2JqZWN0LmgKaW5kZXggOGY0ZjBhNjZjODRhYWI5ZmZhMGU3MzhjZDBi
ZGFkMDExNjNjYTk2Ny4uZGFhMjA5MDhiNGJmNmFlZmUyZTQ3YmY0NDIxMDQ3NTljOThmYzM3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0
aE5vSW50ZXJmYWNlT2JqZWN0LmgKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogICAgIHR5cGVk
ZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RDdXN0b21Db25zdHJ1Y3Rvcldp
dGhOb0ludGVyZmFjZU9iamVjdD4gQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0Q3VzdG9tQ29uc3Ry
dWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEN1c3RvbUNvbnN0
cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0PiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rl
c3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdCogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RDdXN0b21Db25zdHJ1Y3RvcldpdGhOb0ludGVy
ZmFjZU9iamVjdD4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RDdXN0b21Db25zdHJ1
Y3RvcldpdGhOb0ludGVyZmFjZU9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjpt
b3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZh
Y2VPYmplY3QqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Q3Vz
dG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Q+KGdsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKSkgSlNUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3Qoc3RydWN0
dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAg
fQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgSlNU
ZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRlcmZhY2VPYmplY3QoSlNDOjpTdHJ1Y3R1cmUq
LCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0Q3VzdG9tQ29uc3RydWN0b3JXaXRoTm9JbnRl
cmZhY2VPYmplY3Q+JiYpOworICAgIEpTVGVzdEN1c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJm
YWNlT2JqZWN0KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdEN1
c3RvbUNvbnN0cnVjdG9yV2l0aE5vSW50ZXJmYWNlT2JqZWN0PiYmKTsKIAogICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1l
ZEdldHRlci5jcHAKaW5kZXggYjYyNmU0MTkxOTJhNTRlZTExY2UzYTQzNThlYzlhMjlmNjEyZjll
MC4uOTZlOGE1ZTQ4ZjAyMTYyMzYyMmMxNWMxYzY4NWRiNDYxY2RiMzYwZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC02NiwyMiArNjYsMjIgQEAgcHJpdmF0ZToK
IAogY2xhc3MgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01D
b25zdHJ1Y3Rvck9iamVjdCB7CiBwcml2YXRlOgotICAgIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
Q29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpT
VGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTRE9NR2xv
YmFsT2JqZWN0Jik7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0
IEJhc2U7Ci0gICAgc3RhdGljIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3IqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJD
b25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIHsKICAgICAgICAgSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFs
bG9jYXRlQ2VsbDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yPih2bS5oZWFwKSkg
SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVj
dCk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sICpnbG9iYWxPYmplY3QpOworICAg
ICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1
cm4gcHRyOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKLSAgICBzdGF0aWMgSlNDOjpTdHJ1
Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0
LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CiAgICAgfQogfTsKIApAQCAtMTAxLDcgKzEwMSw3IEBAIHN0YXRpYyBjb25z
dCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclRhYmxlVmFsdWVzW10gPQog
c3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclRhYmxlID0geyAx
LCAxLCB0cnVlLCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlclRhYmxlVmFsdWVzLCBKU1Rlc3RDdXN0
b21OYW1lZEdldHRlclRhYmxlSW5kZXggfTsKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RDdXN0b21O
YW1lZEdldHRlckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJD
b25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcikgfTsKIAotSlNUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXJDb25zdHJ1Y3Rvcjo6SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdEN1
c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3I6OkpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3Ry
dWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCiAgICAgOiBCYXNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogewogfQpAQCAtMTMyLDcg
KzEzMiw3IEBAIHZvaWQgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGU6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSkKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVy
OjpzX2luZm8gPSB7ICJUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIiLCAmQmFzZTo6c19pbmZvLCAmSlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RDdXN0
b21OYW1lZEdldHRlcikgfTsKIAotSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkpTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdEN1c3RvbU5hbWVkR2V0dGVyPiYmIGltcGwpCitKU1Rlc3RDdXN0
b21OYW1lZEdldHRlcjo6SlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXI+JiYgaW1wbCkKICAgICA6IEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXI+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1w
bCkpCiB7CiB9CkBAIC0xOTgsNyArMTk4LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXJDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCosIEUKIAog
SlNWYWx1ZSBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1
Y3RvcjxKU1Rlc3RDdXN0b21OYW1lZEdldHRlckNvbnN0cnVjdG9yPih2bSwganNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVj
dG9yPEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJQcm90b3R5cGVGdW5jdGlvbkFub3RoZXJG
dW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIu
aAppbmRleCA2YjRkOWY5Y2MzMjZhMGI3ZmQ4YTMxNDg0ODM2ODUyZmM5NWY5MGI2Li5mNWU3YzY2
MWYzMjhkM2M2YmFiODdmYmM4ZDRjNzBmZGYxN2U4Mzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuaApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0RP
TVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEN1c3RvbU5hbWVkR2V0dGVyPiBCYXNlOwog
ICAgIHN0YXRpYyBKU1Rlc3RDdXN0b21OYW1lZEdldHRlciogY3JlYXRlKEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXI+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOworICAgICAg
ICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU1Rlc3RDdXN0b21OYW1lZEdldHRlcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXAp
KSBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURjo6
bW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52
bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkBAIC01NSw3ICs1NSw3IEBAIHB1Ymxp
YzoKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBK
U0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5MZW5ndGhJc05v
dFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzOwogcHJvdGVjdGVkOgotICAgIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKEpTQzo6U3Ry
dWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdEN1c3RvbU5hbWVkR2V0dGVyPiYm
KTsKKyAgICBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xv
YmFsT2JqZWN0JiwgUmVmPFRlc3RDdXN0b21OYW1lZEdldHRlcj4mJik7CiAKICAgICB2b2lkIGZp
bmlzaENyZWF0aW9uKEpTQzo6Vk0mIHZtKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0
cnVjdG9yLmNwcAppbmRleCA5ZGU1MTdkZjVmYTIzZTE5NTJiMmUwM2Q5ZjM1MGE5OTViYjc3MzRl
Li4xNDZkZTY5ZWQ2ODI5YTZiNzk0MjZjYjJiMzlmYzU0OGY5OGFlZTY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCkBAIC02NSwyMiArNjUsMjIgQEAgcHJpdmF0ZToKIAog
Y2xhc3MgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0
cnVjdG9yT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0
cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKKyAgICBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9i
amVjdCYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2Jq
ZWN0Jik7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7
Ci0gICAgc3RhdGljIEpTVGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3RvciogY3JlYXRlKEpT
Qzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0
b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICB7CiAgICAgICAgIEpTVGVzdEV2ZW50Q29u
c3RydWN0b3JDb25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSBKU1Rlc3RFdmVu
dENvbnN0cnVjdG9yQ29uc3RydWN0b3Ioc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOwotICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCAqZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAg
ICB9CiAKICAgICBERUNMQVJFX0lORk87Ci0gICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEpTQzo6
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJ
bmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICBy
ZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgJmdsb2JhbE9iamVjdCwgcHJvdG90eXBl
LCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwogICAgIH0KIHByb3RlY3RlZDoKICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGNvbnN0cnVjdEpTVGVzdEV2ZW50Q29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUq
KTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIGZpbGxUZXN0RXZlbnRDb25zdHJ1Y3RvckluaXQo
VGVzdEV2ZW50Q29uc3RydWN0b3JJbml0JiBldmVudEluaXQsIEpTRGljdGlvbgogCiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3RFdmVudENvbnN0cnVjdG9yQ29uc3RydWN0b3IpIH07CiAKLUpT
VGVzdEV2ZW50Q29uc3RydWN0b3JDb25zdHJ1Y3Rvcjo6SlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQorSlNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpKU1Rlc3RFdmVudENv
bnN0cnVjdG9yQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBCYXNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQog
ewogfQpAQCAtMTY5LDcgKzE2OSw3IEBAIHZvaWQgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvclByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdEV2ZW50Q29uc3RydWN0b3IiLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdEV2ZW50Q29uc3RydWN0b3IpIH07
CiAKLUpTVGVzdEV2ZW50Q29uc3RydWN0b3I6OkpTVGVzdEV2ZW50Q29uc3RydWN0b3IoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0
RXZlbnRDb25zdHJ1Y3Rvcj4mJiBpbXBsKQorSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SlNUZXN0
RXZlbnRDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3RFdmVudENvbnN0cnVjdG9yPiYmIGltcGwpCiAgICAgOiBK
U0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEV2ZW50Q29uc3RydWN0b3I+KHN0cnVj
dHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpCiB7CiB9CkBAIC0yMzQsNyArMjM0
LDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0RXZlbnRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4
ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXMKIAogSlNWYWx1ZSBKU1Rlc3RFdmVudENvbnN0
cnVjdG9yOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdEV2ZW50Q29uc3RydWN0
b3JDb25zdHJ1Y3Rvcj4odm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RFdmVudENvbnN0cnVjdG9y
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7CiB9CiAKIGJvb2wgSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvck93bmVyOjppc1JlYWNoYWJsZUZy
b21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCosIFNs
b3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXgg
ZGM3MjhlNWQ2ZDkxNTI4OGJjZWFjY2I4MTIyZGJhMzYwNGMyZDAxNS4uYjNkZGEyM2JjMzhmODRj
ZGE1MzRjYTA1YmMzZDZhMzAxNTY1MTViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5oCkBAIC0zNCw3ICszNCw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldp
dGhJbXBsZW1lbnRhdGlvbjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4gQmFzZTsKICAgICBzdGF0aWMg
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RXZlbnRDb25zdHJ1Y3Rv
cj4mJiBpbXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0RXZlbnRDb25zdHJ1Y3RvciogcHRyID0g
bmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFdmVudENvbnN0cnVjdG9yPihn
bG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdEV2ZW50Q29uc3RydWN0b3Ioc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdEV2ZW50Q29u
c3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0RXZl
bnRDb25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RFdmVudENvbnN0
cnVjdG9yKHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKICAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1
cm4gcHRyOwogICAgIH0KQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpT
Qzo6SlNWYWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCop
OwogcHJvdGVjdGVkOgotICAgIEpTVGVzdEV2ZW50Q29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUq
LCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0RXZlbnRDb25zdHJ1Y3Rvcj4mJik7CisgICAg
SlNUZXN0RXZlbnRDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0
JiwgUmVmPFRlc3RFdmVudENvbnN0cnVjdG9yPiYmKTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRp
b24oSlNDOjpWTSYgdm0pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggNWQ5
MTJmMzFmMWFlNGZiM2U4NzM4YjdjOGIxOGRjYTY0NGUwNWE2NS4uMDBhYzgwZTQzMTdlYWVhNThm
YWM1NWVkZjQxMDQ4MDgwZGZhMGFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC03
NSwyMiArNzUsMjIgQEAgcHJpdmF0ZToKIAogY2xhc3MgSlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1
Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7CiBwcml2YXRlOgotICAgIEpTVGVz
dEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVj
dCopOworICAgIEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBK
U0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpT
RE9NR2xvYmFsT2JqZWN0Jik7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9y
T2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgSlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1
Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIHsKICAgICAgICAgSlNUZXN0RXZlbnRU
YXJnZXRDb25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxK
U1Rlc3RFdmVudFRhcmdldENvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNUZXN0RXZlbnRUYXJnZXRD
b25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHB0ci0+ZmluaXNo
Q3JlYXRpb24odm0sICpnbG9iYWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAogICAgIERF
Q0xBUkVfSU5GTzsKLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShK
U0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFs
dWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNW
YWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmpl
Y3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUlu
Zm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogfTsK
IApAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RF
dmVudFRhcmdldFRhYmxlVmFsdWVzW10gPQogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RF
dmVudFRhcmdldFRhYmxlID0geyAxLCAxLCB0cnVlLCBKU1Rlc3RFdmVudFRhcmdldFRhYmxlVmFs
dWVzLCBKU1Rlc3RFdmVudFRhcmdldFRhYmxlSW5kZXggfTsKIGNvbnN0IENsYXNzSW5mbyBKU1Rl
c3RFdmVudFRhcmdldENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0RXZlbnRUYXJnZXRDb25z
dHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RXZl
bnRUYXJnZXRDb25zdHJ1Y3RvcikgfTsKIAotSlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcjo6
SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3I6
OkpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBCYXNlKHN0cnVjdHVyZSwgZ2xvYmFs
T2JqZWN0KQogewogfQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgSlNUZXN0RXZlbnRUYXJnZXRQ
cm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVz
dEV2ZW50VGFyZ2V0OjpzX2luZm8gPSB7ICJUZXN0RXZlbnRUYXJnZXQiLCAmQmFzZTo6c19pbmZv
LCAmSlNUZXN0RXZlbnRUYXJnZXRUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFdmVu
dFRhcmdldCkgfTsKIAotSlNUZXN0RXZlbnRUYXJnZXQ6OkpTVGVzdEV2ZW50VGFyZ2V0KFN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVz
dEV2ZW50VGFyZ2V0PiYmIGltcGwpCitKU1Rlc3RFdmVudFRhcmdldDo6SlNUZXN0RXZlbnRUYXJn
ZXQoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qs
IFJlZjxUZXN0RXZlbnRUYXJnZXQ+JiYgaW1wbCkKICAgICA6IEpTRE9NV3JhcHBlcldpdGhJbXBs
ZW1lbnRhdGlvbjxUZXN0RXZlbnRUYXJnZXQ+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6
Om1vdmUoaW1wbCkpCiB7CiB9CkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBKU1Rlc3RFdmVudFRh
cmdldDo6Z2V0T3duUHJvcGVydHlOYW1lcyhKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIHN0
YXRlLAogCiBKU1ZhbHVlIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTVGVzdEV2ZW50VGFyZ2V0Q29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8
SlNUZXN0RXZlbnRUYXJnZXRDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RFdmVudFRhcmdldFByb3RvdHlwZUZ1bmN0aW9uSXRlbShFeGVjU3RhdGUqIHN0YXRlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRUYXJnZXQuaAppbmRleCBkMmI5OTgzODNlNjEzZjk0NDU1N2NlNjAyZjAzZjk1
MzY0ODEzZGVjLi42ZGI5NjY0NTIzZjRjNTk4M2Q1ZTJiYjExZWI0YWYyZTMxY2JmYTA4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRUYXJnZXQuaApAQCAtMzMsNyArMzMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEpTVGVzdEV2ZW50VGFyZ2V0KiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RFdmVudFRhcmdldD4mJiBpbXBs
KQogICAgIHsKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0
Y2hwb2ludCgpLT5maXJlQWxsKCJBbGxvY2F0ZWQgbWFzcXVlcmFkaW5nIG9iamVjdCIpOwotICAg
ICAgICBKU1Rlc3RFdmVudFRhcmdldCogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRl
Q2VsbDxKU1Rlc3RFdmVudFRhcmdldD4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RF
dmVudFRhcmdldChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKKyAg
ICAgICAgSlNUZXN0RXZlbnRUYXJnZXQqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0RXZlbnRUYXJnZXQ+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0
RXZlbnRUYXJnZXQoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwog
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAg
IHJldHVybiBwdHI7CiAgICAgfQpAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiBwdWJsaWM6CiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpJbnRlcmNlcHRz
R2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVuZ3RoSXNOb3RaZXJvIHwgSlNDOjpN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkIHwgSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBKU0M6Ok92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
IHByb3RlY3RlZDoKLSAgICBKU1Rlc3RFdmVudFRhcmdldChKU0M6OlN0cnVjdHVyZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RFdmVudFRhcmdldD4mJik7CisgICAgSlNUZXN0RXZlbnRU
YXJnZXQoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0RXZlbnRU
YXJnZXQ+JiYpOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiB2bSkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFeGNlcHRpb24uY3BwCmluZGV4IDAwZjAyMmQyODU0MWZmZTM4NTNkNzQwYzcxODBl
NmMyMWFmOWI2MDMuLjk3NjZhNDgzYjI3YjI3NDE4MmJkZGRiZjk4NTIzOTE4MThhYTc4YjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
eGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RFeGNlcHRpb24uY3BwCkBAIC02MiwyMiArNjIsMjIgQEAgcHJpdmF0ZToKIAogY2xh
c3MgSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmpl
Y3QgewogcHJpdmF0ZToKLSAgICBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihKU0M6OlN0cnVj
dHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0RXhjZXB0aW9uQ29uc3RydWN0
b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgZmluaXNo
Q3JlYXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAKIHB1YmxpYzoKICAgICB0
eXBlZGVmIERPTUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpTVGVzdEV4Y2Vw
dGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIEpTVGVz
dEV4Y2VwdGlvbkNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgewogICAg
ICAgICBKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6
OmFsbG9jYXRlQ2VsbDxKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEpTVGVz
dEV4Y2VwdGlvbkNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAg
cHRyLT5maW5pc2hDcmVhdGlvbih2bSwgKmdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAg
fQogCiAgICAgREVDTEFSRV9JTkZPOwotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgcmV0
dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
ICAgICB9CiB9OwogCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1
ZSBKU1Rlc3RFeGNlcHRpb25UYWJsZVZhbHVlc1tdID0KIHN0YXRpYyBjb25zdCBIYXNoVGFibGUg
SlNUZXN0RXhjZXB0aW9uVGFibGUgPSB7IDEsIDEsIHRydWUsIEpTVGVzdEV4Y2VwdGlvblRhYmxl
VmFsdWVzLCBKU1Rlc3RFeGNlcHRpb25UYWJsZUluZGV4IH07CiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0RXhjZXB0aW9uQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RFeGNlcHRpb25Db25zdHJ1
Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0RXhjZXB0
aW9uQ29uc3RydWN0b3IpIH07CiAKLUpTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yOjpKU1Rlc3RF
eGNlcHRpb25Db25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdEV4Y2VwdGlvbkNvbnN0cnVjdG9yOjpKU1Rlc3RFeGNl
cHRpb25Db25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiB7CiB9
CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBKU1Rlc3RFeGNlcHRpb25Qcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSkKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdEV4Y2VwdGlvbjo6c19p
bmZvID0geyAiVGVzdEV4Y2VwdGlvbiIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RFeGNlcHRpb25U
YWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RFeGNlcHRpb24pIH07CiAKLUpTVGVzdEV4
Y2VwdGlvbjo6SlNUZXN0RXhjZXB0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEV4Y2VwdGlvbj4mJiBpbXBsKQorSlNUZXN0
RXhjZXB0aW9uOjpKU1Rlc3RFeGNlcHRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0RXhjZXB0aW9uPiYmIGltcGwpCiAgICAg
OiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEV4Y2VwdGlvbj4oc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KQEAgLTE4MCw3ICsxODAsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0
YXRlLCBKU09iamVjdCogYmFzZVZhbHVlLAogCiBKU1ZhbHVlIEpTVGVzdEV4Y2VwdGlvbjo6Z2V0
Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcj4odm0s
IGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RFeGNlcHRpb25Db25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogYm9vbCBKU1Rlc3RFeGNl
cHRpb25Pd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpV
bmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFeGNlcHRp
b24uaAppbmRleCAzZTE1NzBjMThlZTc2ZTg1ZmFhYTY0NTFlNjg0MDk2YmMwOTQ5ZDViLi5hNDli
NTA5MjVhNjE0MTAyODcyZmVkYTQwODU1Njk5OTM0N2VlYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5o
CkBAIC0zMyw3ICszMyw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJ
bXBsZW1lbnRhdGlvbjxUZXN0RXhjZXB0aW9uPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RFeGNl
cHRpb24qIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEV4Y2VwdGlvbj4mJiBpbXBsKQogICAgIHsKLSAgICAg
ICAgSlNUZXN0RXhjZXB0aW9uKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdEV4Y2VwdGlvbj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RFeGNlcHRp
b24oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAgICAgIEpT
VGVzdEV4Y2VwdGlvbiogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RFeGNlcHRpb24+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0RXhjZXB0aW9uKHN0
cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKICAgICAgICAgcHRyLT5m
aW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRyOwog
ICAgIH0KQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEpTQzo6T3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CiBwcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0RXhjZXB0
aW9uKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqLCBSZWY8VGVzdEV4Y2VwdGlv
bj4mJik7CisgICAgSlNUZXN0RXhjZXB0aW9uKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxP
YmplY3QmLCBSZWY8VGVzdEV4Y2VwdGlvbj4mJik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KEpTQzo6Vk0mIHZtKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxl
LmNwcAppbmRleCA5MDFjY2MwYTNhZjU5NjU3ZDliZWFkNmEzYjFjZjJjNzg1MTlhNjA3Li5kMjhm
MzAyMTViNzMzN2UzNGUwMTc4MWFhNDlhYTRhNTc0MjJjMTEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBAIC01OSwyOCArNTksMjggQEAgcHJpdmF0ZToKIAog
Y2xhc3MgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yIDogcHVibGljIERPTUNv
bnN0cnVjdG9yT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJs
ZUNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QqKTsKKyAgICBK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RP
TUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTRE9N
R2xvYmFsT2JqZWN0Jik7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2Jq
ZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3Rv
ciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0YXRpYyBKU1Rlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICB7CiAgICAgICAg
IEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxs
LCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3I+
KHZtLmhlYXApKSBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3Ioc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QpOwotICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCAqZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsK
ICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CiAKICAgICBERUNMQVJFX0lORk87Ci0gICAgc3Rh
dGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Jmdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIH07CiAKIGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcikgfTsKIAotSlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0cnVjdG9yOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCitKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3I6OkpTVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGVDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QpCiB7CiB9CkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBKU1Rlc3RHZW5lcmF0ZUlz
UmVhY2hhYmxlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKIGNvbnN0IENsYXNz
SW5mbyBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpzX2luZm8gPSB7ICJUZXN0R2VuZXJhdGVJ
c1JlYWNoYWJsZSIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZSkgfTsKIAotSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6SlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlPiYmIGltcGwp
CitKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlOjpKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+JiYgaW1wbCkKICAgICA6IEpTRE9NV3JhcHBlcldpdGhJ
bXBsZW1lbnRhdGlvbjxUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4oc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KQEAgLTE0Miw3ICsxNDIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBz
dGF0ZSwgSlNPYmplY3QqCiAKIEpTVmFsdWUgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZTo6Z2V0
Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAg
IHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlQ29uc3Ry
dWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAg
ICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZUNvbnN0
cnVjdG9yPih2bSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwog
fQogCiBib29sIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGVPd25lcjo6aXNSZWFjaGFibGVGcm9t
T3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90
VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oCmlu
ZGV4IDkyOTMzYWE1MzA0M2UzNzExZTRmMWFmMGI5YTk0ZWE2MWE4ZmZkYzAuLjkwMDk4YjBlY2Ri
ZTI3YWNlNGViZGVlNzQ4OGQ1YTAwNGIzOTZkMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUuaApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0RP
TVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+IEJhc2U7
CiAgICAgc3RhdGljIEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUqIGNyZWF0ZShKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8VGVz
dEdlbmVyYXRlSXNSZWFjaGFibGU+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdEdlbmVy
YXRlSXNSZWFjaGFibGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNU
ZXN0R2VuZXJhdGVJc1JlYWNoYWJsZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RH
ZW5lcmF0ZUlzUmVhY2hhYmxlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1w
bCkpOworICAgICAgICBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+KGdsb2JhbE9i
amVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZShzdHJ1Y3R1cmUsICpn
bG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRp
b24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkBAIC01
MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3Ry
dWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKIHByb3RlY3RlZDoKLSAgICBK
U1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmpl
Y3QqLCBSZWY8VGVzdEdlbmVyYXRlSXNSZWFjaGFibGU+JiYpOworICAgIEpTVGVzdEdlbmVyYXRl
SXNSZWFjaGFibGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0
R2VuZXJhdGVJc1JlYWNoYWJsZT4mJik7CiAKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6
Vk0mIHZtKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggOTdiYTU2ZDAyNGU3ZTZl
ZTVlZTIyZTU2OGQ5OWY0ZmQ1NzZlNWE1Yi4uMjk2MGY3MjA0ZTUwZTYwMDk1ZTBhYmVmOTkxM2Ji
MGYyNjMyYTQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTE0NSwyMiArMTQ1LDIyIEBA
IHByaXZhdGU6CiAKIGNsYXNzIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yIDogcHVibGljIERP
TUNvbnN0cnVjdG9yT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgSlNUZXN0SW50ZXJmYWNlQ29uc3Ry
dWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdElu
dGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsK
ICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwog
CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwotICAgIHN0
YXRpYyBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
ICAgIHN0YXRpYyBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZt
LCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2Jq
ZWN0KQogICAgIHsKICAgICAgICAgSlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3I+
KHZtLmhlYXApKSBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sICpnbG9iYWxPYmplY3QpOwor
ICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICBy
ZXR1cm4gcHRyOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKLSAgICBzdGF0aWMgSlNDOjpT
dHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBKU0M6
OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAg
ICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CiAgICAgfQogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBKU0M6OkVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNUZXN0SW50ZXJmYWNlKEpTQzo6RXhl
Y1N0YXRlKik7CkBAIC0yODksNyArMjg5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0SW50ZXJmYWMKIAog
Y29uc3QgQ2xhc3NJbmZvIEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEpTVGVzdEludGVyZmFjZUNvbnN0cnVjdG9yKSB9OwogCi1KU1Rlc3RJbnRlcmZhY2VD
b25zdHJ1Y3Rvcjo6SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU1Rlc3RJbnRlcmZhY2VDb25z
dHJ1Y3Rvcjo6SlNUZXN0SW50ZXJmYWNlQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBCYXNlKHN0cnVjdHVyZSwg
Z2xvYmFsT2JqZWN0KQogewogfQpAQCAtNDA5LDcgKzQwOSw3IEBAIHZvaWQgSlNUZXN0SW50ZXJm
YWNlUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKIGNvbnN0IENsYXNzSW5mbyBK
U1Rlc3RJbnRlcmZhY2U6OnNfaW5mbyA9IHsgIlRlc3RJbnRlcmZhY2UiLCAmQmFzZTo6c19pbmZv
LCAmSlNUZXN0SW50ZXJmYWNlVGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SW50ZXJm
YWNlKSB9OwogCi1KU1Rlc3RJbnRlcmZhY2U6OkpTVGVzdEludGVyZmFjZShTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RJbnRlcmZh
Y2U+JiYgaW1wbCkKK0pTVGVzdEludGVyZmFjZTo6SlNUZXN0SW50ZXJmYWNlKFN0cnVjdHVyZSog
c3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdEludGVy
ZmFjZT4mJiBpbXBsKQogICAgIDogSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RJ
bnRlcmZhY2U+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpCiB7CiB9
CkBAIC03OTcsNyArNzk3LDcgQEAgdm9pZCBzZXRKU1Rlc3RJbnRlcmZhY2VTdXBwbGVtZW50YWxO
b2RlKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0LAogCiBKU1ZhbHVlIEpT
VGVzdEludGVyZmFjZTo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RJbnRlcmZh
Y2VDb25zdHJ1Y3Rvcj4odm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RJbnRlcmZhY2VDb25zdHJ1
Y3Rvcj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0K
IAogI2lmIEVOQUJMRShDb25kaXRpb24yMikgfHwgRU5BQkxFKENvbmRpdGlvbjIzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVy
ZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdElu
dGVyZmFjZS5oCmluZGV4IDZhNjI1MDJiOTllOGJjOTI0NmM0MGFlNTk0OGQ1MzdmNWI1Zjk2Y2Eu
LjYzMjhmMmJmMzM3YWQ5OGFlNTQ3YjQ5MDE0NzZhYzJmZjdhOTQ3YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW50ZXJm
YWNlLmgKQEAgLTM0LDcgKzM0LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVy
V2l0aEltcGxlbWVudGF0aW9uPFRlc3RJbnRlcmZhY2U+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVz
dEludGVyZmFjZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0SW50ZXJmYWNlPiYmIGltcGwpCiAgICAgewot
ICAgICAgICBKU1Rlc3RJbnRlcmZhY2UqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0
ZUNlbGw8SlNUZXN0SW50ZXJmYWNlPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdElu
dGVyZmFjZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKKyAgICAg
ICAgSlNUZXN0SW50ZXJmYWNlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdEludGVyZmFjZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RJbnRlcmZh
Y2Uoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwogICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBw
dHI7CiAgICAgfQpAQCAtODEsNyArODEsNyBAQCBwdWJsaWM6CiBwdWJsaWM6CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHByb3RlY3RlZDoKLSAgICBKU1Rlc3RJ
bnRlcmZhY2UoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0SW50
ZXJmYWNlPiYmKTsKKyAgICBKU1Rlc3RJbnRlcmZhY2UoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCYsIFJlZjxUZXN0SW50ZXJmYWNlPiYmKTsKIAogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNDOjpWTSYgdm0pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5jcHAKaW5kZXggZmQ3MDliZmU0ODc1MjBlNTFjZjM5MmFkOTY2NTE5NWFlMWQ2NmZl
OC4uNDY2M2IwYjY2ZWYzZjJhMWQxMDdlMzY3ZjZmY2VkMzJkNTc2Y2Q2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCkBAIC02MCwyMiArNjAsMjIgQEAgcHJp
dmF0ZToKIAogY2xhc3MgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvciA6IHB1
YmxpYyBET01Db25zdHJ1Y3RvckpTQnVpbHRpbk9iamVjdCB7CiBwcml2YXRlOgotICAgIEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCopOworICAgIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3Io
SlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oSlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAKIHB1YmxpYzoKICAgICB0eXBl
ZGVmIERPTUNvbnN0cnVjdG9ySlNCdWlsdGluT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlND
OjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
KyAgICBzdGF0aWMgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvciogY3JlYXRl
KEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0KQogICAgIHsKICAgICAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JDb25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNUZXN0SlNCdWls
dGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAg
ICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sICpnbG9iYWxPYmplY3QpOworICAgICAgICBwdHIt
PmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHRyOwog
ICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlND
OjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlw
ZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5
cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8o
KSk7CiAgICAgfQogcHJvdGVjdGVkOgogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY29uc3RydWN0SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IoSlNDOjpFeGVj
U3RhdGUqKTsKQEAgLTkwLDcgKzkwLDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OmNvbnN0cnUKIAogY29u
c3QgQ2xhc3NJbmZvIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5m
bywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0
cnVjdG9yKSB9OwogCi1KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3JDb25zdHJ1Y3Rvcjo6SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICA6
IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpCiB7CiB9CkBAIC0xMjgsNyArMTI4LDcgQEAg
dm9pZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OnNf
aW5mbyA9IHsgIlRlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IpIH07CiAKLUpTVGVz
dEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvcihTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yOjpKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvcihTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICA6IEpTRE9N
V3JhcHBlcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkgeyB9CiAKIEpTT2JqZWN0KiBKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3Rvcjo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKQEAgLTE1Nyw3ICsxNTcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3RvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWN0KgogCiBKU1ZhbHVlIEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yQ29uc3RydWN0b3I+KHZt
LCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4g
Z2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcj4o
dm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAogdm9p
ZCBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IuaAppbmRleCBjY2IyMDQ0MGUxMjE5YzRkNDdjMWQyNGIxMDZhMDhlMGRhZGQ2ZjkzLi5lYTIw
OTc0ODhjMTg1N2IwYzQxNGI1ZWQ3ODIzMTg1ZjU5ZjU5ZWE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SlNCdWlsdGluQ29uc3RydWN0b3IuaApAQCAtMzAsNyArMzAsNyBAQCBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBKU0RPTVdyYXBwZXIgQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0SlNCdWlsdGluQ29uc3Ry
dWN0b3IqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIHsKLSAgICAgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0
b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0SlNCdWlsdGlu
Q29uc3RydWN0b3I+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0SlNCdWlsdGluQ29u
c3RydWN0b3Ioc3RydWN0dXJlLCBnbG9iYWxPYmplY3QpOworICAgICAgICBKU1Rlc3RKU0J1aWx0
aW5Db25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RKU0J1aWx0aW5Db25zdHJ1Y3Rvcj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RK
U0J1aWx0aW5Db25zdHJ1Y3RvcihzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QpOwogICAgICAgICBw
dHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBw
dHI7CiAgICAgfQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAKIHByb3RlY3RlZDoKLSAg
ICBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFs
T2JqZWN0Kik7CisgICAgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUq
LCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggOGQxNzU5ZGIyMjMxMzk0OWFlOTQwZDY3NmE3YjQ4
ZTdlYzEwMzRhMC4uY2I0MWEyOTkyM2M1MjJjYmQ4YzJlOGE3MzUzZjYwYWQ5MGQ3YTZhNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtNjYsMjgg
KzY2LDI4IEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJD
b25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7CiBwcml2YXRlOgotICAg
IEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSos
IEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNv
bnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCiBwdWJsaWM6
CiAgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwg
SlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKKyAgICBzdGF0aWMgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKiBj
cmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgewogICAgICAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNU
ZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgKmdsb2JhbE9iamVjdCk7Cisg
ICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJl
dHVybiBwdHI7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwotICAgIHN0YXRpYyBKU0M6OlN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAg
IHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmpl
Y3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKICAgICB9CiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lckNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IpIH07CiAKLUpTVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcjo6SlNUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lckNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQorSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9y
OjpKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBCYXNlKHN0cnVj
dHVyZSwgZ2xvYmFsT2JqZWN0KQogewogfQpAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgSlNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQog
CiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6c19pbmZvID0g
eyAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIpIH07CiAKLUpTVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcj4mJiBpbXBsKQorSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcjo6SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyPiYmIGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1v
dmUoaW1wbCkpCiB7CiB9CkBAIC0xNTAsNyArMTUwLDcgQEAgRW5jb2RlZEpTVmFsdWUganNUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2Jq
ZWMKIAogSlNWYWx1ZSBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpnZXRDb25zdHJ1Y3Rv
cihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdl
dERPTUNvbnN0cnVjdG9yPEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDb25zdHJ1Y3Rvcj4o
dm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ29uc3RydWN0
b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
clByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kKEV4ZWNTdGF0ZSogc3RhdGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAppbmRleCAxYzczMWMwZDBhNGEyMWMxZTNhMjdi
MDFjYTEyNzY5YTgwMmI2MDhkLi45OTc3Yjk1ZjNkMWMwNmIyNjQwNzNhNmRkNTc3YjhhYWU5ZTc5
NDMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTMy
LDcgKzMyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVu
dGF0aW9uPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXI+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwp
KTsKKyAgICAgICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogcHRyID0gbmV3IChOb3RO
dWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPihnbG9i
YWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIoc3RydWN0
dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlz
aENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAg
fQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdl
dENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiBwcm90ZWN0ZWQ6
Ci0gICAgSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcihKU0M6OlN0cnVjdHVyZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiYmKTsKKyAgICBK
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxP
YmplY3QmLCBSZWY8VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI+JiYpOwogCiAgICAgdm9pZCBm
aW5pc2hDcmVhdGlvbihKU0M6OlZNJiB2bSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggMTgxZTQxYjViNTJjNGZlNWFiZjFiZmRhZTI5YWExNTI4ZGJlMjI5
Mi4uZGM5NTIxMWE0NDQxYTVmYjUyMzhlYmZlY2YyOTUyZjhiMGE0ZjA4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtNjIsMjIgKzYyLDIyIEBAIHByaXZhdGU6CiAK
IGNsYXNzIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25z
dHJ1Y3Rvck9iamVjdCB7CiBwcml2YXRlOgotICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25z
dHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0
TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxP
YmplY3QmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9i
amVjdCYpOwogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNl
OwotICAgIHN0YXRpYyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IqIGNyZWF0ZShK
U0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgewogICAgICAgICBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNl
bGw8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNUZXN0TmFt
ZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgKmdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwdHI7CiAg
ICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKICAgICB9CiB9OwogCkBAIC04NSwyMiArODUsMjIgQEAgY2xhc3MgSlNUZXN0TmFtZWRDb25z
dHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JXaXRoRG9jdW1l
bnQKIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yV2l0aERvY3VtZW50IEJhc2U7
CiAKLSAgICBzdGF0aWMgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IqIGNy
ZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5h
bWVkQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICB7CiAgICAgICAgIEpT
VGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29u
c3RydWN0b3I+KHZtLmhlYXApKSBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rv
cihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hD
cmVhdGlvbih2bSwgKmdsb2JhbE9iamVjdCk7CisgICAgICAgIGNvbnN0cnVjdG9yLT5maW5pc2hD
cmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOwog
ICAgIH0KIAotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6
Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBw
cm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlND
OjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVl
IHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5
cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0
dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhK
U0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiAKICAgICBE
RUNMQVJFX0lORk87CiAKIHByaXZhdGU6Ci0gICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVk
Q29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpT
VGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKEpTQzo6U3RydWN0dXJlKiwgSlNE
T01HbG9iYWxPYmplY3QmKTsKICAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGNvbnN0cnVjdEpTVGVzdE5hbWVkQ29uc3RydWN0b3IoSlNDOjpFeGVjU3RhdGUqKTsK
ICAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RUeXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0Nl
bGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6
Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAK
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OnNfaW5m
byA9IHsgIlRlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAw
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3Rvcikg
fTsKIAotSlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpKU1Rlc3ROYW1lZENvbnN0
cnVjdG9yQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCitKU1Rlc3ROYW1lZENvbnN0cnVjdG9yQ29uc3RydWN0b3I6OkpTVGVz
dE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICA6IEJhc2Uoc3RydWN0dXJlLCBnbG9iYWxP
YmplY3QpCiB7CiB9CkBAIC0xNDcsMTQgKzE0NywxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yOjpjb25zdHJ1Y3RK
UwogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0
b3I6OnNfaW5mbyA9IHsgIkF1ZGlvQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVB
VEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5hbWVkQ29uc3RydWN0b3JOYW1lZENvbnN0cnVjdG9yKSB9
OwogCi1KU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcjo6SlNUZXN0TmFtZWRD
b25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25z
dHJ1Y3Rvcjo6SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvck5hbWVkQ29uc3RydWN0b3IoU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBCYXNl
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogewogfQogCiB2b2lkIEpTVGVzdE5hbWVkQ29uc3Ry
dWN0b3JOYW1lZENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oJmdsb2Jh
bE9iamVjdCk7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0KTsKICAgICBB
U1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldFByb3RvdHlwZSh2bSwg
Jmdsb2JhbE9iamVjdCksIERvbnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlhbFN0cmluZygm
dm0sIFN0cmluZyhBU0NJSUxpdGVyYWwoIkF1ZGlvIikpKSwgUmVhZE9ubHkgfCBEb250RW51bSk7
CkBAIC0xODQsNyArMTg0LDcgQEAgdm9pZCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yUHJvdG90eXBl
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3ROYW1lZENv
bnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2lu
Zm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0TmFtZWRDb25zdHJ1Y3RvcikgfTsKIAot
SlNUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SlNUZXN0TmFtZWRDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1l
ZENvbnN0cnVjdG9yPiYmIGltcGwpCitKU1Rlc3ROYW1lZENvbnN0cnVjdG9yOjpKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0LCBSZWY8VGVzdE5hbWVkQ29uc3RydWN0b3I+JiYgaW1wbCkKICAgICA6IEpTRE9N
V3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4oc3RydWN0dXJl
LCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KQEAgLTIxNSwxMiArMjE1LDEy
IEBAIEVuY29kZWRKU1ZhbHVlIGpzVGVzdE5hbWVkQ29uc3RydWN0b3JDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzCiAKIEpTVmFsdWUgSlNUZXN0TmFtZWRDb25zdHJ1
Y3Rvcjo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZENvbnN0cnVjdG9y
Q29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qp
KTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNUZXN0TmFtZWRDb25zdHJ1Y3RvckNv
bnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkp
OwogfQogCiBKU1ZhbHVlIEpTVGVzdE5hbWVkQ29uc3RydWN0b3I6OmdldE5hbWVkQ29uc3RydWN0
b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBn
ZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rvcj4o
dm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROYW1lZENvbnN0cnVjdG9yTmFtZWRDb25zdHJ1Y3Rv
cj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAog
Ym9vbCBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQ29uc3RydWN0b3IuaAppbmRleCBjNDc1MjE2NDkx
OGVmZGJjMGEzZDY2ODI4YTViNmY5M2ZlZjU2NDBjLi43ZjE5ODJmZDkyNmYxZmVhNGFjODIyNjIy
MDM1ZjY2ODUxYmJjM2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmgKQEAgLTMy
LDcgKzMyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVu
dGF0aW9uPFRlc3ROYW1lZENvbnN0cnVjdG9yPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3ROYW1l
ZENvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROYW1lZENvbnN0cnVjdG9yPiYmIGltcGwp
CiAgICAgewotICAgICAgICBKU1Rlc3ROYW1lZENvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE5hbWVkQ29uc3RydWN0b3I+KGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKSkgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCwgV1RGOjptb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvciog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROYW1lZENvbnN0cnVj
dG9yPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5hbWVkQ29uc3RydWN0b3Ioc3Ry
dWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZp
bmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAg
ICAgfQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTQzo6SlNWYWx1ZSBn
ZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHN0YXRp
YyBKU0M6OkpTVmFsdWUgZ2V0TmFtZWRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2Jh
bE9iamVjdCopOwogcHJvdGVjdGVkOgotICAgIEpTVGVzdE5hbWVkQ29uc3RydWN0b3IoSlNDOjpT
dHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0TmFtZWRDb25zdHJ1Y3Rvcj4m
Jik7CisgICAgSlNUZXN0TmFtZWRDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xv
YmFsT2JqZWN0JiwgUmVmPFRlc3ROYW1lZENvbnN0cnVjdG9yPiYmKTsKIAogICAgIHZvaWQgZmlu
aXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCmluZGV4IDYxMjVlZGQ4
Njc3MDg2NzJiNGU5N2E5YWQ1NGJiZWYxOTY4MTcyMmIuLjBkZmVmYmQ2NDdkNjg3OTliNTEwMDlh
N2QzMTM5MDdiYjk2NjdmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKQEAgLTY1LDIyICs2NSwyMiBAQCBwcml2
YXRlOgogCiBjbGFzcyBKU1Rlc3ROb2RlQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0
b3JPYmplY3QgewogcHJpdmF0ZToKLSAgICBKU1Rlc3ROb2RlQ29uc3RydWN0b3IoSlNDOjpTdHJ1
Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdE5vZGVDb25zdHJ1Y3RvcihK
U0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3QmKTsKIAogcHVibGljOgogICAgIHR5cGVk
ZWYgRE9NQ29uc3RydWN0b3JPYmplY3QgQmFzZTsKLSAgICBzdGF0aWMgSlNUZXN0Tm9kZUNvbnN0
cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIEpTVGVzdE5vZGVDb25z
dHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIHsKICAgICAgICAgSlNUZXN0Tm9k
ZUNvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVz
dE5vZGVDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIEpTVGVzdE5vZGVDb25zdHJ1Y3RvcihzdHJ1Y3R1
cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sICpnbG9i
YWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3Qp
OwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKLSAgICBz
dGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6
OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAg
ICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVG
bGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogcHJvdGVjdGVkOgogICAgIHN0YXRp
YyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNUZXN0Tm9kZShK
U0M6OkV4ZWNTdGF0ZSopOwpAQCAtOTYsNyArOTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0Tm9kZShFeGVjU3Rh
dAogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0Tm9kZUNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1Rlc3ROb2RlQ29uc3RydWN0b3IpIH07CiAKLUpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6SlNU
ZXN0Tm9kZUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQorSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpKU1Rlc3ROb2RlQ29uc3Ry
dWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCiAgICAgOiBCYXNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogewogfQpAQCAtMTM0LDcg
KzEzNCw3IEBAIHZvaWQgSlNUZXN0Tm9kZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
KQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Tm9kZTo6c19pbmZvID0geyAiVGVzdE5vZGUiLCAm
QmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5vZGUpIH07CiAKLUpT
VGVzdE5vZGU6OkpTVGVzdE5vZGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Tm9kZT4mJiBpbXBsKQorSlNUZXN0Tm9kZTo6SlNU
ZXN0Tm9kZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCwgUmVmPFRlc3ROb2RlPiYmIGltcGwpCiAgICAgOiBKU05vZGUoc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KQEAgLTE5Niw3ICsxOTYsNyBAQCB2b2lk
IHNldEpTVGVzdE5vZGVOYW1lKEV4ZWNTdGF0ZSogc3RhdGUsIEpTT2JqZWN0KiBiYXNlT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aAogCiBKU1ZhbHVlIEpTVGVzdE5vZGU6OmdldENvbnN0cnVjdG9y
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNUZXN0Tm9kZUNvbnN0cnVjdG9yPih2bSwganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9y
PEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QpKTsKIH0KIAogdm9pZCBKU1Rlc3ROb2RlOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaAppbmRleCBlYWRhMDk1Y2NiYTM0
NGZjNzNlMTNkMTliZjc3MmM0MmJiYjJhNzlhLi44ZmQwZDNkMjJjZDQ1ZDc5Y2NhN2NjYWEzYWRi
YTEzN2Q4MDY3OTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgKQEAgLTMxLDcgKzMxLDcgQEAgcHVibGljOgogICAgIHR5
cGVkZWYgSlNOb2RlIEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdE5vZGUqIGNyZWF0ZShKU0M6OlN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdE5vZGU+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTVGVzdE5vZGUqIHB0ciA9IG5ldyAo
Tm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Tm9kZT4oZ2xvYmFsT2JqZWN0LT52bSgp
LmhlYXApKSBKU1Rlc3ROb2RlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1w
bCkpOworICAgICAgICBKU1Rlc3ROb2RlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2Nh
dGVDZWxsPEpTVGVzdE5vZGU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0Tm9kZShz
dHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CiAgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAgICAgICAgcmV0dXJuIHB0cjsK
ICAgICB9CkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFRlc3ROb2RlJj4oQmFzZTo6aW1wbCgpKTsKICAgICB9CiBwcm90ZWN0ZWQ6Ci0gICAgSlNU
ZXN0Tm9kZShKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3ROb2Rl
PiYmKTsKKyAgICBKU1Rlc3ROb2RlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3Qm
LCBSZWY8VGVzdE5vZGU+JiYpOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiB2
bSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5jcHAKaW5kZXggMjBhOGI2
YTU0ZWZiODlhZmNlNDRiMzdmYmU0Njc0NTU2ZDAwZjdjNy4uNGY0MjkwMjM1NjUxZTkxNWU3NmRh
Njg3MDZhNDE1YzY4MGNlNmIyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmNw
cApAQCAtODIsMjggKzgyLDI4IEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTVGVzdE5vbmRldGVybWlu
aXN0aWNDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7CiBwcml2YXRl
OgotICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSos
IEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVj
dG9yKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCiBwdWJsaWM6CiAgICAg
dHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBKU1Rlc3ROb25k
ZXRlcm1pbmlzdGljQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0
aWMgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0s
IEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCiAgICAgewogICAgICAgICBKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IqIHB0
ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Tm9uZGV0ZXJtaW5pc3Rp
Y0NvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9y
KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2
bSwgKmdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2Jh
bE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZP
OwotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZt
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5
cGUpCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYg
dm0sIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3Rv
dHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpj
cmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9i
amVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiB9OwogCiBjb25zdCBD
bGFzc0luZm8gSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShKU1Rlc3ROb25kZXRlcm1pbmlzdGljQ29uc3RydWN0b3IpIH07CiAKLUpT
VGVzdE5vbmRldGVybWluaXN0aWNDb25zdHJ1Y3Rvcjo6SlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0Nv
bnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQorSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY0NvbnN0cnVjdG9yOjpKU1Rlc3ROb25kZXRl
cm1pbmlzdGljQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiAgICAgOiBCYXNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQog
ewogfQpAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpY1Byb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0Tm9u
ZGV0ZXJtaW5pc3RpYzo6c19pbmZvID0geyAiVGVzdE5vbmRldGVybWluaXN0aWMiLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5vbmRldGVybWluaXN0aWMpIH07
CiAKLUpTVGVzdE5vbmRldGVybWluaXN0aWM6OkpTVGVzdE5vbmRldGVybWluaXN0aWMoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0
Tm9uZGV0ZXJtaW5pc3RpYz4mJiBpbXBsKQorSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYzo6SlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyhTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCwgUmVmPFRlc3ROb25kZXRlcm1pbmlzdGljPiYmIGltcGwpCiAgICAgOiBK
U0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdE5vbmRldGVybWluaXN0aWM+KHN0cnVj
dHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpCiB7CiB9CkBAIC00NDIsNyArNDQy
LDcgQEAgdm9pZCBzZXRKU1Rlc3ROb25kZXRlcm1pbmlzdGljTm9uZGV0ZXJtaW5pc3RpY1NldHRl
ckV4Y2VwdGlvbkF0dHIoRXhlY1N0YXRlKiBzdGEKIAogSlNWYWx1ZSBKU1Rlc3ROb25kZXRlcm1p
bmlzdGljOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE5vbmRldGVybWluaXN0
aWNDb25zdHJ1Y3Rvcj4odm0sIGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVj
dCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
Q29uc3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0Tm9uZGV0ZXJtaW5p
c3RpY1Byb3RvdHlwZUZ1bmN0aW9uTm9uZGV0ZXJtaW5pc3RpY1plcm9BcmdGdW5jdGlvbihFeGVj
U3RhdGUqIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb25kZXRlcm1pbmlzdGljLmgKaW5kZXggNzM3Y2I4
ZjQxNDRjYzhjZDQ2MzhlNDcyYWVlNDIyYzM1YjVhMmFkMy4uYjcyOWQzYjM3ZGQ0ZjNkYTFjOTdj
M2VlN2IzNGRmZTlkNzlkNTczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vbmRldGVybWluaXN0aWMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYy5oCkBA
IC0zMiw3ICszMiw3IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIEpTRE9NV3JhcHBlcldpdGhJbXBs
ZW1lbnRhdGlvbjxUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4gQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4mJiBp
bXBsKQogICAgIHsKLSAgICAgICAgSlNUZXN0Tm9uZGV0ZXJtaW5pc3RpYyogcHRyID0gbmV3IChO
b3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROb25kZXRlcm1pbmlzdGljPihnbG9iYWxP
YmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE5vbmRldGVybWluaXN0aWMoc3RydWN0dXJlLCBnbG9i
YWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSk7CisgICAgICAgIEpTVGVzdE5vbmRldGVybWluaXN0
aWMqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0Tm9uZGV0ZXJt
aW5pc3RpYz4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3ROb25kZXRlcm1pbmlzdGlj
KHN0cnVjdHVyZSwgKmdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKICAgICAgICAgcHRy
LT5maW5pc2hDcmVhdGlvbihnbG9iYWxPYmplY3QtPnZtKCkpOwogICAgICAgICByZXR1cm4gcHRy
OwogICAgIH0KQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEpTQzo6SlNW
YWx1ZSBnZXRDb25zdHJ1Y3RvcihKU0M6OlZNJiwgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogcHJv
dGVjdGVkOgotICAgIEpTVGVzdE5vbmRldGVybWluaXN0aWMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RP
TUdsb2JhbE9iamVjdCosIFJlZjxUZXN0Tm9uZGV0ZXJtaW5pc3RpYz4mJik7CisgICAgSlNUZXN0
Tm9uZGV0ZXJtaW5pc3RpYyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVm
PFRlc3ROb25kZXRlcm1pbmlzdGljPiYmKTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlND
OjpWTSYgdm0pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCA5ZTQ2NWVkMjlmMjFkZTA2YmE5YmEwNTg0
YTVkNTQzYTY1NDBkZWE4Li40MTViMmRkOGRmZjFlYTk4MDg5NjIxMTQzZThjMjIwZDAxMDYzMDU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcApAQCAtMzQ3LDIyICszNDcsMjIgQEAgcHJpdmF0ZToKIAogY2xhc3MgSlNU
ZXN0T2JqQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgewogcHJpdmF0
ZToKLSAgICBKU1Rlc3RPYmpDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFs
T2JqZWN0Kik7CisgICAgSlNUZXN0T2JqQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RP
TUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYsIEpTRE9N
R2xvYmFsT2JqZWN0Jik7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIERPTUNvbnN0cnVjdG9yT2Jq
ZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpTVGVzdE9iakNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpW
TSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCisgICAgc3RhdGljIEpTVGVzdE9iakNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpW
TSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiAgICAgewogICAgICAgICBKU1Rlc3RPYmpDb25zdHJ1Y3RvciogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPYmpDb25zdHJ1Y3Rvcj4odm0uaGVh
cCkpIEpTVGVzdE9iakNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAg
ICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwgKmdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+
ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwdHI7CiAg
ICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6
OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBl
SW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAg
cmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygp
KTsKICAgICB9CiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU1Rlc3RPYmooSlNDOjpFeGVjU3RhdGUqKTsKQEAgLTQ4NSw3
ICs0ODUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE9iakNvbnN0cnVj
dG9yOjpjb25zdHJ1Y3RKU1Rlc3RPYmooRXhlY1N0YXRlKgogCiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0T2JqQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RPYmplY3RDb25zdHJ1Y3RvciIsICZC
YXNlOjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T2JqQ29uc3RydWN0b3Ip
IH07CiAKLUpTVGVzdE9iakNvbnN0cnVjdG9yOjpKU1Rlc3RPYmpDb25zdHJ1Y3RvcihTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTVGVzdE9i
akNvbnN0cnVjdG9yOjpKU1Rlc3RPYmpDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICA6IEJhc2Uoc3RydWN0dXJlLCBn
bG9iYWxPYmplY3QpCiB7CiB9CkBAIC03MjUsNyArNzI1LDcgQEAgdm9pZCBKU1Rlc3RPYmpQcm90
b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKIAogY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9i
ajo6c19pbmZvID0geyAiVGVzdE9iamVjdCIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RPYmpUYWJs
ZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1Rlc3RPYmopIH07CiAKLUpTVGVzdE9iajo6SlNUZXN0
T2JqKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBSZWY8VGVzdE9iaj4mJiBpbXBsKQorSlNUZXN0T2JqOjpKU1Rlc3RPYmooU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0T2JqPiYm
IGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdE9iaj4oc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBsKSkKIHsKIH0KQEAgLTMxNjIsNyAr
MzE2Miw3IEBAIHZvaWQgc2V0SlNUZXN0T2JqUHV0Rm9yd2FyZHNOdWxsYWJsZUF0dHJpYnV0ZShF
eGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCogYmFzZU9iCiAKIEpTVmFsdWUgSlNUZXN0T2JqOjpn
ZXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0g
ICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE9iakNvbnN0cnVjdG9yPih2bSwganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERP
TUNvbnN0cnVjdG9yPEpTVGVzdE9iakNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVm9pZE1ldGhvZChFeGVjU3RhdGUqIHN0YXRl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE9iai5oCmluZGV4IGE0NzNhODQwY2M5ZTc1YWRmNTA4YjZkMDUwMjYwNzJlYjFkMGU0ZjQuLjc2
OWYxZWUxNjY5NTg3MmRlMTU3MDYyYjNhZjgxNWVjYzhhODNhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKQEAgLTMyLDcg
KzMyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0
aW9uPFRlc3RPYmo+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdE9iaiogY3JlYXRlKEpTQzo6U3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxU
ZXN0T2JqPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RPYmoqIHB0ciA9IG5ldyAoTm90
TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T2JqPihnbG9iYWxPYmplY3QtPnZtKCkuaGVh
cCkpIEpTVGVzdE9iaihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsK
KyAgICAgICAgSlNUZXN0T2JqKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdE9iaj4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RPYmooc3RydWN0dXJl
LCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENy
ZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpA
QCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBC
YXNlOjpTdHJ1Y3R1cmVGbGFnczsKIHByb3RlY3RlZDoKLSAgICBKU1Rlc3RPYmooSlNDOjpTdHJ1
Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxUZXN0T2JqPiYmKTsKKyAgICBKU1Rlc3RP
YmooSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0T2JqPiYmKTsK
IAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0pCiAgICAgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IGNjOWFhZjdlYTU4ZTVj
MDY2YzVjMzhmNjZhMDk3YmI0MDA5ZmFmNmIuLjZhYzVmYTNlOTUxMzhjZDhlZmRlZGFmNWYyODg3
NTQ2N2RlNDJkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5jcHAKQEAgLTYyLDIyICs2MiwyMiBAQCBwcml2YXRlOgogCiBjbGFzcyBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3Qg
ewogcHJpdmF0ZToKLSAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3Io
SlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2Jq
ZWN0Jik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmpl
Y3QmKTsKIAogcHVibGljOgogICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JPYmplY3QgQmFzZTsK
LSAgICBzdGF0aWMgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKiBjcmVh
dGUoSlNDOjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCisgICAgc3RhdGljIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnNDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIHsKICAgICAgICAgSlNU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cj4odm0uaGVhcCkpIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sICpn
bG9iYWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmpl
Y3QpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKLSAg
ICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQor
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogcHJvdGVjdGVkOgogICAgIHN0
YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9ycyhKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtMTY4LDcgKzE2OCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
c0NvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKCiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9h
ZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcikgfTsKIAotSlNUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCitKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3I6
OkpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKICAgICA6IEJhc2Uoc3RydWN0
dXJlLCBnbG9iYWxPYmplY3QpCiB7CiB9CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBKU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAK
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpzX2luZm8gPSB7
ICJUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFURV9N
RVRIT0RfVEFCTEUoSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycykgfTsKIAotSlNUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzPiYmIGltcGwpCitKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0
b3JzOjpKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKFN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8VGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnM+JiYgaW1wbCkKICAgICA6IEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4oc3RydWN0dXJlLCBnbG9iYWxPYmplY3QsIFdURjo6bW92
ZShpbXBsKSkKIHsKIH0KQEAgLTIzNiw3ICsyMzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmpl
YwogCiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmdldENvbnN0cnVjdG9y
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gZ2V0
RE9NQ29uc3RydWN0b3I8SlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc0NvbnN0cnVjdG9yPih2
bSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNDb25zdHJ1Y3Rv
cj4odm0sICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QpKTsKIH0KIAog
Ym9vbCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9w
YXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZp
c2l0b3ImIHZpc2l0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
aAppbmRleCA4YWRlNTc2NGQ2NmY2MWE3YmIyNmYwNmQ4ZjBkNDViNTNiNjEwZGFiLi4xMzllMzQ0
MTY4MzBkYmQzOTY3OTk3MDk1MjI0ZTNiNjBhMTRhNzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9y
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmgKQEAgLTMyLDcgKzMyLDcgQEAgcHVibGljOgogICAgIHR5
cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBj
cmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgUmVmPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiYmIGltcGwpCiAgICAgewot
ICAgICAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBwdHIgPSBuZXcgKE5vdE51bGws
IEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+KGdsb2JhbE9i
amVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyhzdHJ1Y3R1cmUs
IGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVz
dE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1v
dmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0o
KSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBKU0M6
OkpTR2xvYmFsT2JqZWN0Kik7CiBwcm90ZWN0ZWQ6Ci0gICAgSlNUZXN0T3ZlcmxvYWRlZENvbnN0
cnVjdG9ycyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzPiYmKTsKKyAgICBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmLCBSZWY8VGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnM+JiYpOwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiB2bSkK
ICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKaW5kZXggMWRjOTlhNTVj
OGViMjlmMjFjYWVjMGMzMzUyMmQ3MWVlZGU1OGI3ZS4uZTg5ZmUxY2JhNTBkNzAyODFjOTBkMWNh
N2E3MzMxNzA3NTkwMzhiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcApA
QCAtNjgsMjIgKzY4LDIyIEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTVGVzdE92ZXJyaWRlQnVpbHRp
bnNDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7CiBwcml2YXRlOgot
ICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpT
RE9NR2xvYmFsT2JqZWN0Kik7CisgICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9y
KEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKEpTQzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCiBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBKU1Rlc3RPdmVycmlk
ZUJ1aWx0aW5zQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMg
SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiAgICAgewogICAgICAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IqIHB0ciA9
IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0Nv
bnN0cnVjdG9yPih2bS5oZWFwKSkgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yKHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlvbih2bSwg
Kmdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9i
amVjdCk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCiAgICAgREVDTEFSRV9JTkZPOwot
ICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUp
CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0s
IEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVj
dHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVh
dGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKICAgICB9CiB9OwogCkBAIC0xMDMsNyAr
MTAzLDcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE92ZXJyaWRlQnVpbHRp
bnNUYWJsZVZhbHVlc1tdID0KIHN0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T3ZlcnJpZGVC
dWlsdGluc1RhYmxlID0geyAxLCAxLCB0cnVlLCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zVGFibGVW
YWx1ZXMsIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNUYWJsZUluZGV4IH07CiBjb25zdCBDbGFzc0lu
Zm8gSlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0T3Zl
cnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3IpIH07CiAKLUpTVGVzdE92
ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcjo6SlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVj
dG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQorSlNUZXN0T3ZlcnJpZGVCdWlsdGluc0NvbnN0cnVjdG9yOjpKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCiAgICAgOiBCYXNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogewogfQpA
QCAtMTM0LDcgKzEzNCw3IEBAIHZvaWQgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZTo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T3ZlcnJpZGVC
dWlsdGluczo6c19pbmZvID0geyAiVGVzdE92ZXJyaWRlQnVpbHRpbnMiLCAmQmFzZTo6c19pbmZv
LCAmSlNUZXN0T3ZlcnJpZGVCdWlsdGluc1RhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnMpIH07CiAKLUpTVGVzdE92ZXJyaWRlQnVpbHRpbnM6OkpTVGVzdE92
ZXJyaWRlQnVpbHRpbnMoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFJlZjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4mJiBpbXBsKQorSlNUZXN0T3Zl
cnJpZGVCdWlsdGluczo6SlNUZXN0T3ZlcnJpZGVCdWlsdGlucyhTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RPdmVycmlkZUJ1aWx0
aW5zPiYmIGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRpb248VGVzdE92
ZXJyaWRlQnVpbHRpbnM+KHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkp
CiB7CiB9CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogc3QKIAogSlNW
YWx1ZSBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zOjpnZXRDb25zdHJ1Y3RvcihWTSYgdm0sIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9y
PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNDb25zdHJ1Y3Rvcj4odm0sIGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCkpOworICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T3ZlcnJpZGVCdWlsdGluc1Byb3RvdHlwZUZ1bmN0aW9uTmFtZWRJdGVtKEV4ZWNT
dGF0ZSogc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaAppbmRleCBlNGUyMDBj
N2QwOTM2NDZhMWFiN2U5MTNkN2FlNjIzN2RmYTNhOTJkLi44MzkzOThkNTMwNmQwMzMzYjVlMWE2
MjdhMjBmMzY5MWQ3ZjE4MmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgKQEAg
LTMyLDcgKzMyLDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxl
bWVudGF0aW9uPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiBCYXNlOwogICAgIHN0YXRpYyBKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zKiBjcmVhdGUoSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVmPFRlc3RPdmVycmlkZUJ1aWx0aW5zPiYmIGlt
cGwpCiAgICAgewotICAgICAgICBKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTVGVzdE92ZXJyaWRlQnVpbHRpbnM+KGdsb2JhbE9i
amVjdC0+dm0oKS5oZWFwKSkgSlNUZXN0T3ZlcnJpZGVCdWlsdGlucyhzdHJ1Y3R1cmUsIGdsb2Jh
bE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
cyogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RPdmVycmlkZUJ1
aWx0aW5zPihnbG9iYWxPYmplY3QtPnZtKCkuaGVhcCkpIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMo
c3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwogICAgICAgICBwdHIt
PmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7
CiAgICAgfQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiBwdWJsaWM6CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpIYXNJbXB1cmVHZXRPd25Qcm9wZXJ0
eVNsb3QgfCBKU0M6OkludGVyY2VwdHNHZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4RXZlbldoZW5M
ZW5ndGhJc05vdFplcm8gfCBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8IEpTQzo6
T3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOwogcHJvdGVj
dGVkOgotICAgIEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCosIFJlZjxUZXN0T3ZlcnJpZGVCdWlsdGlucz4mJik7CisgICAgSlNUZXN0T3Zl
cnJpZGVCdWlsdGlucyhKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0JiwgUmVmPFRl
c3RPdmVycmlkZUJ1aWx0aW5zPiYmKTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpW
TSYgdm0pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCAyMTRkZGY4MDk0YmI4YjAyNDE1NDdhYjI2ZTEwYzQ2
MDE4MjE4MmJkLi5jZTQzZTBhMzhjMDQ0Y2JmZTNhN2YzNmIxMTY4NjU1ZGI0MDRjYjdkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
LmNwcApAQCAtNzMsMjggKzczLDI4IEBAIHByaXZhdGU6CiAKIGNsYXNzIEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yIDogcHVibGljIERPTUNvbnN0cnVjdG9y
T2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOworICAg
IEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKEpTQzo6U3Ry
dWN0dXJlKiwgSlNET01HbG9iYWxPYmplY3QmKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKEpT
Qzo6Vk0mLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogCiBwdWJsaWM6CiAgICAgdHlwZWRlZiBET01D
b25zdHJ1Y3Rvck9iamVjdCBCYXNlOwotICAgIHN0YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVj
dHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQorICAgIHN0
YXRpYyBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3RvciogY3Jl
YXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIHsKICAgICAgICAgSlNUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3IqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0b3I+
KHZtLmhlYXApKSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rv
cihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24o
dm0sICpnbG9iYWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9i
YWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5G
TzsKLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2
bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90
eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0m
IHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogfTsKIAogY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9y
OjpzX2luZm8gPSB7ICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3RydWN0
b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNvbnN0cnVjdG9yKSB9OwogCi1KU1Rlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2VDb25zdHJ1Y3Rvcjo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2VDb25zdHJ1Y3Rvcjo6SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ29uc3Ry
dWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCiAgICAgOiBCYXNlKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KQogewogfQpAQCAtMTMwLDcg
KzEzMCw3IEBAIHZvaWQgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAKIGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnNfaW5mbyA9IHsgIlRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxF
KEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSkgfTsKIAotSlNUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFJlZjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiYmIGltcGwpCitKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCwgUmVmPFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+JiYgaW1w
bCkKICAgICA6IEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGlt
cGwpKQogewogfQpAQCAtMjkyLDcgKzI5Miw3IEBAIHZvaWQgc2V0SlNUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQ2FjaGVkVmFsdWUoRXhlY1N0YXRlKiBzdGF0ZSwgSlNPYmplCiAK
IEpTVmFsdWUgSlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpnZXRDb25zdHJ1
Y3RvcihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJu
IGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNv
bnN0cnVjdG9yPih2bSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGds
b2JhbE9iamVjdCkpOwogfQogCiB2b2lkIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5o
CmluZGV4IGViOTI0NmIyZjQ0NDFhN2M2MTI3ZDM0MzZiYmE5YmQxMWJmZjExNGEuLmYxYzhhZWYw
YTUyYTUwMzAzMWJjNDYxMDQ5ZjlmMzA0YjFjZjlmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKQEAgLTM0LDcgKzM0LDcgQEAg
cHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U+IEJhc2U7CiAgICAgc3RhdGljIEpTVGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlZjxUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxv
Y2F0ZUNlbGw8SlNUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPihnbG9iYWxPYmpl
Y3QtPnZtKCkuaGVhcCkpIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZShzdHJ1
Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxs
b2NhdGVDZWxsPEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4oZ2xvYmFsT2Jq
ZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uoc3Ry
dWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZp
bmlzaENyZWF0aW9uKGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAg
ICAgfQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbihKU0NlbGwqLCBKU0M6OlNsb3RWaXNpdG9yJik7CiAKIHByb3RlY3RlZDoKLSAgICBKU1Rl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUds
b2JhbE9iamVjdCosIFJlZjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlPiYmKTsK
KyAgICBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UoSlNDOjpTdHJ1Y3R1cmUq
LCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlPiYmKTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpWTSYgdm0pCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFR5cGVkZWZzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RUeXBlZGVmcy5jcHAKaW5kZXggZDgwMDNjNGVhNjQxOTA4YzFjY2FiZTk3ZGYxMGM2NzIy
NWFmOTA5OS4uZGM0NTlmOWU0MDkxM2I3MzgyN2RiNGQ3NGZmMmE1MTRjNzhkNGE5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0VHlwZWRlZnMuY3BwCkBAIC05OSwyMiArOTksMjIgQEAgcHJpdmF0ZToKIAogY2xhc3MgSlNU
ZXN0VHlwZWRlZnNDb25zdHJ1Y3RvciA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7CiBw
cml2YXRlOgotICAgIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBK
U0RPTUdsb2JhbE9iamVjdCopOworICAgIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IoSlNDOjpT
dHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYpOwogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24o
SlNDOjpWTSYsIEpTRE9NR2xvYmFsT2JqZWN0Jik7CiAKIHB1YmxpYzoKICAgICB0eXBlZGVmIERP
TUNvbnN0cnVjdG9yT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIEpTVGVzdFR5cGVkZWZzQ29uc3Ry
dWN0b3IqIGNyZWF0ZShKU0M6OlZNJiB2bSwgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKKyAgICBzdGF0aWMgSlNUZXN0VHlwZWRlZnND
b25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIHsKICAgICAgICAgSlNUZXN0
VHlwZWRlZnNDb25zdHJ1Y3RvciogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2Vs
bDxKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yPih2bS5oZWFwKSkgSlNUZXN0VHlwZWRlZnNDb25z
dHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3Jl
YXRpb24odm0sICpnbG9iYWxPYmplY3QpOworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKHZt
LCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAogICAgIERFQ0xB
UkVfSU5GTzsKLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6
OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUg
cHJvdG90eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKEpT
Qzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1
ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVj
dHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpTQzo6VHlwZUluZm8o
SlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgfQogcHJvdGVj
dGVkOgogICAgIHN0YXRpYyBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3Ry
dWN0SlNUZXN0VHlwZWRlZnMoSlNDOjpFeGVjU3RhdGUqKTsKQEAgLTE1OSw3ICsxNTksNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmNv
bnN0cnVjdEpTVGVzdFR5cGVkZWZzKAogCiBjb25zdCBDbGFzc0luZm8gSlNUZXN0VHlwZWRlZnND
b25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiVGVzdFR5cGVkZWZzQ29uc3RydWN0b3IiLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3Ip
IH07CiAKLUpTVGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OkpTVGVzdFR5cGVkZWZzQ29uc3RydWN0
b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CitKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yOjpKU1Rlc3RUeXBlZGVmc0NvbnN0cnVjdG9yKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAg
IDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKIHsKIH0KQEAgLTIxMyw3ICsyMTMsNyBA
QCB2b2lkIEpTVGVzdFR5cGVkZWZzUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAK
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RUeXBlZGVmczo6c19pbmZvID0geyAiVGVzdFR5cGVkZWZz
IiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdFR5cGVkZWZzVGFibGUsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNUZXN0VHlwZWRlZnMpIH07CiAKLUpTVGVzdFR5cGVkZWZzOjpKU1Rlc3RUeXBlZGVmcyhT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVm
PFRlc3RUeXBlZGVmcz4mJiBpbXBsKQorSlNUZXN0VHlwZWRlZnM6OkpTVGVzdFR5cGVkZWZzKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0LCBSZWY8
VGVzdFR5cGVkZWZzPiYmIGltcGwpCiAgICAgOiBKU0RPTVdyYXBwZXJXaXRoSW1wbGVtZW50YXRp
b248VGVzdFR5cGVkZWZzPihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwp
KQogewogfQpAQCAtNDkzLDcgKzQ5Myw3IEBAIHZvaWQgc2V0SlNUZXN0VHlwZWRlZnNTdHJpbmdB
dHRyV2l0aFNldHRlckV4Y2VwdGlvbihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCoKIAogSlNW
YWx1ZSBKU1Rlc3RUeXBlZGVmczo6Z2V0Q29uc3RydWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01Db25zdHJ1Y3RvcjxKU1Rlc3RU
eXBlZGVmc0NvbnN0cnVjdG9yPih2bSwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVzdFR5cGVkZWZzQ29u
c3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7
CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0VHlwZWRlZnNQcm90b3R5
cGVGdW5jdGlvbkZ1bmMoRXhlY1N0YXRlKiBzdGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmgKaW5kZXggZjJj
ZTkzNmI3YWRkNzA1MjdjZDQzNzlmYzJhM2YwNzdlNDZhMDc2Ni4uOGNhNzc2ZjkyY2YxZmNiNzcx
NWQzMTlhZDhjYzQ1Yjc3MTNjY2RhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmgKQEAgLTMyLDcgKzMyLDcg
QEAgcHVibGljOgogICAgIHR5cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPFRl
c3RUeXBlZGVmcz4gQmFzZTsKICAgICBzdGF0aWMgSlNUZXN0VHlwZWRlZnMqIGNyZWF0ZShKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWY8VGVzdFR5cGVkZWZzPiYmIGltcGwpCiAgICAgewotICAgICAgICBKU1Rlc3RUeXBlZGVmcyog
cHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3RUeXBlZGVmcz4oZ2xv
YmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU1Rlc3RUeXBlZGVmcyhzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCwgV1RGOjptb3ZlKGltcGwpKTsKKyAgICAgICAgSlNUZXN0VHlwZWRlZnMqIHB0ciA9IG5l
dyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNUZXN0VHlwZWRlZnM+KGdsb2JhbE9iamVj
dC0+dm0oKS5oZWFwKSkgSlNUZXN0VHlwZWRlZnMoc3RydWN0dXJlLCAqZ2xvYmFsT2JqZWN0LCBX
VEY6Om1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGdsb2JhbE9iamVj
dC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpAQCAtNTQsNyArNTQsNyBAQCBw
dWJsaWM6CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFn
czsKIHByb3RlY3RlZDoKLSAgICBKU1Rlc3RUeXBlZGVmcyhKU0M6OlN0cnVjdHVyZSosIEpTRE9N
R2xvYmFsT2JqZWN0KiwgUmVmPFRlc3RUeXBlZGVmcz4mJik7CisgICAgSlNUZXN0VHlwZWRlZnMo
SlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxUZXN0VHlwZWRlZnM+JiYp
OwogCiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiB2bSkKICAgICB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRl
LmNwcAppbmRleCA2ZDE1MDBjZjJjMDdhZDJkYWU1ZTdhMjE4NDVjNTc3ZmIzZjY2OTU5Li5kYzU2
NjVkMDNmNDQ2ZjkxOGM3NDI3MWM1YTJlYWU3YzBlNjhlOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNhdHRyaWJ1dGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5jcHAKQEAg
LTYyLDI4ICs2MiwyOCBAQCBwcml2YXRlOgogCiBjbGFzcyBKU2F0dHJpYnV0ZUNvbnN0cnVjdG9y
IDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHsKIHByaXZhdGU6Ci0gICAgSlNhdHRyaWJ1
dGVDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0Kik7CisgICAg
SlNhdHRyaWJ1dGVDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0
Jik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNET01HbG9iYWxPYmplY3Qm
KTsKIAogcHVibGljOgogICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JPYmplY3QgQmFzZTsKLSAg
ICBzdGF0aWMgSlNhdHRyaWJ1dGVDb25zdHJ1Y3RvciogY3JlYXRlKEpTQzo6Vk0mIHZtLCBKU0M6
OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQor
ICAgIHN0YXRpYyBKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKiBjcmVhdGUoSlNDOjpWTSYgdm0sIEpT
Qzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiAgICAgewogICAgICAgICBKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yKiBwdHIgPSBuZXcgKE5vdE51
bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTYXR0cmlidXRlQ29uc3RydWN0b3I+KHZtLmhlYXApKSBK
U2F0dHJpYnV0ZUNvbnN0cnVjdG9yKHN0cnVjdHVyZSwgZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAg
cHRyLT5maW5pc2hDcmVhdGlvbih2bSwgKmdsb2JhbE9iamVjdCk7CisgICAgICAgIHB0ci0+Zmlu
aXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAg
fQogCiAgICAgREVDTEFSRV9JTkZPOwotICAgIHN0YXRpYyBKU0M6OlN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBKU0M6OlN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgSlNDOjpUeXBlSW5m
byhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgcmV0
dXJuIEpTQzo6U3RydWN0dXJlOjpjcmVhdGUodm0sICZnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwg
SlNDOjpUeXBlSW5mbyhKU0M6Ok9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsK
ICAgICB9CiB9OwogCiBjb25zdCBDbGFzc0luZm8gSlNhdHRyaWJ1dGVDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiYXR0cmlidXRlQ29uc3RydWN0b3IiLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVf
TUVUSE9EX1RBQkxFKEpTYXR0cmlidXRlQ29uc3RydWN0b3IpIH07CiAKLUpTYXR0cmlidXRlQ29u
c3RydWN0b3I6OkpTYXR0cmlidXRlQ29uc3RydWN0b3IoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCitKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yOjpK
U2F0dHJpYnV0ZUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkK
IHsKIH0KQEAgLTExNSw3ICsxMTUsNyBAQCB2b2lkIEpTYXR0cmlidXRlUHJvdG90eXBlOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCiAKIGNvbnN0IENsYXNzSW5mbyBKU2F0dHJpYnV0ZTo6c19pbmZv
ID0geyAiYXR0cmlidXRlIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U2F0dHJpYnV0ZSkgfTsKIAotSlNhdHRyaWJ1dGU6OkpTYXR0cmlidXRlKFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8YXR0cmlidXRlPiYm
IGltcGwpCitKU2F0dHJpYnV0ZTo6SlNhdHRyaWJ1dGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxhdHRyaWJ1dGU+JiYgaW1wbCkKICAg
ICA6IEpTRE9NV3JhcHBlcldpdGhJbXBsZW1lbnRhdGlvbjxhdHRyaWJ1dGU+KHN0cnVjdHVyZSwg
Z2xvYmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpCiB7CiB9CkBAIC0xNjMsNyArMTYzLDcgQEAg
RW5jb2RlZEpTVmFsdWUganNhdHRyaWJ1dGVDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBK
U09iamVjdCogYmFzZVZhbHVlLCBFbmMKIAogSlNWYWx1ZSBKU2F0dHJpYnV0ZTo6Z2V0Q29uc3Ry
dWN0b3IoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVy
biBnZXRET01Db25zdHJ1Y3RvcjxKU2F0dHJpYnV0ZUNvbnN0cnVjdG9yPih2bSwganNDYXN0PEpT
RE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CisgICAgcmV0dXJuIGdldERPTUNvbnN0
cnVjdG9yPEpTYXR0cmlidXRlQ29uc3RydWN0b3I+KHZtLCAqanNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KSk7CiB9CiAKIGJvb2wgSlNhdHRyaWJ1dGVPd25lcjo6aXNSZWFj
aGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZv
aWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU2F0dHJpYnV0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKaW5kZXggY2EzYjExMDMyNzE2OTAy
YjEyYjI2MmQxYmJhYTY0Y2QyMzI0ZWY1ZC4uZjZlZGNlMzA0Y2IwYmY3YTg4MjdmNDk3NjU3OGI5
ZjE1OTZlNmFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTYXR0cmlidXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTYXR0cmlidXRlLmgKQEAgLTMzLDcgKzMzLDcgQEAgcHVibGljOgogICAgIHR5
cGVkZWYgSlNET01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPGF0dHJpYnV0ZT4gQmFzZTsKICAg
ICBzdGF0aWMgSlNhdHRyaWJ1dGUqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8YXR0cmlidXRlPiYmIGltcGwpCiAg
ICAgewotICAgICAgICBKU2F0dHJpYnV0ZSogcHRyID0gbmV3IChOb3ROdWxsLCBKU0M6OmFsbG9j
YXRlQ2VsbDxKU2F0dHJpYnV0ZT4oZ2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU2F0dHJpYnV0
ZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCwgV1RGOjptb3ZlKGltcGwpKTsKKyAgICAgICAgSlNh
dHRyaWJ1dGUqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNhdHRyaWJ1
dGU+KGdsb2JhbE9iamVjdC0+dm0oKS5oZWFwKSkgSlNhdHRyaWJ1dGUoc3RydWN0dXJlLCAqZ2xv
YmFsT2JqZWN0LCBXVEY6Om1vdmUoaW1wbCkpOwogICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9u
KGdsb2JhbE9iamVjdC0+dm0oKSk7CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQpAQCAtNTIs
NyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVj
dG9yKEpTQzo6Vk0mLCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiBwcm90ZWN0ZWQ6Ci0gICAgSlNh
dHRyaWJ1dGUoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCosIFJlZjxhdHRyaWJ1
dGU+JiYpOworICAgIEpTYXR0cmlidXRlKEpTQzo6U3RydWN0dXJlKiwgSlNET01HbG9iYWxPYmpl
Y3QmLCBSZWY8YXR0cmlidXRlPiYmKTsKIAogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpW
TSYgdm0pCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTcmVhZG9ubHkuY3BwCmluZGV4IDY3MDM5NzE5Y2Q1M2ViNGVjOTY4ZWI2Y2U4
ODQ0NDQxODkxZTU5NmQuLjlkNTgwODQxY2MxODA3YTQyOThkNTMzMGJhMWZjYjhkMzM1NWQxMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3Jl
YWRvbmx5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNyZWFkb25seS5jcHAKQEAgLTU5LDI4ICs1OSwyOCBAQCBwcml2YXRlOgogCiBjbGFzcyBKU3Jl
YWRvbmx5Q29uc3RydWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgewogcHJpdmF0
ZToKLSAgICBKU3JlYWRvbmx5Q29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2Jh
bE9iamVjdCopOworICAgIEpTcmVhZG9ubHlDb25zdHJ1Y3RvcihKU0M6OlN0cnVjdHVyZSosIEpT
RE9NR2xvYmFsT2JqZWN0Jik7CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihKU0M6OlZNJiwgSlNE
T01HbG9iYWxPYmplY3QmKTsKIAogcHVibGljOgogICAgIHR5cGVkZWYgRE9NQ29uc3RydWN0b3JP
YmplY3QgQmFzZTsKLSAgICBzdGF0aWMgSlNyZWFkb25seUNvbnN0cnVjdG9yKiBjcmVhdGUoSlND
OjpWTSYgdm0sIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCisgICAgc3RhdGljIEpTcmVhZG9ubHlDb25zdHJ1Y3RvciogY3JlYXRlKEpT
Qzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogICAgIHsKICAgICAgICAgSlNyZWFkb25seUNvbnN0cnVjdG9yKiBwdHIg
PSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTcmVhZG9ubHlDb25zdHJ1Y3Rvcj4o
dm0uaGVhcCkpIEpTcmVhZG9ubHlDb25zdHJ1Y3RvcihzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCk7
Ci0gICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24odm0sICpnbG9iYWxPYmplY3QpOworICAgICAg
ICBwdHItPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOwogICAgICAgICByZXR1cm4g
cHRyOwogICAgIH0KIAogICAgIERFQ0xBUkVfSU5GTzsKLSAgICBzdGF0aWMgSlNDOjpTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShKU0M6OlZNJiB2bSwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgcHJvdG90eXBlKQorICAgIHN0YXRpYyBKU0M6OlN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICByZXR1
cm4gSlNDOjpTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIEpT
Qzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cisg
ICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAmZ2xvYmFsT2JqZWN0LCBw
cm90b3R5cGUsIEpTQzo6VHlwZUluZm8oSlNDOjpPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CiAgICAgfQogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEpTcmVhZG9ubHlDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAicmVhZG9ubHlDb25zdHJ1Y3RvciIsICZCYXNlOjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoSlNyZWFkb25seUNvbnN0cnVjdG9yKSB9OwogCi1KU3JlYWRv
bmx5Q29uc3RydWN0b3I6OkpTcmVhZG9ubHlDb25zdHJ1Y3RvcihTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK0pTcmVhZG9ubHlDb25zdHJ1Y3Rv
cjo6SlNyZWFkb25seUNvbnN0cnVjdG9yKFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogICAgIDogQmFzZShzdHJ1Y3R1cmUsIGdsb2JhbE9iamVj
dCkKIHsKIH0KQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIEpTcmVhZG9ubHlQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSkKIAogY29uc3QgQ2xhc3NJbmZvIEpTcmVhZG9ubHk6OnNfaW5m
byA9IHsgInJlYWRvbmx5IiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U3JlYWRvbmx5KSB9OwogCi1KU3JlYWRvbmx5OjpKU3JlYWRvbmx5KFN0cnVjdHVyZSogc3RydWN0
dXJlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBSZWY8cmVhZG9ubHk+JiYgaW1w
bCkKK0pTcmVhZG9ubHk6OkpTcmVhZG9ubHkoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIFJlZjxyZWFkb25seT4mJiBpbXBsKQogICAgIDogSlNE
T01XcmFwcGVyV2l0aEltcGxlbWVudGF0aW9uPHJlYWRvbmx5PihzdHJ1Y3R1cmUsIGdsb2JhbE9i
amVjdCwgV1RGOjptb3ZlKGltcGwpKQogewogfQpAQCAtMTQyLDcgKzE0Miw3IEBAIEVuY29kZWRK
U1ZhbHVlIGpzcmVhZG9ubHlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIHN0YXRlLCBKU09iamVjdCog
YmFzZVZhbHVlLCBFbmNvCiAKIEpTVmFsdWUgSlNyZWFkb25seTo6Z2V0Q29uc3RydWN0b3IoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBnZXRET01D
b25zdHJ1Y3RvcjxKU3JlYWRvbmx5Q29uc3RydWN0b3I+KHZtLCBqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QpKTsKKyAgICByZXR1cm4gZ2V0RE9NQ29uc3RydWN0b3I8SlNy
ZWFkb25seUNvbnN0cnVjdG9yPih2bSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCkpOwogfQogCiBib29sIEpTcmVhZG9ubHlPd25lcjo6aXNSZWFjaGFibGVGcm9tT3Bh
cXVlUm9vdHMoSlNDOjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90Vmlz
aXRvciYgdmlzaXRvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU3JlYWRvbmx5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNyZWFkb25seS5oCmluZGV4IGZjNDhhZjhiM2FjZWUxNTg2MDBlNDE5MmI4Y2Jk
ZWEzN2NkMmVjMTEuLmUyOWE3MTZjYzY3YTUyMGE2ZDFlOWYwMTQ1NTQ4NzMwYjNkNjQ0NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU3JlYWRv
bmx5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTcmVh
ZG9ubHkuaApAQCAtMzIsNyArMzIsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBKU0RPTVdyYXBw
ZXJXaXRoSW1wbGVtZW50YXRpb248cmVhZG9ubHk+IEJhc2U7CiAgICAgc3RhdGljIEpTcmVhZG9u
bHkqIGNyZWF0ZShKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBSZWY8cmVhZG9ubHk+JiYgaW1wbCkKICAgICB7Ci0gICAgICAgIEpTcmVh
ZG9ubHkqIHB0ciA9IG5ldyAoTm90TnVsbCwgSlNDOjphbGxvY2F0ZUNlbGw8SlNyZWFkb25seT4o
Z2xvYmFsT2JqZWN0LT52bSgpLmhlYXApKSBKU3JlYWRvbmx5KHN0cnVjdHVyZSwgZ2xvYmFsT2Jq
ZWN0LCBXVEY6Om1vdmUoaW1wbCkpOworICAgICAgICBKU3JlYWRvbmx5KiBwdHIgPSBuZXcgKE5v
dE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpTcmVhZG9ubHk+KGdsb2JhbE9iamVjdC0+dm0oKS5o
ZWFwKSkgSlNyZWFkb25seShzdHJ1Y3R1cmUsICpnbG9iYWxPYmplY3QsIFdURjo6bW92ZShpbXBs
KSk7CiAgICAgICAgIHB0ci0+ZmluaXNoQ3JlYXRpb24oZ2xvYmFsT2JqZWN0LT52bSgpKTsKICAg
ICAgICAgcmV0dXJuIHB0cjsKICAgICB9CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKIAogICAg
IHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIEpTQzo6SlNHbG9i
YWxPYmplY3QqKTsKIHByb3RlY3RlZDoKLSAgICBKU3JlYWRvbmx5KEpTQzo6U3RydWN0dXJlKiwg
SlNET01HbG9iYWxPYmplY3QqLCBSZWY8cmVhZG9ubHk+JiYpOworICAgIEpTcmVhZG9ubHkoSlND
OjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCYsIFJlZjxyZWFkb25seT4mJik7CiAKICAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKEpTQzo6Vk0mIHZtKQogICAgIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>