From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2970A41CBC; Fri, 17 Feb 2023 09:49:10 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A9C5F40F17; Fri, 17 Feb 2023 09:49:09 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 6D8D140EE1 for ; Fri, 17 Feb 2023 09:49:08 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31H4ph6e026698; Fri, 17 Feb 2023 00:49:07 -0800 Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2169.outbound.protection.outlook.com [104.47.55.169]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3nsg6wehky-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 17 Feb 2023 00:49:07 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ywij46Dj322d+PldKeoSSRFDO8fg5okGwQ0iBcDb3zVj+B5UOB6pCiEjxsrtawRSboAP61oULZlqxeceTzbLJDRtE+4xyrdHHfDNOC9OsyNlhnQwh/qr/4B396ZgT4NzcW96SWNf132EMFmqtS/co38lLxrP0SBHPAcklZeApaMANJ/nkQG8gYStybUjqceDPZI274Px7SpCwBetrY7LEUAF8rV1ThXgErvzKhvlqle8qvpUf9qALhOA2WVesu+6G38qRAdCCjzS96Vqpt1LaRmIQpLFG9Eyweap18NVDnPZJzxxDhIAD9vwlZe2BvamyVyUTiKSgZpirJvAdD8noA== 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=6qKQ2Aq2FJ6asLKsJtBON/ifGRJI+G98fJm8tMrVXrE=; b=ZrvpSl/tFJOMbTm5AKEku4IMSzby+ms2+nCuBEM6F9DPGsuQtroL6mF2iHpK9CBUZw6thd99AfJ7Kglh370maSNDuFy1MACxaKWDBh3jma5O7rZDBM4WViSBqHM7faHyl5hA/cwG5AEQkWI5glnlJjQlMACrcHVlgq7Ygo1Uj/wqcqpIwLunscGCL0Ro73H2hEwRnR/Sl5FNTVY/n8cvC/N+aySpMi65ElCfOvzfGgYBtI228wduTNbmb34Y2Ic8rY5BRmzzOww84urDmnfjDPLPIuteo9vrL0BIcO76BpZQP0YOuJz5b5BaDvSc7tlkgSM+oA77vm6rWBePotYBWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6qKQ2Aq2FJ6asLKsJtBON/ifGRJI+G98fJm8tMrVXrE=; b=bGe6WxxvnkGOJAElrxTPRIX7bhaPCM5VR3Geur0NgLw7fa5GtbnSJQeAoDRb1csxqRweXVpK9SJSDt183Ngr0XfaHQ43seiYW2iVX19q33WgB7653fSBmF/uyCM+iEeTn60afaNRHOXFpoj2xr0uxhQUX4yFDcEzIS8cIyODWI0= Received: from DM4PR18MB4368.namprd18.prod.outlook.com (2603:10b6:5:39d::6) by CO1PR18MB4684.namprd18.prod.outlook.com (2603:10b6:303:e7::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6111.13; Fri, 17 Feb 2023 08:49:04 +0000 Received: from DM4PR18MB4368.namprd18.prod.outlook.com ([fe80::6d6a:99da:de:ea6b]) by DM4PR18MB4368.namprd18.prod.outlook.com ([fe80::6d6a:99da:de:ea6b%8]) with mapi id 15.20.6111.015; Fri, 17 Feb 2023 08:49:04 +0000 From: Tomasz Duszynski To: Konstantin Ananyev , "dev@dpdk.org" Subject: RE: [EXT] Re: [PATCH v11 1/4] lib: add generic support for reading PMU events Thread-Topic: [EXT] Re: [PATCH v11 1/4] lib: add generic support for reading PMU events Thread-Index: AQHZQi/ugndN0uHRZEy+gbr3w2CIfa7SPocAgAB/jGA= Date: Fri, 17 Feb 2023 08:49:04 +0000 Message-ID: References: <20230213113156.385482-1-tduszynski@marvell.com> <20230216175502.3164820-1-tduszynski@marvell.com> <20230216175502.3164820-2-tduszynski@marvell.com> <4b055bbc-36e5-671c-8117-fb0ee7307d55@yandex.ru> In-Reply-To: <4b055bbc-36e5-671c-8117-fb0ee7307d55@yandex.ru> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM4PR18MB4368:EE_|CO1PR18MB4684:EE_ x-ms-office365-filtering-correlation-id: 17b3b95d-9597-425c-36fe-08db10c3d2bb x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Tqd9pSWFyPiQRxqJW9hkX/qqmp3jHjIhQp+wAH50ujmIkvh80ZKmJvRhbkONpCnEWFWE/AMFCc2GeGD4JYaZIvRav0pqiw5MEtYTBPddHzyHJj49IerfF24nb/z1J51HGcO6rtyeHRMXIGaCGYiszif47N9LnxBhGp/+C30qCKiZhk9pqN1shJ5jvuxjr09YzF3OTN7V1WOI3S9FOhOmXjB9t9287/qaWqvaH29D2CYnLsQjV7sxMY24yZaks1l7eBT5bu5bNiqEOgY2NRNyqbxEqeQTsOHUVn5B3ymd57XXKqjmMSBpdOpKdWJO9BmXOMI+IZ2K/2wmWOPuCbW8DHyDUf96UtUTHLiNCmhZwK6q7r7bEv1dA5nSPCZgyp+JFBFvUH4+rPbzgMUDqMzCfy3duGBOgWf9PWov6spfAVhMwnqkENTcBk1K2KKgIIdTyl9cUal/F8RdKAf/chUHbeXRaVxjpUheCjUUL23Lg3qFfK/28WUy/ZaWwEF5sgaomWFe9nerS1GR6aSarUCQGlaxWf8t4G5G36SCDrd6cQB1DGJb3I6Avhz4UUAj3txNtWEWPrWBRKpCHYsGwjOFeW9DaCxjDj0A66u24BiW4L6AwZNrUiU6volmvhM1Eb4KRMHuKWAfAuy0hjy9aAibiAZeDpO2Ol5nqS7vsR9Hg43/u0/ubAmNjqV1Ivy2SgmdTkkNkfE4RFGNKKzEd4Rzf/EGc6hAfiNDVEyKnc9yPeY= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DM4PR18MB4368.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(396003)(39860400002)(366004)(136003)(376002)(346002)(451199018)(55016003)(83380400001)(2906002)(66574015)(33656002)(26005)(478600001)(71200400001)(7696005)(186003)(6506007)(9686003)(86362001)(38070700005)(30864003)(38100700002)(5660300002)(122000001)(52536014)(8936002)(64756008)(41300700001)(66446008)(66946007)(66476007)(66556008)(110136005)(8676002)(76116006)(316002)(41533002)(559001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cTJOZDlpVGxmb2ZFc3ZoUUtJQlZvWlZMcVpUUnFIYlM3dTdUd2lOeVRjUnQr?= =?utf-8?B?VUJWQVNmSGpUK0ZJaGJNeStUV3BKNTFzbmJQVno1N2FybzMyS3BYUVN6N01a?= =?utf-8?B?dHVmS1FKU0d6b2l6NHUyUEY3TEFNOUI1OXM1UWs1ZVplY0t0SmpzdVVGaGlS?= =?utf-8?B?Q1pHdE14bGI4VWFYd1RCbW1lZ0hwcUVQVXVYeHM4cTNnT2xMSmtkcDBXVmp3?= =?utf-8?B?L0VhOXo2T0pWV1FrSTZRc2RKSlZZbzBlVVZnb2w0d0N6Tm9KejdmS2RxSElu?= =?utf-8?B?QTN6VHdBaGJQS0VlYkd4VTVxUGRLUS92eEhiOWtVZGdvbjM4TlNuaVRPcVg4?= =?utf-8?B?RWRKTGhTQUw1c0VIVlh0RXp4S2w4ZTBmYk1BTlZ5S3dqSnJkbVNUc01wVVd5?= =?utf-8?B?c3JPQmhLWnR4ZGFRdzlpeVhCL3ZmWFNZclBURUp1dGRDcE9VdEx3aUNoSXR3?= =?utf-8?B?RFg5eVFUWnlXZHlsREJpc3JJVDhmUmRBZzJoay9iOWgxWHFFbVhleDB5enhO?= =?utf-8?B?dDR2b0VnTlNmTjFoMDFSMFFKQlNtTW45S0hDZmZwWGFQUUVXcmdzdHcwaGdI?= =?utf-8?B?ek5VeEVTbzUwVDBtOXpZSUR6NVhJM1FORElUbWtkd3ZaQm1KWjdhVUduTWhs?= =?utf-8?B?Vis1c0lYSmVobGRvdHVzcHQ3VHBKMWRkSDc3eU9vUEhpeS9WUmFlNDVoa2pQ?= =?utf-8?B?TDUyMFcyUkoxVHVWTTA5ODV6cTJaNjQ0WGx5bEo0YXRQWnhFM3JPdmQ0RXFQ?= =?utf-8?B?bnBWdmlRRGVIYjR4V0VLT2FpREVHb2s5VmRRNTRPanRNMmtFcGhuV0NNOFEw?= =?utf-8?B?MzYrZkFoUlRvOVlDbWp2c2Z5Um4xcHFhTWRuUTY0bjdDM3ZNVWx4ZDR6VUlN?= =?utf-8?B?WHFMUVo5d3o3N2FmT0FYY0dCVWhPSWNsMGZaZTNoam9BUFF5RmdmOFZzcUJG?= =?utf-8?B?bURZSk82dzNBU1NoY3RSdjJBd3BNbTc1NUhWVmg5a012VUxQNmx1YXJWakxs?= =?utf-8?B?VE1IN1RESU1BZDNwSjREaWJLYjNFeS9EbitDcmJOTzQzS2VqUHhCU2RTL29R?= =?utf-8?B?Nzk0WGFvVUJRM1FsQ3FlMHVqcEh0emdmaitQNWJYNHVyRHVCeVZnbGlzTUk5?= =?utf-8?B?SG1LVDdERTEwblViTERkZHEydkkwQU1tK2VHdGhzSkY3Wk9zZ2ExNmJNWUpn?= =?utf-8?B?OTVldTJHNXMzS3NPNFNnMzRwZ2tBWStGM2JvWHR4c3VqdUVhUXRSNWRRTTND?= =?utf-8?B?ZFl4dFhlMGRMbWNqZEdFQ28ycjlpOXZBb1F5bVZic25OTDkrRXRLV2tXVnlE?= =?utf-8?B?YndLbThzTjI0b3hIZkdhUE9zcXUrdXA2QUZ1aCtNMDZBU2tXcmhYYWtOUjlQ?= =?utf-8?B?WEhMR2xQQjlUT2QvMy9QdkNDVFZPdFVveUYrK1ZFdkYzSkFTODRSZThZU1FE?= =?utf-8?B?OE5KZlFhSGUrK1ZyM3U1eGtwMnZrRExnRTU1QzkwRVowYkUrOUU1S3Y0OHBD?= =?utf-8?B?NTJaWldUSGRmREt4M01FT0w1TzZRSGErQ1hwUGE3S1B4SDBCWDdVS2tYZllR?= =?utf-8?B?NFVKZUxKL2dwYWZYZVRBSW04dlpLeFZJYzM2bE9QMEREMXpJaExwdFlwYVM1?= =?utf-8?B?bWRobXV1OWxrQW8zR1M4THBPK1pHem9sa3NUYyt1QmgwWlI1OVdTTFdJR1h0?= =?utf-8?B?OW0rUVpKcmxITFNJL1NBbC94SS9WY1RJZmozVXpTNmFmTkdXYU5JdHp0c2g4?= =?utf-8?B?Y2ZGYjJaYkVuZUp2NjI2Y3BLVTR2dW5URHdEZDYvb0lHSzhTMHZwMTBLUnhQ?= =?utf-8?B?Z3pnR01YUjFyK2lhQkpON2ZtZUthNVF0QW9aRWR0ODJOUjdsbm9JanNudy9W?= =?utf-8?B?amVNV1QwN1c2MVgvQXJUazc0SXJSbnFNcGVDS3drMU95UGROek9mVWVkRUZv?= =?utf-8?B?bXc5UFpTYktjVXN0T2MxZStHVHRrTG9hOWhoL3R0NEllSllmN3ljNG9oMzE1?= =?utf-8?B?VXRCMzdKeGtRSDJNZ2pLakVkR3ZaTVFwcmRRWUVzUmpKWlh5Q3ZMbzdHeVBy?= =?utf-8?B?VWtjeEJUVGpUaHp1N3FSRGxMbXBQUWc3ZVorMjFqdDdOUEpCbVIrM2owTCtq?= =?utf-8?Q?dv5qePzxdrRGVAasIA67gRtsK?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR18MB4368.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 17b3b95d-9597-425c-36fe-08db10c3d2bb X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Feb 2023 08:49:04.2584 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: lIZt9cn4iywzH86Mqe1QLIwORTI1u/xFAqOjywF88+MZCz423lFxLzSaN1rrfOw9mHkqMUV3EO9imL4EBDFHZg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR18MB4684 X-Proofpoint-ORIG-GUID: B49W0kiVlHvIHs8brfEDPBgdB3UeM88n X-Proofpoint-GUID: B49W0kiVlHvIHs8brfEDPBgdB3UeM88n X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-17_04,2023-02-16_01,2023-02-09_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IEtvbnN0YW50aW4gQW5hbnll diA8a29uc3RhbnRpbi52LmFuYW55ZXZAeWFuZGV4LnJ1Pg0KPlNlbnQ6IEZyaWRheSwgRmVicnVh cnkgMTcsIDIwMjMgMTI6NTEgQU0NCj5UbzogZGV2QGRwZGsub3JnDQo+U3ViamVjdDogW0VYVF0g UmU6IFtQQVRDSCB2MTEgMS80XSBsaWI6IGFkZCBnZW5lcmljIHN1cHBvcnQgZm9yIHJlYWRpbmcg UE1VIGV2ZW50cw0KPg0KPkV4dGVybmFsIEVtYWlsDQo+DQo+LS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPjE2LzAy LzIwMjMgMTc6NTQsIFRvbWFzeiBEdXN6eW5za2kg0L/QuNGI0LXRgjoNCj4+IEFkZCBzdXBwb3J0 IGZvciBwcm9ncmFtbWluZyBQTVUgY291bnRlcnMgYW5kIHJlYWRpbmcgdGhlaXIgdmFsdWVzIGlu DQo+PiBydW50aW1lIGJ5cGFzc2luZyBrZXJuZWwgY29tcGxldGVseS4NCj4+DQo+PiBUaGlzIGlz IGVzcGVjaWFsbHkgdXNlZnVsIGluIGNhc2VzIHdoZXJlIENQVSBjb3JlcyBhcmUgaXNvbGF0ZWQg aS5lDQo+PiBydW4gZGVkaWNhdGVkIHRhc2tzLiBJbiBzdWNoIGNhc2VzIG9uZSBjYW5ub3QgdXNl IHN0YW5kYXJkIHBlcmYNCj4+IHV0aWxpdHkgd2l0aG91dCBzYWNyaWZpY2luZyBsYXRlbmN5IGFu ZCBwZXJmb3JtYW5jZS4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBUb21hc3ogRHVzenluc2tpIDx0 ZHVzenluc2tpQG1hcnZlbGwuY29tPg0KPj4gQWNrZWQtYnk6IE1vcnRlbiBCcsO4cnVwIDxtYkBz bWFydHNoYXJlc3lzdGVtcy5jb20+DQo+PiAtLS0NCj4+ICAgTUFJTlRBSU5FUlMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDUgKw0KPj4gICBhcHAvdGVzdC9tZXNvbi5idWlsZCAgICAg ICAgICAgICAgICAgICB8ICAgMiArDQo+PiAgIGFwcC90ZXN0L3Rlc3RfcG11LmMgICAgICAgICAg ICAgICAgICAgIHwgIDYyICsrKysNCj4+ICAgZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZCAgICAg ICAgICAgICAgfCAgIDMgKy0NCj4+ICAgZG9jL2FwaS9kb3h5LWFwaS5jb25mLmluICAgICAgICAg ICAgICAgfCAgIDEgKw0KPj4gICBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcHJvZmlsZV9hcHAucnN0 ICB8ICAxMiArDQo+PiAgIGRvYy9ndWlkZXMvcmVsX25vdGVzL3JlbGVhc2VfMjNfMDMucnN0IHwg ICA3ICsNCj4+ICAgbGliL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEg Kw0KPj4gICBsaWIvcG11L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgICB8ICAxMyArDQo+ PiAgIGxpYi9wbXUvcG11X3ByaXZhdGUuaCAgICAgICAgICAgICAgICAgIHwgIDMyICsrDQo+PiAg IGxpYi9wbXUvcnRlX3BtdS5jICAgICAgICAgICAgICAgICAgICAgIHwgNDYwICsrKysrKysrKysr KysrKysrKysrKysrKysNCj4+ICAgbGliL3BtdS9ydGVfcG11LmggICAgICAgICAgICAgICAgICAg ICAgfCAyMTIgKysrKysrKysrKysrDQo+PiAgIGxpYi9wbXUvdmVyc2lvbi5tYXAgICAgICAgICAg ICAgICAgICAgIHwgIDE1ICsNCj4+ICAgMTMgZmlsZXMgY2hhbmdlZCwgODI0IGluc2VydGlvbnMo KyksIDEgZGVsZXRpb24oLSkNCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGFwcC90ZXN0L3Rlc3Rf cG11LmMNCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9wbXUvbWVzb24uYnVpbGQNCj4+ICAg Y3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9wbXUvcG11X3ByaXZhdGUuaA0KPj4gICBjcmVhdGUgbW9k ZSAxMDA2NDQgbGliL3BtdS9ydGVfcG11LmMNCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9w bXUvcnRlX3BtdS5oDQo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvcG11L3ZlcnNpb24ubWFw DQo+Pg0KPj4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMgaW5kZXggMzQ5 NTk0NmQwZi4uZDM3ZjI0MjEyMA0KPj4gMTAwNjQ0DQo+PiAtLS0gYS9NQUlOVEFJTkVSUw0KPj4g KysrIGIvTUFJTlRBSU5FUlMNCj4+IEBAIC0xNjk3LDYgKzE2OTcsMTEgQEAgTTogTml0aGluIERh YmlscHVyYW0gPG5kYWJpbHB1cmFtQG1hcnZlbGwuY29tPg0KPj4gICBNOiBQYXZhbiBOaWtoaWxl c2ggPHBiaGFnYXZhdHVsYUBtYXJ2ZWxsLmNvbT4NCj4+ICAgRjogbGliL25vZGUvDQo+Pg0KPj4g K1BNVSAtIEVYUEVSSU1FTlRBTA0KPj4gK006IFRvbWFzeiBEdXN6eW5za2kgPHRkdXN6eW5za2lA bWFydmVsbC5jb20+DQo+PiArRjogbGliL3BtdS8NCj4+ICtGOiBhcHAvdGVzdC90ZXN0X3BtdSoN Cj4+ICsNCj4+DQo+PiAgIFRlc3QgQXBwbGljYXRpb25zDQo+PiAgIC0tLS0tLS0tLS0tLS0tLS0t DQo+PiBkaWZmIC0tZ2l0IGEvYXBwL3Rlc3QvbWVzb24uYnVpbGQgYi9hcHAvdGVzdC9tZXNvbi5i dWlsZCBpbmRleA0KPj4gZjM0ZDE5ZTNjMy4uNmI2MWI3ZmMzMiAxMDA2NDQNCj4+IC0tLSBhL2Fw cC90ZXN0L21lc29uLmJ1aWxkDQo+PiArKysgYi9hcHAvdGVzdC9tZXNvbi5idWlsZA0KPj4gQEAg LTExMSw2ICsxMTEsNyBAQCB0ZXN0X3NvdXJjZXMgPSBmaWxlcygNCj4+ICAgICAgICAgICAndGVz dF9yZWNpcHJvY2FsX2RpdmlzaW9uX3BlcmYuYycsDQo+PiAgICAgICAgICAgJ3Rlc3RfcmVkLmMn LA0KPj4gICAgICAgICAgICd0ZXN0X3BpZS5jJywNCj4+ICsgICAgICAgICd0ZXN0X3BtdS5jJywN Cj4+ICAgICAgICAgICAndGVzdF9yZW9yZGVyLmMnLA0KPj4gICAgICAgICAgICd0ZXN0X3JpYi5j JywNCj4+ICAgICAgICAgICAndGVzdF9yaWI2LmMnLA0KPj4gQEAgLTIzOSw2ICsyNDAsNyBAQCBm YXN0X3Rlc3RzID0gWw0KPj4gICAgICAgICAgIFsna25pX2F1dG90ZXN0JywgZmFsc2UsIHRydWVd LA0KPj4gICAgICAgICAgIFsna3ZhcmdzX2F1dG90ZXN0JywgdHJ1ZSwgdHJ1ZV0sDQo+PiAgICAg ICAgICAgWydtZW1iZXJfYXV0b3Rlc3QnLCB0cnVlLCB0cnVlXSwNCj4+ICsgICAgICAgIFsncG11 X2F1dG90ZXN0JywgdHJ1ZSwgdHJ1ZV0sDQo+PiAgICAgICAgICAgWydwb3dlcl9jcHVmcmVxX2F1 dG90ZXN0JywgZmFsc2UsIHRydWVdLA0KPj4gICAgICAgICAgIFsncG93ZXJfYXV0b3Rlc3QnLCB0 cnVlLCB0cnVlXSwNCj4+ICAgICAgICAgICBbJ3Bvd2VyX2t2bV92bV9hdXRvdGVzdCcsIGZhbHNl LCB0cnVlXSwgZGlmZiAtLWdpdA0KPj4gYS9hcHAvdGVzdC90ZXN0X3BtdS5jIGIvYXBwL3Rlc3Qv dGVzdF9wbXUuYyBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPj4gMDAwMDAwMDAwMC4uYzI1 NzYzOGU4Yg0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvYXBwL3Rlc3QvdGVzdF9wbXUuYw0K Pj4gQEAgLTAsMCArMSw2MiBAQA0KPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt My1DbGF1c2UNCj4+ICsgKiBDb3B5cmlnaHQoQykgMjAyMyBNYXJ2ZWxsIEludGVybmF0aW9uYWwg THRkLg0KPj4gKyAqLw0KPj4gKw0KPj4gKyNpbmNsdWRlICJ0ZXN0LmgiDQo+PiArDQo+PiArI2lm bmRlZiBSVEVfRVhFQ19FTlZfTElOVVgNCj4+ICsNCj4+ICtzdGF0aWMgaW50DQo+PiArdGVzdF9w bXUodm9pZCkNCj4+ICt7DQo+PiArCXByaW50ZigicG11X2F1dG90ZXN0IG9ubHkgc3VwcG9ydGVk IG9uIExpbnV4LCBza2lwcGluZyB0ZXN0XG4iKTsNCj4+ICsJcmV0dXJuIFRFU1RfU0tJUFBFRDsN Cj4+ICt9DQo+PiArDQo+PiArI2Vsc2UNCj4+ICsNCj4+ICsjaW5jbHVkZSA8cnRlX3BtdS5oPg0K Pj4gKw0KPj4gK3N0YXRpYyBpbnQNCj4+ICt0ZXN0X3BtdV9yZWFkKHZvaWQpDQo+PiArew0KPj4g Kwljb25zdCBjaGFyICpuYW1lID0gTlVMTDsNCj4+ICsJaW50IHRyaWVzID0gMTAsIGV2ZW50Ow0K Pj4gKwl1aW50NjRfdCB2YWwgPSAwOw0KPj4gKw0KPj4gKwlpZiAobmFtZSA9PSBOVUxMKSB7DQo+ PiArCQlwcmludGYoIlBNVSBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgYXJjaFxuIik7DQo+PiArCQly ZXR1cm4gVEVTVF9TS0lQUEVEOw0KPj4gKwl9DQo+PiArDQo+PiArCWlmIChydGVfcG11X2luaXQo KSA8IDApDQo+PiArCQlyZXR1cm4gVEVTVF9TS0lQUEVEOw0KPj4gKw0KPj4gKwlldmVudCA9IHJ0 ZV9wbXVfYWRkX2V2ZW50KG5hbWUpOw0KPj4gKwl3aGlsZSAodHJpZXMtLSkNCj4+ICsJCXZhbCAr PSBydGVfcG11X3JlYWQoZXZlbnQpOw0KPj4gKw0KPj4gKwlydGVfcG11X2ZpbmkoKTsNCj4+ICsN Cj4+ICsJcmV0dXJuIHZhbCA/IFRFU1RfU1VDQ0VTUyA6IFRFU1RfRkFJTEVEOyB9DQo+PiArDQo+ PiArc3RhdGljIHN0cnVjdCB1bml0X3Rlc3Rfc3VpdGUgcG11X3Rlc3RzID0gew0KPj4gKwkuc3Vp dGVfbmFtZSA9ICJwbXUgYXV0b3Rlc3QiLA0KPj4gKwkuc2V0dXAgPSBOVUxMLA0KPj4gKwkudGVh cmRvd24gPSBOVUxMLA0KPj4gKwkudW5pdF90ZXN0X2Nhc2VzID0gew0KPj4gKwkJVEVTVF9DQVNF KHRlc3RfcG11X3JlYWQpLA0KPj4gKwkJVEVTVF9DQVNFU19FTkQoKQ0KPj4gKwl9DQo+PiArfTsN Cj4+ICsNCj4+ICtzdGF0aWMgaW50DQo+PiArdGVzdF9wbXUodm9pZCkNCj4+ICt7DQo+PiArCXJl dHVybiB1bml0X3Rlc3Rfc3VpdGVfcnVubmVyKCZwbXVfdGVzdHMpOw0KPj4gK30NCj4+ICsNCj4+ ICsjZW5kaWYgLyogUlRFX0VYRUNfRU5WX0xJTlVYICovDQo+PiArDQo+PiArUkVHSVNURVJfVEVT VF9DT01NQU5EKHBtdV9hdXRvdGVzdCwgdGVzdF9wbXUpOw0KPj4gZGlmZiAtLWdpdCBhL2RvYy9h cGkvZG94eS1hcGktaW5kZXgubWQgYi9kb2MvYXBpL2RveHktYXBpLWluZGV4Lm1kDQo+PiBpbmRl eCAyZGVlYzdlYTE5Li5hOGUwNGExOTVkIDEwMDY0NA0KPj4gLS0tIGEvZG9jL2FwaS9kb3h5LWFw aS1pbmRleC5tZA0KPj4gKysrIGIvZG9jL2FwaS9kb3h5LWFwaS1pbmRleC5tZA0KPj4gQEAgLTIy Myw3ICsyMjMsOCBAQCBUaGUgcHVibGljIEFQSSBoZWFkZXJzIGFyZSBncm91cGVkIGJ5IHRvcGlj czoNCj4+ICAgICBbbG9nXShAcmVmIHJ0ZV9sb2cuaCksDQo+PiAgICAgW2Vycm5vXShAcmVmIHJ0 ZV9lcnJuby5oKSwNCj4+ICAgICBbdHJhY2VdKEByZWYgcnRlX3RyYWNlLmgpLA0KPj4gLSAgW3Ry YWNlX3BvaW50XShAcmVmIHJ0ZV90cmFjZV9wb2ludC5oKQ0KPj4gKyAgW3RyYWNlX3BvaW50XShA cmVmIHJ0ZV90cmFjZV9wb2ludC5oKSwgIFtwbXVdKEByZWYgcnRlX3BtdS5oKQ0KPj4NCj4+ICAg LSAqKm1pc2MqKjoNCj4+ICAgICBbRUFMIGNvbmZpZ10oQHJlZiBydGVfZWFsLmgpLA0KPj4gZGlm ZiAtLWdpdCBhL2RvYy9hcGkvZG94eS1hcGkuY29uZi5pbiBiL2RvYy9hcGkvZG94eS1hcGkuY29u Zi5pbiBpbmRleA0KPj4gZTg1OTQyNjA5OS4uMzUwYjVhOGM5NCAxMDA2NDQNCj4+IC0tLSBhL2Rv Yy9hcGkvZG94eS1hcGkuY29uZi5pbg0KPj4gKysrIGIvZG9jL2FwaS9kb3h5LWFwaS5jb25mLmlu DQo+PiBAQCAtNjMsNiArNjMsNyBAQCBJTlBVVCAgICAgICAgICAgICAgICAgICA9IEBUT1BESVJA L2RvYy9hcGkvZG94eS1hcGktaW5kZXgubWQgXA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEBUT1BESVJAL2xpYi9wY2kgXA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBU T1BESVJAL2xpYi9wZHVtcCBcDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQFRPUERJ UkAvbGliL3BpcGVsaW5lIFwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIEBUT1BESVJA L2xpYi9wbXUgXA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBUT1BESVJAL2xpYi9w b3J0IFwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAVE9QRElSQC9saWIvcG93ZXIg XA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBUT1BESVJAL2xpYi9yYXdkZXYgXCBk aWZmIC0tZ2l0DQo+PiBhL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9wcm9maWxlX2FwcC5yc3QNCj4+ IGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3Byb2ZpbGVfYXBwLnJzdA0KPj4gaW5kZXggMTQyOTJk NGMyNS4uODllMzhjZDMwMSAxMDA2NDQNCj4+IC0tLSBhL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9w cm9maWxlX2FwcC5yc3QNCj4+ICsrKyBiL2RvYy9ndWlkZXMvcHJvZ19ndWlkZS9wcm9maWxlX2Fw cC5yc3QNCj4+IEBAIC03LDYgKzcsMTggQEAgUHJvZmlsZSBZb3VyIEFwcGxpY2F0aW9uDQo+PiAg IFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZGVzY3JpYmUgbWV0aG9kcyBvZiBwcm9maWxpbmcgRFBE SyBhcHBsaWNhdGlvbnMgb24NCj4+ICAgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMuDQo+Pg0KPj4g K1BlcmZvcm1hbmNlIGNvdW50ZXIgYmFzZWQgcHJvZmlsaW5nDQo+PiArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4+ICsNCj4+ICtNYWpvcml0eSBvZiBhcmNoaXRlY3R1cmVz IHN1cHBvcnQgc29tZSBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIHVuaXQgKFBNVSkuDQo+PiArU3Vj aCB1bml0IHByb3ZpZGVzIHByb2dyYW1tYWJsZSBjb3VudGVycyB0aGF0IG1vbml0b3Igc3BlY2lm aWMgZXZlbnRzLg0KPj4gKw0KPj4gK0RpZmZlcmVudCB0b29scyBnYXRoZXIgdGhhdCBpbmZvcm1h dGlvbiwgbGlrZSBmb3IgZXhhbXBsZSBwZXJmLg0KPj4gK0hvd2V2ZXIsIGluIHNvbWUgc2NlbmFy aW9zIHdoZW4gQ1BVIGNvcmVzIGFyZSBpc29sYXRlZCBhbmQgcnVuDQo+PiArZGVkaWNhdGVkIHRh c2tzIGludGVycnVwdGluZyB0aG9zZSB0YXNrcyB3aXRoIHBlcmYgbWF5IGJlIHVuZGVzaXJhYmxl Lg0KPj4gKw0KPj4gK0luIHN1Y2ggY2FzZXMsIGFuIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlIFBN VSBsaWJyYXJ5IHRvIHJlYWQgc3VjaCBldmVudHMgdmlhDQo+YGBydGVfcG11X3JlYWQoKWBgLg0K Pj4gKw0KPj4NCj4+ICAgUHJvZmlsaW5nIG9uIHg4Ng0KPj4gICAtLS0tLS0tLS0tLS0tLS0tDQo+ PiBkaWZmIC0tZ2l0IGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yM18wMy5yc3QNCj4+ IGIvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yM18wMy5yc3QNCj4+IGluZGV4IGFiOTk4 YTUzNTcuLjIwNjIyZWZlNTggMTAwNjQ0DQo+PiAtLS0gYS9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9y ZWxlYXNlXzIzXzAzLnJzdA0KPj4gKysrIGIvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8y M18wMy5yc3QNCj4+IEBAIC0xNDcsNiArMTQ3LDEzIEBAIE5ldyBGZWF0dXJlcw0KPj4gICAgICog QWRkZWQgc3VwcG9ydCB0byBjYXB0dXJlIHBhY2tldHMgYXQgZWFjaCBncmFwaCBub2RlIHdpdGgg cGFja2V0IG1ldGFkYXRhIGFuZA0KPj4gICAgICAgbm9kZSBuYW1lLg0KPj4NCj4+ICsqICoqQWRk ZWQgUE1VIGxpYnJhcnkuKioNCj4+ICsNCj4+ICsgIEFkZGVkIGEgbmV3IHBlcmZvcm1hbmNlIG1v bml0b3JpbmcgdW5pdCAoUE1VKSBsaWJyYXJ5IHdoaWNoIGFsbG93cw0KPj4gKyBhcHBsaWNhdGlv bnMgIHRvIHBlcmZvcm0gc2VsZiBtb25pdG9yaW5nIGFjdGl2aXRpZXMgd2l0aG91dCBkZXBlbmRp bmcgb24gZXh0ZXJuYWwgdXRpbGl0aWVzDQo+bGlrZSBwZXJmLg0KPj4gKyAgQWZ0ZXIgaW50ZWdy YXRpb24gd2l0aCA6ZG9jOmAuLi9wcm9nX2d1aWRlL3RyYWNlX2xpYmAgZGF0YSBnYXRoZXJlZA0K Pj4gKyBmcm9tIGhhcmR3YXJlIGNvdW50ZXJzICBjYW4gYmUgc3RvcmVkIGluIENURiBmb3JtYXQg Zm9yIGZ1cnRoZXIgYW5hbHlzaXMuDQo+PiArDQo+Pg0KPj4gICBSZW1vdmVkIEl0ZW1zDQo+PiAg IC0tLS0tLS0tLS0tLS0NCj4+IGRpZmYgLS1naXQgYS9saWIvbWVzb24uYnVpbGQgYi9saWIvbWVz b24uYnVpbGQgaW5kZXgNCj4+IDQ1MGMwNjFkMmIuLjhhNDJkNDVkMjAgMTAwNjQ0DQo+PiAtLS0g YS9saWIvbWVzb24uYnVpbGQNCj4+ICsrKyBiL2xpYi9tZXNvbi5idWlsZA0KPj4gQEAgLTExLDYg KzExLDcgQEANCj4+ICAgbGlicmFyaWVzID0gWw0KPj4gICAgICAgICAgICdrdmFyZ3MnLCAjIGVh bCBkZXBlbmRzIG9uIGt2YXJncw0KPj4gICAgICAgICAgICd0ZWxlbWV0cnknLCAjIGJhc2ljIGlu Zm8gcXVlcnlpbmcNCj4+ICsgICAgICAgICdwbXUnLA0KPj4gICAgICAgICAgICdlYWwnLCAjIGV2 ZXJ5dGhpbmcgZGVwZW5kcyBvbiBlYWwNCj4+ICAgICAgICAgICAncmluZycsDQo+PiAgICAgICAg ICAgJ3JjdScsICMgcmN1IGRlcGVuZHMgb24gcmluZyBkaWZmIC0tZ2l0DQo+PiBhL2xpYi9wbXUv bWVzb24uYnVpbGQgYi9saWIvcG11L21lc29uLmJ1aWxkIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGlu ZGV4DQo+PiAwMDAwMDAwMDAwLi5hNDE2MGI0OTRlDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysg Yi9saWIvcG11L21lc29uLmJ1aWxkDQo+PiBAQCAtMCwwICsxLDEzIEBADQo+PiArIyBTUERYLUxp Y2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlICMgQ29weXJpZ2h0KEMpIDIwMjMgTWFydmVs bA0KPj4gK0ludGVybmF0aW9uYWwgTHRkLg0KPj4gKw0KPj4gK2lmIG5vdCBpc19saW51eA0KPj4g KyAgICBidWlsZCA9IGZhbHNlDQo+PiArICAgIHJlYXNvbiA9ICdvbmx5IHN1cHBvcnRlZCBvbiBM aW51eCcNCj4+ICsgICAgc3ViZGlyX2RvbmUoKQ0KPj4gK2VuZGlmDQo+PiArDQo+PiAraW5jbHVk ZXMgPSBbZ2xvYmFsX2luY10NCj4+ICsNCj4+ICtzb3VyY2VzID0gZmlsZXMoJ3J0ZV9wbXUuYycp DQo+PiAraGVhZGVycyA9IGZpbGVzKCdydGVfcG11LmgnKQ0KPj4gZGlmZiAtLWdpdCBhL2xpYi9w bXUvcG11X3ByaXZhdGUuaCBiL2xpYi9wbXUvcG11X3ByaXZhdGUuaCBuZXcgZmlsZQ0KPj4gbW9k ZSAxMDA2NDQgaW5kZXggMDAwMDAwMDAwMC4uYjlmOGMxZGRjOA0KPj4gLS0tIC9kZXYvbnVsbA0K Pj4gKysrIGIvbGliL3BtdS9wbXVfcHJpdmF0ZS5oDQo+PiBAQCAtMCwwICsxLDMyIEBADQo+PiAr LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZQ0KPj4gKyAqIENvcHlyaWdo dChjKSAyMDIzIE1hcnZlbGwNCj4+ICsgKi8NCj4+ICsNCj4+ICsjaWZuZGVmIF9QTVVfUFJJVkFU RV9IXw0KPj4gKyNkZWZpbmUgX1BNVV9QUklWQVRFX0hfDQo+PiArDQo+PiArLyoqDQo+PiArICog QXJjaGl0ZWN0dXJlIHNwZWNpZmljIFBNVSBpbml0IGNhbGxiYWNrLg0KPj4gKyAqDQo+PiArICog QHJldHVybg0KPj4gKyAqICAgMCBpbiBjYXNlIG9mIHN1Y2Nlc3MsIG5lZ2F0aXZlIHZhbHVlIG90 aGVyd2lzZS4NCj4+ICsgKi8NCj4+ICtpbnQNCj4+ICtwbXVfYXJjaF9pbml0KHZvaWQpOw0KPj4g Kw0KPj4gKy8qKg0KPj4gKyAqIEFyY2hpdGVjdHVyZSBzcGVjaWZpYyBQTVUgY2xlYW51cCBjYWxs YmFjay4NCj4+ICsgKi8NCj4+ICt2b2lkDQo+PiArcG11X2FyY2hfZmluaSh2b2lkKTsNCj4+ICsN Cj4+ICsvKioNCj4+ICsgKiBBcHBseSBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgc2V0dGluZ3MgdG8g Y29uZmlnIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHN5c2NhbGwuDQo+PiArICoNCj4+ICsgKiBAcGFy YW0gY29uZmlnDQo+PiArICogICBBcmNoaXRlY3R1cmUgc3BlY2lmaWMgZXZlbnQgY29uZmlndXJh dGlvbi4gQ29uc3VsdCBrZXJuZWwgc291cmNlcyBmb3IgYXZhaWxhYmxlIG9wdGlvbnMuDQo+PiAr ICovDQo+PiArdm9pZA0KPj4gK3BtdV9hcmNoX2ZpeHVwX2NvbmZpZyh1aW50NjRfdCBjb25maWdb M10pOw0KPj4gKw0KPj4gKyNlbmRpZiAvKiBfUE1VX1BSSVZBVEVfSF8gKi8NCj4+IGRpZmYgLS1n aXQgYS9saWIvcG11L3J0ZV9wbXUuYyBiL2xpYi9wbXUvcnRlX3BtdS5jIG5ldyBmaWxlIG1vZGUN Cj4+IDEwMDY0NCBpbmRleCAwMDAwMDAwMDAwLi45NTBmOTk5Y2I3DQo+PiAtLS0gL2Rldi9udWxs DQo+PiArKysgYi9saWIvcG11L3J0ZV9wbXUuYw0KPj4gQEAgLTAsMCArMSw0NjAgQEANCj4+ICsv KiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlDQo+PiArICogQ29weXJpZ2h0 KEMpIDIwMjMgTWFydmVsbCBJbnRlcm5hdGlvbmFsIEx0ZC4NCj4+ICsgKi8NCj4+ICsNCj4+ICsj aW5jbHVkZSA8Y3R5cGUuaD4NCj4+ICsjaW5jbHVkZSA8ZGlyZW50Lmg+DQo+PiArI2luY2x1ZGUg PGVycm5vLmg+DQo+PiArI2luY2x1ZGUgPHJlZ2V4Lmg+DQo+PiArI2luY2x1ZGUgPHN0ZGxpYi5o Pg0KPj4gKyNpbmNsdWRlIDxzdHJpbmcuaD4NCj4+ICsjaW5jbHVkZSA8c3lzL2lvY3RsLmg+DQo+ PiArI2luY2x1ZGUgPHN5cy9tbWFuLmg+DQo+PiArI2luY2x1ZGUgPHN5cy9xdWV1ZS5oPg0KPj4g KyNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPg0KPj4gKyNpbmNsdWRlIDx1bmlzdGQuaD4NCj4+ICsN Cj4+ICsjaW5jbHVkZSA8cnRlX2F0b21pYy5oPg0KPj4gKyNpbmNsdWRlIDxydGVfcGVyX2xjb3Jl Lmg+DQo+PiArI2luY2x1ZGUgPHJ0ZV9wbXUuaD4NCj4+ICsjaW5jbHVkZSA8cnRlX3NwaW5sb2Nr Lmg+DQo+PiArI2luY2x1ZGUgPHJ0ZV90YWlscS5oPg0KPj4gKw0KPj4gKyNpbmNsdWRlICJwbXVf cHJpdmF0ZS5oIg0KPj4gKw0KPj4gKyNkZWZpbmUgRVZFTlRfU09VUkNFX0RFVklDRVNfUEFUSCAi L3N5cy9idXMvZXZlbnRfc291cmNlL2RldmljZXMiDQo+DQo+DQo+SSBzdXBwb3NlIHRoYXQgcGFz cyAoYXMgdGhlIHdob2xlIGltcGxlbWVudGF0aW9uKSBpcyBsaW51eCBzcGVjaWZpYz8NCj5JZiBz bywgd291bGRuJ3QgaXQgbWFrZSBzZW5zZSB0byBoYXZlIGl0IHVuZGVyIGxpbnV4IHN1YmRpcj8N Cj4NCg0KVGhlcmUgYXJlIG5vdCBhbnkgcGxhbnMgdG8gc3VwcG9ydCB0aGF0IGVsc2V3aGVyZSBj dXJyZW50bHkgc28gZmxhdA0KZGlyZWN0b3J5IHN0cnVjdHVyZSBpcyBnb29kIGVub3VnaC4gDQoN Cj4+ICsNCj4+ICsjZGVmaW5lIEdFTk1BU0tfVUxMKGgsIGwpICgofjBVTEwgLSAoMVVMTCA8PCAo bCkpICsgMSkgJiAofjBVTEwgPj4NCj4+ICsoKDY0IC0gMSAtIChoKSkpKSkgI2RlZmluZSBGSUVM RF9QUkVQKG0sIHYpICgoKHVpbnQ2NF90KSh2KSA8PA0KPj4gKyhfX2J1aWx0aW5fZmZzbGwobSkg LSAxKSkgJiAobSkpDQo+PiArDQo+PiArUlRFX0RFRklORV9QRVJfTENPUkUoc3RydWN0IHJ0ZV9w bXVfZXZlbnRfZ3JvdXAsIF9ldmVudF9ncm91cCk7DQo+PiArc3RydWN0IHJ0ZV9wbXUgcnRlX3Bt dTsNCj4NCj5EbyB3ZSByZWFsbHkgbmVlZCBzdHJ1Y3QgZGVjbGFyYXRpb24gaGVyZT8NCj4NCg0K V2hhdOKAmXMgdGhlIHByb2JsZW0gd2l0aCB0aGlzIHBsYWNlbWVudCBwcmVjaXNlbHk/DQoNCj4N Cj4+ICsvKg0KPj4gKyAqIEZvbGxvd2luZyBfX3J0ZV93ZWFrIGZ1bmN0aW9ucyBwcm92aWRlIGRl ZmF1bHQgbm8tb3AuDQo+PiArQXJjaGl0ZWN0dXJlcyBzaG91bGQgb3ZlcnJpZGUgdGhlbSBpZg0K Pj4gKyAqIG5lY2Vzc2FyeS4NCj4+ICsgKi8NCj4+ICsNCj4+ICtpbnQNCj4+ICtfX3J0ZV93ZWFr IHBtdV9hcmNoX2luaXQodm9pZCkNCj4+ICt7DQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsN Cj4+ICt2b2lkDQo+PiArX19ydGVfd2VhayBwbXVfYXJjaF9maW5pKHZvaWQpDQo+PiArew0KPj4g K30NCj4+ICsNCj4+ICt2b2lkDQo+PiArX19ydGVfd2VhayBwbXVfYXJjaF9maXh1cF9jb25maWco dWludDY0X3QgX19ydGVfdW51c2VkIGNvbmZpZ1szXSkgeyB9DQo+PiArDQo+PiArc3RhdGljIGlu dA0KPj4gK2dldF90ZXJtX2Zvcm1hdChjb25zdCBjaGFyICpuYW1lLCBpbnQgKm51bSwgdWludDY0 X3QgKm1hc2spIHsNCj4+ICsJY2hhciBwYXRoW1BBVEhfTUFYXTsNCj4+ICsJY2hhciAqY29uZmln ID0gTlVMTDsNCj4+ICsJaW50IGhpZ2gsIGxvdywgcmV0Ow0KPj4gKwlGSUxFICpmcDsNCj4+ICsN Cj4+ICsJKm51bSA9ICptYXNrID0gMDsNCj4+ICsJc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgp LCBFVkVOVF9TT1VSQ0VfREVWSUNFU19QQVRIICIvJXMvZm9ybWF0LyVzIiwgcnRlX3BtdS5uYW1l LCBuYW1lKTsNCj4+ICsJZnAgPSBmb3BlbihwYXRoLCAiciIpOw0KPj4gKwlpZiAoZnAgPT0gTlVM TCkNCj4+ICsJCXJldHVybiAtZXJybm87DQo+PiArDQo+PiArCWVycm5vID0gMDsNCj4+ICsJcmV0 ID0gZnNjYW5mKGZwLCAiJW1bXjpdOiVkLSVkIiwgJmNvbmZpZywgJmxvdywgJmhpZ2gpOw0KPj4g KwlpZiAocmV0IDwgMikgew0KPj4gKwkJcmV0ID0gLUVOT0RBVEE7DQo+PiArCQlnb3RvIG91dDsN Cj4+ICsJfQ0KPj4gKwlpZiAoZXJybm8pIHsNCj4+ICsJCXJldCA9IC1lcnJubzsNCj4+ICsJCWdv dG8gb3V0Ow0KPj4gKwl9DQo+PiArDQo+PiArCWlmIChyZXQgPT0gMikNCj4+ICsJCWhpZ2ggPSBs b3c7DQo+PiArDQo+PiArCSptYXNrID0gR0VOTUFTS19VTEwoaGlnaCwgbG93KTsNCj4+ICsJLyog TGFzdCBkaWdpdCBzaG91bGQgYmUgWzAxMl0uIElmIGxhc3QgZGlnaXQgaXMgbWlzc2luZyAwIGlz IGltcGxpZWQuICovDQo+PiArCSpudW0gPSBjb25maWdbc3RybGVuKGNvbmZpZykgLSAxXTsNCj4+ ICsJKm51bSA9IGlzZGlnaXQoKm51bSkgPyAqbnVtIC0gJzAnIDogMDsNCj4+ICsNCj4+ICsJcmV0 ID0gMDsNCj4+ICtvdXQ6DQo+PiArCWZyZWUoY29uZmlnKTsNCj4+ICsJZmNsb3NlKGZwKTsNCj4+ ICsNCj4+ICsJcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludA0KPj4gK3Bh cnNlX2V2ZW50KGNoYXIgKmJ1ZiwgdWludDY0X3QgY29uZmlnWzNdKSB7DQo+PiArCWNoYXIgKnRv a2VuLCAqdGVybTsNCj4+ICsJaW50IG51bSwgcmV0LCB2YWw7DQo+PiArCXVpbnQ2NF90IG1hc2s7 DQo+PiArDQo+PiArCWNvbmZpZ1swXSA9IGNvbmZpZ1sxXSA9IGNvbmZpZ1syXSA9IDA7DQo+PiAr DQo+PiArCXRva2VuID0gc3RydG9rKGJ1ZiwgIiwiKTsNCj4+ICsJd2hpbGUgKHRva2VuKSB7DQo+ PiArCQllcnJubyA9IDA7DQo+PiArCQkvKiA8dGVybT49PHZhbHVlPiAqLw0KPj4gKwkJcmV0ID0g c3NjYW5mKHRva2VuLCAiJW1bXj1dPSVpIiwgJnRlcm0sICZ2YWwpOw0KPj4gKwkJaWYgKHJldCA8 IDEpDQo+PiArCQkJcmV0dXJuIC1FTk9EQVRBOw0KPj4gKwkJaWYgKGVycm5vKQ0KPj4gKwkJCXJl dHVybiAtZXJybm87DQo+PiArCQlpZiAocmV0ID09IDEpDQo+PiArCQkJdmFsID0gMTsNCj4+ICsN Cj4+ICsJCXJldCA9IGdldF90ZXJtX2Zvcm1hdCh0ZXJtLCAmbnVtLCAmbWFzayk7DQo+PiArCQlm cmVlKHRlcm0pOw0KPj4gKwkJaWYgKHJldCkNCj4+ICsJCQlyZXR1cm4gcmV0Ow0KPj4gKw0KPj4g KwkJY29uZmlnW251bV0gfD0gRklFTERfUFJFUChtYXNrLCB2YWwpOw0KPj4gKwkJdG9rZW4gPSBz dHJ0b2soTlVMTCwgIiwiKTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICt9DQo+ PiArDQo+PiArc3RhdGljIGludA0KPj4gK2dldF9ldmVudF9jb25maWcoY29uc3QgY2hhciAqbmFt ZSwgdWludDY0X3QgY29uZmlnWzNdKSB7DQo+PiArCWNoYXIgcGF0aFtQQVRIX01BWF0sIGJ1ZltC VUZTSVpdOw0KPj4gKwlGSUxFICpmcDsNCj4+ICsJaW50IHJldDsNCj4+ICsNCj4+ICsJc25wcmlu dGYocGF0aCwgc2l6ZW9mKHBhdGgpLCBFVkVOVF9TT1VSQ0VfREVWSUNFU19QQVRIICIvJXMvZXZl bnRzLyVzIiwgcnRlX3BtdS5uYW1lLCBuYW1lKTsNCj4+ICsJZnAgPSBmb3BlbihwYXRoLCAiciIp Ow0KPj4gKwlpZiAoZnAgPT0gTlVMTCkNCj4+ICsJCXJldHVybiAtZXJybm87DQo+PiArDQo+PiAr CXJldCA9IGZyZWFkKGJ1ZiwgMSwgc2l6ZW9mKGJ1ZiksIGZwKTsNCj4+ICsJaWYgKHJldCA9PSAw KSB7DQo+PiArCQlmY2xvc2UoZnApOw0KPj4gKw0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+PiAr CX0NCj4+ICsJZmNsb3NlKGZwKTsNCj4+ICsJYnVmW3JldF0gPSAnXDAnOw0KPj4gKw0KPj4gKwly ZXR1cm4gcGFyc2VfZXZlbnQoYnVmLCBjb25maWcpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMg aW50DQo+PiArZG9fcGVyZl9ldmVudF9vcGVuKHVpbnQ2NF90IGNvbmZpZ1szXSwgaW50IGdyb3Vw X2ZkKSB7DQo+PiArCXN0cnVjdCBwZXJmX2V2ZW50X2F0dHIgYXR0ciA9IHsNCj4+ICsJCS5zaXpl ID0gc2l6ZW9mKHN0cnVjdCBwZXJmX2V2ZW50X2F0dHIpLA0KPj4gKwkJLnR5cGUgPSBQRVJGX1RZ UEVfUkFXLA0KPj4gKwkJLmV4Y2x1ZGVfa2VybmVsID0gMSwNCj4+ICsJCS5leGNsdWRlX2h2ID0g MSwNCj4+ICsJCS5kaXNhYmxlZCA9IDEsDQo+PiArCX07DQo+PiArDQo+PiArCXBtdV9hcmNoX2Zp eHVwX2NvbmZpZyhjb25maWcpOw0KPj4gKw0KPj4gKwlhdHRyLmNvbmZpZyA9IGNvbmZpZ1swXTsN Cj4+ICsJYXR0ci5jb25maWcxID0gY29uZmlnWzFdOw0KPj4gKwlhdHRyLmNvbmZpZzIgPSBjb25m aWdbMl07DQo+PiArDQo+PiArCXJldHVybiBzeXNjYWxsKFNZU19wZXJmX2V2ZW50X29wZW4sICZh dHRyLCAwLCAtMSwgZ3JvdXBfZmQsIDApOyB9DQo+PiArDQo+PiArc3RhdGljIGludA0KPj4gK29w ZW5fZXZlbnRzKHN0cnVjdCBydGVfcG11X2V2ZW50X2dyb3VwICpncm91cCkgew0KPj4gKwlzdHJ1 Y3QgcnRlX3BtdV9ldmVudCAqZXZlbnQ7DQo+PiArCXVpbnQ2NF90IGNvbmZpZ1szXTsNCj4+ICsJ aW50IG51bSA9IDAsIHJldDsNCj4+ICsNCj4+ICsJLyogZ3JvdXAgbGVhZGVyIGdldHMgY3JlYXRl ZCBmaXJzdCwgd2l0aCBmZCA9IC0xICovDQo+PiArCWdyb3VwLT5mZHNbMF0gPSAtMTsNCj4+ICsN Cj4+ICsJVEFJTFFfRk9SRUFDSChldmVudCwgJnJ0ZV9wbXUuZXZlbnRfbGlzdCwgbmV4dCkgew0K Pj4gKwkJcmV0ID0gZ2V0X2V2ZW50X2NvbmZpZyhldmVudC0+bmFtZSwgY29uZmlnKTsNCj4+ICsJ CWlmIChyZXQpDQo+PiArCQkJY29udGludWU7DQo+PiArDQo+PiArCQlyZXQgPSBkb19wZXJmX2V2 ZW50X29wZW4oY29uZmlnLCBncm91cC0+ZmRzWzBdKTsNCj4+ICsJCWlmIChyZXQgPT0gLTEpIHsN Cj4+ICsJCQlyZXQgPSAtZXJybm87DQo+PiArCQkJZ290byBvdXQ7DQo+PiArCQl9DQo+PiArDQo+ PiArCQlncm91cC0+ZmRzW2V2ZW50LT5pbmRleF0gPSByZXQ7DQo+PiArCQludW0rKzsNCj4+ICsJ fQ0KPj4gKw0KPj4gKwlyZXR1cm4gMDsNCj4+ICtvdXQ6DQo+PiArCWZvciAoLS1udW07IG51bSA+ PSAwOyBudW0tLSkgew0KPj4gKwkJY2xvc2UoZ3JvdXAtPmZkc1tudW1dKTsNCj4+ICsJCWdyb3Vw LT5mZHNbbnVtXSA9IC0xOw0KPj4gKwl9DQo+PiArDQo+PiArDQo+PiArCXJldHVybiByZXQ7DQo+ PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQNCj4+ICttbWFwX2V2ZW50cyhzdHJ1Y3QgcnRlX3Bt dV9ldmVudF9ncm91cCAqZ3JvdXApIHsNCj4+ICsJbG9uZyBwYWdlX3NpemUgPSBzeXNjb25mKF9T Q19QQUdFX1NJWkUpOw0KPj4gKwl1bnNpZ25lZCBpbnQgaTsNCj4+ICsJdm9pZCAqYWRkcjsNCj4+ ICsJaW50IHJldDsNCj4+ICsNCj4+ICsJZm9yIChpID0gMDsgaSA8IHJ0ZV9wbXUubnVtX2dyb3Vw X2V2ZW50czsgaSsrKSB7DQo+PiArCQlhZGRyID0gbW1hcCgwLCBwYWdlX3NpemUsIFBST1RfUkVB RCwgTUFQX1NIQVJFRCwgZ3JvdXAtPmZkc1tpXSwgMCk7DQo+PiArCQlpZiAoYWRkciA9PSBNQVBf RkFJTEVEKSB7DQo+PiArCQkJcmV0ID0gLWVycm5vOw0KPj4gKwkJCWdvdG8gb3V0Ow0KPj4gKwkJ fQ0KPj4gKw0KPj4gKwkJZ3JvdXAtPm1tYXBfcGFnZXNbaV0gPSBhZGRyOw0KPj4gKwkJaWYgKCFn cm91cC0+bW1hcF9wYWdlc1tpXS0+Y2FwX3VzZXJfcmRwbWMpIHsNCj4+ICsJCQlyZXQgPSAtRVBF Uk07DQo+PiArCQkJZ290byBvdXQ7DQo+PiArCQl9DQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0dXJu IDA7DQo+PiArb3V0Og0KPj4gKwlmb3IgKDsgaTsgaS0tKSB7DQo+PiArCQltdW5tYXAoZ3JvdXAt Pm1tYXBfcGFnZXNbaSAtIDFdLCBwYWdlX3NpemUpOw0KPj4gKwkJZ3JvdXAtPm1tYXBfcGFnZXNb aSAtIDFdID0gTlVMTDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlyZXR1cm4gcmV0Ow0KPj4gK30NCj4+ ICsNCj4+ICtzdGF0aWMgdm9pZA0KPj4gK2NsZWFudXBfZXZlbnRzKHN0cnVjdCBydGVfcG11X2V2 ZW50X2dyb3VwICpncm91cCkgew0KPj4gKwl1bnNpZ25lZCBpbnQgaTsNCj4+ICsNCj4+ICsJaWYg KGdyb3VwLT5mZHNbMF0gIT0gLTEpDQo+PiArCQlpb2N0bChncm91cC0+ZmRzWzBdLCBQRVJGX0VW RU5UX0lPQ19ESVNBQkxFLCBQRVJGX0lPQ19GTEFHX0dST1VQKTsNCj4+ICsNCj4+ICsJZm9yIChp ID0gMDsgaSA8IHJ0ZV9wbXUubnVtX2dyb3VwX2V2ZW50czsgaSsrKSB7DQo+PiArCQlpZiAoZ3Jv dXAtPm1tYXBfcGFnZXNbaV0pIHsNCj4+ICsJCQltdW5tYXAoZ3JvdXAtPm1tYXBfcGFnZXNbaV0s IHN5c2NvbmYoX1NDX1BBR0VfU0laRSkpOw0KPj4gKwkJCWdyb3VwLT5tbWFwX3BhZ2VzW2ldID0g TlVMTDsNCj4+ICsJCX0NCj4+ICsNCj4+ICsJCWlmIChncm91cC0+ZmRzW2ldICE9IC0xKSB7DQo+ PiArCQkJY2xvc2UoZ3JvdXAtPmZkc1tpXSk7DQo+PiArCQkJZ3JvdXAtPmZkc1tpXSA9IC0xOw0K Pj4gKwkJfQ0KPj4gKwl9DQo+PiArDQo+PiArCWdyb3VwLT5lbmFibGVkID0gZmFsc2U7DQo+PiAr fQ0KPj4gKw0KPj4gK2ludA0KPj4gK19fcnRlX3BtdV9lbmFibGVfZ3JvdXAodm9pZCkNCj4+ICt7 DQo+PiArCXN0cnVjdCBydGVfcG11X2V2ZW50X2dyb3VwICpncm91cCA9ICZSVEVfUEVSX0xDT1JF KF9ldmVudF9ncm91cCk7DQo+PiArCWludCByZXQ7DQo+PiArDQo+PiArCWlmIChydGVfcG11Lm51 bV9ncm91cF9ldmVudHMgPT0gMCkNCj4+ICsJCXJldHVybiAtRU5PREVWOw0KPj4gKw0KPj4gKwly ZXQgPSBvcGVuX2V2ZW50cyhncm91cCk7DQo+PiArCWlmIChyZXQpDQo+PiArCQlnb3RvIG91dDsN Cj4+ICsNCj4+ICsJcmV0ID0gbW1hcF9ldmVudHMoZ3JvdXApOw0KPj4gKwlpZiAocmV0KQ0KPj4g KwkJZ290byBvdXQ7DQo+PiArDQo+PiArCWlmIChpb2N0bChncm91cC0+ZmRzWzBdLCBQRVJGX0VW RU5UX0lPQ19SRVNFVCwgUEVSRl9JT0NfRkxBR19HUk9VUCkgPT0gLTEpIHsNCj4+ICsJCXJldCA9 IC1lcnJubzsNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKwl9DQo+PiArDQo+PiArCWlmIChpb2N0bChn cm91cC0+ZmRzWzBdLCBQRVJGX0VWRU5UX0lPQ19FTkFCTEUsIFBFUkZfSU9DX0ZMQUdfR1JPVVAp ID09IC0xKSB7DQo+PiArCQlyZXQgPSAtZXJybm87DQo+PiArCQlnb3RvIG91dDsNCj4+ICsJfQ0K Pj4gKw0KPj4gKwlydGVfc3BpbmxvY2tfbG9jaygmcnRlX3BtdS5sb2NrKTsNCj4+ICsJVEFJTFFf SU5TRVJUX1RBSUwoJnJ0ZV9wbXUuZXZlbnRfZ3JvdXBfbGlzdCwgZ3JvdXAsIG5leHQpOw0KPj4g KwlydGVfc3BpbmxvY2tfdW5sb2NrKCZydGVfcG11LmxvY2spOw0KPj4gKwlncm91cC0+ZW5hYmxl ZCA9IHRydWU7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gKw0KPj4gK291dDoNCj4+ICsJY2xl YW51cF9ldmVudHMoZ3JvdXApOw0KPj4gKw0KPj4gKwlyZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsN Cj4+ICtzdGF0aWMgaW50DQo+PiArc2Nhbl9wbXVzKHZvaWQpDQo+PiArew0KPj4gKwljaGFyIHBh dGhbUEFUSF9NQVhdOw0KPj4gKwlzdHJ1Y3QgZGlyZW50ICpkZW50Ow0KPj4gKwljb25zdCBjaGFy ICpuYW1lOw0KPj4gKwlESVIgKmRpcnA7DQo+PiArDQo+PiArCWRpcnAgPSBvcGVuZGlyKEVWRU5U X1NPVVJDRV9ERVZJQ0VTX1BBVEgpOw0KPj4gKwlpZiAoZGlycCA9PSBOVUxMKQ0KPj4gKwkJcmV0 dXJuIC1lcnJubzsNCj4+ICsNCj4+ICsJd2hpbGUgKChkZW50ID0gcmVhZGRpcihkaXJwKSkpIHsN Cj4+ICsJCW5hbWUgPSBkZW50LT5kX25hbWU7DQo+PiArCQlpZiAobmFtZVswXSA9PSAnLicpDQo+ PiArCQkJY29udGludWU7DQo+PiArDQo+PiArCQkvKiBzeXNmcyBlbnRyeSBzaG91bGQgZWl0aGVy IGNvbnRhaW4gY3B1cyBvciBiZSBhIGNwdSAqLw0KPj4gKwkJaWYgKCFzdHJjbXAobmFtZSwgImNw dSIpKQ0KPj4gKwkJCWJyZWFrOw0KPj4gKw0KPj4gKwkJc25wcmludGYocGF0aCwgc2l6ZW9mKHBh dGgpLCBFVkVOVF9TT1VSQ0VfREVWSUNFU19QQVRIICIvJXMvY3B1cyIsIG5hbWUpOw0KPj4gKwkJ aWYgKGFjY2VzcyhwYXRoLCBGX09LKSA9PSAwKQ0KPj4gKwkJCWJyZWFrOw0KPj4gKwl9DQo+PiAr DQo+PiArCWlmIChkZW50KSB7DQo+PiArCQlydGVfcG11Lm5hbWUgPSBzdHJkdXAobmFtZSk7DQo+ PiArCQlpZiAocnRlX3BtdS5uYW1lID09IE5VTEwpIHsNCj4+ICsJCQljbG9zZWRpcihkaXJwKTsN Cj4+ICsNCj4+ICsJCQlyZXR1cm4gLUVOT01FTTsNCj4+ICsJCX0NCj4+ICsJfQ0KPj4gKw0KPj4g KwljbG9zZWRpcihkaXJwKTsNCj4+ICsNCj4+ICsJcmV0dXJuIHJ0ZV9wbXUubmFtZSA/IDAgOiAt RU5PREVWOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgc3RydWN0IHJ0ZV9wbXVfZXZlbnQgKg0K Pj4gK25ld19ldmVudChjb25zdCBjaGFyICpuYW1lKQ0KPj4gK3sNCj4+ICsJc3RydWN0IHJ0ZV9w bXVfZXZlbnQgKmV2ZW50Ow0KPj4gKw0KPj4gKwlldmVudCA9IGNhbGxvYygxLCBzaXplb2YoKmV2 ZW50KSk7DQo+PiArCWlmIChldmVudCA9PSBOVUxMKQ0KPj4gKwkJZ290byBvdXQ7DQo+PiArDQo+ PiArCWV2ZW50LT5uYW1lID0gc3RyZHVwKG5hbWUpOw0KPj4gKwlpZiAoZXZlbnQtPm5hbWUgPT0g TlVMTCkgew0KPj4gKwkJZnJlZShldmVudCk7DQo+PiArCQlldmVudCA9IE5VTEw7DQo+PiArCX0N Cj4+ICsNCj4+ICtvdXQ6DQo+PiArCXJldHVybiBldmVudDsNCj4+ICt9DQo+PiArDQo+PiArc3Rh dGljIHZvaWQNCj4+ICtmcmVlX2V2ZW50KHN0cnVjdCBydGVfcG11X2V2ZW50ICpldmVudCkgew0K Pj4gKwlmcmVlKGV2ZW50LT5uYW1lKTsNCj4+ICsJZnJlZShldmVudCk7DQo+PiArfQ0KPj4gKw0K Pj4gK2ludA0KPj4gK3J0ZV9wbXVfYWRkX2V2ZW50KGNvbnN0IGNoYXIgKm5hbWUpDQo+PiArew0K Pj4gKwlzdHJ1Y3QgcnRlX3BtdV9ldmVudCAqZXZlbnQ7DQo+PiArCWNoYXIgcGF0aFtQQVRIX01B WF07DQo+PiArDQo+PiArCWlmIChydGVfcG11Lm5hbWUgPT0gTlVMTCkNCj4+ICsJCXJldHVybiAt RU5PREVWOw0KPj4gKw0KPj4gKwlpZiAocnRlX3BtdS5udW1fZ3JvdXBfZXZlbnRzICsgMSA+PSBN QVhfTlVNX0dST1VQX0VWRU5UUykNCj4+ICsJCXJldHVybiAtRU5PU1BDOw0KPj4gKw0KPj4gKwlz bnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksIEVWRU5UX1NPVVJDRV9ERVZJQ0VTX1BBVEggIi8l cy9ldmVudHMvJXMiLCBydGVfcG11Lm5hbWUsIG5hbWUpOw0KPj4gKwlpZiAoYWNjZXNzKHBhdGgs IFJfT0spKQ0KPj4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+PiArDQo+PiArCVRBSUxRX0ZPUkVBQ0go ZXZlbnQsICZydGVfcG11LmV2ZW50X2xpc3QsIG5leHQpIHsNCj4+ICsJCWlmICghc3RyY21wKGV2 ZW50LT5uYW1lLCBuYW1lKSkNCj4+ICsJCQlyZXR1cm4gZXZlbnQtPmluZGV4Ow0KPj4gKwkJY29u dGludWU7DQo+PiArCX0NCj4+ICsNCj4+ICsJZXZlbnQgPSBuZXdfZXZlbnQobmFtZSk7DQo+PiAr CWlmIChldmVudCA9PSBOVUxMKQ0KPj4gKwkJcmV0dXJuIC1FTk9NRU07DQo+PiArDQo+PiArCWV2 ZW50LT5pbmRleCA9IHJ0ZV9wbXUubnVtX2dyb3VwX2V2ZW50cysrOw0KPj4gKwlUQUlMUV9JTlNF UlRfVEFJTCgmcnRlX3BtdS5ldmVudF9saXN0LCBldmVudCwgbmV4dCk7DQo+PiArDQo+PiArCXJl dHVybiBldmVudC0+aW5kZXg7DQo+PiArfQ0KPj4gKw0KPj4gK2ludA0KPj4gK3J0ZV9wbXVfaW5p dCh2b2lkKQ0KPj4gK3sNCj4+ICsJaW50IHJldDsNCj4+ICsNCj4+ICsJLyogQWxsb3cgY2FsbGlu ZyBpbml0IGZyb20gbXVsdGlwbGUgY29udGV4dHMgd2l0aGluIGEgc2luZ2xlIHRocmVhZC4gVGhp cyBzaW1wbGlmaWVzDQo+PiArCSAqIHJlc291cmNlIG1hbmFnZW1lbnQgYSBiaXQgZS5nIGluIGNh c2UgZmFzdC1wYXRoIHRyYWNlcG9pbnQgaGFzIGFscmVhZHkgYmVlbiBlbmFibGVkDQo+PiArCSAq IHZpYSBjb21tYW5kIGxpbmUgYnV0IGFwcGxpY2F0aW9uIGRvZXNuJ3QgY2FyZSBlbm91Z2ggYW5k IHBlcmZvcm1zIGluaXQvZmluaSBhZ2Fpbi4NCj4+ICsJICovDQo+PiArCWlmIChydGVfcG11Lmlu aXRpYWxpemVkICE9IDApIHsNCj4+ICsJCXJ0ZV9wbXUuaW5pdGlhbGl6ZWQrKzsNCj4+ICsJCXJl dHVybiAwOw0KPj4gKwl9DQo+PiArDQo+PiArCXJldCA9IHNjYW5fcG11cygpOw0KPj4gKwlpZiAo cmV0KQ0KPj4gKwkJZ290byBvdXQ7DQo+PiArDQo+PiArCXJldCA9IHBtdV9hcmNoX2luaXQoKTsN Cj4+ICsJaWYgKHJldCkNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKw0KPj4gKwlUQUlMUV9JTklUKCZy dGVfcG11LmV2ZW50X2xpc3QpOw0KPj4gKwlUQUlMUV9JTklUKCZydGVfcG11LmV2ZW50X2dyb3Vw X2xpc3QpOw0KPj4gKwlydGVfc3BpbmxvY2tfaW5pdCgmcnRlX3BtdS5sb2NrKTsNCj4+ICsJcnRl X3BtdS5pbml0aWFsaXplZCA9IDE7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK291dDoNCj4+ ICsJZnJlZShydGVfcG11Lm5hbWUpOw0KPj4gKwlydGVfcG11Lm5hbWUgPSBOVUxMOw0KPj4gKw0K Pj4gKwlyZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICt2b2lkDQo+PiArcnRlX3BtdV9maW5p KHZvaWQpDQo+PiArew0KPj4gKwlzdHJ1Y3QgcnRlX3BtdV9ldmVudF9ncm91cCAqZ3JvdXAsICp0 bXBfZ3JvdXA7DQo+PiArCXN0cnVjdCBydGVfcG11X2V2ZW50ICpldmVudCwgKnRtcF9ldmVudDsN Cj4+ICsNCj4+ICsJLyogY2xlYW51cCBvbmNlIGluaXQgY291bnQgZHJvcHMgdG8gemVybyAqLw0K Pj4gKwlpZiAocnRlX3BtdS5pbml0aWFsaXplZCA9PSAwIHx8IC0tcnRlX3BtdS5pbml0aWFsaXpl ZCAhPSAwKQ0KPj4gKwkJcmV0dXJuOw0KPj4gKw0KPj4gKwlSVEVfVEFJTFFfRk9SRUFDSF9TQUZF KGV2ZW50LCAmcnRlX3BtdS5ldmVudF9saXN0LCBuZXh0LCB0bXBfZXZlbnQpIHsNCj4+ICsJCVRB SUxRX1JFTU9WRSgmcnRlX3BtdS5ldmVudF9saXN0LCBldmVudCwgbmV4dCk7DQo+PiArCQlmcmVl X2V2ZW50KGV2ZW50KTsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlSVEVfVEFJTFFfRk9SRUFDSF9TQUZF KGdyb3VwLCAmcnRlX3BtdS5ldmVudF9ncm91cF9saXN0LCBuZXh0LCB0bXBfZ3JvdXApIHsNCj4+ ICsJCVRBSUxRX1JFTU9WRSgmcnRlX3BtdS5ldmVudF9ncm91cF9saXN0LCBncm91cCwgbmV4dCk7 DQo+PiArCQljbGVhbnVwX2V2ZW50cyhncm91cCk7DQo+PiArCX0NCj4+ICsNCj4+ICsJcG11X2Fy Y2hfZmluaSgpOw0KPj4gKwlmcmVlKHJ0ZV9wbXUubmFtZSk7DQo+PiArCXJ0ZV9wbXUubmFtZSA9 IE5VTEw7DQo+PiArCXJ0ZV9wbXUubnVtX2dyb3VwX2V2ZW50cyA9IDA7DQo+PiArfQ0KPj4gZGlm ZiAtLWdpdCBhL2xpYi9wbXUvcnRlX3BtdS5oIGIvbGliL3BtdS9ydGVfcG11LmggbmV3IGZpbGUg bW9kZQ0KPj4gMTAwNjQ0IGluZGV4IDAwMDAwMDAwMDAuLjZiNjY0YzMzMzYNCj4+IC0tLSAvZGV2 L251bGwNCj4+ICsrKyBiL2xpYi9wbXUvcnRlX3BtdS5oDQo+PiBAQCAtMCwwICsxLDIxMiBAQA0K Pj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMy1DbGF1c2UNCj4+ICsgKiBDb3B5 cmlnaHQoYykgMjAyMyBNYXJ2ZWxsDQo+PiArICovDQo+PiArDQo+PiArI2lmbmRlZiBfUlRFX1BN VV9IXw0KPj4gKyNkZWZpbmUgX1JURV9QTVVfSF8NCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBAZmls ZQ0KPj4gKyAqDQo+PiArICogUE1VIGV2ZW50IHRyYWNpbmcgb3BlcmF0aW9ucw0KPj4gKyAqDQo+ PiArICogVGhpcyBmaWxlIGRlZmluZXMgZ2VuZXJpYyBBUEkgYW5kIHR5cGVzIG5lY2Vzc2FyeSB0 byBzZXR1cCBQTVUgYW5kDQo+PiArICogcmVhZCBzZWxlY3RlZCBjb3VudGVycyBpbiBydW50aW1l Lg0KPj4gKyAqLw0KPj4gKw0KPj4gKyNpZmRlZiBfX2NwbHVzcGx1cw0KPj4gK2V4dGVybiAiQyIg ew0KPj4gKyNlbmRpZg0KPj4gKw0KPj4gKyNpbmNsdWRlIDxsaW51eC9wZXJmX2V2ZW50Lmg+DQo+ PiArDQo+PiArI2luY2x1ZGUgPHJ0ZV9hdG9taWMuaD4NCj4+ICsjaW5jbHVkZSA8cnRlX2JyYW5j aF9wcmVkaWN0aW9uLmg+DQo+PiArI2luY2x1ZGUgPHJ0ZV9jb21tb24uaD4NCj4+ICsjaW5jbHVk ZSA8cnRlX2NvbXBhdC5oPg0KPj4gKyNpbmNsdWRlIDxydGVfc3BpbmxvY2suaD4NCj4+ICsNCj4+ ICsvKiogTWF4aW11bSBudW1iZXIgb2YgZXZlbnRzIGluIGEgZ3JvdXAgKi8gI2RlZmluZQ0KPj4g K01BWF9OVU1fR1JPVVBfRVZFTlRTIDgNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBBIHN0cnVjdHVy ZSBkZXNjcmliaW5nIGEgZ3JvdXAgb2YgZXZlbnRzLg0KPj4gKyAqLw0KPj4gK3N0cnVjdCBydGVf cG11X2V2ZW50X2dyb3VwIHsNCj4+ICsJc3RydWN0IHBlcmZfZXZlbnRfbW1hcF9wYWdlICptbWFw X3BhZ2VzW01BWF9OVU1fR1JPVVBfRVZFTlRTXTsgLyoqPCBhcnJheSBvZiB1c2VyIHBhZ2VzICov DQo+PiArCWludCBmZHNbTUFYX05VTV9HUk9VUF9FVkVOVFNdOyAvKio8IGFycmF5IG9mIGV2ZW50 IGRlc2NyaXB0b3JzICovDQo+PiArCWJvb2wgZW5hYmxlZDsgLyoqPCB0cnVlIGlmIGdyb3VwIHdh cyBlbmFibGVkIG9uIHBhcnRpY3VsYXIgbGNvcmUgKi8NCj4+ICsJVEFJTFFfRU5UUlkocnRlX3Bt dV9ldmVudF9ncm91cCkgbmV4dDsgLyoqPCBsaXN0IGVudHJ5ICovIH0NCj4+ICtfX3J0ZV9jYWNo ZV9hbGlnbmVkOw0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIEEgc3RydWN0dXJlIGRlc2NyaWJpbmcg YW4gZXZlbnQuDQo+PiArICovDQo+PiArc3RydWN0IHJ0ZV9wbXVfZXZlbnQgew0KPj4gKwljaGFy ICpuYW1lOyAvKio8IG5hbWUgb2YgYW4gZXZlbnQgKi8NCj4+ICsJdW5zaWduZWQgaW50IGluZGV4 OyAvKio8IGV2ZW50IGluZGV4IGludG8gZmRzL21tYXBfcGFnZXMgKi8NCj4+ICsJVEFJTFFfRU5U UlkocnRlX3BtdV9ldmVudCkgbmV4dDsgLyoqPCBsaXN0IGVudHJ5ICovIH07DQo+PiArDQo+PiAr LyoqDQo+PiArICogQSBQTVUgc3RhdGUgY29udGFpbmVyLg0KPj4gKyAqLw0KPj4gK3N0cnVjdCBy dGVfcG11IHsNCj4+ICsJY2hhciAqbmFtZTsgLyoqPCBuYW1lIG9mIGNvcmUgUE1VIGxpc3RlZCB1 bmRlciAvc3lzL2J1cy9ldmVudF9zb3VyY2UvZGV2aWNlcyAqLw0KPj4gKwlydGVfc3BpbmxvY2tf dCBsb2NrOyAvKio8IHNlcmlhbGl6ZSBhY2Nlc3MgdG8gZXZlbnQgZ3JvdXAgbGlzdCAqLw0KPj4g KwlUQUlMUV9IRUFEKCwgcnRlX3BtdV9ldmVudF9ncm91cCkgZXZlbnRfZ3JvdXBfbGlzdDsgLyoq PCBsaXN0IG9mIGV2ZW50IGdyb3VwcyAqLw0KPj4gKwl1bnNpZ25lZCBpbnQgbnVtX2dyb3VwX2V2 ZW50czsgLyoqPCBudW1iZXIgb2YgZXZlbnRzIGluIGEgZ3JvdXAgKi8NCj4+ICsJVEFJTFFfSEVB RCgsIHJ0ZV9wbXVfZXZlbnQpIGV2ZW50X2xpc3Q7IC8qKjwgbGlzdCBvZiBtYXRjaGluZyBldmVu dHMgKi8NCj4+ICsJdW5zaWduZWQgaW50IGluaXRpYWxpemVkOyAvKio8IGluaXRpYWxpemF0aW9u IGNvdW50ZXIgKi8gfTsNCj4+ICsNCj4+ICsvKiogbGNvcmUgZXZlbnQgZ3JvdXAgKi8NCj4+ICtS VEVfREVDTEFSRV9QRVJfTENPUkUoc3RydWN0IHJ0ZV9wbXVfZXZlbnRfZ3JvdXAsIF9ldmVudF9n cm91cCk7DQo+PiArDQo+PiArLyoqIFBNVSBzdGF0ZSBjb250YWluZXIgKi8NCj4+ICtleHRlcm4g c3RydWN0IHJ0ZV9wbXUgcnRlX3BtdTsNCj4+ICsNCj4+ICsvKiogRWFjaCBhcmNoaXRlY3R1cmUg c3VwcG9ydGluZyBQTVUgbmVlZHMgdG8gcHJvdmlkZSBpdHMgb3duIHZlcnNpb24NCj4+ICsqLyAj aWZuZGVmIHJ0ZV9wbXVfcG1jX3JlYWQgI2RlZmluZSBydGVfcG11X3BtY19yZWFkKGluZGV4KSAo eyAwOyB9KQ0KPj4gKyNlbmRpZg0KPj4gKw0KPj4gKy8qKg0KPj4gKyAqIEB3YXJuaW5nDQo+PiAr ICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hhbmdlIHdpdGhvdXQgcHJpb3Igbm90 aWNlDQo+PiArICoNCj4+ICsgKiBSZWFkIFBNVSBjb3VudGVyLg0KPj4gKyAqDQo+PiArICogQHdh cm5pbmcgVGhpcyBzaG91bGQgYmUgbm90IGNhbGxlZCBkaXJlY3RseS4NCj4+ICsgKg0KPj4gKyAq IEBwYXJhbSBwYw0KPj4gKyAqICAgUG9pbnRlciB0byB0aGUgbW1hcHBlZCB1c2VyIHBhZ2UuDQo+ PiArICogQHJldHVybg0KPj4gKyAqICAgQ291bnRlciB2YWx1ZSByZWFkIGZyb20gaGFyZHdhcmUu DQo+PiArICovDQo+PiArc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdWludDY0X3QNCj4+ICtf X3J0ZV9wbXVfcmVhZF91c2VycGFnZShzdHJ1Y3QgcGVyZl9ldmVudF9tbWFwX3BhZ2UgKnBjKSB7 DQo+PiArCXVpbnQ2NF90IHdpZHRoLCBvZmZzZXQ7DQo+PiArCXVpbnQzMl90IHNlcSwgaW5kZXg7 DQo+PiArCWludDY0X3QgcG1jOw0KPj4gKw0KPj4gKwlmb3IgKDs7KSB7DQo+PiArCQlzZXEgPSBw Yy0+bG9jazsNCj4+ICsJCXJ0ZV9jb21waWxlcl9iYXJyaWVyKCk7DQo+DQo+QXJlIHlvdSBzdXJl IHRoYXQgY29tcGlsZXJfYmFycmllcigpIGlzIGVub3VnaCBoZXJlPw0KPk9uIHNvbWUgYXJjaHMg Q1BVIGl0c2VsZiBoYXMgZnJlZWRvbSB0byByZS1vcmRlciByZWFkcy4NCj5PciBJIGFtIG1pc3Np bmcgc29tZXRoaW5nIG9idmlvdXMgaGVyZT8NCj4NCg0KSXQncyBhIG1hdHRlciBvZiBub3Qga2Vl cGluZyBvbGQgc3R1ZmYgY2FjaGVkIGluIHJlZ2lzdGVycyANCmFuZCBtYWtpbmcgc3VyZSB0aGF0 IHdlIGhhdmUgdHdvIHJlYWRzIG9mIGxvY2suIENQVSByZW9yZGVyaW5nDQp3b24ndCBkbyBhbnkg aGFybSBoZXJlLiANCg0KPj4gKwkJaW5kZXggPSBwYy0+aW5kZXg7DQo+PiArCQlvZmZzZXQgPSBw Yy0+b2Zmc2V0Ow0KPj4gKwkJd2lkdGggPSBwYy0+cG1jX3dpZHRoOw0KPj4gKw0KPj4gKwkJLyog aW5kZXggc2V0IHRvIDAgbWVhbnMgdGhhdCBwYXJ0aWN1bGFyIGNvdW50ZXIgY2Fubm90IGJlIHVz ZWQgKi8NCj4+ICsJCWlmIChsaWtlbHkocGMtPmNhcF91c2VyX3JkcG1jICYmIGluZGV4KSkgew0K Pj4gKwkJCXBtYyA9IHJ0ZV9wbXVfcG1jX3JlYWQoaW5kZXggLSAxKTsNCj4+ICsJCQlwbWMgPDw9 IDY0IC0gd2lkdGg7DQo+PiArCQkJcG1jID4+PSA2NCAtIHdpZHRoOw0KPj4gKwkJCW9mZnNldCAr PSBwbWM7DQo+PiArCQl9DQo+PiArDQo+PiArCQlydGVfY29tcGlsZXJfYmFycmllcigpOw0KPj4g Kw0KPj4gKwkJaWYgKGxpa2VseShwYy0+bG9jayA9PSBzZXEpKQ0KPj4gKwkJCXJldHVybiBvZmZz ZXQ7DQo+PiArCX0NCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gKy8qKg0K Pj4gKyAqIEB3YXJuaW5nDQo+PiArICogQGIgRVhQRVJJTUVOVEFMOiB0aGlzIEFQSSBtYXkgY2hh bmdlIHdpdGhvdXQgcHJpb3Igbm90aWNlDQo+PiArICoNCj4+ICsgKiBFbmFibGUgZ3JvdXAgb2Yg ZXZlbnRzIG9uIHRoZSBjYWxsaW5nIGxjb3JlLg0KPj4gKyAqDQo+PiArICogQHdhcm5pbmcgVGhp cyBzaG91bGQgYmUgbm90IGNhbGxlZCBkaXJlY3RseS4NCj4+ICsgKg0KPj4gKyAqIEByZXR1cm4N Cj4+ICsgKiAgIDAgaW4gY2FzZSBvZiBzdWNjZXNzLCBuZWdhdGl2ZSB2YWx1ZSBvdGhlcndpc2Uu DQo+PiArICovDQo+PiArX19ydGVfZXhwZXJpbWVudGFsDQo+PiAraW50DQo+PiArX19ydGVfcG11 X2VuYWJsZV9ncm91cCh2b2lkKTsNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBAd2FybmluZw0KPj4g KyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5v dGljZQ0KPj4gKyAqDQo+PiArICogSW5pdGlhbGl6ZSBQTVUgbGlicmFyeS4NCj4+ICsgKg0KPj4g KyAqIEB3YXJuaW5nIFRoaXMgc2hvdWxkIGJlIG5vdCBjYWxsZWQgZGlyZWN0bHkuDQo+PiArICoN Cj4+ICsgKiBAcmV0dXJuDQo+PiArICogICAwIGluIGNhc2Ugb2Ygc3VjY2VzcywgbmVnYXRpdmUg dmFsdWUgb3RoZXJ3aXNlLg0KPj4gKyAqLw0KPj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPj4gK2lu dA0KPj4gK3J0ZV9wbXVfaW5pdCh2b2lkKTsNCj4+ICsNCj4+ICsvKioNCj4+ICsgKiBAd2Fybmlu Zw0KPj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkgbWF5IGNoYW5nZSB3aXRob3V0IHBy aW9yIG5vdGljZQ0KPj4gKyAqDQo+PiArICogRmluYWxpemUgUE1VIGxpYnJhcnkuIFRoaXMgc2hv dWxkIGJlIGNhbGxlZCBhZnRlciBQTVUgY291bnRlcnMgYXJlIG5vIGxvbmdlciBiZWluZyByZWFk Lg0KPj4gKyAqLw0KPj4gK19fcnRlX2V4cGVyaW1lbnRhbA0KPj4gK3ZvaWQNCj4+ICtydGVfcG11 X2Zpbmkodm9pZCk7DQo+PiArDQo+PiArLyoqDQo+PiArICogQHdhcm5pbmcNCj4+ICsgKiBAYiBF WFBFUklNRU5UQUw6IHRoaXMgQVBJIG1heSBjaGFuZ2Ugd2l0aG91dCBwcmlvciBub3RpY2UNCj4+ ICsgKg0KPj4gKyAqIEFkZCBldmVudCB0byB0aGUgZ3JvdXAgb2YgZW5hYmxlZCBldmVudHMuDQo+ PiArICoNCj4+ICsgKiBAcGFyYW0gbmFtZQ0KPj4gKyAqICAgTmFtZSBvZiBhbiBldmVudCBsaXN0 ZWQgdW5kZXIgL3N5cy9idXMvZXZlbnRfc291cmNlL2RldmljZXMvcG11L2V2ZW50cy4NCj4+ICsg KiBAcmV0dXJuDQo+PiArICogICBFdmVudCBpbmRleCBpbiBjYXNlIG9mIHN1Y2Nlc3MsIG5lZ2F0 aXZlIHZhbHVlIG90aGVyd2lzZS4NCj4+ICsgKi8NCj4+ICtfX3J0ZV9leHBlcmltZW50YWwNCj4+ ICtpbnQNCj4+ICtydGVfcG11X2FkZF9ldmVudChjb25zdCBjaGFyICpuYW1lKTsNCj4+ICsNCj4+ ICsvKioNCj4+ICsgKiBAd2FybmluZw0KPj4gKyAqIEBiIEVYUEVSSU1FTlRBTDogdGhpcyBBUEkg bWF5IGNoYW5nZSB3aXRob3V0IHByaW9yIG5vdGljZQ0KPj4gKyAqDQo+PiArICogUmVhZCBoYXJk d2FyZSBjb3VudGVyIGNvbmZpZ3VyZWQgdG8gY291bnQgb2NjdXJyZW5jZXMgb2YgYW4gZXZlbnQu DQo+PiArICoNCj4+ICsgKiBAcGFyYW0gaW5kZXgNCj4+ICsgKiAgIEluZGV4IG9mIGFuIGV2ZW50 IHRvIGJlIHJlYWQuDQo+PiArICogQHJldHVybg0KPj4gKyAqICAgRXZlbnQgdmFsdWUgcmVhZCBm cm9tIHJlZ2lzdGVyLiBJbiBjYXNlIG9mIGVycm9ycyBvciBsYWNrIG9mIHN1cHBvcnQNCj4+ICsg KiAgIDAgaXMgcmV0dXJuZWQuIEluIG90aGVyIHdvcmRzLCBzdHJlYW0gb2YgemVyb3MgaW4gYSB0 cmFjZSBmaWxlDQo+PiArICogICBpbmRpY2F0ZXMgcHJvYmxlbSB3aXRoIHJlYWRpbmcgcGFydGlj dWxhciBQTVUgZXZlbnQgcmVnaXN0ZXIuDQo+PiArICovDQo+PiArX19ydGVfZXhwZXJpbWVudGFs DQo+PiArc3RhdGljIF9fcnRlX2Fsd2F5c19pbmxpbmUgdWludDY0X3QNCj4+ICtydGVfcG11X3Jl YWQodW5zaWduZWQgaW50IGluZGV4KQ0KPj4gK3sNCj4+ICsJc3RydWN0IHJ0ZV9wbXVfZXZlbnRf Z3JvdXAgKmdyb3VwID0gJlJURV9QRVJfTENPUkUoX2V2ZW50X2dyb3VwKTsNCj4+ICsJaW50IHJl dDsNCj4+ICsNCj4+ICsJaWYgKHVubGlrZWx5KCFydGVfcG11LmluaXRpYWxpemVkKSkNCj4+ICsJ CXJldHVybiAwOw0KPj4gKw0KPj4gKwlpZiAodW5saWtlbHkoIWdyb3VwLT5lbmFibGVkKSkgew0K Pj4gKwkJcmV0ID0gX19ydGVfcG11X2VuYWJsZV9ncm91cCgpOw0KPj4gKwkJaWYgKHJldCkNCj4+ ICsJCQlyZXR1cm4gMDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAodW5saWtlbHkoaW5kZXggPj0g cnRlX3BtdS5udW1fZ3JvdXBfZXZlbnRzKSkNCj4+ICsJCXJldHVybiAwOw0KPj4gKw0KPj4gKwly ZXR1cm4gX19ydGVfcG11X3JlYWRfdXNlcnBhZ2UoZ3JvdXAtPm1tYXBfcGFnZXNbaW5kZXhdKTsN Cj4+ICt9DQo+PiArDQo+PiArI2lmZGVmIF9fY3BsdXNwbHVzDQo+PiArfQ0KPj4gKyNlbmRpZg0K Pj4gKw0KPj4gKyNlbmRpZiAvKiBfUlRFX1BNVV9IXyAqLw0KPj4gZGlmZiAtLWdpdCBhL2xpYi9w bXUvdmVyc2lvbi5tYXAgYi9saWIvcG11L3ZlcnNpb24ubWFwIG5ldyBmaWxlIG1vZGUNCj4+IDEw MDY0NCBpbmRleCAwMDAwMDAwMDAwLi4zOWE0ZjI3OWMxDQo+PiAtLS0gL2Rldi9udWxsDQo+PiAr KysgYi9saWIvcG11L3ZlcnNpb24ubWFwDQo+PiBAQCAtMCwwICsxLDE1IEBADQo+PiArRFBES18y MyB7DQo+PiArCWxvY2FsOiAqOw0KPj4gK307DQo+PiArDQo+PiArRVhQRVJJTUVOVEFMIHsNCj4+ ICsJZ2xvYmFsOg0KPj4gKw0KPj4gKwlfX3J0ZV9wbXVfZW5hYmxlX2dyb3VwOw0KPj4gKwlwZXJf bGNvcmVfX2V2ZW50X2dyb3VwOw0KPj4gKwlydGVfcG11Ow0KPj4gKwlydGVfcG11X2FkZF9ldmVu dDsNCj4+ICsJcnRlX3BtdV9maW5pOw0KPj4gKwlydGVfcG11X2luaXQ7DQo+PiArCXJ0ZV9wbXVf cmVhZDsNCj4+ICt9Ow0KDQo=