Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lyiir-00034I-W1 for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Jun 2021 22:30:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lyiiq-0002ck-VO for pgsql-hackers@arkaria.postgresql.org; Wed, 30 Jun 2021 22:30:20 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lyiip-0002cb-Qi for pgsql-hackers@lists.postgresql.org; Wed, 30 Jun 2021 22:30:20 +0000 Received: from mail-bn7nam10on2045.outbound.protection.outlook.com ([40.107.92.45] helo=NAM10-BN7-obe.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lyiik-0004dr-On for pgsql-hackers@postgresql.org; Wed, 30 Jun 2021 22:30:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GdIrSmPmsFPcPnIyHAWxeN52ghC7d2Wp1/61tFgSqOX/y8FhZ22DsMsZ0PJpAt7lN5vtPbrbNLOBsXKbz1YRfvSWvC/ffJTQHkTn9lTrqOCN6KXi0CenPhrgpP0jlpfxZzsiIhs7M4vi2/WMNScxOYzEIojrDls6rNEII3SziCB4tZ4BCUWY7GSAg20UJmgNYOWaMkfI/uxHJjmblGaJzIK0qi1KSfanBm4ZcAADOHb0SKEUSBkqJOjlgUnLc7wobhQjsn7WyP9mo7iyFlhzVOTPi3up9kNLBarL5V9g7aqrvMhJSIM2mZV03TgamY6ccOlpzI+x5sfNbyV9v98iSw== 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=zQp8MGwzBnnFfMs1A8uuA/5RP6x0R9DEQJYKQM9vD2U=; b=jZvcoGKFUPfDIGIzM63bzddMt/AijpFN+VIN351yRKMTh3x6F/GELGaXPgGczg9wWCvpPbA6SUSqy3tbE8TqY354Pz7IILTHNNzVc0J9r/95r9OzrQ/ifydaRf0kTIS/GPjERdfPmCvD98grdosCNhVvcgysFya5mdWX1OeCqy3pO7Lt/ya5QxhmUNfcszV+4CcCFhsxEaS2BLiu8MiUSapOJz1FC71GF79LJDI4RWsHKYtUoQoWu4Le8MAHDP5XbLE7JXC4H7V9nIKtbdFnuBk0GpaBm7f2OdqQ0C33yeGGe8uWzr9/+lJwUSk+ZbxyJieymZ8XtfbpElMbrbqL+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=vmware.com; dmarc=pass action=none header.from=vmware.com; dkim=pass header.d=vmware.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vmware.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zQp8MGwzBnnFfMs1A8uuA/5RP6x0R9DEQJYKQM9vD2U=; b=zHc2AHETOAqRwt9CL/+e08JoRDsqtOuO/lwbOUF4aI5LmvW31PBNokUi6CKE1+e9erMzlyONEiwYpg1RelNWUB4RJTize3IHGrmy86RpwLDN8QKI/0IJwXeiaXXwkVwQs4+8SfJaZ1/mATu0bd6+TuxGhz2b6J1l+gVpENEvU10= Received: from MWHPR05MB2896.namprd05.prod.outlook.com (2603:10b6:300:65::20) by MWHPR05MB3629.namprd05.prod.outlook.com (2603:10b6:301:3f::39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4287.19; Wed, 30 Jun 2021 22:30:12 +0000 Received: from MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::59e1:5f08:31c6:1d3]) by MWHPR05MB2896.namprd05.prod.outlook.com ([fe80::59e1:5f08:31c6:1d3%9]) with mapi id 15.20.4287.022; Wed, 30 Jun 2021 22:30:12 +0000 From: Jacob Champion To: "michael@paquier.xyz" CC: "pgsql-hackers@postgresql.org" Subject: Re: [PATCH] Pull general SASL framework out of SCRAM Thread-Topic: [PATCH] Pull general SASL framework out of SCRAM Thread-Index: AQHXZ7cuih/hnd4520mfiSjUyUJWWashNioAgAQxYQCAABKUAIAHtWyA Date: Wed, 30 Jun 2021 22:30:12 +0000 Message-ID: <0907fda41fb40b23e2cbdf7eb05a8d61dd5307b3.camel@vmware.com> References: <3d2a6f5d50e741117d6baf83eb67ebf1a8a35a11.camel@vmware.com> <9dc553fe86ba34bff1e0b636c493b527fc7bc030.camel@vmware.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: user-agent: Evolution 3.36.5-0ubuntu1 authentication-results: paquier.xyz; dkim=none (message not signed) header.d=none;paquier.xyz; dmarc=none action=none header.from=vmware.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fd080aa2-f136-4b9b-18e2-08d93c16a022 x-ms-traffictypediagnostic: MWHPR05MB3629: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8273; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: HMOl7aQqktWs/LVq/o2WptaX5cZVnTiYiMGpT6wgRX42d/+WkVtaIguw7fWHXEEzEbh/jT2WgI9GIOpX7giTeGzptXU/JtIVvPLwsDl/gjm8PDVq0duIs2rZDf4jtUAi/hhnN04ctpcuLWUZYWX1bSVM+cETDgWRkgz81ORmh+Wv2K8vmq+1lAyaGrFz22k8LoHT8aswwmemOTbIbvfDq99tFm9/Cm80WX9goxe/jFiuA5I28jDyM3ZBegbUe6acSOUu2CH05MNeWceepAiNlHVjyk29++aTdkdOzL+JhIEpRNXrDuZ081i7cjgkBAjqbFRaQNX3iYoHDP+2TM4pCy2HOTL+vH63BtCM5Qc3xR/8xrBVs3QATN+U2vk8lYIzKQolOZ5ak+1/8r+KfVv3aN4C2cGDgGpfHM+Yo+gwS/5Vt/Cx8/umU42OV5PFGnFtwSQ2Cpbd+YVcW6ix24D0rQ9etEFImrpXCEJLgQl0S2R/fIbBH5rea4ism5sWmO0E7i33LTAuTIYYk+X12IsErBSYuHw1sVxHdzTlPAscsWFm9uS/EymM9ExH3ZaBF5x5/jaIwR0MCvFuDSdOZ8VThNlv00jS4pQI1X073e7/1MA3sICQSJBCpm1dgH/pdJOxYYbM8aCrbo5SK0tEdjkw1A== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR05MB2896.namprd05.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(396003)(366004)(39860400002)(376002)(346002)(5660300002)(478600001)(4326008)(8676002)(6916009)(2906002)(6486002)(36756003)(99936003)(6512007)(66576008)(186003)(316002)(64756008)(71200400001)(66476007)(66556008)(66446008)(38100700002)(2616005)(8936002)(66946007)(6506007)(76116006)(122000001)(86362001)(26005);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?aFlWWExYbFlhZndESVFtTjZvcEErbkI5U3owZEpSeU1Zc2hPdmF4M0F4ekx5?= =?utf-8?B?Y096bXNTRTVYL3FtaDFHNEwxMUFTMWxEQUtwMHJaTEpCSThaNHhHWTBVekNv?= =?utf-8?B?NTJ5NmxzYm5CbVkwMnVwRGpYdDFteGw5K3JDM3pSNWN5ZVd2NzBRMGVCcEFU?= =?utf-8?B?WHNicDRhQ0k0dXdxZ21sZGVDTEFLTXhFbmhnWUliT3JvQ0xqYjZEbmNmcjJz?= =?utf-8?B?YTlLdE9LdCtFdVp3YUY5L0tXZUpQOWJVK2dLQTk5Z2swYStTWVNpaTA2ZDYx?= =?utf-8?B?RFhhUmRQOW1KdmFWSmZJbWlqOXBoa2hDQ3NVNUhkOEd6WmlWZGdWQjYvWmNi?= =?utf-8?B?N0lIOXljSjFod2JISTV0dVNORUR3aUg0NHUxVnErZnE0L0srMy9md2UyM2kr?= =?utf-8?B?TXIwclZFaHVYK2NHZXdHd3N0N0toczJQY3dvc3RPelRVV2xYZGhBcTFKU29L?= =?utf-8?B?U2czYnJGKzBlN3p5aHM5Sk1PWUR0K0VlcWQvNE52bkh1SFBrNFRNa09TYmtU?= =?utf-8?B?SzBjQitnZk9BKzRRVXJWT0RuNExxNDFMYjdVUHlTWVExN1JXZ012d2xkc2cw?= =?utf-8?B?cmFRd3hxYk0zVGVoK1hKcTgzUWpqTUtOK2ltbkIzcDhpWCsxY1JFNkx3Slpt?= =?utf-8?B?Wm01bWRIRVliN0FDN0hTMVNWQXhoNll6WWJST2ZpeGFwdElnbk03dlZPd2N6?= =?utf-8?B?eEY1T2k1Tkt6cVhkNnV1ZVZDUllVWFFLZzd6YUs2TUZTbVpkL1MwaTRaWlFI?= =?utf-8?B?TExGYklnZ1pFZkhmNWNEOGxOYWUwZzB2OHIxNDlEdDRpblFIZVdJZ2RFajRZ?= =?utf-8?B?S05nOTNvSnV3czZIODQ3MlZvMlZqSnJTb09iOUE3VUt2Rkc1ZVRmVDZOMXVj?= =?utf-8?B?cUNCUklQMkQxbFozNWhkOTRsN2UzTHlFbWxJVTJteHFXUWZlV2JzR25FSStJ?= =?utf-8?B?a2NiemM3YnNOZXFJZFUrYS9KK0V0blRVL01XZ1pwaCtSNDZZSW9wUmRaaEtM?= =?utf-8?B?ZEZ1elBOV2RERFYvUWZ4bmxjVHNQUmlxQlRSVEpKY0pmZnBoUDFwWks1MzFB?= =?utf-8?B?RVZCSm8xdEIvRE5wSGtrUDMxcC8veHZzMWN0V0g5QnFyM1picFNuRkxiejlz?= =?utf-8?B?NTc0L0ZHTVB1Q0FKcUhya3UrLzNDYzlsY2NvOG9TRzFHV3RlZmlLMGF3c2do?= =?utf-8?B?aG1SdXRnR1hZb0FUWDYrTDJRS1pKOVcrNjVNa1drWVF6TDhnU3NOSUJ4YkRh?= =?utf-8?B?d3VSV0ZaUThCbmMwVm9ZUkFLbjBJR2IxanhDKy94cHVLby9CN096Y2NvVThB?= =?utf-8?B?WktYYUVSVFVIZk42WTFyeWlRajFobTZ4TXR5cUNOc0hqZkRneVBHalJOZ3lP?= =?utf-8?B?aXhDYkJvczY3OWhvOE5rV3FlUkNuSHRacXh2L01rdzB0dkREZGhRdXYvdWJm?= =?utf-8?B?eXFSQTlncTlGNEtScElxVVVYOW0wYVMyRno1OHBjaVBJRFZmV1NNMHJKbHJh?= =?utf-8?B?eVdVREwxWHJiS25pTWUwZTN4R1hYVFczTzBvTjRHYWl3b3NUYVpwVWc3WW01?= =?utf-8?B?Y3I5QjFldzhwV2JDNkN1bk1JUFJjYkJHaU05Ymt1L1hqY3NJS3BNRWF0cWs2?= =?utf-8?B?b1B2UjNYa2NvYnFPR1ArcGNGbkZmRjZxVkNZMlZ0OGpRaS80VVRkZUd0NzQ0?= =?utf-8?B?SFI3aUZOdGZ5cHVEeWw4V1FzbVNUK3Q4UEt5NmZKTW9hT1JaTmpyY1NrSW1H?= =?utf-8?Q?tCM4Bh8RjojCSD2LYYKH/Pd3PGz6TPF9CTCy/ZR?= x-ms-exchange-transport-forked: True Content-Type: multipart/mixed; boundary="_004_0907fda41fb40b23e2cbdf7eb05a8d61dd5307b3camelvmwarecom_" MIME-Version: 1.0 X-OriginatorOrg: vmware.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR05MB2896.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: fd080aa2-f136-4b9b-18e2-08d93c16a022 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Jun 2021 22:30:12.2292 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b39138ca-3cee-4b4a-a4d6-cd83d9dd62f0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: UjtCdYUJsOtfR0WIeSaoLTd503XQ5vGPB9JYBtQO0U5sAl7P+FhKO9hgXxvulmS8ieGJd8rQjyWRPr8Nz1wVUQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR05MB3629 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_004_0907fda41fb40b23e2cbdf7eb05a8d61dd5307b3camelvmwarecom_ Content-Type: text/plain; charset="utf-8" Content-ID: <1F3B2E661B0A3642840A1208DB731DA7@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 T24gU2F0LCAyMDIxLTA2LTI2IGF0IDA5OjQ3ICswOTAwLCBNaWNoYWVsIFBhcXVpZXIgd3JvdGU6 DQo+IE9uIEZyaSwgSnVuIDI1LCAyMDIxIGF0IDExOjQwOjMzUE0gKzAwMDAsIEphY29iIENoYW1w aW9uIHdyb3RlOg0KPiA+IEkgY2FuIGRlZmluaXRlbHkgbW92ZSBpdCAoaW50bywgc2F5LCBhdXRo LXNhc2wuYz8pLiBJJ2xsIHByb2JhYmx5IGRvDQo+ID4gdGhhdCBpbiBhIHNlY29uZCBjb21taXQs IHRob3VnaCwgc2luY2Uga2VlcGluZyBpdCBpbiBwbGFjZSBkdXJpbmcgdGhlDQo+ID4gcmVmYWN0 b3IgbWFrZXMgdGhlIHJldmlldyBlYXNpZXIgSU1PLg0KPiANCj4gYXV0aC1zYXNsLmMgaXMgYSBu YW1lIGNvbnNpc3RlbnQgd2l0aCB0aGUgZXhpc3RpbmcgcHJhY3RpY2UuDQo+IA0KPiA+IENhbiBk by4gRG9lcyBsaWJwcS1pbnQtc2FzbC5oIHdvcmsgYXMgYSBmaWxlbmFtZT8gVGhpcyBzaG91bGQg bm90IGJlDQo+ID4gZXhwb3J0ZWQgdG8gYXBwbGljYXRpb25zLg0KPiANCj4gSSB3b3VsZCBzdGls bCB3aXRoIHRoZSBleGlzdGluZyBuYW1pbmcgdXNlZCBieSBmZS1nc3NhcGktY29tbW9uLmgsIHNv DQo+IHRoYXQgd291bGQgYmUgZmUtYXV0aC1zYXNsLmMgYW5kIGZlLWF1dGgtc2FzbC5oLCB3aXRo IHRoZSBoZWFkZXINCj4gcmVtYWluaW5nIGludGVybmFsLiAgTm90IHN0cm9uZ2x5IHdlZGRlZCB0 byB0aGlzIG5hbWUsIG9mIGNvdXJzZSwgdGhhdA0KPiBqdXN0IHNlZW1zIGNvbnNpc3RlbnQuDQoN CkRvbmUgaW4gdjMsIHdpdGggYSBzZWNvbmQgcGF0Y2ggZm9yIHRoZSBjb2RlIG1vdGlvbi4NCg0K SSBhZGRlZCBhIGZpcnN0IHBhc3MgYXQgQVBJIGRvY3VtZW50YXRpb24gYXMgd2VsbC4gVGhpcyBl eHBvc2VkIHNvbWUNCmFkZGl0aW9uYWwgZnJvbnQtZW5kIFRPRE9zIHRoYXQgSSBhZGRlZCBpbmxp bmUsIGJ1dCB0aGV5IHNob3VsZA0KcHJvYmFibHkgYmUgZGVhbHQgd2l0aCBpbmRlcGVuZGVudGx5 IG9mIHRoZSByZWZhY3RvcjoNCg0KLSBaZXJvLWxlbmd0aCBjbGllbnQgcmVzcG9uc2VzIGFyZSBs ZWdhbCBpbiB0aGUgU0FTTCBmcmFtZXdvcms7DQpjdXJyZW50bHkgd2UgdXNlIHplcm8gYXMgYSBz ZW50aW5lbCBmb3IgImRvbid0IHNlbmQgYSByZXNwb25zZSIuDQoNCi0gSSBkb24ndCB0aGluayBp dCdzIGxlZ2FsIGZvciBhIGNsaWVudCB0byByZWZ1c2UgYSBjaGFsbGVuZ2UgZnJvbSB0aGUNCnNl cnZlciB3aXRob3V0IGFib3J0aW5nIHRoZSBleGNoYW5nZSwgc28gd2Ugc2hvdWxkIHByb2JhYmx5 IGNoZWNrIHRvDQptYWtlIHN1cmUgdGhhdCBjbGllbnQgcmVzcG9uc2VzIGFyZSBub24tTlVMTCBp biB0aGUgc3VjY2VzcyBjYXNlLg0KDQotLUphY29iDQo= --_004_0907fda41fb40b23e2cbdf7eb05a8d61dd5307b3camelvmwarecom_ Content-Type: text/plain; name="since-v2.diff.txt" Content-Description: since-v2.diff.txt Content-Disposition: attachment; filename="since-v2.diff.txt"; size=25997; creation-date="Wed, 30 Jun 2021 22:30:11 GMT"; modification-date="Wed, 30 Jun 2021 22:30:11 GMT" Content-ID: <9A5F748D9258A144A6507FFBE4B2D78E@namprd05.prod.outlook.com> Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvbGli cHEvTWFrZWZpbGUKaW5kZXggOGQxZDE2YjBmYy4uNmQzODVmZDZhNCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvbGlicHEvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvTWFrZWZpbGUK QEAgLTE1LDYgKzE1LDcgQEAgaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmds b2JhbAogIyBiZS1mc3N0dWJzIGlzIGhlcmUgZm9yIGhpc3RvcmljYWwgcmVhc29ucywgcHJvYmFi bHkgYmVsb25ncyBlbHNld2hlcmUKIAogT0JKUyA9IFwKKwlhdXRoLXNhc2wubyBcCiAJYXV0aC1z Y3JhbS5vIFwKIAlhdXRoLm8gXAogCWJlLWZzc3R1YnMubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9saWJwcS9hdXRoLXNhc2wuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGgtc2FzbC5jCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLmI3Y2RiMmVjZjYKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvYmFja2VuZC9saWJwcS9hdXRoLXNhc2wuYwpAQCAtMCwwICsxLDE4NyBA QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogYXV0aC1zYXNsLmMKKyAqCSAgUm91dGluZXMg dG8gaGFuZGxlIG5ldHdvcmsgYXV0aGVudGljYXRpb24gdmlhIFNBU0wKKyAqCisgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyMSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5p dmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNy Yy9iYWNrZW5kL2xpYnBxL2F1dGgtc2FzbC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8K KworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJsaWJwcS9hdXRoLmgiCisjaW5j bHVkZSAibGlicHEvbGlicHEuaCIKKyNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgorI2luY2x1 ZGUgImxpYnBxL3Nhc2wuaCIKKworLyoKKyAqIFBlcmZvcm0gYSBTQVNMIGV4Y2hhbmdlIHdpdGgg YSBsaWJwcSBjbGllbnQsIHVzaW5nIGEgc3BlY2lmaWMgbWVjaGFuaXNtCisgKiBpbXBsZW1lbnRh dGlvbi4KKyAqCisgKiBzaGFkb3dfcGFzcyBpcyBhbiBvcHRpb25hbCBwb2ludGVyIHRvIHRoZSBz aGFkb3cgZW50cnkgZm9yIHRoZSBjbGllbnQncworICogcHJlc2VudGVkIHVzZXIgbmFtZS4gRm9y IG1lY2hhbmlzbXMgdGhhdCB1c2Ugc2hhZG93ZWQgcGFzc3dvcmRzLCBhIE5VTEwKKyAqIHBvaW50 ZXIgaGVyZSBtZWFucyB0aGF0IGFuIGVudHJ5IGNvdWxkIG5vdCBiZSBmb3VuZCBmb3IgdGhlIHVz ZXIgKG9yIHRoZSB1c2VyCisgKiBkb2VzIG5vdCBleGlzdCksIGFuZCB0aGUgbWVjaGFuaXNtIHNo b3VsZCBmYWlsIHRoZSBhdXRoZW50aWNhdGlvbiBleGNoYW5nZS4KKyAqCisgKiBNZWNoYW5pc21z IG11c3QgdGFrZSBjYXJlIG5vdCB0byByZXZlYWwgdG8gdGhlIGNsaWVudCB0aGF0IGEgdXNlciBl bnRyeSBkb2VzCisgKiBub3QgZXhpc3Q7IGlkZWFsbHksIHRoZSBleHRlcm5hbCBmYWlsdXJlIG1v ZGUgaXMgaWRlbnRpY2FsIHRvIHRoYXQgb2YgYW4KKyAqIGluY29ycmVjdCBwYXNzd29yZC4gTWVj aGFuaXNtcyBtYXkgaW5zdGVhZCB1c2UgdGhlIGxvZ2RldGFpbCBvdXRwdXQgcGFyYW1ldGVyCisg KiB0byBpbnRlcm5hbGx5IGRpZmZlcmVudGlhdGUgYmV0d2VlbiBmYWlsdXJlIGNhc2VzIGFuZCBh c3Npc3QgZGVidWdnaW5nIGJ5IHRoZQorICogc2VydmVyIGFkbWluLgorICoKKyAqIEEgbWVjaGFu aXNtIGlzIG5vdCByZXF1aXJlZCB0byB1dGlsaXplIGEgc2hhZG93IGVudHJ5LCBvciBldmVuIGEg cGFzc3dvcmQKKyAqIHN5c3RlbSBhdCBhbGw7IGZvciB0aGVzZSBjYXNlcywgc2hhZG93X3Bhc3Mg bWF5IGJlIGlnbm9yZWQgYW5kIHRoZSBjYWxsZXIKKyAqIHNob3VsZCBqdXN0IHBhc3MgTlVMTC4K KyAqLworaW50CitDaGVja1NBU0xBdXRoKGNvbnN0IHBnX2JlX3Nhc2xfbWVjaCAqbWVjaCwgUG9y dCAqcG9ydCwgY2hhciAqc2hhZG93X3Bhc3MsCisJCQkgIGNoYXIgKipsb2dkZXRhaWwpCit7CisJ U3RyaW5nSW5mb0RhdGEgc2FzbF9tZWNoczsKKwlpbnQJCQltdHlwZTsKKwlTdHJpbmdJbmZvRGF0 YSBidWY7CisJdm9pZAkgICAqb3BhcSA9IE5VTEw7CisJY2hhcgkgICAqb3V0cHV0ID0gTlVMTDsK KwlpbnQJCQlvdXRwdXRsZW4gPSAwOworCWNvbnN0IGNoYXIgKmlucHV0OworCWludAkJCWlucHV0 bGVuOworCWludAkJCXJlc3VsdDsKKwlib29sCQlpbml0aWFsOworCisJLyoKKwkgKiBTZW5kIHRo ZSBTQVNMIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QgdG8gdXNlci4gIEl0IGluY2x1ZGVzIHRoZSBs aXN0IG9mCisJICogYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcyB0aGF0IGFyZSBzdXBwb3J0ZWQu CisJICovCisJaW5pdFN0cmluZ0luZm8oJnNhc2xfbWVjaHMpOworCisJbWVjaC0+Z2V0X21lY2hh bmlzbXMocG9ydCwgJnNhc2xfbWVjaHMpOworCS8qIFB1dCBhbm90aGVyICdcMCcgdG8gbWFyayB0 aGF0IGxpc3QgaXMgZmluaXNoZWQuICovCisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoJnNhc2xfbWVj aHMsICdcMCcpOworCisJc2VuZEF1dGhSZXF1ZXN0KHBvcnQsIEFVVEhfUkVRX1NBU0wsIHNhc2xf bWVjaHMuZGF0YSwgc2FzbF9tZWNocy5sZW4pOworCXBmcmVlKHNhc2xfbWVjaHMuZGF0YSk7CisK KwkvKgorCSAqIExvb3AgdGhyb3VnaCBTQVNMIG1lc3NhZ2UgZXhjaGFuZ2UuICBUaGlzIGV4Y2hh bmdlIGNhbiBjb25zaXN0IG9mCisJICogbXVsdGlwbGUgbWVzc2FnZXMgc2VudCBpbiBib3RoIGRp cmVjdGlvbnMuICBGaXJzdCBtZXNzYWdlIGlzIGFsd2F5cworCSAqIGZyb20gdGhlIGNsaWVudC4g IEFsbCBtZXNzYWdlcyBmcm9tIGNsaWVudCB0byBzZXJ2ZXIgYXJlIHBhc3N3b3JkCisJICogcGFj a2V0cyAodHlwZSAncCcpLgorCSAqLworCWluaXRpYWwgPSB0cnVlOworCWRvCisJeworCQlwcV9z dGFydG1zZ3JlYWQoKTsKKwkJbXR5cGUgPSBwcV9nZXRieXRlKCk7CisJCWlmIChtdHlwZSAhPSAn cCcpCisJCXsKKwkJCS8qIE9ubHkgbG9nIGVycm9yIGlmIGNsaWVudCBkaWRuJ3QgZGlzY29ubmVj dC4gKi8KKwkJCWlmIChtdHlwZSAhPSBFT0YpCisJCQl7CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJ CQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkJCSBlcnJtc2co ImV4cGVjdGVkIFNBU0wgcmVzcG9uc2UsIGdvdCBtZXNzYWdlIHR5cGUgJWQiLAorCQkJCQkJCQlt dHlwZSkpKTsKKwkJCX0KKwkJCWVsc2UKKwkJCQlyZXR1cm4gU1RBVFVTX0VPRjsKKwkJfQorCisJ CS8qIEdldCB0aGUgYWN0dWFsIFNBU0wgbWVzc2FnZSAqLworCQlpbml0U3RyaW5nSW5mbygmYnVm KTsKKwkJaWYgKHBxX2dldG1lc3NhZ2UoJmJ1ZiwgUEdfTUFYX1NBU0xfTUVTU0FHRV9MRU5HVEgp KQorCQl7CisJCQkvKiBFT0YgLSBwcV9nZXRtZXNzYWdlIGFscmVhZHkgbG9nZ2VkIGVycm9yICov CisJCQlwZnJlZShidWYuZGF0YSk7CisJCQlyZXR1cm4gU1RBVFVTX0VSUk9SOworCQl9CisKKwkJ ZWxvZyhERUJVRzQsICJwcm9jZXNzaW5nIHJlY2VpdmVkIFNBU0wgcmVzcG9uc2Ugb2YgbGVuZ3Ro ICVkIiwgYnVmLmxlbik7CisKKwkJLyoKKwkJICogVGhlIGZpcnN0IFNBU0xJbml0aWFsUmVzcG9u c2UgbWVzc2FnZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3RoZXJzLgorCQkgKiBJdCBpbmRpY2F0 ZXMgd2hpY2ggU0FTTCBtZWNoYW5pc20gdGhlIGNsaWVudCBzZWxlY3RlZCwgYW5kIGNvbnRhaW5z CisJCSAqIGFuIG9wdGlvbmFsIEluaXRpYWwgQ2xpZW50IFJlc3BvbnNlIHBheWxvYWQuICBUaGUg c3Vic2VxdWVudAorCQkgKiBTQVNMUmVzcG9uc2UgbWVzc2FnZXMgY29udGFpbiBqdXN0IHRoZSBT QVNMIHBheWxvYWQuCisJCSAqLworCQlpZiAoaW5pdGlhbCkKKwkJeworCQkJY29uc3QgY2hhciAq c2VsZWN0ZWRfbWVjaDsKKworCQkJc2VsZWN0ZWRfbWVjaCA9IHBxX2dldG1zZ3Jhd3N0cmluZygm YnVmKTsKKworCQkJLyoKKwkJCSAqIEluaXRpYWxpemUgdGhlIHN0YXR1cyB0cmFja2VyIGZvciBt ZXNzYWdlIGV4Y2hhbmdlcy4KKwkJCSAqCisJCQkgKiBJZiB0aGUgdXNlciBkb2Vzbid0IGV4aXN0 LCBvciBkb2Vzbid0IGhhdmUgYSB2YWxpZCBwYXNzd29yZCwgb3IKKwkJCSAqIGl0J3MgZXhwaXJl ZCwgd2Ugc3RpbGwgZ28gdGhyb3VnaCB0aGUgbW90aW9ucyBvZiBTQVNMCisJCQkgKiBhdXRoZW50 aWNhdGlvbiwgYnV0IHRlbGwgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB0aGF0IHRoZQorCQkJ ICogYXV0aGVudGljYXRpb24gaXMgImRvb21lZCIuIFRoYXQgaXMsIGl0J3MgZ29pbmcgdG8gZmFp bCwgbm8KKwkJCSAqIG1hdHRlciB3aGF0LgorCQkJICoKKwkJCSAqIFRoaXMgaXMgYmVjYXVzZSB3 ZSBkb24ndCB3YW50IHRvIHJldmVhbCB0byBhbiBhdHRhY2tlciB3aGF0CisJCQkgKiB1c2VybmFt ZXMgYXJlIHZhbGlkLCBub3Igd2hpY2ggdXNlcnMgaGF2ZSBhIHZhbGlkIHBhc3N3b3JkLgorCQkJ ICovCisJCQlvcGFxID0gbWVjaC0+aW5pdChwb3J0LCBzZWxlY3RlZF9tZWNoLCBzaGFkb3dfcGFz cyk7CisKKwkJCWlucHV0bGVuID0gcHFfZ2V0bXNnaW50KCZidWYsIDQpOworCQkJaWYgKGlucHV0 bGVuID09IC0xKQorCQkJCWlucHV0ID0gTlVMTDsKKwkJCWVsc2UKKwkJCQlpbnB1dCA9IHBxX2dl dG1zZ2J5dGVzKCZidWYsIGlucHV0bGVuKTsKKworCQkJaW5pdGlhbCA9IGZhbHNlOworCQl9CisJ CWVsc2UKKwkJeworCQkJaW5wdXRsZW4gPSBidWYubGVuOworCQkJaW5wdXQgPSBwcV9nZXRtc2di eXRlcygmYnVmLCBidWYubGVuKTsKKwkJfQorCQlwcV9nZXRtc2dlbmQoJmJ1Zik7CisKKwkJLyoK KwkJICogVGhlIFN0cmluZ0luZm8gZ3VhcmFudGVlcyB0aGF0IHRoZXJlJ3MgYSBcMCBieXRlIGFm dGVyIHRoZQorCQkgKiByZXNwb25zZS4KKwkJICovCisJCUFzc2VydChpbnB1dCA9PSBOVUxMIHx8 IGlucHV0W2lucHV0bGVuXSA9PSAnXDAnKTsKKworCQkvKgorCQkgKiBIYW5kIHRoZSBpbmNvbWlu ZyBtZXNzYWdlIHRvIHRoZSBtZWNoYW5pc20gaW1wbGVtZW50YXRpb24uCisJCSAqLworCQlyZXN1 bHQgPSBtZWNoLT5leGNoYW5nZShvcGFxLCBpbnB1dCwgaW5wdXRsZW4sCisJCQkJCQkJCSZvdXRw dXQsICZvdXRwdXRsZW4sCisJCQkJCQkJCWxvZ2RldGFpbCk7CisKKwkJLyogaW5wdXQgYnVmZmVy IG5vIGxvbmdlciB1c2VkICovCisJCXBmcmVlKGJ1Zi5kYXRhKTsKKworCQlpZiAob3V0cHV0KQor CQl7CisJCQkvKgorCQkJICogTmVnb3RpYXRpb24gZ2VuZXJhdGVkIGRhdGEgdG8gYmUgc2VudCB0 byB0aGUgY2xpZW50LgorCQkJICovCisJCQllbG9nKERFQlVHNCwgInNlbmRpbmcgU0FTTCBjaGFs bGVuZ2Ugb2YgbGVuZ3RoICV1Iiwgb3V0cHV0bGVuKTsKKworCQkJLyogVE9ETzogUEdfU0FTTF9F WENIQU5HRV9GQUlMVVJFIHdpdGggb3V0cHV0IGlzIGZvcmJpZGRlbiBpbiBTQVNMICovCisJCQlp ZiAocmVzdWx0ID09IFBHX1NBU0xfRVhDSEFOR0VfU1VDQ0VTUykKKwkJCQlzZW5kQXV0aFJlcXVl c3QocG9ydCwgQVVUSF9SRVFfU0FTTF9GSU4sIG91dHB1dCwgb3V0cHV0bGVuKTsKKwkJCWVsc2UK KwkJCQlzZW5kQXV0aFJlcXVlc3QocG9ydCwgQVVUSF9SRVFfU0FTTF9DT05ULCBvdXRwdXQsIG91 dHB1dGxlbik7CisKKwkJCXBmcmVlKG91dHB1dCk7CisJCX0KKwl9IHdoaWxlIChyZXN1bHQgPT0g UEdfU0FTTF9FWENIQU5HRV9DT05USU5VRSk7CisKKwkvKiBPb3BzLCBTb21ldGhpbmcgYmFkIGhh cHBlbmVkICovCisJaWYgKHJlc3VsdCAhPSBQR19TQVNMX0VYQ0hBTkdFX1NVQ0NFU1MpCisJewor CQlyZXR1cm4gU1RBVFVTX0VSUk9SOworCX0KKworCXJldHVybiBTVEFUVVNfT0s7Cit9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9hdXRoLmMgYi9zcmMvYmFja2VuZC9saWJwcS9hdXRo LmMKaW5kZXggODJmMDQzYTM0My4uYWM2ZmU0YTc0NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv bGlicHEvYXV0aC5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGguYwpAQCAtNDUsMTkgKzQ1 LDEwIEBACiAgKiBHbG9iYWwgYXV0aGVudGljYXRpb24gZnVuY3Rpb25zCiAgKi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAq Lwotc3RhdGljIHZvaWQgc2VuZEF1dGhSZXF1ZXN0KFBvcnQgKnBvcnQsIEF1dGhSZXF1ZXN0IGFy ZXEsIGNvbnN0IGNoYXIgKmV4dHJhZGF0YSwKLQkJCQkJCQlpbnQgZXh0cmFsZW4pOwogc3RhdGlj IHZvaWQgYXV0aF9mYWlsZWQoUG9ydCAqcG9ydCwgaW50IHN0YXR1cywgY2hhciAqbG9nZGV0YWls KTsKIHN0YXRpYyBjaGFyICpyZWN2X3Bhc3N3b3JkX3BhY2tldChQb3J0ICpwb3J0KTsKIHN0YXRp YyB2b2lkIHNldF9hdXRobl9pZChQb3J0ICpwb3J0LCBjb25zdCBjaGFyICppZCk7CiAKLS8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQotICogU0FTTCBjb21tb24gYXV0aGVudGljYXRpb24KLSAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICovCi1zdGF0 aWMgaW50CVNBU0xfZXhjaGFuZ2UoY29uc3QgcGdfYmVfc2FzbF9tZWNoICptZWNoLCBQb3J0ICpw b3J0LAotCQkJCQkJICBjaGFyICpzaGFkb3dfcGFzcywgY2hhciAqKmxvZ2RldGFpbCk7Ci0KIAog LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCiAgKiBQYXNzd29yZC1iYXNlZCBhdXRoZW50aWNhdGlvbiBtZXRob2RzIChwYXNz d29yZCwgbWQ1LCBhbmQgc2NyYW0tc2hhLTI1NikKQEAgLTY3LDcgKzU4LDYgQEAgc3RhdGljIGlu dAlDaGVja1Bhc3N3b3JkQXV0aChQb3J0ICpwb3J0LCBjaGFyICoqbG9nZGV0YWlsKTsKIHN0YXRp YyBpbnQJQ2hlY2tQV0NoYWxsZW5nZUF1dGgoUG9ydCAqcG9ydCwgY2hhciAqKmxvZ2RldGFpbCk7 CiAKIHN0YXRpYyBpbnQJQ2hlY2tNRDVBdXRoKFBvcnQgKnBvcnQsIGNoYXIgKnNoYWRvd19wYXNz LCBjaGFyICoqbG9nZGV0YWlsKTsKLXN0YXRpYyBpbnQJQ2hlY2tTQ1JBTUF1dGgoUG9ydCAqcG9y dCwgY2hhciAqc2hhZG93X3Bhc3MsIGNoYXIgKipsb2dkZXRhaWwpOwogCiAKIC8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpA QCAtMjMxLDE0ICsyMjEsNiBAQCBzdGF0aWMgaW50CVBlcmZvcm1SYWRpdXNUcmFuc2FjdGlvbihj b25zdCBjaGFyICpzZXJ2ZXIsIGNvbnN0IGNoYXIgKnNlY3JldCwgY29ucwogICovCiAjZGVmaW5l IFBHX01BWF9BVVRIX1RPS0VOX0xFTkdUSAk2NTUzNQogCi0vKgotICogTWF4aW11bSBhY2NlcHRl ZCBzaXplIG9mIFNBU0wgbWVzc2FnZXMuCi0gKgotICogVGhlIG1lc3NhZ2VzIHRoYXQgdGhlIHNl cnZlciBvciBsaWJwcSBnZW5lcmF0ZSBhcmUgbXVjaCBzbWFsbGVyIHRoYW4gdGhpcywKLSAqIGJ1 dCBoYXZlIHNvbWUgaGVhZHJvb20uCi0gKi8KLSNkZWZpbmUgUEdfTUFYX1NBU0xfTUVTU0FHRV9M RU5HVEgJMTAyNAotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIEdsb2JhbCBhdXRoZW50aWNhdGlvbiBmdW5jdGlv bnMKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpAQCAtNjc1LDcgKzY1Nyw3IEBAIENsaWVudEF1dGhlbnRpY2F0aW9uKFBv cnQgKnBvcnQpCiAvKgogICogU2VuZCBhbiBhdXRoZW50aWNhdGlvbiByZXF1ZXN0IHBhY2tldCB0 byB0aGUgZnJvbnRlbmQuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBzZW5kQXV0aFJlcXVlc3Qo UG9ydCAqcG9ydCwgQXV0aFJlcXVlc3QgYXJlcSwgY29uc3QgY2hhciAqZXh0cmFkYXRhLCBpbnQg ZXh0cmFsZW4pCiB7CiAJU3RyaW5nSW5mb0RhdGEgYnVmOwpAQCAtODU1LDEyICs4MzcsMTMgQEAg Q2hlY2tQV0NoYWxsZW5nZUF1dGgoUG9ydCAqcG9ydCwgY2hhciAqKmxvZ2RldGFpbCkKIAkgKiBT Q1JBTSBzZWNyZXQsIHdlIG11c3QgZG8gU0NSQU0gYXV0aGVudGljYXRpb24uCiAJICoKIAkgKiBJ ZiBNRDUgYXV0aGVudGljYXRpb24gaXMgbm90IGFsbG93ZWQsIGFsd2F5cyB1c2UgU0NSQU0uICBJ ZiB0aGUgdXNlcgotCSAqIGhhZCBhbiBNRDUgcGFzc3dvcmQsIENoZWNrU0NSQU1BdXRoKCkgd2ls bCBmYWlsLgorCSAqIGhhZCBhbiBNRDUgcGFzc3dvcmQsIHRoZSBTQ1JBTSBtZWNoYW5pc20gd2ls bCBmYWlsLgogCSAqLwogCWlmIChwb3J0LT5oYmEtPmF1dGhfbWV0aG9kID09IHVhTUQ1ICYmIHB3 dHlwZSA9PSBQQVNTV09SRF9UWVBFX01ENSkKIAkJYXV0aF9yZXN1bHQgPSBDaGVja01ENUF1dGgo cG9ydCwgc2hhZG93X3Bhc3MsIGxvZ2RldGFpbCk7CiAJZWxzZQotCQlhdXRoX3Jlc3VsdCA9IENo ZWNrU0NSQU1BdXRoKHBvcnQsIHNoYWRvd19wYXNzLCBsb2dkZXRhaWwpOworCQlhdXRoX3Jlc3Vs dCA9IENoZWNrU0FTTEF1dGgoJnBnX2JlX3NjcmFtX21lY2gsIHBvcnQsIHNoYWRvd19wYXNzLAor CQkJCQkJCQkJbG9nZGV0YWlsKTsKIAogCWlmIChzaGFkb3dfcGFzcykKIAkJcGZyZWUoc2hhZG93 X3Bhc3MpOwpAQCAtOTE4LDE1OSArOTAxLDYgQEAgQ2hlY2tNRDVBdXRoKFBvcnQgKnBvcnQsIGNo YXIgKnNoYWRvd19wYXNzLCBjaGFyICoqbG9nZGV0YWlsKQogCXJldHVybiByZXN1bHQ7CiB9CiAK LXN0YXRpYyBpbnQKLVNBU0xfZXhjaGFuZ2UoY29uc3QgcGdfYmVfc2FzbF9tZWNoICptZWNoLCBQ b3J0ICpwb3J0LCBjaGFyICpzaGFkb3dfcGFzcywKLQkJCSAgY2hhciAqKmxvZ2RldGFpbCkKLXsK LQlTdHJpbmdJbmZvRGF0YSBzYXNsX21lY2hzOwotCWludAkJCW10eXBlOwotCVN0cmluZ0luZm9E YXRhIGJ1ZjsKLQl2b2lkCSAgICpvcGFxID0gTlVMTDsKLQljaGFyCSAgICpvdXRwdXQgPSBOVUxM OwotCWludAkJCW91dHB1dGxlbiA9IDA7Ci0JY29uc3QgY2hhciAqaW5wdXQ7Ci0JaW50CQkJaW5w dXRsZW47Ci0JaW50CQkJcmVzdWx0OwotCWJvb2wJCWluaXRpYWw7Ci0KLQkvKgotCSAqIFNlbmQg dGhlIFNBU0wgYXV0aGVudGljYXRpb24gcmVxdWVzdCB0byB1c2VyLiAgSXQgaW5jbHVkZXMgdGhl IGxpc3Qgb2YKLQkgKiBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc21zIHRoYXQgYXJlIHN1cHBvcnRl ZC4KLQkgKi8KLQlpbml0U3RyaW5nSW5mbygmc2FzbF9tZWNocyk7Ci0KLQltZWNoLT5nZXRfbWVj aGFuaXNtcyhwb3J0LCAmc2FzbF9tZWNocyk7Ci0JLyogUHV0IGFub3RoZXIgJ1wwJyB0byBtYXJr IHRoYXQgbGlzdCBpcyBmaW5pc2hlZC4gKi8KLQlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmc2FzbF9t ZWNocywgJ1wwJyk7Ci0KLQlzZW5kQXV0aFJlcXVlc3QocG9ydCwgQVVUSF9SRVFfU0FTTCwgc2Fz bF9tZWNocy5kYXRhLCBzYXNsX21lY2hzLmxlbik7Ci0JcGZyZWUoc2FzbF9tZWNocy5kYXRhKTsK LQotCS8qCi0JICogTG9vcCB0aHJvdWdoIFNBU0wgbWVzc2FnZSBleGNoYW5nZS4gIFRoaXMgZXhj aGFuZ2UgY2FuIGNvbnNpc3Qgb2YKLQkgKiBtdWx0aXBsZSBtZXNzYWdlcyBzZW50IGluIGJvdGgg ZGlyZWN0aW9ucy4gIEZpcnN0IG1lc3NhZ2UgaXMgYWx3YXlzCi0JICogZnJvbSB0aGUgY2xpZW50 LiAgQWxsIG1lc3NhZ2VzIGZyb20gY2xpZW50IHRvIHNlcnZlciBhcmUgcGFzc3dvcmQKLQkgKiBw YWNrZXRzICh0eXBlICdwJykuCi0JICovCi0JaW5pdGlhbCA9IHRydWU7Ci0JZG8KLQl7Ci0JCXBx X3N0YXJ0bXNncmVhZCgpOwotCQltdHlwZSA9IHBxX2dldGJ5dGUoKTsKLQkJaWYgKG10eXBlICE9 ICdwJykKLQkJewotCQkJLyogT25seSBsb2cgZXJyb3IgaWYgY2xpZW50IGRpZG4ndCBkaXNjb25u ZWN0LiAqLwotCQkJaWYgKG10eXBlICE9IEVPRikKLQkJCXsKLQkJCQllcmVwb3J0KEVSUk9SLAot CQkJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAotCQkJCQkJIGVycm1z ZygiZXhwZWN0ZWQgU0FTTCByZXNwb25zZSwgZ290IG1lc3NhZ2UgdHlwZSAlZCIsCi0JCQkJCQkJ CW10eXBlKSkpOwotCQkJfQotCQkJZWxzZQotCQkJCXJldHVybiBTVEFUVVNfRU9GOwotCQl9Ci0K LQkJLyogR2V0IHRoZSBhY3R1YWwgU0FTTCBtZXNzYWdlICovCi0JCWluaXRTdHJpbmdJbmZvKCZi dWYpOwotCQlpZiAocHFfZ2V0bWVzc2FnZSgmYnVmLCBQR19NQVhfU0FTTF9NRVNTQUdFX0xFTkdU SCkpCi0JCXsKLQkJCS8qIEVPRiAtIHBxX2dldG1lc3NhZ2UgYWxyZWFkeSBsb2dnZWQgZXJyb3Ig Ki8KLQkJCXBmcmVlKGJ1Zi5kYXRhKTsKLQkJCXJldHVybiBTVEFUVVNfRVJST1I7Ci0JCX0KLQot CQllbG9nKERFQlVHNCwgInByb2Nlc3NpbmcgcmVjZWl2ZWQgU0FTTCByZXNwb25zZSBvZiBsZW5n dGggJWQiLCBidWYubGVuKTsKLQotCQkvKgotCQkgKiBUaGUgZmlyc3QgU0FTTEluaXRpYWxSZXNw b25zZSBtZXNzYWdlIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvdGhlcnMuCi0JCSAqIEl0IGluZGlj YXRlcyB3aGljaCBTQVNMIG1lY2hhbmlzbSB0aGUgY2xpZW50IHNlbGVjdGVkLCBhbmQgY29udGFp bnMKLQkJICogYW4gb3B0aW9uYWwgSW5pdGlhbCBDbGllbnQgUmVzcG9uc2UgcGF5bG9hZC4gIFRo ZSBzdWJzZXF1ZW50Ci0JCSAqIFNBU0xSZXNwb25zZSBtZXNzYWdlcyBjb250YWluIGp1c3QgdGhl IFNBU0wgcGF5bG9hZC4KLQkJICovCi0JCWlmIChpbml0aWFsKQotCQl7Ci0JCQljb25zdCBjaGFy ICpzZWxlY3RlZF9tZWNoOwotCi0JCQlzZWxlY3RlZF9tZWNoID0gcHFfZ2V0bXNncmF3c3RyaW5n KCZidWYpOwotCi0JCQkvKgotCQkJICogSW5pdGlhbGl6ZSB0aGUgc3RhdHVzIHRyYWNrZXIgZm9y IG1lc3NhZ2UgZXhjaGFuZ2VzLgotCQkJICoKLQkJCSAqIElmIHRoZSB1c2VyIGRvZXNuJ3QgZXhp c3QsIG9yIGRvZXNuJ3QgaGF2ZSBhIHZhbGlkIHBhc3N3b3JkLCBvcgotCQkJICogaXQncyBleHBp cmVkLCB3ZSBzdGlsbCBnbyB0aHJvdWdoIHRoZSBtb3Rpb25zIG9mIFNBU0wKLQkJCSAqIGF1dGhl bnRpY2F0aW9uLCBidXQgdGVsbCB0aGUgYXV0aGVudGljYXRpb24gbWV0aG9kIHRoYXQgdGhlCi0J CQkgKiBhdXRoZW50aWNhdGlvbiBpcyAiZG9vbWVkIi4gVGhhdCBpcywgaXQncyBnb2luZyB0byBm YWlsLCBubwotCQkJICogbWF0dGVyIHdoYXQuCi0JCQkgKgotCQkJICogVGhpcyBpcyBiZWNhdXNl IHdlIGRvbid0IHdhbnQgdG8gcmV2ZWFsIHRvIGFuIGF0dGFja2VyIHdoYXQKLQkJCSAqIHVzZXJu YW1lcyBhcmUgdmFsaWQsIG5vciB3aGljaCB1c2VycyBoYXZlIGEgdmFsaWQgcGFzc3dvcmQuCi0J CQkgKi8KLQkJCW9wYXEgPSBtZWNoLT5pbml0KHBvcnQsIHNlbGVjdGVkX21lY2gsIHNoYWRvd19w YXNzKTsKLQotCQkJaW5wdXRsZW4gPSBwcV9nZXRtc2dpbnQoJmJ1ZiwgNCk7Ci0JCQlpZiAoaW5w dXRsZW4gPT0gLTEpCi0JCQkJaW5wdXQgPSBOVUxMOwotCQkJZWxzZQotCQkJCWlucHV0ID0gcHFf Z2V0bXNnYnl0ZXMoJmJ1ZiwgaW5wdXRsZW4pOwotCi0JCQlpbml0aWFsID0gZmFsc2U7Ci0JCX0K LQkJZWxzZQotCQl7Ci0JCQlpbnB1dGxlbiA9IGJ1Zi5sZW47Ci0JCQlpbnB1dCA9IHBxX2dldG1z Z2J5dGVzKCZidWYsIGJ1Zi5sZW4pOwotCQl9Ci0JCXBxX2dldG1zZ2VuZCgmYnVmKTsKLQotCQkv KgotCQkgKiBUaGUgU3RyaW5nSW5mbyBndWFyYW50ZWVzIHRoYXQgdGhlcmUncyBhIFwwIGJ5dGUg YWZ0ZXIgdGhlCi0JCSAqIHJlc3BvbnNlLgotCQkgKi8KLQkJQXNzZXJ0KGlucHV0ID09IE5VTEwg fHwgaW5wdXRbaW5wdXRsZW5dID09ICdcMCcpOwotCi0JCS8qCi0JCSAqIEhhbmQgdGhlIGluY29t aW5nIG1lc3NhZ2UgdG8gdGhlIG1lY2hhbmlzbSBpbXBsZW1lbnRhdGlvbi4KLQkJICovCi0JCXJl c3VsdCA9IG1lY2gtPmV4Y2hhbmdlKG9wYXEsIGlucHV0LCBpbnB1dGxlbiwKLQkJCQkJCQkJJm91 dHB1dCwgJm91dHB1dGxlbiwKLQkJCQkJCQkJbG9nZGV0YWlsKTsKLQotCQkvKiBpbnB1dCBidWZm ZXIgbm8gbG9uZ2VyIHVzZWQgKi8KLQkJcGZyZWUoYnVmLmRhdGEpOwotCi0JCWlmIChvdXRwdXQp Ci0JCXsKLQkJCS8qCi0JCQkgKiBOZWdvdGlhdGlvbiBnZW5lcmF0ZWQgZGF0YSB0byBiZSBzZW50 IHRvIHRoZSBjbGllbnQuCi0JCQkgKi8KLQkJCWVsb2coREVCVUc0LCAic2VuZGluZyBTQVNMIGNo YWxsZW5nZSBvZiBsZW5ndGggJXUiLCBvdXRwdXRsZW4pOwotCi0JCQkvKiBUT0RPOiBQR19TQVNM X0VYQ0hBTkdFX0ZBSUxVUkUgd2l0aCBvdXRwdXQgaXMgZm9yYmlkZGVuIGluIFNBU0wgKi8KLQkJ CWlmIChyZXN1bHQgPT0gUEdfU0FTTF9FWENIQU5HRV9TVUNDRVNTKQotCQkJCXNlbmRBdXRoUmVx dWVzdChwb3J0LCBBVVRIX1JFUV9TQVNMX0ZJTiwgb3V0cHV0LCBvdXRwdXRsZW4pOwotCQkJZWxz ZQotCQkJCXNlbmRBdXRoUmVxdWVzdChwb3J0LCBBVVRIX1JFUV9TQVNMX0NPTlQsIG91dHB1dCwg b3V0cHV0bGVuKTsKLQotCQkJcGZyZWUob3V0cHV0KTsKLQkJfQotCX0gd2hpbGUgKHJlc3VsdCA9 PSBQR19TQVNMX0VYQ0hBTkdFX0NPTlRJTlVFKTsKLQotCS8qIE9vcHMsIFNvbWV0aGluZyBiYWQg aGFwcGVuZWQgKi8KLQlpZiAocmVzdWx0ICE9IFBHX1NBU0xfRVhDSEFOR0VfU1VDQ0VTUykKLQl7 Ci0JCXJldHVybiBTVEFUVVNfRVJST1I7Ci0JfQotCi0JcmV0dXJuIFNUQVRVU19PSzsKLX0KLQot c3RhdGljIGludAotQ2hlY2tTQ1JBTUF1dGgoUG9ydCAqcG9ydCwgY2hhciAqc2hhZG93X3Bhc3Ms IGNoYXIgKipsb2dkZXRhaWwpCi17Ci0JcmV0dXJuIFNBU0xfZXhjaGFuZ2UoJnBnX2JlX3NjcmFt X21lY2gsIHBvcnQsIHNoYWRvd19wYXNzLCBsb2dkZXRhaWwpOwotfQotCiAKIC8qLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICogR1NTQVBJIGF1dGhlbnRpY2F0aW9uIHN5c3RlbQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv bGlicHEvYXV0aC5oIGIvc3JjL2luY2x1ZGUvbGlicHEvYXV0aC5oCmluZGV4IDM2MTBmYWUzZmYu LjNkNjczNGYyNTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBxL2F1dGguaAorKysgYi9z cmMvaW5jbHVkZS9saWJwcS9hdXRoLmgKQEAgLTIxLDYgKzIxLDggQEAgZXh0ZXJuIGJvb2wgcGdf a3JiX2Nhc2VpbnNfdXNlcnM7CiBleHRlcm4gY2hhciAqcGdfa3JiX3JlYWxtOwogCiBleHRlcm4g dm9pZCBDbGllbnRBdXRoZW50aWNhdGlvbihQb3J0ICpwb3J0KTsKK2V4dGVybiB2b2lkIHNlbmRB dXRoUmVxdWVzdChQb3J0ICpwb3J0LCBBdXRoUmVxdWVzdCBhcmVxLCBjb25zdCBjaGFyICpleHRy YWRhdGEsCisJCQkJCQkJaW50IGV4dHJhbGVuKTsKIAogLyogSG9vayBmb3IgcGx1Z2lucyB0byBn ZXQgY29udHJvbCBpbiBDbGllbnRBdXRoZW50aWNhdGlvbigpICovCiB0eXBlZGVmIHZvaWQgKCpD bGllbnRBdXRoZW50aWNhdGlvbl9ob29rX3R5cGUpIChQb3J0ICosIGludCk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9saWJwcS9zYXNsLmggYi9zcmMvaW5jbHVkZS9saWJwcS9zYXNsLmgKaW5k ZXggMWFmYWJmODQzZC4uZGFkMDRkOGVjZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbGlicHEv c2FzbC5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBxL3Nhc2wuaApAQCAtMSw2ICsxLDEwIEBACiAv Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqCiAgKiBzYXNsLmgKKyAqICAgICBEZWZpbmVzIHRoZSBTQVNM IG1lY2hhbmlzbSBpbnRlcmZhY2UgZm9yIHRoZSBsaWJwcSBiYWNrZW5kLiBFYWNoIFNBU0wKKyAq ICAgICBtZWNoYW5pc20gZGVmaW5lcyBhIGZyb250ZW5kIGFuZCBhIGJhY2tlbmQgY2FsbGJhY2sg c3RydWN0dXJlLgorICoKKyAqICAgICBTZWUgc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1z YXNsLmggZm9yIHRoZSBmcm9udGVuZCBjb3VudGVycGFydC4KICAqCiAgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTYtMjAyMSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK ICAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0 eSBvZiBDYWxpZm9ybmlhCkBAIC0xMiw2ICsxNiw3IEBACiAjaWZuZGVmIFBHX1NBU0xfSAogI2Rl ZmluZSBQR19TQVNMX0gKIAorI2luY2x1ZGUgImxpYi9zdHJpbmdpbmZvLmgiCiAjaW5jbHVkZSAi bGlicHEvbGlicHEtYmUuaCIKIAogLyogU3RhdHVzIGNvZGVzIGZvciBtZXNzYWdlIGV4Y2hhbmdl ICovCkBAIC0xOSwxMCArMjQsMTA3IEBACiAjZGVmaW5lIFBHX1NBU0xfRVhDSEFOR0VfU1VDQ0VT UwkJMQogI2RlZmluZSBQR19TQVNMX0VYQ0hBTkdFX0ZBSUxVUkUJCTIKIAotLyogQmFja2VuZCBt ZWNoYW5pc20gQVBJICovCi10eXBlZGVmIHZvaWQgICgqcGdfYmVfc2FzbF9tZWNoYW5pc21fZnVu YykoUG9ydCAqLCBTdHJpbmdJbmZvKTsKLXR5cGVkZWYgdm9pZCAqKCpwZ19iZV9zYXNsX2luaXRf ZnVuYykoUG9ydCAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Ci10eXBlZGVmIGludCAg ICgqcGdfYmVfc2FzbF9leGNoYW5nZV9mdW5jKSh2b2lkICosIGNvbnN0IGNoYXIgKiwgaW50LCBj aGFyICoqLCBpbnQgKiwgY2hhciAqKik7CisvKgorICogTWF4aW11bSBhY2NlcHRlZCBzaXplIG9m IFNBU0wgbWVzc2FnZXMuCisgKgorICogVGhlIG1lc3NhZ2VzIHRoYXQgdGhlIHNlcnZlciBvciBs aWJwcSBnZW5lcmF0ZSBhcmUgbXVjaCBzbWFsbGVyIHRoYW4gdGhpcywKKyAqIGJ1dCBoYXZlIHNv bWUgaGVhZHJvb20uCisgKi8KKyNkZWZpbmUgUEdfTUFYX1NBU0xfTUVTU0FHRV9MRU5HVEgJMTAy NAorCisvKgorICogQmFja2VuZCBtZWNoYW5pc20gQVBJCisgKgorICogVG8gaW1wbGVtZW50IGEg YmFja2VuZCBtZWNoYW5pc20sIGRlY2xhcmUgYSBwZ19iZV9zYXNsX21lY2ggc3RydWN0IHdpdGgK KyAqIGFwcHJvcHJpYXRlIGNhbGxiYWNrIGltcGxlbWVudGF0aW9ucy4gVGhlbiBwYXNzIHRoZSBt ZWNoYW5pc20gdG8KKyAqIENoZWNrU0FTTEF1dGgoKSBkdXJpbmcgQ2xpZW50QXV0aGVudGljYXRp b24oKSwgb25jZSB0aGUgc2VydmVyIGhhcyBkZWNpZGVkCisgKiB3aGljaCBhdXRoZW50aWNhdGlv biBtZXRob2QgdG8gdXNlLgorICovCisKKy8qCisgKiBtZWNoLmdldF9tZWNoYW5pc21zKCkKKyAq CisgKiBSZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgU0FTTCBtZWNoYW5pc20gbmFtZXMgc3VwcG9ydGVk IGJ5IHRoaXMgaW1wbGVtZW50YXRpb24uCisgKiBUaGUgbmFtZXMgYXJlIGFwcGVuZGVkIGludG8g dGhlIHByb3ZpZGVkIGJ1ZmZlci4KKyAqCisgKiBJbnB1dCBwYXJhbWV0ZXJzOgorICoKKyAqICAg cG9ydDogdGhlIGNsaWVudCBQb3J0CisgKgorICogT3V0cHV0IHBhcmFtZXRlcnM6CisgKgorICog ICBidWY6IGEgU3RyaW5nSW5mbyBidWZmZXIgdGhhdCB0aGUgY2FsbGJhY2sgc2hvdWxkIHBvcHVs YXRlIHdpdGggc3VwcG9ydGVkCisgKiAgICAgICAgbWVjaGFuaXNtIG5hbWVzLiBOdWxsLXRlcm1p bmF0ZWQgbmFtZXMgc2hvdWxkIGJlIHByaW50ZWQgdG8gdGhlIGJ1ZmZlcgorICogICAgICAgIHVz aW5nIGFwcGVuZFN0cmluZ0luZm8qKCkuCisgKi8KK3R5cGVkZWYgdm9pZCAgKCpwZ19iZV9zYXNs X21lY2hhbmlzbV9mdW5jKShQb3J0ICpwb3J0LCBTdHJpbmdJbmZvIGJ1Zik7CisKKy8qCisgKiBt ZWNoLmluaXQoKQorICoKKyAqIEluaXRpYWxpemVzIG1lY2hhbmlzbS1zcGVjaWZpYyBzdGF0ZSBm b3IgYSBjb25uZWN0aW9uLiBUaGlzIGNhbGxiYWNrIG11c3QKKyAqIHJldHVybiBhIHBvaW50ZXIg dG8gaXRzIGFsbG9jYXRlZCBzdGF0ZSwgd2hpY2ggd2lsbCBiZSBwYXNzZWQgYXMtaXMgYXMgdGhl CisgKiBmaXJzdCBhcmd1bWVudCB0byB0aGUgb3RoZXIgY2FsbGJhY2tzLgorICoKKyAqIElucHV0 IHBhcmFtdGVyczoKKyAqCisgKiAgIHBvcnQ6ICAgICAgICB0aGUgY2xpZW50IFBvcnQKKyAqCisg KgkgbWVjaDogICAgICAgIHRoZSBhY3R1YWwgbWVjaGFuaXNtIG5hbWUgaW4gdXNlIGJ5IHRoZSBj bGllbnQKKyAqCisgKgkgc2hhZG93X3Bhc3M6IHRoZSBzaGFkb3cgZW50cnkgZm9yIHRoZSB1c2Vy IGJlaW5nIGF1dGhlbnRpY2F0ZWQsIG9yIE5VTEwgaWYKKyAqCSAgICAgICAgICAgICAgb25lIGRv ZXMgbm90IGV4aXN0LiBNZWNoYW5pc21zIHRoYXQgZG8gbm90IHVzZSBzaGFkb3cgZW50cmllcwor ICoJICAgICAgICAgICAgICBtYXkgaWdub3JlIHRoaXMgcGFyYW1ldGVyLiBJZiBhIG1lY2hhbmlz bSB1c2VzIHNoYWRvdyBlbnRyaWVzCisgKgkgICAgICAgICAgICAgIGJ1dCBzaGFkb3dfcGFzcyBp cyBOVUxMLCB0aGUgaW1wbGVtZW50YXRpb24gbXVzdCBjb250aW51ZSB0aGUKKyAqCSAgICAgICAg ICAgICAgZXhjaGFuZ2UgYXMgaWYgdGhlIHVzZXIgZXhpc3RlZCBhbmQgdGhlIHBhc3N3b3JkIGRp ZCBub3QKKyAqCSAgICAgICAgICAgICAgbWF0Y2gsIHRvIGF2b2lkIGRpc2Nsb3NpbmcgdmFsaWQg dXNlciBuYW1lcy4KKyAqLwordHlwZWRlZiB2b2lkICooKnBnX2JlX3Nhc2xfaW5pdF9mdW5jKShQ b3J0ICpwb3J0LCBjb25zdCBjaGFyICptZWNoLAorCQkJCQkJCQkJICBjb25zdCBjaGFyICpzaGFk b3dfcGFzcyk7CisKKy8qCisgKiBtZWNoLmV4Y2hhbmdlKCkKKyAqCisgKiBQcm9kdWNlcyBhIHNl cnZlciBjaGFsbGVuZ2UgdG8gYmUgc2VudCB0byB0aGUgY2xpZW50LiBUaGUgY2FsbGJhY2sgbXVz dAorICogcmV0dXJuIG9uZSBvZiB0aGUgUEdfU0FTTF9FWENIQU5HRV8qIHZhbHVlcywgZGVwZW5k aW5nIG9uIHdoZXRoZXIgdGhlCisgKiBleGNoYW5nZSBtdXN0IGNvbnRpbnVlLCBoYXMgZmluaXNo ZWQgc3VjY2Vzc2Z1bGx5LCBvciBoYXMgZmFpbGVkLgorICoKKyAqIElucHV0IHBhcmFtZXRlcnM6 CisgKgorICogICBzdGF0ZTogICAgdGhlIG9wYXF1ZSBtZWNoYW5pc20gc3RhdGUgcmV0dXJuZWQg YnkgbWVjaC5pbml0KCkKKyAqCisgKiAgIGlucHV0OiAgICB0aGUgcmVzcG9uc2UgZGF0YSBzZW50 IGJ5IHRoZSBjbGllbnQsIG9yIE5VTEwgaWYgdGhlIG1lY2hhbmlzbSBpcworICogICAgICAgICAg ICAgY2xpZW50LWZpcnN0IGJ1dCB0aGUgY2xpZW50IGRpZCBub3Qgc2VuZCBhbiBpbml0aWFsIHJl c3BvbnNlLgorICogICAgICAgICAgICAgKFRoaXMgY2FuIG9ubHkgaGFwcGVuIGR1cmluZyB0aGUg Zmlyc3QgbWVzc2FnZSBmcm9tIHRoZSBjbGllbnQuKQorICogICAgICAgICAgICAgVGhpcyBpcyBn dWFyYW50ZWVkIHRvIGJlIG51bGwtdGVybWluYXRlZCBmb3Igc2FmZXR5LCBidXQgU0FTTAorICog ICAgICAgICAgICAgYWxsb3dzIGVtYmVkZGVkIG51bGxzIGluIHJlc3BvbnNlcywgc28gbWVjaGFu aXNtcyBtdXN0IGJlIGNhcmVmdWwKKyAqICAgICAgICAgICAgIHRvIGNoZWNrIGlucHV0bGVuLgor ICoKKyAqICAgaW5wdXRsZW46IHRoZSBsZW5ndGggb2YgdGhlIGNoYWxsZW5nZSBkYXRhIHNlbnQg YnkgdGhlIHNlcnZlciwgb3IgLTEgaWYgdGhlCisgKiAgICAgICAgICAgICBjbGllbnQgZGlkIG5v dCBzZW5kIGFuIGluaXRpYWwgcmVzcG9uc2UKKyAqCisgKiBPdXRwdXQgcGFyYW1ldGVycywgdG8g YmUgc2V0IGJ5IHRoZSBjYWxsYmFjayBmdW5jdGlvbjoKKyAqCisgKiAgIG91dHB1dDogICAgYSBw YWxsb2MnZCBidWZmZXIgY29udGFpbmluZyBlaXRoZXIgdGhlIHNlcnZlcidzIG5leHQgY2hhbGxl bmdlCisgKiAgICAgICAgICAgICAgKGlmIFBHX1NBU0xfRVhDSEFOR0VfQ09OVElOVUUgaXMgcmV0 dXJuZWQpIG9yIHRoZSBzZXJ2ZXIncworICogICAgICAgICAgICAgIG91dGNvbWUgZGF0YSAoaWYg UEdfU0FTTF9FWENIQU5HRV9TVUNDRVNTIGlzIHJldHVybmVkIGFuZCB0aGUKKyAqICAgICAgICAg ICAgICBtZWNoYW5pc20gcmVxdWlyZXMgZGF0YSB0byBiZSBzZW50IGR1cmluZyBhIHN1Y2Nlc3Nm dWwgb3V0Y29tZSkuCisgKiAgICAgICAgICAgICAgVGhlIGNhbGxiYWNrIHNob3VsZCBzZXQgdGhp cyB0byBOVUxMIGlmIHRoZSBleGNoYW5nZSBpcyBvdmVyIGFuZAorICogICAgICAgICAgICAgIG5v IG91dHB1dCBzaG91bGQgYmUgc2VudCwgd2hpY2ggc2hvdWxkIGNvcnJlc3BvbmQgdG8gZWl0aGVy CisgKiAgICAgICAgICAgICAgUEdfU0FTTF9FWENIQU5HRV9GQUlMVVJFIG9yIGEgUEdfU0FTTF9F WENIQU5HRV9TVUNDRVNTIHdpdGggbm8KKyAqICAgICAgICAgICAgICBvdXRjb21lIGRhdGEuCisg KgorICogICBvdXRwdXRsZW46IHRoZSBsZW5ndGggb2YgdGhlIGNoYWxsZW5nZSBkYXRhLiBJZ25v cmVkIGlmICpvdXRwdXQgaXMgTlVMTC4KKyAqCisgKiAgIGxvZ2RldGFpbDogc2V0IHRvIGFuIG9w dGlvbmFsIERFVEFJTCBtZXNzYWdlIHRvIGJlIHByaW50ZWQgdG8gdGhlIHNlcnZlcgorICogICAg ICAgICAgICAgIGxvZywgdG8gZGlzYW1iaWd1YXRlIGZhaWx1cmUgbW9kZXMuIChUaGUgY2xpZW50 IHdpbGwgb25seSBldmVyCisgKiAgICAgICAgICAgICAgc2VlIHRoZSBzYW1lIGdlbmVyaWMgYXV0 aGVudGljYXRpb24gZmFpbHVyZSBtZXNzYWdlLikgSWdub3JlZCBpZgorICogICAgICAgICAgICAg IHRoZSBleGNoYW5nZSBpcyBjb21wbGV0ZWQgd2l0aCBQR19TQVNMX0VYQ0hBTkdFX1NVQ0NFU1Mu CisgKi8KK3R5cGVkZWYgaW50ICAgKCpwZ19iZV9zYXNsX2V4Y2hhbmdlX2Z1bmMpKHZvaWQgKnN0 YXRlLAorCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqaW5wdXQsIGludCBpbnB1dGxlbiwKKwkJCQkJ CQkJCQkgIGNoYXIgKipvdXRwdXQsIGludCAqb3V0cHV0bGVuLAorCQkJCQkJCQkJCSAgY2hhciAq KmxvZ2RldGFpbCk7CiAKIHR5cGVkZWYgc3RydWN0CiB7CkBAIC0zMSw0ICsxMzMsOCBAQCB0eXBl ZGVmIHN0cnVjdAogCXBnX2JlX3Nhc2xfZXhjaGFuZ2VfZnVuYwlleGNoYW5nZTsKIH0gcGdfYmVf c2FzbF9tZWNoOwogCisvKiBDb21tb24gaW1wbGVtZW50YXRpb24gZm9yIGF1dGguYyAqLworZXh0 ZXJuIGludCBDaGVja1NBU0xBdXRoKGNvbnN0IHBnX2JlX3Nhc2xfbWVjaCAqbWVjaCwgUG9ydCAq cG9ydCwKKwkJCQkJCSBjaGFyICpzaGFkb3dfcGFzcywgY2hhciAqKmxvZ2RldGFpbCk7CisKICNl bmRpZiAvKiBQR19TQVNMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LWF1dGgtc2FzbC5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1zYXNsLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMTQwOWU1MTI4NwotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtc2FzbC5oCkBAIC0wLDAgKzEsMTMx IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBmZS1hdXRoLXNhc2wuaAorICogICAgRGVm aW5lcyB0aGUgU0FTTCBtZWNoYW5pc20gaW50ZXJmYWNlIGZvciB0aGUgbGlicHEgZnJvbnRlbmQu IEVhY2ggU0FTTAorICogICAgbWVjaGFuaXNtIGRlZmluZXMgYSBmcm9udGVuZCBhbmQgYSBiYWNr ZW5kIGNhbGxiYWNrIHN0cnVjdHVyZS4gVGhpcyBpcyBub3QKKyAqICAgIHBhcnQgb2YgdGhlIHB1 YmxpYyBBUEkgZm9yIGFwcGxpY2F0aW9ucy4KKyAqCisgKiAgICBTZWUgc3JjL2luY2x1ZGUvbGli cHEvc2FzbC5oIGZvciB0aGUgYmFja2VuZCBjb3VudGVycGFydC4KKyAqCisgKiBQb3J0aW9ucyBD b3B5cmlnaHQgKGMpIDE5OTYtMjAyMSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3Jv dXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVy c2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1z YXNsLmgKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaWZuZGVmIEZFX0FVVEhfU0FT TF9ICisjZGVmaW5lIEZFX0FVVEhfU0FTTF9ICisKKyNpbmNsdWRlICJsaWJwcS1mZS5oIgorCisv KgorICogRnJvbnRlbmQgbWVjaGFuaXNtIEFQSQorICoKKyAqIFRvIGltcGxlbWVudCBhIGZyb250 ZW5kIG1lY2hhbmlzbSwgZGVjbGFyZSBhIHBnX2JlX3Nhc2xfbWVjaCBzdHJ1Y3Qgd2l0aAorICog YXBwcm9wcmlhdGUgY2FsbGJhY2sgaW1wbGVtZW50YXRpb25zLCB0aGVuIGhvb2sgaXQgaW50byBj b25uLT5zYXNsIGR1cmluZworICogcGdfU0FTTF9pbml0KCkncyBtZWNoYW5pc20gbmVnb3RpYXRp b24uCisgKi8KKworLyoKKyAqIG1lY2guaW5pdCgpCisgKgorICogSW5pdGlhbGl6ZXMgbWVjaGFu aXNtLXNwZWNpZmljIHN0YXRlIGZvciBhIGNvbm5lY3Rpb24uIFRoaXMgY2FsbGJhY2sgbXVzdAor ICogcmV0dXJuIGEgcG9pbnRlciB0byBpdHMgYWxsb2NhdGVkIHN0YXRlLCB3aGljaCB3aWxsIGJl IHBhc3NlZCBhcy1pcyBhcyB0aGUKKyAqIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBvdGhlciBjYWxs YmFja3MuIG1lY2guZnJlZSgpIHdpbGwgYmUgY2FsbGVkIHRvIHJlbGVhc2UKKyAqIGFueSBzdGF0 ZSByZXNvdXJjZXMuCisgKgorICogSWYgc3RhdGUgYWxsb2NhdGlvbiBmYWlscywgdGhlIGltcGxl bWVudGF0aW9uIHNob3VsZCByZXR1cm4gTlVMTCB0byBmYWlsIHRoZQorICogYXV0aGVudGljYXRp b24gZXhjaGFuZ2UuCisgKgorICogSW5wdXQgcGFyYW1ldGVyczoKKyAqCisgKiAgIGNvbm46ICAg ICB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyCisgKgorICogICBwYXNzd29yZDogdGhlIHVz ZXIncyBzdXBwbGllZCBwYXNzd29yZCBmb3IgdGhlIGN1cnJlbnQgY29ubmVjdGlvbgorICoKKyAq ICAgbWVjaDogICAgIHRoZSBtZWNoYW5pc20gbmFtZSBpbiB1c2UsIGZvciBpbXBsZW1lbnRhdGlv bnMgdGhhdCBtYXkgYWR2ZXJ0aXNlCisgKiAgICAgICAgICAgICBtb3JlIHRoYW4gb25lIG5hbWUg KHN1Y2ggYXMgKi1QTFVTIHZhcmlhbnRzKQorICovCit0eXBlZGVmIHZvaWQgKigqcGdfZmVfc2Fz bF9pbml0X2Z1bmMpKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcGFzc3dvcmQsCisJCQkJCQkJ CQkgIGNvbnN0IGNoYXIgKm1lY2gpOworCisvKgorICogbWVjaC5leGNoYW5nZSgpCisgKgorICog UHJvZHVjZXMgYSBjbGllbnQgcmVzcG9uc2UgdG8gYSBzZXJ2ZXIgY2hhbGxlbmdlLiBBcyBhIHNw ZWNpYWwgY2FzZSBmb3IKKyAqIGNsaWVudC1maXJzdCBTQVNMIG1lY2hhbmlzbXMsIGV4Y2hhbmdl KCkgaXMgY2FsbGVkIHdpdGggYSBOVUxMIHNlcnZlcgorICogcmVzcG9uc2Ugb25jZSBhdCB0aGUg c3RhcnQgb2YgdGhlIGF1dGhlbnRpY2F0aW9uIGV4Y2hhbmdlIHRvIGdlbmVyYXRlIGFuCisgKiBp bml0aWFsIHJlc3BvbnNlLgorICoKKyAqIElucHV0IHBhcmFtZXRlcnM6CisgKgorICogICBzdGF0 ZTogICAgdGhlIG9wYXF1ZSBtZWNoYW5pc20gc3RhdGUgcmV0dXJuZWQgYnkgbWVjaC5pbml0KCkK KyAqCisgKiAgIGlucHV0OiAgICB0aGUgY2hhbGxlbmdlIGRhdGEgc2VudCBieSB0aGUgc2VydmVy LCBvciBOVUxMIHdoZW4gZ2VuZXJhdGluZyBhCisgKiAgICAgICAgICAgICBjbGllbnQtZmlyc3Qg aW5pdGlhbCByZXNwb25zZSAodGhhdCBpcywgd2hlbiB0aGUgc2VydmVyIGV4cGVjdHMKKyAqICAg ICAgICAgICAgIHRoZSBjbGllbnQgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gc3RhcnQgdGhlIGV4Y2hh bmdlKS4gVGhpcyBpcworICogICAgICAgICAgICAgZ3VhcmFudGVlZCB0byBiZSBudWxsLXRlcm1p bmF0ZWQgZm9yIHNhZmV0eSwgYnV0IFNBU0wgYWxsb3dzCisgKiAgICAgICAgICAgICBlbWJlZGRl ZCBudWxscyBpbiBjaGFsbGVuZ2VzLCBzbyBtZWNoYW5pc21zIG11c3QgYmUgY2FyZWZ1bCB0bwor ICogICAgICAgICAgICAgY2hlY2sgaW5wdXRsZW4uCisgKgorICogICBpbnB1dGxlbjogdGhlIGxl bmd0aCBvZiB0aGUgY2hhbGxlbmdlIGRhdGEgc2VudCBieSB0aGUgc2VydmVyLCBvciAtMQorICog ICAgICAgICAgICAgZHVyaW5nIGNsaWVudC1maXJzdCBpbml0aWFsIHJlc3BvbnNlIGdlbmVyYXRp b24uCisgKgorICogT3V0cHV0IHBhcmFtZXRlcnMsIHRvIGJlIHNldCBieSB0aGUgY2FsbGJhY2sg ZnVuY3Rpb246CisgKgorICogICBvdXRwdXQ6ICAgIGEgbWFsbG9jJ2QgYnVmZmVyIGNvbnRhaW5p bmcgdGhlIGNsaWVudCdzIHJlc3BvbnNlIHRvIHRoZQorICogICAgICAgICAgICAgIHNlcnZlciwg b3IgTlVMTCBpZiB0aGUgZXhjaGFuZ2Ugc2hvdWxkIGJlIGFib3J0ZWQuICgqc3VjY2VzcworICog ICAgICAgICAgICAgIHNob3VsZCBiZSBzZXQgdG8gZmFsc2UgaW4gdGhlIGxhdHRlciBjYXNlLikK KyAqCisgKiAgIG91dHB1dGxlbjogdGhlIGxlbmd0aCBvZiB0aGUgY2xpZW50IHJlc3BvbnNlIGJ1 ZmZlciwgb3IgemVybyBpZiBubyBkYXRhCisgKiAgICAgICAgICAgICAgc2hvdWxkIGJlIHNlbnQg ZHVlIHRvIGFuIGV4Y2hhbmdlIGZhaWx1cmUKKyAqCisgKiAgIGRvbmU6ICAgICAgc2V0IHRvIHRy dWUgaWYgdGhlIFNBU0wgZXhjaGFuZ2Ugc2hvdWxkIG5vdCBjb250aW51ZSwgYmVjYXVzZQorICog ICAgICAgICAgICAgIHRoZSBleGNoYW5nZSBpcyBlaXRoZXIgY29tcGxldGUgb3IgZmFpbGVkCisg KgorICogICBzdWNjZXNzOiAgIHNldCB0byB0cnVlIGlmIHRoZSBTQVNMIGV4Y2hhbmdlIGNvbXBs ZXRlZCBzdWNjZXNzZnVsbHkuIElnbm9yZWQKKyAqICAgICAgICAgICAgICBpZiAqZG9uZSBpcyBm YWxzZS4KKyAqLwordHlwZWRlZiB2b2lkICAoKnBnX2ZlX3Nhc2xfZXhjaGFuZ2VfZnVuYykodm9p ZCAqc3RhdGUsCisJCQkJCQkJCQkJICBjaGFyICppbnB1dCwgaW50IGlucHV0bGVuLAorCQkJCQkJ CQkJCSAgY2hhciAqKm91dHB1dCwgaW50ICpvdXRwdXRsZW4sCisJCQkJCQkJCQkJICBib29sICpk b25lLCBib29sICpzdWNjZXNzKTsKKworLyoKKyAqIG1lY2guY2hhbm5lbF9ib3VuZCgpCisgKgor ICogUmV0dXJucyB0cnVlIGlmIHRoZSBjb25uZWN0aW9uIGhhcyBhbiBlc3RhYmxpc2hlZCBjaGFu bmVsIGJpbmRpbmcuIEEKKyAqIG1lY2hhbmlzbSBpbXBsZW1lbnRhdGlvbiBtdXN0IGVuc3VyZSB0 aGF0IGEgU0FTTCBleGNoYW5nZSBoYXMgYWN0dWFsbHkgYmVlbgorICogY29tcGxldGVkLCBpbiBh ZGRpdGlvbiB0byBjaGVja2luZyB0aGF0IGNoYW5uZWwgYmluZGluZyBpcyBpbiB1c2UuCisgKgor ICogTWVjaGFuaXNtcyB0aGF0IGRvIG5vdCBpbXBsZW1lbnQgY2hhbm5lbCBiaW5kaW5nIG1heSBz aW1wbHkgcmV0dXJuIGZhbHNlLgorICoKKyAqIElucHV0IHBhcmFtZXRlcnM6CisgKgorICogICBz dGF0ZTogICAgdGhlIG9wYXF1ZSBtZWNoYW5pc20gc3RhdGUgcmV0dXJuZWQgYnkgbWVjaC5pbml0 KCkKKyAqLwordHlwZWRlZiBib29sICAoKnBnX2ZlX3Nhc2xfY2hhbm5lbF9ib3VuZF9mdW5jKSh2 b2lkICopOworCisvKgorICogbWVjaC5mcmVlKCkKKyAqCisgKiBGcmVlcyB0aGUgc3RhdGUgYWxs b2NhdGVkIGJ5IG1lY2guaW5pdCgpLiBUaGlzIGlzIGNhbGxlZCB3aGVuIHRoZSBjb25uZWN0aW9u CisgKiBpcyBkcm9wcGVkLCBub3Qgd2hlbiB0aGUgZXhjaGFuZ2UgaXMgY29tcGxldGVkLgorICoK KyAqIElucHV0IHBhcmFtZXRlcnM6CisgKgorICogICBzdGF0ZTogICAgdGhlIG9wYXF1ZSBtZWNo YW5pc20gc3RhdGUgcmV0dXJuZWQgYnkgbWVjaC5pbml0KCkKKyAqLwordHlwZWRlZiB2b2lkICAo KnBnX2ZlX3Nhc2xfZnJlZV9mdW5jKSh2b2lkICopOworCit0eXBlZGVmIHN0cnVjdAoreworCXBn X2ZlX3Nhc2xfaW5pdF9mdW5jCQkJaW5pdDsKKwlwZ19mZV9zYXNsX2V4Y2hhbmdlX2Z1bmMJCWV4 Y2hhbmdlOworCXBnX2ZlX3Nhc2xfY2hhbm5lbF9ib3VuZF9mdW5jCWNoYW5uZWxfYm91bmQ7CisJ cGdfZmVfc2FzbF9mcmVlX2Z1bmMJCQlmcmVlOworfSBwZ19mZV9zYXNsX21lY2g7CisKKyNlbmRp ZiAvKiBGRV9BVVRIX1NBU0xfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEv ZmUtYXV0aC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC5jCmluZGV4IGQ1Y2JhYzEw OGUuLmYyOTllNzJlN2UgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgu YworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLmMKQEAgLTQxLDYgKzQxLDcgQEAK ICNpbmNsdWRlICJjb21tb24vbWQ1LmgiCiAjaW5jbHVkZSAiY29tbW9uL3NjcmFtLWNvbW1vbi5o IgogI2luY2x1ZGUgImZlLWF1dGguaCIKKyNpbmNsdWRlICJmZS1hdXRoLXNhc2wuaCIKICNpbmNs dWRlICJsaWJwcS1mZS5oIgogCiAjaWZkZWYgRU5BQkxFX0dTUwpAQCAtNjcyLDYgKzY3MywxMSBA QCBwZ19TQVNMX2NvbnRpbnVlKFBHY29ubiAqY29ubiwgaW50IHBheWxvYWRsZW4sIGJvb2wgZmlu YWwpCiAJCQkJCQkJIGxpYnBxX2dldHRleHQoIkF1dGhlbnRpY2F0aW9uU0FTTEZpbmFsIHJlY2Vp dmVkIGZyb20gc2VydmVyLCBidXQgU0FTTCBhdXRoZW50aWNhdGlvbiB3YXMgbm90IGNvbXBsZXRl ZFxuIikpOwogCQlyZXR1cm4gU1RBVFVTX0VSUk9SOwogCX0KKwkvKgorCSAqIFRPRE8gU0FTTCBy ZXF1aXJlcyB1cyB0byBhY2NvbW9kYXRlIHplcm8tbGVuZ3RoIHJlc3BvbnNlcy4KKwkgKiBUT0RP IGlzIGl0IGxlZ2FsIGZvciBhIGNsaWVudCBub3QgdG8gc2VuZCBhIHJlc3BvbnNlIHRvIGEgc2Vy dmVyCisJICogY2hhbGxlbmdlLCBpZiB0aGUgZXhjaGFuZ2UgaXNuJ3QgYmVpbmcgYWJvcnRlZD8K KwkgKi8KIAlpZiAob3V0cHV0bGVuICE9IDApCiAJewogCQkvKgpkaWZmIC0tZ2l0IGEvc3JjL2lu dGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1p bnQuaAppbmRleCAzZWJmMTExMTU4Li5lOWYyMTRiNjFiIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJm YWNlcy9saWJwcS9saWJwcS1pbnQuaAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1p bnQuaApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgImdldGFkZHJpbmZvLmgiCiAjaW5jbHVk ZSAibGlicHEvcHFjb21tLmgiCiAvKiBpbmNsdWRlIHN0dWZmIGZvdW5kIGluIGZlIG9ubHkgKi8K KyNpbmNsdWRlICJmZS1hdXRoLXNhc2wuaCIKICNpbmNsdWRlICJwcWV4cGJ1ZmZlci5oIgogCiAj aWZkZWYgRU5BQkxFX0dTUwpAQCAtMzM5LDE5ICszNDAsNiBAQCB0eXBlZGVmIHN0cnVjdCBwZ19j b25uX2hvc3QKIAkJCQkJCQkJICogZm91bmQgaW4gcGFzc3dvcmQgZmlsZS4gKi8KIH0gcGdfY29u bl9ob3N0OwogCi10eXBlZGVmIHZvaWQgKigqcGdfZmVfc2FzbF9pbml0X2Z1bmMpKFBHY29ubiAq LCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Ci10eXBlZGVmIHZvaWQgICgqcGdfZmVfc2Fz bF9leGNoYW5nZV9mdW5jKSh2b2lkICosIGNoYXIgKiwgaW50LCBjaGFyICoqLCBpbnQgKiwgYm9v bCAqLCBib29sICopOwotdHlwZWRlZiBib29sICAoKnBnX2ZlX3Nhc2xfY2hhbm5lbF9ib3VuZF9m dW5jKSh2b2lkICopOwotdHlwZWRlZiB2b2lkICAoKnBnX2ZlX3Nhc2xfZnJlZV9mdW5jKSh2b2lk ICopOwotCi10eXBlZGVmIHN0cnVjdAotewotCXBnX2ZlX3Nhc2xfaW5pdF9mdW5jCQkJaW5pdDsK LQlwZ19mZV9zYXNsX2V4Y2hhbmdlX2Z1bmMJCWV4Y2hhbmdlOwotCXBnX2ZlX3Nhc2xfY2hhbm5l bF9ib3VuZF9mdW5jCWNoYW5uZWxfYm91bmQ7Ci0JcGdfZmVfc2FzbF9mcmVlX2Z1bmMJCQlmcmVl OwotfSBwZ19mZV9zYXNsX21lY2g7Ci0KIC8qCiAgKiBQR2Nvbm4gc3RvcmVzIGFsbCB0aGUgc3Rh dGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSBzaW5nbGUgY29ubmVjdGlvbgogICogdG8gYSBiYWNr ZW5kLgo= --_004_0907fda41fb40b23e2cbdf7eb05a8d61dd5307b3camelvmwarecom_ Content-Type: text/x-patch; name="v3-0001-auth-generalize-SASL-mechanisms.patch" Content-Description: v3-0001-auth-generalize-SASL-mechanisms.patch Content-Disposition: attachment; filename="v3-0001-auth-generalize-SASL-mechanisms.patch"; size=28102; creation-date="Wed, 30 Jun 2021 22:30:12 GMT"; modification-date="Wed, 30 Jun 2021 22:30:12 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSAyMmNkMjZkZTUyNjY4ODBkMmNjNTQxOWNlODA0MjhlYzVjMjViZjVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8cGNoYW1waW9uQHZtd2FyZS5jb20+ CkRhdGU6IFR1ZSwgMTMgQXByIDIwMjEgMTA6MjU6NDggLTA3MDAKU3ViamVjdDogW1BBVENIIHYz IDEvMl0gYXV0aDogZ2VuZXJhbGl6ZSBTQVNMIG1lY2hhbmlzbXMKClNwbGl0IHRoZSBTQVNMIGxv Z2ljIG91dCBmcm9tIHRoZSBTQ1JBTSBpbXBsZW1lbnRhdGlvbiwgc28gdGhhdCBpdCBjYW4KYmUg cmV1c2VkIGJ5IG90aGVyIG1lY2hhbmlzbXMuICBOZXcgaW1wbGVtZW50YXRpb25zIHdpbGwgaW1w bGVtZW50IGJvdGgKYSBwZ19mZV9zYXNsX21lY2ggYW5kIGEgcGdfYmVfc2FzbF9tZWNoLgotLS0K IHNyYy9iYWNrZW5kL2xpYnBxL2F1dGgtc2NyYW0uYyAgICAgICB8ICA0OCArKysrKystLS0tCiBz cmMvYmFja2VuZC9saWJwcS9hdXRoLmMgICAgICAgICAgICAgfCAgNDAgKysrKystLS0KIHNyYy9p bmNsdWRlL2xpYnBxL3Nhc2wuaCAgICAgICAgICAgICB8IDEyNyArKysrKysrKysrKysrKysrKysr KysrKysrKwogc3JjL2luY2x1ZGUvbGlicHEvc2NyYW0uaCAgICAgICAgICAgIHwgIDEzICstLQog c3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1zYXNsLmggIHwgMTMxICsrKysrKysrKysrKysr KysrKysrKysrKysrKwogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1zY3JhbS5jIHwgIDQw ICsrKysrLS0tCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLmMgICAgICAgfCAgMjIgKysr Ky0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGguaCAgICAgICB8ICAxMSArLS0KIHNyYy9p bnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYyAgICB8ICAgNiArLQogc3JjL2ludGVyZmFjZXMv bGlicHEvbGlicHEtaW50LmggICAgIHwgICAyICsKIDEwIGZpbGVzIGNoYW5nZWQsIDM2NyBpbnNl cnRpb25zKCspLCA3MyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVk ZS9saWJwcS9zYXNsLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW50ZXJmYWNlcy9saWJwcS9m ZS1hdXRoLXNhc2wuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGgtc2NyYW0u YyBiL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGgtc2NyYW0uYwppbmRleCBmOWUxMDI2YTEyLi4yOTY1 ZWEyZGRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9hdXRoLXNjcmFtLmMKKysrIGIv c3JjL2JhY2tlbmQvbGlicHEvYXV0aC1zY3JhbS5jCkBAIC0xMDEsMTEgKzEwMSwyNSBAQAogI2lu Y2x1ZGUgImNvbW1vbi9zaGEyLmgiCiAjaW5jbHVkZSAibGlicHEvYXV0aC5oIgogI2luY2x1ZGUg ImxpYnBxL2NyeXB0LmgiCisjaW5jbHVkZSAibGlicHEvc2FzbC5oIgogI2luY2x1ZGUgImxpYnBx L3NjcmFtLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRp bnMuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKIAorc3RhdGljIHZvaWQgIHNjcmFt X2dldF9tZWNoYW5pc21zKFBvcnQgKnBvcnQsIFN0cmluZ0luZm8gYnVmKTsKK3N0YXRpYyB2b2lk ICpzY3JhbV9pbml0KFBvcnQgKnBvcnQsIGNvbnN0IGNoYXIgKnNlbGVjdGVkX21lY2gsCisJCQkJ CQljb25zdCBjaGFyICpzaGFkb3dfcGFzcyk7CitzdGF0aWMgaW50ICAgc2NyYW1fZXhjaGFuZ2Uo dm9pZCAqb3BhcSwgY29uc3QgY2hhciAqaW5wdXQsIGludCBpbnB1dGxlbiwKKwkJCQkJCQljaGFy ICoqb3V0cHV0LCBpbnQgKm91dHB1dGxlbiwgY2hhciAqKmxvZ2RldGFpbCk7CisKKy8qIE1lY2hh bmlzbSBkZWNsYXJhdGlvbiAqLworY29uc3QgcGdfYmVfc2FzbF9tZWNoIHBnX2JlX3NjcmFtX21l Y2ggPSB7CisJc2NyYW1fZ2V0X21lY2hhbmlzbXMsCisJc2NyYW1faW5pdCwKKwlzY3JhbV9leGNo YW5nZSwKK307CisKIC8qCiAgKiBTdGF0dXMgZGF0YSBmb3IgYSBTQ1JBTSBhdXRoZW50aWNhdGlv biBleGNoYW5nZS4gIFRoaXMgc2hvdWxkIGJlIGtlcHQKICAqIGludGVybmFsIHRvIHRoaXMgZmls ZS4KQEAgLTE3MCwxNiArMTg0LDE0IEBAIHN0YXRpYyBjaGFyICpzYW5pdGl6ZV9zdHIoY29uc3Qg Y2hhciAqcyk7CiBzdGF0aWMgY2hhciAqc2NyYW1fbW9ja19zYWx0KGNvbnN0IGNoYXIgKnVzZXJu YW1lKTsKIAogLyoKLSAqIHBnX2JlX3NjcmFtX2dldF9tZWNoYW5pc21zCi0gKgogICogR2V0IGEg bGlzdCBvZiBTQVNMIG1lY2hhbmlzbXMgdGhhdCB0aGlzIG1vZHVsZSBzdXBwb3J0cy4KICAqCiAg KiBGb3IgdGhlIGNvbnZlbmllbmNlIG9mIGJ1aWxkaW5nIHRoZSBGRS9CRSBwYWNrZXQgdGhhdCBs aXN0cyB0aGUKICAqIG1lY2hhbmlzbXMsIHRoZSBuYW1lcyBhcmUgYXBwZW5kZWQgdG8gdGhlIGdp dmVuIFN0cmluZ0luZm8gYnVmZmVyLAogICogc2VwYXJhdGVkIGJ5ICdcMCcgYnl0ZXMuCiAgKi8K LXZvaWQKLXBnX2JlX3NjcmFtX2dldF9tZWNoYW5pc21zKFBvcnQgKnBvcnQsIFN0cmluZ0luZm8g YnVmKQorc3RhdGljIHZvaWQKK3NjcmFtX2dldF9tZWNoYW5pc21zKFBvcnQgKnBvcnQsIFN0cmlu Z0luZm8gYnVmKQogewogCS8qCiAJICogQWR2ZXJ0aXNlIHRoZSBtZWNoYW5pc21zIGluIGRlY3Jl YXNpbmcgb3JkZXIgb2YgaW1wb3J0YW5jZS4gIFNvIHRoZQpAQCAtMTk5LDggKzIxMSw2IEBAIHBn X2JlX3NjcmFtX2dldF9tZWNoYW5pc21zKFBvcnQgKnBvcnQsIFN0cmluZ0luZm8gYnVmKQogfQog CiAvKgotICogcGdfYmVfc2NyYW1faW5pdAotICoKICAqIEluaXRpYWxpemUgYSBuZXcgU0NSQU0g YXV0aGVudGljYXRpb24gZXhjaGFuZ2Ugc3RhdHVzIHRyYWNrZXIuICBUaGlzCiAgKiBuZWVkcyB0 byBiZSBjYWxsZWQgYmVmb3JlIGRvaW5nIGFueSBleGNoYW5nZS4gIEl0IHdpbGwgYmUgZmlsbGVk IGxhdGVyCiAgKiBhZnRlciB0aGUgYmVnaW5uaW5nIG9mIHRoZSBleGNoYW5nZSB3aXRoIGF1dGhl bnRpY2F0aW9uIGluZm9ybWF0aW9uLgpAQCAtMjE1LDEwICsyMjUsOCBAQCBwZ19iZV9zY3JhbV9n ZXRfbWVjaGFuaXNtcyhQb3J0ICpwb3J0LCBTdHJpbmdJbmZvIGJ1ZikKICAqIGFuIGF1dGhlbnRp Y2F0aW9uIGV4Y2hhbmdlLCBidXQgaXQgd2lsbCBmYWlsLCBhcyBpZiBhbiBpbmNvcnJlY3QgcGFz c3dvcmQKICAqIHdhcyBnaXZlbi4KICAqLwotdm9pZCAqCi1wZ19iZV9zY3JhbV9pbml0KFBvcnQg KnBvcnQsCi0JCQkJIGNvbnN0IGNoYXIgKnNlbGVjdGVkX21lY2gsCi0JCQkJIGNvbnN0IGNoYXIg KnNoYWRvd19wYXNzKQorc3RhdGljIHZvaWQgKgorc2NyYW1faW5pdChQb3J0ICpwb3J0LCBjb25z dCBjaGFyICpzZWxlY3RlZF9tZWNoLCBjb25zdCBjaGFyICpzaGFkb3dfcGFzcykKIHsKIAlzY3Jh bV9zdGF0ZSAqc3RhdGU7CiAJYm9vbAkJZ290X3NlY3JldDsKQEAgLTMyNSw5ICszMzMsOSBAQCBw Z19iZV9zY3JhbV9pbml0KFBvcnQgKnBvcnQsCiAgKiBzdHJpbmcgYXQgKmxvZ2RldGFpbCB0aGF0 IHdpbGwgYmUgc2VudCB0byB0aGUgcG9zdG1hc3RlciBsb2cgKGJ1dCBub3QKICAqIHRoZSBjbGll bnQpLgogICovCi1pbnQKLXBnX2JlX3NjcmFtX2V4Y2hhbmdlKHZvaWQgKm9wYXEsIGNvbnN0IGNo YXIgKmlucHV0LCBpbnQgaW5wdXRsZW4sCi0JCQkJCSBjaGFyICoqb3V0cHV0LCBpbnQgKm91dHB1 dGxlbiwgY2hhciAqKmxvZ2RldGFpbCkKK3N0YXRpYyBpbnQKK3NjcmFtX2V4Y2hhbmdlKHZvaWQg Km9wYXEsIGNvbnN0IGNoYXIgKmlucHV0LCBpbnQgaW5wdXRsZW4sCisJCQkgICBjaGFyICoqb3V0 cHV0LCBpbnQgKm91dHB1dGxlbiwgY2hhciAqKmxvZ2RldGFpbCkKIHsKIAlzY3JhbV9zdGF0ZSAq c3RhdGUgPSAoc2NyYW1fc3RhdGUgKikgb3BhcTsKIAlpbnQJCQlyZXN1bHQ7CkBAIC0zNDYsNyAr MzU0LDcgQEAgcGdfYmVfc2NyYW1fZXhjaGFuZ2Uodm9pZCAqb3BhcSwgY29uc3QgY2hhciAqaW5w dXQsIGludCBpbnB1dGxlbiwKIAogCQkqb3V0cHV0ID0gcHN0cmR1cCgiIik7CiAJCSpvdXRwdXRs ZW4gPSAwOwotCQlyZXR1cm4gU0FTTF9FWENIQU5HRV9DT05USU5VRTsKKwkJcmV0dXJuIFBHX1NB U0xfRVhDSEFOR0VfQ09OVElOVUU7CiAJfQogCiAJLyoKQEAgLTM3OSw3ICszODcsNyBAQCBwZ19i ZV9zY3JhbV9leGNoYW5nZSh2b2lkICpvcGFxLCBjb25zdCBjaGFyICppbnB1dCwgaW50IGlucHV0 bGVuLAogCQkJKm91dHB1dCA9IGJ1aWxkX3NlcnZlcl9maXJzdF9tZXNzYWdlKHN0YXRlKTsKIAog CQkJc3RhdGUtPnN0YXRlID0gU0NSQU1fQVVUSF9TQUxUX1NFTlQ7Ci0JCQlyZXN1bHQgPSBTQVNM X0VYQ0hBTkdFX0NPTlRJTlVFOworCQkJcmVzdWx0ID0gUEdfU0FTTF9FWENIQU5HRV9DT05USU5V RTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgU0NSQU1fQVVUSF9TQUxUX1NFTlQ6CkBAIC00MDgsNyAr NDE2LDcgQEAgcGdfYmVfc2NyYW1fZXhjaGFuZ2Uodm9pZCAqb3BhcSwgY29uc3QgY2hhciAqaW5w dXQsIGludCBpbnB1dGxlbiwKIAkJCSAqIGVycm9yaW5nIG91dCBpbiBhbiBhcHBsaWNhdGlvbi1z cGVjaWZpYyB3YXkuICBXZSBjaG9vc2UgdG8gZG8KIAkJCSAqIHRoZSBsYXR0ZXIsIHNvIHRoYXQg dGhlIGVycm9yIG1lc3NhZ2UgZm9yIGludmFsaWQgcGFzc3dvcmQgaXMKIAkJCSAqIHRoZSBzYW1l IGZvciBhbGwgYXV0aGVudGljYXRpb24gbWV0aG9kcy4gIFRoZSBjYWxsZXIgd2lsbCBjYWxsCi0J CQkgKiBlcmVwb3J0KCksIHdoZW4gd2UgcmV0dXJuIFNBU0xfRVhDSEFOR0VfRkFJTFVSRSB3aXRo IG5vIG91dHB1dC4KKwkJCSAqIGVyZXBvcnQoKSwgd2hlbiB3ZSByZXR1cm4gUEdfU0FTTF9FWENI QU5HRV9GQUlMVVJFIHdpdGggbm8gb3V0cHV0LgogCQkJICoKIAkJCSAqIE5COiB0aGUgb3JkZXIg b2YgdGhlc2UgY2hlY2tzIGlzIGludGVudGlvbmFsLiAgV2UgY2FsY3VsYXRlIHRoZQogCQkJICog Y2xpZW50IHByb29mIGV2ZW4gaW4gYSBtb2NrIGF1dGhlbnRpY2F0aW9uLCBldmVuIHRob3VnaCBp dCdzCkBAIC00MTcsNyArNDI1LDcgQEAgcGdfYmVfc2NyYW1fZXhjaGFuZ2Uodm9pZCAqb3BhcSwg Y29uc3QgY2hhciAqaW5wdXQsIGludCBpbnB1dGxlbiwKIAkJCSAqLwogCQkJaWYgKCF2ZXJpZnlf Y2xpZW50X3Byb29mKHN0YXRlKSB8fCBzdGF0ZS0+ZG9vbWVkKQogCQkJewotCQkJCXJlc3VsdCA9 IFNBU0xfRVhDSEFOR0VfRkFJTFVSRTsKKwkJCQlyZXN1bHQgPSBQR19TQVNMX0VYQ0hBTkdFX0ZB SUxVUkU7CiAJCQkJYnJlYWs7CiAJCQl9CiAKQEAgLTQyNSwxNiArNDMzLDE2IEBAIHBnX2JlX3Nj cmFtX2V4Y2hhbmdlKHZvaWQgKm9wYXEsIGNvbnN0IGNoYXIgKmlucHV0LCBpbnQgaW5wdXRsZW4s CiAJCQkqb3V0cHV0ID0gYnVpbGRfc2VydmVyX2ZpbmFsX21lc3NhZ2Uoc3RhdGUpOwogCiAJCQkv KiBTdWNjZXNzISAqLwotCQkJcmVzdWx0ID0gU0FTTF9FWENIQU5HRV9TVUNDRVNTOworCQkJcmVz dWx0ID0gUEdfU0FTTF9FWENIQU5HRV9TVUNDRVNTOwogCQkJc3RhdGUtPnN0YXRlID0gU0NSQU1f QVVUSF9GSU5JU0hFRDsKIAkJCWJyZWFrOwogCiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAi aW52YWxpZCBTQ1JBTSBleGNoYW5nZSBzdGF0ZSIpOwotCQkJcmVzdWx0ID0gU0FTTF9FWENIQU5H RV9GQUlMVVJFOworCQkJcmVzdWx0ID0gUEdfU0FTTF9FWENIQU5HRV9GQUlMVVJFOwogCX0KIAot CWlmIChyZXN1bHQgPT0gU0FTTF9FWENIQU5HRV9GQUlMVVJFICYmIHN0YXRlLT5sb2dkZXRhaWwg JiYgbG9nZGV0YWlsKQorCWlmIChyZXN1bHQgPT0gUEdfU0FTTF9FWENIQU5HRV9GQUlMVVJFICYm IHN0YXRlLT5sb2dkZXRhaWwgJiYgbG9nZGV0YWlsKQogCQkqbG9nZGV0YWlsID0gc3RhdGUtPmxv Z2RldGFpbDsKIAogCWlmICgqb3V0cHV0KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEv YXV0aC5jIGIvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC5jCmluZGV4IDk2N2I1ZWY3M2MuLjgyZjA0 M2EzNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2xpYnBxL2F1dGguYworKysgYi9zcmMvYmFj a2VuZC9saWJwcS9hdXRoLmMKQEAgLTI2LDExICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbW1hbmRz L3VzZXIuaCIKICNpbmNsdWRlICJjb21tb24vaXAuaCIKICNpbmNsdWRlICJjb21tb24vbWQ1Lmgi Ci0jaW5jbHVkZSAiY29tbW9uL3NjcmFtLWNvbW1vbi5oIgogI2luY2x1ZGUgImxpYnBxL2F1dGgu aCIKICNpbmNsdWRlICJsaWJwcS9jcnlwdC5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCiAj aW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKKyNpbmNsdWRlICJsaWJwcS9zYXNsLmgiCiAjaW5j bHVkZSAibGlicHEvc2NyYW0uaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJw b3J0L3BnX2Jzd2FwLmgiCkBAIC01MSw2ICs1MSwxMyBAQCBzdGF0aWMgdm9pZCBhdXRoX2ZhaWxl ZChQb3J0ICpwb3J0LCBpbnQgc3RhdHVzLCBjaGFyICpsb2dkZXRhaWwpOwogc3RhdGljIGNoYXIg KnJlY3ZfcGFzc3dvcmRfcGFja2V0KFBvcnQgKnBvcnQpOwogc3RhdGljIHZvaWQgc2V0X2F1dGhu X2lkKFBvcnQgKnBvcnQsIGNvbnN0IGNoYXIgKmlkKTsKIAorLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBTQVNMIGNv bW1vbiBhdXRoZW50aWNhdGlvbgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyBpbnQJU0FTTF9leGNo YW5nZShjb25zdCBwZ19iZV9zYXNsX21lY2ggKm1lY2gsIFBvcnQgKnBvcnQsCisJCQkJCQkgIGNo YXIgKnNoYWRvd19wYXNzLCBjaGFyICoqbG9nZGV0YWlsKTsKKwogCiAvKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFBh c3N3b3JkLWJhc2VkIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHMgKHBhc3N3b3JkLCBtZDUsIGFuZCBz Y3JhbS1zaGEtMjU2KQpAQCAtOTEyLDEyICs5MTksMTMgQEAgQ2hlY2tNRDVBdXRoKFBvcnQgKnBv cnQsIGNoYXIgKnNoYWRvd19wYXNzLCBjaGFyICoqbG9nZGV0YWlsKQogfQogCiBzdGF0aWMgaW50 Ci1DaGVja1NDUkFNQXV0aChQb3J0ICpwb3J0LCBjaGFyICpzaGFkb3dfcGFzcywgY2hhciAqKmxv Z2RldGFpbCkKK1NBU0xfZXhjaGFuZ2UoY29uc3QgcGdfYmVfc2FzbF9tZWNoICptZWNoLCBQb3J0 ICpwb3J0LCBjaGFyICpzaGFkb3dfcGFzcywKKwkJCSAgY2hhciAqKmxvZ2RldGFpbCkKIHsKIAlT dHJpbmdJbmZvRGF0YSBzYXNsX21lY2hzOwogCWludAkJCW10eXBlOwogCVN0cmluZ0luZm9EYXRh IGJ1ZjsKLQl2b2lkCSAgICpzY3JhbV9vcGFxID0gTlVMTDsKKwl2b2lkCSAgICpvcGFxID0gTlVM TDsKIAljaGFyCSAgICpvdXRwdXQgPSBOVUxMOwogCWludAkJCW91dHB1dGxlbiA9IDA7CiAJY29u c3QgY2hhciAqaW5wdXQ7CkBAIC05MzEsNyArOTM5LDcgQEAgQ2hlY2tTQ1JBTUF1dGgoUG9ydCAq cG9ydCwgY2hhciAqc2hhZG93X3Bhc3MsIGNoYXIgKipsb2dkZXRhaWwpCiAJICovCiAJaW5pdFN0 cmluZ0luZm8oJnNhc2xfbWVjaHMpOwogCi0JcGdfYmVfc2NyYW1fZ2V0X21lY2hhbmlzbXMocG9y dCwgJnNhc2xfbWVjaHMpOworCW1lY2gtPmdldF9tZWNoYW5pc21zKHBvcnQsICZzYXNsX21lY2hz KTsKIAkvKiBQdXQgYW5vdGhlciAnXDAnIHRvIG1hcmsgdGhhdCBsaXN0IGlzIGZpbmlzaGVkLiAq LwogCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZzYXNsX21lY2hzLCAnXDAnKTsKIApAQCAtOTk4LDcg KzEwMDYsNyBAQCBDaGVja1NDUkFNQXV0aChQb3J0ICpwb3J0LCBjaGFyICpzaGFkb3dfcGFzcywg Y2hhciAqKmxvZ2RldGFpbCkKIAkJCSAqIFRoaXMgaXMgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRv IHJldmVhbCB0byBhbiBhdHRhY2tlciB3aGF0CiAJCQkgKiB1c2VybmFtZXMgYXJlIHZhbGlkLCBu b3Igd2hpY2ggdXNlcnMgaGF2ZSBhIHZhbGlkIHBhc3N3b3JkLgogCQkJICovCi0JCQlzY3JhbV9v cGFxID0gcGdfYmVfc2NyYW1faW5pdChwb3J0LCBzZWxlY3RlZF9tZWNoLCBzaGFkb3dfcGFzcyk7 CisJCQlvcGFxID0gbWVjaC0+aW5pdChwb3J0LCBzZWxlY3RlZF9tZWNoLCBzaGFkb3dfcGFzcyk7 CiAKIAkJCWlucHV0bGVuID0gcHFfZ2V0bXNnaW50KCZidWYsIDQpOwogCQkJaWYgKGlucHV0bGVu ID09IC0xKQpAQCAtMTAyMiwxMiArMTAzMCwxMSBAQCBDaGVja1NDUkFNQXV0aChQb3J0ICpwb3J0 LCBjaGFyICpzaGFkb3dfcGFzcywgY2hhciAqKmxvZ2RldGFpbCkKIAkJQXNzZXJ0KGlucHV0ID09 IE5VTEwgfHwgaW5wdXRbaW5wdXRsZW5dID09ICdcMCcpOwogCiAJCS8qCi0JCSAqIHdlIHBhc3Mg J2xvZ2RldGFpbCcgYXMgTlVMTCB3aGVuIGRvaW5nIGEgbW9jayBhdXRoZW50aWNhdGlvbiwKLQkJ ICogYmVjYXVzZSB3ZSBzaG91bGQgYWxyZWFkeSBoYXZlIGEgYmV0dGVyIGVycm9yIG1lc3NhZ2Ug aW4gdGhhdCBjYXNlCisJCSAqIEhhbmQgdGhlIGluY29taW5nIG1lc3NhZ2UgdG8gdGhlIG1lY2hh bmlzbSBpbXBsZW1lbnRhdGlvbi4KIAkJICovCi0JCXJlc3VsdCA9IHBnX2JlX3NjcmFtX2V4Y2hh bmdlKHNjcmFtX29wYXEsIGlucHV0LCBpbnB1dGxlbiwKLQkJCQkJCQkJCSAgJm91dHB1dCwgJm91 dHB1dGxlbiwKLQkJCQkJCQkJCSAgbG9nZGV0YWlsKTsKKwkJcmVzdWx0ID0gbWVjaC0+ZXhjaGFu Z2Uob3BhcSwgaW5wdXQsIGlucHV0bGVuLAorCQkJCQkJCQkmb3V0cHV0LCAmb3V0cHV0bGVuLAor CQkJCQkJCQlsb2dkZXRhaWwpOwogCiAJCS8qIGlucHV0IGJ1ZmZlciBubyBsb25nZXIgdXNlZCAq LwogCQlwZnJlZShidWYuZGF0YSk7CkBAIC0xMDM5LDE3ICsxMDQ2LDE4IEBAIENoZWNrU0NSQU1B dXRoKFBvcnQgKnBvcnQsIGNoYXIgKnNoYWRvd19wYXNzLCBjaGFyICoqbG9nZGV0YWlsKQogCQkJ ICovCiAJCQllbG9nKERFQlVHNCwgInNlbmRpbmcgU0FTTCBjaGFsbGVuZ2Ugb2YgbGVuZ3RoICV1 Iiwgb3V0cHV0bGVuKTsKIAotCQkJaWYgKHJlc3VsdCA9PSBTQVNMX0VYQ0hBTkdFX1NVQ0NFU1Mp CisJCQkvKiBUT0RPOiBQR19TQVNMX0VYQ0hBTkdFX0ZBSUxVUkUgd2l0aCBvdXRwdXQgaXMgZm9y YmlkZGVuIGluIFNBU0wgKi8KKwkJCWlmIChyZXN1bHQgPT0gUEdfU0FTTF9FWENIQU5HRV9TVUND RVNTKQogCQkJCXNlbmRBdXRoUmVxdWVzdChwb3J0LCBBVVRIX1JFUV9TQVNMX0ZJTiwgb3V0cHV0 LCBvdXRwdXRsZW4pOwogCQkJZWxzZQogCQkJCXNlbmRBdXRoUmVxdWVzdChwb3J0LCBBVVRIX1JF UV9TQVNMX0NPTlQsIG91dHB1dCwgb3V0cHV0bGVuKTsKIAogCQkJcGZyZWUob3V0cHV0KTsKIAkJ fQotCX0gd2hpbGUgKHJlc3VsdCA9PSBTQVNMX0VYQ0hBTkdFX0NPTlRJTlVFKTsKKwl9IHdoaWxl IChyZXN1bHQgPT0gUEdfU0FTTF9FWENIQU5HRV9DT05USU5VRSk7CiAKIAkvKiBPb3BzLCBTb21l dGhpbmcgYmFkIGhhcHBlbmVkICovCi0JaWYgKHJlc3VsdCAhPSBTQVNMX0VYQ0hBTkdFX1NVQ0NF U1MpCisJaWYgKHJlc3VsdCAhPSBQR19TQVNMX0VYQ0hBTkdFX1NVQ0NFU1MpCiAJewogCQlyZXR1 cm4gU1RBVFVTX0VSUk9SOwogCX0KQEAgLTEwNTcsNiArMTA2NSwxMiBAQCBDaGVja1NDUkFNQXV0 aChQb3J0ICpwb3J0LCBjaGFyICpzaGFkb3dfcGFzcywgY2hhciAqKmxvZ2RldGFpbCkKIAlyZXR1 cm4gU1RBVFVTX09LOwogfQogCitzdGF0aWMgaW50CitDaGVja1NDUkFNQXV0aChQb3J0ICpwb3J0 LCBjaGFyICpzaGFkb3dfcGFzcywgY2hhciAqKmxvZ2RldGFpbCkKK3sKKwlyZXR1cm4gU0FTTF9l eGNoYW5nZSgmcGdfYmVfc2NyYW1fbWVjaCwgcG9ydCwgc2hhZG93X3Bhc3MsIGxvZ2RldGFpbCk7 Cit9CisKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBHU1NBUEkgYXV0aGVudGljYXRpb24gc3lzdGVtCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9saWJwcS9zYXNsLmggYi9zcmMvaW5jbHVkZS9saWJwcS9zYXNs LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uYzczMmYzNTU2NAotLS0g L2Rldi9udWxsCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBxL3Nhc2wuaApAQCAtMCwwICsxLDEyNyBA QAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogc2FzbC5oCisgKiAgICAgRGVmaW5lcyB0aGUg U0FTTCBtZWNoYW5pc20gaW50ZXJmYWNlIGZvciB0aGUgbGlicHEgYmFja2VuZC4gRWFjaCBTQVNM CisgKiAgICAgbWVjaGFuaXNtIGRlZmluZXMgYSBmcm9udGVuZCBhbmQgYSBiYWNrZW5kIGNhbGxi YWNrIHN0cnVjdHVyZS4KKyAqCisgKiAgICAgU2VlIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1 dGgtc2FzbC5oIGZvciB0aGUgZnJvbnRlbmQgY291bnRlcnBhcnQuCisgKgorICogUG9ydGlvbnMg Q29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZl cnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL2xpYnBxL3Nhc2wuaAorICoK KyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBHX1NBU0xfSAorI2RlZmluZSBQR19T QVNMX0gKKworI2luY2x1ZGUgImxpYnBxL2xpYnBxLWJlLmgiCisKKy8qIFN0YXR1cyBjb2RlcyBm b3IgbWVzc2FnZSBleGNoYW5nZSAqLworI2RlZmluZSBQR19TQVNMX0VYQ0hBTkdFX0NPTlRJTlVF CQkwCisjZGVmaW5lIFBHX1NBU0xfRVhDSEFOR0VfU1VDQ0VTUwkJMQorI2RlZmluZSBQR19TQVNM X0VYQ0hBTkdFX0ZBSUxVUkUJCTIKKworLyoKKyAqIEJhY2tlbmQgbWVjaGFuaXNtIEFQSQorICoK KyAqIFRvIGltcGxlbWVudCBhIGJhY2tlbmQgbWVjaGFuaXNtLCBkZWNsYXJlIGEgcGdfYmVfc2Fz bF9tZWNoIHN0cnVjdCB3aXRoCisgKiBhcHByb3ByaWF0ZSBjYWxsYmFjayBpbXBsZW1lbnRhdGlv bnMuIFRoZW4gcGFzcyB0aGUgbWVjaGFuaXNtIHRvCisgKiBDaGVja1NBU0xBdXRoKCkgZHVyaW5n IENsaWVudEF1dGhlbnRpY2F0aW9uKCksIG9uY2UgdGhlIHNlcnZlciBoYXMgZGVjaWRlZAorICog d2hpY2ggYXV0aGVudGljYXRpb24gbWV0aG9kIHRvIHVzZS4KKyAqLworCisvKgorICogbWVjaC5n ZXRfbWVjaGFuaXNtcygpCisgKgorICogUmV0cmlldmVzIHRoZSBsaXN0IG9mIFNBU0wgbWVjaGFu aXNtIG5hbWVzIHN1cHBvcnRlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uLgorICogVGhlIG5hbWVz IGFyZSBhcHBlbmRlZCBpbnRvIHRoZSBwcm92aWRlZCBidWZmZXIuCisgKgorICogSW5wdXQgcGFy YW1ldGVyczoKKyAqCisgKiAgIHBvcnQ6IHRoZSBjbGllbnQgUG9ydAorICoKKyAqIE91dHB1dCBw YXJhbWV0ZXJzOgorICoKKyAqICAgYnVmOiBhIFN0cmluZ0luZm8gYnVmZmVyIHRoYXQgdGhlIGNh bGxiYWNrIHNob3VsZCBwb3B1bGF0ZSB3aXRoIHN1cHBvcnRlZAorICogICAgICAgIG1lY2hhbmlz bSBuYW1lcy4gTnVsbC10ZXJtaW5hdGVkIG5hbWVzIHNob3VsZCBiZSBwcmludGVkIHRvIHRoZSBi dWZmZXIKKyAqICAgICAgICB1c2luZyBhcHBlbmRTdHJpbmdJbmZvKigpLgorICovCit0eXBlZGVm IHZvaWQgICgqcGdfYmVfc2FzbF9tZWNoYW5pc21fZnVuYykoUG9ydCAqcG9ydCwgU3RyaW5nSW5m byBidWYpOworCisvKgorICogbWVjaC5pbml0KCkKKyAqCisgKiBJbml0aWFsaXplcyBtZWNoYW5p c20tc3BlY2lmaWMgc3RhdGUgZm9yIGEgY29ubmVjdGlvbi4gVGhpcyBjYWxsYmFjayBtdXN0Cisg KiByZXR1cm4gYSBwb2ludGVyIHRvIGl0cyBhbGxvY2F0ZWQgc3RhdGUsIHdoaWNoIHdpbGwgYmUg cGFzc2VkIGFzLWlzIGFzIHRoZQorICogZmlyc3QgYXJndW1lbnQgdG8gdGhlIG90aGVyIGNhbGxi YWNrcy4KKyAqCisgKiBJbnB1dCBwYXJhbXRlcnM6CisgKgorICogICBwb3J0OiAgICAgICAgdGhl IGNsaWVudCBQb3J0CisgKgorICoJIG1lY2g6ICAgICAgICB0aGUgYWN0dWFsIG1lY2hhbmlzbSBu YW1lIGluIHVzZSBieSB0aGUgY2xpZW50CisgKgorICoJIHNoYWRvd19wYXNzOiB0aGUgc2hhZG93 IGVudHJ5IGZvciB0aGUgdXNlciBiZWluZyBhdXRoZW50aWNhdGVkLCBvciBOVUxMIGlmCisgKgkg ICAgICAgICAgICAgIG9uZSBkb2VzIG5vdCBleGlzdC4gTWVjaGFuaXNtcyB0aGF0IGRvIG5vdCB1 c2Ugc2hhZG93IGVudHJpZXMKKyAqCSAgICAgICAgICAgICAgbWF5IGlnbm9yZSB0aGlzIHBhcmFt ZXRlci4gSWYgYSBtZWNoYW5pc20gdXNlcyBzaGFkb3cgZW50cmllcworICoJICAgICAgICAgICAg ICBidXQgc2hhZG93X3Bhc3MgaXMgTlVMTCwgdGhlIGltcGxlbWVudGF0aW9uIG11c3QgY29udGlu dWUgdGhlCisgKgkgICAgICAgICAgICAgIGV4Y2hhbmdlIGFzIGlmIHRoZSB1c2VyIGV4aXN0ZWQg YW5kIHRoZSBwYXNzd29yZCBkaWQgbm90CisgKgkgICAgICAgICAgICAgIG1hdGNoLCB0byBhdm9p ZCBkaXNjbG9zaW5nIHZhbGlkIHVzZXIgbmFtZXMuCisgKi8KK3R5cGVkZWYgdm9pZCAqKCpwZ19i ZV9zYXNsX2luaXRfZnVuYykoUG9ydCAqcG9ydCwgY29uc3QgY2hhciAqbWVjaCwKKwkJCQkJCQkJ CSAgY29uc3QgY2hhciAqc2hhZG93X3Bhc3MpOworCisvKgorICogbWVjaC5leGNoYW5nZSgpCisg KgorICogUHJvZHVjZXMgYSBzZXJ2ZXIgY2hhbGxlbmdlIHRvIGJlIHNlbnQgdG8gdGhlIGNsaWVu dC4gVGhlIGNhbGxiYWNrIG11c3QKKyAqIHJldHVybiBvbmUgb2YgdGhlIFBHX1NBU0xfRVhDSEFO R0VfKiB2YWx1ZXMsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZQorICogZXhjaGFuZ2UgbXVzdCBj b250aW51ZSwgaGFzIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseSwgb3IgaGFzIGZhaWxlZC4KKyAqCisg KiBJbnB1dCBwYXJhbWV0ZXJzOgorICoKKyAqICAgc3RhdGU6ICAgIHRoZSBvcGFxdWUgbWVjaGFu aXNtIHN0YXRlIHJldHVybmVkIGJ5IG1lY2guaW5pdCgpCisgKgorICogICBpbnB1dDogICAgdGhl IHJlc3BvbnNlIGRhdGEgc2VudCBieSB0aGUgY2xpZW50LCBvciBOVUxMIGlmIHRoZSBtZWNoYW5p c20gaXMKKyAqICAgICAgICAgICAgIGNsaWVudC1maXJzdCBidXQgdGhlIGNsaWVudCBkaWQgbm90 IHNlbmQgYW4gaW5pdGlhbCByZXNwb25zZS4KKyAqICAgICAgICAgICAgIChUaGlzIGNhbiBvbmx5 IGhhcHBlbiBkdXJpbmcgdGhlIGZpcnN0IG1lc3NhZ2UgZnJvbSB0aGUgY2xpZW50LikKKyAqICAg ICAgICAgICAgIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBiZSBudWxsLXRlcm1pbmF0ZWQgZm9yIHNh ZmV0eSwgYnV0IFNBU0wKKyAqICAgICAgICAgICAgIGFsbG93cyBlbWJlZGRlZCBudWxscyBpbiBy ZXNwb25zZXMsIHNvIG1lY2hhbmlzbXMgbXVzdCBiZSBjYXJlZnVsCisgKiAgICAgICAgICAgICB0 byBjaGVjayBpbnB1dGxlbi4KKyAqCisgKiAgIGlucHV0bGVuOiB0aGUgbGVuZ3RoIG9mIHRoZSBj aGFsbGVuZ2UgZGF0YSBzZW50IGJ5IHRoZSBzZXJ2ZXIsIG9yIC0xIGlmIHRoZQorICogICAgICAg ICAgICAgY2xpZW50IGRpZCBub3Qgc2VuZCBhbiBpbml0aWFsIHJlc3BvbnNlCisgKgorICogT3V0 cHV0IHBhcmFtZXRlcnMsIHRvIGJlIHNldCBieSB0aGUgY2FsbGJhY2sgZnVuY3Rpb246CisgKgor ICogICBvdXRwdXQ6ICAgIGEgcGFsbG9jJ2QgYnVmZmVyIGNvbnRhaW5pbmcgZWl0aGVyIHRoZSBz ZXJ2ZXIncyBuZXh0IGNoYWxsZW5nZQorICogICAgICAgICAgICAgIChpZiBQR19TQVNMX0VYQ0hB TkdFX0NPTlRJTlVFIGlzIHJldHVybmVkKSBvciB0aGUgc2VydmVyJ3MKKyAqICAgICAgICAgICAg ICBvdXRjb21lIGRhdGEgKGlmIFBHX1NBU0xfRVhDSEFOR0VfU1VDQ0VTUyBpcyByZXR1cm5lZCBh bmQgdGhlCisgKiAgICAgICAgICAgICAgbWVjaGFuaXNtIHJlcXVpcmVzIGRhdGEgdG8gYmUgc2Vu dCBkdXJpbmcgYSBzdWNjZXNzZnVsIG91dGNvbWUpLgorICogICAgICAgICAgICAgIFRoZSBjYWxs YmFjayBzaG91bGQgc2V0IHRoaXMgdG8gTlVMTCBpZiB0aGUgZXhjaGFuZ2UgaXMgb3ZlciBhbmQK KyAqICAgICAgICAgICAgICBubyBvdXRwdXQgc2hvdWxkIGJlIHNlbnQsIHdoaWNoIHNob3VsZCBj b3JyZXNwb25kIHRvIGVpdGhlcgorICogICAgICAgICAgICAgIFBHX1NBU0xfRVhDSEFOR0VfRkFJ TFVSRSBvciBhIFBHX1NBU0xfRVhDSEFOR0VfU1VDQ0VTUyB3aXRoIG5vCisgKiAgICAgICAgICAg ICAgb3V0Y29tZSBkYXRhLgorICoKKyAqICAgb3V0cHV0bGVuOiB0aGUgbGVuZ3RoIG9mIHRoZSBj aGFsbGVuZ2UgZGF0YS4gSWdub3JlZCBpZiAqb3V0cHV0IGlzIE5VTEwuCisgKgorICogICBsb2dk ZXRhaWw6IHNldCB0byBhbiBvcHRpb25hbCBERVRBSUwgbWVzc2FnZSB0byBiZSBwcmludGVkIHRv IHRoZSBzZXJ2ZXIKKyAqICAgICAgICAgICAgICBsb2csIHRvIGRpc2FtYmlndWF0ZSBmYWlsdXJl IG1vZGVzLiAoVGhlIGNsaWVudCB3aWxsIG9ubHkgZXZlcgorICogICAgICAgICAgICAgIHNlZSB0 aGUgc2FtZSBnZW5lcmljIGF1dGhlbnRpY2F0aW9uIGZhaWx1cmUgbWVzc2FnZS4pIElnbm9yZWQg aWYKKyAqICAgICAgICAgICAgICB0aGUgZXhjaGFuZ2UgaXMgY29tcGxldGVkIHdpdGggUEdfU0FT TF9FWENIQU5HRV9TVUNDRVNTLgorICovCit0eXBlZGVmIGludCAgICgqcGdfYmVfc2FzbF9leGNo YW5nZV9mdW5jKSh2b2lkICpzdGF0ZSwKKwkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmlucHV0LCBp bnQgaW5wdXRsZW4sCisJCQkJCQkJCQkJICBjaGFyICoqb3V0cHV0LCBpbnQgKm91dHB1dGxlbiwK KwkJCQkJCQkJCQkgIGNoYXIgKipsb2dkZXRhaWwpOworCit0eXBlZGVmIHN0cnVjdAoreworCXBn X2JlX3Nhc2xfbWVjaGFuaXNtX2Z1bmMJZ2V0X21lY2hhbmlzbXM7CisJcGdfYmVfc2FzbF9pbml0 X2Z1bmMJCWluaXQ7CisJcGdfYmVfc2FzbF9leGNoYW5nZV9mdW5jCWV4Y2hhbmdlOworfSBwZ19i ZV9zYXNsX21lY2g7CisKKyNlbmRpZiAvKiBQR19TQVNMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2xpYnBxL3NjcmFtLmggYi9zcmMvaW5jbHVkZS9saWJwcS9zY3JhbS5oCmluZGV4IDJj ODc5MTUwZGEuLjllNDU0MGJkZTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBxL3NjcmFt LmgKKysrIGIvc3JjL2luY2x1ZGUvbGlicHEvc2NyYW0uaApAQCAtMTUsMTcgKzE1LDEwIEBACiAK ICNpbmNsdWRlICJsaWIvc3RyaW5naW5mby5oIgogI2luY2x1ZGUgImxpYnBxL2xpYnBxLWJlLmgi CisjaW5jbHVkZSAibGlicHEvc2FzbC5oIgogCi0vKiBTdGF0dXMgY29kZXMgZm9yIG1lc3NhZ2Ug ZXhjaGFuZ2UgKi8KLSNkZWZpbmUgU0FTTF9FWENIQU5HRV9DT05USU5VRQkJMAotI2RlZmluZSBT QVNMX0VYQ0hBTkdFX1NVQ0NFU1MJCTEKLSNkZWZpbmUgU0FTTF9FWENIQU5HRV9GQUlMVVJFCQky Ci0KLS8qIFJvdXRpbmVzIGRlZGljYXRlZCB0byBhdXRoZW50aWNhdGlvbiAqLwotZXh0ZXJuIHZv aWQgcGdfYmVfc2NyYW1fZ2V0X21lY2hhbmlzbXMoUG9ydCAqcG9ydCwgU3RyaW5nSW5mbyBidWYp OwotZXh0ZXJuIHZvaWQgKnBnX2JlX3NjcmFtX2luaXQoUG9ydCAqcG9ydCwgY29uc3QgY2hhciAq c2VsZWN0ZWRfbWVjaCwgY29uc3QgY2hhciAqc2hhZG93X3Bhc3MpOwotZXh0ZXJuIGludAlwZ19i ZV9zY3JhbV9leGNoYW5nZSh2b2lkICpvcGFxLCBjb25zdCBjaGFyICppbnB1dCwgaW50IGlucHV0 bGVuLAotCQkJCQkJCQkgY2hhciAqKm91dHB1dCwgaW50ICpvdXRwdXRsZW4sIGNoYXIgKipsb2dk ZXRhaWwpOworLyogSW1wbGVtZW50YXRpb24gKi8KK2V4dGVybiBjb25zdCBwZ19iZV9zYXNsX21l Y2ggcGdfYmVfc2NyYW1fbWVjaDsKIAogLyogUm91dGluZXMgdG8gaGFuZGxlIGFuZCBjaGVjayBT Q1JBTS1TSEEtMjU2IHNlY3JldCAqLwogZXh0ZXJuIGNoYXIgKnBnX2JlX3NjcmFtX2J1aWxkX3Nl Y3JldChjb25zdCBjaGFyICpwYXNzd29yZCk7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1hdXRoLXNhc2wuaCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtc2FzbC5o Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjE0MDllNTEyODcKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLXNhc2wuaApAQCAtMCww ICsxLDEzMSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZmUtYXV0aC1zYXNsLmgKKyAq ICAgIERlZmluZXMgdGhlIFNBU0wgbWVjaGFuaXNtIGludGVyZmFjZSBmb3IgdGhlIGxpYnBxIGZy b250ZW5kLiBFYWNoIFNBU0wKKyAqICAgIG1lY2hhbmlzbSBkZWZpbmVzIGEgZnJvbnRlbmQgYW5k IGEgYmFja2VuZCBjYWxsYmFjayBzdHJ1Y3R1cmUuIFRoaXMgaXMgbm90CisgKiAgICBwYXJ0IG9m IHRoZSBwdWJsaWMgQVBJIGZvciBhcHBsaWNhdGlvbnMuCisgKgorICogICAgU2VlIHNyYy9pbmNs dWRlL2xpYnBxL3Nhc2wuaCBmb3IgdGhlIGJhY2tlbmQgY291bnRlcnBhcnQuCisgKgorICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhl IFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LWF1dGgtc2FzbC5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2lmbmRlZiBGRV9B VVRIX1NBU0xfSAorI2RlZmluZSBGRV9BVVRIX1NBU0xfSAorCisjaW5jbHVkZSAibGlicHEtZmUu aCIKKworLyoKKyAqIEZyb250ZW5kIG1lY2hhbmlzbSBBUEkKKyAqCisgKiBUbyBpbXBsZW1lbnQg YSBmcm9udGVuZCBtZWNoYW5pc20sIGRlY2xhcmUgYSBwZ19iZV9zYXNsX21lY2ggc3RydWN0IHdp dGgKKyAqIGFwcHJvcHJpYXRlIGNhbGxiYWNrIGltcGxlbWVudGF0aW9ucywgdGhlbiBob29rIGl0 IGludG8gY29ubi0+c2FzbCBkdXJpbmcKKyAqIHBnX1NBU0xfaW5pdCgpJ3MgbWVjaGFuaXNtIG5l Z290aWF0aW9uLgorICovCisKKy8qCisgKiBtZWNoLmluaXQoKQorICoKKyAqIEluaXRpYWxpemVz IG1lY2hhbmlzbS1zcGVjaWZpYyBzdGF0ZSBmb3IgYSBjb25uZWN0aW9uLiBUaGlzIGNhbGxiYWNr IG11c3QKKyAqIHJldHVybiBhIHBvaW50ZXIgdG8gaXRzIGFsbG9jYXRlZCBzdGF0ZSwgd2hpY2gg d2lsbCBiZSBwYXNzZWQgYXMtaXMgYXMgdGhlCisgKiBmaXJzdCBhcmd1bWVudCB0byB0aGUgb3Ro ZXIgY2FsbGJhY2tzLiBtZWNoLmZyZWUoKSB3aWxsIGJlIGNhbGxlZCB0byByZWxlYXNlCisgKiBh bnkgc3RhdGUgcmVzb3VyY2VzLgorICoKKyAqIElmIHN0YXRlIGFsbG9jYXRpb24gZmFpbHMsIHRo ZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgcmV0dXJuIE5VTEwgdG8gZmFpbCB0aGUKKyAqIGF1dGhl bnRpY2F0aW9uIGV4Y2hhbmdlLgorICoKKyAqIElucHV0IHBhcmFtZXRlcnM6CisgKgorICogICBj b25uOiAgICAgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlcgorICoKKyAqICAgcGFzc3dvcmQ6 IHRoZSB1c2VyJ3Mgc3VwcGxpZWQgcGFzc3dvcmQgZm9yIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24K KyAqCisgKiAgIG1lY2g6ICAgICB0aGUgbWVjaGFuaXNtIG5hbWUgaW4gdXNlLCBmb3IgaW1wbGVt ZW50YXRpb25zIHRoYXQgbWF5IGFkdmVydGlzZQorICogICAgICAgICAgICAgbW9yZSB0aGFuIG9u ZSBuYW1lIChzdWNoIGFzICotUExVUyB2YXJpYW50cykKKyAqLwordHlwZWRlZiB2b2lkICooKnBn X2ZlX3Nhc2xfaW5pdF9mdW5jKShQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKnBhc3N3b3JkLAor CQkJCQkJCQkJICBjb25zdCBjaGFyICptZWNoKTsKKworLyoKKyAqIG1lY2guZXhjaGFuZ2UoKQor ICoKKyAqIFByb2R1Y2VzIGEgY2xpZW50IHJlc3BvbnNlIHRvIGEgc2VydmVyIGNoYWxsZW5nZS4g QXMgYSBzcGVjaWFsIGNhc2UgZm9yCisgKiBjbGllbnQtZmlyc3QgU0FTTCBtZWNoYW5pc21zLCBl eGNoYW5nZSgpIGlzIGNhbGxlZCB3aXRoIGEgTlVMTCBzZXJ2ZXIKKyAqIHJlc3BvbnNlIG9uY2Ug YXQgdGhlIHN0YXJ0IG9mIHRoZSBhdXRoZW50aWNhdGlvbiBleGNoYW5nZSB0byBnZW5lcmF0ZSBh bgorICogaW5pdGlhbCByZXNwb25zZS4KKyAqCisgKiBJbnB1dCBwYXJhbWV0ZXJzOgorICoKKyAq ICAgc3RhdGU6ICAgIHRoZSBvcGFxdWUgbWVjaGFuaXNtIHN0YXRlIHJldHVybmVkIGJ5IG1lY2gu aW5pdCgpCisgKgorICogICBpbnB1dDogICAgdGhlIGNoYWxsZW5nZSBkYXRhIHNlbnQgYnkgdGhl IHNlcnZlciwgb3IgTlVMTCB3aGVuIGdlbmVyYXRpbmcgYQorICogICAgICAgICAgICAgY2xpZW50 LWZpcnN0IGluaXRpYWwgcmVzcG9uc2UgKHRoYXQgaXMsIHdoZW4gdGhlIHNlcnZlciBleHBlY3Rz CisgKiAgICAgICAgICAgICB0aGUgY2xpZW50IHRvIHNlbmQgYSBtZXNzYWdlIHRvIHN0YXJ0IHRo ZSBleGNoYW5nZSkuIFRoaXMgaXMKKyAqICAgICAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgbnVs bC10ZXJtaW5hdGVkIGZvciBzYWZldHksIGJ1dCBTQVNMIGFsbG93cworICogICAgICAgICAgICAg ZW1iZWRkZWQgbnVsbHMgaW4gY2hhbGxlbmdlcywgc28gbWVjaGFuaXNtcyBtdXN0IGJlIGNhcmVm dWwgdG8KKyAqICAgICAgICAgICAgIGNoZWNrIGlucHV0bGVuLgorICoKKyAqICAgaW5wdXRsZW46 IHRoZSBsZW5ndGggb2YgdGhlIGNoYWxsZW5nZSBkYXRhIHNlbnQgYnkgdGhlIHNlcnZlciwgb3Ig LTEKKyAqICAgICAgICAgICAgIGR1cmluZyBjbGllbnQtZmlyc3QgaW5pdGlhbCByZXNwb25zZSBn ZW5lcmF0aW9uLgorICoKKyAqIE91dHB1dCBwYXJhbWV0ZXJzLCB0byBiZSBzZXQgYnkgdGhlIGNh bGxiYWNrIGZ1bmN0aW9uOgorICoKKyAqICAgb3V0cHV0OiAgICBhIG1hbGxvYydkIGJ1ZmZlciBj b250YWluaW5nIHRoZSBjbGllbnQncyByZXNwb25zZSB0byB0aGUKKyAqICAgICAgICAgICAgICBz ZXJ2ZXIsIG9yIE5VTEwgaWYgdGhlIGV4Y2hhbmdlIHNob3VsZCBiZSBhYm9ydGVkLiAoKnN1Y2Nl c3MKKyAqICAgICAgICAgICAgICBzaG91bGQgYmUgc2V0IHRvIGZhbHNlIGluIHRoZSBsYXR0ZXIg Y2FzZS4pCisgKgorICogICBvdXRwdXRsZW46IHRoZSBsZW5ndGggb2YgdGhlIGNsaWVudCByZXNw b25zZSBidWZmZXIsIG9yIHplcm8gaWYgbm8gZGF0YQorICogICAgICAgICAgICAgIHNob3VsZCBi ZSBzZW50IGR1ZSB0byBhbiBleGNoYW5nZSBmYWlsdXJlCisgKgorICogICBkb25lOiAgICAgIHNl dCB0byB0cnVlIGlmIHRoZSBTQVNMIGV4Y2hhbmdlIHNob3VsZCBub3QgY29udGludWUsIGJlY2F1 c2UKKyAqICAgICAgICAgICAgICB0aGUgZXhjaGFuZ2UgaXMgZWl0aGVyIGNvbXBsZXRlIG9yIGZh aWxlZAorICoKKyAqICAgc3VjY2VzczogICBzZXQgdG8gdHJ1ZSBpZiB0aGUgU0FTTCBleGNoYW5n ZSBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LiBJZ25vcmVkCisgKiAgICAgICAgICAgICAgaWYgKmRv bmUgaXMgZmFsc2UuCisgKi8KK3R5cGVkZWYgdm9pZCAgKCpwZ19mZV9zYXNsX2V4Y2hhbmdlX2Z1 bmMpKHZvaWQgKnN0YXRlLAorCQkJCQkJCQkJCSAgY2hhciAqaW5wdXQsIGludCBpbnB1dGxlbiwK KwkJCQkJCQkJCQkgIGNoYXIgKipvdXRwdXQsIGludCAqb3V0cHV0bGVuLAorCQkJCQkJCQkJCSAg Ym9vbCAqZG9uZSwgYm9vbCAqc3VjY2Vzcyk7CisKKy8qCisgKiBtZWNoLmNoYW5uZWxfYm91bmQo KQorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiBoYXMgYW4gZXN0YWJsaXNo ZWQgY2hhbm5lbCBiaW5kaW5nLiBBCisgKiBtZWNoYW5pc20gaW1wbGVtZW50YXRpb24gbXVzdCBl bnN1cmUgdGhhdCBhIFNBU0wgZXhjaGFuZ2UgaGFzIGFjdHVhbGx5IGJlZW4KKyAqIGNvbXBsZXRl ZCwgaW4gYWRkaXRpb24gdG8gY2hlY2tpbmcgdGhhdCBjaGFubmVsIGJpbmRpbmcgaXMgaW4gdXNl LgorICoKKyAqIE1lY2hhbmlzbXMgdGhhdCBkbyBub3QgaW1wbGVtZW50IGNoYW5uZWwgYmluZGlu ZyBtYXkgc2ltcGx5IHJldHVybiBmYWxzZS4KKyAqCisgKiBJbnB1dCBwYXJhbWV0ZXJzOgorICoK KyAqICAgc3RhdGU6ICAgIHRoZSBvcGFxdWUgbWVjaGFuaXNtIHN0YXRlIHJldHVybmVkIGJ5IG1l Y2guaW5pdCgpCisgKi8KK3R5cGVkZWYgYm9vbCAgKCpwZ19mZV9zYXNsX2NoYW5uZWxfYm91bmRf ZnVuYykodm9pZCAqKTsKKworLyoKKyAqIG1lY2guZnJlZSgpCisgKgorICogRnJlZXMgdGhlIHN0 YXRlIGFsbG9jYXRlZCBieSBtZWNoLmluaXQoKS4gVGhpcyBpcyBjYWxsZWQgd2hlbiB0aGUgY29u bmVjdGlvbgorICogaXMgZHJvcHBlZCwgbm90IHdoZW4gdGhlIGV4Y2hhbmdlIGlzIGNvbXBsZXRl ZC4KKyAqCisgKiBJbnB1dCBwYXJhbWV0ZXJzOgorICoKKyAqICAgc3RhdGU6ICAgIHRoZSBvcGFx dWUgbWVjaGFuaXNtIHN0YXRlIHJldHVybmVkIGJ5IG1lY2guaW5pdCgpCisgKi8KK3R5cGVkZWYg dm9pZCAgKCpwZ19mZV9zYXNsX2ZyZWVfZnVuYykodm9pZCAqKTsKKwordHlwZWRlZiBzdHJ1Y3QK K3sKKwlwZ19mZV9zYXNsX2luaXRfZnVuYwkJCWluaXQ7CisJcGdfZmVfc2FzbF9leGNoYW5nZV9m dW5jCQlleGNoYW5nZTsKKwlwZ19mZV9zYXNsX2NoYW5uZWxfYm91bmRfZnVuYwljaGFubmVsX2Jv dW5kOworCXBnX2ZlX3Nhc2xfZnJlZV9mdW5jCQkJZnJlZTsKK30gcGdfZmVfc2FzbF9tZWNoOwor CisjZW5kaWYgLyogRkVfQVVUSF9TQVNMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL2ZlLWF1dGgtc2NyYW0uYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtc2Ny YW0uYwppbmRleCA1ODgxMzg2ZTM3Li41MTVlZjY2ZjM3IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1hdXRoLXNjcmFtLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt YXV0aC1zY3JhbS5jCkBAIC0yMSw2ICsyMSwyMiBAQAogI2luY2x1ZGUgImZlLWF1dGguaCIKIAog CisvKiBUaGUgZXhwb3J0ZWQgU0NSQU0gY2FsbGJhY2sgbWVjaGFuaXNtLiAqLworc3RhdGljIHZv aWQgKnNjcmFtX2luaXQoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpwYXNzd29yZCwKKwkJCQkJ CWNvbnN0IGNoYXIgKnNhc2xfbWVjaGFuaXNtKTsKK3N0YXRpYyB2b2lkIHNjcmFtX2V4Y2hhbmdl KHZvaWQgKm9wYXEsIGNoYXIgKmlucHV0LCBpbnQgaW5wdXRsZW4sCisJCQkJCQkgICBjaGFyICoq b3V0cHV0LCBpbnQgKm91dHB1dGxlbiwKKwkJCQkJCSAgIGJvb2wgKmRvbmUsIGJvb2wgKnN1Y2Nl c3MpOworc3RhdGljIGJvb2wgc2NyYW1fY2hhbm5lbF9ib3VuZCh2b2lkICpvcGFxKTsKK3N0YXRp YyB2b2lkIHNjcmFtX2ZyZWUodm9pZCAqb3BhcSk7CisKK2NvbnN0IHBnX2ZlX3Nhc2xfbWVjaCBw Z19zY3JhbV9tZWNoID0geworCXNjcmFtX2luaXQsCisJc2NyYW1fZXhjaGFuZ2UsCisJc2NyYW1f Y2hhbm5lbF9ib3VuZCwKKwlzY3JhbV9mcmVlLAorfTsKKwogLyoKICAqIFN0YXR1cyBvZiBleGNo YW5nZSBtZXNzYWdlcyB1c2VkIGZvciBTQ1JBTSBhdXRoZW50aWNhdGlvbiB2aWEgdGhlCiAgKiBT QVNMIHByb3RvY29sLgpAQCAtNzIsMTAgKzg4LDEwIEBAIHN0YXRpYyBib29sIGNhbGN1bGF0ZV9j bGllbnRfcHJvb2YoZmVfc2NyYW1fc3RhdGUgKnN0YXRlLAogLyoKICAqIEluaXRpYWxpemUgU0NS QU0gZXhjaGFuZ2Ugc3RhdHVzLgogICovCi12b2lkICoKLXBnX2ZlX3NjcmFtX2luaXQoUEdjb25u ICpjb25uLAotCQkJCSBjb25zdCBjaGFyICpwYXNzd29yZCwKLQkJCQkgY29uc3QgY2hhciAqc2Fz bF9tZWNoYW5pc20pCitzdGF0aWMgdm9pZCAqCitzY3JhbV9pbml0KFBHY29ubiAqY29ubiwKKwkJ ICAgY29uc3QgY2hhciAqcGFzc3dvcmQsCisJCSAgIGNvbnN0IGNoYXIgKnNhc2xfbWVjaGFuaXNt KQogewogCWZlX3NjcmFtX3N0YXRlICpzdGF0ZTsKIAljaGFyCSAgICpwcmVwX3Bhc3N3b3JkOwpA QCAtMTI4LDggKzE0NCw4IEBAIHBnX2ZlX3NjcmFtX2luaXQoUEdjb25uICpjb25uLAogICogTm90 ZSB0aGF0IHRoZSBjYWxsZXIgbXVzdCBhbHNvIGVuc3VyZSB0aGF0IHRoZSBleGNoYW5nZSB3YXMg YWN0dWFsbHkKICAqIHN1Y2Nlc3NmdWwuCiAgKi8KLWJvb2wKLXBnX2ZlX3NjcmFtX2NoYW5uZWxf Ym91bmQodm9pZCAqb3BhcSkKK3N0YXRpYyBib29sCitzY3JhbV9jaGFubmVsX2JvdW5kKHZvaWQg Km9wYXEpCiB7CiAJZmVfc2NyYW1fc3RhdGUgKnN0YXRlID0gKGZlX3NjcmFtX3N0YXRlICopIG9w YXE7CiAKQEAgLTE1Miw4ICsxNjgsOCBAQCBwZ19mZV9zY3JhbV9jaGFubmVsX2JvdW5kKHZvaWQg Km9wYXEpCiAvKgogICogRnJlZSBTQ1JBTSBleGNoYW5nZSBzdGF0dXMKICAqLwotdm9pZAotcGdf ZmVfc2NyYW1fZnJlZSh2b2lkICpvcGFxKQorc3RhdGljIHZvaWQKK3NjcmFtX2ZyZWUodm9pZCAq b3BhcSkKIHsKIAlmZV9zY3JhbV9zdGF0ZSAqc3RhdGUgPSAoZmVfc2NyYW1fc3RhdGUgKikgb3Bh cTsKIApAQCAtMTg4LDEwICsyMDQsMTAgQEAgcGdfZmVfc2NyYW1fZnJlZSh2b2lkICpvcGFxKQog LyoKICAqIEV4Y2hhbmdlIGEgU0NSQU0gbWVzc2FnZSB3aXRoIGJhY2tlbmQuCiAgKi8KLXZvaWQK LXBnX2ZlX3NjcmFtX2V4Y2hhbmdlKHZvaWQgKm9wYXEsIGNoYXIgKmlucHV0LCBpbnQgaW5wdXRs ZW4sCi0JCQkJCSBjaGFyICoqb3V0cHV0LCBpbnQgKm91dHB1dGxlbiwKLQkJCQkJIGJvb2wgKmRv bmUsIGJvb2wgKnN1Y2Nlc3MpCitzdGF0aWMgdm9pZAorc2NyYW1fZXhjaGFuZ2Uodm9pZCAqb3Bh cSwgY2hhciAqaW5wdXQsIGludCBpbnB1dGxlbiwKKwkJCSAgIGNoYXIgKipvdXRwdXQsIGludCAq b3V0cHV0bGVuLAorCQkJICAgYm9vbCAqZG9uZSwgYm9vbCAqc3VjY2VzcykKIHsKIAlmZV9zY3Jh bV9zdGF0ZSAqc3RhdGUgPSAoZmVfc2NyYW1fc3RhdGUgKikgb3BhcTsKIAlQR2Nvbm4JICAgKmNv bm4gPSBzdGF0ZS0+Y29ubjsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1 dGguYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGguYwppbmRleCBlODA2MjY0N2U2Li5m Mjk5ZTcyZTdlIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLmMKKysr IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC5jCkBAIC00MSw2ICs0MSw3IEBACiAjaW5j bHVkZSAiY29tbW9uL21kNS5oIgogI2luY2x1ZGUgImNvbW1vbi9zY3JhbS1jb21tb24uaCIKICNp bmNsdWRlICJmZS1hdXRoLmgiCisjaW5jbHVkZSAiZmUtYXV0aC1zYXNsLmgiCiAjaW5jbHVkZSAi bGlicHEtZmUuaCIKIAogI2lmZGVmIEVOQUJMRV9HU1MKQEAgLTQ4Miw3ICs0ODMsMTAgQEAgcGdf U0FTTF9pbml0KFBHY29ubiAqY29ubiwgaW50IHBheWxvYWRsZW4pCiAJCQkJICogY2hhbm5lbF9i aW5kaW5nIGlzIG5vdCBkaXNhYmxlZC4KIAkJCQkgKi8KIAkJCQlpZiAoY29ubi0+Y2hhbm5lbF9i aW5kaW5nWzBdICE9ICdkJykJLyogZGlzYWJsZSAqLworCQkJCXsKIAkJCQkJc2VsZWN0ZWRfbWVj aGFuaXNtID0gU0NSQU1fU0hBXzI1Nl9QTFVTX05BTUU7CisJCQkJCWNvbm4tPnNhc2wgPSAmcGdf c2NyYW1fbWVjaDsKKwkJCQl9CiAjZWxzZQogCQkJCS8qCiAJCQkJICogVGhlIGNsaWVudCBkb2Vz IG5vdCBzdXBwb3J0IGNoYW5uZWwgYmluZGluZy4gIElmIGl0IGlzCkBAIC01MTYsNyArNTIwLDEw IEBAIHBnX1NBU0xfaW5pdChQR2Nvbm4gKmNvbm4sIGludCBwYXlsb2FkbGVuKQogCQl9CiAJCWVs c2UgaWYgKHN0cmNtcChtZWNoYW5pc21fYnVmLmRhdGEsIFNDUkFNX1NIQV8yNTZfTkFNRSkgPT0g MCAmJgogCQkJCSAhc2VsZWN0ZWRfbWVjaGFuaXNtKQorCQl7CiAJCQlzZWxlY3RlZF9tZWNoYW5p c20gPSBTQ1JBTV9TSEFfMjU2X05BTUU7CisJCQljb25uLT5zYXNsID0gJnBnX3NjcmFtX21lY2g7 CisJCX0KIAl9CiAKIAlpZiAoIXNlbGVjdGVkX21lY2hhbmlzbSkKQEAgLTU1NSwyMCArNTYyLDIy IEBAIHBnX1NBU0xfaW5pdChQR2Nvbm4gKmNvbm4sIGludCBwYXlsb2FkbGVuKQogCQlnb3RvIGVy cm9yOwogCX0KIAorCUFzc2VydChjb25uLT5zYXNsKTsKKwogCS8qCiAJICogSW5pdGlhbGl6ZSB0 aGUgU0FTTCBzdGF0ZSBpbmZvcm1hdGlvbiB3aXRoIGFsbCB0aGUgaW5mb3JtYXRpb24gZ2F0aGVy ZWQKIAkgKiBkdXJpbmcgdGhlIGluaXRpYWwgZXhjaGFuZ2UuCiAJICoKIAkgKiBOb3RlOiBPbmx5 IHRscy11bmlxdWUgaXMgc3VwcG9ydGVkIGZvciB0aGUgbW9tZW50LgogCSAqLwotCWNvbm4tPnNh c2xfc3RhdGUgPSBwZ19mZV9zY3JhbV9pbml0KGNvbm4sCisJY29ubi0+c2FzbF9zdGF0ZSA9IGNv bm4tPnNhc2wtPmluaXQoY29ubiwKIAkJCQkJCQkJCQlwYXNzd29yZCwKIAkJCQkJCQkJCQlzZWxl Y3RlZF9tZWNoYW5pc20pOwogCWlmICghY29ubi0+c2FzbF9zdGF0ZSkKIAkJZ290byBvb21fZXJy b3I7CiAKIAkvKiBHZXQgdGhlIG1lY2hhbmlzbS1zcGVjaWZpYyBJbml0aWFsIENsaWVudCBSZXNw b25zZSwgaWYgYW55ICovCi0JcGdfZmVfc2NyYW1fZXhjaGFuZ2UoY29ubi0+c2FzbF9zdGF0ZSwK Kwljb25uLT5zYXNsLT5leGNoYW5nZShjb25uLT5zYXNsX3N0YXRlLAogCQkJCQkJIE5VTEwsIC0x LAogCQkJCQkJICZpbml0aWFscmVzcG9uc2UsICZpbml0aWFscmVzcG9uc2VsZW4sCiAJCQkJCQkg JmRvbmUsICZzdWNjZXNzKTsKQEAgLTY0OSw3ICs2NTgsNyBAQCBwZ19TQVNMX2NvbnRpbnVlKFBH Y29ubiAqY29ubiwgaW50IHBheWxvYWRsZW4sIGJvb2wgZmluYWwpCiAJLyogRm9yIHNhZmV0eSBh bmQgY29udmVuaWVuY2UsIGVuc3VyZSB0aGUgYnVmZmVyIGlzIE5VTEwtdGVybWluYXRlZC4gKi8K IAljaGFsbGVuZ2VbcGF5bG9hZGxlbl0gPSAnXDAnOwogCi0JcGdfZmVfc2NyYW1fZXhjaGFuZ2Uo Y29ubi0+c2FzbF9zdGF0ZSwKKwljb25uLT5zYXNsLT5leGNoYW5nZShjb25uLT5zYXNsX3N0YXRl LAogCQkJCQkJIGNoYWxsZW5nZSwgcGF5bG9hZGxlbiwKIAkJCQkJCSAmb3V0cHV0LCAmb3V0cHV0 bGVuLAogCQkJCQkJICZkb25lLCAmc3VjY2Vzcyk7CkBAIC02NjQsNiArNjczLDExIEBAIHBnX1NB U0xfY29udGludWUoUEdjb25uICpjb25uLCBpbnQgcGF5bG9hZGxlbiwgYm9vbCBmaW5hbCkKIAkJ CQkJCQkgbGlicHFfZ2V0dGV4dCgiQXV0aGVudGljYXRpb25TQVNMRmluYWwgcmVjZWl2ZWQgZnJv bSBzZXJ2ZXIsIGJ1dCBTQVNMIGF1dGhlbnRpY2F0aW9uIHdhcyBub3QgY29tcGxldGVkXG4iKSk7 CiAJCXJldHVybiBTVEFUVVNfRVJST1I7CiAJfQorCS8qCisJICogVE9ETyBTQVNMIHJlcXVpcmVz IHVzIHRvIGFjY29tb2RhdGUgemVyby1sZW5ndGggcmVzcG9uc2VzLgorCSAqIFRPRE8gaXMgaXQg bGVnYWwgZm9yIGEgY2xpZW50IG5vdCB0byBzZW5kIGEgcmVzcG9uc2UgdG8gYSBzZXJ2ZXIKKwkg KiBjaGFsbGVuZ2UsIGlmIHRoZSBleGNoYW5nZSBpc24ndCBiZWluZyBhYm9ydGVkPworCSAqLwog CWlmIChvdXRwdXRsZW4gIT0gMCkKIAl7CiAJCS8qCkBAIC04MzAsNyArODQ0LDcgQEAgY2hlY2tf ZXhwZWN0ZWRfYXJlcShBdXRoUmVxdWVzdCBhcmVxLCBQR2Nvbm4gKmNvbm4pCiAJCQljYXNlIEFV VEhfUkVRX1NBU0xfRklOOgogCQkJCWJyZWFrOwogCQkJY2FzZSBBVVRIX1JFUV9PSzoKLQkJCQlp ZiAoIXBnX2ZlX3NjcmFtX2NoYW5uZWxfYm91bmQoY29ubi0+c2FzbF9zdGF0ZSkpCisJCQkJaWYg KCFjb25uLT5zYXNsIHx8ICFjb25uLT5zYXNsLT5jaGFubmVsX2JvdW5kKGNvbm4tPnNhc2xfc3Rh dGUpKQogCQkJCXsKIAkJCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNvbm4tPmVycm9yTWVzc2Fn ZSwKIAkJCQkJCQkJCQkgbGlicHFfZ2V0dGV4dCgiY2hhbm5lbCBiaW5kaW5nIHJlcXVpcmVkLCBi dXQgc2VydmVyIGF1dGhlbnRpY2F0ZWQgY2xpZW50IHdpdGhvdXQgY2hhbm5lbCBiaW5kaW5nXG4i KSk7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLmggYi9zcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS1hdXRoLmgKaW5kZXggNzg3N2RjYmQwOS4uNjM5Mjc0ODBlZSAxMDA2 NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC5oCisrKyBiL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWF1dGguaApAQCAtMjIsMTUgKzIyLDggQEAKIGV4dGVybiBpbnQJcGdfZmVf c2VuZGF1dGgoQXV0aFJlcXVlc3QgYXJlcSwgaW50IHBheWxvYWRsZW4sIFBHY29ubiAqY29ubik7 CiBleHRlcm4gY2hhciAqcGdfZmVfZ2V0YXV0aG5hbWUoUFFFeHBCdWZmZXIgZXJyb3JNZXNzYWdl KTsKIAotLyogUHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIGZlLWF1dGgtc2NyYW0uYyAqLwot ZXh0ZXJuIHZvaWQgKnBnX2ZlX3NjcmFtX2luaXQoUEdjb25uICpjb25uLAotCQkJCQkJCSAgY29u c3QgY2hhciAqcGFzc3dvcmQsCi0JCQkJCQkJICBjb25zdCBjaGFyICpzYXNsX21lY2hhbmlzbSk7 Ci1leHRlcm4gYm9vbCBwZ19mZV9zY3JhbV9jaGFubmVsX2JvdW5kKHZvaWQgKm9wYXEpOwotZXh0 ZXJuIHZvaWQgcGdfZmVfc2NyYW1fZnJlZSh2b2lkICpvcGFxKTsKLWV4dGVybiB2b2lkIHBnX2Zl X3NjcmFtX2V4Y2hhbmdlKHZvaWQgKm9wYXEsIGNoYXIgKmlucHV0LCBpbnQgaW5wdXRsZW4sCi0J CQkJCQkJCSBjaGFyICoqb3V0cHV0LCBpbnQgKm91dHB1dGxlbiwKLQkJCQkJCQkJIGJvb2wgKmRv bmUsIGJvb2wgKnN1Y2Nlc3MpOworLyogTWVjaGFuaXNtcyBpbiBmZS1hdXRoLXNjcmFtLmMgKi8K K2V4dGVybiBjb25zdCBwZ19mZV9zYXNsX21lY2ggcGdfc2NyYW1fbWVjaDsKIGV4dGVybiBjaGFy ICpwZ19mZV9zY3JhbV9idWlsZF9zZWNyZXQoY29uc3QgY2hhciAqcGFzc3dvcmQpOwogCiAjZW5k aWYJCQkJCQkJLyogRkVfQVVUSF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1jb25uZWN0LmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMKaW5kZXgg ZmM2NWU0OTBlZi4uZTk1MGI0MTM3NCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEv ZmUtY29ubmVjdC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3QuYwpAQCAt NTE2LDExICs1MTYsNyBAQCBwcURyb3BDb25uZWN0aW9uKFBHY29ubiAqY29ubiwgYm9vbCBmbHVz aElucHV0KQogI2VuZGlmCiAJaWYgKGNvbm4tPnNhc2xfc3RhdGUpCiAJewotCQkvKgotCQkgKiBY WFg6IGlmIHN1cHBvcnQgZm9yIG1vcmUgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcyBpcyBhZGRl ZCwgdGhpcwotCQkgKiBuZWVkcyB0byBjYWxsIHRoZSByaWdodCAnZnJlZScgZnVuY3Rpb24uCi0J CSAqLwotCQlwZ19mZV9zY3JhbV9mcmVlKGNvbm4tPnNhc2xfc3RhdGUpOworCQljb25uLT5zYXNs LT5mcmVlKGNvbm4tPnNhc2xfc3RhdGUpOwogCQljb25uLT5zYXNsX3N0YXRlID0gTlVMTDsKIAl9 CiB9CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaCBiL3NyYy9p bnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCmluZGV4IDZiN2ZkMmMyNjcuLmU5ZjIxNGI2MWIg MTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCisrKyBiL3NyYy9p bnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAi Z2V0YWRkcmluZm8uaCIKICNpbmNsdWRlICJsaWJwcS9wcWNvbW0uaCIKIC8qIGluY2x1ZGUgc3R1 ZmYgZm91bmQgaW4gZmUgb25seSAqLworI2luY2x1ZGUgImZlLWF1dGgtc2FzbC5oIgogI2luY2x1 ZGUgInBxZXhwYnVmZmVyLmgiCiAKICNpZmRlZiBFTkFCTEVfR1NTCkBAIC01MDAsNiArNTAxLDcg QEAgc3RydWN0IHBnX2Nvbm4KIAlQR3Jlc3VsdCAgICpuZXh0X3Jlc3VsdDsJLyogbmV4dCByZXN1 bHQgKHVzZWQgaW4gc2luZ2xlLXJvdyBtb2RlKSAqLwogCiAJLyogQXNzb3J0ZWQgc3RhdGUgZm9y IFNBU0wsIFNTTCwgR1NTLCBldGMgKi8KKwljb25zdCBwZ19mZV9zYXNsX21lY2ggKnNhc2w7CiAJ dm9pZAkgICAqc2FzbF9zdGF0ZTsKIAogCS8qIFNTTCBzdHJ1Y3R1cmVzICovCi0tIAoyLjI1LjEK Cg== --_004_0907fda41fb40b23e2cbdf7eb05a8d61dd5307b3camelvmwarecom_ Content-Type: text/x-patch; name="v3-0002-auth-pull-backend-SASL-exchange-into-its-own-file.patch" Content-Description: v3-0002-auth-pull-backend-SASL-exchange-into-its-own-file.patch Content-Disposition: attachment; filename="v3-0002-auth-pull-backend-SASL-exchange-into-its-own-file.patch"; size=15471; creation-date="Wed, 30 Jun 2021 22:30:12 GMT"; modification-date="Wed, 30 Jun 2021 22:30:12 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSBmYmQxN2M3Yjc3MjUxZWQ2NmVlZDAwZDgwZWZjNThhYmI1ZWViODRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKYWNvYiBDaGFtcGlvbiA8cGNoYW1waW9uQHZtd2FyZS5jb20+ CkRhdGU6IFdlZCwgMzAgSnVuIDIwMjEgMDk6Mjc6NDAgLTA3MDAKU3ViamVjdDogW1BBVENIIHYz IDIvMl0gYXV0aDogcHVsbCBiYWNrZW5kIFNBU0wgZXhjaGFuZ2UgaW50byBpdHMgb3duIGZpbGUK ClRoaXMgY29kZSBtb3Rpb24gaXMgcHVsbGVkIGludG8gYSBzZXBhcmF0ZSBjb21taXQgdG8gZWFz ZSByZXZpZXcuCgpNb3ZlIFNBU0xfZXhjaGFuZ2UgdG8gaXRzIG93biBmaWxlIGFuZCByZW5hbWUg aXQgdG8gQ2hlY2tTQVNMQXV0aCwgd2hpY2gKaXMgbm93IGNhbGxlZCBkaXJlY3RseSBmcm9tIENs aWVudEF1dGhlbnRpY2F0aW9uKCkuIFRoaXMgcmVwbGFjZXMgdGhlCkNoZWNrU0NSQU1BdXRoKCkg YW5kIENoZWNrT0F1dGhCZWFyZXIoKSB3cmFwcGVycy4KLS0tCiBzcmMvYmFja2VuZC9saWJwcS9N YWtlZmlsZSAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9saWJwcS9hdXRoLXNhc2wuYyB8IDE4NyAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9saWJwcS9hdXRo LmMgICAgICB8IDE3OCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1 ZGUvbGlicHEvYXV0aC5oICAgICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvbGlicHEvc2FzbC5oICAg ICAgfCAgMTMgKysrCiA1IGZpbGVzIGNoYW5nZWQsIDIwNyBpbnNlcnRpb25zKCspLCAxNzQgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvbGlicHEvYXV0aC1zYXNs LmMKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9NYWtlZmlsZSBiL3NyYy9iYWNrZW5k L2xpYnBxL01ha2VmaWxlCmluZGV4IDhkMWQxNmIwZmMuLjZkMzg1ZmQ2YTQgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2xpYnBxL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL01ha2Vm aWxlCkBAIC0xNSw2ICsxNSw3IEBAIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmls ZS5nbG9iYWwKICMgYmUtZnNzdHVicyBpcyBoZXJlIGZvciBoaXN0b3JpY2FsIHJlYXNvbnMsIHBy b2JhYmx5IGJlbG9uZ3MgZWxzZXdoZXJlCiAKIE9CSlMgPSBcCisJYXV0aC1zYXNsLm8gXAogCWF1 dGgtc2NyYW0ubyBcCiAJYXV0aC5vIFwKIAliZS1mc3N0dWJzLm8gXApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvbGlicHEvYXV0aC1zYXNsLmMgYi9zcmMvYmFja2VuZC9saWJwcS9hdXRoLXNhc2wu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5iN2NkYjJlY2Y2Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC1zYXNsLmMKQEAgLTAsMCArMSwx ODcgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGF1dGgtc2FzbC5jCisgKgkgIFJvdXRp bmVzIHRvIGhhbmRsZSBuZXR3b3JrIGF1dGhlbnRpY2F0aW9uIHZpYSBTQVNMCisgKgorICogUG9y dGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjEsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3Bt ZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhl IFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJ ICBzcmMvYmFja2VuZC9saWJwcS9hdXRoLXNhc2wuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAibGlicHEvYXV0aC5oIgor I2luY2x1ZGUgImxpYnBxL2xpYnBxLmgiCisjaW5jbHVkZSAibGlicHEvcHFmb3JtYXQuaCIKKyNp bmNsdWRlICJsaWJwcS9zYXNsLmgiCisKKy8qCisgKiBQZXJmb3JtIGEgU0FTTCBleGNoYW5nZSB3 aXRoIGEgbGlicHEgY2xpZW50LCB1c2luZyBhIHNwZWNpZmljIG1lY2hhbmlzbQorICogaW1wbGVt ZW50YXRpb24uCisgKgorICogc2hhZG93X3Bhc3MgaXMgYW4gb3B0aW9uYWwgcG9pbnRlciB0byB0 aGUgc2hhZG93IGVudHJ5IGZvciB0aGUgY2xpZW50J3MKKyAqIHByZXNlbnRlZCB1c2VyIG5hbWUu IEZvciBtZWNoYW5pc21zIHRoYXQgdXNlIHNoYWRvd2VkIHBhc3N3b3JkcywgYSBOVUxMCisgKiBw b2ludGVyIGhlcmUgbWVhbnMgdGhhdCBhbiBlbnRyeSBjb3VsZCBub3QgYmUgZm91bmQgZm9yIHRo ZSB1c2VyIChvciB0aGUgdXNlcgorICogZG9lcyBub3QgZXhpc3QpLCBhbmQgdGhlIG1lY2hhbmlz bSBzaG91bGQgZmFpbCB0aGUgYXV0aGVudGljYXRpb24gZXhjaGFuZ2UuCisgKgorICogTWVjaGFu aXNtcyBtdXN0IHRha2UgY2FyZSBub3QgdG8gcmV2ZWFsIHRvIHRoZSBjbGllbnQgdGhhdCBhIHVz ZXIgZW50cnkgZG9lcworICogbm90IGV4aXN0OyBpZGVhbGx5LCB0aGUgZXh0ZXJuYWwgZmFpbHVy ZSBtb2RlIGlzIGlkZW50aWNhbCB0byB0aGF0IG9mIGFuCisgKiBpbmNvcnJlY3QgcGFzc3dvcmQu IE1lY2hhbmlzbXMgbWF5IGluc3RlYWQgdXNlIHRoZSBsb2dkZXRhaWwgb3V0cHV0IHBhcmFtZXRl cgorICogdG8gaW50ZXJuYWxseSBkaWZmZXJlbnRpYXRlIGJldHdlZW4gZmFpbHVyZSBjYXNlcyBh bmQgYXNzaXN0IGRlYnVnZ2luZyBieSB0aGUKKyAqIHNlcnZlciBhZG1pbi4KKyAqCisgKiBBIG1l Y2hhbmlzbSBpcyBub3QgcmVxdWlyZWQgdG8gdXRpbGl6ZSBhIHNoYWRvdyBlbnRyeSwgb3IgZXZl biBhIHBhc3N3b3JkCisgKiBzeXN0ZW0gYXQgYWxsOyBmb3IgdGhlc2UgY2FzZXMsIHNoYWRvd19w YXNzIG1heSBiZSBpZ25vcmVkIGFuZCB0aGUgY2FsbGVyCisgKiBzaG91bGQganVzdCBwYXNzIE5V TEwuCisgKi8KK2ludAorQ2hlY2tTQVNMQXV0aChjb25zdCBwZ19iZV9zYXNsX21lY2ggKm1lY2gs IFBvcnQgKnBvcnQsIGNoYXIgKnNoYWRvd19wYXNzLAorCQkJICBjaGFyICoqbG9nZGV0YWlsKQor eworCVN0cmluZ0luZm9EYXRhIHNhc2xfbWVjaHM7CisJaW50CQkJbXR5cGU7CisJU3RyaW5nSW5m b0RhdGEgYnVmOworCXZvaWQJICAgKm9wYXEgPSBOVUxMOworCWNoYXIJICAgKm91dHB1dCA9IE5V TEw7CisJaW50CQkJb3V0cHV0bGVuID0gMDsKKwljb25zdCBjaGFyICppbnB1dDsKKwlpbnQJCQlp bnB1dGxlbjsKKwlpbnQJCQlyZXN1bHQ7CisJYm9vbAkJaW5pdGlhbDsKKworCS8qCisJICogU2Vu ZCB0aGUgU0FTTCBhdXRoZW50aWNhdGlvbiByZXF1ZXN0IHRvIHVzZXIuICBJdCBpbmNsdWRlcyB0 aGUgbGlzdCBvZgorCSAqIGF1dGhlbnRpY2F0aW9uIG1lY2hhbmlzbXMgdGhhdCBhcmUgc3VwcG9y dGVkLgorCSAqLworCWluaXRTdHJpbmdJbmZvKCZzYXNsX21lY2hzKTsKKworCW1lY2gtPmdldF9t ZWNoYW5pc21zKHBvcnQsICZzYXNsX21lY2hzKTsKKwkvKiBQdXQgYW5vdGhlciAnXDAnIHRvIG1h cmsgdGhhdCBsaXN0IGlzIGZpbmlzaGVkLiAqLworCWFwcGVuZFN0cmluZ0luZm9DaGFyKCZzYXNs X21lY2hzLCAnXDAnKTsKKworCXNlbmRBdXRoUmVxdWVzdChwb3J0LCBBVVRIX1JFUV9TQVNMLCBz YXNsX21lY2hzLmRhdGEsIHNhc2xfbWVjaHMubGVuKTsKKwlwZnJlZShzYXNsX21lY2hzLmRhdGEp OworCisJLyoKKwkgKiBMb29wIHRocm91Z2ggU0FTTCBtZXNzYWdlIGV4Y2hhbmdlLiAgVGhpcyBl eGNoYW5nZSBjYW4gY29uc2lzdCBvZgorCSAqIG11bHRpcGxlIG1lc3NhZ2VzIHNlbnQgaW4gYm90 aCBkaXJlY3Rpb25zLiAgRmlyc3QgbWVzc2FnZSBpcyBhbHdheXMKKwkgKiBmcm9tIHRoZSBjbGll bnQuICBBbGwgbWVzc2FnZXMgZnJvbSBjbGllbnQgdG8gc2VydmVyIGFyZSBwYXNzd29yZAorCSAq IHBhY2tldHMgKHR5cGUgJ3AnKS4KKwkgKi8KKwlpbml0aWFsID0gdHJ1ZTsKKwlkbworCXsKKwkJ cHFfc3RhcnRtc2dyZWFkKCk7CisJCW10eXBlID0gcHFfZ2V0Ynl0ZSgpOworCQlpZiAobXR5cGUg IT0gJ3AnKQorCQl7CisJCQkvKiBPbmx5IGxvZyBlcnJvciBpZiBjbGllbnQgZGlkbid0IGRpc2Nv bm5lY3QuICovCisJCQlpZiAobXR5cGUgIT0gRU9GKQorCQkJeworCQkJCWVyZXBvcnQoRVJST1Is CisJCQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCisJCQkJCQkgZXJy bXNnKCJleHBlY3RlZCBTQVNMIHJlc3BvbnNlLCBnb3QgbWVzc2FnZSB0eXBlICVkIiwKKwkJCQkJ CQkJbXR5cGUpKSk7CisJCQl9CisJCQllbHNlCisJCQkJcmV0dXJuIFNUQVRVU19FT0Y7CisJCX0K KworCQkvKiBHZXQgdGhlIGFjdHVhbCBTQVNMIG1lc3NhZ2UgKi8KKwkJaW5pdFN0cmluZ0luZm8o JmJ1Zik7CisJCWlmIChwcV9nZXRtZXNzYWdlKCZidWYsIFBHX01BWF9TQVNMX01FU1NBR0VfTEVO R1RIKSkKKwkJeworCQkJLyogRU9GIC0gcHFfZ2V0bWVzc2FnZSBhbHJlYWR5IGxvZ2dlZCBlcnJv ciAqLworCQkJcGZyZWUoYnVmLmRhdGEpOworCQkJcmV0dXJuIFNUQVRVU19FUlJPUjsKKwkJfQor CisJCWVsb2coREVCVUc0LCAicHJvY2Vzc2luZyByZWNlaXZlZCBTQVNMIHJlc3BvbnNlIG9mIGxl bmd0aCAlZCIsIGJ1Zi5sZW4pOworCisJCS8qCisJCSAqIFRoZSBmaXJzdCBTQVNMSW5pdGlhbFJl c3BvbnNlIG1lc3NhZ2UgaXMgZGlmZmVyZW50IGZyb20gdGhlIG90aGVycy4KKwkJICogSXQgaW5k aWNhdGVzIHdoaWNoIFNBU0wgbWVjaGFuaXNtIHRoZSBjbGllbnQgc2VsZWN0ZWQsIGFuZCBjb250 YWlucworCQkgKiBhbiBvcHRpb25hbCBJbml0aWFsIENsaWVudCBSZXNwb25zZSBwYXlsb2FkLiAg VGhlIHN1YnNlcXVlbnQKKwkJICogU0FTTFJlc3BvbnNlIG1lc3NhZ2VzIGNvbnRhaW4ganVzdCB0 aGUgU0FTTCBwYXlsb2FkLgorCQkgKi8KKwkJaWYgKGluaXRpYWwpCisJCXsKKwkJCWNvbnN0IGNo YXIgKnNlbGVjdGVkX21lY2g7CisKKwkJCXNlbGVjdGVkX21lY2ggPSBwcV9nZXRtc2dyYXdzdHJp bmcoJmJ1Zik7CisKKwkJCS8qCisJCQkgKiBJbml0aWFsaXplIHRoZSBzdGF0dXMgdHJhY2tlciBm b3IgbWVzc2FnZSBleGNoYW5nZXMuCisJCQkgKgorCQkJICogSWYgdGhlIHVzZXIgZG9lc24ndCBl eGlzdCwgb3IgZG9lc24ndCBoYXZlIGEgdmFsaWQgcGFzc3dvcmQsIG9yCisJCQkgKiBpdCdzIGV4 cGlyZWQsIHdlIHN0aWxsIGdvIHRocm91Z2ggdGhlIG1vdGlvbnMgb2YgU0FTTAorCQkJICogYXV0 aGVudGljYXRpb24sIGJ1dCB0ZWxsIHRoZSBhdXRoZW50aWNhdGlvbiBtZXRob2QgdGhhdCB0aGUK KwkJCSAqIGF1dGhlbnRpY2F0aW9uIGlzICJkb29tZWQiLiBUaGF0IGlzLCBpdCdzIGdvaW5nIHRv IGZhaWwsIG5vCisJCQkgKiBtYXR0ZXIgd2hhdC4KKwkJCSAqCisJCQkgKiBUaGlzIGlzIGJlY2F1 c2Ugd2UgZG9uJ3Qgd2FudCB0byByZXZlYWwgdG8gYW4gYXR0YWNrZXIgd2hhdAorCQkJICogdXNl cm5hbWVzIGFyZSB2YWxpZCwgbm9yIHdoaWNoIHVzZXJzIGhhdmUgYSB2YWxpZCBwYXNzd29yZC4K KwkJCSAqLworCQkJb3BhcSA9IG1lY2gtPmluaXQocG9ydCwgc2VsZWN0ZWRfbWVjaCwgc2hhZG93 X3Bhc3MpOworCisJCQlpbnB1dGxlbiA9IHBxX2dldG1zZ2ludCgmYnVmLCA0KTsKKwkJCWlmIChp bnB1dGxlbiA9PSAtMSkKKwkJCQlpbnB1dCA9IE5VTEw7CisJCQllbHNlCisJCQkJaW5wdXQgPSBw cV9nZXRtc2dieXRlcygmYnVmLCBpbnB1dGxlbik7CisKKwkJCWluaXRpYWwgPSBmYWxzZTsKKwkJ fQorCQllbHNlCisJCXsKKwkJCWlucHV0bGVuID0gYnVmLmxlbjsKKwkJCWlucHV0ID0gcHFfZ2V0 bXNnYnl0ZXMoJmJ1ZiwgYnVmLmxlbik7CisJCX0KKwkJcHFfZ2V0bXNnZW5kKCZidWYpOworCisJ CS8qCisJCSAqIFRoZSBTdHJpbmdJbmZvIGd1YXJhbnRlZXMgdGhhdCB0aGVyZSdzIGEgXDAgYnl0 ZSBhZnRlciB0aGUKKwkJICogcmVzcG9uc2UuCisJCSAqLworCQlBc3NlcnQoaW5wdXQgPT0gTlVM TCB8fCBpbnB1dFtpbnB1dGxlbl0gPT0gJ1wwJyk7CisKKwkJLyoKKwkJICogSGFuZCB0aGUgaW5j b21pbmcgbWVzc2FnZSB0byB0aGUgbWVjaGFuaXNtIGltcGxlbWVudGF0aW9uLgorCQkgKi8KKwkJ cmVzdWx0ID0gbWVjaC0+ZXhjaGFuZ2Uob3BhcSwgaW5wdXQsIGlucHV0bGVuLAorCQkJCQkJCQkm b3V0cHV0LCAmb3V0cHV0bGVuLAorCQkJCQkJCQlsb2dkZXRhaWwpOworCisJCS8qIGlucHV0IGJ1 ZmZlciBubyBsb25nZXIgdXNlZCAqLworCQlwZnJlZShidWYuZGF0YSk7CisKKwkJaWYgKG91dHB1 dCkKKwkJeworCQkJLyoKKwkJCSAqIE5lZ290aWF0aW9uIGdlbmVyYXRlZCBkYXRhIHRvIGJlIHNl bnQgdG8gdGhlIGNsaWVudC4KKwkJCSAqLworCQkJZWxvZyhERUJVRzQsICJzZW5kaW5nIFNBU0wg Y2hhbGxlbmdlIG9mIGxlbmd0aCAldSIsIG91dHB1dGxlbik7CisKKwkJCS8qIFRPRE86IFBHX1NB U0xfRVhDSEFOR0VfRkFJTFVSRSB3aXRoIG91dHB1dCBpcyBmb3JiaWRkZW4gaW4gU0FTTCAqLwor CQkJaWYgKHJlc3VsdCA9PSBQR19TQVNMX0VYQ0hBTkdFX1NVQ0NFU1MpCisJCQkJc2VuZEF1dGhS ZXF1ZXN0KHBvcnQsIEFVVEhfUkVRX1NBU0xfRklOLCBvdXRwdXQsIG91dHB1dGxlbik7CisJCQll bHNlCisJCQkJc2VuZEF1dGhSZXF1ZXN0KHBvcnQsIEFVVEhfUkVRX1NBU0xfQ09OVCwgb3V0cHV0 LCBvdXRwdXRsZW4pOworCisJCQlwZnJlZShvdXRwdXQpOworCQl9CisJfSB3aGlsZSAocmVzdWx0 ID09IFBHX1NBU0xfRVhDSEFOR0VfQ09OVElOVUUpOworCisJLyogT29wcywgU29tZXRoaW5nIGJh ZCBoYXBwZW5lZCAqLworCWlmIChyZXN1bHQgIT0gUEdfU0FTTF9FWENIQU5HRV9TVUNDRVNTKQor CXsKKwkJcmV0dXJuIFNUQVRVU19FUlJPUjsKKwl9CisKKwlyZXR1cm4gU1RBVFVTX09LOworfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbGlicHEvYXV0aC5jIGIvc3JjL2JhY2tlbmQvbGlicHEv YXV0aC5jCmluZGV4IDgyZjA0M2EzNDMuLmFjNmZlNGE3NDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2xpYnBxL2F1dGguYworKysgYi9zcmMvYmFja2VuZC9saWJwcS9hdXRoLmMKQEAgLTQ1LDE5 ICs0NSwxMCBAQAogICogR2xvYmFsIGF1dGhlbnRpY2F0aW9uIGZ1bmN0aW9ucwogICotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiAgKi8KLXN0YXRpYyB2b2lkIHNlbmRBdXRoUmVxdWVzdChQb3J0ICpwb3J0LCBBdXRoUmVxdWVz dCBhcmVxLCBjb25zdCBjaGFyICpleHRyYWRhdGEsCi0JCQkJCQkJaW50IGV4dHJhbGVuKTsKIHN0 YXRpYyB2b2lkIGF1dGhfZmFpbGVkKFBvcnQgKnBvcnQsIGludCBzdGF0dXMsIGNoYXIgKmxvZ2Rl dGFpbCk7CiBzdGF0aWMgY2hhciAqcmVjdl9wYXNzd29yZF9wYWNrZXQoUG9ydCAqcG9ydCk7CiBz dGF0aWMgdm9pZCBzZXRfYXV0aG5faWQoUG9ydCAqcG9ydCwgY29uc3QgY2hhciAqaWQpOwogCi0v Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLSAqIFNBU0wgY29tbW9uIGF1dGhlbnRpY2F0aW9uCi0gKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqLwot c3RhdGljIGludAlTQVNMX2V4Y2hhbmdlKGNvbnN0IHBnX2JlX3Nhc2xfbWVjaCAqbWVjaCwgUG9y dCAqcG9ydCwKLQkJCQkJCSAgY2hhciAqc2hhZG93X3Bhc3MsIGNoYXIgKipsb2dkZXRhaWwpOwot CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQogICogUGFzc3dvcmQtYmFzZWQgYXV0aGVudGljYXRpb24gbWV0aG9kcyAo cGFzc3dvcmQsIG1kNSwgYW5kIHNjcmFtLXNoYS0yNTYpCkBAIC02Nyw3ICs1OCw2IEBAIHN0YXRp YyBpbnQJQ2hlY2tQYXNzd29yZEF1dGgoUG9ydCAqcG9ydCwgY2hhciAqKmxvZ2RldGFpbCk7CiBz dGF0aWMgaW50CUNoZWNrUFdDaGFsbGVuZ2VBdXRoKFBvcnQgKnBvcnQsIGNoYXIgKipsb2dkZXRh aWwpOwogCiBzdGF0aWMgaW50CUNoZWNrTUQ1QXV0aChQb3J0ICpwb3J0LCBjaGFyICpzaGFkb3df cGFzcywgY2hhciAqKmxvZ2RldGFpbCk7Ci1zdGF0aWMgaW50CUNoZWNrU0NSQU1BdXRoKFBvcnQg KnBvcnQsIGNoYXIgKnNoYWRvd19wYXNzLCBjaGFyICoqbG9nZGV0YWlsKTsKIAogCiAvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KQEAgLTIzMSwxNCArMjIxLDYgQEAgc3RhdGljIGludAlQZXJmb3JtUmFkaXVzVHJhbnNhY3Rp b24oY29uc3QgY2hhciAqc2VydmVyLCBjb25zdCBjaGFyICpzZWNyZXQsIGNvbnMKICAqLwogI2Rl ZmluZSBQR19NQVhfQVVUSF9UT0tFTl9MRU5HVEgJNjU1MzUKIAotLyoKLSAqIE1heGltdW0gYWNj ZXB0ZWQgc2l6ZSBvZiBTQVNMIG1lc3NhZ2VzLgotICoKLSAqIFRoZSBtZXNzYWdlcyB0aGF0IHRo ZSBzZXJ2ZXIgb3IgbGlicHEgZ2VuZXJhdGUgYXJlIG11Y2ggc21hbGxlciB0aGFuIHRoaXMsCi0g KiBidXQgaGF2ZSBzb21lIGhlYWRyb29tLgotICovCi0jZGVmaW5lIFBHX01BWF9TQVNMX01FU1NB R0VfTEVOR1RICTEwMjQKLQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBHbG9iYWwgYXV0aGVudGljYXRpb24gZnVu Y3Rpb25zCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KQEAgLTY3NSw3ICs2NTcsNyBAQCBDbGllbnRBdXRoZW50aWNhdGlv bihQb3J0ICpwb3J0KQogLyoKICAqIFNlbmQgYW4gYXV0aGVudGljYXRpb24gcmVxdWVzdCBwYWNr ZXQgdG8gdGhlIGZyb250ZW5kLgogICovCi1zdGF0aWMgdm9pZAordm9pZAogc2VuZEF1dGhSZXF1 ZXN0KFBvcnQgKnBvcnQsIEF1dGhSZXF1ZXN0IGFyZXEsIGNvbnN0IGNoYXIgKmV4dHJhZGF0YSwg aW50IGV4dHJhbGVuKQogewogCVN0cmluZ0luZm9EYXRhIGJ1ZjsKQEAgLTg1NSwxMiArODM3LDEz IEBAIENoZWNrUFdDaGFsbGVuZ2VBdXRoKFBvcnQgKnBvcnQsIGNoYXIgKipsb2dkZXRhaWwpCiAJ ICogU0NSQU0gc2VjcmV0LCB3ZSBtdXN0IGRvIFNDUkFNIGF1dGhlbnRpY2F0aW9uLgogCSAqCiAJ ICogSWYgTUQ1IGF1dGhlbnRpY2F0aW9uIGlzIG5vdCBhbGxvd2VkLCBhbHdheXMgdXNlIFNDUkFN LiAgSWYgdGhlIHVzZXIKLQkgKiBoYWQgYW4gTUQ1IHBhc3N3b3JkLCBDaGVja1NDUkFNQXV0aCgp IHdpbGwgZmFpbC4KKwkgKiBoYWQgYW4gTUQ1IHBhc3N3b3JkLCB0aGUgU0NSQU0gbWVjaGFuaXNt IHdpbGwgZmFpbC4KIAkgKi8KIAlpZiAocG9ydC0+aGJhLT5hdXRoX21ldGhvZCA9PSB1YU1ENSAm JiBwd3R5cGUgPT0gUEFTU1dPUkRfVFlQRV9NRDUpCiAJCWF1dGhfcmVzdWx0ID0gQ2hlY2tNRDVB dXRoKHBvcnQsIHNoYWRvd19wYXNzLCBsb2dkZXRhaWwpOwogCWVsc2UKLQkJYXV0aF9yZXN1bHQg PSBDaGVja1NDUkFNQXV0aChwb3J0LCBzaGFkb3dfcGFzcywgbG9nZGV0YWlsKTsKKwkJYXV0aF9y ZXN1bHQgPSBDaGVja1NBU0xBdXRoKCZwZ19iZV9zY3JhbV9tZWNoLCBwb3J0LCBzaGFkb3dfcGFz cywKKwkJCQkJCQkJCWxvZ2RldGFpbCk7CiAKIAlpZiAoc2hhZG93X3Bhc3MpCiAJCXBmcmVlKHNo YWRvd19wYXNzKTsKQEAgLTkxOCwxNTkgKzkwMSw2IEBAIENoZWNrTUQ1QXV0aChQb3J0ICpwb3J0 LCBjaGFyICpzaGFkb3dfcGFzcywgY2hhciAqKmxvZ2RldGFpbCkKIAlyZXR1cm4gcmVzdWx0Owog fQogCi1zdGF0aWMgaW50Ci1TQVNMX2V4Y2hhbmdlKGNvbnN0IHBnX2JlX3Nhc2xfbWVjaCAqbWVj aCwgUG9ydCAqcG9ydCwgY2hhciAqc2hhZG93X3Bhc3MsCi0JCQkgIGNoYXIgKipsb2dkZXRhaWwp Ci17Ci0JU3RyaW5nSW5mb0RhdGEgc2FzbF9tZWNoczsKLQlpbnQJCQltdHlwZTsKLQlTdHJpbmdJ bmZvRGF0YSBidWY7Ci0Jdm9pZAkgICAqb3BhcSA9IE5VTEw7Ci0JY2hhcgkgICAqb3V0cHV0ID0g TlVMTDsKLQlpbnQJCQlvdXRwdXRsZW4gPSAwOwotCWNvbnN0IGNoYXIgKmlucHV0OwotCWludAkJ CWlucHV0bGVuOwotCWludAkJCXJlc3VsdDsKLQlib29sCQlpbml0aWFsOwotCi0JLyoKLQkgKiBT ZW5kIHRoZSBTQVNMIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QgdG8gdXNlci4gIEl0IGluY2x1ZGVz IHRoZSBsaXN0IG9mCi0JICogYXV0aGVudGljYXRpb24gbWVjaGFuaXNtcyB0aGF0IGFyZSBzdXBw b3J0ZWQuCi0JICovCi0JaW5pdFN0cmluZ0luZm8oJnNhc2xfbWVjaHMpOwotCi0JbWVjaC0+Z2V0 X21lY2hhbmlzbXMocG9ydCwgJnNhc2xfbWVjaHMpOwotCS8qIFB1dCBhbm90aGVyICdcMCcgdG8g bWFyayB0aGF0IGxpc3QgaXMgZmluaXNoZWQuICovCi0JYXBwZW5kU3RyaW5nSW5mb0NoYXIoJnNh c2xfbWVjaHMsICdcMCcpOwotCi0Jc2VuZEF1dGhSZXF1ZXN0KHBvcnQsIEFVVEhfUkVRX1NBU0ws IHNhc2xfbWVjaHMuZGF0YSwgc2FzbF9tZWNocy5sZW4pOwotCXBmcmVlKHNhc2xfbWVjaHMuZGF0 YSk7Ci0KLQkvKgotCSAqIExvb3AgdGhyb3VnaCBTQVNMIG1lc3NhZ2UgZXhjaGFuZ2UuICBUaGlz IGV4Y2hhbmdlIGNhbiBjb25zaXN0IG9mCi0JICogbXVsdGlwbGUgbWVzc2FnZXMgc2VudCBpbiBi b3RoIGRpcmVjdGlvbnMuICBGaXJzdCBtZXNzYWdlIGlzIGFsd2F5cwotCSAqIGZyb20gdGhlIGNs aWVudC4gIEFsbCBtZXNzYWdlcyBmcm9tIGNsaWVudCB0byBzZXJ2ZXIgYXJlIHBhc3N3b3JkCi0J ICogcGFja2V0cyAodHlwZSAncCcpLgotCSAqLwotCWluaXRpYWwgPSB0cnVlOwotCWRvCi0Jewot CQlwcV9zdGFydG1zZ3JlYWQoKTsKLQkJbXR5cGUgPSBwcV9nZXRieXRlKCk7Ci0JCWlmIChtdHlw ZSAhPSAncCcpCi0JCXsKLQkJCS8qIE9ubHkgbG9nIGVycm9yIGlmIGNsaWVudCBkaWRuJ3QgZGlz Y29ubmVjdC4gKi8KLQkJCWlmIChtdHlwZSAhPSBFT0YpCi0JCQl7Ci0JCQkJZXJlcG9ydChFUlJP UiwKLQkJCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKLQkJCQkJCSBl cnJtc2coImV4cGVjdGVkIFNBU0wgcmVzcG9uc2UsIGdvdCBtZXNzYWdlIHR5cGUgJWQiLAotCQkJ CQkJCQltdHlwZSkpKTsKLQkJCX0KLQkJCWVsc2UKLQkJCQlyZXR1cm4gU1RBVFVTX0VPRjsKLQkJ fQotCi0JCS8qIEdldCB0aGUgYWN0dWFsIFNBU0wgbWVzc2FnZSAqLwotCQlpbml0U3RyaW5nSW5m bygmYnVmKTsKLQkJaWYgKHBxX2dldG1lc3NhZ2UoJmJ1ZiwgUEdfTUFYX1NBU0xfTUVTU0FHRV9M RU5HVEgpKQotCQl7Ci0JCQkvKiBFT0YgLSBwcV9nZXRtZXNzYWdlIGFscmVhZHkgbG9nZ2VkIGVy cm9yICovCi0JCQlwZnJlZShidWYuZGF0YSk7Ci0JCQlyZXR1cm4gU1RBVFVTX0VSUk9SOwotCQl9 Ci0KLQkJZWxvZyhERUJVRzQsICJwcm9jZXNzaW5nIHJlY2VpdmVkIFNBU0wgcmVzcG9uc2Ugb2Yg bGVuZ3RoICVkIiwgYnVmLmxlbik7Ci0KLQkJLyoKLQkJICogVGhlIGZpcnN0IFNBU0xJbml0aWFs UmVzcG9uc2UgbWVzc2FnZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3RoZXJzLgotCQkgKiBJdCBp bmRpY2F0ZXMgd2hpY2ggU0FTTCBtZWNoYW5pc20gdGhlIGNsaWVudCBzZWxlY3RlZCwgYW5kIGNv bnRhaW5zCi0JCSAqIGFuIG9wdGlvbmFsIEluaXRpYWwgQ2xpZW50IFJlc3BvbnNlIHBheWxvYWQu ICBUaGUgc3Vic2VxdWVudAotCQkgKiBTQVNMUmVzcG9uc2UgbWVzc2FnZXMgY29udGFpbiBqdXN0 IHRoZSBTQVNMIHBheWxvYWQuCi0JCSAqLwotCQlpZiAoaW5pdGlhbCkKLQkJewotCQkJY29uc3Qg Y2hhciAqc2VsZWN0ZWRfbWVjaDsKLQotCQkJc2VsZWN0ZWRfbWVjaCA9IHBxX2dldG1zZ3Jhd3N0 cmluZygmYnVmKTsKLQotCQkJLyoKLQkJCSAqIEluaXRpYWxpemUgdGhlIHN0YXR1cyB0cmFja2Vy IGZvciBtZXNzYWdlIGV4Y2hhbmdlcy4KLQkJCSAqCi0JCQkgKiBJZiB0aGUgdXNlciBkb2Vzbid0 IGV4aXN0LCBvciBkb2Vzbid0IGhhdmUgYSB2YWxpZCBwYXNzd29yZCwgb3IKLQkJCSAqIGl0J3Mg ZXhwaXJlZCwgd2Ugc3RpbGwgZ28gdGhyb3VnaCB0aGUgbW90aW9ucyBvZiBTQVNMCi0JCQkgKiBh dXRoZW50aWNhdGlvbiwgYnV0IHRlbGwgdGhlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCB0aGF0IHRo ZQotCQkJICogYXV0aGVudGljYXRpb24gaXMgImRvb21lZCIuIFRoYXQgaXMsIGl0J3MgZ29pbmcg dG8gZmFpbCwgbm8KLQkJCSAqIG1hdHRlciB3aGF0LgotCQkJICoKLQkJCSAqIFRoaXMgaXMgYmVj YXVzZSB3ZSBkb24ndCB3YW50IHRvIHJldmVhbCB0byBhbiBhdHRhY2tlciB3aGF0Ci0JCQkgKiB1 c2VybmFtZXMgYXJlIHZhbGlkLCBub3Igd2hpY2ggdXNlcnMgaGF2ZSBhIHZhbGlkIHBhc3N3b3Jk LgotCQkJICovCi0JCQlvcGFxID0gbWVjaC0+aW5pdChwb3J0LCBzZWxlY3RlZF9tZWNoLCBzaGFk b3dfcGFzcyk7Ci0KLQkJCWlucHV0bGVuID0gcHFfZ2V0bXNnaW50KCZidWYsIDQpOwotCQkJaWYg KGlucHV0bGVuID09IC0xKQotCQkJCWlucHV0ID0gTlVMTDsKLQkJCWVsc2UKLQkJCQlpbnB1dCA9 IHBxX2dldG1zZ2J5dGVzKCZidWYsIGlucHV0bGVuKTsKLQotCQkJaW5pdGlhbCA9IGZhbHNlOwot CQl9Ci0JCWVsc2UKLQkJewotCQkJaW5wdXRsZW4gPSBidWYubGVuOwotCQkJaW5wdXQgPSBwcV9n ZXRtc2dieXRlcygmYnVmLCBidWYubGVuKTsKLQkJfQotCQlwcV9nZXRtc2dlbmQoJmJ1Zik7Ci0K LQkJLyoKLQkJICogVGhlIFN0cmluZ0luZm8gZ3VhcmFudGVlcyB0aGF0IHRoZXJlJ3MgYSBcMCBi eXRlIGFmdGVyIHRoZQotCQkgKiByZXNwb25zZS4KLQkJICovCi0JCUFzc2VydChpbnB1dCA9PSBO VUxMIHx8IGlucHV0W2lucHV0bGVuXSA9PSAnXDAnKTsKLQotCQkvKgotCQkgKiBIYW5kIHRoZSBp bmNvbWluZyBtZXNzYWdlIHRvIHRoZSBtZWNoYW5pc20gaW1wbGVtZW50YXRpb24uCi0JCSAqLwot CQlyZXN1bHQgPSBtZWNoLT5leGNoYW5nZShvcGFxLCBpbnB1dCwgaW5wdXRsZW4sCi0JCQkJCQkJ CSZvdXRwdXQsICZvdXRwdXRsZW4sCi0JCQkJCQkJCWxvZ2RldGFpbCk7Ci0KLQkJLyogaW5wdXQg YnVmZmVyIG5vIGxvbmdlciB1c2VkICovCi0JCXBmcmVlKGJ1Zi5kYXRhKTsKLQotCQlpZiAob3V0 cHV0KQotCQl7Ci0JCQkvKgotCQkJICogTmVnb3RpYXRpb24gZ2VuZXJhdGVkIGRhdGEgdG8gYmUg c2VudCB0byB0aGUgY2xpZW50LgotCQkJICovCi0JCQllbG9nKERFQlVHNCwgInNlbmRpbmcgU0FT TCBjaGFsbGVuZ2Ugb2YgbGVuZ3RoICV1Iiwgb3V0cHV0bGVuKTsKLQotCQkJLyogVE9ETzogUEdf U0FTTF9FWENIQU5HRV9GQUlMVVJFIHdpdGggb3V0cHV0IGlzIGZvcmJpZGRlbiBpbiBTQVNMICov Ci0JCQlpZiAocmVzdWx0ID09IFBHX1NBU0xfRVhDSEFOR0VfU1VDQ0VTUykKLQkJCQlzZW5kQXV0 aFJlcXVlc3QocG9ydCwgQVVUSF9SRVFfU0FTTF9GSU4sIG91dHB1dCwgb3V0cHV0bGVuKTsKLQkJ CWVsc2UKLQkJCQlzZW5kQXV0aFJlcXVlc3QocG9ydCwgQVVUSF9SRVFfU0FTTF9DT05ULCBvdXRw dXQsIG91dHB1dGxlbik7Ci0KLQkJCXBmcmVlKG91dHB1dCk7Ci0JCX0KLQl9IHdoaWxlIChyZXN1 bHQgPT0gUEdfU0FTTF9FWENIQU5HRV9DT05USU5VRSk7Ci0KLQkvKiBPb3BzLCBTb21ldGhpbmcg YmFkIGhhcHBlbmVkICovCi0JaWYgKHJlc3VsdCAhPSBQR19TQVNMX0VYQ0hBTkdFX1NVQ0NFU1Mp Ci0JewotCQlyZXR1cm4gU1RBVFVTX0VSUk9SOwotCX0KLQotCXJldHVybiBTVEFUVVNfT0s7Ci19 Ci0KLXN0YXRpYyBpbnQKLUNoZWNrU0NSQU1BdXRoKFBvcnQgKnBvcnQsIGNoYXIgKnNoYWRvd19w YXNzLCBjaGFyICoqbG9nZGV0YWlsKQotewotCXJldHVybiBTQVNMX2V4Y2hhbmdlKCZwZ19iZV9z Y3JhbV9tZWNoLCBwb3J0LCBzaGFkb3dfcGFzcywgbG9nZGV0YWlsKTsKLX0KLQogCiAvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAqIEdTU0FQSSBhdXRoZW50aWNhdGlvbiBzeXN0ZW0KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2xpYnBxL2F1dGguaCBiL3NyYy9pbmNsdWRlL2xpYnBxL2F1dGguaAppbmRleCAzNjEwZmFl M2ZmLi4zZDY3MzRmMjUzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9saWJwcS9hdXRoLmgKKysr IGIvc3JjL2luY2x1ZGUvbGlicHEvYXV0aC5oCkBAIC0yMSw2ICsyMSw4IEBAIGV4dGVybiBib29s IHBnX2tyYl9jYXNlaW5zX3VzZXJzOwogZXh0ZXJuIGNoYXIgKnBnX2tyYl9yZWFsbTsKIAogZXh0 ZXJuIHZvaWQgQ2xpZW50QXV0aGVudGljYXRpb24oUG9ydCAqcG9ydCk7CitleHRlcm4gdm9pZCBz ZW5kQXV0aFJlcXVlc3QoUG9ydCAqcG9ydCwgQXV0aFJlcXVlc3QgYXJlcSwgY29uc3QgY2hhciAq ZXh0cmFkYXRhLAorCQkJCQkJCWludCBleHRyYWxlbik7CiAKIC8qIEhvb2sgZm9yIHBsdWdpbnMg dG8gZ2V0IGNvbnRyb2wgaW4gQ2xpZW50QXV0aGVudGljYXRpb24oKSAqLwogdHlwZWRlZiB2b2lk ICgqQ2xpZW50QXV0aGVudGljYXRpb25faG9va190eXBlKSAoUG9ydCAqLCBpbnQpOwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbGlicHEvc2FzbC5oIGIvc3JjL2luY2x1ZGUvbGlicHEvc2FzbC5o CmluZGV4IGM3MzJmMzU1NjQuLmRhZDA0ZDhlY2QgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2xp YnBxL3Nhc2wuaAorKysgYi9zcmMvaW5jbHVkZS9saWJwcS9zYXNsLmgKQEAgLTE2LDYgKzE2LDcg QEAKICNpZm5kZWYgUEdfU0FTTF9ICiAjZGVmaW5lIFBHX1NBU0xfSAogCisjaW5jbHVkZSAibGli L3N0cmluZ2luZm8uaCIKICNpbmNsdWRlICJsaWJwcS9saWJwcS1iZS5oIgogCiAvKiBTdGF0dXMg Y29kZXMgZm9yIG1lc3NhZ2UgZXhjaGFuZ2UgKi8KQEAgLTIzLDYgKzI0LDE0IEBACiAjZGVmaW5l IFBHX1NBU0xfRVhDSEFOR0VfU1VDQ0VTUwkJMQogI2RlZmluZSBQR19TQVNMX0VYQ0hBTkdFX0ZB SUxVUkUJCTIKIAorLyoKKyAqIE1heGltdW0gYWNjZXB0ZWQgc2l6ZSBvZiBTQVNMIG1lc3NhZ2Vz LgorICoKKyAqIFRoZSBtZXNzYWdlcyB0aGF0IHRoZSBzZXJ2ZXIgb3IgbGlicHEgZ2VuZXJhdGUg YXJlIG11Y2ggc21hbGxlciB0aGFuIHRoaXMsCisgKiBidXQgaGF2ZSBzb21lIGhlYWRyb29tLgor ICovCisjZGVmaW5lIFBHX01BWF9TQVNMX01FU1NBR0VfTEVOR1RICTEwMjQKKwogLyoKICAqIEJh Y2tlbmQgbWVjaGFuaXNtIEFQSQogICoKQEAgLTEyNCw0ICsxMzMsOCBAQCB0eXBlZGVmIHN0cnVj dAogCXBnX2JlX3Nhc2xfZXhjaGFuZ2VfZnVuYwlleGNoYW5nZTsKIH0gcGdfYmVfc2FzbF9tZWNo OwogCisvKiBDb21tb24gaW1wbGVtZW50YXRpb24gZm9yIGF1dGguYyAqLworZXh0ZXJuIGludCBD aGVja1NBU0xBdXRoKGNvbnN0IHBnX2JlX3Nhc2xfbWVjaCAqbWVjaCwgUG9ydCAqcG9ydCwKKwkJ CQkJCSBjaGFyICpzaGFkb3dfcGFzcywgY2hhciAqKmxvZ2RldGFpbCk7CisKICNlbmRpZiAvKiBQ R19TQVNMX0ggKi8KLS0gCjIuMjUuMQoK --_004_0907fda41fb40b23e2cbdf7eb05a8d61dd5307b3camelvmwarecom_--