From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Wilfred Hughes Newsgroups: gmane.lisp.guile.bugs Subject: bug#24374: Favour docstrings for Guile functions Date: Mon, 5 Sep 2016 22:34:23 -0400 Message-ID: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a114c8beab07c70053bcda30c X-Trace: blaine.gmane.org 1473129385 24146 195.159.176.226 (6 Sep 2016 02:36:25 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 6 Sep 2016 02:36:25 +0000 (UTC) To: 24374@debbugs.gnu.org Original-X-From: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Tue Sep 06 04:36:20 2016 Return-path: Envelope-to: guile-bugs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bh6FF-0005CN-EB for guile-bugs@m.gmane.org; Tue, 06 Sep 2016 04:36:17 +0200 Original-Received: from localhost ([::1]:57940 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bh6FC-0000sx-Rv for guile-bugs@m.gmane.org; Mon, 05 Sep 2016 22:36:14 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:38866) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bh6F4-0000sX-6u for bug-guile@gnu.org; Mon, 05 Sep 2016 22:36:08 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bh6F0-0003uq-0E for bug-guile@gnu.org; Mon, 05 Sep 2016 22:36:05 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:53027) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bh6Ez-0003ul-Sb for bug-guile@gnu.org; Mon, 05 Sep 2016 22:36:01 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1bh6Ez-0005l4-Ku for bug-guile@gnu.org; Mon, 05 Sep 2016 22:36:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Wilfred Hughes Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Tue, 06 Sep 2016 02:36:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 24374 X-GNU-PR-Package: guile X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-guile@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.147312930422063 (code B ref -1); Tue, 06 Sep 2016 02:36:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 6 Sep 2016 02:35:04 +0000 Original-Received: from localhost ([127.0.0.1]:50739 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bh6E3-0005jn-GJ for submit@debbugs.gnu.org; Mon, 05 Sep 2016 22:35:04 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:47815) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bh6E1-0005jG-5V for submit@debbugs.gnu.org; Mon, 05 Sep 2016 22:35:02 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bh6Dt-0003fp-6h for submit@debbugs.gnu.org; Mon, 05 Sep 2016 22:34:55 -0400 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:60043) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bh6Dt-0003fe-2s for submit@debbugs.gnu.org; Mon, 05 Sep 2016 22:34:53 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:38773) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bh6Dp-0000mI-8s for bug-guile@gnu.org; Mon, 05 Sep 2016 22:34:51 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bh6Dl-0003eB-0g for bug-guile@gnu.org; Mon, 05 Sep 2016 22:34:48 -0400 Original-Received: from mail-qk0-x234.google.com ([2607:f8b0:400d:c09::234]:34818) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bh6Dk-0003dS-PV for bug-guile@gnu.org; Mon, 05 Sep 2016 22:34:44 -0400 Original-Received: by mail-qk0-x234.google.com with SMTP id v123so204793551qkh.2 for ; Mon, 05 Sep 2016 19:34:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=wilfred-me-uk.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=SJZnWRCotAKLdwUMnqosXKOKC9p73xduS4K6q8APRnA=; b=VkoDTt16FNFjBoa3oFBdtw8GXuetIWmc06/oJnizE9VSpKaehRNlOnEUeDGVr2y5aU pEdcOpOjbr2NU0dVp1eMXmrgL+YhTVOHuwYNnWnTa3mDrRIQj7+5u93PlSVYqp43IAzr maVwlvtZi/udlj05UH+Xm65e1WIIOsZmo1STFjfy8IeFcV2/BSHwdDrESBhxCx3zUSco amgKWSWr1BPO42oMAixtxUHmj/SroicfyQTjYC1BLore6NEb/b9u8OvdiVdCBHBXYKqy J6pBq1+rB+IxkVEnLyzB0+/92RPggXMiOpwlR1X+4IrVMSRuv9Vxv4l/Kb5/GAVBWFZL B/+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=SJZnWRCotAKLdwUMnqosXKOKC9p73xduS4K6q8APRnA=; b=ZKr0/0qdvOC6ecywWNGMbUc8vC4A3EM7uU3lsxeoXYaY0MTLPQ2iLWDHPTcProoQNE fEmWrzpBksbp4eprDHPblyGzxFTG221Bky8QhwkaHAbOQT0Vzn9UCKrXwIXtoI1n/MI5 L5ZqFIfWWFsObiNZQMxROJc4j3firbiow1t+LtkBzjw9QfroB4PqMZVpukHGFE/gJl/X 8s4d6yDjHzZDkhzHjeuGNyfCo/wSJaL6Hpwxq0XtxJ/DLOJMcr2K6hiVw+Ql2Cb7hkq2 z7EdQFU37JEUU2Vj3N3aeWs/tzY4p9O67OVcvlXhAdHjiW0XqV0/3hVJpOb5T06NUJEm tViw== X-Gm-Message-State: AE9vXwOApqHytdLXYxGwTDnWywRgDmYPfbgoL1ydmkaKqzRLsmS4Jv/xMuKi562M3xLFgutHsDx0jfbiKa9RjQ== X-Received: by 10.55.3.20 with SMTP id 20mr40580731qkd.34.1473129284108; Mon, 05 Sep 2016 19:34:44 -0700 (PDT) Original-Received: by 10.200.46.200 with HTTP; Mon, 5 Sep 2016 19:34:23 -0700 (PDT) X-Originating-IP: [146.115.86.181] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-guile@gnu.org List-Id: "Bug reports for GUILE, GNU's Ubiquitous Extension Language" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-guile-bounces+guile-bugs=m.gmane.org@gnu.org Original-Sender: "bug-guile" Xref: news.gmane.org gmane.lisp.guile.bugs:8408 Archived-At: --001a114c8beab07c70053bcda30c Content-Type: multipart/alternative; boundary=001a114c8beab07c6a053bcda30a --001a114c8beab07c6a053bcda30a Content-Type: text/plain; charset=UTF-8 Guile has many well-documented functions that use docstring conventions, but aren't actual docstrings. This patch changes them to use proper docstrings. I've fixed a few typos, and tweaked the wording on peek, but otherwise the documentation is unchanged. --001a114c8beab07c6a053bcda30a Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Guile has many well-documented functions that use doc= string conventions, but aren't actual docstrings.

