From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4DF76C433F5 for ; Thu, 3 Mar 2022 14:49:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229893AbiCCOtr (ORCPT ); Thu, 3 Mar 2022 09:49:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47606 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233929AbiCCOtp (ORCPT ); Thu, 3 Mar 2022 09:49:45 -0500 Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2055.outbound.protection.outlook.com [40.107.21.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3E24B18E431 for ; Thu, 3 Mar 2022 06:48:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Kbm4vl8Xv+vswfzulFvmwPM3nKnGi56ycl4BvnFjWkkGVbcaen3QeOS4CJPLNUWaEtxxb3OljJykoYiTo+Ly+UWc3BOMWOJo8MsCZbzmzTuawFq9iV3prBHFFBW5bSmw9Lbsd9dmgOpcwxKeF5nmMH3qfnNXh3pNFjqiDj68/v6xwdg+U4wd0SyjQhJ7OgF98Vq01LNT60fMxTByc+GXvLqOnLBHApDYgDeL7JdfNMCcU3+RepZpsYyWgqfDbPF2kGxrUwa4BCsYtgFC6BajFLtn6QrojdkZImxj746pV3H5cBpr7ft/4ifhbmO/tQDEcXWUyGQyTboFNEOXw1X3GA== 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=THDPPFyGmu1A7CizriA06YeQEqc6vzxICbOGqC2r4Y0=; b=ei2BRPiCmIkmOg5bzNE3LGI6WpR5Sl23Q5msjf7Ichgv5QFu7wL7wRZA7DcozPz2YZakGzWXkrUxrE3UPuzyfOEVtKJ0TooHwZHAQW9gkvzQATyOBTBvalD4CxEnwWfwouE1XliSYT/Cl0rrC20JgVEWWx+CBYgmfaRK46lsHV47sBLxGUifW72Qafa+9V2COO1Bv1W1PqpwG9M7Df04dajt5UgTFlptMtguE0XS6moEUvcgIM4Ee+i3kpxSYt6/7ZYmmCU5u1fNow+1kTQePTkktxmkmty07xO8K3lK9ZlxmGxkqEaz1kmZxMQZ09mAd3DDIB5AiaAaOk+RTUGGZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=THDPPFyGmu1A7CizriA06YeQEqc6vzxICbOGqC2r4Y0=; b=mCVmB+emG6e580C+wDK5RRT51M2+wRZLITIiwaNS2TP/cbqSFubgVuOo08jq7ns2kD6hlekNR3POKXsKYZxJrTQAq59zU1QFN1n1vk5KiY94QnufCTaD6Jk+zmKvTkghCrd1jtOM64evLiLLMp93+ZOhTWj2aAjjw7ba2G7dZI4= Received: from VI1PR04MB5136.eurprd04.prod.outlook.com (2603:10a6:803:55::19) by VI1PR04MB5422.eurprd04.prod.outlook.com (2603:10a6:803:cd::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.14; Thu, 3 Mar 2022 14:48:56 +0000 Received: from VI1PR04MB5136.eurprd04.prod.outlook.com ([fe80::ac0c:d5d:aaa9:36]) by VI1PR04MB5136.eurprd04.prod.outlook.com ([fe80::ac0c:d5d:aaa9:36%4]) with mapi id 15.20.5017.027; Thu, 3 Mar 2022 14:48:56 +0000 From: Vladimir Oltean To: =?utf-8?B?QWx2aW4gxaBpcHJhZ2E=?= CC: "netdev@vger.kernel.org" , Jakub Kicinski , "David S. Miller" , Florian Fainelli , Andrew Lunn , Vivien Didelot , Vladimir Oltean , Ido Schimmel , Tobias Waldekranz , Claudiu Manoil , Alexandre Belloni , "UNGLinuxDriver@microchip.com" Subject: Re: [PATCH net-next 00/10] DSA unicast filtering Thread-Topic: [PATCH net-next 00/10] DSA unicast filtering Thread-Index: AQHYLmnKbqJ8uFqvo0eudldhc5/zKaytuwiAgAADwYA= Date: Thu, 3 Mar 2022 14:48:56 +0000 Message-ID: <20220303144855.higb3pasm63yljey@skbuf> References: <20220302191417.1288145-1-vladimir.oltean@nxp.com> <87wnhbdyee.fsf@bang-olufsen.dk> <20220303131820.4qzrcrdtx7tlhaei@skbuf> <87h78fdsnn.fsf@bang-olufsen.dk> <20220303143529.jitz7x2d2ehp7jlh@skbuf> In-Reply-To: <20220303143529.jitz7x2d2ehp7jlh@skbuf> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4c9a307d-f94d-4c03-7777-08d9fd24f19c x-ms-traffictypediagnostic: VI1PR04MB5422:EE_ 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: TigI2ziC5c34bVpemnGhpd20yjG8MeIESXgUWOiiBwU5HvPO04D9wPu9aFuUpQwlNFUJfwRQ7TGAOvsNOJqq4jsjCzwtD3P02wFVcnSO43xicigY4pauoOerfZeoX/HrSp+JS2+9METgqHEupzHv7RP+6FcTnGp2wFpnKToxqj0YUAv6V+s5iIP982TxebuS88GzBNRzMCxnG1miVy0qsdzJOw17hSHfBjvbtZtFlXljQlxGnDYhwpAWoJqlOmi/CJzYuwzbDfNgyjEOSrgaaDabMjx0JGDhzacwzThwhA3C/5HED6Uc+y4AHFtFklUZOQt2Z7GhOZRFgIGLRLFF+re6fvFbbDauWrJ8UhafJ3GQ3zapMuWEYh8TkYLj+rhJfZYYHXxY2Muaf1N3jg4NOb3Ge8DoF3DRDLy+ssyFZlrFH9yQc1SXmkcgzmez66PY62Xj3PpjCmYTJcElJju8s0ou0ZLn0w3ViAa5+GMkUHe20nW7/oJ0xn/6IzenCQEuMauYwySntyDu5moPpgdPKJVEup0f2hZP4lNNJdS1YV8LH9k8QGH03+o/pCGUE0sPYEBQBYN/ogSMRhZXx/Cu8VMXTW5aWkJnGcV/nhPb0Ui55QYrarkEsUInbmXXlTNnBbljvtkwcG/kxe863QSKjbFP5DN0SaPH8ZjpAhHOXfNOTZmKK/EB9paI2Pr8QUa/1cQsr7+EXRQw7WeLnoFwFQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB5136.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(7916004)(4636009)(366004)(122000001)(4326008)(316002)(6916009)(8676002)(64756008)(76116006)(66946007)(66476007)(71200400001)(66446008)(6512007)(6506007)(9686003)(26005)(83380400001)(1076003)(186003)(2906002)(66556008)(508600001)(66574015)(6486002)(54906003)(33716001)(5660300002)(38100700002)(38070700005)(8936002)(7416002)(86362001)(44832011);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NmJ4SExpOXpQVTBQYkdUQlhRQUVPeE1YcU0xTnVVZ0pBT2k5UFhiTWZob1Ri?= =?utf-8?B?YlhIRlRwRzlxQVpUUUZpOWZhcndrZGlSdTY0cmhFZ2Q5dG9uMHEvOGdLSnoy?= =?utf-8?B?aGZMcU9ydTRnUDdubXRScGx4T1RodmpKdHp3RjRnb0tvSlRyYUpZdUVJTENO?= =?utf-8?B?QnBkWGkyaWltUCt5RkxqekpxTkVDbTFSSUVvZjhhWVZFTk5NY1FXaWk2bnBs?= =?utf-8?B?eU5MWXptZEc4NTBreTN5MWEzL3VsSHgzeTFQK0ZDZUdwT2o2TGF5dGNaSjZE?= =?utf-8?B?TnByWlE0Z1BlZklaekU1Nmp3U0cxZndYRERDc2oyM2VtMjRWZEtKM3RZVnpY?= =?utf-8?B?MVFaTWJTdUNzeWJwRkljc2JDQWZOSU81dy9aeVNRVWJVSDZTd0dGV2lYTVN0?= =?utf-8?B?WERkT0hhU0R4VHdNSFhkTm1mVDN6ZXBQNW13NmpTSXJqQ2xjQmlKd2dRaUxh?= =?utf-8?B?MEk5VExmVWY3QUI2eWVraVdMdWFYU0VxSVNQZGJnQW0vdmJ4MWRyWEE4RGVq?= =?utf-8?B?NDZaUXBybHkrdDFudG05VGlFV0FQbWROeG9mR3hsN0xYZGYzWmhkNkV0bm83?= =?utf-8?B?cGhaSVY5UTdOZ1lQektzTjg5UG5nZG1YT3BzcW9takZaRzMrVUIwck1ham8z?= =?utf-8?B?eTFuZ0plNkEzUzd5SmxkRnEvQzdvQmg2VGpUY1dMYWlYVThNZzRNbTFlUFpm?= =?utf-8?B?Z2U5Uk9iY0hqa2JYYVRVaTFObG5HNEx3NGgwQ2RpSm1jaFY0OHFNMEhLY3VQ?= =?utf-8?B?b2g4V2Znd2hHZFRMNjdaZEZIRmpjOEdqZzhOc2J2WnBFSGxqSXZlaGI3QUtU?= =?utf-8?B?MzQxYnRlUjFUdnBSV2tMMklNUmhMdDhWWG1kOTgyVG94NkphdkJhQ1p5MFIz?= =?utf-8?B?ek52Q3hXUFVXcU5USWgyMktxSWhXc2NZNzA1NVlUVmFZQlFqbUthRVU5b2tQ?= =?utf-8?B?WmJkSmVFN1Y0dHBrS2llNzdLRFN6Z3ZkMkVvYzZMM3d2aW8xRkpJTVZIYStm?= =?utf-8?B?Zm5qQjlscGF1TkpYWXZuSzFEUHoxdUg5TDJjVm51RldxVmpBU0x2RUhwVzlE?= =?utf-8?B?a2s2UUZXdWxEVG13Z1FrTUx1L3dndFkxQ204MG1tUTRYN2FlM2E5eEFFbHF1?= =?utf-8?B?RTJRdklUenZuenhOMUJLd1R0dVFNLzRvZG1veVJtMFJGUVR1L3piY2tPY0s5?= =?utf-8?B?REN5Smg2eDJ2aFk4VmJDbFhEekx1WXdzUDgvTFArTjJwWWwybC9oWStpeGpo?= =?utf-8?B?SEE5RWJ2aE90Sld3QXZUYW1tZjdTcjQzajB4eThNYWtvVlZSUlpwaENoMUdE?= =?utf-8?B?WG5wc1VnMkZOclc3TE85cTg0WTlGNVZkSlc5M3ppdTNUa3FrV0RCdkZYSlJF?= =?utf-8?B?czNWU0xUdU1JWUJJSXBwZWNCNWphUEx2TGxxZmdKb3dudEl5OGZTbE5xWC8y?= =?utf-8?B?MXV2bjB6Q0c0Wjh0cnlnU0M5dlh3Qjh2SHAvSWp3ZW1aWEZXMm5NK1dKTFNt?= =?utf-8?B?ODVWelljam1hRjBENFhORGZLalYzelhpdGNOUDFMVEVKbXNrR2c5eGhmNXpj?= =?utf-8?B?VGtsekZyYXVCeGtmcjNMWW5BTnJRcC9zcVBpREYxdWhyMUNoYnBWcjJGcTFW?= =?utf-8?B?WlpQaHJCQ2VDWXA1bE16R1FLQkZZbmVsaDRRcWdhZ3dMVmVtUCs4Z2k2aHRK?= =?utf-8?B?OXF4UjhLRndYZTRReUpNaDZKdmlMVWh0bElhZU1Ydi9PMHlXM2FNRDZTa2pp?= =?utf-8?B?TVdxSjB2ZldqWnROd3pnUFR5Qk80Q1BUeFRGK0tyRjhIZTdZWHBzRUVtaisv?= =?utf-8?B?QVpUbi9mTXlKOTh5cUFKcmpTYWljNVlDNlI1UU5NTjdHQTBvYXFBcjN4UVBo?= =?utf-8?B?OVY4V0RxbGNXMytTZHRIZk5DK1p2OGEzcGVQa2MvMmthZWVCOFBQbmpibys5?= =?utf-8?B?SnhHK2lzYkQ0WUpJbGgwdGYvc0Q1WERsei9RNyt5NVlra3g1dnF3TSsrbWNh?= =?utf-8?B?YTE4VS9uMEk0aG9NL2lqTnVtbFhzYnlRVjN2L280dkxIQjlDbW5ES0s0OHRx?= =?utf-8?B?S09xeVVrS2Q3Ums4K1hNZVJHUjc5QWgyejRtRHMyOTBJdFliOXlvUEdRaEht?= =?utf-8?B?N2UvUGQ1TVFyY2tTVmpjTFFjNUhWb25FbTdjNmc5dXVXazNudm0wT3ZISzlE?= =?utf-8?Q?v8d+bwFC2egQeK93CdTHJkg=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5136.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4c9a307d-f94d-4c03-7777-08d9fd24f19c X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Mar 2022 14:48:56.0724 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: YoFqtNXRtEuRdQTbsxxbLlPmCBTJLGib2oBBqgCaIwe2R7OrIo1W6CTHpuf1TAkhMGvucMomneE04orzFEyxFA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5422 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org T24gVGh1LCBNYXIgMDMsIDIwMjIgYXQgMDQ6MzU6MjlQTSArMDIwMCwgVmxhZGltaXIgT2x0ZWFu IHdyb3RlOg0KPiBPbiBUaHUsIE1hciAwMywgMjAyMiBhdCAwMjoyMDoyOVBNICswMDAwLCBBbHZp biDFoGlwcmFnYSB3cm90ZToNCj4gPiBWbGFkaW1pciBPbHRlYW4gPHZsYWRpbWlyLm9sdGVhbkBu eHAuY29tPiB3cml0ZXM6DQo+ID4gDQo+ID4gPiBIaSBBbHZpbiwNCj4gPiA+DQo+ID4gPiBPbiBU aHUsIE1hciAwMywgMjAyMiBhdCAxMjoxNjoyNlBNICswMDAwLCBBbHZpbiDilLzDoWlwcmFnYSB3 cm90ZToNCj4gPiA+PiBIaSBWbGFkaW1pciwNCj4gPiA+PiANCj4gPiA+PiBWbGFkaW1pciBPbHRl YW4gPHZsYWRpbWlyLm9sdGVhbkBueHAuY29tPiB3cml0ZXM6DQo+ID4gPj4gDQo+ID4gPj4gPiBU aGlzIHNlcmllcyBkb2Vzbid0IGF0dGVtcHQgYW55dGhpbmcgZXh0cmVtZWx5IGJyYXZlLCBpdCBq dXN0IGNoYW5nZXMNCj4gPiA+PiA+IHRoZSB3YXkgaW4gd2hpY2ggc3RhbmRhbG9uZSBwb3J0cyB3 aGljaCBzdXBwb3J0IEZEQiBpc29sYXRpb24gd29yay4NCj4gPiA+PiA+DQo+ID4gPj4gPiBVcCB1 bnRpbCBub3csIERTQSBoYXMgcmVjb21tZW5kZWQgdGhhdCBzd2l0Y2ggZHJpdmVycyBjb25maWd1 cmUNCj4gPiA+PiA+IHN0YW5kYWxvbmUgcG9ydHMgaW4gYSBzZXBhcmF0ZSBWSUQvRklEIHdpdGgg bGVhcm5pbmcgZGlzYWJsZWQsIGFuZCB3aXRoDQo+ID4gPj4gPiB0aGUgQ1BVIHBvcnQgYXMgdGhl IG9ubHkgZGVzdGluYXRpb24sIHJlYWNoZWQgdHJpdmlhbGx5IHZpYSBmbG9vZGluZy4NCj4gPiA+ PiA+IFRoYXQgd29ya3MsIGV4Y2VwdCB0aGF0IHN0YW5kYWxvbmUgcG9ydHMgd2lsbCBkZWxpdmVy IGFsbCBwYWNrZXRzIHRvIHRoZQ0KPiA+ID4+ID4gQ1BVLiBXZSBjYW4gbGV2ZXJhZ2UgdGhlIGhh cmR3YXJlIEZEQiBhcyBhIE1BQyBEQSBmaWx0ZXIsIGFuZCBkaXNhYmxlDQo+ID4gPj4gPiBmbG9v ZGluZyB0b3dhcmRzIHRoZSBDUFUgcG9ydCwgdG8gZm9yY2UgdGhlIGRyb3BwaW5nIG9mIHBhY2tl dHMgd2l0aA0KPiA+ID4+ID4gdW5rbm93biBNQUMgREEuDQo+ID4gPj4gPg0KPiA+ID4+ID4gV2Ug aGFuZGxlIHBvcnQgcHJvbWlzY3VpdHkgYnkgcmUtZW5hYmxpbmcgZmxvb2RpbmcgdG93YXJkcyB0 aGUgQ1BVIHBvcnQuDQo+ID4gPj4gPiBUaGlzIGlzIHJlbGV2YW50IGJlY2F1c2UgdGhlIGJyaWRn ZSBwdXRzIGl0cyBhdXRvbWF0aWMgKGxlYXJuaW5nICsNCj4gPiA+PiA+IGZsb29kaW5nKSBwb3J0 cyBpbiBwcm9taXNjdW91cyBtb2RlLCBhbmQgdGhpcyBtYWtlcyBzb21lIHRoaW5ncyB3b3JrDQo+ ID4gPj4gPiBhdXRvbWFnaWNhbGx5LCBsaWtlIGZvciBleGFtcGxlIGJyaWRnaW5nIHdpdGggYSBm b3JlaWduIGludGVyZmFjZS4NCj4gPiA+PiA+IFdlIGRvbid0IGRlbHZlIHlldCBpbnRvIHRoZSB0 ZXJyaXRvcnkgb2YgbWFuYWdpbmcgQ1BVIGZsb29kaW5nIG1vcmUNCj4gPiA+PiA+IGFnZ3Jlc3Np dmVseSB3aGlsZSB1bmRlciBhIGJyaWRnZS4NCj4gPiA+PiA+DQo+ID4gPj4gPiBUaGUgb25seSBz d2l0Y2ggZHJpdmVyIHRoYXQgYmVuZWZpdHMgZnJvbSB0aGlzIHdvcmsgcmlnaHQgbm93IGlzIHRo ZQ0KPiA+ID4+ID4gTlhQIExTMTAyOEEgc3dpdGNoIChmZWxpeCkuIFRoZSBvdGhlcnMgbmVlZCB0 byBpbXBsZW1lbnQgRkRCIGlzb2xhdGlvbg0KPiA+ID4+ID4gZmlyc3QsIGJlZm9yZSBEU0EgaXMg Z29pbmcgdG8gaW5zdGFsbCBlbnRyaWVzIHRvIHRoZSBwb3J0J3Mgc3RhbmRhbG9uZQ0KPiA+ID4+ ID4gZGF0YWJhc2UuIE90aGVyd2lzZSwgdGhlc2UgZW50cmllcyBtaWdodCBjb2xsaWRlIHdpdGgg YnJpZGdlIEZEQi9NREINCj4gPiA+PiA+IGVudHJpZXMuDQo+ID4gPj4gPg0KPiA+ID4+ID4gVGhp cyB3b3JrIHdhcyBkb25lIG1haW5seSB0byBoYXZlIGFsbCB0aGUgcmVxdWlyZWQgZmVhdHVyZXMg aW4gcGxhY2UNCj4gPiA+PiA+IGJlZm9yZSBzb21lYm9keSBzdGFydHMgc2VyaW91c2x5IGFyY2hp dGVjdGluZyBEU0Egc3VwcG9ydCBmb3IgbXVsdGlwbGUNCj4gPiA+PiA+IENQVSBwb3J0cy4gT3Ro ZXJ3aXNlIGl0IGlzIG11Y2ggbW9yZSBkaWZmaWN1bHQgdG8gYm9sdCB0aGVzZSBmZWF0dXJlcyBv bg0KPiA+ID4+ID4gdG9wIG9mIG11bHRpcGxlIENQVSBwb3J0cy4NCj4gPiA+PiANCj4gPiA+PiBT bywgcHJldmlvdXNseSBGREIgZW50cmllcyB3ZXJlIG9ubHkgaW5zdGFsbGVkIG9uIGJyaWRnZWQg cG9ydHMuIE5vdyB5b3UNCj4gPiA+PiBhbHNvIHdhbnQgdG8gaW5zdGFsbCBGREIgZW50cmllcyBv biBzdGFuZGFsb25lIHBvcnRzIHNvIHRoYXQgZmxvb2RpbmcNCj4gPiA+PiBjYW4gYmUgZGlzYWJs ZWQgb24gc3RhbmRhbG9uZSBwb3J0cyBmb3IgdGhlIHJlYXNvbnMgc3RhdGVkIGluIHlvdXIgY292 ZXINCj4gPiA+PiBsZXR0ZXIuDQo+ID4gPg0KPiA+ID4gTm90ICJvbiBzdGFuZGFsb25lIHBvcnRz IiwgYnV0IG9uIHRoZSBDUFUgcG9ydHMsIGZvciB0aGUgc3RhbmRhbG9uZQ0KPiA+ID4gcG9ydHMn IGFkZHJlc3Nlcy4gT3RoZXJ3aXNlLCB5ZXMuDQo+ID4gPg0KPiA+ID4+IFRvIGltcGxlbWVudCBG REIgaXNvbGF0aW9uIGluIGEgRFNBIGRyaXZlciwgYSB0eXBpY2FsIGFwcHJvYWNoIG1pZ2h0IGJl DQo+ID4gPj4gdG8gdXNlIGEgZmlsdGVyIElEIChGSUQpIGZvciB0aGUgRkRCIGVudHJpZXMgdGhh dCBpcyB1bmlxdWUgcGVyDQo+ID4gPj4gYnJpZGdlLiBUaGF0IGlzLCBzaW5jZSBGREIgZW50cmll cyB3ZXJlIG9ubHkgYWRkZWQgb24gYnJpZGdlZCBwb3J0cw0KPiA+ID4+ICh0aHJvdWdoIGxlYXJu aW5nIG9yIHN0YXRpYyBlbnRyaWVzIGFkZGVkIGJ5IHNvZnR3YXJlKSwgdGhlIERTQSBkcml2ZXIN Cj4gPiA+PiBjb3VsZCByZWFkaWx5IHVzZSB0aGUgYnJpZGdlX251bSBvZiB0aGUgYnJpZGdlIHRo YXQgaXMgYmVpbmcgb2ZmbG9hZGVkDQo+ID4gPj4gdG8gc2VsZWN0IHRoZSBGSUQuIFRoZSBzYW1l IGJyaWRnZV9udW0vRklEIHdvdWxkIGJlIHVzZWQgYnkgdGhlIGhhcmR3YXJlDQo+ID4gPj4gZm9y IGxvb2t1cC9sZWFybmluZyBvbiB0aGUgZ2l2ZW4gcG9ydC4NCj4gPiA+DQo+ID4gPiBZZXMgYW5k IG5vLiAiRklEIiBpcyBhIGRvdWJsZS1lZGdlZCBzd29yZCwgaXQgd2lsbCBhY3R1YWxseSBkZXBl bmQgdXBvbg0KPiA+ID4gaGFyZHdhcmUgaW1wbGVtZW50YXRpb24uIEZJRCBpbiBnZW5lcmFsIGlz IGEgbWVjaGFuaXNtIGZvciBGREINCj4gPiA+IHBhcnRpdGlvbmluZy4gSWYgdGhlIFZJRC0+RklE IHRyYW5zbGF0aW9uIGlzIGtleWVkIG9ubHkgYnkgVklELCB0aGVuIHRoZQ0KPiA+ID4gb25seSBp bnRlbmRlZCB1c2UgY2FzZSBmb3IgdGhhdCBpcyB0byBzdXBwb3J0IHNoYXJlZCBWTEFOIGxlYXJu aW5nLA0KPiA+ID4gd2hlcmUgYWxsIFZJRHMgdXNlIHRoZSBzYW1lIEZJRCAoPT4gdGhlIHNhbWUg ZGF0YWJhc2UgZm9yIGFkZHJlc3NlcykuDQo+ID4gPiBUaGlzIGlzbid0IHZlcnkgaW50ZXJlc3Rp bmcgZm9yIHVzLg0KPiA+ID4gSWYgdGhlIFZJRC0+RklEIHRyYW5zbGF0aW9uIGlzIGtleWVkIGJ5 IHtwb3J0LCBWSUR9LCBpdCBpcyB0aGVuIHBvc3NpYmxlDQo+ID4gPiB0byBtYWtlIFZJRHMgb24g ZGlmZmVyZW50IHBvcnRzIChwYXJ0IG9mIGRpZmZlcmVudCBicmlkZ2VzKSB1c2UNCj4gPiA+IGRp ZmZlcmVudCBGSURzLCBhbmQgdGhhdCBpcyB3aGF0IGlzIGludGVyZXN0aW5nLg0KPiA+ID4NCj4g PiA+PiBJZiB0aGUgYWJvdmUgZ2VuZXJhbCBzdGF0ZW1lbnRzIGFyZSBjb3JyZWN0LWlzaCwgdGhl biBteSBxdWVzdGlvbiBoZXJlDQo+ID4gPj4gaXM6IHdoYXQgc2hvdWxkIGJlIHRoZSBGSUQgLSBv ciBvdGhlciBlcXVpdmFsZW50IHVuaXF1ZSBpZGVudGlmaWVyIHVzZWQNCj4gPiA+PiBieSB0aGUg aGFyZHdhcmUgZm9yIEZEQiBpc29sYXRpb24gLSB3aGVuIHRoZSBwb3J0IGlzIG5vdCBvZmZsb2Fk aW5nIGENCj4gPiA+PiBicmlkZ2UsIGJ1dCBpcyBzdGFuZGFsb25lPyBJZiBGREIgaXNvbGF0aW9u IGlzIGltcGxlbWVudGVkIGluIGhhcmR3YXJlDQo+ID4gPj4gd2l0aCBzb21ldGhpbmcgbGlrZSBG SURzLCB0aGVuIGRvIGFsbCBzdGFuZGFsb25lIHBvcnRzIG5lZWQgdG8gaGF2ZSBhDQo+ID4gPj4g dW5pcXVlIEZJRD8NCj4gPiA+DQo+ID4gPiBOb3QgbmVjZXNzYXJpbHksIGFsdGhvdWdoIGFzIGZh ciBhcyB0aGUgRFNBIGNvcmUgaXMgY29uY2VybmVkLCB3ZSB0cmVhdA0KPiA+ID4gZHJpdmVycyBz dXBwb3J0aW5nIEZEQiBpc29sYXRpb24gYXMgdGhvdWdoIGVhY2ggcG9ydCBoYXMgaXRzIG93biBk YXRhYmFzZS4NCj4gPiA+IEZvciBleGFtcGxlLCB0aGUgc2phMTEwNSBkcml2ZXIgcmVhbGx5IGhh cyB1bmlxdWUgVklEcyAoPT4gRklEcykgcGVyDQo+ID4gPiBzdGFuZGFsb25lIHBvcnQsIHNvIGlm IHdlIGRpZG4ndCB0cmVhdCBpdCB0aGF0IHdheSwgaXQgd291bGRuJ3Qgd29yay4NCj4gPiANCj4g PiBJIHRoaW5rIEknbSBub3QgcXVpdGUgZ3Jva2tpbmcgd2hhdCBpdCBtZWFucyBmb3IgYSBwb3J0 IHRvIGhhdmUgaXRzIG93bg0KPiA+IGRhdGFiYXNlLiBBYm92ZSB5b3UgY29ycmVjdGVkIG1lIGJ5 IHN0YXRpbmcgdGhhdCB0aGlzIHBhdGNoc2V0IGRvZXMgbm90DQo+ID4gaW5zdGFsbCBGREIgZW50 cmllcyAib24gc3RhbmRhbG9uZSBwb3J0cyIsIGJ1dCBvbiB0aGUgQ1BVIHBvcnRzLiBUaGUgd2F5 DQo+ID4gSSBwYXJzZSB0aGlzIGlzOiB5b3UgYXJlIGFkZGluZyBhbiBGREIgZW50cnkgdG8gdGhl IGRhdGFiYXNlIG9mIHRoZQ0KPiA+IENQVSBwb3J0Lg0KPiANCj4gTm8uIEkgYW0gYWRkaW5nIGFu IEZEQiBlbnRyeSBfdG93YXJkc18gdGhlIENQVSBwb3J0Lg0KPiANCj4gUGVyaGFwcyBJIG5lZWQg dG8gY2xhcmlmeSB3aGF0IEkgbWVhbiBieSBhICJkYXRhYmFzZSIuIEl0IGlzIGEgY29uc3RydWN0 DQo+IHVzZWQgYnkgRFNBIHRvIGRlbm90ZSAid2hpY2ggc3Vic2V0IG9mIHBvcnRzIHNob3VsZCBt YXRjaCB0aGlzIGVudHJ5Ii4NCj4gVGhlIGVudHJpZXMgZnJvbSB0aGUgZGF0YWJhc2Ugb2YgYSBw b3J0IHNob3VsZCBvbmx5IGJlIG1hdGNoZWQgYnkgdGhhdA0KPiBwb3J0IHdoZW4gaXQgb3BlcmF0 ZXMgYXMgc3RhbmRhbG9uZS4gTm90IGJ5IG90aGVyIHBvcnRzLCBub3QgYnkgYnJpZGdlZA0KPiBw b3J0cy4NCj4gVGhlIGVudHJpZXMgZnJvbSB0aGUgZGF0YWJhc2Ugb2YgYSBicmlkZ2Ugc2hvdWxk IG9ubHkgYmUgbWF0Y2hlZCBieSB0aGUNCj4gcG9ydHMgaW4gdGhhdCBicmlkZ2UuIE5vdCBieSBw b3J0cyBpbiBvdGhlciBicmlkZ2VzLCBub3QgYnkgc3RhbmRhbG9uZQ0KPiBwb3J0cy4NCj4gVGhl IGVudHJpZXMgZnJvbSB0aGUgZGF0YWJhc2Ugb2YgYSBMQUcgc2hvdWxkIG9ubHkgYmUgbWF0Y2hl ZCBieSB0aGUNCj4gcG9ydHMgaW4gdGhhdCBMQUcuDQo+IA0KPiBUaGUgRkRCIGVudHJpZXMgYWRk ZWQgaGVyZSBiZWxvbmcgdG8gdGhlIGRhdGFiYXNlIG9mIGEgc3RhbmRhbG9uZSBwb3J0Lg0KPiBU aGlzIGlzIG5lY2Vzc2FyeSwgYmVjYXVzZSBjbGFzc2lmeWluZyB0aGUgcGFja2V0IHRvIGEgRklE IGlzIGRvbmUgb24NCj4gdGhlIGluZ3Jlc3MgKD0+IHN0YW5kYWxvbmUpIHBvcnQuIEJ1dCB0aGUg ZGVzdGluYXRpb24gaXMgdGhlIENQVSBwb3J0Lg0KPiANCj4gQWxsIHNoYXJlZCAoRFNBIGFuZCBD UFUpIHBvcnRzIHNlcnZlIG11bHRpcGxlIGRhdGFiYXNlcy4NCj4gDQo+ID4gQnV0IGhvdyB3b3Vs ZCB0aGF0IGhlbHAgd2l0aCB0aGUgImxpbmUgc2lkZSB0byBDUFUgc2lkZSINCj4gPiBkaXJlY3Rp b24/IFdoZW4gYSBwYWNrZXQgZnJvbSB0aGUgImxpbmUgc2lkZSIgZW50ZXJzIG9uZSBvZiB0aGUN Cj4gPiAoc3RhbmRhbG9uZSkgdXNlciBwb3J0cywgdGhlIHN3aXRjaCB3b3VsZCBhcHBlYWwgdG8g dGhlIGZvcndhcmRpbmcNCj4gPiBkYXRhYmFzZSBvZiB0aGF0IHBvcnQsIG5vdCB0aGUgQ1BVIHBv cnQsIG5vPyBTbyBob3cgZG9lcyBpdCBoZWxwIHRvDQo+ID4gaW5zdGFsbCBGREIgZW50cmllcyBv biB0aGUgQ1BVIHBvcnQocyk/DQo+IA0KPiBTZWUgYWJvdmUuIFRoaXMgaXMgZXhhY3RseSB3aHkg d2UgcGFzcyB0aGUgc3RydWN0IGRzYV9kYiBhcyBhcmd1bWVudCB0bw0KPiAucG9ydF9mZGJfYWRk KCksIGFuZCB3aHkgeW91IGNhbid0IGp1c3QgZGVkdWNlIHRoZSBkYXRhYmFzZSBmcm9tIHRoZQ0K PiBwcm92aWRlZCAicG9ydCIgYXJndW1lbnQuIFRoZSBDUFUgcG9ydCBtdXN0IHNlcnZlIHRoZSBk YXRhYmFzZXMgb2YNCj4gc3RhbmRhbG9uZSBwb3J0cy4NCj4gDQo+ID4gQmFzaWNhbGx5IGZvciBh IHN3aXRjaCB3aXRoIHR3byBwb3J0cywgc3dwMCBhbmQgc3dwMSwgd2l0aCBNQUMgYWRkcmVzc2Vz DQo+ID4gZm9vIGFuZCBiYXIgcmVzcGVjdGl2ZWx5LCB3ZSB3YW50IHRoZSBmb2xsb3dpbmcgRkRC IGVudHJpZXMgdG8gYmUNCj4gPiBpbnN0YWxsZWQgd2hlbiBib3RoIHBvcnRzIGFyZSBpbiBzdGFu ZGFsb25lIG1vZGU6DQo+ID4gDQo+ID4gICAgIE1BQyB8IFZJRCB8IFBPUlQNCj4gPiAgICAgLS0t LSstLS0tLSstLS0tLS0tLS0tLS0tDQo+ID4gICAgIGZvbyB8ICAwICB8IGNwdV9wb3J0X251bQ0K PiA+ICAgICBiYXIgfCAgMCAgfCBjcHVfcG9ydF9udW0NCj4gPiANCj4gPiBTdWNoIHRoYXQsIHdo ZW4gc3dwMCByZWNlaXZlcyBhIHBhY2tldCB3aXRoIE1BQyBEQSAnZm9vJywgaXQga25vd3MgdG8N Cj4gPiBmb3J3YXJkIHRoYXQgcGFja2V0IHRvIGNwdV9wb3J0X251bSwgaS5lLiB0b3dhcmRzIHRo ZSBDUFUgcG9ydCwgaW5zdGVhZA0KPiA+IG9mIGZsb29kaW5nL2Ryb3BwaW5nL3RyYXBwaW5nIGl0 LiBBbmQgZGl0dG8gZm9yIHN3cDIgYW5kICdiYXInLiBSaWdodD8NCj4gPiANCj4gPiBOb3cgRFNB IGFzc3VtZXMgdGhhdCBlYWNoIHBvcnQgaGFzIGl0cyBvd24gZm9yd2FyZGluZyBkYXRhYmFzZSwg c28gbGV0DQo+ID4gbWUgYW5ub3RhdGUgaG93IEkgc2VlIHRoYXQgYnkgYWRkaW5nIGFub3RoZXIg Y29sdW1uICJQT1JUIERCIjoNCj4gPiANCj4gPiAgICAgTUFDIHwgVklEIHwgUE9SVCAgICAgICAg IHwgUE9SVCBEQg0KPiA+ICAgICAtLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tDQo+ID4gICAgIGZvbyB8ICAwICB8IGNwdV9wb3J0X251bSB8IHN3cDBfcG9ydF9udW0gIFsq XQ0KPiA+ICAgICBiYXIgfCAgMCAgfCBjcHVfcG9ydF9udW0gfCBzd3AxX3BvcnRfbnVtICBbKipd DQo+ID4gDQo+ID4gVGhpcyBjb2RpZmllcyBiZXR0ZXIgdGhhdCB0aGUgZW50cnkgZm9yICdmb28n IHNob3VsZCwgaWRlYWxseSwgb25seSBiZQ0KPiA+IHVzZWQgYnkgdGhlIHN3aXRjaCB3aGVuIGl0 IHJlY2VpdmVzIGEgcGFja2V0IGZyb20gJ2Zvbycgb24gc3dwMCwgYnV0IG5vdA0KPiA+IGlmIGl0 J3MgcmVjZWl2ZWQgb24gc3dwMSwgZXRjLiBJbnRlcm5hbGx5IHRoaXMgbWlnaHQgYmUgd2Vha2Vu ZWQgdG8gdGhlDQo+ID4gc2FtZSB1bmRlcmx5aW5nIEZJRCwgYnV0IGFzIHlvdSBhbHJlYWR5IHBv aW50ZWQgb3V0LCB0aGlzIGlzIGFjY2VwdGFibGUuDQo+ID4gDQo+ID4gT3ZlcmFsbCB0aGlzIHNl ZW1zIGxvZ2ljYWwgYW5kIE9LIHRvIG1lLCBidXQgSSBjYW4ndCByZWNvbmNpbGUgaXQgd2l0aA0K PiA+IHlvdXIgc3RhdGVtZW50IHRoYXQgdGhlIEZEQiBlbnRyaWVzIGluIHF1ZXN0aW9uIGFyZSBp bnN0YWxsZWQgIm9uIHRoZQ0KPiA+IENQVSBwb3J0Ii4gV291bGRuJ3QgdGhhdCBsb29rIGxpa2Ug dGhpcz8NCj4gPiANCj4gPiAgICAgTUFDIHwgVklEIHwgUE9SVCAgICAgICAgIHwgUE9SVCBEQg0K PiA+ICAgICAtLS0tKy0tLS0tKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0NCj4gPiAgICAg Zm9vIHwgIDAgIHwgY3B1X3BvcnRfbnVtIHwgY3B1X3BvcnRfbnVtDQo+ID4gICAgIGJhciB8ICAw ICB8IGNwdV9wb3J0X251bSB8IGNwdV9wb3J0X251bQ0KPiA+IA0KPiA+IC4uLiB3aGljaCBzZWVt cyB3cm9uZy4NCj4gDQo+IFNlZSBhYm92ZS4gQmFzaWNhbGx5LCB3aGVuIEkgc2F5ICJpbnN0YWxs IGEgRkRCIGVudHJ5IG9uIHBvcnQgWCIsIEkgbWVhbg0KPiAiaW5zdGFsbCBpdCBhbmQgbWFrZSBp dCBwb2ludCB0b3dhcmRzIHBvcnQgWCIuIE1heWJlIEkgc2hvdWxkIGJlIG1vcmUNCj4gc3BlY2lm aWMuDQo+IA0KPiA+IEknbSBzdXNwZWN0aW5nL2hvcGluZyB0aGF0IG15IGFib3ZlIG1pc3VuZGVy c3RhbmRpbmcgaXMganVzdCBhIG1hdHRlcg0KPiA+IG9mIHRlcm1pbm9sb2d5LiBGb3IgdGhlIHNh a2Ugb2YgZW1waGFzaXMsIGFsbG93IG1lIHRvIGRlc2NyaWJlIGluIHBsYWluDQo+ID4gRW5nbGlz aCB0aGUgRkRCIGVudHJpZXMgWypdIGFuZCBbKipdIGFib3ZlOg0KPiA+IA0KPiA+ICBbKl0gYWRk IGFuIEZEQiBlbnRyeSBvbiBzd3AwIHdoZXJlIFt0aGUgaG9zdC9zdGF0aW9uPyB3aXRoXSBNQUMg YWRkcmVzcw0KPiA+ICAgICAgJ2ZvbycgaXMgYmVoaW5kIHRoZSBDUFUgcG9ydCBvbiBWSUQgMA0K PiA+IFsqKl0gYWRkIGFuIEZEQiBlbnRyeSBvbiBzd3AxIHdoZXJlIFt0aGUgaG9zdC9zdGF0aW9u PyB3aXRoXSBNQUMgYWRkcmVzcw0KPiA+ICAgICAgJ2JhcicgaXMgYmVoaW5kIHRoZSBDUFUgcG9y dCBvbiBWSUQgMA0KPiA+IA0KPiA+IE1lcmVseSBhbiBhdHRlbXB0LCBhbmQgcGVyaGFwcyBub3Qg aWRpb21hdGljLCBidXQgbm93IHlvdSBjYW4gdGVsbCBtZQ0KPiA+IHdoYXQncyB3cm9uZyBpbiBk ZXNjcmliaW5nIGl0IHRoYXQgd2F5IDotKQ0KPiANCj4gUGVyaGFwczoNCj4gDQo+IFsqXSAgYWRk IGFuIEZEQiBlbnRyeSB0byB0aGUgc3dpdGNoLCB3aXRoIE1BQyBhZGRyZXNzICdmb28nLCB3aGlj aCBjYW4NCj4gICAgICBvbmx5IGJlIG1hdGNoZWQgZm9yIHBhY2tldHMgaW5ncmVzc2luZyBzd3Aw IGluIHN0YW5kYWxvbmUgbW9kZQ0KPiAgICAgIChpLmUuIGlzIGluIHN3cDAncyBwb3J0IGRhdGFi YXNlKSwgd2hvc2UgZGVzdGluYXRpb24gaXMgdGhlIENQVQ0KPiAgICAgIHBvcnQNCj4gDQo+IFsq Kl0gc2FtZSB0aGluZywganVzdCByZXBsYWNlICdmb28nIHdpdGggJ2JhcicsIGFuZCAnc3dwMCcg d2l0aCAnc3dwMScNCg0KTGV0IG1lIGdpdmUgeW91IGEgY29uY3JldGUgZXhhbXBsZS4NCg0KVGhl IHdheSBpbiB3aGljaCBzamExMTA1IHVzZXMgdGFnXzgwMjFxIGlzIHRoYXQgKGFzc3VtaW5nIDQg cG9ydHMpLCB0aGUNCmZvbGxvd2luZyBhcmUgY29uZmlndXJlZCBhcyBQVklEcyBpbiBzdGFuZGFs b25lIG1vZGU6DQoNCnN3cDAgaGFzIFBWSUQgMzA3MiBhbmQgTUFDIGFkZHJlc3MgMDA6MDE6MDI6 MDM6MDQ6MDANCnN3cDEgaGFzIFBWSUQgMzA3MyBhbmQgTUFDIGFkZHJlc3MgMDA6MDE6MDI6MDM6 MDQ6MDENCnN3cDIgaGFzIFBWSUQgMzA3NCBhbmQgTUFDIGFkZHJlc3MgMDA6MDE6MDI6MDM6MDQ6 MDINCnN3cDMgaGFzIFBWSUQgMzA3NSBhbmQgTUFDIGFkZHJlc3MgMDA6MDE6MDI6MDM6MDQ6MDMN ClBvcnQgNCBpcyB0aGUgQ1BVIHBvcnQuIEl0IGRvZXNuJ3QgaGF2ZSBhIFBWSUQgLSBhbGwgdHJh ZmZpYyBpbmdyZXNzaW5nDQppdCBpcyBWTEFOLXRhZ2dlZCwgd2hhdCBpc24ndCB0YWdnZWQgaXMg ZHJvcHBlZC4NCg0KV2hlbiBEU0Egd2FudHMgdG8gcHJvZ3JhbSB0aGUgdW5pY2FzdCBhZGRyZXNz IG9mIHN3cDAgdG8gaGFyZHdhcmUgZm9yDQp1bmljYXN0IGZpbHRlcmluZywgaXQgY2FsbHMgLnBv cnRfZmRiX2FkZChwb3J0IDQsIGFkZHJlc3MgMDA6MDE6MDI6MDM6MDQ6MDAsDQpWSUQgMCwgRFNB X0RCX1BPUlQgd2l0aCBhICJkcCIgb2Ygc3dwMCkuDQpUaGUgc2phMTEwNSBkcml2ZXIgdGhlbiB0 cmFuc2xhdGVzIHRoZSBkYXRhYmFzZSBvZiBzd3AwIHRvIFZJRC9GSUQgMzA3MiwNCmFuZCBpbnN0 YWxscyBNQUMgMDA6MDE6MDI6MDM6MDQ6MDAgJiBWSUQgMzA3MiBhcyBhIEZEQiBlbnRyeSB0b3dh cmRzIHBvcnQgNC4NCg0KVGhpcyBpcyB3aGF0IHdlIHdhbnQsIGJlY2F1c2UgYWxsIHBhY2tldHMg cmVjZWl2ZWQgb24gc3dwMCBpbiBzdGFuZGFsb25lDQptb2RlIGFyZSBjbGFzc2lmaWVkIGJ5IHRo ZSBoYXJkd2FyZSB0byBWSUQvRklEIDMwNzIuIFRoZXkgd2lsbCB0aGVyZWZvcmUNCm1hdGNoIHRo ZSBGREIgZW50cnkgYW5kIGJlIHJvdXRlZCB0byB0aGUgQ1BVIHBvcnQuIE5vIG90aGVyIHBvcnQg d2lsbA0KbWF0Y2ggb24gdGhhdCBlbnRyeSwgYmVjYXVzZSBldmVyeSBvdGhlciBwb3J0IGhhcyBh IGRpZmZlcmVudCBQVklELg0KDQpEU0EgaGFzIG5vIHVuZGVybHlpbmcga25vd2xlZGdlIG9mIGhv dyB0aGUgZHJpdmVycyBoYW5kbGUgdGhlaXIgRklEcywgaXQNCmp1c3QgcGFzc2VzIHRoZSBpbmZv cm1hdGlvbiB0aGV5IG5lZWQgc3VjaCB0aGF0IHRoZXkgY2FuIG1ha2UgdGhlDQpuZWNlc3Nhcnkg dHJhbnNsYXRpb24gd2hlbiBpbnN0YWxsaW5nIEZEQiBlbnRyaWVzLg==