From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Radon Rosborough Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] Fixing package-initialize, adding early init file Date: Wed, 14 Feb 2018 20:38:14 -0800 Message-ID: References: <83po9vos4z.fsf@gnu.org> <87shelv2m6.fsf@udel.edu> <83vajgh4xe.fsf@gnu.org> <838tc12h42.fsf@gnu.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a11401f4c32bd98056538cec7" X-Trace: blaine.gmane.org 1518670710 30833 195.159.176.226 (15 Feb 2018 04:58:30 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 15 Feb 2018 04:58:30 +0000 (UTC) Cc: =?UTF-8?Q?Cl=C3=A9ment_Pit=2DClaudel?= , Stefan Monnier , emacs-devel To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Feb 15 05:58:26 2018 Return-path: Envelope-to: ged-emacs-devel@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 1emBcd-00073X-6y for ged-emacs-devel@m.gmane.org; Thu, 15 Feb 2018 05:58:15 +0100 Original-Received: from localhost ([::1]:39072 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emBef-0002Xa-2C for ged-emacs-devel@m.gmane.org; Thu, 15 Feb 2018 00:00:21 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:36242) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1emBK1-0007Id-1r for emacs-devel@gnu.org; Wed, 14 Feb 2018 23:39:02 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1emBJz-0001qb-VW for emacs-devel@gnu.org; Wed, 14 Feb 2018 23:39:01 -0500 Original-Received: from mail-lf0-x233.google.com ([2a00:1450:4010:c07::233]:33434) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1emBJx-0001md-JZ; Wed, 14 Feb 2018 23:38:58 -0500 Original-Received: by mail-lf0-x233.google.com with SMTP id j193so16354432lfe.0; Wed, 14 Feb 2018 20:38:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=qSaLe+KvDjcQ1oavP+uGpE1wbsM2v69HaRHkl9kKkmY=; b=ARlMQFfHeWSfFeoYzN9OnHeUwSXMPuxQsS4iziPT4pyJl8b5lSHQLe7T+zXnREiLV3 IS1ydjtR5D2quZJAIbkdWOWw6/o+7N5sbGHBLBOAECLmYAGKd71fVCCGGEz5ymQK9brs H4S97XgVJoesE4h1coMqTdMtERT8GIQrURJnI3BYPvFZ5EAdjGyu7hCkwssxvqOg9tOG B+GbQdk9JKMGAD8Idp30W6bGgwZzPCZ6/+btsUu8G+leI2DuFd62tyxld1LFqqLTOHWs YUYzlILtTSfucyyn6ms6QWa7UvK+9rzwCjDLBnFQjq5OjkFvmjxNM3EnUvzCc5M/zSeM /Pdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=qSaLe+KvDjcQ1oavP+uGpE1wbsM2v69HaRHkl9kKkmY=; b=pDj6mpBItIa8rqS0NVYjpxcJYDMZQurJnPNdlKEBkI5MYtYj12WDQuOjbH7JaNlkCN a+Nh/XwlWL33Vu6rWaiEcYQcCCKKtN6DbFVP0qsLlSrdbFUKo68Z62cVAfJFd4k+Nfox yvHdat4ZOzDwpaXDs/y0ZxGkyqeIyo8mVM0Lq/45MT27cOdIwjKhCVPNXTvju9NNSegv kp+2x36aHEkMjyKuPTfRRiGSMJY8Vh/UO1ZJnENCgj4uVVkPDUnuRF29L21ACBG0XWoR K7do36ti9TFDiQM52QT6oA9rM2InzcITUS80VW6HEGPMtKu96o+RYZfAk6x6op5IT0m8 rT/Q== X-Gm-Message-State: APf1xPBOngRI/9BNIIVlsQvn4JEXfHVeA5NLMCcvZ+534krcFWSslXk3 EnCYgUf4xL70FR5P2q6ajnDJ+uByuGLk4duUegIkJA== X-Google-Smtp-Source: AH8x2269hAhiULx99yTVNKSzkrfNgOAAQCurEnU4tEaLGYsOzVklKQepmeY5S8D/LKcmQsxbT0mIIfWNNpRYFp7XbWE= X-Received: by 10.25.39.136 with SMTP id n130mr846330lfn.67.1518669535514; Wed, 14 Feb 2018 20:38:55 -0800 (PST) Original-Received: by 10.25.16.33 with HTTP; Wed, 14 Feb 2018 20:38:14 -0800 (PST) In-Reply-To: <838tc12h42.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4010:c07::233 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:222759 Archived-At: --001a11401f4c32bd98056538cec7 Content-Type: multipart/alternative; boundary="001a11401f4c32bd94056538cec5" --001a11401f4c32bd94056538cec5 Content-Type: text/plain; charset="UTF-8" Unless otherwise noted, I have integrated your comments, Eli. Let me know if more changes are needed before merging. I also noticed that the startup summary was not updated to reflect the early init file and new timing of `package-initialize'. That's fixed now. > Btw, is it only looked up in .emacs.d, or also in the directory where > .emacs is searched (which could be just the home directory)? No, since .emacs is deprecated in favor of ~/.emacs.d/init.el. > This is for users, so it should be in the user manual, not in ELisp > manual. While re-adding the index entry for `package-initialize', I also partially re-added the paragraph on `package-initialize' in the user manual. The user manual now documents `package-initialize' as only something that is useful to call if you set `package-enable-at-startup' to nil, so this paragraph is not really needed in the user manual. I think it is still useful to have it in the Elisp manual, since unlike the user manual, the Elisp manual actually does document `package-initialize' in some detail, so users might be misled into thinking that it is a useful function when in fact they probably should not be using it. > Why was this hunk necessary? Because the description was wrong and needed to be removed. It advised that users call `package-initialize' in their init file, which is wrong advice if `package-initialize' is called automatically before loading the init file. Best, Radon --001a11401f4c32bd94056538cec5 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Unless otherwise not= ed, I have integrated your comments, Eli. Let
me know if more changes are needed before merging.

I also noticed that the startup summary was not= updated to reflect
the e= arly init file and new timing of `package-initialize'. That's fixed=
now.

=
> Btw, is it only looked up in .emacs.d, or also in the directory = where

> .emacs is searched (which could be just the home directory)?

No, since .emacs is deprecated in favor of ~/.emacs.d= /init.el.

> This is for users, so it shoul= d be in the user manual, not in ELisp
= > manual.

<= span style=3D"font-size:12.8px">While re-adding the index entry for `packag= e-initialize', I also partially
re-added the paragraph on `package-initialize' in the user m= anual. The
user manual no= w documents `package-initialize' as only something
that is useful to call if you set `package-en= able-at-startup' to nil, so this
paragraph is not really needed in the user manual. I think it i= s still
useful to have it= in the Elisp manual, since unlike the user manual, the
Elisp manual actually does document `package= -initialize' in some
= detail, so users might be misled into thinking that it is a useful function=
when in fact they probab= ly should not be using it.

>=C2=A0<= span style=3D"font-size:12.8px">Why was this hunk necessary?

Because the description was wrong and needed to be removed.= It
advised that users ca= ll `package-initialize' in their init file, which is
<= span style=3D"font-size:12.8px">wrong advice if `package-initialize' is= called automatically before
loading the init file.