This pat= ch changes them to use proper docstrings. I've fixed a few typos, and t= weaked the wording on peek, but otherwise the documentation is unchanged.
--001a114c8beab07c6a053bcda30a-- --001a114c8beab07c70053bcda30c Content-Type: text/x-patch; charset=US-ASCII; name="0001-Favor-docstrings-for-describing-the-purpose-of-funct.patch" Content-Disposition: attachment; filename="0001-Favor-docstrings-for-describing-the-purpose-of-funct.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_isqv4goa0 RnJvbSA2NWIxZTI1MWYwZTU0ZTIyMjhjODcyMjc4OTQ5ODJlNzAwZGRlZTg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXaWxmcmVkIEh1Z2hlcyA8bWVAd2lsZnJlZC5tZS51az4KRGF0 ZTogTW9uLCA1IFNlcCAyMDE2IDIyOjIzOjEzIC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gRmF2b3Ig ZG9jc3RyaW5ncyBmb3IgZGVzY3JpYmluZyB0aGUgcHVycG9zZSBvZiBmdW5jdGlvbnMuCgoqIG1v ZHVsZS9pY2UtOS9ib290LTkuc2NtOiBXaGVyZSBmdW5jdGlvbnMgaGF2ZSBkb2NzdHJpbmctc3R5 bGUKICBjb21tZW50cywgbWFrZSB0aGVtIHByb3BlciBkb2NzdHJpbmdzLgotLS0KIG1vZHVsZS9p Y2UtOS9ib290LTkuc2NtIHwgMjY2ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwMyBpbnNlcnRpb25zKCspLCAxNjMgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbW9kdWxlL2ljZS05L2Jvb3QtOS5zY20gYi9tb2R1bGUv aWNlLTkvYm9vdC05LnNjbQppbmRleCA5OTU0M2U3Li4wNTg0MGQ4IDEwMDY0NAotLS0gYS9tb2R1 bGUvaWNlLTkvYm9vdC05LnNjbQorKysgYi9tb2R1bGUvaWNlLTkvYm9vdC05LnNjbQpAQCAtMTU5 LDE2ICsxNTksMTMgQEAgYS1jb250CiA7Ozsge1NpbXBsZSBEZWJ1Z2dpbmcgVG9vbHN9CiA7OzsK IAotOzsgcGVlayB0YWtlcyBhbnkgbnVtYmVyIG9mIGFyZ3VtZW50cywgd3JpdGVzIHRoZW0gdG8g dGhlCi07OyBjdXJyZW50IG91cHV0IHBvcnQsIGFuZCByZXR1cm5zIHRoZSBsYXN0IGFyZ3VtZW50 LgotOzsgSXQgaXMgaGFuZHkgdG8gd3JhcCBhcm91bmQgYW4gZXhwcmVzc2lvbiB0byBsb29rIGF0 Ci07OyBhIHZhbHVlIGVhY2ggdGltZSBpcyBldmFsdWF0ZWQsIGUuZy46Ci07OwotOzsgICAgICAo KyAxMCAodHJvdWJsZXNvbWUtZm4pKQotOzsgICAgICA9PiAoKyAxMCAocGsgJ3Ryb3VibGVzb21l LWZuLXJldHVybmVkICh0cm91Ymxlc29tZS1mbikpKQotOzsKLQogKGRlZmluZSAocGVlayAuIHN0 dWZmKQorICAiV3JpdGUgYXJndW1lbnRzIHRvIHRoZSBjdXJyZW50IG91dHB1dCBwb3J0LCBhbmQg cmV0dXJuIHRoZSBsYXN0IGFyZ3VtZW50LgorCitUaGlzIGlzIGhhbmR5IGZvciB0cmFjaW5nIGZ1 bmN0aW9uIGNhbGxzLCBlLmcuOgorCisoKyAxMCAodHJvdWJsZXNvbWUtZm4pKQorPT4gKCsgMTAg KHBrICd0cm91Ymxlc29tZS1mbi1yZXR1cm5lZCAodHJvdWJsZXNvbWUtZm4pKSkiCiAgIChuZXds aW5lKQogICAoZGlzcGxheSAiOzs7ICIpCiAgICh3cml0ZSBzdHVmZikKQEAgLTE5MywxMSArMTkw LDExIEBAIGEtY29udAogICAoaWYgKG5vdCAobWVtcSBzeW0gKmZlYXR1cmVzKikpCiAgICAgICAo c2V0ISAqZmVhdHVyZXMqIChjb25zIHN5bSAqZmVhdHVyZXMqKSkpKQogCi07OyBSZXR1cm4gI3Qg aWZmIEZFQVRVUkUgaXMgYXZhaWxhYmxlIHRvIHRoaXMgR3VpbGUgaW50ZXJwcmV0ZXIuICBJbiBT TElCLAotOzsgcHJvdmlkZWQ/IGFsc28gY2hlY2tzIHRvIHNlZSBpZiB0aGUgbW9kdWxlIGlzIGF2 YWlsYWJsZS4gIFdlIHNob3VsZCBkbyB0aGF0Ci07OyB0b28sIGJ1dCBkb24ndC4KKzs7IEluIFNM SUIsIHByb3ZpZGVkPyBhbHNvIGNoZWNrcyB0byBzZWUgaWYgdGhlIG1vZHVsZSBpcyBhdmFpbGFi bGUuICBXZQorOzsgc2hvdWxkIGRvIHRoYXQgdG9vLCBidXQgZG9uJ3QuCiAKIChkZWZpbmUgKHBy b3ZpZGVkPyBmZWF0dXJlKQorICAiUmV0dXJuICN0IGlmZiBGRUFUVVJFIGlzIGF2YWlsYWJsZSB0 byB0aGlzIEd1aWxlIGludGVycHJldGVyLiIKICAgKGFuZCAobWVtcSBmZWF0dXJlICpmZWF0dXJl cyopICN0KSkKIAogDApAQCAtMjk5LDEzICsyOTYsMTAgQEAgYS1jb250CiA7OzsgKG9yLW1hcCBm biBsc3QpIGlzIGxpa2UgKG9yIChmbiAoY2FyIGxzdCkpIChmbiAoY2FkciBsc3QpKSAoZm4uLi4p IC4uLikKIDs7OwogCi07OyBhbmQtbWFwIGYgbAotOzsKLTs7IEFwcGx5IGYgdG8gc3VjY2Vzc2l2 ZSBlbGVtZW50cyBvZiBsIHVudGlsIGV4aGF1c3Rpb24gb3IgZiByZXR1cm5zICNmLgotOzsgSWYg cmV0dXJuaW5nIGVhcmx5LCByZXR1cm4gI2YuICBPdGhlcndpc2UsIHJldHVybiB0aGUgbGFzdCB2 YWx1ZSByZXR1cm5lZAotOzsgYnkgZi4gIElmIGYgaGFzIG5ldmVyIGJlZW4gY2FsbGVkIGJlY2F1 c2UgbCBpcyBlbXB0eSwgcmV0dXJuICN0LgotOzsKIChkZWZpbmUgKGFuZC1tYXAgZiBsc3QpCisg ICJBcHBseSBGIHRvIHN1Y2Nlc3NpdmUgZWxlbWVudHMgb2YgTFNUIHVudGlsIGV4aGF1c3Rpb24g b3IgRiByZXR1cm5zICNmLgorSWYgcmV0dXJuaW5nIGVhcmx5LCByZXR1cm4gI2YuICBPdGhlcndp c2UsIHJldHVybiB0aGUgbGFzdCB2YWx1ZSByZXR1cm5lZAorYnkgRi4gIElmIEYgaGFzIG5ldmVy IGJlZW4gY2FsbGVkIGJlY2F1c2UgTFNUIGlzIGVtcHR5LCByZXR1cm4gI3QuIgogICAobGV0IGxv b3AgKChyZXN1bHQgI3QpCiAgICAgICAgICAgICAgKGwgbHN0KSkKICAgICAoYW5kIHJlc3VsdApA QCAtMzEzLDEyICszMDcsOSBAQCBhLWNvbnQKICAgICAgICAgICAgICAgICAgIHJlc3VsdCkKICAg ICAgICAgICAgICAobG9vcCAoZiAoY2FyIGwpKSAoY2RyIGwpKSkpKSkKIAotOzsgb3ItbWFwIGYg bAotOzsKLTs7IEFwcGx5IGYgdG8gc3VjY2Vzc2l2ZSBlbGVtZW50cyBvZiBsIHVudGlsIGV4aGF1 c3Rpb24gb3Igd2hpbGUgZiByZXR1cm5zICNmLgotOzsgSWYgcmV0dXJuaW5nIGVhcmx5LCByZXR1 cm4gdGhlIHJldHVybiB2YWx1ZSBvZiBmLgotOzsKIChkZWZpbmUgKG9yLW1hcCBmIGxzdCkKKyAg IkFwcGx5IEYgdG8gc3VjY2Vzc2l2ZSBlbGVtZW50cyBvZiBMU1QgdW50aWwgZXhoYXVzdGlvbiBv ciB3aGlsZSBGIHJldHVybnMgI2YuCitJZiByZXR1cm5pbmcgZWFybHksIHJldHVybiB0aGUgcmV0 dXJuIHZhbHVlIG9mIEYuIgogICAobGV0IGxvb3AgKChyZXN1bHQgI2YpCiAgICAgICAgICAgICAg KGwgbHN0KSkKICAgICAob3IgcmVzdWx0CkBAIC0zNTMsOSArMzQ0LDggQEAgYS1jb250CiAgICAg ICAgICAgICAgKGNoYXJfcHJlZCAoc3RyaW5nLXJlZiBzICgxLSBlbmQpKSkpCiAgICAgICAgIChz dHJpbmctZXZlcnktYy1jb2RlIGNoYXJfcHJlZCBzIHN0YXJ0IGVuZCkpKSkKIAotOzsgQSB2YXJp YW50IG9mIHN0cmluZy1maWxsISB0aGF0IHdlIGtlZXAgZm9yIGNvbXBhdGFiaWxpdHkKLTs7CiAo ZGVmaW5lIChzdWJzdHJpbmctZmlsbCEgc3RyIHN0YXJ0IGVuZCBmaWxsKQorICAiQSB2YXJpYW50 IG9mIHN0cmluZy1maWxsISB0aGF0IHdlIGtlZXAgZm9yIGNvbXBhdGliaWxpdHkuIgogICAoc3Ry aW5nLWZpbGwhIHN0ciBmaWxsIHN0YXJ0IGVuZCkpCiAKIAwKQEAgLTE2ODYsMTAgKzE2NzYsMTAg QEAgd3JpdHRlbiBpbnRvIHRoZSBwb3J0IGlzIHJldHVybmVkLiIKIDs7OyB7TG9hZGluZyBieSBw YXRoc30KIDs7OwogCi07OzsgTG9hZCBhIFNjaGVtZSBzb3VyY2UgZmlsZSBuYW1lZCBOQU1FLCBz ZWFyY2hpbmcgZm9yIGl0IGluIHRoZQotOzs7IGRpcmVjdG9yaWVzIGxpc3RlZCBpbiAlbG9hZC1w YXRoLCBhbmQgYXBwbHlpbmcgZWFjaCBvZiB0aGUgZmlsZQotOzs7IG5hbWUgZXh0ZW5zaW9ucyBs aXN0ZWQgaW4gJWxvYWQtZXh0ZW5zaW9ucy4KIChkZWZpbmUgKGxvYWQtZnJvbS1wYXRoIG5hbWUp CisgICJMb2FkIGEgU2NoZW1lIHNvdXJjZSBmaWxlIG5hbWVkIE5BTUUsIHNlYXJjaGluZyBmb3Ig aXQgaW4gdGhlCitkaXJlY3RvcmllcyBsaXN0ZWQgaW4gJWxvYWQtcGF0aCwgYW5kIGFwcGx5aW5n IGVhY2ggb2YgdGhlIGZpbGUKK25hbWUgZXh0ZW5zaW9ucyBsaXN0ZWQgaW4gJWxvYWQtZXh0ZW5z aW9ucy4iCiAgIChzdGFydC1zdGFjayAnbG9hZC1zdGFjawogICAgICAgICAgICAgICAgKHByaW1p dGl2ZS1sb2FkLXBhdGggbmFtZSkpKQogCkBAIC0xOTc4LDEwICsxOTY4LDkgQEAgd3JpdHRlbiBp bnRvIHRoZSBwb3J0IGlzIHJldHVybmVkLiIKIAogOzsgbWFrZS1tb2R1bGUgJm9wdCBzaXplIHVz ZXMgYmluZGVyCiA7OwotOzsgQ3JlYXRlIGEgbmV3IG1vZHVsZSwgcGVyaGFwcyB3aXRoIGEgcGFy dGljdWxhciBzaXplIG9mIG9iYXJyYXksCi07OyBpbml0aWFsIHVzZXMgbGlzdCwgb3IgYmluZGlu ZyBwcm9jZWR1cmUuCi07OwogKGRlZmluZSogKG1ha2UtbW9kdWxlICM6b3B0aW9uYWwgKHNpemUg MzEpICh1c2VzICcoKSkgKGJpbmRlciAjZikpCisgICJDcmVhdGUgYSBuZXcgbW9kdWxlLCBwZXJo YXBzIHdpdGggYSBwYXJ0aWN1bGFyIHNpemUgb2Ygb2JhcnJheSwKK2luaXRpYWwgdXNlcyBsaXN0 LCBvciBiaW5kaW5nIHByb2NlZHVyZS4iCiAgIChpZiAobm90IChpbnRlZ2VyPyBzaXplKSkKICAg ICAgIChlcnJvciAiSWxsZWdhbCBzaXplIHRvIG1ha2UtbW9kdWxlLiIgc2l6ZSkpCiAgIChpZiAo bm90IChhbmQgKGxpc3Q/IHVzZXMpCkBAIC0yMDEwLDE1ICsxOTk5LDE1IEBAIHdyaXR0ZW4gaW50 byB0aGUgcG9ydCBpcyByZXR1cm5lZC4iCiAgIChjb25zIG1vZHVsZSBwcm9jKSkKIAogKGRlZmlu ZSogKG1vZHVsZS1vYnNlcnZlLXdlYWsgbW9kdWxlIG9ic2VydmVyLWlkICM6b3B0aW9uYWwgKHBy b2Mgb2JzZXJ2ZXItaWQpKQotICA7OyBSZWdpc3RlciBQUk9DIGFzIGFuIG9ic2VydmVyIG9mIE1P RFVMRSB1bmRlciBuYW1lIE9CU0VSVkVSLUlEICh3aGljaCBjYW4KLSAgOzsgYmUgYW55IFNjaGVt ZSBvYmplY3QpLiAgUFJPQyBpcyBpbnZva2VkIGFuZCBwYXNzZWQgTU9EVUxFIGFueSB0aW1lCi0g IDs7IE1PRFVMRSBpcyBtb2RpZmllZC4gIFBST0MgZ2V0cyB1bnJlZ2lzdGVyZWQgd2hlbiBPQlNF UlZFUi1JRCBnZXRzIEdDJ2QKLSAgOzsgKHRodXMsIGl0IGlzIG5ldmVyIHVucmVnaXN0ZXJlZCBp ZiBPQlNFUlZFUi1JRCBpcyBhbiBpbW1lZGlhdGUgdmFsdWUsCi0gIDs7IGZvciBpbnN0YW5jZSku CisgICJSZWdpc3RlciBQUk9DIGFzIGFuIG9ic2VydmVyIG9mIE1PRFVMRSB1bmRlciBuYW1lIE9C U0VSVkVSLUlEICh3aGljaCBjYW4KK2JlIGFueSBTY2hlbWUgb2JqZWN0KS4gIFBST0MgaXMgaW52 b2tlZCBhbmQgcGFzc2VkIE1PRFVMRSBhbnkgdGltZQorTU9EVUxFIGlzIG1vZGlmaWVkLiAgUFJP QyBnZXRzIHVucmVnaXN0ZXJlZCB3aGVuIE9CU0VSVkVSLUlEIGdldHMgR0MnZAorKHRodXMsIGl0 IGlzIG5ldmVyIHVucmVnaXN0ZXJlZCBpZiBPQlNFUlZFUi1JRCBpcyBhbiBpbW1lZGlhdGUgdmFs dWUsCitmb3IgaW5zdGFuY2UpLgogCi0gIDs7IFRoZSB0d28tYXJndW1lbnQgdmVyc2lvbiBpcyBr ZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5OiB3aGVuIGNhbGxlZAotICA7OyB3aXRoIHR3 byBhcmd1bWVudHMsIHRoZSBvYnNlcnZlciBnZXRzIHVucmVnaXN0ZXJlZCB3aGVuIGNsb3N1cmUg UFJPQwotICA7OyBnZXRzIEdDJ2QgKG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvIHVzZSBhbiBhbm9u eW1vdXMgbGFtYmRhIGZvciBQUk9DKS4KK1RoZSB0d28tYXJndW1lbnQgdmVyc2lvbiBpcyBrZXB0 IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5OiB3aGVuIGNhbGxlZAord2l0aCB0d28gYXJndW1l bnRzLCB0aGUgb2JzZXJ2ZXIgZ2V0cyB1bnJlZ2lzdGVyZWQgd2hlbiBjbG9zdXJlIFBST0MKK2dl dHMgR0MnZCAobWFraW5nIGl0IGltcG9zc2libGUgdG8gdXNlIGFuIGFub255bW91cyBsYW1iZGEg Zm9yIFBST0MpLiIKICAgKGhhc2hxLXNldCEgKG1vZHVsZS13ZWFrLW9ic2VydmVycyBtb2R1bGUp IG9ic2VydmVyLWlkIHByb2MpKQogCiAoZGVmaW5lIChtb2R1bGUtdW5vYnNlcnZlIHRva2VuKQpA QCAtMjA4MiwxMyArMjA3MSwxMCBAQCB3cml0dGVuIGludG8gdGhlIHBvcnQgaXMgcmV0dXJuZWQu IgogOzs7IG9mIE0uJycKIDs7OwogCi07OyBtb2R1bGUtc2VhcmNoIGZuIG0KLTs7Ci07OyByZXR1 cm4gdGhlIGZpcnN0IG5vbi0jZiByZXN1bHQgb2YgRk4gYXBwbGllZCB0byBNIGFuZCB0aGVuIHRv Ci07OyB0aGUgbW9kdWxlcyBpbiB0aGUgdXNlcyBvZiBtLCBhbmQgc28gb24gcmVjdXJzaXZlbHku ICBJZiBhbGwgYXBwbGljYXRpb25zCi07OyByZXR1cm4gI2YsIHRoZW4gc28gZG9lcyB0aGlzIGZ1 bmN0aW9uLgotOzsKIChkZWZpbmUgKG1vZHVsZS1zZWFyY2ggZm4gbSB2KQorICAiUmV0dXJuIHRo ZSBmaXJzdCBub24tI2YgcmVzdWx0IG9mIEZOIGFwcGxpZWQgdG8gTSBhbmQgdGhlbiB0bwordGhl IG1vZHVsZXMgaW4gdGhlIHVzZXMgb2YgTSwgYW5kIHNvIG9uIHJlY3Vyc2l2ZWx5LiAgSWYgYWxs IGFwcGxpY2F0aW9ucworcmV0dXJuICNmLCB0aGVuIHNvIGRvZXMgdGhpcyBmdW5jdGlvbi4iCiAg IChkZWZpbmUgKGxvb3AgcG9zKQogICAgIChhbmQgKHBhaXI/IHBvcykKICAgICAgICAgIChvciAo bW9kdWxlLXNlYXJjaCBmbiAoY2FyIHBvcykgdikKQEAgLTIxMDMsMjEgKzIwODksMTUgQEAgd3Jp dHRlbiBpbnRvIHRoZSBwb3J0IGlzIHJldHVybmVkLiIKIDs7OyBvZiBTIGluIE0gaGFzIGJlZW4g c2V0IHRvIHNvbWUgd2VsbC1kZWZpbmVkIHZhbHVlLgogOzs7CiAKLTs7IG1vZHVsZS1sb2NhbGx5 LWJvdW5kPyBtb2R1bGUgc3ltYm9sCi07OwotOzsgSXMgYSBzeW1ib2wgYm91bmQgKGludGVybmVk IGFuZCBkZWZpbmVkKSBsb2NhbGx5IGluIGEgZ2l2ZW4gbW9kdWxlPwotOzsKIChkZWZpbmUgKG1v ZHVsZS1sb2NhbGx5LWJvdW5kPyBtIHYpCisgICJJcyBzeW1ib2wgViBib3VuZCAoaW50ZXJuZWQg YW5kIGRlZmluZWQpIGxvY2FsbHkgaW4gbW9kdWxlIE0/IgogICAobGV0ICgodmFyIChtb2R1bGUt bG9jYWwtdmFyaWFibGUgbSB2KSkpCiAgICAgKGFuZCB2YXIKICAgICAgICAgICh2YXJpYWJsZS1i b3VuZD8gdmFyKSkpKQogCi07OyBtb2R1bGUtYm91bmQ/IG1vZHVsZSBzeW1ib2wKLTs7Ci07OyBJ cyBhIHN5bWJvbCBib3VuZCAoaW50ZXJuZWQgYW5kIGRlZmluZWQpIGFueXdoZXJlIGluIGEgZ2l2 ZW4gbW9kdWxlCi07OyBvciBpdHMgdXNlcz8KLTs7CiAoZGVmaW5lIChtb2R1bGUtYm91bmQ/IG0g dikKKyAgIklzIHN5bWJvbCBWIGJvdW5kIChpbnRlcm5lZCBhbmQgZGVmaW5lZCkgYW55d2hlcmUg aW4gbW9kdWxlIE0gb3IgaXRzCit1c2VzPyIKICAgKGxldCAoKHZhciAobW9kdWxlLXZhcmlhYmxl IG0gdikpKQogICAgIChhbmQgdmFyCiAgICAgICAgICAodmFyaWFibGUtYm91bmQ/IHZhcikpKSkK QEAgLTIxNDksMjIgKzIxMjksMTYgQEAgd3JpdHRlbiBpbnRvIHRoZSBwb3J0IGlzIHJldHVybmVk LiIKIChkZWZpbmUgKG1vZHVsZS1vYmFycmF5LXJlbW92ZSEgb2Iga2V5KQogICAoKGlmIChzeW1i b2w/IGtleSkgaGFzaHEtcmVtb3ZlISBoYXNoLXJlbW92ZSEpIG9iIGtleSkpCiAKLTs7IG1vZHVs ZS1zeW1ib2wtbG9jYWxseS1pbnRlcm5lZD8gbW9kdWxlIHN5bWJvbAotOzsKLTs7IGlzIGEgc3lt Ym9sIGludGVybmVkIChub3QgbmVjY2Vzc2FyaWx5IGRlZmluZWQpIGxvY2FsbHkgaW4gYSBnaXZl biBtb2R1bGUKLTs7IG9yIGl0cyB1c2VzPyAgSW50ZXJuZWQgc3ltYm9scyBzaGFkb3cgaW5oZXJp dGVkIGJpbmRpbmdzIGV2ZW4gaWYKLTs7IHRoZXkgYXJlIG5vdCB0aGVtc2VsdmVzIGJvdW5kIHRv IGEgZGVmaW5lZCB2YWx1ZS4KLTs7CiAoZGVmaW5lIChtb2R1bGUtc3ltYm9sLWxvY2FsbHktaW50 ZXJuZWQ/IG0gdikKKyAgIklzIHN5bWJvbCBWIGludGVybmVkIChub3QgbmVjY2Vzc2FyaWx5IGRl ZmluZWQpIGxvY2FsbHkgaW4gbW9kdWxlIE0KK29yIGl0cyB1c2VzPyAgSW50ZXJuZWQgc3ltYm9s cyBzaGFkb3cgaW5oZXJpdGVkIGJpbmRpbmdzIGV2ZW4gaWYgdGhleQorYXJlIG5vdCB0aGVtc2Vs dmVzIGJvdW5kIHRvIGEgZGVmaW5lZCB2YWx1ZS4iCiAgIChub3QgKG5vdCAobW9kdWxlLW9iYXJy YXktZ2V0LWhhbmRsZSAobW9kdWxlLW9iYXJyYXkgbSkgdikpKSkKIAotOzsgbW9kdWxlLXN5bWJv bC1pbnRlcm5lZD8gbW9kdWxlIHN5bWJvbAotOzsKLTs7IGlzIGEgc3ltYm9sIGludGVybmVkIChu b3QgbmVjY2Vzc2FyaWx5IGRlZmluZWQpIGFueXdoZXJlIGluIGEgZ2l2ZW4gbW9kdWxlCi07OyBv ciBpdHMgdXNlcz8gIEludGVybmVkIHN5bWJvbHMgc2hhZG93IGluaGVyaXRlZCBiaW5kaW5ncyBl dmVuIGlmCi07OyB0aGV5IGFyZSBub3QgdGhlbXNlbHZlcyBib3VuZCB0byBhIGRlZmluZWQgdmFs dWUuCi07OwogKGRlZmluZSAobW9kdWxlLXN5bWJvbC1pbnRlcm5lZD8gbSB2KQorICAiSXMgc3lt Ym9sIFYgaW50ZXJuZWQgKG5vdCBuZWNjZXNzYXJpbHkgZGVmaW5lZCkgYW55d2hlcmUgaW4gbW9k dWxlIE0KK29yIGl0cyB1c2VzPyAgSW50ZXJuZWQgc3ltYm9scyBzaGFkb3cgaW5oZXJpdGVkIGJp bmRpbmdzIGV2ZW4gaWYgdGhleQorYXJlIG5vdCB0aGVtc2VsdmVzIGJvdW5kIHRvIGEgZGVmaW5l ZCB2YWx1ZS4iCiAgIChtb2R1bGUtc2VhcmNoIG1vZHVsZS1zeW1ib2wtbG9jYWxseS1pbnRlcm5l ZD8gbSB2KSkKIAogCkBAIC0yMTk2LDE0ICsyMTcwLDEwIEBAIHdyaXR0ZW4gaW50byB0aGUgcG9y dCBpcyByZXR1cm5lZC4iCiA7OzsgdmFyaWFibGUgaXMgZGVyZWZlcmVuY2VkLgogOzs7CiAKLTs7 IG1vZHVsZS1zeW1ib2wtYmluZGluZyBtb2R1bGUgc3ltYm9sIG9wdC12YWx1ZQotOzsKLTs7IHJl dHVybiB0aGUgYmluZGluZyBvZiBhIHZhcmlhYmxlIHNwZWNpZmllZCBieSBuYW1lIHdpdGhpbgot OzsgYSBnaXZlbiBtb2R1bGUsIHNpZ25hbGxpbmcgYW4gZXJyb3IgaWYgdGhlIHZhcmlhYmxlIGlz IHVuYm91bmQuCi07OyBJZiB0aGUgT1BULVZBTFVFIGlzIHBhc3NlZCwgdGhlbiBpbnN0ZWFkIG9m IHNpZ25hbGxpbmcgYW4gZXJyb3IsCi07OyByZXR1cm4gT1BULVZBTFVFLgotOzsKIChkZWZpbmUg KG1vZHVsZS1zeW1ib2wtbG9jYWwtYmluZGluZyBtIHYgLiBvcHQtdmFsKQorICAiUmV0dXJuIHRo ZSBiaW5kaW5nIG9mIHZhcmlhYmxlIFYgc3BlY2lmaWVkIGJ5IG5hbWUgd2l0aGluIG1vZHVsZSBN LAorc2lnbmFsbGluZyBhbiBlcnJvciBpZiB0aGUgdmFyaWFibGUgaXMgdW5ib3VuZC4gIElmIHRo ZSBPUFQtVkFMVUUgaXMKK3Bhc3NlZCwgdGhlbiBpbnN0ZWFkIG9mIHNpZ25hbGxpbmcgYW4gZXJy b3IsIHJldHVybiBPUFQtVkFMVUUuIgogICAobGV0ICgodmFyIChtb2R1bGUtbG9jYWwtdmFyaWFi bGUgbSB2KSkpCiAgICAgKGlmIChhbmQgdmFyICh2YXJpYWJsZS1ib3VuZD8gdmFyKSkKICAgICAg ICAgKHZhcmlhYmxlLXJlZiB2YXIpCkBAIC0yMjExLDE0ICsyMTgxLDEwIEBAIHdyaXR0ZW4gaW50 byB0aGUgcG9ydCBpcyByZXR1cm5lZC4iCiAgICAgICAgICAgICAoY2FyIG9wdC12YWwpCiAgICAg ICAgICAgICAoZXJyb3IgIkxvY2FsbHkgdW5ib3VuZCB2YXJpYWJsZS4iIHYpKSkpKQogCi07OyBt b2R1bGUtc3ltYm9sLWJpbmRpbmcgbW9kdWxlIHN5bWJvbCBvcHQtdmFsdWUKLTs7Ci07OyByZXR1 cm4gdGhlIGJpbmRpbmcgb2YgYSB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgbmFtZSB3aXRoaW4KLTs7 IGEgZ2l2ZW4gbW9kdWxlLCBzaWduYWxsaW5nIGFuIGVycm9yIGlmIHRoZSB2YXJpYWJsZSBpcyB1 bmJvdW5kLgotOzsgSWYgdGhlIE9QVC1WQUxVRSBpcyBwYXNzZWQsIHRoZW4gaW5zdGVhZCBvZiBz aWduYWxsaW5nIGFuIGVycm9yLAotOzsgcmV0dXJuIE9QVC1WQUxVRS4KLTs7CiAoZGVmaW5lICht b2R1bGUtc3ltYm9sLWJpbmRpbmcgbSB2IC4gb3B0LXZhbCkKKyAgIlJldHVybiB0aGUgYmluZGlu ZyBvZiB2YXJpYWJsZSBWIHNwZWNpZmllZCBieSBuYW1lIHdpdGhpbiBtb2R1bGUgTSwKK3NpZ25h bGxpbmcgYW4gZXJyb3IgaWYgdGhlIHZhcmlhYmxlIGlzIHVuYm91bmQuICBJZiB0aGUgT1BULVZB TFVFIGlzCitwYXNzZWQsIHRoZW4gaW5zdGVhZCBvZiBzaWduYWxsaW5nIGFuIGVycm9yLCByZXR1 cm4gT1BULVZBTFVFLiIKICAgKGxldCAoKHZhciAobW9kdWxlLXZhcmlhYmxlIG0gdikpKQogICAg IChpZiAoYW5kIHZhciAodmFyaWFibGUtYm91bmQ/IHZhcikpCiAgICAgICAgICh2YXJpYWJsZS1y ZWYgdmFyKQpAQCAtMjIzMiwxNSArMjE5OCwxMiBAQCB3cml0dGVuIGludG8gdGhlIHBvcnQgaXMg cmV0dXJuZWQuIgogOzs7IHtBZGRpbmcgVmFyaWFibGVzIHRvIE1vZHVsZXN9CiA7OzsKIAotOzsg bW9kdWxlLW1ha2UtbG9jYWwtdmFyISBtb2R1bGUgc3ltYm9sCi07OwotOzsgZW5zdXJlIGEgdmFy aWFibGUgZm9yIFYgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBvZiBNLgotOzsgSWYgbm8gdmFyaWFi bGUgd2FzIGFscmVhZHkgdGhlcmUsIHRoZW4gY3JlYXRlIGEgbmV3IGFuZCB1bmluaXRpYWx6aWVk Ci07OyB2YXJpYWJsZS4KLTs7CiA7OyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgaW4gbW9kdWxlcy5j LgogOzsKIChkZWZpbmUgKG1vZHVsZS1tYWtlLWxvY2FsLXZhciEgbSB2KQorICAiRW5zdXJlIGEg dmFyaWFibGUgZm9yIFYgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBvZiBNLgorSWYgbm8gdmFyaWFi bGUgd2FzIGFscmVhZHkgdGhlcmUsIHRoZW4gY3JlYXRlIGEgbmV3IGFuZCB1bmluaXRpYWxpemVk Cit2YXJpYWJsZS4iCiAgIChvciAobGV0ICgoYiAobW9kdWxlLW9iYXJyYXktcmVmIChtb2R1bGUt b2JhcnJheSBtKSB2KSkpCiAgICAgICAgIChhbmQgKHZhcmlhYmxlPyBiKQogICAgICAgICAgICAg IChiZWdpbgpAQCAtMjI1NCwxMyArMjIxNywxMCBAQCB3cml0dGVuIGludG8gdGhlIHBvcnQgaXMg cmV0dXJuZWQuIgogICAgICAgICAobW9kdWxlLWFkZCEgbSB2IGxvY2FsLXZhcikKICAgICAgICAg bG9jYWwtdmFyKSkpCiAKLTs7IG1vZHVsZS1lbnN1cmUtbG9jYWwtdmFyaWFibGUhIG1vZHVsZSBz eW1ib2wKLTs7Ci07OyBFbnN1cmUgdGhhdCB0aGVyZSBpcyBhIGxvY2FsIHZhcmlhYmxlIGluIE1P RFVMRSBmb3IgU1lNQk9MLiAgSWYKLTs7IHRoZXJlIGlzIG5vIGJpbmRpbmcgZm9yIFNZTUJPTCwg Y3JlYXRlIGEgbmV3IHVuaW5pdGlhbGl6ZWQKLTs7IHZhcmlhYmxlLiAgUmV0dXJuIHRoZSBsb2Nh bCB2YXJpYWJsZS4KLTs7CiAoZGVmaW5lIChtb2R1bGUtZW5zdXJlLWxvY2FsLXZhcmlhYmxlISBt b2R1bGUgc3ltYm9sKQorICAiRW5zdXJlIHRoYXQgdGhlcmUgaXMgYSBsb2NhbCB2YXJpYWJsZSBp biBNT0RVTEUgZm9yIFNZTUJPTC4gIElmCit0aGVyZSBpcyBubyBiaW5kaW5nIGZvciBTWU1CT0ws IGNyZWF0ZSBhIG5ldyB1bmluaXRpYWxpemVkCit2YXJpYWJsZS4gIFJldHVybiB0aGUgbG9jYWwg dmFyaWFibGUuIgogICAob3IgKG1vZHVsZS1sb2NhbC12YXJpYWJsZSBtb2R1bGUgc3ltYm9sKQog ICAgICAgKGxldCAoKHZhciAobWFrZS11bmRlZmluZWQtdmFyaWFibGUpKSkKICAgICAgICAgKG1v ZHVsZS1hZGQhIG1vZHVsZSBzeW1ib2wgdmFyKQpAQCAtMjI2OCw5ICsyMjI4LDggQEAgd3JpdHRl biBpbnRvIHRoZSBwb3J0IGlzIHJldHVybmVkLiIKIAogOzsgbW9kdWxlLWFkZCEgbW9kdWxlIHN5 bWJvbCB2YXIKIDs7Ci07OyBlbnN1cmUgYSBwYXJ0aWN1bGFyIHZhcmlhYmxlIGZvciBWIGluIHRo ZSBsb2NhbCBuYW1lc3BhY2Ugb2YgTS4KLTs7CiAoZGVmaW5lIChtb2R1bGUtYWRkISBtIHYgdmFy KQorICAiRW5zdXJlIGEgcGFydGljdWxhciB2YXJpYWJsZSBmb3IgViBpbiB0aGUgbG9jYWwgbmFt ZXNwYWNlIG9mIE0uIgogICAoaWYgKG5vdCAodmFyaWFibGU/IHZhcikpCiAgICAgICAoZXJyb3Ig IkJhZCB2YXJpYWJsZSB0byBtb2R1bGUtYWRkISIgdmFyKSkKICAgKGlmIChub3QgKHN5bWJvbD8g dikpCkBAIC0yMjc4LDExICsyMjM3LDggQEAgd3JpdHRlbiBpbnRvIHRoZSBwb3J0IGlzIHJldHVy bmVkLiIKICAgKG1vZHVsZS1vYmFycmF5LXNldCEgKG1vZHVsZS1vYmFycmF5IG0pIHYgdmFyKQog ICAobW9kdWxlLW1vZGlmaWVkIG0pKQogCi07OyBtb2R1bGUtcmVtb3ZlIQotOzsKLTs7IG1ha2Ug c3VyZSB0aGF0IGEgc3ltYm9sIGlzIHVuZGVmaW5lZCBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIG9m IE0uCi07OwogKGRlZmluZSAobW9kdWxlLXJlbW92ZSEgbSB2KQorICAiTWFrZSBzdXJlIHRoYXQg c3ltYm9sIFYgaXMgdW5kZWZpbmVkIGluIHRoZSBsb2NhbCBuYW1lc3BhY2Ugb2YgTS4iCiAgICht b2R1bGUtb2JhcnJheS1yZW1vdmUhIChtb2R1bGUtb2JhcnJheSBtKSB2KQogICAobW9kdWxlLW1v ZGlmaWVkIG0pKQogCkBAIC0yMjkyLDkgKzIyNDgsOCBAQCB3cml0dGVuIGludG8gdGhlIHBvcnQg aXMgcmV0dXJuZWQuIgogCiA7OyBNT0RVTEUtRk9SLUVBQ0ggLS0gZXhwb3J0ZWQKIDs7Ci07OyBD YWxsIFBST0Mgb24gZWFjaCBzeW1ib2wgaW4gTU9EVUxFLCB3aXRoIGFyZ3VtZW50cyBvZiAoU1lN Qk9MIFZBUklBQkxFKS4KLTs7CiAoZGVmaW5lIChtb2R1bGUtZm9yLWVhY2ggcHJvYyBtb2R1bGUp CisgICJDYWxsIFBST0Mgb24gZWFjaCBzeW1ib2wgaW4gTU9EVUxFLCB3aXRoIGFyZ3VtZW50cyBv ZiAoU1lNQk9MIFZBUklBQkxFKS4iCiAgIChoYXNoLWZvci1lYWNoIHByb2MgKG1vZHVsZS1vYmFy cmF5IG1vZHVsZSkpKQogCiAoZGVmaW5lIChtb2R1bGUtbWFwIHByb2MgbW9kdWxlKQpAQCAtMjMz NiwxMiArMjI5MSwxMCBAQCB3cml0dGVuIGludG8gdGhlIHBvcnQgaXMgcmV0dXJuZWQuIgogCiA7 Ozsge01PRFVMRS1SRUYgLS0gZXhwb3J0ZWR9CiA7OzsKLQotOzsgUmV0dXJucyB0aGUgdmFsdWUg b2YgYSB2YXJpYWJsZSBjYWxsZWQgTkFNRSBpbiBNT0RVTEUgb3IgYW55IG9mIGl0cwotOzsgdXNl ZCBtb2R1bGVzLiAgSWYgdGhlcmUgaXMgbm8gc3VjaCB2YXJpYWJsZSwgdGhlbiBpZiB0aGUgb3B0 aW9uYWwgdGhpcmQKLTs7IGFyZ3VtZW50IERFRkFVTFQgaXMgcHJlc2VudCwgaXQgaXMgcmV0dXJu ZWQ7IG90aGVyd2lzZSBhbiBlcnJvciBpcyBzaWduYWxlZC4KLTs7CiAoZGVmaW5lIChtb2R1bGUt cmVmIG1vZHVsZSBuYW1lIC4gcmVzdCkKKyAgIlJldHVybnMgdGhlIHZhbHVlIG9mIGEgdmFyaWFi bGUgY2FsbGVkIE5BTUUgaW4gTU9EVUxFIG9yIGFueSBvZiBpdHMKK3VzZWQgbW9kdWxlcy4gIElm IHRoZXJlIGlzIG5vIHN1Y2ggdmFyaWFibGUsIHRoZW4gaWYgdGhlIG9wdGlvbmFsIHRoaXJkCith cmd1bWVudCBERUZBVUxUIGlzIHByZXNlbnQsIGl0IGlzIHJldHVybmVkOyBvdGhlcndpc2UgYW4g ZXJyb3IgaXMgc2lnbmFsZWQuIgogICAobGV0ICgodmFyaWFibGUgKG1vZHVsZS12YXJpYWJsZSBt b2R1bGUgbmFtZSkpKQogICAgIChpZiAoYW5kIHZhcmlhYmxlICh2YXJpYWJsZS1ib3VuZD8gdmFy aWFibGUpKQogICAgICAgICAodmFyaWFibGUtcmVmIHZhcmlhYmxlKQpAQCAtMjM1MiwxMCArMjMw NSw5IEBAIHdyaXR0ZW4gaW50byB0aGUgcG9ydCBpcyByZXR1cm5lZC4iCiAKIDs7IE1PRFVMRS1T RVQhIC0tIGV4cG9ydGVkCiA7OwotOzsgU2V0cyB0aGUgdmFyaWFibGUgY2FsbGVkIE5BTUUgaW4g TU9EVUxFIChvciBpbiBhIG1vZHVsZSB0aGF0IE1PRFVMRSB1c2VzKQotOzsgdG8gVkFMVUU7IGlm IHRoZXJlIGlzIG5vIHN1Y2ggdmFyaWFibGUsIGFuIGVycm9yIGlzIHNpZ25hbGVkLgotOzsKIChk ZWZpbmUgKG1vZHVsZS1zZXQhIG1vZHVsZSBuYW1lIHZhbHVlKQorICAiU2V0cyB0aGUgdmFyaWFi bGUgY2FsbGVkIE5BTUUgaW4gTU9EVUxFIChvciBpbiBhIG1vZHVsZSB0aGF0IE1PRFVMRSB1c2Vz KQordG8gVkFMVUU7IGlmIHRoZXJlIGlzIG5vIHN1Y2ggdmFyaWFibGUsIGFuIGVycm9yIGlzIHNp Z25hbGVkLiIKICAgKGxldCAoKHZhcmlhYmxlIChtb2R1bGUtdmFyaWFibGUgbW9kdWxlIG5hbWUp KSkKICAgICAoaWYgdmFyaWFibGUKICAgICAgICAgKHZhcmlhYmxlLXNldCEgdmFyaWFibGUgdmFs dWUpCkBAIC0yMzYzLDEwICsyMzE1LDkgQEAgd3JpdHRlbiBpbnRvIHRoZSBwb3J0IGlzIHJldHVy bmVkLiIKIAogOzsgTU9EVUxFLURFRklORSEgLS0gZXhwb3J0ZWQKIDs7Ci07OyBTZXRzIHRoZSB2 YXJpYWJsZSBjYWxsZWQgTkFNRSBpbiBNT0RVTEUgdG8gVkFMVUU7IGlmIHRoZXJlIGlzIG5vIHN1 Y2gKLTs7IHZhcmlhYmxlLCBpdCBpcyBhZGRlZCBmaXJzdC4KLTs7CiAoZGVmaW5lIChtb2R1bGUt ZGVmaW5lISBtb2R1bGUgbmFtZSB2YWx1ZSkKKyAgIlNldHMgdGhlIHZhcmlhYmxlIGNhbGxlZCBO QU1FIGluIE1PRFVMRSB0byBWQUxVRTsgaWYgdGhlcmUgaXMgbm8gc3VjaAordmFyaWFibGUsIGl0 IGlzIGFkZGVkIGZpcnN0LiIKICAgKGxldCAoKHZhcmlhYmxlIChtb2R1bGUtbG9jYWwtdmFyaWFi bGUgbW9kdWxlIG5hbWUpKSkKICAgICAoaWYgdmFyaWFibGUKICAgICAgICAgKGJlZ2luCkBAIC0y Mzc3LDE4ICsyMzI4LDE0IEBAIHdyaXR0ZW4gaW50byB0aGUgcG9ydCBpcyByZXR1cm5lZC4iCiAK IDs7IE1PRFVMRS1ERUZJTkVEPyAtLSBleHBvcnRlZAogOzsKLTs7IFJldHVybiAjdCBpZmYgTkFN RSBpcyBkZWZpbmVkIGluIE1PRFVMRSAob3IgaW4gYSBtb2R1bGUgdGhhdCBNT0RVTEUKLTs7IHVz ZXMpCi07OwogKGRlZmluZSAobW9kdWxlLWRlZmluZWQ/IG1vZHVsZSBuYW1lKQorICAiUmV0dXJu ICN0IGlmZiBOQU1FIGlzIGRlZmluZWQgaW4gTU9EVUxFIChvciBpbiBhIG1vZHVsZSB0aGF0IE1P RFVMRQordXNlcykuIgogICAobGV0ICgodmFyaWFibGUgKG1vZHVsZS12YXJpYWJsZSBtb2R1bGUg bmFtZSkpKQogICAgIChhbmQgdmFyaWFibGUgKHZhcmlhYmxlLWJvdW5kPyB2YXJpYWJsZSkpKSkK IAotOzsgTU9EVUxFLVVTRSEgbW9kdWxlIGludGVyZmFjZQotOzsKLTs7IEFkZCBJTlRFUkZBQ0Ug dG8gdGhlIGxpc3Qgb2YgaW50ZXJmYWNlcyB1c2VkIGJ5IE1PRFVMRS4KLTs7CiAoZGVmaW5lICht b2R1bGUtdXNlISBtb2R1bGUgaW50ZXJmYWNlKQorICAiQWRkIElOVEVSRkFDRSB0byB0aGUgbGlz dCBvZiBpbnRlcmZhY2VzIHVzZWQgYnkgTU9EVUxFLiIKICAgKGlmIChub3QgKG9yIChlcT8gbW9k dWxlIGludGVyZmFjZSkKICAgICAgICAgICAgICAgIChtZW1xIGludGVyZmFjZSAobW9kdWxlLXVz ZXMgbW9kdWxlKSkpKQogICAgICAgKGJlZ2luCkBAIC0yNDAwLDEyICsyMzQ3LDkgQEAgd3JpdHRl biBpbnRvIHRoZSBwb3J0IGlzIHJldHVybmVkLiIKICAgICAgICAgKGhhc2gtY2xlYXIhIChtb2R1 bGUtaW1wb3J0LW9iYXJyYXkgbW9kdWxlKSkKICAgICAgICAgKG1vZHVsZS1tb2RpZmllZCBtb2R1 bGUpKSkpCiAKLTs7IE1PRFVMRS1VU0UtSU5URVJGQUNFUyEgbW9kdWxlIGludGVyZmFjZXMKLTs7 Ci07OyBTYW1lIGFzIE1PRFVMRS1VU0UhLCBidXQgb25seSBub3RpZmllcyBtb2R1bGUgb2JzZXJ2 ZXJzIGFmdGVyIGFsbAotOzsgaW50ZXJmYWNlcyBhcmUgYWRkZWQgdG8gdGhlIGlucG9ydHMgbGlz dC4KLTs7CiAoZGVmaW5lIChtb2R1bGUtdXNlLWludGVyZmFjZXMhIG1vZHVsZSBpbnRlcmZhY2Vz KQorICAiU2FtZSBhcyBNT0RVTEUtVVNFISwgYnV0IG9ubHkgbm90aWZpZXMgbW9kdWxlIG9ic2Vy dmVycyBhZnRlciBhbGwKK2ludGVyZmFjZXMgYXJlIGFkZGVkIHRvIHRoZSBpbnBvcnRzIGxpc3Qu IgogICAobGV0KiAoKGN1ciAobW9kdWxlLXVzZXMgbW9kdWxlKSkKICAgICAgICAgIChuZXcgKGxl dCBscCAoKGluIGludGVyZmFjZXMpIChvdXQgJygpKSkKICAgICAgICAgICAgICAgICAoaWYgKG51 bGw/IGluKQpAQCAtMjc0Myw0MCArMjY4Nyw2IEBAIHdyaXR0ZW4gaW50byB0aGUgcG9ydCBpcyBy ZXR1cm5lZC4iCiAgICAgICAgICAgICAgKGVxPyAoY2FyIChsYXN0LXBhaXIgdXNlLWxpc3QpKSB0 aGUtc2NtLW1vZHVsZSkpCiAgICAgICAgIChzZXQtbW9kdWxlLXVzZXMhIG1vZHVsZSAocmV2ZXJz ZSAoY2RyIChyZXZlcnNlIHVzZS1saXN0KSkpKSkpKQogCi07OyBSZXR1cm4gYSBtb2R1bGUgdGhh dCBpcyBhbiBpbnRlcmZhY2UgdG8gdGhlIG1vZHVsZSBkZXNpZ25hdGVkIGJ5Ci07OyBOQU1FLgot OzsKLTs7IGByZXNvbHZlLWludGVyZmFjZScgdGFrZXMgZm91ciBrZXl3b3JkIGFyZ3VtZW50czoK LTs7Ci07OyAgICM6c2VsZWN0IFNFTEVDVElPTgotOzsKLTs7IFNFTEVDVElPTiBpcyBhIGxpc3Qg b2YgYmluZGluZy1zcGVjcyB0byBiZSBpbXBvcnRlZDsgQSBiaW5kaW5nLXNwZWMKLTs7IGlzIGVp dGhlciBhIHN5bWJvbCBvciBhIHBhaXIgb2Ygc3ltYm9scyAoT1JJRyAuIFNFRU4pLCB3aGVyZSBP UklHCi07OyBpcyB0aGUgbmFtZSBpbiB0aGUgdXNlZCBtb2R1bGUgYW5kIFNFRU4gaXMgdGhlIG5h bWUgaW4gdGhlIHVzaW5nCi07OyBtb2R1bGUuICBOb3RlIHRoYXQgU0VFTiBpcyBhbHNvIHBhc3Nl ZCB0aHJvdWdoIFJFTkFNRVIsIGJlbG93LiAgVGhlCi07OyBkZWZhdWx0IGlzIHRvIHNlbGVjdCBh bGwgYmluZGluZ3MuICBJZiB5b3Ugc3BlY2lmeSBubyBzZWxlY3Rpb24gYnV0Ci07OyBhIHJlbmFt ZXIsIG9ubHkgdGhlIGJpbmRpbmdzIHRoYXQgYWxyZWFkeSBleGlzdCBpbiB0aGUgdXNlZCBtb2R1 bGUKLTs7IGFyZSBtYWRlIGF2YWlsYWJsZSBpbiB0aGUgaW50ZXJmYWNlLiAgQmluZGluZ3MgdGhh dCBhcmUgYWRkZWQgbGF0ZXIKLTs7IGFyZSBub3QgcGlja2VkIHVwLgotOzsKLTs7ICAgIzpoaWRl IEJJTkRJTkdTCi07OwotOzsgQklORElOR1MgaXMgYSBsaXN0IG9mIGJpbmRpbmdzIHdoaWNoIHNo b3VsZCBub3QgYmUgaW1wb3J0ZWQuCi07OwotOzsgICAjOnByZWZpeCBQUkVGSVgKLTs7Ci07OyBQ UkVGSVggaXMgYSBzeW1ib2wgdGhhdCB3aWxsIGJlIGFwcGVuZGVkIHRvIGVhY2ggZXhwb3J0ZWQg bmFtZS4KLTs7IFRoZSBkZWZhdWx0IGlzIHRvIG5vdCBwZXJmb3JtIGFueSByZW5hbWluZy4KLTs7 Ci07OyAgICM6cmVuYW1lciBSRU5BTUVSCi07OwotOzsgUkVOQU1FUiBpcyBhIHByb2NlZHVyZSB0 aGF0IHRha2VzIGEgc3ltYm9sIGFuZCByZXR1cm5zIGl0cyBuZXcKLTs7IG5hbWUuICBUaGUgZGVm YXVsdCBpcyBub3QgcGVyZm9ybSBhbnkgcmVuYW1pbmcuCi07OwotOzsgU2lnbmFsICJubyBjb2Rl IGZvciBtb2R1bGUiIGVycm9yIGlmIG1vZHVsZSBuYW1lIGlzIG5vdCByZXNvbHZhYmxlCi07OyBv ciBpdHMgcHVibGljIGludGVyZmFjZSBpcyBub3QgYXZhaWxhYmxlLiAgU2lnbmFsICJubyBiaW5k aW5nIgotOzsgZXJyb3IgaWYgc2VsZWN0ZWQgYmluZGluZyBkb2VzIG5vdCBleGlzdCBpbiB0aGUg dXNlZCBtb2R1bGUuCi07OwogKGRlZmluZSogKHJlc29sdmUtaW50ZXJmYWNlIG5hbWUgIzprZXkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ICNmKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChoaWRlICcoKSkKQEAgLTI3ODUsNiArMjY5NSwzOSBAQCB3cml0dGVuIGlu dG8gdGhlIHBvcnQgaXMgcmV0dXJuZWQuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc3ltYm9sLXByZWZpeC1wcm9jIHByZWZpeCkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpdHkpKQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHZlcnNpb24pCisgICJSZXR1cm4gYSBtb2R1bGUgdGhhdCBpcyBhbiBpbnRlcmZhY2Ug dG8gdGhlIG1vZHVsZSBkZXNpZ25hdGVkIGJ5CitOQU1FLgorCitgcmVzb2x2ZS1pbnRlcmZhY2Un IHRha2VzIGZvdXIga2V5d29yZCBhcmd1bWVudHM6CisKKyAgIzpzZWxlY3QgU0VMRUNUSU9OCisK K1NFTEVDVElPTiBpcyBhIGxpc3Qgb2YgYmluZGluZy1zcGVjcyB0byBiZSBpbXBvcnRlZDsgQSBi aW5kaW5nLXNwZWMKK2lzIGVpdGhlciBhIHN5bWJvbCBvciBhIHBhaXIgb2Ygc3ltYm9scyAoT1JJ RyAuIFNFRU4pLCB3aGVyZSBPUklHCitpcyB0aGUgbmFtZSBpbiB0aGUgdXNlZCBtb2R1bGUgYW5k IFNFRU4gaXMgdGhlIG5hbWUgaW4gdGhlIHVzaW5nCittb2R1bGUuICBOb3RlIHRoYXQgU0VFTiBp cyBhbHNvIHBhc3NlZCB0aHJvdWdoIFJFTkFNRVIsIGJlbG93LiAgVGhlCitkZWZhdWx0IGlzIHRv IHNlbGVjdCBhbGwgYmluZGluZ3MuICBJZiB5b3Ugc3BlY2lmeSBubyBzZWxlY3Rpb24gYnV0Cith IHJlbmFtZXIsIG9ubHkgdGhlIGJpbmRpbmdzIHRoYXQgYWxyZWFkeSBleGlzdCBpbiB0aGUgdXNl ZCBtb2R1bGUKK2FyZSBtYWRlIGF2YWlsYWJsZSBpbiB0aGUgaW50ZXJmYWNlLiAgQmluZGluZ3Mg dGhhdCBhcmUgYWRkZWQgbGF0ZXIKK2FyZSBub3QgcGlja2VkIHVwLgorCisgICM6aGlkZSBCSU5E SU5HUworCitCSU5ESU5HUyBpcyBhIGxpc3Qgb2YgYmluZGluZ3Mgd2hpY2ggc2hvdWxkIG5vdCBi ZSBpbXBvcnRlZC4KKworICAjOnByZWZpeCBQUkVGSVgKKworUFJFRklYIGlzIGEgc3ltYm9sIHRo YXQgd2lsbCBiZSBhcHBlbmRlZCB0byBlYWNoIGV4cG9ydGVkIG5hbWUuCitUaGUgZGVmYXVsdCBp cyB0byBub3QgcGVyZm9ybSBhbnkgcmVuYW1pbmcuCisKKyAgIzpyZW5hbWVyIFJFTkFNRVIKKwor UkVOQU1FUiBpcyBhIHByb2NlZHVyZSB0aGF0IHRha2VzIGEgc3ltYm9sIGFuZCByZXR1cm5zIGl0 cyBuZXcKK25hbWUuICBUaGUgZGVmYXVsdCBpcyBub3QgcGVyZm9ybSBhbnkgcmVuYW1pbmcuCisK K1NpZ25hbCBcIm5vIGNvZGUgZm9yIG1vZHVsZVwiIGVycm9yIGlmIG1vZHVsZSBuYW1lIGlzIG5v dCByZXNvbHZhYmxlCitvciBpdHMgcHVibGljIGludGVyZmFjZSBpcyBub3QgYXZhaWxhYmxlLiAg U2lnbmFsIFwibm8gYmluZGluZ1wiCitlcnJvciBpZiBzZWxlY3RlZCBiaW5kaW5nIGRvZXMgbm90 IGV4aXN0IGluIHRoZSB1c2VkIG1vZHVsZS4iCiAgIChsZXQqICgobW9kdWxlIChyZXNvbHZlLW1v ZHVsZSBuYW1lICN0IHZlcnNpb24gIzplbnN1cmUgI2YpKQogICAgICAgICAgKHB1YmxpYy1pIChh bmQgbW9kdWxlIChtb2R1bGUtcHVibGljLWludGVyZmFjZSBtb2R1bGUpKSkpCiAgICAgKHVubGVz cyBwdWJsaWMtaQpAQCAtMzQ0NiwxMiArMzM4OSwxMSBAQCBidXQgaXQgZmFpbHMgdG8gbG9hZC4i CiAgIChsYW1iZGEgZm9ybWFscyBib2R5IC4uLikpCiAKIAwKLTs7IEV4cG9ydCBhIGxvY2FsIHZh cmlhYmxlCi0KIDs7IFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gIm1vZHVsZXMuYyIuICBJ ZiB5b3UgY2hhbmdlIGl0LCBiZQogOzsgc3VyZSB0byB1cGRhdGUgIm1vZHVsZXMuYyIgYXMgd2Vs bC4KIAogKGRlZmluZSAobW9kdWxlLWV4cG9ydCEgbSBuYW1lcykKKyAgIkV4cG9ydCBhIGxvY2Fs IHZhcmlhYmxlLiIKICAgKGxldCAoKHB1YmxpYy1pIChtb2R1bGUtcHVibGljLWludGVyZmFjZSBt KSkpCiAgICAgKGZvci1lYWNoIChsYW1iZGEgKG5hbWUpCiAgICAgICAgICAgICAgICAgKGxldCog KChpbnRlcm5hbC1uYW1lIChpZiAocGFpcj8gbmFtZSkgKGNhciBuYW1lKSBuYW1lKSkKQEAgLTM0 NzIsOSArMzQxNCw4IEBAIGJ1dCBpdCBmYWlscyB0byBsb2FkLiIKICAgICAgICAgICAgICAgICAg IChtb2R1bGUtYWRkISBwdWJsaWMtaSBleHRlcm5hbC1uYW1lIHZhcikpKQogICAgICAgICAgICAg ICBuYW1lcykpKQogCi07OyBFeHBvcnQgYWxsIGxvY2FsIHZhcmlhYmxlcyBmcm9tIGEgbW9kdWxl Ci07OwogKGRlZmluZSAobW9kdWxlLWV4cG9ydC1hbGwhIG1vZCkKKyAgIkV4cG9ydCBhbGwgbG9j YWwgdmFyaWFibGVzIGZyb20gYSBtb2R1bGUuIgogICAoZGVmaW5lIChmcmVzaC1pbnRlcmZhY2Uh KQogICAgIChsZXQgKChpZmFjZSAobWFrZS1tb2R1bGUpKSkKICAgICAgIChzZXQtbW9kdWxlLW5h bWUhIGlmYWNlIChtb2R1bGUtbmFtZSBtb2QpKQpAQCAtMzQ4Niw5ICszNDI3LDggQEAgYnV0IGl0 IGZhaWxzIHRvIGxvYWQuIgogICAgICAgICAgICAgICAgICAgIChmcmVzaC1pbnRlcmZhY2UhKSkp KQogICAgIChzZXQtbW9kdWxlLW9iYXJyYXkhIGlmYWNlIChtb2R1bGUtb2JhcnJheSBtb2QpKSkp CiAKLTs7IFJlLWV4cG9ydCBhIGltcG9ydGVkIHZhcmlhYmxlCi07OwogKGRlZmluZSAobW9kdWxl LXJlLWV4cG9ydCEgbSBuYW1lcykKKyAgIlJlLWV4cG9ydCBhbiBpbXBvcnRlZCB2YXJpYWJsZS4i CiAgIChsZXQgKChwdWJsaWMtaSAobW9kdWxlLXB1YmxpYy1pbnRlcmZhY2UgbSkpKQogICAgIChm b3ItZWFjaCAobGFtYmRhIChuYW1lKQogICAgICAgICAgICAgICAgIChsZXQqICgoaW50ZXJuYWwt bmFtZSAoaWYgKHBhaXI/IG5hbWUpIChjYXIgbmFtZSkgbmFtZSkpCi0tIAoyLjkuMwoK --001a114c8beab07c70053bcda30c--