From owner-freebsd-cloud@freebsd.org Sun Apr 16 12:43:41 2017 Return-Path: Delivered-To: freebsd-cloud@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id A40C9D3F541; Sun, 16 Apr 2017 12:43:41 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from vps1.elischer.org (vps1.elischer.org [204.109.63.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "vps1.elischer.org", Issuer "CA Cert Signing Authority" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 89DBC1939; Sun, 16 Apr 2017 12:43:41 +0000 (UTC) (envelope-from julian@freebsd.org) Received: from Julian-MBP3.local (58-7-95-3.dyn.iinet.net.au [58.7.95.3]) (authenticated bits=0) by vps1.elischer.org (8.15.2/8.15.2) with ESMTPSA id v3GChYwo084388 (version=TLSv1.2 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Sun, 16 Apr 2017 05:43:38 -0700 (PDT) (envelope-from julian@freebsd.org) Subject: Re: amazon/xen... any way at all to pass a message/signal/semaphoere/morse-code to the boot loader? To: Jeremiah Lott , freebsd-cloud@freebsd.org, freebsd-xen@freebsd.org References: <0100015b6070c546-05c6cf24-36e1-487f-be5e-b2bb6efd4472-000000@email.amazonses.com> From: Julian Elischer Message-ID: <7da73676-335a-67ca-0cc7-2df8a8ad4661@freebsd.org> Date: Sun, 16 Apr 2017 20:43:29 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-cloud@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "FreeBSD on cloud platforms \(EC2, GCE, Azure, etc.\)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 16 Apr 2017 12:43:41 -0000 On 13/4/17 2:07 am, Jeremiah Lott via freebsd-cloud wrote: > On Wed, Apr 12, 2017 at 1:30 AM, Leif Pedersen wrote: > >> I keep an extra EBS volume handy that has a simple recovery image. If I get >> stuck into a trouble, I change the normal boot disk to sdb, and attach my >> recovery volume as sda1. Essentially, the extra volume is my "recovery >> partition". To make it cheaper, keep only a snapshot of it. >> > I tried for a while to get some sort of bootloader-based recovery plan in > place for our cloud-based systems, like what was originally asked for. We > already have a primary and a backup partition in our boot disk, but there > was no way I found in EC2 to easily switch the partition to boot from. In > the end, I gave up on passing information to the bootloader and used > something like the above with multiple images. I actually wrote a script at > one point using the aws CLI that you could run from any FreeBSD VM in the > same availability zone. It detached the original boot volume from the > "broken" instance; attached it as a secondary disk to the recovery image, > changed the boot partition, detached it from the recovery image, then > re-attached it to the original image. It took a while to run, but required > little user input. We kind of kept that as "good enough" for the rare case > that a instance became un-bootable and we cared to recover it rather than > replace it. I'm not sure we actually ever used it on a customer system. It > was used more during development when you are more likely to break stuff > (and want to recover coredumps, etc. so you can fix the broken code). Thanks for your comments. It appears that you have the same issues that we do. Andriy Gapon has been doing some stuff where nextboot information is saved onto the drive, and it knows how much it has beooted which may be good enough for us. basically a 'drops to recovery mode after N failures' would be enough for me. Is there any chance you can make your "recovery" system available? (especially if you can give source for the aws CLI stuff.. I think having that as an example and starting point might be a good start to making something truely useful. It may even be worth adding it to the regular FreeBSD AMI so that any FreeBSD EC2 system could be used to recover other systems. In our system there is a single zpool with two ZFS datasets and we use the "bootfs" parameter to select the new image, but it can be overridden from the boot menu, except of course on AWS due to the lack of console. > > If you go down the route of implementing EC2 network driver(s) in the > bootloader, then you could read the instance metadata via http and use a > tag to control the boot behavior. However, a bootloader driver, even a very > simplistic one, for xn0 (and potentially for both ixv and ena, if you > support EC2 Enhanced Networking) was more work that we wanted to undertake > for this. > > Jeremiah Lott > Avere Systems > _______________________________________________ > freebsd-cloud@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-cloud > To unsubscribe, send any mail to "freebsd-cloud-unsubscribe@freebsd.org" > From owner-freebsd-cloud@freebsd.org Wed Apr 19 12:41:49 2017 Return-Path: Delivered-To: freebsd-cloud@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id DB4EFD44B3F for ; Wed, 19 Apr 2017 12:41:49 +0000 (UTC) (envelope-from prvs=275e70a09=pacohope@amazon.co.uk) Received: from smtp-fw-2101.amazon.com (smtp-fw-2101.amazon.com [72.21.196.25]) (using TLSv1.2 with cipher RC4-SHA (128/128 bits)) (Client CN "amazon-smtp.amazon.com", Issuer "Symantec Class 3 Secure Server CA - G4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 5E2CCCC6; Wed, 19 Apr 2017 12:41:48 +0000 (UTC) (envelope-from prvs=275e70a09=pacohope@amazon.co.uk) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.co.uk; i=@amazon.co.uk; q=dns/txt; s=amazon201209; t=1492605709; x=1524141709; h=from:to:subject:date:message-id:references:in-reply-to: content-id:mime-version:content-transfer-encoding; bh=+5n0oTG8sVG6bV6g3uQ7ENU+xJJzhfb7dSESsAJ6Pu4=; b=STgqwIAnEB7QQiyNTaSGRpgOlTkYszUPaiSpyEHVWWzrmDL5hVZdG6AI 5dB0mp4nr5cdEK18jRthGKtQdK2F8nX2ckteEwhhoN3LxGwoO/bEUiNGa ohsYc+0ZB1oPnKB80LTB12b1sajWNbWZ86zSOB7mWdz0jUkxaWjzmjW99 8=; X-IronPort-AV: E=Sophos;i="5.37,221,1488844800"; d="scan'208";a="646761999" Received: from iad6-co-svc-p1-lb1-vlan2.amazon.com (HELO email-inbound-relay-25001.iad12.amazon.com) ([10.124.125.2]) by smtp-border-fw-out-2101.iad2.amazon.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 19 Apr 2017 12:36:32 +0000 Received: from EX13MTAUEB001.ant.amazon.com (iad55-ws-svc-p15-lb9-vlan2.iad.amazon.com [10.40.159.162]) by email-inbound-relay-25001.iad12.amazon.com (8.14.7/8.14.7) with ESMTP id v3JCaW5b030761 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL); Wed, 19 Apr 2017 12:36:32 GMT Received: from EX13D04UEB004.ant.amazon.com (10.43.60.174) by EX13MTAUEB001.ant.amazon.com (10.43.60.96) with Microsoft SMTP Server (TLS) id 15.0.1104.5; Wed, 19 Apr 2017 12:36:32 +0000 Received: from EX13D04UEB004.ant.amazon.com (10.43.60.174) by EX13D04UEB004.ant.amazon.com (10.43.60.174) with Microsoft SMTP Server (TLS) id 15.0.1104.5; Wed, 19 Apr 2017 12:36:32 +0000 Received: from EX13D04UEB004.ant.amazon.com ([10.43.60.174]) by EX13D04UEB004.ant.amazon.com ([10.43.60.174]) with mapi id 15.00.1104.000; Wed, 19 Apr 2017 12:36:32 +0000 From: "Hope, Paco" To: Julian Elischer , Jeremiah Lott , "freebsd-cloud@freebsd.org" Subject: Re: amazon/xen... any way at all to pass a message/signal/semaphoere/morse-code to the boot loader? Thread-Topic: amazon/xen... any way at all to pass a message/signal/semaphoere/morse-code to the boot loader? Thread-Index: AQHSs0YxUzQnUOrp/0yO7Ais3LwAFqHBNRsAgADTioCABe7ngIAE1pQA Date: Wed, 19 Apr 2017 12:36:32 +0000 Message-ID: <8D2CD9E6-C8B5-45B3-B709-BC249A32C22F@amazon.co.uk> References: <0100015b6070c546-05c6cf24-36e1-487f-be5e-b2bb6efd4472-000000@email.amazonses.com> <7da73676-335a-67ca-0cc7-2df8a8ad4661@freebsd.org> In-Reply-To: <7da73676-335a-67ca-0cc7-2df8a8ad4661@freebsd.org> Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.43.62.161] Content-Type: text/plain; charset="utf-8" Content-ID: <0DA210DFAC32214197E0458FBC3733FA@amazon.com> MIME-Version: 1.0 Content-Transfer-Encoding: base64 X-BeenThere: freebsd-cloud@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "FreeBSD on cloud platforms \(EC2, GCE, Azure, etc.\)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 19 Apr 2017 12:41:50 -0000 U29ycnkgdG8ganVtcCBpbiB0aGlzIGEgYml0IGxhdGUsIGJ1dCBJIGRvbid0IHVuZGVyc3RhbmQg dGhlIHN0YXRlbWVudCAibm8gd2F5IEkgZm91bmQgaW4gRUMyIHRvIGVhc2lseSBzd2l0Y2ggdGhl IHBhcnRpdGlvbiB0byBib290IGZyb20iLiBJZiB5b3UgbWVhbiBwYXNzaW5nIGZsYWdzIHRvIHRo ZSBib290bG9hZGVyIGxpa2UgeW91IHdvdWxkIGEgcGh5c2ljYWwgb24tcHJlbSBib3gsIHlvdSBt aWdodCBiZSByaWdodC4gSWYgeW91IG1lYW4gYm9vdGluZyBmcm9tIGEgZGlmZmVyZW50IHBhcnRp dGlvbiBvZiB0aGUgRUJTIHZvbHVtZSwgeW91J3JlIHByb2JhYmx5IHJpZ2h0LiBJJ2QgdXJnZSB5 b3UgdG8gdGhpbmsgaW4gdGVybXMgb2Ygd2hvbGUgZGlza3Mgd2hlbiBkZWFsaW5nIHdpdGggRUMy IGFuZCBFQlMuDQoNCkxlaWYgc3VnZ2VzdGVkIGEgZ29vZCBzb2x1dGlvbiwgd2hlcmUgeW91IGtl ZXAgYSBzbmFwc2hvdCBvZiBhIHJlY292ZXJ5IGRyaXZlLiBUaGF0IGlzIHZlcnkgc3RyYWlnaHRm b3J3YXJkIHRvIGF1dG9tYXRlLiBZb3UgY291bGQgd3JpdGUgYSBiaXQgb2YgcHl0aG9uIHRoYXQg dGFrZXMgYW4gaW5zdGFuY2UgSUQsIHN0b3BzIGl0IGlmIGl0J3MgcnVubmluZywgbW92ZXMgdGhl IGV4aXN0aW5nIHNkYSB0byBzZGIsIHRhZ3MgdGhlIGluc3RhbmNlIGFzICJyZWNvdmVyeSBtb2Rl Iiwgc3RhcnRzIHRoZSBpbnN0YW5jZSwgYW5kIHBvc3RzIGEgbm90aWZpY2F0aW9uIHRvIGFuIFNO UyBjaGFubmVsLiBUaGUgU05TIG5vdGlmaWNhdGlvbiBjb3VsZCBnZW5lcmF0ZSBhbiBlbWFpbCB0 byB0aGUgcmlnaHQgcGVvcGxlIChiYXNpY2FsbHkgInRoaXMgaW5zdGFuY2UgaXMgbm93IGluIHJl Y292ZXJ5IG1vZGUsIHlvdSBzaG91bGQgZ28gaGF2ZSBhIGxvb2siKS4gVGhhdCBweXRob24gY29k ZSBjb3VsZCBydW4gaW4gbGFtYmRhIChpLmUuLCBzZXJ2ZXJsZXNzKSBhbmQgY291bGQgYmUgZXhw b3NlZCB2aWEgQVBJIGdhdGV3YXkuIE9yIHlvdSBjb3VsZCBpbnZva2UgaXQgbWFudWFsbHkuIFlv dSBjb3VsZCB1c2UgYSB2YXJpZXR5IG9mIGFjY2VzcyBjb250cm9sL2F1dGhvcmlzYXRpb24gbWVj aGFuaXNtcyB0byBlbnN1cmUgdGhhdCBvbmx5IHRoZSByaWdodCBwZW9wbGUgY291bGQgaW52b2tl IHRoYXQgQVBJLCBhbmQgeW91IGNvdWxkIHVzZSBBV1MgSUFNIHRvIGVuc3VyZSB0aGF0IHRoZSBw eXRob24gbGFtYmRhIGZ1bmN0aW9uIGNhbiBtYW5pcHVsYXRlIG9ubHkgdGhlIHJpZ2h0IHNldCBv ZiBpbnN0YW5jZXMuDQoNCkluIHRoYXQgc2FtZSBweXRob24gY29kZSB5b3UgY2FuIGtpY2sgb2Zm IHNuYXBzaG90cyBvZiB0aGUgZHJpdmUgYmVpbmcgcmVjb3ZlcmVkLCB0b28sIHNvIHRoYXQgeW91 IGhhdmUgYSBiYWNrdXAgb2YgaXQgdG8gZmFsbCBiYWNrIG9uIGlmIHlvdSBzY3JldyB1cCB3aGls ZSBhdHRlbXB0aW5nIHJlY292ZXJ5LiBUaGF0IHB5dGhvbiBjb2RlIGNhbiBhZGQgdGhlIGluc3Rh bmNlIHRvIGEgcXVhcmFudGluZSBzZWN1cml0eSBncm91cCB0aGF0LCBmb3IgZXhhbXBsZSwgb25s eSBhbGxvd3MgU1NIIGZyb20geW91ciBtYW5hZ2VtZW50IGluc3RhbmNlcy9uZXR3b3JrIHdoaWxl IHRoZSBzeXN0ZW0gaXMgaW4gcmVjb3ZlcnkgbW9kZS4gQmFzaWNhbGx5IHlvdSdkIHJlY29yZCBh bGwgdGhlIGF0dHJpYnV0ZXMgYWJvdXQgdGhlIGluc3RhbmNlIGp1c3QgYmVmb3JlIHlvdSBnbyBp bnRvIHJlY292ZXJ5LiBUaGVuIHlvdSBnbyBpbnRvIHJlY292ZXJ5LiBBbmQgd2hlbiB5b3UncmUg aGFwcHkgd2l0aCBpdCwgeW91IGNvdWxkIGhhdmUgc29tZSBweXRob24gdGhhdCByZXN0b3JlcyB0 aGUgc2VjdXJpdHkgZ3JvdXBzLCBkZXRhY2hlcyB0aGUgcmVjb3ZlcnkgRUJTIHZvbHVtZSwgcmVt b3ZlcyB0aGUgcmVjb3ZlcnkgdGFnLCByZXN0YXJ0cyB0aGUgaW5zdGFuY2UgZnJvbSB0aGUgcmVj b3ZlcmVkIEVCUyB2b2x1bWUsIGFuZCBvcHRpb25hbGx5IGRlbGV0ZXMgdGhlIHByZS1yZWNvdmVy eSBzbmFwc2hvdC4NCg0KVGhlIHVwc2hvdCBpcyB0aGF0IHlvdSBjb3VsZCBleHBvc2UgYSB3ZWIg cGFnZSBvciBhIFJFU1QgQVBJIHRvIHlvdXIgImN1c3RvbWVyIiBhbGxvd2luZyB0aGVtIHRvIGtp Y2sgb2ZmIHRoaXMgInJlY292ZXJ5IG1vZGUiIHByb2Nlc3MuIEJhc2ljYWxseSB0aGV5IGdvIHRv IGEgd2ViIHBhZ2UgYW5kIHNheSAiSSBzY3Jld2VkIHVwIG15IGluc3RhbmNlLiIgQWxsIHRoaXMg c3R1ZmYga2lja3Mgb2ZmIGFuZCB5b3UgZ2V0IGFuIGVtYWlsIChvciBtYXliZSBUSEVZIGNhbiBs b2dpbiB0byB0aGUgcmVjb3ZlcnkgbW9kZSBhbmQgdHJ5IHRvIGZpeCBpdCB0aGVtc2VsdmVzKS4g RnJhbmtseSwgeW91IGNvdWxkIG1ha2UgdGhlIHdob2xlIHRoaW5nIHNlbGYtc2VydmljZS4gWW91 IGNvdWxkIGNvbnRyb2wgYWNjZXNzIHRvIHRoYXQgQVBJIG9yIHdlYiBwYWdlIGluIGFueSB3YXkg dGhhdCBzdWl0cyB5b3UgYW5kIHlvdXIgY3VzdG9tZXJzLiANCg0KSSB0aGluayB0aGF0J3MgdGhl IG1vcmUgbmF0aXZlIEFXUyB3YXkgdG8gaGFuZGxlIHRoZSByZWNvdmVyeSBtb2RlIHNjZW5hcmlv LiBPZiBjb3Vyc2UgSSBtYXkgaGF2ZSBtaXN1bmRlcnN0b29kIHNvbWUgbnVhbmNlIGluIHRoZSB1 c2UgY2FzZS4gSSBzdXNwZWN0IHRoZSBwbGF0Zm9ybSBnaXZlcyB5b3UgYSBidW5jaCBvZiBuYXRp dmUgdG9vbHMgdGhhdCBjYW4gaGVscCB5b3UsIGJ1dCB0aGV5IGRvbid0IHdvcmsgYXQgYWxsIHRo ZSB3YXkgcGFzc2luZyBmbGFncyB0byBhIGJvb3QgbG9hZGVyIHdvdWxkIHdvcmsuDQoNClBhY28N Cg0KT24gMTYvMDQvMjAxNywgMTQ6NDMsICJvd25lci1mcmVlYnNkLWNsb3VkQGZyZWVic2Qub3Jn IG9uIGJlaGFsZiBvZiBKdWxpYW4gRWxpc2NoZXIiIDxvd25lci1mcmVlYnNkLWNsb3VkQGZyZWVi c2Qub3JnIG9uIGJlaGFsZiBvZiBqdWxpYW5AZnJlZWJzZC5vcmc+IHdyb3RlOg0KDQogICAgT24g MTMvNC8xNyAyOjA3IGFtLCBKZXJlbWlhaCBMb3R0IHZpYSBmcmVlYnNkLWNsb3VkIHdyb3RlOg0K ICAgID4gT24gV2VkLCBBcHIgMTIsIDIwMTcgYXQgMTozMCBBTSwgTGVpZiBQZWRlcnNlbiA8Ymls Ym9AaG9iYml0b24ub3JnPiB3cm90ZToNCiAgICA+DQogICAgPj4gSSBrZWVwIGFuIGV4dHJhIEVC UyB2b2x1bWUgaGFuZHkgdGhhdCBoYXMgYSBzaW1wbGUgcmVjb3ZlcnkgaW1hZ2UuIElmIEkgZ2V0 DQogICAgPj4gc3R1Y2sgaW50byBhIHRyb3VibGUsIEkgY2hhbmdlIHRoZSBub3JtYWwgYm9vdCBk aXNrIHRvIHNkYiwgYW5kIGF0dGFjaCBteQ0KICAgID4+IHJlY292ZXJ5IHZvbHVtZSBhcyBzZGEx LiBFc3NlbnRpYWxseSwgdGhlIGV4dHJhIHZvbHVtZSBpcyBteSAicmVjb3ZlcnkNCiAgICA+PiBw YXJ0aXRpb24iLiBUbyBtYWtlIGl0IGNoZWFwZXIsIGtlZXAgb25seSBhIHNuYXBzaG90IG9mIGl0 Lg0KICAgID4+DQogICAgPiBJIHRyaWVkIGZvciBhIHdoaWxlIHRvIGdldCBzb21lIHNvcnQgb2Yg Ym9vdGxvYWRlci1iYXNlZCByZWNvdmVyeSBwbGFuIGluDQogICAgPiBwbGFjZSBmb3Igb3VyIGNs b3VkLWJhc2VkIHN5c3RlbXMsIGxpa2Ugd2hhdCB3YXMgb3JpZ2luYWxseSBhc2tlZCBmb3IuIFdl DQogICAgPiBhbHJlYWR5IGhhdmUgYSBwcmltYXJ5IGFuZCBhIGJhY2t1cCBwYXJ0aXRpb24gaW4g b3VyIGJvb3QgZGlzaywgYnV0IHRoZXJlDQogICAgPiB3YXMgbm8gd2F5IEkgZm91bmQgaW4gRUMy IHRvIGVhc2lseSBzd2l0Y2ggdGhlIHBhcnRpdGlvbiB0byBib290IGZyb20uIEluDQogICAgPiB0 aGUgZW5kLCBJIGdhdmUgdXAgb24gcGFzc2luZyBpbmZvcm1hdGlvbiB0byB0aGUgYm9vdGxvYWRl ciBhbmQgdXNlZA0KICAgID4gc29tZXRoaW5nIGxpa2UgdGhlIGFib3ZlIHdpdGggbXVsdGlwbGUg aW1hZ2VzLiBJIGFjdHVhbGx5IHdyb3RlIGEgc2NyaXB0IGF0DQogICAgPiBvbmUgcG9pbnQgdXNp bmcgdGhlIGF3cyBDTEkgdGhhdCB5b3UgY291bGQgcnVuIGZyb20gYW55IEZyZWVCU0QgVk0gaW4g dGhlDQogICAgPiBzYW1lIGF2YWlsYWJpbGl0eSB6b25lLiBJdCBkZXRhY2hlZCB0aGUgb3JpZ2lu YWwgYm9vdCB2b2x1bWUgZnJvbSB0aGUNCiAgICA+ICJicm9rZW4iIGluc3RhbmNlOyBhdHRhY2hl ZCBpdCBhcyBhIHNlY29uZGFyeSBkaXNrIHRvIHRoZSByZWNvdmVyeSBpbWFnZSwNCiAgICA+IGNo YW5nZWQgdGhlIGJvb3QgcGFydGl0aW9uLCBkZXRhY2hlZCBpdCBmcm9tIHRoZSByZWNvdmVyeSBp bWFnZSwgdGhlbg0KICAgID4gcmUtYXR0YWNoZWQgaXQgdG8gdGhlIG9yaWdpbmFsIGltYWdlLiBJ dCB0b29rIGEgd2hpbGUgdG8gcnVuLCBidXQgcmVxdWlyZWQNCiAgICA+IGxpdHRsZSB1c2VyIGlu cHV0LiBXZSBraW5kIG9mIGtlcHQgdGhhdCBhcyAiZ29vZCBlbm91Z2giIGZvciB0aGUgcmFyZSBj YXNlDQogICAgPiB0aGF0IGEgaW5zdGFuY2UgYmVjYW1lIHVuLWJvb3RhYmxlIGFuZCB3ZSBjYXJl ZCB0byByZWNvdmVyIGl0IHJhdGhlciB0aGFuDQogICAgPiByZXBsYWNlIGl0LiBJJ20gbm90IHN1 cmUgd2UgYWN0dWFsbHkgZXZlciB1c2VkIGl0IG9uIGEgY3VzdG9tZXIgc3lzdGVtLiBJdA0KICAg ID4gd2FzIHVzZWQgbW9yZSBkdXJpbmcgZGV2ZWxvcG1lbnQgd2hlbiB5b3UgYXJlIG1vcmUgbGlr ZWx5IHRvIGJyZWFrIHN0dWZmDQogICAgPiAoYW5kIHdhbnQgdG8gcmVjb3ZlciBjb3JlZHVtcHMs IGV0Yy4gc28geW91IGNhbiBmaXggdGhlIGJyb2tlbiBjb2RlKS4NCiAgICANCiAgICBUaGFua3Mg Zm9yIHlvdXIgY29tbWVudHMuIEl0IGFwcGVhcnMgdGhhdCB5b3UgaGF2ZSB0aGUgc2FtZSBpc3N1 ZXMgIHRoYXQgd2UgZG8uDQogICAgQW5kcml5IEdhcG9uIGhhcyBiZWVuIGRvaW5nIHNvbWUgc3R1 ZmYgd2hlcmUgbmV4dGJvb3QgaW5mb3JtYXRpb24gaXMgc2F2ZWQgb250byB0aGUgZHJpdmUsDQog ICAgYW5kIGl0IGtub3dzIGhvdyBtdWNoIGl0IGhhcyBiZW9vdGVkIHdoaWNoIG1heSBiZSBnb29k IGVub3VnaCBmb3IgdXMuICBiYXNpY2FsbHkgYSAnZHJvcHMgdG8gcmVjb3ZlcnkgbW9kZSBhZnRl ciBOIGZhaWx1cmVzJyB3b3VsZCBiZSBlbm91Z2ggIGZvciBtZS4NCiAgICANCiAgICBJcyB0aGVy ZSBhbnkgY2hhbmNlIHlvdSBjYW4gbWFrZSB5b3VyICJyZWNvdmVyeSIgc3lzdGVtIGF2YWlsYWJs ZT8NCiAgICAoZXNwZWNpYWxseSBpZiB5b3UgY2FuIGdpdmUgc291cmNlIGZvciB0aGUgYXdzIENM SSBzdHVmZi4uICBJIHRoaW5rICBoYXZpbmcgdGhhdCBhcyBhbiBleGFtcGxlDQogICAgYW5kIHN0 YXJ0aW5nIHBvaW50IG1pZ2h0IGJlIGEgZ29vZCBzdGFydCB0byBtYWtpbmcgc29tZXRoaW5nIHRy dWVseSB1c2VmdWwuDQogICAgSXQgbWF5IGV2ZW4gYmUgd29ydGggYWRkaW5nIGl0IHRvIHRoZSBy ZWd1bGFyIEZyZWVCU0QgQU1JIHNvIHRoYXQgYW55ICBGcmVlQlNEICBFQzIgc3lzdGVtIGNvdWxk IGJlIHVzZWQgdG8gcmVjb3ZlciBvdGhlciBzeXN0ZW1zLg0KICAgIA0KICAgIEluIG91ciBzeXN0 ZW0gdGhlcmUgaXMgYSBzaW5nbGUgenBvb2wgd2l0aCB0d28gWkZTIGRhdGFzZXRzIGFuZCB3ZSB1 c2UgDQogICAgdGhlICJib290ZnMiIHBhcmFtZXRlciB0byBzZWxlY3QgdGhlIG5ldyBpbWFnZSwg YnV0IGl0IGNhbiBiZSANCiAgICBvdmVycmlkZGVuIGZyb20gdGhlIGJvb3QgbWVudSwgZXhjZXB0 IG9mIGNvdXJzZSBvbiBBV1MgZHVlIHRvIHRoZSBsYWNrIA0KICAgIG9mIGNvbnNvbGUuDQogICAg DQogICAgDQogICAgDQogICAgDQogICAgPg0KICAgID4gSWYgeW91IGdvIGRvd24gdGhlIHJvdXRl IG9mIGltcGxlbWVudGluZyBFQzIgbmV0d29yayBkcml2ZXIocykgaW4gdGhlDQogICAgPiBib290 bG9hZGVyLCB0aGVuIHlvdSBjb3VsZCByZWFkIHRoZSBpbnN0YW5jZSBtZXRhZGF0YSB2aWEgaHR0 cCBhbmQgdXNlIGENCiAgICA+IHRhZyB0byBjb250cm9sIHRoZSBib290IGJlaGF2aW9yLiBIb3dl dmVyLCBhIGJvb3Rsb2FkZXIgZHJpdmVyLCBldmVuIGEgdmVyeQ0KICAgID4gc2ltcGxpc3RpYyBv bmUsIGZvciB4bjAgKGFuZCBwb3RlbnRpYWxseSBmb3IgYm90aCBpeHYgYW5kIGVuYSwgaWYgeW91 DQogICAgPiBzdXBwb3J0IEVDMiBFbmhhbmNlZCBOZXR3b3JraW5nKSB3YXMgbW9yZSB3b3JrIHRo YXQgd2Ugd2FudGVkIHRvIHVuZGVydGFrZQ0KICAgID4gZm9yIHRoaXMuDQogICAgPg0KICAgID4g ICAgSmVyZW1pYWggTG90dA0KICAgID4gICAgQXZlcmUgU3lzdGVtcw0KDQoNCgoKCkFtYXpvbiBX ZWIgU2VydmljZXMgVUsgTGltaXRlZC4gUmVnaXN0ZXJlZCBpbiBFbmdsYW5kIGFuZCBXYWxlcyB3 aXRoIHJlZ2lzdHJhdGlvbiBudW1iZXIgMDg2NTA2NjUgYW5kIHdoaWNoIGhhcyBpdHMgcmVnaXN0 ZXJlZCBvZmZpY2UgYXQgNjAgSG9sYm9ybiBWaWFkdWN0LCBMb25kb24gRUMxQSAyRkQsIFVuaXRl ZCBLaW5nZG9tLgo=