Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nUBS5-0004Sg-ME for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Mar 2022 17:59:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nUBS3-0003kM-NO for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Mar 2022 17:59:19 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nUBS3-0003kC-5W for pgsql-hackers@lists.postgresql.org; Tue, 15 Mar 2022 17:59:19 +0000 Received: from mail-dm6nam11on2074.outbound.protection.outlook.com ([40.107.223.74] helo=NAM11-DM6-obe.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nUBRx-0006S0-Ri for pgsql-hackers@lists.postgresql.org; Tue, 15 Mar 2022 17:59:17 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iywBj0GiGIi5T6i8Lcarynzz+RCI/OiNqNS6HTw6uo63n+HjiLQ/hP+u4kd5F7F8hqauIfsiWzbEQRZcylX0fAD3363J/PuFa2ot5lgDP6wbOiON6wCQvrUG+Zte69RPo0w7dhd9SrHO9s/xQHVB6cdx0+KXlpi2WNRn/UqviEiii1AlNBpgDOc7AVxoOWfGoUn3G6ee6tMantqhcEGK5aSxFTiLUvIjOu4T/CkSUCDB3H568puqXjKCIof/Ha2WIHkuUHR+cQyPF/GFJ/pAuxloOXopcRLCC47q8RxYKhfKlTb8qQVLUfxT9gbH0WALycbL+ClBnq0utn0dN6EiKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Gv/2vn7pMK/fS1+08eLje7GTvbg/kVBIyDVlQGZXjtE=; b=U4XTnXKdoLgreeYKM9nsvBOYSgNF7yzTgUOR0N5k/DRSbWb4W7vg7McZxe4uuYx2ss2X5id9f4eYIH0+j2q6wvcIwA1faD5NICsDf0Gz+Hfl2lCzPq31YDSzprvgBivzZkGoQ7IUv9p4qSAmd/ZQmfGryzdP7h4pXMB2s5aMswRq91QVpnlVvnRJZWt0rrWF1JbEpjuCFsJK0RDKnpKod2m4cCflxjye1PoF21MnZCzPWNyk9GUKq6GoxgIhG18ZEOuwUZOg1PCD9OOkQaWic6//r2fd0OCiK9wnKFxk9G0lrEX6DEwd4vhopE2h5GcNk0LL7z65rpzX6j4mp11/Rw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Gv/2vn7pMK/fS1+08eLje7GTvbg/kVBIyDVlQGZXjtE=; b=L40IPWNinubzbEhqzOHOTCfJVQ3LRT7MN0m6f9iMXLJDWsL091umdZyqZi+eqkgnHicke82qNBSTNSYj2K8PwGlQq8ypNC4Pbjuuye6yHfxxxhkipyzxl2bLGrJQv1HXE5ii0UyRfWXsu/TWXV14IoypzH7LnM/ZQ5S9S8OjfWk= Received: from CO1PR05MB8087.namprd05.prod.outlook.com (2603:10b6:303:db::16) by BYAPR05MB5461.namprd05.prod.outlook.com (2603:10b6:a03:18::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.13; Tue, 15 Mar 2022 17:59:08 +0000 Received: from CO1PR05MB8087.namprd05.prod.outlook.com ([fe80::99ba:779e:d4bd:a6c0]) by CO1PR05MB8087.namprd05.prod.outlook.com ([fe80::99ba:779e:d4bd:a6c0%7]) with mapi id 15.20.5081.014; Tue, 15 Mar 2022 17:59:08 +0000 From: Jacob Champion To: "sfrost@snowman.net" CC: "pgsql-hackers@lists.postgresql.org" , "magnus@hagander.net" , "peter.eisentraut@enterprisedb.com" , "tgl@sss.pgh.pa.us" Subject: Re: Kerberos delegation support in libpq and postgres_fdw Thread-Topic: Kerberos delegation support in libpq and postgres_fdw Thread-Index: AQHXfQ9i+KtS/jXIPEOlhY8ux1+qkqtOryOfgEB1fACBG/ingIARL4OAgAAMe4CABdlXgA== Date: Tue, 15 Mar 2022 17:59:08 +0000 Message-ID: References: <19afb899-318d-c61f-2de4-0e7dcbf5e0fd@enterprisedb.com> <20220301012847.GQ10577@tamriel.snowman.net> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.36.5-0ubuntu1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=vmware.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bf9d775b-b091-46a2-57d0-08da06ad80f0 x-ms-traffictypediagnostic: BYAPR05MB5461:EE_ x-ms-exchange-atpmessageproperties: SA|SL x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: jdRBtNOQ4tIsEfrdTzTefJhq4lVP4lh+3ZznIuwZwfD8oNV5kvQgmYNvylusRJ9r3Hf++h975ifsVvPKclGGwwHkdeCqQJwn2OqGYRLpsc8QdVbbDl1eRTgjJXhsdrEo7byGHeAWzFKg6XIuDFTRIjFj3AYP9BfKU4OZ6WKTpZ8q9zIlm7jjD84cUt57WqEickmXyw7Lrmu77pVu0oLwodarcoQY4OStpsYd34T9TuulfpSNByWIe0cGY+KLN3x1teicvOI2JRbQN1FTV74j363gy5L5ZrjsHDScaKX0Xkufm5KewBj9mlxVxx02abMR2aU7GppZQrjCD6e5TqU7IOl8RpxMuKXQZ0FXbkS47ST25/wk/Rigp/UV2YIsa1g1xLjnQoLOWgRNWZpPUJvmFJAFjJJbtnVAVEsvCHRmlv0x6wCf62e0O4DnXzq0rlLfSBvMg1YPwTZAgjUkFcUG2AwVTCu7Pqw4adFsqVcfGUAPTsWEj0I4wMsmqVyHY2MQarfiufNOqc5j6kvgwjNCPyC2WpcQ9dUGuBOzA9xBPduYrFUVoEVb5rZZkMH9Uh8p2cRa2gPZ8G6ewT8NWHX9smjRC6D6KaGcLZ3+9+T1RgB09UaZUKyssdLNuvgYnwnnmTjornG6GPcNWGUn2pfB8YWIh8PTXsFELqmVWw+a4mMZAEIarcdSds9YqSCkf5TWml6L1Hk+8Q1obpOvk5zMO8fSo2bC8xR4rWVFwvodi6D36j+0oIzjyjsb/e0W07lo x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR05MB8087.namprd05.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(38100700002)(83380400001)(122000001)(6916009)(86362001)(38070700005)(6512007)(6506007)(53546011)(5660300002)(2616005)(186003)(6486002)(508600001)(54906003)(71200400001)(2906002)(316002)(8936002)(66946007)(4326008)(64756008)(66476007)(66556008)(8676002)(66446008)(76116006)(36756003)(26005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Z2Vob2R4L2RibERmekc3RUU0bVQ2SmNXTW9LVU9oOHc4cVhvUmxpMXJGdmNu?= =?utf-8?B?ZkxGczFGVzExN29kMDF4VUc5RkNTM1hiMHh5UUNMWGVYK2x6RjA0WERwUWk2?= =?utf-8?B?NWxPd0gzRVkvWkU0SU1HUjZ5aFBtZXdZaDdqTjlIbUpDMGRRdXIzR3paSjRQ?= =?utf-8?B?TlFrMUl2TDB2Nzl5dVlmZVJaTGErdVZxdkI0VGliTmhaZzNadlBkRUxHanQy?= =?utf-8?B?cHNHaEpPVVhnS29IVk1ZMDdlcWNBTTd5cm02VWxCVDdQWGhMMklkRk1QMzd2?= =?utf-8?B?S3B3QkxoSHBZRW9zc0x4b1ltN1liSUtva2Z3SWJiN09wcWNkRU51akNQaDZP?= =?utf-8?B?VEhseEpRem9ZT1E2WS9Lc1FGWFY3UDFmeHJqZ3UvYUJaWUZSZDdOV080b0NN?= =?utf-8?B?TlVGRTh1WElRMlRwQkhjWUZwMURSNWFWRzRuUjhkTHNjSDBZMEJVSTh3MUZn?= =?utf-8?B?enhWVjZzOUZ2TlYyYnNQNGdxWXg1dHZRU3IyY0pZb1JWUElIN0g5RmNmZDU3?= =?utf-8?B?Q1ZLY3QwZlNoekhjbm5zV3NuMDYzODd0UVZUUEZMYlVUSkxpakYrVEpaTy9w?= =?utf-8?B?N1JpUW9OdzJEUktWQUgvVmVOSitOWkF5ZEVLa0JUYUgvNnhwWkRxNjZqVGcx?= =?utf-8?B?eVE2a1JoTGdTbFIvOVJ0cjQ1bzlURDl2VHZjekgxb0s0SmpwNnd0ZXNnYmEx?= =?utf-8?B?ZVpCK01NeFIvcFhvdHJzQ01EMXI0Z1FiMHhkS1NLYm1ubFNpMW9tajhGeWRQ?= =?utf-8?B?RGlxbWJQRjhPd2o4LzJxQXhyT2dLc1dPUFVpeFk3dHYrdW13RGNsN0g4MXdK?= =?utf-8?B?bGNyOFVWSGk5MXg4OE1meVVsM25seWM4bzNGNnkvbEdRVlRsVFFvK2xVaW9t?= =?utf-8?B?ZUIzQlBjeFdha2lQYjZ0enNnTVNWanRPMTBNTmdXakR1dXdDWjl5MnRwWmsy?= =?utf-8?B?Y2duTlBHWmh0eTFhWVRicWd4SUtscWJBZCtPTDQwMWc3eWc0cm5tRzZsMUdR?= =?utf-8?B?VkRybE12dzJDb0RCcHhJQSsyQTlBeVdsR3ZUT0JFWVBOTkZIT0d6NUNHSnc5?= =?utf-8?B?cTdlWWlFbENhV0NzVmgrVDVuNHQwSjZrN2ZpU3pxWFJKODVnUmNMUkM0R29a?= =?utf-8?B?L2dCZ0hxSEt1ZmUxcUZNVWtnSDhYL1V2YTlEYTRxaXNrVTRDaDJ5QWswblR0?= =?utf-8?B?N1gyY0dMSkRuQlRMTUFscVJHSi9mT2NHUEtOakJxVlFZVSsvTHQzbmtLRC83?= =?utf-8?B?S1MzVzhKTDNZZ0MrdnJDWHVoN25CSlVHcGZldkhEdjRDNzJnbTJPUmpyMG10?= =?utf-8?B?cFVJWTc1akNnYmRQRWhrZDZTK0lpeTNKZ0J2bUZsOUl1U2FIU1EwZHZvYWVL?= =?utf-8?B?amdRR2gwODk1SFZ4anlBa1YvM3I3S2UwZE5RTDFTd2tKVkV1ckJXMjZIWnBN?= =?utf-8?B?QUZ1MmVTWTBtbEIreUVJZnJXUXZ1VmlKTWdKV2FobXRLWGd2c3NhRnlBUnph?= =?utf-8?B?T3RFb3FjSVZIWUhudUhueWxhbG04N1Q5RUFqaDN0dTV2VVprbkRBMWpUdlp0?= =?utf-8?B?d255Z0kwajBYYWFaT21OK3dDUjNHU09OQWFrSURaYWlZYUIrcFh2K3VCVzFN?= =?utf-8?B?azFLQnIrczlPYW5hcWtUS2phaDNraXpjVVpBekV4NEZMT0d6YjBUN2hBM3l6?= =?utf-8?B?b1l6SDByeEhaNWlSMC9FQ0JpS2JTQzB0U3AwcWVwK3M3a2VDMm54UUdoWlhR?= =?utf-8?B?UzlhRVdraGFlRStQTXFvUmlUVTlKMFlhMXdMMzg3U2M0OXNuQzcyV3o4TEwy?= =?utf-8?B?L1hSVjhKcnBCMXQ5YmdJMU02UlRVZ3dQUWh0V1pNOTdHZkJXcVZkQ3VuUmJl?= =?utf-8?B?OXB5VTQyZ2JDRmdxZGdLRmcydHFVRUVmTjhWYis5SEkzRG5Ya0JoVG83NWxE?= =?utf-8?B?d01hNnVqa05LQXp4VUd3RkhTczlDS0VsTmQvVkFrTTQ2TU5wQzhPV0w2MVRO?= =?utf-8?B?cTZScGtKakpBPT0=?= Content-Type: text/plain; charset="utf-8" Content-ID: <25D3BFA41CF9854C8A3E2ABE36D0FCD7@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR05MB8087.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bf9d775b-b091-46a2-57d0-08da06ad80f0 X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Mar 2022 17:59:08.7909 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: //xxM2uKd45a6LzQfXtZ7enRnuQaOaq+GNYJ4Uh2fYYNXbivE3pG4om8LGPgi5ruelcXwLKrORCOPuiafnJixw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR05MB5461 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk T24gRnJpLCAyMDIyLTAzLTExIGF0IDE5OjM5IC0wNTAwLCBTdGVwaGVuIEZyb3N0IHdyb3RlOg0K PiANCj4gT24gRnJpLCBNYXIgMTEsIDIwMjIgYXQgMTg6NTUgSmFjb2IgQ2hhbXBpb24gPHBjaGFt cGlvbkB2bXdhcmUuY29tPiB3cm90ZToNCj4gPiANCj4gPiBbNV0gc2F5cyB3ZSBoYXZlIHRvIGZy ZWUgdGhlIHByb3h5IGNyZWRlbnRpYWwgd2l0aCBHU1NfUmVsZWFzZV9jcmVkKCk7DQo+ID4gSSBk b24ndCBzZWUgdGhhdCBoYXBwZW5pbmcgYW55d2hlcmUsIGJ1dCBJIG1heSBoYXZlIG1pc3NlZCBp dC4NCj4gDQo+IEnigJltIG5vdCBzdXJlIHRoYXQgaXTigJlzIHJlYWxseSBuZWNlc3Nhcnkgb3Ig d29ydGh3aGlsZSB0byBkbyB0aGF0IGF0DQo+IHByb2Nlc3MgZW5kIHNpbmNlIOKApiB0aGUgcHJv Y2VzcyBpcyBhYm91dCB0byBlbmQuIEkgc3VwcG9zZSB3ZSBjb3VsZA0KPiBwcm92aWRlIGEgZnVu Y3Rpb24gdGhhdCBhIHVzZXIgY291bGQgY2FsbCB0byBhc2sgZm9yIGl0IHRvIGJlDQo+IHJlbGVh c2VkIHNvb25lciBpZiB3ZSByZWFsbHkgd2FudGVkLi4/DQoNCkRvIHdlIGhhdmUgdG8ga2VlcCB0 aGUgY3JlZGVudGlhbCBoYW5kbGUgYXJvdW5kIG9uY2Ugd2UndmUgc3RvcmVkIGl0DQppbnRvIHRo ZSBNRU1PUlk6IGNhY2hlLCB0aG91Z2g/IEp1c3Qgc2VlbXMgbGlrZSBhIGxlYWsgdGhhdCBzb21l b25lDQp3aWxsIGhhdmUgdG8gcGx1ZyBldmVudHVhbGx5LCBldmVuIGlmIGl0IGRvZXNuJ3QgcmVh bGx5IGltcGFjdCB0aGluZ3MNCm5vdy4NCg0KPiA+IEl0IHNlZW1zIGxpa2UgdGhlcmUgc2hvdWxk IGJlIHNpZ25pZmljYW50IHNlY3VyaXR5IGltcGxpY2F0aW9ucyB0bw0KPiA+IGFsbG93aW5nIGRl bGVnYXRpb24gYWNyb3NzIHRoZSBib2FyZC4gRXNwZWNpYWxseSBzaW5jZSBvbmUgcG9zdGdyZXNf ZmR3DQo+ID4gbWlnaHQgZGVsZWdhdGUgdG8gYW5vdGhlciBzZXJ2ZXIsIGFuZCB0aGVuIGFub3Ro ZXIuLi4gU2hvdWxkIHRoaXMgYmUNCj4gPiBvcHQtaW4sIG1heWJlIHZpYSBhIGNvbm5lY3Rpb24g cGFyYW1ldGVyPw0KPiANCj4gVGhpcyBpcyBhbHJlYWR5IG9wdC1pbi0gYXQga2luaXQgdGltZSBh IHVzZXIgY2FuIGRlY2lkZSBpZiB0aGV54oCZZA0KPiBsaWtlIGEgcHJveHktYWJsZSB0aWNrZXQg b3Igbm90LiAgSSBkb27igJl0IGtub3cgdGhhdCB3ZSByZWFsbHkgbmVlZCB0bw0KPiBoYXZlIG91 ciBvd24gb3B0aW9uIGZvciBpdCDigKYgdGhvIEnigJltIG5vdCByZWFsbHkgYWdhaW5zdCBhZGRp bmcgc3VjaA0KPiBhbiBvcHRpb24gZWl0aGVyLg0KDQpJIGRvbid0IHJlYWxseSBoYXZlIGV4cGVy aWVuY2Ugd2l0aCB0aGUgdXNlIGNhc2UuIElzIGl0IG5vcm1hbCBmb3INCmtpbml0IHVzZXJzIHRv IGhhdmUgdG8gZGVjaWRlIG9uY2UsIGdsb2JhbGx5LCB3aGV0aGVyIHRoZXkgd2FudA0KZXZlcnl0 aGluZyB0aGV5IGludGVyYWN0IHdpdGggdG8gYmUgYWJsZSB0byBwcm94eSB0aGVpciBjcmVkZW50 aWFscz8gSXQNCmp1c3Qgc2VlbXMgbGlrZSB5b3UnZCB3YW50IG1vcmUgZmluZS1ncmFpbmVkIGNv bnRyb2wgb3ZlciB3aG8gZ2V0cyB0bw0KbWFzcXVlcmFkZSBhcyB5b3UuDQoNCj4gPiBTaW1pbGFy bHksIGl0IGZlZWxzIGEgbGl0dGxlIHN0cmFuZ2UgdGhhdCB0aGUgc2VydmVyIHdvdWxkIGFsbG93 IHRoZQ0KPiA+IGNsaWVudCB0byB1bmlsYXRlcmFsbHkgZm9yY2UgdGhlIHVzZSBvZiBhIGRlbGVn YXRlZCBjcmVkZW50aWFsLiBJIHRoaW5rDQo+ID4gdGhhdCBzaG91bGQgYmUgb3B0LWluIG9uIHRo ZSBzZXJ2ZXIgc2lkZSB0b28sIHVubGVzcyB0aGVyZSdzIHNvbWUNCj4gPiBjb250ZXh0IEknbSBt aXNzaW5nIGFyb3VuZCB3aHkgdGhhdCdzIHNhZmUuDQo+IA0KPiBQZXJoYXBzIHlvdSBjb3VsZCBl eHBsYWluIHdoYXQgaXNu4oCZdCBzYWZlIGFib3V0IGFjY2VwdGluZyBhIGRlbGVnYXRlZA0KPiBj cmVkZW50aWFsIGZyb20gYSBjbGllbnQuLj8gIEkgYW0gbm90IGF3YXkgb2YgYSByaXNrIHRvIGFj Y2VwdGluZw0KPiBzdWNoIGEgZGVsZWdhdGVkIGNyZWRlbnRpYWwuDQoNCk15IGluaXRpYWwgaW1w cmVzc2lvbiBpcyB0aGF0IHRoaXMgaXMgZWZmZWN0aXZlbHkgbW9kaWZ5aW5nIHRoZSBVU0VSDQpN QVBQSU5HIHRoYXQgdGhlIGFkbWluIGhhcyBzZXQgdXAuIEknZCBiZSB3b3JyaWVkIGFib3V0IGFu IG9wZW4NCmNyZWRlbnRpYWwgcHJveHkgYmVpbmcgdXNlZCB0byBieXBhc3MgZmlyZXdhbGwgb3Ig SEJBIHJlc3RyaWN0aW9ucywgZm9yDQppbnN0YW5jZSAtLSB5b3UgbWlnaHQgbm90IGJlIGFibGUg dG8gY29ubmVjdCBhcyBhbiBhZG1pbiBmcm9tIHlvdXINCm1hY2hpbmUsIGJ1dCB5b3UgbWlnaHQg YmUgYWJsZSB0byBjb25uZWN0IGJ5IGJvdW5jaW5nIHRocm91Z2ggYSBwcm94eS4NCihXaGF0IGRh bWFnZSB5b3UgY2FuIGRvIGlzIGdvaW5nIHRvIGJlIGxpbWl0ZWQgYnkgd2hhdCB0aGUgc2VydmVy DQpleHRlbnNpb25zIGNhbiBkbywgb2YgY291cnNlLikNCg0KQW5vdGhlciBkYW5nZXIgbWlnaHQg YmUgZGlzY2xvc3VyZS9jb21wcm9taXNlIG9mIG1pZGRsZWJveCBzZWNyZXRzPyBJcw0KaXQgcG9z c2libGUgZm9yIHNvbWVvbmUgd2hvIGhhcyBvbmUgaGFsZiBvZiB0aGUgY3JlZGVudGlhbHMgdG8g c25vb3Agb24NCmEgZ3NzZW5jIGNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgcHJveHkgUG9zdGdyZXMg YW5kIHRoZSBiYWNrZW5kDQpQb3N0Z3Jlcz8NCg0KPiBFdmVuIHNvLCBJ4oCZbSBub3QgYWdhaW5z dCBhZGRpbmcgYW4gb3B0aW9u4oCmIGJ1dCBleGFjdGx5IGhvdyB3b3VsZCB0aGF0DQo+IG9wdGlv biBiZSBjb25maWd1cmVkPyAgU2VydmVyIGxldmVsPyAgT24gdGhlIEhCQSBsaW5lPyAgcm9sZSBs ZXZlbC4uPw0KDQpJbiB0aGUgT1BUSU9OUyBmb3IgQ1JFQVRFIFNFUlZFUiwgbWF5YmU/IEF0IGxl YXN0IGZvciB0aGUgRkRXIGNhc2UuDQoNCj4gPiBJZiBJJ20gcmVhZGluZyBpdCByaWdodCwgd2Un cmUgcmVzZXR0aW5nIHRoZSBkZWZhdWx0IGNyZWRlbnRpYWwgaW4gdGhlDQo+ID4gTUVNT1JZIGNh Y2hlLCBzbyBpZiB5b3UncmUgYSBsaWJwcSBjbGllbnQgZG9pbmcgeW91ciBvd24gR1NTQVBJIHdv cmssDQo+ID4gSSdtIGd1ZXNzaW5nIHlvdSBtaWdodCBub3QgYmUgaGFwcHkgd2l0aCB0aGlzIGJl aGF2aW9yLg0KPiANCj4gVGhpcyBpcyBqdXN0IGRvbmUgb24gdGhlIHNlcnZlciBzaWRlIGFuZCBu b3QgdGhlIGNsaWVudCBzaWRlLi4/DQoNClllYWgsIEkgbWlzcmVhZCB0aGUgcGF0Y2gsIHNvcnJ5 Lg0KDQo+ID4gQWxzbywgd2UncmUNCj4gPiBnbG9iYWxseSBpZ25vcmluZyB3aGF0ZXZlciBjY2Fj aGUgd2FzIHNldCBieSBhbiBhZG1pbmlzdHJhdG9yLiBDYW4ndA0KPiA+IHR3byBwb3N0Z3Jlc19m ZHcgY29ubmVjdGlvbnMgZnJvbSB0aGUgc2FtZSBiYWNrZW5kIHByb2Nlc3MgcmVxdWlyZQ0KPiA+ IGRpZmZlcmVudCBzZXR0aW5ncz8NCj4gDQo+IFNldHRpbmdzLi4/IFBlcmhhcHMsIGJ1dCBkZWxl Z2F0ZWQgY3JlZGVudGlhbHMgYXJlbuKAmXQgcmVhbGx5IA0KPiBzZXR0aW5ncywgc28gbm90IHJl YWxseSBzdXJlIHdoYXQgeW914oCZcmUgc3VnZ2VzdGluZyBoZXJlLg0KDQpJIG1lYW4gdGhhdCBv bmUgYmFja2VuZCBzZXJ2ZXIgbWlnaHQgcmVxdWlyZSBkZWxlZ2F0ZWQgY3JlZGVudGlhbHMsIGFu ZA0KYW5vdGhlciBtaWdodCByZXF1aXJlIHdoYXRldmVyIHRoZSBhZG1pbiBoYXMgYWxyZWFkeSBz ZXQgdXAgaW4gdGhlDQpjY2FjaGUsIGFuZCB0aGUgdXNlciBtaWdodCB3YW50IHRvIHVzZSB0YWJs ZXMgZnJvbSBib3RoIHNlcnZlcnMgaW4gdGhlDQpzYW1lIHNlc3Npb24uDQoNCj4gPiBJIG5vdGlj ZSB0aGF0IGdzc19zdG9yZV9jcmVkX2ludG8oKSBoYXMgYSBjb21wYW5pb24sDQo+ID4gZ3NzX2Fj cXVpcmVfY3JlZF9mcm9tKCkuIElzIGl0IHBvc3NpYmxlIHRvIHVzZSB0aGF0IHRvIHB1bGwgb3V0 IG91cg0KPiA+IGRlbGVnYXRlZCBjcmVkZW50aWFsIGV4cGxpY2l0bHkgYnkgbmFtZSwgaW5zdGVh ZCBvZiBzdG9tcGluZyBvbiB0aGUNCj4gPiBnbG9iYWwgc2V0dXA/DQo+IA0KPiBOb3QgcmVhbGx5 IHN1cmUgd2hhdCBpcyBtZWFudCBoZXJlIGJ5IGdsb2JhbCBzZXR1cC4uPyAgRmVlbGluZyBsaWtl DQo+IHRoaXMgaXMgYSBmb2xsb3cgb24gY29uZnVzaW9uIGZyb20gbWF5YmUgbWl4aW5nIHNlcnZl ciB2cyBjbGllbnQNCj4gbGlicHE/DQoNCkJ5IG15IHJlYWRpbmcsIHRoZSBnc3Nfc3RvcmVfY3Jl ZF9pbnRvKCkgY2FsbCBmb2xsb3dlZCBieQ0KdGhlIHNldGVudigiS1JCNUNDTkFNRSIsIC4uLikg aXMgZWZmZWN0aXZlbHkgcGVyZm9ybWluZyBnbG9iYWwNCmNvbmZpZ3VyYXRpb24gZm9yIHRoZSBw cm9jZXNzLiBBbnkgS1JCNUNDTkFNRSBhbHJlYWR5IHNldCB1cCBieSB0aGUNCnNlcnZlciBhZG1p biBpcyBnb2luZyB0byBiZSBpZ25vcmVkIGZyb20gdGhhdCBwb2ludCBvbndhcmQuIElzIHRoYXQN CmFjY3VyYXRlPw0KDQpUaGFua3MsDQotLUphY29iDQo=