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 29F4DA0527; Wed, 8 Jul 2020 17:51:48 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1F2A51E48D; Wed, 8 Jul 2020 17:51:47 +0200 (CEST) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30086.outbound.protection.outlook.com [40.107.3.86]) by dpdk.org (Postfix) with ESMTP id 7E9E11DF90 for ; Wed, 8 Jul 2020 17:51:45 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bGzLhxHUNiTFdTdk7OuqQNQmyjgGb9d58sNv9Ld4gdwIE0Ttv+ZNy93kZdj+0+OVUT5hYFL9juBfsGmoITgFNVbIZ3/uXGB9wKsholF3Isvh8vTFPiyn3AWZYFRFgYTtAEjtveNK7Xb6gqnzRxR9RsEai1kFvTcQElcwGAld63X2EypaXpy/ZH2qiV0kEPO5and9jSJLMzlEsZJTTBoTMj5u4tlmNxhxj/8hsr2tZvxl7tHDpa26ZoyPUIahiyy5KNkt/up7ksUDtLpXMNka/5hAHMTVFPI0wjdY4gcV1LsR+6so5GshRbKzjBCHAQC4IQFEXkc+JQr+IiXzZxdQww== 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=Z9snYFuJez5T7uTW1WmphRcPSKcF8E2LE7eetuhPKpg=; b=CoiJLPP869nTuob9HT3f16d7vaKyLlT4TNUidTKqoHxaGDxt+yv98myl5myV2a+i2PV7VR7wMtMgQ9/HQyZvjuw1y8LHQJpVbbCtQ7+V4O9vXh9eA9ae1nC0oxOMWmwjLmOcCXU3S+VrGm5m+9oZshqIgF3xU0BKV4wRbA4h+t0jQ9yvwpxnFCAoqJMAPURg04MMx0l3VMQfEu2UggJ/8gIcGNnYEAYUFxmX4V3pS8oeMC7Zs7IvKnxypu5H1zJp/P2LR6p2AwUAozRpeKI5PCJwts5zc9hqu6NQ1yudmG/sdB0wf6LQruvUqpE3VvybeOc9vK2l4D5QLyrhKqG4cQ== 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=Z9snYFuJez5T7uTW1WmphRcPSKcF8E2LE7eetuhPKpg=; b=b/yQxQSAgoGaMU3HTuMkmroR44RpBehbEY/DajFXaBWy3UrFLtLfFYhE/3FE5IIQ+57usJ38VopswMCoqSHwGfVtgFyniCCFG8TQCwdQSy/vDHqP3cryuRgGYIw9RoFv0n+QFrMa0QhngbZRGRa2a087tLV1UNgvy8Qr2Eeqo2k= Received: from AM4PR05MB3265.eurprd05.prod.outlook.com (2603:10a6:205:8::26) by AM0PR05MB6708.eurprd05.prod.outlook.com (2603:10a6:20b:144::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3153.20; Wed, 8 Jul 2020 15:51:43 +0000 Received: from AM4PR05MB3265.eurprd05.prod.outlook.com ([fe80::194e:dc46:7543:50ed]) by AM4PR05MB3265.eurprd05.prod.outlook.com ([fe80::194e:dc46:7543:50ed%2]) with mapi id 15.20.3174.022; Wed, 8 Jul 2020 15:51:43 +0000 From: Slava Ovsiienko To: =?utf-8?B?TW9ydGVuIEJyw7hydXA=?= , "dev@dpdk.org" CC: Matan Azrad , Raslan Darawsheh , "olivier.matz@6wind.com" , "bernard.iremonger@intel.com" , "thomas@mellanox.net" Thread-Topic: [dpdk-dev] [PATCH v4 1/2] mbuf: introduce accurate packet Txscheduling Thread-Index: AQHWVTJRtpVhbms7BUGtcj8QA0ZT26j9vBYwgAAKtNCAAA1YAA== Date: Wed, 8 Jul 2020 15:51:43 +0000 Message-ID: References: <1591771085-24959-1-git-send-email-viacheslavo@mellanox.com> <1594133832-12785-1-git-send-email-viacheslavo@mellanox.com> <98CBD80474FA8B44BF855DF32C47DC35C61109@smartserver.smartshare.dk> <98CBD80474FA8B44BF855DF32C47DC35C6110B@smartserver.smartshare.dk> In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35C6110B@smartserver.smartshare.dk> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: smartsharesystems.com; dkim=none (message not signed) header.d=none; smartsharesystems.com; dmarc=none action=none header.from=mellanox.com; x-originating-ip: [95.164.10.10] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 247f3af4-1aae-45da-85cb-08d82356d008 x-ms-traffictypediagnostic: AM0PR05MB6708: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtFwd x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 04583CED1A x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: HbVjR2s50Xr2bb6VEGB8f9ZhhIJRtIAqixOD1vG5IbmgGto6AJMmcZ2kbP/79shHTtZ2LCh46ZGgDbqBifFxV80O6ZpJELuVPSVUvbjxWePe9PN49qkbfu8AIHK0NXxBIfjYB3myoKTkXlqvLeh9YU7vADbTlaQaEDZ+170iueITfKwZxA4yHN7UEFKaNIudoGbNDBwGnS58OJWn/e6hNbd/9eodgT4E77nX3Z2hOP11U/fnYPj5knWsb0IqJAzlJjSpG1OVFkHnOeUiQMpyuZcBRTyrOpmWzd+T3bVtCKMBW+7oXqhEouVOIP/m20daWnAlqJw79Mw5DU4s4agb8Q== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM4PR05MB3265.eurprd05.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(4636009)(136003)(376002)(346002)(39860400002)(366004)(396003)(186003)(66476007)(66556008)(64756008)(66446008)(55016002)(2906002)(7696005)(110136005)(316002)(54906003)(4326008)(66946007)(86362001)(76116006)(71200400001)(30864003)(6506007)(53546011)(26005)(83380400001)(66574015)(33656002)(52536014)(9686003)(5660300002)(8676002)(8936002)(478600001); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: bpA2fER//KQuz8PC2oW4eHJwpXggwpjA/eeWfH34QgqZUk+eJgXiLgaYYEWLBWOAAGL2cZQtxPHdSXuG3szsyUCuuD5mamzlGmYwS8LtwBhbfNHlcJd/eEsIBqZBUK+f5+gBlIbbXHwJMDL2q/iDd+rrr484K6wg2WwDij3ElfXkecyrV1jMkhrsl89uB1ep5YiGdAUxE9f40H4LkycmZefP5nCA5c7CsT+SJcX2BiHU7CRTfiE35jXT4tZN47+2FnFvfjDNZjtthTpKmNnt40vLvZ+dFdZyDEigdAlW/T//7vmozFzs1bpV86BwlOAk6w9YnUbMWQzba0rcUjhSOObJcpPw3kuLVmfH4aA1QxGaIKXeYLU8sqcdoUCqzxn6Gw1DjiPvmvDIgM7I/8AQOXEppRnGiIVZhYfhAB9gh03D9oEztsIBp9vKLDCg1epyoUXbIA7JLjNKtH52AytTkcko2G5q1eDC6amRKHaLfGU= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM4PR05MB3265.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 247f3af4-1aae-45da-85cb-08d82356d008 X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Jul 2020 15:51:43.5715 (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: URc7/lPoWR5Dwz2a6kfxxWJUMkv6QI6BxCi+cOOCe4K9/16U+YywznfQoy6fPj7UQC+87iTz4+D4s6EdzO8yGil5alswRxWEuJfexmD3K60= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR05MB6708 Subject: Re: [dpdk-dev] [PATCH v4 1/2] mbuf: introduce accurate packet Txscheduling 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" SGksIE1vcnRlbg0KDQpBZGRyZXNzZWQgbW9zdCBvZiB5b3VyIGNvbW1lbnRzIGluIHRoZSB2NSBj b21taXQgbWVzc2FnZS4NCkhlYWRlciBmaWxlIGNvbW1lbnRzIGFyZSBjbG9zZSB0byBiZWNvbWUg dG9vIHdvcmR5LA0KYW5kIEkgZGlkIG5vdCBkYXJlIHRvIGVsYWJvcmF0ZSBvbmVzIG1vcmUuDQoN CldpdGggYmVzdCByZWdhcmRzLCBTbGF2YQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+IEZyb206IE1vcnRlbiBCcsO4cnVwIDxtYkBzbWFydHNoYXJlc3lzdGVtcy5jb20+DQo+IFNl bnQ6IFdlZG5lc2RheSwgSnVseSA4LCAyMDIwIDE4OjI3DQo+IFRvOiBTbGF2YSBPdnNpaWVua28g PHZpYWNoZXNsYXZvQG1lbGxhbm94LmNvbT47IGRldkBkcGRrLm9yZw0KPiBDYzogTWF0YW4gQXpy YWQgPG1hdGFuQG1lbGxhbm94LmNvbT47IFJhc2xhbiBEYXJhd3NoZWgNCj4gPHJhc2xhbmRAbWVs bGFub3guY29tPjsgb2xpdmllci5tYXR6QDZ3aW5kLmNvbTsNCj4gYmVybmFyZC5pcmVtb25nZXJA aW50ZWwuY29tOyB0aG9tYXNAbWVsbGFub3gubmV0DQo+IFN1YmplY3Q6IFJFOiBbZHBkay1kZXZd IFtQQVRDSCB2NCAxLzJdIG1idWY6IGludHJvZHVjZSBhY2N1cmF0ZSBwYWNrZXQNCj4gVHhzY2hl ZHVsaW5nDQo+IA0KPiA+IEZyb206IGRldiBbbWFpbHRvOmRldi1ib3VuY2VzQGRwZGsub3JnXSBP biBCZWhhbGYgT2YgU2xhdmEgT3ZzaWllbmtvDQo+ID4gU2VudDogV2VkbmVzZGF5LCBKdWx5IDgs IDIwMjAgNDo1NCBQTQ0KPiA+DQo+ID4gSGksIE1vcnRlbg0KPiA+DQo+ID4gVGhhbmsgeW91IGZv ciB0aGUgY29tbWVudHMuIFBsZWFzZSwgc2VlIGJlbG93Lg0KPiA+DQo+ID4gPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogTW9ydGVuIEJyw7hydXAgPG1iQHNtYXJ0c2hh cmVzeXN0ZW1zLmNvbT4NCj4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgSnVseSA4LCAyMDIwIDE3OjE2 DQo+ID4gPiBUbzogU2xhdmEgT3ZzaWllbmtvIDx2aWFjaGVzbGF2b0BtZWxsYW5veC5jb20+OyBk ZXZAZHBkay5vcmcNCj4gPiA+IENjOiBNYXRhbiBBenJhZCA8bWF0YW5AbWVsbGFub3guY29tPjsg UmFzbGFuIERhcmF3c2hlaA0KPiA+ID4gPHJhc2xhbmRAbWVsbGFub3guY29tPjsgb2xpdmllci5t YXR6QDZ3aW5kLmNvbTsNCj4gPiA+IGJlcm5hcmQuaXJlbW9uZ2VyQGludGVsLmNvbTsgdGhvbWFz QG1lbGxhbm94Lm5ldA0KPiA+ID4gU3ViamVjdDogUkU6IFtkcGRrLWRldl0gW1BBVENIIHY0IDEv Ml0gbWJ1ZjogaW50cm9kdWNlIGFjY3VyYXRlDQo+ID4gcGFja2V0DQo+ID4gPiBUeHNjaGVkdWxp bmcNCj4gPiA+DQo+ID4gPiA+IEZyb206IGRldiBbbWFpbHRvOmRldi1ib3VuY2VzQGRwZGsub3Jn XSBPbiBCZWhhbGYgT2YgVmlhY2hlc2xhdg0KPiA+ID4gPiBPdnNpaWVua28NCj4gPiA+ID4gU2Vu dDogVHVlc2RheSwgSnVseSA3LCAyMDIwIDQ6NTcgUE0NCj4gPiA+ID4NCj4gPiA+ID4gVGhlcmUg aXMgdGhlIHJlcXVpcmVtZW50IG9uIHNvbWUgbmV0d29ya3MgZm9yIHByZWNpc2UgdHJhZmZpYw0K PiA+IHRpbWluZw0KPiA+ID4gPiBtYW5hZ2VtZW50LiBUaGUgYWJpbGl0eSB0byBzZW5kIChhbmQs IGdlbmVyYWxseSBzcGVha2luZywgcmVjZWl2ZSkNCj4gPiB0aGUNCj4gPiA+ID4gcGFja2V0cyBh dCB0aGUgdmVyeSBwcmVjaXNlbHkgc3BlY2lmaWVkIG1vbWVudCBvZiB0aW1lIHByb3ZpZGVzDQo+ ID4gPiA+IHRoZSBvcHBvcnR1bml0eSB0byBzdXBwb3J0IHRoZSBjb25uZWN0aW9ucyB3aXRoIFRp bWUgRGl2aXNpb24NCj4gPiBNdWx0aXBsZXhpbmcNCj4gPiA+ID4gdXNpbmcgdGhlIGNvbnRlbXBv cmFyeSBnZW5lcmFsIHB1cnBvc2UgTklDIHdpdGhvdXQgaW52b2x2aW5nIGFuDQo+ID4gPiA+IGF1 eGlsaWFyeSBoYXJkd2FyZS4gRm9yIGV4YW1wbGUsIHRoZSBzdXBwb3J0aW5nIG9mIE8tUkFOIEZy b250aGF1bA0KPiA+ID4gPiBpbnRlcmZhY2UgaXMgb25lIG9mIHRoZSBwcm9taXNpbmcgZmVhdHVy ZXMgZm9yIHBvdGVudGlhbGx5IHVzYWdlDQo+ID4gPiA+IG9mIHRoZSBwcmVjaXNlIHRpbWUgbWFu YWdlbWVudCBmb3IgdGhlIGVncmVzcyBwYWNrZXRzLg0KPiA+ID4gPg0KPiA+ID4gPiBUaGUgbWFp biBvYmplY3RpdmUgb2YgdGhpcyBSRkMgaXMgdG8gc3BlY2lmeSB0aGUgd2F5IGhvdw0KPiA+IGFw cGxpY2F0aW9ucw0KPiA+ID4gPiBjYW4gcHJvdmlkZSB0aGUgbW9tZW50IG9mIHRpbWUgYXQgd2hh dCB0aGUgcGFja2V0IHRyYW5zbWlzc2lvbg0KPiA+ID4gPiBtdXN0DQo+ID4gYmUNCj4gPiA+ID4g c3RhcnRlZCBhbmQgdG8gZGVzY3JpYmUgaW4gcHJlbGltaW5hcnkgdGhlIHN1cHBvcnRpbmcgdGhp cyBmZWF0dXJlDQo+ID4gPiA+IGZyb20NCj4gPiA+ID4gbWx4NSBQTUQgc2lkZS4NCj4gPiA+ID4N Cj4gPiA+ID4gVGhlIG5ldyBkeW5hbWljIHRpbWVzdGFtcCBmaWVsZCBpcyBwcm9wb3NlZCwgaXQg cHJvdmlkZXMgc29tZQ0KPiA+IHRpbWluZw0KPiA+ID4gPiBpbmZvcm1hdGlvbiwgdGhlIHVuaXRz IGFuZCB0aW1lIHJlZmVyZW5jZXMgKGluaXRpYWwgcGhhc2UpIGFyZSBub3QNCj4gPiA+ID4gZXhw bGljaXRseSBkZWZpbmVkIGJ1dCBhcmUgbWFpbnRhaW5lZCBhbHdheXMgdGhlIHNhbWUgZm9yIGEg Z2l2ZW4NCj4gPiBwb3J0Lg0KPiA+ID4gPiBTb21lIGRldmljZXMgYWxsb3cgdG8gcXVlcnkgcnRl X2V0aF9yZWFkX2Nsb2NrKCkgdGhhdCB3aWxsIHJldHVybg0KPiA+IHRoZQ0KPiA+ID4gPiBjdXJy ZW50IGRldmljZSB0aW1lc3RhbXAuIFRoZSBkeW5hbWljIHRpbWVzdGFtcCBmbGFnIHRlbGxzIHdo ZXRoZXINCj4gPiB0aGUNCj4gPiA+ID4gZmllbGQgY29udGFpbnMgYWN0dWFsIHRpbWVzdGFtcCB2 YWx1ZS4gRm9yIHRoZSBwYWNrZXRzIGJlaW5nIHNlbnQNCj4gPiB0aGlzDQo+ID4gPiA+IHZhbHVl IGNhbiBiZSB1c2VkIGJ5IFBNRCB0byBzY2hlZHVsZSBwYWNrZXQgc2VuZGluZy4NCj4gPiA+ID4N Cj4gPiA+ID4gQWZ0ZXIgUEtUX1JYX1RJTUVTVEFNUCBmbGFnIGFuZCBmaXhlZCB0aW1lc3RhbXAg ZmllbGQgZGVwcmVjYXRpb24NCj4gPiBhbmQNCj4gPiA+ID4gb2Jzb2xldGluZywgdGhlc2UgZHlu YW1pYyBmbGFnIGFuZCBmaWVsZCB3aWxsIGJlIHVzZWQgdG8gbWFuYWdlDQo+ID4gPiA+IHRoZSB0 aW1lc3RhbXBzIG9uIHJlY2VpdmluZyBkYXRhcGF0aCBhcyB3ZWxsLg0KPiA+ID4gPg0KPiA+ID4g PiBXaGVuIFBNRCBzZWVzIHRoZSAicnRlX2R5bmZpZWxkX3RpbWVzdGFtcCIgc2V0IG9uIHRoZSBw YWNrZXQgYmVpbmcNCj4gPiA+ID4gc2VudCBpdCB0cmllcyB0byBzeW5jaHJvbml6ZSB0aGUgdGlt ZSBvZiBwYWNrZXQgYXBwZWFyaW5nIG9uIHRoZQ0KPiA+IHdpcmUNCj4gPiA+ID4gd2l0aCB0aGUg c3BlY2lmaWVkIHBhY2tldCB0aW1lc3RhbXAuIElmIHRoZSBzcGVjaWZpZWQgb25lIGlzIGluDQo+ ID4gPiA+IHRoZSBwYXN0IGl0IHNob3VsZCBiZSBpZ25vcmVkLCBpZiBvbmUgaXMgaW4gdGhlIGRp c3RhbnQgZnV0dXJlIGl0DQo+ID4gc2hvdWxkDQo+ID4gPiA+IGJlIGNhcHBlZCB3aXRoIHNvbWUg cmVhc29uYWJsZSB2YWx1ZSAoaW4gcmFuZ2Ugb2Ygc2Vjb25kcykuIFRoZXNlDQo+ID4gPiA+IHNw ZWNpZmljIGNhc2VzICgidG9vIGxhdGUiIGFuZCAiZGlzdGFudCBmdXR1cmUiKSBjYW4gYmUgb3B0 aW9uYWxseQ0KPiA+ID4gPiByZXBvcnRlZCB2aWEgZGV2aWNlIHhzdGF0cyB0byBhc3Npc3QgYXBw bGljYXRpb25zIHRvIGRldGVjdCB0aGUNCj4gPiA+ID4gdGltZS1yZWxhdGVkIHByb2JsZW1zLg0K PiA+ID4gPg0KPiA+ID4gPiBUaGVyZSBpcyBubyBhbnkgcGFja2V0IHJlb3JkZXJpbmcgYWNjb3Jk aW5nIHRpbWVzdGFtcHMgaXMNCj4gPiA+ID4gc3VwcG9zZWQsIG5laXRoZXIgd2l0aGluIHBhY2tl dCBidXJzdCwgbm9yIGJldHdlZW4gcGFja2V0cywgaXQgaXMNCj4gPiA+ID4gYW4gZW50aXJlbHkg YXBwbGljYXRpb24gcmVzcG9uc2liaWxpdHkgdG8gZ2VuZXJhdGUgcGFja2V0cyBhbmQgaXRzDQo+ ID4gPiA+IHRpbWVzdGFtcHMNCj4gPiBpbg0KPiA+ID4gPiBkZXNpcmVkIG9yZGVyLiBUaGUgdGlt ZXN0YW1wcyBjYW4gYmUgcHV0IG9ubHkgaW4gdGhlIGZpcnN0IHBhY2tldA0KPiA+IGluDQo+ID4g PiA+IHRoZSBidXJzdCBwcm92aWRpbmcgdGhlIGVudGlyZSBidXJzdCBzY2hlZHVsaW5nLg0KPiA+ ID4gPg0KPiA+ID4gPiBQTUQgcmVwb3J0cyB0aGUgYWJpbGl0eSB0byBzeW5jaHJvbml6ZSBwYWNr ZXQgc2VuZGluZyBvbiB0aW1lc3RhbXANCj4gPiA+ID4gd2l0aCBuZXcgb2ZmbG9hZCBmbGFnOg0K PiA+ID4gPg0KPiA+ID4gPiBUaGlzIGlzIHBhbGxpYXRpdmUgYW5kIGlzIGdvaW5nIHRvIGJlIHJl cGxhY2VkIHdpdGggbmV3IGV0aF9kZXYNCj4gPiA+ID4gQVBJIGFib3V0IHJlcG9ydGluZy9tYW5h Z2luZyB0aGUgc3VwcG9ydGVkIGR5bmFtaWMgZmxhZ3MgYW5kIGl0cw0KPiA+IHJlbGF0ZWQNCj4g PiA+ID4gZmVhdHVyZXMuIFRoaXMgQVBJIHdvdWxkIGJyZWFrIEFCSSBjb21wYXRpYmlsaXR5IGFu ZCBjYW4ndCBiZQ0KPiA+ID4gPiBpbnRyb2R1Y2VkIGF0IHRoZSBtb21lbnQsIHNvIGlzIHBvc3Rw b25lZCB0byAyMC4xMS4NCj4gPiA+ID4NCj4gPiA+ID4gRm9yIHRlc3RpbmcgcHVycG9zZXMgaXQg aXMgcHJvcG9zZWQgdG8gdXBkYXRlIHRlc3RwbWQgInR4b25seSINCj4gPiA+ID4gZm9yd2FyZGlu ZyBtb2RlIHJvdXRpbmUuIFdpdGggdGhpcyB1cGRhdGUgdGVzdHBtZCBhcHBsaWNhdGlvbg0KPiA+ ID4gPiBnZW5lcmF0ZXMgdGhlIHBhY2tldHMgYW5kIHNldHMgdGhlIGR5bmFtaWMgdGltZXN0YW1w cyBhY2NvcmRpbmcgdG8NCj4gPiA+ID4gc3BlY2lmaWVkIHRpbWUgcGF0dGVybiBpZiBpdCBzZWVz IHRoZSAicnRlX2R5bmZpZWxkX3RpbWVzdGFtcCIgaXMNCj4gPiByZWdpc3RlcmVkLg0KPiA+ID4g Pg0KPiA+ID4gPiBUaGUgbmV3IHRlc3RwbWQgY29tbWFuZCBpcyBwcm9wb3NlZCB0byBjb25maWd1 cmUgc2VuZGluZyBwYXR0ZXJuOg0KPiA+ID4gPg0KPiA+ID4gPiBzZXQgdHhfdGltZXMgPGJ1cnN0 X2dhcD4sPGludHJhX2dhcD4NCj4gPiA+ID4NCj4gPiA+ID4gPGludHJhX2dhcD4gLSB0aGUgZGVs YXkgYmV0d2VlbiB0aGUgcGFja2V0cyB3aXRoaW4gdGhlIGJ1cnN0DQo+ID4gPiA+ICAgICAgICAg ICAgICAgc3BlY2lmaWVkIGluIHRoZSBkZXZpY2UgY2xvY2sgdW5pdHMuIFRoZSBudW1iZXINCj4g PiA+ID4gICAgICAgICAgICAgICBvZiBwYWNrZXRzIGluIHRoZSBidXJzdCBpcyBkZWZpbmVkIGJ5 IHR4YnVyc3QNCj4gPiBwYXJhbWV0ZXINCj4gPiA+ID4NCj4gPiA+ID4gPGJ1cnN0X2dhcD4gLSB0 aGUgZGVsYXkgYmV0d2VlbiB0aGUgYnVyc3RzIGluIHRoZSBkZXZpY2UgY2xvY2sNCj4gPiB1bml0 cw0KPiA+ID4gPg0KPiA+ID4gPiBBcyB0aGUgcmVzdWx0IHRoZSBidXJzdHMgb2YgcGFja2V0IHdp bGwgYmUgdHJhbnNtaXR0ZWQgd2l0aA0KPiA+IHNwZWNpZmljDQo+ID4gPiA+IGRlbGF5cyBiZXR3 ZWVuIHRoZSBwYWNrZXRzIHdpdGhpbiB0aGUgYnVyc3QgYW5kIHNwZWNpZmljIGRlbGF5DQo+ID4g YmV0d2Vlbg0KPiA+ID4gPiB0aGUgYnVyc3RzLiBUaGUgcnRlX2V0aF9nZXRfY2xvY2sgaXMgc3Vw cG9zZWQgdG8gYmUgZW5nYWdlZCB0byBnZXQNCj4gPiB0aGUNCj4gPiA+ID4gY3VycmVudCBkZXZp Y2UgY2xvY2sgdmFsdWUgYW5kIHByb3ZpZGUgdGhlIHJlZmVyZW5jZSBmb3IgdGhlDQo+ID4gPiA+ IHRpbWVzdGFtcHMuDQo+ID4gPiA+DQo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IFZpYWNoZXNsYXYg T3ZzaWllbmtvIDx2aWFjaGVzbGF2b0BtZWxsYW5veC5jb20+DQo+ID4gPiA+IC0tLQ0KPiA+ID4g PiAgdjEtPnY0Og0KPiA+ID4gPiAgICAgLSBkZWRpY2F0ZWQgZHluYW1pYyBUeCB0aW1lc3RhbXAg ZmxhZyBpbnN0ZWFkIG9mIHNoYXJlZCB3aXRoDQo+ID4gPiA+IFJ4DQo+ID4gPg0KPiA+ID4gVGhl IGRldGFpbGVkIGRlc2NyaXB0aW9uIGFib3ZlIHNob3VsZCBiZSB1cGRhdGVkIHRvIHJlZmxlY3Qg dGhhdCBpdA0KPiA+IGlzIG5vdw0KPiA+ID4gdHdvIGZsYWdzLg0KPiA+IE9LDQo+ID4NCj4gPiA+ DQo+ID4gPiA+ICAgICAtIERveHlnZW4tc3R5bGUgY29tbWVudA0KPiA+ID4gPiAgICAgLSBjb21t ZW50cyB1cGRhdGUNCj4gPiA+ID4NCj4gPiA+ID4gLS0tDQo+ID4gPiA+ICBsaWIvbGlicnRlX2V0 aGRldi9ydGVfZXRoZGV2LmMgfCAgMSArDQo+ID4gbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2V0aGRl di5oDQo+ID4gPiA+IHwgIDQgKysrKyAgbGliL2xpYnJ0ZV9tYnVmL3J0ZV9tYnVmX2R5bi5oIHwg MzENCj4gPiA+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ID4gPiAgMyBm aWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspDQo+ID4gPiA+DQo+ID4gPiA+IGRpZmYgLS1n aXQgYS9saWIvbGlicnRlX2V0aGRldi9ydGVfZXRoZGV2LmMNCj4gPiA+ID4gYi9saWIvbGlicnRl X2V0aGRldi9ydGVfZXRoZGV2LmMgaW5kZXggOGUxMGE2Zi4uMDIxNTdkNSAxMDA2NDQNCj4gPiA+ ID4gLS0tIGEvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2V0aGRldi5jDQo+ID4gPiA+ICsrKyBiL2xp Yi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXYuYw0KPiA+ID4gPiBAQCAtMTYyLDYgKzE2Miw3IEBA IHN0cnVjdCBydGVfZXRoX3hzdGF0c19uYW1lX29mZiB7DQo+ID4gPiA+ICAJUlRFX1RYX09GRkxP QURfQklUMlNUUihVRFBfVE5MX1RTTyksDQo+ID4gPiA+ICAJUlRFX1RYX09GRkxPQURfQklUMlNU UihJUF9UTkxfVFNPKSwNCj4gPiA+ID4gIAlSVEVfVFhfT0ZGTE9BRF9CSVQyU1RSKE9VVEVSX1VE UF9DS1NVTSksDQo+ID4gPiA+ICsJUlRFX1RYX09GRkxPQURfQklUMlNUUihTRU5EX09OX1RJTUVT VEFNUCksDQo+ID4gPiA+ICB9Ow0KPiA+ID4gPg0KPiA+ID4gPiAgI3VuZGVmIFJURV9UWF9PRkZM T0FEX0JJVDJTVFINCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9l dGhkZXYuaA0KPiA+ID4gPiBiL2xpYi9saWJydGVfZXRoZGV2L3J0ZV9ldGhkZXYuaCBpbmRleCBh NDkyNDJiLi42ZjY0NTRjIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9saWIvbGlicnRlX2V0aGRldi9y dGVfZXRoZGV2LmgNCj4gPiA+ID4gKysrIGIvbGliL2xpYnJ0ZV9ldGhkZXYvcnRlX2V0aGRldi5o DQo+ID4gPiA+IEBAIC0xMTc4LDYgKzExNzgsMTAgQEAgc3RydWN0IHJ0ZV9ldGhfY29uZiB7DQo+ ID4gPiA+ICAvKiogRGV2aWNlIHN1cHBvcnRzIG91dGVyIFVEUCBjaGVja3N1bSAqLyAgI2RlZmlu ZQ0KPiA+ID4gPiBERVZfVFhfT0ZGTE9BRF9PVVRFUl9VRFBfQ0tTVU0gIDB4MDAxMDAwMDANCj4g PiA+ID4NCj4gPiA+ID4gKy8qKiBEZXZpY2Ugc3VwcG9ydHMgc2VuZCBvbiB0aW1lc3RhbXAgKi8g I2RlZmluZQ0KPiA+ID4gPiArREVWX1RYX09GRkxPQURfU0VORF9PTl9USU1FU1RBTVAgMHgwMDIw MDAwMA0KPiA+ID4gPiArDQo+ID4gPiA+ICsNCj4gPiA+ID4gICNkZWZpbmUgUlRFX0VUSF9ERVZf Q0FQQV9SVU5USU1FX1JYX1FVRVVFX1NFVFVQDQo+IDB4MDAwMDAwMDENCj4gPiA+IC8qKjwNCj4g PiA+ID4gRGV2aWNlIHN1cHBvcnRzIFJ4IHF1ZXVlIHNldHVwIGFmdGVyIGRldmljZSBzdGFydGVk Ki8gICNkZWZpbmUNCj4gPiA+ID4gUlRFX0VUSF9ERVZfQ0FQQV9SVU5USU1FX1RYX1FVRVVFX1NF VFVQIDB4MDAwMDAwMDIgZGlmZiAtLQ0KPiBnaXQNCj4gPiA+ID4gYS9saWIvbGlicnRlX21idWYv cnRlX21idWZfZHluLmggYi9saWIvbGlicnRlX21idWYvcnRlX21idWZfZHluLmgNCj4gPiA+ID4g aW5kZXggOTZjMzYzMS4uN2U5ZjdkMiAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvbGliL2xpYnJ0ZV9t YnVmL3J0ZV9tYnVmX2R5bi5oDQo+ID4gPiA+ICsrKyBiL2xpYi9saWJydGVfbWJ1Zi9ydGVfbWJ1 Zl9keW4uaA0KPiA+ID4gPiBAQCAtMjUwLDQgKzI1MCwzNSBAQCBpbnQgcnRlX21idWZfZHluZmxh Z19sb29rdXAoY29uc3QgY2hhcg0KPiAqbmFtZSwNCj4gPiA+ID4gI2RlZmluZSBSVEVfTUJVRl9E WU5GSUVMRF9NRVRBREFUQV9OQU1FDQo+ID4gPiAicnRlX2Zsb3dfZHluZmllbGRfbWV0YWRhdGEi DQo+ID4gPiA+ICAjZGVmaW5lIFJURV9NQlVGX0RZTkZMQUdfTUVUQURBVEFfTkFNRQ0KPiA+ID4g InJ0ZV9mbG93X2R5bmZsYWdfbWV0YWRhdGEiDQo+ID4gPiA+DQo+ID4gPiA+ICsvKioNCj4gPiA+ ID4gKyAqIFRoZSB0aW1lc3RhbXAgZHluYW1pYyBmaWVsZCBwcm92aWRlcyBzb21lIHRpbWluZyBp bmZvcm1hdGlvbiwNCj4gPiB0aGUNCj4gPiA+ID4gKyAqIHVuaXRzIGFuZCB0aW1lIHJlZmVyZW5j ZXMgKGluaXRpYWwgcGhhc2UpIGFyZSBub3QgZXhwbGljaXRseQ0KPiA+ID4gPiBkZWZpbmVkDQo+ ID4gPiA+ICsgKiBidXQgYXJlIG1haW50YWluZWQgYWx3YXlzIHRoZSBzYW1lIGZvciBhIGdpdmVu IHBvcnQuIFNvbWUNCj4gPiBkZXZpY2VzDQo+ID4gPiA+IGFsbG93NA0KPiA+ID4gPiArICogdG8g cXVlcnkgcnRlX2V0aF9yZWFkX2Nsb2NrKCkgdGhhdCB3aWxsIHJldHVybiB0aGUgY3VycmVudA0K PiA+IGRldmljZQ0KPiA+ID4gPiArICogdGltZXN0YW1wLiBUaGUgZHluYW1pYyBUeCB0aW1lc3Rh bXAgZmxhZyB0ZWxscyB3aGV0aGVyIHRoZQ0KPiA+IGZpZWxkDQo+ID4gPiA+IGNvbnRhaW5zDQo+ ID4gPiA+ICsgKiBhY3R1YWwgdGltZXN0YW1wIHZhbHVlLiBGb3IgdGhlIHBhY2tldHMgYmVpbmcg c2VudCB0aGlzIHZhbHVlDQo+ID4gY2FuDQo+ID4gPiA+IGJlDQo+ID4gPiA+ICsgKiB1c2VkIGJ5 IFBNRCB0byBzY2hlZHVsZSBwYWNrZXQgc2VuZGluZy4NCj4gPiA+ID4gKyAqDQo+ID4gPiA+ICsg KiBBZnRlciBQS1RfUlhfVElNRVNUQU1QIGZsYWcgYW5kIGZpeGVkIHRpbWVzdGFtcCBmaWVsZA0K PiA+IGRlcHJlY2F0aW9uDQo+ID4gPiA+ICsgKiBhbmQgb2Jzb2xldGluZywgdGhlIGRlZGljYXRl ZCBSeCB0aW1lc3RhbXAgZmxhZyBpcyBzdXBwb3NlZCB0bw0KPiA+IGJlDQo+ID4gPiA+ICsgKiBp bnRyb2R1Y2VkIGFuZCB0aGUgc2hhcmVkIGR5bmFtaWMgdGltZXN0YW1wIGZpZWxkIHdpbGwgYmUg dXNlZA0KPiA+ID4gPiArICogdG8gaGFuZGxlIHRoZSB0aW1lc3RhbXBzIG9uIHJlY2VpdmluZyBk YXRhcGF0aCBhcyB3ZWxsLg0KPiA+ID4gPiArICovDQo+ID4gPiA+ICsjZGVmaW5lIFJURV9NQlVG X0RZTkZJRUxEX1RJTUVTVEFNUF9OQU1FDQo+ID4gPiAicnRlX2R5bmZpZWxkX3RpbWVzdGFtcCIN Cj4gPiA+DQo+ID4gPiBUaGUgZGVzY3JpcHRpb24gYWJvdmUgc2hvdWxkIG5vdCBzYXkgYW55dGhp bmcgYWJvdXQgdGhlIGR5bmFtaWMgVFgNCj4gPiA+IHRpbWVzdGFtcCBmbGFnLg0KPiA+IEl0IGRv ZXMgbm90LiBPciBkbyB5b3UgbWVhbiBSWD8NCj4gPiBOb3Qgc3VyZSwgZmllbGQgYW5kIGZsYWcg YXJlIHRpZ2h0bHkgY291cGxlZCwgaXQgaXMgbmljZSB0byBtZW50aW9uDQo+ID4gdGhpcyByZWxh dGlvbiBmb3IgYmV0dGVyIHVuZGVyc3RhbmRpbmcuDQo+ID4gQW5kIG1lbnRpb25pbmcgdGhlIFJY IGV4cGxhaW5zIHdoeSBpdCBpcyBub3QgbGlrZSB0aGlzOg0KPiA+IFJURV9NQlVGX0RZTkZJRUxE X1tUWF1fVElNRVNUQU1QX05BTUUNCj4gDQo+IFNvcnJ5LiBJIG1pc3VuZGVyc3Rvb2QgaXRzIHB1 cnBvc2UhDQo+IEl0J3MgdGhlIG5hbWUgb2YgdGhlIGZpZWxkLCBhbmQgdGhlIGZpZWxkIHdpbGwg bm90IG9ubHkgYmUgdXNlZCBmb3IgUlgsIGJ1dCBpbiB0aGUNCj4gZnV0dXJlIGFsc28gZm9yIFJY Lg0KPiAoSSB0aG91Z2h0IGl0IHdhcyB0aGUgbmFtZSBvZiB0aGUgUlggZmxhZywgcmVzZXJ2ZWQg Zm9yIGZ1dHVyZSB1c2UuKQ0KPiANCj4gPg0KPiA+ID4NCj4gPiA+IFBsZWFzZSBlbGFib3JhdGUg InNvbWUgdGltaW5nIGluZm9ybWF0aW9uIiwgZS5nLiBhZGQgIi4uLiBhYm91dCB3aGVuDQo+ID4g dGhlDQo+ID4gPiBwYWNrZXQgd2FzIHJlY2VpdmVkIi4NCj4gPg0KPiA+IFNvcnJ5LCBJIGRvIG5v dCBmb2xsb3csICBjdXJyZW50bHkgdGhlIGR5bmFtaWMgZmllbGQgaXMgbm90ICJhYm91dA0KPiA+ IHdoZW4gdGhlIHBhY2tldCB3YXMgcmVjZWl2ZWQiLiBOb3cgaXQgaXMgaW50cm9kdWNlZCBmb3Ig VHggb25seSBhbmQNCj4gPiBqdXN0IHRoZSBvcHBvcnR1bml0eSB0byBiZSBzaGFyZWQgd2l0aCBS eCBvbmUgaW4gY29taW5nIHJlbGVhc2VzIGlzDQo+ID4gbWVudGlvbmVkLiAiU29tZSIgbWVhbnMg LSBub3Qgc3BlY2lmaWVkIChoZXJlaW4pIGV4YWN0bHkuDQo+ID4gQW5kIGl0IGlzIGVsYWJvcmF0 ZWQgd2hhdCBJcyBub3Qgc3BlY2lmaWVkIGFuZCBob3cgaXQgaXMgc3VwcG9zZWQgdG8NCj4gPiB1 c2UgVHggdGltZXN0YW1wLg0KPiANCj4gSXQgc2hvdWxkIGJlIGRlc2NyaWJlZCB3aGVuIGl0IGlz IHZhbGlkLCBhbmQgaG93IGl0IGlzIGJlaW5nIHVzZWQsIGUuZy4gYnkNCj4gYWRkaW5nIGEgcmVm ZXJlbmNlIHRvIHRoZSAicnRlX2R5bmZsYWdfdHhfdGltZXN0YW1wIiBmbGFnLg0KPiANCj4gPiA+ DQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiArICogV2hlbiBQTUQgc2VlcyB0aGUg UlRFX01CVUZfRFlORkxBR19UWF9USU1FU1RBTVBfTkFNRQ0KPiBmbGFnDQo+ID4gPiBzZXQgb24N Cj4gPiA+ID4gdGhlDQo+ID4gPiA+ICsgKiBwYWNrZXQgYmVpbmcgc2VudCBpdCB0cmllcyB0byBz eW5jaHJvbml6ZSB0aGUgdGltZSBvZiBwYWNrZXQNCj4gPiA+ID4gYXBwZWFyaW5nDQo+ID4gPiA+ ICsgKiBvbiB0aGUgd2lyZSB3aXRoIHRoZSBzcGVjaWZpZWQgcGFja2V0IHRpbWVzdGFtcC4gSWYg dGhlDQo+ID4gc3BlY2lmaWVkDQo+ID4gPiA+IG9uZQ0KPiA+ID4gPiArICogaXMgaW4gdGhlIHBh c3QgaXQgc2hvdWxkIGJlIGlnbm9yZWQsIGlmIG9uZSBpcyBpbiB0aGUgZGlzdGFudA0KPiA+ID4g PiBmdXR1cmUNCj4gPiA+ID4gKyAqIGl0IHNob3VsZCBiZSBjYXBwZWQgd2l0aCBzb21lIHJlYXNv bmFibGUgdmFsdWUgKGluIHJhbmdlIG9mDQo+ID4gPiA+IHNlY29uZHMpLg0KPiA+ID4gPiArICoN Cj4gPiA+ID4gKyAqIFRoZXJlIGlzIG5vIGFueSBwYWNrZXQgcmVvcmRlcmluZyBhY2NvcmRpbmcg dG8gdGltZXN0YW1wcyBpcw0KPiA+ID4gPiBzdXBwb3NlZCwNCj4gPiA+ID4gKyAqIG5laXRoZXIg Zm9yIHBhY2tldCB3aXRoaW4gdGhlIGJ1cnN0LCBub3IgZm9yIHRoZSB3aG9sZSBidXJzdHMsDQo+ ID4gaXQNCj4gPiA+ID4gaXMNCj4gPiA+ID4gKyAqIGFuIGVudGlyZWx5IGFwcGxpY2F0aW9uIHJl c3BvbnNpYmlsaXR5IHRvIGdlbmVyYXRlIHBhY2tldHMgYW5kDQo+ID4gaXRzDQo+ID4gPiA+ICsg KiB0aW1lc3RhbXBzIGluIGRlc2lyZWQgb3JkZXIuIFRoZSB0aW1lc3RhbXBzIG1pZ2h0IGJlIHB1 dCBvbmx5DQo+ID4gaW4NCj4gPiA+ID4gKyAqIHRoZSBmaXJzdCBwYWNrZXQgaW4gdGhlIGJ1cnN0 IHByb3ZpZGluZyB0aGUgZW50aXJlIGJ1cnN0DQo+ID4gPiA+IHNjaGVkdWxpbmcuDQo+ID4gPiA+ ICsgKi8NCj4gPiA+ID4gKyNkZWZpbmUgUlRFX01CVUZfRFlORkxBR19UWF9USU1FU1RBTVBfTkFN RQ0KPiA+ID4gInJ0ZV9keW5mbGFnX3R4X3RpbWVzdGFtcCINCj4gPiA+ID4gKw0KPiA+ID4gPiAg I2VuZGlmDQo+ID4gPiA+IC0tDQo+ID4gPiA+IDEuOC4zLjENCj4gPiA+ID4NCj4gPiA+DQo+ID4g PiBJdCBtYXkgYmUgd29ydGggYWRkaW5nIHNvbWUgZG9jdW1lbnRhdGlvbiBhYm91dCBob3cgdGhl IGNsb2NrcyBvZg0KPiA+ID4gdGhlIE5JQ3MgYXJlIG91dCBvZiBzeW5jIHdpdGggdGhlIGNsb2Nr IG9mIHRoZSBDUFUsIGFuZCBhcmUgYWxsDQo+ID4gPiBkcmlmdGluZw0KPiA+IHJlbGF0aXZlbHku DQo+ID4gPg0KPiA+ID4gQW5kIHRob3NlIGNsb2NrcyBhcmUgYWxzbyBvdXQgb2Ygc3luYyB3aXRo IHRoZSBhY3R1YWwgdGltZSAoTlRQDQo+ID4gY2xvY2spLg0KPiA+DQo+ID4gSU1PLCBJdCBpcyBv dXQgb2Ygc2NvcGUgb2YgdGhpcyB2ZXJ5IGdlbmVyaWMgcGF0Y2guICBBcyBmb3IgbWx4IE5JQ3Mg LQ0KPiA+IHRoZSBpbnRlcm5hbCBkZXZpY2UgY2xvY2sgbWlnaHQgYmUgKG9yIG1pZ2h0IGJlIG5v dCkgc3luY2hyb25pemVkIHdpdGgNCj4gPiBQVFAsIGl0IGNhbiBwcm92aWRlIHRpbWVzdGFtcHMg aW4gcmVhbCBuYW5vc2Vjb25kcyBpbiB2YXJpb3VzIGZvcm1hdHMNCj4gPiBvciBqdXN0IHNvbWUg ZnJlZSBydW5uaW5nIGNvdW50ZXIuDQo+IA0KPiBDb29sIQ0KPiANCj4gPiBPbiBzb21lIHN5c3Rl bXMgdGhlIE5JQyBhbmQgQ1BVIG1pZ2h0IHNoYXJlIHRoZSBzYW1lIGNsb2NrIHNvdXJjZSAoZm9y DQo+ID4gdGhlaXIgUExMIGlucHV0cyBmb3IgZXhhbXBsZSkgYW5kIHRoZXJlIHdpbGwgYmUgbm8g YW55IGRyaWZ0cy4gQXMgd2UNCj4gPiBjYW4gc2VlIC0gaXQgaXMgYSB3aWRlIGFuZCBpbnRlcmVz dGluZyBvcGljIHRvIGRpc2N1c3MsIGJ1dCwgSU1PLCAgdGhlDQo+ID4gY29tbWVudCBpbiBoZWFk ZXIgZmlsZSBtaWdodCBiZSBub3QgdGhlIG1vc3QgcmVsZXZhbnQgcGxhY2UgdG8gZG8uIEFzDQo+ ID4gZm9yIG1seDUgZGV2aWNlcyBjbG9jayBzcGVjaWZpY3MgLSBpdCB3aWxsIGJlIGRvY3VtZW50 ZWQgaW4gUE1EDQo+ID4gY2hhcHRlci4NCj4gPg0KPiA+IE9LLCB3aWxsIGFkZCBmZXcgZ2VuZXJp YyB3b3JkcywgdGhlIGZldyBvbmVzIC0gaW4gb3JkZXIgbm90IHRvIG1ha2UNCj4gPiBjb21tZW50 IHdvcmR5LCBqdXN0IHBvaW50IHRoZSBkaXJlY3Rpb24gZm9yIGZ1cnRoZXIgdGhpbmtpbmcuDQo+ IA0KPiBJIGFncmVlIC0gd2UgZG9uJ3Qgd2FudCBjb29rYm9va3MgaW4gdGhlIGhlYWRlciBmaWxl cy4gT25seSBlbm91Z2gNCj4gZGVzY3JpcHRpb24gdG8gYXZvaWQgdGhlIHdvcnN0IG1pc3VuZGVy c3RhbmRpbmdzLg0KPiANCj4gPg0KPiA+ID4NCj4gPiA+IFByZWZlcmFibHksIHNvbWUgc29ydCBv ZiBjb29rYm9vayBmb3IgaGFuZGxpbmcgdGhpcyBzaG91bGQgYmUNCj4gPiBwcm92aWRlZC4NCj4g PiA+IFBDQVAgY291bGQgYmUgdXNlZCBhcyBhbiBleGFtcGxlLg0KPiA+ID4NCj4gPiB0ZXN0cG1k IGV4YW1wbGUgaXMgaW5jbHVkZWQgaW4gc2VyaWVzLCBtbHg1IFBNRCBwYXRjaCBpcyBwcmVwYXJl ZCBhbmQNCj4gPiBjb21pbmcgc29vbi4NCj4gDQo+IEdyZWF0Lg0KPiANCj4gQW5kIEkgc3VwcG9z ZSB0aGF0IHRoZSBtb3JlIGRldGFpbGVkIGNvb2tib29rL2V4YW1wbGUgLSByZWdhcmRpbmcgb2Zm c2V0DQo+IGFuZCBkcmlmdCBvZiB2YXJpb3VzIGNsb2NrcyAtIGlzIHByb2JhYmx5IG1vcmUgcmVs ZXZhbnQgZm9yIHRoZSBSWCBzaWRlIChmb3INCj4gdmFyaW91cyBQQ0FQIGFwcGxpY2F0aW9ucyks IGFuZCB0aHVzIGNvbXBsZXRlbHkgdW5yZWxhdGVkIHRvIHRoaXMgcGF0Y2guDQo+IA0KPiA+DQo+ ID4gV2l0aCBiZXN0IHJlZ2FyZHMsIFNsYXZhDQoNCg==