<?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>118427</bug_id>
          
          <creation_ts>2013-07-05 10:38:33 -0700</creation_ts>
          <short_desc>[GTK] Add support for running unit tests in the web process</short_desc>
          <delta_ts>2013-07-25 09:12:26 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>118426</blocked>
    
    <blocked>118430</blocked>
    
    <blocked>118431</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>philn</cc>
    
    <cc>sam</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>906449</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-07-05 10:38:33 -0700</bug_when>
    <thetext>Some tests, like GObject DOM bindings API tests run entirely in the WebProcess, we could mke it easy to create these kind of tests. It could also be used to ATK tests.The idea is that the UI process test is just a proxy to run the tests in the web process using a web process extension.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906456</commentid>
    <comment_count>1</comment_count>
      <attachid>206163</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-07-05 11:00:25 -0700</bug_when>
    <thetext>Created attachment 206163
Patch

It also includes the migration of the WebKitDOMNode test as a first example. We can migrate all others in follow up patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906458</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-05 11:03:18 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906467</commentid>
    <comment_count>3</comment_count>
      <attachid>206166</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-07-05 12:31:48 -0700</bug_when>
    <thetext>Created attachment 206166
Updated patch

I forgot to git add a file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906543</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-07-05 21:27:31 -0700</bug_when>
    <thetext>Can this go into Tools/?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>906674</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-07-07 23:33:23 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Can this go into Tools/?

We have our WebKit2 GTK+ API unit tests in UIProcess/API/gtk/tests it can perfectly be moved to Tools, but not this patch independently, we would need to move the tests directory. Qt and EFL both also have their tests in UIProcess/API/port/tests, though. Maybe we could reorganize the tests moving everything into Tools/TestWebKitAPI having subdirs for every API: C, efl, qt, gtk, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911589</commentid>
    <comment_count>6</comment_count>
      <attachid>206166</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-07-25 06:04:19 -0700</bug_when>
    <thetext>Comment on attachment 206166
Updated patch

OK, I&apos;m fine with moving the tests under Tools, fwiw, we can do that in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911633</commentid>
    <comment_count>7</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-07-25 09:12:26 -0700</bug_when>
    <thetext>Committed r153327: &lt;http://trac.webkit.org/changeset/153327&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206163</attachid>
            <date>2013-07-05 11:00:25 -0700</date>
            <delta_ts>2013-07-05 12:31:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-web-process-tests.diff</filename>
            <type>text/plain</type>
            <size>29137</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxZjUxOWFmLi5hNGJkYWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzMg
QEAKKzIwMTMtMDctMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBydW5uaW5nIHdlYiBwcm9jZXNzIHRl
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg0
MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21l
IHRlc3RzLCBsaWtlIEdPYmplY3QgRE9NIGJpbmRpbmdzIEFQSSB0ZXN0cywgcnVuIGVudGlyZWx5
IGluCisgICAgICAgIHRoZSBXZWJQcm9jZXNzLCBzbyB3ZSBqdXN0IG5lZWQgdG8gc3RhcnQgdGhl
IHRlc3QgZnJvbSB0aGUgVUkKKyAgICAgICAgcHJvY2VzcyBhbmQgd2FpdCB1bnRpbCB0aGUgdGVz
dCBmaW5pc2hlcyBydW5uaW5nIGluIHRoZQorICAgICAgICBXZWJQcm9jZXNzLiBUZXN0cyBhcmUg
c3BsaXQgaW4gdHdvIGZpbGVzLCBvbmUgY29udGFpbmluZyB0aGUKKyAgICAgICAgYWN0dWFsIHRl
c3QgdGhhdCBydW5zIGluIHRoZSBXZWJQcm9jZXNzIGFuZCBhbm90aGVyIG9uZSB0byBhZGQgdGhl
CisgICAgICAgIHRlc3RzIHRvIHRoZSBnbGliIHRlc3Qgc3lzdGVtIHRoYXQgd29ya3MgYXMgYQor
ICAgICAgICBwcm94eS4gV2ViUHJvY2Vzc1Rlc3RSdW5uZXIgY2xhc3Mgc3RhcnRzIGEgcHJpdmF0
ZSBEQnVzIHNlc3Npb24KKyAgICAgICAgYnVzIGFuZCBzdGFydHMgdGhlIHRlc3RzIHNlbmRpbmcg
YSBtZXNzYWdlIHRvIHRoZSBXZWJFeHRlbnNpb24KKyAgICAgICAgd2FpdGluZyB1bnRpbCBpdCBm
aW5pc2hlcyBvciBmYWlscy4gV2ViUHJvY2VzcyB0ZXN0cyBhcmUgY3JlYXRlZAorICAgICAgICBi
eSBkZWZpbmluZyBhIGNsYXNzIGRlcml2ZWQgZnJvbSBXZWJQcm9jZXNzVGVzdCBjbGFzcyBhbmQK
KyAgICAgICAgaW1wbGVtZW50aW5nIHRoZSBzdGF0aWMgY3JlYXRlIG1ldGhvZCBhbmQgdGhlIHZp
cnR1YWwgcnVuVGVzdAorICAgICAgICBtZXRob2QuIFRoZSBtYWNybyBSRUdJU1RFUl9URVNUIGlz
IHVzZWQgYnkgdGhlIHdlYiBwcm9jZXNzIHRlc3RzCisgICAgICAgIHRvIHJlZ2lzdGVyIHRoZWly
IHRlc3QgY2FzZXMuIFRoaXMgcGF0Y2ggaW5jbHVkZXMgdGhlIG1pZ3JhdGlvbgorICAgICAgICBv
ZiB0aGUgV2ViS2l0RE9NTm9kZSB0ZXN0LCBhbGwgb3RoZXIgR09iamVjdCBET00gYmluZGluZ3Mg
dGVzdHMKKyAgICAgICAgd2lsbCBiZSBtaWdyYXRlZCBpbiB0aGUgc2FtZSB3YXkgaW4gZm9sbG93
IHVwIHBhdGNoZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9ET01Ob2Rl
VGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0RE9NTm9kZVRlc3Q6OmNyZWF0ZSk6IENy
ZWF0ZSBhIG5ldyBXZWJLaXRET01Ob2RlVGVzdC4KKyAgICAgICAgKFdlYktpdERPTU5vZGVUZXN0
Ojp3ZWJQYWdlRnJvbUFyZ3MpOiBHZXQgdGhlIHBhZ2VJRCBwYXJhbWV0ZXIKKyAgICAgICAgZnJv
bSB0aGUgYXJndW1lbnRzIGRpY3Rpb25hcnkuCisgICAgICAgIChXZWJLaXRET01Ob2RlVGVzdDo6
dGVzdEhpZXJhcmNoeU5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0RE9NTm9kZVRlc3Q6OnRl
c3RJbnNlcnRpb24pOgorICAgICAgICAoV2ViS2l0RE9NTm9kZVRlc3Q6OnJ1blRlc3QpOiBSdW4g
dGhlIGdpdmVuIHRlc3QuCisgICAgICAgIChyZWdpc3RlclRlc3RzKTogUmVnaXN0ZXIgdGVzdCBj
YXNlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbTog
QWRkIG5ldyBmaWxlcyB0bworICAgICAgICBjb21waWxhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9UZXN0TWFpbi5jcHA6CisgICAgICAgIChtYWluKTogVW5zZXQgREJV
U19TRVNTSU9OX0JVU19BRERSRVNTIGVudmlyb25tZW50IHZhcmlhYmxlIHRvCisgICAgICAgIG1h
a2Ugc3VyZSB0aGF0IHRoZSBHTGliIGJ1cyBzaW5nbGV0b24gaXMgaW5pdGlhbGl6ZWQgYnkgdGhl
CisgICAgICAgIHByaXZhdGUgREJ1cyBzZXNzaW9uIGJ1cyBjcmVhdGVkIGJ5IHRoZSB0ZXN0cy4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJQcm9jZXNzVGVzdC5jcHA6IEFk
ZGVkLgorICAgICAgICAodGVzdHNNYXApOiBJbml0aWFsaXplIGFuZCBnZXQgdGhlIGdsb2JhbCBt
YXAgb2YgdGVzdHMuCisgICAgICAgIChXZWJQcm9jZXNzVGVzdDo6YWRkKTogQWRkIGEgbmV3IHRl
c3QgdG8gdGhlIG1hcCwga2VlcGluZyBhCisgICAgICAgIGZ1bmN0aW9uIHRvIGNyZWF0ZSB0aGUg
dGVzdC4KKyAgICAgICAgKFdlYlByb2Nlc3NUZXN0OjpjcmVhdGUpOiBDcmVhdGUgYSB0ZXN0IGZv
ciB0aGUgZ2l2ZW4gbmFtZS4KKyAgICAgICAgKG1ldGhvZENhbGxDYWxsYmFjayk6IEhhbmRsZSBS
dW5UZXN0IERCdXMgbWV0aG9kLiBJdCBjcmVhdGVzIGFuZAorICAgICAgICBydW5zIHRoZSBnaXZl
biB0ZXN0LgorICAgICAgICAod2Via2l0X3dlYl9leHRlbnNpb25faW5pdGlhbGl6ZSk6UmVnaXN0
ZXIgdGhlIERCdXMgc2VydmljZSBmb3IKKyAgICAgICAgdGhpcyBXZWJFeHRlbnNpb24uCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViUHJvY2Vzc1Rlc3QuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViUHJvY2Vzc1Rlc3RSdW5uZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYlByb2Nlc3NUZXN0UnVubmVyOjpXZWJQcm9jZXNzVGVzdFJ1
bm5lcik6IFN0YXJ0IGEgcHJpdmF0ZSBEQnVzCisgICAgICAgIHNlc3Npb24gYnVzIGFuZCBnZXQg
YSBjb25uZWN0aW9uIHRvIGl0LgorICAgICAgICAoV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6On5XZWJQ
cm9jZXNzVGVzdFJ1bm5lcik6IFN0b3AgdGhlIHByaXZhdGUKKyAgICAgICAgREJ1cyBzZXNzaW9u
IGJ1cy4KKyAgICAgICAgKFdlYlByb2Nlc3NUZXN0UnVubmVyOjpwcm94eUNyZWF0ZWRDYWxsYmFj
ayk6CisgICAgICAgIChXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6cHJveHkpOiBDcmVhdGUgYSBuZXcg
cHJveHkgdG8gc2VuZCBtZXNzYWdlcworICAgICAgICB0byB0aGUgV2ViRXh0ZW5zaW9uIGlmIGl0
IGRvZXNuJ3QgZXhpc3RzLgorICAgICAgICAoV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6Om9uTmFtZUFw
cGVhcmVkKTogQ2FsbGVkIHdoZW4gdGhlIERCdXMKKyAgICAgICAgc2VydmljZSBoYXMgYmVlbiBy
ZWdpc3RlcmVkIGluIHRoZSBXZWJFeHRlbnNpb24gYW5kIGl0J3Mgc2FmZSB0bworICAgICAgICBj
cmVhdGUgYSBwcm94eS4KKyAgICAgICAgKFdlYlByb2Nlc3NUZXN0UnVubmVyOjpvbk5hbWVWYW5p
c2hlZCk6IENhbGxlZCB3aGVuIHRoZSBEQnVzCisgICAgICAgIHNlcnZpY2UgaXMgdW5yZWdpc3Rl
cmVkLiBUaGlzIGhhcHBlbnMgd2hlbiB0aGUgd2ViIHByb2Nlc3MgY3Jhc2gsCisgICAgICAgIHNv
IHdlIGp1c3QgZXhpdCBoZXJlLCBiZWNhdXNlIHRoZSBnX2Fzc2VydHMgaW4gdGhlIHdlYiBwcm9j
ZXNzCisgICAgICAgIGhhdmUgYWxyZWFkeSByZWdpc3RlcmVkIHRoZSBlcnJvciBtZXNzYWdlLgor
ICAgICAgICAoV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6OnRlc3RGaW5pc2hlZENhbGxiYWNrKTogQ2Fs
bGVkIHdoZW4gdGhlCisgICAgICAgIFdlYlByb2Nlc3MgdGVzdHMgaGFzIGZpbmlzaGVkLgorICAg
ICAgICAoV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6OnJ1blRlc3QpOiBTZW5kIGEgbWVzc2FnZSB0byB0
aGUKKyAgICAgICAgV2ViRXh0ZW5zaW9uIHRvIHN0YXJ0IHRoZSBnaXZlbiB0ZXN0IGFuZCBtb25p
dG9yIHRoZSBzZXJ2aWNlLgorICAgICAgICAoV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6OmZpbmlzaFRl
c3QpOiBTYXZlIHRoZSB0ZXN0IHJlc3VsdCBhbmQKKyAgICAgICAgZmluaXNoIHRoZSBtYWluIGxv
b3AuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViUHJvY2Vzc1Rlc3RSdW5u
ZXIuaDogQWRkZWQuCisKIDIwMTMtMDctMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIE1pZ3JhdGUgV2ViS2l0V2ViQ29udGV4dCB0
byBHVGFzawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvRE9NTm9kZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvRE9NTm9kZVRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJm
Nzg0NTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9ET01Ob2RlVGVzdC5jcHAKQEAgLTAsMCArMSwxOTAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlO
Ry5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAw
MjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
V2ViUHJvY2Vzc1Rlc3QuaCIKKyNpbmNsdWRlIDxnaW8vZ2lvLmg+CisjaW5jbHVkZSA8d2Via2l0
Mi93ZWJraXQtd2ViLWV4dGVuc2lvbi5oPgorCitjbGFzcyBXZWJLaXRET01Ob2RlVGVzdCA6IHB1
YmxpYyBXZWJQcm9jZXNzVGVzdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2Vi
UHJvY2Vzc1Rlc3Q+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBXZWJLaXRET01Ob2Rl
VGVzdCgpKTsgfQorCitwcml2YXRlOgorICAgIGd1aW50NjQgd2ViUGFnZUZyb21BcmdzKEdWYXJp
YW50KiBhcmdzKQorICAgIHsKKyAgICAgICAgR1ZhcmlhbnRJdGVyIGl0ZXI7CisgICAgICAgIGdf
dmFyaWFudF9pdGVyX2luaXQoJml0ZXIsIGFyZ3MpOworCisgICAgICAgIGNvbnN0IGNoYXIqIGtl
eTsKKyAgICAgICAgR1ZhcmlhbnQqIHZhbHVlOworICAgICAgICB3aGlsZSAoZ192YXJpYW50X2l0
ZXJfbG9vcCgmaXRlciwgInsmc3Z9IiwgJmtleSwgJnZhbHVlKSkgeworICAgICAgICAgICAgaWYg
KCFzdHJjbXAoa2V5LCAicGFnZUlEIikgJiYgZ192YXJpYW50X2NsYXNzaWZ5KHZhbHVlKSA9PSBH
X1ZBUklBTlRfQ0xBU1NfVUlOVDY0KQorICAgICAgICAgICAgICAgIHJldHVybiBnX3ZhcmlhbnRf
Z2V0X3VpbnQ2NCh2YWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICBnX2Fzc2VydF9ub3RfcmVh
Y2hlZCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBib29sIHRlc3RIaWVyYXJj
aHlOYXZpZ2F0aW9uKFdlYktpdFdlYkV4dGVuc2lvbiogZXh0ZW5zaW9uLCBHVmFyaWFudCogYXJn
cykKKyAgICB7CisgICAgICAgIFdlYktpdFdlYlBhZ2UqIHBhZ2UgPSB3ZWJraXRfd2ViX2V4dGVu
c2lvbl9nZXRfcGFnZShleHRlbnNpb24sIHdlYlBhZ2VGcm9tQXJncyhhcmdzKSk7CisgICAgICAg
IGdfYXNzZXJ0KFdFQktJVF9JU19XRUJfUEFHRShwYWdlKSk7CisgICAgICAgIFdlYktpdERPTURv
Y3VtZW50KiBkb2N1bWVudCA9IHdlYmtpdF93ZWJfcGFnZV9nZXRfZG9tX2RvY3VtZW50KHBhZ2Up
OworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0RPQ1VNRU5UKGRvY3VtZW50KSk7CisK
KyAgICAgICAgV2ViS2l0RE9NSFRNTEhlYWRFbGVtZW50KiBoZWFkID0gd2Via2l0X2RvbV9kb2N1
bWVudF9nZXRfaGVhZChkb2N1bWVudCk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNf
SFRNTF9IRUFEX0VMRU1FTlQoaGVhZCkpOworCisgICAgICAgIC8vIFRpdGxlLCBoZWFkJ3MgY2hp
bGQuCisgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb21fbm9kZV9oYXNfY2hpbGRfbm9kZXMoV0VC
S0lUX0RPTV9OT0RFKGhlYWQpKSk7CisgICAgICAgIEdSZWZQdHI8V2ViS2l0RE9NTm9kZUxpc3Q+
IGxpc3QgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9ub2RlX2dldF9jaGlsZF9ub2RlcyhXRUJLSVRf
RE9NX05PREUoaGVhZCkpKTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19OT0RFX0xJ
U1QobGlzdC5nZXQoKSkpOworICAgICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2RvbV9ub2Rl
X2xpc3RfZ2V0X2xlbmd0aChsaXN0LmdldCgpKSwgPT0sIDEpOworICAgICAgICBXZWJLaXRET01O
b2RlKiBub2RlID0gd2Via2l0X2RvbV9ub2RlX2xpc3RfaXRlbShsaXN0LmdldCgpLCAwKTsKKyAg
ICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1MX1RJVExFX0VMRU1FTlQobm9kZSkpOwor
CisgICAgICAgIC8vIEJvZHksIEhlYWQgc2libGluZy4KKyAgICAgICAgbm9kZSA9IHdlYmtpdF9k
b21fbm9kZV9nZXRfbmV4dF9zaWJsaW5nKFdFQktJVF9ET01fTk9ERShoZWFkKSk7CisgICAgICAg
IGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9CT0RZX0VMRU1FTlQobm9kZSkpOworICAgICAg
ICBXZWJLaXRET01IVE1MQm9keUVsZW1lbnQqIGJvZHkgPSBXRUJLSVRfRE9NX0hUTUxfQk9EWV9F
TEVNRU5UKG5vZGUpOworCisgICAgICAgIC8vIFRoZXJlIGlzIG5vIHRoaXJkIHNpYmxpbmcKKyAg
ICAgICAgZ19hc3NlcnQoIXdlYmtpdF9kb21fbm9kZV9nZXRfbmV4dF9zaWJsaW5nKG5vZGUpKTsK
KworICAgICAgICAvLyBCb2R5J3MgcHJldmlvdXMgc2libGluZyBpcyBIZWFkLgorICAgICAgICBu
b2RlID0gd2Via2l0X2RvbV9ub2RlX2dldF9wcmV2aW91c19zaWJsaW5nKFdFQktJVF9ET01fTk9E
RShib2R5KSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9IRUFEX0VMRU1F
TlQobm9kZSkpOworCisgICAgICAgIC8vIEJvZHkgaGFzIDMgY2hpbGRyZW4uCisgICAgICAgIGdf
YXNzZXJ0KHdlYmtpdF9kb21fbm9kZV9oYXNfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJv
ZHkpKSk7CisgICAgICAgIGxpc3QgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9ub2RlX2dldF9jaGls
ZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBs
ZW5ndGggPSB3ZWJraXRfZG9tX25vZGVfbGlzdF9nZXRfbGVuZ3RoKGxpc3QuZ2V0KCkpOworICAg
ICAgICBnX2Fzc2VydF9jbXBpbnQobGVuZ3RoLCA9PSwgMyk7CisKKyAgICAgICAgLy8gVGhlIHRo
cmVlIG9mIHRoZW0gYXJlIFAgdGFncy4KKyAgICAgICAgZm9yICh1bnNpZ25lZCBsb25nIGkgPSAw
OyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIG5vZGUgPSB3ZWJraXRfZG9tX25vZGVf
bGlzdF9pdGVtKGxpc3QuZ2V0KCksIGkpOworICAgICAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RP
TV9JU19IVE1MX1BBUkFHUkFQSF9FTEVNRU5UKG5vZGUpKTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIEdvIGJhY2t3YXJkcworICAgICAgICB1bnNpZ25lZCBpOworICAgICAgICBmb3IgKGkgPSAw
OyBub2RlOyBub2RlID0gd2Via2l0X2RvbV9ub2RlX2dldF9wcmV2aW91c19zaWJsaW5nKG5vZGUp
LCBpKyspIHsgfQorICAgICAgICBnX2Fzc2VydF9jbXBpbnQoaSwgPT0sIDMpOworCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIGJvb2wgdGVzdEluc2VydGlvbihXZWJLaXRXZWJF
eHRlbnNpb24qIGV4dGVuc2lvbiwgR1ZhcmlhbnQqIGFyZ3MpCisgICAgeworICAgICAgICBXZWJL
aXRXZWJQYWdlKiBwYWdlID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2UoZXh0ZW5zaW9u
LCB3ZWJQYWdlRnJvbUFyZ3MoYXJncykpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VC
X1BBR0UocGFnZSkpOworICAgICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJr
aXRfd2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsKKyAgICAgICAgZ19hc3NlcnQoV0VC
S0lUX0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOworCisgICAgICAgIFdlYktpdERPTUhUTUxF
bGVtZW50KiBib2R5ID0gd2Via2l0X2RvbV9kb2N1bWVudF9nZXRfYm9keShkb2N1bWVudCk7Cisg
ICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKGJvZHkpKTsKKworICAg
ICAgICAvLyBCb2R5IHNob3VsZG4ndCBoYXZlIGFueSBjaGlsZHJlbiBhdCB0aGlzIHBvaW50Lgor
ICAgICAgICBnX2Fzc2VydCghd2Via2l0X2RvbV9ub2RlX2hhc19jaGlsZF9ub2RlcyhXRUJLSVRf
RE9NX05PREUoYm9keSkpKTsKKworICAgICAgICAvLyBJbnNlcnQgb25lIFAgZWxlbWVudC4KKyAg
ICAgICAgV2ViS2l0RE9NRWxlbWVudCogcCA9IHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX2Vs
ZW1lbnQoZG9jdW1lbnQsICJQIiwgMCk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNf
SFRNTF9FTEVNRU5UKHApKTsKKyAgICAgICAgd2Via2l0X2RvbV9ub2RlX2FwcGVuZF9jaGlsZChX
RUJLSVRfRE9NX05PREUoYm9keSksIFdFQktJVF9ET01fTk9ERShwKSwgMCk7CisKKyAgICAgICAg
Ly8gTm93IGl0IHNob3VsZCBoYXZlIG9uZSwgdGhlIHNhbWUgdGhhdCB3ZSBpbnNlcnRlZC4KKyAg
ICAgICAgZ19hc3NlcnQod2Via2l0X2RvbV9ub2RlX2hhc19jaGlsZF9ub2RlcyhXRUJLSVRfRE9N
X05PREUoYm9keSkpKTsKKyAgICAgICAgR1JlZlB0cjxXZWJLaXRET01Ob2RlTGlzdD4gbGlzdCA9
IGFkb3B0R1JlZih3ZWJraXRfZG9tX25vZGVfZ2V0X2NoaWxkX25vZGVzKFdFQktJVF9ET01fTk9E
RShib2R5KSkpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX05PREVfTElTVChsaXN0
LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfZG9tX25vZGVfbGlzdF9n
ZXRfbGVuZ3RoKGxpc3QuZ2V0KCkpLCA9PSwgMSk7CisgICAgICAgIFdlYktpdERPTU5vZGUqIG5v
ZGUgPSB3ZWJraXRfZG9tX25vZGVfbGlzdF9pdGVtKGxpc3QuZ2V0KCksIDApOworICAgICAgICBn
X2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChub2RlKSk7CisgICAgICAgIGdfYXNz
ZXJ0KHdlYmtpdF9kb21fbm9kZV9pc19zYW1lX25vZGUoV0VCS0lUX0RPTV9OT0RFKHApLCBub2Rl
KSk7CisKKyAgICAgICAgLy8gUmVwbGFjZSB0aGUgUCB0YWcgd2l0aCBhIERJViB0YWcuCisgICAg
ICAgIFdlYktpdERPTUVsZW1lbnQqIGRpdiA9IHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX2Vs
ZW1lbnQoZG9jdW1lbnQsICJESVYiLCAwKTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9J
U19IVE1MX0VMRU1FTlQoZGl2KSk7CisgICAgICAgIHdlYmtpdF9kb21fbm9kZV9yZXBsYWNlX2No
aWxkKFdFQktJVF9ET01fTk9ERShib2R5KSwgV0VCS0lUX0RPTV9OT0RFKGRpdiksIFdFQktJVF9E
T01fTk9ERShwKSwgMCk7CisgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb21fbm9kZV9oYXNfY2hp
bGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7CisgICAgICAgIGxpc3QgPSBhZG9wdEdS
ZWYod2Via2l0X2RvbV9ub2RlX2dldF9jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkp
KTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkp
OworICAgICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2RvbV9ub2RlX2xpc3RfZ2V0X2xlbmd0
aChsaXN0LmdldCgpKSwgPT0sIDEpOworICAgICAgICBub2RlID0gd2Via2l0X2RvbV9ub2RlX2xp
c3RfaXRlbShsaXN0LmdldCgpLCAwKTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19I
VE1MX0VMRU1FTlQobm9kZSkpOworICAgICAgICBnX2Fzc2VydCh3ZWJraXRfZG9tX25vZGVfaXNf
c2FtZV9ub2RlKFdFQktJVF9ET01fTk9ERShkaXYpLCBub2RlKSk7CisKKyAgICAgICAgLy8gTm93
IHJlbW92ZSB0aGUgdGFnLgorICAgICAgICB3ZWJraXRfZG9tX25vZGVfcmVtb3ZlX2NoaWxkKFdF
QktJVF9ET01fTk9ERShib2R5KSwgbm9kZSwgMCk7CisgICAgICAgIGxpc3QgPSBhZG9wdEdSZWYo
d2Via2l0X2RvbV9ub2RlX2dldF9jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsK
KyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkpOwor
ICAgICAgICBnX2Fzc2VydF9jbXBpbnQod2Via2l0X2RvbV9ub2RlX2xpc3RfZ2V0X2xlbmd0aChs
aXN0LmdldCgpKSwgPT0sIDApOworCisgICAgICAgIC8vIFRlc3QgaW5zZXJ0IGJlZm9yZS4gSWYg
cmVmQ2hpbGQgaXMgbnVsbCwgaW5zZXJ0IG5ld0NoaWxkIGFzIGxhc3QgZWxlbWVudCBvZiBwYXJl
bnQuCisgICAgICAgIGRpdiA9IHdlYmtpdF9kb21fZG9jdW1lbnRfY3JlYXRlX2VsZW1lbnQoZG9j
dW1lbnQsICJESVYiLCAwKTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1MX0VM
RU1FTlQoZGl2KSk7CisgICAgICAgIHdlYmtpdF9kb21fbm9kZV9pbnNlcnRfYmVmb3JlKFdFQktJ
VF9ET01fTk9ERShib2R5KSwgV0VCS0lUX0RPTV9OT0RFKGRpdiksIDAsIDApOworICAgICAgICBn
X2Fzc2VydCh3ZWJraXRfZG9tX25vZGVfaGFzX2NoaWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShi
b2R5KSkpOworICAgICAgICBsaXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fbm9kZV9nZXRfY2hp
bGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJ
VF9ET01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50
KHdlYmtpdF9kb21fbm9kZV9saXN0X2dldF9sZW5ndGgobGlzdC5nZXQoKSksID09LCAxKTsKKyAg
ICAgICAgbm9kZSA9IHdlYmtpdF9kb21fbm9kZV9saXN0X2l0ZW0obGlzdC5nZXQoKSwgMCk7Cisg
ICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKG5vZGUpKTsKKyAgICAg
ICAgZ19hc3NlcnQod2Via2l0X2RvbV9ub2RlX2lzX3NhbWVfbm9kZShXRUJLSVRfRE9NX05PREUo
ZGl2KSwgbm9kZSkpOworCisgICAgICAgIC8vIE5vdyBpbnNlcnQgYSAncCcgYmVmb3JlICdkaXYn
LgorICAgICAgICBwID0gd2Via2l0X2RvbV9kb2N1bWVudF9jcmVhdGVfZWxlbWVudChkb2N1bWVu
dCwgIlAiLCAwKTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1MX0VMRU1FTlQo
cCkpOworICAgICAgICB3ZWJraXRfZG9tX25vZGVfaW5zZXJ0X2JlZm9yZShXRUJLSVRfRE9NX05P
REUoYm9keSksIFdFQktJVF9ET01fTk9ERShwKSwgV0VCS0lUX0RPTV9OT0RFKGRpdiksIDApOwor
ICAgICAgICBnX2Fzc2VydCh3ZWJraXRfZG9tX25vZGVfaGFzX2NoaWxkX25vZGVzKFdFQktJVF9E
T01fTk9ERShib2R5KSkpOworICAgICAgICBsaXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fbm9k
ZV9nZXRfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7CisgICAgICAgIGdfYXNz
ZXJ0KFdFQktJVF9ET01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3Nl
cnRfY21waW50KHdlYmtpdF9kb21fbm9kZV9saXN0X2dldF9sZW5ndGgobGlzdC5nZXQoKSksID09
LCAyKTsKKyAgICAgICAgbm9kZSA9IHdlYmtpdF9kb21fbm9kZV9saXN0X2l0ZW0obGlzdC5nZXQo
KSwgMCk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKG5vZGUp
KTsKKyAgICAgICAgZ19hc3NlcnQod2Via2l0X2RvbV9ub2RlX2lzX3NhbWVfbm9kZShXRUJLSVRf
RE9NX05PREUocCksIG5vZGUpKTsKKyAgICAgICAgbm9kZSA9IHdlYmtpdF9kb21fbm9kZV9saXN0
X2l0ZW0obGlzdC5nZXQoKSwgMSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRN
TF9FTEVNRU5UKG5vZGUpKTsKKyAgICAgICAgZ19hc3NlcnQod2Via2l0X2RvbV9ub2RlX2lzX3Nh
bWVfbm9kZShXRUJLSVRfRE9NX05PREUoZGl2KSwgbm9kZSkpOworCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBydW5UZXN0KGNvbnN0IGNoYXIqIHRlc3RO
YW1lLCBXZWJLaXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbiwgR1ZhcmlhbnQqIGFyZ3MpCisgICAg
eworICAgICAgICBpZiAoIXN0cmNtcCh0ZXN0TmFtZSwgImhpZXJhcmNoeS1uYXZpZ2F0aW9uIikp
CisgICAgICAgICAgICByZXR1cm4gdGVzdEhpZXJhcmNoeU5hdmlnYXRpb24oZXh0ZW5zaW9uLCBh
cmdzKTsKKyAgICAgICAgaWYgKCFzdHJjbXAodGVzdE5hbWUsICJpbnNlcnRpb24iKSkKKyAgICAg
ICAgICAgIHJldHVybiB0ZXN0SW5zZXJ0aW9uKGV4dGVuc2lvbiwgYXJncyk7CisKKyAgICAgICAg
Z19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK307
CisKK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKGNvbnN0cnVjdG9yKSkgcmVnaXN0ZXJUZXN0
cygpCit7CisgICAgUkVHSVNURVJfVEVTVChXZWJLaXRET01Ob2RlVGVzdCwgIldlYktpdERPTU5v
ZGUvaGllcmFyY2h5LW5hdmlnYXRpb24iKTsKKyAgICBSRUdJU1RFUl9URVNUKFdlYktpdERPTU5v
ZGVUZXN0LCAiV2ViS2l0RE9NTm9kZS9pbnNlcnRpb24iKTsKK30KKworCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCmluZGV4
IDg0NmFiNDkuLjQzNDYxNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL0dOVW1ha2VmaWxlLmFtCkBAIC01LDYgKzUsNyBAQCBURVNUX1BST0dT
ICs9IFwKIAlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdEJhY2tGb3J3YXJkTGlzdCBcCiAJ
UHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rlc3RDb250ZXh0TWVudSBcCiAJUHJvZ3JhbXMvV2Vi
S2l0MkFQSVRlc3RzL1Rlc3RDb29raWVNYW5hZ2VyIFwKKwlQcm9ncmFtcy9XZWJLaXQyQVBJVGVz
dHMvVGVzdERPTU5vZGUgXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0RG93bmxvYWRz
IFwKIAlQcm9ncmFtcy9XZWJLaXQyQVBJVGVzdHMvVGVzdEluc3BlY3RvciBcCiAJUHJvZ3JhbXMv
V2ViS2l0MkFQSVRlc3RzL1Rlc3RJbnNwZWN0b3JTZXJ2ZXIgXApAQCAtODEsNiArODIsOCBAQCBM
aWJyYXJpZXNfbGliV2ViS2l0MkFQSVRlc3RDb3JlX2xhX1NPVVJDRVMgPSBcCiAJU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdEJ1cy5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJLaXRUZXN0U2VydmVyLmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViS2l0VGVzdFNlcnZlci5o
IFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJQcm9jZXNzVGVz
dFJ1bm5lci5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dl
YlByb2Nlc3NUZXN0UnVubmVyLmggXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1Rlc3RNYWluLmNwcCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvVGVzdE1haW4uaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvV2ViVmlld1Rlc3QuY3BwIFwKQEAgLTExMSw2ICsxMTQsMzIgQEAgTGlicmFyaWVzX1dlYkV4
dGVuc2lvbnNfbGliV2ViRXh0ZW5zaW9uVGVzdF9sYV9DRkxBR1MgPSBcCiAgICAgICAgICQoZ2xv
YmFsX2NmbGFncykKIAogCitub2luc3RfTFRMSUJSQVJJRVMgKz0gTGlicmFyaWVzL1dlYkV4dGVu
c2lvbnMvbGliV2ViUHJvY2Vzc1Rlc3QubGEKK0xpYnJhcmllc19XZWJFeHRlbnNpb25zX2xpYldl
YlByb2Nlc3NUZXN0X2xhX1NPVVJDRVMgPSBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvRE9NTm9kZVRlc3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9XZWJQcm9jZXNzVGVzdC5jcHAgXAorCVNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NUZXN0LmgKKworTGlicmFyaWVzX1dlYkV4dGVu
c2lvbnNfbGliV2ViUHJvY2Vzc1Rlc3RfbGFfTERGTEFHUyA9IFwKKwktcnBhdGggJHtzaGVsbCBw
d2R9LyQodG9wX2J1aWxkZGlyKS9MaWJyYXJpZXMvV2ViRXh0ZW5zaW9ucy8ubGlicyBcCisJJChu
b191bmRlZmluZWQpIFwKKwktYXZvaWQtdmVyc2lvbiBcCisJLW1vZHVsZQorCitMaWJyYXJpZXNf
V2ViRXh0ZW5zaW9uc19saWJXZWJQcm9jZXNzVGVzdF9sYV9DUFBGTEFHUyA9IFwKKwktSSQoc3Jj
ZGlyKS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsgXAor
CS1JJCh0b3BfYnVpbGRkaXIpL0Rlcml2ZWRTb3VyY2VzIFwKKwktSSQodG9wX2J1aWxkZGlyKS9E
ZXJpdmVkU291cmNlcy9XZWJLaXQyL3dlYmtpdDJleHRlbnNpb24vaW5jbHVkZSBcCisJLURXRUJL
SVQyX0NPTVBJTEFUSU9OIFwKKwkkKHdlYmtpdDJfdGVzdHNfY3BwZmxhZ3MpCisKK0xpYnJhcmll
c19XZWJFeHRlbnNpb25zX2xpYldlYlByb2Nlc3NUZXN0X2xhX0NYWEZMQUdTID0gXAorCSQoZ2xv
YmFsX2N4eGZsYWdzKQorCitMaWJyYXJpZXNfV2ViRXh0ZW5zaW9uc19saWJXZWJQcm9jZXNzVGVz
dF9sYV9DRkxBR1MgPSBcCisJJChnbG9iYWxfY2ZsYWdzKQorCisKIEVYVFJBX0RJU1QgKz0gXAog
CVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL3Jlc291cmNlcy90ZXN0LWNl
cnQucGVtIFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9yZXNvdXJj
ZXMvdGVzdC1rZXkucGVtIFwKQEAgLTI1OSw0ICsyODgsMTAgQEAgUHJvZ3JhbXNfV2ViS2l0MkFQ
SVRlc3RzX1Rlc3RXZWJLaXRXZWJWaWV3R3JvdXBfQ1BQRkxBR1MgPSAkKHdlYmtpdDJfdGVzdHNf
Y3BwZmwKIFByb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViS2l0V2ViVmlld0dyb3VwX0xE
QUREID0gJCh3ZWJraXQyX3Rlc3RzX2xkYWRkKQogUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rl
c3RXZWJLaXRXZWJWaWV3R3JvdXBfTERGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19sZGZsYWdzKQog
CitQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdERPTU5vZGVfU09VUkNFUyA9IFwKKyAgICAg
ICAgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdERPTU5vZGUuY3Bw
CitQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdERPTU5vZGVfQ1BQRkxBR1MgPSAkKHdlYmtp
dDJfdGVzdHNfY3BwZmxhZ3MpCitQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNfVGVzdERPTU5vZGVf
TERBREQgPSAkKHdlYmtpdDJfdGVzdHNfbGRhZGQpCitQcm9ncmFtc19XZWJLaXQyQVBJVGVzdHNf
VGVzdERPTU5vZGVfTERGTEFHUyA9ICQod2Via2l0Ml90ZXN0c19sZGZsYWdzKQorCiBlbmRpZiAj
IEVOQUJMRV9XRUJLSVQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9UZXN0TWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9UZXN0TWFpbi5jcHAKaW5kZXggNmFjMzVmOC4uMmZiMjYyOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdE1haW4uY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RNYWluLmNwcApAQCAt
NTMsNiArNTMsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVOb25FbXB0eURpcmVjdG9yeShjb25zdCBj
aGFyKiBkaXJlY3RvcnlQYXRoKQogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7
CisgICAgZ191bnNldGVudigiREJVU19TRVNTSU9OX0JVU19BRERSRVNTIik7CiAgICAgZ3RrX3Rl
c3RfaW5pdCgmYXJnYywgJmFyZ3YsIDApOwogICAgIGdfc2V0ZW52KCJXRUJLSVRfRVhFQ19QQVRI
IiwgV0VCS0lUX0VYRUNfUEFUSCwgRkFMU0UpOwogICAgIGdfc2V0ZW52KCJXRUJLSVRfSU5KRUNU
RURfQlVORExFX1BBVEgiLCBXRUJLSVRfSU5KRUNURURfQlVORExFX1BBVEgsIEZBTFNFKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlByb2Nl
c3NUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlBy
b2Nlc3NUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGU2M2Rj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVz
dHMvV2ViUHJvY2Vzc1Rlc3QuY3BwCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQ
cm9jZXNzVGVzdC5oIgorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dPd25QdHIuaD4KKwordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgRnVuY3Rpb248UGFzc093
blB0cjxXZWJQcm9jZXNzVGVzdD4oKT4+IFRlc3RzTWFwOworc3RhdGljIFRlc3RzTWFwJiB0ZXN0
c01hcCgpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChUZXN0c01hcCwgc190ZXN0c01hcCwg
KCkpOworICAgIHJldHVybiBzX3Rlc3RzTWFwOworfQorCit2b2lkIFdlYlByb2Nlc3NUZXN0Ojph
ZGQoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSwgRnVuY3Rpb248UGFzc093blB0cjxXZWJQcm9jZXNz
VGVzdD4oKT4gY2xvc3VyZSkKK3sKKyAgICB0ZXN0c01hcCgpLmFkZCh0ZXN0TmFtZSwgY2xvc3Vy
ZSk7Cit9CisKK1Bhc3NPd25QdHI8V2ViUHJvY2Vzc1Rlc3Q+IFdlYlByb2Nlc3NUZXN0OjpjcmVh
dGUoY29uc3QgU3RyaW5nJiB0ZXN0TmFtZSkKK3sKKyAgICBnX2Fzc2VydCh0ZXN0c01hcCgpLmNv
bnRhaW5zKHRlc3ROYW1lKSk7CisgICAgcmV0dXJuIHRlc3RzTWFwKCkuZ2V0KHRlc3ROYW1lKSgp
OworfQorCitzdGF0aWMgY29uc3QgY2hhciBpbnRyb3NwZWN0aW9uWE1MW10gPQorICAgICI8bm9k
ZT4iCisgICAgIiA8aW50ZXJmYWNlIG5hbWU9J29yZy53ZWJraXQuZ3RrLldlYlByb2Nlc3NUZXN0
Jz4iCisgICAgIiAgPG1ldGhvZCBuYW1lPSdSdW5UZXN0Jz4iCisgICAgIiAgIDxhcmcgdHlwZT0n
cycgbmFtZT0ncGF0aCcgZGlyZWN0aW9uPSdpbicvPiIKKyAgICAiICAgPGFyZyB0eXBlPSdhe3N2
fScgbmFtZT0nYXJncycgZGlyZWN0aW9uPSdpbicvPiIKKyAgICAiICAgPGFyZyB0eXBlPSdiJyBu
YW1lPSdyZXN1bHQnIGRpcmVjdGlvbj0nb3V0Jy8+IgorICAgICIgIDwvbWV0aG9kPiIKKyAgICAi
IDwvaW50ZXJmYWNlPiIKKyAgICAiPC9ub2RlPiI7CisKK3N0YXRpYyB2b2lkIG1ldGhvZENhbGxD
YWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIHNlbmRlciwg
Y29uc3QgY2hhciogb2JqZWN0UGF0aCwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3Qg
Y2hhciogbWV0aG9kTmFtZSwgR1ZhcmlhbnQqIHBhcmFtZXRlcnMsIEdEQnVzTWV0aG9kSW52b2Nh
dGlvbiogaW52b2NhdGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgaWYgKGdfc3RyY21w
MChpbnRlcmZhY2VOYW1lLCAib3JnLndlYmtpdC5ndGsuV2ViUHJvY2Vzc1Rlc3QiKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIlJ1blRlc3QiKSkg
eworICAgICAgICBjb25zdCBjaGFyKiB0ZXN0UGF0aDsKKyAgICAgICAgR1ZhcmlhbnQqIGFyZ3M7
CisgICAgICAgIGdfdmFyaWFudF9nZXQocGFyYW1ldGVycywgIigmc0Bhe3N2fSkiLCAmdGVzdFBh
dGgsICZhcmdzKTsKKyAgICAgICAgT3duUHRyPFdlYlByb2Nlc3NUZXN0PiB0ZXN0ID0gV2ViUHJv
Y2Vzc1Rlc3Q6OmNyZWF0ZShTdHJpbmc6OmZyb21VVEY4KHRlc3RQYXRoKSk7CisgICAgICAgIGJv
b2wgcmVzdWx0ID0gdGVzdC0+cnVuVGVzdChnX3N0cnJzdHIodGVzdFBhdGgsICIvIikgKyAxLCBX
RUJLSVRfV0VCX0VYVEVOU0lPTih1c2VyRGF0YSksIGFyZ3MpOworICAgICAgICBnX3ZhcmlhbnRf
dW5yZWYoYXJncyk7CisKKyAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92
YWx1ZShpbnZvY2F0aW9uLCBnX3ZhcmlhbnRfbmV3KCIoYikiLCByZXN1bHQpKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKK30KKworc3RhdGljIGNvbnN0IEdE
QnVzSW50ZXJmYWNlVlRhYmxlIGludGVyZmFjZVZpcnR1YWxUYWJsZSA9IHsKKyAgICBtZXRob2RD
YWxsQ2FsbGJhY2ssIDAsIDAsIHsgMCwgfQorfTsKKworc3RhdGljIHZvaWQgYnVzQWNxdWlyZWRD
YWxsYmFjayhHREJ1c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUsIGdw
b2ludGVyIHVzZXJEYXRhKQoreworICAgIHN0YXRpYyBHREJ1c05vZGVJbmZvICppbnRyb3NwZWN0
aW9uRGF0YSA9IDA7CisgICAgaWYgKCFpbnRyb3NwZWN0aW9uRGF0YSkKKyAgICAgICAgaW50cm9z
cGVjdGlvbkRhdGEgPSBnX2RidXNfbm9kZV9pbmZvX25ld19mb3JfeG1sKGludHJvc3BlY3Rpb25Y
TUwsIDApOworCisgICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIHVuc2lnbmVkIHJlZ2lz
dHJhdGlvbklEID0gZ19kYnVzX2Nvbm5lY3Rpb25fcmVnaXN0ZXJfb2JqZWN0KAorICAgICAgICBj
b25uZWN0aW9uLAorICAgICAgICAiL29yZy93ZWJraXQvZ3RrL1dlYlByb2Nlc3NUZXN0IiwKKyAg
ICAgICAgaW50cm9zcGVjdGlvbkRhdGEtPmludGVyZmFjZXNbMF0sCisgICAgICAgICZpbnRlcmZh
Y2VWaXJ0dWFsVGFibGUsCisgICAgICAgIGdfb2JqZWN0X3JlZih1c2VyRGF0YSksCisgICAgICAg
IHN0YXRpY19jYXN0PEdEZXN0cm95Tm90aWZ5PihnX29iamVjdF91bnJlZiksCisgICAgICAgICZl
cnJvci5vdXRQdHIoKSk7CisgICAgaWYgKCFyZWdpc3RyYXRpb25JRCkKKyAgICAgICAgZ193YXJu
aW5nKCJGYWlsZWQgdG8gcmVnaXN0ZXIgb2JqZWN0OiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2UpOwor
fQorCitleHRlcm4gIkMiIHZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25faW5pdGlhbGl6ZShXZWJL
aXRXZWJFeHRlbnNpb24qIGV4dGVuc2lvbikKK3sKKyAgICBnX2J1c19vd25fbmFtZSgKKyAgICAg
ICAgR19CVVNfVFlQRV9TRVNTSU9OLAorICAgICAgICAib3JnLndlYmtpdC5ndGsuV2ViUHJvY2Vz
c1Rlc3QiLAorICAgICAgICBHX0JVU19OQU1FX09XTkVSX0ZMQUdTX05PTkUsCisgICAgICAgIGJ1
c0FjcXVpcmVkQ2FsbGJhY2ssCisgICAgICAgIDAsIDAsCisgICAgICAgIGdfb2JqZWN0X3JlZihl
eHRlbnNpb24pLAorICAgICAgICBzdGF0aWNfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ19vYmplY3Rf
dW5yZWYpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1dlYlByb2Nlc3NUZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9XZWJQcm9jZXNzVGVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjEzMzMyN2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9XZWJQcm9jZXNzVGVzdC5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0LXdl
Yi1leHRlbnNpb24uaD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitjbGFzcyBXZWJQcm9jZXNzVGVzdCB7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+V2ViUHJvY2Vzc1Rlc3QoKSB7IH0KKyAgICB2aXJ0dWFsIGJv
b2wgcnVuVGVzdChjb25zdCBjaGFyKiB0ZXN0TmFtZSwgV2ViS2l0V2ViRXh0ZW5zaW9uKiwgR1Zh
cmlhbnQqIGFyZ3MpID0gMDsKKworICAgIHN0YXRpYyB2b2lkIGFkZChjb25zdCBTdHJpbmcmIHRl
c3ROYW1lLCBGdW5jdGlvbjxQYXNzT3duUHRyPFdlYlByb2Nlc3NUZXN0PigpPik7CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRlc3RO
YW1lKTsKK307CisKKyNkZWZpbmUgUkVHSVNURVJfVEVTVChDbGFzc05hbWUsIFRlc3ROYW1lKSBc
CisgICAgV2ViUHJvY2Vzc1Rlc3Q6OmFkZChTdHJpbmc6OmZyb21VVEY4KFRlc3ROYW1lKSwgV1RG
OjpiaW5kKCZDbGFzc05hbWU6OmNyZWF0ZSkpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NUZXN0UnVubmVyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NUZXN0UnVubmVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWY3NDA4Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViUHJvY2Vz
c1Rlc3RSdW5uZXIuY3BwCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEzIElnYWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNz
VGVzdFJ1bm5lci5oIgorCisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorCitXZWJQ
cm9jZXNzVGVzdFJ1bm5lcjo6V2ViUHJvY2Vzc1Rlc3RSdW5uZXIoKQorICAgIDogbV9tYWluTG9v
cChnX21haW5fbG9vcF9uZXcoMCwgVFJVRSkpCisgICAgLCBtX2J1cyhhZG9wdEdSZWYoZ190ZXN0
X2RidXNfbmV3KEdfVEVTVF9EQlVTX05PTkUpKSkKK3sKKyAgICBnX3Rlc3RfZGJ1c191cChtX2J1
cy5nZXQoKSk7CisgICAgbV9jb25uZWN0aW9uID0gYWRvcHRHUmVmKGdfYnVzX2dldF9zeW5jKEdf
QlVTX1RZUEVfU0VTU0lPTiwgMCwgMCkpOworfQorCitXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6fldl
YlByb2Nlc3NUZXN0UnVubmVyKCkKK3sKKyAgICBnX21haW5fbG9vcF91bnJlZihtX21haW5Mb29w
KTsKKworICAgIC8vIGdfdGVzdF9kYnVzX2Rvd24gd2FpdHMgdW50aWwgdGhlIGNvbm5lY3Rpb24g
aXMgZnJlZWQsIHNvIHJlbGVhc2Ugb3VyIHJlZnMgZXhwbGljaXRseSBiZWZvcmUgY2FsbGluZyBp
dC4KKyAgICBtX2Nvbm5lY3Rpb24gPSAwOworICAgIG1fcHJveHkgPSAwOworICAgIGdfdGVzdF9k
YnVzX2Rvd24obV9idXMuZ2V0KCkpOworfQorCit2b2lkIFdlYlByb2Nlc3NUZXN0UnVubmVyOjpw
cm94eUNyZWF0ZWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFdlYlBy
b2Nlc3NUZXN0UnVubmVyKiB0ZXN0UnVubmVyKQoreworICAgIHRlc3RSdW5uZXItPm1fcHJveHkg
PSBhZG9wdEdSZWYoZ19kYnVzX3Byb3h5X25ld19maW5pc2gocmVzdWx0LCAwKSk7CisgICAgZ19t
YWluX2xvb3BfcXVpdCh0ZXN0UnVubmVyLT5tX21haW5Mb29wKTsKK30KKworR0RCdXNQcm94eSog
V2ViUHJvY2Vzc1Rlc3RSdW5uZXI6OnByb3h5KCkKK3sKKyAgICBpZiAobV9wcm94eSkKKyAgICAg
ICAgcmV0dXJuIG1fcHJveHkuZ2V0KCk7CisKKyAgICBnX2RidXNfcHJveHlfbmV3KG1fY29ubmVj
dGlvbi5nZXQoKSwgR19EQlVTX1BST1hZX0ZMQUdTX0RPX05PVF9BVVRPX1NUQVJULCAwLAorICAg
ICAgICAib3JnLndlYmtpdC5ndGsuV2ViUHJvY2Vzc1Rlc3QiLCAiL29yZy93ZWJraXQvZ3RrL1dl
YlByb2Nlc3NUZXN0IiwgIm9yZy53ZWJraXQuZ3RrLldlYlByb2Nlc3NUZXN0IiwKKyAgICAgICAg
MCwgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihXZWJQcm9jZXNzVGVzdFJ1
bm5lcjo6cHJveHlDcmVhdGVkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX21haW5fbG9vcF9ydW4o
bV9tYWluTG9vcCk7CisgICAgZ19hc3NlcnQobV9wcm94eS5nZXQoKSk7CisKKyAgICByZXR1cm4g
bV9wcm94eS5nZXQoKTsKK30KKwordm9pZCBXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6b25OYW1lQXBw
ZWFyZWQoR0RCdXNDb25uZWN0aW9uKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBncG9pbnRl
ciB1c2VyRGF0YSkKK3sKKyAgICBXZWJQcm9jZXNzVGVzdFJ1bm5lciogdGVzdFJ1bm5lciA9IHN0
YXRpY19jYXN0PFdlYlByb2Nlc3NUZXN0UnVubmVyKj4odXNlckRhdGEpOworICAgIGdfbWFpbl9s
b29wX3F1aXQodGVzdFJ1bm5lci0+bV9tYWluTG9vcCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Rl
c3RSdW5uZXI6Om9uTmFtZVZhbmlzaGVkKEdEQnVzQ29ubmVjdGlvbiosIGNvbnN0IGNoYXIqIG5h
bWUsIGdwb2ludGVyIHVzZXJEYXRhKQoreworICAgIF9leGl0KDEpOworfQorCit2b2lkIFdlYlBy
b2Nlc3NUZXN0UnVubmVyOjp0ZXN0RmluaXNoZWRDYWxsYmFjayhHREJ1c1Byb3h5KiBwcm94eSwg
R0FzeW5jUmVzdWx0KiByZXN1bHQsIFdlYlByb2Nlc3NUZXN0UnVubmVyKiB0ZXN0UnVubmVyKQor
eworICAgIEdSZWZQdHI8R1ZhcmlhbnQ+IHJldHVyblZhbHVlID0gYWRvcHRHUmVmKGdfZGJ1c19w
cm94eV9jYWxsX2ZpbmlzaChwcm94eSwgcmVzdWx0LCAwKSk7CisgICAgZ19hc3NlcnQocmV0dXJu
VmFsdWUuZ2V0KCkpOworICAgIGdib29sZWFuIHRlc3RSZXN1bHQ7CisgICAgZ192YXJpYW50X2dl
dChyZXR1cm5WYWx1ZS5nZXQoKSwgIihiKSIsICZ0ZXN0UmVzdWx0KTsKKyAgICB0ZXN0UnVubmVy
LT5maW5pc2hUZXN0KHRlc3RSZXN1bHQpOworfQorCitib29sIFdlYlByb2Nlc3NUZXN0UnVubmVy
OjpydW5UZXN0KGNvbnN0IGNoYXIqIHN1aXRlTmFtZSwgY29uc3QgY2hhciogdGVzdE5hbWUsIEdW
YXJpYW50KiBhcmdzKQoreworICAgIGdfYXNzZXJ0KGdfdmFyaWFudF9pc19vZl90eXBlKGFyZ3Ms
IEdfVkFSSUFOVF9UWVBFX1ZBUkRJQ1QpKTsKKworICAgIHVuc2lnbmVkIHdhdGNoZXJJRCA9IGdf
YnVzX3dhdGNoX25hbWVfb25fY29ubmVjdGlvbihtX2Nvbm5lY3Rpb24uZ2V0KCksICJvcmcud2Vi
a2l0Lmd0ay5XZWJQcm9jZXNzVGVzdCIsIEdfQlVTX05BTUVfV0FUQ0hFUl9GTEFHU19OT05FLAor
ICAgICAgICBXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6b25OYW1lQXBwZWFyZWQsIFdlYlByb2Nlc3NU
ZXN0UnVubmVyOjpvbk5hbWVWYW5pc2hlZCwgdGhpcywgMCk7CisgICAgZ19tYWluX2xvb3BfcnVu
KG1fbWFpbkxvb3ApOworCisgICAgbV90ZXN0UmVzdWx0ID0gZmFsc2U7CisgICAgR093blB0cjxj
aGFyPiB0ZXN0UGF0aChnX3N0cmR1cF9wcmludGYoIiVzLyVzIiwgc3VpdGVOYW1lLCB0ZXN0TmFt
ZSkpOworICAgIGdfZGJ1c19wcm94eV9jYWxsKAorICAgICAgICBwcm94eSgpLAorICAgICAgICAi
UnVuVGVzdCIsCisgICAgICAgIGdfdmFyaWFudF9uZXcoIihzQGF7c3Z9KSIsIHRlc3RQYXRoLmdl
dCgpLCBhcmdzKSwKKyAgICAgICAgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwKKyAgICAgICAgLTEs
IDAsCisgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4oV2ViUHJv
Y2Vzc1Rlc3RSdW5uZXI6OnRlc3RGaW5pc2hlZENhbGxiYWNrKSwKKyAgICAgICAgdGhpcyk7Cisg
ICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3ApOworICAgIGdfYnVzX3Vud2F0Y2hfbmFtZSh3
YXRjaGVySUQpOworCisgICAgcmV0dXJuIG1fdGVzdFJlc3VsdDsKK30KKwordm9pZCBXZWJQcm9j
ZXNzVGVzdFJ1bm5lcjo6ZmluaXNoVGVzdChib29sIHJlc3VsdCkKK3sKKyAgICBtX3Rlc3RSZXN1
bHQgPSByZXN1bHQ7CisgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wKTsKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NU
ZXN0UnVubmVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJQ
cm9jZXNzVGVzdFJ1bm5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0
MGZhOTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay90ZXN0cy9XZWJQcm9jZXNzVGVzdFJ1bm5lci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJQcm9jZXNzVGVzdFJ1bm5l
cl9oCisjZGVmaW5lIFdlYlByb2Nlc3NUZXN0UnVubmVyX2gKKworI2luY2x1ZGUgPGdpby9naW8u
aD4KKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9H
UmVmUHRyLmg+CisKK2NsYXNzIFdlYlByb2Nlc3NUZXN0UnVubmVyIHsKK3B1YmxpYzoKKyAgICBX
ZWJQcm9jZXNzVGVzdFJ1bm5lcigpOworICAgIH5XZWJQcm9jZXNzVGVzdFJ1bm5lcigpOworCisg
ICAgYm9vbCBydW5UZXN0KGNvbnN0IGNoYXIqIHN1aXRlTmFtZSwgY29uc3QgY2hhciogdGVzdE5h
bWUsIEdWYXJpYW50KiBhcmdzKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCBwcm94eUNy
ZWF0ZWRDYWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiwgV2ViUHJvY2Vzc1Rlc3RSdW5u
ZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBvbk5hbWVBcHBlYXJlZChHREJ1c0Nvbm5lY3Rpb24qLCBj
b25zdCBjaGFyKiwgY29uc3QgY2hhciosIGdwb2ludGVyKTsKKyAgICBzdGF0aWMgdm9pZCBvbk5h
bWVWYW5pc2hlZChHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBjaGFyKiwgZ3BvaW50ZXIpOworICAg
IHN0YXRpYyB2b2lkIHRlc3RGaW5pc2hlZENhbGxiYWNrKEdEQnVzUHJveHkqLCBHQXN5bmNSZXN1
bHQqLCBXZWJQcm9jZXNzVGVzdFJ1bm5lciopOworCisgICAgR0RCdXNQcm94eSogcHJveHkoKTsK
KyAgICB2b2lkIGZpbmlzaFRlc3QoYm9vbCByZXN1bHQpOworCisgICAgR01haW5Mb29wKiBtX21h
aW5Mb29wOworICAgIEdSZWZQdHI8R1Rlc3REQnVzPiBtX2J1czsKKyAgICBHUmVmUHRyPEdEQnVz
Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOworICAgIEdSZWZQdHI8R0RCdXNQcm94eT4gbV9wcm94
eTsKKyAgICBib29sIG1fdGVzdFJlc3VsdDsKK307CisKKyNlbmRpZiAvLyBXZWJQcm9jZXNzVGVz
dFJ1bm5lcl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206166</attachid>
            <date>2013-07-05 12:31:48 -0700</date>
            <delta_ts>2013-07-25 06:04:18 -0700</delta_ts>
            <desc>Updated patch</desc>
            <filename>wk2-web-process-tests2.diff</filename>
            <type>text/plain</type>
            <size>32203</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAxZjUxOWFmLi4zOWZiYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzgg
QEAKKzIwMTMtMDctMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIEFkZCBzdXBwb3J0IGZvciBydW5uaW5nIHVuaXQgdGVzdHMgaW4g
dGhlIHdlYiBwcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMTg0MjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTb21lIHRlc3RzLCBsaWtlIEdPYmplY3QgRE9NIGJpbmRpbmdzIEFQSSB0ZXN0cywg
cnVuIGVudGlyZWx5IGluCisgICAgICAgIHRoZSBXZWJQcm9jZXNzLCBzbyB3ZSBqdXN0IG5lZWQg
dG8gc3RhcnQgdGhlIHRlc3QgZnJvbSB0aGUgVUkKKyAgICAgICAgcHJvY2VzcyBhbmQgd2FpdCB1
bnRpbCB0aGUgdGVzdCBmaW5pc2hlcyBydW5uaW5nIGluIHRoZQorICAgICAgICBXZWJQcm9jZXNz
LiBUZXN0cyBhcmUgc3BsaXQgaW4gdHdvIGZpbGVzLCBvbmUgY29udGFpbmluZyB0aGUKKyAgICAg
ICAgYWN0dWFsIHRlc3QgdGhhdCBydW5zIGluIHRoZSBXZWJQcm9jZXNzIGFuZCBhbm90aGVyIG9u
ZSB0byBhZGQgdGhlCisgICAgICAgIHRlc3RzIHRvIHRoZSBnbGliIHRlc3Qgc3lzdGVtIHRoYXQg
d29ya3MgYXMgYQorICAgICAgICBwcm94eS4gV2ViUHJvY2Vzc1Rlc3RSdW5uZXIgY2xhc3Mgc3Rh
cnRzIGEgcHJpdmF0ZSBEQnVzIHNlc3Npb24KKyAgICAgICAgYnVzIGFuZCBzdGFydHMgdGhlIHRl
c3RzIHNlbmRpbmcgYSBtZXNzYWdlIHRvIHRoZSBXZWJFeHRlbnNpb24KKyAgICAgICAgd2FpdGlu
ZyB1bnRpbCBpdCBmaW5pc2hlcyBvciBmYWlscy4gV2ViUHJvY2VzcyB0ZXN0cyBhcmUgY3JlYXRl
ZAorICAgICAgICBieSBkZWZpbmluZyBhIGNsYXNzIGRlcml2ZWQgZnJvbSBXZWJQcm9jZXNzVGVz
dCBjbGFzcyBhbmQKKyAgICAgICAgaW1wbGVtZW50aW5nIHRoZSBzdGF0aWMgY3JlYXRlIG1ldGhv
ZCBhbmQgdGhlIHZpcnR1YWwgcnVuVGVzdAorICAgICAgICBtZXRob2QuIFRoZSBtYWNybyBSRUdJ
U1RFUl9URVNUIGlzIHVzZWQgYnkgdGhlIHdlYiBwcm9jZXNzIHRlc3RzCisgICAgICAgIHRvIHJl
Z2lzdGVyIHRoZWlyIHRlc3QgY2FzZXMuIFRoaXMgcGF0Y2ggaW5jbHVkZXMgdGhlIG1pZ3JhdGlv
bgorICAgICAgICBvZiB0aGUgV2ViS2l0RE9NTm9kZSB0ZXN0LCBhbGwgb3RoZXIgR09iamVjdCBE
T00gYmluZGluZ3MgdGVzdHMKKyAgICAgICAgd2lsbCBiZSBtaWdyYXRlZCBpbiB0aGUgc2FtZSB3
YXkgaW4gZm9sbG93IHVwIHBhdGNoZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90
ZXN0cy9ET01Ob2RlVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0RE9NTm9kZVRlc3Q6
OmNyZWF0ZSk6IENyZWF0ZSBhIG5ldyBXZWJLaXRET01Ob2RlVGVzdC4KKyAgICAgICAgKFdlYktp
dERPTU5vZGVUZXN0Ojp3ZWJQYWdlRnJvbUFyZ3MpOiBHZXQgdGhlIHBhZ2VJRCBwYXJhbWV0ZXIK
KyAgICAgICAgZnJvbSB0aGUgYXJndW1lbnRzIGRpY3Rpb25hcnkuCisgICAgICAgIChXZWJLaXRE
T01Ob2RlVGVzdDo6dGVzdEhpZXJhcmNoeU5hdmlnYXRpb24pOgorICAgICAgICAoV2ViS2l0RE9N
Tm9kZVRlc3Q6OnRlc3RJbnNlcnRpb24pOgorICAgICAgICAoV2ViS2l0RE9NTm9kZVRlc3Q6OnJ1
blRlc3QpOiBSdW4gdGhlIGdpdmVuIHRlc3QuCisgICAgICAgIChyZWdpc3RlclRlc3RzKTogUmVn
aXN0ZXIgdGVzdCBjYXNlcy4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVt
YWtlZmlsZS5hbTogQWRkIG5ldyBmaWxlcyB0bworICAgICAgICBjb21waWxhdGlvbi4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0RE9NTm9kZS5jcHA6IEFkZGVkLgorICAg
ICAgICAodGVzdFdlYktpdERPTU5vZGVIaWVyYXJjaHlOYXZpZ2F0aW9uKToKKyAgICAgICAgKHRl
c3RXZWJLaXRET01Ob2RlSW5zZXJ0aW9uKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisgICAgICAg
IChhZnRlckFsbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdE1haW4u
Y3BwOgorICAgICAgICAobWFpbik6IFVuc2V0IERCVVNfU0VTU0lPTl9CVVNfQUREUkVTUyBlbnZp
cm9ubWVudCB2YXJpYWJsZSB0bworICAgICAgICBtYWtlIHN1cmUgdGhhdCB0aGUgR0xpYiBidXMg
c2luZ2xldG9uIGlzIGluaXRpYWxpemVkIGJ5IHRoZQorICAgICAgICBwcml2YXRlIERCdXMgc2Vz
c2lvbiBidXMgY3JlYXRlZCBieSB0aGUgdGVzdHMuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvdGVzdHMvV2ViUHJvY2Vzc1Rlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRlc3RzTWFwKTog
SW5pdGlhbGl6ZSBhbmQgZ2V0IHRoZSBnbG9iYWwgbWFwIG9mIHRlc3RzLgorICAgICAgICAoV2Vi
UHJvY2Vzc1Rlc3Q6OmFkZCk6IEFkZCBhIG5ldyB0ZXN0IHRvIHRoZSBtYXAsIGtlZXBpbmcgYQor
ICAgICAgICBmdW5jdGlvbiB0byBjcmVhdGUgdGhlIHRlc3QuCisgICAgICAgIChXZWJQcm9jZXNz
VGVzdDo6Y3JlYXRlKTogQ3JlYXRlIGEgdGVzdCBmb3IgdGhlIGdpdmVuIG5hbWUuCisgICAgICAg
IChtZXRob2RDYWxsQ2FsbGJhY2spOiBIYW5kbGUgUnVuVGVzdCBEQnVzIG1ldGhvZC4gSXQgY3Jl
YXRlcyBhbmQKKyAgICAgICAgcnVucyB0aGUgZ2l2ZW4gdGVzdC4KKyAgICAgICAgKHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2luaXRpYWxpemUpOlJlZ2lzdGVyIHRoZSBEQnVzIHNlcnZpY2UgZm9yCisg
ICAgICAgIHRoaXMgV2ViRXh0ZW5zaW9uLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1dlYlByb2Nlc3NUZXN0Lmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1dlYlByb2Nlc3NUZXN0UnVubmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJQcm9j
ZXNzVGVzdFJ1bm5lcjo6V2ViUHJvY2Vzc1Rlc3RSdW5uZXIpOiBTdGFydCBhIHByaXZhdGUgREJ1
cworICAgICAgICBzZXNzaW9uIGJ1cyBhbmQgZ2V0IGEgY29ubmVjdGlvbiB0byBpdC4KKyAgICAg
ICAgKFdlYlByb2Nlc3NUZXN0UnVubmVyOjp+V2ViUHJvY2Vzc1Rlc3RSdW5uZXIpOiBTdG9wIHRo
ZSBwcml2YXRlCisgICAgICAgIERCdXMgc2Vzc2lvbiBidXMuCisgICAgICAgIChXZWJQcm9jZXNz
VGVzdFJ1bm5lcjo6cHJveHlDcmVhdGVkQ2FsbGJhY2spOgorICAgICAgICAoV2ViUHJvY2Vzc1Rl
c3RSdW5uZXI6OnByb3h5KTogQ3JlYXRlIGEgbmV3IHByb3h5IHRvIHNlbmQgbWVzc2FnZXMKKyAg
ICAgICAgdG8gdGhlIFdlYkV4dGVuc2lvbiBpZiBpdCBkb2Vzbid0IGV4aXN0cy4KKyAgICAgICAg
KFdlYlByb2Nlc3NUZXN0UnVubmVyOjpvbk5hbWVBcHBlYXJlZCk6IENhbGxlZCB3aGVuIHRoZSBE
QnVzCisgICAgICAgIHNlcnZpY2UgaGFzIGJlZW4gcmVnaXN0ZXJlZCBpbiB0aGUgV2ViRXh0ZW5z
aW9uIGFuZCBpdCdzIHNhZmUgdG8KKyAgICAgICAgY3JlYXRlIGEgcHJveHkuCisgICAgICAgIChX
ZWJQcm9jZXNzVGVzdFJ1bm5lcjo6b25OYW1lVmFuaXNoZWQpOiBDYWxsZWQgd2hlbiB0aGUgREJ1
cworICAgICAgICBzZXJ2aWNlIGlzIHVucmVnaXN0ZXJlZC4gVGhpcyBoYXBwZW5zIHdoZW4gdGhl
IHdlYiBwcm9jZXNzIGNyYXNoLAorICAgICAgICBzbyB3ZSBqdXN0IGV4aXQgaGVyZSwgYmVjYXVz
ZSB0aGUgZ19hc3NlcnRzIGluIHRoZSB3ZWIgcHJvY2VzcworICAgICAgICBoYXZlIGFscmVhZHkg
cmVnaXN0ZXJlZCB0aGUgZXJyb3IgbWVzc2FnZS4KKyAgICAgICAgKFdlYlByb2Nlc3NUZXN0UnVu
bmVyOjp0ZXN0RmluaXNoZWRDYWxsYmFjayk6IENhbGxlZCB3aGVuIHRoZQorICAgICAgICBXZWJQ
cm9jZXNzIHRlc3RzIGhhcyBmaW5pc2hlZC4KKyAgICAgICAgKFdlYlByb2Nlc3NUZXN0UnVubmVy
OjpydW5UZXN0KTogU2VuZCBhIG1lc3NhZ2UgdG8gdGhlCisgICAgICAgIFdlYkV4dGVuc2lvbiB0
byBzdGFydCB0aGUgZ2l2ZW4gdGVzdCBhbmQgbW9uaXRvciB0aGUgc2VydmljZS4KKyAgICAgICAg
KFdlYlByb2Nlc3NUZXN0UnVubmVyOjpmaW5pc2hUZXN0KTogU2F2ZSB0aGUgdGVzdCByZXN1bHQg
YW5kCisgICAgICAgIGZpbmlzaCB0aGUgbWFpbiBsb29wLgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NUZXN0UnVubmVyLmg6IEFkZGVkLgorCiAyMDEzLTA3LTAz
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBNaWdyYXRlIFdlYktpdFdlYkNvbnRleHQgdG8gR1Rhc2sKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0RPTU5vZGVUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0RPTU5vZGVUZXN0LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjc4NDU3Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvRE9NTm9kZVRlc3QuY3BwCkBA
IC0wLDAgKzEsMTkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYlByb2Nlc3NUZXN0LmgiCisjaW5jbHVk
ZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0LXdlYi1leHRlbnNpb24uaD4K
KworY2xhc3MgV2ViS2l0RE9NTm9kZVRlc3QgOiBwdWJsaWMgV2ViUHJvY2Vzc1Rlc3QgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlByb2Nlc3NUZXN0PiBjcmVhdGUoKSB7IHJl
dHVybiBhZG9wdFB0cihuZXcgV2ViS2l0RE9NTm9kZVRlc3QoKSk7IH0KKworcHJpdmF0ZToKKyAg
ICBndWludDY0IHdlYlBhZ2VGcm9tQXJncyhHVmFyaWFudCogYXJncykKKyAgICB7CisgICAgICAg
IEdWYXJpYW50SXRlciBpdGVyOworICAgICAgICBnX3ZhcmlhbnRfaXRlcl9pbml0KCZpdGVyLCBh
cmdzKTsKKworICAgICAgICBjb25zdCBjaGFyKiBrZXk7CisgICAgICAgIEdWYXJpYW50KiB2YWx1
ZTsKKyAgICAgICAgd2hpbGUgKGdfdmFyaWFudF9pdGVyX2xvb3AoJml0ZXIsICJ7JnN2fSIsICZr
ZXksICZ2YWx1ZSkpIHsKKyAgICAgICAgICAgIGlmICghc3RyY21wKGtleSwgInBhZ2VJRCIpICYm
IGdfdmFyaWFudF9jbGFzc2lmeSh2YWx1ZSkgPT0gR19WQVJJQU5UX0NMQVNTX1VJTlQ2NCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZ192YXJpYW50X2dldF91aW50NjQodmFsdWUpOworICAgICAg
ICB9CisKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorCisgICAgYm9vbCB0ZXN0SGllcmFyY2h5TmF2aWdhdGlvbihXZWJLaXRXZWJFeHRl
bnNpb24qIGV4dGVuc2lvbiwgR1ZhcmlhbnQqIGFyZ3MpCisgICAgeworICAgICAgICBXZWJLaXRX
ZWJQYWdlKiBwYWdlID0gd2Via2l0X3dlYl9leHRlbnNpb25fZ2V0X3BhZ2UoZXh0ZW5zaW9uLCB3
ZWJQYWdlRnJvbUFyZ3MoYXJncykpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfSVNfV0VCX1BB
R0UocGFnZSkpOworICAgICAgICBXZWJLaXRET01Eb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJraXRf
d2ViX3BhZ2VfZ2V0X2RvbV9kb2N1bWVudChwYWdlKTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lU
X0RPTV9JU19ET0NVTUVOVChkb2N1bWVudCkpOworCisgICAgICAgIFdlYktpdERPTUhUTUxIZWFk
RWxlbWVudCogaGVhZCA9IHdlYmtpdF9kb21fZG9jdW1lbnRfZ2V0X2hlYWQoZG9jdW1lbnQpOwor
ICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxfSEVBRF9FTEVNRU5UKGhlYWQpKTsK
KworICAgICAgICAvLyBUaXRsZSwgaGVhZCdzIGNoaWxkLgorICAgICAgICBnX2Fzc2VydCh3ZWJr
aXRfZG9tX25vZGVfaGFzX2NoaWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShoZWFkKSkpOworICAg
ICAgICBHUmVmUHRyPFdlYktpdERPTU5vZGVMaXN0PiBsaXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9k
b21fbm9kZV9nZXRfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGhlYWQpKSk7CisgICAgICAg
IGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKKyAgICAgICAg
Z19hc3NlcnRfY21waW50KHdlYmtpdF9kb21fbm9kZV9saXN0X2dldF9sZW5ndGgobGlzdC5nZXQo
KSksID09LCAxKTsKKyAgICAgICAgV2ViS2l0RE9NTm9kZSogbm9kZSA9IHdlYmtpdF9kb21fbm9k
ZV9saXN0X2l0ZW0obGlzdC5nZXQoKSwgMCk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01f
SVNfSFRNTF9USVRMRV9FTEVNRU5UKG5vZGUpKTsKKworICAgICAgICAvLyBCb2R5LCBIZWFkIHNp
YmxpbmcuCisgICAgICAgIG5vZGUgPSB3ZWJraXRfZG9tX25vZGVfZ2V0X25leHRfc2libGluZyhX
RUJLSVRfRE9NX05PREUoaGVhZCkpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hU
TUxfQk9EWV9FTEVNRU5UKG5vZGUpKTsKKyAgICAgICAgV2ViS2l0RE9NSFRNTEJvZHlFbGVtZW50
KiBib2R5ID0gV0VCS0lUX0RPTV9IVE1MX0JPRFlfRUxFTUVOVChub2RlKTsKKworICAgICAgICAv
LyBUaGVyZSBpcyBubyB0aGlyZCBzaWJsaW5nCisgICAgICAgIGdfYXNzZXJ0KCF3ZWJraXRfZG9t
X25vZGVfZ2V0X25leHRfc2libGluZyhub2RlKSk7CisKKyAgICAgICAgLy8gQm9keSdzIHByZXZp
b3VzIHNpYmxpbmcgaXMgSGVhZC4KKyAgICAgICAgbm9kZSA9IHdlYmtpdF9kb21fbm9kZV9nZXRf
cHJldmlvdXNfc2libGluZyhXRUJLSVRfRE9NX05PREUoYm9keSkpOworICAgICAgICBnX2Fzc2Vy
dChXRUJLSVRfRE9NX0lTX0hUTUxfSEVBRF9FTEVNRU5UKG5vZGUpKTsKKworICAgICAgICAvLyBC
b2R5IGhhcyAzIGNoaWxkcmVuLgorICAgICAgICBnX2Fzc2VydCh3ZWJraXRfZG9tX25vZGVfaGFz
X2NoaWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShib2R5KSkpOworICAgICAgICBsaXN0ID0gYWRv
cHRHUmVmKHdlYmtpdF9kb21fbm9kZV9nZXRfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJv
ZHkpKSk7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoID0gd2Via2l0X2RvbV9ub2RlX2xp
c3RfZ2V0X2xlbmd0aChsaXN0LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KGxlbmd0
aCwgPT0sIDMpOworCisgICAgICAgIC8vIFRoZSB0aHJlZSBvZiB0aGVtIGFyZSBQIHRhZ3MuCisg
ICAgICAgIGZvciAodW5zaWduZWQgbG9uZyBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAg
ICAgICAgICBub2RlID0gd2Via2l0X2RvbV9ub2RlX2xpc3RfaXRlbShsaXN0LmdldCgpLCBpKTsK
KyAgICAgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9QQVJBR1JBUEhfRUxFTUVO
VChub2RlKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBHbyBiYWNrd2FyZHMKKyAgICAgICAg
dW5zaWduZWQgaTsKKyAgICAgICAgZm9yIChpID0gMDsgbm9kZTsgbm9kZSA9IHdlYmtpdF9kb21f
bm9kZV9nZXRfcHJldmlvdXNfc2libGluZyhub2RlKSwgaSsrKSB7IH0KKyAgICAgICAgZ19hc3Nl
cnRfY21waW50KGksID09LCAzKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICBib29sIHRlc3RJbnNlcnRpb24oV2ViS2l0V2ViRXh0ZW5zaW9uKiBleHRlbnNpb24sIEdWYXJp
YW50KiBhcmdzKQorICAgIHsKKyAgICAgICAgV2ViS2l0V2ViUGFnZSogcGFnZSA9IHdlYmtpdF93
ZWJfZXh0ZW5zaW9uX2dldF9wYWdlKGV4dGVuc2lvbiwgd2ViUGFnZUZyb21BcmdzKGFyZ3MpKTsK
KyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0lTX1dFQl9QQUdFKHBhZ2UpKTsKKyAgICAgICAgV2Vi
S2l0RE9NRG9jdW1lbnQqIGRvY3VtZW50ID0gd2Via2l0X3dlYl9wYWdlX2dldF9kb21fZG9jdW1l
bnQocGFnZSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfRE9DVU1FTlQoZG9jdW1l
bnQpKTsKKworICAgICAgICBXZWJLaXRET01IVE1MRWxlbWVudCogYm9keSA9IHdlYmtpdF9kb21f
ZG9jdW1lbnRfZ2V0X2JvZHkoZG9jdW1lbnQpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9N
X0lTX0hUTUxfRUxFTUVOVChib2R5KSk7CisKKyAgICAgICAgLy8gQm9keSBzaG91bGRuJ3QgaGF2
ZSBhbnkgY2hpbGRyZW4gYXQgdGhpcyBwb2ludC4KKyAgICAgICAgZ19hc3NlcnQoIXdlYmtpdF9k
b21fbm9kZV9oYXNfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7CisKKyAgICAg
ICAgLy8gSW5zZXJ0IG9uZSBQIGVsZW1lbnQuCisgICAgICAgIFdlYktpdERPTUVsZW1lbnQqIHAg
PSB3ZWJraXRfZG9tX2RvY3VtZW50X2NyZWF0ZV9lbGVtZW50KGRvY3VtZW50LCAiUCIsIDApOwor
ICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChwKSk7CisgICAgICAg
IHdlYmtpdF9kb21fbm9kZV9hcHBlbmRfY2hpbGQoV0VCS0lUX0RPTV9OT0RFKGJvZHkpLCBXRUJL
SVRfRE9NX05PREUocCksIDApOworCisgICAgICAgIC8vIE5vdyBpdCBzaG91bGQgaGF2ZSBvbmUs
IHRoZSBzYW1lIHRoYXQgd2UgaW5zZXJ0ZWQuCisgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb21f
bm9kZV9oYXNfY2hpbGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7CisgICAgICAgIEdS
ZWZQdHI8V2ViS2l0RE9NTm9kZUxpc3Q+IGxpc3QgPSBhZG9wdEdSZWYod2Via2l0X2RvbV9ub2Rl
X2dldF9jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsKKyAgICAgICAgZ19hc3Nl
cnQoV0VCS0lUX0RPTV9JU19OT0RFX0xJU1QobGlzdC5nZXQoKSkpOworICAgICAgICBnX2Fzc2Vy
dF9jbXBpbnQod2Via2l0X2RvbV9ub2RlX2xpc3RfZ2V0X2xlbmd0aChsaXN0LmdldCgpKSwgPT0s
IDEpOworICAgICAgICBXZWJLaXRET01Ob2RlKiBub2RlID0gd2Via2l0X2RvbV9ub2RlX2xpc3Rf
aXRlbShsaXN0LmdldCgpLCAwKTsKKyAgICAgICAgZ19hc3NlcnQoV0VCS0lUX0RPTV9JU19IVE1M
X0VMRU1FTlQobm9kZSkpOworICAgICAgICBnX2Fzc2VydCh3ZWJraXRfZG9tX25vZGVfaXNfc2Ft
ZV9ub2RlKFdFQktJVF9ET01fTk9ERShwKSwgbm9kZSkpOworCisgICAgICAgIC8vIFJlcGxhY2Ug
dGhlIFAgdGFnIHdpdGggYSBESVYgdGFnLgorICAgICAgICBXZWJLaXRET01FbGVtZW50KiBkaXYg
PSB3ZWJraXRfZG9tX2RvY3VtZW50X2NyZWF0ZV9lbGVtZW50KGRvY3VtZW50LCAiRElWIiwgMCk7
CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKGRpdikpOworICAg
ICAgICB3ZWJraXRfZG9tX25vZGVfcmVwbGFjZV9jaGlsZChXRUJLSVRfRE9NX05PREUoYm9keSks
IFdFQktJVF9ET01fTk9ERShkaXYpLCBXRUJLSVRfRE9NX05PREUocCksIDApOworICAgICAgICBn
X2Fzc2VydCh3ZWJraXRfZG9tX25vZGVfaGFzX2NoaWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShi
b2R5KSkpOworICAgICAgICBsaXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fbm9kZV9nZXRfY2hp
bGRfbm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJ
VF9ET01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50
KHdlYmtpdF9kb21fbm9kZV9saXN0X2dldF9sZW5ndGgobGlzdC5nZXQoKSksID09LCAxKTsKKyAg
ICAgICAgbm9kZSA9IHdlYmtpdF9kb21fbm9kZV9saXN0X2l0ZW0obGlzdC5nZXQoKSwgMCk7Cisg
ICAgICAgIGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKG5vZGUpKTsKKyAgICAg
ICAgZ19hc3NlcnQod2Via2l0X2RvbV9ub2RlX2lzX3NhbWVfbm9kZShXRUJLSVRfRE9NX05PREUo
ZGl2KSwgbm9kZSkpOworCisgICAgICAgIC8vIE5vdyByZW1vdmUgdGhlIHRhZy4KKyAgICAgICAg
d2Via2l0X2RvbV9ub2RlX3JlbW92ZV9jaGlsZChXRUJLSVRfRE9NX05PREUoYm9keSksIG5vZGUs
IDApOworICAgICAgICBsaXN0ID0gYWRvcHRHUmVmKHdlYmtpdF9kb21fbm9kZV9nZXRfY2hpbGRf
bm9kZXMoV0VCS0lUX0RPTV9OT0RFKGJvZHkpKSk7CisgICAgICAgIGdfYXNzZXJ0KFdFQktJVF9E
T01fSVNfTk9ERV9MSVNUKGxpc3QuZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfY21waW50KHdl
YmtpdF9kb21fbm9kZV9saXN0X2dldF9sZW5ndGgobGlzdC5nZXQoKSksID09LCAwKTsKKworICAg
ICAgICAvLyBUZXN0IGluc2VydCBiZWZvcmUuIElmIHJlZkNoaWxkIGlzIG51bGwsIGluc2VydCBu
ZXdDaGlsZCBhcyBsYXN0IGVsZW1lbnQgb2YgcGFyZW50LgorICAgICAgICBkaXYgPSB3ZWJraXRf
ZG9tX2RvY3VtZW50X2NyZWF0ZV9lbGVtZW50KGRvY3VtZW50LCAiRElWIiwgMCk7CisgICAgICAg
IGdfYXNzZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKGRpdikpOworICAgICAgICB3ZWJr
aXRfZG9tX25vZGVfaW5zZXJ0X2JlZm9yZShXRUJLSVRfRE9NX05PREUoYm9keSksIFdFQktJVF9E
T01fTk9ERShkaXYpLCAwLCAwKTsKKyAgICAgICAgZ19hc3NlcnQod2Via2l0X2RvbV9ub2RlX2hh
c19jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsKKyAgICAgICAgbGlzdCA9IGFk
b3B0R1JlZih3ZWJraXRfZG9tX25vZGVfZ2V0X2NoaWxkX25vZGVzKFdFQktJVF9ET01fTk9ERShi
b2R5KSkpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX05PREVfTElTVChsaXN0Lmdl
dCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfZG9tX25vZGVfbGlzdF9nZXRf
bGVuZ3RoKGxpc3QuZ2V0KCkpLCA9PSwgMSk7CisgICAgICAgIG5vZGUgPSB3ZWJraXRfZG9tX25v
ZGVfbGlzdF9pdGVtKGxpc3QuZ2V0KCksIDApOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9N
X0lTX0hUTUxfRUxFTUVOVChub2RlKSk7CisgICAgICAgIGdfYXNzZXJ0KHdlYmtpdF9kb21fbm9k
ZV9pc19zYW1lX25vZGUoV0VCS0lUX0RPTV9OT0RFKGRpdiksIG5vZGUpKTsKKworICAgICAgICAv
LyBOb3cgaW5zZXJ0IGEgJ3AnIGJlZm9yZSAnZGl2Jy4KKyAgICAgICAgcCA9IHdlYmtpdF9kb21f
ZG9jdW1lbnRfY3JlYXRlX2VsZW1lbnQoZG9jdW1lbnQsICJQIiwgMCk7CisgICAgICAgIGdfYXNz
ZXJ0KFdFQktJVF9ET01fSVNfSFRNTF9FTEVNRU5UKHApKTsKKyAgICAgICAgd2Via2l0X2RvbV9u
b2RlX2luc2VydF9iZWZvcmUoV0VCS0lUX0RPTV9OT0RFKGJvZHkpLCBXRUJLSVRfRE9NX05PREUo
cCksIFdFQktJVF9ET01fTk9ERShkaXYpLCAwKTsKKyAgICAgICAgZ19hc3NlcnQod2Via2l0X2Rv
bV9ub2RlX2hhc19jaGlsZF9ub2RlcyhXRUJLSVRfRE9NX05PREUoYm9keSkpKTsKKyAgICAgICAg
bGlzdCA9IGFkb3B0R1JlZih3ZWJraXRfZG9tX25vZGVfZ2V0X2NoaWxkX25vZGVzKFdFQktJVF9E
T01fTk9ERShib2R5KSkpOworICAgICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX05PREVfTElT
VChsaXN0LmdldCgpKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcGludCh3ZWJraXRfZG9tX25vZGVf
bGlzdF9nZXRfbGVuZ3RoKGxpc3QuZ2V0KCkpLCA9PSwgMik7CisgICAgICAgIG5vZGUgPSB3ZWJr
aXRfZG9tX25vZGVfbGlzdF9pdGVtKGxpc3QuZ2V0KCksIDApOworICAgICAgICBnX2Fzc2VydChX
RUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChub2RlKSk7CisgICAgICAgIGdfYXNzZXJ0KHdlYmtp
dF9kb21fbm9kZV9pc19zYW1lX25vZGUoV0VCS0lUX0RPTV9OT0RFKHApLCBub2RlKSk7CisgICAg
ICAgIG5vZGUgPSB3ZWJraXRfZG9tX25vZGVfbGlzdF9pdGVtKGxpc3QuZ2V0KCksIDEpOworICAg
ICAgICBnX2Fzc2VydChXRUJLSVRfRE9NX0lTX0hUTUxfRUxFTUVOVChub2RlKSk7CisgICAgICAg
IGdfYXNzZXJ0KHdlYmtpdF9kb21fbm9kZV9pc19zYW1lX25vZGUoV0VCS0lUX0RPTV9OT0RFKGRp
diksIG5vZGUpKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IGJvb2wgcnVuVGVzdChjb25zdCBjaGFyKiB0ZXN0TmFtZSwgV2ViS2l0V2ViRXh0ZW5zaW9uKiBl
eHRlbnNpb24sIEdWYXJpYW50KiBhcmdzKQorICAgIHsKKyAgICAgICAgaWYgKCFzdHJjbXAodGVz
dE5hbWUsICJoaWVyYXJjaHktbmF2aWdhdGlvbiIpKQorICAgICAgICAgICAgcmV0dXJuIHRlc3RI
aWVyYXJjaHlOYXZpZ2F0aW9uKGV4dGVuc2lvbiwgYXJncyk7CisgICAgICAgIGlmICghc3RyY21w
KHRlc3ROYW1lLCAiaW5zZXJ0aW9uIikpCisgICAgICAgICAgICByZXR1cm4gdGVzdEluc2VydGlv
bihleHRlbnNpb24sIGFyZ3MpOworCisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7Cisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9OworCitzdGF0aWMgdm9pZCBfX2F0dHJpYnV0
ZV9fKChjb25zdHJ1Y3RvcikpIHJlZ2lzdGVyVGVzdHMoKQoreworICAgIFJFR0lTVEVSX1RFU1Qo
V2ViS2l0RE9NTm9kZVRlc3QsICJXZWJLaXRET01Ob2RlL2hpZXJhcmNoeS1uYXZpZ2F0aW9uIik7
CisgICAgUkVHSVNURVJfVEVTVChXZWJLaXRET01Ob2RlVGVzdCwgIldlYktpdERPTU5vZGUvaW5z
ZXJ0aW9uIik7Cit9CisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvdGVzdHMvR05VbWFrZWZpbGUuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5hbQppbmRleCA4NDZhYjQ5Li40MzQ2MTRjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmlsZS5h
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9HTlVtYWtlZmls
ZS5hbQpAQCAtNSw2ICs1LDcgQEAgVEVTVF9QUk9HUyArPSBcCiAJUHJvZ3JhbXMvV2ViS2l0MkFQ
SVRlc3RzL1Rlc3RCYWNrRm9yd2FyZExpc3QgXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9U
ZXN0Q29udGV4dE1lbnUgXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0Q29va2llTWFu
YWdlciBcCisJUHJvZ3JhbXMvV2ViS2l0MkFQSVRlc3RzL1Rlc3RET01Ob2RlIFwKIAlQcm9ncmFt
cy9XZWJLaXQyQVBJVGVzdHMvVGVzdERvd25sb2FkcyBcCiAJUHJvZ3JhbXMvV2ViS2l0MkFQSVRl
c3RzL1Rlc3RJbnNwZWN0b3IgXAogCVByb2dyYW1zL1dlYktpdDJBUElUZXN0cy9UZXN0SW5zcGVj
dG9yU2VydmVyIFwKQEAgLTgxLDYgKzgyLDggQEAgTGlicmFyaWVzX2xpYldlYktpdDJBUElUZXN0
Q29yZV9sYV9TT1VSQ0VTID0gXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rl
c3RzL1dlYktpdFRlc3RCdXMuaCBcCiAJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
dGVzdHMvV2ViS2l0VGVzdFNlcnZlci5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1dlYktpdFRlc3RTZXJ2ZXIuaCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvV2ViUHJvY2Vzc1Rlc3RSdW5uZXIuY3BwIFwKKwlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJQcm9jZXNzVGVzdFJ1bm5lci5oIFwKIAlT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0TWFpbi5jcHAgXAogCVNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RNYWluLmggXAogCVNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlZpZXdUZXN0LmNwcCBcCkBAIC0x
MTEsNiArMTE0LDMyIEBAIExpYnJhcmllc19XZWJFeHRlbnNpb25zX2xpYldlYkV4dGVuc2lvblRl
c3RfbGFfQ0ZMQUdTID0gXAogICAgICAgICAkKGdsb2JhbF9jZmxhZ3MpCiAKIAorbm9pbnN0X0xU
TElCUkFSSUVTICs9IExpYnJhcmllcy9XZWJFeHRlbnNpb25zL2xpYldlYlByb2Nlc3NUZXN0Lmxh
CitMaWJyYXJpZXNfV2ViRXh0ZW5zaW9uc19saWJXZWJQcm9jZXNzVGVzdF9sYV9TT1VSQ0VTID0g
XAorCVNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL0RPTU5vZGVUZXN0LmNw
cCBcCisJU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViUHJvY2Vzc1Rl
c3QuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJQcm9j
ZXNzVGVzdC5oCisKK0xpYnJhcmllc19XZWJFeHRlbnNpb25zX2xpYldlYlByb2Nlc3NUZXN0X2xh
X0xERkxBR1MgPSBcCisJLXJwYXRoICR7c2hlbGwgcHdkfS8kKHRvcF9idWlsZGRpcikvTGlicmFy
aWVzL1dlYkV4dGVuc2lvbnMvLmxpYnMgXAorCSQobm9fdW5kZWZpbmVkKSBcCisJLWF2b2lkLXZl
cnNpb24gXAorCS1tb2R1bGUKKworTGlicmFyaWVzX1dlYkV4dGVuc2lvbnNfbGliV2ViUHJvY2Vz
c1Rlc3RfbGFfQ1BQRkxBR1MgPSBcCisJLUkkKHNyY2RpcikvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrIFwKKwktSSQodG9wX2J1aWxkZGlyKS9EZXJpdmVk
U291cmNlcyBcCisJLUkkKHRvcF9idWlsZGRpcikvRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi93ZWJr
aXQyZXh0ZW5zaW9uL2luY2x1ZGUgXAorCS1EV0VCS0lUMl9DT01QSUxBVElPTiBcCisJJCh3ZWJr
aXQyX3Rlc3RzX2NwcGZsYWdzKQorCitMaWJyYXJpZXNfV2ViRXh0ZW5zaW9uc19saWJXZWJQcm9j
ZXNzVGVzdF9sYV9DWFhGTEFHUyA9IFwKKwkkKGdsb2JhbF9jeHhmbGFncykKKworTGlicmFyaWVz
X1dlYkV4dGVuc2lvbnNfbGliV2ViUHJvY2Vzc1Rlc3RfbGFfQ0ZMQUdTID0gXAorCSQoZ2xvYmFs
X2NmbGFncykKKworCiBFWFRSQV9ESVNUICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9yZXNvdXJjZXMvdGVzdC1jZXJ0LnBlbSBcCiAJU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvcmVzb3VyY2VzL3Rlc3Qta2V5LnBlbSBcCkBAIC0yNTks
NCArMjg4LDEwIEBAIFByb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViS2l0V2ViVmlld0dy
b3VwX0NQUEZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2NwcGZsCiBQcm9ncmFtc19XZWJLaXQyQVBJ
VGVzdHNfVGVzdFdlYktpdFdlYlZpZXdHcm91cF9MREFERCA9ICQod2Via2l0Ml90ZXN0c19sZGFk
ZCkKIFByb2dyYW1zX1dlYktpdDJBUElUZXN0c19UZXN0V2ViS2l0V2ViVmlld0dyb3VwX0xERkxB
R1MgPSAkKHdlYmtpdDJfdGVzdHNfbGRmbGFncykKIAorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3Rz
X1Rlc3RET01Ob2RlX1NPVVJDRVMgPSBcCisgICAgICAgIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RET01Ob2RlLmNwcAorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3Rz
X1Rlc3RET01Ob2RlX0NQUEZMQUdTID0gJCh3ZWJraXQyX3Rlc3RzX2NwcGZsYWdzKQorUHJvZ3Jh
bXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RET01Ob2RlX0xEQUREID0gJCh3ZWJraXQyX3Rlc3RzX2xk
YWRkKQorUHJvZ3JhbXNfV2ViS2l0MkFQSVRlc3RzX1Rlc3RET01Ob2RlX0xERkxBR1MgPSAkKHdl
YmtpdDJfdGVzdHNfbGRmbGFncykKKwogZW5kaWYgIyBFTkFCTEVfV0VCS0lUMgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdERPTU5vZGUuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdERPTU5vZGUuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3OTljMTkKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0RE9NTm9k
ZS5jcHAKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEg
Uy5MLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLDEgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiV2ViUHJvY2Vzc1Rlc3RSdW5u
ZXIuaCIKKyNpbmNsdWRlICJXZWJWaWV3VGVzdC5oIgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNp
bmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KKworc3RhdGljIFdlYlByb2Nlc3NUZXN0UnVubmVy
KiB0ZXN0UnVubmVyOworCitzdGF0aWMgdm9pZCB0ZXN0V2ViS2l0RE9NTm9kZUhpZXJhcmNoeU5h
dmlnYXRpb24oV2ViVmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIHRlc3RIVE1MID0gIjxodG1sPjxoZWFkPjx0aXRsZT5UaGlzIGlzIHRoZSB0
aXRsZTwvdGl0bGU+PC9oZWFkPjxib2R5PjxwPjE8L3A+PHA+MjwvcD48cD4zPC9wPjwvYm9keT48
L2h0bWw+IjsKKyAgICB0ZXN0LT5sb2FkSHRtbCh0ZXN0SFRNTCwgMCk7CisgICAgdGVzdC0+d2Fp
dFVudGlsTG9hZEZpbmlzaGVkKCk7CisKKyAgICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRlcjsKKyAg
ICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNU
KTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgInBhZ2VJRCIs
IGdfdmFyaWFudF9uZXdfdWludDY0KHdlYmtpdF93ZWJfdmlld19nZXRfcGFnZV9pZCh0ZXN0LT5t
X3dlYlZpZXcpKSk7CisgICAgZ19hc3NlcnQodGVzdFJ1bm5lci0+cnVuVGVzdCgiV2ViS2l0RE9N
Tm9kZSIsICJoaWVyYXJjaHktbmF2aWdhdGlvbiIsIGdfdmFyaWFudF9idWlsZGVyX2VuZCgmYnVp
bGRlcikpKTsKK30KKworc3RhdGljIHZvaWQgdGVzdFdlYktpdERPTU5vZGVJbnNlcnRpb24oV2Vi
Vmlld1Rlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IHRlc3RIVE1MID0gIjxodG1sPjxib2R5PjwvYm9keT48L2h0bWw+IjsKKyAgICB0ZXN0LT5sb2Fk
SHRtbCh0ZXN0SFRNTCwgMCk7CisgICAgdGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisK
KyAgICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRlcjsKKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0
KCZidWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKKyAgICBnX3ZhcmlhbnRfYnVpbGRl
cl9hZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgInBhZ2VJRCIsIGdfdmFyaWFudF9uZXdfdWludDY0KHdl
YmtpdF93ZWJfdmlld19nZXRfcGFnZV9pZCh0ZXN0LT5tX3dlYlZpZXcpKSk7CisgICAgZ19hc3Nl
cnQodGVzdFJ1bm5lci0+cnVuVGVzdCgiV2ViS2l0RE9NTm9kZSIsICJpbnNlcnRpb24iLCBnX3Zh
cmlhbnRfYnVpbGRlcl9lbmQoJmJ1aWxkZXIpKSk7Cit9CisKK3ZvaWQgYmVmb3JlQWxsKCkKK3sK
KyAgICB0ZXN0UnVubmVyID0gbmV3IFdlYlByb2Nlc3NUZXN0UnVubmVyKCk7CisgICAgd2Via2l0
X3dlYl9jb250ZXh0X3NldF93ZWJfZXh0ZW5zaW9uc19kaXJlY3Rvcnkod2Via2l0X3dlYl9jb250
ZXh0X2dldF9kZWZhdWx0KCksIFdFQktJVF9URVNUX1dFQl9FWFRFTlNJT05TX0RJUik7CisKKyAg
ICBXZWJWaWV3VGVzdDo6YWRkKCJXZWJLaXRET01Ob2RlIiwgImhpZXJhcmNoeS1uYXZpZ2F0aW9u
IiwgdGVzdFdlYktpdERPTU5vZGVIaWVyYXJjaHlOYXZpZ2F0aW9uKTsKKyAgICBXZWJWaWV3VGVz
dDo6YWRkKCJXZWJLaXRET01Ob2RlIiwgImluc2VydGlvbiIsIHRlc3RXZWJLaXRET01Ob2RlSW5z
ZXJ0aW9uKTsKK30KKwordm9pZCBhZnRlckFsbCgpCit7CisgICAgZGVsZXRlIHRlc3RSdW5uZXI7
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9U
ZXN0TWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
TWFpbi5jcHAKaW5kZXggNmFjMzVmOC4uMmZiMjYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdE1haW4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RNYWluLmNwcApAQCAtNTMsNiArNTMsNyBA
QCBzdGF0aWMgdm9pZCByZW1vdmVOb25FbXB0eURpcmVjdG9yeShjb25zdCBjaGFyKiBkaXJlY3Rv
cnlQYXRoKQogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CisgICAgZ191bnNl
dGVudigiREJVU19TRVNTSU9OX0JVU19BRERSRVNTIik7CiAgICAgZ3RrX3Rlc3RfaW5pdCgmYXJn
YywgJmFyZ3YsIDApOwogICAgIGdfc2V0ZW52KCJXRUJLSVRfRVhFQ19QQVRIIiwgV0VCS0lUX0VY
RUNfUEFUSCwgRkFMU0UpOwogICAgIGdfc2V0ZW52KCJXRUJLSVRfSU5KRUNURURfQlVORExFX1BB
VEgiLCBXRUJLSVRfSU5KRUNURURfQlVORExFX1BBVEgsIEZBTFNFKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NUZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NUZXN0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGU2M2RjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViUHJvY2Vz
c1Rlc3QuY3BwCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEln
YWxpYSBTLkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzVGVzdC5o
IgorCisjaW5jbHVkZSA8Z2lvL2dpby5oPgorI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIu
aD4KKwordHlwZWRlZiBIYXNoTWFwPFN0cmluZywgRnVuY3Rpb248UGFzc093blB0cjxXZWJQcm9j
ZXNzVGVzdD4oKT4+IFRlc3RzTWFwOworc3RhdGljIFRlc3RzTWFwJiB0ZXN0c01hcCgpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChUZXN0c01hcCwgc190ZXN0c01hcCwgKCkpOworICAgIHJl
dHVybiBzX3Rlc3RzTWFwOworfQorCit2b2lkIFdlYlByb2Nlc3NUZXN0OjphZGQoY29uc3QgU3Ry
aW5nJiB0ZXN0TmFtZSwgRnVuY3Rpb248UGFzc093blB0cjxXZWJQcm9jZXNzVGVzdD4oKT4gY2xv
c3VyZSkKK3sKKyAgICB0ZXN0c01hcCgpLmFkZCh0ZXN0TmFtZSwgY2xvc3VyZSk7Cit9CisKK1Bh
c3NPd25QdHI8V2ViUHJvY2Vzc1Rlc3Q+IFdlYlByb2Nlc3NUZXN0OjpjcmVhdGUoY29uc3QgU3Ry
aW5nJiB0ZXN0TmFtZSkKK3sKKyAgICBnX2Fzc2VydCh0ZXN0c01hcCgpLmNvbnRhaW5zKHRlc3RO
YW1lKSk7CisgICAgcmV0dXJuIHRlc3RzTWFwKCkuZ2V0KHRlc3ROYW1lKSgpOworfQorCitzdGF0
aWMgY29uc3QgY2hhciBpbnRyb3NwZWN0aW9uWE1MW10gPQorICAgICI8bm9kZT4iCisgICAgIiA8
aW50ZXJmYWNlIG5hbWU9J29yZy53ZWJraXQuZ3RrLldlYlByb2Nlc3NUZXN0Jz4iCisgICAgIiAg
PG1ldGhvZCBuYW1lPSdSdW5UZXN0Jz4iCisgICAgIiAgIDxhcmcgdHlwZT0ncycgbmFtZT0ncGF0
aCcgZGlyZWN0aW9uPSdpbicvPiIKKyAgICAiICAgPGFyZyB0eXBlPSdhe3N2fScgbmFtZT0nYXJn
cycgZGlyZWN0aW9uPSdpbicvPiIKKyAgICAiICAgPGFyZyB0eXBlPSdiJyBuYW1lPSdyZXN1bHQn
IGRpcmVjdGlvbj0nb3V0Jy8+IgorICAgICIgIDwvbWV0aG9kPiIKKyAgICAiIDwvaW50ZXJmYWNl
PiIKKyAgICAiPC9ub2RlPiI7CisKK3N0YXRpYyB2b2lkIG1ldGhvZENhbGxDYWxsYmFjayhHREJ1
c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIHNlbmRlciwgY29uc3QgY2hhciog
b2JqZWN0UGF0aCwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogbWV0aG9k
TmFtZSwgR1ZhcmlhbnQqIHBhcmFtZXRlcnMsIEdEQnVzTWV0aG9kSW52b2NhdGlvbiogaW52b2Nh
dGlvbiwgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgaWYgKGdfc3RyY21wMChpbnRlcmZhY2VO
YW1lLCAib3JnLndlYmtpdC5ndGsuV2ViUHJvY2Vzc1Rlc3QiKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKCFnX3N0cmNtcDAobWV0aG9kTmFtZSwgIlJ1blRlc3QiKSkgeworICAgICAgICBj
b25zdCBjaGFyKiB0ZXN0UGF0aDsKKyAgICAgICAgR1ZhcmlhbnQqIGFyZ3M7CisgICAgICAgIGdf
dmFyaWFudF9nZXQocGFyYW1ldGVycywgIigmc0Bhe3N2fSkiLCAmdGVzdFBhdGgsICZhcmdzKTsK
KyAgICAgICAgT3duUHRyPFdlYlByb2Nlc3NUZXN0PiB0ZXN0ID0gV2ViUHJvY2Vzc1Rlc3Q6OmNy
ZWF0ZShTdHJpbmc6OmZyb21VVEY4KHRlc3RQYXRoKSk7CisgICAgICAgIGJvb2wgcmVzdWx0ID0g
dGVzdC0+cnVuVGVzdChnX3N0cnJzdHIodGVzdFBhdGgsICIvIikgKyAxLCBXRUJLSVRfV0VCX0VY
VEVOU0lPTih1c2VyRGF0YSksIGFyZ3MpOworICAgICAgICBnX3ZhcmlhbnRfdW5yZWYoYXJncyk7
CisKKyAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZShpbnZvY2F0
aW9uLCBnX3ZhcmlhbnRfbmV3KCIoYikiLCByZXN1bHQpKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
Z19hc3NlcnRfbm90X3JlYWNoZWQoKTsKK30KKworc3RhdGljIGNvbnN0IEdEQnVzSW50ZXJmYWNl
VlRhYmxlIGludGVyZmFjZVZpcnR1YWxUYWJsZSA9IHsKKyAgICBtZXRob2RDYWxsQ2FsbGJhY2ss
IDAsIDAsIHsgMCwgfQorfTsKKworc3RhdGljIHZvaWQgYnVzQWNxdWlyZWRDYWxsYmFjayhHREJ1
c0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IGNoYXIqIG5hbWUsIGdwb2ludGVyIHVzZXJE
YXRhKQoreworICAgIHN0YXRpYyBHREJ1c05vZGVJbmZvICppbnRyb3NwZWN0aW9uRGF0YSA9IDA7
CisgICAgaWYgKCFpbnRyb3NwZWN0aW9uRGF0YSkKKyAgICAgICAgaW50cm9zcGVjdGlvbkRhdGEg
PSBnX2RidXNfbm9kZV9pbmZvX25ld19mb3JfeG1sKGludHJvc3BlY3Rpb25YTUwsIDApOworCisg
ICAgR093blB0cjxHRXJyb3I+IGVycm9yOworICAgIHVuc2lnbmVkIHJlZ2lzdHJhdGlvbklEID0g
Z19kYnVzX2Nvbm5lY3Rpb25fcmVnaXN0ZXJfb2JqZWN0KAorICAgICAgICBjb25uZWN0aW9uLAor
ICAgICAgICAiL29yZy93ZWJraXQvZ3RrL1dlYlByb2Nlc3NUZXN0IiwKKyAgICAgICAgaW50cm9z
cGVjdGlvbkRhdGEtPmludGVyZmFjZXNbMF0sCisgICAgICAgICZpbnRlcmZhY2VWaXJ0dWFsVGFi
bGUsCisgICAgICAgIGdfb2JqZWN0X3JlZih1c2VyRGF0YSksCisgICAgICAgIHN0YXRpY19jYXN0
PEdEZXN0cm95Tm90aWZ5PihnX29iamVjdF91bnJlZiksCisgICAgICAgICZlcnJvci5vdXRQdHIo
KSk7CisgICAgaWYgKCFyZWdpc3RyYXRpb25JRCkKKyAgICAgICAgZ193YXJuaW5nKCJGYWlsZWQg
dG8gcmVnaXN0ZXIgb2JqZWN0OiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2UpOworfQorCitleHRlcm4g
IkMiIHZvaWQgd2Via2l0X3dlYl9leHRlbnNpb25faW5pdGlhbGl6ZShXZWJLaXRXZWJFeHRlbnNp
b24qIGV4dGVuc2lvbikKK3sKKyAgICBnX2J1c19vd25fbmFtZSgKKyAgICAgICAgR19CVVNfVFlQ
RV9TRVNTSU9OLAorICAgICAgICAib3JnLndlYmtpdC5ndGsuV2ViUHJvY2Vzc1Rlc3QiLAorICAg
ICAgICBHX0JVU19OQU1FX09XTkVSX0ZMQUdTX05PTkUsCisgICAgICAgIGJ1c0FjcXVpcmVkQ2Fs
bGJhY2ssCisgICAgICAgIDAsIDAsCisgICAgICAgIGdfb2JqZWN0X3JlZihleHRlbnNpb24pLAor
ICAgICAgICBzdGF0aWNfY2FzdDxHRGVzdHJveU5vdGlmeT4oZ19vYmplY3RfdW5yZWYpKTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlBy
b2Nlc3NUZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJQ
cm9jZXNzVGVzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzMzMyN2QK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0
cy9XZWJQcm9jZXNzVGVzdC5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0LXdlYi1leHRlbnNpb24u
aD4KKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgorCitjbGFzcyBXZWJQcm9jZXNzVGVzdCB7CitwdWJsaWM6CisgICAg
dmlydHVhbCB+V2ViUHJvY2Vzc1Rlc3QoKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcnVuVGVzdChj
b25zdCBjaGFyKiB0ZXN0TmFtZSwgV2ViS2l0V2ViRXh0ZW5zaW9uKiwgR1ZhcmlhbnQqIGFyZ3Mp
ID0gMDsKKworICAgIHN0YXRpYyB2b2lkIGFkZChjb25zdCBTdHJpbmcmIHRlc3ROYW1lLCBGdW5j
dGlvbjxQYXNzT3duUHRyPFdlYlByb2Nlc3NUZXN0PigpPik7CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8V2ViUHJvY2Vzc1Rlc3Q+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHRlc3ROYW1lKTsKK307CisK
KyNkZWZpbmUgUkVHSVNURVJfVEVTVChDbGFzc05hbWUsIFRlc3ROYW1lKSBcCisgICAgV2ViUHJv
Y2Vzc1Rlc3Q6OmFkZChTdHJpbmc6OmZyb21VVEY4KFRlc3ROYW1lKSwgV1RGOjpiaW5kKCZDbGFz
c05hbWU6OmNyZWF0ZSkpCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NUZXN0UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NUZXN0UnVubmVyLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWY3NDA4Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvV2ViUHJvY2Vzc1Rlc3RSdW5uZXIu
Y3BwCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBT
LkwuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzVGVzdFJ1bm5lci5o
IgorCisjaW5jbHVkZSA8d3RmL2dvYmplY3QvR093blB0ci5oPgorCitXZWJQcm9jZXNzVGVzdFJ1
bm5lcjo6V2ViUHJvY2Vzc1Rlc3RSdW5uZXIoKQorICAgIDogbV9tYWluTG9vcChnX21haW5fbG9v
cF9uZXcoMCwgVFJVRSkpCisgICAgLCBtX2J1cyhhZG9wdEdSZWYoZ190ZXN0X2RidXNfbmV3KEdf
VEVTVF9EQlVTX05PTkUpKSkKK3sKKyAgICBnX3Rlc3RfZGJ1c191cChtX2J1cy5nZXQoKSk7Cisg
ICAgbV9jb25uZWN0aW9uID0gYWRvcHRHUmVmKGdfYnVzX2dldF9zeW5jKEdfQlVTX1RZUEVfU0VT
U0lPTiwgMCwgMCkpOworfQorCitXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6fldlYlByb2Nlc3NUZXN0
UnVubmVyKCkKK3sKKyAgICBnX21haW5fbG9vcF91bnJlZihtX21haW5Mb29wKTsKKworICAgIC8v
IGdfdGVzdF9kYnVzX2Rvd24gd2FpdHMgdW50aWwgdGhlIGNvbm5lY3Rpb24gaXMgZnJlZWQsIHNv
IHJlbGVhc2Ugb3VyIHJlZnMgZXhwbGljaXRseSBiZWZvcmUgY2FsbGluZyBpdC4KKyAgICBtX2Nv
bm5lY3Rpb24gPSAwOworICAgIG1fcHJveHkgPSAwOworICAgIGdfdGVzdF9kYnVzX2Rvd24obV9i
dXMuZ2V0KCkpOworfQorCit2b2lkIFdlYlByb2Nlc3NUZXN0UnVubmVyOjpwcm94eUNyZWF0ZWRD
YWxsYmFjayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIFdlYlByb2Nlc3NUZXN0UnVu
bmVyKiB0ZXN0UnVubmVyKQoreworICAgIHRlc3RSdW5uZXItPm1fcHJveHkgPSBhZG9wdEdSZWYo
Z19kYnVzX3Byb3h5X25ld19maW5pc2gocmVzdWx0LCAwKSk7CisgICAgZ19tYWluX2xvb3BfcXVp
dCh0ZXN0UnVubmVyLT5tX21haW5Mb29wKTsKK30KKworR0RCdXNQcm94eSogV2ViUHJvY2Vzc1Rl
c3RSdW5uZXI6OnByb3h5KCkKK3sKKyAgICBpZiAobV9wcm94eSkKKyAgICAgICAgcmV0dXJuIG1f
cHJveHkuZ2V0KCk7CisKKyAgICBnX2RidXNfcHJveHlfbmV3KG1fY29ubmVjdGlvbi5nZXQoKSwg
R19EQlVTX1BST1hZX0ZMQUdTX0RPX05PVF9BVVRPX1NUQVJULCAwLAorICAgICAgICAib3JnLndl
YmtpdC5ndGsuV2ViUHJvY2Vzc1Rlc3QiLCAiL29yZy93ZWJraXQvZ3RrL1dlYlByb2Nlc3NUZXN0
IiwgIm9yZy53ZWJraXQuZ3RrLldlYlByb2Nlc3NUZXN0IiwKKyAgICAgICAgMCwgcmVpbnRlcnBy
ZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6cHJveHlD
cmVhdGVkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX21haW5fbG9vcF9ydW4obV9tYWluTG9vcCk7
CisgICAgZ19hc3NlcnQobV9wcm94eS5nZXQoKSk7CisKKyAgICByZXR1cm4gbV9wcm94eS5nZXQo
KTsKK30KKwordm9pZCBXZWJQcm9jZXNzVGVzdFJ1bm5lcjo6b25OYW1lQXBwZWFyZWQoR0RCdXND
b25uZWN0aW9uKiwgY29uc3QgY2hhciosIGNvbnN0IGNoYXIqLCBncG9pbnRlciB1c2VyRGF0YSkK
K3sKKyAgICBXZWJQcm9jZXNzVGVzdFJ1bm5lciogdGVzdFJ1bm5lciA9IHN0YXRpY19jYXN0PFdl
YlByb2Nlc3NUZXN0UnVubmVyKj4odXNlckRhdGEpOworICAgIGdfbWFpbl9sb29wX3F1aXQodGVz
dFJ1bm5lci0+bV9tYWluTG9vcCk7Cit9CisKK3ZvaWQgV2ViUHJvY2Vzc1Rlc3RSdW5uZXI6Om9u
TmFtZVZhbmlzaGVkKEdEQnVzQ29ubmVjdGlvbiosIGNvbnN0IGNoYXIqIG5hbWUsIGdwb2ludGVy
IHVzZXJEYXRhKQoreworICAgIF9leGl0KDEpOworfQorCit2b2lkIFdlYlByb2Nlc3NUZXN0UnVu
bmVyOjp0ZXN0RmluaXNoZWRDYWxsYmFjayhHREJ1c1Byb3h5KiBwcm94eSwgR0FzeW5jUmVzdWx0
KiByZXN1bHQsIFdlYlByb2Nlc3NUZXN0UnVubmVyKiB0ZXN0UnVubmVyKQoreworICAgIEdSZWZQ
dHI8R1ZhcmlhbnQ+IHJldHVyblZhbHVlID0gYWRvcHRHUmVmKGdfZGJ1c19wcm94eV9jYWxsX2Zp
bmlzaChwcm94eSwgcmVzdWx0LCAwKSk7CisgICAgZ19hc3NlcnQocmV0dXJuVmFsdWUuZ2V0KCkp
OworICAgIGdib29sZWFuIHRlc3RSZXN1bHQ7CisgICAgZ192YXJpYW50X2dldChyZXR1cm5WYWx1
ZS5nZXQoKSwgIihiKSIsICZ0ZXN0UmVzdWx0KTsKKyAgICB0ZXN0UnVubmVyLT5maW5pc2hUZXN0
KHRlc3RSZXN1bHQpOworfQorCitib29sIFdlYlByb2Nlc3NUZXN0UnVubmVyOjpydW5UZXN0KGNv
bnN0IGNoYXIqIHN1aXRlTmFtZSwgY29uc3QgY2hhciogdGVzdE5hbWUsIEdWYXJpYW50KiBhcmdz
KQoreworICAgIGdfYXNzZXJ0KGdfdmFyaWFudF9pc19vZl90eXBlKGFyZ3MsIEdfVkFSSUFOVF9U
WVBFX1ZBUkRJQ1QpKTsKKworICAgIHVuc2lnbmVkIHdhdGNoZXJJRCA9IGdfYnVzX3dhdGNoX25h
bWVfb25fY29ubmVjdGlvbihtX2Nvbm5lY3Rpb24uZ2V0KCksICJvcmcud2Via2l0Lmd0ay5XZWJQ
cm9jZXNzVGVzdCIsIEdfQlVTX05BTUVfV0FUQ0hFUl9GTEFHU19OT05FLAorICAgICAgICBXZWJQ
cm9jZXNzVGVzdFJ1bm5lcjo6b25OYW1lQXBwZWFyZWQsIFdlYlByb2Nlc3NUZXN0UnVubmVyOjpv
bk5hbWVWYW5pc2hlZCwgdGhpcywgMCk7CisgICAgZ19tYWluX2xvb3BfcnVuKG1fbWFpbkxvb3Ap
OworCisgICAgbV90ZXN0UmVzdWx0ID0gZmFsc2U7CisgICAgR093blB0cjxjaGFyPiB0ZXN0UGF0
aChnX3N0cmR1cF9wcmludGYoIiVzLyVzIiwgc3VpdGVOYW1lLCB0ZXN0TmFtZSkpOworICAgIGdf
ZGJ1c19wcm94eV9jYWxsKAorICAgICAgICBwcm94eSgpLAorICAgICAgICAiUnVuVGVzdCIsCisg
ICAgICAgIGdfdmFyaWFudF9uZXcoIihzQGF7c3Z9KSIsIHRlc3RQYXRoLmdldCgpLCBhcmdzKSwK
KyAgICAgICAgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwKKyAgICAgICAgLTEsIDAsCisgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4oV2ViUHJvY2Vzc1Rlc3RSdW5u
ZXI6OnRlc3RGaW5pc2hlZENhbGxiYWNrKSwKKyAgICAgICAgdGhpcyk7CisgICAgZ19tYWluX2xv
b3BfcnVuKG1fbWFpbkxvb3ApOworICAgIGdfYnVzX3Vud2F0Y2hfbmFtZSh3YXRjaGVySUQpOwor
CisgICAgcmV0dXJuIG1fdGVzdFJlc3VsdDsKK30KKwordm9pZCBXZWJQcm9jZXNzVGVzdFJ1bm5l
cjo6ZmluaXNoVGVzdChib29sIHJlc3VsdCkKK3sKKyAgICBtX3Rlc3RSZXN1bHQgPSByZXN1bHQ7
CisgICAgZ19tYWluX2xvb3BfcXVpdChtX21haW5Mb29wKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1dlYlByb2Nlc3NUZXN0UnVubmVyLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJQcm9jZXNzVGVzdFJ1
bm5lci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0MGZhOTYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9XZWJQ
cm9jZXNzVGVzdFJ1bm5lci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBXZWJQcm9jZXNzVGVzdFJ1bm5lcl9oCisjZGVmaW5l
IFdlYlByb2Nlc3NUZXN0UnVubmVyX2gKKworI2luY2x1ZGUgPGdpby9naW8uaD4KKyNpbmNsdWRl
IDx3ZWJraXQyL3dlYmtpdDIuaD4KKyNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CisK
K2NsYXNzIFdlYlByb2Nlc3NUZXN0UnVubmVyIHsKK3B1YmxpYzoKKyAgICBXZWJQcm9jZXNzVGVz
dFJ1bm5lcigpOworICAgIH5XZWJQcm9jZXNzVGVzdFJ1bm5lcigpOworCisgICAgYm9vbCBydW5U
ZXN0KGNvbnN0IGNoYXIqIHN1aXRlTmFtZSwgY29uc3QgY2hhciogdGVzdE5hbWUsIEdWYXJpYW50
KiBhcmdzKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCBwcm94eUNyZWF0ZWRDYWxsYmFj
ayhHT2JqZWN0KiwgR0FzeW5jUmVzdWx0KiwgV2ViUHJvY2Vzc1Rlc3RSdW5uZXIqKTsKKyAgICBz
dGF0aWMgdm9pZCBvbk5hbWVBcHBlYXJlZChHREJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBjaGFyKiwg
Y29uc3QgY2hhciosIGdwb2ludGVyKTsKKyAgICBzdGF0aWMgdm9pZCBvbk5hbWVWYW5pc2hlZChH
REJ1c0Nvbm5lY3Rpb24qLCBjb25zdCBjaGFyKiwgZ3BvaW50ZXIpOworICAgIHN0YXRpYyB2b2lk
IHRlc3RGaW5pc2hlZENhbGxiYWNrKEdEQnVzUHJveHkqLCBHQXN5bmNSZXN1bHQqLCBXZWJQcm9j
ZXNzVGVzdFJ1bm5lciopOworCisgICAgR0RCdXNQcm94eSogcHJveHkoKTsKKyAgICB2b2lkIGZp
bmlzaFRlc3QoYm9vbCByZXN1bHQpOworCisgICAgR01haW5Mb29wKiBtX21haW5Mb29wOworICAg
IEdSZWZQdHI8R1Rlc3REQnVzPiBtX2J1czsKKyAgICBHUmVmUHRyPEdEQnVzQ29ubmVjdGlvbj4g
bV9jb25uZWN0aW9uOworICAgIEdSZWZQdHI8R0RCdXNQcm94eT4gbV9wcm94eTsKKyAgICBib29s
IG1fdGVzdFJlc3VsdDsKK307CisKKyNlbmRpZiAvLyBXZWJQcm9jZXNzVGVzdFJ1bm5lcl9oCg==
</data>
<flag name="review"
          id="227827"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>