Best,
=
Radon
--001a11401f4c32bd94056538cec5-- --001a11401f4c32bd98056538cec7 Content-Type: application/octet-stream; name="0001-Add-early-init-file-stop-package-initialize-insertio.patch" Content-Disposition: attachment; filename="0001-Add-early-init-file-stop-package-initialize-insertio.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jdo0m2n30 RnJvbSBhYWYwMTkyZDNkYTc1M2RmMWY1ZTBkYWIxOTA3YWZmYzcxOWUxOTFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWRvbiBSb3Nib3JvdWdoIDxyYWRvbi5uZW9uQGdtYWlsLmNv bT4KRGF0ZTogU3VuLCAxNyBEZWMgMjAxNyAxNzozMToxNyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hd IEFkZCBlYXJseSBpbml0IGZpbGUsIHN0b3AgcGFja2FnZS1pbml0aWFsaXplIGluc2VydGlvbgoK KiBsaXNwL3N0YXJ0dXAuZWwgKGVhcmx5LWluaXQtZmlsZSk6IE5ldyB2YXJpYWJsZS4KKGxvYWQt dXNlci1pbml0LWZpbGUpOiBOZXcgZnVuY3Rpb24uCihjb21tYW5kLWxpbmUpOiBMb2FkIHRoZSBl YXJseSBpbml0IGZpbGUgdXNpbmcgYGxvYWQtdXNlci1pbml0LWZpbGUnLgpNb3ZlIHRoZSBjaGVj ayBmb3IgYW4gaW52YWxpZCB1c2VybmFtZSB0byBqdXN0IGJlZm9yZSB0aGF0LCBhbmQgbW92ZQp0 aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBhY2thZ2Ugc3lzdGVtIHRvIGp1c3QgYWZ0ZXIuICBM b2FkIHRoZQpyZWd1bGFyIGluaXQgZmlsZSB1c2luZyBgbG9hZC11c2VyLWluaXQtZmlsZScuCgoq IHNyYy9scmVhZC5jIChWdXNlcl9pbml0X2ZpbGUpOiBOb3RlIGNoYW5nZSBpbiBzZW1hbnRpY3Mg ZHVlIHRvIGl0cwp1c2FnZSB3aGlsZSBsb2FkaW5nIHRoZSBlYXJseSBpbml0IGZpbGUuCgoqIGxp c3AvZW1hY3MtbGlzcC9wYWNrYWdlLmVsIChwYWNrYWdlLS1lbnN1cmUtaW5pdC1maWxlKTogUmVt b3ZlCmRlZmluaXRpb24sIHVzYWdlLCBhbmQgZG9jdW1lbnRhdGlvbi4KKHBhY2thZ2UtLWluaXQt ZmlsZS1lbnN1cmVkKTogUmVtb3ZlIGRlZmluaXRpb24gYW5kIHVzYWdlLgoKKiBkb2MvZW1hY3Mv Y3VzdG9tLnRleGk6IERvY3VtZW50IGVhcmx5IGluaXQgZmlsZS4KCiogZG9jL2xpc3ByZWYvb3Mu dGV4aTogRG9jdW1lbnQgZWFybHkgaW5pdCBmaWxlLiAgVXBkYXRlIHN0YXJ0dXAKc3VtbWFyeS4K CiogZG9jL2xpc3ByZWYvcGFja2FnZS50ZXhpOiBEb2N1bWVudCBjaGFuZ2VzIHRvIHdoZW4KcGFj a2FnZS1pbml0aWFsaXplIGlzIGNhbGxlZCwgYW5kIGFkdmlzZSBhZ2FpbnN0IGNhbGxpbmcgaXQg aW4gdGhlCmluaXQgZmlsZS4gIENoYW5nZSB0ZXJtaW5vbG9neSBmb3IgcGFja2FnZSAnbG9hZGlu ZycuCgoqIGRvYy9lbWFjcy9wYWNrYWdlLnRleGk6IERvY3VtZW50IGNoYW5nZXMgdG8gd2hlbiBw YWNrYWdlLWluaXRpYWxpemUKaXMgY2FsbGVkLiAgQ2hhbmdlIHRlcm1pbm9sb2d5IGZvciBwYWNr YWdlICdsb2FkaW5nJy4KCiogZG9jL21pc2Mvb3JnLnRleGk6IERvbid0IHJlY29tbWVuZCB0byBj YWxsIHBhY2thZ2UtaW5pdGlhbGl6ZSBpbiB0aGUKaW5pdCBmaWxlLgoKRGlzY3Vzc2lvbiBvbiBl bWFjcy1kZXZlbCBsZWFkaW5nIHVwIHRvIHRoaXMgY2hhbmdlIChhcHByb3hpbWF0ZWx5IDE1MApt ZXNzYWdlcyk6CgotIGh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvZW1hY3MtZGV2 ZWwvMjAxNy0wOC9tc2cwMDE1NC5odG1sCi0gaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUv aHRtbC9lbWFjcy1kZXZlbC8yMDE3LTA4L21zZzAwNDMzLmh0bWwKLSBodHRwczovL2xpc3RzLmdu dS5vcmcvYXJjaGl2ZS9odG1sL2VtYWNzLWRldmVsLzIwMTctMDkvbXNnMDAwMjMuaHRtbAotIGh0 dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvZW1hY3MtZGV2ZWwvMjAxNy0wOS9tc2cw MDU5OS5odG1sCi0gaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9lbWFjcy1kZXZl bC8yMDE3LTEwL21zZzAwMzMyLmh0bWwKLS0tCiBkb2MvZW1hY3MvY3VzdG9tLnRleGkgICAgICB8 ICAxNyArKwogZG9jL2VtYWNzL3BhY2thZ2UudGV4aSAgICAgfCAgNzggKysrKystLS0tLQogZG9j L2xpc3ByZWYvb3MudGV4aSAgICAgICAgfCAgMzggKysrLS0KIGRvYy9saXNwcmVmL3BhY2thZ2Uu dGV4aSAgIHwgIDMwICsrLS0KIGRvYy9taXNjL29yZy50ZXhpICAgICAgICAgIHwgICA0ICstCiBl dGMvTkVXUyAgICAgICAgICAgICAgICAgICB8ICAxOSArKysKIGxpc3AvZW1hY3MtbGlzcC9wYWNr YWdlLmVsIHwgIDcxICstLS0tLS0tLQogbGlzcC9zdGFydHVwLmVsICAgICAgICAgICAgfCAzNzkg KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvbHJlYWQu YyAgICAgICAgICAgICAgICB8ICAgMiArLQogOSBmaWxlcyBjaGFuZ2VkLCAzMzEgaW5zZXJ0aW9u cygrKSwgMzA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9lbWFjcy9jdXN0b20udGV4 aSBiL2RvYy9lbWFjcy9jdXN0b20udGV4aQppbmRleCBlMjc3NjBiMzc5Li4yNjNkZmY3Y2IwIDEw MDY0NAotLS0gYS9kb2MvZW1hY3MvY3VzdG9tLnRleGkKKysrIGIvZG9jL2VtYWNzL2N1c3RvbS50 ZXhpCkBAIC0yNTc1LDMgKzI1NzUsMjAgQEAgSW5pdCBOb24tQVNDSUkKIGNvZGluZyBzeXN0ZW0s IGZvciB5b3VyIGluaXQgZmlsZSBhcyB3ZWxsIGFzIHRoZSBmaWxlcyB5b3UgZWRpdC4gIEZvcgog ZXhhbXBsZSwgZG9uJ3QgbWl4IHRoZSBAc2FtcHtsYXRpbi0xfSBhbmQgQHNhbXB7bGF0aW4tOX0g Y29kaW5nCiBzeXN0ZW1zLgorCitAbm9kZSBFYXJseSBJbml0IEZpbGUKK0BzdWJzZWN0aW9uIFRo ZSBFYXJseSBJbml0IEZpbGUKK0BjaW5kZXggZWFybHkgaW5pdCBmaWxlCisKKyAgTW9zdCBjdXN0 b21pemF0aW9ucyBmb3IgRW1hY3MgY2FuIGJlIHB1dCBpbiB0aGUgbm9ybWFsIGluaXQgZmlsZSwK K0BmaWxley5lbWFjc30gb3IgQGZpbGV7fi8uZW1hY3MuZC9pbml0LmVsfS4gIEhvd2V2ZXIsIGl0 IGlzIHNvbWV0aW1lcworZGVzaXJhYmxlIHRvIGhhdmUgY3VzdG9taXphdGlvbnMgdGhhdCB0YWtl IGVmZmVjdCBkdXJpbmcgRW1hY3Mgc3RhcnR1cAorZWFybGllciB0aGFuIHRoZSBub3JtYWwgaW5p dCBmaWxlIGlzIHByb2Nlc3NlZC4gIFN1Y2ggY3VzdG9taXphdGlvbnMKK2NhbiBiZSBwdXQgaW4g dGhlIGVhcmx5IGluaXQgZmlsZSwgQGZpbGV7fi8uZW1hY3MuZC9lYXJseS1pbml0LmVsfS4KK1Ro aXMgZmlsZSBpcyBsb2FkZWQgYmVmb3JlIHRoZSBwYWNrYWdlIHN5c3RlbSBpcyBpbml0aWFsaXpl ZCwgc28gaW4gaXQKK3lvdSBjYW4gY3VzdG9taXplIHZhcmlhYmxlcyB0aGF0IGFmZmVjdCB0aGUg aW5pdGlhbGl6YXRpb24gcHJvY2VzcywKK3N1Y2ggYXMgQGNvZGV7cGFja2FnZS1lbmFibGUtYXQt c3RhcnR1cH0gYW5kIEBjb2Rle3BhY2thZ2UtbG9hZC1saXN0fS4KK0B4cmVme1BhY2thZ2UgSW5z dGFsbGF0aW9ufS4KKworICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUgZWFybHkgaW5pdCBm aWxlLCBAcHhyZWZ7RWFybHkgSW5pdAorRmlsZSwsLCBlbGlzcCwgVGhlIEVtYWNzIExpc3AgUmVm ZXJlbmNlIE1hbnVhbH0uCmRpZmYgLS1naXQgYS9kb2MvZW1hY3MvcGFja2FnZS50ZXhpIGIvZG9j L2VtYWNzL3BhY2thZ2UudGV4aQppbmRleCBiYzZhZmI3OTY2Li5kNTMzOWU5MTI0IDEwMDY0NAot LS0gYS9kb2MvZW1hY3MvcGFja2FnZS50ZXhpCisrKyBiL2RvYy9lbWFjcy9wYWNrYWdlLnRleGkK QEAgLTI0MSw1NyArMjQxLDU1IEBAIFBhY2thZ2UgSW5zdGFsbGF0aW9uCiBwYWNrYWdlIGlzIGF2 YWlsYWJsZSBmcm9tIGEgaGlnaGVyLXByaW9yaXR5IGFyY2hpdmUuICAoVGhpcyBpcwogY29udHJv bGxlZCBieSB0aGUgdmFsdWUgb2YgQGNvZGV7cGFja2FnZS1tZW51LWhpZGUtbG93LXByaW9yaXR5 fS4pCiAKLSAgT25jZSBhIHBhY2thZ2UgaXMgZG93bmxvYWRlZCBhbmQgaW5zdGFsbGVkLCBpdCBp cyBAZGZue2xvYWRlZH0gaW50bwotdGhlIGN1cnJlbnQgRW1hY3Mgc2Vzc2lvbi4gIExvYWRpbmcg YSBwYWNrYWdlIGlzIG5vdCBxdWl0ZSB0aGUgc2FtZSBhcwotbG9hZGluZyBhIExpc3AgbGlicmFy eSAoQHB4cmVme0xpc3AgTGlicmFyaWVzfSk7IGxvYWRpbmcgYSBwYWNrYWdlCi1hZGRzIGl0cyBk aXJlY3RvcnkgdG8gQGNvZGV7bG9hZC1wYXRofSBhbmQgbG9hZHMgaXRzIGF1dG9sb2Fkcy4gIFRo ZQotZWZmZWN0IG9mIGEgcGFja2FnZSdzIGF1dG9sb2FkcyB2YXJpZXMgZnJvbSBwYWNrYWdlIHRv IHBhY2thZ2UuICBNb3N0Ci1wYWNrYWdlcyBqdXN0IG1ha2Ugc29tZSBuZXcgY29tbWFuZHMgYXZh aWxhYmxlLCB3aGlsZSBvdGhlcnMgaGF2ZSBtb3JlCisgIE9uY2UgYSBwYWNrYWdlIGlzIGRvd25s b2FkZWQgYW5kIGluc3RhbGxlZCwgaXQgaXMgbWFkZSBhdmFpbGFibGUgdG8KK3RoZSBjdXJyZW50 IEVtYWNzIHNlc3Npb24uICBNYWtpbmcgYSBwYWNrYWdlIGF2YWlsYWJsZSBhZGRzIGl0cworZGly ZWN0b3J5IHRvIEBjb2Rle2xvYWQtcGF0aH0gYW5kIGxvYWRzIGl0cyBhdXRvbG9hZHMuICBUaGUg ZWZmZWN0IG9mCithIHBhY2thZ2UncyBhdXRvbG9hZHMgdmFyaWVzIGZyb20gcGFja2FnZSB0byBw YWNrYWdlLiAgTW9zdCBwYWNrYWdlcworanVzdCBtYWtlIHNvbWUgbmV3IGNvbW1hbmRzIGF2YWls YWJsZSwgd2hpbGUgb3RoZXJzIGhhdmUgbW9yZQogd2lkZS1yYW5naW5nIGVmZmVjdHMgb24gdGhl IEVtYWNzIHNlc3Npb24uICBGb3Igc3VjaCBpbmZvcm1hdGlvbiwKIGNvbnN1bHQgdGhlIHBhY2th Z2UncyBoZWxwIGJ1ZmZlci4KIAotICBCeSBkZWZhdWx0LCBFbWFjcyBhbHNvIGF1dG9tYXRpY2Fs bHkgbG9hZHMgYWxsIGluc3RhbGxlZCBwYWNrYWdlcyBpbgotc3Vic2VxdWVudCBFbWFjcyBzZXNz aW9ucy4gIFRoaXMgaGFwcGVucyBhdCBzdGFydHVwLCBhZnRlciBwcm9jZXNzaW5nCi10aGUgaW5p dCBmaWxlIChAcHhyZWZ7SW5pdCBGaWxlfSkuICBBcyBhbiBleGNlcHRpb24sIEVtYWNzIGRvZXMg bm90Ci1sb2FkIHBhY2thZ2VzIGF0IHN0YXJ0dXAgaWYgaW52b2tlZCB3aXRoIHRoZSBAc2FtcHst cX0gb3IKLUBzYW1wey0tbm8taW5pdC1maWxlfSBvcHRpb25zIChAcHhyZWZ7SW5pdGlhbCBPcHRp b25zfSkuCisgIEFmdGVyIGEgcGFja2FnZSBpcyBpbnN0YWxsZWQsIGl0IGlzIGF1dG9tYXRpY2Fs bHkgbWFkZSBhdmFpbGFibGUgYnkKK0VtYWNzIGluIGFsbCBzdWJzZXF1ZW50IHNlc3Npb25zLiAg VGhpcyBoYXBwZW5zIGF0IHN0YXJ0dXAsIGJlZm9yZQorcHJvY2Vzc2luZyB0aGUgaW5pdCBmaWxl IGJ1dCBhZnRlciBwcm9jZXNzaW5nIHRoZSBlYXJseSBpbml0IGZpbGUKKyhAcHhyZWZ7RWFybHkg SW5pdCBGaWxlLCwsIGVsaXNwLCBUaGUgRW1hY3MgTGlzcCBSZWZlcmVuY2UgTWFudWFsfSkuCitB cyBhbiBleGNlcHRpb24sIEVtYWNzIGRvZXMgbm90IG1ha2UgcGFja2FnZXMgYXZhaWxhYmxlIGF0 IHN0YXJ0dXAgaWYKK2ludm9rZWQgd2l0aCB0aGUgQHNhbXB7LXF9IG9yIEBzYW1wey0tbm8taW5p dC1maWxlfSBvcHRpb25zCisoQHhyZWZ7SW5pdGlhbCBPcHRpb25zfSkuCiAKIEB2aW5kZXggcGFj a2FnZS1lbmFibGUtYXQtc3RhcnR1cAotICBUbyBkaXNhYmxlIGF1dG9tYXRpYyBwYWNrYWdlIGxv YWRpbmcsIGNoYW5nZSB0aGUgdmFyaWFibGUKLUBjb2Rle3BhY2thZ2UtZW5hYmxlLWF0LXN0YXJ0 dXB9IHRvIEBjb2Rle25pbH0uCisgIFRvIGtlZXAgRW1hY3MgZnJvbSBhdXRvbWF0aWNhbGx5IG1h a2luZyBwYWNrYWdlcyBhdmFpbGFibGUgYXQKK3N0YXJ0dXAsIGNoYW5nZSB0aGUgdmFyaWFibGUg QGNvZGV7cGFja2FnZS1lbmFibGUtYXQtc3RhcnR1cH0gdG8KK0Bjb2Rle25pbH0uICBZb3UgbXVz dCBkbyB0aGlzIGluIHRoZSBlYXJseSBpbml0IGZpbGUgKEBweHJlZntFYXJseQorSW5pdCBGaWxl LCwsIGVsaXNwLCBUaGUgRW1hY3MgTGlzcCBSZWZlcmVuY2UgTWFudWFsfSksIGFzIHRoZSB2YXJp YWJsZQoraXMgcmVhZCBiZWZvcmUgbG9hZGluZyB0aGUgcmVndWxhciBpbml0IGZpbGUuICBDdXJy ZW50bHkgdGhpcyB2YXJpYWJsZQorY2Fubm90IGJlIHNldCB2aWEgQ3VzdG9taXplLgogCiBAZmlu ZGV4IHBhY2thZ2UtaW5pdGlhbGl6ZQotICBUaGUgcmVhc29uIGF1dG9tYXRpYyBwYWNrYWdlIGxv YWRpbmcgb2NjdXJzIGFmdGVyIGxvYWRpbmcgdGhlIGluaXQKLWZpbGUgaXMgdGhhdCB1c2VyIG9w dGlvbnMgb25seSByZWNlaXZlIHRoZWlyIGN1c3RvbWl6ZWQgdmFsdWVzIGFmdGVyCi1sb2FkaW5n IHRoZSBpbml0IGZpbGUsIGluY2x1ZGluZyB1c2VyIG9wdGlvbnMgd2hpY2ggYWZmZWN0IHRoZQot cGFja2FnaW5nIHN5c3RlbS4gIEluIHNvbWUgY2lyY3Vtc3RhbmNlcywgeW91IG1heSB3YW50IHRv IGxvYWQKLXBhY2thZ2VzIGV4cGxpY2l0bHkgaW4geW91ciBpbml0IGZpbGUgKHVzdWFsbHkgYmVj YXVzZSBzb21lIG90aGVyIGNvZGUKLWluIHlvdXIgaW5pdCBmaWxlIGRlcGVuZHMgb24gYSBwYWNr YWdlKS4gIEluIHRoYXQgY2FzZSwgeW91ciBpbml0IGZpbGUKLXNob3VsZCBjYWxsIHRoZSBmdW5j dGlvbiBAY29kZXtwYWNrYWdlLWluaXRpYWxpemV9LiAgSXQgaXMgdXAgdG8geW91Ci10byBlbnN1 cmUgdGhhdCByZWxldmFudCB1c2VyIG9wdGlvbnMsIHN1Y2ggYXMgQGNvZGV7cGFja2FnZS1sb2Fk LWxpc3R9Ci0oc2VlIGJlbG93KSwgYXJlIHNldCB1cCBwcmlvciB0byB0aGUgQGNvZGV7cGFja2Fn ZS1pbml0aWFsaXplfSBjYWxsLgotVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgc2V0IEBjb2Rle3Bh Y2thZ2UtZW5hYmxlLWF0LXN0YXJ0dXB9IHRvIEBjb2Rle25pbH0sIHRvCi1hdm9pZCBsb2FkaW5n IHRoZSBwYWNrYWdlcyBhZ2FpbiBhZnRlciBwcm9jZXNzaW5nIHRoZSBpbml0IGZpbGUuCi1BbHRl cm5hdGl2ZWx5LCB5b3UgbWF5IGNob29zZSB0byBjb21wbGV0ZWx5IGluaGliaXQgcGFja2FnZSBs b2FkaW5nIGF0Ci1zdGFydHVwLCBhbmQgaW52b2tlIHRoZSBjb21tYW5kIEBrYmR7TS14IHBhY2th Z2UtaW5pdGlhbGl6ZX0gdG8gbG9hZAoteW91ciBwYWNrYWdlcyBtYW51YWxseS4KKyAgSWYgeW91 IGhhdmUgc2V0IEBjb2Rle3BhY2thZ2UtZW5hYmxlLWF0LXN0YXJ0dXB9IHRvIEBjb2Rle25pbH0s IHlvdQorY2FuIHN0aWxsIG1ha2UgcGFja2FnZXMgYXZhaWxhYmxlIGVpdGhlciBkdXJpbmcgb3Ig YWZ0ZXIgc3RhcnR1cC4gIFRvCittYWtlIGluc3RhbGxlZCBwYWNrYWdlcyBhdmFpbGFibGUgZHVy aW5nIHN0YXJ0dXAsIGNhbGwgdGhlIGZ1bmN0aW9uCitAY29kZXtwYWNrYWdlLWluaXRpYWxpemV9 IGluIHlvdXIgaW5pdCBmaWxlLiAgVG8gbWFrZSBpbnN0YWxsZWQKK3BhY2thZ2VzIGF2YWlsYWJs ZSBhZnRlciBzdGFydHVwLCBpbnZva2UgdGhlIGNvbW1hbmQgQGtiZHtNLXgKK3BhY2thZ2UtaW5p dGlhbGl6ZX0uCiAKIEB2aW5kZXggcGFja2FnZS1sb2FkLWxpc3QKLSAgRm9yIGZpbmVyIGNvbnRy b2wgb3ZlciBwYWNrYWdlIGxvYWRpbmcsIHlvdSBjYW4gdXNlIHRoZSB2YXJpYWJsZQotQGNvZGV7 cGFja2FnZS1sb2FkLWxpc3R9LiAgSXRzIHZhbHVlIHNob3VsZCBiZSBhIGxpc3QuICBBIGxpc3Qg ZWxlbWVudAotb2YgdGhlIGZvcm0gQGNvZGV7KEB2YXJ7bmFtZX0gQHZhcnt2ZXJzaW9ufSl9IHRl bGxzIEVtYWNzIHRvIGxvYWQKLXZlcnNpb24gQHZhcnt2ZXJzaW9ufSBvZiB0aGUgcGFja2FnZSBu YW1lZCBAdmFye25hbWV9LiAgSGVyZSwKLUB2YXJ7dmVyc2lvbn0gc2hvdWxkIGJlIGEgdmVyc2lv biBzdHJpbmcgKGNvcnJlc3BvbmRpbmcgdG8gYSBzcGVjaWZpYwotdmVyc2lvbiBvZiB0aGUgcGFj a2FnZSksIG9yIEBjb2Rle3R9ICh3aGljaCBtZWFucyB0byBsb2FkIGFueQotaW5zdGFsbGVkIHZl cnNpb24pLCBvciBAY29kZXtuaWx9ICh3aGljaCBtZWFucyBubyB2ZXJzaW9uOyB0aGlzCi1kaXNh YmxlcyB0aGUgcGFja2FnZSwgcHJldmVudGluZyBpdCBmcm9tIGJlaW5nIGxvYWRlZCkuICBBIGxp c3QKLWVsZW1lbnQgY2FuIGFsc28gYmUgdGhlIHN5bWJvbCBAY29kZXthbGx9LCB3aGljaCBtZWFu cyB0byBsb2FkIHRoZQotbGF0ZXN0IGluc3RhbGxlZCB2ZXJzaW9uIG9mIGFueSBwYWNrYWdlIG5v dCBuYW1lZCBieSB0aGUgb3RoZXIgbGlzdAotZWxlbWVudHMuICBUaGUgZGVmYXVsdCB2YWx1ZSBp cyBqdXN0IEBjb2RleycoYWxsKX0uCisgIEZvciBmaW5lciBjb250cm9sIG92ZXIgd2hpY2ggcGFj a2FnZXMgYXJlIG1hZGUgYXZhaWxhYmxlIGF0IHN0YXJ0dXAsCit5b3UgY2FuIHVzZSB0aGUgdmFy aWFibGUgQGNvZGV7cGFja2FnZS1sb2FkLWxpc3R9LiAgSXRzIHZhbHVlIHNob3VsZAorYmUgYSBs aXN0LiAgQSBsaXN0IGVsZW1lbnQgb2YgdGhlIGZvcm0gQGNvZGV7KEB2YXJ7bmFtZX0KK0B2YXJ7 dmVyc2lvbn0pfSB0ZWxscyBFbWFjcyB0byBtYWtlIGF2YWlsYWJsZSB2ZXJzaW9uIEB2YXJ7dmVy c2lvbn0gb2YKK3RoZSBwYWNrYWdlIG5hbWVkIEB2YXJ7bmFtZX0uICBIZXJlLCBAdmFye3ZlcnNp b259IHNob3VsZCBiZSBhIHZlcnNpb24KK3N0cmluZyAoY29ycmVzcG9uZGluZyB0byBhIHNwZWNp ZmljIHZlcnNpb24gb2YgdGhlIHBhY2thZ2UpLCBvcgorQGNvZGV7dH0gKHdoaWNoIG1lYW5zIHRv IG1ha2UgYXZhaWxhYmxlIGFueSBpbnN0YWxsZWQgdmVyc2lvbiksIG9yCitAY29kZXtuaWx9ICh3 aGljaCBtZWFucyBubyB2ZXJzaW9uOyB0aGlzIGRpc2FibGVzIHRoZSBwYWNrYWdlLAorcHJldmVu dGluZyBpdCBmcm9tIGJlaW5nIG1hZGUgYXZhaWxhYmxlKS4gIEEgbGlzdCBlbGVtZW50IGNhbiBh bHNvIGJlCit0aGUgc3ltYm9sIEBjb2Rle2FsbH0sIHdoaWNoIG1lYW5zIHRvIG1ha2UgYXZhaWxh YmxlIHRoZSBsYXRlc3QKK2luc3RhbGxlZCB2ZXJzaW9uIG9mIGFueSBwYWNrYWdlIG5vdCBuYW1l ZCBieSB0aGUgb3RoZXIgbGlzdCBlbGVtZW50cy4KK1RoZSBkZWZhdWx0IHZhbHVlIGlzIGp1c3Qg QGNvZGV7JyhhbGwpfS4KIAogICBGb3IgZXhhbXBsZSwgaWYgeW91IHNldCBAY29kZXtwYWNrYWdl LWxvYWQtbGlzdH0gdG8gQGNvZGV7JygobXVzZQotIjMuMjAiKSBhbGwpfSwgdGhlbiBFbWFjcyBv bmx5IGxvYWRzIHZlcnNpb24gMy4yMCBvZiB0aGUgQHNhbXB7bXVzZX0KLXBhY2thZ2UsIHBsdXMg YW55IGluc3RhbGxlZCB2ZXJzaW9uIG9mIHBhY2thZ2VzIG90aGVyIHRoYW4KKyIzLjIwIikgYWxs KX0sIHRoZW4gRW1hY3Mgb25seSBtYWtlcyBhdmFpbGFibGUgdmVyc2lvbiAzLjIwIG9mIHRoZQor QHNhbXB7bXVzZX0gcGFja2FnZSwgcGx1cyBhbnkgaW5zdGFsbGVkIHZlcnNpb24gb2YgcGFja2Fn ZXMgb3RoZXIgdGhhbgogQHNhbXB7bXVzZX0uICBBbnkgb3RoZXIgdmVyc2lvbiBvZiBAc2FtcHtt dXNlfSB0aGF0IGhhcHBlbnMgdG8gYmUKIGluc3RhbGxlZCB3aWxsIGJlIGlnbm9yZWQuICBUaGUg QHNhbXB7bXVzZX0gcGFja2FnZSB3aWxsIGJlIGxpc3RlZCBpbgogdGhlIHBhY2thZ2UgbWVudSB3 aXRoIHRoZSBAc2FtcHtoZWxkfSBzdGF0dXMuCmRpZmYgLS1naXQgYS9kb2MvbGlzcHJlZi9vcy50 ZXhpIGIvZG9jL2xpc3ByZWYvb3MudGV4aQppbmRleCA0MmJlNjA0NDlkLi5jYWM1YmZhMDY3IDEw MDY0NAotLS0gYS9kb2MvbGlzcHJlZi9vcy50ZXhpCisrKyBiL2RvYy9saXNwcmVmL29zLnRleGkK QEAgLTk1LDYgKzk1LDIxIEBAIFN0YXJ0dXAgU3VtbWFyeQogQGl0ZW0KIEl0IGRvZXMgc29tZSBi YXNpYyBwYXJzaW5nIG9mIHRoZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzLgogCitAaXRlbQorSXQg bG9hZHMgeW91ciBlYXJseSBpbml0IGZpbGUgKEBweHJlZntFYXJseSBJbml0IEZpbGV9KS4gIFRo aXMgaXMgbm90Citkb25lIGlmIHRoZSBvcHRpb25zIEBzYW1wey1xfSwgQHNhbXB7LVF9LCBvciBA c2FtcHstLWJhdGNofSB3ZXJlCitzcGVjaWZpZWQuICBJZiB0aGUgQHNhbXB7LXV9IG9wdGlvbiB3 YXMgc3BlY2lmaWVkLCBFbWFjcyBsb29rcyBmb3IgdGhlCitpbml0IGZpbGUgaW4gdGhhdCB1c2Vy J3MgaG9tZSBkaXJlY3RvcnkgaW5zdGVhZC4KKworQGl0ZW0KK0l0IGNhbGxzIHRoZSBmdW5jdGlv biBAY29kZXtwYWNrYWdlLWluaXRpYWxpemV9IHRvIGFjdGl2YXRlIGFueQorb3B0aW9uYWwgRW1h Y3MgTGlzcCBwYWNrYWdlIHRoYXQgaGFzIGJlZW4gaW5zdGFsbGVkLiAgQHhyZWZ7UGFja2FnaW5n CitCYXNpY3N9LiAgSG93ZXZlciwgRW1hY3MgZG9lc24ndCBpbml0aWFsaXplIHBhY2thZ2VzIHdo ZW4KK0Bjb2Rle3BhY2thZ2UtZW5hYmxlLWF0LXN0YXJ0dXB9IGlzIEBjb2Rle25pbH0gb3Igd2hl biBpdCdzIHN0YXJ0ZWQKK3dpdGggb25lIG9mIHRoZSBvcHRpb25zIEBzYW1wey1xfSwgQHNhbXB7 LVF9LCBvciBAc2FtcHstLWJhdGNofS4gIFRvCitpbml0aWFsaXplIHBhY2thZ2VzIGluIHRoZSBs YXR0ZXIgY2FzZSwgQGNvZGV7cGFja2FnZS1pbml0aWFsaXplfQorc2hvdWxkIGJlIGNhbGxlZCBl eHBsaWNpdGx5IChlLmcuLCB2aWEgdGhlIEBzYW1wey0tZnVuY2FsbH0gb3B0aW9uKS4KKwogQHZp bmRleCBpbml0aWFsLXdpbmRvdy1zeXN0ZW1AcnssIGFuZCBzdGFydHVwfQogQHZpbmRleCB3aW5k b3ctc3lzdGVtLWluaXRpYWxpemF0aW9uLWFsaXN0CiBAaXRlbQpAQCAtMTU0LDE1ICsxNjksNiBA QCBTdGFydHVwIFN1bW1hcnkKIChAcHhyZWZ7QWJicmV2IEZpbGVzLCBhYmJyZXYtZmlsZS1uYW1l fSkuICBUaGlzIGlzIG5vdCBkb25lIGlmIHRoZQogb3B0aW9uIEBzYW1wey0tYmF0Y2h9IHdhcyBz cGVjaWZpZWQuCiAKLUBpdGVtCi1JdCBjYWxscyB0aGUgZnVuY3Rpb24gQGNvZGV7cGFja2FnZS1p bml0aWFsaXplfSB0byBhY3RpdmF0ZSBhbnkKLW9wdGlvbmFsIEVtYWNzIExpc3AgcGFja2FnZSB0 aGF0IGhhcyBiZWVuIGluc3RhbGxlZC4gIEB4cmVme1BhY2thZ2luZwotQmFzaWNzfS4gIEhvd2V2 ZXIsIEVtYWNzIGRvZXNuJ3QgaW5pdGlhbGl6ZSBwYWNrYWdlcyB3aGVuCi1AY29kZXtwYWNrYWdl LWVuYWJsZS1hdC1zdGFydHVwfSBpcyBAY29kZXtuaWx9IG9yIHdoZW4gaXQncyBzdGFydGVkCi13 aXRoIG9uZSBvZiB0aGUgb3B0aW9ucyBAc2FtcHstcX0sIEBzYW1wey1RfSwgb3IgQHNhbXB7LS1i YXRjaH0uICBUbwotaW5pdGlhbGl6ZSBwYWNrYWdlcyBpbiB0aGUgbGF0dGVyIGNhc2UsIEBjb2Rl e3BhY2thZ2UtaW5pdGlhbGl6ZX0KLXNob3VsZCBiZSBjYWxsZWQgZXhwbGljaXRseSAoZS5nLiwg dmlhIHRoZSBAc2FtcHstLWZ1bmNhbGx9IG9wdGlvbikuCi0KIEB2aW5kZXggYWZ0ZXItaW5pdC10 aW1lCiBAaXRlbQogSXQgc2V0cyB0aGUgdmFyaWFibGUgQGNvZGV7YWZ0ZXItaW5pdC10aW1lfSB0 byB0aGUgdmFsdWUgb2YKQEAgLTM2MSw2ICszNjcsNyBAQCBJbml0IEZpbGUKIEBjaW5kZXggaW5p dCBmaWxlCiBAY2luZGV4IEBmaWxley5lbWFjc30KIEBjaW5kZXggQGZpbGV7aW5pdC5lbH0KK0Bj aW5kZXggQGZpbGV7ZWFybHktaW5pdC5lbH0KIAogICBXaGVuIHlvdSBzdGFydCBFbWFjcywgaXQg bm9ybWFsbHkgYXR0ZW1wdHMgdG8gbG9hZCB5b3VyIEBkZm57aW5pdAogZmlsZX0uICBUaGlzIGlz IGVpdGhlciBhIGZpbGUgbmFtZWQgQGZpbGV7LmVtYWNzfSBvciBAZmlsZXsuZW1hY3MuZWx9CkBA IC0zODQsNiArMzkxLDE5IEBAIEluaXQgRmlsZQogZmlsZS4gIElmIHRob3NlIGVudmlyb25tZW50 IHZhcmlhYmxlcyBhcmUgYWJzZW50LCB0aG91Z2gsIEVtYWNzIHVzZXMKIHlvdXIgdXNlci1pZCB0 byBmaW5kIHlvdXIgaG9tZSBkaXJlY3RvcnkuCiAKK0BjaW5kZXggZWFybHkgaW5pdCBmaWxlCisg IEVtYWNzIGFsc28gYXR0ZW1wdHMgdG8gbG9hZCBhIHNlY29uZCBpbml0IGZpbGUsIGNhbGxlZCB0 aGUKK0BkZm57ZWFybHkgaW5pdCBmaWxlfSwgaWYgaXQgZXhpc3RzLiAgVGhpcyBpcyBhIGZpbGUg bmFtZWQKK0BmaWxle2Vhcmx5LWluaXQuZWx9IGluIHlvdXIgQGZpbGV7fi8uZW1hY3MuZH0gZGly ZWN0b3J5LiAgVGhlCitkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGVhcmx5IGluaXQgZmlsZSBhbmQg dGhlIHJlZ3VsYXIgaW5pdCBmaWxlIGlzCit0aGF0IHRoZSBlYXJseSBpbml0IGZpbGUgaXMgbG9h ZGVkIG11Y2ggZWFybGllciBkdXJpbmcgdGhlIHN0YXJ0dXAKK3Byb2Nlc3MsIHNvIHlvdSBjYW4g dXNlIGl0IHRvIGN1c3RvbWl6ZSBzb21lIHRoaW5ncyB0aGF0IGFyZQoraW5pdGlhbGl6ZWQgYmVm b3JlIGxvYWRpbmcgdGhlIHJlZ3VsYXIgaW5pdCBmaWxlLiAgRm9yIGV4YW1wbGUsIHlvdQorY2Fu IGN1c3RvbWl6ZSB0aGUgcHJvY2VzcyBvZiBpbml0aWFsaXppbmcgdGhlIHBhY2thZ2Ugc3lzdGVt LCBieQorc2V0dGluZyB2YXJpYWJsZXMgc3VjaCBhcyBAdmFye3BhY2thZ2UtbG9hZC1saXN0fSBv cgorQHZhcntwYWNrYWdlLWVuYWJsZS1hdC1zdGFydHVwfS4gQHhyZWZ7UGFja2FnZSBJbnN0YWxs YXRpb24sLCwKK2VtYWNzLFRoZSBHTlUgRW1hY3MgTWFudWFsfS4KKwogQGNpbmRleCBkZWZhdWx0 IGluaXQgZmlsZQogICBBbiBFbWFjcyBpbnN0YWxsYXRpb24gbWF5IGhhdmUgYSBAZGZue2RlZmF1 bHQgaW5pdCBmaWxlfSwgd2hpY2ggaXMgYQogTGlzcCBsaWJyYXJ5IG5hbWVkIEBmaWxle2RlZmF1 bHQuZWx9LiAgRW1hY3MgZmluZHMgdGhpcyBmaWxlIHRocm91Z2gKZGlmZiAtLWdpdCBhL2RvYy9s aXNwcmVmL3BhY2thZ2UudGV4aSBiL2RvYy9saXNwcmVmL3BhY2thZ2UudGV4aQppbmRleCAyMWRm ZTFjMjcxLi44NzdhYWY4OWEzIDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9wYWNrYWdlLnRleGkK KysrIGIvZG9jL2xpc3ByZWYvcGFja2FnZS50ZXhpCkBAIC0xMDUsMjQgKzEwNSwzMiBAQCBQYWNr YWdpbmcgQmFzaWNzCiBldmFsdWF0ZXMgdGhlIGF1dG9sb2FkIGRlZmluaXRpb25zIGluIEBmaWxl e0B2YXJ7bmFtZX0tYXV0b2xvYWRzLmVsfS4KIAogICBXaGVuZXZlciBFbWFjcyBzdGFydHMgdXAs IGl0IGF1dG9tYXRpY2FsbHkgY2FsbHMgdGhlIGZ1bmN0aW9uCi1AY29kZXtwYWNrYWdlLWluaXRp YWxpemV9IHRvIGxvYWQgaW5zdGFsbGVkIHBhY2thZ2VzLiAgVGhpcyBpcyBkb25lCi1hZnRlciBs b2FkaW5nIHRoZSBpbml0IGZpbGUgYW5kIGFiYnJldiBmaWxlIChpZiBhbnkpIGFuZCBiZWZvcmUK LXJ1bm5pbmcgQGNvZGV7YWZ0ZXItaW5pdC1ob29rfSAoQHB4cmVme1N0YXJ0dXAgU3VtbWFyeX0p LiAgQXV0b21hdGljCi1wYWNrYWdlIGxvYWRpbmcgaXMgZGlzYWJsZWQgaWYgdGhlIHVzZXIgb3B0 aW9uCi1AY29kZXtwYWNrYWdlLWVuYWJsZS1hdC1zdGFydHVwfSBpcyBAY29kZXtuaWx9LgorQGNv ZGV7cGFja2FnZS1pbml0aWFsaXplfSB0byBtYWtlIGluc3RhbGxlZCBwYWNrYWdlcyBhdmFpbGFi bGUgdG8gdGhlCitjdXJyZW50IHNlc3Npb24uICBUaGlzIGlzIGRvbmUgYWZ0ZXIgbG9hZGluZyB0 aGUgZWFybHkgaW5pdCBmaWxlLCBidXQKK2JlZm9yZSBsb2FkaW5nIHRoZSByZWd1bGFyIGluaXQg ZmlsZSAoQHB4cmVme1N0YXJ0dXAgU3VtbWFyeX0pLgorUGFja2FnZXMgYXJlIG5vdCBhdXRvbWF0 aWNhbGx5IG1hZGUgYXZhaWxhYmxlIGlmIHRoZSB1c2VyIG9wdGlvbgorQGNvZGV7cGFja2FnZS1l bmFibGUtYXQtc3RhcnR1cH0gaXMgc2V0IHRvIEBjb2Rle25pbH0gaW4gdGhlIGVhcmx5Citpbml0 IGZpbGUuCiAKIEBkZWZmbiBDb21tYW5kIHBhY2thZ2UtaW5pdGlhbGl6ZSAmb3B0aW9uYWwgbm8t YWN0aXZhdGUKIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgRW1hY3MnIGludGVybmFsIHJlY29y ZCBvZiB3aGljaCBwYWNrYWdlcyBhcmUKLWluc3RhbGxlZCwgYW5kIGxvYWRzIHRoZW0uICBUaGUg dXNlciBvcHRpb24gQGNvZGV7cGFja2FnZS1sb2FkLWxpc3R9Ci1zcGVjaWZpZXMgd2hpY2ggcGFj a2FnZXMgdG8gbG9hZDsgYnkgZGVmYXVsdCwgYWxsIGluc3RhbGxlZCBwYWNrYWdlcwotYXJlIGxv YWRlZC4gIElmIGNhbGxlZCBkdXJpbmcgc3RhcnR1cCwgdGhpcyBmdW5jdGlvbiBhbHNvIHNldHMK K2luc3RhbGxlZCwgYW5kIG1ha2VzIHRoZSBwYWNrYWdlcyBhdmFpbGFibGUgdG8gdGhlIGN1cnJl bnQgc2Vzc2lvbi4KK1RoZSB1c2VyIG9wdGlvbiBAY29kZXtwYWNrYWdlLWxvYWQtbGlzdH0gc3Bl Y2lmaWVzIHdoaWNoIHBhY2thZ2VzIHRvCittYWtlIGF2YWlsYWJsZTsgYnkgZGVmYXVsdCwgYWxs IGluc3RhbGxlZCBwYWNrYWdlcyBhcmUgbWFkZSBhdmFpbGFibGUuCitJZiBjYWxsZWQgZHVyaW5n IHN0YXJ0dXAsIHRoaXMgZnVuY3Rpb24gYWxzbyBzZXRzCiBAY29kZXtwYWNrYWdlLWVuYWJsZS1h dC1zdGFydHVwfSB0byBAY29kZXtuaWx9LCB0byBhdm9pZCBhY2NpZGVudGFsbHkKLWxvYWRpbmcg dGhlIHBhY2thZ2VzIHR3aWNlLiAgQHhyZWZ7UGFja2FnZSBJbnN0YWxsYXRpb24sLCwgZW1hY3Ms IFRoZQotR05VIEVtYWNzIE1hbnVhbH0uCitldmFsdWF0aW5nIHBhY2thZ2UgYXV0b2xvYWRzIG1v cmUgdGhhbiBvbmNlLiAgQHhyZWZ7UGFja2FnZQorSW5zdGFsbGF0aW9uLCwsIGVtYWNzLCBUaGUg R05VIEVtYWNzIE1hbnVhbH0uCiAKIFRoZSBvcHRpb25hbCBhcmd1bWVudCBAdmFye25vLWFjdGl2 YXRlfSwgaWYgbm9uLUBjb2Rle25pbH0sIGNhdXNlcwogRW1hY3MgdG8gdXBkYXRlIGl0cyByZWNv cmQgb2YgaW5zdGFsbGVkIHBhY2thZ2VzIHdpdGhvdXQgYWN0dWFsbHkKLWxvYWRpbmcgdGhlbTsg aXQgaXMgZm9yIGludGVybmFsIHVzZSBvbmx5LgorbWFraW5nIHRoZW0gYXZhaWxhYmxlOyBpdCBp cyBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuCisKK0luIG1vc3QgY2FzZXMsIHlvdSBzaG91bGQgbm90 IG5lZWQgdG8gY2FsbCBAY29kZXtwYWNrYWdlLWluaXRpYWxpemV9LAorYXMgdGhpcyBpcyBkb25l IGF1dG9tYXRpY2FsbHkgZHVyaW5nIHN0YXJ0dXAuICBTaW1wbHkgbWFrZSBzdXJlIHRvIHB1dAor YW55IGNvZGUgdGhhdCBzaG91bGQgcnVuIGJlZm9yZSBAY29kZXtwYWNrYWdlLWluaXRpYWxpemV9 IGluIHRoZSBlYXJseQoraW5pdCBmaWxlLCBhbmQgYW55IGNvZGUgdGhhdCBzaG91bGQgcnVuIGFm dGVyIGl0IGluIHRoZSBwcmltYXJ5IGluaXQKK2ZpbGUgKEB4cmVme0luaXQgRmlsZSwsLCBlbWFj cywgVGhlIEdOVSBFbWFjcyBNYW51YWx9KS4KIEBlbmQgZGVmZm4KIAogQG5vZGUgU2ltcGxlIFBh Y2thZ2VzCmRpZmYgLS1naXQgYS9kb2MvbWlzYy9vcmcudGV4aSBiL2RvYy9taXNjL29yZy50ZXhp CmluZGV4IGFhM2IwMjlhYjcuLjY4YWEwMWNhMTggMTAwNjQ0Ci0tLSBhL2RvYy9taXNjL29yZy50 ZXhpCisrKyBiL2RvYy9taXNjL29yZy50ZXhpCkBAIC04OTAsOSArODkwLDcgQEAgSW5zdGFsbGF0 aW9uCiBiZWVuIHZpc2l0ZWQsIGkuZS4sIHdoZXJlIG5vIE9yZyBidWlsdC1pbiBmdW5jdGlvbiBo YXZlIGJlZW4gbG9hZGVkLgogT3RoZXJ3aXNlIGF1dG9sb2FkIE9yZyBmdW5jdGlvbnMgd2lsbCBt ZXNzIHVwIHRoZSBpbnN0YWxsYXRpb24uCiAKLVRoZW4sIHRvIG1ha2Ugc3VyZSB5b3VyIE9yZyBj b25maWd1cmF0aW9uIGlzIHRha2VuIGludG8gYWNjb3VudCwgaW5pdGlhbGl6ZQotdGhlIHBhY2th Z2Ugc3lzdGVtIHdpdGggQGNvZGV7KHBhY2thZ2UtaW5pdGlhbGl6ZSl9IGluIHlvdXIgRW1hY3Mg aW5pdCBmaWxlCi1iZWZvcmUgc2V0dGluZyBhbnkgT3JnIG9wdGlvbi4gIElmIHlvdSB3YW50IHRv IHVzZSBPcmcncyBwYWNrYWdlIHJlcG9zaXRvcnksCitJZiB5b3Ugd2FudCB0byB1c2UgT3JnJ3Mg cGFja2FnZSByZXBvc2l0b3J5LAogY2hlY2sgb3V0IHRoZSBAdXJlZntodHRwOi8vb3JnbW9kZS5v cmcvZWxwYS5odG1sLCBPcmcgRUxQQSBwYWdlfS4KIAogQHN1YnN1YmhlYWRpbmcgRG93bmxvYWRp bmcgT3JnIGFzIGFuIGFyY2hpdmUKZGlmZiAtLWdpdCBhL2V0Yy9ORVdTIGIvZXRjL05FV1MKaW5k ZXggNzE1NjljOTVhZC4uYjZiODg0YjgxNiAxMDA2NDQKLS0tIGEvZXRjL05FV1MKKysrIGIvZXRj L05FV1MKQEAgLTQ5LDYgKzQ5LDI1IEBAIHRvIHJlZHVjZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGRl dmVsb3BlciBhbmQgcHJvZHVjdGlvbiBidWlsZHMuCiAMCiAqIFN0YXJ0dXAgQ2hhbmdlcyBpbiBF bWFjcyAyNy4xCiAKKysrKworKiogRW1hY3MgY2FuIG5vdyBiZSBjb25maWd1cmVkIHVzaW5nIGFu IGVhcmx5IGluaXQgZmlsZS4KK1RoZSBmaWxlIGlzIGNhbGxlZCAnZWFybHktaW5pdC5lbCcsIGlu ICd1c2VyLWVtYWNzLWRpcmVjdG9yeScuICBJdCBpcworbG9hZGVkIHZlcnkgZWFybHkgaW4gdGhl IHN0YXJ0dXAgcHJvY2VzczogYmVmb3JlIGdyYXBoaWNhbCBlbGVtZW50cworc3VjaCBhcyB0aGUg dG9vbCBiYXIgYXJlIGluaXRpYWxpemVkLCBhbmQgYmVmb3JlIHRoZSBwYWNrYWdlIG1hbmFnZXIK K2lzIGluaXRpYWxpemVkLiAgVGhlIHByaW1hcnkgcHVycG9zZSBpcyB0byBhbGxvdyBjdXN0b21p emluZyBob3cgdGhlCitwYWNrYWdlIHN5c3RlbSBpcyBpbml0aWFsaXplZCBnaXZlbiB0aGF0IGlu aXRpYWxpemF0aW9uIG5vdyBoYXBwZW5zCitiZWZvcmUgbG9hZGluZyB0aGUgcmVndWxhciBpbml0 IGZpbGUgKHNlZSBiZWxvdykuCisKKysrKworKiogRW1hY3Mgbm93IGNhbGxzICdwYWNrYWdlLWlu aXRpYWxpemUnIGJlZm9yZSBsb2FkaW5nIHRoZSBpbml0IGZpbGUuCitUaGlzIGlzIHBhcnQgb2Yg YSBjaGFuZ2UgaW50ZW5kZWQgdG8gZWxpbWluYXRlIHRoZSBiZWhhdmlvciBvZgorcGFja2FnZS5l bCBpbnNlcnRpbmcgYSBjYWxsIHRvICdwYWNrYWdlLWluaXRpYWxpemUnIGludG8gdGhlIGluaXQK K2ZpbGUsIHdoaWNoIHdhcyBwcmV2aW91c2x5IGRvbmUgd2hlbiBFbWFjcyB3YXMgc3RhcnRlZC4g IEFzIGEgcmVzdWx0CitvZiB0aGlzIGNoYW5nZSwgaXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0 byBjYWxsICdwYWNrYWdlLWluaXRpYWxpemUnCitpbiB5b3VyIGluaXQgZmlsZS4gIEhvd2V2ZXIs IGlmIHlvdXIgaW5pdCBmaWxlIGNoYW5nZXMgdGhlIHZhbHVlcyBvZgorJ3BhY2thZ2UtbG9hZC1s aXN0JyBvciAncGFja2FnZS11c2VyLWRpcicsIHRoZW4gdGhhdCBjb2RlIG5lZWRzIHRvIGJlCitt b3ZlZCB0byB0aGUgZWFybHkgaW5pdCBmaWxlIChzZWUgYWJvdmUpLgorCiAMCiAqIENoYW5nZXMg aW4gRW1hY3MgMjcuMQogCmRpZmYgLS1naXQgYS9saXNwL2VtYWNzLWxpc3AvcGFja2FnZS5lbCBi L2xpc3AvZW1hY3MtbGlzcC9wYWNrYWdlLmVsCmluZGV4IDcxZDFjNDFlYzMuLmFiMDJkNDI1NWIg MTAwNjQ0Ci0tLSBhL2xpc3AvZW1hY3MtbGlzcC9wYWNrYWdlLmVsCisrKyBiL2xpc3AvZW1hY3Mt bGlzcC9wYWNrYWdlLmVsCkBAIC0xNDMxLDE2ICsxNDMxLDExIEBAIHBhY2thZ2UtcmVhZC1hbGwt YXJjaGl2ZS1jb250ZW50cwogOzsgYXZhaWxhYmxlIG9uIGRpc2suCiAoZGVmdmFyIHBhY2thZ2Ut LWluaXRpYWxpemVkIG5pbCkKIAotKGRlZnZhciBwYWNrYWdlLS1pbml0LWZpbGUtZW5zdXJlZCBu aWwKLSAgIldoZXRoZXIgd2Uga25vdyB0aGUgaW5pdCBmaWxlIGhhcyBwYWNrYWdlLWluaXRpYWxp emUuIikKLQogOzs7IyMjYXV0b2xvYWQKIChkZWZ1biBwYWNrYWdlLWluaXRpYWxpemUgKCZvcHRp b25hbCBuby1hY3RpdmF0ZSkKICAgIkxvYWQgRW1hY3MgTGlzcCBwYWNrYWdlcywgYW5kIGFjdGl2 YXRlIHRoZW0uCiBUaGUgdmFyaWFibGUgYHBhY2thZ2UtbG9hZC1saXN0JyBjb250cm9scyB3aGlj aCBwYWNrYWdlcyB0byBsb2FkLgogSWYgb3B0aW9uYWwgYXJnIE5PLUFDVElWQVRFIGlzIG5vbi1u aWwsIGRvbid0IGFjdGl2YXRlIHBhY2thZ2VzLgotSWYgYHVzZXItaW5pdC1maWxlJyBkb2VzIG5v dCBtZW50aW9uIGAocGFja2FnZS1pbml0aWFsaXplKScsIGFkZAotaXQgdG8gdGhlIGZpbGUuCiBJ ZiBjYWxsZWQgYXMgcGFydCBvZiBsb2FkaW5nIGB1c2VyLWluaXQtZmlsZScsIHNldAogYHBhY2th Z2UtZW5hYmxlLWF0LXN0YXJ0dXAnIHRvIG5pbCwgdG8gcHJldmVudCBhY2NpZGVudGFsbHkKIGxv YWRpbmcgcGFja2FnZXMgdHdpY2UuCkBAIC0xNDQ5LDEzICsxNDQ0LDcgQEAgcGFja2FnZS1pbml0 aWFsaXplCiB0YWtlbiBjYXJlIG9mIGJ5IGBwYWNrYWdlLWluaXRpYWxpemUnLiIKICAgKGludGVy YWN0aXZlKQogICAoc2V0cSBwYWNrYWdlLWFsaXN0IG5pbCkKLSAgKGlmIGFmdGVyLWluaXQtdGlt ZQotICAgICAgKHBhY2thZ2UtLWVuc3VyZS1pbml0LWZpbGUpCi0gICAgOzsgSWYgYHBhY2thZ2Ut aW5pdGlhbGl6ZScgaXMgYmVmb3JlIHdlIGZpbmlzaGVkIGxvYWRpbmcgdGhlIGluaXQKLSAgICA7 OyBmaWxlLCBpdCdzIG9idmlvdXMgd2UgZG9uJ3QgbmVlZCB0byBlbnN1cmUtaW5pdC4KLSAgICAo c2V0cSBwYWNrYWdlLS1pbml0LWZpbGUtZW5zdXJlZCB0Ci0gICAgICAgICAgOzsgQW5kIGxpa2Vs eSB3ZSBkb24ndCBuZWVkIHRvIHJ1biBpdCBhZ2FpbiBhZnRlciBpbml0LgotICAgICAgICAgIHBh Y2thZ2UtZW5hYmxlLWF0LXN0YXJ0dXAgbmlsKSkKKyAgKHNldHEgcGFja2FnZS1lbmFibGUtYXQt c3RhcnR1cCBuaWwpCiAgIChwYWNrYWdlLWxvYWQtYWxsLWRlc2NyaXB0b3JzKQogICAocGFja2Fn ZS1yZWFkLWFsbC1hcmNoaXZlLWNvbnRlbnRzKQogICAodW5sZXNzIG5vLWFjdGl2YXRlCkBAIC0x ODcyLDY0ICsxODYxLDYgQEAgcGFja2FnZS1kb3dubG9hZC10cmFuc2FjdGlvbgogdXNpbmcgYHBh Y2thZ2UtY29tcHV0ZS10cmFuc2FjdGlvbicuIgogICAobWFwYyAjJ3BhY2thZ2UtaW5zdGFsbC1m cm9tLWFyY2hpdmUgcGFja2FnZXMpKQogCi0oZGVmdW4gcGFja2FnZS0tZW5zdXJlLWluaXQtZmls ZSAoKQotICAiRW5zdXJlIHRoYXQgdGhlIHVzZXIncyBpbml0IGZpbGUgaGFzIGBwYWNrYWdlLWlu aXRpYWxpemUnLgotYHBhY2thZ2UtaW5pdGlhbGl6ZScgZG9lc24ndCBoYXZlIHRvIGJlIGNhbGxl ZCwgYXMgbG9uZyBhcyBpdCBpcwotcHJlc2VudCBzb21ld2hlcmUgaW4gdGhlIGZpbGUsIGV2ZW4g YXMgYSBjb21tZW50LiAgSWYgaXQgaXMgbm90LAotYWRkIGEgY2FsbCB0byBpdCBhbG9uZyB3aXRo IHNvbWUgZXhwbGFuYXRvcnkgY29tbWVudHMuIgotICA7OyBEb24ndCBtZXNzIHdpdGggdGhlIGlu aXQtZmlsZSBmcm9tICJlbWFjcyAtUSIuCi0gICh3aGVuIChhbmQgKHN0cmluZ3AgdXNlci1pbml0 LWZpbGUpCi0gICAgICAgICAgICAgKG5vdCBwYWNrYWdlLS1pbml0LWZpbGUtZW5zdXJlZCkKLSAg ICAgICAgICAgICAoZmlsZS1yZWFkYWJsZS1wIHVzZXItaW5pdC1maWxlKQotICAgICAgICAgICAg IChmaWxlLXdyaXRhYmxlLXAgdXNlci1pbml0LWZpbGUpKQotICAgIChsZXQqICgoYnVmZmVyIChm aW5kLWJ1ZmZlci12aXNpdGluZyB1c2VyLWluaXQtZmlsZSkpCi0gICAgICAgICAgIGJ1ZmZlci1u YW1lCi0gICAgICAgICAgIChjb250YWlucy1pbml0Ci0gICAgICAgICAgICAoaWYgYnVmZmVyCi0g ICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyCi0gICAgICAgICAgICAg ICAgICAoc2F2ZS1leGN1cnNpb24KLSAgICAgICAgICAgICAgICAgICAgKHNhdmUtcmVzdHJpY3Rp b24KLSAgICAgICAgICAgICAgICAgICAgICAod2lkZW4pCi0gICAgICAgICAgICAgICAgICAgICAg KGdvdG8tY2hhciAocG9pbnQtbWluKSkKLSAgICAgICAgICAgICAgICAgICAgICAocmUtc2VhcmNo LWZvcndhcmQgIihwYWNrYWdlLWluaXRpYWxpemVcXF8+IiBuaWwgJ25vZXJyb3IpKSkpCi0gICAg ICAgICAgICAgIDs7IERvbid0IHZpc2l0IHRoZSBmaWxlIGlmIHdlIGRvbid0IGhhdmUgdG8uCi0g ICAgICAgICAgICAgICh3aXRoLXRlbXAtYnVmZmVyCi0gICAgICAgICAgICAgICAgKGluc2VydC1m aWxlLWNvbnRlbnRzIHVzZXItaW5pdC1maWxlKQotICAgICAgICAgICAgICAgIChnb3RvLWNoYXIg KHBvaW50LW1pbikpCi0gICAgICAgICAgICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkICIocGFja2Fn ZS1pbml0aWFsaXplXFxfPiIgbmlsICdub2Vycm9yKSkpKSkKLSAgICAgICh1bmxlc3MgY29udGFp bnMtaW5pdAotICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAob3IgYnVmZmVyCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoZGVsYXktbW9kZS1ob29rcyB0KQotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbmQtZmlsZS12aXNpdC10cnVl bmFtZSB0KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbmQtZmlsZS1u b3NlbGVjdCB1c2VyLWluaXQtZmlsZSkpKQotICAgICAgICAgICh3aGVuIGJ1ZmZlcgotICAgICAg ICAgICAgKHNldHEgYnVmZmVyLW5hbWUgKGJ1ZmZlci1maWxlLW5hbWUpKQotICAgICAgICAgICAg KHNldC12aXNpdGVkLWZpbGUtbmFtZSAoZmlsZS1jaGFzZS1saW5rcyB1c2VyLWluaXQtZmlsZSkp KQotICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgotICAgICAgICAgICAgKHNhdmUtcmVzdHJpY3Rp b24KLSAgICAgICAgICAgICAgKHdpZGVuKQotICAgICAgICAgICAgICAoZ290by1jaGFyIChwb2lu dC1taW4pKQotICAgICAgICAgICAgICAod2hpbGUgKGFuZCAobG9va2luZy1hdC1wICJbWzpibGFu azpdXSpcXCg7XFx8JFxcKSIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChub3QgKGVvYnAp KSkKLSAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lIDEpKQotICAgICAgICAgICAgICAoaW5z ZXJ0Ci0gICAgICAgICAgICAgICAiXG4iCi0gICAgICAgICAgICAgICAiOzsgQWRkZWQgYnkgUGFj a2FnZS5lbC4gIFRoaXMgbXVzdCBjb21lIGJlZm9yZSBjb25maWd1cmF0aW9ucyBvZlxuIgotICAg ICAgICAgICAgICAgIjs7IGluc3RhbGxlZCBwYWNrYWdlcy4gIERvbid0IGRlbGV0ZSB0aGlzIGxp bmUuICBJZiB5b3UgZG9uJ3Qgd2FudCBpdCxcbiIKLSAgICAgICAgICAgICAgICI7OyBqdXN0IGNv bW1lbnQgaXQgb3V0IGJ5IGFkZGluZyBhIHNlbWljb2xvbiB0byB0aGUgc3RhcnQgb2YgdGhlIGxp bmUuXG4iCi0gICAgICAgICAgICAgICAiOzsgWW91IG1heSBkZWxldGUgdGhlc2UgZXhwbGFuYXRv cnkgY29tbWVudHMuXG4iCi0gICAgICAgICAgICAgICAiKHBhY2thZ2UtaW5pdGlhbGl6ZSlcbiIp Ci0gICAgICAgICAgICAgICh1bmxlc3MgKGxvb2tpbmctYXQtcCAiJCIpCi0gICAgICAgICAgICAg ICAgKGluc2VydCAiXG4iKSkKLSAgICAgICAgICAgICAgKGxldCAoKGZpbGUtcHJlY2lvdXMtZmxh ZyB0KSkKLSAgICAgICAgICAgICAgICAoc2F2ZS1idWZmZXIpKQotICAgICAgICAgICAgICAoaWYg YnVmZmVyCi0gICAgICAgICAgICAgICAgICAocHJvZ24KLSAgICAgICAgICAgICAgICAgICAgKHNl dC12aXNpdGVkLWZpbGUtbmFtZSBidWZmZXItbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgKHNl dC1idWZmZXItbW9kaWZpZWQtcCBuaWwpKQotICAgICAgICAgICAgICAgIChraWxsLWJ1ZmZlciAo Y3VycmVudC1idWZmZXIpKSkpKSkpKSkKLSAgKHNldHEgcGFja2FnZS0taW5pdC1maWxlLWVuc3Vy ZWQgdCkpCi0KIDs7OyMjI2F1dG9sb2FkCiAoZGVmdW4gcGFja2FnZS1pbnN0YWxsIChwa2cgJm9w dGlvbmFsIGRvbnQtc2VsZWN0KQogICAiSW5zdGFsbCB0aGUgcGFja2FnZSBQS0cuCmRpZmYgLS1n aXQgYS9saXNwL3N0YXJ0dXAuZWwgYi9saXNwL3N0YXJ0dXAuZWwKaW5kZXggOGMzNmMxOWU4Mi4u NjliYzhmYTc4MSAxMDA2NDQKLS0tIGEvbGlzcC9zdGFydHVwLmVsCisrKyBiL2xpc3Avc3RhcnR1 cC5lbApAQCAtMzEyLDYgKzMxMiwxMiBAQCBpbmhpYml0LXN0YXJ0dXAtaG9va3MKIEN1cnJlbnRs eSB0aGlzIGFwcGxpZXMgdG86IGBlbWFjcy1zdGFydHVwLWhvb2snLCBgdGVybS1zZXR1cC1ob29r JywKIGFuZCBgd2luZG93LXNldHVwLWhvb2snLiIpCiAKKyhkZWZ2YXIgZWFybHktaW5pdC1maWxl IG5pbAorICAiRmlsZSBuYW1lLCBpbmNsdWRpbmcgZGlyZWN0b3J5LCBvZiB1c2VyJ3MgZWFybHkg aW5pdCBmaWxlLgorU2VlIGB1c2VyLWluaXQtZmlsZScuICBUaGUgb25seSBkaWZmZXJlbmNlIGlz IHRoYXQKK2BlYXJseS1pbml0LWZpbGUnIGlzIG5vdCBzZXQgZHVyaW5nIHRoZSBjb3Vyc2Ugb2Yg ZXZhbHVhdGluZyB0aGUKK2Vhcmx5IGluaXQgZmlsZS4iKQorCiAoZGVmdmFyIGtleWJvYXJkLXR5 cGUgbmlsCiAgICJUaGUgYnJhbmQgb2Yga2V5Ym9hcmQgeW91IGFyZSB1c2luZy4KIFRoaXMgdmFy aWFibGUgaXMgdXNlZCB0byBkZWZpbmUgdGhlIHByb3BlciBmdW5jdGlvbiBhbmQga2V5cGFkCkBA IC04NzAsNiArODc2LDEwMyBAQCBzdGFydHVwLS1zZXR1cC1xdW90ZS1kaXNwbGF5CiAgICAgICAg ICAgKHdoZW4gc3RhbmRhcmQtZGlzcGxheS10YWJsZQogICAgICAgICAgICAgKGFzZXQgc3RhbmRh cmQtZGlzcGxheS10YWJsZSBjaGFyIG5pbCkpKSkpKSkKIAorKGRlZnVuIGxvYWQtdXNlci1pbml0 LWZpbGUKKyAgICAoZmlsZW5hbWUtZnVuY3Rpb24gJm9wdGlvbmFsIGFsdGVybmF0ZS1maWxlbmFt ZS1mdW5jdGlvbiBsb2FkLWRlZmF1bHRzKQorICAiTG9hZCBhIHVzZXIgaW5pdC1maWxlLgorRklM RU5BTUUtRlVOQ1RJT04gaXMgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIGFuZCBzaG91bGQgcmV0 dXJuCit0aGUgbmFtZSBvZiB0aGUgaW5pdC1maWxlIHRvIGxvYWQuICBJZiB0aGlzIGZpbGUgY2Fu bm90IGJlCitsb2FkZWQsIGFuZCBBTFRFUk5BVEUtRklMRU5BTUUtRlVOQ1RJT04gaXMgbm9uLW5p bCwgdGhlbiBpdCBpcworY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIGFuZCBzaG91bGQgcmV0dXJu IHRoZSBuYW1lIG9mIGFuCithbHRlcm5hdGUgaW5pdC1maWxlIHRvIGxvYWQuICBJZiBMT0FELURF RkFVTFRTIGlzIG5vbi1uaWwsIHRoZW4KK2xvYWQgZGVmYXVsdC5lbCBhZnRlciB0aGUgaW5pdC1m aWxlLgorCitUaGlzIGZ1bmN0aW9uIHNldHMgYHVzZXItaW5pdC1maWxlJyB0byB0aGUgbmFtZSBv ZiB0aGUgbG9hZGVkCitpbml0LWZpbGUsIG9yIHRvIGEgZGVmYXVsdCB2YWx1ZSBpZiBsb2FkaW5n IGlzIG5vdCBwb3NzaWJsZS4iCisgIChsZXQgKChkZWJ1Zy1vbi1lcnJvci1mcm9tLWluaXQtZmls ZSBuaWwpCisgICAgICAgIChkZWJ1Zy1vbi1lcnJvci1zaG91bGQtYmUtc2V0IG5pbCkKKyAgICAg ICAgKGRlYnVnLW9uLWVycm9yLWluaXRpYWwKKyAgICAgICAgIChpZiAoZXEgaW5pdC1maWxlLWRl YnVnIHQpCisgICAgICAgICAgICAgJ3N0YXJ0dXAKKyAgICAgICAgICAgaW5pdC1maWxlLWRlYnVn KSkpCisgICAgKGxldCAoKGRlYnVnLW9uLWVycm9yIGRlYnVnLW9uLWVycm9yLWluaXRpYWwpCisg ICAgICAgICAgOzsgV2UgY3JlYXRlIGFuIGFub255bW91cyBmdW5jdGlvbiBoZXJlIHNvIHRoYXQg d2UgY2FuIGNhbGwKKyAgICAgICAgICA7OyBpdCBpbiBkaWZmZXJlbnQgY29udGV4dHMgZGVwZW5k aW5nIG9uIHRoZSB2YWx1ZSBvZgorICAgICAgICAgIDs7IGBkZWJ1Zy1vbi1lcnJvcicuCisgICAg ICAgICAgKHJlYWQtaW5pdC1maWxlCisgICAgICAgICAgIChsYW1iZGEgKCkKKyAgICAgICAgICAg ICAod2hlbiBpbml0LWZpbGUtdXNlcgorICAgICAgICAgICAgICAgKGxldCAoKGluaXQtZmlsZS1u YW1lIChmdW5jYWxsIGZpbGVuYW1lLWZ1bmN0aW9uKSkpCisKKyAgICAgICAgICAgICAgICAgOzsg SWYgYHVzZXItaW5pdC1maWxlJyBpcyB0LCB0aGVuIGBsb2FkJyB3aWxsIHN0b3JlCisgICAgICAg ICAgICAgICAgIDs7IHRoZSBuYW1lIG9mIHRoZSBmaWxlIHRoYXQgaXQgbG9hZHMgaW50bworICAg ICAgICAgICAgICAgICA7OyBgdXNlci1pbml0LWZpbGUnLgorICAgICAgICAgICAgICAgICAoc2V0 cSB1c2VyLWluaXQtZmlsZSB0KQorICAgICAgICAgICAgICAgICAobG9hZCBpbml0LWZpbGUtbmFt ZSAnbm9lcnJvciAnbm9tZXNzYWdlKQorCisgICAgICAgICAgICAgICAgICh3aGVuIChhbmQgKGVx IHVzZXItaW5pdC1maWxlIHQpIGFsdGVybmF0ZS1maWxlbmFtZS1mdW5jdGlvbikKKyAgICAgICAg ICAgICAgICAgICAobG9hZCAoZnVuY2FsbCBhbHRlcm5hdGUtZmlsZW5hbWUtZnVuY3Rpb24pCisg ICAgICAgICAgICAgICAgICAgICAgICAgJ25vZXJyb3IgJ25vbWVzc2FnZSkpCisKKyAgICAgICAg ICAgICAgICAgOzsgSWYgd2UgZGlkIG5vdCBmaW5kIHRoZSB1c2VyJ3MgaW5pdCBmaWxlLCBzZXQK KyAgICAgICAgICAgICAgICAgOzsgdXNlci1pbml0LWZpbGUgY29uY2x1c2l2ZWx5LiAgRG9uJ3Qg bGV0IGl0IGJlCisgICAgICAgICAgICAgICAgIDs7IHNldCBmcm9tIGRlZmF1bHQuZWwuCisgICAg ICAgICAgICAgICAgICh3aGVuIChlcSB1c2VyLWluaXQtZmlsZSB0KQorICAgICAgICAgICAgICAg ICAgIChzZXRxIHVzZXItaW5pdC1maWxlIGluaXQtZmlsZS1uYW1lKSkpCisKKyAgICAgICAgICAg ICAgIDs7IElmIHdlIGxvYWRlZCBhIGNvbXBpbGVkIGZpbGUsIHNldCBgdXNlci1pbml0LWZpbGUn IHRvCisgICAgICAgICAgICAgICA7OyB0aGUgc291cmNlIHZlcnNpb24gaWYgdGhhdCBleGlzdHMu CisgICAgICAgICAgICAgICAod2hlbiAoZXF1YWwgKGZpbGUtbmFtZS1leHRlbnNpb24gdXNlci1p bml0LWZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVsYyIpCisgICAgICAgICAg ICAgICAgIChsZXQqICgoc291cmNlIChmaWxlLW5hbWUtc2Fucy1leHRlbnNpb24gdXNlci1pbml0 LWZpbGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgKGFsdCAoY29uY2F0IHNvdXJjZSAiLmVs IikpKQorICAgICAgICAgICAgICAgICAgIChzZXRxIHNvdXJjZSAoY29uZCAoKGZpbGUtZXhpc3Rz LXAgYWx0KSBhbHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZmls ZS1leGlzdHMtcCBzb3VyY2UpIHNvdXJjZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHQgbmlsKSkpCisgICAgICAgICAgICAgICAgICAgKHdoZW4gc291cmNlCisgICAg ICAgICAgICAgICAgICAgICAod2hlbiAoZmlsZS1uZXdlci10aGFuLWZpbGUtcCBzb3VyY2UgdXNl ci1pbml0LWZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgIChtZXNzYWdlICJXYXJuaW5nOiAl cyBpcyBuZXdlciB0aGFuICVzIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3Vy Y2UgdXNlci1pbml0LWZpbGUpCisgICAgICAgICAgICAgICAgICAgICAgIChzaXQtZm9yIDEpKQor ICAgICAgICAgICAgICAgICAgICAgKHNldHEgdXNlci1pbml0LWZpbGUgc291cmNlKSkpKQorCisg ICAgICAgICAgICAgICAod2hlbiBsb2FkLWRlZmF1bHRzCisKKyAgICAgICAgICAgICAgICAgOzsg UHJldmVudCBkZWZhdWx0LmVsIGZyb20gY2hhbmdpbmcgdGhlIHZhbHVlIG9mCisgICAgICAgICAg ICAgICAgIDs7IGBpbmhpYml0LXN0YXJ0dXAtc2NyZWVuJy4KKyAgICAgICAgICAgICAgICAgKGxl dCAoKGluaGliaXQtc3RhcnR1cC1zY3JlZW4gbmlsKSkKKyAgICAgICAgICAgICAgICAgICAobG9h ZCAiZGVmYXVsdCIgJ25vZXJyb3IgJ25vbWVzc2FnZSkpKSkpKSkKKyAgICAgIDs7IE5vdyBjYWxs IG91ciBhbm9ueW1vdXMgZnVuY3Rpb24uCisgICAgICAoaWYgaW5pdC1maWxlLWRlYnVnCisgICAg ICAgICAgOzsgRG8gdGhpcyB3aXRob3V0IGEgYGNvbmRpdGlvbi1jYXNlJyBpZiB0aGUgdXNlciB3 YW50cyB0bworICAgICAgICAgIDs7IGRlYnVnLgorICAgICAgICAgIChmdW5jYWxsIHJlYWQtaW5p dC1maWxlKQorICAgICAgICAoY29uZGl0aW9uLWNhc2UgZXJyb3IKKyAgICAgICAgICAgIChmdW5j YWxsIHJlYWQtaW5pdC1maWxlKQorICAgICAgICAgIChlcnJvcgorICAgICAgICAgICAoZGlzcGxh eS13YXJuaW5nCisgICAgICAgICAgICAnaW5pdGlhbGl6YXRpb24KKyAgICAgICAgICAgIChmb3Jt YXQtbWVzc2FnZSAiXAorQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgbG9hZGluZyBgJXMnOlxuXG4l cyVzJXNcblxuXAorVG8gZW5zdXJlIG5vcm1hbCBvcGVyYXRpb24sIHlvdSBzaG91bGQgaW52ZXN0 aWdhdGUgYW5kIHJlbW92ZSB0aGUKK2NhdXNlIG9mIHRoZSBlcnJvciBpbiB5b3VyIGluaXRpYWxp emF0aW9uIGZpbGUuICBTdGFydCBFbWFjcyB3aXRoCit0aGUgYC0tZGVidWctaW5pdCcgb3B0aW9u IHRvIHZpZXcgYSBjb21wbGV0ZSBlcnJvciBiYWNrdHJhY2UuIgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVzZXItaW5pdC1maWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdl dCAoY2FyIGVycm9yKSAnZXJyb3ItbWVzc2FnZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoaWYgKGNkciBlcnJvcikgIjogIiAiIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAo bWFwY29uY2F0IChsYW1iZGEgKHMpIChwcmluMS10by1zdHJpbmcgcyB0KSkKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZHIgZXJyb3IpICIsICIpKQorICAgICAgICAg ICAgOndhcm5pbmcpCisgICAgICAgICAgIChzZXRxIGluaXQtZmlsZS1oYWQtZXJyb3IgdCkpKSkK KworICAgICAgOzsgSWYgd2UgY2FuIHRlbGwgdGhhdCB0aGUgaW5pdCBmaWxlIGFsdGVyZWQgZGVi dWctb24tZXJyb3IsCisgICAgICA7OyBhcnJhbmdlIHRvIHByZXNlcnZlIHRoZSB2YWx1ZSB0aGF0 IGl0IHNldCB1cC4KKyAgICAgIChvciAoZXEgZGVidWctb24tZXJyb3IgZGVidWctb24tZXJyb3It aW5pdGlhbCkKKyAgICAgICAgICAoc2V0cSBkZWJ1Zy1vbi1lcnJvci1zaG91bGQtYmUtc2V0IHQK KyAgICAgICAgICAgICAgICBkZWJ1Zy1vbi1lcnJvci1mcm9tLWluaXQtZmlsZSBkZWJ1Zy1vbi1l cnJvcikpKQorCisgICAgKHdoZW4gZGVidWctb24tZXJyb3Itc2hvdWxkLWJlLXNldAorICAgICAg KHNldHEgZGVidWctb24tZXJyb3IgZGVidWctb24tZXJyb3ItZnJvbS1pbml0LWZpbGUpKSkpCisK IChkZWZ1biBjb21tYW5kLWxpbmUgKCkKICAgIkEgc3Vicm91dGluZSBvZiBgbm9ybWFsLXRvcC1s ZXZlbCcuCiBBbW9uZ3N0IGFub3RoZXIgdGhpbmdzLCBpdCBwYXJzZXMgdGhlIGNvbW1hbmQtbGlu ZSBhcmd1bWVudHMuIgpAQCAtMTAyMSw2ICsxMTI0LDY5IEBAIGNvbW1hbmQtbGluZQogICAgIChh bmQgY29tbWFuZC1saW5lLWFyZ3MKICAgICAgICAgIChzZXRjZHIgY29tbWFuZC1saW5lLWFyZ3Mg YXJncykpKQogCisgIDs7IFdhcm4gZm9yIGludmFsaWQgdXNlciBuYW1lLgorICAod2hlbiBpbml0 LWZpbGUtdXNlcgorICAgIChpZiAoc3RyaW5nLW1hdGNoICJbfi86XG5dIiBpbml0LWZpbGUtdXNl cikKKyAgICAgICAgKGRpc3BsYXktd2FybmluZyAnaW5pdGlhbGl6YXRpb24KKyAgICAgICAgICAg ICAgICAgICAgICAgICAoZm9ybWF0ICJJbnZhbGlkIHVzZXIgbmFtZSAlcyIKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGluaXQtZmlsZS11c2VyKQorICAgICAgICAgICAgICAgICAg ICAgICAgIDplcnJvcikKKyAgICAgIChpZiAoZmlsZS1kaXJlY3RvcnktcCAoZXhwYW5kLWZpbGUt bmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBXZSBkb24ndCBzdXBwb3J0IH5V U0VSIG9uIE1TLVdpbmRvd3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgYW5kIE1T LURPUyBleGNlcHQgZm9yIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDs7IHVzZXIsIGFuZCBhbHdheXMgbG9hZCAuZW1hY3MgZnJvbQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA7OyB0aGUgY3VycmVudCB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgOzsgKHNlZSBiZWxvdykuICBTbyBhbHdheXMgY2hlY2sgIn4i LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBldmVuIGlmIGludm9rZWQgd2l0aCAi LXUgVVNFUiIsIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGlmICRVU0VSIG9y ICRMT0dOQU1FIGFyZSBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgc29t ZXRoaW5nIGRpZmZlcmVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChtZW1x IHN5c3RlbS10eXBlICcod2luZG93cy1udCBtcy1kb3MpKQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIn4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAi fiIgaW5pdC1maWxlLXVzZXIpKSkpCisgICAgICAgICAgbmlsCisgICAgICAgIChkaXNwbGF5LXdh cm5pbmcgJ2luaXRpYWxpemF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgKGZvcm1hdCAi VXNlciAlcyBoYXMgbm8gaG9tZSBkaXJlY3RvcnkiCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoaWYgKGVxdWFsIGluaXQtZmlsZS11c2VyICIiKQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh1c2VyLXJlYWwtbG9naW4tbmFtZSkKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW5pdC1maWxlLXVzZXIpKQorICAgICAgICAgICAgICAgICAg ICAgICAgIDplcnJvcikpKSkKKworICA7OyBMb2FkIHRoZSBlYXJseSBpbml0IGZpbGUsIGlmIGZv dW5kLgorICAobG9hZC11c2VyLWluaXQtZmlsZQorICAgKGxhbWJkYSAoKQorICAgICAoZXhwYW5k LWZpbGUtbmFtZQorICAgICAgImVhcmx5LWluaXQiCisgICAgICAoZmlsZS1uYW1lLWFzLWRpcmVj dG9yeQorICAgICAgIChjb25jYXQgIn4iIGluaXQtZmlsZS11c2VyICIvLmVtYWNzLmQiKSkpKSkK KyAgKHNldHEgZWFybHktaW5pdC1maWxlIHVzZXItaW5pdC1maWxlKQorCisgIDs7IElmIGFueSBw YWNrYWdlIGRpcmVjdG9yeSBleGlzdHMsIGluaXRpYWxpemUgdGhlIHBhY2thZ2Ugc3lzdGVtLgor ICAoYW5kIHVzZXItaW5pdC1maWxlCisgICAgICAgcGFja2FnZS1lbmFibGUtYXQtc3RhcnR1cAor ICAgICAgIChjYXRjaCAncGFja2FnZS1kaXItZm91bmQKKwkgKGxldCAoZGlycykKKwkgICAoaWYg KGJvdW5kcCAncGFja2FnZS1kaXJlY3RvcnktbGlzdCkKKwkgICAgICAgKHNldHEgZGlycyBwYWNr YWdlLWRpcmVjdG9yeS1saXN0KQorCSAgICAgKGRvbGlzdCAoZiBsb2FkLXBhdGgpCisJICAgICAg IChhbmQgKHN0cmluZ3AgZikKKwkJICAgIChlcXVhbCAoZmlsZS1uYW1lLW5vbmRpcmVjdG9yeSBm KSAic2l0ZS1saXNwIikKKwkJICAgIChwdXNoIChleHBhbmQtZmlsZS1uYW1lICJlbHBhIiBmKSBk aXJzKSkpKQorCSAgIChwdXNoIChpZiAoYm91bmRwICdwYWNrYWdlLXVzZXItZGlyKQorCQkgICAg IHBhY2thZ2UtdXNlci1kaXIKKwkJICAgKGxvY2F0ZS11c2VyLWVtYWNzLWZpbGUgImVscGEiKSkK KwkJIGRpcnMpCisJICAgKGRvbGlzdCAoZGlyIGRpcnMpCisJICAgICAod2hlbiAoZmlsZS1kaXJl Y3RvcnktcCBkaXIpCisJICAgICAgIChkb2xpc3QgKHN1YmRpciAoZGlyZWN0b3J5LWZpbGVzIGRp cikpCisJCSAod2hlbiAobGV0ICgoc3ViZGlyIChleHBhbmQtZmlsZS1uYW1lIHN1YmRpciBkaXIp KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYW5kIChmaWxlLWRpcmVjdG9yeS1wIHN1YmRp cikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWxlLWV4aXN0cy1wCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKGV4cGFuZC1maWxlLW5hbWUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHBhY2thZ2UtLWRlc2NyaXB0aW9uLWZpbGUgc3ViZGlyKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJkaXIpKSkpCisJCSAgICh0aHJvdyAncGFj a2FnZS1kaXItZm91bmQgdCkpKSkpKSkKKyAgICAgICAocGFja2FnZS1pbml0aWFsaXplKSkKKwog ICA7OyBNYWtlIHN1cmUgd2luZG93IHN5c3RlbSdzIGluaXQgZmlsZSB3YXMgbG9hZGVkIGluIGxv YWR1cC5lbCBpZgogICA7OyB1c2luZyBhIHdpbmRvdyBzeXN0ZW0uCiAgIDs7IEluaXRpYWxpemUg dGhlIHdpbmRvdy1zeXN0ZW0gb25seSBhZnRlciBwcm9jZXNzaW5nIHRoZSBjb21tYW5kLWxpbmUK QEAgLTExMjgsMTUzICsxMjk0LDQ3IEBAIGNvbW1hbmQtbGluZQogICAgIDs7IHRoZSBzdGFydHVw IHNjcmVlbi4KICAgICAoc2V0cSBpbmhpYml0LXN0YXJ0dXAtc2NyZWVuIG5pbCkKIAotICAgIDs7 IFdhcm4gZm9yIGludmFsaWQgdXNlciBuYW1lLgotICAgICh3aGVuIGluaXQtZmlsZS11c2VyCi0g ICAgICAoaWYgKHN0cmluZy1tYXRjaCAiW34vOlxuXSIgaW5pdC1maWxlLXVzZXIpCi0JICAoZGlz cGxheS13YXJuaW5nICdpbml0aWFsaXphdGlvbgotCQkJICAgKGZvcm1hdCAiSW52YWxpZCB1c2Vy IG5hbWUgJXMiCi0JCQkJICAgaW5pdC1maWxlLXVzZXIpCi0JCQkgICA6ZXJyb3IpCi0JKGlmIChm aWxlLWRpcmVjdG9yeS1wIChleHBhbmQtZmlsZS1uYW1lCi0JCQkgICAgICAgOzsgV2UgZG9uJ3Qg c3VwcG9ydCB+VVNFUiBvbiBNUy1XaW5kb3dzCi0JCQkgICAgICAgOzsgYW5kIE1TLURPUyBleGNl cHQgZm9yIHRoZSBjdXJyZW50Ci0JCQkgICAgICAgOzsgdXNlciwgYW5kIGFsd2F5cyBsb2FkIC5l bWFjcyBmcm9tCi0JCQkgICAgICAgOzsgdGhlIGN1cnJlbnQgdXNlcidzIGhvbWUgZGlyZWN0b3J5 Ci0JCQkgICAgICAgOzsgKHNlZSBiZWxvdykuICBTbyBhbHdheXMgY2hlY2sgIn4iLAotCQkJICAg ICAgIDs7IGV2ZW4gaWYgaW52b2tlZCB3aXRoICItdSBVU0VSIiwgb3IKLQkJCSAgICAgICA7OyBp ZiAkVVNFUiBvciAkTE9HTkFNRSBhcmUgc2V0IHRvCi0JCQkgICAgICAgOzsgc29tZXRoaW5nIGRp ZmZlcmVudC4KLQkJCSAgICAgICAoaWYgKG1lbXEgc3lzdGVtLXR5cGUgJyh3aW5kb3dzLW50IG1z LWRvcykpCi0JCQkJICAgIn4iCi0JCQkJIChjb25jYXQgIn4iIGluaXQtZmlsZS11c2VyKSkpKQot CSAgICBuaWwKLQkgIChkaXNwbGF5LXdhcm5pbmcgJ2luaXRpYWxpemF0aW9uCi0JCQkgICAoZm9y bWF0ICJVc2VyICVzIGhhcyBubyBob21lIGRpcmVjdG9yeSIKLQkJCQkgICAoaWYgKGVxdWFsIGlu aXQtZmlsZS11c2VyICIiKQotCQkJCSAgICAgICAodXNlci1yZWFsLWxvZ2luLW5hbWUpCi0JCQkJ ICAgICBpbml0LWZpbGUtdXNlcikpCi0JCQkgICA6ZXJyb3IpKSkpCi0KICAgICA7OyBMb2FkIHRo YXQgdXNlcidzIGluaXQgZmlsZSwgb3IgdGhlIGRlZmF1bHQgb25lLCBvciBub25lLgotICAgIChs ZXQgKGRlYnVnLW9uLWVycm9yLWZyb20taW5pdC1maWxlCi0JICBkZWJ1Zy1vbi1lcnJvci1zaG91 bGQtYmUtc2V0Ci0JICAoZGVidWctb24tZXJyb3ItaW5pdGlhbAotCSAgIChpZiAoZXEgaW5pdC1m aWxlLWRlYnVnIHQpICdzdGFydHVwIGluaXQtZmlsZS1kZWJ1ZykpKQotICAgICAgKGxldCAoKGRl YnVnLW9uLWVycm9yIGRlYnVnLW9uLWVycm9yLWluaXRpYWwpCi0JICAgIDs7IFRoaXMgZnVuY3Rp b24gYWN0dWFsbHkgcmVhZHMgdGhlIGluaXQgZmlsZXMuCi0JICAgIChpbm5lcgotCSAgICAgKGZ1 bmN0aW9uCi0JICAgICAgKGxhbWJkYSAoKQotCQkoaWYgaW5pdC1maWxlLXVzZXIKLQkJICAgIChs ZXQgKCh1c2VyLWluaXQtZmlsZS0xCi0JCQkgICAoY29uZAotCQkJICAgICAoKGVxIHN5c3RlbS10 eXBlICdtcy1kb3MpCi0JCQkgICAgICAoY29uY2F0ICJ+IiBpbml0LWZpbGUtdXNlciAiL19lbWFj cyIpKQotCQkJICAgICAoKG5vdCAoZXEgc3lzdGVtLXR5cGUgJ3dpbmRvd3MtbnQpKQotCQkJICAg ICAgKGNvbmNhdCAifiIgaW5pdC1maWxlLXVzZXIgIi8uZW1hY3MiKSkKLQkJCSAgICAgOzsgRWxz ZSBkZWFsIHdpdGggdGhlIFdpbmRvd3Mgc2l0dWF0aW9uCi0JCQkgICAgICgoZGlyZWN0b3J5LWZp bGVzICJ+IiBuaWwgIl5cXC5lbWFjc1xcKFxcLmVsYz9cXCk/JCIpCi0JCQkgICAgICA7OyBQcmVm ZXIgLmVtYWNzIG9uIFdpbmRvd3MuCi0JCQkgICAgICAifi8uZW1hY3MiKQotCQkJICAgICAoKGRp cmVjdG9yeS1maWxlcyAifiIgbmlsICJeX2VtYWNzXFwoXFwuZWxjP1xcKT8kIikKLQkJCSAgICAg IDs7IEFsc28gc3VwcG9ydCBfZW1hY3MgZm9yIGNvbXBhdGliaWxpdHksIGJ1dCB3YXJuIGFib3V0 IGl0LgotCQkJICAgICAgKHB1c2ggYChpbml0aWFsaXphdGlvbgotCQkJCSAgICAgICwoZm9ybWF0 LW1lc3NhZ2UKLQkJCQkJImBfZW1hY3MnIGluaXQgZmlsZSBpcyBkZXByZWNhdGVkLCBwbGVhc2Ug dXNlIGAuZW1hY3MnIikpCi0JCQkJICAgIGRlbGF5ZWQtd2FybmluZ3MtbGlzdCkKLQkJCSAgICAg ICJ+L19lbWFjcyIpCi0JCQkgICAgICh0IDs7IEJ1dCBkZWZhdWx0IHRvIC5lbWFjcyBpZiBfZW1h Y3MgZG9lcyBub3QgZXhpc3QuCi0JCQkgICAgICAifi8uZW1hY3MiKSkpKQotCQkgICAgICA7OyBU aGlzIHRlbGxzIGBsb2FkJyB0byBzdG9yZSB0aGUgZmlsZSBuYW1lIGZvdW5kCi0JCSAgICAgIDs7 IGludG8gdXNlci1pbml0LWZpbGUuCi0JCSAgICAgIChzZXRxIHVzZXItaW5pdC1maWxlIHQpCi0J CSAgICAgIChsb2FkIHVzZXItaW5pdC1maWxlLTEgdCB0KQotCi0JCSAgICAgICh3aGVuIChlcSB1 c2VyLWluaXQtZmlsZSB0KQotCQkJOzsgSWYgd2UgZGlkIG5vdCBmaW5kIH4vLmVtYWNzLCB0cnkK LQkJCTs7IH4vLmVtYWNzLmQvaW5pdC5lbC4KLQkJCShsZXQgKChvdGhlcmZpbGUKLQkJCSAgICAg ICAoZXhwYW5kLWZpbGUtbmFtZQotCQkJCSJpbml0IgotCQkJCShmaWxlLW5hbWUtYXMtZGlyZWN0 b3J5Ci0JCQkJIChjb25jYXQgIn4iIGluaXQtZmlsZS11c2VyICIvLmVtYWNzLmQiKSkpKSkKLQkJ CSAgKGxvYWQgb3RoZXJmaWxlIHQgdCkKLQotCQkJICA7OyBJZiB3ZSBkaWQgbm90IGZpbmQgdGhl IHVzZXIncyBpbml0IGZpbGUsCi0JCQkgIDs7IHNldCB1c2VyLWluaXQtZmlsZSBjb25jbHVzaXZl bHkuCi0JCQkgIDs7IERvbid0IGxldCBpdCBiZSBzZXQgZnJvbSBkZWZhdWx0LmVsLgotCQkJICAo d2hlbiAoZXEgdXNlci1pbml0LWZpbGUgdCkKLQkJCSAgICAoc2V0cSB1c2VyLWluaXQtZmlsZSB1 c2VyLWluaXQtZmlsZS0xKSkpKQotCi0JCSAgICAgIDs7IElmIHdlIGxvYWRlZCBhIGNvbXBpbGVk IGZpbGUsIHNldAotCQkgICAgICA7OyBgdXNlci1pbml0LWZpbGUnIHRvIHRoZSBzb3VyY2UgdmVy c2lvbiBpZiB0aGF0Ci0JCSAgICAgIDs7IGV4aXN0cy4KLQkJICAgICAgKHdoZW4gKGFuZCB1c2Vy LWluaXQtZmlsZQotCQkJCSAoZXF1YWwgKGZpbGUtbmFtZS1leHRlbnNpb24gdXNlci1pbml0LWZp bGUpCi0JCQkJCSJlbGMiKSkKLQkJCShsZXQqICgoc291cmNlIChmaWxlLW5hbWUtc2Fucy1leHRl bnNpb24gdXNlci1pbml0LWZpbGUpKQotCQkJICAgICAgIChhbHQgKGNvbmNhdCBzb3VyY2UgIi5l bCIpKSkKLQkJCSAgKHNldHEgc291cmNlIChjb25kICgoZmlsZS1leGlzdHMtcCBhbHQpIGFsdCkK LQkJCQkJICAgICAoKGZpbGUtZXhpc3RzLXAgc291cmNlKSBzb3VyY2UpCi0JCQkJCSAgICAgKHQg bmlsKSkpCi0JCQkgICh3aGVuIHNvdXJjZQotCQkJICAgICh3aGVuIChmaWxlLW5ld2VyLXRoYW4t ZmlsZS1wIHNvdXJjZSB1c2VyLWluaXQtZmlsZSkKLQkJCSAgICAgIChtZXNzYWdlICJXYXJuaW5n OiAlcyBpcyBuZXdlciB0aGFuICVzIgotCQkJCSAgICAgICBzb3VyY2UgdXNlci1pbml0LWZpbGUp Ci0JCQkgICAgICAoc2l0LWZvciAxKSkKLQkJCSAgICAoc2V0cSB1c2VyLWluaXQtZmlsZSBzb3Vy Y2UpKSkpCi0KLQkJICAgICAgKHVubGVzcyBpbmhpYml0LWRlZmF1bHQtaW5pdAotICAgICAgICAg ICAgICAgICAgICAgICAgKGxldCAoKGluaGliaXQtc3RhcnR1cC1zY3JlZW4gbmlsKSkKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgOzsgVXNlcnMgYXJlIHN1cHBvc2VkIHRvIGJlIHRvbGQgdGhl aXIgcmlnaHRzLgotICAgICAgICAgICAgICAgICAgICAgICAgICA7OyAoUGx1cyBob3cgdG8gZ2V0 IGhlbHAgYW5kIGhvdyB0byB1bmRvLikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgRG9u J3QgeW91IGRhcmUgdHVybiB0aGlzIG9mZiBmb3IgYW55b25lCi0gICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IGV4Y2VwdCB5b3Vyc2VsZi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGxv YWQgImRlZmF1bHQiIHQgdCkpKSkpKSkpKQotCShpZiBpbml0LWZpbGUtZGVidWcKLQkgICAgOzsg RG8gdGhpcyB3aXRob3V0IGEgY29uZGl0aW9uLWNhc2UgaWYgdGhlIHVzZXIgd2FudHMgdG8gZGVi dWcuCi0JICAgIChmdW5jYWxsIGlubmVyKQotCSAgKGNvbmRpdGlvbi1jYXNlIGVycm9yCi0JICAg ICAgKHByb2duCi0JCShmdW5jYWxsIGlubmVyKQotCQkoc2V0cSBpbml0LWZpbGUtaGFkLWVycm9y IG5pbCkpCi0JICAgIChlcnJvcgotCSAgICAgKGRpc3BsYXktd2FybmluZwotCSAgICAgICdpbml0 aWFsaXphdGlvbgotCSAgICAgIChmb3JtYXQtbWVzc2FnZSAiXAotQW4gZXJyb3Igb2NjdXJyZWQg d2hpbGUgbG9hZGluZyBgJXMnOlxuXG4lcyVzJXNcblxuXAotVG8gZW5zdXJlIG5vcm1hbCBvcGVy YXRpb24sIHlvdSBzaG91bGQgaW52ZXN0aWdhdGUgYW5kIHJlbW92ZSB0aGUKLWNhdXNlIG9mIHRo ZSBlcnJvciBpbiB5b3VyIGluaXRpYWxpemF0aW9uIGZpbGUuICBTdGFydCBFbWFjcyB3aXRoCi10 aGUgYC0tZGVidWctaW5pdCcgb3B0aW9uIHRvIHZpZXcgYSBjb21wbGV0ZSBlcnJvciBiYWNrdHJh Y2UuIgotCQkgICAgICB1c2VyLWluaXQtZmlsZQotCQkgICAgICAoZ2V0IChjYXIgZXJyb3IpICdl cnJvci1tZXNzYWdlKQotCQkgICAgICAoaWYgKGNkciBlcnJvcikgIjogIiAiIikKLQkJICAgICAg KG1hcGNvbmNhdCAobGFtYmRhIChzKSAocHJpbjEtdG8tc3RyaW5nIHMgdCkpCi0JCQkJIChjZHIg ZXJyb3IpICIsICIpKQotCSAgICAgIDp3YXJuaW5nKQotCSAgICAgKHNldHEgaW5pdC1maWxlLWhh ZC1lcnJvciB0KSkpKQotCi0gICAgICAoaWYgKGFuZCBkZWFjdGl2YXRlLW1hcmsgdHJhbnNpZW50 LW1hcmstbW9kZSkKLQkgICAgKHdpdGgtY3VycmVudC1idWZmZXIgKHdpbmRvdy1idWZmZXIpCi0J ICAgICAgKGRlYWN0aXZhdGUtbWFyaykpKQotCi0JOzsgSWYgdGhlIHVzZXIgaGFzIGEgZmlsZSBv ZiBhYmJyZXZzLCByZWFkIGl0ICh1bmxlc3MgLWJhdGNoKS4KLQkod2hlbiAoYW5kIChub3Qgbm9u aW50ZXJhY3RpdmUpCi0JCSAgIChmaWxlLWV4aXN0cy1wIGFiYnJldi1maWxlLW5hbWUpCi0JCSAg IChmaWxlLXJlYWRhYmxlLXAgYWJicmV2LWZpbGUtbmFtZSkpCi0JICAgIChxdWlldGx5LXJlYWQt YWJicmV2LWZpbGUgYWJicmV2LWZpbGUtbmFtZSkpCi0KLQk7OyBJZiB0aGUgYWJicmV2cyBjYW1l IGVudGlyZWx5IGZyb20gdGhlIGluaXQgZmlsZSBvciB0aGUKLQk7OyBhYmJyZXZzIGZpbGUsIHRo ZXkgZG8gbm90IG5lZWQgc2F2aW5nLgotCShzZXRxIGFiYnJldnMtY2hhbmdlZCBuaWwpCi0KLQk7 OyBJZiB3ZSBjYW4gdGVsbCB0aGF0IHRoZSBpbml0IGZpbGUgYWx0ZXJlZCBkZWJ1Zy1vbi1lcnJv ciwKLQk7OyBhcnJhbmdlIHRvIHByZXNlcnZlIHRoZSB2YWx1ZSB0aGF0IGl0IHNldCB1cC4KLQko b3IgKGVxIGRlYnVnLW9uLWVycm9yIGRlYnVnLW9uLWVycm9yLWluaXRpYWwpCi0JICAgIChzZXRx IGRlYnVnLW9uLWVycm9yLXNob3VsZC1iZS1zZXQgdAotCQkgIGRlYnVnLW9uLWVycm9yLWZyb20t aW5pdC1maWxlIGRlYnVnLW9uLWVycm9yKSkpCi0gICAgICAoaWYgZGVidWctb24tZXJyb3Itc2hv dWxkLWJlLXNldAotCSAgKHNldHEgZGVidWctb24tZXJyb3IgZGVidWctb24tZXJyb3ItZnJvbS1p bml0LWZpbGUpKSkKKyAgICAobG9hZC11c2VyLWluaXQtZmlsZQorICAgICAobGFtYmRhICgpCisg ICAgICAgKGNvbmQKKyAgICAgICAgKChlcSBzeXN0ZW0tdHlwZSAnbXMtZG9zKQorICAgICAgICAg KGNvbmNhdCAifiIgaW5pdC1maWxlLXVzZXIgIi9fZW1hY3MiKSkKKyAgICAgICAgKChub3QgKGVx IHN5c3RlbS10eXBlICd3aW5kb3dzLW50KSkKKyAgICAgICAgIChjb25jYXQgIn4iIGluaXQtZmls ZS11c2VyICIvLmVtYWNzIikpCisgICAgICAgIDs7IEVsc2UgZGVhbCB3aXRoIHRoZSBXaW5kb3dz IHNpdHVhdGlvbi4KKyAgICAgICAgKChkaXJlY3RvcnktZmlsZXMgIn4iIG5pbCAiXlxcLmVtYWNz XFwoXFwuZWxjP1xcKT8kIikKKyAgICAgICAgIDs7IFByZWZlciAuZW1hY3Mgb24gV2luZG93cy4K KyAgICAgICAgICJ+Ly5lbWFjcyIpCisgICAgICAgICgoZGlyZWN0b3J5LWZpbGVzICJ+IiBuaWwg Il5fZW1hY3NcXChcXC5lbGM/XFwpPyQiKQorICAgICAgICAgOzsgQWxzbyBzdXBwb3J0IF9lbWFj cyBmb3IgY29tcGF0aWJpbGl0eSwgYnV0IHdhcm4gYWJvdXQgaXQuCisgICAgICAgICAocHVzaCBg KGluaXRpYWxpemF0aW9uCisgICAgICAgICAgICAgICAgICwoZm9ybWF0LW1lc3NhZ2UKKyAgICAg ICAgICAgICAgICAgICAiYF9lbWFjcycgaW5pdCBmaWxlIGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1 c2UgYC5lbWFjcyciKSkKKyAgICAgICAgICAgICAgIGRlbGF5ZWQtd2FybmluZ3MtbGlzdCkKKyAg ICAgICAgICJ+L19lbWFjcyIpCisgICAgICAgICh0IDs7IEJ1dCBkZWZhdWx0IHRvIC5lbWFjcyBp ZiBfZW1hY3MgZG9lcyBub3QgZXhpc3QuCisgICAgICAgICAifi8uZW1hY3MiKSkpCisgICAgIChs YW1iZGEgKCkKKyAgICAgICAoZXhwYW5kLWZpbGUtbmFtZQorICAgICAgICAiaW5pdCIKKyAgICAg ICAgKGZpbGUtbmFtZS1hcy1kaXJlY3RvcnkKKyAgICAgICAgIChjb25jYXQgIn4iIGluaXQtZmls ZS11c2VyICIvLmVtYWNzLmQiKSkpKQorICAgICAobm90IGluaGliaXQtZGVmYXVsdC1pbml0KSkK KworICAgICh3aGVuIChhbmQgZGVhY3RpdmF0ZS1tYXJrIHRyYW5zaWVudC1tYXJrLW1vZGUpCisg ICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAod2luZG93LWJ1ZmZlcikKKyAgICAgICAgKGRlYWN0 aXZhdGUtbWFyaykpKQorCisgICAgOzsgSWYgdGhlIHVzZXIgaGFzIGEgZmlsZSBvZiBhYmJyZXZz LCByZWFkIGl0ICh1bmxlc3MgLWJhdGNoKS4KKyAgICAod2hlbiAoYW5kIChub3Qgbm9uaW50ZXJh Y3RpdmUpCisgICAgICAgICAgICAgICAoZmlsZS1leGlzdHMtcCBhYmJyZXYtZmlsZS1uYW1lKQor ICAgICAgICAgICAgICAgKGZpbGUtcmVhZGFibGUtcCBhYmJyZXYtZmlsZS1uYW1lKSkKKyAgICAg IChxdWlldGx5LXJlYWQtYWJicmV2LWZpbGUgYWJicmV2LWZpbGUtbmFtZSkpCisKKyAgICA7OyBJ ZiB0aGUgYWJicmV2cyBjYW1lIGVudGlyZWx5IGZyb20gdGhlIGluaXQgZmlsZSBvciB0aGUKKyAg ICA7OyBhYmJyZXZzIGZpbGUsIHRoZXkgZG8gbm90IG5lZWQgc2F2aW5nLgorICAgIChzZXRxIGFi YnJldnMtY2hhbmdlZCBuaWwpCiAKICAgICA7OyBEbyB0aGlzIGhlcmUgaW4gY2FzZSB0aGUgaW5p dCBmaWxlIHNldHMgbWFpbC1ob3N0LWFkZHJlc3MuCiAgICAgKGFuZCBtYWlsLWhvc3QtYWRkcmVz cwpAQCAtMTI5NiwzMyArMTM1Niw2IEBAIGNvbW1hbmQtbGluZQogCQkgKGVxIGZhY2UtaWdub3Jl ZC1mb250cyBvbGQtZmFjZS1pZ25vcmVkLWZvbnRzKSkKICAgICAgIChjbGVhci1mYWNlLWNhY2hl KSkpCiAKLSAgOzsgSWYgYW55IHBhY2thZ2UgZGlyZWN0b3J5IGV4aXN0cywgaW5pdGlhbGl6ZSB0 aGUgcGFja2FnZSBzeXN0ZW0uCi0gIChhbmQgdXNlci1pbml0LWZpbGUKLSAgICAgICBwYWNrYWdl LWVuYWJsZS1hdC1zdGFydHVwCi0gICAgICAgKGNhdGNoICdwYWNrYWdlLWRpci1mb3VuZAotCSAo bGV0IChkaXJzKQotCSAgIChpZiAoYm91bmRwICdwYWNrYWdlLWRpcmVjdG9yeS1saXN0KQotCSAg ICAgICAoc2V0cSBkaXJzIHBhY2thZ2UtZGlyZWN0b3J5LWxpc3QpCi0JICAgICAoZG9saXN0IChm IGxvYWQtcGF0aCkKLQkgICAgICAgKGFuZCAoc3RyaW5ncCBmKQotCQkgICAgKGVxdWFsIChmaWxl LW5hbWUtbm9uZGlyZWN0b3J5IGYpICJzaXRlLWxpc3AiKQotCQkgICAgKHB1c2ggKGV4cGFuZC1m aWxlLW5hbWUgImVscGEiIGYpIGRpcnMpKSkpCi0JICAgKHB1c2ggKGlmIChib3VuZHAgJ3BhY2th Z2UtdXNlci1kaXIpCi0JCSAgICAgcGFja2FnZS11c2VyLWRpcgotCQkgICAobG9jYXRlLXVzZXIt ZW1hY3MtZmlsZSAiZWxwYSIpKQotCQkgZGlycykKLQkgICAoZG9saXN0IChkaXIgZGlycykKLQkg ICAgICh3aGVuIChmaWxlLWRpcmVjdG9yeS1wIGRpcikKLQkgICAgICAgKGRvbGlzdCAoc3ViZGly IChkaXJlY3RvcnktZmlsZXMgZGlyKSkKLQkJICh3aGVuIChsZXQgKChzdWJkaXIgKGV4cGFuZC1m aWxlLW5hbWUgc3ViZGlyIGRpcikpKQotICAgICAgICAgICAgICAgICAgICAgICAgIChhbmQgKGZp bGUtZGlyZWN0b3J5LXAgc3ViZGlyKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZp bGUtZXhpc3RzLXAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXhwYW5kLWZpbGUt bmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFja2FnZS0tZGVzY3JpcHRp b24tZmlsZSBzdWJkaXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmRpcikp KSkKLQkJICAgKHRocm93ICdwYWNrYWdlLWRpci1mb3VuZCB0KSkpKSkpKQotICAgICAgIChwYWNr YWdlLWluaXRpYWxpemUpKQotCiAgIChzZXRxIGFmdGVyLWluaXQtdGltZSAoY3VycmVudC10aW1l KSkKICAgOzsgRGlzcGxheSBhbnkgYWNjdW11bGF0ZWQgd2FybmluZ3MgYWZ0ZXIgYWxsIGZ1bmN0 aW9ucyBpbgogICA7OyBgYWZ0ZXItaW5pdC1ob29rJyBsaWtlIGBkZXNrdG9wLXJlYWQnIGhhdmUg ZmluYWxpemVkIHBvc3NpYmxlCmRpZmYgLS1naXQgYS9zcmMvbHJlYWQuYyBiL3NyYy9scmVhZC5j CmluZGV4IDdjYWNkNDdkNTEuLmQwMDliZDBjZDIgMTAwNjQ0Ci0tLSBhL3NyYy9scmVhZC5jCisr KyBiL3NyYy9scmVhZC5jCkBAIC00OTIyLDcgKzQ5MjIsNyBAQCBkaXJlY3RvcnkuICBUaGVzZSBm aWxlIG5hbWVzIGFyZSBjb252ZXJ0ZWQgdG8gYWJzb2x1dGUgYXQgc3RhcnR1cC4gICovKTsKIElm IHRoZSBmaWxlIGxvYWRlZCBoYWQgZXh0ZW5zaW9uIGAuZWxjJywgYW5kIHRoZSBjb3JyZXNwb25k aW5nIHNvdXJjZSBmaWxlCiBleGlzdHMsIHRoaXMgdmFyaWFibGUgY29udGFpbnMgdGhlIG5hbWUg b2Ygc291cmNlIGZpbGUsIHN1aXRhYmxlIGZvciB1c2UKIGJ5IGZ1bmN0aW9ucyBsaWtlIGBjdXN0 b20tc2F2ZS1hbGwnIHdoaWNoIGVkaXQgdGhlIGluaXQgZmlsZS4KLVdoaWxlIEVtYWNzIGxvYWRz IGFuZCBldmFsdWF0ZXMgdGhlIGluaXQgZmlsZSwgdmFsdWUgaXMgdGhlIHJlYWwgbmFtZQorV2hp bGUgRW1hY3MgbG9hZHMgYW5kIGV2YWx1YXRlcyBhbnkgaW5pdCBmaWxlLCB2YWx1ZSBpcyB0aGUg cmVhbCBuYW1lCiBvZiB0aGUgZmlsZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCBpdCBo YXMgdGhlIGAuZWxjJyBleHRlbnNpb24uICAqLyk7CiAgIFZ1c2VyX2luaXRfZmlsZSA9IFFuaWw7 CiAKLS0gCjIuMTYuMQoK --001a11401f4c32bd98056538cec7--