From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Julian Graham" Newsgroups: gmane.lisp.guile.devel Subject: Re: srfi-18 requirements Date: Thu, 15 May 2008 01:05:34 -0400 Message-ID: <2bc5f8210805142205o4bfd13f1x5f449a7ad6b64700@mail.gmail.com> References: <2bc5f8210710101854m1254160ei451026182b87e767@mail.gmail.com> <87bq5pb2ea.fsf@ossau.uklinux.net> <2bc5f8210803102102p31da06b5jfa7807bb727907a7@mail.gmail.com> <87myonlqys.fsf@ossau.uklinux.net> <2bc5f8210803260855m2f1a8295v5b9becfa615c7a8d@mail.gmail.com> <877iffssdn.fsf@ossau.uklinux.net> <2bc5f8210804031207s25be680aj99b50eaa1d66b6d7@mail.gmail.com> <87tziaogxp.fsf@ossau.uklinux.net> <2bc5f8210804131743p10e3a24bu15a4fb1985f72d1b@mail.gmail.com> <87ve1gscpj.fsf@ossau.uklinux.net> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_6103_12421095.1210827934668" X-Trace: ger.gmane.org 1210828009 5932 80.91.229.12 (15 May 2008 05:06:49 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 15 May 2008 05:06:49 +0000 (UTC) Cc: =?ISO-8859-1?Q?Ludovic_Court=E8s?= , guile-devel@gnu.org To: "Neil Jerram" Original-X-From: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Thu May 15 07:07:23 2008 Return-path: Envelope-to: guile-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1JwVgQ-0000Ft-Jl for guile-devel@m.gmane.org; Thu, 15 May 2008 07:07:20 +0200 Original-Received: from localhost ([127.0.0.1]:50709 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JwVfg-00068C-Qg for guile-devel@m.gmane.org; Thu, 15 May 2008 01:06:28 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JwVeu-0005cG-QO for guile-devel@gnu.org; Thu, 15 May 2008 01:05:40 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JwVes-0005aj-Sr for guile-devel@gnu.org; Thu, 15 May 2008 01:05:39 -0400 Original-Received: from [199.232.76.173] (port=34188 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JwVes-0005a1-DG for guile-devel@gnu.org; Thu, 15 May 2008 01:05:38 -0400 Original-Received: from fg-out-1718.google.com ([72.14.220.155]:7557) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JwVeq-00056D-S0 for guile-devel@gnu.org; Thu, 15 May 2008 01:05:37 -0400 Original-Received: by fg-out-1718.google.com with SMTP id l26so303239fgb.30 for ; Wed, 14 May 2008 22:05:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; bh=AK+NB2RbliST8C69L6hpNq/q00jKrmmvjqiDNHBAq5E=; b=Cp0dV6IU9rJ0tXGHRs0bG1aLmXIC0mxVzyk2Na0qR8LqoMB2QDhGB6+J/5Xj7wIzEua2dXdN7vnpOn0366L3yoCak3L59fSDlzWbSiSsr6Z6Qt4Gt/OPRitETCIbwwrz8kyx1LRHBSMWhF+liViwWgIyR7yOzcjV/ArH6c8rq9M= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=p2Y+bkfCSK3X62rkqPIAgY039MODToH1OO/lECUMno1L2tbvsov4Niq2a9ACXYn/Z4d3fOWZZ/HdV0S0AHOpbD9Jm2LHcnUMTfw5Wl5XY/cg2FOxBOOvku2Lr6IIdT7oDTKdUssVDjmUgjAowNJQ5PAbzOBRTbaTvcLbTrog4lM= Original-Received: by 10.82.124.10 with SMTP id w10mr265088buc.18.1210827934704; Wed, 14 May 2008 22:05:34 -0700 (PDT) Original-Received: by 10.82.100.3 with HTTP; Wed, 14 May 2008 22:05:34 -0700 (PDT) In-Reply-To: <87ve1gscpj.fsf@ossau.uklinux.net> X-detected-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 2) X-BeenThere: guile-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Developers list for Guile, the GNU extensibility library" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Errors-To: guile-devel-bounces+guile-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.devel:7250 Archived-At: ------=_Part_6103_12421095.1210827934668 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi Neil, > I haven't covered these yet. Will try to soon, but could you resubmit > anyway as a GIT commit patch, so that you end up being properly > credited for the commit? Yes -- find one attached. As an aside, I've been having some difficulty with git, specifically when it comes to backing out commits that I've created prematurely (e.g., without git-adding the ChangeLogs). Do you guys have any recommendations for tools that add a bit of sugar to the interface, or do I just have to buckle down and learn the thing? > Should m->level be set to 1 here? Can I take it you're talking about the case in which a thread is taking over an abandoned mutex that may have been locked more than once, recursively, by the exited thread? If so, yes -- m->level should definitely be set back to 1. Thanks for catching that! > Regards, and thanks once again for your work on this area! My pleasure! Thank you for your continued patience. Regards, Julian ------=_Part_6103_12421095.1210827934668 Content-Type: text/x-diff; name=0001-Scheme-SRFI-18-implementation-and-tests-file.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fg8vhy4j0 Content-Disposition: attachment; filename=0001-Scheme-SRFI-18-implementation-and-tests-file.patch RnJvbSA3NWU1ZTVjN2FhZDc4ODc2ZmI5ZTRhMmMxNTIzNDkxZjU4OTg1OTE3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKdWxpYW4gR3JhaGFtIDxqdWxpYW5Ac21va2Vib3R0bGUuKG5v bmUpPgpEYXRlOiBUaHUsIDE1IE1heSAyMDA4IDAwOjUwOjUwIC0wNDAwClN1YmplY3Q6IFtQQVRD SF0gU2NoZW1lIFNSRkktMTggaW1wbGVtZW50YXRpb24gYW5kIHRlc3RzIGZpbGUKCi0tLQogc3Jm aS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgfCAgICA0ICsKIHNyZmkvc3JmaS0xOC5zY20gICAg ICAgICAgICAgIHwgIDM3OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdGVzdC1z dWl0ZS9DaGFuZ2VMb2cgICAgICAgICAgfCAgICA0ICsKIHRlc3Qtc3VpdGUvdGVzdHMvc3JmaS0x OC50ZXN0IHwgIDQ3NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwog NCBmaWxlcyBjaGFuZ2VkLCA4NjQgaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmZpL3NyZmktMTguc2NtCiBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdC1z dWl0ZS90ZXN0cy9zcmZpLTE4LnRlc3QKCmRpZmYgLS1naXQgYS9zcmZpL0NoYW5nZUxvZyBiL3Ny ZmkvQ2hhbmdlTG9nCmluZGV4IDFmNmM1OTkuLmZlODg2NjUgMTAwNjQ0Ci0tLSBhL3NyZmkvQ2hh bmdlTG9nCisrKyBiL3NyZmkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNyBAQAorMjAwOC0wNS0xNSAg SnVsaWFuIEdyYWhhbSAgPGpvb2xlYW5AZ21haWwuY29tPgorCisJKiBzcmZpLTE4LnNjbTogTmV3 IGZpbGUuCisKIDIwMDgtMDQtMjggIEx1ZG92aWMgQ291cnTDqHMgIDxsdWRvQGdudS5vcmc+CiAK IAkqIHNyZmktMS5jIChzY21fc3JmaTFfcGFydGl0aW9uKTogUHJvcGVybHkgdHlwZS1jaGVjayBM SVNULgpkaWZmIC0tZ2l0IGEvc3JmaS9zcmZpLTE4LnNjbSBiL3NyZmkvc3JmaS0xOC5zY20KbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU5M2Y0ZQotLS0gL2Rldi9udWxsCisr KyBiL3NyZmkvc3JmaS0xOC5zY20KQEAgLTAsMCArMSwzNzkgQEAKKzs7OyBzcmZpLTE4LnNjbSAt LS0gTXVsdGl0aHJlYWRpbmcgc3VwcG9ydAorCis7OyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCis7OworOzsgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorOzsgbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworOzsgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCis7OyB2 ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKzs7IAorOzsgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCis7OyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorOzsgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKzs7IExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCis7OyAKKzs7IFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs aWMKKzs7IExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8g dGhlIEZyZWUgU29mdHdhcmUKKzs7IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl dCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKworOzs7IEF1dGhvcjog SnVsaWFuIEdyYWhhbSA8anVsaWFuLmdyYWhhbUBheWEueWFsZS5lZHU+Cis7OzsgRGF0ZTogMjAw OC0wNC0xMQorCis7OzsgQ29tbWVudGFyeToKKworOzsgVGhpcyBpcyBhbiBpbXBsZW1lbnRhdGlv biBvZiBTUkZJLTE4IChNdWx0aXRocmVhZGluZyBzdXBwb3J0KS4KKzs7Cis7OyBBbGwgcHJvY2Vk dXJlcyBkZWZpbmVkIGluIFNSRkktMTgsIHdoaWNoIGFyZSBub3QgYWxyZWFkeSBkZWZpbmVkIGlu Cis7OyB0aGUgR3VpbGUgY29yZSBsaWJyYXJ5LCBhcmUgZXhwb3J0ZWQuCis7OworOzsgVGhpcyBt b2R1bGUgaXMgZnVsbHkgZG9jdW1lbnRlZCBpbiB0aGUgR3VpbGUgUmVmZXJlbmNlIE1hbnVhbC4K KworOzs7IENvZGU6CisKKyhkZWZpbmUtbW9kdWxlIChzcmZpIHNyZmktMTgpCisgIDp1c2UtbW9k dWxlIChzcmZpIHNyZmktMzQpCisgIDpleHBvcnQgKAorCis7OzsgVGhyZWFkcworIDs7IGN1cnJl bnQtdGhyZWFkCQkJPD0gaW4gdGhlIGNvcmUKKyA7OyB0aHJlYWQ/CQkJCTw9IGluIHRoZSBjb3Jl CisgbWFrZS10aHJlYWQKKyB0aHJlYWQtbmFtZQorIHRocmVhZC1zcGVjaWZpYworIHRocmVhZC1z cGVjaWZpYy1zZXQhCisgdGhyZWFkLXN0YXJ0IQorIHRocmVhZC15aWVsZCEKKyB0aHJlYWQtc2xl ZXAhCisgdGhyZWFkLXRlcm1pbmF0ZSEKKyB0aHJlYWQtam9pbiEKKworOzs7IE11dGV4ZXMKKyA7 OyBtdXRleD8JCQkJPD0gaW4gdGhlIGNvcmUKKyBtYWtlLW11dGV4CisgbXV0ZXgtbmFtZQorIG11 dGV4LXNwZWNpZmljCisgbXV0ZXgtc3BlY2lmaWMtc2V0IQorIG11dGV4LXN0YXRlCisgbXV0ZXgt bG9jayEKKyBtdXRleC11bmxvY2shCisKKzs7OyBDb25kaXRpb24gdmFyaWFibGVzCisgOzsgY29u ZGl0aW9uLXZhcmlhYmxlPwkJCTw9IGluIHRoZSBjb3JlCisgbWFrZS1jb25kaXRpb24tdmFyaWFi bGUKKyBjb25kaXRpb24tdmFyaWFibGUtbmFtZQorIGNvbmRpdGlvbi12YXJpYWJsZS1zcGVjaWZp YworIGNvbmRpdGlvbi12YXJpYWJsZS1zcGVjaWZpYy1zZXQhCisgY29uZGl0aW9uLXZhcmlhYmxl LXNpZ25hbCEKKyBjb25kaXRpb24tdmFyaWFibGUtYnJvYWRjYXN0IQorIGNvbmRpdGlvbi12YXJp YWJsZS13YWl0IQorCis7OzsgVGltZQorIGN1cnJlbnQtdGltZQorIHRpbWU/CisgdGltZS0+c2Vj b25kcworIHNlY29uZHMtPnRpbWUKKyAKKyBjdXJyZW50LWV4Y2VwdGlvbi1oYW5kbGVyCisgd2l0 aC1leGNlcHRpb24taGFuZGxlcgorIHJhaXNlCisgam9pbi10aW1lb3V0LWV4Y2VwdGlvbj8KKyBh YmFuZG9uZWQtbXV0ZXgtZXhjZXB0aW9uPworIHRlcm1pbmF0ZWQtdGhyZWFkLWV4Y2VwdGlvbj8K KyB1bmNhdWdodC1leGNlcHRpb24/CisgdW5jYXVnaHQtZXhjZXB0aW9uLXJlYXNvbgorICkKKyAg OnJlLWV4cG9ydCAodGhyZWFkPyBtdXRleD8gY29uZGl0aW9uLXZhcmlhYmxlPykKKyAgOnJlcGxh Y2UgKGN1cnJlbnQtdGltZSAKKwkgICAgbWFrZS10aHJlYWQgCisJICAgIG1ha2UtbXV0ZXggCisJ ICAgIG1ha2UtY29uZGl0aW9uLXZhcmlhYmxlCisJICAgIHJhaXNlKSkKKworKGNvbmQtZXhwYW5k LXByb3ZpZGUgKGN1cnJlbnQtbW9kdWxlKSAnKHNyZmktMTgpKQorCisoZGVmaW5lIChjaGVjay1h cmctdHlwZSBwcmVkIGFyZyBjYWxsZXIpCisgIChpZiAocHJlZCBhcmcpCisgICAgICBhcmcKKyAg ICAgIChzY20tZXJyb3IgJ3dyb25nLXR5cGUtYXJnIGNhbGxlcgorCQkgIldyb25nIHR5cGUgYXJn dW1lbnQ6IH5TIiAobGlzdCBhcmcpICcoKSkpKQorCisoZGVmaW5lIGFiYW5kb25lZC1tdXRleC1l eGNlcHRpb24gKGxpc3QgJ2FiYW5kb25lZC1tdXRleC1leGNlcHRpb24pKQorKGRlZmluZSBqb2lu LXRpbWVvdXQtZXhjZXB0aW9uIChsaXN0ICdqb2luLXRpbWVvdXQtZXhjZXB0aW9uKSkKKyhkZWZp bmUgdGVybWluYXRlZC10aHJlYWQtZXhjZXB0aW9uIChsaXN0ICd0ZXJtaW5hdGVkLXRocmVhZC1l eGNlcHRpb24pKQorKGRlZmluZSB1bmNhdWdodC1leGNlcHRpb24gKGxpc3QgJ3VuY2F1Z2h0LWV4 Y2VwdGlvbikpCisKKyhkZWZpbmUgbXV0ZXgtb3duZXJzIChtYWtlLXdlYWsta2V5LWhhc2gtdGFi bGUpKQorKGRlZmluZSBvYmplY3QtbmFtZXMgKG1ha2Utd2Vhay1rZXktaGFzaC10YWJsZSkpCiso ZGVmaW5lIG9iamVjdC1zcGVjaWZpY3MgKG1ha2Utd2Vhay1rZXktaGFzaC10YWJsZSkpCisoZGVm aW5lIHRocmVhZC1zdGFydC1jb25kcyAobWFrZS13ZWFrLWtleS1oYXNoLXRhYmxlKSkKKyhkZWZp bmUgdGhyZWFkLWV4Y2VwdGlvbi1oYW5kbGVycyAobWFrZS13ZWFrLWtleS1oYXNoLXRhYmxlKSkK KworOzsgRVhDRVBUSU9OUworCisoZGVmaW5lIHJhaXNlIChAIChzcmZpIHNyZmktMzQpIHJhaXNl KSkKKyhkZWZpbmUgKGluaXRpYWwtaGFuZGxlciBvYmopIAorICAoc3JmaS0xOC1leGNlcHRpb24t cHJlc2VydmVyIChjb25zIHVuY2F1Z2h0LWV4Y2VwdGlvbiBvYmopKSkKKworKGRlZmluZSB0aHJl YWQtPmV4Y2VwdGlvbiAobWFrZS1vYmplY3QtcHJvcGVydHkpKQorCisoZGVmaW5lIChzcmZpLTE4 LWV4Y2VwdGlvbi1wcmVzZXJ2ZXIgb2JqKQorICAoaWYgKG9yICh0ZXJtaW5hdGVkLXRocmVhZC1l eGNlcHRpb24/IG9iaikKKyAgICAgICAgICAodW5jYXVnaHQtZXhjZXB0aW9uPyBvYmopKQorICAg ICAgKHNldCEgKHRocmVhZC0+ZXhjZXB0aW9uIChjdXJyZW50LXRocmVhZCkpIG9iaikpKQorCiso ZGVmaW5lIChzcmZpLTE4LWV4Y2VwdGlvbi1oYW5kbGVyIGtleSAuIGFyZ3MpCisKKyAgOzsgU1JG SSAzNCBleGNlcHRpb25zIGNvbnRpbnVlIHRvIGJ1YmJsZSB1cCBubyBtYXR0ZXIgd2hvIGhhbmRs ZXMgdGhlbSwgc28KKyAgOzsgaWYgb25lIGlzIGNhdWdodCBhdCB0aGlzIGxldmVsLCBpdCBoYXMg YWxyZWFkeSBiZWVuIHRha2VuIGNhcmUgb2YgYnkKKyAgOzsgYGluaXRpYWwtaGFuZGxlcicuCisK KyAgKGFuZCAobm90IChlcT8ga2V5ICdzcmZpLTM0KSkKKyAgICAgICAoc3JmaS0xOC1leGNlcHRp b24tcHJlc2VydmVyIChpZiAobnVsbD8gYXJncykgCisJCQkJCShjb25zIHVuY2F1Z2h0LWV4Y2Vw dGlvbiBrZXkpCisJCQkJCShjb25zKiB1bmNhdWdodC1leGNlcHRpb24ga2V5IGFyZ3MpKSkpKQor CisoZGVmaW5lIChjdXJyZW50LWhhbmRsZXItc3RhY2spCisgIChsZXQgKChjdCAoY3VycmVudC10 aHJlYWQpKSkKKyAgICAob3IgKGhhc2hxLXJlZiB0aHJlYWQtZXhjZXB0aW9uLWhhbmRsZXJzIGN0 KQorCShoYXNocS1zZXQhIHRocmVhZC1leGNlcHRpb24taGFuZGxlcnMgY3QgKGxpc3QgaW5pdGlh bC1oYW5kbGVyKSkpKSkKKworKGRlZmluZSAod2l0aC1leGNlcHRpb24taGFuZGxlciBoYW5kbGVy IHRodW5rKQorICAobGV0ICgoY3QgKGN1cnJlbnQtdGhyZWFkKSkKKyAgICAgICAgKGhsIChjdXJy ZW50LWhhbmRsZXItc3RhY2spKSkKKyAgICAoY2hlY2stYXJnLXR5cGUgcHJvY2VkdXJlPyBoYW5k bGVyICJ3aXRoLWV4Y2VwdGlvbi1oYW5kbGVyIikgCisgICAgKGNoZWNrLWFyZy10eXBlIHRodW5r PyB0aHVuayAid2l0aC1leGNlcHRpb24taGFuZGxlciIpCisgICAgKGhhc2hxLXNldCEgdGhyZWFk LWV4Y2VwdGlvbi1oYW5kbGVycyBjdCAoY29ucyBoYW5kbGVyIGhsKSkKKyAgICAoYXBwbHkgKEAg KHNyZmkgc3JmaS0zNCkgd2l0aC1leGNlcHRpb24taGFuZGxlcikgCisgICAgICAgICAgIChsaXN0 IChsYW1iZGEgKG9iaikKKyAgICAgICAgICAgICAgICAgICAoaGFzaHEtc2V0ISB0aHJlYWQtZXhj ZXB0aW9uLWhhbmRsZXJzIGN0IGhsKSAKKyAgICAgICAgICAgICAgICAgICAoaGFuZGxlciBvYmop KQorICAgICAgICAgICAgICAgICAobGFtYmRhICgpIAorICAgICAgICAgICAgICAgICAgIChsZXQg KChyICh0aHVuaykpKQorICAgICAgICAgICAgICAgICAgICAgKGhhc2hxLXNldCEgdGhyZWFkLWV4 Y2VwdGlvbi1oYW5kbGVycyBjdCBobCkgcikpKSkpKQorCisoZGVmaW5lIChjdXJyZW50LWV4Y2Vw dGlvbi1oYW5kbGVyKQorICAoY2FyIChjdXJyZW50LWhhbmRsZXItc3RhY2spKSkKKworKGRlZmlu ZSAoam9pbi10aW1lb3V0LWV4Y2VwdGlvbj8gb2JqKSAoZXE/IG9iaiBqb2luLXRpbWVvdXQtZXhj ZXB0aW9uKSkKKyhkZWZpbmUgKGFiYW5kb25lZC1tdXRleC1leGNlcHRpb24/IG9iaikgKGVxPyBv YmogYWJhbmRvbmVkLW11dGV4LWV4Y2VwdGlvbikpCisoZGVmaW5lICh1bmNhdWdodC1leGNlcHRp b24/IG9iaikgCisgIChhbmQgKHBhaXI/IG9iaikgKGVxPyAoY2FyIG9iaikgdW5jYXVnaHQtZXhj ZXB0aW9uKSkpCisoZGVmaW5lICh1bmNhdWdodC1leGNlcHRpb24tcmVhc29uIGV4YykKKyAgKGNk ciAoY2hlY2stYXJnLXR5cGUgdW5jYXVnaHQtZXhjZXB0aW9uPyBleGMgInVuY2F1Z2h0LWV4Y2Vw dGlvbi1yZWFzb24iKSkpCisoZGVmaW5lICh0ZXJtaW5hdGVkLXRocmVhZC1leGNlcHRpb24/IG9i aikgCisgIChlcT8gb2JqIHRlcm1pbmF0ZWQtdGhyZWFkLWV4Y2VwdGlvbikpCisKKzs7IFRIUkVB RFMKKworOzsgQ3JlYXRlIGEgbmV3IHRocmVhZCBhbmQgcHJldmVudCBpdCBmcm9tIHN0YXJ0aW5n IHVzaW5nIGEgY29uZGl0aW9uIHZhcmlhYmxlLgorOzsgT25jZSBzdGFydGVkLCBpbnN0YWxsIGEg dG9wLWxldmVsIGV4Y2VwdGlvbiBoYW5kbGVyIHRoYXQgcmV0aHJvd3MgYW55IAorOzsgZXhjZXB0 aW9ucyB3cmFwcGVkIGluIGFuIHVuY2F1Z2h0LWV4Y2VwdGlvbiB3cmFwcGVyLiAKKworKGRlZmlu ZSBtYWtlLXRocmVhZCAKKyAgKGxldCAoKG1ha2UtY29uZC13cmFwcGVyIChsYW1iZGEgKHRodW5r IGxjb25kIGxtdXRleCBzY29uZCBzbXV0ZXgpCisJCQkgICAgIChsYW1iZGEgKCkgCisJCQkgICAg ICAgKGxvY2stbXV0ZXggbG11dGV4KQorCQkJICAgICAgIChzaWduYWwtY29uZGl0aW9uLXZhcmlh YmxlIGxjb25kKQorCQkJICAgICAgIChsb2NrLW11dGV4IHNtdXRleCkKKwkJCSAgICAgICAodW5s b2NrLW11dGV4IGxtdXRleCkKKwkJCSAgICAgICAod2FpdC1jb25kaXRpb24tdmFyaWFibGUgc2Nv bmQgc211dGV4KQorCQkJICAgICAgICh1bmxvY2stbXV0ZXggc211dGV4KQorCQkJICAgICAgICh3 aXRoLWV4Y2VwdGlvbi1oYW5kbGVyIGluaXRpYWwtaGFuZGxlciAKKwkJCQkJCSAgICAgICB0aHVu aykpKSkpCisgICAgKGxhbWJkYSAodGh1bmsgLiBuYW1lKQorICAgICAgKGxldCAoKG4gKGFuZCAo cGFpcj8gbmFtZSkgKGNhciBuYW1lKSkpCisKKwkgICAgKGxtIChtYWtlLW11dGV4ICdsYXVuY2gt bXV0ZXgpKQorCSAgICAobGMgKG1ha2UtY29uZGl0aW9uLXZhcmlhYmxlICdsYXVuY2gtY29uZGl0 aW9uLXZhcmlhYmxlKSkKKwkgICAgKHNtIChtYWtlLW11dGV4ICdzdGFydC1tdXRleCkpCisJICAg IChzYyAobWFrZS1jb25kaXRpb24tdmFyaWFibGUgJ3N0YXJ0LWNvbmRpdGlvbi12YXJpYWJsZSkp KQorCQorCShsb2NrLW11dGV4IGxtKQorCShsZXQgKCh0IChjYWxsLXdpdGgtbmV3LXRocmVhZCAo bWFrZS1jb25kLXdyYXBwZXIgdGh1bmsgbGMgbG0gc2Mgc20pCisJCQkJICAgICAgIHNyZmktMTgt ZXhjZXB0aW9uLWhhbmRsZXIpKSkKKwkgIChoYXNocS1zZXQhIHRocmVhZC1zdGFydC1jb25kcyB0 IChjb25zIHNtIHNjKSkKKwkgIChhbmQgbiAoaGFzaHEtc2V0ISBvYmplY3QtbmFtZXMgdCBuKSkK KwkgICh3YWl0LWNvbmRpdGlvbi12YXJpYWJsZSBsYyBsbSkKKwkgICh1bmxvY2stbXV0ZXggbG0p CisJICB0KSkpKSkKKworKGRlZmluZSAodGhyZWFkLW5hbWUgdGhyZWFkKQorICAoaGFzaHEtcmVm IG9iamVjdC1uYW1lcyAoY2hlY2stYXJnLXR5cGUgdGhyZWFkPyB0aHJlYWQgInRocmVhZC1uYW1l IikpKQorCisoZGVmaW5lICh0aHJlYWQtc3BlY2lmaWMgdGhyZWFkKQorICAoaGFzaHEtcmVmIG9i amVjdC1zcGVjaWZpY3MgCisJICAgICAoY2hlY2stYXJnLXR5cGUgdGhyZWFkPyB0aHJlYWQgInRo cmVhZC1zcGVjaWZpYyIpKSkKKworKGRlZmluZSAodGhyZWFkLXNwZWNpZmljLXNldCEgdGhyZWFk IG9iaikKKyAgKGhhc2hxLXNldCEgb2JqZWN0LXNwZWNpZmljcworCSAgICAgIChjaGVjay1hcmct dHlwZSB0aHJlYWQ/IHRocmVhZCAidGhyZWFkLXNwZWNpZmljLXNldCEiKQorCSAgICAgIG9iaikK KyAgKnVuc3BlY2lmaWVkKikKKworKGRlZmluZSAodGhyZWFkLXN0YXJ0ISB0aHJlYWQpCisgIChs ZXQgKCh4IChoYXNocS1yZWYgdGhyZWFkLXN0YXJ0LWNvbmRzCisJCSAgICAgIChjaGVjay1hcmct dHlwZSB0aHJlYWQ/IHRocmVhZCAidGhyZWFkLXN0YXJ0ISIpKSkpCisgICAgKGFuZCB4IChsZXQg KChzbXV0ZXggKGNhciB4KSkKKwkJIChzY29uZCAoY2RyIHgpKSkKKwkgICAgIChoYXNocS1yZW1v dmUhIHRocmVhZC1zdGFydC1jb25kcyB0aHJlYWQpCisJICAgICAobG9jay1tdXRleCBzbXV0ZXgp CisJICAgICAoc2lnbmFsLWNvbmRpdGlvbi12YXJpYWJsZSBzY29uZCkKKwkgICAgICh1bmxvY2st bXV0ZXggc211dGV4KSkpCisgICAgdGhyZWFkKSkKKworKGRlZmluZSAodGhyZWFkLXlpZWxkISkg KHlpZWxkKSAqdW5zcGVjaWZpZWQqKQorCisoZGVmaW5lICh0aHJlYWQtc2xlZXAhIHRpbWVvdXQp CisgIChsZXQqICgoY3QgKHRpbWUtPnNlY29uZHMgKGN1cnJlbnQtdGltZSkpKQorCSAodCAoY29u ZCAoKHRpbWU/IHRpbWVvdXQpICgtICh0aW1lLT5zZWNvbmRzIHRpbWVvdXQpIGN0KSkKKwkJICAo KG51bWJlcj8gdGltZW91dCkgKC0gdGltZW91dCBjdCkpCisJCSAgKGVsc2UgKHNjbS1lcnJvciAn d3JvbmctdHlwZS1hcmcgY2FsbGVyCisJCQkJICAgIldyb25nIHR5cGUgYXJndW1lbnQ6IH5TIiAK KwkJCQkgICAobGlzdCB0aW1lb3V0KSAKKwkJCQkgICAnKCkpKSkpCisJIChzZWNzIChpbmV4YWN0 LT5leGFjdCAodHJ1bmNhdGUgdCkpKQorCSAodXNlY3MgKGluZXhhY3QtPmV4YWN0ICh0cnVuY2F0 ZSAoKiAoLSB0IHNlY3MpIDEwMDApKSkpKQorICAgIChhbmQgKD4gc2VjcyAwKSAoc2xlZXAgc2Vj cykpCisgICAgKGFuZCAoPiB1c2VjcyAwKSAodXNsZWVwIHVzZWNzKSkKKyAgICAqdW5zcGVjaWZp ZWQqKSkKKworOzsgQSBjb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgaW5zdGFsbGluZyBleGNlcHRp b24gaGFuZGxlcnMgb24gU1JGSS0xOCAKKzs7IHByaW1pdGl2ZXMgdGhhdCByZXN1bWUgdGhlIGNh bGxpbmcgY29udGludWF0aW9uIGFmdGVyIHRoZSBoYW5kbGVyIGlzIAorOzsgaW52b2tlZCAtLSB0 aGlzIHJlc29sdmVzIGEgYmVoYXZpb3JhbCBpbmNvbXBhdGliaWxpdHkgd2l0aCBHdWlsZSdzCis7 OyBpbXBsZW1lbnRhdGlvbiBvZiBTUkZJLTM0LCB3aGljaCB1c2VzIGxhenktY2F0Y2ggYW5kIHJl dGhyb3dzIGhhbmRsZWQKKzs7IGV4Y2VwdGlvbnMuICAoU1JGSS0xOCwgIlByaW1pdGl2ZXMgYW5k IGV4Y2VwdGlvbnMiKQorCisoZGVmaW5lICh3cmFwIHRodW5rKQorICAobGFtYmRhIChjb250aW51 YXRpb24pCisgICAgKHdpdGgtZXhjZXB0aW9uLWhhbmRsZXIgKGxhbWJkYSAob2JqKQorCQkJICAg ICAgKGFwcGx5IChjdXJyZW50LWV4Y2VwdGlvbi1oYW5kbGVyKSAobGlzdCBvYmopKQorCQkJICAg ICAgKGFwcGx5IGNvbnRpbnVhdGlvbiAobGlzdCkpKQorCQkJICAgIHRodW5rKSkpCisKKzs7IEEg cGFzcy10aHJ1IHRvIGNhbmNlbC10aHJlYWQgdGhhdCBmaXJzdCBpbnN0YWxscyBhIGhhbmRsZXIg dGhhdCB0aHJvd3MKKzs7IHRlcm1pbmF0ZWQtdGhyZWFkIGV4Y2VwdGlvbiwgYXMgcGVyIFNSRkkt MTgsIAorCisoZGVmaW5lICh0aHJlYWQtdGVybWluYXRlISB0aHJlYWQpCisgIChkZWZpbmUgKHRo cmVhZC10ZXJtaW5hdGUtaW5uZXIhKQorICAgIChsZXQgKChjdXJyZW50LWhhbmRsZXIgKHRocmVh ZC1jbGVhbnVwIHRocmVhZCkpKQorICAgICAgKGlmICh0aHVuaz8gY3VycmVudC1oYW5kbGVyKQor CSAgKHNldC10aHJlYWQtY2xlYW51cCEgdGhyZWFkIAorCQkJICAgICAgIChsYW1iZGEgKCkKKwkJ CQkgKHdpdGgtZXhjZXB0aW9uLWhhbmRsZXIgaW5pdGlhbC1oYW5kbGVyCisJCQkJCQkJIGN1cnJl bnQtaGFuZGxlcikgCisJCQkJIChzcmZpLTE4LWV4Y2VwdGlvbi1wcmVzZXJ2ZXIKKwkJCQkgIHRl cm1pbmF0ZWQtdGhyZWFkLWV4Y2VwdGlvbikpKQorCSAgKHNldC10aHJlYWQtY2xlYW51cCEgdGhy ZWFkCisJCQkgICAgICAgKGxhbWJkYSAoKSAoc3JmaS0xOC1leGNlcHRpb24tcHJlc2VydmVyCisJ CQkJCSAgIHRlcm1pbmF0ZWQtdGhyZWFkLWV4Y2VwdGlvbikpKSkKKyAgICAgIChjYW5jZWwtdGhy ZWFkIHRocmVhZCkKKyAgICAgICp1bnNwZWNpZmllZCopKQorICAodGhyZWFkLXRlcm1pbmF0ZS1p bm5lciEpKQorCisoZGVmaW5lICh0aHJlYWQtam9pbiEgdGhyZWFkIC4gYXJncykgCisgIChkZWZp bmUgdGhyZWFkLWpvaW4taW5uZXIhCisgICAgKHdyYXAgKGxhbWJkYSAoKQorCSAgICAobGV0ICgo diAoYXBwbHkgam9pbi10aHJlYWQgKGNvbnMgdGhyZWFkIGFyZ3MpKSkKKwkJICAoZSAodGhyZWFk LT5leGNlcHRpb24gdGhyZWFkKSkpCisJICAgICAgKGlmIChhbmQgKD0gKGxlbmd0aCBhcmdzKSAx KSAobm90IHYpKQorCQkgIChyYWlzZSBqb2luLXRpbWVvdXQtZXhjZXB0aW9uKSkKKwkgICAgICAo aWYgZSAocmFpc2UgZSkpCisJICAgICAgdikpKSkKKyAgKGNhbGwvY2MgdGhyZWFkLWpvaW4taW5u ZXIhKSkKKworOzsgTVVURVhFUworOzsgVGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgcGFzcy10aHJ1 cyB0byB0aGUgZXhpc3RpbmcgR3VpbGUgaW1wbGVtZW50YXRpb25zLgorCisoZGVmaW5lIG1ha2Ut bXV0ZXgKKyAgKGxhbWJkYSBuYW1lCisgICAgKGxldCAoKG4gKGFuZCAocGFpcj8gbmFtZSkgKGNh ciBuYW1lKSkpCisJICAobSAoKEAgKGd1aWxlKSBtYWtlLW11dGV4KSAKKwkgICAgICAndW5jaGVj a2VkLXVubG9jayAKKwkgICAgICAnYWxsb3ctZXh0ZXJuYWwtdW5sb2NrIAorCSAgICAgICdyZWN1 cnNpdmUpKSkKKyAgICAgIChhbmQgbiAoaGFzaHEtc2V0ISBvYmplY3QtbmFtZXMgbSBuKSkgbSkp KQorCisoZGVmaW5lIChtdXRleC1uYW1lIG11dGV4KQorICAoaGFzaHEtcmVmIG9iamVjdC1uYW1l cyAoY2hlY2stYXJnLXR5cGUgbXV0ZXg/IG11dGV4ICJtdXRleC1uYW1lIikpKQorCisoZGVmaW5l IChtdXRleC1zcGVjaWZpYyBtdXRleCkKKyAgKGhhc2hxLXJlZiBvYmplY3Qtc3BlY2lmaWNzIAor CSAgICAgKGNoZWNrLWFyZy10eXBlIG11dGV4PyBtdXRleCAibXV0ZXgtc3BlY2lmaWMiKSkpCisK KyhkZWZpbmUgKG11dGV4LXNwZWNpZmljLXNldCEgbXV0ZXggb2JqKQorICAoaGFzaHEtc2V0ISBv YmplY3Qtc3BlY2lmaWNzCisJICAgICAgKGNoZWNrLWFyZy10eXBlIG11dGV4PyBtdXRleCAibXV0 ZXgtc3BlY2lmaWMtc2V0ISIpCisJICAgICAgb2JqKQorICAqdW5zcGVjaWZpZWQqKQorCisoZGVm aW5lIChtdXRleC1zdGF0ZSBtdXRleCkKKyAgKGxldCAoKG93bmVyIChtdXRleC1vd25lciBtdXRl eCkpKQorICAgIChpZiBvd25lcgorCShpZiAodGhyZWFkLWV4aXRlZD8gb3duZXIpICdhYmFuZG9u ZWQgb3duZXIpCisJKGlmICg+IChtdXRleC1sZXZlbCBtdXRleCkgMCkgJ25vdC1vd25lZCAnbm90 LWFiYW5kb25lZCkpKSkKKworKGRlZmluZSAobXV0ZXgtbG9jayEgbXV0ZXggLiBhcmdzKSAKKyAg KGRlZmluZSBtdXRleC1sb2NrLWlubmVyIQorICAgICh3cmFwIChsYW1iZGEgKCkKKwkgICAgKGNh dGNoICdhYmFuZG9uZWQtbXV0ZXgtZXJyb3IKKwkJICAgKGxhbWJkYSAoKSAoYXBwbHkgbG9jay1t dXRleCAoY29ucyBtdXRleCBhcmdzKSkpCisJCSAgIChsYW1iZGEgKGtleSAuIGFyZ3MpIChyYWlz ZSBhYmFuZG9uZWQtbXV0ZXgtZXhjZXB0aW9uKSkpKSkpCisgIChjYWxsL2NjIG11dGV4LWxvY2st aW5uZXIhKSkKKworKGRlZmluZSAobXV0ZXgtdW5sb2NrISBtdXRleCAuIGFyZ3MpIAorICAoYXBw bHkgdW5sb2NrLW11dGV4IChjb25zIG11dGV4IGFyZ3MpKSkKKworOzsgQ09ORElUSU9OIFZBUklB QkxFUworOzsgVGhlc2UgZnVuY3Rpb25zIGFyZSBhbGwgcGFzcy10aHJ1cyB0byB0aGUgZXhpc3Rp bmcgR3VpbGUgaW1wbGVtZW50YXRpb25zLgorCisoZGVmaW5lIG1ha2UtY29uZGl0aW9uLXZhcmlh YmxlCisgIChsYW1iZGEgbmFtZQorICAgIChsZXQgKChuIChhbmQgKHBhaXI/IG5hbWUpIChjYXIg bmFtZSkpKQorCSAgKG0gKChAIChndWlsZSkgbWFrZS1jb25kaXRpb24tdmFyaWFibGUpKSkpCisg ICAgICAoYW5kIG4gKGhhc2hxLXNldCEgb2JqZWN0LW5hbWVzIG0gbikpIG0pKSkKKworKGRlZmlu ZSAoY29uZGl0aW9uLXZhcmlhYmxlLW5hbWUgY29uZGl0aW9uLXZhcmlhYmxlKQorICAoaGFzaHEt cmVmIG9iamVjdC1uYW1lcyAoY2hlY2stYXJnLXR5cGUgY29uZGl0aW9uLXZhcmlhYmxlPyAKKwkJ CQkJICBjb25kaXRpb24tdmFyaWFibGUKKwkJCQkJICAiY29uZGl0aW9uLXZhcmlhYmxlLW5hbWUi KSkpCisKKyhkZWZpbmUgKGNvbmRpdGlvbi12YXJpYWJsZS1zcGVjaWZpYyBjb25kaXRpb24tdmFy aWFibGUpCisgIChoYXNocS1yZWYgb2JqZWN0LXNwZWNpZmljcyAoY2hlY2stYXJnLXR5cGUgY29u ZGl0aW9uLXZhcmlhYmxlPyAKKwkJCQkJICAgICAgY29uZGl0aW9uLXZhcmlhYmxlIAorCQkJCQkg ICAgICAiY29uZGl0aW9uLXZhcmlhYmxlLXNwZWNpZmljIikpKQorCisoZGVmaW5lIChjb25kaXRp b24tdmFyaWFibGUtc3BlY2lmaWMtc2V0ISBjb25kaXRpb24tdmFyaWFibGUgb2JqKQorICAoaGFz aHEtc2V0ISBvYmplY3Qtc3BlY2lmaWNzCisJICAgICAgKGNoZWNrLWFyZy10eXBlIGNvbmRpdGlv bi12YXJpYWJsZT8gCisJCQkgICAgICBjb25kaXRpb24tdmFyaWFibGUgCisJCQkgICAgICAiY29u ZGl0aW9uLXZhcmlhYmxlLXNwZWNpZmljLXNldCEiKQorCSAgICAgIG9iaikKKyAgKnVuc3BlY2lm aWVkKikKKworKGRlZmluZSAoY29uZGl0aW9uLXZhcmlhYmxlLXNpZ25hbCEgY29uZCkgCisgIChz aWduYWwtY29uZGl0aW9uLXZhcmlhYmxlIGNvbmQpIAorICAqdW5zcGVjaWZpZWQqKQorCisoZGVm aW5lIChjb25kaXRpb24tdmFyaWFibGUtYnJvYWRjYXN0ISBjb25kKQorICAoYnJvYWRjYXN0LWNv bmRpdGlvbi12YXJpYWJsZSBjb25kKQorICAqdW5zcGVjaWZpZWQqKQorCis7OyBUSU1FCisKKyhk ZWZpbmUgY3VycmVudC10aW1lIGdldHRpbWVvZmRheSkKKyhkZWZpbmUgKHRpbWU/IG9iaikKKyAg KGFuZCAocGFpcj8gb2JqKQorICAgICAgIChsZXQgKChjbyAoY2FyIG9iaikpKSAoYW5kIChpbnRl Z2VyPyBjbykgKD49IGNvIDApKSkKKyAgICAgICAobGV0ICgoY28gKGNkciBvYmopKSkgKGFuZCAo aW50ZWdlcj8gY28pICg+PSBjbyAwKSkpKSkKKworKGRlZmluZSAodGltZS0+c2Vjb25kcyB0aW1l KSAKKyAgKGFuZCAoY2hlY2stYXJnLXR5cGUgdGltZT8gdGltZSAidGltZS0+c2Vjb25kcyIpCisg ICAgICAgKCsgKGNhciB0aW1lKSAoLyAoY2RyIHRpbWUpIDEwMDAwMDApKSkpCisKKyhkZWZpbmUg KHNlY29uZHMtPnRpbWUgeCkKKyAgKGFuZCAoY2hlY2stYXJnLXR5cGUgbnVtYmVyPyB4ICJzZWNv bmRzLT50aW1lIikKKyAgICAgICAobGV0ICgoZnggKHRydW5jYXRlIHgpKSkKKwkgKGNvbnMgKGlu ZXhhY3QtPmV4YWN0IGZ4KQorCSAgICAgICAoaW5leGFjdC0+ZXhhY3QgKHRydW5jYXRlICgqICgt IHggZngpIDEwMDAwMDApKSkpKSkpCisKKzs7IHNyZmktMTguc2NtIGVuZHMgaGVyZQpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3Qtc3VpdGUvQ2hhbmdlTG9nIGIv dGVzdC1zdWl0ZS9DaGFuZ2VMb2cKaW5kZXggMWQ3M2ZiZi4uNWY5NzE0MiAxMDA2NDQKLS0tIGEv dGVzdC1zdWl0ZS9DaGFuZ2VMb2cKKysrIGIvdGVzdC1zdWl0ZS9DaGFuZ2VMb2cKQEAgLTEsMyAr MSw3IEBACisyMDA4LTA1LTE1ICBKdWxpYW4gR3JhaGFtICA8am9vbGVhbkBnbWFpbC5jb20+CisK KwkqIHRlc3RzL3NyZmktMTgudGVzdDogTmV3IGZpbGUuCisKIDIwMDgtMDUtMTQgIEp1bGlhbiBH cmFoYW0gIDxqb29sZWFuQGdtYWlsLmNvbT4KIAogCSogdGVzdHMvdGhyZWFkcy50ZXN0IChtdXRl eC1vd25lcnNoaXAsIG11dGV4LWxvY2stbGV2ZWxzKTogTmV3CmRpZmYgLS1naXQgYS90ZXN0LXN1 aXRlL3Rlc3RzL3NyZmktMTgudGVzdCBiL3Rlc3Qtc3VpdGUvdGVzdHMvc3JmaS0xOC50ZXN0Cm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMTY3NjgKLS0tIC9kZXYvbnVsbAor KysgYi90ZXN0LXN1aXRlL3Rlc3RzL3NyZmktMTgudGVzdApAQCAtMCwwICsxLDQ3NyBAQAorOzs7 OyBzcmZpLTE4LnRlc3QgLS0tIFRlc3Qgc3VpdGUgZm9yIEd1aWxlJ3MgU1JGSS0xOCBmdW5jdGlv bnMuIC0qLSBzY2hlbWUgLSotCis7Ozs7IEp1bGlhbiBHcmFoYW0sIDIwMDctMTAtMjYKKzs7OzsK Kzs7OzsgQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor Ozs7OyAKKzs7OzsgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKzs7OzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKzs7OzsgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9u KQorOzs7OyBhbnkgbGF0ZXIgdmVyc2lvbi4KKzs7OzsgCis7Ozs7IFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorOzs7OyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv ZgorOzs7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuICBTZWUgdGhlCis7Ozs7IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCis7Ozs7IAorOzs7OyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorOzs7OyBhbG9uZyB3aXRoIHRoaXMgc29mdHdh cmU7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0bworOzs7OyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs b29yLAorOzs7OyBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisKKyhkZWZpbmUtbW9kdWxlICh0 ZXN0LXN1aXRlIHRlc3Qtc3JmaS0xOCkKKyAgIzp1c2UtbW9kdWxlICh0ZXN0LXN1aXRlIGxpYikK KyAgIzp1c2UtbW9kdWxlIChzcmZpIHNyZmktMTgpKQorCisod2l0aC10ZXN0LXByZWZpeCAiY3Vy cmVudC10aHJlYWQiCisKKyAgKHBhc3MtaWYgImN1cnJlbnQtdGhyZWFkIGVxIGN1cnJlbnQtdGhy ZWFkIgorICAgIChlcT8gKGN1cnJlbnQtdGhyZWFkKSAoY3VycmVudC10aHJlYWQpKSkpCisKKyh3 aXRoLXRlc3QtcHJlZml4ICJ0aHJlYWQ/IgorCisgIChwYXNzLWlmICJjdXJyZW50LXRocmVhZCBp cyB0aHJlYWQiCisgICAgKHRocmVhZD8gKGN1cnJlbnQtdGhyZWFkKSkpCisKKyAgKHBhc3MtaWYg ImZvbyBub3QgdGhyZWFkIgorICAgIChub3QgKHRocmVhZD8gJ2ZvbykpKSkKKworKHdpdGgtdGVz dC1wcmVmaXggIm1ha2UtdGhyZWFkIgorCisgIChwYXNzLWlmICJtYWtlLXRocmVhZCBjcmVhdGVz IG5ldyB0aHJlYWQiCisgICAgKGxldCogKChuIChsZW5ndGggKGFsbC10aHJlYWRzKSkpCisJICAg KHQgKG1ha2UtdGhyZWFkIChsYW1iZGEgKCkgJ2ZvbykgJ21ha2UtdGhyZWFkLTEpKQorCSAgIChy ICg+IChsZW5ndGggKGFsbC10aHJlYWRzKSkgbikpKQorICAgICAgKHRocmVhZC10ZXJtaW5hdGUh IHQpIHIpKSkKKworKHdpdGgtdGVzdC1wcmVmaXggInRocmVhZC1uYW1lIgorCisgIChwYXNzLWlm ICJtYWtlLXRocmVhZCB3aXRoIG5hbWUgYmluZHMgbmFtZSIKKyAgICAobGV0KiAoKHQgKG1ha2Ut dGhyZWFkIChsYW1iZGEgKCkgJ2ZvbykgJ3RocmVhZC1uYW1lLTEpKQorCSAgIChyIChlcT8gKHRo cmVhZC1uYW1lIHQpICd0aHJlYWQtbmFtZS0xKSkpCisgICAgICAodGhyZWFkLXRlcm1pbmF0ZSEg dCkgcikpCisKKyAgKHBhc3MtaWYgIm1ha2UtdGhyZWFkIHdpdGhvdXQgbmFtZSBkb2VzIG5vdCBi aW5kIG5hbWUiCisgICAgKGxldCogKCh0IChtYWtlLXRocmVhZCAobGFtYmRhICgpICdmb28pKSkK KwkgICAociAobm90ICh0aHJlYWQtbmFtZSB0KSkpKQorICAgICAgKHRocmVhZC10ZXJtaW5hdGUh IHQpIHIpKSkKKworKHdpdGgtdGVzdC1wcmVmaXggInRocmVhZC1zcGVjaWZpYyIKKworICAocGFz cy1pZiAidGhyZWFkLXNwZWNpZmljIGlzIGluaXRpYWxseSAjZiIKKyAgICAobGV0KiAoKHQgKG1h a2UtdGhyZWFkIChsYW1iZGEgKCkgJ2ZvbykgJ3RocmVhZC1zcGVjaWZpYy0xKSkKKwkgICAociAo bm90ICh0aHJlYWQtc3BlY2lmaWMgdCkpKSkKKyAgICAgICh0aHJlYWQtdGVybWluYXRlISB0KSBy KSkKKworICAocGFzcy1pZiAidGhyZWFkLXNwZWNpZmljLXNldCEgY2FuIHNldCB2YWx1ZSIKKyAg ICAobGV0ICgodCAobWFrZS10aHJlYWQgKGxhbWJkYSAoKSAnZm9vKSAndGhyZWFkLXNwZWNpZmlj LTIpKSkKKyAgICAgICh0aHJlYWQtc3BlY2lmaWMtc2V0ISB0ICJoZWxsbyIpCisgICAgICAobGV0 ICgociAoZXF1YWw/ICh0aHJlYWQtc3BlY2lmaWMgdCkgImhlbGxvIikpKQorCSh0aHJlYWQtdGVy bWluYXRlISB0KSByKSkpKQorCisod2l0aC10ZXN0LXByZWZpeCAidGhyZWFkLXN0YXJ0ISIKKwor ICAocGFzcy1pZiAidGhyZWFkIGFjdGl2YXRlcyBvbmx5IGFmdGVyIHN0YXJ0IiAKKyAgICAobGV0 KiAoKHN0YXJ0ZWQgI2YpCisJICAgKG0gKG1ha2UtbXV0ZXggJ3RocmVhZC1zdGFydC1tdXRleCkp CisJICAgKHQgKG1ha2UtdGhyZWFkIChsYW1iZGEgKCkgKHNldCEgc3RhcnRlZCAjdCkpICd0aHJl YWQtc3RhcnQtMSkpKQorICAgICAgKGFuZCAobm90IHN0YXJ0ZWQpICh0aHJlYWQtc3RhcnQhIHQp ICh0aHJlYWQtam9pbiEgdCkgc3RhcnRlZCkpKSkKKworKHdpdGgtdGVzdC1wcmVmaXggInRocmVh ZC15aWVsZCEiCisKKyAgKHBhc3MtaWYgInRocmVhZCB5aWVsZCBzdWNlZWRzIgorICAgICh0aHJl YWQteWllbGQhKSAjdCkpCisKKyh3aXRoLXRlc3QtcHJlZml4ICJ0aHJlYWQtc2xlZXAhIgorCisg IChwYXNzLWlmICJ0aHJlYWQgc2xlZXAgd2l0aCB0aW1lIgorICAgIChsZXQgKChmdXR1cmUtdGlt ZSAoc2Vjb25kcy0+dGltZSAoKyAodGltZS0+c2Vjb25kcyAoY3VycmVudC10aW1lKSkgMikpKSkK KyAgICAgICh1bnNwZWNpZmllZD8gKHRocmVhZC1zbGVlcCEgZnV0dXJlLXRpbWUpKSkpCisKKyAg KHBhc3MtaWYgInRocmVhZCBzbGVlcCB3aXRoIG51bWJlciIKKyAgICAobGV0ICgob2xkLXNlY3Mg KGNhciAoY3VycmVudC10aW1lKSkpKQorICAgICAgKHVuc3BlY2lmaWVkPyAodGhyZWFkLXNsZWVw ISAoKyAodGltZS0+c2Vjb25kcyAoY3VycmVudC10aW1lKSkpKSkpKQorCisgIChwYXNzLWlmICJ0 aHJlYWQgZG9lcyBub3Qgc2xlZXAgb24gcGFzdCB0aW1lIgorICAgIChsZXQgKChwYXN0LXRpbWUg KHNlY29uZHMtPnRpbWUgKC0gKHRpbWUtPnNlY29uZHMgKGN1cnJlbnQtdGltZSkpIDIpKSkpCisg ICAgICAodW5zcGVjaWZpZWQ/ICh0aHJlYWQtc2xlZXAhIHBhc3QtdGltZSkpKSkpCisKKyh3aXRo LXRlc3QtcHJlZml4ICJ0aHJlYWQtdGVybWluYXRlISIKKyAgCisgIChwYXNzLWlmICJ0ZXJtaW5h dGlvbiBkZXN0cm95cyBub24tc3RhcnRlZCB0aHJlYWQiCisgICAgKGxldCAoKHQgKG1ha2UtdGhy ZWFkIChsYW1iZGEgKCkgJ25vdGhpbmcpICd0aHJlYWQtdGVybWluYXRlLTEpKQorCSAgKG51bS10 aHJlYWRzIChsZW5ndGggKGFsbC10aHJlYWRzKSkpCisJICAoc3VjY2VzcyAjZikpCisgICAgICAo dGhyZWFkLXRlcm1pbmF0ZSEgdCkKKyAgICAgICh3aXRoLWV4Y2VwdGlvbi1oYW5kbGVyIAorICAg ICAgIChsYW1iZGEgKG9iaikgKHNldCEgc3VjY2VzcyAodGVybWluYXRlZC10aHJlYWQtZXhjZXB0 aW9uPyBvYmopKSkKKyAgICAgICAobGFtYmRhICgpICh0aHJlYWQtam9pbiEgdCkpKQorICAgICAg c3VjY2VzcykpCisKKyAgKHBhc3MtaWYgInRlcm1pbmF0aW9uIGRlc3Ryb3lzIHN0YXJ0ZWQgdGhy ZWFkIgorICAgIChsZXQqICgobTEgKG1ha2UtbXV0ZXggJ3RocmVhZC10ZXJtaW5hdGUtMmEpKQor CSAgIChtMiAobWFrZS1tdXRleCAndGhyZWFkLXRlcm1pbmF0ZS0yYikpCisJICAgKGMgKG1ha2Ut Y29uZGl0aW9uLXZhcmlhYmxlICd0aHJlYWQtdGVybWluYXRlLTIpKQorCSAgICh0IChtYWtlLXRo cmVhZCAobGFtYmRhICgpIAorCQkJICAgICAobXV0ZXgtbG9jayEgbTEpIAorCQkJICAgICAoY29u ZGl0aW9uLXZhcmlhYmxlLXNpZ25hbCEgYykKKwkJCSAgICAgKG11dGV4LXVubG9jayEgbTEpCisJ CQkgICAgIChtdXRleC1sb2NrISBtMikpCisJCQkgICAndGhyZWFkLXRlcm1pbmF0ZS0yKSkKKwkg ICAoc3VjY2VzcyAjZikpCisgICAgICAobXV0ZXgtbG9jayEgbTEpCisgICAgICAobXV0ZXgtbG9j ayEgbTIpCisgICAgICAodGhyZWFkLXN0YXJ0ISB0KQorICAgICAgKG11dGV4LXVubG9jayEgbTEg YykKKyAgICAgICh0aHJlYWQtdGVybWluYXRlISB0KQorICAgICAgKHdpdGgtZXhjZXB0aW9uLWhh bmRsZXIKKyAgICAgICAobGFtYmRhIChvYmopIChzZXQhIHN1Y2Nlc3MgKHRlcm1pbmF0ZWQtdGhy ZWFkLWV4Y2VwdGlvbj8gb2JqKSkpCisgICAgICAgKGxhbWJkYSAoKSAodGhyZWFkLWpvaW4hIHQp KSkKKyAgICAgIHN1Y2Nlc3MpKSkKKworKHdpdGgtdGVzdC1wcmVmaXggInRocmVhZC1qb2luISIK KworICAocGFzcy1pZiAiam9pbiByZWNlaXZlcyByZXN1bHQgb2YgdGhyZWFkIgorICAgIChsZXQg KCh0IChtYWtlLXRocmVhZCAobGFtYmRhICgpICdmb28pICd0aHJlYWQtam9pbi0xKSkpCisgICAg ICAodGhyZWFkLXN0YXJ0ISB0KQorICAgICAgKGVxPyAodGhyZWFkLWpvaW4hIHQpICdmb28pKSkK KworICAocGFzcy1pZiAiam9pbiByZWNlaXZlcyB0aW1lb3V0IHZhbCBpZiB0aW1lb3V0IGV4cGly ZXMiCisgICAgKGxldCogKChtIChtYWtlLW11dGV4ICd0aHJlYWQtam9pbi0yKSkKKwkgICAodCAo bWFrZS10aHJlYWQgKGxhbWJkYSAoKSAobXV0ZXgtbG9jayEgbSkpICd0aHJlYWQtam9pbi0yKSkp CisgICAgICAobXV0ZXgtbG9jayEgbSkKKyAgICAgICh0aHJlYWQtc3RhcnQhIHQpCisgICAgICAo bGV0ICgociAodGhyZWFkLWpvaW4hIHQgKGN1cnJlbnQtdGltZSkgJ2JhcikpKQorCSh0aHJlYWQt dGVybWluYXRlISB0KQorCShlcT8gciAnYmFyKSkpKQorCisgIChwYXNzLWlmICJqb2luIHRocm93 cyBleGNlcHRpb24gb24gdGltZW91dCB3aXRob3V0IHRpbWVvdXQgdmFsIgorICAgIChsZXQqICgo bSAobWFrZS1tdXRleCAndGhyZWFkLWpvaW4tMykpCisJICAgKHQgKG1ha2UtdGhyZWFkIChsYW1i ZGEgKCkgKG11dGV4LWxvY2shIG0pKSAndGhyZWFkLWpvaW4tMykpCisJICAgKHN1Y2Nlc3MgI2Yp KQorICAgICAgKG11dGV4LWxvY2shIG0pCisgICAgICAodGhyZWFkLXN0YXJ0ISB0KQorICAgICAg KHdpdGgtZXhjZXB0aW9uLWhhbmRsZXIKKyAgICAgICAobGFtYmRhIChvYmopIChzZXQhIHN1Y2Nl c3MgKGpvaW4tdGltZW91dC1leGNlcHRpb24/IG9iaikpKQorICAgICAgIChsYW1iZGEgKCkgKHRo cmVhZC1qb2luISB0IChjdXJyZW50LXRpbWUpKSkpCisgICAgICAodGhyZWFkLXRlcm1pbmF0ZSEg dCkKKyAgICAgIHN1Y2Nlc3MpKQorCisgIChwYXNzLWlmICJqb2luIHdhaXRzIG9uIHRpbWVvdXQi CisgICAgKGxldCAoKHQgKG1ha2UtdGhyZWFkIChsYW1iZGEgKCkgKHNsZWVwIDEpICdmb28pICd0 aHJlYWQtam9pbi00KSkpCisgICAgICAodGhyZWFkLXN0YXJ0ISB0KQorICAgICAgKGVxPyAodGhy ZWFkLWpvaW4hIHQgKCsgKHRpbWUtPnNlY29uZHMgKGN1cnJlbnQtdGltZSkpIDIpKSAnZm9vKSkp KQorCisod2l0aC10ZXN0LXByZWZpeCAibXV0ZXg/IgorCisgIChwYXNzLWlmICJtYWtlLW11dGV4 IGNyZWF0ZXMgbXV0ZXgiCisgICAgKG11dGV4PyAobWFrZS1tdXRleCkpKQorCisgIChwYXNzLWlm ICJzeW1ib2wgbm90IG11dGV4IgorICAgIChub3QgKG11dGV4PyAnZm9vKSkpKQorCisod2l0aC10 ZXN0LXByZWZpeCAibXV0ZXgtbmFtZSIKKworICAocGFzcy1pZiAibWFrZS1tdXRleCB3aXRoIG5h bWUgYmluZHMgbmFtZSIKKyAgICAobGV0KiAoKG0gKG1ha2UtbXV0ZXggJ211dGV4LW5hbWUtMSkp KQorICAgICAgKGVxPyAobXV0ZXgtbmFtZSBtKSAnbXV0ZXgtbmFtZS0xKSkpCisKKyAgKHBhc3Mt aWYgIm1ha2UtbXV0ZXggd2l0aG91dCBuYW1lIGRvZXMgbm90IGJpbmQgbmFtZSIKKyAgICAobGV0 KiAoKG0gKG1ha2UtbXV0ZXgpKSkKKyAgICAgIChub3QgKG11dGV4LW5hbWUgbSkpKSkpCisKKyh3 aXRoLXRlc3QtcHJlZml4ICJtdXRleC1zcGVjaWZpYyIKKworICAocGFzcy1pZiAibXV0ZXgtc3Bl Y2lmaWMgaXMgaW5pdGlhbGx5ICNmIgorICAgIChsZXQgKChtIChtYWtlLW11dGV4ICdtdXRleC1z cGVjaWZpYy0xKSkpCisgICAgICAobm90IChtdXRleC1zcGVjaWZpYyBtKSkpKQorCisgIChwYXNz LWlmICJtdXRleC1zcGVjaWZpYy1zZXQhIGNhbiBzZXQgdmFsdWUiCisgICAgKGxldCAoKG0gKG1h a2UtbXV0ZXggJ211dGV4LXNwZWNpZmljLTIpKSkKKyAgICAgIChtdXRleC1zcGVjaWZpYy1zZXQh IG0gImhlbGxvIikKKyAgICAgIChlcXVhbD8gKG11dGV4LXNwZWNpZmljIG0pICJoZWxsbyIpKSkp CisKKyh3aXRoLXRlc3QtcHJlZml4ICJtdXRleC1zdGF0ZSIKKworICAocGFzcy1pZiAibXV0ZXgg c3RhdGUgaXMgaW5pdGlhbGx5IG5vdC1hYmFuZG9uZWQiCisgICAgKGxldCAoKG0gKG1ha2UtbXV0 ZXggJ211dGV4LXN0YXRlLTEpKSkKKyAgICAgIChlcT8gKG11dGV4LXN0YXRlIG0pICdub3QtYWJh bmRvbmVkKSkpCisKKyAgKHBhc3MtaWYgIm11dGV4IHN0YXRlIG9mIGxvY2tlZCwgb3duZWQgbXV0 ZXggaXMgb3duZXIgdGhyZWFkIgorICAgIChsZXQgKChtIChtYWtlLW11dGV4ICdtdXRleC1zdGF0 ZS0yKSkpCisgICAgICAobXV0ZXgtbG9jayEgbSkKKyAgICAgIChlcT8gKG11dGV4LXN0YXRlIG0p IChjdXJyZW50LXRocmVhZCkpKSkKKwkgIAorICAocGFzcy1pZiAibXV0ZXggc3RhdGUgb2YgbG9j a2VkLCB1bm93bmVkIG11dGV4IGlzIG5vdC1vd25lZCIKKyAgICAobGV0ICgobSAobWFrZS1tdXRl eCAnbXV0ZXgtc3RhdGUtMykpKQorICAgICAgKG11dGV4LWxvY2shIG0gI2YgI2YpCisgICAgICAo ZXE/IChtdXRleC1zdGF0ZSBtKSAnbm90LW93bmVkKSkpCisKKyAgKHBhc3MtaWYgIm11dGV4IHN0 YXRlIG9mIHVubG9ja2VkLCBhYmFuZG9uZWQgbXV0ZXggaXMgYWJhbmRvbmVkIgorICAgIChsZXQq ICgobSAobWFrZS1tdXRleCAnbXV0ZXgtc3RhdGUtNCkpCisJICAgKHQgKG1ha2UtdGhyZWFkIChs YW1iZGEgKCkgKG11dGV4LWxvY2shIG0pKSkpKQorICAgICAgKHRocmVhZC1zdGFydCEgdCkKKyAg ICAgICh0aHJlYWQtam9pbiEgdCkKKyAgICAgIChlcT8gKG11dGV4LXN0YXRlIG0pICdhYmFuZG9u ZWQpKSkpCisKKyh3aXRoLXRlc3QtcHJlZml4ICJtdXRleC1sb2NrISIKKyAgCisgIChwYXNzLWlm ICJtdXRleC1sb2NrISByZXR1cm5zIHRydWUgb24gc3VjY2Vzc2Z1bCBsb2NrIgorICAgIChsZXQq ICgobSAobWFrZS1tdXRleCAnbXV0ZXgtbG9jay0xKSkpCisgICAgICAobXV0ZXgtbG9jayEgbSkp KQorCisgIChwYXNzLWlmICJtdXRleC1sb2NrISByZXR1cm5zIGZhbHNlIG9uIHRpbWVvdXQiCisg ICAgKGxldCogKChtIChtYWtlLW11dGV4ICdtdXRleC1sb2NrLTIpKQorCSAgICh0IChtYWtlLXRo cmVhZCAobGFtYmRhICgpIChtdXRleC1sb2NrISBtIChjdXJyZW50LXRpbWUpICNmKSkpKSkKKyAg ICAgIChtdXRleC1sb2NrISBtKQorICAgICAgKHRocmVhZC1zdGFydCEgdCkKKyAgICAgIChub3Qg KHRocmVhZC1qb2luISB0KSkpKQorCisgIChwYXNzLWlmICJtdXRleC1sb2NrISByZXR1cm5zIHRy dWUgd2hlbiBsb2NrIG9idGFpbmVkIHdpdGhpbiB0aW1lb3V0IgorICAgIChsZXQqICgobSAobWFr ZS1tdXRleCAnbXV0ZXgtbG9jay0zKSkKKwkgICAodCAobWFrZS10aHJlYWQgKGxhbWJkYSAoKSAK KwkJCSAgICAgKG11dGV4LWxvY2shIG0gKCsgKHRpbWUtPnNlY29uZHMgKGN1cnJlbnQtdGltZSkp IAorCQkJCQkgICAgICAgMTAwKQorCQkJCQkgICNmKSkpKSkKKyAgICAgIChtdXRleC1sb2NrISBt KQorICAgICAgKHRocmVhZC1zdGFydCEgdCkKKyAgICAgIChtdXRleC11bmxvY2shIG0pCisgICAg ICAodGhyZWFkLWpvaW4hIHQpKSkKKworICAocGFzcy1pZiAiY2FuIGxvY2sgbXV0ZXggZm9yIG5v bi1jdXJyZW50IHRocmVhZCIKKyAgICAobGV0KiAoKG0xIChtYWtlLW11dGV4ICdtdXRleC1sb2Nr LTRhKSkKKwkgICAobTIgKG1ha2UtbXV0ZXggJ211dGV4LWxvY2stNGIpKQorCSAgICh0IChtYWtl LXRocmVhZCAobGFtYmRhICgpIChtdXRleC1sb2NrISBtMSkpICdtdXRleC1sb2NrLTQpKSkKKyAg ICAgIChtdXRleC1sb2NrISBtMSkKKyAgICAgICh0aHJlYWQtc3RhcnQhIHQpCisgICAgICAobXV0 ZXgtbG9jayEgbTIgI2YgdCkKKyAgICAgIChsZXQgKChzdWNjZXNzIChlcT8gKG11dGV4LXN0YXRl IG0yKSB0KSkpIAorCSh0aHJlYWQtdGVybWluYXRlISB0KSBzdWNjZXNzKSkpCisKKyAgKHBhc3Mt aWYgImxvY2tpbmcgYWJhbmRvbmVkIG11dGV4IHRocm93cyBleGNlcHRpb24iCisgICAgKGxldCog KChtIChtYWtlLW11dGV4ICdtdXRleC1sb2NrLTUpKQorCSAgICh0IChtYWtlLXRocmVhZCAobGFt YmRhICgpIChtdXRleC1sb2NrISBtKSkgJ211dGV4LWxvY2stNSkpCisJICAgKHN1Y2Nlc3MgI2Yp KQorICAgICAgKHRocmVhZC1zdGFydCEgdCkKKyAgICAgICh0aHJlYWQtam9pbiEgdCkKKyAgICAg ICh3aXRoLWV4Y2VwdGlvbi1oYW5kbGVyCisgICAgICAgKGxhbWJkYSAob2JqKSAoc2V0ISBzdWNj ZXNzIChhYmFuZG9uZWQtbXV0ZXgtZXhjZXB0aW9uPyBvYmopKSkKKyAgICAgICAobGFtYmRhICgp IChtdXRleC1sb2NrISBtKSkpCisgICAgICAoYW5kIHN1Y2Nlc3MgKGVxPyAobXV0ZXgtc3RhdGUg bSkgKGN1cnJlbnQtdGhyZWFkKSkpKSkKKworICAocGFzcy1pZiAic2xlZXBpbmcgdGhyZWFkcyBu b3RpZmllZCBvZiBhYmFuZG9ubWVudCIKKyAgICAobGV0KiAoKG0xIChtYWtlLW11dGV4ICdtdXRl eC1sb2NrLTZhKSkKKwkgICAobTIgKG1ha2UtbXV0ZXggJ211dGV4LWxvY2stNmIpKQorCSAgIChj IChtYWtlLWNvbmRpdGlvbi12YXJpYWJsZSAnbXV0ZXgtbG9jay02KSkKKwkgICAodCAobWFrZS10 aHJlYWQgKGxhbWJkYSAoKSAKKwkJCSAgICAgKG11dGV4LWxvY2shIG0xKQorCQkJICAgICAobXV0 ZXgtbG9jayEgbTIpCisJCQkgICAgIChjb25kaXRpb24tdmFyaWFibGUtc2lnbmFsISBjKSkpKQor CSAgIChzdWNjZXNzICNmKSkKKyAgICAgIChtdXRleC1sb2NrISBtMSkKKyAgICAgICh0aHJlYWQt c3RhcnQhIHQpCisgICAgICAod2l0aC1leGNlcHRpb24taGFuZGxlcgorICAgICAgIChsYW1iZGEg KG9iaikgKHNldCEgc3VjY2VzcyAoYWJhbmRvbmVkLW11dGV4LWV4Y2VwdGlvbj8gb2JqKSkpCisg ICAgICAgKGxhbWJkYSAoKSAobXV0ZXgtdW5sb2NrISBtMSBjKSAobXV0ZXgtbG9jayEgbTIpKSkK KyAgICAgIHN1Y2Nlc3MpKSkKKworKHdpdGgtdGVzdC1wcmVmaXggIm11dGV4LXVubG9jayEiCisg ICAKKyAgKHBhc3MtaWYgInVubG9jayBjaGFuZ2VzIG11dGV4IHN0YXRlIgorICAgIChsZXQqICgo bSAobWFrZS1tdXRleCAnbXV0ZXgtdW5sb2NrLTEpKSkKKyAgICAgIChtdXRleC1sb2NrISBtKQor ICAgICAgKG11dGV4LXVubG9jayEgbSkKKyAgICAgIChlcT8gKG11dGV4LXN0YXRlIG0pICdub3Qt YWJhbmRvbmVkKSkpCisKKyAgKHBhc3MtaWYgImNhbiB1bmxvY2sgZnJvbSBhbnkgdGhyZWFkIgor ICAgIChsZXQqICgobSAobWFrZS1tdXRleCAnbXV0ZXgtdW5sb2NrLTIpKQorCSAgICh0IChtYWtl LXRocmVhZCAobGFtYmRhICgpIChtdXRleC11bmxvY2shIG0pKSAnbXV0ZXgtdW5sb2NrLTIpKSkK KyAgICAgIChtdXRleC1sb2NrISBtKQorICAgICAgKHRocmVhZC1zdGFydCEgdCkKKyAgICAgICh0 aHJlYWQtam9pbiEgdCkKKyAgICAgIChlcT8gKG11dGV4LXN0YXRlIG0pICdub3QtYWJhbmRvbmVk KSkpCisKKyAgKHBhc3MtaWYgIm11dGV4IHVubG9jayBpcyB0cnVlIHdoZW4gY29uZGl0aW9uIGlz IHNpZ25hbGxlZCIKKyAgICAobGV0KiAoKG0gKG1ha2UtbXV0ZXggJ211dGV4LXVubG9jay0zKSkK KwkgICAoYyAobWFrZS1jb25kaXRpb24tdmFyaWFibGUgJ211dGV4LXVubG9jay0zKSkKKwkgICAo dCAobWFrZS10aHJlYWQgKGxhbWJkYSAoKSAKKwkJCSAgICAgKG11dGV4LWxvY2shIG0pIAorCQkJ ICAgICAoY29uZGl0aW9uLXZhcmlhYmxlLXNpZ25hbCEgYykgCisJCQkgICAgIChtdXRleC11bmxv Y2shIG0pKSkpKQorICAgICAgKG11dGV4LWxvY2shIG0pCisgICAgICAodGhyZWFkLXN0YXJ0ISB0 KQorICAgICAgKG11dGV4LXVubG9jayEgbSBjKSkpCisKKyAgKHBhc3MtaWYgIm11dGV4IHVubG9j ayBpcyBmYWxzZSB3aGVuIGNvbmRpdGlvbiB0aW1lcyBvdXQiCisgICAgKGxldCogKChtIChtYWtl LW11dGV4ICdtdXRleC11bmxvY2stNCkpCisJICAgKGMgKG1ha2UtY29uZGl0aW9uLXZhcmlhYmxl ICdtdXRleC11bmxvY2stNCkpKQorICAgICAgKG11dGV4LWxvY2shIG0pCisgICAgICAobm90ICht dXRleC11bmxvY2shIG0gYyAoKyAodGltZS0+c2Vjb25kcyAoY3VycmVudC10aW1lKSkgMSkpKSkp KQorCisod2l0aC10ZXN0LXByZWZpeCAiY29uZGl0aW9uLXZhcmlhYmxlPyIKKworICAocGFzcy1p ZiAibWFrZS1jb25kaXRpb24tdmFyaWFibGUgY3JlYXRlcyBjb25kaXRpb24gdmFyaWFibGUiCisg ICAgKGNvbmRpdGlvbi12YXJpYWJsZT8gKG1ha2UtY29uZGl0aW9uLXZhcmlhYmxlKSkpCisKKyAg KHBhc3MtaWYgInN5bWJvbCBub3QgY29uZGl0aW9uIHZhcmlhYmxlIgorICAgIChub3QgKGNvbmRp dGlvbi12YXJpYWJsZT8gJ2ZvbykpKSkKKworKHdpdGgtdGVzdC1wcmVmaXggImNvbmRpdGlvbi12 YXJpYWJsZS1uYW1lIgorCisgIChwYXNzLWlmICJtYWtlLWNvbmRpdGlvbi12YXJpYWJsZSB3aXRo IG5hbWUgYmluZHMgbmFtZSIKKyAgICAobGV0KiAoKGMgKG1ha2UtY29uZGl0aW9uLXZhcmlhYmxl ICdjb25kaXRpb24tdmFyaWFibGUtbmFtZS0xKSkpCisgICAgICAoZXE/IChjb25kaXRpb24tdmFy aWFibGUtbmFtZSBjKSAnY29uZGl0aW9uLXZhcmlhYmxlLW5hbWUtMSkpKQorCisgIChwYXNzLWlm ICJtYWtlLWNvbmRpdGlvbi12YXJpYWJsZSB3aXRob3V0IG5hbWUgZG9lcyBub3QgYmluZCBuYW1l IgorICAgIChsZXQqICgoYyAobWFrZS1jb25kaXRpb24tdmFyaWFibGUpKSkKKyAgICAgIChub3Qg KGNvbmRpdGlvbi12YXJpYWJsZS1uYW1lIGMpKSkpKQorCisod2l0aC10ZXN0LXByZWZpeCAiY29u ZGl0aW9uLXZhcmlhYmxlLXNwZWNpZmljIgorCisgIChwYXNzLWlmICJjb25kaXRpb24tdmFyaWFi bGUtc3BlY2lmaWMgaXMgaW5pdGlhbGx5ICNmIgorICAgIChsZXQgKChjIChtYWtlLWNvbmRpdGlv bi12YXJpYWJsZSAnY29uZGl0aW9uLXZhcmlhYmxlLXNwZWNpZmljLTEpKSkKKyAgICAgIChub3Qg KGNvbmRpdGlvbi12YXJpYWJsZS1zcGVjaWZpYyBjKSkpKQorCisgIChwYXNzLWlmICJjb25kaXRp b24tdmFyaWFibGUtc3BlY2lmaWMtc2V0ISBjYW4gc2V0IHZhbHVlIgorICAgIChsZXQgKChjICht YWtlLWNvbmRpdGlvbi12YXJpYWJsZSAnY29uZGl0aW9uLXZhcmlhYmxlLXNwZWNpZmljLTEpKSkK KyAgICAgIChjb25kaXRpb24tdmFyaWFibGUtc3BlY2lmaWMtc2V0ISBjICJoZWxsbyIpCisgICAg ICAoZXF1YWw/IChjb25kaXRpb24tdmFyaWFibGUtc3BlY2lmaWMgYykgImhlbGxvIikpKSkKKwor KHdpdGgtdGVzdC1wcmVmaXggImNvbmRpdGlvbi12YXJpYWJsZS1zaWduYWwhIgorICAKKyAgKHBh c3MtaWYgImNvbmRpdGlvbi12YXJpYWJsZS1zaWduYWwhIHdha2VzIHVwIHNpbmdsZSB0aHJlYWQi CisgICAgKGxldCogKChtIChtYWtlLW11dGV4ICdjb25kaXRpb24tdmFyaWFibGUtc2lnbmFsLTEp KQorCSAgIChjIChtYWtlLWNvbmRpdGlvbi12YXJpYWJsZSAnY29uZGl0aW9uLXZhcmlhYmxlLXNp Z25hbC0xKSkKKwkgICAodCAobWFrZS10aHJlYWQgKGxhbWJkYSAoKSAKKwkJCSAgICAgKG11dGV4 LWxvY2shIG0pIAorCQkJICAgICAoY29uZGl0aW9uLXZhcmlhYmxlLXNpZ25hbCEgYykgCisJCQkg ICAgIChtdXRleC11bmxvY2shIG0pKSkpKQorICAgICAgKG11dGV4LWxvY2shIG0pCisgICAgICAo dGhyZWFkLXN0YXJ0ISB0KQorICAgICAgKG11dGV4LXVubG9jayEgbSBjKSkpKQorCisod2l0aC10 ZXN0LXByZWZpeCAiY29uZGl0aW9uLXZhcmlhYmxlLWJyb2FkY2FzdCEiCisKKyAgKHBhc3MtaWYg ImNvbmRpdGlvbi12YXJpYWJsZS1icm9hZGNhc3QhIHdha2VzIHVwIG11bHRpcGxlIHRocmVhZHMi CisgICAgKGxldCogKChzZW0gMCkKKwkgICAoYzEgKG1ha2UtY29uZGl0aW9uLXZhcmlhYmxlICdj b25kaXRpb24tdmFyaWFibGUtYnJvYWRjYXN0LTEtYSkpCisJICAgKG0xIChtYWtlLW11dGV4ICdj b25kaXRpb24tdmFyaWFibGUtYnJvYWRjYXN0LTEtYSkpCisJICAgKGMyIChtYWtlLWNvbmRpdGlv bi12YXJpYWJsZSAnY29uZGl0aW9uLXZhcmlhYmxlLWJyb2FkY2FzdC0xLWIpKQorCSAgIChtMiAo bWFrZS1tdXRleCAnY29uZGl0aW9uLXZhcmlhYmxlLWJyb2FkY2FzdC0xLWIpKQorCSAgIChpbmMt c2VtISAobGFtYmRhICgpIAorCQkgICAgICAgKG11dGV4LWxvY2shIG0xKQorCQkgICAgICAgKHNl dCEgc2VtICgrIHNlbSAxKSkKKwkJICAgICAgIChjb25kaXRpb24tdmFyaWFibGUtYnJvYWRjYXN0 ISBjMSkKKwkJICAgICAgIChtdXRleC11bmxvY2shIG0xKSkpCisJICAgKGRlYy1zZW0hIChsYW1i ZGEgKCkKKwkJICAgICAgIChtdXRleC1sb2NrISBtMSkKKwkJICAgICAgICh3aGlsZSAoZXF2PyBz ZW0gMCkgKHdhaXQtY29uZGl0aW9uLXZhcmlhYmxlIGMxIG0xKSkKKwkJICAgICAgIChzZXQhIHNl bSAoLSBzZW0gMSkpCisJCSAgICAgICAobXV0ZXgtdW5sb2NrISBtMSkpKQorCSAgICh0MSAobWFr ZS10aHJlYWQgKGxhbWJkYSAoKSAKKwkJCSAgICAgIChtdXRleC1sb2NrISBtMikKKwkJCSAgICAg IChpbmMtc2VtISkKKwkJCSAgICAgIChtdXRleC11bmxvY2shIG0yIGMyKQorCQkJICAgICAgKGlu Yy1zZW0hKSkpKQorCSAgICh0MiAobWFrZS10aHJlYWQgKGxhbWJkYSAoKSAKKwkJCSAgICAgICht dXRleC1sb2NrISBtMikKKwkJCSAgICAgIChpbmMtc2VtISkKKwkJCSAgICAgIChtdXRleC11bmxv Y2shIG0yIGMyKQorCQkJICAgICAgKGluYy1zZW0hKSkpKSkKKyAgICAgICh0aHJlYWQtc3RhcnQh IHQxKQorICAgICAgKHRocmVhZC1zdGFydCEgdDIpCisgICAgICAoZGVjLXNlbSEpCisgICAgICAo ZGVjLXNlbSEpCisgICAgICAobXV0ZXgtbG9jayEgbTIpCisgICAgICAoY29uZGl0aW9uLXZhcmlh YmxlLWJyb2FkY2FzdCEgYzIpCisgICAgICAobXV0ZXgtdW5sb2NrISBtMikKKyAgICAgIChkZWMt c2VtISkKKyAgICAgIChkZWMtc2VtISkpKSkKKworKHdpdGgtdGVzdC1wcmVmaXggInRpbWU/Igor CisgIChwYXNzLWlmICJjdXJyZW50LXRpbWUgaXMgdGltZSIgKHRpbWU/IChjdXJyZW50LXRpbWUp KSkKKyAgKHBhc3MtaWYgIm51bWJlciBpcyBub3QgdGltZSIgKG5vdCAodGltZT8gMTIzKSkpCisg IChwYXNzLWlmICJzeW1ib2wgbm90IHRpbWUiIChub3QgKHRpbWU/ICdmb28pKSkpCisKKyh3aXRo LXRlc3QtcHJlZml4ICJ0aW1lLT5zZWNvbmRzIgorCisgIChwYXNzLWlmICJ0aW1lLT5zZWNvbmRz IG1ha2VzIHRpbWUgaW50byByYXRpb25hbCIKKyAgICAocmF0aW9uYWw/ICh0aW1lLT5zZWNvbmRz IChjdXJyZW50LXRpbWUpKSkpCisKKyAgKHBhc3MtaWYgInRpbWUtPnNlY29uZHMgaXMgcmV2ZXJz aWJsZSIKKyAgICAobGV0ICgodCAoY3VycmVudC10aW1lKSkpCisgICAgICAoZXF1YWw/IHQgKHNl Y29uZHMtPnRpbWUgKHRpbWUtPnNlY29uZHMgdCkpKSkpKQorCisod2l0aC10ZXN0LXByZWZpeCAi c2Vjb25kcy0+dGltZSIKKworICAocGFzcy1pZiAic2Vjb25kcy0+dGltZSBtYWtlcyByYXRpb25h bCBpbnRvIHRpbWUiCisgICAgKHRpbWU/IChzZWNvbmRzLT50aW1lIDEyMy40NTYpKSkKKworICAo cGFzcy1pZiAic2Vjb25kcy0+dGltZSBpcyByZXZlcnNpYmxlIgorICAgIChsZXQgKCh0ICh0aW1l LT5zZWNvbmRzIChjdXJyZW50LXRpbWUpKSkpCisgICAgICAoZXF1YWw/IHQgKHRpbWUtPnNlY29u ZHMgKHNlY29uZHMtPnRpbWUgdCkpKSkpKQorCisod2l0aC10ZXN0LXByZWZpeCAiY3VycmVudC1l eGNlcHRpb24taGFuZGxlciIKKworICAocGFzcy1pZiAiY3VycmVudCBoYW5kbGVyIHJldHVybmVk IGF0IHRvcCBsZXZlbCIKKyAgICAocHJvY2VkdXJlPyAoY3VycmVudC1leGNlcHRpb24taGFuZGxl cikpKQorCisgIChwYXNzLWlmICJzcGVjaWZpZWQgaGFuZGxlciBzZXQgdW5kZXIgd2l0aC1leGNl cHRpb24taGFuZGxlciIKKyAgICAobGV0ICgoaCAobGFtYmRhIChrZXkgLiBhcmdzKSAnbm90aGlu ZykpKQorICAgICAgKHdpdGgtZXhjZXB0aW9uLWhhbmRsZXIgaCAobGFtYmRhICgpIChlcT8gKGN1 cnJlbnQtZXhjZXB0aW9uLWhhbmRsZXIpIAorCQkJCQkJaCkpKSkpCisKKyAgKHBhc3MtaWYgIm11 bHRpcGxlIGxldmVscyBvZiBoYW5kbGVyIG5lc3RpbmciCisgICAgKGxldCAoKGggKGxhbWJkYSAo a2V5IC4gYXJncykgJ25vdGhpbmcpKQorCSAgKGkgKGN1cnJlbnQtZXhjZXB0aW9uLWhhbmRsZXIp KSkKKyAgICAgIChhbmQgKHdpdGgtZXhjZXB0aW9uLWhhbmRsZXIgaCAobGFtYmRhICgpIAorCQkJ CSAgICAgICAoZXE/IChjdXJyZW50LWV4Y2VwdGlvbi1oYW5kbGVyKSBoKSkpCisJICAgKGVxPyAo Y3VycmVudC1leGNlcHRpb24taGFuZGxlcikgaSkpKSkKKworICAocGFzcy1pZiAiZXhjZXB0aW9u IGhhbmRsZXIgaW5zdGFsbGF0aW9uIGlzIHRocmVhZC1zYWZlIgorICAgIChsZXQqICgoaDEgKGN1 cnJlbnQtZXhjZXB0aW9uLWhhbmRsZXIpKQorCSAgIChoMiAobGFtYmRhIChrZXkgLiBhcmdzKSAn bm90aGluZy0yKSkKKwkgICAobSAobWFrZS1tdXRleCAnY3VycmVudC1leGNlcHRpb24taGFuZGxl ci00KSkKKwkgICAoYyAobWFrZS1jb25kaXRpb24tdmFyaWFibGUgJ2N1cnJlbnQtZXhjZXB0aW9u LWhhbmRsZXItNCkpCisJICAgKHQgKG1ha2UtdGhyZWFkIChsYW1iZGEgKCkgCisJCQkgICAgICh3 aXRoLWV4Y2VwdGlvbi1oYW5kbGVyIAorCQkJICAgICAgaDIgKGxhbWJkYSAoKSAKKwkJCQkgICAo bXV0ZXgtbG9jayEgbSkgCisJCQkJICAgKGNvbmRpdGlvbi12YXJpYWJsZS1zaWduYWwhIGMpIAor CQkJCSAgICh3YWl0LWNvbmRpdGlvbi12YXJpYWJsZSBjIG0pCisJCQkJICAgKGFuZCAoZXE/IChj dXJyZW50LWV4Y2VwdGlvbi1oYW5kbGVyKSBoMikKKwkJCQkJKG11dGV4LXVubG9jayEgbSkpKSkp CisJCQkgICAnY3VycmVudC1leGNlcHRpb24taGFuZGxlci00KSkpCisgICAgICAobXV0ZXgtbG9j ayEgbSkKKyAgICAgICh0aHJlYWQtc3RhcnQhIHQpCisgICAgICAod2FpdC1jb25kaXRpb24tdmFy aWFibGUgYyBtKQorICAgICAgKGFuZCAoZXE/IChjdXJyZW50LWV4Y2VwdGlvbi1oYW5kbGVyKSBo MSkKKwkgICAoY29uZGl0aW9uLXZhcmlhYmxlLXNpZ25hbCEgYykKKwkgICAobXV0ZXgtdW5sb2Nr ISBtKQorCSAgICh0aHJlYWQtam9pbiEgdCkpKSkpCisKKyh3aXRoLXRlc3QtcHJlZml4ICJ1bmNh dWdodC1leGNlcHRpb24tcmVhc29uIgorCisgIChwYXNzLWlmICJpbml0aWFsIGhhbmRsZXIgY2Fw dHVyZXMgdG9wIGxldmVsIGV4Y2VwdGlvbiIKKyAgICAobGV0ICgodCAobWFrZS10aHJlYWQgKGxh bWJkYSAoKSAocmFpc2UgJ2ZvbykpKSkKKwkgIChzdWNjZXNzICNmKSkKKyAgICAgICh0aHJlYWQt c3RhcnQhIHQpCisgICAgICAod2l0aC1leGNlcHRpb24taGFuZGxlcgorICAgICAgIChsYW1iZGEg KG9iaikKKwkgKGFuZCAodW5jYXVnaHQtZXhjZXB0aW9uPyBvYmopCisJICAgICAgKGVxPyAodW5j YXVnaHQtZXhjZXB0aW9uLXJlYXNvbiBvYmopICdmb28pCisJICAgICAgKHNldCEgc3VjY2VzcyAj dCkpKQorICAgICAgIChsYW1iZGEgKCkgKHRocmVhZC1qb2luISB0KSkpCisgICAgICBzdWNjZXNz KSkKKworICAocGFzcy1pZiAiaW5pdGlhbCBoYW5kbGVyIGNhcHR1cmVzIG5vbi1TUkZJLTE4IHRo cm93IgorICAgIChsZXQgKCh0IChtYWtlLXRocmVhZCAobGFtYmRhICgpICh0aHJvdyAnZm9vKSkp KQorCSAgKHN1Y2Nlc3MgI2YpKQorICAgICAgKHRocmVhZC1zdGFydCEgdCkKKyAgICAgICh3aXRo LWV4Y2VwdGlvbi1oYW5kbGVyCisgICAgICAgKGxhbWJkYSAob2JqKQorCSAoYW5kICh1bmNhdWdo dC1leGNlcHRpb24/IG9iaikKKwkgICAgICAoZXE/ICh1bmNhdWdodC1leGNlcHRpb24tcmVhc29u IG9iaikgJ2ZvbykKKwkgICAgICAoc2V0ISBzdWNjZXNzICN0KSkpCisgICAgICAgKGxhbWJkYSAo KSAodGhyZWFkLWpvaW4hIHQpKSkKKyAgICAgIHN1Y2Nlc3MpKSkKLS0gCjEuNS40LjMKCg== ------=_Part_6103_12421095.1210827934668--