From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 50C5BA055A; Thu, 27 Feb 2020 08:31:52 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id A81B91BFAB; Thu, 27 Feb 2020 08:31:51 +0100 (CET) Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2050.outbound.protection.outlook.com [40.107.22.50]) by dpdk.org (Postfix) with ESMTP id 99AD31BF8B for ; Thu, 27 Feb 2020 08:31:50 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C2/CzwI1dthcmCqVpqsktL8sq5UDw2fhP6+uzoUQwAtI+ZXIoGG8RD82UJnJLf5babjjAB9zP7YH7nKYI54Hm1z38tbI1dtI9eJbywpRWNdGxiaXOr9nvO40N7cqR/pZmUINQLqs9zNQrPy1hIhR2v05Lh99cawSycO+pnc+1kiPqZoVeDdBUCUNdGnlTVrFJPWW2N9BCkSDczhIlMdwGCKC4sERGZB4UEx7/Px/uWEkIU/iYw2DvETY50RIINvAYpFQfKc0eZDEnDRMai4K0IWTNPSyKqQP8ee03ijSVHq/B5M0usxUf7tvY3P/XXBPDb97UZ8NnTxN4xiX5gi98g== 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-SenderADCheck; bh=VogKG6O7O/XBijLkYOb3Y9fyVDDXEfj7Uog1clkh4ew=; b=GNn0RI2NOBv3v1HXddasQe3E3qk6t9mWFxzgsnchcy0MHt3Hb2ueHQGTHie85ASEBMIiNBd+KgbdMIbzBN32gBgBw/mNZ7Qdm23eluEOrKYOEvfwW3qKHDPojU2OdeN7Lx1kvINXd+6A9YODxn9w8auiEAjYWrF1jo1lA9AYMTBNjJKUEGiNq3aJUMgjHK55+ZP6jkYyLFCb0xnpp095uSvTxHO9L0JbQLoUJvDtWgTXy2SoK2nKcz5vkZrkn0fq0hoU2otaVgnff+IaO4kSbzJxolY0sYcKP9tWi0jZ2n28XSeEWKXh/iosX2MPHASC0ldBLql9vv5LP+h8vMGBgg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VogKG6O7O/XBijLkYOb3Y9fyVDDXEfj7Uog1clkh4ew=; b=Tz/qR6ibucQKEjfYL2QseF+5WuC+wTHPDp1V8OjeGpskub1vWI72bkQQjisMMGpthBhc+I4hEc8a8YoIuuq5p+EHfJxfQJC/dPTcyUIEXr4QUFYbqfV4xe60NtrBcey4TfrsA17zn1lgzFbMdRL/9nDy8qy1WKsA0tAqJwqDO8g= Received: from AM6PR05MB5176.eurprd05.prod.outlook.com (20.177.196.158) by AM6PR05MB4421.eurprd05.prod.outlook.com (52.135.167.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2750.21; Thu, 27 Feb 2020 07:31:49 +0000 Received: from AM6PR05MB5176.eurprd05.prod.outlook.com ([fe80::1888:dbf5:a84e:c53b]) by AM6PR05MB5176.eurprd05.prod.outlook.com ([fe80::1888:dbf5:a84e:c53b%6]) with mapi id 15.20.2750.021; Thu, 27 Feb 2020 07:31:49 +0000 From: Ori Kam To: Wang Xiang CC: Jerin Jacob , Jerin Jacob , dpdk-dev , Pavan Nikhilesh , Shahaf Shuler , Hemant Agrawal , Opher Reviv , Alex Rosenbaum , "dovrat@marvell.com" , Prasun Kapoor , Nipun Gupta , "Richardson, Bruce" , "yang.a.hong@intel.com" , "harry.chang@intel.com" , "gu.jian1@zte.com.cn" , "shanjiangh@chinatelecom.cn" , "zhangy.yun@chinatelecom.cn" , "lixingfu@huachentel.com" , "wushuai@inspur.com" , "yuyingxia@yxlink.com" , "fanchenggang@sunyainfo.com" , "davidfgao@tencent.com" , "liuzhong1@chinaunicom.cn" , "zhaoyong11@huawei.com" , "oc@yunify.com" , "jim@netgate.com" , "hongjun.ni@intel.com" , "j.bromhead@titan-ic.com" , "deri@ntop.org" , "fc@napatech.com" , "arthur.su@lionic.com" , Thomas Monjalon Thread-Topic: [dpdk-dev] [PATCH v3] regexdev: introduce regexdev subsystem Thread-Index: AQHV1blwgq+qOSqUJECwZj1bGQPyTagnlXOAgADvWOCAAC4BgIAAD5mQgALS+wCAAB0OYIABqUsA///zMECAAaVjgP//3SSQ Date: Thu, 27 Feb 2020 07:31:48 +0000 Message-ID: References: <20190627155036.56940-1-jerinj@marvell.com> <1580202029-37096-1-git-send-email-orika@mellanox.com> <20200226090318.GA85327@hs1> <20200227092539.GA2188@hs1> In-Reply-To: <20200227092539.GA2188@hs1> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=orika@mellanox.com; x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 087e4a8a-73ef-4676-ff0a-08d7bb571b6e x-ms-traffictypediagnostic: AM6PR05MB4421:|AM6PR05MB4421: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 03264AEA72 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(136003)(366004)(376002)(346002)(396003)(199004)(189003)(30864003)(5660300002)(9686003)(6916009)(55016002)(6506007)(64756008)(66476007)(4326008)(81156014)(8936002)(81166006)(8676002)(52536014)(66946007)(53546011)(66446008)(66556008)(2906002)(33656002)(76116006)(186003)(26005)(86362001)(478600001)(316002)(54906003)(7416002)(7406005)(7696005)(71200400001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM6PR05MB4421; H:AM6PR05MB5176.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: bChmbO0ZYNQj39/qrIHqgC4KZ0NOsCTCEaNPTOtO2FZpnUc+bp21A5w/XMZdBS9k+4RvSoMHLf3OnKz21Ebc2A6lnb+vnnC5JKD/le4zizayyoS9QToYQxvQF5/GxJFoe/iwgiS/QOVZ+4Q+REmgSmc8uHKdGnMOvps5+mt76JZ1a/neFAiPnRMW4rfUFuT6CqsFCQuFVhQtDsAECrRQMlwWlOdCZIiaUTpjkDDPTCmH6YGG7WbLu2gWi37eRGGGlt3EBYgzf8v3YLan6fR+gJzYRBpXCYh6U1qNCHaKadLFJHr0/Pb3TAoYj7Gg3rOPFa5a+PhRQF5UJZDj7Sn2d0uWUv9dldujhJXmdWYBbbQ/AMsXNF98jsxLNdd2yLE+uKbaMRhrengQ/vLAHXlVjESr5bQ2InmW6EbKos6lj6GdbaNyzo0pDNczthuz1r0E x-ms-exchange-antispam-messagedata: KopwR/vdQ5pVBG1W/TVxmYJuRDFHEL96+UN6mTp3kQ7s/yt7ya4i2gQTu4g12az6c3UnmZCYULRf5VpW7Ey4n06fcKTIs6Y9+L1YXXqTMLSCcszFpUd3C9i8n04coyYxl7zQvJ9G7aRa/rTDHNtf3w== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 087e4a8a-73ef-4676-ff0a-08d7bb571b6e X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Feb 2020 07:31:48.7425 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: tq9BxkpRE4TwZwWHxk1rsu9iZm+BjPdsB/908at/CgsA2AKXNOkJZy6ib8RA4BGxm5KWi9xCZxZwFp3SkYvW8w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4421 Subject: Re: [dpdk-dev] [PATCH v3] regexdev: introduce regexdev subsystem X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgWGlhbmcsDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV2FuZyBY aWFuZyA8eGlhbmcudy53YW5nQGludGVsLmNvbT4NCj4gU2VudDogVGh1cnNkYXksIEZlYnJ1YXJ5 IDI3LCAyMDIwIDExOjI2IEFNDQo+IFRvOiBPcmkgS2FtIDxvcmlrYUBtZWxsYW5veC5jb20+DQo+ IENjOiBKZXJpbiBKYWNvYiA8amVyaW5qYWNvYmtAZ21haWwuY29tPjsgSmVyaW4gSmFjb2IgPGpl cmluakBtYXJ2ZWxsLmNvbT47DQo+IGRwZGstZGV2IDxkZXZAZHBkay5vcmc+OyBQYXZhbiBOaWto aWxlc2ggPHBiaGFnYXZhdHVsYUBtYXJ2ZWxsLmNvbT47DQo+IFNoYWhhZiBTaHVsZXIgPHNoYWhh ZnNAbWVsbGFub3guY29tPjsgSGVtYW50IEFncmF3YWwNCj4gPGhlbWFudC5hZ3Jhd2FsQG54cC5j b20+OyBPcGhlciBSZXZpdiA8b3BoZXJAbWVsbGFub3guY29tPjsgQWxleA0KPiBSb3NlbmJhdW0g PGFsZXhyQG1lbGxhbm94LmNvbT47IGRvdnJhdEBtYXJ2ZWxsLmNvbTsgUHJhc3VuIEthcG9vcg0K PiA8cGthcG9vckBtYXJ2ZWxsLmNvbT47IE5pcHVuIEd1cHRhIDxuaXB1bi5ndXB0YUBueHAuY29t PjsgUmljaGFyZHNvbiwNCj4gQnJ1Y2UgPGJydWNlLnJpY2hhcmRzb25AaW50ZWwuY29tPjsgeWFu Zy5hLmhvbmdAaW50ZWwuY29tOw0KPiBoYXJyeS5jaGFuZ0BpbnRlbC5jb207IGd1LmppYW4xQHp0 ZS5jb20uY247IHNoYW5qaWFuZ2hAY2hpbmF0ZWxlY29tLmNuOw0KPiB6aGFuZ3kueXVuQGNoaW5h dGVsZWNvbS5jbjsgbGl4aW5nZnVAaHVhY2hlbnRlbC5jb207IHd1c2h1YWlAaW5zcHVyLmNvbTsN Cj4geXV5aW5neGlhQHl4bGluay5jb207IGZhbmNoZW5nZ2FuZ0BzdW55YWluZm8uY29tOw0KPiBk YXZpZGZnYW9AdGVuY2VudC5jb207IGxpdXpob25nMUBjaGluYXVuaWNvbS5jbjsNCj4gemhhb3lv bmcxMUBodWF3ZWkuY29tOyBvY0B5dW5pZnkuY29tOyBqaW1AbmV0Z2F0ZS5jb207DQo+IGhvbmdq dW4ubmlAaW50ZWwuY29tOyBqLmJyb21oZWFkQHRpdGFuLWljLmNvbTsgZGVyaUBudG9wLm9yZzsN Cj4gZmNAbmFwYXRlY2guY29tOyBhcnRodXIuc3VAbGlvbmljLmNvbTsgVGhvbWFzIE1vbmphbG9u DQo+IDx0aG9tYXNAbW9uamFsb24ubmV0Pg0KPiBTdWJqZWN0OiBSZTogW2RwZGstZGV2XSBbUEFU Q0ggdjNdIHJlZ2V4ZGV2OiBpbnRyb2R1Y2UgcmVnZXhkZXYgc3Vic3lzdGVtDQo+IA0KPiBIaSBP cmksDQo+IA0KPiBUaGFua3MgZm9yIHRoZSBjb21tZW50cy4NCj4gDQo+IEh5cGVyc2NhbiBzdXBw b3J0cyBib3RoIHN0YXJ0X29mZnNldCBhbmQgZW5kX29mZnNldCBtb2RlcyB3aXRoIG1vc3QNCj4g dXNlcnMgY2hvb3NpbmcgZW5kX29mZnNldCBmb3IgcnVsZSBjb3ZlcmFnZSBhbmQgcGVyZm9ybWFu Y2UgcmVhc29ucy4NCj4gSSdtIE9LIHRvIGhhdmUgdGhlIGRlZmF1bHQgYmVoYXZpb3Igd2l0aCBz dGFydF9vZmZzZXQgYW5kIGxlbi4NCj4gSXQnbGwgYmUgZ29vZCB0byBjaGFuZ2UgUlRFX1JFR0VY X0RFVl9DRkdfTUFUQ0hfQVNfU1RBUlQgdG8NCj4gUlRFX1JFR0VYX0RFVl9DRkdfTUFUQ0hfQVNf RU5ELiBGb3IgdXNlcnMgd2hvIG5lZWQgb25seSBlbmRfb2Zmc2V0LA0KPiB0aGV5IGhhdmUgdG8g c2V0IFJURV9SRUdFWF9ERVZfQ0ZHX01BVENIX0FTX0VORCBiaXQuIFdlIG1heSBhbHNvDQo+IHJl bW92ZQ0KPiBSVEVfUkVHRVhfREVWX1NVUFBfTUFUQ0hfQVNfU1RBUlQgaWYgeW91IGxpa2UuDQoN ClNpbmNlIHlvdSBzYXkgdGhhdCBIeXBlcnNjYW4gY2FuIHN1cHBvcnQgYm90aCBtb2RlcywNCldo YXQgYWJvdXQgY2hhbmdpbmcgdGhlIGNhcCBmaWVsZCB0byBSVEVfUkVHRVhfREVWX1NVUFBfTUFU Q0hfQVNfRU5EPw0KDQo+IA0KPiBPbmUgcXVlc3Rpb24gaXMgcmVsYXRlZCB0byB0aGUgY29uc2lz dGVuY3kgb2Ygc3RhcnRfb2Zmc2V0IGRlZmluaXRpb24NCj4gYW1vbmcgZGlmZmVyZW50IHNvbHV0 aW9ucywgZG9lcyBhbGwgc29sdXRpb25zIHJldHVybiB0aGUgbGVmdG1vc3QNCj4gc3RhcnRfb2Zm c2V0LCBpLmUuIGZvciBydWxlOiBmb28uKmJhciBhbmQgaW5wdXQ6IGZvb2Zvb2JhciwgdGhlIHJl dHVybmVkDQo+IHN0YXJ0X29mZnNldCB3aWxsIGJlIDAgbm90IDM/DQo+IA0KWWVzLCB5b3UgYXJl IGNvcnJlY3QsDQpJbiBNZWxsYW5veCBjYXNlIHRoZXJlIHdpbGwgYmUgb25seSBvbmUgcmVzdWx0 OiBzdGFydF9vZmZzZXQgMA0KDQo+IFRoYW5rcywNCj4gWGlhbmcNCj4gDQo+IE9uIFdlZCwgRmVi IDI2LCAyMDIwIGF0IDA4OjM2OjUxQU0gKzAwMDAsIE9yaSBLYW0gd3JvdGU6DQo+ID4gSGkgWGlh bmcsDQo+ID4NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZy b206IGRldiA8ZGV2LWJvdW5jZXNAZHBkay5vcmc+IE9uIEJlaGFsZiBPZiBXYW5nIFhpYW5nDQo+ ID4gPiBTZW50OiBXZWRuZXNkYXksIEZlYnJ1YXJ5IDI2LCAyMDIwIDExOjAzIEFNDQo+ID4gPiBU bzogT3JpIEthbSA8b3Jpa2FAbWVsbGFub3guY29tPg0KPiA+ID4gQ2M6IEplcmluIEphY29iIDxq ZXJpbmphY29ia0BnbWFpbC5jb20+OyBKZXJpbiBKYWNvYg0KPiA8amVyaW5qQG1hcnZlbGwuY29t PjsNCj4gPiA+IGRwZGstZGV2IDxkZXZAZHBkay5vcmc+OyBQYXZhbiBOaWtoaWxlc2ggPHBiaGFn YXZhdHVsYUBtYXJ2ZWxsLmNvbT47DQo+ID4gPiBTaGFoYWYgU2h1bGVyIDxzaGFoYWZzQG1lbGxh bm94LmNvbT47IEhlbWFudCBBZ3Jhd2FsDQo+ID4gPiA8aGVtYW50LmFncmF3YWxAbnhwLmNvbT47 IE9waGVyIFJldml2IDxvcGhlckBtZWxsYW5veC5jb20+OyBBbGV4DQo+ID4gPiBSb3NlbmJhdW0g PGFsZXhyQG1lbGxhbm94LmNvbT47IGRvdnJhdEBtYXJ2ZWxsLmNvbTsgUHJhc3VuIEthcG9vcg0K PiA+ID4gPHBrYXBvb3JAbWFydmVsbC5jb20+OyBOaXB1biBHdXB0YSA8bmlwdW4uZ3VwdGFAbnhw LmNvbT47DQo+IFJpY2hhcmRzb24sDQo+ID4gPiBCcnVjZSA8YnJ1Y2UucmljaGFyZHNvbkBpbnRl bC5jb20+OyB5YW5nLmEuaG9uZ0BpbnRlbC5jb207DQo+ID4gPiBoYXJyeS5jaGFuZ0BpbnRlbC5j b207IGd1LmppYW4xQHp0ZS5jb20uY247DQo+IHNoYW5qaWFuZ2hAY2hpbmF0ZWxlY29tLmNuOw0K PiA+ID4gemhhbmd5Lnl1bkBjaGluYXRlbGVjb20uY247IGxpeGluZ2Z1QGh1YWNoZW50ZWwuY29t Ow0KPiB3dXNodWFpQGluc3B1ci5jb207DQo+ID4gPiB5dXlpbmd4aWFAeXhsaW5rLmNvbTsgZmFu Y2hlbmdnYW5nQHN1bnlhaW5mby5jb207DQo+ID4gPiBkYXZpZGZnYW9AdGVuY2VudC5jb207IGxp dXpob25nMUBjaGluYXVuaWNvbS5jbjsNCj4gPiA+IHpoYW95b25nMTFAaHVhd2VpLmNvbTsgb2NA eXVuaWZ5LmNvbTsgamltQG5ldGdhdGUuY29tOw0KPiA+ID4gaG9uZ2p1bi5uaUBpbnRlbC5jb207 IGouYnJvbWhlYWRAdGl0YW4taWMuY29tOyBkZXJpQG50b3Aub3JnOw0KPiA+ID4gZmNAbmFwYXRl Y2guY29tOyBhcnRodXIuc3VAbGlvbmljLmNvbTsgVGhvbWFzIE1vbmphbG9uDQo+ID4gPiA8dGhv bWFzQG1vbmphbG9uLm5ldD4NCj4gPiA+IFN1YmplY3Q6IFJlOiBbZHBkay1kZXZdIFtQQVRDSCB2 M10gcmVnZXhkZXY6IGludHJvZHVjZSByZWdleGRldiBzdWJzeXN0ZW0NCj4gPiA+DQo+ID4gPiBI aSBPcmkgYW5kIEplcmluLA0KPiA+ID4NCj4gPiA+IE9uZSBjb21tZW50IHJlZ2FyZGluZyBteSBj b25jZXJuIHdpdGggbGVuIGFuZCBlbmRfb2Zmc2V0IHByb2JsZW0uDQo+ID4gPiBGcm9tIG9wZW4g c291cmNlIFNXIHJlZ2V4IGxpYnJhcnkobGlicGNyZSwgcmUyIGFuZCBIeXBlcnNjYW4pIGFuZA0K PiA+ID4gSW50ZWwncyBwZXJzcGVjdGl2ZSwgdGhlIG1hdGNoaW5nIHJlc3VsdHMgcmV0dXJuZWQg YXJlIGFsd2F5cyBzdGFydA0KPiA+ID4gb2Zmc2V0IGFuZCBlbmQgb2Zmc2V0LiBNb3JlIGltcG9y dGFudGx5LCBIeXBlcnNjYW4gb25seSByZXBvcnRzIGVuZCBvZmZzZXQNCj4gPiA+IG1vc3Qgb2Yg dGhlIHRpbWUuDQo+ID4gPg0KPiA+ID4gSXQnbGwgYmUgZ29vZCB0byBrZWVwIHRoaXMgdW5pb24g YXMgYW4gYWJzdHJhY3Rpb24gYW5kIGVuZm9yY2UgdGhlIGRlZmF1bHQNCj4gPiA+IGJlaGF2aW9y IGZvciBlYWNoIHNvbHV0aW9uLCBpLmUuIEhXIHNvbHV0aW9ucyBkb2Vzbid0IHN1cHBvcnQNCj4g TUFUQ0hfQVNfU1RBUlQNCj4gPiA+IGZsYWcgYXQgcnVsZSBjb21waWxlIHRpbWUuIEFwcGxpY2F0 aW9ucyB3aWxsIGtub3cgdGhlIG1lYW5pbmcgb2YgdmFyaWFibGUgYXQNCj4gPiA+IHJ1bGUgY29t cGlsZSB0aW1lIHdpdGggdGhlIGZsYWcgc28gdGhleSBkb24ndCBoYXZlIHRvIGRvIGV4dHJhIGNo ZWNrIGF0IGZhc3QNCj4gcGF0aA0KPiA+ID4gcnVuLXRpbWUgbWF0Y2hpbmcuDQo+ID4gPiBXZWxj b21lIGZvciBiZXR0ZXIgYWJzdHJhY3Rpb24gaWRlYXMuDQo+ID4gPg0KPiA+DQo+ID4gSSBkb24n dCBtaW5kIHRvIGtlZXAgdGhlIHVuaW9uIGFzIGl0IHdhcyBpbiBWMywgYnV0IEkgd291bGQgbGlr ZSB0byByZW1vdmUgdGhlDQo+ID4gY29uZmlndXJhdGlvbiBiaXQgKFJURV9SRUdFWF9ERVZfQ0ZH X01BVENIX0FTX1NUQVJUKS4NCj4gPiBNZWFuaW5nIHRoYXQgaWYgdGhlIGRldmljZSByZXBvcnRz DQo+IFJURV9SRUdFWF9ERVZfU1VQUF9NQVRDSF9BU19TVEFSVA0KPiA+IHRoZSByZXN1bHQgd2ls bCBhbHdheXMgYmUgd2l0aCBzdGFydF9vZmZzZXQgYW5kIGxlbi4NCj4gPg0KPiA+IEJlc3QsDQo+ ID4gT3JpDQo+ID4NCj4gPiA+IFRoYW5rcywNCj4gPiA+IFhpYW5nDQo+ID4gPg0KPiA+ID4gPiA+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAvKio8IFN0YXJ0aW5nIEJ5dGUgUG9zaXRpb24g Zm9yIG1hdGNoZWQgcnVsZS4gKi8NCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgUlRFX1NURF9DMTENCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdW5p b24gew0KPiA+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQx Nl90IGxlbjsNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv Kio8IExlbmd0aCBvZiBtYXRjaCBpbiBieXRlcyAqLw0KPiA+ID4gPiA+ID4gPiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90IGVuZF9vZmZzZXQ7DQo+ID4gPiA+ID4gPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqPCBUaGUgZW5kIG9mZnNldCBvZiB0 aGUgbWF0Y2guIEluIGNhc2UNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKiBNQVRDSF9BU19TVEFSVCBjb25maWd1cmF0aW9uIGlzIGRpc2FibGVkLg0KPiA+ ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEBzZWUNCj4gUlRF X1JFR0VYX0RFVl9DRkdfTUFUQ0hfQVNfU1RBUlQNCj4gPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKi8NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBXZSBoYXZl IG5vdCBjb25jbHVkZWQgb24gdGhpcyBzY2hlbWUuIEhhdmUgb25lIGZpZWxkIHdoaWNoIGhhcw0K PiA+ID4gPiA+ID4gZGlmZmVyZW50IG1lYW5pbmcgd2lsbCBiZSBkaWZmaWN1bHQNCj4gPiA+ID4g PiA+IGZvciBhcHBsaWNhdGlvbi4gaS5lIGZhc3QgcGF0aCB3ZSBuZWVkIHRvIGhhdmUgYSBjaGVj ayBmb3IgdGhpcy4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUaGlzIGlzIHRo ZSB0aW1lIHRvIGNvbmNsdWRlIC4gYXQgbGVhc3QgZm9yIHRoZSBmaXJzdCB2ZXJzaW9uLg0KPiA+ ID4gPiA+IFdoeSBkbyB3ZSBoYXZlIG9uZSBmaWVsZCB3aXRoIGRpZmZlcmVudCBtZWFuaW5nPw0K PiA+ID4gPiA+IFRoZSByZXN1bHQgY2FuIGJlIGV0aGVyIGxlbiBvciBlbmRfb2Zmc2V0Lg0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiBJIHRoaW5rLCBCYXNlZCBvbiB0aGUgbWFqb3JpdHkgb2YgSFcv U1cgaW1wbGVtZW50YXRpb24sIHdlIG5lZWQgdG8NCj4gPiA+ID4gPiA+IGVpdGhlciBnbyB3aXRo IGxlbiBvcg0KPiA+ID4gPiA+ID4gZW5kX29mZnNldC4gV2hhdCBNZWxsYW5veCBIVyByZXR1cm5z PyBsZW4gb3IgZW5kX29mZnNldD8NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBG cm9tIE1lbGxhbm94IHBlcnNwZWN0aXZlIHdlIHByZWZlciB0aGUgbGVuIGFwcHJvYWNoLiBXZSBh bHNvIHRoaW5rDQo+ID4gPiA+ID4gaXQgaXMgbXVjaCBtb3JlIHVzZXIgb3JpZW50ZWQuDQo+ID4g PiA+ID4NCj4gPiA+ID4gPiA+IG9yIFdlIGNhbiBrZWVwIGl0IGFzIGxlbiBvciBlbmRfb2Zmc2V0 IGJhc2VkIG9uIHdoaWNoIGRyaXZlcnMNCj4gdXBzdHJlYW0NCj4gPiA+ID4gZmlyc3QsDQo+ID4g PiA+ID4gPiBvdGhlciBkcml2ZXJzIHdoZW4gaXQgY29tZXMsIHdlIGNhbiBzZWUgaG93IHRvIGFi c3RyYWN0IGl0Pw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEkgY2FuIGV4Y2Vw dCB0aGF0IGFzc3VtaW5nIHdlIGNob29zZSB0aGUgc3RhcnQgYW5kIGxlbiBhcHByb2FjaA0KPiA+ ID4gPg0KPiA+ID4gPiBJIHRoaW5rLCB3ZSBjYW4gaGF2ZSBmaXJzdCB2ZXJzaW9uIHdpdGggInN0 YXJ0IGFuZCBsZW4iIGJ5IHJlbW92aW5nDQo+ID4gPiA+IFJURV9SRUdFWF9ERVZfQ0ZHX01BVENI X0FTX1NUQVJULg0KPiA+ID4gPiBXaGVuIGNhbiB0aGluaywgaG93IHRvIGFic3RyYWN0IG5ldyBk cml2ZXJzIHdoZW4gaXQgdXBzdHJlYW0gYmFzZWQgb24NCj4gPiA+ID4gdGhlIG92ZXJoZWFkLg0K PiA+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiBPbiBUdWUsIEZlYiAyNSwgMjAyMCBhdCAwNzo0 ODo1NEFNICswMDAwLCBPcmkgS2FtIHdyb3RlOg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiA+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gRnJvbTogSmVyaW4gSmFjb2Ig PGplcmluamFjb2JrQGdtYWlsLmNvbT4NCj4gPiA+ID4gPiBTZW50OiBUdWVzZGF5LCBGZWJydWFy eSAyNSwgMjAyMCA3OjU3IEFNDQo+ID4gPiA+ID4gVG86IE9yaSBLYW0gPG9yaWthQG1lbGxhbm94 LmNvbT4NCj4gPiA+ID4gPiBDYzogSmVyaW4gSmFjb2IgPGplcmluakBtYXJ2ZWxsLmNvbT47IHhp YW5nLncud2FuZ0BpbnRlbC5jb207IGRwZGstDQo+IGRldg0KPiA+ID4gPiA+IDxkZXZAZHBkay5v cmc+OyBQYXZhbiBOaWtoaWxlc2ggPHBiaGFnYXZhdHVsYUBtYXJ2ZWxsLmNvbT47DQo+IFNoYWhh Zg0KPiA+ID4gPiA+IFNodWxlciA8c2hhaGFmc0BtZWxsYW5veC5jb20+OyBIZW1hbnQgQWdyYXdh bA0KPiA+ID4gPiA+IDxoZW1hbnQuYWdyYXdhbEBueHAuY29tPjsgT3BoZXIgUmV2aXYgPG9waGVy QG1lbGxhbm94LmNvbT47DQo+IEFsZXgNCj4gPiA+ID4gPiBSb3NlbmJhdW0gPGFsZXhyQG1lbGxh bm94LmNvbT47IGRvdnJhdEBtYXJ2ZWxsLmNvbTsgUHJhc3VuDQo+IEthcG9vcg0KPiA+ID4gPiA+ IDxwa2Fwb29yQG1hcnZlbGwuY29tPjsgTmlwdW4gR3VwdGEgPG5pcHVuLmd1cHRhQG54cC5jb20+ Ow0KPiA+ID4gUmljaGFyZHNvbiwNCj4gPiA+ID4gPiBCcnVjZSA8YnJ1Y2UucmljaGFyZHNvbkBp bnRlbC5jb20+OyB5YW5nLmEuaG9uZ0BpbnRlbC5jb207DQo+ID4gPiA+ID4gaGFycnkuY2hhbmdA aW50ZWwuY29tOyBndS5qaWFuMUB6dGUuY29tLmNuOw0KPiA+ID4gc2hhbmppYW5naEBjaGluYXRl bGVjb20uY247DQo+ID4gPiA+ID4gemhhbmd5Lnl1bkBjaGluYXRlbGVjb20uY247IGxpeGluZ2Z1 QGh1YWNoZW50ZWwuY29tOw0KPiA+ID4gd3VzaHVhaUBpbnNwdXIuY29tOw0KPiA+ID4gPiA+IHl1 eWluZ3hpYUB5eGxpbmsuY29tOyBmYW5jaGVuZ2dhbmdAc3VueWFpbmZvLmNvbTsNCj4gPiA+ID4g PiBkYXZpZGZnYW9AdGVuY2VudC5jb207IGxpdXpob25nMUBjaGluYXVuaWNvbS5jbjsNCj4gPiA+ ID4gPiB6aGFveW9uZzExQGh1YXdlaS5jb207IG9jQHl1bmlmeS5jb207IGppbUBuZXRnYXRlLmNv bTsNCj4gPiA+ID4gPiBob25nanVuLm5pQGludGVsLmNvbTsgai5icm9taGVhZEB0aXRhbi1pYy5j b207IGRlcmlAbnRvcC5vcmc7DQo+ID4gPiA+ID4gZmNAbmFwYXRlY2guY29tOyBhcnRodXIuc3VA bGlvbmljLmNvbTsgVGhvbWFzIE1vbmphbG9uDQo+ID4gPiA+ID4gPHRob21hc0Btb25qYWxvbi5u ZXQ+DQo+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtkcGRrLWRldl0gW1BBVENIIHYzXSByZWdleGRl djogaW50cm9kdWNlIHJlZ2V4ZGV2DQo+IHN1YnN5c3RlbQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiA+IDQpIGFwcC90ZXN0L3Rlc3RfcmVnZXhkZXYuYyBsaWtlIGFwcC90ZXN0L3Rlc3RfZXZlbnRk ZXYuYw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFdlIHN0YXJ0ZWQgdG8gY3JlYXRlIGEgc3Vw ZXIgYmFzaWMgYXBwLCBhZnRlciB0aGUgQVBJIHdpbGwgYmUgZmluYWxpemVkDQo+IGFuZA0KPiA+ ID4gd2UNCj4gPiA+ID4gPiB3aWxsIGhhdmUgSFcNCj4gPiA+ID4gPiA+IHdlIGNhbiBwdXNoIGl0 LiAoaWYgeW91IG5lZWQgaXQgZmFzdGVyIHRoYW4gZmVlbCBmcmVlKQ0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gQSBzaW1wbGUgVW5pdCB0ZXN0IGNhc2UgbmVlZHMgdG8gYmUgcHJlc2VudCBmb3IgdGhl IEFQSXMuIE9uIHRoZQ0KPiA+ID4gPiA+IGNvdXJzZSBvZiBkZXZlbG9waW5nIGNvbW1vbiBjb2Rl LA0KPiA+ID4gPiA+IGl0IGNhbiBiZSBkZXZlbG9wZWQgdG8gdGVzdCB0aGUgY29tbW9uIGNvZGUg d2l0aCBkdW1teS9za2VsZXRvbg0KPiBkcml2ZXIuDQo+ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+ ID4gQWdyZWUgdGhpcyBpcyB3aGF0IHdlIGFyZSBjdXJyZW50bHkgaGF2ZS4NCj4gPiA+ID4NCj4g PiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+IDUpIE5lZWQgYSBtYWludGFpbmVyIGZvciBtYWludGFp bmluZyB0aGUgcmVnZXggc3Vic3lzdGVtDQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBXZSB3 aXNoIHRvIG1haW50YWluIGl0IGlmIHlvdSBhZ3JlZS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFll cy4gUGxlYXNlLg0KPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEdyZWF0Lg0KPiA+ID4gPg0K PiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gT25lIG1vcmUgdGhpbmcsIHJlZ2FyZGlu ZyB0aGUgb3BzIHN0cnVjdHVyZSwgSSB0aGluayBpdCBpcyBiZXR0ZXIgdG8NCj4gc3BsaXQNCj4g PiA+IGl0DQo+ID4gPiA+ID4gdG8gMg0KPiA+ID4gPiA+ID4gPiBkaWZmZXJlbnQNCj4gPiA+ID4g PiA+ID4gPiBzdHJ1Y3R1cmVzIG9uZSBlbnF1ZSBhbmQgb25lIGZvciBkZXF1ZXVlLCBzaW5jZSB0 aGVyZSBhcmUgbm8gcmVhbA0KPiA+ID4gc2hhcmVkDQo+ID4gPiA+ID4gPiA+IGRhdGEgYW5kIHdl IHdpbGwNCj4gPiA+ID4gPiA+ID4gPiBiZSBhYmxlIHRvIHNhdmUgbWVtb3J5LCB3aGF0IGRvIHlv dSB0aGluaz8NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gT3BzIGFyZSBhbGxvY2F0ZWQg ZnJvbSBtZW1wb29sIHNvIGl0IHdpbGwgYmUgb3ZlcmhlYWQgdG8gbWFuYWdlDQo+IGJvdGguDQo+ ID4gPiA+ID4gPiA+IG1vcmVvdmVyLCBzb21lDQo+ID4gPiA+ID4gPiA+IG9mIHRoZSBmaWVsZHMg YWRkZWQgaW4gcmVxIGNhbiBiZSB1c2VkIGZvciByZXNwIGFzIGluZm8uIGNyeXB0b2Rldg0KPiA+ ID4gPiA+ID4gPiBmb2xsb3dzIHRoZSBzaW1pbGFyIGNvbmNlcHQsDQo+ID4gPiA+ID4gPiA+IEkg dGhpbmssIHdlIGNhbiBoYXZlIHN5bW1ldHJ5IHdpdGggY3J5cHRvZGV2IHdoZXJldmVyIGlzIHBv c3NpYmxlDQo+IHRvDQo+ID4gPiBhdm9pZA0KPiA+ID4gPiA+ID4gPiBlbmQtdXNlciB0byBsZWFy biBuZXcgQVBJIG1vZGVscy4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUcnVlIHRoYXQgdGhl cmUgd2lsbCBiZSBvdmVyaGVhZCB3aXRoIDIgbWVtcG9vbHMgKHNtYWxsIG9uZSkNCj4gPiA+ID4g PiA+IGJ1dCBsZXRzIGFzc3VtZSAyNTUgcmVzdWx0cy4gVGhpcyBtZWFucyB0aGF0IHRoZSBidWZm ZXIgc2hvdWxkIGJlIDI1NQ0KPiAqDQo+ID4gPiA+ID4gc2l6ZW9mKHJ0ZV9yZWdleF9tYXRjaCkg PSAySw0KPiA+ID4gPiA+ID4gYWxzbyB0aGlzIHdpbGwgZW5hYmxlIHVzIHRvIHJlcGxhY2UgZ3Jv dXBYIHdpdGggZ3JvdXBbXSB3aGljaCB3aWxsIGFsbG93DQo+ID4gPiBldmVuDQo+ID4gPiA+ID4g bW9yZSBncm91cHMuDQo+ID4gPiA+ID4gPiBJbiBhZGRpdGlvbiBkb24ndCB0aGluayB0aGF0IGNy eXB0byBpcyBhIGdvb2QgZXhhbXBsZS4NCj4gPiA+ID4gPiA+IFRoZSBtYWluIGRpZmZlcmVuY2Ug aXMgdGhhdCBpbiBSZWdFeCB0aGUgb3V0cHV0IGlzIGRpZmZlcmVudCBmb3JtYXQNCj4gdGhlbg0K PiA+ID4gdGhlDQo+ID4gPiA+ID4gaW5wdXQuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAjIElNTywg U29tZSBvZiB0aGUgZmllbGRzIG1heSBiZSB1c2VmdWwgZm9yIGEgcmVzcG9uc2UgYXMgd2VsbC4g SQ0KPiA+ID4gPiA+IHRoaW5rIGFwcGxpY2F0aW9uIG1heSBiZSBpbnRlcmVzdGVkIGluIGZvbGxv d2luZw0KPiA+ID4gPiA+IHJlcSBmaWxlZCBpbiB0aGUgcmVzcG9uc2UuDQo+ID4gPiA+ID4gYSkg YnVmX2FkZHINCj4gPiA+ID4NCj4gPiA+ID4gSSBkb24ndCBzZWUgaG93IHRoaXMgY2FuIGJlIHVz ZWQgaW4gdGhlIHJlc3BvbnNlLiBzaW5jZSBpZiB3b3JraW5nIGluIG91dCBvZg0KPiA+ID4gb3Jk ZXIgcmVzdWx0Lg0KPiA+ID4gPiB5b3UgZG9u4oCZdCBrbm93IHdoaWNoIHJlc3VsdCB3aWxsIGJl IHJldHVybmVkLg0KPiA+ID4gPiBJIGFsc28gdGhpbmsgaXQgaXMgZXJyb3IgcHJvbmUgdG8gdXNl IHRoZSBzYW1lIG9wIGZvciB0aGUgZW5xdWV1ZSBhbmQNCj4gZGVxdWV1ZS4NCj4gPiA+ID4NCj4g PiA+ID4gPiBiKSBzY2FuX3NpemUNCj4gPiA+ID4NCj4gPiA+ID4gUGxlYXNlIHNlZSBhYm92ZS4N Cj4gPiA+ID4NCj4gPiA+ID4gPiBjKSB1c2VyX2lkIChUaGlzIHdvdWxkIGJlIG1haW4gb25lKQ0K PiA+ID4gPg0KPiA+ID4gPiBBZ3JlZQ0KPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIyBI YXZpbmcgdHdvIG1lbXBvb2xzIGFkZHMgb3ZlcmhlYWQgcGVyIGxjb3JlIEwxIGNhY2hlIHVzYWdl IGFuZA0KPiBleHRyYQ0KPiA+ID4gPiA+IGNvbXBsZXhpdHkgdG8gdGhlIGFwcGxpY2F0aW9uLg0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gIyBJTU8sIEZyb20gYSBwZXJmb3JtYW5jZSBwZXJzcGVjdGl2 ZSwgb25lIG1lbXBvb2wgaXMgZ29vZCBkdWUgdG8NCj4gbGVzcw0KPiA+ID4gPiA+IHN0cmVzcyBv biB0aGUgY2FjaGUgYW5kIGl0IGlzIGNvc3RseSB0bw0KPiA+ID4gPiA+IGFkZCBuZXcgbWVtcG9v bCBmb3IgSFcgbWVtcG9vbCBpbXBsZW1lbnRhdGlvbnMuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAj IEkgdGhpbmssIGdyb3VwW10gdXNlIGNhc2Ugd2UgY2FuIGFkZCBpdCB3aGVuIGl0IHJlcXVpcmVk IGJ5DQo+ID4gPiA+ID4gaW50cm9kdWNpbmcgIm1hdGNoZXNfc3RhcnRfb2Zmc2V0IiBmaWVsZCwg d2hpY2ggd2lsbA0KPiA+ID4gPiA+IHRlbGwgdGhlIHJlcSwgd2hlcmUgaXMgdGhlIGVuZCBvZiBn cm91cFtdIGFuZCB3aGVyZSAibWF0Y2hlcyIgc3RhcnQNCj4gPiA+ID4gPiB3aXRoIHNpbmdsZSBt ZW1wb29sIHNjaGVtZSBhbHNvLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIyBJIHRoaW5rLCBvbmUg b2YgdGhlIG90aGVyIHVzZSBjYXNlIGZvciAibWF0Y2hlc19zdGFydF9vZmZzZXQiIHRoYXQsDQo+ ID4gPiA+ID4gSXQgbWF5IHBvc3NpYmxlIHRvIHB1dCB2ZW5kb3Itc3BlY2lmaWMNCj4gPiA+ID4g PiBvcGFxdWUgZGF0YS4gSXQgd2lsbCBiZSBmaWxsZWQgYnkgZHJpdmVyIG9uIHJlc3BvbnNlLiBU aGUgYXBwbGljYXRpb24NCj4gPiA+ID4gPiBjYW4gcmVmZXJlbmNlIHRoZSBtYXRjaGVzIGFzDQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiBzdHJ1Y3QgcnRlX3JlZ2V4X21hdGNoICptYXRjaGVzID0gUlRF X1BUUl9BREQob3BzLCBvcHMtDQo+ID4gPiA+ID4NCj4gPiA+ID4gPm1hdGNoZXNfc3RhcnRfb2Zm c2V0KTsNCj4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBPLksgZm9yIG5vdyB3ZSB3aWxsIGtl ZXAgIGl0IGFzIGlzLCBhbmQgd2Ugd2lsbCBzZWUgd2hhdCB3aWxsIGJlIGluIHRoZQ0KPiBmdXR1 cmUuDQo+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBJIGFzc3VtZSB5b3Ugd2ls bCBzZW5kIHRoZSB2NCB3aXRoIHRoZXNlIGNvbW1lbnRzLiBJIHRoaW5rLCB3aXRoIHY0DQo+IHdl DQo+ID4gPiA+ID4gPiA+IGNhbiBzdGFydCBpbXBsZW1lbnRpbmcgY29tbW9uIGxpYnJhcnkgY29k ZS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBKdXN0IG5lZWQgdG8gYWdyZWUgb24gdGhlIHNw bGl0IChvbmUgbW9yZSBpdGVyYXRpb24gKQ0KPiA+ID4gPiA+ID4gYW5kIEkgd2lsbCBzdGFydCB3 b3JraW5nIG9uIHRoZSBjb21tb24gY29kZS4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEFjay4NCj4g PiA+ID4NCj4gPiA+ID4gR3JlYXQsDQo+ID4gPiA+IEknbSBzdGFydGluZyB0byB3b3JrIG9uIFY0 IHdpdGggYWxsIGNvbW1lbnRzIHNvIHRoZSBSRkMgd2lsbCBiZSBhY2tlZCBhbmQNCj4gPiA+IHRo ZW4gd2lsbCBzdGFydA0KPiA+ID4gPiBjb2RpbmcgdGhlIHJlc3Qgb2YgdGhlIGNvbW1vbiBjb2Rl Lg0KPiA+ID4gPg0K