From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "David De La Harpe Golden" Newsgroups: gmane.emacs.devel Subject: Re: Improving X selection? Date: Sun, 17 Feb 2008 03:38:14 +0000 Message-ID: <8e24944a0802161938i736d4bb2x854e37a4042076bb@mail.gmail.com> References: <8e24944a0802070815n18dea273j5c3962235d91ca8e@mail.gmail.com> <87bq6sir34.fsf@uwakimon.sk.tsukuba.ac.jp> <8e24944a0802071022i2b259c5fka14f191a3c519157@mail.gmail.com> <8e24944a0802071239r1cdc8affq7875fea0b9876560@mail.gmail.com> <8e24944a0802071850o2920041cw9de2f27c59f90148@mail.gmail.com> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_1915_2752011.1203219494497" X-Trace: ger.gmane.org 1203219545 3178 80.91.229.12 (17 Feb 2008 03:39:05 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 17 Feb 2008 03:39:05 +0000 (UTC) Cc: "Horsley, Tom" , "Stephen J. Turnbull" , "Jan D." , rms@gnu.org, emacs-devel@gnu.org To: "Stefan Monnier" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Feb 17 04:39:27 2008 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1JQaN9-00038Q-Bp for ged-emacs-devel@m.gmane.org; Sun, 17 Feb 2008 04:39:26 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JQaMe-0002P5-3g for ged-emacs-devel@m.gmane.org; Sat, 16 Feb 2008 22:38:52 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JQaMA-00028f-4c for emacs-devel@gnu.org; Sat, 16 Feb 2008 22:38:22 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JQaM5-00026c-Sa for emacs-devel@gnu.org; Sat, 16 Feb 2008 22:38:21 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JQaM5-00026U-NA for emacs-devel@gnu.org; Sat, 16 Feb 2008 22:38:17 -0500 Original-Received: from wa-out-1112.google.com ([209.85.146.180]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JQaM4-0000me-3b for emacs-devel@gnu.org; Sat, 16 Feb 2008 22:38:17 -0500 Original-Received: by wa-out-1112.google.com with SMTP id k34so2253846wah.10 for ; Sat, 16 Feb 2008 19:38:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; bh=Dpep6wJYHtmHlEGUM5/5h57vqSVGh2Fcz5s2oT9BMiM=; b=Bg65tsMK96FnGonKUq1BB82ziHJLF7V66VNusMoqbIl7zZNygcpOybO6SZfwepayKm6Un+kGb9ZCfZIfnh0CbpY3nvon57gpEY3JcQBOg5ow0zSEXBYRDArk99UOb0RyndH8hE99yjMYunylPio8xQXYHAb9fSt7LMxgb4Rukjs= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=SeUTSQPy2UNvlefWzf9iT0QyxBMMXW30DxiKiaKxCqDu/2+sq7OMEAYvu8CmiNU8ZOvsckqVAf7txT1PdqtCiYN17A92RzEWOPzDtDHD7ldAumJXrF88p5g9c+cJMUcYikhUTulK0JH9vyZp4aFZzIATeD+nrJefdNwSkrsEmzA= Original-Received: by 10.142.246.8 with SMTP id t8mr3370510wfh.199.1203219494496; Sat, 16 Feb 2008 19:38:14 -0800 (PST) Original-Received: by 10.143.17.10 with HTTP; Sat, 16 Feb 2008 19:38:14 -0800 (PST) In-Reply-To: X-detected-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 2) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:89308 Archived-At: ------=_Part_1915_2752011.1203219494497 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 08/02/2008, Stefan Monnier wrote: > > Do you mean as a customization telling select-active-regions not to > > use kill-ring-save but rather its own call to > > interprogram-cut-function with the locally rebound > > x-select-enable-clipboard*? Or telling kill-ring-save to not use the > > kill ring (heh)? > > Not sure how I'd use it, I'd have to look more carefully at the code. > But maybe it would be a simple var used for let-binding, and not > a defcustom. > Anyhow, here's a stab at doing it Stefan's way... Rev 3. patch has an enable-kill-ring, a boolean var that (um) acts at the core, current-kill and kill-new. It's not itself a customization, but specific-situation overrides of it with active-region-enable-kill-ring and mouse-yank-enable-kill-ring are. (assumed people would always want to use the kill ring in keyboard and menu/tool-bar killing/yanking...). Patch introduces a number of boolean customizations: ;; for "default" (C-w/C-y) killing/yanking enable-system-clipboard enable-system-current-selection ;; override defaults for mouse yanking mouse-yank-enable-system-clipboard mouse-yank-enable-system-current-selection mouse-yank-enable-kill-ring ;; override defaults for active region propagation to system ;; what was "select-active-regions" active-region-enable-system-clipboard active-region-enable-system-current-selection active-region-enable-kill-ring ;; override for yank-pop propagations to system. ;; what was "yank-pop-change-selection" yank-pop-change-system-clipboard yank-pop-change-system-current-selection ;; override for menu-bar (when menu-enable-clipboard has been called.) menu-bar-enable-system-clipboard menu-bar-enable-system-current-selection ;; for deciding what "system-clipboard" and "system-current-selection" ;; actually mean in X11 terms, for those who dislike recent-X11-style ;; and/or other compat with other programs that dislike or predate it. x-system-clipboard-is-x-selection x-system-current-selection-is-x-selection As per comments in this thread and for clarity, I've de-platform-specialized and renamed x-select-enable-clipboard/x-select-enable-primary, according to how a user used to recent-X11-style would perceive them, and tried to use "selection" to mean "what the user has selected", not "x selection". Then, to try to keep everyone happy, there is an extra layer of indirection to allow you to specify what the de-platform-specialized variables then actually mean on an X level - i.e. when, when the user says "enable-system-clipboard", do they mean primary, clipboard or cutbuffer, and similarly for "enable-system-current-selection". This patch doesn't try to do multiple-selection-return - doing it would mean a bit more of an alteration to x-cut-buffer-or-selection-value. The customization defaults in this patch should produce behaviour matching or nearly matching (menus may be slightly different) current default emacs behaviour. Unlike rev.2, while the full spectrum of possible historic emacs behaviours should be possible in addition to the desired new behaviour, it now takes somewhat different customizations to get them - but customization is clearer. term/ impls other than x-win are not updated to use the model (but that should be straightforward in itself, typical platforms only have a system-clipboard in the first place). To get the recent-X11-style behaviour from it: (custom-set-variables '(active-region-enable-kill-ring nil) '(active-region-enable-system-clipboard nil) '(active-region-enable-system-current-selection t) '(enable-system-clipboard t) '(enable-system-current-selection nil) '(menu-bar-enable-system-clipboard t) '(menu-bar-enable-system-current-selection nil) '(mouse-drag-copy-region nil) '(mouse-yank-enable-kill-ring nil) '(mouse-yank-enable-system-clipboard nil) '(mouse-yank-enable-system-current-selection t) '(transient-mark-mode t) '(x-system-clipboard-is-x-selection (quote (:clipboard))) '(x-system-current-selection-is-x-selection (quote (:primary)))) ------=_Part_1915_2752011.1203219494497 Content-Type: text/x-diff; name=enhanced-x-selections_rev3.diff Content-Transfer-Encoding: base64 X-Attachment-Id: f_fcr0q4ph Content-Disposition: attachment; filename=enhanced-x-selections_rev3.diff SW5kZXg6IGxpc3AvbG9hZHVwLmVsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9zb3VyY2VzL2VtYWNz L2VtYWNzL2xpc3AvbG9hZHVwLmVsLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE2MApkaWZmIC1V IDggLXIxLjE2MCBsb2FkdXAuZWwKLS0tIGxpc3AvbG9hZHVwLmVsCTEgRmViIDIwMDggMjI6NDM6 MTAgLTAwMDAJMS4xNjAKKysrIGxpc3AvbG9hZHVwLmVsCTE3IEZlYiAyMDA4IDAzOjAxOjI4IC0w MDAwCkBAIC03NywxNiArNzcsMTcgQEAKIChsb2FkICJidXR0b24iKQogKGxvYWQgInN0YXJ0dXAi KQogCiAobWVzc2FnZSAiTGlzdHMgb2YgaW50ZWdlcnMgKGdhcmJhZ2UgY29sbGVjdGlvbiBzdGF0 aXN0aWNzKSBhcmUgbm9ybWFsIG91dHB1dCIpCiAobWVzc2FnZSAid2hpbGUgYnVpbGRpbmcgRW1h Y3M7IHRoZXkgZG8gbm90IGluZGljYXRlIGEgcHJvYmxlbS4iKQogKG1lc3NhZ2UgIiVzIiAoZ2Fy YmFnZS1jb2xsZWN0KSkKIChsb2FkICJsb2FkZGVmcy5lbCIpICA7RG9uJ3QgZ2V0IGNvbmZ1c2Vk IGlmIHNvbWVvbmUgY29tcGlsZWQgdGhpcyBieSBtaXN0YWtlLgogKG1lc3NhZ2UgIiVzIiAoZ2Fy YmFnZS1jb2xsZWN0KSkKKyhsb2FkICJlbWFjcy1saXNwL3RpbWVyIikgOyBuZWVkZWQgZm9yIHBy b3BhZ2F0ZS1hY3RpdmUtcmVnaW9uIGluIHNpbXBsZQogKGxvYWQgInNpbXBsZSIpCiAKIChsb2Fk ICJoZWxwIikKIAogKGxvYWQgImprYS1jbXByLWhvb2siKQogOzsgQW55IEVtYWNzIExpc3Agc291 cmNlIGZpbGUgKCouZWwpIGxvYWRlZCBoZXJlIGFmdGVyIGNhbiBjb250YWluCiA7OyBtdWx0aWxp bmd1YWwgdGV4dC4KIChsb2FkICJpbnRlcm5hdGlvbmFsL211bGUtY21kcyIpCkBAIC0xNDAsMTcg KzE0MSwxNiBAQAogKGxvYWQgImppdC1sb2NrIikKIAogKGlmIChmYm91bmRwICd0cmFjay1tb3Vz ZSkKICAgICAocHJvZ24KICAgICAgIChsb2FkICJtb3VzZSIpCiAgICAgICAoYW5kIChib3VuZHAg J3gtdG9vbGtpdC1zY3JvbGwtYmFycykKIAkgICAobG9hZCAic2Nyb2xsLWJhciIpKQogICAgICAg KGxvYWQgInNlbGVjdCIpKSkKLShsb2FkICJlbWFjcy1saXNwL3RpbWVyIikKIChsb2FkICJpc2Vh cmNoIikKIChsb2FkICJyZm4tZXNoYWRvdyIpCiAKIChtZXNzYWdlICIlcyIgKGdhcmJhZ2UtY29s bGVjdCkpCiAobG9hZCAibWVudS1iYXIiKQogKGxvYWQgInBhdGhzLmVsIikgIDtEb24ndCBnZXQg Y29uZnVzZWQgaWYgc29tZW9uZSBjb21waWxlZCBwYXRocyBieSBtaXN0YWtlLgogKGxvYWQgImVt YWNzLWxpc3AvbGlzcCIpCiAobG9hZCAidGV4dG1vZGVzL3BhZ2UiKQpJbmRleDogbGlzcC93MzIt dmFycy5lbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvc291cmNlcy9lbWFjcy9lbWFjcy9saXNwL3cz Mi12YXJzLmVsLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE5CmRpZmYgLVUgOCAtcjEuMTkgdzMy LXZhcnMuZWwKLS0tIGxpc3AvdzMyLXZhcnMuZWwJOCBKYW4gMjAwOCAyMDo0NDo0OCAtMDAwMAkx LjE5CisrKyBsaXNwL3czMi12YXJzLmVsCTE3IEZlYiAyMDA4IDAzOjAxOjI4IC0wMDAwCkBAIC0x NDQsMTggKzE0NCwyMCBAQAogCSAgICAgIChyZXBlYXQgOmlubGluZSB0CiAJICAgICAgIChjaG9p Y2UgOnRhZyAiIgogCQkoY29uc3QgOnRhZyAiU2VwYXJhdG9yIiAoIiIpKQogCQkobGlzdCA6dGFn ICJGb250IEVudHJ5IgogCQkgICAgICAoc3RyaW5nIDp0YWcgIk1lbnUgdGV4dCIpCiAJCSAgICAg IChzdHJpbmcgOnRhZyAiRm9udCIpKSkpKSkpCiAgICAgOmdyb3VwICd3MzIpCiAKLShkZWZjdXN0 b20geC1zZWxlY3QtZW5hYmxlLWNsaXBib2FyZCB0Ci0gICIqTm9uLW5pbCBtZWFucyBjdXR0aW5n IGFuZCBwYXN0aW5nIHVzZXMgdGhlIGNsaXBib2FyZC4KLVRoaXMgaXMgaW4gYWRkaXRpb24gdG8g dGhlIHByaW1hcnkgc2VsZWN0aW9uLiIKLSAgOnR5cGUgJ2Jvb2xlYW4KLSAgOmdyb3VwICdraWxs aW5nKQorOzsgVGhlcmUgaXMgbm93IGEgZW5hYmxlLXN5c3RlbS1jbGlwYm9hcmQgZmxhZyBpbiBz aW1wbGUuZWwKKzs7Cis7OyhkZWZjdXN0b20geC1zZWxlY3QtZW5hYmxlLWNsaXBib2FyZCB0Cis7 OyAgIipOb24tbmlsIG1lYW5zIGN1dHRpbmcgYW5kIHBhc3RpbmcgdXNlcyB0aGUgY2xpcGJvYXJk LgorOztUaGlzIGlzIGluIGFkZGl0aW9uIHRvIHRoZSBwcmltYXJ5IHNlbGVjdGlvbi4iCis7OyAg OnR5cGUgJ2Jvb2xlYW4KKzs7ICA6Z3JvdXAgJ2tpbGxpbmcpCiAKIChwcm92aWRlICd3MzItdmFy cykKIAogOzs7IGFyY2gtdGFnOiBlZTIzOTRmYi05ZGI3LTRjMTUtYThmMC02NmI0N2Y0YTJiYjEK IDs7OyB3MzItdmFycy5lbCBlbmRzIGhlcmUKSW5kZXg6IGxpc3Avc2ltcGxlLmVsCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KUkNTIGZpbGU6IC9zb3VyY2VzL2VtYWNzL2VtYWNzL2xpc3Avc2ltcGxlLmVsLHYKcmV0cmll dmluZyByZXZpc2lvbiAxLjkwMQpkaWZmIC1VIDggLXIxLjkwMSBzaW1wbGUuZWwKLS0tIGxpc3Av c2ltcGxlLmVsCTEyIEZlYiAyMDA4IDAyOjI1OjA4IC0wMDAwCTEuOTAxCisrKyBsaXNwL3NpbXBs ZS5lbAkxNyBGZWIgMjAwOCAwMzowMTozNCAtMDAwMApAQCAtMjU0NCwyOCArMjU0NCwzMSBAQAog CShpZiBub3Byb3BzCiAJICAgIChzZXQtdGV4dC1wcm9wZXJ0aWVzIDAgKGxlbmd0aCBzdHJpbmcp IG5pbCBzdHJpbmcpKQogCXN0cmluZykpKQogICAgKG5vcHJvcHMKICAgICAoYnVmZmVyLXN1YnN0 cmluZy1uby1wcm9wZXJ0aWVzIGJlZyBlbmQpKQogICAgKHQKICAgICAoYnVmZmVyLXN1YnN0cmlu ZyBiZWcgZW5kKSkpKQogCi0KIDs7OzsgV2luZG93IHN5c3RlbSBjdXQgYW5kIHBhc3RlIGhvb2tz LgogCiAoZGVmdmFyIGludGVycHJvZ3JhbS1jdXQtZnVuY3Rpb24gbmlsCiAgICJGdW5jdGlvbiB0 byBjYWxsIHRvIG1ha2UgYSBraWxsZWQgcmVnaW9uIGF2YWlsYWJsZSB0byBvdGhlciBwcm9ncmFt cy4KIAogTW9zdCB3aW5kb3cgc3lzdGVtcyBwcm92aWRlIHNvbWUgc29ydCBvZiBmYWNpbGl0eSBm b3IgY3V0dGluZyBhbmQKIHBhc3RpbmcgdGV4dCBiZXR3ZWVuIHRoZSB3aW5kb3dzIG9mIGRpZmZl cmVudCBwcm9ncmFtcy4KIFRoaXMgdmFyaWFibGUgaG9sZHMgYSBmdW5jdGlvbiB0aGF0IEVtYWNz IGNhbGxzIHdoZW5ldmVyIHRleHQKIGlzIHB1dCBpbiB0aGUga2lsbCByaW5nLCB0byBtYWtlIHRo ZSBuZXcga2lsbCBhdmFpbGFibGUgdG8gb3RoZXIKIHByb2dyYW1zLgogCitUaGlzIGZ1bmN0aW9u IHNob3VsZCByZXNwZWN0IGBlbmFibGUtc3lzdGVtLWNsaXBib2FyZCcgYW5kCitgZW5hYmxlLXN5 c3RlbS1jdXJyZW50LXNlbGVjdGlvbicgaWYgcG9zc2libGUuIEl0IG1heSBhbHNvIGhvbm91cgor dGhlIHZhbHVlIG9mIHdpbmRvdy1zeXN0ZW0tc3BlY2lmaWMgY3VzdG9taXNhdGlvbnMuCisKIFRo ZSBmdW5jdGlvbiB0YWtlcyBvbmUgb3IgdHdvIGFyZ3VtZW50cy4KIFRoZSBmaXJzdCBhcmd1bWVu dCwgVEVYVCwgaXMgYSBzdHJpbmcgY29udGFpbmluZwogdGhlIHRleHQgd2hpY2ggc2hvdWxkIGJl IG1hZGUgYXZhaWxhYmxlLgogVGhlIHNlY29uZCwgb3B0aW9uYWwsIGFyZ3VtZW50IFBVU0gsIGhh cyB0aGUgc2FtZSBtZWFuaW5nIGFzIHRoZQogc2ltaWxhciBhcmd1bWVudCB0byBgeC1zZXQtY3V0 LWJ1ZmZlcicsIHdoaWNoIHNlZS4iKQogCiAoZGVmdmFyIGludGVycHJvZ3JhbS1wYXN0ZS1mdW5j dGlvbiBuaWwKICAgIkZ1bmN0aW9uIHRvIGNhbGwgdG8gZ2V0IHRleHQgY3V0IGZyb20gb3RoZXIg cHJvZ3JhbXMuCkBAIC0yNTgxLDIyICsyNTg0LDI4IEBACiBzdHJpbmcsIHRoZW4gdGhlIGNhbGxl ciBvZiB0aGUgZnVuY3Rpb24gXCh1c3VhbGx5IGBjdXJyZW50LWtpbGwnKQogc2hvdWxkIHB1dCB0 aGlzIHN0cmluZyBpbiB0aGUga2lsbCByaW5nIGFzIHRoZSBsYXRlc3Qga2lsbC4KIAogVGhpcyBm dW5jdGlvbiBtYXkgYWxzbyByZXR1cm4gYSBsaXN0IG9mIHN0cmluZ3MgaWYgdGhlIHdpbmRvdwog c3lzdGVtIHN1cHBvcnRzIG11bHRpcGxlIHNlbGVjdGlvbnMuIFRoZSBmaXJzdCBzdHJpbmcgd2ls bCBiZQogdXNlZCBhcyB0aGUgcGFzdGVkIHRleHQsIGJ1dCB0aGUgb3RoZXIgd2lsbCBiZSBwbGFj ZWQgaW4gdGhlCiBraWxsIHJpbmcgZm9yIGVhc3kgYWNjZXNzIHZpYSBgeWFuay1wb3AnLgogCi1O b3RlIHRoYXQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYSBzdHJpbmcgb25seSBpZiBhIHBy b2dyYW0gb3RoZXIKLXRoYW4gRW1hY3MgaGFzIHByb3ZpZGVkIGEgc3RyaW5nIGZvciBwYXN0aW5n OyBpZiBFbWFjcyBwcm92aWRlZCB0aGUKLW1vc3QgcmVjZW50IHN0cmluZywgdGhlIGZ1bmN0aW9u IHNob3VsZCByZXR1cm4gbmlsLiAgSWYgaXQgaXMKLWRpZmZpY3VsdCB0byB0ZWxsIHdoZXRoZXIg RW1hY3Mgb3Igc29tZSBvdGhlciBwcm9ncmFtIHByb3ZpZGVkIHRoZQotY3VycmVudCBzdHJpbmcs IGl0IGlzIHByb2JhYmx5IGdvb2QgZW5vdWdoIHRvIHJldHVybiBuaWwgaWYgdGhlIHN0cmluZwot aXMgZXF1YWwgKGFjY29yZGluZyB0byBgc3RyaW5nPScpIHRvIHRoZSBsYXN0IHRleHQgRW1hY3Mg cHJvdmlkZWQuIikKK1RoaXMgZnVuY3Rpb24gc2hvdWxkIHJlc3BlY3QgYGVuYWJsZS1zeXN0ZW0t Y2xpcGJvYXJkJyBhbmQgCitgZW5hYmxlLXN5c3RlbS1jdXJyZW50LXNlbGVjdGlvbicgaWYgcG9z c2libGUuIEl0IG1heSBhbHNvIGhvbm91cgordGhlIHZhbHVlIG9mIHdpbmRvdy1zeXN0ZW0tc3Bl Y2lmaWMgY3VzdG9taXNhdGlvbnMuCisKK05vdGUgdGhhdCwgdW5sZXNzIGBlbmFibGUta2lsbC1y aW5nJyBpcyBuaWwsIHRoZSBmdW5jdGlvbiBzaG91bGQgCityZXR1cm4gYSBzdHJpbmcgb25seSBp ZiBhIHByb2dyYW0gb3RoZXIgdGhhbiBFbWFjcyBoYXMgcHJvdmlkZWQgYSAKK3N0cmluZyBmb3Ig cGFzdGluZzsgaWYgRW1hY3MgcHJvdmlkZWQgdGhlIG1vc3QgcmVjZW50IHN0cmluZywgdGhlIAor ZnVuY3Rpb24gc2hvdWxkIHJldHVybiBuaWwuICBJZiBgZW5hYmxlLWtpbGwtcmluZycgaXMgbmls LCB0aGUKK2Z1bmN0aW9uIHNob3VsZCBqdXN0IGFsd2F5cyByZXR1cm4gd2hhdCBpdCBmaW5kcywg aWYgYW55dGhpbmcuCitJZiBpdCBpcyBkaWZmaWN1bHQgdG8gdGVsbCB3aGV0aGVyIEVtYWNzIG9y IHNvbWUgb3RoZXIgcHJvZ3JhbSBwcm92aWRlZCAKK3RoZSBjdXJyZW50IHN0cmluZywgaXQgaXMg cHJvYmFibHkgZ29vZCBlbm91Z2ggdG8gcmV0dXJuIG5pbCBpZiB0aGUgCitzdHJpbmcgaXMgZXF1 YWwgKGFjY29yZGluZyB0byBgc3RyaW5nPScpIHRvIHRoZSBsYXN0IHRleHQgRW1hY3MgcHJvdmlk ZWQuIikKIAwKIAogCiA7Ozs7IFRoZSBraWxsIHJpbmcgZGF0YSBzdHJ1Y3R1cmUuCiAKIChkZWZ2 YXIga2lsbC1yaW5nIG5pbAogICAiTGlzdCBvZiBraWxsZWQgdGV4dCBzZXF1ZW5jZXMuCiBTaW5j ZSB0aGUga2lsbCByaW5nIGlzIHN1cHBvc2VkIHRvIGludGVyYWN0IG5pY2VseSB3aXRoIGN1dC1h bmQtcGFzdGUKQEAgLTI2MDcsNTAgKzI2MTYsNzYgQEAKIGludGVyYWN0aW9uOyB5b3UgbWF5IHdh bnQgdG8gdXNlIHRoZW0gaW5zdGVhZCBvZiBtYW5pcHVsYXRpbmcgdGhlIGtpbGwKIHJpbmcgZGly ZWN0bHkuIikKIAogKGRlZmN1c3RvbSBraWxsLXJpbmctbWF4IDYwCiAgICIqTWF4aW11bSBsZW5n dGggb2Yga2lsbCByaW5nIGJlZm9yZSBvbGRlc3QgZWxlbWVudHMgYXJlIHRocm93biBhd2F5LiIK ICAgOnR5cGUgJ2ludGVnZXIKICAgOmdyb3VwICdraWxsaW5nKQogCisoZGVmY3VzdG9tIGVuYWJs ZS1zeXN0ZW0tY2xpcGJvYXJkIG5pbAorICAiTm9uLW5pbCBtZWFucyBlbWFjcyBraWxsaW5nIGFu ZCB5YW5raW5nIHVzZXMgdGhlIHN5c3RlbSBjbGlwYm9hcmQuIgorICA6dHlwZSAnYm9vbGVhbgor ICA6Z3JvdXAgJ2tpbGxpbmcKKyAgOnZlcnNpb24gIjIzLjEiKQorCisoZGVmY3VzdG9tIGVuYWJs ZS1zeXN0ZW0tY3VycmVudC1zZWxlY3Rpb24gdAorICAiTm9uLW5pbCBtZWFucyBlbWFjcyBraWxs aW5nIGFuZCB5YW5raW5nIHVzZXMgdGhlIHN5c3RlbSBjdXJyZW50IHNlbGVjdGlvbi4KK1lvdXIg d2luZG93aW5nIHN5c3RlbSBtYXkgbm90IHByb3ZpZGUgYSBjdXJyZW50IHNlbGVjdGlvbiB0cmFj a2luZyAKK2ZhY2lsaXR5LiBJZiBpdCBkb2Vzbid0LCBlbWFjcyBtYXkgb3IgbWF5IG5vdCBlbXVs YXRlIGl0LiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOmdyb3VwICdraWxsaW5nCisgIDp2ZXJzaW9u ICIyMy4xIikKKwogKGRlZnZhciBraWxsLXJpbmcteWFuay1wb2ludGVyIG5pbAogICAiVGhlIHRh aWwgb2YgdGhlIGtpbGwgcmluZyB3aG9zZSBjYXIgaXMgdGhlIGxhc3QgdGhpbmcgeWFua2VkLiIp CiAKKyhkZWZ2YXIgZW5hYmxlLWtpbGwtcmluZyB0CisgICJJZiBuaWwsIHRoZW4gJ2tpbGxpbmcn IHdvbid0IGFjdHVhbGx5IGFmZmVjdCB0aGUga2lsbCByaW5nCithbmQgJ3lhbmtpbmcnIHdvbid0 IGFjdHVhbGx5IGRyYXcgb24gb3IgYWZmZWN0IHRoZSBraWxsIHJpbmcuCitPbmx5IGBpbnRlcnBy b2dyYW0tY3V0LWZ1bmN0aW9uJyBhbmQgYGludGVycHJvZ3JhbS1wYXN0ZS1mdW5jdGlvbicKK3dp bGwgYmUgdXNlZC4gICBUaGlzIGlzIHVzZWZ1bCBmb3IgY29uZm9ybWluZyB0byBYMTEgZGVza3Rv cAorY29udmVudGlvbnMuIikKKwogKGRlZnVuIGtpbGwtbmV3IChzdHJpbmcgJm9wdGlvbmFsIHJl cGxhY2UgeWFuay1oYW5kbGVyKQogICAiTWFrZSBTVFJJTkcgdGhlIGxhdGVzdCBraWxsIGluIHRo ZSBraWxsIHJpbmcuCiBTZXQgYGtpbGwtcmluZy15YW5rLXBvaW50ZXInIHRvIHBvaW50IHRvIGl0 LgogSWYgYGludGVycHJvZ3JhbS1jdXQtZnVuY3Rpb24nIGlzIG5vbi1uaWwsIGFwcGx5IGl0IHRv IFNUUklORy4KIE9wdGlvbmFsIHNlY29uZCBhcmd1bWVudCBSRVBMQUNFIG5vbi1uaWwgbWVhbnMg dGhhdCBTVFJJTkcgd2lsbCByZXBsYWNlCiB0aGUgZnJvbnQgb2YgdGhlIGtpbGwgcmluZywgcmF0 aGVyIHRoYW4gYmVpbmcgYWRkZWQgdG8gdGhlIGxpc3QuCiAKK0lmIHZhcmlhYmxlIGBlbmFibGUt a2lsbC1yaW5nJyBpcyBuaWwsIHRoZW4gdGhpcyBmdW5jdGlvbgord2lsbCBub3QgYWZmZWN0IHRo ZSBraWxsIHJpbmcsIGJ1dCBgaW50ZXJwcm9ncmFtLWN1dC1mdW5jdGlvbicgbWF5CitiZSBjYWxs ZWQuCisKIE9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50cyBZQU5LLUhBTkRMRVIgY29udHJvbHMgaG93 IHRoZSBTVFJJTkcgaXMgbGF0ZXIKIGluc2VydGVkIGludG8gYSBidWZmZXI7IHNlZSBgaW5zZXJ0 LWZvci15YW5rJyBmb3IgZGV0YWlscy4KIFdoZW4gYSB5YW5rIGhhbmRsZXIgaXMgc3BlY2lmaWVk LCBTVFJJTkcgbXVzdCBiZSBub24tZW1wdHkgKHRoZSB5YW5rCiBoYW5kbGVyLCBpZiBub24tbmls LCBpcyBzdG9yZWQgYXMgYSBgeWFuay1oYW5kbGVyJyB0ZXh0IHByb3BlcnR5IG9uIFNUUklORyku CiAKIFdoZW4gdGhlIHlhbmsgaGFuZGxlciBoYXMgYSBub24tbmlsIFBBUkFNIGVsZW1lbnQsIHRo ZSBvcmlnaW5hbCBTVFJJTkcKIGFyZ3VtZW50IGlzIG5vdCB1c2VkIGJ5IGBpbnNlcnQtZm9yLXlh bmsnLiAgSG93ZXZlciwgc2luY2UgTGlzcCBjb2RlCiBtYXkgYWNjZXNzIGFuZCB1c2UgZWxlbWVu dHMgZnJvbSB0aGUga2lsbCByaW5nIGRpcmVjdGx5LCB0aGUgU1RSSU5HCiBhcmd1bWVudCBzaG91 bGQgc3RpbGwgYmUgYSBcInVzZWZ1bFwiIHN0cmluZyBmb3Igc3VjaCB1c2VzLiIKLSAgKGlmICg+ IChsZW5ndGggc3RyaW5nKSAwKQorICAod2hlbiBlbmFibGUta2lsbC1yaW5nCisgICAgKGlmICg+ IChsZW5ndGggc3RyaW5nKSAwKQorCShpZiB5YW5rLWhhbmRsZXIKKwkgICAgKHB1dC10ZXh0LXBy b3BlcnR5IDAgKGxlbmd0aCBzdHJpbmcpCisJCQkgICAgICAgJ3lhbmstaGFuZGxlciB5YW5rLWhh bmRsZXIgc3RyaW5nKSkKICAgICAgIChpZiB5YW5rLWhhbmRsZXIKLQkgIChwdXQtdGV4dC1wcm9w ZXJ0eSAwIChsZW5ndGggc3RyaW5nKQotCQkJICAgICAneWFuay1oYW5kbGVyIHlhbmstaGFuZGxl ciBzdHJpbmcpKQotICAgIChpZiB5YW5rLWhhbmRsZXIKLQkoc2lnbmFsICdhcmdzLW91dC1vZi1y YW5nZQotCQkobGlzdCBzdHJpbmcgInlhbmstaGFuZGxlciBzcGVjaWZpZWQgZm9yIGVtcHR5IHN0 cmluZyIpKSkpCi0gIChpZiAoZmJvdW5kcCAnbWVudS1iYXItdXBkYXRlLXlhbmstbWVudSkKLSAg ICAgIChtZW51LWJhci11cGRhdGUteWFuay1tZW51IHN0cmluZyAoYW5kIHJlcGxhY2UgKGNhciBr aWxsLXJpbmcpKSkpCi0gIChpZiAoYW5kIHJlcGxhY2Uga2lsbC1yaW5nKQotICAgICAgKHNldGNh ciBraWxsLXJpbmcgc3RyaW5nKQotICAgIChwdXNoIHN0cmluZyBraWxsLXJpbmcpCi0gICAgKGlm ICg+IChsZW5ndGgga2lsbC1yaW5nKSBraWxsLXJpbmctbWF4KQotCShzZXRjZHIgKG50aGNkciAo MS0ga2lsbC1yaW5nLW1heCkga2lsbC1yaW5nKSBuaWwpKSkKLSAgKHNldHEga2lsbC1yaW5nLXlh bmstcG9pbnRlciBraWxsLXJpbmcpCisJICAoc2lnbmFsICdhcmdzLW91dC1vZi1yYW5nZQorCQkg IChsaXN0IHN0cmluZyAieWFuay1oYW5kbGVyIHNwZWNpZmllZCBmb3IgZW1wdHkgc3RyaW5nIikp KSkKKyAgICAoaWYgKGZib3VuZHAgJ21lbnUtYmFyLXVwZGF0ZS15YW5rLW1lbnUpCisJKG1lbnUt YmFyLXVwZGF0ZS15YW5rLW1lbnUgc3RyaW5nIChhbmQgcmVwbGFjZSAoY2FyIGtpbGwtcmluZykp KSkKKyAgICAoaWYgKGFuZCByZXBsYWNlIGtpbGwtcmluZykKKwkoc2V0Y2FyIGtpbGwtcmluZyBz dHJpbmcpCisgICAgICAocHVzaCBzdHJpbmcga2lsbC1yaW5nKQorICAgICAgKGlmICg+IChsZW5n dGgga2lsbC1yaW5nKSBraWxsLXJpbmctbWF4KQorCSAgKHNldGNkciAobnRoY2RyICgxLSBraWxs LXJpbmctbWF4KSBraWxsLXJpbmcpIG5pbCkpKQorICAgIChzZXRxIGtpbGwtcmluZy15YW5rLXBv aW50ZXIga2lsbC1yaW5nKSkKICAgKGlmIGludGVycHJvZ3JhbS1jdXQtZnVuY3Rpb24KICAgICAg IChmdW5jYWxsIGludGVycHJvZ3JhbS1jdXQtZnVuY3Rpb24gc3RyaW5nIChub3QgcmVwbGFjZSkp KSkKIAogKGRlZnVuIGtpbGwtYXBwZW5kIChzdHJpbmcgYmVmb3JlLXAgJm9wdGlvbmFsIHlhbmst aGFuZGxlcikKICAgIkFwcGVuZCBTVFJJTkcgdG8gdGhlIGVuZCBvZiB0aGUgbGF0ZXN0IGtpbGwg aW4gdGhlIGtpbGwgcmluZy4KIElmIEJFRk9SRS1QIGlzIG5vbi1uaWwsIHByZXBlbmQgU1RSSU5H IHRvIHRoZSBraWxsLgogT3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgWUFOSy1IQU5ETEVSLCBpZiBu b24tbmlsLCBzcGVjaWZpZXMgdGhlCiB5YW5rLWhhbmRsZXIgdGV4dCBwcm9wZXJ0eSB0byBiZSBz ZXQgb24gdGhlIGNvbWJpbmVkIGtpbGwgcmluZwpAQCAtMjY2MCw2MyArMjY5NSw4MSBAQAogaW5z dGVhZCBvZiByZXBsYWNpbmcgdGhlIGxhc3Qga2lsbCB3aXRoIGl0LgogSWYgYGludGVycHJvZ3Jh bS1jdXQtZnVuY3Rpb24nIGlzIHNldCwgcGFzcyB0aGUgcmVzdWx0aW5nIGtpbGwgdG8gaXQuIgog ICAobGV0KiAoKGN1ciAoY2FyIGtpbGwtcmluZykpKQogICAgIChraWxsLW5ldyAoaWYgYmVmb3Jl LXAgKGNvbmNhdCBzdHJpbmcgY3VyKSAoY29uY2F0IGN1ciBzdHJpbmcpKQogCSAgICAgIChvciAo PSAobGVuZ3RoIGN1cikgMCkKIAkJICAoZXF1YWwgeWFuay1oYW5kbGVyIChnZXQtdGV4dC1wcm9w ZXJ0eSAwICd5YW5rLWhhbmRsZXIgY3VyKSkpCiAJICAgICAgeWFuay1oYW5kbGVyKSkpCiAKLShk ZWZjdXN0b20geWFuay1wb3AtY2hhbmdlLXNlbGVjdGlvbiBuaWwKKworKGRlZmN1c3RvbSB5YW5r LXBvcC1jaGFuZ2Utc3lzdGVtLWN1cnJlbnQtc2VsZWN0aW9uIG5pbAogICAiSWYgbm9uLW5pbCwg cm90YXRpbmcgdGhlIGtpbGwgcmluZyBjaGFuZ2VzIHRoZSB3aW5kb3cgc3lzdGVtIHNlbGVjdGlv bi4iCiAgIDp0eXBlICdib29sZWFuCiAgIDpncm91cCAna2lsbGluZwogICA6dmVyc2lvbiAiMjMu MSIpCiAKKyhkZWZjdXN0b20geWFuay1wb3AtY2hhbmdlLXN5c3RlbS1jbGlwYm9hcmQgbmlsCisg ICJJZiBub24tbmlsLCByb3RhdGluZyB0aGUga2lsbCByaW5nIGNoYW5nZXMgdGhlIHdpbmRvdyBz eXN0ZW0gY2xpcGJvYXJkIgorICA6dHlwZSAnYm9vbGVhbgorICA6Z3JvdXAgJ2tpbGxpbmcKKyAg OnZlcnNpb24gIjIzLjEiKQorCiAoZGVmdW4gY3VycmVudC1raWxsIChuICZvcHRpb25hbCBkby1u b3QtbW92ZSkKICAgIlJvdGF0ZSB0aGUgeWFua2luZyBwb2ludCBieSBOIHBsYWNlcywgYW5kIHRo ZW4gcmV0dXJuIHRoYXQga2lsbC4KIElmIE4gaXMgemVybywgYGludGVycHJvZ3JhbS1wYXN0ZS1m dW5jdGlvbicgaXMgc2V0LCBhbmQgY2FsbGluZyBpdCByZXR1cm5zIGEKIHN0cmluZyBvciBsaXN0 IG9mIHN0cmluZ3MsIHRoZW4gdGhhdCBzdHJpbmcgKG9yIGxpc3QpIGlzIGFkZGVkIHRvIHRoZSBm cm9udAogb2YgdGhlIGtpbGwgcmluZyBhbmQgdGhlIHN0cmluZyAob3IgZmlyc3Qgc3RyaW5nIGlu IHRoZSBsaXN0KSBpcyByZXR1cm5lZCBhcwotdGhlIGxhdGVzdCBraWxsLgordGhlIGxhdGVzdCBr aWxsLiAgSG93ZXZlciwgaWYgdmFyaWFibGUgYGVuYWJsZS1raWxsLXJpbmcnIGlzIAorbmlsLCB0 aGVuICB0aGUga2lsbCByaW5nIHdpbGwgbm90IGJlIGFmZmVjdGVkLCBub3Igd2lsbCBpdCBiZSB1 c2VkIHRvIGZpbmQgCit0aGUgeWFua2VkIHRleHQgLSBvbmx5IGBpbnRlcnByb2dyYW0tcGFzdGUt ZnVuY3Rpb24nIHdpbGwgYmUgdXNlZC4gIAogCiBJZiBOIGlzIG5vdCB6ZXJvLCBhbmQgaWYgYHlh bmstcG9wLWNoYW5nZS1zZWxlY3Rpb24nIGlzCiBub24tbmlsLCB1c2UgYGludGVycHJvZ3JhbS1j dXQtZnVuY3Rpb24nIHRvIHRyYW5zZmVyIHRoZQoga2lsbCBhdCB0aGUgbmV3IHlhbmsgcG9pbnQg aW50byB0aGUgd2luZG93IHN5c3RlbSBzZWxlY3Rpb24uCiAKKwogSWYgb3B0aW9uYWwgYXJnIERP LU5PVC1NT1ZFIGlzIG5vbi1uaWwsIHRoZW4gZG9uJ3QgYWN0dWFsbHkKIG1vdmUgdGhlIHlhbmtp bmcgcG9pbnQ7IGp1c3QgcmV0dXJuIHRoZSBOdGgga2lsbCBmb3J3YXJkLiIKIAogICAobGV0ICgo aW50ZXJwcm9ncmFtLXBhc3RlIChhbmQgKD0gbiAwKQogCQkJCSBpbnRlcnByb2dyYW0tcGFzdGUt ZnVuY3Rpb24KIAkJCQkgKGZ1bmNhbGwgaW50ZXJwcm9ncmFtLXBhc3RlLWZ1bmN0aW9uKSkpKQot ICAgIChpZiBpbnRlcnByb2dyYW0tcGFzdGUKKyAgICAoaWYgZW5hYmxlLWtpbGwtcmluZwogCShw cm9nbgotCSAgOzsgRGlzYWJsZSB0aGUgaW50ZXJwcm9ncmFtIGN1dCBmdW5jdGlvbiB3aGVuIHdl IGFkZCB0aGUgbmV3Ci0JICA7OyB0ZXh0IHRvIHRoZSBraWxsIHJpbmcsIHNvIEVtYWNzIGRvZXNu J3QgdHJ5IHRvIG93biB0aGUKLQkgIDs7IHNlbGVjdGlvbiwgd2l0aCBpZGVudGljYWwgdGV4dC4K LQkgIChsZXQgKChpbnRlcnByb2dyYW0tY3V0LWZ1bmN0aW9uIG5pbCkpCi0JICAgIChpZiAobGlz dHAgaW50ZXJwcm9ncmFtLXBhc3RlKQotCSAgICAgIChtYXBjICdraWxsLW5ldyAobnJldmVyc2Ug aW50ZXJwcm9ncmFtLXBhc3RlKSkKLQkgICAgICAoa2lsbC1uZXcgaW50ZXJwcm9ncmFtLXBhc3Rl KSkpCi0JICAoY2FyIGtpbGwtcmluZykpCi0gICAgICAob3Iga2lsbC1yaW5nIChlcnJvciAiS2ls bCByaW5nIGlzIGVtcHR5IikpCi0gICAgICAobGV0ICgoQVJHdGgta2lsbC1lbGVtZW50Ci0JICAg ICAobnRoY2RyIChtb2QgKC0gbiAobGVuZ3RoIGtpbGwtcmluZy15YW5rLXBvaW50ZXIpKQotCQkJ ICAobGVuZ3RoIGtpbGwtcmluZykpCi0JCSAgICAga2lsbC1yaW5nKSkpCi0JKHVubGVzcyBkby1u b3QtbW92ZQotCSAgKHNldHEga2lsbC1yaW5nLXlhbmstcG9pbnRlciBBUkd0aC1raWxsLWVsZW1l bnQpCi0JICAod2hlbiAoYW5kIHlhbmstcG9wLWNoYW5nZS1zZWxlY3Rpb24KLQkJICAgICAoPiBu IDApCi0JCSAgICAgaW50ZXJwcm9ncmFtLWN1dC1mdW5jdGlvbikKLQkgICAgKGZ1bmNhbGwgaW50 ZXJwcm9ncmFtLWN1dC1mdW5jdGlvbiAoY2FyIEFSR3RoLWtpbGwtZWxlbWVudCkpKSkKLQkoY2Fy IEFSR3RoLWtpbGwtZWxlbWVudCkpKSkpCi0KLQorCSAgKGlmIGludGVycHJvZ3JhbS1wYXN0ZQor CSAgICAgIChwcm9nbgorCQk7OyBEaXNhYmxlIHRoZSBpbnRlcnByb2dyYW0gY3V0IGZ1bmN0aW9u IHdoZW4gd2UgYWRkIHRoZSBuZXcKKwkJOzsgdGV4dCB0byB0aGUga2lsbCByaW5nLCBzbyBFbWFj cyBkb2Vzbid0IHRyeSB0byBvd24gdGhlCisJCTs7IHNlbGVjdGlvbiwgd2l0aCBpZGVudGljYWwg dGV4dC4KKwkJKGxldCAoKGludGVycHJvZ3JhbS1jdXQtZnVuY3Rpb24gbmlsKSkKKwkJICAoaWYg KGxpc3RwIGludGVycHJvZ3JhbS1wYXN0ZSkKKwkJICAgICAgKG1hcGMgJ2tpbGwtbmV3IChucmV2 ZXJzZSBpbnRlcnByb2dyYW0tcGFzdGUpKQorCQkgICAgKGtpbGwtbmV3IGludGVycHJvZ3JhbS1w YXN0ZSkpKQorCQkoY2FyIGtpbGwtcmluZykpCisJICAgIChvciBraWxsLXJpbmcgKGVycm9yICJL aWxsIHJpbmcgaXMgZW1wdHkiKSkKKwkgICAgKGxldCAoKEFSR3RoLWtpbGwtZWxlbWVudAorCQkg ICAobnRoY2RyIChtb2QgKC0gbiAobGVuZ3RoIGtpbGwtcmluZy15YW5rLXBvaW50ZXIpKQorCQkJ CShsZW5ndGgga2lsbC1yaW5nKSkKKwkJCSAgIGtpbGwtcmluZykpKQorCSAgICAgICh1bmxlc3Mg ZG8tbm90LW1vdmUKKwkJKHNldHEga2lsbC1yaW5nLXlhbmstcG9pbnRlciBBUkd0aC1raWxsLWVs ZW1lbnQpCisJCSh3aGVuIChhbmQgKG9yIHlhbmstcG9wLWNoYW5nZS1zeXN0ZW0tY3VycmVudC1z ZWxlY3Rpb24KKwkJCSAgICAgICB5YW5rLXBvcC1jaGFuZ2Utc3lzdGVtLWNsaXBib2FyZCkKKwkJ CSAgICg+IG4gMCkKKwkJCSAgIGludGVycHJvZ3JhbS1jdXQtZnVuY3Rpb24pCisJCSAgKGxldCAo KGVuYWJsZS1zeXN0ZW0tY2xpcGJvYXJkIHlhbmstcG9wLWNoYW5nZS1zeXN0ZW0tY2xpcGJvYXJk KQorCQkJKGVuYWJsZS1zeXN0ZW0tY3VycmVudC1zZWxlY3Rpb24geWFuay1wb3AtY2hhbmdlLXN5 c3RlbS1jdXJyZW50LXNlbGVjdGlvbikpCisJCSAgICAoZnVuY2FsbCBpbnRlcnByb2dyYW0tY3V0 LWZ1bmN0aW9uIChjYXIgQVJHdGgta2lsbC1lbGVtZW50KSkpKSkKKwkgICAgICAoY2FyIEFSR3Ro LWtpbGwtZWxlbWVudCkpKSkKKyAgICAgIChpZiBpbnRlcnByb2dyYW0tcGFzdGUKKwkgIChpZiAo bGlzdHAgaW50ZXJwcm9ncmFtLXBhc3RlKQorCSAgICAgIChjYXIgaW50ZXJwcm9ncmFtLXBhc3Rl KQorCSAgICBpbnRlcnByb2dyYW0tcGFzdGUpCisJKGVycm9yICJObyBzeXN0ZW0gc2VsZWN0aW9u cyBmb3VuZCBhbmQga2lsbCByaW5nIGlzIG9mZiBmb3IgdGhpcyBvcGVyYXRpb24uIikpKSkpCiAK IDs7OzsgQ29tbWFuZHMgZm9yIG1hbmlwdWxhdGluZyB0aGUga2lsbCByaW5nLgogCiAoZGVmY3Vz dG9tIGtpbGwtcmVhZC1vbmx5LW9rIG5pbAogICAiKk5vbi1uaWwgbWVhbnMgZG9uJ3Qgc2lnbmFs IGFuIGVycm9yIGZvciBraWxsaW5nIHJlYWQtb25seSB0ZXh0LiIKICAgOnR5cGUgJ2Jvb2xlYW4K ICAgOmdyb3VwICdraWxsaW5nKQogCkBAIC0zMzA1LDM1ICszMzU4LDkzIEBACiBpcyBhY3RpdmUs IGFuZCByZXR1cm5zIGFuIGludGVnZXIgb3IgbmlsIGluIHRoZSB1c3VhbCB3YXkuCiAKIElmIHlv dSBhcmUgdXNpbmcgdGhpcyBpbiBhbiBlZGl0aW5nIGNvbW1hbmQsIHlvdSBhcmUgbW9zdCBsaWtl bHkgbWFraW5nCiBhIG1pc3Rha2U7IHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiBgc2V0LW1hcmsn LiIKICAgKGlmIChvciBmb3JjZSAobm90IHRyYW5zaWVudC1tYXJrLW1vZGUpIG1hcmstYWN0aXZl IG1hcmstZXZlbi1pZi1pbmFjdGl2ZSkKICAgICAgIChtYXJrZXItcG9zaXRpb24gKG1hcmstbWFy a2VyKSkKICAgICAoc2lnbmFsICdtYXJrLWluYWN0aXZlIG5pbCkpKQogCisoZGVmdmFyIHByb3Bh Z2F0ZS1hY3RpdmUtcmVnaW9uLWxhc3QtcmVnaW9uIG5pbAorICAicmVjb3JkIG9mIGxhc3QgcHJv cGFnYXRlZCByZWdpb24gZm9yIGNvbXBhcmlzb24KK2luIGBwcm9wYWdhdGUtYWN0aXZlLXJlZ2lv biciKQorCisoZGVmdmFyIHByb3BhZ2F0ZS1hY3RpdmUtcmVnaW9uLXJlcGxhY2UgbmlsCisgICJ1 c2VkIHRvIHRyaW0ga2lsbC1yaW5nIGdyb3d0aCBpbiBwcm9wYWdhdGUtYWN0aXZlLXJlZ2lvbiwg Citmb3Igd2hlbiBhY3RpdmUtcmVnaW9uLWVuYWJsZS1raWxsLXJpbmcgaXMgbm9uLW5pbC4iKQor CiA7OyBNYW55IHBsYWNlcyBzZXQgbWFyay1hY3RpdmUgZGlyZWN0bHksIGFuZCBzZXZlcmFsIG9m IHRoZW0gZmFpbGVkIHRvIGFsc28KIDs7IHJ1biBkZWFjdGl2YXRlLW1hcmstaG9vay4gIFRoaXMg c2hvcnRoYW5kIHNob3VsZCBzaW1wbGlmeS4KIChkZWZzdWJzdCBkZWFjdGl2YXRlLW1hcmsgKCkK ICAgIkRlYWN0aXZhdGUgdGhlIG1hcmsgYnkgc2V0dGluZyBgbWFyay1hY3RpdmUnIHRvIG5pbC4K IFwoVGhhdCBtYWtlcyBhIGRpZmZlcmVuY2Ugb25seSBpbiBUcmFuc2llbnQgTWFyayBtb2RlLikK IEFsc28gcnVucyB0aGUgaG9vayBgZGVhY3RpdmF0ZS1tYXJrLWhvb2snLiIKKyAgKGNhbmNlbC1m dW5jdGlvbi10aW1lcnMgJ3Byb3BhZ2F0ZS1hY3RpdmUtcmVnaW9uKQorICAoc2V0cSBwcm9wYWdh dGUtYWN0aXZlLXJlZ2lvbi1yZXBsYWNlIG5pbCkKKyAgKHNldHEgcHJvcGFnYXRlLWFjdGl2ZS1y ZWdpb24tbGFzdC1yZWdpb24gbmlsKQogICAoY29uZAogICAgKChlcSB0cmFuc2llbnQtbWFyay1t b2RlICdsYW1iZGEpCiAgICAgKHNldHEgdHJhbnNpZW50LW1hcmstbW9kZSBuaWwpKQogICAgKHRy YW5zaWVudC1tYXJrLW1vZGUKICAgICAoc2V0cSBtYXJrLWFjdGl2ZSBuaWwpCiAgICAgKHJ1bi1o b29rcyAnZGVhY3RpdmF0ZS1tYXJrLWhvb2spKSkpCiAKLShkZWZjdXN0b20gc2VsZWN0LWFjdGl2 ZS1yZWdpb25zIG5pbAotICAiSWYgbm9uLW5pbCwgYW4gYWN0aXZlIHJlZ2lvbiBhdXRvbWF0aWNh bGx5IGJlY29tZXMgdGhlIHdpbmRvdyBzZWxlY3Rpb24uIgorCisoZGVmY3VzdG9tIGFjdGl2ZS1y ZWdpb24tZW5hYmxlLXN5c3RlbS1jbGlwYm9hcmQgbmlsCisgICJJZiBub24tbmlsLCBhbiBhY3Rp dmUgcmVnaW9uIGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgc3lzdGVtIGNsaXBib2FyZC4KK1Ro aXMgaGFwcGVucyB3aXRob3V0IGFueSBleHBsaWNpdCBraWxsLiIKKyAgOnR5cGUgJ2Jvb2xlYW4K KyAgOmdyb3VwICdraWxsaW5nCisgIDp2ZXJzaW9uICIyMy4xIikKKworKGRlZmN1c3RvbSBhY3Rp dmUtcmVnaW9uLWVuYWJsZS1zeXN0ZW0tY3VycmVudC1zZWxlY3Rpb24gbmlsCisgICJJZiBub24t bmlsLCBhbiBhY3RpdmUgcmVnaW9uIGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0aGUgc3lzdGVtIGN1 cnJlbnQgc2VsZWN0aW9uLgorVGhpcyBoYXBwZW5zIHdpdGhvdXQgYW55IGV4cGxpY2l0IGtpbGwu IgogICA6dHlwZSAnYm9vbGVhbgogICA6Z3JvdXAgJ2tpbGxpbmcKICAgOnZlcnNpb24gIjIzLjEi KQogCisoZGVmY3VzdG9tIGFjdGl2ZS1yZWdpb24tZW5hYmxlLWtpbGwtcmluZyBuaWwKKyAgIklm IG5vbi1uaWwsIGFuIGFjdGl2ZSByZWdpb24gYXV0b21hdGljYWxseSBiZWNvbWVzIGhlYWQgb2Yg dGhlIGtpbGwgcmluZy4KK1RoaXMgaGFwcGVucyB3aXRob3V0IGFueSBleHBsaWNpdCBraWxsLiIK KyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOmdyb3VwICdraWxsaW5nCisgIDp2ZXJzaW9uICIyMy4xIikK KworCisoZGVmdW4gcHJvcGFnYXRlLWFjdGl2ZS1yZWdpb24gKCkKKyAgIkltcGxlbWVudHMgYGFj dGl2ZS1yZWdpb25zLWVuYWJsZS1zeXN0ZW0tY2xpcGJvYXJkJworCisgQ2FsbGVkIGJ5IGFuIGlk bGUgdGltZXIgIGFjdGl2ZSB3aGVuIHJlZ2lvbiBpcyBhY3RpdmUgYW5kIGBzZXQtbWFyayciCisg IChhbmQgKG9yIGFjdGl2ZS1yZWdpb24tZW5hYmxlLXN5c3RlbS1jbGlwYm9hcmQKKwkgICBhY3Rp dmUtcmVnaW9uLWVuYWJsZS1zeXN0ZW0tY3VycmVudC1zZWxlY3Rpb24KKwkgICBhY3RpdmUtcmVn aW9uLWVuYWJsZS1raWxsLXJpbmcpCisgICAgICAgKHJlZ2lvbi1hY3RpdmUtcCkKKyAgICAgICAo bGV0ICgobWF5YmUtcHJvcGFnYXRlLWN1cnJlbnQtcmVnaW9uLXRleHQKKwkgICAgICAoYnVmZmVy LXN1YnN0cmluZyAocmVnaW9uLWJlZ2lubmluZykgKHJlZ2lvbi1lbmQpKSkpCisJICh3aGVuIChv ciAobnVsbCBwcm9wYWdhdGUtYWN0aXZlLXJlZ2lvbi1sYXN0LXJlZ2lvbikKKwkJICAgKG5vdCAo c3RyaW5nPSBwcm9wYWdhdGUtYWN0aXZlLXJlZ2lvbi1sYXN0LXJlZ2lvbgorCQkJCSBtYXliZS1w cm9wYWdhdGUtY3VycmVudC1yZWdpb24tdGV4dCkpKQorCSAgIChzZXRxIHByb3BhZ2F0ZS1hY3Rp dmUtcmVnaW9uLWxhc3QtcmVnaW9uCisJCSBtYXliZS1wcm9wYWdhdGUtY3VycmVudC1yZWdpb24t dGV4dCkKKwkgICAoaWYgKG9yIChudWxsIG1heWJlLXByb3BhZ2F0ZS1jdXJyZW50LXJlZ2lvbi10 ZXh0KSAKKwkJICAgKHN0cmluZz0gIiIgbWF5YmUtcHJvcGFnYXRlLWN1cnJlbnQtcmVnaW9uLXRl eHQpKQorCSAgICAgICA7OyBkb24ndCBwcm9wYWdhdGUgaWYgdGhpcyByZWdpb24gaXMgZW1wdHks IGJ1dCB0aGlzIAorCSAgICAgICA7OyByZWdpb24gYmVpbmcgZW1wdHkgbWVhbnMgZnV0dXJlIG5v bmVtcHR5IHJlZ2lvbnMgCisJICAgICAgIDs7IG5lZWQgcmVwcm9wYWdhdGlvbgorCSAgICAgICAo c2V0cSBwcm9wYWdhdGUtYWN0aXZlLXJlZ2lvbi1sYXN0LXJlZ2lvbiBuaWwpCisJICAgICAobGV0 ICgoZW5hYmxlLXN5c3RlbS1jbGlwYm9hcmQgYWN0aXZlLXJlZ2lvbi1lbmFibGUtc3lzdGVtLWNs aXBib2FyZCkKKwkJICAgKGVuYWJsZS1zeXN0ZW0tY3VycmVudC1zZWxlY3Rpb24gCisJCSAgICBh Y3RpdmUtcmVnaW9uLWVuYWJsZS1zeXN0ZW0tY3VycmVudC1zZWxlY3Rpb24pCisJCSAgICAoZW5h YmxlLWtpbGwtcmluZyBhY3RpdmUtcmVnaW9uLWVuYWJsZS1raWxsLXJpbmcpKQorCSAgICAgICAo a2lsbC1uZXcgbWF5YmUtcHJvcGFnYXRlLWN1cnJlbnQtcmVnaW9uLXRleHQKKwkJCSBwcm9wYWdh dGUtYWN0aXZlLXJlZ2lvbi1yZXBsYWNlKQorCSAgICAgICAoc2V0cSBwcm9wYWdhdGUtYWN0aXZl LXJlZ2lvbi1yZXBsYWNlIHQpKSkpKSkpCisKKwogKGRlZnVuIHNldC1tYXJrIChwb3MpCiAgICJT ZXQgdGhpcyBidWZmZXIncyBtYXJrIHRvIFBPUy4gIERvbid0IHVzZSB0aGlzIGZ1bmN0aW9uIQog VGhhdCBpcyB0byBzYXksIGRvbid0IHVzZSB0aGlzIGZ1bmN0aW9uIHVubGVzcyB5b3Ugd2FudAog dGhlIHVzZXIgdG8gc2VlIHRoYXQgdGhlIG1hcmsgaGFzIG1vdmVkLCBhbmQgeW91IHdhbnQgdGhl IHByZXZpb3VzCiBtYXJrIHBvc2l0aW9uIHRvIGJlIGxvc3QuCiAKIE5vcm1hbGx5LCB3aGVuIGEg bmV3IG1hcmsgaXMgc2V0LCB0aGUgb2xkIG9uZSBzaG91bGQgZ28gb24gdGhlIHN0YWNrLgogVGhp cyBpcyB3aHkgbW9zdCBhcHBsaWNhdGlvbnMgc2hvdWxkIHVzZSBgcHVzaC1tYXJrJywgbm90IGBz ZXQtbWFyaycuCkBAIC0zMzQ1LDE5ICszNDU2LDI1IEBACiBzdG9yZSBpdCBpbiBhIExpc3AgdmFy aWFibGUuICBFeGFtcGxlOgogCiAgICAobGV0ICgoYmVnIChwb2ludCkpKSAoZm9yd2FyZC1saW5l IDEpIChkZWxldGUtcmVnaW9uIGJlZyAocG9pbnQpKSkuIgogCiAgIChpZiBwb3MKICAgICAgIChw cm9nbgogCShzZXRxIG1hcmstYWN0aXZlIHQpCiAJKHJ1bi1ob29rcyAnYWN0aXZhdGUtbWFyay1o b29rKQotCShhbmQgc2VsZWN0LWFjdGl2ZS1yZWdpb25zCi0JICAgICAoeC1zZXQtc2VsZWN0aW9u Ci0JICAgICAgbmlsIChidWZmZXItc3Vic3RyaW5nIChyZWdpb24tYmVnaW5uaW5nKSAocmVnaW9u LWVuZCkpKSkKKwkod2hlbiAob3IgYWN0aXZlLXJlZ2lvbi1lbmFibGUtc3lzdGVtLWNsaXBib2Fy ZAorCQkgIGFjdGl2ZS1yZWdpb24tZW5hYmxlLXN5c3RlbS1jdXJyZW50LXNlbGVjdGlvbgorCQkg IGFjdGl2ZS1yZWdpb24tZW5hYmxlLWtpbGwtcmluZykKKwkgICAgIChjYW5jZWwtZnVuY3Rpb24t dGltZXJzICdwcm9wYWdhdGUtYWN0aXZlLXJlZ2lvbikKKwkgICAgIChydW4td2l0aC1pZGxlLXRp bWVyIDAgdCAKKwkJCQkgICdwcm9wYWdhdGUtYWN0aXZlLXJlZ2lvbikKKyAgICAgICAgICAgICA7 IGZvcmNlIGltbWVkaWF0ZSByZXByb3BhZ2F0ZSBpZiBtYXJrIGlzIHJlc2V0CisJICAgICAoc2V0 cSBwcm9wYWdhdGUtYWN0aXZlLXJlZ2lvbi1sYXN0LXJlZ2lvbiBuaWwpCisJICAgICAocHJvcGFn YXRlLWFjdGl2ZS1yZWdpb24pKQogCShzZXQtbWFya2VyIChtYXJrLW1hcmtlcikgcG9zIChjdXJy ZW50LWJ1ZmZlcikpKQogICAgIDs7IE5vcm1hbGx5IHdlIG5ldmVyIGNsZWFyIG1hcmstYWN0aXZl IGV4Y2VwdCBpbiBUcmFuc2llbnQgTWFyayBtb2RlLgogICAgIDs7IEJ1dCB3aGVuIHdlIGFjdHVh bGx5IGNsZWFyIG91dCB0aGUgbWFyayB2YWx1ZSB0b28sCiAgICAgOzsgd2UgbXVzdCBjbGVhciBt YXJrLWFjdGl2ZSBpbiBhbnkgbW9kZS4KICAgICAoc2V0cSBtYXJrLWFjdGl2ZSBuaWwpCiAgICAg KHJ1bi1ob29rcyAnZGVhY3RpdmF0ZS1tYXJrLWhvb2spCiAgICAgKHNldC1tYXJrZXIgKG1hcmst bWFya2VyKSBuaWwpKSkKIApJbmRleDogbGlzcC9tb3VzZS5lbAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiAvc291cmNlcy9lbWFjcy9lbWFjcy9saXNwL21vdXNlLmVsLHYKcmV0cmlldmluZyByZXZpc2lv biAxLjMyNwpkaWZmIC1VIDggLXIxLjMyNyBtb3VzZS5lbAotLS0gbGlzcC9tb3VzZS5lbAk3IEZl YiAyMDA4IDA2OjIwOjI1IC0wMDAwCTEuMzI3CisrKyBsaXNwL21vdXNlLmVsCTE3IEZlYiAyMDA4 IDAzOjAxOjM3IC0wMDAwCkBAIC0xMzUxLDMwICsxMzUxLDUyIEBACiAgIChtb3VzZS1taW5pYnVm ZmVyLWNoZWNrIGNsaWNrKQogICAobGV0KiAoKHBvc24gKGV2ZW50LXN0YXJ0IGNsaWNrKSkKIAkg KGNsaWNrLXBvc24gKHBvc24tcG9pbnQgcG9zbikpKQogICAgIChzZWxlY3Qtd2luZG93IChwb3Nu LXdpbmRvdyBwb3NuKSkKICAgICAoaWYgKG51bWJlcnAgY2xpY2stcG9zbikKIAkoa2lsbC1yZWdp b24gKG1pbiAocG9pbnQpIGNsaWNrLXBvc24pCiAJCSAgICAgKG1heCAocG9pbnQpIGNsaWNrLXBv c24pKSkpKQogCisoZGVmY3VzdG9tIG1vdXNlLXlhbmstZW5hYmxlLXN5c3RlbS1jbGlwYm9hcmQg bmlsCisgICJJZiBub24tbmlsLCBcXFttb3VzZS15YW5rLWF0LWNsaWNrXSB1c2VzIHRoZSBzeXN0 ZW0gY2xpcGJvYXJkLiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOmdyb3VwICdtb3VzZQorICA6dmVy c2lvbiAiMjMuMSIpCisKKyhkZWZjdXN0b20gbW91c2UteWFuay1lbmFibGUtc3lzdGVtLWN1cnJl bnQtc2VsZWN0aW9uIHQKKyAgIklmIG5vbi1uaWwsIFxcW21vdXNlLXlhbmstYXQtY2xpY2tdIHVz ZXMgdGhlIHN5c3RlbSBjdXJyZW50IHNlbGVjdGlvbi4iCisgIDp0eXBlICdib29sZWFuCisgIDpn cm91cCAnbW91c2UKKyAgOnZlcnNpb24gIjIzLjEiKQorCisoZGVmY3VzdG9tIG1vdXNlLXlhbmst ZW5hYmxlLWtpbGwtcmluZyB0CisgICJJZiBub24tbmlsLCBcXFttb3VzZS15YW5rLWF0LWNsaWNr XSB1c2VzIHRoZSBraWxsIHJpbmcuIgorICA6dHlwZSAnYm9vbGVhbgorICA6Z3JvdXAgJ21vdXNl CisgIDp2ZXJzaW9uICIyMy4xIikKKwogKGRlZnVuIG1vdXNlLXlhbmstYXQtY2xpY2sgKGNsaWNr IGFyZykKICAgIkluc2VydCB0aGUgbGFzdCBzdHJldGNoIG9mIGtpbGxlZCB0ZXh0IGF0IHRoZSBw b3NpdGlvbiBjbGlja2VkIG9uLgogQWxzbyBtb3ZlIHBvaW50IHRvIG9uZSBlbmQgb2YgdGhlIHRl eHQgdGh1cyBpbnNlcnRlZCAobm9ybWFsbHkgdGhlIGVuZCksCiBhbmQgc2V0IG1hcmsgYXQgdGhl IGJlZ2lubmluZy4KIFByZWZpeCBhcmd1bWVudHMgYXJlIGludGVycHJldGVkIGFzIHdpdGggXFxb eWFua10uCiBJZiBgbW91c2UteWFuay1hdC1wb2ludCcgaXMgbm9uLW5pbCwgaW5zZXJ0IGF0IHBv aW50CiByZWdhcmRsZXNzIG9mIHdoZXJlIHlvdSBjbGljay4iCiAgIChpbnRlcmFjdGl2ZSAiZVxu UCIpCiAgIDs7IEdpdmUgdGVtcG9yYXJ5IG1vZGVzIHN1Y2ggYXMgaXNlYXJjaCBhIGNoYW5jZSB0 byB0dXJuIG9mZi4KICAgKHJ1bi1ob29rcyAnbW91c2UtbGVhdmUtYnVmZmVyLWhvb2spCiAgIChv ciBtb3VzZS15YW5rLWF0LXBvaW50IChtb3VzZS1zZXQtcG9pbnQgY2xpY2spKQotICAoc2V0cSB0 aGlzLWNvbW1hbmQgJ3lhbmspCi0gIChzZXRxIG1vdXNlLXNlbGVjdGlvbi1jbGljay1jb3VudCAw KQotICAoeWFuayBhcmcpKQorICAobGV0ICgoZW5hYmxlLWtpbGwtcmluZyBtb3VzZS15YW5rLWVu YWJsZS1raWxsLXJpbmcpCisJKGVuYWJsZS1zeXN0ZW0tY2xpcGJvYXJkIG1vdXNlLXlhbmstZW5h YmxlLXN5c3RlbS1jbGlwYm9hcmQpCisJKGVuYWJsZS1zeXN0ZW0tY3VycmVudC1zZWxlY3Rpb24g CisJIG1vdXNlLXlhbmstZW5hYmxlLXN5c3RlbS1jdXJyZW50LXNlbGVjdGlvbikpCisgICAgKHNl dHEgdGhpcy1jb21tYW5kICd5YW5rKQorICAgIChzZXRxIG1vdXNlLXNlbGVjdGlvbi1jbGljay1j b3VudCAwKQorICAgICh5YW5rIGFyZykpKQogCiAoZGVmdW4gbW91c2UteWFuay1wcmltYXJ5IChj bGljaykKICAgIkluc2VydCB0aGUgcHJpbWFyeSBzZWxlY3Rpb24gYXQgdGhlIHBvc2l0aW9uIGNs aWNrZWQgb24uCiBNb3ZlIHBvaW50IHRvIHRoZSBlbmQgb2YgdGhlIGluc2VydGVkIHRleHQuCiBJ ZiBgbW91c2UteWFuay1hdC1wb2ludCcgaXMgbm9uLW5pbCwgaW5zZXJ0IGF0IHBvaW50CiByZWdh cmRsZXNzIG9mIHdoZXJlIHlvdSBjbGljay4iCiAgIChpbnRlcmFjdGl2ZSAiZSIpCiAgIDs7IEdp dmUgdGVtcG9yYXJ5IG1vZGVzIHN1Y2ggYXMgaXNlYXJjaCBhIGNoYW5jZSB0byB0dXJuIG9mZi4K SW5kZXg6IGxpc3AvbWVudS1iYXIuZWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL3NvdXJjZXMvZW1h Y3MvZW1hY3MvbGlzcC9tZW51LWJhci5lbCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zMTgKZGlm ZiAtVSA4IC1yMS4zMTggbWVudS1iYXIuZWwKLS0tIGxpc3AvbWVudS1iYXIuZWwJOCBKYW4gMjAw OCAyMDo0NDozOSAtMDAwMAkxLjMxOAorKysgbGlzcC9tZW51LWJhci5lbAkxNyBGZWIgMjAwOCAw MzowMTozOSAtMDAwMApAQCAtNTA4LDMyICs1MDgsNTEgQEAKICAgICAgJyhhbmQgbWFyay1hY3Rp dmUgKG5vdCBidWZmZXItcmVhZC1vbmx5KSkpCiAocHV0ICdjbGlwYm9hcmQta2lsbC1yaW5nLXNh dmUgJ21lbnUtZW5hYmxlICdtYXJrLWFjdGl2ZSkKIChwdXQgJ2NsaXBib2FyZC15YW5rICdtZW51 LWVuYWJsZQogICAgICAnKGFuZCAob3IgKGFuZCAoZmJvdW5kcCAneC1zZWxlY3Rpb24tZXhpc3Rz LXApCiAJCSAgICAoeC1zZWxlY3Rpb24tZXhpc3RzLXApKQogCSAgICAgICAoeC1zZWxlY3Rpb24t ZXhpc3RzLXAgJ0NMSVBCT0FSRCkpCiAJICAgKG5vdCBidWZmZXItcmVhZC1vbmx5KSkpCiAKKwor KGRlZmN1c3RvbSBtZW51LWJhci1lbmFibGUtc3lzdGVtLWNsaXBib2FyZCB0CisgICJJZiBub24t bmlsLCBtZW51IGJhciBjdXQvY29weS9wYXN0ZSB1c2VzIHRoZSBzeXN0ZW0gY2xpcGJvYXJkLiIK KyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOmdyb3VwICdtZW51CisgIDp2ZXJzaW9uICIyMy4xIikKKwor KGRlZmN1c3RvbSBtZW51LWJhci1lbmFibGUtc3lzdGVtLWN1cnJlbnQtc2VsZWN0aW9uIG5pbAor ICAiSWYgbm9uLW5pbCwgbWVudSBiYXIgY3V0L2NvcHkvcGFzdGUgdXNlcyB0aGUgc3lzdGVtIGN1 cnJlbnQgc2VsZWN0aW9uLiIKKyAgOnR5cGUgJ2Jvb2xlYW4KKyAgOmdyb3VwICdtZW51CisgIDp2 ZXJzaW9uICIyMy4xIikKKwogKGRlZnVuIGNsaXBib2FyZC15YW5rICgpCiAgICJJbnNlcnQgdGhl IGNsaXBib2FyZCBjb250ZW50cywgb3IgdGhlIGxhc3Qgc3RyZXRjaCBvZiBraWxsZWQgdGV4dC4i CiAgIChpbnRlcmFjdGl2ZSAiKiIpCi0gIChsZXQgKCh4LXNlbGVjdC1lbmFibGUtY2xpcGJvYXJk IHQpKQorICAobGV0ICgoZW5hYmxlLXN5c3RlbS1jbGlwYm9hcmQgbWVudS1iYXItZW5hYmxlLXN5 c3RlbS1jbGlwYm9hcmQpCisJKGVuYWJsZS1zeXN0ZW0tY3VycmVudC1zZWxlY3Rpb24KKwkgbWVu dS1iYXItZW5hYmxlLXN5c3RlbS1jdXJyZW50LXNlbGVjdGlvbikpCiAgICAgKHlhbmspKSkKIAog KGRlZnVuIGNsaXBib2FyZC1raWxsLXJpbmctc2F2ZSAoYmVnIGVuZCkKICAgIkNvcHkgcmVnaW9u IHRvIGtpbGwgcmluZywgYW5kIHNhdmUgaW4gdGhlIFggY2xpcGJvYXJkLiIKICAgKGludGVyYWN0 aXZlICJyIikKLSAgKGxldCAoKHgtc2VsZWN0LWVuYWJsZS1jbGlwYm9hcmQgdCkpCisgIChsZXQg KChlbmFibGUtc3lzdGVtLWNsaXBib2FyZCBtZW51LWJhci1lbmFibGUtc3lzdGVtLWNsaXBib2Fy ZCkKKwkoZW5hYmxlLXN5c3RlbS1jdXJyZW50LXNlbGVjdGlvbiAKKwkgbWVudS1iYXItZW5hYmxl LXN5c3RlbS1jdXJyZW50LXNlbGVjdGlvbikpCiAgICAgKGtpbGwtcmluZy1zYXZlIGJlZyBlbmQp KSkKIAogKGRlZnVuIGNsaXBib2FyZC1raWxsLXJlZ2lvbiAoYmVnIGVuZCkKICAgIktpbGwgdGhl IHJlZ2lvbiwgYW5kIHNhdmUgaXQgaW4gdGhlIFggY2xpcGJvYXJkLiIKICAgKGludGVyYWN0aXZl ICJyIikKLSAgKGxldCAoKHgtc2VsZWN0LWVuYWJsZS1jbGlwYm9hcmQgdCkpCisgIChsZXQgKChl bmFibGUtc3lzdGVtLWNsaXBib2FyZCBtZW51LWJhci1lbmFibGUtc3lzdGVtLWNsaXBib2FyZCkK KwkoZW5hYmxlLXN5c3RlbS1jdXJyZW50LXNlbGVjdGlvbgorCSBtZW51LWJhci1lbmFibGUtc3lz dGVtLWN1cnJlbnQtc2VsZWN0aW9uKSkKICAgICAoa2lsbC1yZWdpb24gYmVnIGVuZCkpKQogCiAo ZGVmdW4gbWVudS1iYXItZW5hYmxlLWNsaXBib2FyZCAoKQogICAiTWFrZSBDVVQsIFBBU1RFIGFu ZCBDT1BZIChrZXlzIGFuZCBtZW51IGJhciBpdGVtcykgdXNlIHRoZSBjbGlwYm9hcmQuCiBEbyB0 aGUgc2FtZSBmb3IgdGhlIGtleXMgb2YgdGhlIHNhbWUgbmFtZS4iCiAgIChpbnRlcmFjdGl2ZSkK ICAgOzsgV2UgY2FuJ3QgdXNlIGNvbnN0YW50IGxpc3Qgc3RydWN0dXJlIGhlcmUgYmVjYXVzZSBp dCBiZWNvbWVzIHB1cmUsCiAgIDs7IGFuZCBiZWNhdXNlIGl0IGdldHMgbW9kaWZpZWQgd2l0aCBj YWNoZSBkYXRhLgpJbmRleDogbGlzcC90ZXJtL3gtd2luLmVsCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6 IC9zb3VyY2VzL2VtYWNzL2VtYWNzL2xpc3AvdGVybS94LXdpbi5lbCx2CnJldHJpZXZpbmcgcmV2 aXNpb24gMS4yMjQKZGlmZiAtVSA4IC1yMS4yMjQgeC13aW4uZWwKLS0tIGxpc3AvdGVybS94LXdp bi5lbAk4IEZlYiAyMDA4IDA4OjMzOjIzIC0wMDAwCTEuMjI0CisrKyBsaXNwL3Rlcm0veC13aW4u ZWwJMTcgRmViIDIwMDggMDM6MDE6NDEgLTAwMDAKQEAgLTIxNTAsNTIgKzIxNTAsNzYgQEAKIFRo aXMgaXMgdGhlIGFjdHVhbCB0ZXh0IHN0b3JlZCBpbiB0aGUgWCBjdXQgYnVmZmVyLiIpCiAoZGVm dmFyIHgtbGFzdC1jdXQtYnVmZmVyLWNvZGluZyAnaXNvLWxhdGluLTEKICAgIlRoZSBjb2Rpbmcg d2UgbGFzdCB1c2VkIHRvIGVuY29kZS9kZWNvZGUgdGhlIHRleHQgZnJvbSB0aGUgWCBjdXQgYnVm ZmVyIikKIAogKGRlZnZhciB4LWN1dC1idWZmZXItbWF4IDIwMDAwIDsgTm90ZSB0aGlzIHZhbHVl IGlzIG92ZXJyaWRkZW4gYmVsb3cuCiAgICJNYXggbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gcHV0 IGluIHRoZSBjdXQgYnVmZmVyLgogSXQgaXMgc2FpZCB0aGF0IG92ZXJsYXJnZSBzdHJpbmdzIGFy ZSBzbG93IHRvIHB1dCBpbnRvIHRoZSBjdXQgYnVmZmVyLiIpCiAKLShkZWZjdXN0b20geC1zZWxl Y3QtZW5hYmxlLWNsaXBib2FyZCBuaWwKLSAgIk5vbi1uaWwgbWVhbnMgY3V0dGluZyBhbmQgcGFz dGluZyB1c2VzIHRoZSBjbGlwYm9hcmQuCi1UaGlzIGlzIGluIGFkZGl0aW9uIHRvLCBidXQgaW4g cHJlZmVyZW5jZSB0bywgdGhlIHByaW1hcnkgc2VsZWN0aW9uLiIKLSAgOnR5cGUgJ2Jvb2xlYW4K LSAgOmdyb3VwICdraWxsaW5nKQotCi0oZGVmY3VzdG9tIHgtc2VsZWN0LWVuYWJsZS1wcmltYXJ5 IHQKLSAgIk5vbi1uaWwgbWVhbnMgY3V0dGluZyBhbmQgcGFzdGluZyB1c2VzIHRoZSBwcmltYXJ5 IHNlbGVjdGlvbi4iCi0gIDp0eXBlICdib29sZWFuCi0gIDpncm91cCAna2lsbGluZykKKworOzsg QSBzcGVjaWFsIGxheWVyIG9mIGluZGlyZWN0aW9uIG9uIFgxMSB0byBrZWVwIAorOzsgdGhlIGZy ZWVkZXNrdG9wLm9yZyBhdmVyc2UgaGFwcHkgYW5kIGluZGljYXRlCis7OyBpZiBsZWdhY3kgY3V0 YnVmZmVycyBzaG91bGQgYmUgdXNlZC4gT3RoZXIgcGxhdGZvcm1zCis7OyAuLi5wcm9iYWJseSBk b24ndCBuZWVkIHRoaXMuCisKKyhkZWZjdXN0b20geC1zeXN0ZW0tY2xpcGJvYXJkLWlzLXgtc2Vs ZWN0aW9uICcoOmNsaXBib2FyZCkKKyAgIldoaWNoIFggU2VsZWN0aW9uKHMpIG1lYW4gdGhlICdz eXN0ZW0gY2xpcGJvYXJkJy4iCisgIDp0eXBlICcoc2V0IChjb25zdCA6Y2xpcGJvYXJkKQorCSAg ICAgIChjb25zdCA6cHJpbWFyeSkKKwkgICAgICAoY29uc3QgOmN1dGJ1ZmZlcikpCisgIDpncm91 cCAneAorICA6dmVyc2lvbiAiMjMuMSIpCisKKyhkZWZjdXN0b20geC1zeXN0ZW0tY3VycmVudC1z ZWxlY3Rpb24taXMteC1zZWxlY3Rpb24gJyg6cHJpbWFyeSA6Y3V0YnVmZmVyKQorICAiV2hpY2gg WCBTZWxlY3Rpb24ocykgbWVhbiB0aGUgJ3N5c3RlbSBjdXJyZW50IHNlbGVjdGlvbicuIgorICA6 dHlwZSAnKHNldCAoY29uc3QgOmNsaXBib2FyZCkKKwkgICAgICAoY29uc3QgOnByaW1hcnkpCisJ ICAgICAgKGNvbnN0IDpjdXRidWZmZXIpKQorICA6Z3JvdXAgJ3gKKyAgOnZlcnNpb24gIjIzLjEi KQorCisoZGVmdW4gdXNlLXgtc2VsZWN0aW9uLXAgKHNlbCkKKyAgIlRlc3QgaWYgeC1sZXZlbCBz ZWxlY3Rpb24gb3IgY3V0YnVmZmVyIHNob3VsZCBiZQordXNlZCBhY2NvcmRpbmcgdG8gYGVuYWJs ZS1zeXN0ZW0tY2xpcGJvYXJkJywKK2BlbmFibGUtc3lzdGVtLWN1cnJlbnQtc2VsZWN0aW9uJyBt YXRjaGVkIGFnYWluc3QKK2B4LXN5c3RlbS1jbGlwYm9hcmQtaXMteC1zZWxlY3Rpb24nIGFuZAor YHgtc3lzdGVtLWN1cnJlbnQtc2VsZWN0aW9uLWlzLXgtc2VsZWN0aW9uJyIKKyhvcgorICh3aGVu IGVuYWJsZS1zeXN0ZW0tY2xpcGJvYXJkCisgICAobWVtcSBzZWwgeC1zeXN0ZW0tY2xpcGJvYXJk LWlzLXgtc2VsZWN0aW9uKSkKKyAod2hlbiBlbmFibGUtc3lzdGVtLWN1cnJlbnQtc2VsZWN0aW9u CisgICAobWVtcSBzZWwgeC1zeXN0ZW0tY3VycmVudC1zZWxlY3Rpb24taXMteC1zZWxlY3Rpb24p KSkpCiAKIChkZWZ1biB4LXNlbGVjdC10ZXh0ICh0ZXh0ICZvcHRpb25hbCBwdXNoKQogICAiTWFr ZSBURVhULCBhIHN0cmluZywgdGhlIHByaW1hcnkgWCBzZWxlY3Rpb24uCiBBbHNvLCBzZXQgdGhl IHZhbHVlIG9mIFggY3V0IGJ1ZmZlciAwLCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQogd2l0 aCBvbGRlciBYIGFwcGxpY2F0aW9ucy4KIGdpbGRlYUBzdG9wLm1haWwtYWJ1c2Uub3JnIHNheXMg aXQncyBub3QgZGVzaXJhYmxlIHRvIHB1dCBraWxscwogaW4gdGhlIGNsaXBib2FyZC4iCiAgIDs7 IFdpdGggbXVsdGktdHR5LCB0aGlzIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQgZnJvbSBhIHR0eSBm cmFtZS4KICAgKHdoZW4gKGVxIChmcmFtZXAgKHNlbGVjdGVkLWZyYW1lKSkgJ3gpCi0gICAgOzsg RG9uJ3Qgc2VuZCB0aGUgY3V0IGJ1ZmZlciB0b28gbXVjaCB0ZXh0LgotICAgIDs7IEl0IGJlY29t ZXMgc2xvdywgYW5kIGlmIHJlYWxseSBiaWcgaXQgY2F1c2VzIGVycm9ycy4KLSAgICAoY29uZCAo KD49IChsZW5ndGggdGV4dCkgeC1jdXQtYnVmZmVyLW1heCkKLSAgICAgICAgICAgKHgtc2V0LWN1 dC1idWZmZXIgIiIgcHVzaCkKLSAgICAgICAgICAgKHNldHEgeC1sYXN0LXNlbGVjdGVkLXRleHQt Y3V0ICIiCi0gICAgICAgICAgICAgICAgIHgtbGFzdC1zZWxlY3RlZC10ZXh0LWN1dC1lbmNvZGVk ICIiKSkKLSAgICAgICAgICAodAotICAgICAgICAgICAoc2V0cSB4LWxhc3Qtc2VsZWN0ZWQtdGV4 dC1jdXQgdGV4dAotICAgICAgICAgICAgICAgICB4LWxhc3QtY3V0LWJ1ZmZlci1jb2RpbmcgJ2lz by1sYXRpbi0xCi0gICAgICAgICAgICAgICAgIHgtbGFzdC1zZWxlY3RlZC10ZXh0LWN1dC1lbmNv ZGVkCi0gICAgICAgICAgICAgICAgIDs7IElDQ0NNIHNheXMgY3V0IGJ1ZmZlciBhbHdheXMgY29u dGFpbiBJU08tTGF0aW4tMQotICAgICAgICAgICAgICAgICAoZW5jb2RlLWNvZGluZy1zdHJpbmcg dGV4dCAnaXNvLWxhdGluLTEpKQotICAgICAgICAgICAoeC1zZXQtY3V0LWJ1ZmZlciB4LWxhc3Qt c2VsZWN0ZWQtdGV4dC1jdXQtZW5jb2RlZCBwdXNoKSkpCi0gICAgKHdoZW4geC1zZWxlY3QtZW5h YmxlLXByaW1hcnkKKyAgICAod2hlbiAodXNlLXgtc2VsZWN0aW9uLXAgOmN1dGJ1ZmZlcikKKyAg ICAgIDs7IERvbid0IHNlbmQgdGhlIGN1dCBidWZmZXIgdG9vIG11Y2ggdGV4dC4KKyAgICAgIDs7 IEl0IGJlY29tZXMgc2xvdywgYW5kIGlmIHJlYWxseSBiaWcgaXQgY2F1c2VzIGVycm9ycy4KKyAg ICAgIChjb25kICgoPj0gKGxlbmd0aCB0ZXh0KSB4LWN1dC1idWZmZXItbWF4KQorCSAgICAgKHgt c2V0LWN1dC1idWZmZXIgIiIgcHVzaCkKKwkgICAgIChzZXRxIHgtbGFzdC1zZWxlY3RlZC10ZXh0 LWN1dCAiIgorCQkgICB4LWxhc3Qtc2VsZWN0ZWQtdGV4dC1jdXQtZW5jb2RlZCAiIikpCisJICAg ICh0CisJICAgICAoc2V0cSB4LWxhc3Qtc2VsZWN0ZWQtdGV4dC1jdXQgdGV4dAorCQkgICB4LWxh c3QtY3V0LWJ1ZmZlci1jb2RpbmcgJ2lzby1sYXRpbi0xCisJCSAgIHgtbGFzdC1zZWxlY3RlZC10 ZXh0LWN1dC1lbmNvZGVkCisJCSAgIDs7IElDQ0NNIHNheXMgY3V0IGJ1ZmZlciBhbHdheXMgY29u dGFpbiBJU08tTGF0aW4tMQorCQkgICAoZW5jb2RlLWNvZGluZy1zdHJpbmcgdGV4dCAnaXNvLWxh dGluLTEpKQorCSAgICAgKHgtc2V0LWN1dC1idWZmZXIgeC1sYXN0LXNlbGVjdGVkLXRleHQtY3V0 LWVuY29kZWQgcHVzaCkpKSkKKyAgICAod2hlbiAodXNlLXgtc2VsZWN0aW9uLXAgOnByaW1hcnkp CiAgICAgICAoeC1zZXQtc2VsZWN0aW9uICdQUklNQVJZIHRleHQpCiAgICAgICAoc2V0cSB4LWxh c3Qtc2VsZWN0ZWQtdGV4dC1wcmltYXJ5IHRleHQpKQotICAgICh3aGVuIHgtc2VsZWN0LWVuYWJs ZS1jbGlwYm9hcmQKKyAgICAod2hlbiAodXNlLXgtc2VsZWN0aW9uLXAgOmNsaXBib2FyZCkKICAg ICAgICh4LXNldC1zZWxlY3Rpb24gJ0NMSVBCT0FSRCB0ZXh0KQogICAgICAgKHNldHEgeC1sYXN0 LXNlbGVjdGVkLXRleHQtY2xpcGJvYXJkIHRleHQpKSkpCiAKIChkZWZ2YXIgeC1zZWxlY3QtcmVx dWVzdC10eXBlIG5pbAogICAiKkRhdGEgdHlwZSByZXF1ZXN0IGZvciBYIHNlbGVjdGlvbi4KIFRo ZSB2YWx1ZSBpcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBkYXRhIHR5cGVzLCBhIGxpc3Qgb2YgdGhl bSwgb3IgbmlsOgogICBgQ09NUE9VTkRfVEVYVCcsIGBVVEY4X1NUUklORycsIGBTVFJJTkcnLCBg VEVYVCcKIApAQCAtMjIzNiw4NCArMjI2MCw5MSBAQAogOzsgYXMgaWYgdGhleSB3ZXJlIHVuc2V0 LgogOzsgSWYgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdHdpY2UgYW5kIGZpbmRzIHRoZSBzYW1l IHRleHQsCiA7OyBpdCByZXR1cm5zIG5pbCB0aGUgc2Vjb25kIHRpbWUuICBUaGlzIGlzIHNvIHRo YXQgYSBzaW5nbGUKIDs7IHNlbGVjdGlvbiB3b24ndCBiZSBhZGRlZCB0byB0aGUga2lsbCByaW5n IG92ZXIgYW5kIG92ZXIuCiAoZGVmdW4geC1jdXQtYnVmZmVyLW9yLXNlbGVjdGlvbi12YWx1ZSAo KQogICA7OyBXaXRoIG11bHRpLXR0eSwgdGhpcyBmdW5jdGlvbiBtYXkgYmUgY2FsbGVkIGZyb20g YSB0dHkgZnJhbWUuCiAgICh3aGVuIChlcSAoZnJhbWVwIChzZWxlY3RlZC1mcmFtZSkpICd4KQog ICAgIChsZXQgKGNsaXAtdGV4dCBwcmltYXJ5LXRleHQgY3V0LXRleHQpCi0gICAgICAod2hlbiB4 LXNlbGVjdC1lbmFibGUtY2xpcGJvYXJkCisgICAgICAod2hlbiAodXNlLXgtc2VsZWN0aW9uLXAg OmNsaXBib2FyZCkKICAgICAgICAgKHNldHEgY2xpcC10ZXh0ICh4LXNlbGVjdGlvbi12YWx1ZSAn Q0xJUEJPQVJEKSkKICAgICAgICAgKGlmIChzdHJpbmc9IGNsaXAtdGV4dCAiIikgKHNldHEgY2xp cC10ZXh0IG5pbCkpCisJCisJKHdoZW4gZW5hYmxlLWtpbGwtcmluZworCSAgOzsgQ2hlY2sgdGhl IENMSVBCT0FSRCBzZWxlY3Rpb24gZm9yICduZXduZXNzJywgaXMgaXQgZGlmZmVyZW50CisJICA7 OyBmcm9tIHdoYXQgd2UgcmVtZWJlcmVkIHRoZW0gdG8gYmUgbGFzdCB0aW1lIHdlIGRpZCBhCisJ ICA7OyBjdXQvcGFzdGUgb3BlcmF0aW9uLgorCSAgKHNldHEgY2xpcC10ZXh0CisJCShjb25kIDs7 IGNoZWNrIGNsaXBib2FyZAorCQkgKChvciAobm90IGNsaXAtdGV4dCkgKHN0cmluZz0gY2xpcC10 ZXh0ICIiKSkKKwkJICAoc2V0cSB4LWxhc3Qtc2VsZWN0ZWQtdGV4dC1jbGlwYm9hcmQgbmlsKSkK KwkJICgoZXEgICAgICBjbGlwLXRleHQgeC1sYXN0LXNlbGVjdGVkLXRleHQtY2xpcGJvYXJkKSBu aWwpCisJCSAoKHN0cmluZz0gY2xpcC10ZXh0IHgtbGFzdC1zZWxlY3RlZC10ZXh0LWNsaXBib2Fy ZCkKKwkJICA7OyBSZWNvcmQgdGhlIG5ld2VyIHN0cmluZywKKwkJICA7OyBzbyBzdWJzZXF1ZW50 IGNhbGxzIGNhbiB1c2UgdGhlIGBlcScgdGVzdC4KKwkJICAoc2V0cSB4LWxhc3Qtc2VsZWN0ZWQt dGV4dC1jbGlwYm9hcmQgY2xpcC10ZXh0KQorCQkgIG5pbCkKKwkJICh0IChzZXRxIHgtbGFzdC1z ZWxlY3RlZC10ZXh0LWNsaXBib2FyZCBjbGlwLXRleHQpKSkpKSkKIAotICAgICAgICA7OyBDaGVj ayB0aGUgQ0xJUEJPQVJEIHNlbGVjdGlvbiBmb3IgJ25ld25lc3MnLCBpcyBpdCBkaWZmZXJlbnQK LSAgICAgICAgOzsgZnJvbSB3aGF0IHdlIHJlbWViZXJlZCB0aGVtIHRvIGJlIGxhc3QgdGltZSB3 ZSBkaWQgYQotICAgICAgICA7OyBjdXQvcGFzdGUgb3BlcmF0aW9uLgotICAgICAgICAoc2V0cSBj bGlwLXRleHQKLSAgICAgICAgICAgICAgKGNvbmQgOzsgY2hlY2sgY2xpcGJvYXJkCi0gICAgICAg ICAgICAgICAoKG9yIChub3QgY2xpcC10ZXh0KSAoc3RyaW5nPSBjbGlwLXRleHQgIiIpKQotICAg ICAgICAgICAgICAgIChzZXRxIHgtbGFzdC1zZWxlY3RlZC10ZXh0LWNsaXBib2FyZCBuaWwpKQot ICAgICAgICAgICAgICAgKChlcSAgICAgIGNsaXAtdGV4dCB4LWxhc3Qtc2VsZWN0ZWQtdGV4dC1j bGlwYm9hcmQpIG5pbCkKLSAgICAgICAgICAgICAgICgoc3RyaW5nPSBjbGlwLXRleHQgeC1sYXN0 LXNlbGVjdGVkLXRleHQtY2xpcGJvYXJkKQotICAgICAgICAgICAgICAgIDs7IFJlY29yZCB0aGUg bmV3ZXIgc3RyaW5nLAotICAgICAgICAgICAgICAgIDs7IHNvIHN1YnNlcXVlbnQgY2FsbHMgY2Fu IHVzZSB0aGUgYGVxJyB0ZXN0LgotICAgICAgICAgICAgICAgIChzZXRxIHgtbGFzdC1zZWxlY3Rl ZC10ZXh0LWNsaXBib2FyZCBjbGlwLXRleHQpCi0gICAgICAgICAgICAgICAgbmlsKQotICAgICAg ICAgICAgICAgKHQgKHNldHEgeC1sYXN0LXNlbGVjdGVkLXRleHQtY2xpcGJvYXJkIGNsaXAtdGV4 dCkpKSkpCi0KLSAgICAgICh3aGVuIHgtc2VsZWN0LWVuYWJsZS1wcmltYXJ5CisgICAgICAod2hl biAodXNlLXgtc2VsZWN0aW9uLXAgOnByaW1hcnkpCiAJKHNldHEgcHJpbWFyeS10ZXh0ICh4LXNl bGVjdGlvbi12YWx1ZSAnUFJJTUFSWSkpCi0JOzsgQ2hlY2sgdGhlIFBSSU1BUlkgc2VsZWN0aW9u IGZvciAnbmV3bmVzcycsIGlzIGl0IGRpZmZlcmVudAotCTs7IGZyb20gd2hhdCB3ZSByZW1lYmVy ZWQgdGhlbSB0byBiZSBsYXN0IHRpbWUgd2UgZGlkIGEKLQk7OyBjdXQvcGFzdGUgb3BlcmF0aW9u LgotCShzZXRxIHByaW1hcnktdGV4dAotCSAgICAgIChjb25kIDs7IGNoZWNrIHByaW1hcnkgc2Vs ZWN0aW9uCi0JICAgICAgICgob3IgKG5vdCBwcmltYXJ5LXRleHQpIChzdHJpbmc9IHByaW1hcnkt dGV4dCAiIikpCi0JCShzZXRxIHgtbGFzdC1zZWxlY3RlZC10ZXh0LXByaW1hcnkgbmlsKSkKLQkg ICAgICAgKChlcSAgICAgIHByaW1hcnktdGV4dCB4LWxhc3Qtc2VsZWN0ZWQtdGV4dC1wcmltYXJ5 KSBuaWwpCi0JICAgICAgICgoc3RyaW5nPSBwcmltYXJ5LXRleHQgeC1sYXN0LXNlbGVjdGVkLXRl eHQtcHJpbWFyeSkKLQkJOzsgUmVjb3JkIHRoZSBuZXdlciBzdHJpbmcsCi0JCTs7IHNvIHN1YnNl cXVlbnQgY2FsbHMgY2FuIHVzZSB0aGUgYGVxJyB0ZXN0LgotCQkoc2V0cSB4LWxhc3Qtc2VsZWN0 ZWQtdGV4dC1wcmltYXJ5IHByaW1hcnktdGV4dCkKLQkJbmlsKQotCSAgICAgICAodAotCQkoc2V0 cSB4LWxhc3Qtc2VsZWN0ZWQtdGV4dC1wcmltYXJ5IHByaW1hcnktdGV4dCkpKSkpCi0KLSAgICAg IChzZXRxIGN1dC10ZXh0ICh4LWdldC1jdXQtYnVmZmVyIDApKQotCi0gICAgICA7OyBDaGVjayB0 aGUgeCBjdXQgYnVmZmVyIGZvciAnbmV3bmVzcycsIGlzIGl0IGRpZmZlcmVudAotICAgICAgOzsg ZnJvbSB3aGF0IHdlIHJlbWViZXJlZCB0aGVtIHRvIGJlIGxhc3QgdGltZSB3ZSBkaWQgYQotICAg ICAgOzsgY3V0L3Bhc3RlIG9wZXJhdGlvbi4KLSAgICAgIChzZXRxIGN1dC10ZXh0Ci0gICAgICAg ICAgICAobGV0ICgobmV4dC1jb2RpbmcgKG9yIG5leHQtc2VsZWN0aW9uLWNvZGluZy1zeXN0ZW0g J2lzby1sYXRpbi0xKSkpCi0gICAgICAgICAgICAgIChjb25kIDs7IGNoZWNrIGN1dCBidWZmZXIK LSAgICAgICAgICAgICAgICgob3IgKG5vdCBjdXQtdGV4dCkgKHN0cmluZz0gY3V0LXRleHQgIiIp KQotICAgICAgICAgICAgICAgIChzZXRxIHgtbGFzdC1zZWxlY3RlZC10ZXh0LWN1dCBuaWwpKQot ICAgICAgICAgICAgICAgOzsgVGhpcyBzaG9ydCBjdXQgZG9lc24ndCB3b3JrIGJlY2F1c2UgeC1n ZXQtY3V0LWJ1ZmZlcgotICAgICAgICAgICAgICAgOzsgYWx3YXlzIHJldHVybnMgYSBuZXdseSBj cmVhdGVkIHN0cmluZy4KLSAgICAgICAgICAgICAgIDs7ICgoZXEgICAgICBjdXQtdGV4dCB4LWxh c3Qtc2VsZWN0ZWQtdGV4dC1jdXQpIG5pbCkKLSAgICAgICAgICAgICAgICgoYW5kIChzdHJpbmc9 IGN1dC10ZXh0IHgtbGFzdC1zZWxlY3RlZC10ZXh0LWN1dC1lbmNvZGVkKQotICAgICAgICAgICAg ICAgICAgICAgKGVxIHgtbGFzdC1jdXQtYnVmZmVyLWNvZGluZyBuZXh0LWNvZGluZykpCi0gICAg ICAgICAgICAgICAgOzsgU2VlIHRoZSBjb21tZW50IGFib3ZlLiAgTm8gbmVlZCBvZiB0aGlzIHJl Y29yZGluZy4KLSAgICAgICAgICAgICAgICA7OyBSZWNvcmQgdGhlIG5ld2VyIHN0cmluZywKLSAg ICAgICAgICAgICAgICA7OyBzbyBzdWJzZXF1ZW50IGNhbGxzIGNhbiB1c2UgdGhlIGBlcScgdGVz dC4KLSAgICAgICAgICAgICAgICA7OyAoc2V0cSB4LWxhc3Qtc2VsZWN0ZWQtdGV4dC1jdXQgY3V0 LXRleHQpCi0gICAgICAgICAgICAgICAgbmlsKQotICAgICAgICAgICAgICAgKHQKLSAgICAgICAg ICAgICAgICAoc2V0cSB4LWxhc3Qtc2VsZWN0ZWQtdGV4dC1jdXQtZW5jb2RlZCBjdXQtdGV4dAot ICAgICAgICAgICAgICAgICAgICAgIHgtbGFzdC1jdXQtYnVmZmVyLWNvZGluZyBuZXh0LWNvZGlu ZwotICAgICAgICAgICAgICAgICAgICAgIHgtbGFzdC1zZWxlY3RlZC10ZXh0LWN1dAotICAgICAg ICAgICAgICAgICAgICAgIDs7IElDQ0NNIHNheXMgY3V0IGJ1ZmZlciBhbHdheXMgY29udGFpbiBJ U08tTGF0aW4tMSwgYnV0Ci0gICAgICAgICAgICAgICAgICAgICAgOzsgdXNlIG5leHQtc2VsZWN0 aW9uLWNvZGluZy1zeXN0ZW0gaWYgbm90IG5pbC4KLSAgICAgICAgICAgICAgICAgICAgICAoZGVj b2RlLWNvZGluZy1zdHJpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgY3V0LXRleHQgbmV4dC1j b2RpbmcpKSkpKSkKLQotICAgICAgOzsgQXMgd2UgaGF2ZSBkb25lIG9uZSBzZWxlY3Rpb24sIGNs ZWFyIHRoaXMgbm93LgotICAgICAgKHNldHEgbmV4dC1zZWxlY3Rpb24tY29kaW5nLXN5c3RlbSBu aWwpCisgICAgICAgIChpZiAoc3RyaW5nPSBwcmltYXJ5LXRleHQgIiIpIChzZXRxIHByaW1hcnkt dGV4dCBuaWwpKQorCSh3aGVuIGVuYWJsZS1raWxsLXJpbmcKKwkgIDs7IENoZWNrIHRoZSBQUklN QVJZIHNlbGVjdGlvbiBmb3IgJ25ld25lc3MnLCBpcyBpdCBkaWZmZXJlbnQKKwkgIDs7IGZyb20g d2hhdCB3ZSByZW1lYmVyZWQgdGhlbSB0byBiZSBsYXN0IHRpbWUgd2UgZGlkIGEKKwkgIDs7IGN1 dC9wYXN0ZSBvcGVyYXRpb24uCisJICAoc2V0cSBwcmltYXJ5LXRleHQKKwkJKGNvbmQgOzsgY2hl Y2sgcHJpbWFyeSBzZWxlY3Rpb24KKwkJICgob3IgKG5vdCBwcmltYXJ5LXRleHQpIChzdHJpbmc9 IHByaW1hcnktdGV4dCAiIikpCisJCSAgKHNldHEgeC1sYXN0LXNlbGVjdGVkLXRleHQtcHJpbWFy eSBuaWwpKQorCQkgKChlcSAgICAgIHByaW1hcnktdGV4dCB4LWxhc3Qtc2VsZWN0ZWQtdGV4dC1w cmltYXJ5KSBuaWwpCisJCSAoKHN0cmluZz0gcHJpbWFyeS10ZXh0IHgtbGFzdC1zZWxlY3RlZC10 ZXh0LXByaW1hcnkpCisJCSAgOzsgUmVjb3JkIHRoZSBuZXdlciBzdHJpbmcsCisJCSAgOzsgc28g c3Vic2VxdWVudCBjYWxscyBjYW4gdXNlIHRoZSBgZXEnIHRlc3QuCisJCSAgKHNldHEgeC1sYXN0 LXNlbGVjdGVkLXRleHQtcHJpbWFyeSBwcmltYXJ5LXRleHQpCisJCSAgbmlsKQorCQkgKHQKKwkJ ICAoc2V0cSB4LWxhc3Qtc2VsZWN0ZWQtdGV4dC1wcmltYXJ5IHByaW1hcnktdGV4dCkpKSkpKQor CisgICAgICAod2hlbiAodXNlLXgtc2VsZWN0aW9uLXAgOmN1dGJ1ZmZlcikKKwkoc2V0cSBjdXQt dGV4dCAoeC1nZXQtY3V0LWJ1ZmZlciAwKSkKKyAgICAgICAgKGlmIChzdHJpbmc9IGN1dC10ZXh0 ICIiKSAoc2V0cSBjdXQtdGV4dCBuaWwpKQorCisJICA7OyBDaGVjayB0aGUgeCBjdXQgYnVmZmVy IGZvciAnbmV3bmVzcycsIGlzIGl0IGRpZmZlcmVudAorCSAgOzsgZnJvbSB3aGF0IHdlIHJlbWVi ZXJlZCB0aGVtIHRvIGJlIGxhc3QgdGltZSB3ZSBkaWQgYQorCSAgOzsgY3V0L3Bhc3RlIG9wZXJh dGlvbi4KKwkgIChzZXRxIGN1dC10ZXh0CisJCShsZXQgKChuZXh0LWNvZGluZyAob3IgbmV4dC1z ZWxlY3Rpb24tY29kaW5nLXN5c3RlbSAnaXNvLWxhdGluLTEpKSkKKwkJICAoY29uZCA7OyBjaGVj ayBjdXQgYnVmZmVyCisJCSAgICgob3IgKG5vdCBjdXQtdGV4dCkgKHN0cmluZz0gY3V0LXRleHQg IiIpKQorCQkgICAgKHNldHEgeC1sYXN0LXNlbGVjdGVkLXRleHQtY3V0IG5pbCkpCisJCSAgIDs7 IFRoaXMgc2hvcnQgY3V0IGRvZXNuJ3Qgd29yayBiZWNhdXNlIHgtZ2V0LWN1dC1idWZmZXIKKwkJ ICAgOzsgYWx3YXlzIHJldHVybnMgYSBuZXdseSBjcmVhdGVkIHN0cmluZy4KKwkJICAgOzsgKChl cSAgICAgIGN1dC10ZXh0IHgtbGFzdC1zZWxlY3RlZC10ZXh0LWN1dCkgbmlsKQorCQkgICAoKGFu ZCAoc3RyaW5nPSBjdXQtdGV4dCB4LWxhc3Qtc2VsZWN0ZWQtdGV4dC1jdXQtZW5jb2RlZCkKKwkJ CSAoZXEgeC1sYXN0LWN1dC1idWZmZXItY29kaW5nIG5leHQtY29kaW5nKSkKKwkJICAgIDs7IFNl ZSB0aGUgY29tbWVudCBhYm92ZS4gIE5vIG5lZWQgb2YgdGhpcyByZWNvcmRpbmcuCisJCSAgICA7 OyBSZWNvcmQgdGhlIG5ld2VyIHN0cmluZywKKwkJICAgIDs7IHNvIHN1YnNlcXVlbnQgY2FsbHMg Y2FuIHVzZSB0aGUgYGVxJyB0ZXN0LgorCQkgICAgOzsgKHNldHEgeC1sYXN0LXNlbGVjdGVkLXRl eHQtY3V0IGN1dC10ZXh0KQorCQkgICAgKGlmIGVuYWJsZS1raWxsLXJpbmcKKwkJCW5pbAorCQkg ICAgICBjdXQtdGV4dCkpCisJCSAgICh0CisJCSAgICAoc2V0cSB4LWxhc3Qtc2VsZWN0ZWQtdGV4 dC1jdXQtZW5jb2RlZCBjdXQtdGV4dAorCQkJICB4LWxhc3QtY3V0LWJ1ZmZlci1jb2RpbmcgbmV4 dC1jb2RpbmcKKwkJCSAgeC1sYXN0LXNlbGVjdGVkLXRleHQtY3V0CisJCQkgIDs7IElDQ0NNIHNh eXMgY3V0IGJ1ZmZlciBhbHdheXMgY29udGFpbiBJU08tTGF0aW4tMSwgYnV0CisJCQkgIDs7IHVz ZSBuZXh0LXNlbGVjdGlvbi1jb2Rpbmctc3lzdGVtIGlmIG5vdCBuaWwuCisJCQkgIChkZWNvZGUt Y29kaW5nLXN0cmluZworCQkJICAgY3V0LXRleHQgbmV4dC1jb2RpbmcpKSkpKSkKKwkKKwk7OyBB cyB3ZSBoYXZlIGRvbmUgb25lIHNlbGVjdGlvbiwgY2xlYXIgdGhpcyBub3cuCisJKHNldHEgbmV4 dC1zZWxlY3Rpb24tY29kaW5nLXN5c3RlbSBuaWwpKQogCiAgICAgICA7OyBBdCB0aGlzIHBvaW50 IHdlIGhhdmUgcmVjb3JkZWQgdGhlIGN1cnJlbnQgdmFsdWVzIGZvciB0aGUKICAgICAgIDs7IHNl bGVjdGlvbiBmcm9tIGNsaXBib2FyZCAoaWYgd2UgYXJlIHN1cHBvc2VkIHRvKSBwcmltYXJ5LAog ICAgICAgOzsgYW5kIGN1dCBidWZmZXIuICBTbyByZXR1cm4gdGhlIGZpcnN0IG9uZSB0aGF0IGhh cyBjaGFuZ2VkCiAgICAgICA7OyAod2hpY2ggaXMgdGhlIGZpcnN0IG5vbi1udWxsIG9uZSkuCiAg ICAgICA7OwogICAgICAgOzsgTk9URTogVGhlcmUgd2lsbCBiZSBjYXNlcyB3aGVyZSBtb3JlIHRo YW4gb25lIG9mIHRoZXNlIGhhcwogICAgICAgOzsgY2hhbmdlZCBhbmQgdGhlIG5ldyB2YWx1ZXMg ZGlmZmVyLiAgVGhpcyBpbmRpY2F0ZXMgdGhhdApAQCAtMjMzMiwyNSArMjM2MywxNiBAQAogICAg ICAgOzsgY2hlY2tlZCBhZ2FpbikuCiAgICAgICAob3IgY2xpcC10ZXh0IHByaW1hcnktdGV4dCBj dXQtdGV4dCkKICAgICAgICkpKQogCiA7OyBBcnJhbmdlIGZvciB0aGUga2lsbCBhbmQgeWFuayBm dW5jdGlvbnMgdG8gc2V0IGFuZCBjaGVjayB0aGUgY2xpcGJvYXJkLgogKHNldHEgaW50ZXJwcm9n cmFtLWN1dC1mdW5jdGlvbiAneC1zZWxlY3QtdGV4dCkKIChzZXRxIGludGVycHJvZ3JhbS1wYXN0 ZS1mdW5jdGlvbiAneC1jdXQtYnVmZmVyLW9yLXNlbGVjdGlvbi12YWx1ZSkKIAotKGRlZnVuIHgt Y2xpcGJvYXJkLXlhbmsgKCkKLSAgIkluc2VydCB0aGUgY2xpcGJvYXJkIGNvbnRlbnRzLCBvciB0 aGUgbGFzdCBzdHJldGNoIG9mIGtpbGxlZCB0ZXh0LiIKLSAgKGludGVyYWN0aXZlICIqIikKLSAg KGxldCAoKGNsaXBib2FyZC10ZXh0ICh4LXNlbGVjdGlvbi12YWx1ZSAnQ0xJUEJPQVJEKSkKLQko eC1zZWxlY3QtZW5hYmxlLWNsaXBib2FyZCB0KSkKLSAgICAoaWYgKGFuZCBjbGlwYm9hcmQtdGV4 dCAoPiAobGVuZ3RoIGNsaXBib2FyZC10ZXh0KSAwKSkKLQkoa2lsbC1uZXcgY2xpcGJvYXJkLXRl eHQpKQotICAgICh5YW5rKSkpCi0KIChkZWZ1biB4LW1lbnUtYmFyLW9wZW4gKCZvcHRpb25hbCBm cmFtZSkKICAgIk9wZW4gdGhlIG1lbnUgYmFyIGlmIGBtZW51LWJhci1tb2RlJyBpcyBvbi4gb3Ro ZXJ3aXNlIGNhbGwgYHRtbS1tZW51YmFyJy4iCiAgIChpbnRlcmFjdGl2ZSAiaSIpCiAgIChpZiBt ZW51LWJhci1tb2RlIChhY2NlbGVyYXRlLW1lbnUgZnJhbWUpCiAgICAgKHRtbS1tZW51YmFyKSkp CiAKIAwKIDs7OyBXaW5kb3cgc3lzdGVtIGluaXRpYWxpemF0aW9uLgpAQCAtMjQ1NSwyMyArMjQ3 NywxNiBAQAogICA7OyAgICAgKGdsb2JhbC1zZXQta2V5IFtmMTBdICdpZ25vcmUpKQogCiAgIDs7 IFR1cm4gb24gc3VwcG9ydCBmb3IgbW91c2Ugd2hlZWxzLgogICAobW91c2Utd2hlZWwtbW9kZSAx KQogCiAgIDs7IEVuYWJsZSBDTElQQk9BUkQgY29weS9wYXN0ZSB0aHJvdWdoIG1lbnUgYmFyIGNv bW1hbmRzLgogICAobWVudS1iYXItZW5hYmxlLWNsaXBib2FyZCkKIAotICA7OyBPdmVycmlkZSBQ YXN0ZSBzbyBpdCBsb29rcyBhdCBDTElQQk9BUkQgZmlyc3QuCi0gIChkZWZpbmUta2V5IG1lbnUt YmFyLWVkaXQtbWVudSBbcGFzdGVdCi0gICAgKGFwcGVuZCAnKG1lbnUtaXRlbSAiUGFzdGUiIHgt Y2xpcGJvYXJkLXlhbmsKLQkJCTplbmFibGUgKG5vdCBidWZmZXItcmVhZC1vbmx5KQotCQkJOmhl bHAgIlBhc3RlICh5YW5rKSB0ZXh0IG1vc3QgcmVjZW50bHkgY3V0L2NvcGllZCIpCi0JICAgIG5p bCkpCi0KICAgKHNldHEgeC1pbml0aWFsaXplZCB0KSkKIAogKGFkZC10by1saXN0ICdoYW5kbGUt YXJncy1mdW5jdGlvbi1hbGlzdCAnKHggLiB4LWhhbmRsZS1hcmdzKSkKIChhZGQtdG8tbGlzdCAn ZnJhbWUtY3JlYXRpb24tZnVuY3Rpb24tYWxpc3QgJyh4IC4geC1jcmVhdGUtZnJhbWUtd2l0aC1m YWNlcykpCiAoYWRkLXRvLWxpc3QgJ3dpbmRvdy1zeXN0ZW0taW5pdGlhbGl6YXRpb24tYWxpc3Qg Jyh4IC4geC1pbml0aWFsaXplLXdpbmRvdy1zeXN0ZW0pKQogCiA7OyBJbml0aWF0ZSBkcmFnIGFu ZCBkcm9wCiAoYWRkLWhvb2sgJ2FmdGVyLW1ha2UtZnJhbWUtZnVuY3Rpb25zICd4LWRuZC1pbml0 LWZyYW1lKQo= ------=_Part_1915_2752011.1203219494497--