From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Mauro Aranda Newsgroups: gmane.emacs.devel Subject: Re: Editions to the Widget Manual Date: Sat, 2 Sep 2023 08:14:53 -0300 Message-ID: References: <4776bb96-16d4-6d77-d7a8-4fc949070bf5@gmail.com> <83wmx99gvn.fsf@gnu.org> <83fs3wan1r.fsf@gnu.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------7szE1BuS09WGSVRmsNX9q0ez" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10276"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Cc: emacs-devel@gnu.org, drew.adams@oracle.com, bovine@cyberscientist.ca To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Sep 02 13:47:18 2023 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qcP5x-0002O5-3w for ged-emacs-devel@m.gmane-mx.org; Sat, 02 Sep 2023 13:47:17 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qcOar-0001G4-4f; Sat, 02 Sep 2023 07:15:09 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qcOap-0001Fr-TF for emacs-devel@gnu.org; Sat, 02 Sep 2023 07:15:07 -0400 Original-Received: from mail-oi1-x232.google.com ([2607:f8b0:4864:20::232]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qcOai-00066n-CE; Sat, 02 Sep 2023 07:15:07 -0400 Original-Received: by mail-oi1-x232.google.com with SMTP id 5614622812f47-3a812843f0fso1655261b6e.2; Sat, 02 Sep 2023 04:14:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1693653298; x=1694258098; darn=gnu.org; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=MassuJRHDU6rajJd/8mTsxi4RMaAsDnmGF0S/PjSjow=; b=XtDmlbiknFUCcvvsyKjEY4ynrLQQN7C8oO799okqn7zFHUG+cQLXpeDRWqhGF+2Ajk b3ZVEiIvJprDULfiCBlQzkWmhbW6MFcgBNvWV4RmDZWAa/1GPDCng5oX+4DX/E7B6TWH 8bmlS5UHv5a00f+8wVw0PPA4S6BRIzXYYOduz8rVXpl1WEjhnfVkbCxcvulSHaJn+eoT aWUWE0wyAFR0ziL5G3MxW0u4rGmqyG0/2z1HHifQxeSpnaWOzBcnDrMrpM9UkJQGjqzB I0o7mTDX9vdsizKQM7gw2ktnNHnMvyjwTtFVs72IvqThTaAcLHyigCn2D/3mcL3sVeth Hfzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1693653298; x=1694258098; h=in-reply-to:from:references:cc:to:content-language:subject :user-agent:mime-version:date:message-id:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=MassuJRHDU6rajJd/8mTsxi4RMaAsDnmGF0S/PjSjow=; b=FD8inMm5a0oC4XX800RJ/p2JGoYKmN/w9qeQC1dIsCZ4xM7rzoCei7f+IS0aaQZdCD M5r+ud2TrwkwL+GcdBXNcWTYT6e0/4QuF//iwlcd9oA5iPLyg2P2hKtb2ob5BaDCXqhL 9wsf/MxWZ7tIgECpGescI9eZiQDpNhxgGQM5f7uQ9oKO8pCnb8+v4uEkT4wzzvG96h0F tDB05NaH9bLLh70DCLYC5pt7IFer3DUS2Zh/jL2MTRqBAT2WHu5r+X4lfFz3orYtTFsu MoNuW5zWFk1T1pxZplSRKw86r5pu1ujCDs/5uOPrUt9bPmhdbIzcY7U0ZezW34eychaT liEw== X-Gm-Message-State: AOJu0YyN8RpFXnLtkiq0lftfgAnioqBXzisZ1eNefHyUnzB4MXL9q+uB IY2nwfGbp5t1zCxpokNXjS29S2wjH9k= X-Google-Smtp-Source: AGHT+IHPno4qeiYsRjVogYKRbSPoHBiwg9LVoefQXeYgV8VcyPyifLarLyz7x1fVEm6TjUXRvCO1hQ== X-Received: by 2002:a05:6808:284:b0:3a7:72e2:f6be with SMTP id z4-20020a056808028400b003a772e2f6bemr4543519oic.2.1693653297897; Sat, 02 Sep 2023 04:14:57 -0700 (PDT) Original-Received: from [192.168.0.234] ([152.168.142.156]) by smtp.gmail.com with ESMTPSA id o20-20020a0568080bd400b003a74933a1e2sm2988427oik.46.2023.09.02.04.14.54 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 02 Sep 2023 04:14:56 -0700 (PDT) Content-Language: en-US In-Reply-To: <83fs3wan1r.fsf@gnu.org> Received-SPF: pass client-ip=2607:f8b0:4864:20::232; envelope-from=maurooaranda@gmail.com; helo=mail-oi1-x232.google.com X-Spam_score_int: -35 X-Spam_score: -3.6 X-Spam_bar: --- X-Spam_report: (-3.6 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, NICE_REPLY_A=-1.473, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:309879 Archived-At: This is a multi-part message in MIME format. --------------7szE1BuS09WGSVRmsNX9q0ez Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 2/9/23 07:26, Eli Zaretskii wrote: >> Date: Sat, 2 Sep 2023 07:15:20 -0300 >> Cc: emacs-devel@gnu.org, drew.adams@oracle.com, bovine@cyberscientist.ca >> From: Mauro Aranda >> >> On 2/9/23 04:25, Eli Zaretskii wrote: >>  > Do you think the version you have is good enough to install, perhaps >>  > even on the emacs-29 release branch? >> >> I think is good enough, yes.  But I based the changes on what's on >> master, so I'll have to check if some text needs to be different for the >> release branch. >> >> I'll send the patch as soon as I do that. > > Thanks. Thanks to you for taking a look at this, really.  I'm just happy to be able to contribute something back to Emacs. As for the changes, I didn't need to adapt anything for the emacs-29 branch.  I attach a patch against it, in which I also incorporated the change suggested by Yuan Fu of moving the default widget to its own subsection.  My next step would be to come up with short examples demonstrating how to use the more important widgets and functions. Hopefully it doesn't take me too long. --------------7szE1BuS09WGSVRmsNX9q0ez Content-Type: text/x-patch; charset=UTF-8; name="0001-A-revision-to-the-Widget-manual.patch" Content-Disposition: attachment; filename="0001-A-revision-to-the-Widget-manual.patch" Content-Transfer-Encoding: base64 RnJvbSA1YTE5ZDRmZTRhNDhmMzhjM2JkZWU3ZWQ4ZWI5M2M3OGM1NDJiOWQ5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYXVybyBBcmFuZGEgPG1hdXJvb2FyYW5kYUBnbWFp bC5jb20+CkRhdGU6IFNhdCwgMiBTZXAgMjAyMyAwNzo1NToxMiAtMDMwMApTdWJqZWN0OiBb UEFUQ0hdIEEgcmV2aXNpb24gdG8gdGhlIFdpZGdldCBtYW51YWwKCiogZG9jL21pc2Mvd2lk Z2V0LnRleGkgKFdpZGdldHMgQmFzaWNzLCBXb3JraW5nIHdpdGggV2lkZ2V0cykKKFdpZGdl dHMgYW5kIHRoZSBCdWZmZXIsIFdpZGdldCBHYWxsZXJ5LCBDdXN0b21pemF0aW9uKTogTmV3 IGNoYXB0ZXJzLgooQmFzaWMgVHlwZXMsIFNleHAgVHlwZXMpOiBEZW1vdGUgdG8gc3Vic2Vj dGlvbnMuCihXaWRnZXQgQnJvd3Nlcik6IFJlbmFtZSB0byBJbnNwZWN0aW5nIFdpZGdldHMu CihXaWRnZXQgUHJvcGVydGllcyk6IFJlbW92ZS4KCihUb3ApOiBBZGFwdCBtZW51IHRvIGNo YW5nZXMuCihJbnRyb2R1Y3Rpb24pOiBSZWFycmFuZ2UgdGV4dC4gIE1vdmUgd2FybmluZ3Mg dG8gYSBiZXR0ZXIgcGxhY2UsIGFuZAp1c2VyIG9wdGlvbnMgdG8gdGhlIEN1c3RvbWl6YXRp b24gY2hhcHRlci4KKFVzZXIgSW50ZXJmYWNlKTogRG9uJ3QgZnVsbHkgZGVzY3JpYmUgY29t bWFuZHMgYW5kIGN1c3RvbWl6YXRpb24Kb3B0aW9ucyBoZXJlLgooU2V0dGluZyBVcCB0aGUg QnVmZmVyKTogRXhwYW5kIG9uIHdpZGdldCBjcmVhdGlvbiBwcm9jZXNzIGFuZCBhZGQKZG9j dW1lbnRhdGlvbiBmb3IgdXNlZnVsIGZ1bmN0aW9ucyB3aGljaCBkZWFsIHdpdGgKY3JlYXRp b24vY29udmVyc2lvbi4KKERlZmluaW5nIE5ldyBXaWRnZXRzKTogRXhwYW5kIHRoZSBkb2N1 bWVudGF0aW9uIG9uIGRlZmluZS13aWRnZXQuCkFsbCByZWxldmFudCBwcm9wZXJ0aWVzIG1v dmVkIHRvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZGVmYXVsdAp3aWRnZXQsIGluIFdpZGdl dCBHYWxsZXJ5LgooVXRpbGl0aWVzKTogQWRkIHNvbWUgbW9yZSB1c2VmdWwgZnVuY3Rpb25z IG5vdCBwcmV2aW91c2x5IGRvY3VtZW50ZWQuCihXaXNobGlzdCk6IFJlbW92ZSBvdXQtb2Yt ZGF0ZSBpdGVtcy4KLS0tCiBkb2MvbWlzYy93aWRnZXQudGV4aSB8IDI3NzkgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjA3 MCBpbnNlcnRpb25zKCspLCA3MDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL21p c2Mvd2lkZ2V0LnRleGkgYi9kb2MvbWlzYy93aWRnZXQudGV4aQppbmRleCAxM2IzN2FiNWI1 NC4uZWI0MTFmMjljNWMgMTAwNjQ0Ci0tLSBhL2RvYy9taXNjL3dpZGdldC50ZXhpCisrKyBi L2RvYy9taXNjL3dpZGdldC50ZXhpCkBAIC00OSwxNCArNDksMTYgQEAgVG9wCiAqIEludHJv ZHVjdGlvbjo6CiAqIFVzZXIgSW50ZXJmYWNlOjoKICogUHJvZ3JhbW1pbmcgRXhhbXBsZTo6 CisqIFdpZGdldHMgQmFzaWNzOjoKICogU2V0dGluZyBVcCB0aGUgQnVmZmVyOjoKLSogQmFz aWMgVHlwZXM6OgotKiBTZXhwIFR5cGVzOjoKLSogV2lkZ2V0IFByb3BlcnRpZXM6OgorKiBX b3JraW5nIHdpdGggV2lkZ2V0czo6CisqIFdpZGdldHMgYW5kIHRoZSBCdWZmZXI6OgorKiBX aWRnZXQgR2FsbGVyeTo6CiAqIERlZmluaW5nIE5ldyBXaWRnZXRzOjoKLSogV2lkZ2V0IEJy b3dzZXI6OgorKiBJbnNwZWN0aW5nIFdpZGdldHM6OgogKiBXaWRnZXQgTWlub3IgTW9kZTo6 CiAqIFV0aWxpdGllczo6CisqIEN1c3RvbWl6YXRpb246OgogKiBXaWRnZXQgV2lzaGxpc3Q6 OgogKiBHTlUgRnJlZSBEb2N1bWVudGF0aW9uIExpY2Vuc2U6OgogKiBJbmRleDo6CkBAIC02 OCw3ICs3MCw3IEBAIEludHJvZHVjdGlvbgogTW9zdCBncmFwaGljYWwgdXNlciBpbnRlcmZh Y2UgdG9vbGtpdHMgcHJvdmlkZSBhIG51bWJlciBvZiBzdGFuZGFyZAogdXNlciBpbnRlcmZh Y2UgY29udHJvbHMgKHNvbWV0aW1lcyBrbm93biBhcyBgYHdpZGdldHMnJyBvciBgYGdhZGdl dHMnJykuCiBFbWFjcyBkb2Vzbid0IHJlYWxseSBzdXBwb3J0IGFueXRoaW5nIGxpa2UgdGhp cywgZXhjZXB0IGZvciBhbgotaW5jcmVkaWJseSBwb3dlcmZ1bCB0ZXh0IGBgd2lkZ2V0Licn ICBPbiB0aGUgb3RoZXIgaGFuZCwgRW1hY3MgZG9lcworaW5jcmVkaWJseSBwb3dlcmZ1bCB0 ZXh0IGBgd2lkZ2V0JycuICBPbiB0aGUgb3RoZXIgaGFuZCwgRW1hY3MgZG9lcwogcHJvdmlk ZSB0aGUgbmVjZXNzYXJ5IHByaW1pdGl2ZXMgdG8gaW1wbGVtZW50IG1hbnkgb3RoZXIgd2lk Z2V0cwogd2l0aGluIGEgdGV4dCBidWZmZXIuICBUaGUgQGNvZGV7d2lkZ2V0fSBwYWNrYWdl IHNpbXBsaWZpZXMgdGhpcyB0YXNrLgogCkBAIC04NSwxMyArODcsMTMgQEAgSW50cm9kdWN0 aW9uCiBAaXRlbSBlZGl0YWJsZS1maWVsZAogQW4gZWRpdGFibGUgdGV4dCBmaWVsZC4gIEl0 IGNhbiBiZSBlaXRoZXIgdmFyaWFibGUgb3IgZml4ZWQgbGVuZ3RoLgogQGl0ZW0gbWVudS1j aG9pY2UKLUFsbG93cyB0aGUgdXNlciB0byBjaG9vc2Ugb25lIG9mIG11bHRpcGxlIG9wdGlv bnMgZnJvbSBhIG1lbnUsIGVhY2gKLW9wdGlvbiBpcyBpdHNlbGYgYSB3aWRnZXQuICBPbmx5 IHRoZSBzZWxlY3RlZCBvcHRpb24gd2lsbCBiZSB2aXNpYmxlIGluCi10aGUgYnVmZmVyLgor QWxsb3dzIHRoZSB1c2VyIHRvIGNob29zZSBvbmUgb2YgbXVsdGlwbGUgb3B0aW9ucyBmcm9t IGEgbWVudSwgd2hlcmUKK2VhY2ggb3B0aW9uIGlzIGl0c2VsZiBhIHdpZGdldC4gIE9ubHkg dGhlIHNlbGVjdGVkIG9wdGlvbiBpcyB2aXNpYmxlCitpbiB0aGUgYnVmZmVyLgogQGl0ZW0g cmFkaW8tYnV0dG9uLWNob2ljZQogQWxsb3dzIHRoZSB1c2VyIHRvIGNob29zZSBvbmUgb2Yg bXVsdGlwbGUgb3B0aW9ucyBieSBhY3RpdmF0aW5nIHJhZGlvCi1idXR0b25zLiAgVGhlIG9w dGlvbnMgYXJlIGltcGxlbWVudGVkIGFzIHdpZGdldHMuICBBbGwgb3B0aW9ucyB3aWxsIGJl Ci12aXNpYmxlIGluIHRoZSBidWZmZXIuCitidXR0b25zLiAgVGhlIG9wdGlvbnMgYXJlIGlt cGxlbWVudGVkIGFzIHdpZGdldHMuICBBbGwgb3B0aW9ucyBhcmUKK3Zpc2libGUgaW4gdGhl IGJ1ZmZlciwgd2l0aCB0aGUgc2VsZWN0ZWQgb25lIG1hcmtlZCBhcyBjaG9zZW4uCiBAaXRl bSBpdGVtCiBBIHNpbXBsZSBjb25zdGFudCB3aWRnZXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBp biB0aGUgQGNvZGV7bWVudS1jaG9pY2V9IGFuZAogQGNvZGV7cmFkaW8tYnV0dG9uLWNob2lj ZX0gd2lkZ2V0cy4KQEAgLTEzNyw5ICsxMzksOSBAQCBJbnRyb2R1Y3Rpb24KIFBhY2thZ2Vz IHVzaW5nIHRoZSBsaWJyYXJ5IGdldCBhIHVuaWZvcm0gbG9vaywgbWFraW5nIHRoZW0gZWFz aWVyIGZvcgogdGhlIHVzZXIgdG8gbGVhcm4uCiBAaXRlbQotQXMgc3VwcG9ydCBmb3IgZW1i ZWRkZWQgZ3JhcGhpY3MgaW1wcm92ZSwgdGhlIHdpZGdldCBsaWJyYXJ5IHdpbGwgYmUKK0Fz IHN1cHBvcnQgZm9yIGVtYmVkZGVkIGdyYXBoaWNzIGltcHJvdmUsIHRoZSBXaWRnZXQgbGli cmFyeSB3aWxsIGJlCiBleHRlbmRlZCB0byB1c2UgdGhlIEdVSSBmZWF0dXJlcy4gIFRoaXMg bWVhbnMgdGhhdCB5b3VyIGNvZGUgdXNpbmcgdGhlCi13aWRnZXQgbGlicmFyeSB3aWxsIGFs c28gdXNlIHRoZSBuZXcgZ3JhcGhpYyBmZWF0dXJlcyBhdXRvbWF0aWNhbGx5LgorV2lkZ2V0 IGxpYnJhcnkgd2lsbCBhbHNvIHVzZSB0aGUgbmV3IGdyYXBoaWMgZmVhdHVyZXMgYXV0b21h dGljYWxseS4KIEBlbmQgZW51bWVyYXRlCiAKIEBub2RlIFVzZXIgSW50ZXJmYWNlCkBAIC0y MDEsMTIgKzIwMyw2IEBAIFVzZXIgSW50ZXJmYWNlCiAKIEVkaXRhYmxlIHRleHQgZmllbGRz IGFyZSBjcmVhdGVkIGJ5IHRoZSBAY29kZXtlZGl0YWJsZS1maWVsZH0gd2lkZ2V0LgogCi1A c3Ryb25ne1dhcm5pbmc6fSBJbiBhbiBAY29kZXtlZGl0YWJsZS1maWVsZH0gd2lkZ2V0LCB0 aGUgZWRpdGFibGUKLWZpZWxkIG11c3Qgbm90IGJlIGFkamFjZW50IHRvIGFub3RoZXIgd2lk Z2V0LS0tdGhhdCB3b24ndCB3b3JrLgotWW91IG11c3QgcHV0IHNvbWUgdGV4dCBpbiBiZXR3 ZWVuLiAgRWl0aGVyIG1ha2UgdGhpcyB0ZXh0IHBhcnQgb2YKLXRoZSBAY29kZXtlZGl0YWJs ZS1maWVsZH0gd2lkZ2V0IGl0c2VsZiwgb3IgaW5zZXJ0IGl0IHdpdGgKLUBjb2Rle3dpZGdl dC1pbnNlcnR9LgotCiBUaGUgQGNvZGV7OmZvcm1hdH0ga2V5d29yZCBpcyB1c2VmdWwgZm9y IGdlbmVyYXRpbmcgdGhlIG5lY2Vzc2FyeQogdGV4dDsgZm9yIGluc3RhbmNlLCBpZiB5b3Ug Z2l2ZSBpdCBhIHZhbHVlIG9mIEBjb2RleyJOYW1lOiAldiAifSwKIHRoZSBAc2FtcHtOYW1l OiB9IHBhcnQgd2lsbCBwcm92aWRlIHRoZSBuZWNlc3Nhcnkgc2VwYXJhdGluZyB0ZXh0CkBA IC0yMTUsMTcgKzIxMSw5IEBAIFVzZXIgSW50ZXJmYWNlCiBAY29kZXs6c2l6ZX0ga2V5d29y ZCwgdGhlIGZpZWxkIHdpbGwgZXh0ZW5kIHRvIHRoZSBlbmQgb2YgdGhlCiBsaW5lLCBhbmQg dGhlIHRlcm1pbmF0aW5nIG5ld2xpbmUgd2lsbCBwcm92aWRlIHNlcGFyYXRpb24gYWZ0ZXIu CiAKLUBzdHJvbmd7V2FybmluZzp9IEluIGFuIEBjb2Rle2VkaXRhYmxlLWZpZWxkfSB3aWRn ZXQsIHRoZSBAc2FtcHsldn0gZXNjYXBlCi1tdXN0IGJlIHByZWNlZGVkIGJ5IHNvbWUgb3Ro ZXIgdGV4dCBpbiB0aGUgQGNvZGV7OmZvcm1hdH0gc3RyaW5nCi0oaWYgc3BlY2lmaWVkKS4K LQogVGhlIGVkaXRpbmcgdGV4dCBmaWVsZHMgYXJlIGhpZ2hsaWdodGVkIHdpdGggdGhlCiBA Y29kZXt3aWRnZXQtZmllbGQtZmFjZX0gZmFjZSwgbWFraW5nIHRoZW0gZWFzeSB0byBmaW5k LgogCi1AZGVmZm4gRmFjZSB3aWRnZXQtZmllbGQtZmFjZQotRmFjZSB1c2VkIGZvciBvdGhl ciBlZGl0aW5nIGZpZWxkcy4KLUBlbmQgZGVmZm4KLQogQHNlY3Rpb24gQnV0dG9ucwogCiBA Y2luZGV4IHdpZGdldCBidXR0b25zCkBAIC0yMzMsMjQgKzIyMSw5IEBAIFVzZXIgSW50ZXJm YWNlCiBTb21lIHBvcnRpb25zIG9mIHRoZSBidWZmZXIgaGF2ZSBhbiBhc3NvY2lhdGVkIEBk Zm57YWN0aW9ufSwgd2hpY2ggY2FuCiBiZSBAZGZue2ludm9rZWR9IGJ5IGEgc3RhbmRhcmQg a2V5IG9yIG1vdXNlIGNvbW1hbmQuICBUaGVzZSBwb3J0aW9ucwogYXJlIGNhbGxlZCBAZGZu e2J1dHRvbnN9LiAgVGhlIGRlZmF1bHQgY29tbWFuZHMgZm9yIGFjdGl2YXRpbmcgYSBidXR0 b24KLWFyZToKLQotQHRhYmxlIEBrYmQKLUBpdGVtIEBrZXl7UkVUfQotQGRlZmZuIENvbW1h bmQgd2lkZ2V0LWJ1dHRvbi1wcmVzcyBAdmFye3Bvc30gJm9wdGlvbmFsIEB2YXJ7ZXZlbnR9 Ci1JbnZva2UgdGhlIGJ1dHRvbiBhdCBAdmFye3Bvc30sIGRlZmF1bHRpbmcgdG8gcG9pbnQu Ci1JZiBwb2ludCBpcyBub3QgbG9jYXRlZCBvbiBhIGJ1dHRvbiwgaW52b2tlIHRoZSBiaW5k aW5nIGluCi1AY29kZXt3aWRnZXQtZ2xvYmFsLW1hcH0gKGJ5IGRlZmF1bHQgdGhlIGdsb2Jh bCBtYXApLgotQGVuZCBkZWZmbgotCi1Aa2luZGV4IG1vdXNlLTIgQHJ7KG9uIGJ1dHRvbiB3 aWRnZXRzfSkKLUBpdGVtIG1vdXNlLTIKLUBkZWZmbiBDb21tYW5kIHdpZGdldC1idXR0b24t Y2xpY2sgQHZhcntldmVudH0KLUludm9rZSB0aGUgYnV0dG9uIGF0IHRoZSBsb2NhdGlvbiBv ZiB0aGUgbW91c2UgcG9pbnRlci4gIElmIHRoZSBtb3VzZQotcG9pbnRlciBpcyBsb2NhdGVk IGluIGFuIGVkaXRhYmxlIHRleHQgZmllbGQsIGludm9rZSB0aGUgYmluZGluZyBpbgotQGNv ZGV7d2lkZ2V0LWdsb2JhbC1tYXB9IChieSBkZWZhdWx0IHRoZSBnbG9iYWwgbWFwKS4KLUBl bmQgZGVmZm4KLUBlbmQgdGFibGUKK2FyZSBAY29kZXt3aWRnZXQtYnV0dG9uLXByZXNzfSBh bmQgQGNvZGV7d2lkZ2V0LWJ1dHRvbi1jbGlja30uICBUaGUKK3VzZXIgdHlwaWNhbGx5IGlu dGVyYWN0cyB3aXRoIHRoZSBidXR0b25zIHdpdGggYSBrZXksIGxpa2UgQGtleXtSRVR9LAor b3Igd2l0aCB0aGUgbW91c2UgYnV0dG9ucy4KIAogVGhlcmUgYXJlIHNldmVyYWwgZGlmZmVy ZW50IGtpbmQgb2YgYnV0dG9ucywgYWxsIG9mIHdoaWNoIGFyZSBwcmVzZW50IGluCiB0aGUg ZXhhbXBsZToKQEAgLTI4NiwzMyArMjU5LDE1IEBAIFVzZXIgSW50ZXJmYWNlCiBkaXNwbGF5 ZWQgYXMgR1VJIGJ1dHRvbnMgd2hlbiBwb3NzaWJsZS4KIEBlbmQgdGFibGUKIAotVG8gbWFr ZSB0aGVtIGVhc2llciB0byBsb2NhdGUsIGJ1dHRvbnMgYXJlIGVtcGhhc2l6ZWQgaW4gdGhl IGJ1ZmZlci4KLQotQGRlZmZuIEZhY2Ugd2lkZ2V0LWJ1dHRvbi1mYWNlCi1GYWNlIHVzZWQg Zm9yIGJ1dHRvbnMuCi1AZW5kIGRlZmZuCi0KLUBkZWZvcHQgd2lkZ2V0LW1vdXNlLWZhY2UK LUZhY2UgdXNlZCBmb3IgaGlnaGxpZ2h0aW5nIGEgYnV0dG9uIHdoZW4gdGhlIG1vdXNlIHBv aW50ZXIgbW92ZXMgYWNyb3NzCi1pdC4KLUBlbmQgZGVmb3B0CitUbyBtYWtlIHRoZW0gZWFz aWVyIHRvIGxvY2F0ZSwgYnV0dG9ucyBhcmUgZW1waGFzaXplZCBpbiB0aGUgYnVmZmVyCit3 aXRoIGEgZGlzdGluY3RpdmUgZmFjZSwgbGlrZSBAY29kZXt3aWRnZXQtYnV0dG9uLWZhY2V9 IG9yCitAY29kZXt3aWRnZXQtbW91c2UtZmFjZX0uCiAKIEBzZWN0aW9uIE5hdmlnYXRpb24K IAogWW91IGNhbiB1c2UgYWxsIHRoZSBub3JtYWwgRW1hY3MgY29tbWFuZHMgdG8gbW92ZSBh cm91bmQgaW4gYSBmb3JtCi1idWZmZXIsIHBsdXMgeW91IHdpbGwgaGF2ZSB0aGVzZSBhZGRp dGlvbmFsIGNvbW1hbmRzOgotCi1AdGFibGUgQGtiZAotQGl0ZW0gQGtleXtUQUJ9Ci1AZGVm Zm4gQ29tbWFuZCB3aWRnZXQtZm9yd2FyZCAmb3B0aW9uYWwgY291bnQKLU1vdmUgcG9pbnQg QHZhcntjb3VudH0gYnV0dG9ucyBvciBlZGl0aW5nIGZpZWxkcyBmb3J3YXJkLgotQGVuZCBk ZWZmbgotQGl0ZW0gQGtiZHtNLUBrZXl7VEFCfX0KLUBpdGVteCBAa2Jke1MtQGtleXtUQUJ9 fQotQGRlZmZuIENvbW1hbmQgd2lkZ2V0LWJhY2t3YXJkICZvcHRpb25hbCBjb3VudAotTW92 ZSBwb2ludCBAdmFye2NvdW50fSBidXR0b25zIG9yIGVkaXRpbmcgZmllbGRzIGJhY2t3YXJk LgotQGVuZCBkZWZmbgotQGVuZCB0YWJsZQorYnVmZmVyLCBwbHVzIHlvdSB3aWxsIGhhdmUg dGhlc2UgYWRkaXRpb25hbCBjb21tYW5kcyB0byBuYXZpZ2F0ZSBmcm9tCit3aWRnZXQgdG8g d2lkZ2V0OiBAY29kZXt3aWRnZXQtZm9yd2FyZH0gYW5kIEBjb2Rle3dpZGdldC1iYWNrd2Fy ZH0uCiAKIEBub2RlIFByb2dyYW1taW5nIEV4YW1wbGUKIEBjaGFwdGVyIFByb2dyYW1taW5n IEV4YW1wbGUKQEAgLTQxNCwzMTUgKzM2OSwxMDUwIEBAIFByb2dyYW1taW5nIEV4YW1wbGUK ICAgKHdpZGdldC1zZXR1cCkpCiBAZW5kIGxpc3AKIAorQG5vZGUgV2lkZ2V0cyBCYXNpY3MK K0BjaGFwdGVyIFdpZGdldHMgQmFzaWNzCitAY2luZGV4IHdpZGdldCBvYmplY3QKK1RoZSBX aWRnZXQgTGlicmFyeSBkZWFscyB3aXRoIHdpZGdldHMgb2JqZWN0cy4gIEEgd2lkZ2V0IG9i amVjdCBoYXMKK3Byb3BlcnRpZXMgd2hvc2UgdmFsdWUgbWF5IGJlIGFueXRoaW5nLCBiZSBp dCBudW1iZXJzLCBzdHJpbmdzLAorc3ltYm9scywgZnVuY3Rpb25zLCBldGMuICBUaG9zZSBw cm9wZXJ0aWVzIGFyZSByZWZlcnJlZCB0byBhcyBrZXl3b3JkcworYW5kIGFyZSByZXNwb25z aWJsZSBmb3IgdGhlIHdheSBhIHdpZGdldCBpcyByZXByZXNlbnRlZCBpbiBhIGJ1ZmZlciwK K2FuZCBjb250cm9sIHRoZSB3YXkgYSB1c2VyIG9yIGEgcHJvZ3JhbSBjYW4gaW50ZXJhY3Qg d2l0aCBpdC4KKworQGNpbmRleCB3aWRnZXQgaW5oZXJpdGFuY2UKK1RoZSBsaWJyYXJ5IGRl ZmluZXMgc2V2ZXJhbCB3aWRnZXQgdHlwZXMsIGFuZCBnaXZlcyB5b3UgYSB3YXkgdG8KK2Rl ZmluZSBuZXcgdHlwZXMgYXMgd2VsbC4gIEluIGFkZGl0aW9uLCB3aWRnZXRzIGNhbiBkZXJp dmUgZnJvbSBvdGhlcgordHlwZXMsIGNyZWF0aW5nIGEgc29ydCBvZiB3aWRnZXQgaW5oZXJp dGFuY2UuICBJbiBmYWN0LCBhbGwgd2lkZ2V0cworZGVmaW5lZCBpbiB0aGUgV2lkZ2V0IExp YnJhcnkgc2hhcmUgYSBjb21tb24gcGFyZW50LCB0aGUgQGRmbntkZWZhdWx0fQord2lkZ2V0 LiAgSW4gdGhpcyBtYW51YWwsIHdoZW4gd2UgdGFsayBhYm91dCBhIGRlZmF1bHQgYmVoYXZp b3IsIHdlCit1c3VhbGx5IG1lYW4gdGhlIGJlaGF2aW9yIGFzIGRlZmluZWQgYnkgdGhpcyBA Y29kZXtkZWZhdWx0fSB3aWRnZXQuCitAeHJlZntXaWRnZXQgR2FsbGVyeX0sIGZvciBhIGRl c2NyaXB0aW9uIG9mIGVhY2ggZGVmaW5lZCB3aWRnZXQuCisKK0RlZmluaW5nIGEgbmV3IHR5 cGUgdGhhdCBkZXJpdmVzIGZyb20gYSBwcmV2aW91cyBvbmUgaXMgbm90IG1hbmRhdG9yeQor dG8gY3JlYXRlIHdpZGdldHMgdGhhdCB3b3JrIHZlcnkgZGlmZmVyZW50IGZyb20gYSBzcGVj aWZpZWQgdHlwZS4KK1doZW4gY3JlYXRpbmcgYSB3aWRnZXQsIHlvdSBjYW4gb3ZlcnJpZGUg YW55IGRlZmF1bHQgcHJvcGVydHksCitpbmNsdWRpbmcgZnVuY3Rpb25zLCB0aGF0IGNvbnRy b2wgdGhlIHdpZGdldC4gIFRoYXQgaXMsIHlvdSBjYW4KK3NwZWNpYWxpemUgYSB3aWRnZXQg b24gY3JlYXRpb24sIHdpdGhvdXQgaGF2aW5nIHRvIGRlZmluZSBpdCBhcyBhIG5ldwordHlw ZSBvZiB3aWRnZXQuCisKK0luIGFkZGl0aW9uIHRvIHRoZSBmdW5jdGlvbiBmb3IgZGVmaW5p bmcgYSB3aWRnZXQsIHRoaXMgbGlicmFyeQorcHJvdmlkZXMgZnVuY3Rpb25zIHRvIGNyZWF0 ZSB3aWRnZXRzLCBxdWVyeSBhbmQgY2hhbmdlIGl0cyBwcm9wZXJ0aWVzLAorcmVzcG9uZCB0 byB1c2VyIGV2ZW50cyBhbmQgZGVzdHJveSB0aGVtLiAgVGhlIGZvbGxvd2luZyBzZWN0aW9u cworZGVzY3JpYmUgdGhlbS4KKworQGNpbmRleCB3aWRnZXQgdmFsdWUKK09uZSBpbXBvcnRh bnQgcHJvcGVydHkgb2YgYSB3aWRnZXQgaXMgaXRzIEBkZm57dmFsdWV9LiAgQWxsIHdpZGdl dHMKK21heSBoYXZlIGEgdmFsdWUsICB3aGljaCBpcyBzdG9yZWQgaW4gYSBzby1jYWxsZWQg QGRmbntpbnRlcm5hbCBmb3JtYXR9LgorRm9yIHRoZSByZXN0IG9mIEVtYWNzLCB0aGUgd2lk Z2V0IHByZXNlbnRzIGl0cyB2YWx1ZSBpbiBhIHNvLWNhbGxlZAorQGRmbntleHRlcm5hbCBm b3JtYXR9LiAgQm90aCBmb3JtYXRzIGNhbiBiZSBlcXVhbCBvciBkaWZmZXJlbnQsIGFuZAor ZWFjaCB3aWRnZXQgaXMgcmVzcG9uc2libGUgZm9yIGRlZmluaW5nIGhvdyB0aGUgY29udmVy c2lvbiBiZXR3ZWVuCitlYWNoIGZvcm1hdCBzaG91bGQgaGFwcGVuLgorCitAYyBGSVhNRTog QnJpZWZseSBkZXNjcmliZSBpbmxpbmUgd2lkZ2V0cz8KK0BjIFRoZSBpbmxpbmUgY29uY2Vw dCBpcyBkZXNjcmliZWQgZWxzZXdoZXJlLCBhbmQgaXQncyBkaWZmaWN1bHQgdG8KK0BjIGRl c2NyaWJlLgorCitUaGUgdmFsdWUgcHJvcGVydHkgaXMgYW4gaW1wb3J0YW50IHByb3BlcnR5 IGZvciBhbG1vc3QgYWxsIHdpZGdldHMsCithbmQgcGVyaGFwcyBtb3JlIGltcG9ydGFudCBm b3IgQGNvZGV7ZWRpdGFibGUtZmllbGR9IHdpZGdldHMuICBUaGlzCit0eXBlIG9mIHdpZGdl dHMgYWxsb3cgdGhlIHVzZXIgdG8gZWRpdCB0aGVtIHZpYSB0aGUgdXN1YWwgZWRpdGluZwor Y29tbWFuZHMgaW4gRW1hY3MuICBUaGV5IGNhbiBhbHNvIGJlIGVkaXRlZCBwcm9ncmFtbWF0 aWNhbGx5LgorQHN0cm9uZ3tJbXBvcnRhbnQ6fSBZb3UgQGVtcGh7bXVzdH0gY2FsbCBAY29k ZXt3aWRnZXQtc2V0dXB9IGFmdGVyCittb2RpZnlpbmcgdGhlIHZhbHVlIG9mIGEgd2lkZ2V0 IGJlZm9yZSB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIGVkaXQgdGhlCit3aWRnZXQgYWdhaW4u ICBJdCBpcyBlbm91Z2ggdG8gY2FsbCBAY29kZXt3aWRnZXQtc2V0dXB9IG9uY2UgaWYgeW91 Cittb2RpZnkgbXVsdGlwbGUgd2lkZ2V0cy4gIFRoaXMgaXMgY3VycmVudGx5IG9ubHkgbmVj ZXNzYXJ5IGlmIHRoZSB3aWRnZXQKK2NvbnRhaW5zIGFuIGVkaXRpbmcgZmllbGQsIGJ1dCBt YXkgYmUgbmVjZXNzYXJ5IGZvciBvdGhlciB3aWRnZXRzIGluIHRoZQorZnV0dXJlLgorCitA Y2luZGV4IHdpZGdldCBwcm9wZXJ0aWVzCitJZiB5b3VyIGFwcGxpY2F0aW9uIG5lZWRzIHRv IGFzc29jaWF0ZSBzb21lIGluZm9ybWF0aW9uIHdpdGggdGhlIHdpZGdldAorb2JqZWN0cywg Zm9yIGV4YW1wbGUgYSByZWZlcmVuY2UgdG8gdGhlIGl0ZW0gYmVpbmcgZWRpdGVkLCBpdCBj YW4gYmUKK2RvbmUgd2l0aCB0aGUgQGNvZGV7d2lkZ2V0LXB1dH0gYW5kIEBjb2Rle3dpZGdl dC1nZXR9IGZ1bmN0aW9ucy4gIFRoZQorcHJvcGVydHkgbmFtZXMsIGFzIHNob3duLCBhcmUg a2V5d29yZHMsIHNvIHRoZXkgbXVzdCBiZWdpbiB3aXRoIGEKK0BzYW1wezp9LgorCiBAbm9k ZSBTZXR0aW5nIFVwIHRoZSBCdWZmZXIKIEBjaGFwdGVyIFNldHRpbmcgVXAgdGhlIEJ1ZmZl cgorQGNpbmRleCB3aWRnZXQgY3JlYXRpb24sIHdpZGdldCBjb252ZXJzaW9uCitUbyBzaG93 IHRoZSB3aWRnZXRzIGluIGEgYnVmZmVyLCB5b3UgaGF2ZSB0byBjcmVhdGUgdGhlbS4gIFdp ZGdldAorY3JlYXRpb24gaXMgYWN0dWFsbHkgYSB0d28tc3RlcCBwcm9jZXNzOiBjb252ZXJz aW9uIGFuZCBjcmVhdGlvbiBwZXIKK3NlLiAgV2l0aCBzaW1wbGUgcHJvamVjdHMsIHVzdWFs bHkgdGhlIGNvbnZlcnNpb24gc3RlcCBpc24ndCByZWFsbHkKK2ltcG9ydGFudCwgYW5kIHlv dSBvbmx5IGNhcmUgYWJvdXQgd2lkZ2V0IGNyZWF0aW9uLCBzbyBmZWVsIGZyZWUgdG8KK3Nr aXAgdGhlIGNvbnZlcnNpb24gZGVzY3JpcHRpb24gdW50aWwgeW91IHJlYWxseSBuZWVkIHRv IGtub3cgaXQuCisKK1dpZGdldCBjb252ZXJzaW9uIGlzIHRoZSBwcm9jZXNzIHRoYXQgaW52 b2x2ZXMgdGFraW5nIGEgd2lkZ2V0CitzcGVjaWZpY2F0aW9uIGFuZCB0cmFuc2Zvcm1pbmcg aXQgaW50byBhIEBkZm57d2lkZ2V0fSBvYmplY3QsIHN1aXRhYmxlCit0byBiZSBjcmVhdGVk LCBxdWVyaWVkIGFuZCBtYW5pcHVsYXRlZCB3aXRoIG90aGVyIHdpZGdldCBmdW5jdGlvbnMu CitXaWRnZXQgY3JlYXRpb24gaXMgdGhlIHByb2Nlc3MgdGhhdCB0YWtlcyBhIHdpZGdldCBv YmplY3QgYW5kIGFjdHVhbGx5CitpbnNlcnRzIGl0IGluIHRoZSBidWZmZXIuCisKK1RoZSBz aW1wbGVzdCBmdW5jdGlvbiB0byBjcmVhdGUgYSB3aWRnZXQgaXMgQGNvZGV7d2lkZ2V0LWNy ZWF0ZX0sIHdoaWNoCitnZXRzIGEgd2lkZ2V0IHNwZWNpZmljYXRpb24gYW5kIHJldHVybnMg YSB3aWRnZXQgb2JqZWN0LgorCitAZGVmdW4gd2lkZ2V0LWNyZWF0ZSB0eXBlIFsga2V5d29y ZCBhcmd1bWVudCBdQGRvdHN7fSBhcmdzCitDcmVhdGUgYW5kIHJldHVybiBhIHdpZGdldCBv ZiB0eXBlIEB2YXJ7dHlwZX0sIGNvbnZlcnRpbmcgaXQuCisKK0B2YXJ7dHlwZX0gaXMgYSBz eW1ib2wgdGhhdCBzcGVjaWZpZXMgYSB3aWRnZXQgdHlwZS4gIEB2YXJ7a2V5d29yZH0KK21h eSBiZSBvbmUgb2YgdGhlIHByb3BlcnRpZXMgc3VwcG9ydGVkIGJ5IHRoZSB3aWRnZXQgdHlw ZSwgYW5kCitAdmFye2FyZ3VtZW50fSBzcGVjaWZ5IHRoZSB2YWx1ZSBmb3IgdGhhdCBwcm9w ZXJ0eS4gIFRoZXNlIGtleXdvcmQKK2FyZ3VtZW50cyBjYW4gYmUgdXNlZCB0byBvdmVyd3Jp dGUgdGhlIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHBhcnQKK29mIEB2YXJ7dHlwZX0g YnkgZGVmYXVsdCwgYXMgd2VsbCBhcyB0byBwcm92aWRlIG90aGVyIHByb3BlcnRpZXMgbm90 CitwcmVzZW50IGluIEB2YXJ7dHlwZX0gYnkgZGVmYXVsdC4gIEB2YXJ7YXJnc30gaG9sZHMg YWRkaXRpb25hbAoraW5mb3JtYXRpb24gZm9yIHRoZSBjcmVhdGlvbiBvZiBAdmFye3R5cGV9 IGFuZCBlYWNoIHdpZGdldCB0eXBlIGlzCityZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgdGhh dCBpbmZvcm1hdGlvbiBpbiBhIHNwZWNpZmljIHdheS4KKworVGhlIHN5bnRheCBmb3IgdGhl IEB2YXJ7dHlwZX0gYXJndW1lbnQgaXMgZGVzY3JpYmVkIGluIEByZWZ7V2lkZ2V0CitHYWxs ZXJ5fSwgYW5kIGluIG1vcmUgZGV0YWlsIGluIGV2ZXJ5IHdpZGdldCB3aGVyZSBpdCdzIHJl bGV2YW50LgorQGVuZCBkZWZ1bgorCitUaGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIGZvciBj cmVhdGluZyB3aWRnZXRzLCB1c2VmdWwgd2hlbiB5b3Ugd29yaword2l0aCBjb21wb3NpdGUg d2lkZ2V0cy4gIFRoYXQgaXMsIHdpZGdldHMgdGhhdCBhcmUgcGFydCBvZiBvdGhlcgord2lk Z2V0cy4KIAotV2lkZ2V0cyBhcmUgY3JlYXRlZCB3aXRoIEBjb2Rle3dpZGdldC1jcmVhdGV9 LCB3aGljaCByZXR1cm5zIGEKLUBkZm57d2lkZ2V0fSBvYmplY3QuICBUaGlzIG9iamVjdCBj YW4gYmUgcXVlcmllZCBhbmQgbWFuaXB1bGF0ZWQgYnkKLW90aGVyIHdpZGdldCBmdW5jdGlv bnMsIHVudGlsIGl0IGlzIGRlbGV0ZWQgd2l0aCBAY29kZXt3aWRnZXQtZGVsZXRlfS4KLUFm dGVyIHRoZSB3aWRnZXRzIGhhdmUgYmVlbiBjcmVhdGVkLCBAY29kZXt3aWRnZXQtc2V0dXB9 IG11c3QgYmUgY2FsbGVkCi10byBlbmFibGUgdGhlbS4KK0BkZWZ1biB3aWRnZXQtY3JlYXRl LWNoaWxkLWFuZC1jb252ZXJ0IHBhcmVudCB0eXBlICZyZXN0IGFyZ3MKK0NyZWF0ZSBhIHdp ZGdldCBvZiB0eXBlIEB2YXJ7dHlwZX0gYXMgYSBjaGlsZCBvZiBAdmFye3BhcmVudH0uCiAK LUBkZWZ1biB3aWRnZXQtY3JlYXRlIHR5cGUgWyBrZXl3b3JkIGFyZ3VtZW50IF1AZG90c3t9 Ci1DcmVhdGUgYW5kIHJldHVybiBhIHdpZGdldCBvZiB0eXBlIEB2YXJ7dHlwZX0uCi1UaGUg c3ludGF4IGZvciB0aGUgQHZhcnt0eXBlfSBhcmd1bWVudCBpcyBkZXNjcmliZWQgaW4gQHJl ZntCYXNpYyBUeXBlc30uCitCZWZvcmUgY3JlYXRpbmcgaXQsIGNvbnZlcnRzIEB2YXJ7dHlw ZX0gdXNpbmcgdGhlIGtleXdvcmQgYXJndW1lbnRzCitwcm92aWRlZCBpbiBAdmFye2FyZ3N9 LgorQGMgRklYTUU6IElzIHRoaXMgZGVzY3JpcHRpb24gdXNlZnVsPworQWRkcyB0aGUgQGNv ZGV7OmluZGVudH0gcHJvcGVydHksIHVubGVzcyBpdCBpcyBhbHJlYWR5IHByZXNlbnQsIGFu ZAorc2V0cyBpdCB0byB0aGUgc3VtIG9mIHRoZSB2YWx1ZXMgb2Y6IEBjb2RlezppbmRlbnR9 IGFuZCBAY29kZXs6b2Zmc2V0fQorZnJvbSBAdmFye3BhcmVudH0gYW5kIEBjb2RlezpleHRy YS1vZmZzZXR9IGZyb20gQHZhcnt0eXBlfS4KIAotVGhlIGtleXdvcmQgYXJndW1lbnRzIGNh biBiZSB1c2VkIHRvIG92ZXJ3cml0ZSB0aGUga2V5d29yZCBhcmd1bWVudHMKLXRoYXQgYXJl IHBhcnQgb2YgQHZhcnt0eXBlfS4KK1JldHVybnMgYSB3aWRnZXQgb2JqZWN0LCB3aXRoIHRo ZSBwcm9wZXJ0eSBAY29kZXs6cGFyZW50fSBzZXQgdG8KK0B2YXJ7UEFSRU5UfS4KIEBlbmQg ZGVmdW4KIAotQGRlZnVuIHdpZGdldC1kZWxldGUgd2lkZ2V0Ci1EZWxldGUgQHZhcnt3aWRn ZXR9IGFuZCByZW1vdmUgaXQgZnJvbSB0aGUgYnVmZmVyLgorQGRlZnVuIHdpZGdldC1jcmVh dGUtY2hpbGQgcGFyZW50IHR5cGUKK0NyZWF0ZSBhIHdpZGdldCBvZiB0eXBlIEB2YXJ7dHlw ZX0gYXMgYSBjaGlsZCBvZiBAdmFye3BhcmVudH0uCisKK1RoaXMgZnVuY3Rpb24gaXMgbGlr ZSBAY29kZXt3aWRnZXQtY3JlYXRlLWNoaWxkLWFuZC1jb252ZXJ0fSBidXQgaXQKK2RvZXNu J3QgY29udmVydCBAdmFye3R5cGV9LCBzbyBpdCBleHBlY3RzIGFuIGFscmVhZHkgY29udmVy dGVkIHdpZGdldC4KIEBlbmQgZGVmdW4KIAorQGRlZnVuIHdpZGdldC1jcmVhdGUtY2hpbGQt dmFsdWUgcGFyZW50IHR5cGUgdmFsdWUKK0NyZWF0ZSBhIHdpZGdldCBvZiB0eXBlIEB2YXJ7 dHlwZX0gYXMgYSBjaGlsZCBvZiBAdmFye3BhcmVudH0gd2l0aAordmFsdWUgQHZhcnt2YWx1 ZX0uCisKK1RoaXMgZnVuY3Rpb24gaXMgbGlrZSBAY29kZXt3aWRnZXQtY3JlYXRlLWNoaWxk fSwgYnV0IGl0IGxldHMgeW91CitzcGVjaWZ5IGEgdmFsdWUgZm9yIHRoZSB3aWRnZXQuCisK K0NvbnZlcnRzIEB2YXJ7dmFsdWV9IHRvIHRoZSBpbnRlcm5hbCBmb3JtYXQsIGFzIHNwZWNp ZmllZCBieQorQHZhcnt0eXBlfSwgYW5kIHN0b3JlcyBpdCBpbnRvIHRoZSBAY29kZXs6dmFs dWV9IHByb3BlcnR5IG9mIEB2YXJ7dHlwZX0uCitUaGF0IG1lYW5zLCBAdmFye3ZhbHVlfSBz aG91bGQgYmUgaW4gdGhlIGV4dGVybmFsIGZvcm1hdCwgYXMKK3NwZWNpZmllZCBieSBAdmFy e3R5cGV9LgorQGVuZCBkZWZ1bgorCitBbGwgdGhlc2UgY3JlYXRpbmcgZnVuY3Rpb25zIGRl c2NyaWJlZCBoZXJlIHVzZSB0aGUgZnVuY3Rpb24gc3RvcmVkIGluCit0aGUgQGNvZGV7OmNy ZWF0ZX0gcHJvcGVydHkuICBTbywgdG8gbW9kaWZ5IHRoZSBjcmVhdGlvbiBsb2dpYyBmb3Ig YQord2lkZ2V0LCB5b3UgY2FuIHByb3ZpZGUgYSBkaWZmZXJlbnQgQGNvZGV7OmNyZWF0ZX0g ZnVuY3Rpb24uCisKK1doZW4geW91J3JlIGRvbmUgY3JlYXRpbmcgd2lkZ2V0cyBhbmQgeW91 J3JlIHJlYWR5IGZvciB0aGUgdXNlciB0bworaW50ZXJhY3Qgd2l0aCB0aGUgYnVmZmVyLCB1 c2UgdGhlIGZ1bmN0aW9uIEBjb2Rle3dpZGdldC1zZXR1cH0uCisKIEBkZWZ1biB3aWRnZXQt c2V0dXAKLVNldCB1cCBhIGJ1ZmZlciB0byBzdXBwb3J0IHdpZGdldHMuCitTZXR1cCB0aGUg Y3VycmVudCBidWZmZXIsIHNvIHRoYXQgZWRpdGFibGUgd2lkZ2V0cyBjYW4gYmUgZWRpdGVk LgogCiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgY3JlYXRpbmcgYWxsIHRoZSB3aWRn ZXRzIGFuZCBiZWZvcmUgYWxsb3dpbmcKIHRoZSB1c2VyIHRvIGVkaXQgdGhlbS4KIEBlbmQg ZGVmdW4KIAotSWYgeW91IHdhbnQgdG8gaW5zZXJ0IHRleHQgb3V0c2lkZSB0aGUgd2lkZ2V0 cyBpbiB0aGUgZm9ybSwgdGhlCi1yZWNvbW1lbmRlZCB3YXkgdG8gZG8gdGhhdCBpcyB3aXRo IEBjb2Rle3dpZGdldC1pbnNlcnR9LgorQXMgbWVudGlvbmVkLCBhbGwgdGhlc2UgZnVuY3Rp b25zIHJldHVybiBhIHdpZGdldCBvYmplY3QuICBUaGF0IHdpZGdldAorb2JqZWN0IGNhbiBi ZSBxdWVyaWVkIGFuZCBtYW5pcHVsYXRlZCB3aXRoIHdpZGdldCBmdW5jdGlvbnMgdGhhdAor dGFrZSB3aWRnZXRzIGFzIGFyZ3VtZW50cywgdW50aWwgZGVsZXRpbmcgaXQgd2l0aCB0aGUg d2lkZ2V0cworZnVuY3Rpb25zIGF2YWlsYWJsZSB0byBkZWxldGUgd2lkZ2V0cy4gIEV2ZW4g aWYgeW91IGRvbid0IHNhdmUgdGhlCityZXR1cm5lZCB3aWRnZXQgb2JqZWN0LCB5b3Ugc3Rp bGwgY2FuIGludGVyYWN0IHByb2dyYW1tYXRpY2FsbHkgd2l0aAordGhlIHdpZGdldC4gIEB4 cmVme1dvcmtpbmcgd2l0aCBXaWRnZXRzfS4KIAotQGRlZnVuIHdpZGdldC1pbnNlcnQKLUlu c2VydCB0aGUgYXJndW1lbnRzLCBlaXRoZXIgc3RyaW5ncyBvciBjaGFyYWN0ZXJzLCBhdCBw b2ludC4KLVRoZSBpbnNlcnRlZCB0ZXh0IHdpbGwgYmUgcmVhZC1vbmx5LgorQGRlZnVuIHdp ZGdldC1kZWxldGUgd2lkZ2V0CitEZWxldGUgdGhlIHdpZGdldCBAdmFye3dpZGdldH0gYW5k IHJlbW92ZSBpdCBmcm9tIHRoZSBidWZmZXIuCiBAZW5kIGRlZnVuCiAKLVRoZXJlIGlzIGEg c3RhbmRhcmQgd2lkZ2V0IGtleW1hcCB3aGljaCB5b3UgbWlnaHQgZmluZCB1c2VmdWwuCitA ZGVmdW4gd2lkZ2V0LWNoaWxkcmVuLXZhbHVlLWRlbGV0ZSB3aWRnZXQKK0RlbGV0ZSBhbGwg Y2hpbGRyZW4gYW5kIGJ1dHRvbnMgaW4gd2lkZ2V0IEB2YXJ7d2lkZ2V0fS4KIAotQGZpbmRl eCB3aWRnZXQtYnV0dG9uLXByZXNzCi1AZmluZGV4IHdpZGdldC1idXR0b24tY2xpY2sKLUBk ZWZ2ciBDb25zdCB3aWRnZXQta2V5bWFwCi1Aa2V5e1RBQn0gYW5kIEBrYmR7Qy1Aa2V5e1RB Qn19IGFyZSBib3VuZCB0byBAY29kZXt3aWRnZXQtZm9yd2FyZH0gYW5kCi1AY29kZXt3aWRn ZXQtYmFja3dhcmR9LCByZXNwZWN0aXZlbHkuICBAa2V5e1JFVH0gYW5kIEBrYmR7bW91c2Ut Mn0KLWFyZSBib3VuZCB0byBAY29kZXt3aWRnZXQtYnV0dG9uLXByZXNzfSBhbmQKLUBjb2Rl e3dpZGdldC1idXR0b24tY2xpY2t9LgotQGVuZCBkZWZ2cgorVGhpcyBmdW5jdGlvbiBkb2Vz IG5vdCBkZWxldGUgQHZhcnt3aWRnZXR9IGl0c2VsZiwgb25seSB0aGUgd2lkZ2V0cworc3Rv cmVkIGluIHRoZSBAY29kZXs6Y2hpbGRyZW59IGFuZCBAY29kZXs6YnV0dG9uc30gcHJvcGVy dGllcy4gIEl0CithbHNvIHNldHMgdGhvc2UgcHJvcGVydGllcyB0byBAY29kZXtuaWx9Lgor QGVuZCBkZWZ1bgogCi1AZGVmdmFyIHdpZGdldC1nbG9iYWwtbWFwCi1LZXltYXAgdXNlZCBi eSBAY29kZXt3aWRnZXQtYnV0dG9uLXByZXNzfSBhbmQgQGNvZGV7d2lkZ2V0LWJ1dHRvbi1j bGlja30KLXdoZW4gbm90IG9uIGEgYnV0dG9uLiAgQnkgZGVmYXVsdCB0aGlzIGlzIEBjb2Rl e2dsb2JhbC1tYXB9LgotQGVuZCBkZWZ2YXIKK0FzIHdpdGggdGhlIGNyZWF0aW9uIG1lY2hh bmlzbSwgdGhlIGZ1bmN0aW9uIHN0b3JlZCBpbiBAY29kZXs6ZGVsZXRlfQorY29udHJvbHMg dGhlIGRlbGV0aW9uIG1lY2hhbmlzbSBmb3IgYSB3aWRnZXQuCiAKLUBub2RlIEJhc2ljIFR5 cGVzCi1AY2hhcHRlciBCYXNpYyBUeXBlcworQWRkaXRpb25hbGx5LCB0aGUgbGlicmFyeSBw cm92aWRlcyBhIHdheSB0byBtYWtlIGEgY29weSBvZiBhIHdpZGdldC4KIAotVGhpcyBpcyB0 aGUgZ2VuZXJhbCBzeW50YXggb2YgYSB0eXBlIHNwZWNpZmljYXRpb246CitAZGVmdW4gd2lk Z2V0LWNvcHkgd2lkZ2V0CitNYWtlcyBhIGNvcHkgb2Ygd2lkZ2V0IEB2YXJ7d2lkZ2V0fSBh bmQgcmV0dXJucyBpdC4KIAotQGV4YW1wbGUKLUB2YXJ7bmFtZX0gOjo9IChAdmFye25hbWV9 IFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiBAdmFye2FyZ3N9KQotICAgICB8 ICAgQHZhcntuYW1lfQotQGVuZCBleGFtcGxlCitJdCB1c2VzIHRoZSBmdW5jdGlvbiBzdG9y ZWQgaW4gdGhlIEBjb2Rlezpjb3B5fSBwcm9wZXJ0eSBvZiBAdmFye3dpZGdldH0KK2FuZCBy ZXR1cm5zIHRoZSB3aWRnZXQgdGhhdCB0aGF0IGZ1bmN0aW9uIHJldHVybnMuCitAZW5kIGRl ZnVuCiAKLVdoZXJlLCBAdmFye25hbWV9IGlzIGEgd2lkZ2V0IG5hbWUsIEB2YXJ7a2V5d29y ZH0gaXMgdGhlIG5hbWUgb2YgYQotcHJvcGVydHksIEB2YXJ7YXJndW1lbnR9IGlzIHRoZSB2 YWx1ZSBvZiB0aGUgcHJvcGVydHksIGFuZCBAdmFye2FyZ3N9Ci1hcmUgaW50ZXJwcmV0ZWQg aW4gYSB3aWRnZXQgc3BlY2lmaWMgd2F5LgorQXMgZGlzY3Vzc2VkLCB0aGVyZSBpcyBhIGNv bnZlcnNpb24gc3RlcCB3aGVuIGNyZWF0aW5nIGEgd2lkZ2V0LiAgVG8KK2RvIHRoZSBjb252 ZXJzaW9uIHdpdGhvdXQgYWN0dWFsbHkgY3JlYXRpbmcgdGhlIHdpZGdldCwgeW91IGNhbiB1 c2UKK3RoZSBAY29kZXt3aWRnZXQtY29udmVydH0gZnVuY3Rpb24uCiAKLUBjaW5kZXgga2V5 d29yZCBhcmd1bWVudHMKLVRoZSBmb2xsb3dpbmcga2V5d29yZCBhcmd1bWVudHMgYXBwbHkg dG8gYWxsIHdpZGdldHM6CitAZGVmdW4gd2lkZ2V0LWNvbnZlcnQgdHlwZSAmcmVzdCBhcmdz CitDb252ZXJ0IEB2YXJ7dHlwZX0gdG8gYSB3aWRnZXQgb2JqZWN0LCB1c2luZyBrZXl3b3Jk IGFyZ3VtZW50cyBAdmFye2FyZ3N9LgogCi1AdGFibGUgQGNvZGUKLUBjaW5kZXggaW50ZXJu YWwgZm9ybWF0Ci1AY2luZGV4IGV4dGVybmFsIGZvcm1hdAotQHZpbmRleCB2YWx1ZUByeyBr ZXl3b3JkfQotQGl0ZW0gOnZhbHVlCi1UaGUgaW5pdGlhbCB2YWx1ZSBmb3Igd2lkZ2V0cyBv ZiB0aGlzIHR5cGUuICBUeXBpY2FsbHksIGEgd2lkZ2V0Ci1yZXByZXNlbnRzIGl0cyB2YWx1 ZSBpbiB0d28gZm9ybWF0czogZXh0ZXJuYWwgYW5kIGludGVybmFsLiAgVGhlCi1leHRlcm5h bCBmb3JtYXQgaXMgdGhlIHZhbHVlIGFzIHRoZSByZXN0IG9mIEVtYWNzIHNlZXMgaXQsIGFu ZCB0aGUKLWludGVybmFsIGZvcm1hdCBpcyBhIHJlcHJlc2VudGF0aW9uIHRoYXQgdGhlIHdp ZGdldCBkZWZpbmVzIGFuZCB1c2VzCi1pbiBhIHdpZGdldCBzcGVjaWZpYyB3YXkuCitSZXR1 cm5zIGEgd2lkZ2V0IG9iamVjdCwgc3VpdGFibGUgZm9yIGNyZWF0aW9uLiAgSXQgY2FsbHMg dGhlIGZ1bmN0aW9uCitzdG9yZWQgaW4gdGhlIEBjb2Rlezpjb252ZXJ0LXdpZGdldH0gcHJv cGVydHksIGFmdGVyIHB1dHRpbmcgaW50byB0aGUKK0Bjb2RlezphcmdzfSBwcm9wZXJ0eSB0 aGUgYXJndW1lbnRzIHRoYXQgdGhlIHdpZGdldCBpbiBxdWVzdGlvbiBuZWVkcy4KK0lmIEB2 YXJ7dHlwZX0gaGFzIGEgQGNvZGV7OnZhbHVlfSBwcm9wZXJ0eSwgZWl0aGVyIG9yaWdpbmFs bHkgb3IgYWZ0ZXIKK2RvaW5nIHRoZSBjb252ZXJzaW9uLCB0aGlzIGZ1bmN0aW9uIGNvbnZl cnRzIHRoZSB2YWx1ZSBzdG9yZWQgaW4KK0Bjb2Rlezp2YWx1ZX0gdG8gdGhlIGludGVybmFs IGZvcm1hdCwgYW5kIHN0b3JlcyBpdCBpbnRvIEBjb2Rlezp2YWx1ZX0uCitAZW5kIGRlZnVu CiAKLUJvdGggZm9ybWF0cyBtaWdodCBiZSB0aGUgc2FtZSBmb3IgY2VydGFpbiB3aWRnZXRz IGFuZCBtaWdodCBkaWZmZXIKLWZvciBvdGhlcnMsIGFuZCB0aGVyZSBpcyBubyBndWFyYW50 ZWUgYWJvdXQgd2hpY2ggZm9ybWF0IHRoZSB2YWx1ZQotc3RvcmVkIGluIHRoZSBAY29kZXs6 dmFsdWV9IHByb3BlcnR5IGhhcy4gIEhvd2V2ZXIsIHdoZW4gY3JlYXRpbmcgYQotd2lkZ2V0 IG9yIGRlZmluaW5nIGEgbmV3IG9uZSAoQHB4cmVme0RlZmluaW5nIE5ldyBXaWRnZXRzfSks IHRoZQotQGNvZGV7OnZhbHVlfSBzaG91bGQgYmUgaW4gdGhlIGV4dGVybmFsIGZvcm1hdC4K K0FwYXJ0IGZyb20gb25seSBjcmVhdGluZyB3aWRnZXRzIGluIHRoZSBidWZmZXIsIEl0J3Mg dXNlZnVsIHRvIGhhdmUKK3BsYWluIHRleHQuICBGb3IgaW5zZXJ0aW5nIHRleHQsIHRoZSBy ZWNvbW1lbmRlZCB3YXkgaXMgd2l0aCB0aGUKK0Bjb2Rle3dpZGdldC1pbnNlcnR9IGZ1bmN0 aW9uLgogCi1AdmluZGV4IGZvcm1hdEByeyBrZXl3b3JkfQotQGl0ZW0gOmZvcm1hdAotVGhp cyBzdHJpbmcgd2lsbCBiZSBpbnNlcnRlZCBpbiB0aGUgYnVmZmVyIHdoZW4geW91IGNyZWF0 ZSBhIHdpZGdldC4KLVRoZSBmb2xsb3dpbmcgQHNhbXB7JX0gZXNjYXBlcyBhcmUgYXZhaWxh YmxlOgorQGRlZnVuIHdpZGdldC1pbnNlcnQgJnJlc3QgYXJncworSW5zZXJ0IEB2YXJ7YXJn c30sIGVpdGhlciBzdHJpbmdzIG9yIGNoYXJhY3RlcnMsIGF0IHBvaW50LgogCi1AdGFibGUg QHNhbXAKLUBpdGVtICVbCi1AaXRlbXggJV0KLVRoZSB0ZXh0IGluc2lkZSB3aWxsIGJlIG1h cmtlZCBhcyBhIGJ1dHRvbi4KK1VzZXMgQGNvZGV7aW5zZXJ0fSB0byBwZXJmb3JtIHRoZSBp bnNlcnRpb24sIHBhc3NpbmcgQHZhcnthcmdzfSBhcworYXJndW1lbnQuICBAeHJlZntJbnNl cnRpb24sLCxlbGlzcCwgdGhlIEVtYWNzIExpc3AgUmVmZXJlbmNlIE1hbnVhbH0sCitmb3Ig bW9yZSBpbmZvcm1hdGlvbiBhYm91dCBAdmFye2FyZ3N9LgogCi1CeSBkZWZhdWx0LCB0aGUg dGV4dCB3aWxsIGJlIHNob3duIGluIEBjb2Rle3dpZGdldC1idXR0b24tZmFjZX0sIGFuZAot c3Vycm91bmRlZCBieSBicmFja2V0cy4KK1RoZSByZXN1bHRpbmcgdGV4dCB3aWxsIGJlIHJl YWQtb25seS4KK0BlbmQgZGVmdW4KIAotQGRlZm9wdCB3aWRnZXQtYnV0dG9uLXByZWZpeAot U3RyaW5nIHRvIHByZWZpeCBidXR0b25zLgotQGVuZCBkZWZvcHQKK0Bub2RlIFdvcmtpbmcg d2l0aCBXaWRnZXRzCitAY2hhcHRlciBXb3JraW5nIHdpdGggV2lkZ2V0cworVGhpcyBzZWN0 aW9uIGNvdmVycyB0aGUgbW9yZSBpbXBvcnRhbnQgZnVuY3Rpb25zIG5lZWRlZCB0byBxdWVy eSBhbmQKK21hbmlwdWxhdGUgd2lkZ2V0cyBpbiBhIGdlbmVyaWMgd2F5LiAgV2lkZ2V0cyBt YXkgaGF2ZSBhZGRpdGlvbmFsCitmdW5jdGlvbnMgZm9yIGludGVyYWN0aW5nIHdpdGggdGhl bSwgdGhvc2UgYXJlIGRlc2NyaWJlZCBpbiB0aGUKK2Rlc2NyaXB0aW9uIGZvciBlYWNoIHdp ZGdldC4gIEB4cmVme1dpZGdldCBHYWxsZXJ5fS4KIAotQGRlZm9wdCB3aWRnZXQtYnV0dG9u LXN1ZmZpeAotU3RyaW5nIHRvIHN1ZmZpeCBidXR0b25zLgotQGVuZCBkZWZvcHQKK0BkZWZ1 biB3aWRnZXRwIHdpZGdldAorTm9uLUBjb2Rle25pbH0gaWYgQHZhcnt3aWRnZXR9IGlzIGEg d2lkZ2V0LgorQGVuZCBkZWZ1bgogCi1AaXRlbSAlQHsKLUBpdGVteCAlQH0KLVRoZSB0ZXh0 IGluc2lkZSB3aWxsIGJlIGRpc3BsYXllZCB3aXRoIHRoZSBmYWNlIHNwZWNpZmllZCBieQot QGNvZGV7OnNhbXBsZS1mYWNlfS4KK0BkZWZ1biB3aWRnZXQtdHlwZSB3aWRnZXQKK1JldHVy biB0aGUgdHlwZSBvZiB3aWRnZXQgQHZhcnt3aWRnZXR9LCBhIHN5bWJvbC4KIAotQGl0ZW0g JXYKLVRoaXMgd2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoZSBidWZmZXIgcmVwcmVzZW50YXRp b24gb2YgdGhlIHdpZGdldCdzCi12YWx1ZS4gIFdoYXQgdGhpcyBpcyBkZXBlbmRzIG9uIHRo ZSB3aWRnZXQgdHlwZS4KK1RoaXMgZnVuY3Rpb24gaXMgdXNlZnVsIHRvIGZpbmQgb3V0IHdo aWNoIGtpbmQgb2Ygd2lkZ2V0IEB2YXJ7d2lkZ2V0fQorcmVwcmVzZW50cywgaS5lLiwgdGhl IG5hbWUgb2YgdGhlIHdpZGdldCB0eXBlIHdoZW4gdGhlIHdpZGdldAord2FzIGNyZWF0ZWQu CitAZW5kIGRlZnVuCiAKLUBzdHJvbmd7V2FybmluZzp9IEluIGFuIEBjb2Rle2VkaXRhYmxl LWZpZWxkfSB3aWRnZXQsIHRoZSBAc2FtcHsldn0gZXNjYXBlCi1tdXN0IGJlIHByZWNlZGVk IGJ5IHNvbWUgb3RoZXIgdGV4dCBpbiB0aGUgZm9ybWF0IHN0cmluZyAoaWYgc3BlY2lmaWVk KS4KK0BkZWZ1biB3aWRnZXQtbWVtYmVyIHdpZGdldCBwcm9wZXJ0eQorTm9uLUBjb2Rle25p bH0gaWYgd2lkZ2V0IEB2YXJ7d2lkZ2V0fSBoYXMgYSB2YWx1ZSAoZXZlbiBAY29kZXtuaWx9 KSBmb3IKK3Byb3BlcnR5IEB2YXJ7cHJvcGVydHl9LgorQGVuZCBkZWZ1bgogCi1AaXRlbSAl ZAotSW5zZXJ0IHRoZSBzdHJpbmcgc3BlY2lmaWVkIGJ5IEBjb2Rlezpkb2N9IGhlcmUuCitA ZGVmdW4gd2lkZ2V0LWdldCB3aWRnZXQgcHJvcGVydHkKK0ZvciB3aWRnZXQgQHZhcnt3aWRn ZXR9LCByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eSBAdmFye3Byb3BlcnR5fS4K IAotQGl0ZW0gJWgKLUxpa2UgQHNhbXB7JWR9LCB3aXRoIHRoZSBmb2xsb3dpbmcgbW9kaWZp Y2F0aW9uczogSWYgdGhlIGRvY3VtZW50YXRpb24KLXN0cmluZyBpcyBtb3JlIHRoYW4gb25l IGxpbmUsIGl0IHdpbGwgYWRkIGEgYnV0dG9uIHdoaWNoIHdpbGwgdG9nZ2xlCi1iZXR3ZWVu IHNob3dpbmcgb25seSB0aGUgZmlyc3QgbGluZSwgYW5kIHNob3dpbmcgdGhlIGZ1bGwgdGV4 dC4KLUZ1cnRoZXJtb3JlLCBpZiB0aGVyZSBpcyBubyBAY29kZXs6ZG9jfSBwcm9wZXJ0eSBp biB0aGUgd2lkZ2V0LCBpdCB3aWxsCi1pbnN0ZWFkIGV4YW1pbmUgdGhlIEBjb2Rlezpkb2N1 bWVudGF0aW9uLXByb3BlcnR5fSBwcm9wZXJ0eS4gIElmIGl0IGlzIGEKLWxhbWJkYSBleHBy ZXNzaW9uLCBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSB3aWRnZXQncyB2YWx1ZSBhcyBh bgotYXJndW1lbnQsIGFuZCB0aGUgcmVzdWx0IHdpbGwgYmUgdXNlZCBhcyB0aGUgZG9jdW1l bnRhdGlvbiB0ZXh0LgorQHZhcntwcm9wZXJ0eX0gc2hvdWxkIGJlIGEga2V5d29yZCwgYW5k IHRoZSB2YWx1ZSBpcyB3aGF0IHdhcyBsYXN0IHNldCBieQorQGNvZGV7d2lkZ2V0LXB1dH0g Zm9yIEB2YXJ7cHJvcGVydHl9LgorQGVuZCBkZWZ1bgogCi1AaXRlbSAldAotSW5zZXJ0IHRo ZSBzdHJpbmcgc3BlY2lmaWVkIGJ5IEBjb2Rlezp0YWd9IGhlcmUsIG9yIHRoZSBAY29kZXtw cmluY30KLXJlcHJlc2VudGF0aW9uIG9mIHRoZSB2YWx1ZSBpZiB0aGVyZSBpcyBubyB0YWcu CitAZGVmdW4gd2lkZ2V0LXB1dCB3aWRnZXQgcHJvcGVydHkgdmFsdWUKK0ZvciB3aWRnZXQg QHZhcnt3aWRnZXR9LCBzZXQgdGhlIHByb3BlcnR5IEB2YXJ7cHJvcGVydHl9IHRvIEB2YXJ7 dmFsdWV9LgorQHZhcntwcm9wZXJ0eX0gc2hvdWxkIGJlIGEga2V5d29yZCwgd2hpbGUgQHZh cnt2YWx1ZX0gY2FuIGJlIGFueXRoaW5nLgorQGVuZCBkZWZ1bgogCi1AaXRlbSAlJQotSW5z ZXJ0IGEgbGl0ZXJhbCBAc2FtcHslfS4KLUBlbmQgdGFibGUKK0BkZWZ1biB3aWRnZXQtYXQg Jm9wdGlvbmFsIHBvcworUmV0dXJuIHRoZSB3aWRnZXQgYXQgcG9zaXRpb24gQHZhcntwb3N9 LCBvciBhdCBwb2ludCBpZiBAdmFye3Bvc30gaXMgQGNvZGV7bmlsfS4KK0BlbmQgZGVmdW4K IAotQHZpbmRleCBidXR0b24tZmFjZUByeyBrZXl3b3JkfQotQGl0ZW0gOmJ1dHRvbi1mYWNl Ci1GYWNlIHVzZWQgdG8gaGlnaGxpZ2h0IHRleHQgaW5zaWRlICVbICVdIGluIHRoZSBmb3Jt YXQuCitAZGVmdW4gd2lkZ2V0LWZpZWxkLWF0IHBvcworUmV0dXJuIHRoZSB3aWRnZXQgZmll bGQgYXQgcG9zaXRpb24gUE9TLCBvciBAY29kZXtuaWx9IGlmIHRoZXJlIGlzIG5vbmUuCitA ZW5kIGRlZnVuCiAKLUB2aW5kZXggYnV0dG9uLXByZWZpeEByeyBrZXl3b3JkfQotQHZpbmRl eCBidXR0b24tc3VmZml4QHJ7IGtleXdvcmR9Ci1AaXRlbSA6YnV0dG9uLXByZWZpeAotQGl0 ZW14IDpidXR0b24tc3VmZml4Ci1UZXh0IGFyb3VuZCAlWyAlXSBpbiB0aGUgZm9ybWF0Lgor QGRlZnVuIHdpZGdldC1hcHBseSB3aWRnZXQgcHJvcGVydHkgJnJlc3QgYXJncworQXBwbHkg dGhlIGZ1bmN0aW9uIHN0b3JlZCBpbiBAdmFye3Byb3BlcnR5fSB0byBAdmFye3dpZGdldH0s IHBhc3NpbmcgQHZhcnthcmdzfQorYXMgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIGZ1 bmN0aW9uLgogCi1UaGVzZSBjYW4gYmUKLUB0YWJsZSBAZW1waAotQGl0ZW0gbmlsCi1ObyB0 ZXh0IGlzIGluc2VydGVkLgorUmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoYXQgZnVuY3Rpb24g Y2FsbC4KK0BlbmQgZGVmdW4KIAotQGl0ZW0gYSBzdHJpbmcKLVRoZSBzdHJpbmcgaXMgaW5z ZXJ0ZWQgbGl0ZXJhbGx5LgorQGRlZnVuIHdpZGdldC12YWx1ZSB3aWRnZXQKK1JldHVybiB0 aGUgY3VycmVudCB2YWx1ZSBjb250YWluZWQgaW4gQHZhcnt3aWRnZXR9LgogCi1AaXRlbSBh IHN5bWJvbAotVGhlIHZhbHVlIG9mIHRoZSBzeW1ib2wgaXMgZXhwYW5kZWQgYWNjb3JkaW5n IHRvIHRoaXMgdGFibGUuCi1AZW5kIHRhYmxlCitOb3RlIHRoYXQgdGhlIHZhbHVlIHJldHVy bmVkIGJ5IHRoaXMgZnVuY3Rpb24gbWlnaHQgZGlmZmVyIGZyb20gd2hhdCdzCitzdG9yZWQg aW4gdGhlIEBjb2Rlezp2YWx1ZX0gcHJvcGVydHkgb2YgQHZhcnt3aWRnZXR9LiAgVGhpcyBp cyBiZWNhdXNlCit0aGlzIGZ1bmN0aW9uIGV4dHJhY3RzIHRoZSBjdXJyZW50IHZhbHVlIG9m IEB2YXJ7d2lkZ2V0fSBmcm9tIHRoZQorYnVmZmVyLCB0YWtpbmcgZWRpdGlvbnMgaW50byBh Y2NvdW50LgogCi1AdmluZGV4IGRvY0ByeyBrZXl3b3JkfQotQGl0ZW0gOmRvYwotVGhlIHN0 cmluZyBpbnNlcnRlZCBieSB0aGUgQHNhbXB7JWR9IGVzY2FwZSBpbiB0aGUgZm9ybWF0Ci1z dHJpbmcuCitUaGUgdmFsdWUgcmV0dXJuZWQgaXMgaW4gdGhlIGV4dGVybmFsIGZvcm1hdCwg YWZ0ZXIgZ2V0dGluZyBpdCB3aXRoCit0aGUgQGNvZGV7OnZhbHVlLWdldH0gZnVuY3Rpb24u CiAKLUB2aW5kZXggdGFnQHJ7IGtleXdvcmR9Ci1AaXRlbSA6dGFnCi1UaGUgc3RyaW5nIGlu c2VydGVkIGJ5IHRoZSBAc2FtcHsldH0gZXNjYXBlIGluIHRoZSBmb3JtYXQKLXN0cmluZy4K K0l0IGlzIGFuIGVycm9yIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBvbiBhbiB1bmluaXRpYWxp emVkIHdpZGdldC4KK0BlbmQgZGVmdW4KIAotQHZpbmRleCB0YWctZ2x5cGhAcnsga2V5d29y ZH0KLUBpdGVtIDp0YWctZ2x5cGgKLU5hbWUgb2YgaW1hZ2UgdG8gdXNlIGluc3RlYWQgb2Yg dGhlIHN0cmluZyBzcGVjaWZpZWQgYnkgQGNvZGV7OnRhZ30gb24KLUVtYWNzZW4gdGhhdCBz dXBwb3J0cyBpdC4KK0BkZWZ1biB3aWRnZXQtdmFsdWUtc2V0IHdpZGdldCB2YWx1ZQorU2V0 IHRoZSB2YWx1ZSBjb250YWluZWQgaW4gQHZhcnt3aWRnZXR9IHRvIEB2YXJ7dmFsdWV9Lgog Ci1AdmluZGV4IGhlbHAtZWNob0ByeyBrZXl3b3JkfQotQGl0ZW0gOmhlbHAtZWNobwotU3Bl Y2lmaWVzIGhvdyB0byBkaXNwbGF5IGEgbWVzc2FnZSB3aGVuZXZlciB5b3UgbW92ZSB0byB0 aGUgd2lkZ2V0IHdpdGgKLWVpdGhlciBAY29kZXt3aWRnZXQtZm9yd2FyZH0gb3IgQGNvZGV7 d2lkZ2V0LWJhY2t3YXJkfSBvciBtb3ZlIHRoZSBtb3VzZQotb3ZlciBpdCAodXNpbmcgdGhl IHN0YW5kYXJkIEBjb2Rle2hlbHAtZWNob30gbWVjaGFuaXNtKS4gIFRoZSBhcmd1bWVudAot aXMgZWl0aGVyIGEgc3RyaW5nIHRvIGRpc3BsYXksIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3Vt ZW50LCB0aGUgd2lkZ2V0LAotd2hpY2ggc2hvdWxkIHJldHVybiBhIHN0cmluZyB0byBkaXNw bGF5LCBvciBhIGZvcm0gdGhhdCBldmFsdWF0ZXMgdG8KLXN1Y2ggYSBzdHJpbmcuCitDb252 ZXJ0cyBAdmFye3ZhbHVlfSB0byB0aGUgaW50ZXJuYWwgZm9ybWF0LCBhbmQgdGhlbiBzZXRz IGl0IGJ5CithcHBseWluZyB0aGUgQGNvZGV7OnZhbHVlLXNldH0gZnVuY3Rpb24uCiAKLUB2 aW5kZXggZm9sbG93LWxpbmtAcnsga2V5d29yZH0KLUBpdGVtIDpmb2xsb3ctbGluawotU3Bl Y2lmaWVzIGhvdyB0byBpbnRlcnByZXQgYSBAa2V5e21vdXNlLTF9IGNsaWNrIG9uIHRoZSB3 aWRnZXQuCi1AeHJlZntDbGlja2FibGUgVGV4dCwsIERlZmluaW5nIENsaWNrYWJsZSBUZXh0 LCBlbGlzcCwgdGhlIEVtYWNzIExpc3AgUmVmZXJlbmNlIE1hbnVhbH0uCitJdCBpcyBhbiBl cnJvciB0byBjYWxsIHRoaXMgZnVuY3Rpb24gd2l0aCBhbiBpbnZhbGlkIEB2YXJ7dmFsdWV9 LCB0aGF0CitpcywgYSB2YWx1ZSB0aGF0IEB2YXJ7d2lkZ2V0fSBjYW5ub3QgcmVwcmVzZW50 LgorQGVuZCBkZWZ1bgogCi1AdmluZGV4IGluZGVudEByeyBrZXl3b3JkfQotQGl0ZW0gOmlu ZGVudAotQW4gaW50ZWdlciBpbmRpY2F0aW5nIHRoZSBhYnNvbHV0ZSBudW1iZXIgb2Ygc3Bh Y2VzIHRvIGluZGVudCBjaGlsZHJlbgotb2YgdGhpcyB3aWRnZXQuCitAZGVmdW4gd2lkZ2V0 LWRlZmF1bHQtZ2V0IHdpZGdldAorUmV0dXJuIHRoZSBkZWZhdWx0IGV4dGVybmFsIHZhbHVl IG9mIHdpZGdldCBAdmFye3dpZGdldH0uCiAKLUB2aW5kZXggb2Zmc2V0QHJ7IGtleXdvcmR9 Ci1AaXRlbSA6b2Zmc2V0Ci1BbiBpbnRlZ2VyIGluZGljYXRpbmcgaG93IG1hbnkgZXh0cmEg c3BhY2VzIHRvIGFkZCB0byB0aGUgd2lkZ2V0J3MKLWdyYW5kY2hpbGRyZW4gY29tcGFyZWQg dG8gdGhpcyB3aWRnZXQuCitUaGUgZGVmYXVsdCB2YWx1ZSBpcyB0aGUgb25lIHN0b3JlZCBp biBAY29kZXs6dmFsdWV9IG9yIHRoZSByZXN1bHQgb2YKK2FwcGx5aW5nIHRoZSBAY29kZXs6 ZGVmYXVsdC1nZXR9IGZ1bmN0aW9uIHRvIHRoZSBhcmd1bWVudHMgb2YKK0B2YXJ7d2lkZ2V0 fSwgYXMgc3RvcmVkIGluIEBjb2RlezphcmdzfS4gIEEgdmFsdWUgb2YgQGNvZGV7bmlsfSBp cworaWdub3JlZCBieSBkZWZhdWx0LCBzbyBpbiBvcmRlciBmb3IgYSB3aWRnZXQgdG8gcmVz cGVjdCBAY29kZXtuaWx9IGFzCithIHZhbHVlLCBpdCBoYXMgdG8gb3ZlcnJpZGUgdGhlIEBj b2RlezpkZWZhdWx0LWdldH0gZnVuY3Rpb24uCitAZW5kIGRlZnVuCiAKLUB2aW5kZXggZXh0 cmEtb2Zmc2V0QHJ7IGtleXdvcmR9Ci1AaXRlbSA6ZXh0cmEtb2Zmc2V0Ci1BbiBpbnRlZ2Vy IGluZGljYXRpbmcgaG93IG1hbnkgZXh0cmEgc3BhY2VzIHRvIGFkZCB0byB0aGUgd2lkZ2V0 J3MKLWNoaWxkcmVuIGNvbXBhcmVkIHRvIHRoaXMgd2lkZ2V0LgorQGRlZnVuIHdpZGdldC10 eXBlLWRlZmF1bHQtZ2V0IHdpZGdldAorQ29udmVydCB0aGUgQGNvZGV7OnR5cGV9IGF0dHJp YnV0ZSBpbiBAdmFye3dpZGdldH0gYW5kIHJldHVybiBpdHMKK2RlZmF1bHQgdmFsdWUuCitA ZW5kIGRlZnVuCiAKLUB2aW5kZXggbm90aWZ5QHJ7IGtleXdvcmR9Ci1AaXRlbSA6bm90aWZ5 Ci1BIGZ1bmN0aW9uIGNhbGxlZCBlYWNoIHRpbWUgdGhlIHdpZGdldCBvciBhIG5lc3RlZCB3 aWRnZXQgaXMgY2hhbmdlZC4KLVRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCB0d28gb3Ig dGhyZWUgYXJndW1lbnRzLiAgVGhlIGZpcnN0IGFyZ3VtZW50Ci1pcyB0aGUgd2lkZ2V0IGl0 c2VsZiwgdGhlIHNlY29uZCBhcmd1bWVudCBpcyB0aGUgd2lkZ2V0IHRoYXQgd2FzCi1jaGFu Z2VkLCBhbmQgdGhlIHRoaXJkIGFyZ3VtZW50IGlzIHRoZSBldmVudCBsZWFkaW5nIHRvIHRo ZSBjaGFuZ2UsIGlmCi1hbnkuCitAZGVmdW4gd2lkZ2V0LWNoaWxkLXZhbHVlLWdldCB3aWRn ZXQKK1JldHVybiB0aGUgdmFsdWUgb2YgdGhlIGZpcnN0IG1lbWJlciBvZiBAY29kZXs6Y2hp bGRyZW59IGluCitAdmFye3dpZGdldH0uCitAZW5kIGRlZnVuCiAKLUB2aW5kZXggbWVudS10 YWdAcnsga2V5d29yZH0KLUBpdGVtIDptZW51LXRhZwotVGFnIHVzZWQgaW4gdGhlIG1lbnUg d2hlbiB0aGUgd2lkZ2V0IGlzIHVzZWQgYXMgYW4gb3B0aW9uIGluIGEKLUBjb2Rle21lbnUt Y2hvaWNlfSB3aWRnZXQuCitAZGVmdW4gd2lkZ2V0LWNoaWxkLXZhbHVlLWlubGluZSB3aWRn ZXQKK1JldHVybiB0aGUgaW5saW5lIHZhbHVlIG9mIHRoZSBmaXJzdCBtZW1iZXIgb2YgQGNv ZGV7OmNoaWxkcmVufSBpbgorQHZhcnt3aWRnZXR9LgogCi1AdmluZGV4IG1lbnUtdGFnLWdl dEByeyBrZXl3b3JkfQotQGl0ZW0gOm1lbnUtdGFnLWdldAotRnVuY3Rpb24gdXNlZCBmb3Ig ZmluZGluZyB0aGUgdGFnIHdoZW4gdGhlIHdpZGdldCBpcyB1c2VkIGFzIGFuIG9wdGlvbgot aW4gYSBAY29kZXttZW51LWNob2ljZX0gd2lkZ2V0LiAgQnkgZGVmYXVsdCwgdGhlIHRhZyB1 c2VkIHdpbGwgYmUgZWl0aGVyIHRoZQotQGNvZGV7Om1lbnUtdGFnfSBvciBAY29kZXs6dGFn fSBwcm9wZXJ0eSBpZiBwcmVzZW50LCBvciB0aGUgQGNvZGV7cHJpbmN9Ci1yZXByZXNlbnRh dGlvbiBvZiB0aGUgQGNvZGV7OnZhbHVlfSBwcm9wZXJ0eSBpZiBub3QuCitUaGUgaW5saW5l IHZhbHVlIGlzIHdoYXRldmVyIHRoZSBmdW5jdGlvbiBzdG9yZWQgaW4KK0Bjb2Rlezp2YWx1 ZS1pbmxpbmV9IHJldHVybnMuCitAZW5kIGRlZnVuCiAKLUB2aW5kZXggbWF0Y2hAcnsga2V5 d29yZH0KLUBpdGVtIDptYXRjaAotU2hvdWxkIGJlIGEgZnVuY3Rpb24gY2FsbGVkIHdpdGgg dHdvIGFyZ3VtZW50cywgdGhlIHdpZGdldCBhbmQgYW4KLWV4dGVybmFsIHZhbHVlLCBhbmQg c2hvdWxkIHJldHVybiBub24tQGNvZGV7bmlsfSBpZiB0aGUgd2lkZ2V0IGNhbgotcmVwcmVz ZW50IHRoZSBzcGVjaWZpZWQgdmFsdWUuCitAZGVmdW4gd2lkZ2V0LXR5cGUtdmFsdWUtY3Jl YXRlIHdpZGdldAorQ3JlYXRlIGEgY2hpbGQgd2lkZ2V0IGZvciBAdmFye3dpZGdldH0sIG9m IHR5cGUgc3RvcmVkIGluCitAY29kZXs6dHlwZX0uCiAKLUB2aW5kZXggdmFsaWRhdGVAcnsg a2V5d29yZH0KLUBpdGVtIDp2YWxpZGF0ZQotQSBmdW5jdGlvbiB3aGljaCB0YWtlcyBhIHdp ZGdldCBhcyBhbiBhcmd1bWVudCwgYW5kIHJldHVybnMgQGNvZGV7bmlsfQotaWYgdGhlIHdp ZGdldCdzIGN1cnJlbnQgdmFsdWUgaXMgdmFsaWQgZm9yIHRoZSB3aWRnZXQuICBPdGhlcndp c2UgaXQKLXNob3VsZCByZXR1cm4gdGhlIHdpZGdldCBjb250YWluaW5nIHRoZSBpbnZhbGlk IGRhdGEsIGFuZCBzZXQgdGhhdAotd2lkZ2V0J3MgQGNvZGV7OmVycm9yfSBwcm9wZXJ0eSB0 byBhIHN0cmluZyBleHBsYWluaW5nIHRoZSBlcnJvci4KK0NyZWF0ZXMgdGhlIGNoaWxkIHdp ZGdldCB0YWtpbmcgdGhlIHZhbHVlIGZyb20gdGhlIEBjb2Rlezp2YWx1ZX0KK3Byb3BlcnR5 IGFuZCBzdG9yZXMgdGhlIG5ld2x5IGNyZWF0ZWQgd2lkZ2V0IGluIHRoZSBAY29kZXs6Y2hp bGRyZW59Citwcm9wZXJ0eSBvZiBAdmFye3dpZGdldH0uCisKK1RoZSB2YWx1ZSBzdG9yZWQg aW4gQGNvZGV7OnR5cGV9IHNob3VsZCBiZSBhbiB1bmNvbnZlcnRlZCB3aWRnZXQKK3R5cGUu CitAZW5kIGRlZnVuCiAKLVRoZSBmb2xsb3dpbmcgcHJlZGVmaW5lZCBmdW5jdGlvbiBjYW4g YmUgdXNlZDoKK0BkZWZ1biB3aWRnZXQtdmFsdWUtY29udmVydC13aWRnZXQgd2lkZ2V0CitJ bml0aWFsaXplcyB0aGUgQGNvZGV7OnZhbHVlfSBwcm9wZXJ0eSBvZiBAdmFye3dpZGdldH0g ZnJvbQorQGNvZGV7OmFyZ3N9LgogCi1AZGVmdW4gd2lkZ2V0LWNoaWxkcmVuLXZhbGlkYXRl IHdpZGdldAotQWxsIHRoZSBAY29kZXs6Y2hpbGRyZW59IG9mIEB2YXJ7d2lkZ2V0fSBtdXN0 IGJlIHZhbGlkLgorU2V0cyBAY29kZXs6YXJnc30gdG8gQGNvZGV7bmlsfSBhbmQgcmV0dXJu cyB0aGUgbW9kaWZpZWQgd2lkZ2V0CitAdmFye3dpZGdldH0uCiBAZW5kIGRlZnVuCiAKLUB2 aW5kZXggdGFiLW9yZGVyQHJ7IGtleXdvcmR9Ci1AaXRlbSA6dGFiLW9yZGVyCi1TcGVjaWZ5 IHRoZSBvcmRlciBpbiB3aGljaCB3aWRnZXRzIGFyZSB0cmF2ZXJzZWQgd2l0aAotQGNvZGV7 d2lkZ2V0LWZvcndhcmR9IG9yIEBjb2Rle3dpZGdldC1iYWNrd2FyZH0uICBUaGlzIGlzIG9u bHkgcGFydGlhbGx5Ci1pbXBsZW1lbnRlZC4KK0BkZWZ1biB3aWRnZXQtdmFsdWUtdmFsdWUt Z2V0IHdpZGdldAorUmV0dXJuIHRoZSB2YWx1ZSBzdG9yZWQgaW4gQGNvZGV7OnZhbHVlfSBm b3Igd2lkZ2V0IEB2YXJ7d2lkZ2V0fS4KIAotQGVudW1lcmF0ZSBhCi1AaXRlbQotV2lkZ2V0 cyB3aXRoIHRhYmJpbmcgb3JkZXIgQGNvZGV7LTF9IGFyZSBpZ25vcmVkLgorVGhpcyBpcyBk aWZmZXJlbnQgdG8gZ2V0dGluZyB0aGUgY3VycmVudCB2YWx1ZSBmb3IgQHZhcnt3aWRnZXR9 IHdpdGgKK0Bjb2Rle3dpZGdldC12YWx1ZX0sIHNpbmNlIHRoYXQgZnVuY3Rpb24gZXh0cmFj dHMgdGhlIHZhbHVlIGZyb20gdGhlCitidWZmZXIuCitAZW5kIGRlZnVuCiAKLUBpdGVtCi0o VW5pbXBsZW1lbnRlZCkgV2hlbiBvbiBhIHdpZGdldCB3aXRoIHRhYmJpbmcgb3JkZXIgQHZh cntufSwgZ28gdG8gdGhlCi1uZXh0IHdpZGdldCBpbiB0aGUgYnVmZmVyIHdpdGggdGFiYmlu ZyBvcmRlciBAdmFye24rMX0gb3IgQGNvZGV7bmlsfSwKLXdoaWNoZXZlciBjb21lcyBmaXJz dC4KK0BkZWZ1biB3aWRnZXQtYXBwbHktYWN0aW9uIHdpZGdldCAmb3B0aW9uYWwgZXZlbnQK K0FwcGx5IHRoZSBmdW5jdGlvbiBzdG9yZWQgaW4gQGNvZGV7OmFjdGlvbn0gdG8gQHZhcnt3 aWRnZXR9LCBpbgorcmVzcG9uc2UgdG8gQHZhcntldmVudH0uCiAKLUBpdGVtCi1XaGVuIG9u IGEgd2lkZ2V0IHdpdGggbm8gdGFiYmluZyBvcmRlciBzcGVjaWZpZWQsIGdvIHRvIHRoZSBu ZXh0IHdpZGdldAorSXQgaXMgYW4gZXJyb3IgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHdpdGgg YW4gaW5hY3RpdmUgd2lkZ2V0LgorQGVuZCBkZWZ1bgorCitAZGVmdW4gd2lkZ2V0LXBhcmVu dC1hY3Rpb24gd2lkZ2V0ICZvcHRpb25hbCBldmVudAorVGVsbCBAY29kZXs6cGFyZW50fSBv ZiBAdmFye3dpZGdldH0gdG8gaGFuZGxlIEB2YXJ7ZXZlbnR9LgorCitPcHRpb25hbCBAdmFy e2V2ZW50fSBpcyB0aGUgZXZlbnQgdGhhdCB0cmlnZ2VyZWQgdGhlIGFjdGlvbi4KK0BlbmQg ZGVmdW4KKworQGRlZnVuIHdpZGdldC1jaGlsZC12YWxpZGF0ZSB3aWRnZXQKK0NoZWNrIHRo YXQgdGhlIGZpcnN0IG1lbWJlciBvZiBAY29kZXs6Y2hpbGRyZW59IGluIEB2YXJ7d2lkZ2V0 fSBpcyB2YWxpZC4KKworVG8gYmUgdmFsaWQgbWVhbnMgdGhhdCB0aGUgd2lkZ2V0IHZhbHVl IHBhc3NlcyB0aGUgY2hlY2tzIHRoYXQgdGhlCitmdW5jdGlvbiBzdG9yZWQgaW4gQGNvZGV7 OnZhbGlkYXRlfSBtYWtlcy4KK0BlbmQgZGVmdW4KKworQGRlZnVuIHdpZGdldC1jaGlsZHJl bi12YWxpZGF0ZSB3aWRnZXQKK0NoZWNrIHRoYXQgYWxsIEBjb2RlezpjaGlsZHJlbn0gaW4g QHZhcnt3aWRnZXR9IGFyZSB2YWxpZC4KKworUmV0dXJucyBAY29kZXtuaWx9IG9uIHN1Y2Nl c3MsIG9yIHRoZSBmaXJzdCBjaGlsZCB0aGF0IGlzbid0IHZhbGlkLgorQGVuZCBkZWZ1bgor CitAZGVmdW4gd2lkZ2V0LXR5cGUtbWF0Y2ggd2lkZ2V0IHZhbHVlCitSZXR1cm4gbm9uLUBj b2Rle25pbH0gaWYgQHZhcntWQUxVRX0gbWF0Y2hlcyB0aGUgdmFsdWUgZm9yIHRoZQorQGNv ZGV7OnR5cGV9IHdpZGdldC4KKworQXMgd2l0aCB0aGUgb3RoZXIgdHlwZSBmdW5jdGlvbnMs IHRoZSB3aWRnZXQgc3RvcmVkIGluIEBjb2Rlezp0eXBlfQorc2hvdWxkIGJlIGFuIHVuY29u dmVydGVkIHdpZGdldC4KK0BlbmQgZGVmdW4KKworQGRlZnVuIHdpZGdldC10eXBlcy1jb3B5 IHdpZGdldAorQ29weSB0aGUgQGNvZGV7OmFyZ3N9IHZhbHVlIGluIEB2YXJ7d2lkZ2V0fSBh bmQgc3RvcmUgdGhlbSBpbiBAY29kZXs6YXJnc30uCisKK01ha2VzIHRoZSBjb3BpZXMgYnkg Y2FsbGluZyBAY29kZXt3aWRnZXQtY29weX0gb24gZWFjaCBlbGVtZW50IHByZXNlbnQKK2lu IEBjb2RlezphcmdzfS4gIFJldHVybnMgdGhlIG1vZGlmaWVkIHdpZGdldCBAdmFye3dpZGdl dH0uCitAZW5kIGRlZnVuCisKK0BkZWZ1biB3aWRnZXQtdHlwZXMtY29udmVydC13aWRnZXQg d2lkZ2V0CitDb252ZXJ0IHRoZSBAY29kZXs6YXJnc30gdmFsdWUgaW4gQHZhcnt3aWRnZXR9 IGFuZCBzdG9yZSB0aGVtIGluCitAY29kZXthcmdzfS4KKworUmV0dXJucyB0aGUgbW9kaWZp ZWQgd2lkZ2V0IEB2YXJ7d2lkZ2V0fS4KK0BlbmQgZGVmdW4KKworQG5vZGUgV2lkZ2V0cyBh bmQgdGhlIEJ1ZmZlcgorQGNoYXB0ZXIgV2lkZ2V0cyBhbmQgdGhlIEJ1ZmZlcgorVGhpcyBj aGFwdGVyIGRlc2NyaWJlcyBjb21tYW5kcyB0aGF0IGFyZSBzcGVjaWZpYyB0byBidWZmZXJz IHRoYXQKK2NvbnRhaW4gd2lkZ2V0cy4KKworQGNpbmRleCB3aWRnZXQga2V5YmluZGluZ3MK K0BkZWZ2ciBDb25zdCB3aWRnZXQta2V5bWFwCitLZXltYXAgY29udGFpbmluZyB1c2VmdWwg YmluZGluZ3MgZm9yIGJ1ZmZlcnMgY29udGFpbmluZyB3aWRnZXRzLgorCitCaW5kcyBAa2V5 e1RBQn0gYW5kIEBrYmR7Qy1Aa2V5e1RBQn19IHRvIEBjb2Rle3dpZGdldC1mb3J3YXJkfSBh bmQKK0Bjb2Rle3dpZGdldC1iYWNrd2FyZH0sIHJlc3BlY3RpdmVseS4gIEl0IGFsc28gYmlu ZHMgQGtleXtSRVR9IHRvCitAY29kZXt3aWRnZXQtYnV0dG9uLXByZXNzfSBhbmQgQGtiZHtk b3duLW1vdXNlLTF9IGFuZAorQGtiZHtkb3duLW1vdXNlLTJ9IHRvIEBjb2Rle3dpZGdldC1i dXR0b24tY2xpY2t9LgorQGVuZCBkZWZ2cgorCitUaGVyZSdzIGFsc28gYSBrZXltYXAgZm9y IGV2ZW50cyB0aGF0IHRoZSBXaWRnZXQgbGlicmFyeSBkb2Vzbid0IG5lZWQKK3RvIGhhbmRs ZS4KKworQGRlZnZhciB3aWRnZXQtZ2xvYmFsLW1hcAorS2V5bWFwIHVzZWQgYnkgQGNvZGV7 d2lkZ2V0LWJ1dHRvbi1wcmVzc30gYW5kIEBjb2Rle3dpZGdldC1idXR0b24tY2xpY2t9Cit3 aGVuIG5vdCBvbiBhIGJ1dHRvbi4gIEJ5IGRlZmF1bHQgdGhpcyBpcyBAY29kZXtnbG9iYWwt bWFwfS4KK0BlbmQgZGVmdmFyCisKK0luIGFkZGl0aW9uIHRvIHRoZXNlIHR3byBrZXltYXBz LCBlYWNoIHdpZGdldCBtaWdodCBkZWZpbmUgYSBrZXltYXAgb2YKK2l0cyBvd24sIGFjdGl2 ZSB3aGVuIGV2ZW50cyBoYXBwZW4gYXQgdGhhdCB3aWRnZXQuCisKK0BjaW5kZXggd2lkZ2V0 IG5hdmlnYXRpb24KK1RoZSBmb2xsb3dpbmcgbmF2aWdhdGlvbiBjb21tYW5kcyBhcmUgYXZh aWxhYmxlOgorCitAdGFibGUgQGtiZAorQGl0ZW0gQGtleXtUQUJ9CitAZGVmZm4gQ29tbWFu ZCB3aWRnZXQtZm9yd2FyZCAmb3B0aW9uYWwgY291bnQKK01vdmUgcG9pbnQgQHZhcntjb3Vu dH0gYnV0dG9ucyBvciBlZGl0aW5nIGZpZWxkcyBmb3J3YXJkLgorQGVuZCBkZWZmbgorQGl0 ZW0gQGtiZHtNLUBrZXl7VEFCfX0KK0BpdGVteCBAa2Jke1MtQGtleXtUQUJ9fQorQGRlZmZu IENvbW1hbmQgd2lkZ2V0LWJhY2t3YXJkICZvcHRpb25hbCBjb3VudAorTW92ZSBwb2ludCBA dmFye2NvdW50fSBidXR0b25zIG9yIGVkaXRpbmcgZmllbGRzIGJhY2t3YXJkLgorQGVuZCBk ZWZmbgorQGVuZCB0YWJsZQorCisKK1doZW4gZWRpdGluZyBhbiBAY29kZXtlZGl0YWJsZS1m aWVsZH0gd2lkZ2V0LCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzCithcmUgYXZhaWxhYmxlOgor CitAdGFibGUgQGtiZAorQGl0ZW0gQGtleXtDLWV9CitAZGVmZm4gQ29tbWFuZCB3aWRnZXQt ZW5kLW9mLWxpbmUKK01vdmUgcG9pbnQgdG8gdGhlIGVuZCBvZiBmaWVsZCBvciBlbmQgb2Yg bGluZSwgd2hpY2hldmVyIGlzIGZpcnN0LgorQGVuZCBkZWZmbgorCitAaXRlbSBAa2Jke0Mt a30KK0BkZWZmbiBDb21tYW5kIHdpZGdldC1raWxsLWxpbmUKK0tpbGwgdG8gZW5kIG9mIGZp ZWxkIG9yIGVuZCBvZiBsaW5lLCB3aGljaGV2ZXIgaXMgZmlyc3QuCitAZW5kIGRlZmZuCisK K0BpdGVtIEBrYmR7TS1UQUJ9CitAZGVmZm4gQ29tbWFuZCB3aWRnZXQtY29tcGxldGUKK0Nv bXBsZXRlIHRoZSBjb250ZW50IG9mIHRoZSBlZGl0YWJsZSBmaWVsZCBhdCBwb2ludC4KK0Bl bmQgZGVmZm4KKworQGl0ZW0gQGtiZHtDLW19CitAZGVmZm4gQ29tbWFuZCB3aWRnZXQtZmll bGQtYWN0aXZhdGUKK0ludm9rZSB0aGUgZWRpdGFibGUgZmllbGQgYXQgcG9pbnQuCitAZW5k IGRlZmZuCitAZW5kIHRhYmxlCisKK1RoZSBmb2xsb3dpbmcgdHdvIGFyZSBjb21tYW5kcyB0 aGF0IGNhbiBleGVjdXRlIHdpZGdldCBhY3Rpb25zLgorQHRhYmxlIEBrYmQKK0BpdGVtIEBr ZXl7UkVUfQorQGZpbmRleCB3aWRnZXQtYnV0dG9uLXByZXNzCitAZGVmZm4gQ29tbWFuZCB3 aWRnZXQtYnV0dG9uLXByZXNzIEB2YXJ7cG9zfSAmb3B0aW9uYWwgQHZhcntldmVudH0KK0lu dm9rZSB0aGUgYnV0dG9uIGF0IEB2YXJ7cG9zfSwgZGVmYXVsdGluZyB0byBwb2ludC4KKwor SW52b2NhdGlvbiBtZWFucyB0byBydW4gdGhlIGZ1bmN0aW9uIHN0b3JlZCBpbiB0aGUgQGNv ZGV7OmFjdGlvbn0KK3Byb3BlcnR5LgorCitJZiBwb2ludCBpcyBub3QgbG9jYXRlZCBvbiBh IGJ1dHRvbiwgaW52b2tlIHRoZSBiaW5kaW5nIGluCitAY29kZXt3aWRnZXQtZ2xvYmFsLW1h cH0gKGJ5IGRlZmF1bHQgdGhlIGdsb2JhbCBtYXApLgorQGVuZCBkZWZmbgorCitAa2luZGV4 IG1vdXNlLTIgQHJ7KG9uIGJ1dHRvbiB3aWRnZXRzfSkKK0BpdGVtIG1vdXNlLTIKK0BmaW5k ZXggd2lkZ2V0LWJ1dHRvbi1jbGljaworQGRlZmZuIENvbW1hbmQgd2lkZ2V0LWJ1dHRvbi1j bGljayBAdmFye2V2ZW50fQorSW52b2tlIHRoZSBidXR0b24gYXQgdGhlIGxvY2F0aW9uIG9m IHRoZSBtb3VzZSBwb2ludGVyLgorCitJZiB0aGUgbW91c2UgcG9pbnRlciBpcyBsb2NhdGVk IGluIGFuIGVkaXRhYmxlIHRleHQgZmllbGQsIGludm9rZSB0aGUKK2JpbmRpbmcgaW4gQGNv ZGV7d2lkZ2V0LWdsb2JhbC1tYXB9IChieSBkZWZhdWx0IHRoZSBnbG9iYWwgbWFwKS4KKwor SW4gY2FzZSB0aGUgbW91c2UtY2xpY2sgaXMgb24gYSB3aWRnZXQsIGNhbGxzIHRoZSBmdW5j dGlvbiBzdG9yZWQgaW4KK3RoZSBAY29kZXs6bW91c2UtZG93bi1hY3Rpb259IHByb3BlcnR5 LgorQGVuZCBkZWZmbgorQGVuZCB0YWJsZQorCitAbm9kZSBXaWRnZXQgR2FsbGVyeQorQGNo YXB0ZXIgV2lkZ2V0IEdhbGxlcnkKK0BjaW5kZXggd2lkZ2V0IHN5bnRheAorQWxsIHdpZGdl dHMgY2FuIGJlIGNyZWF0ZWQgZnJvbSBhIHR5cGUgc3BlY2lmaWNhdGlvbi4gIFRoZSBnZW5l cmFsCitzeW50YXggb2YgYSB0eXBlIHNwZWNpZmljYXRpb24gaXM6CisKK0BjIEZJWE1FOiBB ZGQgQk5GIHJlZmVyZW5jZSBoZXJlPyBJZiB5ZXMsIHdoYXQgcmVmZXJlbmNlPworQGV4YW1w bGUKK0B2YXJ7bmFtZX0gOjo9IChAdmFye25hbWV9IFtAdmFye2tleXdvcmR9IEB2YXJ7YXJn dW1lbnR9XS4uLiBAdmFye2FyZ3N9KQorICAgICB8ICAgQHZhcntuYW1lfQorQGVuZCBleGFt cGxlCisKK1doZXJlIEB2YXJ7bmFtZX0gaXMgYSB3aWRnZXQgbmFtZSwgYXMgZGVmaW5lZCB3 aXRoCitAY29kZXtkZWZpbmUtd2lkZ2V0fSwgQHZhcntrZXl3b3JkfSBpcyB0aGUgbmFtZSBv ZiBhIHByb3BlcnR5IGFuZAorQHZhcnthcmd1bWVudH0gaXMgdGhlIHZhbHVlIGZvciB0aGF0 IHByb3BlcnR5LCBhbmQgQHZhcnthcmdzfSBhcmUKK2ludGVycHJldGVkIGluIGEgd2lkZ2V0 IHNwZWNpZmljIHdheS4gIEB4cmVme0RlZmluaW5nIE5ldyBXaWRnZXRzfS4KKworQG1lbnUK KyogQmFzaWMgVHlwZXM6OgorKiBTZXhwIFR5cGVzOjoKK0BlbmQgbWVudQorCitAbm9kZSBC YXNpYyBUeXBlcworQHNlY3Rpb24gQmFzaWMgVHlwZXMKKworQG1lbnUKKyogZGVmYXVsdDo6 CisqIGl0ZW06OgorKiBsaW5rOjoKKyogdXJsLWxpbms6OgorKiBpbmZvLWxpbms6OgorKiBm dW5jdGlvbi1saW5rOjoKKyogdmFyaWFibGUtbGluazo6CisqIGZhY2UtbGluazo6CisqIGZp bGUtbGluazo6CisqIGVtYWNzLWxpYnJhcnktbGluazo6CisqIGVtYWNzLWNvbW1lbnRhcnkt bGluazo6CisqIHB1c2gtYnV0dG9uOjoKKyogZWRpdGFibGUtZmllbGQ6OgorKiB0ZXh0OjoK KyogbWVudS1jaG9pY2U6OgorKiByYWRpby1idXR0b24tY2hvaWNlOjoKKyogY2hvaWNlLWl0 ZW06OgorKiB0b2dnbGU6OgorKiByYWRpby1idXR0b24tdG9nZ2xlOjoKKyogY2hlY2tib3g6 OgorKiBjaGVja2xpc3Q6OgorKiBlZGl0YWJsZS1saXN0OjoKKyogZ3JvdXA6OgorKiBkb2N1 bWVudGF0aW9uLXN0cmluZzo6CitAZW5kIG1lbnUKKworQG5vZGUgZGVmYXVsdAorQHN1YnNl Y3Rpb24gVGhlIEBjb2Rle2RlZmF1bHR9IFdpZGdldAorQGZpbmRleCBkZWZhdWx0QHJ7IHdp ZGdldH0KK1RoZSBtb3N0IGJhc2ljIHdpZGdldCBpbiB0aGUgV2lkZ2V0IExpYnJhcnkgaXMg dGhlIEBkZm57ZGVmYXVsdH0KK3dpZGdldC4gIEl0IHByb3ZpZGVzIHRoZSBiYXNpYyBiZWhh dmlvciBmb3IgYWxsIG90aGVyIHdpZGdldHMsIGFuZCBhbGwKK2l0cyBwcm9wZXJ0aWVzIGFy ZSBwcmVzZW50IGJ5IGRlZmF1bHQgaW4gZGVyaXZlZCB3aWRnZXRzLiAgWW91J3JlCitzZWxk b20gKGlmIGV2ZXIpIGdvaW5nIHRvIGVmZmVjdGl2ZWx5IGNyZWF0ZSBhIGRlZmF1bHQgd2lk Z2V0LCBidXQKK2hlcmUgd2UgZGVzY3JpYmUgaXRzIHByb3BlcnRpZXMgYW5kIGJlaGF2aW9y LCBzbyB0aGF0IHdlIGNhbiBkZXNjcmliZQorb3RoZXIgd2lkZ2V0cyBvbmx5IGJ5IG1lbnRp b25pbmcgdGhlIHByb3BlcnRpZXMgYW5kIGJlaGF2aW9yIHRob3NlCitvdGhlciB3aWRnZXRz IHNwZWNpYWxpemUuCisKK0BkZWZmbiBXaWRnZXQgZGVmYXVsdAorV2lkZ2V0IHVzZWQgYXMg YSBiYXNlIGZvciBvdGhlciB3aWRnZXRzLgorCitJdCBwcm92aWRlcyBtb3N0IG9mIHRoZSBm dW5jdGlvbmFsaXR5IHRoYXQgaXMgcmVmZXJyZWQgdG8gYXMgYGBieQorZGVmYXVsdCcnIGlu IHRoaXMgdGV4dC4gIElmIHlvdSB3YW50IHRvIGRlZmluZSBhIG5ldyB3aWRnZXQgZnJvbQor c2NyYXRjaCwgdXNlIHRoZSBAY29kZXtkZWZhdWx0fSB3aWRnZXQgYXMgaXRzIGJhc2UuCitA ZW5kIGRlZmZuCisKK0BjaW5kZXgga2V5d29yZCBhcmd1bWVudHMKK1RoZSBmb2xsb3dpbmcg a2V5d29yZCBhcmd1bWVudHMgYXBwbHkgdG8gYWxsIHdpZGdldHM6CisKK0B0YWJsZSBAY29k ZQorQHZpbmRleCBjcmVhdGVAcnsga2V5d29yZH0KK0BpdGVtIDpjcmVhdGUKK0Z1bmN0aW9u IHRvIGNyZWF0ZSBhIHdpZGdldCBmcm9tIHNjcmF0Y2guCisKK1RoZSBmdW5jdGlvbiB0YWtl cyBvbmUgYXJndW1lbnQsIGEgd2lkZ2V0IHR5cGUsIGFuZCBjcmVhdGVzIGEgd2lkZ2V0Citv ZiB0aGF0IHR5cGUsIGluc2VydHMgaXQgaW4gdGhlIGJ1ZmZlciwgYW5kIHJldHVybnMgYSB3 aWRnZXQgb2JqZWN0LgorCitCeSBkZWZhdWx0LCBpdCBpbnNlcnRzIHRoZSB3aWRnZXQgYXQg cG9pbnQsIHVzaW5nIHRoZSBmb3JtYXQgcHJvdmlkZWQKK2luIHRoZSBAY29kZXs6Zm9ybWF0 fSBwcm9wZXJ0eS4KKworQHZpbmRleCBkZWxldGVAcnsga2V5d29yZH0KK0BpdGVtIDpkZWxl dGUKK0Z1bmN0aW9uIHRvIGRlbGV0ZSBhIHdpZGdldC4KKworVGhlIGZ1bmN0aW9uIHNob3Vs ZCB0YWtlIG9uZSBhcmd1bWVudCwgYSB3aWRnZXQsIGFuZCBzaG91bGQgcmVtb3ZlIGFsbAor dHJhY2VzIG9mIHRoZSB3aWRnZXQgZnJvbSB0aGUgYnVmZmVyLgorCitUaGUgZGVmYXVsdCB2 YWx1ZSBpczoKKworQGRlZnVuIHdpZGdldC1kZWZhdWx0LWRlbGV0ZSB3aWRnZXQKK1JlbW92 ZSBAdmFye3dpZGdldH0gZnJvbSB0aGUgYnVmZmVyLgorRGVsZXRlIGFsbCBAY29kZXs6Y2hp bGRyZW59IGFuZCBAY29kZXs6YnV0dG9uc30gaW4gQHZhcnt3aWRnZXR9LgorQGVuZCBkZWZ1 bgorCitJbiBtb3N0IGNhc2VzIHlvdSBzaG91bGQgbm90IGNoYW5nZSB0aGlzIHZhbHVlLCBi dXQgaW5zdGVhZCB1c2UKK0Bjb2Rlezp2YWx1ZS1kZWxldGV9IHRvIG1ha2UgYW55IGFkZGl0 aW9uYWwgY2xlYW51cC4KKworQGNpbmRleCBpbnRlcm5hbCBmb3JtYXQKK0BjaW5kZXggZXh0 ZXJuYWwgZm9ybWF0CitAdmluZGV4IHZhbHVlQHJ7IGtleXdvcmR9CitAaXRlbSA6dmFsdWUK K1RoZSBpbml0aWFsIHZhbHVlIGZvciB3aWRnZXRzIG9mIHRoaXMgdHlwZS4KKworVHlwaWNh bGx5LCBhIHdpZGdldCByZXByZXNlbnRzIGl0cyB2YWx1ZSBpbiB0d28gZm9ybWF0czogZXh0 ZXJuYWwgYW5kCitpbnRlcm5hbC4gIFRoZSBleHRlcm5hbCBmb3JtYXQgaXMgdGhlIHZhbHVl IGFzIHRoZSByZXN0IG9mIEVtYWNzIHNlZXMKK2l0LCBhbmQgdGhlIGludGVybmFsIGZvcm1h dCBpcyBhIHJlcHJlc2VudGF0aW9uIHRoYXQgdGhlIHdpZGdldAorZGVmaW5lcyBhbmQgdXNl cyBpbiBhIHdpZGdldCBzcGVjaWZpYyB3YXkuCisKK0JvdGggZm9ybWF0cyBtaWdodCBiZSB0 aGUgc2FtZSBmb3IgY2VydGFpbiB3aWRnZXRzIGFuZCBtaWdodCBkaWZmZXIKK2ZvciBvdGhl cnMsIGFuZCB0aGVyZSBpcyBubyBndWFyYW50ZWUgYWJvdXQgd2hpY2ggZm9ybWF0IHRoZSB2 YWx1ZQorc3RvcmVkIGluIHRoZSBAY29kZXs6dmFsdWV9IHByb3BlcnR5IGhhcy4gIEhvd2V2 ZXIsIHdoZW4gY3JlYXRpbmcgYQord2lkZ2V0IG9yIGRlZmluaW5nIGEgbmV3IG9uZSAoQHB4 cmVme0RlZmluaW5nIE5ldyBXaWRnZXRzfSksIHRoZQorQGNvZGV7OnZhbHVlfSBzaG91bGQg YmUgaW4gdGhlIGV4dGVybmFsIGZvcm1hdC4KKworQHZpbmRleCB2YWx1ZS10by1pbnRlcm5h bEByeyBrZXl3b3JkfQorQGl0ZW0gOnZhbHVlLXRvLWludGVybmFsCitGdW5jdGlvbiB0byBj b252ZXJ0IHRoZSB2YWx1ZSB0byB0aGUgaW50ZXJuYWwgZm9ybWF0LgorCitUaGUgZnVuY3Rp b24gdGFrZXMgdHdvIGFyZ3VtZW50cywgYSB3aWRnZXQgYW5kIGFuIGV4dGVybmFsIHZhbHVl LCBhbmQKK3JldHVybnMgdGhlIGludGVybmFsIHZhbHVlLiAgVGhlIGZ1bmN0aW9uIGlzIGNh bGxlZCBvbiB0aGUgcHJlc2VudAorQGNvZGV7OnZhbHVlfSB3aGVuIHRoZSB3aWRnZXQgaXMg Y3JlYXRlZCwgYW5kIG9uIGFueSB2YWx1ZSBzZXQgbGF0ZXIKK3dpdGggQGNvZGV7d2lkZ2V0 LXZhbHVlLXNldH0uCisKK0B2aW5kZXggdmFsdWUtdG8tZXh0ZXJuYWxAcnsga2V5d29yZH0K K0BpdGVtIDp2YWx1ZS10by1leHRlcm5hbAorRnVuY3Rpb24gdG8gY29udmVydCB0aGUgdmFs dWUgdG8gdGhlIGV4dGVybmFsIGZvcm1hdC4KKworVGhlIGZ1bmN0aW9uIHRha2VzIHR3byBh cmd1bWVudHMsIGEgd2lkZ2V0IGFuZCBhbiBpbnRlcm5hbCB2YWx1ZSwgYW5kCityZXR1cm5z IHRoZSB2YWx1ZSBpbiB0aGUgZXh0ZXJuYWwgZm9ybWF0LgorCitAdmluZGV4IHZhbHVlLWNy ZWF0ZUByeyBrZXl3b3JkfQorQGl0ZW0gOnZhbHVlLWNyZWF0ZQorRnVuY3Rpb24gdG8gZXhw YW5kIHRoZSBAc2FtcHsldn0gZXNjYXBlIGluIHRoZSBmb3JtYXQgc3RyaW5nLgorCitJdCB3 aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSB3aWRnZXQgYXMgaXRzIGFyZ3VtZW50IGFuZCBzaG91 bGQgaW5zZXJ0IGEKK3JlcHJlc2VudGF0aW9uIG9mIHRoZSB3aWRnZXQncyB2YWx1ZSBpbiB0 aGUgYnVmZmVyLgorCitAdmluZGV4IHZhbHVlLWRlbGV0ZUByeyBrZXl3b3JkfQorQGl0ZW0g OnZhbHVlLWRlbGV0ZQorQSBmdW5jdGlvbiB0aGF0IHNob3VsZCByZW1vdmUgdGhlIHJlcHJl c2VudGF0aW9uIG9mIHRoZSB3aWRnZXQncyB2YWx1ZQorZnJvbSB0aGUgYnVmZmVyLgorCitJ dCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSB3aWRnZXQgYXMgaXRzIGFyZ3VtZW50LiAgSXQg ZG9lc24ndCBoYXZlIHRvCityZW1vdmUgdGhlIHRleHQsIGJ1dCBpdCBzaG91bGQgcmVsZWFz ZSBtYXJrZXJzIGFuZCBkZWxldGUgbmVzdGVkIHdpZGdldHMKK2lmIHRoZXNlIGFyZSBub3Qg bGlzdGVkIGluIEBjb2RlezpjaGlsZHJlbn0gb3IgQGNvZGV7OmJ1dHRvbnN9LgorCitCeSBk ZWZhdWx0LCBpdCdzIGEgbm8tb3AuCisKK0B2aW5kZXggdmFsdWUtZ2V0QHJ7IGtleXdvcmR9 CitAaXRlbSA6dmFsdWUtZ2V0CitGdW5jdGlvbiB0byBleHRyYWN0IHRoZSB2YWx1ZSBvZiBh IHdpZGdldCwgYXMgaXQgaXMgZGlzcGxheWVkIGluIHRoZQorYnVmZmVyLgorCitAdmluZGV4 IHZhbHVlLXNldEByeyBrZXl3b3JkfQorQGl0ZW0gOnZhbHVlLXNldAorRnVuY3Rpb24gdGhh dCB0YWtlcyBhIHdpZGdldCBhbmQgYSB2YWx1ZSBhcyBhcmd1bWVudHMsIGFuZCByZWNyZWF0 ZXMKK2l0LgorCitUaGUgdmFsdWUgbXVzdCBhbHJlYWR5IGJlIGluIHRoZSBpbnRlcm5hbCBm b3JtYXQgZm9yIHdpZGdldC4gIEJ5CitkZWZhdWx0LCBpdCBkZWxldGVzIHRoZSB3aWRnZXQg d2l0aCB0aGUgQGNvZGV7OmRlbGV0ZX0gZnVuY3Rpb24gYW5kCitjcmVhdGVzIGl0IGFnYWlu IHdpdGggdGhlIEBjb2RlezpjcmVhdGV9IGZ1bmN0aW9uLgorCitAdmluZGV4IHZhbHVlLWlu bGluZUByeyBrZXl3b3JkfQorQGl0ZW0gOnZhbHVlLWlubGluZQorRnVuY3Rpb24gdGhhdCB0 YWtlcyBhIHdpZGdldCBhbmQgcmV0dXJucyBpdHMgdmFsdWUsIGlubGluZWQuCisKK0lubGlu ZWQgbWVhbnMgdGhhdCBpZiB0aGUgd2lkZ2V0IGlzIG5vdCBpbmxpbmUgKGkuZS4sIGl0cwor QGNvZGV7OmlubGluZX0gcHJvcGVydHkgaXMgQGNvZGV7bmlsfSksIHRoZSByZXR1cm4gdmFs dWUgaXMgd3JhcHBlZCBpbgorYSBsaXN0LgorCitAdmluZGV4IGRlZmF1bHQtZ2V0QHJ7IGtl eXdvcmR9CitAaXRlbSA6ZGVmYXVsdC1nZXQKK0Z1bmN0aW9uIHRoYXQgdGFrZXMgYSB3aWRn ZXQgYW5kIHJldHVybnMgaXRzIGRlZmF1bHQgdmFsdWUuCisKK0J5IGRlZmF1bHQsIGl0IGp1 c3QgcmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGluIEBjb2Rlezp2YWx1ZX0uCisKK0B2aW5k ZXggZm9ybWF0QHJ7IGtleXdvcmR9CitAaXRlbSA6Zm9ybWF0CitUaGlzIHN0cmluZyB3aWxs IGJlIGluc2VydGVkIGluIHRoZSBidWZmZXIgd2hlbiB5b3UgY3JlYXRlIGEgd2lkZ2V0Lgor VGhlIGZvbGxvd2luZyBAc2FtcHslfSBlc2NhcGVzIGFyZSBhdmFpbGFibGU6CisKK0B0YWJs ZSBAc2FtcAorQGl0ZW0gJVsKK0BpdGVteCAlXQorVGhlIHRleHQgaW5zaWRlIHdpbGwgYmUg bWFya2VkIGFzIGEgYnV0dG9uLgorCitCeSBkZWZhdWx0LCB0aGUgdGV4dCB3aWxsIGJlIHNo b3duIGluIEBjb2Rle3dpZGdldC1idXR0b24tZmFjZX0sIGFuZAorc3Vycm91bmRlZCBieSBi cmFja2V0cy4KKworQGl0ZW0gJUB7CitAaXRlbXggJUB9CitUaGUgdGV4dCBpbnNpZGUgd2ls bCBiZSBkaXNwbGF5ZWQgd2l0aCB0aGUgZmFjZSBzcGVjaWZpZWQgYnkKK0Bjb2RlezpzYW1w bGUtZmFjZX0uCisKK0BpdGVtICV2CitUaGlzIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUg YnVmZmVyIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB3aWRnZXQncwordmFsdWUuICBXaGF0IHRo aXMgaXMgZGVwZW5kcyBvbiB0aGUgd2lkZ2V0IHR5cGUuCisKK0BpdGVtICVkCitJbnNlcnQg dGhlIHN0cmluZyBzcGVjaWZpZWQgYnkgQGNvZGV7OmRvY30gaGVyZS4KKworQGl0ZW0gJWgK K0xpa2UgQHNhbXB7JWR9LCB3aXRoIHRoZSBmb2xsb3dpbmcgbW9kaWZpY2F0aW9uczogSWYg dGhlIGRvY3VtZW50YXRpb24KK3N0cmluZyBpcyBtb3JlIHRoYW4gb25lIGxpbmUsIGl0IHdp bGwgYWRkIGEgYnV0dG9uIHdoaWNoIHdpbGwgdG9nZ2xlCitiZXR3ZWVuIHNob3dpbmcgb25s eSB0aGUgZmlyc3QgbGluZSwgYW5kIHNob3dpbmcgdGhlIGZ1bGwgdGV4dC4KK0Z1cnRoZXJt b3JlLCBpZiB0aGVyZSBpcyBubyBAY29kZXs6ZG9jfSBwcm9wZXJ0eSBpbiB0aGUgd2lkZ2V0 LCBpdCB3aWxsCitpbnN0ZWFkIGV4YW1pbmUgdGhlIEBjb2Rlezpkb2N1bWVudGF0aW9uLXBy b3BlcnR5fSBwcm9wZXJ0eS4gIElmIGl0IGlzIGEKK2xhbWJkYSBleHByZXNzaW9uLCBpdCB3 aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSB3aWRnZXQncyB2YWx1ZSBhcyBhbgorYXJndW1lbnQs IGFuZCB0aGUgcmVzdWx0IHdpbGwgYmUgdXNlZCBhcyB0aGUgZG9jdW1lbnRhdGlvbiB0ZXh0 LgorCitAaXRlbSAldAorSW5zZXJ0IHRoZSBzdHJpbmcgc3BlY2lmaWVkIGJ5IEBjb2Rlezp0 YWd9IGhlcmUsIG9yIHRoZSBAY29kZXtwcmluY30KK3JlcHJlc2VudGF0aW9uIG9mIHRoZSB2 YWx1ZSBpZiB0aGVyZSBpcyBubyB0YWcuCisKK0BpdGVtICUlCitJbnNlcnQgYSBsaXRlcmFs IEBzYW1weyV9LgorQGVuZCB0YWJsZQorCitAdmluZGV4IGJ1dHRvbi1mYWNlQHJ7IGtleXdv cmR9CitAaXRlbSA6YnV0dG9uLWZhY2UKK0ZhY2UgdXNlZCB0byBoaWdobGlnaHQgdGV4dCBp bnNpZGUgJVsgJV0gaW4gdGhlIGZvcm1hdC4KKworQHZpbmRleCBidXR0b24tcHJlZml4QHJ7 IGtleXdvcmR9CitAdmluZGV4IGJ1dHRvbi1zdWZmaXhAcnsga2V5d29yZH0KK0BpdGVtIDpi dXR0b24tcHJlZml4CitAaXRlbXggOmJ1dHRvbi1zdWZmaXgKK1N0cmluZ3MgdXNlZCBhcyBw cmVmaXggYW5kIHN1ZmZpeCBmb3Igd2lkZ2V0cyB0aGF0IGFyZSBidXR0b25zLgorCitCeSBk ZWZhdWx0LCB0aGUgdmFsdWVzIGFyZSBAY29kZXt3aWRnZXQtYnV0dG9uLXByZWZpeH0gYW5k CitAY29kZXt3aWRnZXQtYnV0dG9uLXN1ZmZpeH0uCisKK1RleHQgYXJvdW5kICVbICVdIGlu IHRoZSBmb3JtYXQuCisKK1RoZXNlIGNhbiBiZQorQHRhYmxlIEBlbXBoCitAaXRlbSBuaWwK K05vIHRleHQgaXMgaW5zZXJ0ZWQuCisKK0BpdGVtIGEgc3RyaW5nCitUaGUgc3RyaW5nIGlz IGluc2VydGVkIGxpdGVyYWxseS4KKworQGl0ZW0gYSBzeW1ib2wKK1RoZSB2YWx1ZSBvZiB0 aGUgc3ltYm9sIGlzIGV4cGFuZGVkIGFjY29yZGluZyB0byB0aGlzIHRhYmxlLgorQGVuZCB0 YWJsZQorCitAdmluZGV4IGRvY0ByeyBrZXl3b3JkfQorQGl0ZW0gOmRvYworVGhlIHN0cmlu ZyBpbnNlcnRlZCBieSB0aGUgQHNhbXB7JWR9IGVzY2FwZSBpbiB0aGUgZm9ybWF0CitzdHJp bmcuCisKK0B2aW5kZXggdGFnQHJ7IGtleXdvcmR9CitAaXRlbSA6dGFnCitUaGUgc3RyaW5n IGluc2VydGVkIGJ5IHRoZSBAc2FtcHsldH0gZXNjYXBlIGluIHRoZSBmb3JtYXQKK3N0cmlu Zy4KKworQHZpbmRleCB0YWctZ2x5cGhAcnsga2V5d29yZH0KK0BpdGVtIDp0YWctZ2x5cGgK K05hbWUgb2YgaW1hZ2UgdG8gdXNlIGluc3RlYWQgb2YgdGhlIHN0cmluZyBzcGVjaWZpZWQg YnkgQGNvZGV7OnRhZ30gb24KK0VtYWNzZW4gdGhhdCBzdXBwb3J0cyBpdC4KKworQHZpbmRl eCBoZWxwLWVjaG9Acnsga2V5d29yZH0KK0BpdGVtIDpoZWxwLWVjaG8KK1NwZWNpZmllcyBo b3cgdG8gZGlzcGxheSBhIG1lc3NhZ2Ugd2hlbmV2ZXIgeW91IG1vdmUgdG8gdGhlIHdpZGdl dCB3aXRoCitlaXRoZXIgQGNvZGV7d2lkZ2V0LWZvcndhcmR9IG9yIEBjb2Rle3dpZGdldC1i YWNrd2FyZH0gb3IgbW92ZSB0aGUgbW91c2UKK292ZXIgaXQgKHVzaW5nIHRoZSBzdGFuZGFy ZCBAY29kZXtoZWxwLWVjaG99IG1lY2hhbmlzbSkuCisKK1RoZSB2YWx1ZSBpcyBlaXRoZXIg YSBzdHJpbmcgdG8gZGlzcGxheSwgb3IgYSBmdW5jdGlvbiBvZiBvbmUKK2FyZ3VtZW50LCB0 aGUgd2lkZ2V0LiAgSWYgYSBmdW5jdGlvbiwgaXQgc2hvdWxkIHJldHVybiBhIHN0cmluZyB0 bworZGlzcGxheSwgb3IgYSBmb3JtIHRoYXQgZXZhbHVhdGVzIHRvIHN1Y2ggYSBzdHJpbmcu CisKK0B2aW5kZXggZm9sbG93LWxpbmtAcnsga2V5d29yZH0KK0BpdGVtIDpmb2xsb3ctbGlu aworU3BlY2lmaWVzIGhvdyB0byBpbnRlcnByZXQgYSBAa2V5e21vdXNlLTF9IGNsaWNrIG9u IHRoZSB3aWRnZXQuCitAeHJlZntDbGlja2FibGUgVGV4dCwsIERlZmluaW5nIENsaWNrYWJs ZSBUZXh0LCBlbGlzcCwgdGhlIEVtYWNzIExpc3AgUmVmZXJlbmNlIE1hbnVhbH0uCisKK0B2 aW5kZXggaW5kZW50QHJ7IGtleXdvcmR9CitAaXRlbSA6aW5kZW50CitBbiBpbnRlZ2VyIGlu ZGljYXRpbmcgdGhlIGFic29sdXRlIG51bWJlciBvZiBzcGFjZXMgdG8gaW5kZW50IGNoaWxk cmVuCitvZiB0aGlzIHdpZGdldC4gIEl0cyB2YWx1ZSBtaWdodCBiZSBAY29kZXtuaWx9IHRv bywgd2hpY2ggY29ycmVzcG9uZHMKK3RvIGEgdmFsdWUgb2YgMC4KKworVGhlIGRlZmF1bHQg QGNvZGV7OmNyZWF0ZX0gZnVuY3Rpb25zIGFuZCB0aGUgZnVuY3Rpb25zIHRoYXQgY3JlYXRl IHRoZQordmFsdWUgcGVyIHNlIHVzZSB0aGlzIHByb3BlcnR5IGFzIGEgcnVkaW1lbnRhcnkg bGF5b3V0IG1lY2hhbmlzbSBmb3IKK3RoZSB3aWRnZXRzLgorCitAdmluZGV4IG9mZnNldEBy eyBrZXl3b3JkfQorQGl0ZW0gOm9mZnNldAorQW4gaW50ZWdlciBpbmRpY2F0aW5nIGhvdyBt YW55IGV4dHJhIHNwYWNlcyB0byBhZGQgdG8gdGhlIHdpZGdldCdzCitncmFuZGNoaWxkcmVu IGNvbXBhcmVkIHRvIHRoaXMgd2lkZ2V0LgorCitAdmluZGV4IGV4dHJhLW9mZnNldEByeyBr ZXl3b3JkfQorQGl0ZW0gOmV4dHJhLW9mZnNldAorQW4gaW50ZWdlciBpbmRpY2F0aW5nIGhv dyBtYW55IGV4dHJhIHNwYWNlcyB0byBhZGQgdG8gdGhlIHdpZGdldCdzCitjaGlsZHJlbiBj b21wYXJlZCB0byB0aGlzIHdpZGdldC4KKworQHZpbmRleCBtZW51LXRhZ0ByeyBrZXl3b3Jk fQorQGl0ZW0gOm1lbnUtdGFnCitUYWcgdXNlZCBpbiB0aGUgbWVudSB3aGVuIHRoZSB3aWRn ZXQgaXMgdXNlZCBhcyBhbiBvcHRpb24gaW4gYQorQGNvZGV7bWVudS1jaG9pY2V9IHdpZGdl dC4KKworQHZpbmRleCBtZW51LXRhZy1nZXRAcnsga2V5d29yZH0KK0BpdGVtIDptZW51LXRh Zy1nZXQKK0Z1bmN0aW9uIHRoYXQgdGFrZXMgYSB3aWRnZXQgYW5kIHJldHVybnMgdGhlIHRh ZyB3aGVuIHRoZSB3aWRnZXQgaXMKK3VzZWQgYXMgYW4gb3B0aW9uIGluIGEgQGNvZGV7bWVu dS1jaG9pY2V9IHdpZGdldC4KKworQnkgZGVmYXVsdCwgdGhlIHRhZyB1c2VkIHdpbGwgYmUg ZWl0aGVyIHRoZSBAY29kZXs6bWVudS10YWd9IG9yCitAY29kZXs6dGFnfSBwcm9wZXJ0eSBp ZiBwcmVzZW50LCBvciB0aGUgQGNvZGV7cHJpbmN9IHJlcHJlc2VudGF0aW9uIG9mCit0aGUg QGNvZGV7OnZhbHVlfSBwcm9wZXJ0eSBpZiBub3QuCisKK0B2aW5kZXggbWF0Y2hAcnsga2V5 d29yZH0KK0BpdGVtIDptYXRjaAorU2hvdWxkIGJlIGEgZnVuY3Rpb24gY2FsbGVkIHdpdGgg dHdvIGFyZ3VtZW50cywgdGhlIHdpZGdldCBhbmQgYW4KK2V4dGVybmFsIHZhbHVlLCBhbmQg c2hvdWxkIHJldHVybiBub24tQGNvZGV7bmlsfSBpZiB0aGUgd2lkZ2V0IGNhbgorcmVwcmVz ZW50IHRoZSBzcGVjaWZpZWQgdmFsdWUuCisKK0B2aW5kZXggdmFsaWRhdGVAcnsga2V5d29y ZH0KK0BpdGVtIDp2YWxpZGF0ZQorQSBmdW5jdGlvbiB3aGljaCB0YWtlcyBhIHdpZGdldCBh cyBhbiBhcmd1bWVudCwgYW5kIHJldHVybnMgQGNvZGV7bmlsfQoraWYgdGhlIHdpZGdldCdz IGN1cnJlbnQgdmFsdWUgaXMgdmFsaWQgZm9yIHRoZSB3aWRnZXQuCisKK090aGVyd2lzZSwg aXQgc2hvdWxkIHJldHVybiB0aGUgd2lkZ2V0IGNvbnRhaW5pbmcgdGhlIGludmFsaWQgZGF0 YSwKK2FuZCBzZXQgdGhhdCB3aWRnZXQncyBAY29kZXs6ZXJyb3J9IHByb3BlcnR5IHRvIGEg c3RyaW5nIGV4cGxhaW5pbmcKK3RoZSBlcnJvci4KKworQnkgZGVmYXVsdCwgaXQgYWx3YXlz IHJldHVybnMgQGNvZGV7bmlsfS4KKworQHZpbmRleCB0YWItb3JkZXJAcnsga2V5d29yZH0K K0BpdGVtIDp0YWItb3JkZXIKK1NwZWNpZnkgdGhlIG9yZGVyIGluIHdoaWNoIHdpZGdldHMg YXJlIHRyYXZlcnNlZCB3aXRoCitAY29kZXt3aWRnZXQtZm9yd2FyZH0gb3IgQGNvZGV7d2lk Z2V0LWJhY2t3YXJkfS4gIFRoaXMgaXMgb25seSBwYXJ0aWFsbHkKK2ltcGxlbWVudGVkLgor QGVudW1lcmF0ZSBhCitAaXRlbQorV2lkZ2V0cyB3aXRoIHRhYmJpbmcgb3JkZXIgQGNvZGV7 LTF9IGFyZSBpZ25vcmVkLgorCitAaXRlbQorKFVuaW1wbGVtZW50ZWQpIFdoZW4gb24gYSB3 aWRnZXQgd2l0aCB0YWJiaW5nIG9yZGVyIEB2YXJ7bn0sIGdvIHRvIHRoZQorbmV4dCB3aWRn ZXQgaW4gdGhlIGJ1ZmZlciB3aXRoIHRhYmJpbmcgb3JkZXIgQHZhcntuKzF9IG9yIEBjb2Rl e25pbH0sCit3aGljaGV2ZXIgY29tZXMgZmlyc3QuCisKK0BpdGVtCitXaGVuIG9uIGEgd2lk Z2V0IHdpdGggbm8gdGFiYmluZyBvcmRlciBzcGVjaWZpZWQsIGdvIHRvIHRoZSBuZXh0IHdp ZGdldAogaW4gdGhlIGJ1ZmZlciB3aXRoIGEgcG9zaXRpdmUgdGFiYmluZyBvcmRlciwgb3Ig QGNvZGV7bmlsfQogQGVuZCBlbnVtZXJhdGUKIAotQHZpbmRleCBwYXJlbnRAcnsga2V5d29y ZH0KLUBpdGVtIDpwYXJlbnQKLVRoZSBwYXJlbnQgb2YgYSBuZXN0ZWQgd2lkZ2V0IChlLmcu LCBhIEBjb2Rle21lbnUtY2hvaWNlfSBpdGVtIG9yIGFuCi1lbGVtZW50IG9mIGEgQGNvZGV7 ZWRpdGFibGUtbGlzdH0gd2lkZ2V0KS4KK0B2aW5kZXggcGFyZW50QHJ7IGtleXdvcmR9CitA aXRlbSA6cGFyZW50CitUaGUgcGFyZW50IG9mIGEgbmVzdGVkIHdpZGdldCAoZS5nLiwgYSBA Y29kZXttZW51LWNob2ljZX0gaXRlbSBvciBhbgorZWxlbWVudCBvZiBhIEBjb2Rle2VkaXRh YmxlLWxpc3R9IHdpZGdldCkuCisKK0B2aW5kZXggc2libGluZy1hcmdzQHJ7IGtleXdvcmR9 CitAaXRlbSA6c2libGluZy1hcmdzCitUaGlzIGtleXdvcmQgaXMgb25seSB1c2VkIGZvciBt ZW1iZXJzIG9mIGEgQGNvZGV7cmFkaW8tYnV0dG9uLWNob2ljZX0gb3IKK0Bjb2Rle2NoZWNr bGlzdH0uICBUaGUgdmFsdWUgc2hvdWxkIGJlIGEgbGlzdCBvZiBleHRyYSBrZXl3b3JkCith cmd1bWVudHMsIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBAY29kZXty YWRpby1idXR0b259IG9yCitAY29kZXtjaGVja2JveH0gYXNzb2NpYXRlZCB3aXRoIHRoaXMg aXRlbS4KKworQHZpbmRleCBjb21wbGV0aW9ucy1mdW5jdGlvbkByeyBrZXl3b3JkfQorQGl0 ZW0gOmNvbXBsZXRpb25zLWZ1bmN0aW9uCitGdW5jdGlvbiB0aGF0IHRha2VzIGEgd2lkZ2V0 IGFuZCByZXR1cm5zIGNvbXBsZXRpb24gZGF0YSBmb3IgdGhhdAord2lkZ2V0LCBsaWtlIEBj b2Rle2NvbXBsZXRpb24tYXQtcG9pbnQtZnVuY3Rpb25zfSB3b3VsZC4KK0B4cmVme0NvbXBs ZXRpb24sLCxlbGlzcCwgdGhlIEVtYWNzIExpc3AgUmVmZXJlbmNlIE1hbnVhbH0uICBJdCdz Cit1c2VkIGJ5IEBjb2Rle2VkaXRhYmxlLWZpZWxkfSB3aWRnZXRzIHRvIHByb3ZpZGUgY29t cGxldGlvbnMuCisKK0J5IGRlZmF1bHQsIGl0IGxvb2tzIGludG8gdGhlIHByb3BlcnR5IEBj b2Rlezpjb21wbGV0aW9uc30sIHdoaWNoCitzaG91bGQgYmUgYSBjb21wbGV0aW9uIHRhYmxl LiAgSWYgQGNvZGV7OmNvbXBsZXRpb25zfSBpcyBAY29kZXtuaWx9LAordGhlbiBpdCBjYWxs cyB0aGUgZnVuY3Rpb24gc3RvcmVkIGVpdGhlciBpbiB0aGUgQGNvZGV7OmNvbXBsZXRlfSBv cgorQGNvZGV7OmNvbXBsZXRlLWZ1bmN0aW9ufSBwcm9wZXJ0eS4KKworQHZpbmRleCBmb3Jt YXQtaGFuZGxlckByeyBrZXl3b3JkfQorQGl0ZW0gOmZvcm1hdC1oYW5kbGVyCitGdW5jdGlv biB0byBoYW5kbGUgdW5rbm93biBAc2FtcHslfSBlc2NhcGVzIGluIHRoZSBmb3JtYXQgc3Ry aW5nLgorCitJdCB0YWtlcyBhIHdpZGdldCBhbmQgdGhlIGNoYXJhY3RlciB0aGF0IGZvbGxv d3MgdGhlIEBzYW1weyV9IGFzCithcmd1bWVudHMuICBZb3UgY2FuIHNldCB0aGlzIHRvIGFs bG93IHlvdXIgd2lkZ2V0IHRvIGhhbmRsZQorbm9uLXN0YW5kYXJkIGVzY2FwZXMgaW4geW91 ciBvd24gc3BlY2lhbGl6ZWQgd2lkZ2V0cy4KKworQGZpbmRleCB3aWRnZXQtZGVmYXVsdC1m b3JtYXQtaGFuZGxlcgorWW91IHNob3VsZCBlbmQgdXAgY2FsbGluZyBAY29kZXt3aWRnZXQt ZGVmYXVsdC1mb3JtYXQtaGFuZGxlcn0gdG8gaGFuZGxlCit1bmtub3duIGVzY2FwZSBzZXF1 ZW5jZXMsIHdoaWNoIHdpbGwgaGFuZGxlIHRoZSBAc2FtcHslaH0gYW5kIGFueSBmdXR1cmUK K2VzY2FwZSBzZXF1ZW5jZXMsIGFzIHdlbGwgYXMgZ2l2ZSBhbiBlcnJvciBmb3IgdW5rbm93 biBlc2NhcGVzLgorCitAdmluZGV4IGJ1dHRvbi1mYWNlLWdldEByeyBrZXl3b3JkfQorQGl0 ZW0gOmJ1dHRvbi1mYWNlLWdldAorRnVuY3Rpb24gdG8gcmV0dXJuIHRoZSBmYWNlIHVzZWQg dG8gZm9udGlmeSBhIHdpZGdldCBidXR0b24uCisKK1Rha2VzIGEgd2lkZ2V0IGFuZCByZXR1 cm5zIGFuIGFwcHJvcHJpYXRlIGZhY2UgZm9yIHRoZSB3aWRnZXQuICBCeQorZGVmYXVsdCwg aXQgZWl0aGVyIHJldHVybnMgdGhlIGZhY2Ugc3RvcmVkIGluIHRoZSBAY29kZXs6YnV0dG9u LWZhY2V9Citwcm9wZXJ0eSwgb3IgY2FsbHMgdGhlIEBjb2RlezpidXR0b24tZmFjZS1nZXR9 IGZ1bmN0aW9uIGZyb20gdGhlCitwYXJlbnQgb2YgdGhlIHdpZGdldCwgaWYgaXQgaGFzIG9u ZS4KKworQHZpbmRleCBtb3VzZS1mYWNlLWdldEByeyBrZXl3b3JkfQorQGl0ZW0gOm1vdXNl LWZhY2UtZ2V0CitGdW5jdGlvbiB0byByZXR1cm4gdGhlIGZhY2UgdXNlZCB0byBmb250aWZ5 IGEgd2lkZ2V0IHdoZW4gdGhlIG1vdXNlCitwb2ludGVyIGhvdmVycyBvdmVyIGl0LgorCitU YWtlcyBhIHdpZGdldCBhbmQgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSBmYWNlLiAgQnkgZGVm YXVsdCwgaXQgZWl0aGVyCityZXR1cm5zIHRoZSBmYWNlIHN0b3JlZCBpbiB0aGUgQGNvZGV7 Om1vdXNlLWZhY2V9IHByb3BlcnR5LCBvciBjYWxscwordGhlIEBjb2RlezpidXR0b24tZmFj ZS1nZXR9IGZ1bmN0aW9uIGZyb20gdGhlIHBhcmVudCBvZiB0aGUgd2lkZ2V0LCBpZgoraXQg aGFzIG9uZS4KKworQHZpbmRleCBjb3B5QHJ7IGtleXdvcmR9CitAaXRlbSA6Y29weQorRnVu Y3Rpb24gdG8gZGVlcCBjb3B5IGEgd2lkZ2V0IHR5cGUuCisKK0l0IHRha2VzIGEgc2hhbGxv dyBjb3B5IG9mIHRoZSB3aWRnZXQgdHlwZSBhcyBhbiBhcmd1bWVudCAobWFkZSBieQorQGNv ZGV7Y29weS1zZXF1ZW5jZX0pLCBhbmQgcmV0dXJucyBhIGRlZXAgY29weS4gIFRoZSBwdXJw b3NlIG9mIHRoaXMKK2lzIHRvIGF2b2lkIGhhdmluZyBkaWZmZXJlbnQgaW5zdGFuY2VzIG9m IGNvbWJpbmVkIHdpZGdldHMgc2hhcmUKK25lc3RlZCBhdHRyaWJ1dGVzLgorCitJdHMgdmFs dWUgYnkgZGVmYXVsdCBpcyBAY29kZXtpZGVudGl0eX0uCisKK0B2aW5kZXggYWN0aXZlQHJ7 IGtleXdvcmR9CitAaXRlbSA6YWN0aXZlCitGdW5jdGlvbiB0aGF0IHRha2VzIGEgd2lkZ2V0 IGFuZCByZXR1cm5zIEBjb2Rle3R9IGlmIGl0IGlzIGFjdGl2ZS4KKworQSB3aWRnZXQgbWln aHQgYmUgZWZmZWN0aXZlbHkgYWx3YXlzIGFjdGl2ZSwgaWYgaXRzCitAY29kZXs6YWx3YXlz LWFjdGl2ZX0gcHJvcGVydHkgaXMgQGNvZGV7dH0uCisKK0BjaW5kZXggYWN0aXZlIHdpZGdl dAorQGNpbmRleCBpbmFjdGl2ZSB3aWRnZXQKK0BjaW5kZXggYWN0aXZhdGUgYSB3aWRnZXQK K0BjaW5kZXggZGVhY3RpdmF0ZSBhIHdpZGdldAorV2lkZ2V0cyBjYW4gYmUgaW4gdHdvIHN0 YXRlczogYWN0aXZlLCB3aGljaCBtZWFucyB0aGV5IGFyZSBtb2RpZmlhYmxlIGJ5Cit0aGUg dXNlciwgb3IgaW5hY3RpdmUsIHdoaWNoIG1lYW5zIHRoZXkgY2Fubm90IGJlIG1vZGlmaWVk IGJ5IHRoZSB1c2VyLgorWW91IGNhbiBxdWVyeSBvciBzZXQgdGhlIHN0YXRlIHdpdGggdGhl IGZvbGxvd2luZyBjb2RlOgorCitAbGlzcAorOzsgRXhhbWluZSBpZiBAdmFye3dpZGdldH0g aXMgYWN0aXZlIG9yIG5vdC4KKyhpZiAod2lkZ2V0LWFwcGx5IEB2YXJ7d2lkZ2V0fSA6YWN0 aXZlKQorICAgIChtZXNzYWdlICJXaWRnZXQgaXMgYWN0aXZlLiIpCisgIChtZXNzYWdlICJX aWRnZXQgaXMgaW5hY3RpdmUuIikKKworOzsgTWFrZSBAdmFye3dpZGdldH0gaW5hY3RpdmUu Cisod2lkZ2V0LWFwcGx5IEB2YXJ7d2lkZ2V0fSA6ZGVhY3RpdmF0ZSkKKworOzsgTWFrZSBA dmFye3dpZGdldH0gYWN0aXZlLgorKHdpZGdldC1hcHBseSBAdmFye3dpZGdldH0gOmFjdGl2 YXRlKQorQGVuZCBsaXNwCisKK0Egd2lkZ2V0IGlzIGluYWN0aXZlIGlmIGl0LCBvciBhbnkg b2YgaXRzIGFuY2VzdG9ycyAoZm91bmQgYnkKK2ZvbGxvd2luZyB0aGUgQGNvZGV7OnBhcmVu dH0gbGluayksIGhhdmUgYmVlbiBkZWFjdGl2YXRlZC4gIFRvIG1ha2Ugc3VyZQorYSB3aWRn ZXQgaXMgcmVhbGx5IGFjdGl2ZSwgeW91IG11c3QgdGhlcmVmb3JlIGFjdGl2YXRlIGJvdGgg aXQgYW5kCithbGwgaXRzIGFuY2VzdG9ycy4KKworQGxpc3AKKyh3aGlsZSB3aWRnZXQKKyAg KHdpZGdldC1hcHBseSB3aWRnZXQgOmFjdGl2YXRlKQorICAoc2V0cSB3aWRnZXQgKHdpZGdl dC1nZXQgd2lkZ2V0IDpwYXJlbnQpKSkKK0BlbmQgbGlzcAorCitZb3UgY2FuIGNoZWNrIGlm IGEgd2lkZ2V0IGhhcyBiZWVuIG1hZGUgaW5hY3RpdmUgYnkgZXhhbWluaW5nIHRoZSB2YWx1 ZQorb2YgdGhlIEBjb2RlezppbmFjdGl2ZX0ga2V5d29yZC4gIElmIHRoaXMgaXMgbm9uLUBj b2Rle25pbH0sIHRoZSB3aWRnZXQgaXRzZWxmCitoYXMgYmVlbiBkZWFjdGl2YXRlZC4gIFRo aXMgaXMgZGlmZmVyZW50IGZyb20gdXNpbmcgdGhlIEBjb2RlezphY3RpdmV9CitrZXl3b3Jk LCBpbiB0aGF0IHRoZSBsYXR0ZXIgdGVsbHMgeW91IGlmIHRoZSB3aWRnZXQgQHN0cm9uZ3tv cn0gYW55IG9mCitpdHMgYW5jZXN0b3JzIGhhdmUgYmVlbiBkZWFjdGl2YXRlZC4gIERvIG5v dCBhdHRlbXB0IHRvIHNldCB0aGUKK0Bjb2RlezppbmFjdGl2ZX0ga2V5d29yZCBkaXJlY3Rs eS4gIFVzZSB0aGUgQGNvZGV7OmFjdGl2YXRlfQorQGNvZGV7OmRlYWN0aXZhdGV9IGZ1bmN0 aW9ucyBpbnN0ZWFkLgorCitAdmluZGV4IGFjdGl2YXRlQHJ7IGtleXdvcmR9CitAaXRlbSA6 YWN0aXZhdGUKK0Z1bmN0aW9uIHRoYXQgdGFrZXMgYSB3aWRnZXQgYW5kIG1ha2VzIGl0IGFj dGl2ZSBmb3IgdXNlcgorbW9kaWZpY2F0aW9ucy4KKworQHZpbmRleCBkZWFjdGl2YXRlQHJ7 IGtleXdvcmR9CitAaXRlbSA6ZGVhY3RpdmF0ZQorRnVuY3Rpb24gdGhhdCB0YWtlcyBhIHdp ZGdldCBhbmQgbWFrZXMgaXQgaW5hY3RpdmUgZm9yIHVzZXIKK21vZGlmaWNhdGlvbnMuCisK K0B2aW5kZXggYWN0aW9uQHJ7IGtleXdvcmR9CitAaXRlbSA6YWN0aW9uCitGdW5jdGlvbiB0 aGF0IHRha2VzIGEgd2lkZ2V0IGFuZCBvcHRpb25hbGx5IGFuIGV2ZW50LCBhbmQgaGFuZGxl cyBhCit1c2VyIGluaXRpYXRlZCBldmVudC4KKworQnkgZGVmYXVsdCwgdXNlcyB0aGUgQGNv ZGV7Om5vdGlmeX0gZnVuY3Rpb24gdG8gbm90aWZ5IHRoZSB3aWRnZXQncworcGFyZW50IGFi b3V0IHRoZSBldmVudC4KKworQHZpbmRleCBtb3VzZS1kb3duLWFjdGlvbkByeyBrZXl3b3Jk fQorQGl0ZW0gOm1vdXNlLWRvd24tYWN0aW9uCitGdW5jdGlvbiB0aGF0IHRha2VzIGEgd2lk Z2V0IGFuZCBvcHRpb25hbGx5IGFuIGV2ZW50LCBhbmQgaGFuZGxlcyBhCittb3VzZSBjbGlj ayBvbiB0aGUgd2lkZ2V0LgorCitCeSBkZWZhdWx0LCBpdCBkb2VzIG5vdGhpbmcuCisKK0B2 aW5kZXggbm90aWZ5QHJ7IGtleXdvcmR9CitAaXRlbSA6bm90aWZ5CitBIGZ1bmN0aW9uIGNh bGxlZCBlYWNoIHRpbWUgdGhlIHdpZGdldCBvciBhIG5lc3RlZCB3aWRnZXQgaXMgY2hhbmdl ZC4KKworVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHR3byBvciB0aHJlZSBhcmd1bWVu dHMuICBUaGUgZmlyc3QgYXJndW1lbnQKK2lzIHRoZSB3aWRnZXQgaXRzZWxmLCB0aGUgc2Vj b25kIGFyZ3VtZW50IGlzIHRoZSB3aWRnZXQgdGhhdCB3YXMKK2NoYW5nZWQsIGFuZCB0aGUg dGhpcmQgYXJndW1lbnQgaXMgdGhlIGV2ZW50IGxlYWRpbmcgdG8gdGhlIGNoYW5nZSwgaWYK K2FueS4KKworQnkgZGVmYXVsdCwgaXQgcGFzc2VzIHRoZSBub3RpZmljYXRpb24gdG8gdGhl IHdpZGdldCdzIHBhcmVudC4KKworQHZpbmRleCBwcm9tcHQtdmFsdWVAcnsga2V5d29yZH0K K0BpdGVtIDpwcm9tcHQtdmFsdWUKK0Z1bmN0aW9uIHRvIHByb21wdCBmb3IgYSB2YWx1ZSBp biB0aGUgbWluaWJ1ZmZlci4KKworVGhlIGZ1bmN0aW9uIHNob3VsZCB0YWtlIGZvdXIgYXJn dW1lbnRzLCBhIHdpZGdldCwgYSBwcm9tcHQgKGEKK3N0cmluZyksIGEgdmFsdWUgYW5kIGEg Ym9vbGVhbiwgYW5kIHNob3VsZCByZXR1cm4gYSB2YWx1ZSBmb3IgdGhlCit3aWRnZXQsIGVu dGVyZWQgYnkgdGhlIHVzZXIuCisKK1RoZSBwcm9tcHQgaXMgdGhlIHByb21wdCB0byB1c2Uu ICBUaGUgdmFsdWUgaXMgdGhlIGRlZmF1bHQgdmFsdWUgdG8KK3VzZSwgdW5sZXNzIHRoZSBm b3VydGhhIGFyZ3VtZW50IGlzIG5vbi1AY29kZXtuaWx9LCBpbiB3aGljaCBjYXNlCit0aGVy ZSBpcyBubyBkZWZhdWx0IHZhbHVlLgorCitUaGUgZnVuY3Rpb24gc2hvdWxkIHJlYWQgdGhl IHZhbHVlIHVzaW5nIHRoZSBtZXRob2QgbW9zdCBuYXR1cmFsIGZvcgordGhpcyB3aWRnZXQs IGFuZCBkb2VzIG5vdCBoYXZlIHRvIGNoZWNrIHRoYXQgaXQgbWF0Y2hlcy4KK0BlbmQgdGFi bGUKKworQG5vZGUgaXRlbQorQHN1YnNlY3Rpb24gVGhlIEBjb2Rle2l0ZW19IFdpZGdldAor QGZpbmRleCBpdGVtQHJ7IHdpZGdldH0KKworU3ludGF4OgorCitAZXhhbXBsZQorQHZhcnt0 eXBlfSA6Oj0gKGl0ZW0gW0B2YXJ7a2V5d29yZH0gQHZhcnthcmd1bWVudH1dLi4uIEB2YXJ7 dmFsdWV9KQorQGVuZCBleGFtcGxlCiAKLUB2aW5kZXggc2libGluZy1hcmdzQHJ7IGtleXdv cmR9Ci1AaXRlbSA6c2libGluZy1hcmdzCi1UaGlzIGtleXdvcmQgaXMgb25seSB1c2VkIGZv ciBtZW1iZXJzIG9mIGEgQGNvZGV7cmFkaW8tYnV0dG9uLWNob2ljZX0gb3IKLUBjb2Rle2No ZWNrbGlzdH0uICBUaGUgdmFsdWUgc2hvdWxkIGJlIGEgbGlzdCBvZiBleHRyYSBrZXl3b3Jk Ci1hcmd1bWVudHMsIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBAY29k ZXtyYWRpby1idXR0b259IG9yCi1AY29kZXtjaGVja2JveH0gYXNzb2NpYXRlZCB3aXRoIHRo aXMgaXRlbS4KK0EgdXNlZnVsIHdpZGdldCB0aGF0IGhvbGRzIGEgY29uc3RhbnQgdmFsdWUs IGFuZCBjYW4gYmUgaW5jbHVkZWQgaW4KK290aGVyIHdpZGdldHMuICBJdHMgc3VwZXIgaXMg dGhlIEBjb2Rle2RlZmF1bHR9IHdpZGdldC4KIAotQGVuZCB0YWJsZQorQXMgY2FuIGJlIHNl ZW4gaW4gdGhlIHN5bnRheCwgdGhlIEBjb2Rle2l0ZW19IHdpZGdldCBpcyBvbmUgb2YgdGhl Cit3aWRnZXQgdGhhdCBoYW5kbGVzIHRoZSBAdmFye2FyZ3N9IGFyZ3VtZW50IHRvIEBjb2Rl e3dpZGdldC1jcmVhdGV9IGluCithIHNwZWNpZmljIHdheS4gIElmIHByZXNlbnQsIEB2YXJ7 dmFsdWV9IGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUKK0Bjb2Rlezp2YWx1ZX0gcHJvcGVy dHkuICBXaGVuIGNyZWF0ZWQsIGl0IGluc2VydHMgdGhlIHZhbHVlIGFzIGEKK3N0cmluZyBp biB0aGUgYnVmZmVyLgogCi1AZGVmZm4ge1VzZXIgT3B0aW9ufSB3aWRnZXQtaW1hZ2UtZGly ZWN0b3J5Ci1EaXJlY3Rvcnkgd2hlcmUgV2lkZ2V0IHNob3VsZCBsb29rIGZvciBpbWFnZXMu Ci1XaWRnZXQgd2lsbCBsb29rIGhlcmUgZm9yIGEgZmlsZSB3aXRoIHRoZSBzYW1lIG5hbWUg YXMgc3BlY2lmaWVkIGZvciB0aGUKLWltYWdlLCB3aXRoIGVpdGhlciBhIEBmaWxley54cG19 IChpZiBzdXBwb3J0ZWQpIG9yIEBmaWxley54Ym19IGV4dGVuc2lvbi4KLUBlbmQgZGVmZm4K K0J5IGRlZmF1bHQsIGl0IGhhcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CiAKLUBkZWZm bntVc2VyIE9wdGlvbn0gd2lkZ2V0LWltYWdlLWVuYWJsZQotSWYgbm9uLUBjb2Rle25pbH0s IGFsbG93IGltYWdlcyB0byBhcHBlYXIgb24gZGlzcGxheXMgd2hlcmUgdGhleSBhcmUgc3Vw cG9ydGVkLgotQGVuZCBkZWZmbgorQHRhYmxlIEBjb2RlCitAaXRlbSA6Y29udmVydC13aWRn ZXQKK1RoZSBmdW5jdGlvbiB0aGF0IGFsbG93cyBpdCB0byBoYW5kbGUgQHZhcnt2YWx1ZX0u CiAKK0BpdGVtIDp2YWx1ZS1jcmVhdGUKK1ByaW50cyB0aGUgcmVwcmVzZW50YXRpb24gb2Yg QGNvZGV7OnZhbHVlfSBpbiB0aGUgYnVmZmVyLgogCi1AbWVudQotKiBsaW5rOjoKLSogdXJs LWxpbms6OgotKiBpbmZvLWxpbms6OgotKiBwdXNoLWJ1dHRvbjo6Ci0qIGVkaXRhYmxlLWZp ZWxkOjoKLSogdGV4dDo6Ci0qIG1lbnUtY2hvaWNlOjoKLSogcmFkaW8tYnV0dG9uLWNob2lj ZTo6Ci0qIGl0ZW06OgotKiBjaG9pY2UtaXRlbTo6Ci0qIHRvZ2dsZTo6Ci0qIGNoZWNrYm94 OjoKLSogY2hlY2tsaXN0OjoKLSogZWRpdGFibGUtbGlzdDo6Ci0qIGdyb3VwOjoKLUBlbmQg bWVudQorQGl0ZW0gOnZhbHVlLWdldAorUmV0dXJucyB0aGUgdmFsdWUgc3RvcmVkIGluIEBj b2Rlezp2YWx1ZX0uCisKK0BpdGVtIDptYXRjaAorQSB2YWx1ZSBtYXRjaGVzIHRoZSBAY29k ZXtpdGVtfSB3aWRnZXQgaWYgaXQncyBAY29kZXtlcXVhbH0gdG8gaXRzCitAY29kZXs6dmFs dWV9LgorCitAaXRlbSA6bWF0Y2gtaW5saW5lCitJbmxpbmUgdmFsdWVzIG1hdGNoIHRoZSBA Y29kZXtpdGVtfSB3aWRnZXQgaWYgQGNvZGV7OnZhbHVlfSBpcyBhCitzdWJsaXN0IG9mIHZh bHVlcy4KKworQGl0ZW0gOmFjdGlvbgorVGhlIEBjb2Rle2l0ZW19IHdpZGdldCBub3RpZmll cyBpdHNlbGYgb2YgYW4gZXZlbnQuCisKK0BpdGVtIDpmb3JtYXQKK0J5IGRlZmF1bHQsIHRo ZSBAY29kZXtpdGVtfSB3aWRnZXQgaW5zZXJ0cyBpdHMgdGFnIGluIHRoZSBidWZmZXIuCitA ZW5kIHRhYmxlCiAKIEBub2RlIGxpbmsKLUBzZWN0aW9uIFRoZSBAY29kZXtsaW5rfSBXaWRn ZXQKK0BzdWJzZWN0aW9uIFRoZSBAY29kZXtsaW5rfSBXaWRnZXQKIEBmaW5kZXggbGlua0By eyB3aWRnZXR9CiAKIFN5bnRheDoKQEAgLTczMSwyMiArMTQyMSw0MiBAQCBsaW5rCiBAdmFy e3R5cGV9IDo6PSAobGluayBbQHZhcntrZXl3b3JkfSBAdmFye2FyZ3VtZW50fV0uLi4gIFsg QHZhcnt2YWx1ZX0gXSkKIEBlbmQgZXhhbXBsZQogCitBIHdpZGdldCB0byByZXByZXNlbnQg YW4gZW1iZWRkZWQgbGluay4gIEl0cyBzdXBlciBpcyB0aGUgQGNvZGV7aXRlbX0KK3dpZGdl dC4KKwogVGhlIEB2YXJ7dmFsdWV9LCBpZiBwcmVzZW50LCBpcyB1c2VkIHRvIGluaXRpYWxp emUgdGhlIEBjb2Rlezp2YWx1ZX0KIHByb3BlcnR5LiAgVGhlIHZhbHVlIHNob3VsZCBiZSBh IHN0cmluZywgd2hpY2ggd2lsbCBiZSBpbnNlcnRlZCBpbiB0aGUKIGJ1ZmZlci4KIAotQnkg ZGVmYXVsdCB0aGUgbGluayB3aWxsIGJlIHNob3duIGluIGJyYWNrZXRzLgorQnkgZGVmYXVs dCwgaXQgaGFzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKIAotQGRlZm9wdCB3aWRnZXQt bGluay1wcmVmaXgKLVN0cmluZyB0byBwcmVmaXggbGlua3MuCi1AZW5kIGRlZm9wdAorQHRh YmxlIEBjb2RlCitAaXRlbSA6YnV0dG9uLXByZWZpeAorVGhlIHZhbHVlIG9mIEBjb2Rle3dp ZGdldC1saW5rLXByZWZpeH0uCiAKLUBkZWZvcHQgd2lkZ2V0LWxpbmstc3VmZml4Ci1TdHJp bmcgdG8gc3VmZml4IGxpbmtzLgotQGVuZCBkZWZvcHQKK0BpdGVtIDpidXR0b24tc3VmZml4 CitUaGUgdmFsdWUgb2YgQGNvZGV7d2lkZ2V0LWxpbmstc3VmZml4fS4KKworQGl0ZW0gOmtl eW1hcAorQSBjdXN0b20ga2V5bWFwIGZvciB0aGUgbGluayB3aWRnZXQsIHNvIHRoYXQgaXQg Y2FuIHJlc3BvbmQgdG8gbW91c2UgY2xpY2tzLgorCitAaXRlbSA6Zm9sbG93LWxpbmsKK1Ro aXMgcHJvcGVydHkgYWxsb3dzIHRoZSBsaW5rIHRvIHJlc3BlY3QgdGhlIHZhbHVlIG9mCitA Y29kZXttb3VzZS0xLWNsaWNrLWZvbGxvd3MtbGlua30uICBAeHJlZntDbGlja2FibGUgVGV4 dCwsLGVsaXNwLCB0aGUgRW1hY3MgTGlzcCBSZWZlcmVuY2UgTWFudWFsfS4KKworQGl0ZW0g OmZvcm1hdAorQnV0dG9uaXplcyB0aGUgbGluaywgdG8gbWFrZSBpdCBjbGlja2FibGUuCisK K0lmIHlvdSBvdmVycmlkZSB0aGlzIHByb3BlcnR5LCB5b3Ugc2hvdWxkIG1ha2Ugc3VyZSB0 byBwcm92aWRlIHRoZQorQHNhbXB7JVt9IGFuZCBAc2FtcHslXX0gZXNjYXBlIHNlcXVlbmNl cywgc28gdGhhdCB0aGUgbGluayBpcworY2xpY2thYmxlLgorCitAZW5kIHRhYmxlCisKK0J5 IGRlZmF1bHQgdGhlIGxpbmsgd2lsbCBiZSBzaG93biBpbiBicmFja2V0cy4KIAogQG5vZGUg dXJsLWxpbmsKLUBzZWN0aW9uIFRoZSBAY29kZXt1cmwtbGlua30gV2lkZ2V0CitAc3Vic2Vj dGlvbiBUaGUgQGNvZGV7dXJsLWxpbmt9IFdpZGdldAogQGZpbmRleCB1cmwtbGlua0ByeyB3 aWRnZXR9CiAKIFN5bnRheDoKQEAgLTc1NSwxMiArMTQ2NSwxNCBAQCB1cmwtbGluawogQHZh cnt0eXBlfSA6Oj0gKHVybC1saW5rIFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4u LiAgQHZhcnt1cmx9KQogQGVuZCBleGFtcGxlCiAKLUBmaW5kZXggYnJvd3NlLXVybC1icm93 c2VyLWZ1bmN0aW9uQHJ7LCBhbmQgQGNvZGV7dXJsLWxpbmt9IHdpZGdldH0KLVdoZW4gdGhp cyBsaW5rIGlzIGludm9rZWQsIHRoZSBAYWNyb255bXtXV1d9IGJyb3dzZXIgc3BlY2lmaWVk IGJ5Ci1AY29kZXticm93c2UtdXJsLWJyb3dzZXItZnVuY3Rpb259IHdpbGwgYmUgY2FsbGVk IHdpdGggQHZhcnt1cmx9LgorQSB3aWRnZXQgdG8gcmVwcmVzZW50IGEgbGluayB0byBhIHdl YiBwYWdlLiAgSXRzIHN1cGVyIGlzIHRoZQorQGNvZGV7bGlua30gd2lkZ2V0LgorCitJdCBv dmVycmlkZXMgdGhlIEBjb2RlezphY3Rpb259IHByb3BlcnR5IHRvIG9wZW4gdXAgdGhlIEB2 YXJ7dXJsfQorc3BlY2lmaWVkLgogCiBAbm9kZSBpbmZvLWxpbmsKLUBzZWN0aW9uIFRoZSBA Y29kZXtpbmZvLWxpbmt9IFdpZGdldAorQHN1YnNlY3Rpb24gVGhlIEBjb2Rle2luZm8tbGlu a30gV2lkZ2V0CiBAZmluZGV4IGluZm8tbGlua0ByeyB3aWRnZXR9CiAKIFN5bnRheDoKQEAg LTc2OSwxMSArMTQ4MSwxMDQgQEAgaW5mby1saW5rCiBAdmFye3R5cGV9IDo6PSAoaW5mby1s aW5rIFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiAgQHZhcnthZGRyZXNzfSkK IEBlbmQgZXhhbXBsZQogCi1XaGVuIHRoaXMgbGluayBpcyBpbnZva2VkLCB0aGUgYnVpbHQt aW4gSW5mbyByZWFkZXIgaXMgc3RhcnRlZCBvbgotQHZhcnthZGRyZXNzfS4KK0Egd2lkZ2V0 IHRvIHJlcHJlc2VudCBhIGxpbmsgdG8gYW4gaW5mbyBmaWxlLiAgSXRzIHN1cGVyIGlzIHRo ZQorQGNvZGV7bGlua30gd2lkZ2V0LgorCitJdCBvdmVycmlkZXMgdGhlIEBjb2RlezphY3Rp b259IHByb3BlcnR5LCB0byBhIGZ1bmN0aW9uIHRvIHN0YXJ0IHRoZQorYnVpbHQtaW4gSW5m byByZWFkZXIgb24gQHZhcnthZGRyZXNzfSwgd2hlbiBpbnZva2VkLgorCitAbm9kZSBmdW5j dGlvbi1saW5rCitAc3Vic2VjdGlvbiBUaGUgQGNvZGV7ZnVuY3Rpb24tbGlua30gV2lkZ2V0 CitAZmluZGV4IGZ1bmN0aW9uLWxpbmtAcnsgd2lkZ2V0fQorU3ludGF4OgorCitAZXhhbXBs ZQorQHZhcnt0eXBlfSA6Oj0gKGZ1bmN0aW9uLWxpbmsgW0B2YXJ7a2V5d29yZH0gQHZhcnth cmd1bWVudH1dLi4uICBAdmFye2Z1bmN0aW9ufSkKK0BlbmQgZXhhbXBsZQorCitBIHdpZGdl dCB0byByZXByZXNlbnQgYSBsaW5rIHRvIGFuIEVtYWNzIGZ1bmN0aW9uLiAgSXRzIHN1cGVy IGlzIHRoZQorQGNvZGV7bGlua30gd2lkZ2V0LgorCitJdCBvdmVycmlkZXMgdGhlIEBjb2Rl ezphY3Rpb259IHByb3BlcnR5LCB0byBhIGZ1bmN0aW9uIHRvIGRlc2NyaWJlCitAdmFye2Z1 bmN0aW9ufS4KKworQG5vZGUgdmFyaWFibGUtbGluaworQHN1YnNlY3Rpb24gVGhlIEBjb2Rl e3ZhcmlhYmxlLWxpbmt9IFdpZGdldAorQGZpbmRleCB2YXJpYWJsZS1saW5rQHJ7IHdpZGdl dH0KK1N5bnRheDoKKworQGV4YW1wbGUKK0B2YXJ7dHlwZX0gOjo9ICh2YXJpYWJsZS1saW5r IFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiAgQHZhcnt2YXJ9KQorQGVuZCBl eGFtcGxlCisKK0Egd2lkZ2V0IHRvIHJlcHJlc2VudCBhIGxpbmsgdG8gYW4gRW1hY3MgdmFy aWFibGUuICBJdHMgc3VwZXIgaXMgdGhlCitAY29kZXtsaW5rfSB3aWRnZXQuCisKK0l0IG92 ZXJyaWRlcyB0aGUgQGNvZGV7OmFjdGlvbn0gcHJvcGVydHksIHRvIGEgZnVuY3Rpb24gdG8g ZGVzY3JpYmUKK0B2YXJ7dmFyfS4KKworQG5vZGUgZmFjZS1saW5rCitAc3Vic2VjdGlvbiBU aGUgQGNvZGV7ZmFjZS1saW5rfSBXaWRnZXQKK0BmaW5kZXggZmFjZS1saW5rQHJ7IHdpZGdl dH0KK1N5bnRheDoKKworQGV4YW1wbGUKK0B2YXJ7dHlwZX0gOjo9IChmYWNlLWxpbmsgW0B2 YXJ7a2V5d29yZH0gQHZhcnthcmd1bWVudH1dLi4uICBAdmFye2ZhY2V9KQorQGVuZCBleGFt cGxlCisKK0Egd2lkZ2V0IHRvIHJlcHJlc2VudCBhIGxpbmsgdG8gYW4gRW1hY3MgZmFjZS4g IEl0cyBzdXBlciBpcyB0aGUKK0Bjb2Rle2xpbmt9IHdpZGdldC4KKworSXQgb3ZlcnJpZGVz IHRoZSBAY29kZXs6YWN0aW9ufSBwcm9wZXJ0eSwgdG8gYSBmdW5jdGlvbiB0byBkZXNjcmli ZQorQHZhcntmYWNlfS4KKworQG5vZGUgZmlsZS1saW5rCitAc3Vic2VjdGlvbiBUaGUgQGNv ZGV7ZmlsZS1saW5rfSBXaWRnZXQKK0BmaW5kZXggZmlsZS1saW5rQHJ7IHdpZGdldH0KK1N5 bnRheDoKKworQGV4YW1wbGUKK0B2YXJ7dHlwZX0gOjo9IChmaWxlLWxpbmsgW0B2YXJ7a2V5 d29yZH0gQHZhcnthcmd1bWVudH1dLi4uICBAdmFye2ZpbGV9KQorQGVuZCBleGFtcGxlCisK K0Egd2lkZ2V0IHRvIHJlcHJlc2VudCBhIGxpbmsgdG8gYSBmaWxlLiAgSXRzIHN1cGVyIGlz IHRoZQorQGNvZGV7bGlua30gd2lkZ2V0LgorCitJdCBvdmVycmlkZXMgdGhlIEBjb2Rlezph Y3Rpb259IHByb3BlcnR5LCB0byBhIGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGZpbGUKK0B2YXJ7 ZmlsZX0uCisKK0Bub2RlIGVtYWNzLWxpYnJhcnktbGluaworQHN1YnNlY3Rpb24gVGhlIEBj b2Rle2VtYWNzLWxpYnJhcnktbGlua30gV2lkZ2V0CitAZmluZGV4IGVtYWNzLWxpYnJhcnkt bGlua0ByeyB3aWRnZXR9CitTeW50YXg6CisKK0BleGFtcGxlCitAdmFye3R5cGV9IDo6PSAo ZW1hY3MtbGlicmFyeS1saW5rIFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiAg QHZhcntmaWxlfSkKK0BlbmQgZXhhbXBsZQorCitBIHdpZGdldCB0byByZXByZXNlbnQgYSBs aW5rIHRvIGFuIEVtYWNzIExpc3AgZmlsZS4gIEl0cyBzdXBlciBpcyB0aGUKK0Bjb2Rle2xp bmt9IHdpZGdldC4KKworSXQgb3ZlcnJpZGVzIHRoZSBAY29kZXs6YWN0aW9ufSBwcm9wZXJ0 eSwgdG8gYSBmdW5jdGlvbiB0byBmaW5kIHRoZSBmaWxlCitAdmFye2ZpbGV9LgorCitAbm9k ZSBlbWFjcy1jb21tZW50YXJ5LWxpbmsKK0BzdWJzZWN0aW9uIFRoZSBAY29kZXtlbWFjcy1j b21tZW50YXJ5LWxpbmt9IFdpZGdldAorQGZpbmRleCBlbWFjcy1jb21tZW50YXJ5LWxpbmtA cnsgd2lkZ2V0fQorU3ludGF4OgorCitAZXhhbXBsZQorQHZhcnt0eXBlfSA6Oj0gKGVtYWNz LWNvbW1lbnRhcnktbGluayBbQHZhcntrZXl3b3JkfSBAdmFye2FyZ3VtZW50fV0uLi4gIEB2 YXJ7ZmlsZX0pCitAZW5kIGV4YW1wbGUKKworQSB3aWRnZXQgdG8gcmVwcmVzZW50IGEgbGlu ayB0byB0aGUgQ29tbWVudCBzZWN0aW9uIG9mIGFuIEVtYWNzIExpc3AKK2ZpbGUuICBJdHMg c3VwZXIgaXMgdGhlIEBjb2Rle2xpbmt9IHdpZGdldC4KKworSXQgb3ZlcnJpZGVzIHRoZSBA Y29kZXs6YWN0aW9ufSBwcm9wZXJ0eSwgdG8gYSBmdW5jdGlvbiB0byBmaW5kIHRoZSBmaWxl CitAdmFye2ZpbGV9IGFuZCBwdXQgcG9pbnQgaW4gdGhlIENvbW1lbnQgc2VjdGlvbi4KIAog QG5vZGUgIHB1c2gtYnV0dG9uCi1Ac2VjdGlvbiBUaGUgQGNvZGV7cHVzaC1idXR0b259IFdp ZGdldAorQHN1YnNlY3Rpb24gVGhlIEBjb2Rle3B1c2gtYnV0dG9ufSBXaWRnZXQKIEBmaW5k ZXggcHVzaC1idXR0b25Acnsgd2lkZ2V0fQogCiBTeW50YXg6CkBAIC03ODIsMjIgKzE1ODcs MzcgQEAgcHVzaC1idXR0b24KIEB2YXJ7dHlwZX0gOjo9IChwdXNoLWJ1dHRvbiBbQHZhcntr ZXl3b3JkfSBAdmFye2FyZ3VtZW50fV0uLi4gIFsgQHZhcnt2YWx1ZX0gXSkKIEBlbmQgZXhh bXBsZQogCitBIHdpZGdldCB0aGF0IGFjdHMgYXMgYSBwdXNoYWJsZSBidXR0b24uICBJdHMg c3VwZXIgaXMgdGhlIEBjb2Rle2l0ZW19Cit3aWRnZXQuCisKIFRoZSBAdmFye3ZhbHVlfSwg aWYgcHJlc2VudCwgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBAY29kZXs6dmFsdWV9CiBw cm9wZXJ0eS4gIFRoZSB2YWx1ZSBzaG91bGQgYmUgYSBzdHJpbmcsIHdoaWNoIHdpbGwgYmUg aW5zZXJ0ZWQgaW4gdGhlCiBidWZmZXIuCiAKLUJ5IGRlZmF1bHQgdGhlIHRhZyB3aWxsIGJl IHNob3duIGluIGJyYWNrZXRzLgorQnkgZGVmYXVsdCwgaXQgaGFzIHRoZSBmb2xsb3dpbmcg cHJvcGVydGllczoKK0B0YWJsZSBAY29kZQorQGl0ZW0gOmJ1dHRvbi1wcmVmaXgKK1RoZSBl bXB0eSBzdHJpbmcuCiAKLUBkZWZvcHQgd2lkZ2V0LXB1c2gtYnV0dG9uLXByZWZpeAotU3Ry aW5nIHRvIHByZWZpeCBwdXNoIGJ1dHRvbnMuCi1AZW5kIGRlZm9wdAorQGl0ZW0gOmJ1dHRv bi1zdWZmaXgKK1RoZSBlbXB0eSBzdHJpbmcuCiAKLUBkZWZvcHQgd2lkZ2V0LXB1c2gtYnV0 dG9uLXN1ZmZpeAotU3RyaW5nIHRvIHN1ZmZpeCBwdXNoIGJ1dHRvbnMuCi1AZW5kIGRlZm9w dAorQGl0ZW0gOnZhbHVlLWNyZWF0ZQorSW5zZXJ0cyBhIHJlcHJlc2VudGF0aW9uIG9mIHRo ZSBgYG9uJycgYW5kIGBgb2ZmJycgc3RhdGVzIGZvciB0aGUgcHVzaAorYnV0dG9uLgorCitU aGUgcmVwcmVzZW50YXRpb24gbWlnaHQgYmUgYW4gaW1hZ2UsIHN0b3JlZCBpbiB0aGUgQGNv ZGV7OnRhZy1nbHlwaH0KK3Byb3BlcnR5LCBvciB0ZXh0LiAgSWYgaXQgaXMgdGV4dCwgaXQg bWlnaHQgYmUgdGhlIHZhbHVlIG9mIHRoZQorQGNvZGV7OnRhZ30gcHJvcGVydHksIG9yIHRo ZSBAY29kZXs6dmFsdWV9IG9mIHRoZSB3aWRnZXQsIHN1cnJvdW5kZWQKK3dpdGggQGNvZGV7 d2lkZ2V0LXB1c2gtYnV0dG9uLXByZWZpeH0gYW5kCitAY29kZXt3aWRnZXQtcHVzaC1idXR0 b24tc3VmZml4fS4gIEB4cmVme0N1c3RvbWl6YXRpb259LgorCitAaXRlbSA6Zm9ybWF0CitC dXR0b25pemVzIHRoZSB3aWRnZXQsIHRvIG1ha2UgaXQgY2xpY2thYmxlLgorQGVuZCB0YWJs ZQogCiBAbm9kZSBlZGl0YWJsZS1maWVsZAotQHNlY3Rpb24gVGhlIEBjb2Rle2VkaXRhYmxl LWZpZWxkfSBXaWRnZXQKK0BzdWJzZWN0aW9uIFRoZSBAY29kZXtlZGl0YWJsZS1maWVsZH0g V2lkZ2V0CiBAZmluZGV4IGVkaXRhYmxlLWZpZWxkQHJ7IHdpZGdldH0KIAogU3ludGF4OgpA QCAtODA2LDU2ICsxNjI2LDEzNyBAQCBlZGl0YWJsZS1maWVsZAogQHZhcnt0eXBlfSA6Oj0g KGVkaXRhYmxlLWZpZWxkIFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiBbIEB2 YXJ7dmFsdWV9IF0pCiBAZW5kIGV4YW1wbGUKIAorQSB3aWRnZXQgdGhhdCBjYW4gYmUgZWRp dGVkIGJ5IHRoZSB1c2VyLiAgSXRzIHN1cGVyIGlzIHRoZQorQGNvZGV7ZGVmYXVsdH0gd2lk Z2V0LgorCiBUaGUgQHZhcnt2YWx1ZX0sIGlmIHByZXNlbnQsIGlzIHVzZWQgdG8gaW5pdGlh bGl6ZSB0aGUgQGNvZGV7OnZhbHVlfQogcHJvcGVydHkuICBUaGUgdmFsdWUgc2hvdWxkIGJl IGEgc3RyaW5nLCB3aGljaCB3aWxsIGJlIGluc2VydGVkIGluIHRoZQotZmllbGQuICBUaGlz IHdpZGdldCB3aWxsIG1hdGNoIGFsbCBzdHJpbmcgdmFsdWVzLgorZmllbGQuICBJZiBub3Qg cHJlc2VudCwgQGNvZGV7OnZhbHVlfSBpcyB0aGUgZW1wdHkgc3RyaW5nLgorCitAc3Ryb25n e1dhcm5pbmc6fSBJbiBhbiBAY29kZXtlZGl0YWJsZS1maWVsZH0gd2lkZ2V0LCB0aGUgZWRp dGFibGUKK2ZpZWxkIG11c3Qgbm90IGJlIGFkamFjZW50IHRvIGFub3RoZXIgd2lkZ2V0LS0t dGhhdCB3b24ndCB3b3JrLgorWW91IG11c3QgcHV0IHNvbWUgdGV4dCBpbiBiZXR3ZWVuLiAg RWl0aGVyIG1ha2UgdGhpcyB0ZXh0IHBhcnQgb2YKK3RoZSBAY29kZXtlZGl0YWJsZS1maWVs ZH0gd2lkZ2V0IGl0c2VsZiwgb3IgaW5zZXJ0IGl0IHdpdGgKK0Bjb2Rle3dpZGdldC1pbnNl cnR9LgogCi1UaGUgZm9sbG93aW5nIGV4dHJhIHByb3BlcnRpZXMgYXJlIHJlY29nbml6ZWQ6 CitUaGlzIHdpZGdldCBlaXRoZXIgb3ZlcnJpZGVzIG9yIGFkZHMgdGhlIGZvbGxvd2luZyBw cm9wZXJ0aWVzOgogCiBAdGFibGUgQGNvZGUKK0BpdGVtIDpjb252ZXJ0LXdpZGdldAorSnVz dCBsaWtlIHRoZSBAY29kZXtpdGVtfSB3aWRnZXQsIHRoaXMgZnVuY3Rpb24gYWxsb3dzIGl0 IHRvCitpbml0aWFsaXplIEBjb2Rlezp2YWx1ZX0gZnJvbSBAdmFye3ZhbHVlfS4KKworQHZp bmRleCBrZXltYXBAcnsga2V5d29yZH0KK0B2aW5kZXggd2lkZ2V0LWZpZWxkLWtleW1hcAor QGl0ZW0gOmtleW1hcAorS2V5bWFwIHVzZWQgaW4gdGhlIGVkaXRhYmxlIGZpZWxkLgorCitU aGUgZGVmYXVsdCB2YWx1ZSBpcyBAY29kZXt3aWRnZXQtZmllbGQta2V5bWFwfSwgd2hpY2gg YWxsb3dzIHRoZSB1c2VyCit0byB1c2UgYWxsIHRoZSBub3JtYWwgZWRpdGluZyBjb21tYW5k cywgZXZlbiBpZiB0aGUgYnVmZmVyJ3MgbWFqb3IKK21vZGUgc3VwcHJlc3NlcyBzb21lIG9m IHRoZW0uICBQcmVzc2luZyBAa2V5e1JFVH0gaW52b2tlcyB0aGUgZnVuY3Rpb24KK3NwZWNp ZmllZCBieSBAY29kZXs6YWN0aW9ufS4KKworQGl0ZW0gOmZvcm1hdAorQnkgZGVmYXVsdCwg aXQgc3BlY2lmaWVzIHRvIGluc2VydCBvbmx5IHRoZSB3aWRnZXQncyB2YWx1ZS4KKworQHN0 cm9uZ3tXYXJuaW5nOn0gSW4gYW4gQGNvZGV7ZWRpdGFibGUtZmllbGR9IHdpZGdldCwgdGhl IEBzYW1weyV2fSBlc2NhcGUKK211c3QgYmUgcHJlY2VkZWQgYnkgc29tZSBvdGhlciB0ZXh0 IGluIHRoZSBAY29kZXs6Zm9ybWF0fSBzdHJpbmcgKGlmCitzcGVjaWZpZWQpLgorCiBAdmlu ZGV4IHNpemVAcnsga2V5d29yZH0KIEBpdGVtIDpzaXplCi1UaGUgd2lkdGggb2YgdGhlIGVk aXRhYmxlIGZpZWxkLkAqCitUaGUgd2lkdGggb2YgdGhlIGVkaXRhYmxlIGZpZWxkLgorCiBC eSBkZWZhdWx0IHRoZSBmaWVsZCB3aWxsIHJlYWNoIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUu CiAKIEB2aW5kZXggdmFsdWUtZmFjZUByeyBrZXl3b3JkfQogQGl0ZW0gOnZhbHVlLWZhY2UK LUZhY2UgdXNlZCBmb3IgaGlnaGxpZ2h0aW5nIHRoZSBlZGl0YWJsZSBmaWVsZC4gIERlZmF1 bHQgaXMKLUBjb2Rle3dpZGdldC1maWVsZC1mYWNlfSwgc2VlIEByZWZ7VXNlciBJbnRlcmZh Y2V9LgorRmFjZSB1c2VkIGZvciBoaWdobGlnaHRpbmcgdGhlIGVkaXRhYmxlIGZpZWxkLgor CitEZWZhdWx0IGlzIEBjb2Rle3dpZGdldC1maWVsZC1mYWNlfSwgQHB4cmVme1VzZXIgSW50 ZXJmYWNlfS4KIAogQHZpbmRleCBzZWNyZXRAcnsga2V5d29yZH0KIEBpdGVtIDpzZWNyZXQK LUNoYXJhY3RlciB1c2VkIHRvIGRpc3BsYXkgdGhlIHZhbHVlLiAgWW91IGNhbiBzZXQgdGhp cyB0bywgZS5nLiwgQGNvZGV7Pyp9Ci1pZiB0aGUgZmllbGQgY29udGFpbnMgYSBwYXNzd29y ZCBvciBvdGhlciBzZWNyZXQgaW5mb3JtYXRpb24uICBCeQotZGVmYXVsdCwgdGhpcyBpcyBA Y29kZXtuaWx9LCBhbmQgdGhlIHZhbHVlIGlzIG5vdCBzZWNyZXQuCitDaGFyYWN0ZXIgdXNl ZCB0byBkaXNwbGF5IHRoZSB2YWx1ZS4KKworWW91IGNhbiBzZXQgdGhpcyB0bywgZS5nLiwg QGNvZGV7Pyp9IGlmIHRoZSBmaWVsZCBjb250YWlucyBhIHBhc3N3b3JkCitvciBvdGhlciBz ZWNyZXQgaW5mb3JtYXRpb24uICBCeSBkZWZhdWx0LCB0aGlzIGlzIEBjb2Rle25pbH0sIGFu ZCB0aGUKK3ZhbHVlIGlzIG5vdCBzZWNyZXQuCiAKIEB2aW5kZXggdmFsaWQtcmVnZXhwQHJ7 IGtleXdvcmR9CiBAaXRlbSA6dmFsaWQtcmVnZXhwCiBCeSBkZWZhdWx0IHRoZSBAY29kZXs6 dmFsaWRhdGV9IGZ1bmN0aW9uIHdpbGwgbWF0Y2ggdGhlIGNvbnRlbnQgb2YgdGhlCi1maWVs ZCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZS4gIFRoZSBkZWZhdWx0IHZhbHVl IGlzIEBjb2RleyIifQotd2hpY2ggbWF0Y2hlcyBldmVyeXRoaW5nLgorZmllbGQgd2l0aCB0 aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUuCiAKLUB2aW5kZXgga2V5bWFwQHJ7IGtleXdv cmR9Ci1AdmluZGV4IHdpZGdldC1maWVsZC1rZXltYXAKLUBpdGVtIDprZXltYXAKLUtleW1h cCB1c2VkIGluIHRoZSBlZGl0YWJsZSBmaWVsZC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzCi1A Y29kZXt3aWRnZXQtZmllbGQta2V5bWFwfSwgd2hpY2ggYWxsb3dzIHlvdSB0byB1c2UgYWxs IHRoZSBub3JtYWwKLWVkaXRpbmcgY29tbWFuZHMsIGV2ZW4gaWYgdGhlIGJ1ZmZlcidzIG1h am9yIG1vZGUgc3VwcHJlc3NlcyBzb21lIG9mCi10aGVtLiAgUHJlc3NpbmcgQGtleXtSRVR9 IGludm9rZXMgdGhlIGZ1bmN0aW9uIHNwZWNpZmllZCBieQotQGNvZGV7OmFjdGlvbn0uCitU aGUgZGVmYXVsdCB2YWx1ZSBpcyBAY29kZXsiIn0gd2hpY2ggbWF0Y2hlcyBldmVyeXRoaW5n LgorCitAaXRlbSA6dmFsaWRhdGUKK1JldHVybnMgQGNvZGV7bmlsfSBpZiB0aGUgY3VycmVu dCB2YWx1ZSBvZiB0aGUgd2lkZ2V0IG1hdGNoZXMgdGhlCitAY29kZXs6dmFsaWQtcmVnZXhw fSB2YWx1ZS4KKworQGl0ZW0gOnByb21wdC1pbnRlcm5hbAorQSBmdW5jdGlvbiB0byByZWFk IGEgdmFsdWUgZm9yIHdpZGdldCwgdXNlZCBieSB0aGUKK0Bjb2Rlezpwcm9tcHQtdmFsdWV9 IGZ1bmN0aW9uLgorCitAaXRlbSA6cHJvbXB0LWhpc3RvcnkKK0EgdmFyaWFibGUgdGhhdCBo b2xkcyB0aGUgaGlzdG9yeSBvZiBmaWVsZCBtaW5pYnVmZmVyIGVkaXRzLgorCitAaXRlbSA6 cHJvbXB0LXZhbHVlCitBIGZ1bmN0aW9uIHRoYXQgdXNlcyB0aGUgQGNvZGV7OnByb21wdC1p bnRlcm5hbH0gZnVuY3Rpb24gYW5kIHRoZQorQGNvZGV7OnByb21wdC1oaXN0b3J5fSB2YWx1 ZSB0byBwcm9tcHQgZm9yIGEgc3RyaW5nLCBhbmQgcmV0dW4gdGhlCit1c2VyIHJlc3BvbnNl IGluIHRoZSBleHRlcm5hbCBmb3JtYXQuCisKK0BpdGVtIDphY3Rpb24KK1doZW4gaW52b2tl ZCwgbW92ZXMgcG9pbnQgdG8gdGhlIG5leHQgZmllbGQuCisKK0BpdGVtIDp2YWx1ZS1jcmVh dGUKK0Z1bmN0aW9uIHRoYXQgdGFrZXMgY2FyZSBvZiBjcmVhdGluZyB0aGUgd2lkZ2V0LCBy ZXNwZWN0aW5nIGl0cworQGNvZGV7OnNpemV9IGFuZCBAY29kZXs6dmFsdWV9LgorCitAaXRl bSA6dmFsdWUtc2V0CitGdW5jdGlvbiB0byB1c2UgdG8gbW9kaWZ5IHByb2dyYW1hdGljYWxs eSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUKK3dpZGdldC4KKworQGl0ZW0gOnZhbHVlLWRl bGV0ZQorRnVuY3Rpb24gdGhhdCByZW1vdmVzIHRoZSB3aWRnZXQgc28gaXQgY2Fubm90IGJl IGVkaXRlZCBhbnltb3JlLgorCitAaXRlbSA6dmFsdWUtZ2V0CitGdW5jdGlvbiB0byByZXR1 cm4gdGhlIGN1cnJlbnQgdGV4dCBpbiB0aGUgd2lkZ2V0LgorCitJdCB0YWtlcyBhbiBvcHRp b25hbCBhcmd1bWVudCwgQHZhcntuby10cnVuY2F0ZX0uICBJZgorQHZhcntuby10cnVuY2F0 ZX0gaXMgbmlsLCB0cnVuY2F0ZXMgdHJhaWxpbmcgc3BhY2VzLgorCitAaXRlbSA6bWF0Y2gK K0Z1bmN0aW9uIHRoYXQgbWFrZXMgdGhlIHdpZGdldCBtYXRjaCBhbnkgc3RyaW5nIHZhbHVl LgogQGVuZCB0YWJsZQogCiBAbm9kZSB0ZXh0Ci1Ac2VjdGlvbiBUaGUgQGNvZGV7dGV4dH0g V2lkZ2V0CitAc3Vic2VjdGlvbiBUaGUgQGNvZGV7dGV4dH0gV2lkZ2V0CiBAZmluZGV4IHRl eHRAcnsgd2lkZ2V0fQogCitTeW50YXg6CisKK0BleGFtcGxlCitAdmFye3R5cGV9IDo6PSAo dGV4dCBbQHZhcntrZXl3b3JkfSBAdmFye2FyZ3VtZW50fV0uLi4gWyBAdmFye3ZhbHVlfSBd KQorQGVuZCBleGFtcGxlCisKK0Egd2lkZ2V0IGp1c3QgbGlrZSB0aGUgQGNvZGV7ZWRpdGFi bGUtZmllbGR9IHdpZGdldCwgYnV0IGludGVuZGVkIGZvcgorbXVsdGlsaW5lIHRleHQgZmll bGRzLiAgSXRzIHN1cGVyIGlzIHRoZSBAY29kZXtlZGl0YWJsZS1maWVsZH0gd2lkZ2V0Lgor CitJdCBvdmVycmlkZXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorCitAdGFibGUgQGNv ZGUKK0BpdGVtIDpmb3JtYXQKK0J5IGRlZmF1bHQsIHByaW50cyBhIHRhZyBhbmQgdGhlIHZh bHVlLgorCiBAdmluZGV4IHdpZGdldC10ZXh0LWtleW1hcAotVGhpcyBpcyBqdXN0IGxpa2Ug QGNvZGV7ZWRpdGFibGUtZmllbGR9LCBidXQgaW50ZW5kZWQgZm9yIG11bHRpbGluZSB0ZXh0 Ci1maWVsZHMuICBUaGUgZGVmYXVsdCBAY29kZXs6a2V5bWFwfSBpcyBAY29kZXt3aWRnZXQt dGV4dC1rZXltYXB9LCB3aGljaAotZG9lcyBub3QgcmViaW5kIHRoZSBAa2V5e1JFVH0ga2V5 LgorQGl0ZW0gOmtleW1hcAorVGhlIGRlZmF1bHQgaXMgQGNvZGV7d2lkZ2V0LXRleHQta2V5 bWFwfSwgd2hpY2ggZG9lcyBub3QgcmViaW5kIHRoZQorQGtleXtSRVR9IGtleS4KK0BlbmQg dGFibGUKIAogQG5vZGUgbWVudS1jaG9pY2UKLUBzZWN0aW9uIFRoZSBAY29kZXttZW51LWNo b2ljZX0gV2lkZ2V0CitAc3Vic2VjdGlvbiBUaGUgQGNvZGV7bWVudS1jaG9pY2V9IFdpZGdl dAogQGZpbmRleCBtZW51LWNob2ljZUByeyB3aWRnZXR9CiAKIFN5bnRheDoKQEAgLTg2NCwy MSArMTc2NSwzNyBAQCBtZW51LWNob2ljZQogQHZhcnt0eXBlfSA6Oj0gKG1lbnUtY2hvaWNl IFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiBAdmFye3R5cGV9IC4uLiApCiBA ZW5kIGV4YW1wbGUKIAorQSB3aWRnZXQgdG8gcmVwcmVzZW50IGEgbWVudSBvZiBvcHRpb25z LiAgSXRzIHN1cGVyIGlzIHRoZQorQGNvZGV7ZGVmYXVsdH0gd2lkZ2V0LgorCiBUaGUgQHZh cnt0eXBlfSBhcmd1bWVudCByZXByZXNlbnRzIGVhY2ggcG9zc2libGUgY2hvaWNlLiAgVGhl IHdpZGdldCdzCi12YWx1ZSB3aWxsIGJlIHRoYXQgb2YgdGhlIGNob3NlbiBAdmFye3R5cGV9 IGFyZ3VtZW50LiAgVGhpcyB3aWRnZXQgd2lsbAotbWF0Y2ggYW55IHZhbHVlIG1hdGNoaW5n IGF0IGxlYXN0IG9uZSBvZiB0aGUgc3BlY2lmaWVkIEB2YXJ7dHlwZX0KLWFyZ3VtZW50cy4K K3ZhbHVlIHdpbGwgYmUgdGhhdCBvZiB0aGUgY2hvc2VuIEB2YXJ7dHlwZX0gYXJndW1lbnQu CisKK0l0IGVpdGhlciBvdmVycmlkZXMgb3IgYWRkcyB0aGUgZm9sbG93aW5nIHByb3BlcnRp ZXM6CiAKIEB0YWJsZSBAY29kZQorQGl0ZW0gOmNvbnZlcnQtd2lkZ2V0CitBIGZ1bmN0aW9u IHRoYXQgdGFrZXMgY2FyZSBvZiBjb252ZXJ0aW5nIGVhY2ggcG9zc2libGUgY2hvaWNlLgor CitAaXRlbSA6Y29weQorQSBmdW5jdGlvbiB0byBjb3B5IGVhY2ggcG9zc2libGUgY2hvaWNl LgorCitAaXRlbSA6Zm9ybWF0CitCeSBkZWZhdWx0LCBidXR0b25pemUgdGhlIHRhZyBhbmQg c2hvdyB0aGUgdmFsdWUuCisKIEB2aW5kZXggdm9pZEByeyBrZXl3b3JkfQogQGl0ZW0gOnZv aWQKIFdpZGdldCB0eXBlIHVzZWQgYXMgYSBmYWxsYmFjayB3aGVuIHRoZSB2YWx1ZSBkb2Vz IG5vdCBtYXRjaCBhbnkgb2YgdGhlCiBzcGVjaWZpZWQgQHZhcnt0eXBlfSBhcmd1bWVudHMu CiAKK0J5IGRlZmF1bHQgdGhpcyBpcyBhbiBAY29kZXtpdGVtfSB3aWRnZXQuCisKIEB2aW5k ZXggY2FzZS1mb2xkQHJ7IGtleXdvcmR9CiBAaXRlbSA6Y2FzZS1mb2xkCi1TZXQgdGhpcyB0 byBAY29kZXtuaWx9IGlmIHlvdSBkb24ndCB3YW50IHRvIGlnbm9yZSBjYXNlIHdoZW4gcHJv bXB0aW5nIGZvciBhCi1jaG9pY2UgdGhyb3VnaCB0aGUgbWluaWJ1ZmZlci4KK0lmIEBjb2Rl e25pbH0gZG9uJ3QgaWdub3JlIGNhc2Ugd2hlbiBwcm9tcHRpbmcgZm9yIGEgY2hvaWNlIHRo cm91Z2gKK3RoZSBtaW5pYnVmZmVyLgorCitCeSBkZWZhdWx0LCBpdHMgdmFsdWUgaXMgQGNv ZGV7dH0uCiAKIEB2aW5kZXggY2hpbGRyZW5Acnsga2V5d29yZH0KIEBpdGVtIDpjaGlsZHJl bgpAQCAtODkyLDEwICsxODA5LDU0IEBAIG1lbnUtY2hvaWNlCiBAdmluZGV4IGFyZ3NAcnsg a2V5d29yZH0KIEBpdGVtIDphcmdzCiBUaGUgbGlzdCBvZiB0eXBlcy4KKworQGl0ZW0gOnZh bHVlLWNyZWF0ZQorVGhlIGZ1bmN0aW9uIHRoYXQgaW5zZXJ0cyB0aGUgY3VycmVudCB2YWx1 ZSBmb3IgdGhlIHdpZGdldC4KKworSXQgaW5zZXJ0cyB0aGUgZmlyc3QgY2hvaWNlIHRoYXQg bWF0Y2hlcywgYXMgd2l0aCB0aGUgQGNvZGV7Om1hdGNofQorZnVuY3Rpb24sIHRoZSB2YWx1 ZSBvZiB0aGUgd2lkZ2V0LgorCitAaXRlbSA6dmFsdWUtZ2V0CitSZXR1cm5zIHRoZSB2YWx1 ZSBvZiB0aGUgZmlyc3QgY2hpbGQgZm9yIHRoZSB3aWRnZXQgKHNlZSB0aGUKK2Rlc2NyaXB0 aW9uIGZvciBAY29kZXs6Y2hpbGRyZW59IGFib3ZlKS4KKworQGl0ZW0gOnZhbHVlLWlubGlu ZQorUmV0dXJucyB0aGUgaW5saW5lIHZhbHVlIG9mIHRoZSBmaXJzdCBjaGlsZCBmb3IgdGhl IHdpZGdldC4KKworQGl0ZW0gOmRlZmF1bHQtZ2V0CitUaGUgZGVmYXVsdCB2YWx1ZSBmb3Ig dGhpcyB3aWRnZXQgaXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBmaXJzdAorY2hvaWNl LCBpbiBjYXNlIEBjb2Rlezp2YWx1ZX0gaXMgbWlzc2luZy4KKworVGhpcyBtZWFucyB0aGF0 IGlmIHlvdSB3YW50IGEgc3BlY2lmaWMgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlCitAY29kZXtt ZW51LWNob2ljZX0gd2lkZ2V0LCB5b3Ugc2hvdWxkIGVpdGhlciBwYXNzIGEgQGNvZGV7OnZh bHVlfQorcHJvcGVydHkgd2hlbiBjcmVhdGluZyBpdCwgb3IgYXJyYW5nZSB0aGUgY2hvaWNl cyBzbyB0aGF0IHRoZSBmaXJzdAorb25lIGNhbiBob2xkIHlvdXIgZGVzaXJlZCBkZWZhdWx0 IHZhbHVlLgorCitAaXRlbSA6bW91c2UtZG93bi1hY3Rpb24KK0EgZnVuY3Rpb24gdGhhdCB0 YWtlcyBjYXJlIG9mIHNob3dpbmcgYSBtZW51LCBpZiBwb3NzaWJsZSBhbmQgZGVzaXJlZC4K KworQGl0ZW0gOmFjdGlvbgorQSBmdW5jdGlvbiB0aGF0IHRha2VzIGNhcmUgb2YgZ2V0dGlu ZyBhIG5ldyBjaG9pY2UgZm9yIHRoZSB3aWRnZXQuCisKK0RlcGVuZGluZyBvbiB0aGUgbnVt YmVyIG9mIGNob2ljZXMgYXZhaWxhYmxlLCBpdCBtYXkgc2hvdyBhIG1lbnUgb3IKK2p1c3Qg dG9nZ2xlIHRoZSBjaG9pY2VzLCBvciBldmVuIGRvIG5vdGhpbmcgYXQgYWxsLgorCitBZnRl ciBnZXR0aW5nIHRoZSBjaG9pY2UsIGl0IHJlY3JlYXRlcyB0aGUgd2lkZ2V0IGFuZCBub3Rp ZmllcyBpdC4KKworQGl0ZW0gOnZhbGlkYXRlCitSZXR1cm5zIEBjb2Rle25pbH0gaWYgdGhl IHdpZGdldCdzIHZhbHVlIGlzIGEgdmFsaWQgY2hvaWNlLgorCitAaXRlbSA6bWF0Y2gKK1Ro aXMgd2lkZ2V0IHdpbGwgbWF0Y2ggYW55IHZhbHVlIG1hdGNoaW5nIGF0IGxlYXN0IG9uZSBv ZiB0aGUKK3NwZWNpZmllZCBAdmFye3R5cGV9IGFyZ3VtZW50cy4KKworQGl0ZW0gOm1hdGNo LWlubGluZQorQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgbm9uLUBjb2Rle25pbH0gaWYgdGhl IHZhbHVlcyBtYXRjaCB0aGUgd2lkZ2V0LAordGFraW5nIGludG8gYWNjb3VudCB0aGUgQGNv ZGV7OmlubGluZX0gcHJvcGVydHkuCiBAZW5kIHRhYmxlCiAKIEBub2RlIHJhZGlvLWJ1dHRv bi1jaG9pY2UKLUBzZWN0aW9uIFRoZSBAY29kZXtyYWRpby1idXR0b24tY2hvaWNlfSBXaWRn ZXQKK0BzdWJzZWN0aW9uIFRoZSBAY29kZXtyYWRpby1idXR0b24tY2hvaWNlfSBXaWRnZXQK IEBmaW5kZXggcmFkaW8tYnV0dG9uLWNob2ljZUByeyB3aWRnZXR9CiAKIFN5bnRheDoKQEAg LTkwNCwxNCArMTg2NSwyOCBAQCByYWRpby1idXR0b24tY2hvaWNlCiBAdmFye3R5cGV9IDo6 PSAocmFkaW8tYnV0dG9uLWNob2ljZSBbQHZhcntrZXl3b3JkfSBAdmFye2FyZ3VtZW50fV0u Li4gIEB2YXJ7dHlwZX0gLi4uICkKIEBlbmQgZXhhbXBsZQogCi1UaGUgY29tcG9uZW50IHR5 cGVzIHNwZWNpZnkgdGhlIGNob2ljZXMsIHdpdGggb25lIHJhZGlvIGJ1dHRvbiBmb3IKK0Eg d2lkZ2V0IHRvIHJlcHJlc2VudCBhIGNob2ljZSBmcm9tIG11bHRpcGxlIG9wdGlvbnMuICBJ dHMgc3VwZXIgaXMKK3RoZSBAY29kZXtkZWZhdWx0fSB3aWRnZXQuCisKK1RoZSBjb21wb25l bnQgQHZhcnt0eXBlc30gc3BlY2lmeSB0aGUgY2hvaWNlcywgd2l0aCBvbmUgcmFkaW8gYnV0 dG9uIGZvcgogZWFjaC4gIFRoZSB3aWRnZXQncyB2YWx1ZSB3aWxsIGJlIHRoYXQgb2YgdGhl IGNob3NlbiBAdmFye3R5cGV9Ci1hcmd1bWVudC4gIFRoaXMgd2lkZ2V0IG1hdGNoZXMgYW55 IHZhbHVlIHRoYXQgbWF0Y2hlcyBhdCBsZWFzdCBvbmUgb2YKLXRoZSBzcGVjaWZpZWQgQHZh cnt0eXBlfSBhcmd1bWVudHMuCithcmd1bWVudC4KIAotVGhlIGZvbGxvd2luZyBleHRyYSBw cm9wZXJ0aWVzIGFyZSByZWNvZ25pemVkLgorSXQgb3ZlcnJpZGVzIHRoZSBmb2xsb3dpbmcg cHJvcGVydGllczoKIAogQHRhYmxlIEBjb2RlCitAaXRlbSA6Y29udmVydC13aWRnZXQKK0Fz IG90aGVyIGNvbXBvc2l0ZSB3aWRnZXRzLCBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgY2FyZSBv ZiBjb252ZXJ0aW5nCitlYWNoIGF2YWlsYWJsZSBjaG9pY2UuCisKK0BpdGVtIDpjb3B5CitB IGZ1bmN0aW9uIHRvIGNvcHkgZWFjaCBhdmFpbGFibGUgY2hvaWNlLgorCitAaXRlbSA6YWN0 aW9uCitBIGZ1bmN0aW9uIHRoYXQgY2hlY2tzIGlmIGFueSByYWRpbyBidXR0b24gd2FzIHBy ZXNzZWQgYW5kIGFjdGl2YXRlcwordGhlIHByZXNzZWQgb25lLCBwb3NzaWJseSBkZWFjdGl2 YXRpbmcgYW4gb2xkIG9uZS4gIFRoZW4sIGl0IG5vdGlmaWVzCitpdHNlbGYuCisKIEB2aW5k ZXggZW50cnktZm9ybWF0QHJ7IGtleXdvcmR9CiBAaXRlbSA6ZW50cnktZm9ybWF0CiBUaGlz IHN0cmluZyB3aWxsIGJlIGluc2VydGVkIGZvciBlYWNoIGVudHJ5IGluIHRoZSBsaXN0LgpA QCAtOTI1LDYgKzE5MDAsOSBAQCByYWRpby1idXR0b24tY2hvaWNlCiBJbnNlcnQgYSBsaXRl cmFsIEBzYW1weyV9LgogQGVuZCB0YWJsZQogCitAaXRlbSA6Zm9ybWF0CitCeSBkZWZhdWx0 LCBpdCBpbnNlcnRzIGl0cyB2YWx1ZS4KKwogQHZpbmRleCBidXR0b24tYXJnc0ByeyBrZXl3 b3JkfQogQGl0ZW0gOmJ1dHRvbi1hcmdzCiBBIGxpc3Qgb2Yga2V5d29yZHMgdG8gcGFzcyB0 byB0aGUgcmFkaW8gYnV0dG9ucy4gIFVzZWZ1bCBmb3Igc2V0dGluZywKQEAgLTk0MCw0MiAr MTkxOCw1NSBAQCByYWRpby1idXR0b24tY2hvaWNlCiAKIEB2aW5kZXggY2hvaWNlQHJ7IGtl eXdvcmR9CiBAaXRlbSA6Y2hvaWNlCi1UaGUgY3VycmVudCBjaG9zZW4gdHlwZQorVGhlIGN1 cnJlbnQgY2hvc2VuIHR5cGUuCiAKIEB2aW5kZXggYXJnc0ByeyBrZXl3b3JkfQogQGl0ZW0g OmFyZ3MKIFRoZSBsaXN0IG9mIHR5cGVzLgotQGVuZCB0YWJsZQogCi1Zb3UgY2FuIGFkZCBl eHRyYSByYWRpbyBidXR0b24gaXRlbXMgdG8gYSBAY29kZXtyYWRpby1idXR0b24tY2hvaWNl fQotd2lkZ2V0IGFmdGVyIGl0IGhhcyBiZWVuIGNyZWF0ZWQgd2l0aCB0aGUgZnVuY3Rpb24K LUBjb2Rle3dpZGdldC1yYWRpby1hZGQtaXRlbX0uCitAaXRlbSA6dmFsdWUtY3JlYXRlCitB IGZ1bmN0aW9uIHRvIGluc2VydCBhbGwgYXZhaWxhYmxlIGNob2ljZXMuCiAKLUBkZWZ1biB3 aWRnZXQtcmFkaW8tYWRkLWl0ZW0gd2lkZ2V0IHR5cGUKLUFkZCB0byBAY29kZXtyYWRpby1i dXR0b24tY2hvaWNlfSB3aWRnZXQgQHZhcnt3aWRnZXR9IGEgbmV3IHJhZGlvIGJ1dHRvbgot aXRlbSBvZiB0eXBlIEB2YXJ7dHlwZX0uCi1AZW5kIGRlZnVuCitAaXRlbSA6dmFsdWUtZ2V0 CitSZXR1cm5zIHRoZSB2YWx1ZSBmb3IgdGhlIGNob3NlbiB3aWRnZXQuCiAKLVBsZWFzZSBu b3RlIHRoYXQgc3VjaCBpdGVtcyBhZGRlZCBhZnRlciB0aGUgQGNvZGV7cmFkaW8tYnV0dG9u LWNob2ljZX0KLXdpZGdldCBoYXMgYmVlbiBjcmVhdGVkIHdpbGwgQHN0cm9uZ3tub3R9IGJl IHByb3Blcmx5IGRlc3RydWN0ZWQgd2hlbgoteW91IGNhbGwgQGNvZGV7d2lkZ2V0LWRlbGV0 ZX0uCitAaXRlbSA6dmFsdWUtc2V0CitBIGZ1bmN0aW9uIHRvIHNldCB0aGUgdmFsdWUgdG8g b25lIG9mIGl0cyBhdmFpbGFibGUgb3B0aW9ucy4KIAotQG5vZGUgaXRlbQotQHNlY3Rpb24g VGhlIEBjb2Rle2l0ZW19IFdpZGdldAotQGZpbmRleCBpdGVtQHJ7IHdpZGdldH0KK0BpdGVt IDp2YWx1ZS1pbmxpbmUKK0EgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBpbmxpbmUgdmFs dWUgb2YgdGhlIGNoaWxkIHdpZGdldC4KIAotU3ludGF4OgorQGl0ZW0gOm9mZnNldAorQnkg ZGVmYXVsdCwgdGhpcyB3aWRnZXQgaGFzIGFuIG9mZnNldCBvZiA0LgogCi1AZXhhbXBsZQot QHZhcntpdGVtfSA6Oj0gKGl0ZW0gW0B2YXJ7a2V5d29yZH0gQHZhcnthcmd1bWVudH1dLi4u IEB2YXJ7dmFsdWV9KQotQGVuZCBleGFtcGxlCitAaXRlbSA6dmFsaWRhdGUKK1RoZSB3aWRn ZXQgdmFsaWRhdGVzIGlmIHRoZSBjdXJyZW50IHZhbHVlIGlzIHZhbGlkIGZvciBvbmUgb2Yg aXRzCitjaGlsZHJlbi4KKworQGl0ZW0gOm1hdGNoCitUaGlzIHdpZGdldCBtYXRjaGVzIGFu eSB2YWx1ZSB0aGF0IG1hdGNoZXMgYXQgbGVhc3Qgb25lIG9mCit0aGUgc3BlY2lmaWVkIEB2 YXJ7dHlwZX0gYXJndW1lbnRzLgorCitAaXRlbSA6bWF0Y2gtaW5saW5lCitMaWtlIHRoZSBA Y29kZXs6bWF0Y2h9IGZ1bmN0aW9uLCBidXQgdGFraW5nIGludG8gYWNjb3VudCBpbmxpbmUK K3ZhbHVlcy4KK0BlbmQgdGFibGUKKworWW91IGNhbiBhZGQgZXh0cmEgcmFkaW8gYnV0dG9u IGl0ZW1zIHRvIGEgQGNvZGV7cmFkaW8tYnV0dG9uLWNob2ljZX0KK3dpZGdldCBhZnRlciBp dCBoYXMgYmVlbiBjcmVhdGVkIHdpdGggdGhlIGZ1bmN0aW9uCitAY29kZXt3aWRnZXQtcmFk aW8tYWRkLWl0ZW19LgorCitAZGVmdW4gd2lkZ2V0LXJhZGlvLWFkZC1pdGVtIHdpZGdldCB0 eXBlCitBZGQgdG8gQGNvZGV7cmFkaW8tYnV0dG9uLWNob2ljZX0gd2lkZ2V0IEB2YXJ7d2lk Z2V0fSBhIG5ldyByYWRpbyBidXR0b24KK2l0ZW0gb2YgdHlwZSBAdmFye3R5cGV9LgorQGVu ZCBkZWZ1bgogCi1UaGUgQHZhcnt2YWx1ZX0sIGlmIHByZXNlbnQsIGlzIHVzZWQgdG8gaW5p dGlhbGl6ZSB0aGUgQGNvZGV7OnZhbHVlfQotcHJvcGVydHkuICBUaGUgdmFsdWUgc2hvdWxk IGJlIGEgc3RyaW5nLCB3aGljaCB3aWxsIGJlIGluc2VydGVkIGluIHRoZQotYnVmZmVyLiAg VGhpcyB3aWRnZXQgd2lsbCBvbmx5IG1hdGNoIHRoZSBzcGVjaWZpZWQgdmFsdWUuCitQbGVh c2Ugbm90ZSB0aGF0IHN1Y2ggaXRlbXMgYWRkZWQgYWZ0ZXIgdGhlIEBjb2Rle3JhZGlvLWJ1 dHRvbi1jaG9pY2V9Cit3aWRnZXQgaGFzIGJlZW4gY3JlYXRlZCB3aWxsIEBzdHJvbmd7bm90 fSBiZSBwcm9wZXJseSBkZXN0cnVjdGVkIHdoZW4KK3lvdSBjYWxsIEBjb2Rle3dpZGdldC1k ZWxldGV9LgogCiBAbm9kZSBjaG9pY2UtaXRlbQotQHNlY3Rpb24gVGhlIEBjb2Rle2Nob2lj ZS1pdGVtfSBXaWRnZXQKK0BzdWJzZWN0aW9uIFRoZSBAY29kZXtjaG9pY2UtaXRlbX0gV2lk Z2V0CiBAZmluZGV4IGNob2ljZS1pdGVtQHJ7IHdpZGdldH0KIAogU3ludGF4OgpAQCAtOTg0 LDE0ICsxOTc1LDI2IEBAIGNob2ljZS1pdGVtCiBAdmFye2l0ZW19IDo6PSAoY2hvaWNlLWl0 ZW0gW0B2YXJ7a2V5d29yZH0gQHZhcnthcmd1bWVudH1dLi4uIEB2YXJ7dmFsdWV9KQogQGVu ZCBleGFtcGxlCiAKK0Egd2lkZ2V0IHRvIHJlcHJlc2VudCBhIGNob2ljZSBpbiBhIEBjb2Rl e21lbnUtY2hvaWNlfSB3aWRnZXQuICBJdHMKK3N1cGVyIGlzIHRoZSBAY29kZXtpdGVtfSB3 aWRnZXQuCisKIFRoZSBAdmFye3ZhbHVlfSwgaWYgcHJlc2VudCwgaXMgdXNlZCB0byBpbml0 aWFsaXplIHRoZSBAY29kZXs6dmFsdWV9Ci1wcm9wZXJ0eS4gIFRoZSB2YWx1ZSBzaG91bGQg YmUgYSBzdHJpbmcsIHdoaWNoIHdpbGwgYmUgaW5zZXJ0ZWQgaW4gdGhlCi1idWZmZXIgYXMg YSBidXR0b24uICBBY3RpdmF0aW5nIHRoZSBidXR0b24gb2YgYSBAY29kZXtjaG9pY2UtaXRl bX0gaXMKLWVxdWl2YWxlbnQgdG8gYWN0aXZhdGluZyB0aGUgcGFyZW50IHdpZGdldC4gIFRo aXMgd2lkZ2V0IHdpbGwgb25seSBtYXRjaAotdGhlIHNwZWNpZmllZCB2YWx1ZS4KK3Byb3Bl cnR5LgorCitJdCBvdmVycmlkZXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorCitAdGFi bGUgQGNvZGUKK0BpdGVtIDphY3Rpb24KK0FjdGl2YXRpbmcgdGhlIGJ1dHRvbiBvZiBhIEBj b2Rle2Nob2ljZS1pdGVtfSBpcyBlcXVpdmFsZW50IHRvCithY3RpdmF0aW5nIHRoZSBwYXJl bnQgd2lkZ2V0LgorCitAaXRlbSA6Zm9ybWF0CitCeSBkZWZhdWx0LCBpdCBidXR0b25pemVz IHRoZSB0YWcgKGkuZS4sIGl0cyB2YWx1ZSkgYW5kIGFkZHMgYSBuZXdsaW5lCitjaGFyYWN0 ZXIgYXQgdGhlIGVuZCBvZiB0aGUgd2lkZ2V0LgorQGVuZCB0YWJsZQogCiBAbm9kZSB0b2dn bGUKLUBzZWN0aW9uIFRoZSBAY29kZXt0b2dnbGV9IFdpZGdldAorQHN1YnNlY3Rpb24gVGhl IEBjb2Rle3RvZ2dsZX0gV2lkZ2V0CiBAZmluZGV4IHRvZ2dsZUByeyB3aWRnZXR9CiAKIFN5 bnRheDoKQEAgLTEwMDAsNDMgKzIwMDMsMTM2IEBAIHRvZ2dsZQogQHZhcnt0eXBlfSA6Oj0g KHRvZ2dsZSBbQHZhcntrZXl3b3JkfSBAdmFye2FyZ3VtZW50fV0uLi4pCiBAZW5kIGV4YW1w bGUKIAorQSB3aWRnZXQgdGhhdCBjYW4gdG9nZ2xlIGJldHdlZW4gdHdvIHN0YXRlcy4gIEl0 cyBzdXBlciBpcyB0aGUKK0Bjb2Rle2l0ZW19IHdpZGdldC4KKwogVGhlIHdpZGdldCBoYXMg dHdvIHBvc3NpYmxlIHN0YXRlcywgQHNhbXB7b259IGFuZCBAc2FtcHtvZmZ9LCB3aGljaAog Y29ycmVzcG9uZCB0byBhIEBjb2Rle3R9IG9yIEBjb2Rle25pbH0gdmFsdWUsIHJlc3BlY3Rp dmVseS4KIAotVGhlIGZvbGxvd2luZyBleHRyYSBwcm9wZXJ0aWVzIGFyZSByZWNvZ25pemVk OgorSXQgZWl0aGVyIG92ZXJyaWRlcyBvciBhZGRzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGll czoKIAogQHRhYmxlIEBjb2RlCitAaXRlbSA6Zm9ybWF0CitCeSBkZWZhdWx0LCBpdCBidXR0 b25pemVzIHRoZSB2YWx1ZSBhbmQgYWRkcyBhIG5ld2xpbmUgYXQgdGhlIGVuZCBvZgordGhl IHdpZGdldC4KKwogQGl0ZW0gOm9uCiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEBzYW1w e29ufSBzdGF0ZS4gIEJ5IGRlZmF1bHQgdGhlIHN0cmluZwogQHNhbXB7b259LgorCiBAaXRl bSA6b2ZmCiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEBzYW1we29mZn0gc3RhdGUuICBC eSBkZWZhdWx0IHRoZSBzdHJpbmcKIEBzYW1we29mZn0uCisKIEB2aW5kZXggb24tZ2x5cGhA cnsga2V5d29yZH0KIEBpdGVtIDpvbi1nbHlwaAogTmFtZSBvZiBhIGdseXBoIHRvIGJlIHVz ZWQgaW5zdGVhZCBvZiB0aGUgQHNhbXB7Om9ufSB0ZXh0IHN0cmluZywgb24KIGVtYWNzZW4g dGhhdCBzdXBwb3J0cyB0aGlzLgorCiBAdmluZGV4IG9mZi1nbHlwaEByeyBrZXl3b3JkfQog QGl0ZW0gOm9mZi1nbHlwaAogTmFtZSBvZiBhIGdseXBoIHRvIGJlIHVzZWQgaW5zdGVhZCBv ZiB0aGUgQHNhbXB7Om9mZn0gdGV4dCBzdHJpbmcsIG9uCiBlbWFjc2VuIHRoYXQgc3VwcG9y dHMgdGhpcy4KKworQGl0ZW0gOnZhbHVlLWNyZWF0ZQorQSBmdW5jdGlvbiBmb3IgY3JlYXRp bmcgdGhlIHdpZGdldCdzIHZhbHVlLCBhY2NvcmRpbmcgdG8gaXRzCitAc2FtcHs6b259IG9y IEBzYW1wezpvZmZ9IHN0YXRlLgorCitAaXRlbSA6YWN0aW9uCitGdW5jdGlvbiB0byB0b2dn bGUgdGhlIHN0YXRlIG9mIHRoZSB3aWRnZXQuICBBZnRlciB0b2dnbGluZywgaXQKK25vdGlm aWVzIGl0c2VsZi4KKworQGl0ZW0gOm1hdGNoCitUaGlzIHdpZGdldCBtYXRjaGVzIGFueXRo aW5nLgorQGVuZCB0YWJsZQorCitAbm9kZSByYWRpby1idXR0b24tdG9nZ2xlCitAc3Vic2Vj dGlvbiBUaGUgQGNvZGV7cmFkaW8tYnV0dG9uLXRvZ2dsZX0gV2lkZ2V0CitAZmluZGV4IHJh ZGlvLWJ1dHRvbi10b2dnbGVAcnsgd2lkZ2V0fQorU3ludGF4OgorCitAZXhhbXBsZQorQHZh cnt0eXBlfSA6Oj0gKHJhZGlvLWJ1dHRvbi10b2dnbGUgW0B2YXJ7a2V5d29yZH0gQHZhcnth cmd1bWVudH1dLi4uKQorQGVuZCBleGFtcGxlCisKK0EgdG9nZ2xlIHRvIHVzZSBpbiB0aGUg QGNvZGV7cmFkaW99IHdpZGdldC4KKworSXQgb3ZlcnJpZGVzIHRoZSBmb2xsb3dpbmcgcHJv cGVydGllczoKKworQHRhYmxlIEBjb2RlCitAaXRlbSA6YnV0dG9uLXByZWZpeAorVGhlIGVt cHR5IHN0cmluZy4KKworQGl0ZW0gOmJ1dHRvbi1zdWZmaXgKK1RoZSBlbXB0eSBzdHJpbmcu CisKK0BpdGVtIDpvbgorVGhlIHN0cmluZyBgYCgqKScnLCB0byByZXByZXNlbnQgdGhlIEBz YW1we29ufSBzdGF0ZS4KKworQGl0ZW0gOm9mZgorVGhlIHN0cmluZyBgYCggKScnLCB0byBy ZXByZXNlbnQgdGhlIEBzYW1we29mZn0gc3RhdGUuCisKK0BpdGVtIDpvbi1nbHlwaAorVGhl IG5hbWUgb2YgYW4gaW1hZ2UgdG8gcmVwcmVzZW50IHRoZSBAc2FtcHtvbn0gc3RhdGUuCisK K0BpdGVtIDpvZmYtZ2xweWgKK1RoZSBuYW1lIG9mIGFuIGltYWdlIHRvIHJlcHJlc2VudCB0 aGUgQHNhbXB7b2ZmfSBzdGF0ZS4KKworQGl0ZW0gOmZvcm1hdAorQnkgZGVmYXVsdCwgaXQg YnV0dG9uaXplcyBpdHMgdmFsdWUuCisKK0BpdGVtIDpub3RpZnkKK0EgZnVuY3Rpb24gdG8g bm90aWZ5IGl0cyBwYXJlbnQuCiBAZW5kIHRhYmxlCiAKIEBub2RlIGNoZWNrYm94Ci1Ac2Vj dGlvbiBUaGUgQGNvZGV7Y2hlY2tib3h9IFdpZGdldAorQHN1YnNlY3Rpb24gVGhlIEBjb2Rl e2NoZWNrYm94fSBXaWRnZXQKIEBmaW5kZXggY2hlY2tib3hAcnsgd2lkZ2V0fQogCi1UaGlz IHdpZGdldCBoYXMgdHdvIHBvc3NpYmxlIHN0YXRlcywgQHNhbXB7c2VsZWN0ZWR9IGFuZAot QHNhbXB7dW5zZWxlY3RlZH0sIHdoaWNoIGNvcnJlc3BvbmRzIHRvIGEgQGNvZGV7dH0gb3Ig QGNvZGV7bmlsfSB2YWx1ZS4KLQogU3ludGF4OgogCiBAZXhhbXBsZQogQHZhcnt0eXBlfSA6 Oj0gKGNoZWNrYm94IFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLikKIEBlbmQg ZXhhbXBsZQogCitBIHdpZGdldCB0byByZXByZXNlbnQgYSB0b2dnbGUgd2lkZ2V0LCB3aXRo IGEgY2hlY2tib3guICBJdHMgc3VwZXIgaXMKK3RoZSBAY29kZXt0b2dnbGV9IHdpZGdldC4K KworVGhpcyB3aWRnZXQgaGFzIHR3byBwb3NzaWJsZSBzdGF0ZXMsIEBzYW1we3NlbGVjdGVk fSBhbmQKK0BzYW1we3Vuc2VsZWN0ZWR9LCB3aGljaCBjb3JyZXNwb25kcyB0byBhIEBjb2Rl e3R9IG9yIEBjb2Rle25pbH0KK3ZhbHVlLCByZXNwZWN0aXZlbHkuCisKK0l0IGVpdGhlciBv dmVycmlkZXMgb3IgYWRkcyB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6CisKK0B0YWJsZSBA Y29kZQorQGl0ZW0gOmJ1dHRvbi1wcmVmaXgKK1RoZSBlbXB0eSBzdHJpbmcuCisKK0BpdGVt IDpidXR0b24tc3VmZml4CitUaGUgZW1wdHkgc3RyaW5nLgorCitAaXRlbSA6Zm9ybWF0CitC eSBkZWZhdWx0LCBidXR0b25pemVzIHRoZSB2YWx1ZS4KKworQGl0ZW0gOm9uCitCeSBkZWZh dWx0LCB0aGUgc3RyaW5nIGBgW1hdJycuCisKK0BpdGVtIDpvZmYKK0J5IGRlZmF1bHQsIHRo ZSBzdHJpbmcgYGBbIF0nJy4KKworQGl0ZW0gOm9uLWdseXBoCitUaGUgbmFtZSBvZiB0aGUg aW1hZ2UgdG8gdXNlIHdoZW4gdGhlIHN0YXRlIGlzIEBzYW1we29ufS4KKworQGl0ZW0gOm9m Zi1nbHlwaAorVGhlIG5hbWUgb2YgdGhlIGltYWdlIHRvIHVzZSB3aGVuIHRoZSBzdGF0ZSBp cyBAc2FtcHtvZmZ9LgorCitAaXRlbSA6YWN0aW9uCitBIGZ1bmN0aW9uIHRoYXQgdG9nZ2xl cyB0aGUgY2hlY2tib3gsIG5vdGlmaWVzIHRoZSBwYXJlbnRzIGFuZCBpbiB0aGUKK0BzYW1w e29ufSBzdGF0ZSwgYWN0aXZhdGVzIGl0cyBzaWJsaW5ncy4KK0BlbmQgdGFibGUKKwogQG5v ZGUgY2hlY2tsaXN0Ci1Ac2VjdGlvbiBUaGUgQGNvZGV7Y2hlY2tsaXN0fSBXaWRnZXQKK0Bz dWJzZWN0aW9uIFRoZSBAY29kZXtjaGVja2xpc3R9IFdpZGdldAogQGZpbmRleCBjaGVja2xp c3RAcnsgd2lkZ2V0fQogCiBTeW50YXg6CkBAIC0xMDQ1LDE0ICsyMTQxLDI2IEBAIGNoZWNr bGlzdAogQHZhcnt0eXBlfSA6Oj0gKGNoZWNrbGlzdCBbQHZhcntrZXl3b3JkfSBAdmFye2Fy Z3VtZW50fV0uLi4gIEB2YXJ7dHlwZX0gLi4uICkKIEBlbmQgZXhhbXBsZQogCitBIHdpZGdl dCB0byByZXByZXNlbnQgYSBtdWx0aXBsaWNlIGNob2ljZS4gIEl0cyBzdXBlciBpcyB0aGUK K0Bjb2Rle2RlZmF1bHR9IHdpZGdldC4KKwogVGhlIEB2YXJ7dHlwZX0gYXJndW1lbnRzIHJl cHJlc2VudCBlYWNoIGNoZWNrbGlzdCBpdGVtLiAgVGhlIHdpZGdldCdzCiB2YWx1ZSB3aWxs IGJlIGEgbGlzdCBjb250YWluaW5nIHRoZSB2YWx1ZXMgb2YgYWxsIGNoZWNrZWQgQHZhcnt0 eXBlfQotYXJndW1lbnRzLiAgVGhlIGNoZWNrbGlzdCB3aWRnZXQgd2lsbCBtYXRjaCBhIGxp c3Qgd2hvc2UgZWxlbWVudHMgYWxsCi1tYXRjaCBhdCBsZWFzdCBvbmUgb2YgdGhlIHNwZWNp ZmllZCBAdmFye3R5cGV9IGFyZ3VtZW50cy4KK2FyZ3VtZW50cy4KIAotVGhlIGZvbGxvd2lu ZyBleHRyYSBwcm9wZXJ0aWVzIGFyZSByZWNvZ25pemVkOgorSXQgZWl0aGVyIG92ZXJyaWRl cyBvciBhZGRzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKIAogQHRhYmxlIEBjb2RlCitA aXRlbSA6Y29udmVydC13aWRnZXQKK0FzIG90aGVyIGNvbXBvc2l0ZSB3aWRnZXRzLCBhIGZ1 bmN0aW9uIHRoYXQgdGFrZXMgY2FyZSBvZiBjb252ZXJ0aW5nCitlYWNoIGNoZWNrbGlzdCBp dGVtLgorCitAaXRlbSA6Y29weQorQSBmdW5jdGlvbiB0byBjb3B5IGVhY2ggY2hlY2tsaXN0 IGl0ZW0uCisKK0BpdGVtIDpmb3JtYXQKK0J5IGRlZmF1bHQsIGl0IGluc2VydHMgaXRzIHZh bHVlLgorCiBAdmluZGV4IGVudHJ5LWZvcm1hdEByeyBrZXl3b3JkfQogQGl0ZW0gOmVudHJ5 LWZvcm1hdAogVGhpcyBzdHJpbmcgd2lsbCBiZSBpbnNlcnRlZCBmb3IgZWFjaCBlbnRyeSBp biB0aGUgbGlzdC4KQEAgLTEwNjYsMTQgKzIxNzQsNiBAQCBjaGVja2xpc3QKIEluc2VydCBh IGxpdGVyYWwgQHNhbXB7JX0uCiBAZW5kIHRhYmxlCiAKLUB2aW5kZXggZ3JlZWR5QHJ7IGtl eXdvcmR9Ci1AaXRlbSA6Z3JlZWR5Ci1Vc3VhbGx5IGEgY2hlY2tsaXN0IHdpbGwgb25seSBt YXRjaCBpZiB0aGUgaXRlbXMgYXJlIGluIHRoZSBleGFjdAotc2VxdWVuY2UgZ2l2ZW4gaW4g dGhlIHNwZWNpZmljYXRpb24uICBCeSBzZXR0aW5nIEBjb2RlezpncmVlZHl9IHRvCi1ub24t QGNvZGV7bmlsfSwgaXQgd2lsbCBhbGxvdyB0aGUgaXRlbXMgdG8gY29tZSBpbiBhbnkgc2Vx dWVuY2UuCi1Ib3dldmVyLCBpZiB5b3UgZXh0cmFjdCB0aGUgdmFsdWUgdGhleSB3aWxsIGJl IGluIHRoZSBzZXF1ZW5jZSBnaXZlbgotaW4gdGhlIGNoZWNrbGlzdCwgaS5lLiwgdGhlIG9y aWdpbmFsIHNlcXVlbmNlIGlzIGZvcmdvdHRlbi4KLQogQHZpbmRleCBidXR0b24tYXJnc0By eyBrZXl3b3JkfQogQGl0ZW0gOmJ1dHRvbi1hcmdzCiBBIGxpc3Qgb2Yga2V5d29yZHMgdG8g cGFzcyB0byB0aGUgY2hlY2tib3hlcy4gIFVzZWZ1bCBmb3Igc2V0dGluZywKQEAgLTEwOTAs MTAgKzIxOTAsMzUgQEAgY2hlY2tsaXN0CiBAdmluZGV4IGFyZ3NAcnsga2V5d29yZH0KIEBp dGVtIDphcmdzCiBUaGUgbGlzdCBvZiB0eXBlcy4KKworQGl0ZW0gOnZhbHVlLWNyZWF0ZQor VGhlIGZ1bmN0aW9uIHRoYXQgdGFrZXMgY2FyZSBvZiBpbnNlcnRpbmcgYWxsIHZhbHVlcy4K KworQGl0ZW0gOnZhbHVlLWdldAorQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYWxsIHZhbHVl cyBvZiBzZWxlY3RlZCBpdGVtcy4KKworQGl0ZW0gOnZhbGlkYXRlCitBIGZ1bmN0aW9uIHRo YXQgZW5zdXJlcyBhbGwgc2VsZWN0ZWQgY2hpbGRyZW4gYXJlIHZhbGlkLgorCitAaXRlbSA6 bWF0Y2gKK1RoZSBjaGVja2xpc3Qgd2lkZ2V0IHdpbGwgbWF0Y2ggYSBsaXN0IHdob3NlIGVs ZW1lbnRzIGFsbAorbWF0Y2ggYXQgbGVhc3Qgb25lIG9mIHRoZSBzcGVjaWZpZWQgQHZhcnt0 eXBlfSBhcmd1bWVudHMuCisKK0BpdGVtIDptYXRjaC1pbmxpbmUKK0xpa2UgdGhlIEBjb2Rl ezptYXRjaH0gZnVuY3Rpb24sIGJ1dCB0YWtpbmcgaW50byBhY2NvdW50IHRoZQorQGNvZGV7 OmlubGluZX0gcHJvcGVydHkuCisKK0B2aW5kZXggZ3JlZWR5QHJ7IGtleXdvcmR9CitAaXRl bSA6Z3JlZWR5CitVc3VhbGx5IGEgY2hlY2tsaXN0IHdpbGwgb25seSBtYXRjaCBpZiB0aGUg aXRlbXMgYXJlIGluIHRoZSBleGFjdAorc2VxdWVuY2UgZ2l2ZW4gaW4gdGhlIHNwZWNpZmlj YXRpb24uICBCeSBzZXR0aW5nIEBjb2RlezpncmVlZHl9IHRvCitub24tQGNvZGV7bmlsfSwg aXQgd2lsbCBhbGxvdyB0aGUgaXRlbXMgdG8gY29tZSBpbiBhbnkgc2VxdWVuY2UuCitIb3dl dmVyLCBpZiB5b3UgZXh0cmFjdCB0aGUgdmFsdWUgdGhleSB3aWxsIGJlIGluIHRoZSBzZXF1 ZW5jZSBnaXZlbgoraW4gdGhlIGNoZWNrbGlzdCwgaS5lLiwgdGhlIG9yaWdpbmFsIHNlcXVl bmNlIGlzIGZvcmdvdHRlbi4KIEBlbmQgdGFibGUKIAogQG5vZGUgZWRpdGFibGUtbGlzdAot QHNlY3Rpb24gVGhlIEBjb2Rle2VkaXRhYmxlLWxpc3R9IFdpZGdldAorQHN1YnNlY3Rpb24g VGhlIEBjb2Rle2VkaXRhYmxlLWxpc3R9IFdpZGdldAogQGZpbmRleCBlZGl0YWJsZS1saXN0 QHJ7IHdpZGdldH0KIAogU3ludGF4OgpAQCAtMTEwMiwxMiArMjIyNywxOSBAQCBlZGl0YWJs ZS1saXN0CiBAdmFye3R5cGV9IDo6PSAoZWRpdGFibGUtbGlzdCBbQHZhcntrZXl3b3JkfSBA dmFye2FyZ3VtZW50fV0uLi4gQHZhcnt0eXBlfSkKIEBlbmQgZXhhbXBsZQogCi1UaGUgdmFs dWUgaXMgYSBsaXN0LCB3aGVyZSBlYWNoIG1lbWJlciByZXByZXNlbnRzIG9uZSB3aWRnZXQg b2YgdHlwZQotQHZhcnt0eXBlfS4KK0Egd2lkZ2V0IHRoYXQgY2FuIGhvbGQgYSB2YXJpYWJs ZSBsaXN0IG9mIHdpZGdldHMgb2YgdGhlIHNhbWUgdHlwZSwKK3JlcHJlc2VudGVkIGJ5IEB2 YXJ7dHlwZX0uICBJdHMgc3VwZXIgaXMgdGhlIEBjb2Rle2RlZmF1bHR9IHdpZGdldC4KIAot VGhlIGZvbGxvd2luZyBleHRyYSBwcm9wZXJ0aWVzIGFyZSByZWNvZ25pemVkOgorSXQgZWl0 aGVyIG92ZXJyaWRlcyBvciBhZGRzIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczoKIAogQHRh YmxlIEBjb2RlCitAaXRlbSA6Y29udmVydC13aWRnZXQKK0FzIG90aGVyIGNvbXBvc2l0ZSB3 aWRnZXRzLCBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgY2FyZSBvZiBjb252ZXJ0aW5nCitlYWNo IHR5cGUgaW4gQHZhcnt0eXBlfS4KKworQGl0ZW0gOmNvcHkKK0EgZnVuY3Rpb24gdG8gY29w eSB0aGUgdHlwZXMgZ2l2ZW4gaW4gQHZhcnt0eXBlfS4KKwogQHZpbmRleCBlbnRyeS1mb3Jt YXRAcnsga2V5d29yZH0KIEBpdGVtIDplbnRyeS1mb3JtYXQKIFRoaXMgc3RyaW5nIHdpbGwg YmUgaW5zZXJ0ZWQgZm9yIGVhY2ggZW50cnkgaW4gdGhlIGxpc3QuCkBAIC0xMTE3LDkgKzIy NDksOSBAQCBlZGl0YWJsZS1saXN0CiBUaGlzIHdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUg YnVmZmVyIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBAdmFye3R5cGV9CiB3aWRnZXQuCiBAaXRl bSAlaQotSW5zZXJ0IHRoZSBAYntbSU5TXX0gYnV0dG9uLgorSW5zZXJ0IHRoZSBAYntbSU5T XX0gYnV0dG9uLCBhIHdpZGdldCBvZiB0eXBlIEBjb2Rle2luc2VydC1idXR0b259LgogQGl0 ZW0gJWQKLUluc2VydCB0aGUgQGJ7W0RFTF19IGJ1dHRvbi4KK0luc2VydCB0aGUgQGJ7W0RF TF19IGJ1dHRvbiwgYSB3aWRnZXQgb2YgdHlwZSBAY29kZXtkZWxldGUtYnV0dG9ufS4KIEBp dGVtICUlCiBJbnNlcnQgYSBsaXRlcmFsIEBzYW1weyV9LgogQGVuZCB0YWJsZQpAQCAtMTE0 MCw2ICsyMjcyLDE4IEBAIGVkaXRhYmxlLWxpc3QKIEBpdGVtIDpidXR0b25zCiBUaGUgd2lk Z2V0cyByZXByZXNlbnRpbmcgdGhlIGluc2VydCBhbmQgZGVsZXRlIGJ1dHRvbnMuCiAKK0Bp dGVtIDpmb3JtYXQKK0J5IGRlZmF1bHQsIGluc2VydCBpdHMgdmFsdWUgYW5kIGF0IHRoZSBh bmQgYWRkcyBhbiBpbnNlcnQgYnV0dG9uLgorCitUaGlzIGlzIHVzZWZ1bCBzbyB0aGF0IG5l dyBlbGVtZW50cyBjYW4gYmUgYWRkZWQgdG8gdGhlIGxpc3QgdXBvbiB1c2VyCityZXF1ZXN0 LgorCitAaXRlbSA6Zm9ybWF0LWhhbmRsZXIKK0EgZnVuY3Rpb24gdGhhdCByZWNvZ25pemUg dGhlIGVzY2FwZSBmb3IgaW5zZXJ0aW5nIGFuIGluc2VydCBidXR0b24uCisKK0BpdGVtIDpv ZmZzZXQKK0J5IGRlZmF1bHQsIHRoaXMgd2lkZ2V0IGhhcyBhbiBvZmZzZXQgb2YgMTIuCisK IEB2aW5kZXggY2hpbGRyZW5Acnsga2V5d29yZH0KIEBpdGVtIDpjaGlsZHJlbgogVGhlIHdp ZGdldHMgcmVwcmVzZW50aW5nIHRoZSBlbGVtZW50cyBvZiB0aGUgbGlzdC4KQEAgLTExNDcs MjQgKzIyOTEsMTI0IEBAIGVkaXRhYmxlLWxpc3QKIEB2aW5kZXggYXJnc0ByeyBrZXl3b3Jk fQogQGl0ZW0gOmFyZ3MKIExpc3Qgd2hvc2UgQHNje2Nhcn0gaXMgdGhlIHR5cGUgb2YgdGhl IGxpc3QgZWxlbWVudHMuCisKK0BpdGVtIDppbnNlcnQtYmVmb3JlCitGdW5jdGlvbiB0byBp bnNlcnQgYSBuZXcgd2lkZ2V0IGFzIGEgY2hpbGQgb2YgdGhlIEBjb2Rle2VkaXRhYmxlLWxp c3R9Cit3aWRnZXQuCisKK1RoaXMgZnVuY3Rpb24gaW5zZXJ0cyBhIHJlY2VudGx5IGRlbGV0 ZWQgY2hpbGQsIGlmIHRoZXJlIGlzIG9uZS4gIFRoYXQKK2lzIHVzZWZ1bCwgc28gdGhhdCB0 aGUgdXNlciBjYW4gbW92ZSBlbGVtZW50cyBpbiBhIGxpc3QgZWFzaWx5LiAgSWYKK3RoZXJl IGlzIG5vdCBhIHJlY2VudGx5IGRlbGV0ZWQgY2hpbGQsIGl0IGluc2VydHMgYSBjaGlsZCB3 aXRoIGl0cworZGVmYXVsdCB2YWx1ZS4KKworQGl0ZW0gOmRlbGV0ZS1hdAorRnVuY3Rpb24g dG8gZGVsZXRlIGEgY2hpbGQgZnJvbSB0aGUgd2lkZ2V0LCBhbmQgc3RvcmUgaXQgaW50byB0 aGUKK0Bjb2RlezpsYXN0LWRlbGV0ZWR9IGxpc3QsIHNvIHRoYXQgaXQgY2FuIGJlIHJlaW5z ZXJ0ZWQgd2hlbiB0aGUKK0Bjb2RlezppbnNlcnQtYmVmb3JlfSBmdW5jdGlvbiBleGVjdXRl cy4KKworQGl0ZW0gOnZhbHVlLWNyZWF0ZQorVGhlIGZ1bmN0aW9uIHRoYXQgdGFrZXMgY2Fy ZSBvZiBpbnNlcnRpbmcgYWxsIHZhbHVlcy4KKworQGl0ZW0gOnZhbHVlLWdldAorRnVuY3Rp b24gdGhhdCByZXR1cm5zIGEgbGlzdCB3aXRoIHRoZSB2YWx1ZSBvZiB0aGUgY2hpbGQgd2lk Z2V0cy4KKworQGl0ZW0gOnZhbGlkYXRlCitUaGlzIHdpZGdldCB2YWxpZGF0ZXMgaWYgYWxs IGNoaWxkcmVuIHZhbGlkYXRlLgorCitAaXRlbSA6bWF0Y2gKK1RvIG1hdGNoLCB0aGUgdmFs dWUgbXVzdCBiZSBhIGxpc3QgYW5kIGFsbCB0aGUgbGlzdCBtZW1iZXJzIG11c3QgbWF0Y2gK K3RoZSBzcGVjaWZpZWQgQHZhcnt0eXBlfS4KKworQGl0ZW0gOm1hdGNoLWlubGluZQorTGlr ZSB0aGUgQGNvZGV7Om1hdGNofSBmdW5jdGlvbiwgYnV0IHRha2luZyBpbnRvIGFjY291bnQg aW5saW5lCit2YWx1ZXMgYW5kIHdpZGdldHMuCiBAZW5kIHRhYmxlCiAKIEBub2RlIGdyb3Vw Ci1Ac2VjdGlvbiBUaGUgQGNvZGV7Z3JvdXB9IFdpZGdldAorQHN1YnNlY3Rpb24gVGhlIEBj b2Rle2dyb3VwfSBXaWRnZXQKIEBmaW5kZXggZ3JvdXBAcnsgd2lkZ2V0fQogCi1UaGlzIHdp ZGdldCBzaW1wbHkgZ3JvdXAgb3RoZXIgd2lkZ2V0cyB0b2dldGhlci4KLQogU3ludGF4Ogog CiBAZXhhbXBsZQogQHZhcnt0eXBlfSA6Oj0gKGdyb3VwIFtAdmFye2tleXdvcmR9IEB2YXJ7 YXJndW1lbnR9XS4uLiBAdmFye3R5cGV9Li4uKQogQGVuZCBleGFtcGxlCiAKLVRoZSB2YWx1 ZSBpcyBhIGxpc3QsIHdpdGggb25lIG1lbWJlciBmb3IgZWFjaCBAdmFye3R5cGV9LgorQSB3 aWRnZXQgdG8gZ3JvdXAgb3RoZXIgd2lkZ2V0cy4gIEl0cyBzdXBlciBpcyB0aGUgQGNvZGV7 ZGVmYXVsdH0KK3dpZGdldC4KKworSXRzIHZhbHVlIGlzIGEgbGlzdCwgd2l0aCBvbmUgbWVt YmVyIGZvciBlYWNoIEB2YXJ7dHlwZX0uCisKK0l0IG92ZXJyaWRlcyB0aGUgZm9sbG93aW5n IHByb3BlcnRpZXM6CisKK0B0YWJsZSBAY29kZQorQGl0ZW0gOmNvbnZlcnQtd2lkZ2V0CitB cyBvdGhlciBjb21wb3NpdGUgd2lkZ2V0cywgYSBmdW5jdGlvbiB0aGF0IHRha2VzIGNhcmUg b2YgY29udmVydGluZworZWFjaCB3aWRnZXQgaW4gQHZhcnt0eXBlfS4KKworQGl0ZW0gOmNv cHkKK0EgZnVuY3Rpb24gdG8gY29weSB0aGUgdHlwZXMgZ2l2ZW4gaW4gQHZhcnt0eXBlfS4K KworQGl0ZW0gOmZvcm1hdAorQnkgZGVmYXVsdCwgZGlzcGxheXMgYSBuZXdsaW5lIGNoYXJh Y3RlciBhbmQgaXRzIHZhbHVlLgorCitAaXRlbSA6dmFsdWUtY3JlYXRlCitBIGZ1bmN0aW9u IHRvIGNyZWF0ZSBlYWNoIG9mIGl0cyBjb21wb25lbnRzLgorCitAaXRlbSA6dmFsdWUtZ2V0 CitUaGUgc2FtZSBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBAY29kZXtlZGl0YWJsZS1saXN0fSB3 aWRnZXQuCisKK0BpdGVtIDpkZWZhdWx0LWdldAorQSBmdW5jdGlvbiB0aGF0IHJldHVybnMg YSBsaXN0IHdob3NlIG1lbWJlcnMgYXJlIHRoZSBkZWZhdWx0IHZhbHVlcyBvZgorZWFjaCB3 aWRnZXQgaXQgZ3JvdXBzLgorCitAaXRlbSA6dmFsaWRhdGUKK1RoaXMgd2lkZ2V0IHZhbGlk YXRlcyBpZiBhbGwgb2YgaXRzIGNoaWxkcmVuIHZhbGlkYXRlLgorCitAaXRlbSA6bWF0Y2gK K1RoaXMgd2lkZ2V0IG1hdGNoZXMgYSB2YWx1ZSB0aGF0IG1hdGNoZXMgZWFjaCBvZiBpdHMg Y29tcG9uZW50cy4KKworQGl0ZW0gOm1hdGNoLWlubGluZQorQXMgQGNvZGV7Om1hdGNofSwg YnV0IHRha2luZyBpbnRvIGFjY291bnQgd2lkZ2V0cyBhbmQgdmFsdWVzIHRoYXQgYXJlCitp bmxpbmUuCitAZW5kIHRhYmxlCisKK0Bub2RlIGRvY3VtZW50YXRpb24tc3RyaW5nCitAc3Vi c2VjdGlvbiBUaGUgQGNvZGV7ZG9jdW1lbnRhdGlvbi1zdHJpbmd9IFdpZGdldAorQGZpbmRl eCBkb2N1bWVudGF0aW9uLXN0cmluZ0ByeyB3aWRnZXR9CitTeW50YXg6CisKK0BleGFtcGxl CitAdmFye3R5cGV9IDo6PSAoZG9jdW1lbnRhdGlvbi1zdHJpbmcgW0B2YXJ7a2V5d29yZH0g QHZhcnthcmd1bWVudH1dLi4uIEB2YXJ7dmFsdWV9KQorQGVuZCBleGFtcGxlCisKK0Egd2lk Z2V0IHRvIHJlcHJlc2VudCBhIGRvY3VtZW50YXRpb24gc3RyaW5nLiAgSXRzIHN1cGVyIGlz IHRoZQorQGNvZGV7aXRlbX0gd2lkZ2V0LgorCitJdCBlaXRoZXIgb3ZlcnJpZGVzIG9yIGFk ZHMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOgorCitAdGFibGUgQGNvZGUKK0BpdGVtIDpm b3JtYXQKK0J5IGRlZmF1bHQsIGluc2VydCBpdHMgdmFsdWUuCisKK0BpdGVtIDp2YWx1ZS1j cmVhdGUKK0Z1bmN0aW9uIHRvIGluc2VydCBhIGRvY3VtZW50YXRpb24gc3RyaW5nLCBwb3Nz aWJseSBoaWRpbmcgcGFydCBvZiB0aGUKK2RvY3VtZW50YXRpb24gaWYgaXRzIGxhcmdlLgor CitUbyBzaG93IG9yIGhpZGUgdGhlIHJlc3Qgb2YgdGhlIGRvY3VtZW50YXRpb24sIHVzZXMg YQorQGNvZGV7dmlzaWJpbGl0eX0gd2lkZ2V0LgorCitAaXRlbSA6YWN0aW9uCitGdW5jdGlv biB0byB0b2dnbGUgc2hvd2luZyB0aGUgZG9jdW1lbnRhdGlvbiB1cG9uIGFuIGV2ZW50Lgor CitAaXRlbSA6dmlzaWJpbGl0eS13aWRnZXQKK0Egc3ltYm9sLCB0aGUgdHlwZSBvZiB0aGUg d2lkZ2V0IHRvIHVzZSBmb3IgdGhlIHZpc2liaWxpdHkgd2lkZ2V0LgorCitUaGlzIGlzLCBi eSBkZWZhdWx0LCB0aGUgc3ltYm9sIEBjb2Rle3Zpc2liaWxpdHl9LgorQGVuZCB0YWJsZQog CiBAbm9kZSBTZXhwIFR5cGVzCi1AY2hhcHRlciBTZXhwIFR5cGVzCitAc2VjdGlvbiBTZXhw IFR5cGVzCiBAY2luZGV4IHNleHAgdHlwZXMKIAogQSBudW1iZXIgb2Ygd2lkZ2V0cyBmb3Ig ZWRpdGluZyBAZGZue3MtZXhwcmVzc2lvbnN9IChMaXNwIHR5cGVzKSwgc2V4cApAQCAtMTE3 OSw3ICsyNDIzLDcgQEAgU2V4cCBUeXBlcwogQGVuZCBtZW51CiAKIEBub2RlIGNvbnN0YW50 cwotQHNlY3Rpb24gVGhlIENvbnN0YW50IFdpZGdldHMKK0BzdWJzZWN0aW9uIFRoZSBDb25z dGFudCBXaWRnZXRzCiBAY2luZGV4IGNvbnN0YW50IHdpZGdldHMKIAogVGhlIEBjb2Rle2Nv bnN0fSB3aWRnZXQgY2FuIGNvbnRhaW4gYW55IExpc3AgZXhwcmVzc2lvbiwgYnV0IHRoZSB1 c2VyIGlzCkBAIC0xMTkyLDE5ICsyNDM2LDI2IEBAIGNvbnN0YW50cwogQHZhcnt0eXBlfSA6 Oj0gKGNvbnN0IFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiAgWyBAdmFye3Zh bHVlfSBdKQogQGVuZCBleGFtcGxlCiAKLVRoZSBAdmFye3ZhbHVlfSwgaWYgcHJlc2VudCwg aXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBAY29kZXs6dmFsdWV9Ci1wcm9wZXJ0eSBhbmQg Y2FuIGJlIGFueSBzLWV4cHJlc3Npb24uCitJdHMgc3VwZXIgaXMgdGhlIEBjb2Rle2l0ZW19 IHdpZGdldC4gIFRoZSBAdmFye3ZhbHVlfSwgaWYgcHJlc2VudCwgaXMKK3VzZWQgdG8gaW5p dGlhbGl6ZSB0aGUgQGNvZGV7OnZhbHVlfSBwcm9wZXJ0eSBhbmQgY2FuIGJlIGFueQorcy1l eHByZXNzaW9uLgogCiBAZGVmZm4gV2lkZ2V0IGNvbnN0CiBUaGlzIHdpbGwgZGlzcGxheSBh bnkgdmFsaWQgcy1leHByZXNzaW9uIGluIGFuIGltbXV0YWJsZSBwYXJ0IG9mIHRoZQogYnVm ZmVyLgorCitJdCBvdmVycmlkZXMgdGhlIEBjb2Rlezpwcm9tcHQtdmFsdWV9IGZ1bmN0aW9u LCB0byBhdm9pZCBwcm9tcHRpbmcgYW5kCitqdXN0IHJldHVybiB0aGUgd2lkZ2V0J3MgdmFs dWUuCiBAZW5kIGRlZmZuCiAKIFRoZXJlIGFyZSB0d28gdmFyaWF0aW9ucyBvZiB0aGUgQGNv ZGV7Y29uc3R9IHdpZGdldCwgbmFtZWx5CiBAY29kZXt2YXJpYWJsZS1pdGVtfSBhbmQgQGNv ZGV7ZnVuY3Rpb24taXRlbX0uICBUaGVzZSBzaG91bGQgY29udGFpbiBhCi1zeW1ib2wgd2l0 aCBhIHZhcmlhYmxlIG9yIGZ1bmN0aW9uIGJpbmRpbmcuICBUaGUgbWFqb3IgZGlmZmVyZW5j ZSBmcm9tCi10aGUgQGNvZGV7Y29uc3R9IHdpZGdldCBpcyB0aGF0IHRoZXkgd2lsbCBhbGxv dyB0aGUgdXNlciB0byBzZWUgdGhlCi12YXJpYWJsZSBvciBmdW5jdGlvbiBkb2N1bWVudGF0 aW9uIGZvciB0aGUgc3ltYm9sLgorc3ltYm9sIHdpdGggYSB2YXJpYWJsZSBvciBmdW5jdGlv biBiaW5kaW5nLCByZXNwZWN0aXZlbHkuICBUaGUgbWFqb3IKK2RpZmZlcmVuY2UgZnJvbSB0 aGUgQGNvZGV7Y29uc3R9IHdpZGdldCBpcyB0aGF0IHRoZXkgd2lsbCBhbGxvdyB0aGUKK3Vz ZXIgdG8gc2VlIHRoZSB2YXJpYWJsZSBvciBmdW5jdGlvbiBkb2N1bWVudGF0aW9uIGZvciB0 aGUgc3ltYm9sLgorCitUaGlzIGlzIGFjY29tcGxpc2hlZCB2aWEgdXNpbmcgdGhlIEBzYW1w eyVofSBmb3JtYXQgZXNjYXBlLCBhbmQgYWRkaW5nCithbiBhcHByb3BpYXRlIEBjb2Rlezpk b2N1bWVudGF0aW9uLXByb3BlcnR5fSBmdW5jdGlvbiBmb3IgZWFjaCB3aWRnZXQuCiAKIEBk ZWZmbiBXaWRnZXQgdmFyaWFibGUtaXRlbQogQW4gaW1tdXRhYmxlIHN5bWJvbCB0aGF0IGlz IGJvdW5kIGFzIGEgdmFyaWFibGUuCkBAIC0xMjE1LDcgKzI0NjYsNyBAQCBjb25zdGFudHMK IEBlbmQgZGVmZm4KIAogQG5vZGUgZ2VuZXJpYwotQHNlY3Rpb24gR2VuZXJpYyBTZXhwIFdp ZGdldAorQHN1YnNlY3Rpb24gR2VuZXJpYyBTZXhwIFdpZGdldAogQGNpbmRleCBnZW5lcmlj IHNleHAgd2lkZ2V0CiAKIFRoZSBAY29kZXtzZXhwfSB3aWRnZXQgY2FuIGNvbnRhaW4gYW55 IExpc3AgZXhwcmVzc2lvbiwgYW5kIGFsbG93cyB0aGUKQEAgLTEyMjgsMjMgKzI0NzksNDIg QEAgZ2VuZXJpYwogQGVuZCBleGFtcGxlCiAKIEBkZWZmbiBXaWRnZXQgc2V4cAotVGhpcyB3 aWxsIGFsbG93IHlvdSB0byBlZGl0IGFueSB2YWxpZCBzLWV4cHJlc3Npb24gaW4gYW4gZWRp dGFibGUgYnVmZmVyCi1maWVsZC4KK1RoaXMgd2lkZ2V0IHJlcHJlc2VudHMgYW4gZWRpdGFi bGUgZmllbGQgdGhhdCdzIHVzZWZ1bCB0byBlZGl0IGFueQordmFsaWQgcy1leHByZXNzaW9u LgogCiBUaGUgQGNvZGV7c2V4cH0gd2lkZ2V0IHRha2VzIHRoZSBzYW1lIGtleXdvcmQgYXJn dW1lbnRzIGFzIHRoZQogQGNvZGV7ZWRpdGFibGUtZmllbGR9IHdpZGdldC4gIEB4cmVme2Vk aXRhYmxlLWZpZWxkfS4KKworSXRzIGRlZmF1bHQgdmFsdWUgaXMgQGNvZGV7bmlsfS4KK0Bl bmQgZGVmZm4KKworQGRlZmZuIFdpZGdldCByZXN0cmljdGVkLXNleHAKK0Egd2lkZ2V0IHRv IGVkaXQgTGlzcCBleHByZXNzaW9ucyByZXN0cmljdGVkIHRvIGNlcnRhaW4gdmFsdWVzIG9y Cit0eXBlcy4gIEl0cyBzdXBlciBpcyB0aGUgQGNvZGV7c2V4cH0gd2lkZ2V0LgorCitJdCB3 b3JrcyBqdXN0IGxpa2UgdGhlIHNleHAgd2lkZ2V0LCBidXQgaXQgb3ZlcnJpZGVzIHRoZSBA Y29kZXs6bWF0Y2h9CitmdW5jdGlvbiB0byBtYXRjaCBmb3IgY2VydGFpbiB2YWx1ZXMuICBU byB1c2UgdGhpcyB3aWRnZXQsIGVpdGhlciB5b3UKK211c3QgZGVmaW5lIGEgQGNvZGV7Om1h dGNofSBmdW5jdGlvbiBvciBnaXZlIGEKK0Bjb2RlezptYXRjaC1hbHRlcm5hdGl2ZXN9IHBy b3BlcnR5LiAgVGhlIEBjb2RlezptYXRjaC1hbHRlcm5hdGl2ZXN9Citwcm9wZXJ0eSBob2xk cyBhIGxpc3Qgb2YgcHJlZGljYXRlIGZ1bmN0aW9ucyB0byBjYWxsIHdoZW4gY2hlY2tpbmcg aWYKK2EgZ2l2ZW4gdmFsdWUgbWF0Y2hlcyB0aGUgd2lkZ2V0LiAgRWFjaCBwcmVkaWNhdGUg ZnVuY3Rpb24gd2lsbCBiZQorY2FsbGVkIHdpdGggb25lIGFyZ3VtZW50LCB0aGUgdmFsdWUg dG8gYmUgbWF0Y2hlZCwgYW5kIHNob3VsZCByZXR1cm4KK25vbi1AY29kZXtuaWx9IG9uIHN1 Y2Nlc3MuCisKK0FzIGFuIGV4YW1wbGUsIHRoZSBAY29kZXtpbnRlZ2VyfSB3aWRnZXQgb3Zl cnJpZGVzCitAY29kZXs6bWF0Y2gtYWx0ZXJuYXRpdmVzfSB0byBAY29kZXsoaW50ZWdlcnAp fS4KIEBlbmQgZGVmZm4KIAogQG5vZGUgYXRvbXMKLUBzZWN0aW9uIEF0b21pYyBTZXhwIFdp ZGdldHMKK0BzdWJzZWN0aW9uIEF0b21pYyBTZXhwIFdpZGdldHMKIEBjaW5kZXggYXRvbWlj IHNleHAgd2lkZ2V0CiAKIFRoZSBhdG9tcyBhcmUgcy1leHByZXNzaW9ucyB0aGF0IGRvIG5v dCBjb25zaXN0IG9mIG90aGVyIHMtZXhwcmVzc2lvbnMuCiBGb3IgZXhhbXBsZSwgYSBzdHJp bmcsIGEgZmlsZSBuYW1lLCBvciBhIHN5bWJvbCBhcmUgYXRvbXMsIHdoaWxlIGEgbGlzdAog aXMgYSBjb21wb3NpdGUgdHlwZS4gIFlvdSBjYW4gZWRpdCB0aGUgdmFsdWUgb2YgYW4gYXRv bSB3aXRoIHRoZQotZm9sbG93aW5nIHdpZGdldHMuCit3aWRnZXRzIGRlc2NyaWJlZCBpbiB0 aGlzIHNlY3Rpb24uCiAKLVRoZSBzeW50YXggZm9yIGFsbCB0aGUgYXRvbXMgYXJlOgorVGhl IHN5bnRheCBmb3IgYWxsIHRoZSBhdG9tcyBpczoKIAogQGV4YW1wbGUKIEB2YXJ7dHlwZX0g Ojo9IChAdmFye2NvbnN0cnVjdH0gW0B2YXJ7a2V5d29yZH0gQHZhcnthcmd1bWVudH1dLi4u ICBbIEB2YXJ7dmFsdWV9IF0pCkBAIC0xMjUyLDY4ICsyNTIyLDE1MSBAQCBhdG9tcwogCiBU aGUgQHZhcnt2YWx1ZX0sIGlmIHByZXNlbnQsIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUg QGNvZGV7OnZhbHVlfQogcHJvcGVydHkgYW5kIG11c3QgYmUgYW4gZXhwcmVzc2lvbiBvZiB0 aGUgc2FtZSB0eXBlIGFzIHRoZSB3aWRnZXQuCi1UaGF0IGlzLCB0aGUgc3RyaW5nIHdpZGdl dCBjYW4gb25seSBiZSBpbml0aWFsaXplZCB3aXRoIGEgc3RyaW5nLgorVGhhdCBpcywgZm9y IGV4YW1wbGUsIHRoZSBzdHJpbmcgd2lkZ2V0IGNhbiBvbmx5IGJlIGluaXRpYWxpemVkIHdp dGggYQorc3RyaW5nLgogCiBBbGwgdGhlIGF0b20gd2lkZ2V0cyB0YWtlIHRoZSBzYW1lIGtl eXdvcmQgYXJndW1lbnRzIGFzIHRoZQogQGNvZGV7ZWRpdGFibGUtZmllbGR9IHdpZGdldC4g IEB4cmVme2VkaXRhYmxlLWZpZWxkfS4KIAogQGRlZmZuIFdpZGdldCBzdHJpbmcKLUFsbG93 cyB5b3UgdG8gZWRpdCBhIHN0cmluZyBpbiBhbiBlZGl0YWJsZSBmaWVsZC4KK0FuIGVkaXRh YmxlIGZpZWxkIHdpZGdldCB0aGF0IGNhbiByZXByZXNlbnQgYW55IExpc3Agc3RyaW5nLgor CitJdCBvZmZlcnMgY29tcGxldGlvbiB2aWEgdGhlIGlzcGVsbCBsaWJyYXJ5IGFuZCB0aGUg QGNvZGV7OmNvbXBsZXRlfQorcHJvcGVydHkuCiBAZW5kIGRlZmZuCiAKIEBkZWZmbiBXaWRn ZXQgcmVnZXhwCi1BbGxvd3MgeW91IHRvIGVkaXQgYSByZWd1bGFyIGV4cHJlc3Npb24gaW4g YW4gZWRpdGFibGUgZmllbGQuCitBbiBlZGl0YWJsZSBmaWVsZCB3aWRnZXQgdGhhdCBjYW4g cmVwcmVzZW50IGEgcmVndWxhciBleHByZXNzaW9uLgorCitPdmVycmlkZXMgdGhlIEBjb2Rl ezptYXRjaH0gYW5kIHRoZSBAY29kZXs6dmFsaWRhdGV9IHByb3BlcnRpZXMgdG8KK2NoZWNr IHRoYXQgdGhlIHZhbHVlIGlzIGEgdmFsaWQgcmVnZXhwLgogQGVuZCBkZWZmbgogCiBAZGVm Zm4gV2lkZ2V0IGNoYXJhY3RlcgotQWxsb3dzIHlvdSB0byBlbnRlciBhIGNoYXJhY3RlciBp biBhbiBlZGl0YWJsZSBmaWVsZC4KK0FuIGVkaXRhYmxlIGZpZWxkIHdpZGdldCB0aGF0IGNh biByZXByZXNlbnQgYSBjaGFyYWN0ZXIuCisKK1RoZSBjaGFyYWN0ZXIgd2lkZ2V0IHJlcHJl c2VudHMgc29tZSBjaGFyYWN0ZXJzIChsaWtlIHRoZSBuZXdsaW5lCitjaGFyYWN0ZXIpIGlu IGEgc3BlY2lhbCBtYW5uZXIsIHRvIG1ha2UgaXQgZWFzaWVyIGZvciB0aGUgdXNlciB0byBz ZWUKK3doYXQncyB0aGUgY29udGVudCBvZiB0aGUgY2hhcmFjdGVyIGZpZWxkLgogQGVuZCBk ZWZmbgogCiBAZGVmZm4gV2lkZ2V0IGZpbGUKLUFsbG93cyB5b3UgdG8gZWRpdCBhIGZpbGUg bmFtZSBpbiBhbiBlZGl0YWJsZSBmaWVsZC4KK0Egd2lkZ2V0IGZvciBlZGl0aW5nIGZpbGUg bmFtZXMuCiAKIEtleXdvcmRzOgogQHRhYmxlIEBjb2RlCitAaXRlbSA6Y29tcGxldGlvbnMK K09mZmVycyBmaWxlIG5hbWUgY29tcGxldGlvbiB0byB0aGUgdXNlci4KKworQGl0ZW0gOnBy b21wdC12YWx1ZQorQSBmdW5jdGlvbiB0byByZWFkIGEgZmlsZSBuYW1lIGZyb20gdGhlIG1p bmlidWZmZXIuCisKIEB2aW5kZXggbXVzdC1tYXRjaEByeyBrZXl3b3JkfQogQGl0ZW0gOm11 c3QtbWF0Y2gKLUlmIHRoaXMgaXMgc2V0IHRvIG5vbi1AY29kZXtuaWx9LCBvbmx5IGV4aXN0 aW5nIGZpbGUgbmFtZXMgd2lsbCBiZQotYWxsb3dlZCBpbiB0aGUgbWluaWJ1ZmZlci4KK0lm IHRoaXMgaXMgc2V0IHRvIG5vbi1AY29kZXtuaWx9LCBvbmx5IGV4aXN0aW5nIGZpbGUgbmFt ZXMgYXJlIGFsbG93ZWQKK3doZW4gcHJvbXB0aW5nIGZvciBhIHZhbHVlIGluIHRoZSBtaW5p YnVmZmVyLgorCitAaXRlbSA6bWF0Y2gKK1RoZSB3aWRnZXQgbWF0Y2hlcyBpZiB0aGUgdmFs dWUgaXMgYSBzdHJpbmcsIGFuZCB0aGUgZmlsZSB3aG9zZSBuYW1lCitpcyB0aGF0IHN0cmlu ZyBpcyBhbiBleGlzdGluZyBmaWxlLCBvciBpZiBAY29kZXs6bXVzdC1tYXRjaH0gaXMKK0Bj b2Rle25pbH0uCisKK0BpdGVtIDp2YWxpZGF0ZQorVGhlIHdpZGdldCBpcyB2YWxpZCBpZiBp dHMgdmFsdWUgbWF0Y2hlcy4KKwogQGVuZCB0YWJsZQogQGVuZCBkZWZmbgogCiBAZGVmZm4g V2lkZ2V0IGRpcmVjdG9yeQotQWxsb3dzIHlvdSB0byBlZGl0IGEgZGlyZWN0b3J5IG5hbWUg aW4gYW4gZWRpdGFibGUgZmllbGQuCi1TaW1pbGFyIHRvIHRoZSBAY29kZXtmaWxlfSB3aWRn ZXQuCitBIHdpZGdldCBmb3IgZWRpdGluZyBkaXJlY3RvcnkgbmFtZXMuCisKK0l0cyBzdXBl ciBpcyB0aGUgQGNvZGV7ZmlsZX0gd2lkZ2V0LCBhbmQgaXQgb3ZlcnJpZGVzIHRoZQorQGNv ZGV7OmNvbXBsZXRpb25zfSBwcm9wZXJ0eSwgdG8gb2ZmZXIgY29tcGxldGlvbnMgb25seSBm b3IKK2RpcmVjdG9yaWVzLgogQGVuZCBkZWZmbgogCiBAZGVmZm4gV2lkZ2V0IHN5bWJvbAot QWxsb3dzIHlvdSB0byBlZGl0IGEgTGlzcCBzeW1ib2wgaW4gYW4gZWRpdGFibGUgZmllbGQu CitBIHdpZGdldCBmb3IgZWRpdGluZyBhIExpc3Agc3ltYm9sLgorCitJdHMgdmFsdWUgYnkg ZGVmYXVsdCBpcyBAY29kZXtuaWx9LgogQGVuZCBkZWZmbgogCiBAZGVmZm4gV2lkZ2V0IGZ1 bmN0aW9uCi1BbGxvd3MgeW91IHRvIGVkaXQgYSBsYW1iZGEgZXhwcmVzc2lvbiwgb3IgYSBm dW5jdGlvbiBuYW1lIHdpdGggY29tcGxldGlvbi4KK0Egd2lkZ2V0IGZvciBlZGl0aW5nIGEg bGFtYmRhIGV4cHJlc3Npb24sIG9yIGEgZnVuY3Rpb24gbmFtZSwgb2ZmZXJpbmcKK2NvbXBs ZXRpb24uICBJdHMgc3VwZXIgaXMgdGhlIEBjb2Rle3Jlc3RyaWN0ZWQtc2V4cH0gd2lkZ2V0 LgogQGVuZCBkZWZmbgogCiBAZGVmZm4gV2lkZ2V0IHZhcmlhYmxlCi1BbGxvd3MgeW91IHRv IGVkaXQgYSB2YXJpYWJsZSBuYW1lLCB3aXRoIGNvbXBsZXRpb24uCitBIHdpZGdldCBmb3Ig ZWRpdGluZyB2YXJpYWJsZSBuYW1lcywgb2ZmZXJpbmcgY29tcGxldGlvbi4gIEl0cyBzdXBl cgoraXMgdGhlIEBjb2Rle3N5bWJvbH0gd2lkZ2V0LgogQGVuZCBkZWZmbgogCiBAZGVmZm4g V2lkZ2V0IGludGVnZXIKLUFsbG93cyB5b3UgdG8gZWRpdCBhbiBpbnRlZ2VyIGluIGFuIGVk aXRhYmxlIGZpZWxkLgorQSB3aWRnZXQgZm9yIGVkaXRpbmcgaW50ZWdlcnMgaW4gYW4gZWRp dGFibGUgZmllbGQuICBJdHMgc3VwZXIgaXMgdGhlCitAY29kZXtyZXN0cmljdGVkLXNleHB9 IHdpZGdldC4KKworSXQgaGFzIGEgZGVmYXVsdCBAY29kZXs6dmFsdWV9IG9mIDAuCitAZW5k IGRlZmZuCisKK0BkZWZmbiBXaWRnZXQgbmF0bnVtCitBIHdpZGdldCBmb3IgZWRpdGluZyBu b24tbmVnYXRpdmUgaW50ZWdlcnMuICBJdHMgc3VwZXIgaXMgdGhlCitAY29kZXtyZXN0cmlj dGVkLXNleHB9IHdpZGdldC4KKworSXQgaGFzIGEgZGVmYXVsdCBAY29kZXs6dmFsdWV9IG9m IDAuCitAZW5kIGRlZmZuCisKK0BkZWZmbiBXaWRnZXQgZmxvYXQKK0Egd2lkZ2V0IGZvciBl ZGl0aW5nIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLiAgSXRzIHN1cGVyIGlzIHRoZQorQGNv ZGV7cmVzdHJpY3RlZC1zZXhwfSB3aWRnZXQuCisKK0l0IGhhcyBhIGRlZmF1bHQgQGNvZGV7 OnZhbHVlfSBvZiAwLjAuCiBAZW5kIGRlZmZuCiAKIEBkZWZmbiBXaWRnZXQgbnVtYmVyCi1B bGxvd3MgeW91IHRvIGVkaXQgYSBudW1iZXIgaW4gYW4gZWRpdGFibGUgZmllbGQuCitBIHdp ZGdldCBmb3IgZWRpdGluZyBhIG51bWJlciwgZWl0aGVyIGZsb2F0aW5nIHBvaW50IG9yIGlu dGVnZXIuICBJdHMKK3N1cGVyIGlzIHRoZSBAY29kZXtyZXN0cmljdGVkLXNleHB9IHdpZGdl dC4KKworSXQgaGFzIGEgZGVmYXVsdCBAY29kZXs6dmFsdWV9IG9mIDAuMC4KIEBlbmQgZGVm Zm4KIAogQGRlZmZuIFdpZGdldCBib29sZWFuCi1BbGxvd3MgeW91IHRvIGVkaXQgYSBib29s ZWFuLiAgSW4gTGlzcCB0aGlzIG1lYW5zIGEgdmFyaWFibGUgd2hpY2ggaXMKLWVpdGhlciBA Y29kZXtuaWx9IG1lYW5pbmcgZmFsc2UsIG9yIG5vbi1AY29kZXtuaWx9IG1lYW5pbmcgdHJ1 ZS4KK0Egd2lkZ2V0IGZvciBlZGl0aW5nIGEgYm9vbGVhbiB2YWx1ZS4gIEl0cyBzdXBlciBp cyB0aGUgQGNvZGV7dG9nZ2xlfQord2lkZ2V0LgorCitJdHMgdmFsdWUgbWF5IGJlIEBjb2Rl e25pbH0sIG1lYW5pbmcgZmFsc2UsIG9yIG5vbi1AY29kZXtuaWx9LCBtZWFuaW5nCit0cnVl LgorQGVuZCBkZWZmbgorCitAZGVmZm4gV2lkZ2V0IGNvbG9yCitBIHdpZGdldCB0byBlZGl0 IGEgY29sb3IgbmFtZS4KKworSW4gYWRkaXRpb24sIHNob3dzIGEgc2FtcGxlIHRoYXQgc2hv d3MgdGhlIHNlbGVjdGVkIGNvbG9yLCBpZiBhbnkuCiBAZW5kIGRlZmZuCiAKK0BkZWZmbiBX aWRnZXQgb3RoZXIKK0Egd2lkZ2V0IHVzZWZ1bCBhcyB0aGUgbGFzdCBpdGVtIGluIGEgQGNv ZGV7Y2hvaWNlfSB3aWRnZXQsIHNpbmNlIGl0CittYXRjaGVzIGFueSB2YWx1ZS4KKworSXRz IHN1cGVyIGlzIHRoZSBAY29kZXtzZXhwfSB3aWRnZXQsIGFuZCBpdHMgQGNvZGV7OnZhbHVl fSBpcworQGNvZGV7b3RoZXJ9LCBieSBkZWZhdWx0LgorQGVuZCBkZWZmbgorCitAZGVmZm4g V2lkZ2V0IGNvZGluZy1zeXN0ZW0KK0Egd2lkZ2V0IHRoYXQgY2FuIHJlcHJlc2VudCBhIGNv ZGluZyBzeXN0ZW0gbmFtZSwgb2ZmZXJpbmcKK2NvbXBsZXRpb25zLiAgQHhyZWZ7Q29kaW5n IFN5c3RlbXMsLCxlbGlzcCwgdGhlIEVtYWNzIExpc3AgUmVmZXJlbmNlCitNYW51YWx9LiAg SXRzIHN1cGVyIGlzIHRoZSBAY29kZXtzeW1ib2x9IHdpZGdldC4KKworSXQgaGFzIGEgZGVm YXVsdCB2YWx1ZSBvZiBAY29kZXt1bmRlY2lkZWR9LgorQGVuZCBkZWZmbgorCitAZGVmZm4g V2lkZ2V0IGtleQorQSB3aWRnZXQgdG8gcmVwcmVzZW50IGEga2V5IHNlcXVlbmNlLgorCitJ dCB1c2VzIGEgc3BlY2lhbCBrZXltYXAgYXMgdGhlIEBjb2RlezprZXltYXB9LgorQGVuZCBk ZWZmbgogCiBAbm9kZSBjb21wb3NpdGUKLUBzZWN0aW9uIENvbXBvc2l0ZSBTZXhwIFdpZGdl dHMKK0BzdWJzZWN0aW9uIENvbXBvc2l0ZSBTZXhwIFdpZGdldHMKIEBjaW5kZXggY29tcG9z aXRlIHNleHAgd2lkZ2V0cwogCiBUaGUgc3ludGF4IGZvciB0aGUgY29tcG9zaXRlIHdpZGdl dCBjb25zdHJ1Y3QgaXM6CkBAIC0xMzI3LDYgKzI2ODAsOSBAQCBjb21wb3NpdGUKIHdpbGwg YmUgZGlzcGxheWVkIGluIHRoZSBidWZmZXIsIGFuZCB3aWxsIGJlIGVkaXRhYmxlIGJ5IHRo ZSB1c2VyLgogCiBAZGVmZm4gV2lkZ2V0IGNvbnMKK0Egd2lkZ2V0IHRvIGVkaXQgY29ucy1j ZWxsIHZhbHVlcy4gIEl0cyBzdXBlciBpcyB0aGUgQGNvZGV7Z3JvdXB9Cit3aWRnZXQuCisK IFRoZSB2YWx1ZSBvZiBhIEBjb2Rle2NvbnN9IHdpZGdldCBtdXN0IGJlIGEgY29ucy1jZWxs IHdob3NlIEBzY3tjYXJ9CiBhbmQgQHNje2Nkcn0gaGF2ZSB0d28gc3BlY2lmaWVkIHR5cGVz LiAgSXQgdXNlcyB0aGlzIHN5bnRheDoKIApAQCAtMTMzNiw4ICsyNjkyLDEwIEBAIGNvbXBv c2l0ZQogQGVuZCBkZWZmbgogCiBAZGVmZm4gV2lkZ2V0IGNob2ljZQotVGhlIHZhbHVlIG1h dGNoZWQgYnkgYSBAY29kZXtjaG9pY2V9IHdpZGdldCBtdXN0IGhhdmUgb25lIG9mIGEgZml4 ZWQKLXNldCBvZiB0eXBlcy4gIFRoZSB3aWRnZXQncyBzeW50YXggaXMgYXMgZm9sbG93czoK K0Egd2lkZ2V0IHRvIGhvbGQgYSB2YWx1ZSBvZiBvbmUgb2YgYSBmaXhlZCBzZXQgb2YgdHlw ZXMuICBJdHMgc3VwZXIgaXMKK3RoZSBAY29kZXttZW51LWNob2ljZX0gd2lkZ2V0LgorCitU aGUgd2lkZ2V0J3Mgc3ludGF4IGlzIGFzIGZvbGxvd3M6CiAKIEBleGFtcGxlCiBAdmFye3R5 cGV9IDo6PSAoY2hvaWNlIFtAdmFye2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiAgQHZh cnt0eXBlfSAuLi4gKQpAQCAtMTM0NSw5ICsyNzAzLDE5IEBAIGNvbXBvc2l0ZQogCiBUaGUg dmFsdWUgb2YgYSBAY29kZXtjaG9pY2V9IHdpZGdldCBjYW4gYmUgYW55dGhpbmcgdGhhdCBt YXRjaGVzIGFueSBvZiB0aGUKIEB2YXJ7dHlwZXN9LgorCitUaGlzIHdpZGdldCBvbmx5IGRp c3BsYXlzIHRoZSB3aWRnZXQgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgY3VycmVudAorY2hv aWNlLgorQGVuZCBkZWZmbgorCitAZGVmZm4gV2lkZ2V0IHJhZGlvCitBIHdpZGdldCB0byBo b2xkIGEgdmFsdWUgb2Ygb25lIG9mIGEgZml4ZWQgc2V0IG9mIG9wdGlvbnMuICBJdHMgc3Vw ZXIgaXMKK3RoZSBAY29kZXtyYWRpby1idXR0b24tY2hvaWNlfSB3aWRnZXQuCiBAZW5kIGRl ZmZuCiAKIEBkZWZmbiBXaWRnZXQgbGlzdAorQSB3aWRnZXQgdG8gZWRpdCBhIGxpc3QgdmFs dWUuICBJdHMgc3VwZXIgaXMgdGhlIEBjb2Rle2dyb3VwfSB3aWRnZXQuCisKIFRoZSB2YWx1 ZSBvZiBhIEBjb2Rle2xpc3R9IHdpZGdldCBtdXN0IGJlIGEgbGlzdCB3aG9zZSBlbGVtZW50 IHR5cGVzCiBtYXRjaCB0aGUgc3BlY2lmaWVkIGNvbXBvbmVudCB0eXBlczoKIApAQCAtMTM1 NSwxNSArMjcyMywxOCBAQCBjb21wb3NpdGUKIEB2YXJ7dHlwZX0gOjo9IChsaXN0IFtAdmFy e2tleXdvcmR9IEB2YXJ7YXJndW1lbnR9XS4uLiAgQHZhcntjb21wb25lbnQtdHlwZX0uLi4p CiBAZW5kIGV4YW1wbGUKIAotVGh1cywgQGNvZGV7KGxpc3Qgc3RyaW5nIG51bWJlcil9IG1h dGNoZXMgbGlzdHMgb2YgdHdvIGVsZW1lbnRzLAotdGhlIGZpcnN0IGJlaW5nIGEgc3RyaW5n IGFuZCB0aGUgc2Vjb25kIGJlaW5nIGEgbnVtYmVyLgorVGh1cywgZm9yIGV4YW1wbGUsIEBj b2RleyhsaXN0IHN0cmluZyBudW1iZXIpfSBtYXRjaGVzIGxpc3RzIG9mIHR3bworZWxlbWVu dHMsIHRoZSBmaXJzdCBiZWluZyBhIHN0cmluZyBhbmQgdGhlIHNlY29uZCBiZWluZyBhIG51 bWJlci4KIEBlbmQgZGVmZm4KIAogQGRlZmZuIFdpZGdldCB2ZWN0b3IKK0Egd2lkZ2V0IHRv IGVkaXQgYSB2ZWN0b3IgdmFsdWUuICBJdHMgc3VwZXIgaXMgdGhlIEBjb2Rle2dyb3VwfQor d2lkZ2V0LgorCiBUaGUgQGNvZGV7dmVjdG9yfSB3aWRnZXQgaXMgbGlrZSB0aGUgQGNvZGV7 bGlzdH0gd2lkZ2V0IGJ1dCBtYXRjaGVzCi12ZWN0b3JzIGluc3RlYWQgb2YgbGlzdHMuICBU aHVzLCBAY29kZXsodmVjdG9yIHN0cmluZyBudW1iZXIpfSBtYXRjaGVzCi12ZWN0b3JzIG9m IHR3byBlbGVtZW50cywgdGhlIGZpcnN0IGJlaW5nIGEgc3RyaW5nIGFuZCB0aGUgc2Vjb25k IGJlaW5nCi1hIG51bWJlci4KK3ZlY3RvcnMgaW5zdGVhZCBvZiBsaXN0cy4gIFRodXMsIGZv ciBleGFtcGxlLCBAY29kZXsodmVjdG9yIHN0cmluZworbnVtYmVyKX0gbWF0Y2hlcyB2ZWN0 b3JzIG9mIHR3byBlbGVtZW50cywgdGhlIGZpcnN0IGJlaW5nIGEgc3RyaW5nIGFuZAordGhl IHNlY29uZCBiZWluZyBhIG51bWJlci4KIEBlbmQgZGVmZm4KIAogVGhlIGFib3ZlIHN1ZmZp Y2UgZm9yIHNwZWNpZnlpbmcgZml4ZWQgc2l6ZSBsaXN0cyBhbmQgdmVjdG9ycy4gIFRvIGdl dApAQCAtMTM5MiwxMjYgKzI3NjMsNzQgQEAgY29tcG9zaXRlCiB0cnlpbmcgdG8gZXhwbGFp biBpdCBoZXJlLCBJJ2xsIGp1c3Qgc3VnZ2VzdCB5b3UgbWVkaXRhdGUgb3ZlciBpdCBmb3IK IGEgd2hpbGUuCiAKLUBkZWZmbiBXaWRnZXQgc2V0Ci1TcGVjaWZpZXMgYSB0eXBlIHdob3Nl IHZhbHVlcyBhcmUgdGhlIGxpc3RzIHdob3NlIGVsZW1lbnRzIGFsbCBiZWxvbmcKLXRvIGEg Z2l2ZW4gc2V0LiAgVGhlIG9yZGVyIG9mIGVsZW1lbnRzIG9mIHRoZSBsaXN0IGlzIG5vdCBz aWduaWZpY2FudC4KLUhlcmUncyB0aGUgc3ludGF4OgotCi1AZXhhbXBsZQotQHZhcnt0eXBl fSA6Oj0gKHNldCBbQHZhcntrZXl3b3JkfSBAdmFye2FyZ3VtZW50fV0uLi4gIEB2YXJ7cGVy bWl0dGVkLWVsZW1lbnR9IC4uLiApCi1AZW5kIGV4YW1wbGUKLQotVXNlIEBjb2Rle2NvbnN0 fSB0byBzcGVjaWZ5IGVhY2ggcGVybWl0dGVkIGVsZW1lbnQsIGxpa2UgdGhpczoKLUBjb2Rl eyhzZXQgKGNvbnN0IGEpIChjb25zdCBiKSl9LgotQGVuZCBkZWZmbgotCi1AZGVmZm4gV2lk Z2V0IHJlcGVhdAotU3BlY2lmaWVzIGEgbGlzdCBvZiBhbnkgbnVtYmVyIG9mIGVsZW1lbnRz IHRoYXQgZml0IGEgY2VydGFpbiB0eXBlLgotCi1AZXhhbXBsZQotQHZhcnt0eXBlfSA6Oj0g KHJlcGVhdCBbQHZhcntrZXl3b3JkfSBAdmFye2FyZ3VtZW50fV0uLi4gIEB2YXJ7dHlwZX0p Ci1AZW5kIGV4YW1wbGUKLUBlbmQgZGVmZm4KLQotQG5vZGUgV2lkZ2V0IFByb3BlcnRpZXMK LUBjaGFwdGVyIFByb3BlcnRpZXMKLUBjaW5kZXggcHJvcGVydGllcyBvZiB3aWRnZXRzCi1A Y2luZGV4IHdpZGdldCBwcm9wZXJ0aWVzCi0KLVlvdSBjYW4gZXhhbWluZSBvciBzZXQgdGhl IHZhbHVlIG9mIGEgd2lkZ2V0IGJ5IHVzaW5nIHRoZSB3aWRnZXQgb2JqZWN0Ci10aGF0IHdh cyByZXR1cm5lZCBieSBAY29kZXt3aWRnZXQtY3JlYXRlfS4KLQotQGRlZnVuIHdpZGdldC12 YWx1ZSB3aWRnZXQKLVJldHVybiB0aGUgY3VycmVudCB2YWx1ZSBjb250YWluZWQgaW4gQHZh cnt3aWRnZXR9LgotSXQgaXMgYW4gZXJyb3IgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIG9uIGFu IHVuaW5pdGlhbGl6ZWQgd2lkZ2V0LgotQGVuZCBkZWZ1bgotCi1AZGVmdW4gd2lkZ2V0LXZh bHVlLXNldCB3aWRnZXQgdmFsdWUKLVNldCB0aGUgdmFsdWUgY29udGFpbmVkIGluIEB2YXJ7 d2lkZ2V0fSB0byBAdmFye3ZhbHVlfS4KLUl0IGlzIGFuIGVycm9yIHRvIGNhbGwgdGhpcyBm dW5jdGlvbiB3aXRoIGFuIGludmFsaWQgQHZhcnt2YWx1ZX0uCi1AZW5kIGRlZnVuCi0KLUBz dHJvbmd7SW1wb3J0YW50On0gWW91IEBlbXBoe211c3R9IGNhbGwgQGNvZGV7d2lkZ2V0LXNl dHVwfSBhZnRlcgotbW9kaWZ5aW5nIHRoZSB2YWx1ZSBvZiBhIHdpZGdldCBiZWZvcmUgdGhl IHVzZXIgaXMgYWxsb3dlZCB0byBlZGl0IHRoZQotd2lkZ2V0IGFnYWluLiAgSXQgaXMgZW5v dWdoIHRvIGNhbGwgQGNvZGV7d2lkZ2V0LXNldHVwfSBvbmNlIGlmIHlvdQotbW9kaWZ5IG11 bHRpcGxlIHdpZGdldHMuICBUaGlzIGlzIGN1cnJlbnRseSBvbmx5IG5lY2Vzc2FyeSBpZiB0 aGUgd2lkZ2V0Ci1jb250YWlucyBhbiBlZGl0aW5nIGZpZWxkLCBidXQgbWF5IGJlIG5lY2Vz c2FyeSBmb3Igb3RoZXIgd2lkZ2V0cyBpbiB0aGUKLWZ1dHVyZS4KK0BkZWZmbiBXaWRnZXQg c2V0CitBIHdpZGdldCB0byBob2xkIGEgbGlzdCBvZiBtZW1iZXJzIGZyb20gYSBmaXhlZCBz ZXQuICBJdHMgc3VwZXIgaXMgdGhlCitAY29kZXtjaGVja2xpc3R9IHdpZGdldC4KIAotSWYg eW91ciBhcHBsaWNhdGlvbiBuZWVkcyB0byBhc3NvY2lhdGUgc29tZSBpbmZvcm1hdGlvbiB3 aXRoIHRoZSB3aWRnZXQKLW9iamVjdHMsIGZvciBleGFtcGxlIGEgcmVmZXJlbmNlIHRvIHRo ZSBpdGVtIGJlaW5nIGVkaXRlZCwgaXQgY2FuIGJlCi1kb25lIHdpdGggQGNvZGV7d2lkZ2V0 LXB1dH0gYW5kIEBjb2Rle3dpZGdldC1nZXR9LiAgVGhlIHByb3BlcnR5IG5hbWVzCi1tdXN0 IGJlZ2luIHdpdGggYSBAc2FtcHs6fS4KK0l0cyB2YWx1ZSBpcyBhIGxpc3Qgd2hlcmUgdGhl IGVsZW1lbnRzIGFsbCBiZWxvbmcgdG8gYSBnaXZlbiBzZXQuICBUaGUKK29yZGVyIG9mIGVs ZW1lbnRzIG9mIHRoZSBsaXN0IGlzIG5vdCBzaWduaWZpY2FudC4KIAotQGRlZnVuIHdpZGdl dC1wdXQgd2lkZ2V0IHByb3BlcnR5IHZhbHVlCi1JbiBAdmFye3dpZGdldH0gc2V0IEB2YXJ7 cHJvcGVydHl9IHRvIEB2YXJ7dmFsdWV9LgotQHZhcntwcm9wZXJ0eX0gc2hvdWxkIGJlIGEg c3ltYm9sLCB3aGlsZSBAdmFye3ZhbHVlfSBjYW4gYmUgYW55dGhpbmcuCi1AZW5kIGRlZnVu CitIZXJlJ3MgdGhlIHN5bnRheDoKIAotQGRlZnVuIHdpZGdldC1nZXQgd2lkZ2V0IHByb3Bl cnR5Ci1JbiBAdmFye3dpZGdldH0gcmV0dXJuIHRoZSB2YWx1ZSBmb3IgQHZhcntwcm9wZXJ0 eX0uCi1AdmFye3Byb3BlcnR5fSBzaG91bGQgYmUgYSBzeW1ib2wsIHRoZSB2YWx1ZSBpcyB3 aGF0IHdhcyBsYXN0IHNldCBieQotQGNvZGV7d2lkZ2V0LXB1dH0gZm9yIEB2YXJ7cHJvcGVy dHl9LgotQGVuZCBkZWZ1bgorQGV4YW1wbGUKK0B2YXJ7dHlwZX0gOjo9IChzZXQgW0B2YXJ7 a2V5d29yZH0gQHZhcnthcmd1bWVudH1dLi4uICBAdmFye3Blcm1pdHRlZC1lbGVtZW50fSAu Li4gKQorQGVuZCBleGFtcGxlCiAKLUBkZWZ1biB3aWRnZXQtbWVtYmVyIHdpZGdldCBwcm9w ZXJ0eQotTm9uLUBjb2Rle25pbH0gaWYgQHZhcnt3aWRnZXR9IGhhcyBhIHZhbHVlIChldmVu IEBjb2Rle25pbH0pIGZvcgotcHJvcGVydHkgQHZhcntwcm9wZXJ0eX0uCi1AZW5kIGRlZnVu CitVc2UgQGNvZGV7Y29uc3R9IHRvIHNwZWNpZnkgZWFjaCBwZXJtaXR0ZWQgZWxlbWVudCwg bGlrZSB0aGlzOgorQGNvZGV7KHNldCAoY29uc3QgYSkgKGNvbnN0IGIpKX0uCitAZW5kIGRl ZmZuCiAKLUBkZWZ1biB3aWRnZXQtYXBwbHkgd2lkZ2V0IHByb3BlcnR5ICZyZXN0IGFyZ3MK LUFwcGx5IHRoZSB2YWx1ZSBvZiBAdmFye3Byb3BlcnR5fSB0byBAdmFye3dpZGdldH0sIHBh c3NpbmcgQHZhcnthcmdzfQotYXMgYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gdGhlIGZ1bmN0 aW9uLiAgUmV0dXJuIHRoZSByZXN1bHQgb2YgdGhhdAotZnVuY3Rpb24gY2FsbC4KLUBlbmQg ZGVmdW4KK0BkZWZmbiBXaWRnZXQgcmVwZWF0CitTcGVjaWZpZXMgYSBsaXN0IG9mIGFueSBu dW1iZXIgb2YgZWxlbWVudHMgdGhhdCBmaXQgYSBjZXJ0YWluIHR5cGUuCitJdHMgc3VwZXIg aXMgdGhlIEBjb2Rle2VkaXRhYmxlLWxpc3R9IHdpZGdldC4KIAotT2NjYXNpb25hbGx5IGl0 IGNhbiBiZSB1c2VmdWwgdG8ga25vdyB3aGljaCBraW5kIG9mIHdpZGdldCB5b3UgaGF2ZSwK LWkuZS4sIHRoZSBuYW1lIG9mIHRoZSB3aWRnZXQgdHlwZSB5b3UgZ2F2ZSB3aGVuIHRoZSB3 aWRnZXQgd2FzIGNyZWF0ZWQuCitAZXhhbXBsZQorQHZhcnt0eXBlfSA6Oj0gKHJlcGVhdCBb QHZhcntrZXl3b3JkfSBAdmFye2FyZ3VtZW50fV0uLi4gIEB2YXJ7dHlwZX0pCitAZW5kIGV4 YW1wbGUKK0BlbmQgZGVmZm4KIAotQGRlZnVuIHdpZGdldC10eXBlIHdpZGdldAotUmV0dXJu IHRoZSBuYW1lIG9mIEB2YXJ7d2lkZ2V0fSwgYSBzeW1ib2wuCi1AZW5kIGRlZnVuCitAZGVm Zm4gV2lkZ2V0IHBsaXN0CitBIHdpZGdldCB0byBlZGl0IHByb3BlcnR5IGxpc3RzLiAgSXRz IHN1cGVyIGlzIHRoZSBAY29kZXtsaXN0fSB3aWRnZXQuCiAKLUBjaW5kZXggYWN0aXZlIHdp ZGdldAotQGNpbmRleCBpbmFjdGl2ZSB3aWRnZXQKLUBjaW5kZXggYWN0aXZhdGUgYSB3aWRn ZXQKLUBjaW5kZXggZGVhY3RpdmF0ZSBhIHdpZGdldAotV2lkZ2V0cyBjYW4gYmUgaW4gdHdv IHN0YXRlczogYWN0aXZlLCB3aGljaCBtZWFucyB0aGV5IGFyZSBtb2RpZmlhYmxlIGJ5Ci10 aGUgdXNlciwgb3IgaW5hY3RpdmUsIHdoaWNoIG1lYW5zIHRoZXkgY2Fubm90IGJlIG1vZGlm aWVkIGJ5IHRoZSB1c2VyLgotWW91IGNhbiBxdWVyeSBvciBzZXQgdGhlIHN0YXRlIHdpdGgg dGhlIGZvbGxvd2luZyBjb2RlOgorSXQgcmVjb2duaXplcyB0aGUgZm9sbG93aW5nIHByb3Bl cnRpZXM6CiAKLUBsaXNwCi07OyBFeGFtaW5lIGlmIEB2YXJ7d2lkZ2V0fSBpcyBhY3RpdmUg b3Igbm90LgotKGlmICh3aWRnZXQtYXBwbHkgQHZhcnt3aWRnZXR9IDphY3RpdmUpCi0gICAg KG1lc3NhZ2UgIldpZGdldCBpcyBhY3RpdmUuIikKLSAgKG1lc3NhZ2UgIldpZGdldCBpcyBp bmFjdGl2ZS4iKQorQHRhYmxlIEBjb2RlCitAaXRlbSA6b3B0aW9ucworQSBnaXZlbiBzZXQg b2YgcmVjb21tZW5kZWQga2V5LXZhbHVlIHZhbHVlcyBmb3IgdGhlIEBjb2Rle3BsaXN0fQor d2lkZ2V0LiAgRWFjaCBvcHRpb24gc2hvd3MgdXAgYXMgYSBjaGVja2xpc3QgaXRlbS4KIAot OzsgTWFrZSBAdmFye3dpZGdldH0gaW5hY3RpdmUuCi0od2lkZ2V0LWFwcGx5IEB2YXJ7d2lk Z2V0fSA6ZGVhY3RpdmF0ZSkKK0BpdGVtIDprZXktdHlwZQorVGhlIHdpZGdldCB0eXBlIHRv IHVzZSBmb3IgdGhlIHBsaXN0IGtleXMuICBCeSBkZWZhdWx0LCBpdCB1c2VzIHRoZQorQGNv ZGV7c3ltYm9sfSB3aWRnZXQuCiAKLTs7IE1ha2UgQHZhcnt3aWRnZXR9IGFjdGl2ZS4KLSh3 aWRnZXQtYXBwbHkgQHZhcnt3aWRnZXR9IDphY3RpdmF0ZSkKLUBlbmQgbGlzcAorQGl0ZW0g OnZhbHVlLXR5cGUKK1RoZSB3aWRnZXQgdHlwZSB0byB1c2UgZm9yIHRoZSBwbGlzdCB2YWx1 ZXMuICBCeSBkZWZhdWx0LCBpdCB1c2VzIHRoZQorQGNvZGV7c2V4cH0gd2lkZ2V0LgorQGVu ZCB0YWJsZQorQGVuZCBkZWZmbgogCi1BIHdpZGdldCBpcyBpbmFjdGl2ZSBpZiBpdCwgb3Ig YW55IG9mIGl0cyBhbmNlc3RvcnMgKGZvdW5kIGJ5Ci1mb2xsb3dpbmcgdGhlIEBjb2Rlezpw YXJlbnR9IGxpbmspLCBoYXZlIGJlZW4gZGVhY3RpdmF0ZWQuICBUbyBtYWtlIHN1cmUKLWEg d2lkZ2V0IGlzIHJlYWxseSBhY3RpdmUsIHlvdSBtdXN0IHRoZXJlZm9yZSBhY3RpdmF0ZSBi b3RoIGl0IGFuZAotYWxsIGl0cyBhbmNlc3RvcnMuCitAZGVmZm4gV2lkZ2V0IGFsaXN0CitB IHdpZGdldCB0byBlZGl0IGFzc29jaWF0aW9uIGxpc3RzLiAgSXRzIHN1cGVyIGlzIHRoZSBA Y29kZXtsaXN0fQord2lkZ2V0LgogCi1AbGlzcAotKHdoaWxlIHdpZGdldAotICAod2lkZ2V0 LWFwcGx5IHdpZGdldCA6YWN0aXZhdGUpCi0gIChzZXRxIHdpZGdldCAod2lkZ2V0LWdldCB3 aWRnZXQgOnBhcmVudCkpKQotQGVuZCBsaXNwCitJdCByZWNvZ25pemVzIHRoZSBzYW1lIHBy b3BlcnRpZXMgdGhhdCB0aGUgQGNvZGV7cGxpc3R9IHdpZGdldCwgd2l0aAordGhlIGRpZmZl cmVuY2UgdGhhdCB0aGUgQGNvZGV7OmtleS10eXBlfSB1c2VzIGJ5IGRlZmF1bHQgYSBAY29k ZXtzZXhwfQord2lkZ2V0LgorQGVuZCBkZWZmbgogCi1Zb3UgY2FuIGNoZWNrIGlmIGEgd2lk Z2V0IGhhcyBiZWVuIG1hZGUgaW5hY3RpdmUgYnkgZXhhbWluaW5nIHRoZSB2YWx1ZQotb2Yg dGhlIEBjb2RlezppbmFjdGl2ZX0ga2V5d29yZC4gIElmIHRoaXMgaXMgbm9uLUBjb2Rle25p bH0sIHRoZSB3aWRnZXQgaXRzZWxmCi1oYXMgYmVlbiBkZWFjdGl2YXRlZC4gIFRoaXMgaXMg ZGlmZmVyZW50IGZyb20gdXNpbmcgdGhlIEBjb2RlezphY3RpdmV9Ci1rZXl3b3JkLCBpbiB0 aGF0IHRoZSBsYXR0ZXIgdGVsbHMgeW91IGlmIHRoZSB3aWRnZXQgQHN0cm9uZ3tvcn0gYW55 IG9mCi1pdHMgYW5jZXN0b3JzIGhhdmUgYmVlbiBkZWFjdGl2YXRlZC4gIERvIG5vdCBhdHRl bXB0IHRvIHNldCB0aGUKLUBjb2RlezppbmFjdGl2ZX0ga2V5d29yZCBkaXJlY3RseS4gIFVz ZSB0aGUgQGNvZGV7OmFjdGl2YXRlfQotQGNvZGV7OmRlYWN0aXZhdGV9IGtleXdvcmRzIGlu c3RlYWQuCitNb3N0IGNvbXBvc2l0ZSB3aWRnZXRzIGRvIG5vdCBhbGxvdyBmb3IgcmVjdXJz aW9uLiAgVGhhdCBpcywgbm9uZSBvZgordGhlIGNvbnRhaW5lZCB3aWRnZXRzIG1heSBiZSBv ZiB0aGUgc2FtZSB0eXBlIHRoYXQgaXMgY3VycmVudGx5IGJlaW5nCitkZWZpbmVkLiAgVG8g YWxsb3cgZm9yIHRoaXMga2luZCBvZiB3aWRnZXRzLCB0aGVyZSdzIHRoZSBAY29kZXtsYXp5 fQord2lkZ2V0LgorCitAZGVmZm4gV2lkZ2V0IGxhenkKK0EgYmFzZSB3aWRnZXQgZm9yIHJl Y3Vyc2l2ZSBkYXRhIHN0cnVjdHVyZXMuICBJdHMgc3VwZXIgaXMgdGhlCitAY29kZXtkZWZh dWx0fSB3aWRnZXQuCiAKK1doZW4gaW5zdGFudGlhdGVkLCBpdCBjb250YWlucyBhIHNpbmds ZSBpbmZlcmlvciB3aWRnZXQgb2YgdGhlIHdpZGdldAordHlwZSBzcGVjaWZpZWQgaW4gdGhl IEBjb2Rlezp0eXBlfSBwcm9wZXJ0eS4gIEl0cyB2YWx1ZSBpcyB0aGUgc2FtZSBhcwordGhl IHZhbHVlIG9mIHRoaXMgaW5mZXJpb3Igd2lkZ2V0LgorQGVuZCBkZWZmbgogCiBAbm9kZSBE ZWZpbmluZyBOZXcgV2lkZ2V0cwogQGNoYXB0ZXIgRGVmaW5pbmcgTmV3IFdpZGdldHMKQEAg LTE1MjAsMTkgKzI4MzksMjcgQEAgRGVmaW5pbmcgTmV3IFdpZGdldHMKIAogWW91IGNhbiBk ZWZpbmUgc3BlY2lhbGl6ZWQgd2lkZ2V0cyB3aXRoIEBjb2Rle2RlZmluZS13aWRnZXR9LiAg SXQgYWxsb3dzCiB5b3UgdG8gY3JlYXRlIGEgc2hvcnRoYW5kIGZvciBtb3JlIGNvbXBsZXgg d2lkZ2V0cywgaW5jbHVkaW5nIHNwZWNpZnlpbmcKLWNvbXBvbmVudCB3aWRnZXRzIGFuZCBu ZXcgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSBrZXl3b3JkCi1hcmd1bWVudHMuCitjb21wb25l bnQgd2lkZ2V0cyBhbmQgbmV3IGRlZmF1bHQgdmFsdWVzIGZvciB0aGUga2V5d29yZCBhcmd1 bWVudHMuCiAKIEBkZWZ1biBkZWZpbmUtd2lkZ2V0IG5hbWUgY2xhc3MgZG9jICZyZXN0IGFy Z3MKLURlZmluZSBhIG5ldyB3aWRnZXQgdHlwZSBuYW1lZCBAdmFye25hbWV9IGZyb20gQGNv ZGV7Y2xhc3N9LgorRGVmaW5lIGEgbmV3IHdpZGdldCB0eXBlIG5hbWVkIEB2YXJ7bmFtZX0g dGhhdCBkZXJpdmVzIGZyb20gQHZhcntjbGFzc30uCiAKLUB2YXJ7bmFtZX0gYW5kIGNsYXNz IHNob3VsZCBib3RoIGJlIHN5bWJvbHMsIEBjb2Rle2NsYXNzfSBzaG91bGQgYmUgb25lCi1v ZiB0aGUgZXhpc3Rpbmcgd2lkZ2V0IHR5cGVzLgorQHZhcntuYW1lfSBhbmQgQHZhcntjbGFz c30gc2hvdWxkIGJvdGggYmUgc3ltYm9scywgYW5kIEB2YXJ7Y2xhc3N9CitzaG91bGQgYmUg b25lIG9mIHRoZSBleGlzdGluZyB3aWRnZXQgdHlwZXMuCiAKIFRoZSB0aGlyZCBhcmd1bWVu dCBAdmFye2RvY30gaXMgYSBkb2N1bWVudGF0aW9uIHN0cmluZyBmb3IgdGhlIHdpZGdldC4K IAotQWZ0ZXIgdGhlIG5ldyB3aWRnZXQgaGFzIGJlZW4gZGVmaW5lZCwgdGhlIGZvbGxvd2lu ZyB0d28gY2FsbHMgd2lsbAotY3JlYXRlIGlkZW50aWNhbCB3aWRnZXRzOgorQHZhcnthcmdz fSBzaG91bGQgYmUga2V5LXZhbHVlIHBhaXJzLCBvdmVycmlkaW5nIGtleXdvcmQgdmFsdWVz IG9mCitAdmFye2NsYXNzfSwgb3IgYWRkaW5nIG5ldyByZWNvZ25pemVkIGtleXdvcmRzIGZv ciBAdmFye25hbWV9LgorCitVc3VhbGx5LCB5b3UnbGwgd2FudCB0byBkZXJpdmUgZnJvbSBh biBleGlzdGluZyB3aWRnZXQgdHlwZSwgbGlrZSB0aGUKK0Bjb2Rle2VkaXRhYmxlLWZpZWxk fSB3aWRnZXQsIG9yIHRoZSBAY29kZXtkZWZhdWx0fSB3aWRnZXQsIGJ1dCBpdCdzCithbHNv IHBvc3NpYmxlIHRvIGRlcml2ZSBmcm9tIG5vdGhpbmcsIGJ5IHBhc3NpbmcgYSB2YWx1ZSBv ZiBAY29kZXtuaWx9CithcyBAdmFye2NsYXNzfS4gIE5vdGUgdGhhdCBpZiB5b3UgZG8gdGhp cywgeW91J3JlIGVudGlyZWx5IHJlc3BvbnNpYmxlCitmb3IgZGVmaW5pbmcgYSB3aG9sZSBu ZXcgZGVmYXVsdCBiZWhhdmlvciBmb3IgeW91ciB3aWRnZXRzLgorCitBZnRlciB1c2luZyB0 aGlzIGZ1bmN0aW9uLCB0aGUgZm9sbG93aW5nIHR3byBjYWxscyB3aWxsIGNyZWF0ZQoraWRl bnRpY2FsIHdpZGdldHM6CiAKIEBpdGVtaXplIEBidWxsZXQKIEBpdGVtCkBAIC0xNTU1LDE3 MCArMjg4Miw2NyBAQCBEZWZpbmluZyBOZXcgV2lkZ2V0cwogSWYgeW91IG9ubHkgd2FudCB0 byBzcGVjaWZ5IGRlZmF1bHRzIGZvciBrZXl3b3JkcyB3aXRoIG5vIGNvbXBsZXgKIGNvbnZl cnNpb25zLCB5b3UgY2FuIHVzZSBAY29kZXtpZGVudGl0eX0gYXMgeW91ciBjb252ZXJzaW9u IGZ1bmN0aW9uLgogCi1UaGUgZm9sbG93aW5nIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVu dHMgYXJlIHVzZWZ1bCB3aGVuIGRlZmluaW5nIG5ldwotd2lkZ2V0czoKK1doZW4gZGVmaW5p bmcgbmV3IHdpZGdldHMsIHRoZSBAY29kZXs6Y29udmVydC13aWRnZXR9IHByb3BlcnR5IG1p Z2h0CitiZSB1c2VmdWw6CisKIEB0YWJsZSBAY29kZQogQHZpbmRleCBjb252ZXJ0LXdpZGdl dEByeyBrZXl3b3JkfQogQGl0ZW0gOmNvbnZlcnQtd2lkZ2V0CiBGdW5jdGlvbiB0byBjb252 ZXJ0IGEgd2lkZ2V0IHR5cGUgYmVmb3JlIGNyZWF0aW5nIGEgd2lkZ2V0IG9mIHRoYXQKLXR5 cGUuICBJdCB0YWtlcyBhIHdpZGdldCB0eXBlIGFzIGFuIGFyZ3VtZW50LCBhbmQgcmV0dXJu cyB0aGUgY29udmVydGVkCi13aWRnZXQgdHlwZS4gIFdoZW4gYSB3aWRnZXQgaXMgY3JlYXRl ZCwgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIHRoZQotd2lkZ2V0IHR5cGUgYW5kIGFs bCB0aGUgd2lkZ2V0J3MgcGFyZW50IHR5cGVzLCBtb3N0IGRlcml2ZWQgZmlyc3QuCi0KLVRo ZSBmb2xsb3dpbmcgcHJlZGVmaW5lZCBmdW5jdGlvbnMgY2FuIGJlIHVzZWQgaGVyZToKLQot QGRlZnVuIHdpZGdldC10eXBlcy1jb252ZXJ0LXdpZGdldCB3aWRnZXQKLUNvbnZlcnQgQGNv ZGV7OmFyZ3N9IGFzIHdpZGdldCB0eXBlcyBpbiBAdmFye3dpZGdldH0uCi1AZW5kIGRlZnVu Ci0KLUBkZWZ1biB3aWRnZXQtdmFsdWUtY29udmVydC13aWRnZXQgd2lkZ2V0Ci1Jbml0aWFs aXplIEBjb2Rlezp2YWx1ZX0gZnJvbSBAY29kZXs6YXJnc30gaW4gQHZhcnt3aWRnZXR9Lgot QGVuZCBkZWZ1bgotCi1AdmluZGV4IGNvcHlAcnsga2V5d29yZH0KLUBpdGVtIDpjb3B5Ci1G dW5jdGlvbiB0byBkZWVwIGNvcHkgYSB3aWRnZXQgdHlwZS4gIEl0IHRha2VzIGEgc2hhbGxv dyBjb3B5IG9mIHRoZQotd2lkZ2V0IHR5cGUgYXMgYW4gYXJndW1lbnQgKG1hZGUgYnkgQGNv ZGV7Y29weS1zZXF1ZW5jZX0pLCBhbmQgcmV0dXJucyBhCi1kZWVwIGNvcHkuICBUaGUgcHVy cG9zZSBvZiB0aGlzIGlzIHRvIGF2b2lkIGhhdmluZyBkaWZmZXJlbnQgaW5zdGFuY2VzCi1v ZiBjb21iaW5lZCB3aWRnZXRzIHNoYXJlIG5lc3RlZCBhdHRyaWJ1dGVzLgotCi1UaGUgZm9s bG93aW5nIHByZWRlZmluZWQgZnVuY3Rpb25zIGNhbiBiZSB1c2VkIGhlcmU6Ci0KLUBkZWZ1 biB3aWRnZXQtdHlwZXMtY29weSB3aWRnZXQKLUNvcHkgQGNvZGV7OmFyZ3N9IGFzIHdpZGdl dCB0eXBlcyBpbiBAdmFye3dpZGdldH0uCi1AZW5kIGRlZnVuCi0KLUB2aW5kZXggdmFsdWUt dG8taW50ZXJuYWxAcnsga2V5d29yZH0KLUBpdGVtIDp2YWx1ZS10by1pbnRlcm5hbAotRnVu Y3Rpb24gdG8gY29udmVydCB0aGUgdmFsdWUgdG8gdGhlIGludGVybmFsIGZvcm1hdC4gIFRo ZSBmdW5jdGlvbgotdGFrZXMgdHdvIGFyZ3VtZW50cywgYSB3aWRnZXQgYW5kIGFuIGV4dGVy bmFsIHZhbHVlLCBhbmQgcmV0dXJucyB0aGUKLWludGVybmFsIHZhbHVlLiAgVGhlIGZ1bmN0 aW9uIGlzIGNhbGxlZCBvbiB0aGUgcHJlc2VudCBAY29kZXs6dmFsdWV9Ci13aGVuIHRoZSB3 aWRnZXQgaXMgY3JlYXRlZCwgYW5kIG9uIGFueSB2YWx1ZSBzZXQgbGF0ZXIgd2l0aAotQGNv ZGV7d2lkZ2V0LXZhbHVlLXNldH0uCi0KLUB2aW5kZXggdmFsdWUtdG8tZXh0ZXJuYWxAcnsg a2V5d29yZH0KLUBpdGVtIDp2YWx1ZS10by1leHRlcm5hbAotRnVuY3Rpb24gdG8gY29udmVy dCB0aGUgdmFsdWUgdG8gdGhlIGV4dGVybmFsIGZvcm1hdC4gIFRoZSBmdW5jdGlvbgotdGFr ZXMgdHdvIGFyZ3VtZW50cywgYSB3aWRnZXQgYW5kIGFuIGludGVybmFsIHZhbHVlLCBhbmQg cmV0dXJucyB0aGUKLWV4dGVybmFsIHZhbHVlLgotCi1AdmluZGV4IGNyZWF0ZUByeyBrZXl3 b3JkfQotQGl0ZW0gOmNyZWF0ZQotRnVuY3Rpb24gdG8gY3JlYXRlIGEgd2lkZ2V0IGZyb20g c2NyYXRjaC4gIFRoZSBmdW5jdGlvbiB0YWtlcyBvbmUKLWFyZ3VtZW50LCBhIHdpZGdldCB0 eXBlLCBhbmQgY3JlYXRlcyBhIHdpZGdldCBvZiB0aGF0IHR5cGUsIGluc2VydHMgaXQKLWlu IHRoZSBidWZmZXIsIGFuZCByZXR1cm5zIGEgd2lkZ2V0IG9iamVjdC4KLQotQHZpbmRleCBk ZWxldGVAcnsga2V5d29yZH0KLUBpdGVtIDpkZWxldGUKLUZ1bmN0aW9uIHRvIGRlbGV0ZSBh IHdpZGdldC4gIFRoZSBmdW5jdGlvbiB0YWtlcyBvbmUgYXJndW1lbnQsIGEgd2lkZ2V0LAot YW5kIHNob3VsZCByZW1vdmUgYWxsIHRyYWNlcyBvZiB0aGUgd2lkZ2V0IGZyb20gdGhlIGJ1 ZmZlci4KLQotVGhlIGRlZmF1bHQgdmFsdWUgaXM6Ci0KLUBkZWZ1biB3aWRnZXQtZGVmYXVs dC1kZWxldGUgd2lkZ2V0Ci1SZW1vdmUgQHZhcnt3aWRnZXR9IGZyb20gdGhlIGJ1ZmZlci4K LURlbGV0ZSBhbGwgQGNvZGV7OmNoaWxkcmVufSBhbmQgQGNvZGV7OmJ1dHRvbnN9IGluIEB2 YXJ7d2lkZ2V0fS4KLUBlbmQgZGVmdW4KLQotSW4gbW9zdCBjYXNlcyB5b3Ugc2hvdWxkIG5v dCBjaGFuZ2UgdGhpcyB2YWx1ZSwgYnV0IGluc3RlYWQgdXNlCi1AY29kZXs6dmFsdWUtZGVs ZXRlfSB0byBtYWtlIGFueSBhZGRpdGlvbmFsIGNsZWFudXAuCi0KLUB2aW5kZXggdmFsdWUt Y3JlYXRlQHJ7IGtleXdvcmR9Ci1AaXRlbSA6dmFsdWUtY3JlYXRlCi1GdW5jdGlvbiB0byBl eHBhbmQgdGhlIEBzYW1weyV2fSBlc2NhcGUgaW4gdGhlIGZvcm1hdCBzdHJpbmcuICBJdCB3 aWxsCi1iZSBjYWxsZWQgd2l0aCB0aGUgd2lkZ2V0IGFzIGl0cyBhcmd1bWVudCBhbmQgc2hv dWxkIGluc2VydCBhCi1yZXByZXNlbnRhdGlvbiBvZiB0aGUgd2lkZ2V0J3MgdmFsdWUgaW4g dGhlIGJ1ZmZlci4KLQotTmVzdGVkIHdpZGdldHMgc2hvdWxkIGJlIGxpc3RlZCBpbiBAY29k ZXs6Y2hpbGRyZW59IG9yIEBjb2RlezpidXR0b25zfQotdG8gbWFrZSBzdXJlIHRoZXkgYXJl IGF1dG9tYXRpY2FsbHkgZGVsZXRlZC4KLQotQHZpbmRleCB2YWx1ZS1kZWxldGVAcnsga2V5 d29yZH0KLUBpdGVtIDp2YWx1ZS1kZWxldGUKLVNob3VsZCByZW1vdmUgdGhlIHJlcHJlc2Vu dGF0aW9uIG9mIHRoZSB3aWRnZXQncyB2YWx1ZSBmcm9tIHRoZSBidWZmZXIuCi1JdCB3aWxs IGJlIGNhbGxlZCB3aXRoIHRoZSB3aWRnZXQgYXMgaXRzIGFyZ3VtZW50LiAgSXQgZG9lc24n dCBoYXZlIHRvCi1yZW1vdmUgdGhlIHRleHQsIGJ1dCBpdCBzaG91bGQgcmVsZWFzZSBtYXJr ZXJzIGFuZCBkZWxldGUgbmVzdGVkIHdpZGdldHMKLWlmIHRoZXNlIGFyZSBub3QgbGlzdGVk IGluIEBjb2RlezpjaGlsZHJlbn0gb3IgQGNvZGV7OmJ1dHRvbnN9LgotCi1AdmluZGV4IHZh bHVlLWdldEByeyBrZXl3b3JkfQotQGl0ZW0gOnZhbHVlLWdldAotRnVuY3Rpb24gdG8gZXh0 cmFjdCB0aGUgdmFsdWUgb2YgYSB3aWRnZXQsIGFzIGl0IGlzIGRpc3BsYXllZCBpbiB0aGUK LWJ1ZmZlci4KLQotVGhlIGZvbGxvd2luZyBwcmVkZWZpbmVkIGZ1bmN0aW9uIGNhbiBiZSB1 c2VkIGhlcmU6Ci0KLUBkZWZ1biB3aWRnZXQtdmFsdWUtdmFsdWUtZ2V0IHdpZGdldAotUmV0 dXJuIHRoZSBAY29kZXs6dmFsdWV9IHByb3BlcnR5IG9mIEB2YXJ7d2lkZ2V0fS4KLUBlbmQg ZGVmdW4KLQotQHZpbmRleCBmb3JtYXQtaGFuZGxlckByeyBrZXl3b3JkfQotQGl0ZW0gOmZv cm1hdC1oYW5kbGVyCi1GdW5jdGlvbiB0byBoYW5kbGUgdW5rbm93biBAc2FtcHslfSBlc2Nh cGVzIGluIHRoZSBmb3JtYXQgc3RyaW5nLiAgSXQKLXdpbGwgYmUgY2FsbGVkIHdpdGggdGhl IHdpZGdldCBhbmQgdGhlIGNoYXJhY3RlciB0aGF0IGZvbGxvd3MgdGhlCi1Ac2FtcHslfSBh cyBhcmd1bWVudHMuICBZb3UgY2FuIHNldCB0aGlzIHRvIGFsbG93IHlvdXIgd2lkZ2V0IHRv IGhhbmRsZQotbm9uLXN0YW5kYXJkIGVzY2FwZXMuCi0KLUBmaW5kZXggd2lkZ2V0LWRlZmF1 bHQtZm9ybWF0LWhhbmRsZXIKLVlvdSBzaG91bGQgZW5kIHVwIGNhbGxpbmcgQGNvZGV7d2lk Z2V0LWRlZmF1bHQtZm9ybWF0LWhhbmRsZXJ9IHRvIGhhbmRsZQotdW5rbm93biBlc2NhcGUg c2VxdWVuY2VzLCB3aGljaCB3aWxsIGhhbmRsZSB0aGUgQHNhbXB7JWh9IGFuZCBhbnkgZnV0 dXJlCi1lc2NhcGUgc2VxdWVuY2VzLCBhcyB3ZWxsIGFzIGdpdmUgYW4gZXJyb3IgZm9yIHVu a25vd24gZXNjYXBlcy4KLQotQHZpbmRleCBhY3Rpb25Acnsga2V5d29yZH0KLUBpdGVtIDph Y3Rpb24KLUZ1bmN0aW9uIHRvIGhhbmRsZSB1c2VyIGluaXRpYXRlZCBldmVudHMuICBCeSBk ZWZhdWx0LCBAY29kZXs6bm90aWZ5fQotdGhlIHBhcmVudC4KK3R5cGUuCiAKLVRoZSBmb2xs b3dpbmcgcHJlZGVmaW5lZCBmdW5jdGlvbiBjYW4gYmUgdXNlZCBoZXJlOgotCi1AZGVmdW4g d2lkZ2V0LXBhcmVudC1hY3Rpb24gd2lkZ2V0ICZvcHRpb25hbCBldmVudAotVGVsbCBAY29k ZXs6cGFyZW50fSBvZiBAdmFye3dpZGdldH0gdG8gaGFuZGxlIHRoZSBAY29kZXs6YWN0aW9u fS4KLU9wdGlvbmFsIEB2YXJ7ZXZlbnR9IGlzIHRoZSBldmVudCB0aGF0IHRyaWdnZXJlZCB0 aGUgYWN0aW9uLgotQGVuZCBkZWZ1bgorSXQgdGFrZXMgYSB3aWRnZXQgdHlwZSBhcyBhbiBh cmd1bWVudCwgYW5kIHJldHVybnMgdGhlIGNvbnZlcnRlZAord2lkZ2V0IHR5cGUuICBXaGVu IGEgd2lkZ2V0IGlzIGNyZWF0ZWQsIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZvcgordGhl IHdpZGdldCB0eXBlIGFuZCBhbGwgdGhlIHdpZGdldCdzIHBhcmVudCB0eXBlcywgbW9zdCBk ZXJpdmVkIGZpcnN0LgogCi1AdmluZGV4IHByb21wdC12YWx1ZUByeyBrZXl3b3JkfQotQGl0 ZW0gOnByb21wdC12YWx1ZQotRnVuY3Rpb24gdG8gcHJvbXB0IGZvciBhIHZhbHVlIGluIHRo ZSBtaW5pYnVmZmVyLiAgVGhlIGZ1bmN0aW9uIHNob3VsZAotdGFrZSBmb3VyIGFyZ3VtZW50 cywgQHZhcnt3aWRnZXR9LCBAdmFye3Byb21wdH0sIEB2YXJ7dmFsdWV9LCBhbmQKLUB2YXJ7 dW5ib3VuZH0gYW5kIHNob3VsZCByZXR1cm4gYSB2YWx1ZSBmb3Igd2lkZ2V0IGVudGVyZWQg YnkgdGhlIHVzZXIuCi1AdmFye3Byb21wdH0gaXMgdGhlIHByb21wdCB0byB1c2UuICBAdmFy e3ZhbHVlfSBpcyB0aGUgZGVmYXVsdCB2YWx1ZSB0bwotdXNlLCB1bmxlc3MgQHZhcnt1bmJv dW5kfSBpcyBub24tQGNvZGV7bmlsfSwgaW4gd2hpY2ggY2FzZSB0aGVyZSBpcyBubyBkZWZh dWx0Ci12YWx1ZS4gIFRoZSBmdW5jdGlvbiBzaG91bGQgcmVhZCB0aGUgdmFsdWUgdXNpbmcg dGhlIG1ldGhvZCBtb3N0IG5hdHVyYWwKLWZvciB0aGlzIHdpZGdldCwgYW5kIGRvZXMgbm90 IGhhdmUgdG8gY2hlY2sgdGhhdCBpdCBtYXRjaGVzLgorVGhlIHByZWRlZmluZWQgZnVuY3Rp b25zIEBjb2Rle3dpZGdldC10eXBlcy1jb252ZXJ0LXdpZGdldH0gYW5kCitAY29kZXt3aWRn ZXQtdmFsdWUtY29udmVydC13aWRnZXR9IGNhbiBiZSB1c2VkIGhlcmUuCiBAZW5kIHRhYmxl CiAKLUlmIHlvdSB3YW50IHRvIGRlZmluZSBhIG5ldyB3aWRnZXQgZnJvbSBzY3JhdGNoLCB1 c2UgdGhlIEBjb2Rle2RlZmF1bHR9Ci13aWRnZXQgYXMgaXRzIGJhc2UuCi0KLUBkZWZmbiBX aWRnZXQgZGVmYXVsdAotV2lkZ2V0IHVzZWQgYXMgYSBiYXNlIGZvciBvdGhlciB3aWRnZXRz LgotCi1JdCBwcm92aWRlcyBtb3N0IG9mIHRoZSBmdW5jdGlvbmFsaXR5IHRoYXQgaXMgcmVm ZXJyZWQgdG8gYXMgYGBieQotZGVmYXVsdCcnIGluIHRoaXMgdGV4dC4KLUBlbmQgZGVmZm4K LQotQG5vZGUgV2lkZ2V0IEJyb3dzZXIKLUBjaGFwdGVyIFdpZGdldCBCcm93c2VyCitAbm9k ZSBJbnNwZWN0aW5nIFdpZGdldHMKK0BjaGFwdGVyIEluc3BlY3RpbmcgV2lkZ2V0cwogQGNp bmRleCB3aWRnZXQgYnJvd3NlcgogCi1UaGVyZSBpcyBhIHNlcGFyYXRlIHBhY2thZ2UgdG8g YnJvd3NlIHdpZGdldHMuICBUaGlzIGlzIGludGVuZGVkIHRvIGhlbHAKLXByb2dyYW1tZXJz IHdobyB3YW50IHRvIGV4YW1pbmUgdGhlIGNvbnRlbnQgb2YgYSB3aWRnZXQuICBUaGUgYnJv d3Nlcgotc2hvd3MgdGhlIHZhbHVlIG9mIGVhY2gga2V5d29yZCwgYnV0IHVzZXMgbGlua3Mg Zm9yIGNlcnRhaW4ga2V5d29yZHMKLXN1Y2ggYXMgQHNhbXB7OnBhcmVudH0sIHdoaWNoIGF2 b2lkcyBwcmludGluZyBjeWNsaWMgc3RydWN0dXJlcy4KK1RoZXJlIGlzIGEgc2VwYXJhdGUg cGFja2FnZSB0byBicm93c2Ugd2lkZ2V0cywgaW4KK0BzYW1we3dpZC1icm93c2UuZWx9LiAg VGhpcyBpcyBpbnRlbmRlZCB0byBoZWxwIHByb2dyYW1tZXJzIHdobyB3YW50Cit0byBleGFt aW5lIHRoZSBjb250ZW50IG9mIGEgd2lkZ2V0LiAgVGhlIGJyb3dzZXIgc2hvd3MgdGhlIHZh bHVlIG9mCitlYWNoIGtleXdvcmQsIGJ1dCB1c2VzIGxpbmtzIGZvciBjZXJ0YWluIGtleXdv cmRzIHN1Y2ggYXMKK0BzYW1wezpwYXJlbnR9LCB3aGljaCBhdm9pZHMgcHJpbnRpbmcgY3lj bGljIHN0cnVjdHVyZXMuCiAKIEBkZWZmbiBDb21tYW5kIHdpZGdldC1icm93c2UgQHZhcnt3 aWRnZXR9CiBDcmVhdGUgYSB3aWRnZXQgYnJvd3NlciBmb3IgQHZhcnt3aWRnZXR9LgorCiBX aGVuIGNhbGxlZCBpbnRlcmFjdGl2ZWx5LCBwcm9tcHQgZm9yIEB2YXJ7d2lkZ2V0fS4KIEBl bmQgZGVmZm4KIAogQGRlZmZuIENvbW1hbmQgd2lkZ2V0LWJyb3dzZS1vdGhlci13aW5kb3cg QHZhcnt3aWRnZXR9CiBDcmVhdGUgYSB3aWRnZXQgYnJvd3NlciBmb3IgQHZhcnt3aWRnZXR9 IGFuZCBzaG93IGl0IGluIGFub3RoZXIgd2luZG93LgorCiBXaGVuIGNhbGxlZCBpbnRlcmFj dGl2ZWx5LCBwcm9tcHQgZm9yIEB2YXJ7d2lkZ2V0fS4KIEBlbmQgZGVmZm4KIAogQGRlZmZu IENvbW1hbmQgd2lkZ2V0LWJyb3dzZS1hdCBAdmFye3Bvc30KIENyZWF0ZSBhIHdpZGdldCBi cm93c2VyIGZvciB0aGUgd2lkZ2V0IGF0IEB2YXJ7cG9zfS4KKwogV2hlbiBjYWxsZWQgaW50 ZXJhY3RpdmVseSwgdXNlIHRoZSBwb3NpdGlvbiBvZiBwb2ludC4KIEBlbmQgZGVmZm4KIAor SW4gYWRkaXRpb24sIHRoZXJlJ3MgYSBmdW5jdGlvbiB0byBkZXNjcmliZSB0aGUgd2lkZ2V0 IGF0IHBvaW50LgorCitAZGVmZm4gQ29tbWFuZCB3aWRnZXQtZGVzY3JpYmUgJm9wdGlvbmFs IHdpZGdldC1vci1wb3MKK0Rlc2NyaWJlIHRoZSB3aWRnZXQgYXQgcG9pbnQuCisKK1doZW4g Y2FsbGVkIGZyb20gTGlzcCwgQHZhcnt3aWRnZXQtb3ItcG9zfSBtaWdodCBiZSB0aGUgd2lk Z2V0IHRvCitkZXNjcmliZSBvciBhIGJ1ZmZlciBwb3NpdGlvbiB3aGVyZSBhIHdpZGdldCBp cyBwcmVzZW50LiAgSWYKK0B2YXJ7d2lkZ2V0LW9yLXBvc30gaXMgQGNvZGV7bmlsfSwgdGhl IHdpZGdldCB0byBkZXNjcmliZSBpcyB0aGUKK3dpZGdldCBhdCBwb2ludC4KKworVGhpcyBj b21tYW5kIHNldHMgdXAgYSBoZWxwIGJ1ZmZlciBmb3IgcHJvdmlkaW5nIGluZm9ybWF0aW9u IGFib3V0IHRoZQord2lkZ2V0LCBtYWlubHkgaXRzIEBjb2RlezphY3Rpb259IGFuZCBAY29k ZXs6bW91c2UtZG93bi1hY3Rpb259CitmdW5jdGlvbnMsIGFuZCBwcm92aWRlcyBsaW5rcyB0 byBkZXNjcmliZSBpdCBpbiBtb3JlIGRldGFpbCB1c2luZyB0aGUKK0Bjb2Rle3dpZGdldC1i cm93c2V9IGNvbW1hbmRzIGRlc2NyaWJlZCBhYm92ZS4KK0BlbmQgZGVmZm4KKwogQG5vZGUg IFdpZGdldCBNaW5vciBNb2RlCiBAY2hhcHRlciBXaWRnZXQgTWlub3IgTW9kZQogQGNpbmRl eCB3aWRnZXQgbWlub3IgbW9kZQpAQCAtMTc0MCwxNCArMjk2NCwyNCBAQCBVdGlsaXRpZXMK IEBjaGFwdGVyIFV0aWxpdGllcwogQGNpbmRleCB1dGlsaXR5IGZ1bmN0aW9ucyBmb3Igd2lk Z2V0cwogCitIZXJlIHdlIGRlc2NyaWJlIHNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdGhhdCBk b24ndCByZWFsbHkgaGF2ZSBhIHBsYWNlCitlYXJsaWVyIGluIHRoaXMgbWFudWFsLgorCiBA ZGVmdW4gd2lkZ2V0LXByb21wdC12YWx1ZSB3aWRnZXQgcHJvbXB0IFsgdmFsdWUgdW5ib3Vu ZCBdCiBQcm9tcHQgZm9yIGEgdmFsdWUgbWF0Y2hpbmcgQHZhcnt3aWRnZXR9LCB1c2luZyBA dmFye3Byb21wdH0uCiBUaGUgY3VycmVudCB2YWx1ZSBpcyBhc3N1bWVkIHRvIGJlIEB2YXJ7 dmFsdWV9LCB1bmxlc3MgQHZhcnt1bmJvdW5kfSBpcwogbm9uLUBjb2Rle25pbH0uCisKK0Nv bnZlcnRzIEB2YXJ7d2lkZ2V0fSBiZWZvcmUgcHJvbXB0aW5nLCBhbmQgZm9yIHByb21wdGlu ZyBpdCB1c2VzIHRoZQorQGNvZGV7OnByb21wdC12YWx1ZX0gZnVuY3Rpb24uICBUaGlzIGZ1 bmN0aW9uIHJldHVybnMgdGhlIHVzZXIKK2BgYW5zd2VyJycsIGFuZCBpdCdzIGFuIGVycm9y IGlmIHRoYXQgYW5zd2VyIGRvZXNuJ3QgbWF0Y2ggdGhlIHdpZGdldCwKK2FzIHdpdGggdGhl IEBjb2RlezptYXRjaH0gZnVuY3Rpb24uCisKK0lmIHRoZSBhbnN3ZXIgbWF0Y2hlcyB0aGUg d2lkZ2V0LCByZXR1cm5zIHRoZSBhbnN3ZXIuCiBAZW5kIGRlZnVuCiAKIEBkZWZ1biB3aWRn ZXQtZ2V0LXNpYmxpbmcgd2lkZ2V0Ci1HZXQgdGhlIGl0ZW0gd2hpY2ggQHZhcnt3aWRnZXR9 IGlzIGFzc3VtZWQgdG8gdG9nZ2xlLgorR2V0IHRoZSBpdGVtIHdoaWNoIEB2YXJ7d2lkZ2V0 fSBzaG91bGQgdG9nZ2xlLgogVGhpcyBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIHJhZGlvIGJ1 dHRvbnMgb3IgY2hlY2tib3hlcyBpbiBhIGxpc3QuCiBAZW5kIGRlZnVuCiAKQEAgLTE3NzMs NiArMzAwNywxNDIgQEAgVXRpbGl0aWVzCiB0aGVuIHRoZSByZXR1cm4gdmFsdWUgaXMgdGhl IEB2YXJ7dmFsdWV9IG9mIHRoZSBjaG9zZW4gZWxlbWVudC4KIEBlbmQgZGVmdW4KIAorQGRl ZnVuIHdpZGdldC1pbWFnZS1maW5kIGltYWdlCitDcmVhdGUgYSBncmFwaGljYWwgYnV0dG9u IGZyb20gQHZhcntpbWFnZX0sIGFuIGltYWdlIG9yIGEgZmlsZSBuYW1lCitzYW5zIGV4dGVu c2lvbi4KKworSWYgQHZhcntpbWFnZX0gaXMgYSBmaWxlIG5hbWUsIHRoZSBmaWxlIHNob3Vs ZCBiZSBpbgorQGNvZGV7d2lkZ2V0LWltYWdlLWRpcmVjdG9yeX0sIG9yIGluIGEgcGxhY2Ug d2hlcmUgQGNvZGV7ZmluZC1pbWFnZX0KK3dpbGwgZmluZCBpdC4KK0BlbmQgZGVmdW4KKwor QGRlZnVuIHdpZGdldC1pbWFnZS1pbnNlcnQgd2lkZ2V0IHRhZyBpbWFnZQorQXMgcGFydCBv ZiBAdmFye3dpZGdldH0sIGluc2VydCB0aGUgdGV4dCBAdmFye3RhZ30gb3IsIGlmIHN1cHBv cnRlZCwKK3RoZSBpbWFnZSBAdmFye2ltYWdlfS4KKworQHZhcntpbWFnZX0gc2hvdWxkIGJl IGFzIGRlc2NyaWJlZCBpbiBAY29kZXt3aWRnZXQtaW1hZ2UtZmluZH0uCitAZW5kIGRlZnVu CisKK0BkZWZ1biB3aWRnZXQtZWNoby1oZWxwIHBvcworRGlzcGxheSBoZWxwLWVjaG8gdGV4 dCBmb3IgdGhlIHdpZGdldCBhdCBAdmFye3Bvc30uCisKK1VzZXMgdGhlIHZhbHVlIG9mIEBj b2RlezpoZWxwLWVjaG99LiAgSWYgaXQgaXMgYSBmdW5jdGlvbiwgaXQgY2FsbHMgaXQKK3Rv IGdldCBhIHN0cmluZy4gIE90aGVyd2lzZSwgaXQgQGNvZGV7ZXZhbH1zIGl0LgorQGVuZCBk ZWZ1bgorCitAbm9kZSAgQ3VzdG9taXphdGlvbgorQGNoYXB0ZXIgQ3VzdG9taXphdGlvbgor VGhpcyBjaGFwdGVyIGlzIGFib3V0IHRoZSBjdXN0b21pemF0aW9uIG9wdGlvbnMgZm9yIHRo ZSBXaWRnZXQKK2xpYnJhcnksIGZvciB0aGUgZW5kIHVzZXIuCisKK0BkZWZmbiBGYWNlIHdp ZGdldC1maWVsZC1mYWNlCitGYWNlIHVzZWQgZm9yIG90aGVyIGVkaXRpbmcgZmllbGRzLgor QGVuZCBkZWZmbgorCitAZGVmZm4gRmFjZSB3aWRnZXQtYnV0dG9uLWZhY2UKK0ZhY2UgdXNl ZCBmb3IgYnV0dG9ucy4KK0BlbmQgZGVmZm4KKworQGRlZm9wdCB3aWRnZXQtbW91c2UtZmFj ZQorRmFjZSB1c2VkIGZvciBoaWdobGlnaHRpbmcgYSBidXR0b24gd2hlbiB0aGUgbW91c2Ug cG9pbnRlciBtb3ZlcworYWNyb3NzIGl0LgorCitUaGUgZGVmYXVsdCB2YWx1ZSBpcyBAY29k ZXtoaWdobGlnaHR9LgorQGVuZCBkZWZvcHQKKworQGRlZm9wdCB3aWRnZXQtaW1hZ2UtZGly ZWN0b3J5CitEaXJlY3Rvcnkgd2hlcmUgV2lkZ2V0IHNob3VsZCBsb29rIGZvciBpbWFnZXMu CisKK1dpZGdldCB3aWxsIGxvb2sgaGVyZSBmb3IgYSBmaWxlIHdpdGggdGhlIHNhbWUgbmFt ZSBhcyBzcGVjaWZpZWQgZm9yIHRoZQoraW1hZ2UsIHdpdGggZWl0aGVyIGEgQGZpbGV7Lnhw bX0gKGlmIHN1cHBvcnRlZCkgb3IgQGZpbGV7LnhibX0gZXh0ZW5zaW9uLgorQGVuZCBkZWZv cHQKKworQGRlZm9wdCB3aWRnZXQtaW1hZ2UtZW5hYmxlCitJZiBub24tQGNvZGV7bmlsfSwg YWxsb3cgaW1hZ2VzIHRvIGFwcGVhciBvbiBkaXNwbGF5cyB3aGVyZSB0aGV5IGFyZSBzdXBw b3J0ZWQuCitAZW5kIGRlZm9wdAorCitAZGVmb3B0IHdpZGdldC1pbWFnZS1jb252ZXJzaW9u CitBbiBhbGlzdCB0byBjb252ZXJ0IHN5bWJvbHMgZnJvbSBpbWFnZSBmb3JtYXRzIHRvIGZp bGUgbmFtZSBzdWZmaXhlcy4KKworRWFjaCBlbGVtZW50IGlzIGEgY29ucyBjZWxsIChAdmFy e2Zvcm1hdH0gLiBAdmFye3N1ZmZpeH0pLCB3aGVyZQorQHZhcntmb3JtYXR9IGlzIGEgc3lt Ym9sIHRoYXQgcmVwcmVzZW50cyBhbiBpbWFnZSBmb3JtYXQgYW5kCitAdmFye3N1ZmZpeH0g aXMgaXRzIGNvcnJlc3BvbmRlbnQgc3VmZml4LgorQGVuZCBkZWZvcHQKKworQGRlZm9wdCB3 aWRnZXQtYnV0dG9uLXByZWZpeAorU3RyaW5nIHRvIHByZWZpeCBidXR0b25zLgorQGVuZCBk ZWZvcHQKKworQGRlZm9wdCB3aWRnZXQtYnV0dG9uLXN1ZmZpeAorU3RyaW5nIHRvIHN1ZmZp eCBidXR0b25zLgorQGVuZCBkZWZvcHQKKworQGRlZm9wdCB3aWRnZXQtcHVzaC1idXR0b24t cHJlZml4CitTdHJpbmcgdG8gcHJlZml4IHB1c2ggYnV0dG9ucy4KK0BlbmQgZGVmb3B0CisK K0BkZWZvcHQgd2lkZ2V0LXB1c2gtYnV0dG9uLXN1ZmZpeAorU3RyaW5nIHRvIHN1ZmZpeCBw dXNoIGJ1dHRvbnMuCitAZW5kIGRlZm9wdAorCitAZGVmb3B0IHdpZGdldC1saW5rLXByZWZp eAorU3RyaW5nIHRvIHByZWZpeCBsaW5rcy4KK0BlbmQgZGVmb3B0CisKK0BkZWZvcHQgd2lk Z2V0LWxpbmstc3VmZml4CitTdHJpbmcgdG8gc3VmZml4IGxpbmtzLgorQGVuZCBkZWZvcHQK KworQGRlZm9wdCB3aWRnZXQtY2hvaWNlLXRvZ2dsZQorSWYgbm9uLUBjb2Rle25pbH0sIHRv Z2dsZSB3aGVuIHRoZXJlIGFyZSBqdXN0IHR3byBvcHRpb25zLgorCitCeSBkZWZhdWx0LCBp dHMgdmFsdWUgaXMgQGNvZGV7bmlsfS4KK0BlbmQgZGVmb3B0CisKK0BkZWZvcHQgd2lkZ2V0 LWRvY3VtZW50YXRpb24tbGlua3MKK0lmIG5vbi1AY29kZXtuaWx9LCBhZGQgaHlwZXJsaW5r cyB0byBkb2N1bWVudGF0aW9uIHN0cmluZ3MuCitAZW5kIGRlZm9wdAorCitAZGVmb3B0IHdp ZGdldC1kb2N1bWVudGF0aW9uLWxpbmstcmVnZXhwCitBIHJlZ2V4cCB0aGF0IG1hdGNoZXMg cG90ZW50aWFsIGxpbmtzIGluIGRvY3VtZW50YXRpb24gc3RyaW5ncy4gIFRoZQorbGluayBp dHNlbGYgc2hvdWxkIG1hdGNoIHRvIHRoZSBmaXJzdCBncm91cC4KK0BlbmQgZGVmb3B0CisK K0BkZWZvcHQgd2lkZ2V0LWRvY3VtZW50YXRpb24tbGluay1wCitBIHByZWRpY2F0ZSBmdW5j dGlvbiB0byB0ZXN0IGlmIGEgc3RyaW5nIGlzIHVzZWZ1bCBhcyBhIGxpbmsuICBUaGUKK2Z1 bmN0aW9uIGlzIGNhbGxlZCB3aXRoIG9uZSBhcmd1bWVudCwgYSBzdHJpbmcsIGFuZCBzaG91 bGQgcmV0dXJuCitub24tQGNvZGV7bmlsfSBpZiB0aGVyZSBzaG91bGQgYmUgYSBsaW5rIGZv ciB0aGF0IHN0cmluZy4KKworQnkgZGVmYXVsdCwgdGhlIHZhbHVlIGlzIEBjb2Rle2ludGVy bi1zb2Z0fS4KK0BlbmQgZGVmb3B0CisKK0BkZWZvcHQgd2lkZ2V0LWRvY3VtZW50YXRpb24t bGluay10eXBlCitBIHN5bWJvbCB0aGF0IHJlcHJlc2VudHMgYSB3aWRnZXQgdHlwZSB0byB1 c2UgZm9yIGxpbmtzIGluCitkb2N1bWVudGF0aW9uIHN0cmluZ3MuCisKK0J5IGRlZmF1bHQs IHRoZSB2YWx1ZSBpcyBAY29kZXtkb2N1bWVudGF0aW9uLWxpbmt9LgorQGVuZCBkZWZvcHQK KworQGRlZm9wdCB3aWRnZXQtbWVudS1tYXgtc2l6ZQorTWF4aW11bSBzaXplIGZvciBhIHBv cHVwIG1lbnUuICBCeSBkZWZhdWx0LCBpdHMgdmFsdWUgaXMgNDAuCisKK0lmIGEgZnVuY3Rp b24gYXNrIHlvdSB0byBjaG9vc2UgZnJvbSBhIG1lbnUgdGhhdCBpcyBsYXJnZXIgdGhhbiB0 aGlzCit2YWx1ZSwgaXQgd2lsbCB1c2UgdGhlIG1pbmlidWZmZXIuCitAZW5kIGRlZm9wdAor CitAZGVmb3B0IHdpZGdldC1tZW51LW1heC1zaG9ydGN1dHMKK0xhcmdlc3QgbnVtYmVyIG9m IGl0ZW1zIGZvciB3aGljaCBpdCB3b3JrcyB0byBjaG9vc2Ugb25lIHdpdGggYQorY2hhcmFj dGVyLgorCitGb3IgYSBsYXJnZXIgbnVtYmVyLCB1c2UgdGhlIG1pbmlidWZmZXIuCitAZW5k IGRlZm9wdAorCitAZGVmb3B0IHdpZGdldC1tZW51LW1pbmlidWZmZXItZmxhZworV2hldGhl ciB0byB1c2UgdGhlIG1pbmlidWZmZXIgdG8gYXNrIGZvciBhIGNob2ljZS4KKworSWYgQGNv ZGV7bmlsfSwgdGhlIGRlZmF1bHQsIHJlYWQgYSBzaW5nbGUgY2hhcmFjdGVyLgorQGVuZCBk ZWZvcHQKKwogQG5vZGUgIFdpZGdldCBXaXNobGlzdAogQGNoYXB0ZXIgV2lzaGxpc3QKIEBj aW5kZXggdG9kbwpAQCAtMTgwOCwxNSArMzE3OCw2IEBAIFdpZGdldCBXaXNobGlzdAogQGl0 ZW0KIEZpbmQgYSB3YXkgdG8gbWFrZSBnbHlwaHMgbG9vayBpbmFjdGl2ZS4KIAotQGl0ZW0K LUFkZCBAY29kZXtwcm9wZXJ0eS1saXN0fSB3aWRnZXQuCi0KLUBpdGVtCi1BZGQgQGNvZGV7 YXNzb2NpYXRpb24tbGlzdH0gd2lkZ2V0LgotCi1AaXRlbQotQWRkIEBjb2Rle2tleS1iaW5k aW5nfSB3aWRnZXQuCi0KIEBpdGVtCiBBZGQgQGNvZGV7d2lkZ2V0fSB3aWRnZXQgZm9yIGVk aXRpbmcgd2lkZ2V0IHNwZWNpZmljYXRpb25zLgogCi0tIAoyLjM0LjEKCg== --------------7szE1BuS09WGSVRmsNX9q0ez--