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 1p6Xnm-000102-6d for pgsql-hackers@arkaria.postgresql.org; Sat, 17 Dec 2022 14:04:35 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1p6Xni-0003Ad-Vf for pgsql-hackers@arkaria.postgresql.org; Sat, 17 Dec 2022 14:04:31 +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 1p6Xnh-0003AT-L7 for pgsql-hackers@lists.postgresql.org; Sat, 17 Dec 2022 14:04:30 +0000 Received: from esa16.fujitsucc.c3s2.iphmx.com ([216.71.158.33]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1p6Xnd-00005I-AZ for pgsql-hackers@lists.postgresql.org; Sat, 17 Dec 2022 14:04:28 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1671285865; x=1702821865; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=5pN0Igeohjzx8GF9ONibp+v2CCsCGrKk2nZNIttF+nw=; b=UYF2ss3bXBnWKfgY1VAIHHkKFtUvItXQYYg2paxHYG9RAz/O8n7+5Xg1 HQseAKbrJ/rVDsDDWaeLA7G3Y0qASrAmxSDmuOJwi2tEJwYHLvnrM7Dvq h9wV0oF1zOv/Zm0BGz1mRLHlvFXcf96RH4Gv8JqGdM4xpHDEHr/wHvjB6 Fyhs63pYddA9edpS9mNtoDe9CEICz2tAGEPIFII4zSKlOCTeku/FpYCJp dqAvsjl7NroYJanCBkiwfC590HPht3kiaetJj1wPXur/a0U+ra9ehsB7u JJMscTSRxDaG1+/uWyvs+0tK8+Ldl3lBNpsnZlhztzPA/RH4/qtQehCln A==; X-IronPort-AV: E=McAfee;i="6500,9779,10564"; a="72575512" X-IronPort-AV: E=Sophos;i="5.96,253,1665414000"; d="scan'208,223";a="72575512" Received: from mail-tycjpn01lp2172.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.172]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Dec 2022 23:04:18 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nxeLNBzThlxX/wsS4oyLU9pqtDkRd1HFryZ2c6SmkQatSlHIJjty1Ai3qkUkBoiGJXOYHBmb2wd9MEKhD2XG+tyePwHZIeYQwxy46L5Uxeu61vQNgKJRxW0XozWHb2oH5Es0aJNY0fkQNANmwPFIlD8v4uXhzBNPURO+fUUJhMNALGjGWW6RfRq3RIyPWhR34KvGQh1DqLhhQjbb3hFnnFDuJ1idAqwWZeLJ9ngg49pPxAYlmf1WiYGBQbmfcaIoN3A8whnoZKbVRQdxHik8ozXIf8bMpQpO8iMOgPI6bZYM8ew/S4dXQmAUl/8PcO7R3CAZqReURvB/kpbp3hCa2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=lJNYg4ulwALg2wOd3VLQHa37J58eH0BxsFZJxU7NCFM=; b=ephidAHyTwoWeLARCVp5df+9Ckjk6BCsVPfO6TK1CHyf5eXnRFYSd77novMptziWeyAfdwRyHKyRqt+rZr5qQPyHgp7ryrqXdLabJOPlAhmlVDszG+iiUc4bRn6t9mxCclPzU4NoBq5BxObzl2TTUO12d2bz5QfvnF4vi8ieRPnFys62nMaE3+vYiKUrt1IDRKyFQjeB4eJnGojp+hEbV5ofGlo8+8Rm7uqPsdSD8dQ39fUC6VzO7XjH8fOqMOEFRJCL7HH7TPvCTV7IszvXi+k3Fic2TjhJwIiwdhwCAsFKnkVAzaafR/Z60Wpuj9Q8Zxr8xO79EF7gyiggx7TiDA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by OS0PR01MB5891.jpnprd01.prod.outlook.com (2603:1096:604:ba::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5880.19; Sat, 17 Dec 2022 14:04:14 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::db62:a054:b1fa:4cb3]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::db62:a054:b1fa:4cb3%8]) with mapi id 15.20.5924.016; Sat, 17 Dec 2022 14:04:14 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila CC: Masahiko Sawada , "wangw.fnst@fujitsu.com" , Peter Smith , Dilip Kumar , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHZD4gmc8Gf0xrGM0OFaEbpojAcOq5uQq1wgAHYoYCAAB++4IAAIlOAgAGmKgCAABa30A== Date: Sat, 17 Dec 2022 14:04:14 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9ZWVjNjY3M2YtNzYyZC00NDNiLWJjN2UtNjRlODhlMGUy?= =?utf-8?B?ZTIwO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX0NvbnRlbnRCaXRzPTA7TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5?= =?utf-8?B?LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfRW5hYmxlZD10cnVlO01TSVBfTGFi?= =?utf-8?B?ZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRmZWNlMDUwX01ldGhv?= =?utf-8?B?ZD1TdGFuZGFyZDtNU0lQX0xhYmVsX2E3Mjk1Y2MxLWQyNzktNDJhYy1hYjRk?= =?utf-8?B?LTNiMGY0ZmVjZTA1MF9OYW1lPUZVSklUU1UtUkVTVFJJQ1RFRO+/ou++gA==?= =?utf-8?B?776LO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?utf-8?B?ZWNlMDUwX1NldERhdGU9MjAyMi0xMi0xN1QxMzozNzowN1o7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS0PR01MB5716:EE_|OS0PR01MB5891:EE_ x-ms-office365-filtering-correlation-id: 7d2b9c5d-f8c9-40e9-be64-08dae0379453 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: PYWpj5hfo0VED0Y2KZVsiD6FtncIbKhyK1p0+TlAYb/pRYBRpyv/DxW/WaN6ZNZ5ZjAe8ek3bth/eXdJaxDBPjHGPg1Ub/X88GSoDYqOAXAmOy4XyRatUxT3YvHByRrAuK1nURsfhxFE39MztgzOiRucblI2sj0KBgccSj1AmzQJJdlAPWRURye+X23lF3GMmPBVHIabosiIcYtJ+xdY+51+YSLnb4YtaIRlFDHe58pZ/a/1+RX/h3r6m/f788Ikm++40bGgdPKLs863FcxTYQFzyA3LyALIlmliCNaP8qMtwKH0jGF6btxf6YiNnRftDED+rIH4qi97dL5DcUf9rjqiAvHslTHiXkFRl0054ciOePa8wm6AdrydoUGBZQ+Bi3mqzJWmCPf53l94P0jJrSrdPEwVS3IZSib0cB9MZZ2rLmE6izwYWEDNF+mD0r57DL4pBvgW1A00FDxK/66kWP9gWMSzECTZO+w1od8SXRQIEOck/az2Oz8Afp8pWtD3FOPX+p+CKAUJYtM6jkLY0txm9BEfpio9TgF0sj/0KIKBViiB4vzjKB2aGLKJo0qlnAmoix9SLApD2KQxHfAwLETwereVAmEX/AuLkflt3y9RsVy0JJoaJ/dIMkUrg3KQbtsyYgqRc3H1bi6Gd7l/cqOQfprbR3KSqRaPz8yfuH3GnmnR7Xt2RrCpU5hlBJuhHxgQ1z4G1lq5iegJmiBqlCH+1kHJnTMLiq8KT9Afssk= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(376002)(366004)(346002)(39860400002)(136003)(396003)(1590799012)(451199015)(82960400001)(99936003)(66556008)(2906002)(6916009)(76116006)(66446008)(54906003)(8676002)(316002)(86362001)(64756008)(8936002)(55016003)(186003)(478600001)(41300700001)(83380400001)(71200400001)(52536014)(9686003)(26005)(122000001)(53546011)(4326008)(5660300002)(38070700005)(6506007)(7696005)(85182001)(66476007)(38100700002)(66946007)(1580799009)(33656002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?blJEOVBzWHYwZFh3am1qclB0UGJmQzdxVHZVdEVuOVYyNGFRc21oQk4wNmVx?= =?utf-8?B?bFY5Wkhwc3p3ZnNDWGQzYk1wZXI0a21adTdJT0Y4b3RvUjZCYkoyUFFyejVT?= =?utf-8?B?TlFCUlBMOTVWWEtkSkZqcWJkeVFBS0JSaGhMMDlGMTZTR0JJZXRtNlhVVFRT?= =?utf-8?B?T09zaDhQTWpBdlNodmtkRnN6Snp1ZkZ1Sk95NGZDUmE3amFmaUNYdExGNTNF?= =?utf-8?B?V1FQS0JpMEtLd2lIY2hNSU1xRE5STlVLOURkcmsxa0hIWlFHMEt4UGhUWUJB?= =?utf-8?B?UVprSk9zTzhYeGdxSGhZd0s0QmVWVWdOa0VJRzNIYzRXZHpKOXluTU5KOVRj?= =?utf-8?B?MkN4QTQzeWVzaE50ZXRTaEhVeUUwRjUvb0p4RzZPc0FpYStCVHZGc1ExZzBZ?= =?utf-8?B?amk5WGIxZkxvQTBmNjdSZkwyUTZRenBDVUs0dzVsdVNLOHJVMk1CWTZYUitU?= =?utf-8?B?dTV2S2hwbENkK3JxZkhsNGZ6RlNxb2k0bjVtR2pGVmZhbVdtaDA4V3ZPZzkr?= =?utf-8?B?RGU1MlZDUmpwTU9OZmV2b014VDVaNm1vQ28xOWl6UUFtdk5oK2lHenlKbjUx?= =?utf-8?B?NktTSGpMMEVjMHphdFo2dU94TmNmTjRJYzdFbTh6cGdkejRkY2lxd01RcFdY?= =?utf-8?B?aUNBL21Ka2JRMkUzUUxHcEVJYWpmQ0pEc2t3RnQxWE0wWFVrVVN6cTIxTWYv?= =?utf-8?B?Y2NYSmtkYXh2K205Tll4NHVNY3RLZXA2T2s3Rmg5d21oZ3hsOVBqdHloZ3BM?= =?utf-8?B?eDB6dk8wNGtoTmowb25uVXRJRmhmQ2NzT2lMZ21QeXRJNGVBdHVIWS9JK3Qr?= =?utf-8?B?NkgwblF3bWZTTUtUZzBLZ204b0ozT0V5OE5ic3pNRE14NWhEK0JwUisvK3dl?= =?utf-8?B?OHMvdnhqTmEyZ1JQNkR5WGNnR2gwL0E0M2h1RFl3b3NEb1pHcHNCT2lvQkNa?= =?utf-8?B?NzhQWVF0Y1JEWDdrc3JTeW40SHRuS0VZaFpkQzdLOXMreUgvUEtpL0RLWWh1?= =?utf-8?B?OE9kd1JBVVhaWEI0UzZaMmVWanJUZXRnQnBsZXhlaStpdDB0dTUyQklEa05G?= =?utf-8?B?UHFodUdqUm1wNWRYTmx1MGJsN3ZxcFJoMVpPK3pYMlJISjdCUkhDSVZmVkVn?= =?utf-8?B?aUlGOWZPSVVKYXdLSy9YWUZQL2F3L1J3WTIxSFk1d3RUNzczdUxjVUl4STEr?= =?utf-8?B?bHgxTEFwQWNZSlB0L2FBOFJmZWZsOEtraTdPNkVaNDI2a3N1QnFsTmpxRG9G?= =?utf-8?B?akQ1WWxxZnBrRnRpTklhcGk4ZjQzaFl0MzM1SUxhVHdEWXpKazh4Y3FKdWpq?= =?utf-8?B?VFcxY1Bld0t3UytJMit4cTJsZzdaWnY4Nm94NFdYaEtSUU5VODhEMDJub2lT?= =?utf-8?B?L0F1L0pBOEhtUnVBZVNsOHM3L0FhN1NRQ25JRXFXMjNoUlJpQ2RTbXBGYlBj?= =?utf-8?B?dzRnY3cvb0pVcC8xc1FuYi9ISWszQ3NtMjB2RnFpelRSb25XanRINzNiUGsx?= =?utf-8?B?S2ZsU3BIdGJWM0xNZnFJV1JHZStSaTN3NG9CQitFZWk4Z1NtMDVKNm4yTXRW?= =?utf-8?B?aWE2RTZPQzk3dnBkSDJJWk91WmJCa1pHMEJrdjZBNGdnOURtS1gxZ3E5UXVY?= =?utf-8?B?U0pocWc5cnhyMllYUktrQnBmeWhDYVZjeElRdHNVdTQ5aFZtd3VpTDVzNFhC?= =?utf-8?B?RWpsa3pJdFd4ZXpqOUlLQm8xbENrWGtEVjh3K3ptZlhZeXNzamtHVkMva080?= =?utf-8?B?SFBneU5NZmhtQ2xjU21SWW93NDJGeUpFNFpySW9PZUxraDBxbnlNSzhFcTU3?= =?utf-8?B?dkRiOGFOVUZWeVNYbVc1eFVvNkZ0bGZGRGhFTmJDeWZ3ZHJQcmZQSHpZYkxr?= =?utf-8?B?THpLQkhuSUFSbk9YMkcxd0FPODc2NmVLT0dYSW9NMUtJT3dyOE51ZnBXRGxX?= =?utf-8?B?d2h6ODlHZjBVQUFKVjV0UjNUcUpWcDhqZUhwWGwzM0dKNTREcjVETkt3Rkkz?= =?utf-8?B?NFBFRnpvT093U0VyMjVDbXBpRkV3L25XK3M2N2pvRDRSMGlSb21YY2srZ1lv?= =?utf-8?B?eEU3cElGeHB1bGtDRzd1RUNQYk4rU1hySmhoWG9FWGsreFZZRzg0bGpmb0NJ?= =?utf-8?Q?YonCLwg0LCnMPjJnLXe2HMR8Z?= Content-Type: multipart/mixed; boundary="_009_OS0PR01MB5716C3561CF53027F22B47AF94E79OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7d2b9c5d-f8c9-40e9-be64-08dae0379453 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Dec 2022 14:04:14.2530 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Mi/QeXyUMl+rBeDH5UbQbKLLl7lOwu6c7If/Hiqfxwi17fR8O25YJVpTSveo+iUygdl71XTtalJGK+5A19REAw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS0PR01MB5891 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_009_OS0PR01MB5716C3561CF53027F22B47AF94E79OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gU2F0dXJkYXksIERlY2VtYmVyIDE3LCAyMDIyIDg6MTYgUE0gQW1pdCBLYXBpbGEgPGFtaXQu a2FwaWxhMTZAZ21haWwuY29tPiB3cm90ZToNCj4gDQo+IE9uIEZyaSwgRGVjIDE2LCAyMDIyIGF0 IDQ6MzQgUE0gQW1pdCBLYXBpbGEgPGFtaXQua2FwaWxhMTZAZ21haWwuY29tPiB3cm90ZToNCj4g Pg0KPiA+IE9uIEZyaSwgRGVjIDE2LCAyMDIyIGF0IDI6NDcgUE0gaG91emouZm5zdEBmdWppdHN1 LmNvbQ0KPiA+IDxob3V6ai5mbnN0QGZ1aml0c3UuY29tPiB3cm90ZToNCj4gPiA+DQo+ID4gPiA+ IC0tLQ0KPiA+ID4gPiArICAgICAgIGFjdGl2ZV93b3JrZXJzID0gbGlzdF9jb3B5KFBhcmFsbGVs QXBwbHlXb3JrZXJQb29sKTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArICAgICAgIGZvcmVhY2gobGMs IGFjdGl2ZV93b3JrZXJzKQ0KPiA+ID4gPiArICAgICAgIHsNCj4gPiA+ID4gKyAgICAgICAgICAg ICAgIGludCAgICAgICAgICAgICAgICAgICAgIHNsb3Rfbm87DQo+ID4gPiA+ICsgICAgICAgICAg ICAgICB1aW50MTYgICAgICAgICAgZ2VuZXJhdGlvbjsNCj4gPiA+ID4gKyAgICAgICAgICAgICAg IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9DQo+ID4gPiA+IChQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqKSBsZmlyc3QobGMpOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsgICAgICAgICAg ICAgICBMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOw0KPiA+ ID4gPiArICAgICAgICAgICAgICAgbmFwcGx5d29ya2VycyA9DQo+ID4gPiA+IGxvZ2ljYWxyZXBf cGFfd29ya2VyX2NvdW50KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpOw0KPiA+ID4gPiArICAg ICAgICAgICAgICAgTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7DQo+ID4gPiA+ ICsNCj4gPiA+ID4gKyAgICAgICAgICAgICAgIGlmIChuYXBwbHl3b3JrZXJzIDw9DQo+ID4gPiA+ IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAyKQ0KPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47DQo+ID4gPiA+ICsNCj4gPiA+ID4NCj4g PiA+ID4gQ2FsbGluZyBsb2dpY2FscmVwX3BhX3dvcmtlcl9jb3VudCgpIHdpdGggbHdsb2NrIGZv ciBlYWNoIHdvcmtlcg0KPiA+ID4gPiBzZWVtcyBub3QgZWZmaWNpZW50IHRvIG1lLiBJIHRoaW5r IHdlIGNhbiBnZXQgdGhlIG51bWJlciBvZg0KPiA+ID4gPiB3b3JrZXJzIG9uY2UgYXQgdGhlIHRv cCBvZiB0aGlzIGZ1bmN0aW9uIGFuZCByZXR1cm4gaWYgaXQncw0KPiA+ID4gPiBhbHJlYWR5IGxv d2VyIHRoYW4gdGhlIG1heGltdW0gcG9vbCBzaXplLiBPdGhlcndpc2UsIHdlIGF0dGVtcHQgdG8g c3RvcA0KPiBleHRyYSB3b3JrZXJzLg0KPiA+ID4NCj4gPiA+IEhvdyBhYm91dCB3ZSBkaXJlY3Rs eSBjaGVjayB0aGUgbGVuZ3RoIG9mIHdvcmtlciBwb29sIGxpc3QgaGVyZQ0KPiA+ID4gd2hpY2gg c2VlbXMgc2ltcGxlciBhbmQgZG9uJ3QgbmVlZCB0byBsb2NrID8NCj4gPiA+DQo+ID4NCj4gPiBJ IGRvbid0IHNlZSBhbnkgcHJvYmxlbSB3aXRoIHRoYXQuIEFsc28sIGlmIHN1Y2ggYSBjaGVjayBp cyBzYWZlIHRoZW4NCj4gPiBjYW4ndCB3ZSB1c2UgdGhlIHNhbWUgaW4gcGFfZnJlZV93b3JrZXIo KSBhcyB3ZWxsPyBCVFcsIHNob3VsZG4ndA0KPiA+IHBhX3N0b3BfaWRsZV93b3JrZXJzKCkgdHJ5 IHRvIGZyZWUvc3RvcCB3b3JrZXJzIHVubGVzcyB0aGUgYWN0aXZlDQo+ID4gbnVtYmVyIHJlYWNo ZXMgYmVsb3cgbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbj8NCj4g Pg0KPiANCj4gQlRXLCBjYW4gd2UgbW92ZSBwYV9zdG9wX2lkbGVfd29ya2VycygpIGZ1bmN0aW9u YWxpdHkgdG8gYSBsYXRlciBwYXRjaCAoc2F5IGludG8NCj4gdjYxLTAwMDYqKT8gVGhhdCB3YXkg d2UgY2FuIGZvY3VzIG9uIGl0IHNlcGFyYXRlbHkgb25jZSB0aGUgbWFpbiBwYXRjaCBpcw0KPiBj b21taXR0ZWQuDQoNCkFncmVlZC4gSSBoYXZlIGFkZHJlc3NlZCBhbGwgdGhlIGNvbW1lbnRzIGFu ZCBkaWQgc29tZSBjb3NtZXRpYyBjaGFuZ2VzLg0KQXR0YWNoIHRoZSBuZXcgdmVyc2lvbiBwYXRj aCBzZXQuDQoNCkJlc3QgcmVnYXJkcywNCkhvdSB6ag0KDQoNCg== --_009_OS0PR01MB5716C3561CF53027F22B47AF94E79OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v62-0008-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v62-0008-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v62-0008-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=8902; creation-date="Sat, 17 Dec 2022 13:39:17 GMT"; modification-date="Sat, 17 Dec 2022 14:04:07 GMT" Content-Transfer-Encoding: base64 RnJvbSA5NWE3YmZmZWVlOWFhYjRlNzcxYTZlZGM5ZmMwODQ3NjZjNDg2MzgxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djYyIDgvOF0gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt YWluX3dvcmtlcl9waWQgaXMgUHJvY2VzcyBJRCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwg aWYgdGhpcyBwcm9jZXNzIGlzIGEKYXBwbHkgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMg cHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQpzeW5jaHJvbml6YXRpb24gd29y a2VyLgoKVGhlIG5ldyBjb2x1bW4gY2FuIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CnBhcmFsbGVsIHdvcmtlciB3aGljaCBpcyBhbHNv IHNpbWlsYXIgdG8gdGhlICdsZWFkZXJfcGlkJyBjb2x1bW4gaW4KcGdfc3RhdF9hY3Rpdml0eS4K LS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgfCAyNiArKysr KysrKysrKysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bCAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIu YyB8IDMyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdCAgICAgICAgICAgIHwgIDYgKysrLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3J1bGVzLm91dCAgICAgICAgfCAgMyArKy0KIDUgZmlsZXMgY2hhbmdlZCwgNDMgaW5z ZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21v bml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXggMmM3NmVi NS4uNDZiNzE0YiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC0zMTkxLDExICszMTkxLDIyIEBAIFNF TEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZp dHkgV0hFUkUgd2FpdF9ldmVudCBpCiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPmFwcGx5X2xlYWRlcl9waWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnRl Z2VyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUHJvY2VzcyBJ RCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwgaWYgdGhpcyBwcm9jZXNzIGlzIGEgYXBwbHkK KyAgICAgICBwYXJhbGxlbCB3b3JrZXIuIE5VTEwgaWYgdGhpcyBwcm9jZXNzIGlzIGEgbGVhZGVy IGFwcGx5IHdvcmtlciBvciBhCisgICAgICAgc3luY2hyb25pemF0aW9uIHdvcmtlci4KKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KICAgICAgICA8c3RydWN0ZmllbGQ+cmVsaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5 cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBPSUQgb2YgdGhlIHJlbGF0 aW9uIHRoYXQgdGhlIHdvcmtlciBpcyBzeW5jaHJvbml6aW5nOyBudWxsIGZvciB0aGUKLSAgICAg ICBtYWluIGFwcGx5IHdvcmtlcgorICAgICAgIG1haW4gYXBwbHkgd29ya2VyIGFuZCB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAK QEAgLTMyMDUsNyArMzIxNiw3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9l dmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICA8L3Bh cmE+CiAgICAgICA8cGFyYT4KICAgICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiBy ZWNlaXZlZCwgdGhlIGluaXRpYWwgdmFsdWUgb2YKLSAgICAgICB0aGlzIGZpZWxkIGJlaW5nIDAK KyAgICAgICB0aGlzIGZpZWxkIGJlaW5nIDA7IG51bGwgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzIxNCw3ICsz MjI1LDggQEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdf c3RhdF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGFz dF9tc2dfc2VuZF90aW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6 b25lPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgU2VuZCB0aW1l IG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyCisgICAgICAg U2VuZCB0aW1lIG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVy OyBudWxsIGZvciB0aGUKKyAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzIyMyw3ICszMjM1LDggQEAgU0VMRUNUIHBp ZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVS RSB3YWl0X2V2ZW50IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGFzdF9tc2dfcmVjZWlwdF90aW1l PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6b25lPC90eXBlPgogICAg ICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgUmVjZWlwdCB0aW1lIG9mIGxhc3QgbWVz c2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyCisgICAgICAgUmVjZWlwdCB0aW1l IG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyOyBudWxsIGZv cgorICAgICAgIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5 PgogICAgICA8L3Jvdz4KIApAQCAtMzIzMiw3ICszMjQ1LDggQEAgU0VMRUNUIHBpZCwgd2FpdF9l dmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2 ZW50IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGF0ZXN0X2VuZF9sc248L3N0cnVjdGZpZWxkPiA8 dHlwZT5wZ19sc248L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgICBM YXN0IHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FMIHNlbmRl cgorICAgICAgIExhc3Qgd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uIHJlcG9ydGVkIHRvIG9yaWdp biBXQUwgc2VuZGVyOyBudWxsIGZvcgorICAgICAgIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIK ICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzI0Miw3ICszMjU2LDcg QEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9h Y3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgog ICAgICAgIFRpbWUgb2YgbGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVwb3J0ZWQgdG8g b3JpZ2luIFdBTAotICAgICAgIHNlbmRlcgorICAgICAgIHNlbmRlcjsgbnVsbCBmb3IgdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93Pgog ICAgIDwvdGJvZHk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3 cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggYzJjN2Q4 YS4uZjI4MjU3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Mu c3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtOTQ5LDYg Kzk0OSw3IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uIEFTCiAgICAgICAgICAg ICBzdS5vaWQgQVMgc3ViaWQsCiAgICAgICAgICAgICBzdS5zdWJuYW1lLAogICAgICAgICAgICAg c3QucGlkLAorICAgICAgICAgICAgc3QuYXBwbHlfbGVhZGVyX3BpZCwKICAgICAgICAgICAgIHN0 LnJlbGlkLAogICAgICAgICAgICAgc3QucmVjZWl2ZWRfbHNuLAogICAgICAgICAgICAgc3QubGFz dF9tc2dfc2VuZF90aW1lLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hl ci5jCmluZGV4IGUwNzVjMjguLmJiNmRhZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xhdW5jaGVyLmMKQEAgLTEwNzgsNyArMTA3OCw3IEBAIElzTG9naWNhbExhdW5jaGVy KHZvaWQpCiBEYXR1bQogcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FSR1Mp CiB7Ci0jZGVmaW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElPTl9DT0xTCTgKKyNkZWZpbmUgUEdf U1RBVF9HRVRfU1VCU0NSSVBUSU9OX0NPTFMJOQogCU9pZAkJCXN1YmlkID0gUEdfQVJHSVNOVUxM KDApID8gSW52YWxpZE9pZCA6IFBHX0dFVEFSR19PSUQoMCk7CiAJaW50CQkJaTsKIAlSZXR1cm5T ZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CkBA IC0xMTA0LDEwICsxMTA0LDYgQEAgcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCWlmIChPaWRJc1ZhbGlkKHN1YmlkKSAmJiB3b3JrZXIuc3ViaWQgIT0gc3ViaWQp CiAJCQljb250aW51ZTsKIAotCQkvKiBTa2lwIGlmIHRoaXMgaXMgYSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgKi8KLQkJaWYgKGlzUGFyYWxsZWxBcHBseVdvcmtlcigmd29ya2VyKSkKLQkJCWNvbnRp bnVlOwotCiAJCXdvcmtlcl9waWQgPSB3b3JrZXIucHJvYy0+cGlkOwogCiAJCXZhbHVlc1swXSA9 IE9iamVjdElkR2V0RGF0dW0od29ya2VyLnN1YmlkKTsKQEAgLTExMTYsMjYgKzExMTIsMzIgQEAg cGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVsc2UKIAkJCW51 bGxzWzFdID0gdHJ1ZTsKIAkJdmFsdWVzWzJdID0gSW50MzJHZXREYXR1bSh3b3JrZXJfcGlkKTsK LQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQod29ya2VyLmxhc3RfbHNuKSkKKworCQlpZiAod29y a2VyLmFwcGx5X2xlYWRlcl9waWQgPT0gSW52YWxpZFBpZCkKIAkJCW51bGxzWzNdID0gdHJ1ZTsK IAkJZWxzZQotCQkJdmFsdWVzWzNdID0gTFNOR2V0RGF0dW0od29ya2VyLmxhc3RfbHNuKTsKLQkJ aWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9PSAwKQorCQkJdmFsdWVzWzNdID0gSW50MzJHZXRE YXR1bSh3b3JrZXIuYXBwbHlfbGVhZGVyX3BpZCk7CisKKwkJaWYgKFhMb2dSZWNQdHJJc0ludmFs aWQod29ya2VyLmxhc3RfbHNuKSkKIAkJCW51bGxzWzRdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFs dWVzWzRdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9zZW5kX3RpbWUpOwotCQlp ZiAod29ya2VyLmxhc3RfcmVjdl90aW1lID09IDApCisJCQl2YWx1ZXNbNF0gPSBMU05HZXREYXR1 bSh3b3JrZXIubGFzdF9sc24pOworCQlpZiAod29ya2VyLmxhc3Rfc2VuZF90aW1lID09IDApCiAJ CQludWxsc1s1XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s1XSA9IFRpbWVzdGFtcFR6R2V0 RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1lKTsKLQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQo d29ya2VyLnJlcGx5X2xzbikpCisJCQl2YWx1ZXNbNV0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdv cmtlci5sYXN0X3NlbmRfdGltZSk7CisJCWlmICh3b3JrZXIubGFzdF9yZWN2X3RpbWUgPT0gMCkK IAkJCW51bGxzWzZdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzZdID0gTFNOR2V0RGF0dW0o d29ya2VyLnJlcGx5X2xzbik7Ci0JCWlmICh3b3JrZXIucmVwbHlfdGltZSA9PSAwKQorCQkJdmFs dWVzWzZdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9yZWN2X3RpbWUpOworCQlp ZiAoWExvZ1JlY1B0cklzSW52YWxpZCh3b3JrZXIucmVwbHlfbHNuKSkKIAkJCW51bGxzWzddID0g dHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzddID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIu cmVwbHlfdGltZSk7CisJCQl2YWx1ZXNbN10gPSBMU05HZXREYXR1bSh3b3JrZXIucmVwbHlfbHNu KTsKKwkJaWYgKHdvcmtlci5yZXBseV90aW1lID09IDApCisJCQludWxsc1s4XSA9IHRydWU7CisJ CWVsc2UKKwkJCXZhbHVlc1s4XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLnJlcGx5X3Rp bWUpOwogCiAJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCByc2luZm8t PnNldERlc2MsCiAJCQkJCQkJIHZhbHVlcywgbnVsbHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK aW5kZXggNzE5NTk5Ni4uY2EzNjBhYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC01NDI2 LDkgKzU0MjYsOSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24nLCBw cm9yb3dzID0+ICcxMCcsIHByb2lzc3RyaWN0ID0+ICdmJywKICAgcHJvcmV0c2V0ID0+ICd0Jywg cHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsCiAgIHByb3JldHR5cGUgPT4g J3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAotICBwcm9hbGxhcmd0eXBlcyA9PiAne29p ZCxvaWQsb2lkLGludDQscGdfbHNuLHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1l c3RhbXB0en0nLAotICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvfScsCi0gIHBy b2FyZ25hbWVzID0+ICd7c3ViaWQsc3ViaWQscmVsaWQscGlkLHJlY2VpdmVkX2xzbixsYXN0X21z Z19zZW5kX3RpbWUsbGFzdF9tc2dfcmVjZWlwdF90aW1lLGxhdGVzdF9lbmRfbHNuLGxhdGVzdF9l bmRfdGltZX0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCxvaWQsb2lkLGludDQsaW50NCxw Z19sc24sdGltZXN0YW1wdHosdGltZXN0YW1wdHoscGdfbHNuLHRpbWVzdGFtcHR6fScsCisgIHBy b2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvLG8sbyxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAn e3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxhcHBseV9sZWFkZXJfcGlkLHJlY2VpdmVkX2xzbixsYXN0 X21zZ19zZW5kX3RpbWUsbGFzdF9tc2dfcmVjZWlwdF90aW1lLGxhdGVzdF9lbmRfbHNuLGxhdGVz dF9lbmRfdGltZX0nLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbicgfSwK IHsgb2lkID0+ICcyMDI2JywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IGN1cnJlbnQgYmFja2VuZCBQ SUQnLAogICBwcm9uYW1lID0+ICdwZ19iYWNrZW5kX3BpZCcsIHByb3ZvbGF0aWxlID0+ICdzJywg cHJvcGFyYWxsZWwgPT4gJ3InLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCBm YjlmOTM2Li43ZTZlYTYwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMjA5 NCw2ICsyMDk0LDcgQEAgcGdfc3RhdF9zc2x8IFNFTEVDVCBzLnBpZCwKIHBnX3N0YXRfc3Vic2Ny aXB0aW9ufCBTRUxFQ1Qgc3Uub2lkIEFTIHN1YmlkLAogICAgIHN1LnN1Ym5hbWUsCiAgICAgc3Qu cGlkLAorICAgIHN0LmFwcGx5X2xlYWRlcl9waWQsCiAgICAgc3QucmVsaWQsCiAgICAgc3QucmVj ZWl2ZWRfbHNuLAogICAgIHN0Lmxhc3RfbXNnX3NlbmRfdGltZSwKQEAgLTIxMDEsNyArMjEwMiw3 IEBAIHBnX3N0YXRfc3Vic2NyaXB0aW9ufCBTRUxFQ1Qgc3Uub2lkIEFTIHN1YmlkLAogICAgIHN0 LmxhdGVzdF9lbmRfbHNuLAogICAgIHN0LmxhdGVzdF9lbmRfdGltZQogICAgRlJPTSAocGdfc3Vi c2NyaXB0aW9uIHN1Ci0gICAgIExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oTlVM TDo6b2lkKSBzdChzdWJpZCwgcmVsaWQsIHBpZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5k X3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGltZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRf dGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9pZCkpKTsKKyAgICAgTEVGVCBKT0lOIHBnX3N0YXRf Z2V0X3N1YnNjcmlwdGlvbihOVUxMOjpvaWQpIHN0KHN1YmlkLCByZWxpZCwgcGlkLCBhcHBseV9s ZWFkZXJfcGlkLCByZWNlaXZlZF9sc24sIGxhc3RfbXNnX3NlbmRfdGltZSwgbGFzdF9tc2dfcmVj ZWlwdF90aW1lLCBsYXRlc3RfZW5kX2xzbiwgbGF0ZXN0X2VuZF90aW1lKSBPTiAoKHN0LnN1Ymlk ID0gc3Uub2lkKSkpOwogcGdfc3RhdF9zdWJzY3JpcHRpb25fc3RhdHN8IFNFTEVDVCBzcy5zdWJp ZCwKICAgICBzLnN1Ym5hbWUsCiAgICAgc3MuYXBwbHlfZXJyb3JfY291bnQsCi0tIAoyLjcuMi53 aW5kb3dzLjEKCg== --_009_OS0PR01MB5716C3561CF53027F22B47AF94E79OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v62-0002-Serialize-partial-changes-to-a-file-when-the-att.patch" Content-Description: v62-0002-Serialize-partial-changes-to-a-file-when-the-att.patch Content-Disposition: attachment; filename="v62-0002-Serialize-partial-changes-to-a-file-when-the-att.patch"; size=44383; creation-date="Sat, 17 Dec 2022 13:39:17 GMT"; modification-date="Sat, 17 Dec 2022 14:04:08 GMT" Content-Transfer-Encoding: base64 RnJvbSA4NjM0NTA1OGFlODAyM2ZlMGNmYTRiY2ZhMThjZDQ4YTMwNzFlNGNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTYXQsIDE3IERlYyAyMDIyIDIxOjQ1OjI1ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NjIgMi8yXSBTZXJpYWxpemUgcGFydGlhbCBjaGFuZ2VzIHRvIGEgZmlsZSB3aGVuIHRoZSBhdHRl bXB0CiB0byBzZW5kIGRhdGEgdGltZXMgb3V0LgoKSW4gcGF0Y2ggMDAwMSBpZiB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciB0aW1lcyBvdXQgd2hpbGUgYXR0ZW1wdGluZyB0bwpzZW5kIGEgbWVzc2Fn ZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGl0IHJlc3VsdHMgaW4gYW4gRVJST1IuCgpU aGlzIHBhdGNoICgwMDAyKSBtb2RpZmllcyB0aGF0IGJlaGF2aW91ciwgc28gaW5zdGVhZCBvZiBl cnJvcmluZyBpdAp3aWxsIHN3aXRjaCB0byAicGFydGlhbCBzZXJpYWxpemUiIG1vZGUgLSAgaW4g dGhpcyBtb2RlIHRoZSBsZWFkZXIKc2VyaWFsaXplcyBhbGwgcmVtYWluaW5nIGNoYW5nZXMgdG8g YSBmaWxlIGFuZCBub3RpZmllcyB0aGUgcGFyYWxsZWwKYXBwbHkgd29ya2VycyB0byByZWFkIGFu ZCBhcHBseSB0aGVtIGF0IHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uLgotLS0KIC4uLi9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyAgICAgIHwgMjE4ICsrKysrKyst LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgICAgICAgfCA0 OTcgKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJf aW50ZXJuYWwuaCAgICAgICAgICB8ICA1MyArKy0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0ICAgICAgICAgICAgICAgICAgIHwgICAxICsKIDQgZmlsZXMgY2hhbmdlZCwgNjI5IGlu c2VydGlvbnMoKyksIDE0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IDAzYjY1NDYuLjI1 OTM0OTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBw bHlwYXJhbGxlbHdvcmtlci5jCkBAIC0xMzcsOSArMTM3LDExIEBACiAgKiBjb25jdXJyZW50bHkp LCBpZiB0aGUgc2htX21xIGJ1ZmZlciBiZXR3ZWVuIExBIGFuZCBQQS0yIGlzIGZ1bGwsIExBIGhh cyB0bwogICogd2FpdCB0byBzZW5kIG1lc3NhZ2VzLCBhbmQgdGhpcyB3YWl0IGRvZXNuJ3QgYXBw ZWFyIGluIGxtZ3IuCiAgKgotICogVG8gcmVzb2x2ZSB0aGlzIGlzc3VlLCB3ZSB1c2Ugbm9uLWJs b2NraW5nIHdyaXRlIGFuZCB3YWl0IHdpdGggYSB0aW1lb3V0LiBJZgotICogdGhlIHRpbWVvdXQg aXMgZXhjZWVkZWQsIHRoZSBMQSByZXBvcnRzIGFuIGVycm9yIGFuZCByZXN0YXJ0cyBsb2dpY2Fs Ci0gKiByZXBsaWNhdGlvbi4KKyAqIFRvIGF2b2lkIHRoaXMgd2FpdCwgd2UgdXNlIGEgbm9uLWJs b2NraW5nIHdyaXRlIGFuZCB3YWl0IHdpdGggYSB0aW1lb3V0LiBJZgorICogdGhlIHRpbWVvdXQg aXMgZXhjZWVkZWQsIHRoZSBMQSB3aWxsIHNlcmlhbGl6ZSB0aGUgbWVzc2FnZSB0byBhIGZpbGUg YW5kCisgKiBpbmRpY2F0ZSBQQS0yIHRoYXQgaXQgbmVlZHMgdG8gcmVhZCB0aGF0IGZpbGUgZm9y IHRoZSByZW1haW5pbmcgbWVzc2FnZXMuCisgKiBUaGVuIExBIHdpbGwgc3RhcnQgd2FpdGluZyBm b3IgY29tbWl0IHdoaWNoIHdpbGwgZGV0ZWN0IGRlYWRsb2NrIGlmIGFueS4KKyAqIFNlZSBwYV9z ZW5kX2RhdGEoKSBhbmQgZW51bSBUcmFuc0FwcGx5QWN0aW9uLgogICoKICAqIDQpIExvY2sgdHlw ZXMKICAqCkBAIC0yNTIsNiArMjU0LDcgQEAgc3RhdGljIExpc3QJICAgKnN1YnhhY3RsaXN0ID0g TklMOwogCiBzdGF0aWMgdm9pZCBwYV9mcmVlX3dvcmtlcl9pbmZvKFBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICp3aW5mbyk7CiBzdGF0aWMgUGFyYWxsZWxUcmFuc1N0YXRlIHBhX2dldF94YWN0X3N0 YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpOworc3RhdGljIFBhcnRpYWxG aWxlU2V0U3RhdGUgcGFfZ2V0X2ZpbGVzZXRfc3RhdGUodm9pZCk7CiAKIC8qCiAgKiBSZXR1cm5z IHRydWUgaWYgaXQgaXMgT0sgdG8gc3RhcnQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIGZhbHNl IG90aGVyd2lzZS4KQEAgLTM0OSw2ICszNTIsNyBAQCBwYV9zZXR1cF9kc20oUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKndpbmZvKQogCXNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RSQU5T X1VOS05PV047CiAJcGdfYXRvbWljX2luaXRfdTMyKCYoc2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9j b3VudCksIDApOwogCXNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gSW52YWxpZFhMb2dSZWNQdHI7 CisJc2hhcmVkLT5maWxlc2V0X3N0YXRlID0gRlNfRU1QVFk7CiAKIAlzaG1fdG9jX2luc2VydCh0 b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQsIHNoYXJlZCk7CiAKQEAgLTQ5MCwxMyArNDk0 LDE0IEBAIHBhX2FsbG9jYXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCkKIAlpZiAoZm91bmQp CiAJCWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOwogCi0JLyogSW5pdGlhbGl6 ZSBzaGFyZWQgbWVtb3J5IGFyZWEuICovCisJLyogVXBkYXRlIHRoZSB0cmFuc2FjdGlvbiBpbmZv cm1hdGlvbiBpbiBzaGFyZWQgbWVtb3J5LiAqLwogCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNo YXJlZC0+bXV0ZXgpOwogCXdpbmZvLT5zaGFyZWQtPnhhY3Rfc3RhdGUgPSBQQVJBTExFTF9UUkFO U19VTktOT1dOOwogCXdpbmZvLT5zaGFyZWQtPnhpZCA9IHhpZDsKIAlTcGluTG9ja1JlbGVhc2Uo JndpbmZvLT5zaGFyZWQtPm11dGV4KTsKIAogCXdpbmZvLT5pbl91c2UgPSB0cnVlOworCXdpbmZv LT5zZXJpYWxpemVfY2hhbmdlcyA9IGZhbHNlOwogCWVudHJ5LT53aW5mbyA9IHdpbmZvOwogCWVu dHJ5LT54aWQgPSB4aWQ7CiB9CkBAIC01NjQsOCArNTY5LDE3IEBAIHBhX2ZyZWVfd29ya2VyKFBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKIAlpZiAoIWhhc2hfc2VhcmNoKFBhcmFsbGVs QXBwbHlUeG5IYXNoLCAmd2luZm8tPnNoYXJlZC0+eGlkLCBIQVNIX1JFTU9WRSwgTlVMTCkpCiAJ CWVsb2coRVJST1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOwogCi0JLyogU3RvcCB0aGUgd29y a2VyIGlmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2VycyBpbiB0aGUgcG9vbC4gKi8KLQlpZiAobGlz dF9sZW5ndGgoUGFyYWxsZWxBcHBseVdvcmtlclBvb2wpID4KKwkvKgorCSAqIFN0b3AgdGhlIHdv cmtlciBpZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wuCisJICoKKwkgKiBY WFggVGhlIHdvcmtlciBpcyBhbHNvIHN0b3BwZWQgaWYgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIg bmVlZGVkIHRvCisJICogc2VyaWFsaXplIHBhcnQgb2YgdGhlIHRyYW5zYWN0aW9uIGRhdGEgZHVl IHRvIGEgc2VuZCB0aW1lb3V0LiBUaGlzIGlzCisJICogYmVjYXVzZSB0aGUgbWVzc2FnZSBjb3Vs ZCBiZSBwYXJ0aWFsbHkgd3JpdHRlbiB0byB0aGUgcXVldWUgYnV0IHRoZXJlIGlzCisJICogbm8g d2F5IHRvIGNsZWFuIHRoZSBxdWV1ZSBvdGhlciB0aGFuIHJlc2VuZGluZyB0aGUgbWVzc2FnZSB1 bnRpbCBpdAorCSAqIHN1Y2NlZWRzLiBEaXJlY3RseSBzdG9wcGluZyB0aGUgd29ya2VyIGF2b2lk cyBuZWVkaW5nIHRoaXMgY29tcGxleGl0eS4KKwkgKi8KKwlpZiAod2luZm8tPnNlcmlhbGl6ZV9j aGFuZ2VzIHx8CisJCWxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKSA+CiAJCSht YXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIC8gMikpCiAJewogCQlp bnQJCQlzbG90X25vOwpAQCAtNTg0LDExICs1OTgsMTUgQEAgcGFfZnJlZV93b3JrZXIoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQogCX0KIAogCXdpbmZvLT5pbl91c2UgPSBmYWxzZTsK Kwl3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMgPSBmYWxzZTsKIAogCXJldHVybiBmYWxzZTsKIH0K IAotLyogRnJlZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uLiAqLworLyoK KyAqIEZyZWUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbmZvcm1hdGlvbiBhbmQgdW5saW5r IHRoZSBmaWxlcyB3aXRoCisgKiBzZXJpYWxpemVkIGNoYW5nZXMgaWYgYW55LgorICovCiBzdGF0 aWMgdm9pZAogcGFfZnJlZV93b3JrZXJfaW5mbyhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2lu Zm8pCiB7CkBAIC02MDAsNiArNjE4LDEwIEBAIHBhX2ZyZWVfd29ya2VyX2luZm8oUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvKQogCWlmICh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKQogCQlz aG1fbXFfZGV0YWNoKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUpOwogCisJLyogVW5saW5rIHRoZSBm aWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcy4gKi8KKwlpZiAod2luZm8tPnNlcmlhbGl6ZV9j aGFuZ2VzKQorCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1Ymlk LCB3aW5mby0+c2hhcmVkLT54aWQpOworCiAJaWYgKHdpbmZvLT5kc21fc2VnKQogCQlkc21fZGV0 YWNoKHdpbmZvLT5kc21fc2VnKTsKIApAQCAtNjI3LDYgKzY0OSw3MCBAQCBwYV9kZXRhY2hfYWxs X2Vycm9yX21xKHZvaWQpCiB9CiAKIC8qCisgKiBDaGVjayBpZiB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyIGlzIHBlbmRpbmcgZHVlIHRvIHNwb29sZWQgbWVzc2FnZXMuCisgKi8KK3N0YXRpYyBi b29sCitwYV9oYXNfc3Bvb2xlZF9tZXNzYWdlX3BlbmRpbmcoKQoreworCVBhcnRpYWxGaWxlU2V0 U3RhdGUgZmlsZXNldF9zdGF0ZTsKKworCWZpbGVzZXRfc3RhdGUgPSBwYV9nZXRfZmlsZXNldF9z dGF0ZSgpOworCisJcmV0dXJuIChmaWxlc2V0X3N0YXRlICE9IEZTX0VNUFRZKTsKK30KKworLyoK KyAqIFJlcGxheSB0aGUgc3Bvb2xlZCBtZXNzYWdlcyBpbiB0aGUgcGFyYWxsZWwgYXBwbHkgd29y a2VyIGlmIHRoZSBsZWFkZXIgYXBwbHkKKyAqIHdvcmtlciBoYXMgZmluaXNoZWQgc2VyaWFsaXpp bmcgY2hhbmdlcyB0byB0aGUgZmlsZS4KKyAqLworc3RhdGljIHZvaWQKK3BhX3Nwb29sZWRfbWVz c2FnZXModm9pZCkKK3sKKwlQYXJ0aWFsRmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGU7CisKKwlm aWxlc2V0X3N0YXRlID0gcGFfZ2V0X2ZpbGVzZXRfc3RhdGUoKTsKKworCS8qCisJICogSWYgdGhl IGxlYWRlciBhcHBseSB3b3JrZXIgaXMgYnVzeSBzZXJpYWxpemluZyB0aGUgcGFydGlhbCBjaGFu Z2VzIHRoZW4KKwkgKiBhY3F1aXJlIHRoZSBzdHJlYW0gbG9jayBub3cgYW5kIHdhaXQgZm9yIHRo ZSBsZWFkZXIgd29ya2VyIHRvIGZpbmlzaAorCSAqIHNlcmlhbGl6aW5nIHRoZSBjaGFuZ2VzLiBP dGhlcndpc2UsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd29uJ3QgZ2V0CisJICogYSBjaGFu Y2UgdG8gcmVjZWl2ZSBhIFNUUkVBTV9TVE9QIChhbmQgYWNxdWlyZSB0aGUgc3RyZWFtIGxvY2sp IHVudGlsCisJICogdGhlIGxlYWRlciBoYWQgc2VyaWFsaXplZCBhbGwgY2hhbmdlcyB3aGljaCBj YW4gbGVhZCB0byB1bmRldGVjdGVkCisJICogZGVhZGxvY2suCisJICoKKwkgKiBYWFggSXQgaXMg cG9zc2libGUgdGhhdCBpbW1lZGlhdGVseSBhZnRlciB3ZSBoYXZlIHdhaXRlZCBmb3IgYSBsb2Nr IGluCisJICogdGhlIEZTX1NFUklBTElaRV9JTl9QUk9HUkVTUyBzdGF0ZSwgdGhlIGZpbGVzZXQg c3RhdGUgYmVjb21lcworCSAqIEZTX1NFUklBTElaRV9ET05FIGJ1dCByZS1jaGVja2luZyBpdCBh Z2FpbiBkb2Vzbid0IHNlZW0gd29ydGggaXQuCisJICogQW55d2F5LCBuZXh0IHRpbWUgd2hlbiB0 aGlzIGZ1bmN0aW9uIGlzIGludm9rZWQsIHdlIHdpbGwgc2V0IHRoZSBzdGF0ZQorCSAqIHRvIEZT X1JFQURZLgorCSAqLworCWlmIChmaWxlc2V0X3N0YXRlID09IEZTX1NFUklBTElaRV9JTl9QUk9H UkVTUykKKwl7CisJCXBhX2xvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNjZXNz U2hhcmVMb2NrKTsKKwkJcGFfdW5sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFj Y2Vzc1NoYXJlTG9jayk7CisJfQorCisJLyoKKwkgKiBXZSBjYW5ub3QgcmVhZCB0aGUgZmlsZSBp bW1lZGlhdGVseSBhZnRlciB0aGUgbGVhZGVyIGhhcyBzZXJpYWxpemVkIGFsbAorCSAqIGNoYW5n ZXMgdG8gdGhlIGZpbGUgYmVjYXVzZSB0aGVyZSBtYXkgc3RpbGwgYmUgbWVzc2FnZXMgaW4gdGhl IG1lbW9yeQorCSAqIHF1ZXVlLiBXZSB3aWxsIGFwcGx5IGFsbCBzcG9vbGVkIG1lc3NhZ2VzIHRo ZSBuZXh0IHRpbWUgd2UgY2FsbCB0aGlzCisJICogZnVuY3Rpb24sIHdoaWNoIHNob3VsZCBlbnN1 cmUgdGhhdCB0aGVyZSBhcmUgbm8gbWVzc2FnZXMgbGVmdCBpbiB0aGUKKwkgKiBtZW1vcnkgcXVl dWUuCisJICovCisJZWxzZSBpZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19TRVJJQUxJWkVfRE9ORSkK Kwl7CisJCXBhX3NldF9maWxlc2V0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIEZTX1JFQURZKTsK Kwl9CisJZWxzZSBpZiAoZmlsZXNldF9zdGF0ZSA9PSBGU19SRUFEWSkKKwl7CisJCWFwcGx5X3Nw b29sZWRfbWVzc2FnZXMoJk15UGFyYWxsZWxTaGFyZWQtPmZpbGVzZXQsCisJCQkJCQkJICAgTXlQ YXJhbGxlbFNoYXJlZC0+eGlkLAorCQkJCQkJCSAgIEludmFsaWRYTG9nUmVjUHRyKTsKKwkJcGFf c2V0X2ZpbGVzZXRfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwgRlNfRU1QVFkpOworCX0KK30KKwor LyoKICAqIEludGVycnVwdCBoYW5kbGVyIGZvciBtYWluIGxvb3Agb2YgcGFyYWxsZWwgYXBwbHkg d29ya2VyLgogICovCiBzdGF0aWMgdm9pZApAQCAtNzEwLDYgKzc5NiwxMSBAQCBMb2dpY2FsUGFy YWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoKQogCQkJLyoKIAkJCSAqIElnbm9yZSBz dGF0aXN0aWNzIGZpZWxkcyB0aGF0IGhhdmUgYmVlbiB1cGRhdGVkIGJ5IHRoZSBsZWFkZXIKIAkJ CSAqIGFwcGx5IHdvcmtlci4KKwkJCSAqCisJCQkgKiBYWFggV2UgY2FuIGF2b2lkIHNlbmRpbmcg dGhlIHN0YXRpc3RpY3MgZmllbGRzIGZyb20gdGhlIGxlYWRlcgorCQkJICogYXBwbHkgd29ya2Vy IGJ1dCBmb3IgdGhhdCwgaXQgbmVlZHMgdG8gcmVidWlsZCB0aGUgZW50aXJlCisJCQkgKiBtZXNz YWdlIGJ5IHJlbW92aW5nIHRoZXNlIGZpZWxkcyB3aGljaCBjb3VsZCBiZSBtb3JlIHdvcmsgdGhh bgorCQkJICogc2ltcGx5IGlnbm9yaW5nIHRoZXNlIGZpZWxkcyBpbiB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyLgogCQkJICovCiAJCQlzLmN1cnNvciArPSBTSVpFX1NUQVRTX01FU1NBR0U7CiAK QEAgLTcxNywxNiArODA4LDI0IEBAIExvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcChzaG1fbXFfaGFu ZGxlICptcWgpCiAJCX0KIAkJZWxzZSBpZiAoc2htcV9yZXMgPT0gU0hNX01RX1dPVUxEX0JMT0NL KQogCQl7Ci0JCQlpbnQJCQlyYzsKKwkJCS8qIENoZWNrIGlmIGNoYW5nZXMgaGF2ZSBiZWVuIHNl cmlhbGl6ZWQgdG8gYSBmaWxlLiAqLworCQkJaWYgKHBhX2hhc19zcG9vbGVkX21lc3NhZ2VfcGVu ZGluZygpKQorCQkJeworCQkJCXBhX3Nwb29sZWRfbWVzc2FnZXMoKTsKKwkJCX0KKwkJCWVsc2UK KwkJCXsKKwkJCQlpbnQJcmM7CiAKLQkJCS8qIFdhaXQgZm9yIG1vcmUgd29yay4gKi8KLQkJCXJj ID0gV2FpdExhdGNoKE15TGF0Y2gsCi0JCQkJCQkgICBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VU IHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKLQkJCQkJCSAgIDEwMDBMLAotCQkJCQkJICAgV0FJVF9F VkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4pOworCQkJCS8qIFdhaXQgZm9yIG1vcmUg d29yay4gKi8KKwkJCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAorCQkJCQkJCSAgIFdMX0xBVENI X1NFVCB8IFdMX1RJTUVPVVQgfCBXTF9FWElUX09OX1BNX0RFQVRILAorCQkJCQkJCSAgIDEwMDBM LAorCQkJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9NQUlOKTsKIAot CQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQotCQkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQkJ aWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQkJfQog CQl9CiAJCWVsc2UKIAkJewpAQCAtMTA0Miw4ICsxMTQxLDExIEBAIEhhbmRsZVBhcmFsbGVsQXBw bHlNZXNzYWdlcyh2b2lkKQogLyoKICAqIFNlbmQgdGhlIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBw YXJhbGxlbCBhcHBseSB3b3JrZXIgdmlhIHNoYXJlZC1tZW1vcnkKICAqIHF1ZXVlLgorICoKKyAq IFJldHVybiBmYWxzZSBpZiB0aGUgYXR0ZW1wdCB0byBzZW5kIGRhdGEgdmlhIHNoYXJlZCBtZW1v cnkgdGltZXMgb3V0LCB0cnVlCisgKiBvdGhlcndpc2UuCiAgKi8KLXZvaWQKK2Jvb2wKIHBhX3Nl bmRfZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLCBjb25z dCB2b2lkICpkYXRhKQogewogCWludAkJCXJjOwpAQCAtMTA1MSw2ICsxMTUzLDcgQEAgcGFfc2Vu ZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsIGNvbnN0 IHZvaWQgKmRhdGEpCiAJVGltZXN0YW1wVHogc3RhcnRUaW1lID0gMDsKIAogCUFzc2VydCghSXNU cmFuc2FjdGlvblN0YXRlKCkpOworCUFzc2VydCghd2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKTsK IAogI2RlZmluZSBTSE1fU0VORF9SRVRSWV9JTlRFUlZBTF9NUyAxMDAwCiAjZGVmaW5lIFNITV9T RU5EX1RJTUVPVVRfTVMJCSgxMDAwMCAtIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TKQpAQCAt MTA2MCw3ICsxMTYzLDcgQEAgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3 aW5mbywgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEpCiAJCXJlc3VsdCA9IHNobV9tcV9z ZW5kKHdpbmZvLT5tcV9oYW5kbGUsIG5ieXRlcywgZGF0YSwgdHJ1ZSwgdHJ1ZSk7CiAKIAkJaWYg KHJlc3VsdCA9PSBTSE1fTVFfU1VDQ0VTUykKLQkJCWJyZWFrOworCQkJcmV0dXJuIHRydWU7CiAJ CWVsc2UgaWYgKHJlc3VsdCA9PSBTSE1fTVFfREVUQUNIRUQpCiAJCQllcmVwb3J0KEVSUk9SLAog CQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK QEAgLTEwODAsMjMgKzExODMsNDcgQEAgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEpCiAJCQlDSEVDS19GT1Jf SU5URVJSVVBUUygpOwogCQl9CiAKLQkJLyoKLQkJICogSWYgdGhlIGF0dGVtcHQgdG8gc2VuZCBk YXRhIHZpYSBzaGFyZWQgbWVtb3J5IHRpbWVzIG91dCwgd2UgcmVzdGFydAotCQkgKiB0aGUgbG9n aWNhbCByZXBsaWNhdGlvbiB0byBwcmV2ZW50IHBvc3NpYmxlIGRlYWRsb2NrcyB3aXRoIGFub3Ro ZXIKLQkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBSZWZlciB0byB0aGUgY29tbWVudHMgYXRv cCB0aGlzIGZpbGUgZm9yCi0JCSAqIGRldGFpbHMuCi0JCSAqLwogCQlpZiAoc3RhcnRUaW1lID09 IDApCiAJCQlzdGFydFRpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CiAJCWVsc2UgaWYgKFRp bWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHN0YXJ0VGltZSwgR2V0Q3VycmVudFRpbWVzdGFtcCgp LAogCQkJCQkJCQkJCQlTSE1fU0VORF9USU1FT1VUX01TKSkKLQkJCWVyZXBvcnQoRVJST1IsCi0J CQkJCShlcnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9GQUlMVVJFKSwKLQkJCQkJIGVycm1zZygi dGVybWluYXRpbmcgbG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZHVl IHRvIHRpbWVvdXQiKSkpOworCQkJcmV0dXJuIGZhbHNlOwogCX0KIH0KIAogLyoKKyAqIFN3aXRj aCB0byBQQVJUSUFMX1NFUklBTElaRSBtb2RlIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiAt LSB0aGlzIG1lYW5zCisgKiB0aGF0IHRoZSBjdXJyZW50IGRhdGEgYW5kIGFueSBzdWJzZXF1ZW50 IGRhdGEgZm9yIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZQorICogc2VyaWFsaXplZCB0byBhIGZp bGUuIFRoaXMgaXMgZG9uZSB0byBwcmV2ZW50IHBvc3NpYmxlIGRlYWRsb2NrcyB3aXRoCisgKiBh bm90aGVyIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAocmVmZXIgdG8gdGhlIGNvbW1lbnRzIGF0b3AK KyAqIGFwcGx5cGFyYWxsZWx3b3JrZXIuYyBmb3IgZGV0YWlscykuCisgKi8KK3ZvaWQKK3BhX3N3 aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8s CisJCQkJCQkJICAgYm9vbCBzdHJlYW1fbG9ja2VkKQoreworCS8qCisJICogVGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBjb3VsZCBiZSBzdHVjayBmb3Igc29tZSByZWFzb24gKHNheSB3YWl0aW5n IG9uCisJICogc29tZSBsb2NrIGJ5IG90aGVyIGJhY2tlbmQpLCBzbyBzdG9wIHRyeWluZyB0byBz ZW5kIGRhdGEgZGlyZWN0bHkgdG8gaXQKKwkgKiBhbmQgc3RhcnQgdG8gc2VyaWFsaXplIGRhdGEg dG8gZmlsZSBpbnN0ZWFkLgorCSAqLworCXdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcyA9IHRydWU7 CisKKwkvKiBJbml0aWFsaXplIHRoZSBzdHJlYW0gZmlsZXNldC4gKi8KKwlzdHJlYW1fc3RhcnRf aW50ZXJuYWwod2luZm8tPnNoYXJlZC0+eGlkLCB0cnVlKTsKKworCS8qCisJICogQWNxdWlyZXMg dGhlIHN0cmVhbSBsb2NrIGlmIG5vdCBhbHJlYWR5IHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBwYXJh bGxlbAorCSAqIGFwcGx5IHdvcmtlciB3aWxsIHdhaXQgZm9yIHRoZSBsZWFkZXIgdG8gcmVsZWFz ZSB0aGUgc3RyZWFtIGxvY2sgdW50aWwKKwkgKiB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlvbi4K KwkgKi8KKwlpZiAoIXN0cmVhbV9sb2NrZWQpCisJCXBhX2xvY2tfc3RyZWFtKHdpbmZvLT5zaGFy ZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisKKwlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3 aW5mby0+c2hhcmVkLCBGU19TRVJJQUxJWkVfSU5fUFJPR1JFU1MpOworfQorCisvKgogICogV2Fp dCB1bnRpbCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyJ3MgdHJhbnNhY3Rpb24gc3RhdGUgaGFz IHJlYWNoZWQgb3IKICAqIGV4Y2VlZGVkIHRoZSBnaXZlbiB4YWN0X3N0YXRlLgogICovCkBAIC0x MzQ5LDYgKzE0NzYsNDUgQEAgcGFfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1BYm9ydERh dGEgKmFib3J0X2RhdGEpCiB9CiAKIC8qCisgKiBTZXQgdGhlIGZpbGVzZXQgc3RhdGUgZm9yIHRo ZSBnaXZlbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFRoZSBmaWxlc2V0CisgKiB3aWxsIGJlIHNl dCBvbmNlIHRoZSBsZWFkZXIgd29ya2VyIHNlcmlhbGl6ZWQgYWxsIGNoYW5nZXMgdG8gdGhlIGZp bGUKKyAqIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor ICovCit2b2lkCitwYV9zZXRfZmlsZXNldF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVk ICp3c2hhcmVkLAorCQkJCQkgUGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlKQorewor CVNwaW5Mb2NrQWNxdWlyZSgmd3NoYXJlZC0+bXV0ZXgpOworCXdzaGFyZWQtPmZpbGVzZXRfc3Rh dGUgPSBmaWxlc2V0X3N0YXRlOworCisJaWYgKGZpbGVzZXRfc3RhdGUgPT0gRlNfU0VSSUFMSVpF X0RPTkUpCisJeworCQlBc3NlcnQoYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKTsKKwkJQXNzZXJ0 KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCQl3c2hhcmVkLT5maWxlc2V0 ID0gKk15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQ7CisJfQorCisJU3BpbkxvY2tS ZWxlYXNlKCZ3c2hhcmVkLT5tdXRleCk7Cit9CisKKy8qCisgKiBHZXQgdGhlIGZpbGVzZXQgc3Rh dGUgZm9yIHRoZSBjdXJyZW50IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLworc3RhdGljIFBh cnRpYWxGaWxlU2V0U3RhdGUKK3BhX2dldF9maWxlc2V0X3N0YXRlKHZvaWQpCit7CisJUGFydGlh bEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRlOworCisJQXNzZXJ0KGFtX3BhcmFsbGVsX2FwcGx5 X3dvcmtlcigpKTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgp OworCWZpbGVzZXRfc3RhdGUgPSBNeVBhcmFsbGVsU2hhcmVkLT5maWxlc2V0X3N0YXRlOworCVNw aW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCisJcmV0dXJuIGZpbGVz ZXRfc3RhdGU7Cit9CisKKy8qCiAgKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGFjcXVpcmUgYW5kIHJl bGVhc2UgYSBsb2NrIGZvciBlYWNoIHN0cmVhbSBibG9jay4KICAqCiAgKiBTZXQgbG9ja3RhZ19m aWVsZDQgdG8gUEFSQUxMRUxfQVBQTFlfTE9DS19TVFJFQU0gdG8gaW5kaWNhdGUgdGhhdCBpdCdz IGEKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDU4ZDRmYmYu LjU5NmVkN2QgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAt MjYwLDYgKzI2MCwxOCBAQCB0eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tBcmcKICAq IFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IGFuZCBuZWVkIHRvIHNlbmQKICAqIHRoZSBjaGFuZ2VzIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIuCiAgKgorICogVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorICogVGhpcyBh Y3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIGhh dmUgc2VudCBzb21lCisgKiBjaGFuZ2VzIGRpcmVjdGx5IHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhbmdlcyBhcmUKKyAqIHNlcmlhbGl6ZWQgdG8gYSBm aWxlLCBkdWUgdG8gdGltZW91dCB3aGlsZSBzZW5kaW5nIGRhdGEuIFRoZSBwYXJhbGxlbCBhcHBs eQorICogd29ya2VyIHdpbGwgYXBwbHkgdGhlc2Ugc2VyaWFsaXplZCBjaGFuZ2VzIHdoZW4gdGhl IGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorICoKKyAqIFdlIGNhbid0IHVzZSBUUkFOU19MRUFERVJf U0VSSUFMSVpFIGZvciB0aGlzIGNhc2UgYmVjYXVzZSwgaW4gYWRkaXRpb24gdG8KKyAqIHNlcmlh bGl6aW5nIGNoYW5nZXMsIHRoZSBsZWFkZXIgd29ya2VyIGFsc28gbmVlZHMgdG8gc2VyaWFsaXpl IHRoZQorICogU1RSRUFNX1hYWCBtZXNzYWdlIHRvIGEgZmlsZSwgYW5kIHdhaXQgZm9yIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgdG8KKyAqIGZpbmlzaCB0aGUgdHJhbnNhY3Rpb24gd2hlbiBw cm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZC4gU28KKyAqIHRoaXMgbmV3 IGFjdGlvbiB3YXMgaW50cm9kdWNlZCB0byBrZWVwIHRoZSBjb2RlIGFuZCBsb2dpYyBjbGVhci4K KyAqCiAgKiBUUkFOU19QQVJBTExFTF9BUFBMWToKICAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQg d2UgYXJlIGluIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYW5kIGNoYW5nZXMgb2YKICAqIHRo ZSB0cmFuc2FjdGlvbiBhcmUgYXBwbGllZCBkaXJlY3RseSBieSB0aGUgd29ya2VyLgpAQCAtMjcy LDYgKzI4NCw3IEBAIHR5cGVkZWYgZW51bQogCS8qIEFjdGlvbnMgZm9yIHN0cmVhbWluZyB0cmFu c2FjdGlvbnMuICovCiAJVFJBTlNfTEVBREVSX1NFUklBTElaRSwKIAlUUkFOU19MRUFERVJfU0VO RF9UT19QQVJBTExFTCwKKwlUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkUsCiAJVFJBTlNf UEFSQUxMRUxfQVBQTFkKIH0gVHJhbnNBcHBseUFjdGlvbjsKIApAQCAtMzUzLDcgKzM2Niw2IEBA IHR5cGVkZWYgc3RydWN0IEFwcGx5U3ViWGFjdERhdGEKIHN0YXRpYyBBcHBseVN1YlhhY3REYXRh IHN1YnhhY3RfZGF0YSA9IHswLCAwLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwgTlVMTH07CiAKIHN0 YXRpYyBpbmxpbmUgdm9pZCBzdWJ4YWN0X2ZpbGVuYW1lKGNoYXIgKnBhdGgsIE9pZCBzdWJpZCwg VHJhbnNhY3Rpb25JZCB4aWQpOwotc3RhdGljIGlubGluZSB2b2lkIGNoYW5nZXNfZmlsZW5hbWUo Y2hhciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCk7CiAKIC8qCiAgKiBJbmZv cm1hdGlvbiBhYm91dCBzdWJ0cmFuc2FjdGlvbnMgb2YgYSBnaXZlbiB0b3BsZXZlbCB0cmFuc2Fj dGlvbi4KQEAgLTM2NiwxMCArMzc4LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhbnVwX3N1 YnhhY3RfaW5mbyh2b2lkKTsKIC8qCiAgKiBTZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIGNoYW5n ZXMgZm9yIGEgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCiAgKi8KLXN0YXRpYyB2b2lkIHN0cmVhbV9j bGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpOwogc3RhdGljIHZvaWQg c3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCSBi b29sIGZpcnN0X3NlZ21lbnQpOwogc3RhdGljIHZvaWQgc3RyZWFtX3dyaXRlX2NoYW5nZShjaGFy IGFjdGlvbiwgU3RyaW5nSW5mbyBzKTsKK3N0YXRpYyB2b2lkIHN0cmVhbV9vcGVuX2FuZF93cml0 ZV9jaGFuZ2UoVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpOwog c3RhdGljIHZvaWQgc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCk7CiAKIHN0YXRpYyB2b2lkIHNlbmRf ZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVlc3RSZXBs eSk7CkBAIC0zOTksOSArNDExLDYgQEAgc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX3R1cGxlX3Jv dXRpbmcoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIC8qIENvbXB1dGUgR0lEIGZvciB0d29f cGhhc2UgdHJhbnNhY3Rpb25zICovCiBzdGF0aWMgdm9pZCBUd29QaGFzZVRyYW5zYWN0aW9uR2lk KE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgKmdpZCwgaW50IHN6Z2lkKTsKIAot LyogQ29tbW9uIHN0cmVhbWluZyBmdW5jdGlvbiB0byBhcHBseSBhbGwgdGhlIHNwb29sZWQgbWVz c2FnZXMgKi8KLXN0YXRpYyB2b2lkIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25J ZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKLQogLyogRnVuY3Rpb25zIGZvciBza2lwcGluZyBjaGFu Z2VzICovCiBzdGF0aWMgdm9pZCBtYXliZV9zdGFydF9za2lwcGluZ19jaGFuZ2VzKFhMb2dSZWNQ dHIgZmluaXNoX2xzbik7CiBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9pZCk7 CkBAIC01NjQsNiArNTczLDcgQEAgaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExvZ2ljYWxS ZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQogCVRyYW5zYWN0aW9uSWQgY3VycmVudF94 aWQ7CiAJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOwogCVRyYW5zQXBwbHlBY3Rpb24g YXBwbHlfYWN0aW9uOworCVN0cmluZ0luZm9EYXRhIG9yaWdpbmFsX21zZzsKIAogCWFwcGx5X2Fj dGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsK IApAQCAtNTc0LDYgKzU4NCwxNCBAQCBoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNh bFJlcE1zZ1R5cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHN0cmVhbV94aWQpKTsKIAogCS8qCisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBuZWVkcyB0aGUgeGlkIGluIHRoaXMgbWVzc2FnZSB0byBkZWNpZGUKKwkgKiB3aGV0aGVyIHRv IGRlZmluZSBhIHNhdmVwb2ludCwgc28gc2F2ZSB0aGUgb3JpZ2luYWwgbWVzc2FnZSB0aGF0IGhh cyBub3QKKwkgKiBtb3ZlZCB0aGUgY3Vyc29yIGFmdGVyIHRoZSB4aWQuIFdlIHdpbGwgc2VyaWFs aXplIHRoaXMgbWVzc2FnZSB0byBhIGZpbGUKKwkgKiBpbiBQQVJUSUFMX1NFUklBTElaRSBtb2Rl LgorCSAqLworCW9yaWdpbmFsX21zZyA9ICpzOworCisJLyoKIAkgKiBXZSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBYSUQgb2YgdGhlIHN1YnhhY3QgYXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhlCiAJICog bWVzc2FnZSwgc28gZXh0cmFjdCBpdC4KIAkgKi8KQEAgLTU5OSwxNCArNjE3LDI3IEBAIGhhbmRs ZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0lu Zm8gcykKIAkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKIAkJCUFzc2VydCh3 aW5mbyk7CiAKLQkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKLQogCQkJ LyoKIAkJCSAqIFhYWCBUaGUgcHVibGlzaGVyIHNpZGUgZG9lc24ndCBhbHdheXMgc2VuZCByZWxh dGlvbi90eXBlIHVwZGF0ZQogCQkJICogbWVzc2FnZXMgYWZ0ZXIgdGhlIHN0cmVhbWluZyB0cmFu c2FjdGlvbiwgc28gYWxzbyB1cGRhdGUgdGhlCiAJCQkgKiByZWxhdGlvbi90eXBlIGluIGxlYWRl ciBhcHBseSB3b3JrZXIuIFNlZSBmdW5jdGlvbgogCQkJICogY2xlYW51cF9yZWxfc3luY19jYWNo ZS4KIAkJCSAqLworCQkJaWYgKHBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkK KwkJCQlyZXR1cm4gKGFjdGlvbiAhPSBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gJiYKKwkJCQkJ CWFjdGlvbiAhPSBMT0dJQ0FMX1JFUF9NU0dfVFlQRSk7CisKKwkJCS8qCisJCQkgKiBJdCBpcyBw b3NzaWJsZSB0aGF0IHdoaWxlIHNlbmRpbmcgdGhpcyBjaGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkK KwkJCSAqIHdvcmtlciB3ZSBuZWVkIHRvIHN3aXRjaCB0byBzZXJpYWxpemUgbW9kZS4KKwkJCSAq LworCQkJcGFfc3dpdGNoX3RvX3BhcnRpYWxfc2VyaWFsaXplKHdpbmZvLCBmYWxzZSk7CisKKwkJ CS8qIGZhbGwgdGhyb3VnaCAqLworCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTEla RToKKwkJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCAmb3JpZ2luYWxfbXNnKTsKKworCQkJ LyogU2FtZSByZWFzb24gYXMgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwgY2FzZS4gKi8K IAkJCXJldHVybiAoYWN0aW9uICE9IExPR0lDQUxfUkVQX01TR19SRUxBVElPTiAmJgogCQkJCQlh Y3Rpb24gIT0gTE9HSUNBTF9SRVBfTVNHX1RZUEUpOwogCkBAIC0xMjQ3LDYgKzEyNzgsOSBAQCBh cHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCVBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICp3aW5mbzsKIAlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAorCS8q IFNhdmUgdGhlIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLworCVN0cmluZ0luZm9E YXRhIG9yaWdpbmFsX21zZyA9ICpzOworCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQog CQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9O KSwKQEAgLTEyNzEsNyArMTMwNSw4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJp bmdJbmZvIHMpCiAJCQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4gc2VyaWFsaXplZCB0byBm aWxlLCBzbyByZXBsYXkgYWxsIHRoZQogCQkJICogc3Bvb2xlZCBvcGVyYXRpb25zLgogCQkJICov Ci0JCQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0 YS5wcmVwYXJlX2xzbik7CisJCQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKE15TG9naWNhbFJlcFdv cmtlci0+c3RyZWFtX2ZpbGVzZXQsCisJCQkJCQkJCSAgIHByZXBhcmVfZGF0YS54aWQsIHByZXBh cmVfZGF0YS5wcmVwYXJlX2xzbik7CiAKIAkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHBy ZXBhcmVkLiAqLwogCQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0 YSk7CkBAIC0xMjg5LDE0ICsxMzI0LDQyIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShT dHJpbmdJbmZvIHMpCiAJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CiAJCQlB c3NlcnQod2luZm8pOwogCi0JCQkvKiBTZW5kIFNUUkVBTSBQUkVQQVJFIG1lc3NhZ2UgdG8gdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gKi8KLQkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVu LCBzLT5kYXRhKTsKKwkJCWlmIChwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSkp CisJCQl7CisJCQkJLyogRmluaXNoIHByb2Nlc3NpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlv bi4gKi8KKwkJCQlwYV94YWN0X2ZpbmlzaCh3aW5mbywgcHJlcGFyZV9kYXRhLmVuZF9sc24pOwor CQkJCWJyZWFrOworCQkJfQorCisJCQkvKgorCQkJICogSXQgaXMgcG9zc2libGUgdGhhdCB3aGls ZSBzZW5kaW5nIHRoaXMgY2hhbmdlIHRvIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgd2Ug bmVlZCB0byBzd2l0Y2ggdG8gc2VyaWFsaXplIG1vZGUuCisJCQkgKi8KKwkJCXBhX3N3aXRjaF90 b19wYXJ0aWFsX3NlcmlhbGl6ZSh3aW5mbywgdHJ1ZSk7CisKKwkJCS8qIGZhbGwgdGhyb3VnaCAq LworCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3aW5m byk7CisKKwkJCXN0cmVhbV9vcGVuX2FuZF93cml0ZV9jaGFuZ2UocHJlcGFyZV9kYXRhLnhpZCwK KwkJCQkJCQkJCQkgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9QUkVQQVJFLAorCQkJCQkJCQkJCSAm b3JpZ2luYWxfbXNnKTsKKworCQkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJlZCwg RlNfU0VSSUFMSVpFX0RPTkUpOwogCiAJCQkvKiBGaW5pc2ggcHJvY2Vzc2luZyB0aGUgc3RyZWFt aW5nIHRyYW5zYWN0aW9uLiAqLwogCQkJcGFfeGFjdF9maW5pc2god2luZm8sIHByZXBhcmVfZGF0 YS5lbmRfbHNuKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisK KwkJCS8qCisJCQkgKiBJZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGFwcGx5aW5nIHNw b29sZWQgbWVzc2FnZXMgdGhlbgorCQkJICogY2xvc2UgdGhlIGZpbGUgYmVmb3JlIHByZXBhcmlu Zy4KKwkJCSAqLworCQkJaWYgKHN0cmVhbV9mZCkKKwkJCQlzdHJlYW1fY2xvc2VfZmlsZSgpOwor CiAJCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKIAkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0 aW9uIGFzIHByZXBhcmVkLiAqLwpAQCAtMTM1OSw2ICsxNDIyLDQ3IEBAIGFwcGx5X2hhbmRsZV9v cmlnaW4oU3RyaW5nSW5mbyBzKQogfQogCiAvKgorICogSW5pdGlhbGl6ZSBmaWxlc2V0IChpZiBu b3QgYWxyZWFkeSBkb25lKS4KKyAqCisgKiBDcmVhdGUgYSBuZXcgZmlsZSB3aGVuIGZpcnN0X3Nl Z21lbnQgaXMgdHJ1ZSwgb3RoZXJ3aXNlIG9wZW4gdGhlIGV4aXN0aW5nCisgKiBmaWxlLgorICov Cit2b2lkCitzdHJlYW1fc3RhcnRfaW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wgZmly c3Rfc2VnbWVudCkKK3sKKwliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CisKKwkvKgorCSAqIElu aXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxlc2V0IGlmIHdlIGhhdmVuJ3QgeWV0LiBU aGlzIHdpbGwgYmUKKwkgKiB1c2VkIGZvciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3Jr ZXIgc28gY3JlYXRlIGl0IGluIGEgcGVybWFuZW50CisJICogY29udGV4dC4gV2UgY3JlYXRlIHRo aXMgb24gdGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5nIG1lc3NhZ2UgZnJvbSBhbnkKKwkgKiB0cmFu c2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMgYW5kIG90aGVyIHN0cmVhbWluZyB0cmFu c2FjdGlvbnMuCisJICogTm93LCB3ZSBjb3VsZCBjcmVhdGUgYSBmaWxlc2V0IGF0IHRoZSBzdGFy dCBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0CisJICogdGhlbiB3ZSB3b24ndCBiZSBzdXJlIHRo YXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCisJICovCisJaWYgKCFNeUxvZ2ljYWxSZXBXb3JrZXIt PnN0cmVhbV9maWxlc2V0KQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisKKwkJb2xkY3R4 ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisKKwkJTXlMb2dpY2FsUmVw V29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOworCQlGaWxl U2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKworCQlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwl9CisKKwkvKiBPcGVuIHRoZSBzcG9vbCBmaWxlIGZv ciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwgeGlkLCBmaXJzdF9zZWdtZW50KTsKKworCS8qIElmIHRoaXMgaXMgbm90IHRo ZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4aXN0aW5nIHN1YnhhY3QgZmlsZS4gKi8KKwlpZiAoIWZp cnN0X3NlZ21lbnQpCisJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3Vi aWQsIHhpZCk7CisKKwllbmRfcmVwbGljYXRpb25fc3RlcCgpOworfQorCisvKgogICogSGFuZGxl IFNUUkVBTSBTVEFSVCBtZXNzYWdlLgogICovCiBzdGF0aWMgdm9pZApAQCAtMTM2OCw2ICsxNDcy LDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAJUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvOwogCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwog CisJLyogU2F2ZSB0aGUgbWVzc2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJU3RyaW5n SW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CisKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rp b24pCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9M QVRJT04pLApAQCAtMTM5Nyw2MiArMTUwNCw2NCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0 KFN0cmluZ0luZm8gcykKIAkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgogCiAJCQkvKgot CQkJICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rp b24gd2lsbCBiZQotCQkJICogY29tbWl0dGVkIG9uIHRoZSBzdHJlYW0gc3RvcCB1bmxlc3MgaXQg aXMgYSB0YWJsZXN5bmMgd29ya2VyIGluCi0JCQkgKiB3aGljaCBjYXNlIGl0IHdpbGwgYmUgY29t bWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZQotCQkJICogbWVzc2FnZXMuIFdlIG5lZWQg dGhlIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwKLQkJCSAqIHVzZWQgZm9y IHNlcmlhbGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0YSBhbmQgc3VieGFjdCBpbmZvLgorCQkJICog RnVuY3Rpb24gc3RyZWFtX3N0YXJ0X2ludGVybmFsIHN0YXJ0cyBhIHRyYW5zYWN0aW9uLiBUaGlz CisJCQkgKiB0cmFuc2FjdGlvbiB3aWxsIGJlIGNvbW1pdHRlZCBvbiB0aGUgc3RyZWFtIHN0b3Ag dW5sZXNzIGl0IGlzIGEKKwkJCSAqIHRhYmxlc3luYyB3b3JrZXIgaW4gd2hpY2ggY2FzZSBpdCB3 aWxsIGJlIGNvbW1pdHRlZCBhZnRlcgorCQkJICogcHJvY2Vzc2luZyBhbGwgdGhlIG1lc3NhZ2Vz LiBXZSBuZWVkIHRoaXMgdHJhbnNhY3Rpb24gZm9yCisJCQkgKiBoYW5kbGluZyB0aGUgQnVmRmls ZSwgdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlIHN0cmVhbWluZyBkYXRhCisJCQkgKiBhbmQgc3Vi eGFjdCBpbmZvLgogCQkJICovCi0JCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCQlzdHJl YW1fc3RhcnRfaW50ZXJuYWwoc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisJCQlicmVhazsK KworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZv KTsKIAogCQkJLyoKLQkJCSAqIEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxlc2V0 IGlmIHdlIGhhdmVuJ3QgeWV0LiBUaGlzCi0JCQkgKiB3aWxsIGJlIHVzZWQgZm9yIHRoZSBlbnRp cmUgZHVyYXRpb24gb2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQKLQkJCSAqIGluIGEgcGVybWFu ZW50IGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0Ci0JCQkgKiBzdHJl YW1pbmcgbWVzc2FnZSBmcm9tIGFueSB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRo aXMKLQkJCSAqIGFuZCBvdGhlciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiBOb3csIHdlIGNvdWxk IGNyZWF0ZSBhCi0JCQkgKiBmaWxlc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgd29ya2VyIGFzIHdl bGwgYnV0IHRoZW4gd2Ugd29uJ3QgYmUKLQkJCSAqIHN1cmUgdGhhdCBpdCB3aWxsIGV2ZXIgYmUg dXNlZC4KKwkJCSAqIE9uY2Ugd2Ugc3RhcnQgc2VyaWFsaXppbmcgdGhlIGNoYW5nZXMsIHRoZSBw YXJhbGxlbCBhcHBseSB3b3JrZXIKKwkJCSAqIHdpbGwgd2FpdCBmb3IgdGhlIGxlYWRlciB0byBy ZWxlYXNlIHRoZSBzdHJlYW0gbG9jayB1bnRpbCB0aGUKKwkJCSAqIGVuZCBvZiB0aGUgdHJhbnNh Y3Rpb24uIFNvLCB3ZSBkb24ndCBuZWVkIHRvIHJlbGVhc2UgdGhlIGxvY2sgb3IKKwkJCSAqIGlu Y3JlbWVudCB0aGUgc3RyZWFtIGNvdW50IGluIHRoYXQgY2FzZS4KIAkJCSAqLwotCQkJaWYgKCFN eUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KQorCQkJaWYgKHBhX3NlbmRfZGF0YSh3 aW5mbywgcy0+bGVuLCBzLT5kYXRhKSkKIAkJCXsKLQkJCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsK LQotCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQkJ CS8qCisJCQkJICogVW5sb2NrIHRoZSBzaGFyZWQgb2JqZWN0IGxvY2sgc28gdGhhdCB0aGUgcGFy YWxsZWwgYXBwbHkKKwkJCQkgKiB3b3JrZXIgY2FuIGNvbnRpbnVlIHRvIHJlY2VpdmUgY2hhbmdl cy4KKwkJCQkgKi8KKwkJCQlpZiAoIWZpcnN0X3NlZ21lbnQpCisJCQkJCXBhX3VubG9ja19zdHJl YW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKIAotCQkJCU15TG9n aWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsK LQkJCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKwkJ CQkvKgorCQkJCSAqIEluY3JlbWVudCB0aGUgbnVtYmVyIG9mIHN0cmVhbWluZyBibG9ja3Mgd2Fp dGluZyB0byBiZQorCQkJCSAqIHByb2Nlc3NlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJ CQkJICovCisJCQkJcGdfYXRvbWljX2FkZF9mZXRjaF91MzIoJndpbmZvLT5zaGFyZWQtPnBlbmRp bmdfc3RyZWFtX2NvdW50LCAxKTsKIAotCQkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgp OworCQkJCS8qIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHRoaXMgdHJhbnNh Y3Rpb24uICovCisJCQkJcGFfc2V0X3N0cmVhbV9hcHBseV93b3JrZXIod2luZm8pOworCQkJCWJy ZWFrOwogCQkJfQogCi0JCQkvKiBPcGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0 aW9uLiAqLwotCQkJc3RyZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBz dHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKLQotCQkJLyogSWYgdGhpcyBpcyBub3QgdGhlIGZp cnN0IHNlZ21lbnQsIG9wZW4gZXhpc3Rpbmcgc3VieGFjdCBmaWxlLiAqLwotCQkJaWYgKCFmaXJz dF9zZWdtZW50KQotCQkJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3Vi aWQsIHN0cmVhbV94aWQpOwotCi0JCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwotCQkJYnJlYWs7 Ci0KLQkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKLQkJCUFzc2VydCh3aW5m byk7Ci0KIAkJCS8qCi0JCQkgKiBVbmxvY2sgdGhlIHNoYXJlZCBvYmplY3QgbG9jayBzbyB0aGF0 IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKLQkJCSAqIGNhbiBjb250aW51ZSB0byByZWNlaXZl IGNoYW5nZXMuCisJCQkgKiBJdCBpcyBwb3NzaWJsZSB0aGF0IHdoaWxlIHNlbmRpbmcgdGhpcyBj aGFuZ2UgdG8gcGFyYWxsZWwgYXBwbHkKKwkJCSAqIHdvcmtlciB3ZSBuZWVkIHRvIHN3aXRjaCB0 byBzZXJpYWxpemUgbW9kZS4KIAkJCSAqLwotCQkJaWYgKCFmaXJzdF9zZWdtZW50KQotCQkJCXBh X3VubG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsK KwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3aW5mbywgIWZpcnN0X3NlZ21lbnQp OworCisJCQkvKiBmYWxsIHRocm91Z2ggKi8KKwkJY2FzZSBUUkFOU19MRUFERVJfUEFSVElBTF9T RVJJQUxJWkU6CisJCQlBc3NlcnQod2luZm8pOwogCiAJCQkvKgotCQkJICogSW5jcmVtZW50IHRo ZSBudW1iZXIgb2Ygc3RyZWFtaW5nIGJsb2NrcyB3YWl0aW5nIHRvIGJlCi0JCQkgKiBwcm9jZXNz ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCQkJICogT3BlbiB0aGUgc3Bvb2wgZmlsZSB1 bmxlc3MgaXQgd2FzIGFscmVhZHkgb3BlbmVkIHdoZW4gc3dpdGNoaW5nCisJCQkgKiB0byBzZXJp YWxpemUgbW9kZS4gVGhlIHRyYW5zYWN0aW9uIHN0YXJ0ZWQgaW4KKwkJCSAqIHN0cmVhbV9zdGFy dF9pbnRlcm5hbCB3aWxsIGJlIGNvbW1pdHRlZCBvbiB0aGUgc3RyZWFtIHN0b3AuCiAJCQkgKi8K LQkJCXBnX2F0b21pY19hZGRfZmV0Y2hfdTMyKCZ3aW5mby0+c2hhcmVkLT5wZW5kaW5nX3N0cmVh bV9jb3VudCwgMSk7CisJCQlpZiAoYXBwbHlfYWN0aW9uICE9IFRSQU5TX0xFQURFUl9TRU5EX1RP X1BBUkFMTEVMKQorCQkJCXN0cmVhbV9zdGFydF9pbnRlcm5hbChzdHJlYW1feGlkLCBmaXJzdF9z ZWdtZW50KTsKIAotCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCQkJ c3RyZWFtX3dyaXRlX2NoYW5nZShMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUQVJULCAmb3JpZ2lu YWxfbXNnKTsKIAogCQkJLyogQ2FjaGUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3IgdGhp cyB0cmFuc2FjdGlvbi4gKi8KIAkJCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKHdpbmZvKTsK QEAgLTE0NzgsNiArMTU4NywzMyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0lu Zm8gcykKIH0KIAogLyoKKyAqIFVwZGF0ZSB0aGUgaW5mb3JtYXRpb24gYWJvdXQgc3VieGFjdHMg YW5kIGNsb3NlIHRoZSBmaWxlLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxl ZCB3aGVuIHRoZSBzdHJlYW1fc3RhcnRfaW50ZXJuYWwgZnVuY3Rpb24gaGFzCisgKiBiZWVuIGNh bGxlZC4KKyAqLwordm9pZAorc3RyZWFtX3N0b3BfaW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQp Cit7CisJLyoKKwkgKiBTZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQgc3VieGFjdHMgZm9yIHRo ZSB0b3BsZXZlbCB0cmFuc2FjdGlvbiwgdGhlbgorCSAqIGNsb3NlIHRoZSBzdHJlYW0gbWVzc2Fn ZXMgc3Bvb2wgZmlsZS4KKwkgKi8KKwlzdWJ4YWN0X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwgeGlkKTsKKwlzdHJlYW1fY2xvc2VfZmlsZSgpOworCisJQXNzZXJ0KElzVHJh bnNhY3Rpb25TdGF0ZSgpKTsKKworCS8qIENvbW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlv biAqLworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyogUmVzZXQgcGVyLXN0cmVh bSBjb250ZXh0ICovCisJTWVtb3J5Q29udGV4dFJlc2V0KExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0 KTsKKworCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7Cit9CisKKy8q CiAgKiBIYW5kbGUgU1RSRUFNIFNUT1AgbWVzc2FnZS4KICAqLwogc3RhdGljIHZvaWQKQEAgLTE0 OTYsMjQgKzE2MzIsNyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQog CXN3aXRjaCAoYXBwbHlfYWN0aW9uKQogCXsKIAkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpF OgotCi0JCQkvKgotCQkJICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMs IGFuZCBzZXJpYWxpemUKLQkJCSAqIGluZm9ybWF0aW9uIGFib3V0IHN1YnhhY3RzIGZvciB0aGUg dG9wbGV2ZWwgdHJhbnNhY3Rpb24uCi0JCQkgKi8KLQkJCXN1YnhhY3RfaW5mb193cml0ZShNeUxv Z2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKLQkJCXN0cmVhbV9jbG9zZV9maWxl KCk7Ci0KLQkJCS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwot CQkJQXNzZXJ0KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKLQotCQkJLyogQ29tbWl0IHRoZSBwZXIt c3RyZWFtIHRyYW5zYWN0aW9uICovCi0JCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKLQot CQkJLyogUmVzZXQgcGVyLXN0cmVhbSBjb250ZXh0ICovCi0JCQlNZW1vcnlDb250ZXh0UmVzZXQo TG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOwotCi0JCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNU QVRFX0lETEUsIE5VTEwpOworCQkJc3RyZWFtX3N0b3BfaW50ZXJuYWwoc3RyZWFtX3hpZCk7CiAJ CQlicmVhazsKIAogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgpAQCAtMTUy NywxMSArMTY0NiwyNCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQog CQkJICovCiAJCQlwYV9sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1 c2l2ZUxvY2spOwogCi0JCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisJ CQlpZiAocGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJCXBh X3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKE5VTEwpOworCQkJCXBnc3RhdF9yZXBvcnRfYWN0aXZp dHkoU1RBVEVfSURMRSwgTlVMTCk7CisJCQkJYnJlYWs7CisJCQl9CiAKLQkJCXBhX3NldF9zdHJl YW1fYXBwbHlfd29ya2VyKE5VTEwpOworCQkJLyoKKwkJCSAqIEl0IGlzIHBvc3NpYmxlIHRoYXQg d2hpbGUgc2VuZGluZyB0aGlzIGNoYW5nZSB0byBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2Vy IHdlIG5lZWQgdG8gc3dpdGNoIHRvIHNlcmlhbGl6ZSBtb2RlLgorCQkJICovCisJCQlwYV9zd2l0 Y2hfdG9fcGFydGlhbF9zZXJpYWxpemUod2luZm8sIHRydWUpOwogCi0JCQlwZ3N0YXRfcmVwb3J0 X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCQkJLyogZmFsbCB0aHJvdWdoICovCisJCWNh c2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorCQkJc3RyZWFtX3dyaXRlX2NoYW5n ZShMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUT1AsIHMpOworCQkJc3RyZWFtX3N0b3BfaW50ZXJu YWwoc3RyZWFtX3hpZCk7CisJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcihOVUxMKTsKIAkJ CWJyZWFrOwogCiAJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6CkBAIC0xNjcwLDYgKzE4MDIs OSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAlMb2dpY2FsUmVw U3RyZWFtQWJvcnREYXRhIGFib3J0X2RhdGE7CiAJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvOwogCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCisJLyogU2F2ZSB0aGUgbWVz c2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCisJU3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxf bXNnID0gKnM7CiAJYm9vbAkJdG9wbGV2ZWxfeGFjdDsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFu c2FjdGlvbikKQEAgLTE3MDQsMTIgKzE4MzksNiBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0 KFN0cmluZ0luZm8gcykKIAkJCUFzc2VydCh3aW5mbyk7CiAKIAkJCS8qCi0JCQkgKiBVbmxvY2sg dGhlIHNoYXJlZCBvYmplY3QgbG9jayBzbyB0aGF0IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjYW4K LQkJCSAqIGNvbnRpbnVlIHRvIHJlY2VpdmUgYW5kIGFwcGx5IGNoYW5nZXMuCi0JCQkgKi8KLQkJ CXBhX3VubG9ja19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKLQotCQkJLyoKIAkJ CSAqIEZvciB0aGUgY2FzZSBvZiBhYm9ydGluZyB0aGUgc3VidHJhbnNhY3Rpb24sIHdlIGluY3Jl bWVudCB0aGUKIAkJCSAqIG51bWJlciBvZiBzdHJlYW1pbmcgYmxvY2tzIGFuZCB0YWtlIHRoZSBs b2NrIGFnYWluIGJlZm9yZQogCQkJICogc2VuZGluZyB0aGUgU1RSRUFNX0FCT1JUIHRvIGVuc3Vy ZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseQpAQCAtMTcyNSwxMCArMTg1NCwxMSBAQCBhcHBseV9o YW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCSAqIGFwcGx5cGFyYWxsZWx3b3Jr ZXIuYy4KIAkJCSAqLwogCQkJaWYgKCF0b3BsZXZlbF94YWN0KQorCQkJeworCQkJCXBhX3VubG9j a19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKIAkJCQlwZ19hdG9taWNfYWRkX2Zl dGNoX3UzMigmd2luZm8tPnNoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQsIDEpOwotCi0JCQkv KiBTZW5kIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu ICovCi0JCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisJCQkJcGFfbG9j a19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwkJCX0KIAogCQkJLyoKIAkJCSAq IFVubGlrZSBTVFJFQU1fQ09NTUlUIGFuZCBTVFJFQU1fUFJFUEFSRSwgd2UgZG9uJ3Qgd2FpdCBm b3IgdGhlCkBAIC0xNzM2LDExICsxODY2LDUyIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQo U3RyaW5nSW5mbyBzKQogCQkJICogbWFpbnRhaW4gdGhlIGNvbW1pdCBvcmRlciBhbmQgd29uJ3Qg aGF2ZSB0aGUgcmlzayBvZiBmYWlsdXJlcwogCQkJICogZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVu ZGVuY2llcyBhbmQgZGVhZGxvY2tzLgogCQkJICovCisJCQlpZiAocGFfc2VuZF9kYXRhKHdpbmZv LCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJCWlmICh0b3BsZXZlbF94YWN0KQorCQkJCXsK KwkJCQkJcGFfdW5sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCQkJCQko dm9pZCkgcGFfZnJlZV93b3JrZXIod2luZm8pOworCQkJCX0KKworCQkJCWJyZWFrOworCQkJfQor CisJCQkvKgorCQkJICogSXQgaXMgcG9zc2libGUgdGhhdCB3aGlsZSBzZW5kaW5nIHRoaXMgY2hh bmdlIHRvIHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgd2UgbmVlZCB0byBzd2l0Y2ggdG8g c2VyaWFsaXplIG1vZGUuCisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6 ZSh3aW5mbywgdHJ1ZSk7CisKKwkJCS8qIGZhbGwgdGhyb3VnaCAqLworCQljYXNlIFRSQU5TX0xF QURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkg KiBQYXJhbGxlbCBhcHBseSB3b3JrZXIgbWlnaHQgaGF2ZSBhcHBsaWVkIHNvbWUgY2hhbmdlcywg c28gd3JpdGUKKwkJCSAqIHRoZSBTVFJFQU1fQUJPUlQgbWVzc2FnZSBzbyB0aGF0IGl0IGNhbiBy b2xsYmFjayB0aGUKKwkJCSAqIHN1YnRyYW5zYWN0aW9uIGlmIG5lZWRlZC4KKwkJCSAqLworCQkJ c3RyZWFtX29wZW5fYW5kX3dyaXRlX2NoYW5nZSh4aWQsIExPR0lDQUxfUkVQX01TR19TVFJFQU1f QUJPUlQsCisJCQkJCQkJCQkJICZvcmlnaW5hbF9tc2cpOworCiAJCQlpZiAodG9wbGV2ZWxfeGFj dCkKKwkJCXsKKwkJCQlwYV9zZXRfZmlsZXNldF9zdGF0ZSh3aW5mby0+c2hhcmVkLCBGU19TRVJJ QUxJWkVfRE9ORSk7CisJCQkJcGFfdW5sb2NrX3N0cmVhbSh4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxv Y2spOwogCQkJCSh2b2lkKSBwYV9mcmVlX3dvcmtlcih3aW5mbyk7CisJCQl9CiAJCQlicmVhazsK IAogCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCisJCQkvKgorCQkJICogSWYgdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlciBpcyBhcHBseWluZyBzcG9vbGVkIG1lc3NhZ2VzIHRoZW4KKwkJ CSAqIGNsb3NlIHRoZSBmaWxlIGJlZm9yZSBhYm9ydGluZy4KKwkJCSAqLworCQkJaWYgKHRvcGxl dmVsX3hhY3QgJiYgc3RyZWFtX2ZkKQorCQkJCXN0cmVhbV9jbG9zZV9maWxlKCk7CisKIAkJCXBh X3N0cmVhbV9hYm9ydCgmYWJvcnRfZGF0YSk7CiAKIAkJCS8qCkBAIC0xNzY2LDE5ICsxOTM3LDU1 IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogfQogCiAvKgotICog Q29tbW9uIHNwb29sZmlsZSBwcm9jZXNzaW5nLgorICogRW5zdXJlIHRoYXQgdGhlIHBhc3NlZCBs b2NhdGlvbiBpcyBmaWxlc2V0J3MgZW5kLgogICovCiBzdGF0aWMgdm9pZAotYXBwbHlfc3Bvb2xl ZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCitlbnN1cmVfbGFz dF9tZXNzYWdlKEZpbGVTZXQgKnN0cmVhbV9maWxlc2V0LCBUcmFuc2FjdGlvbklkIHhpZCwgaW50 IGZpbGVubywKKwkJCQkJb2ZmX3Qgb2Zmc2V0KQoreworCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsK KwlCdWZGaWxlCSAgICpmZDsKKwlpbnQJCQlsYXN0X2ZpbGVubzsKKwlvZmZfdAkJbGFzdF9vZmZz ZXQ7CisKKwlBc3NlcnQoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKKworCWJlZ2luX3JlcGxpY2F0 aW9uX3N0ZXAoKTsKKworCWNoYW5nZXNfZmlsZW5hbWUocGF0aCwgTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCwgeGlkKTsKKworCWZkID0gQnVmRmlsZU9wZW5GaWxlU2V0KHN0cmVhbV9maWxlc2V0 LCBwYXRoLCBPX1JET05MWSwgZmFsc2UpOworCisJQnVmRmlsZVNlZWsoZmQsIDAsIDAsIFNFRUtf RU5EKTsKKwlCdWZGaWxlVGVsbChmZCwgJmxhc3RfZmlsZW5vLCAmbGFzdF9vZmZzZXQpOworCisJ QnVmRmlsZUNsb3NlKGZkKTsKKworCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisKKwlpZiAobGFz dF9maWxlbm8gIT0gZmlsZW5vIHx8IGxhc3Rfb2Zmc2V0ICE9IG9mZnNldCkKKwkJZWxvZyhFUlJP UiwgInVuZXhwZWN0ZWQgbWVzc2FnZSBsZWZ0IGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbidzIGNo YW5nZXMgZmlsZSBcIiVzXCIiLAorCQkJIHBhdGgpOworfQorCisvKgorICogQ29tbW9uIHNwb29s ZmlsZSBwcm9jZXNzaW5nLgorICovCit2b2lkCithcHBseV9zcG9vbGVkX21lc3NhZ2VzKEZpbGVT ZXQgKnN0cmVhbV9maWxlc2V0LCBUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJICAgWExvZ1JlY1B0 ciBsc24pCiB7CiAJU3RyaW5nSW5mb0RhdGEgczI7CiAJaW50CQkJbmNoYW5nZXM7CiAJY2hhcgkJ cGF0aFtNQVhQR1BBVEhdOwogCWNoYXIJICAgKmJ1ZmZlciA9IE5VTEw7CiAJTWVtb3J5Q29udGV4 dCBvbGRjeHQ7Ci0JQnVmRmlsZSAgICAqZmQ7CisJUmVzb3VyY2VPd25lciBvbGRvd25lcjsKKwlp bnQJCQlmaWxlbm87CisJb2ZmX3QJCW9mZnNldDsKIAotCW1heWJlX3N0YXJ0X3NraXBwaW5nX2No YW5nZXMobHNuKTsKKwlpZiAoIWFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQltYXliZV9z dGFydF9za2lwcGluZ19jaGFuZ2VzKGxzbik7CiAKIAkvKiBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBv cGVuIHRyYW5zYWN0aW9uICovCiAJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwpAQCAtMTc5NCw4 ICsyMDAxLDE2IEBAIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuKQogCWNoYW5nZXNfZmlsZW5hbWUocGF0aCwgTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCwgeGlkKTsKIAllbG9nKERFQlVHMSwgInJlcGxheWluZyBjaGFuZ2VzIGZyb20gZmls ZSBcIiVzXCIiLCBwYXRoKTsKIAotCWZkID0gQnVmRmlsZU9wZW5GaWxlU2V0KE15TG9naWNhbFJl cFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQsIHBhdGgsIE9fUkRPTkxZLAotCQkJCQkJCWZhbHNlKTsK KwkvKgorCSAqIE1ha2Ugc3VyZSB0aGUgZmlsZSBpcyBvd25lZCBieSB0aGUgdG9wbGV2ZWwgdHJh bnNhY3Rpb24gc28gdGhhdCB0aGUgZmlsZQorCSAqIHdpbGwgbm90IGJlIGFjY2lkZW50YWxseSBj bG9zZWQgd2hlbiBhYm9ydGluZyBhIHN1YnRyYW5zYWN0aW9uLgorCSAqLworCW9sZG93bmVyID0g Q3VycmVudFJlc291cmNlT3duZXI7CisJQ3VycmVudFJlc291cmNlT3duZXIgPSBUb3BUcmFuc2Fj dGlvblJlc291cmNlT3duZXI7CisKKwlzdHJlYW1fZmQgPSBCdWZGaWxlT3BlbkZpbGVTZXQoc3Ry ZWFtX2ZpbGVzZXQsIHBhdGgsIE9fUkRPTkxZLCBmYWxzZSk7CisKKwlDdXJyZW50UmVzb3VyY2VP d25lciA9IG9sZG93bmVyOwogCiAJYnVmZmVyID0gcGFsbG9jKEJMQ0tTWik7CiAJaW5pdFN0cmlu Z0luZm8oJnMyKTsKQEAgLTE4MjYsNyArMjA0MSw3IEBAIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMo VHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCQlDSEVDS19GT1JfSU5URVJSVVBU UygpOwogCiAJCS8qIHJlYWQgbGVuZ3RoIG9mIHRoZSBvbi1kaXNrIHJlY29yZCAqLwotCQluYnl0 ZXMgPSBCdWZGaWxlUmVhZChmZCwgJmxlbiwgc2l6ZW9mKGxlbikpOworCQluYnl0ZXMgPSBCdWZG aWxlUmVhZChzdHJlYW1fZmQsICZsZW4sIHNpemVvZihsZW4pKTsKIAogCQkvKiBoYXZlIHdlIHJl YWNoZWQgZW5kIG9mIHRoZSBmaWxlPyAqLwogCQlpZiAobmJ5dGVzID09IDApCkBAIC0xODQ3LDEy ICsyMDYyLDE0IEBAIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuKQogCQlidWZmZXIgPSByZXBhbGxvYyhidWZmZXIsIGxlbik7CiAKIAkJLyog YW5kIGZpbmFsbHkgcmVhZCB0aGUgZGF0YSBpbnRvIHRoZSBidWZmZXIgKi8KLQkJaWYgKEJ1ZkZp bGVSZWFkKGZkLCBidWZmZXIsIGxlbikgIT0gbGVuKQorCQlpZiAoQnVmRmlsZVJlYWQoc3RyZWFt X2ZkLCBidWZmZXIsIGxlbikgIT0gbGVuKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNv ZGVfZm9yX2ZpbGVfYWNjZXNzKCksCiAJCQkJCSBlcnJtc2coImNvdWxkIG5vdCByZWFkIGZyb20g c3RyZWFtaW5nIHRyYW5zYWN0aW9uJ3MgY2hhbmdlcyBmaWxlIFwiJXNcIjogJW0iLAogCQkJCQkJ CXBhdGgpKSk7CiAKKwkJQnVmRmlsZVRlbGwoc3RyZWFtX2ZkLCAmZmlsZW5vLCAmb2Zmc2V0KTsK KwogCQkvKiBjb3B5IHRoZSBidWZmZXIgdG8gdGhlIHN0cmluZ2luZm8gYW5kIGNhbGwgYXBwbHlf ZGlzcGF0Y2ggKi8KIAkJcmVzZXRTdHJpbmdJbmZvKCZzMik7CiAJCWFwcGVuZEJpbmFyeVN0cmlu Z0luZm8oJnMyLCBidWZmZXIsIGxlbik7CkBAIC0xODY4LDE1ICsyMDg1LDI0IEBAIGFwcGx5X3Nw b29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCiAJCW5j aGFuZ2VzKys7CiAKKwkJLyoKKwkJICogSXQgaXMgcG9zc2libGUgdGhlIGZpbGUgaGFzIGJlZW4g Y2xvc2VkIGJlY2F1c2Ugd2UgaGF2ZSBwcm9jZXNzZWQKKwkJICogdGhlIHRyYW5zYWN0aW9uIGVu ZCBtZXNzYWdlIGxpa2Ugc3RyZWFtX2NvbW1pdCBpbiB3aGljaCBjYXNlIHRoYXQKKwkJICogbXVz dCBiZSB0aGUgbGFzdCBtZXNzYWdlLgorCQkgKi8KKwkJaWYgKCFzdHJlYW1fZmQpCisJCXsKKwkJ CWVuc3VyZV9sYXN0X21lc3NhZ2Uoc3RyZWFtX2ZpbGVzZXQsIHhpZCwgZmlsZW5vLCBvZmZzZXQp OworCQkJYnJlYWs7CisJCX0KKwogCQlpZiAobmNoYW5nZXMgJSAxMDAwID09IDApCiAJCQllbG9n KERFQlVHMSwgInJlcGxheWVkICVkIGNoYW5nZXMgZnJvbSBmaWxlIFwiJXNcIiIsCiAJCQkJIG5j aGFuZ2VzLCBwYXRoKTsKIAl9CiAKLQlCdWZGaWxlQ2xvc2UoZmQpOwotCi0JcGZyZWUoYnVmZmVy KTsKLQlwZnJlZShzMi5kYXRhKTsKKwlpZiAoc3RyZWFtX2ZkKQorCQlzdHJlYW1fY2xvc2VfZmls ZSgpOwogCiAJZWxvZyhERUJVRzEsICJyZXBsYXllZCAlZCAoYWxsKSBjaGFuZ2VzIGZyb20gZmls ZSBcIiVzXCIiLAogCQkgbmNoYW5nZXMsIHBhdGgpOwpAQCAtMTg5NSw2ICsyMTIxLDkgQEAgYXBw bHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCVBhcmFsbGVsQXBwbHlXb3Jr ZXJJbmZvICp3aW5mbzsKIAlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAorCS8qIFNh dmUgdGhlIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLworCVN0cmluZ0luZm9EYXRh IG9yaWdpbmFsX21zZyA9ICpzOworCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQll cmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwK QEAgLTE5MTMsNyArMjE0Miw4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0lu Zm8gcykKIAkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkIHRvIGZpbGUs IHNvIHJlcGxheSBhbGwgdGhlCiAJCQkgKiBzcG9vbGVkIG9wZXJhdGlvbnMuCiAJCQkgKi8KLQkJ CWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKKwkJ CWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNl dCwgeGlkLAorCQkJCQkJCQkgICBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKIAogCQkJYXBwbHlf aGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOwogCkBAIC0xOTI0LDE0ICsyMTU0 LDQxIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAkJY2FzZSBU UkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKIAkJCUFzc2VydCh3aW5mbyk7CiAKLQkJCS8q IFNlbmQgU1RSRUFNIENPTU1JVCBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu ICovCi0JCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisJCQlpZiAocGFf c2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpKQorCQkJeworCQkJCS8qIEZpbmlzaCBw cm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQkJcGFfeGFjdF9maW5p c2god2luZm8sIGNvbW1pdF9kYXRhLmVuZF9sc24pOworCQkJCWJyZWFrOworCQkJfQorCisJCQkv KgorCQkJICogSXQgaXMgcG9zc2libGUgdGhhdCB3aGlsZSBzZW5kaW5nIHRoaXMgY2hhbmdlIHRv IHBhcmFsbGVsIGFwcGx5CisJCQkgKiB3b3JrZXIgd2UgbmVlZCB0byBzd2l0Y2ggdG8gc2VyaWFs aXplIG1vZGUuCisJCQkgKi8KKwkJCXBhX3N3aXRjaF90b19wYXJ0aWFsX3NlcmlhbGl6ZSh3aW5m bywgdHJ1ZSk7CisKKwkJCS8qIGZhbGwgdGhyb3VnaCAqLworCQljYXNlIFRSQU5TX0xFQURFUl9Q QVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCXN0cmVhbV9vcGVuX2Fu ZF93cml0ZV9jaGFuZ2UoeGlkLCBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0NPTU1JVCwKKwkJCQkJ CQkJCQkgJm9yaWdpbmFsX21zZyk7CisKKwkJCXBhX3NldF9maWxlc2V0X3N0YXRlKHdpbmZvLT5z aGFyZWQsIEZTX1NFUklBTElaRV9ET05FKTsKIAogCQkJLyogRmluaXNoIHByb2Nlc3NpbmcgdGhl IHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KIAkJCXBhX3hhY3RfZmluaXNoKHdpbmZvLCBjb21t aXRfZGF0YS5lbmRfbHNuKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQ TFk6CisKKwkJCS8qCisJCQkgKiBJZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGFwcGx5 aW5nIHNwb29sZWQgbWVzc2FnZXMgdGhlbgorCQkJICogY2xvc2UgdGhlIGZpbGUgYmVmb3JlIGNv bW1pdHRpbmcuCisJCQkgKi8KKwkJCWlmIChzdHJlYW1fZmQpCisJCQkJc3RyZWFtX2Nsb3NlX2Zp bGUoKTsKKwogCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOwog CiAJCQlNeVBhcmFsbGVsU2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQgPSBYYWN0TGFzdENvbW1pdEVu ZDsKQEAgLTM4NDcsNyArNDEwNCw3IEBAIHN1YnhhY3RfZmlsZW5hbWUoY2hhciAqcGF0aCwgT2lk IHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCkKIH0KIAogLyogZm9ybWF0IGZpbGVuYW1lIGZvciBm aWxlIGNvbnRhaW5pbmcgc2VyaWFsaXplZCBjaGFuZ2VzICovCi1zdGF0aWMgaW5saW5lIHZvaWQK K3ZvaWQKIGNoYW5nZXNfZmlsZW5hbWUoY2hhciAqcGF0aCwgT2lkIHN1YmlkLCBUcmFuc2FjdGlv bklkIHhpZCkKIHsKIAlzbnByaW50ZihwYXRoLCBNQVhQR1BBVEgsICIldS0ldS5jaGFuZ2VzIiwg c3ViaWQsIHhpZCk7CkBAIC0zODYxLDcgKzQxMTgsNyBAQCBjaGFuZ2VzX2ZpbGVuYW1lKGNoYXIg KnBhdGgsIE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpCiAgKiB0b3BsZXZlbCB0cmFuc2Fj dGlvbi4gRWFjaCBzdWJzY3JpcHRpb24gaGFzIGEgc2VwYXJhdGUgc2V0IG9mIGZpbGVzCiAgKiBm b3IgYW55IHRvcGxldmVsIHRyYW5zYWN0aW9uLgogICovCi1zdGF0aWMgdm9pZAordm9pZAogc3Ry ZWFtX2NsZWFudXBfZmlsZXMoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCkKIHsKIAljaGFy CQlwYXRoW01BWFBHUEFUSF07CkBAIC0zODg0LDkgKzQxNDEsNiBAQCBzdHJlYW1fY2xlYW51cF9m aWxlcyhPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQogICogYnkgc3RyZWFtX3hpZCAoZ2xv YmFsIHZhcmlhYmxlKS4gSWYgaXQncyB0aGUgZmlyc3QgY2h1bmsgb2Ygc3RyZWFtZWQKICAqIGNo YW5nZXMgZm9yIHRoaXMgdHJhbnNhY3Rpb24sIGNyZWF0ZSB0aGUgYnVmZmlsZSwgb3RoZXJ3aXNl IG9wZW4gdGhlCiAgKiBwcmV2aW91c2x5IGNyZWF0ZWQgZmlsZS4KLSAqCi0gKiBUaGlzIGNhbiBv bmx5IGJlIGNhbGxlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgInN0cmVhbWluZyIgYmxvY2ssIGku ZS4KLSAqIGJldHdlZW4gc3RyZWFtX3N0YXJ0L3N0cmVhbV9zdG9wIG1lc3NhZ2VzIGZyb20gdGhl IHVwc3RyZWFtLgogICovCiBzdGF0aWMgdm9pZAogc3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQs IFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQpCkBAIC0zODk0LDcgKzQxNDgs NiBAQCBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGJvb2wg Zmlyc3Rfc2VnbWVudCkKIAljaGFyCQlwYXRoW01BWFBHUEFUSF07CiAJTWVtb3J5Q29udGV4dCBv bGRjeHQ7CiAKLQlBc3NlcnQoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pOwogCUFzc2VydChPaWRJ c1ZhbGlkKHN1YmlkKSk7CiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpOwogCUFz c2VydChzdHJlYW1fZmQgPT0gTlVMTCk7CkBAIC0zOTMzLDE1ICs0MTg2LDEwIEBAIHN0cmVhbV9v cGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50 KQogLyoKICAqIHN0cmVhbV9jbG9zZV9maWxlCiAgKgkgIENsb3NlIHRoZSBjdXJyZW50bHkgb3Bl biBmaWxlIHdpdGggc3RyZWFtZWQgY2hhbmdlcy4KLSAqCi0gKiBUaGlzIGNhbiBvbmx5IGJlIGNh bGxlZCBhdCB0aGUgZW5kIG9mIGEgc3RyZWFtaW5nIGJsb2NrLCBpLmUuIGF0IHN0cmVhbV9zdG9w Ci0gKiBtZXNzYWdlIGZyb20gdGhlIHVwc3RyZWFtLgogICovCiBzdGF0aWMgdm9pZAogc3RyZWFt X2Nsb3NlX2ZpbGUodm9pZCkKIHsKLQlBc3NlcnQoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pOwot CUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAJQXNzZXJ0KHN0cmVh bV9mZCAhPSBOVUxMKTsKIAogCUJ1ZkZpbGVDbG9zZShzdHJlYW1fZmQpOwpAQCAtMzk2Myw4ICs0 MjExLDYgQEAgc3RyZWFtX3dyaXRlX2NoYW5nZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKQog ewogCWludAkJCWxlbjsKIAotCUFzc2VydChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbik7Ci0JQXNz ZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsKIAlBc3NlcnQoc3RyZWFtX2Zk ICE9IE5VTEwpOwogCiAJLyogdG90YWwgb24tZGlzayBzaXplLCBpbmNsdWRpbmcgdGhlIGFjdGlv biB0eXBlIGNoYXJhY3RlciAqLwpAQCAtMzk4Myw2ICs0MjI5LDI2IEBAIHN0cmVhbV93cml0ZV9j aGFuZ2UoY2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcykKIH0KIAogLyoKKyAqIHN0cmVhbV9vcGVu X2FuZF93cml0ZV9jaGFuZ2UKKyAqCSAgU2VyaWFsaXplIGEgbWVzc2FnZSB0byBhIGZpbGUgZm9y IHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIg dG8gc3RyZWFtX3dyaXRlX2NoYW5nZSBleGNlcHQgdGhhdCBpdCB3aWxsIG9wZW4gdGhlCisgKiB0 YXJnZXQgZmlsZSBpZiBub3QgYWxyZWFkeSBiZWZvcmUgd3JpdGluZyB0aGUgbWVzc2FnZSBhbmQg Y2xvc2UgZmlsZSBhdCB0aGUKKyAqIGVuZC4KKyAqLworc3RhdGljIHZvaWQKK3N0cmVhbV9vcGVu X2FuZF93cml0ZV9jaGFuZ2UoVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgYWN0aW9uLCBTdHJpbmdJ bmZvIHMpCit7CisJQXNzZXJ0KCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbik7CisKKwlpZiAoIXN0 cmVhbV9mZCkKKwkJc3RyZWFtX3N0YXJ0X2ludGVybmFsKHhpZCwgZmFsc2UpOworCisJc3RyZWFt X3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOworCXN0cmVhbV9zdG9wX2ludGVybmFsKHhpZCk7Cit9 CisKKy8qCiAgKiBDbGVhbnVwIHRoZSBtZW1vcnkgZm9yIHN1YnhhY3RzIGFuZCByZXNldCB0aGUg cmVsYXRlZCB2YXJpYWJsZXMuCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZApAQCAtNDY1Myw3ICs0 OTE5LDggQEAgc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3JpZ2luKGNoYXIgKm9yaWdpbm5hbWUp CiAvKgogICogUmV0dXJuIHRoZSBhY3Rpb24gdG8gdGFrZSBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0 aW9uLiAqd2luZm8gaXMgYXNzaWduZWQgdG8KICAqIHRoZSBkZXN0aW5hdGlvbiBwYXJhbGxlbCB3 b3JrZXIgaW5mbyAoaWYgdGhlIGFjdGlvbiBpcwotICogVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFS QUxMRUwpLCBvdGhlcndpc2UgKndpbmZvIGlzIGFzc2lnbmVkIE5VTEwuCisgKiBUUkFOU19MRUFE RVJfU0VORF9UT19QQVJBTExFTCBvciBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkUpLCBv dGhlcndpc2UKKyAqICp3aW5mbyBpcyBhc3NpZ25lZCBOVUxMLgogICovCiBzdGF0aWMgVHJhbnNB cHBseUFjdGlvbgogZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhp ZCwgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5mbykKQEAgLTQ2NzUsMTIgKzQ5NDIsMTYg QEAgZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKip3aW5mbykKIAkgKi8KIAkqd2luZm8gPSBwYV9maW5kX3dvcmtl cih4aWQpOwogCi0JaWYgKCp3aW5mbykKKwlpZiAoISp3aW5mbykKIAl7Ci0JCXJldHVybiBUUkFO U19MRUFERVJfU0VORF9UT19QQVJBTExFTDsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRVJJQUxJ WkU7CisJfQorCWVsc2UgaWYgKCgqd2luZm8pLT5zZXJpYWxpemVfY2hhbmdlcykKKwl7CisJCXJl dHVybiBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU7CiAJfQogCWVsc2UKIAl7Ci0JCXJl dHVybiBUUkFOU19MRUFERVJfU0VSSUFMSVpFOworCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFTkRf VE9fUEFSQUxMRUw7CiAJfQogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaAppbmRleCBjZjM5ODAwLi5lMjdmMGZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 b3JrZXJfaW50ZXJuYWwuaApAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImRhdGF0eXBlL3Rp bWVzdGFtcC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9u L2xvZ2ljYWxyZWxhdGlvbi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmZmlsZS5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvZmlsZXNldC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5oIgogI2luY2x1 ZGUgInN0b3JhZ2Uvc2htX21xLmgiCkBAIC05NSw2ICs5NiwyMiBAQCB0eXBlZGVmIGVudW0gUGFy YWxsZWxUcmFuc1N0YXRlCiB9IFBhcmFsbGVsVHJhbnNTdGF0ZTsKIAogLyoKKyAqIFN0YXRlIG9m IGZpbGVzZXQgaW4gbGVhZGVyIGFwcGx5IHdvcmtlci4KKyAqCisgKiBGU19TRVJJQUxJWkVfSU5f UFJPR1JFU1MgbWVhbnMgdGhhdCB0aGUgbGVhZGVyIGlzIHNlcmlhbGl6aW5nIGNoYW5nZXMgdG8g dGhlCisgKiBmaWxlLiBGU19TRVJJQUxJWkVfRE9ORSBtZWFucyB0aGF0IHRoZSBsZWFkZXIgaGFz IHNlcmlhbGl6ZWQgYWxsIGNoYW5nZXMgdG8KKyAqIHRoZSBmaWxlLiBGU19SRUFEWSBtZWFucyB0 aGF0IGl0IGlzIG5vdyBvayBmb3IgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgcmVhZAorICogdGhl IGZpbGUuCisgKi8KK3R5cGVkZWYgZW51bSBQYXJ0aWFsRmlsZVNldFN0YXRlCit7CisJRlNfRU1Q VFksCisJRlNfU0VSSUFMSVpFX0lOX1BST0dSRVNTLAorCUZTX1NFUklBTElaRV9ET05FLAorCUZT X1JFQURZCit9IFBhcnRpYWxGaWxlU2V0U3RhdGU7CisKKy8qCiAgKiBTdHJ1Y3QgZm9yIHNoYXJp bmcgaW5mb3JtYXRpb24gYmV0d2VlbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbAog ICogYXBwbHkgd29ya2Vycy4KICAqLwpAQCAtMTI5LDYgKzE0NiwxOSBAQCB0eXBlZGVmIHN0cnVj dCBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkCiAJICogdGhlIGxlYWRlciB3b3JrZXIgc28gaXQg Y2FuIHVwZGF0ZSB0aGUgbHNuX21hcHBpbmdzLgogCSAqLwogCVhMb2dSZWNQdHIJbGFzdF9jb21t aXRfZW5kOworCisJLyoKKwkgKiBBZnRlciBlbnRlcmluZyBQQVJUSUFMX1NFUklBTElaRSBtb2Rl LCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB3aWxsCisJICogc2VyaWFsaXplIGNoYW5nZXMgdG8g dGhlIGZpbGUsIGFuZCBzaGFyZSB0aGUgZmlsZXNldCB3aXRoIHRoZSBwYXJhbGxlbAorCSAqIGFw cGx5IHdvcmtlciB3aGVuIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5k LiBUaGVuIHRoZQorCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIGFwcGx5IGFsbCB0aGUg c3Bvb2xlZCBtZXNzYWdlcy4KKwkgKgorCSAqIEZpbGVTZXQgaXMgdXNlZCBoZXJlIGluc3RlYWQg b2YgU2hhcmVkRmlsZVNldCBiZWNhdXNlIHdlIG5lZWQgaXQgdG8KKwkgKiBzdXJ2aXZlIGFmdGVy IHJlbGVhc2luZyB0aGUgc2hhcmVkIG1lbW9yeSBzbyB0aGF0IHRoZSBsZWFkZXIgYXBwbHkKKwkg KiB3b3JrZXIgY2FuIHJlLXVzZSB0aGUgc2FtZSBmaWxlc2V0IGZvciB0aGUgbmV4dCBzdHJlYW1p bmcgdHJhbnNhY3Rpb24uCisJICovCisJUGFydGlhbEZpbGVTZXRTdGF0ZSBmaWxlc2V0X3N0YXRl OworCUZpbGVTZXQJCWZpbGVzZXQ7CiB9IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQ7CiAKIC8q CkBAIC0xNDcsNiArMTc3LDEzIEBAIHR5cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvCiAJZHNtX3NlZ21lbnQgKmRzbV9zZWc7CiAKIAkvKgorCSAqIEluZGljYXRlcyB3aGV0aGVy IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIG5lZWRzIHRvIHNlcmlhbGl6ZSB0aGUKKwkgKiByZW1h aW5pbmcgY2hhbmdlcyB0byBhIGZpbGUgZHVlIHRvIHRpbWVvdXQgd2hlbiBhdHRlbXB0aW5nIHRv IHNlbmQgZGF0YQorCSAqIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdmlhIHNoYXJlZCBt ZW1vcnkuCisJICovCisJYm9vbAkJc2VyaWFsaXplX2NoYW5nZXM7CisKKwkvKgogCSAqIFRydWUg aWYgdGhlIHdvcmtlciBpcyBiZWluZyB1c2VkIHRvIHByb2Nlc3MgYSBwYXJhbGxlbCBhcHBseQog CSAqIHRyYW5zYWN0aW9uLiBGYWxzZSBpbmRpY2F0ZXMgdGhpcyB3b3JrZXIgaXMgYXZhaWxhYmxl IGZvciByZS11c2UuCiAJICovCkBAIC0xOTgsMTAgKzIzNSwyMCBAQCBleHRlcm4gdm9pZCBwcm9j ZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pOwogZXh0ZXJuIHZvaWQg aW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcyhEYXR1bSBhcmcsIGludCBjYWNoZWlkLAog CQkJCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKTsKIAorZXh0ZXJuIHZvaWQgc3RyZWFtX3N0YXJ0 X2ludGVybmFsKFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQpOworZXh0ZXJu IHZvaWQgc3RyZWFtX3N0b3BfaW50ZXJuYWwoVHJhbnNhY3Rpb25JZCB4aWQpOworCisvKiBDb21t b24gc3RyZWFtaW5nIGZ1bmN0aW9uIHRvIGFwcGx5IGFsbCB0aGUgc3Bvb2xlZCBtZXNzYWdlcyAq LworZXh0ZXJuIHZvaWQgYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhGaWxlU2V0ICpzdHJlYW1fZmls ZXNldCwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJCSAgIFhMb2dSZWNQdHIgbHNuKTsKKwog ZXh0ZXJuIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKIAogZXh0ZXJuIHZvaWQg bWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsKIAorZXh0ZXJuIHZvaWQgY2hhbmdlc19m aWxlbmFtZShjaGFyICpwYXRoLCBPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVy biB2b2lkIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQp OworCiBleHRlcm4gdm9pZCBJbml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCk7CiAKIGV4dGVybiB2 b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbiwgWExvZ1JlY1B0 ciBsb2NhbF9sc24pOwpAQCAtMjE2LDggKzI2MywxMCBAQCBleHRlcm4gUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKnBhX2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKTsKIGV4dGVybiBib29s IHBhX2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CiBleHRlcm4g dm9pZCBwYV9kZXRhY2hfYWxsX2Vycm9yX21xKHZvaWQpOwogCi1leHRlcm4gdm9pZCBwYV9zZW5k X2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywKK2V4dGVy biBib29sIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUg bmJ5dGVzLAogCQkJCQkJIGNvbnN0IHZvaWQgKmRhdGEpOworZXh0ZXJuIHZvaWQgcGFfc3dpdGNo X3RvX3BhcnRpYWxfc2VyaWFsaXplKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKKwkJ CQkJCQkJCQkgICBib29sIHN0cmVhbV9sb2NrZWQpOwogCiBleHRlcm4gdm9pZCBwYV9zZXRfeGFj dF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAogCQkJCQkJCSAgUGFy YWxsZWxUcmFuc1N0YXRlIGluX3hhY3QpOwpAQCAtMjI3LDYgKzI3Niw4IEBAIGV4dGVybiB2b2lk IHBhX3N0YXJ0X3N1YnRyYW5zKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQsCiAJCQkJCQkJICBU cmFuc2FjdGlvbklkIHRvcF94aWQpOwogZXh0ZXJuIHZvaWQgcGFfcmVzZXRfc3VidHJhbnModm9p ZCk7CiBleHRlcm4gdm9pZCBwYV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0 YSAqYWJvcnRfZGF0YSk7CitleHRlcm4gdm9pZCBwYV9zZXRfZmlsZXNldF9zdGF0ZShQYXJhbGxl bEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVkLAorCQkJCQkJCQkgUGFydGlhbEZpbGVTZXRTdGF0 ZSBmaWxlc2V0X3N0YXRlKTsKIAogZXh0ZXJuIHZvaWQgcGFfbG9ja19zdHJlYW0oVHJhbnNhY3Rp b25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4dGVybiB2b2lkIHBhX3VubG9ja19zdHJl YW0oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKZGlmZiAtLWdpdCBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKaW5kZXggNDJjNWM0ZC4uMTk2MjZmZSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKQEAgLTEzODksNiArMTM4OSw3IEBAIExhZ1RyYWNrZXIKIExhcmdlT2JqZWN0RGVzYwogTGFz dEF0dG51bUluZm8KIExhdGNoCitQYXJ0aWFsRmlsZVNldFN0YXRlCiBMZXJwRnVuYwogTGV4RGVz Y3IKIExleGVtZUVudHJ5Ci0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_009_OS0PR01MB5716C3561CF53027F22B47AF94E79OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v62-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v62-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v62-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=196127; creation-date="Sat, 17 Dec 2022 13:39:17 GMT"; modification-date="Sat, 17 Dec 2022 14:04:08 GMT" Content-Transfer-Encoding: base64 RnJvbSA3NTg5MDAwZjQ1MjRiZjI5NWM3OWYzZTg5MDQyMWE2NDExMjA4OGU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY2MiAxLzJdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRob3NlIGZpbGVzIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUg dHJhbnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rp b25zLCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVs IHdvcmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBw bHkgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJl YW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwKc2VuZCBjaGFu Z2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlcgp3aWxsIGRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0 aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2UKa2VlcCB0aGlzIHdvcmtlciBhc3NpZ25lZCB0 aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdApmb3Ig dGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3Jk ZXJpbmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZXMgaW4gbW9z dCBjYXNlcy4gV2Ugc3RpbGwgbmVlZCB0byBzcGlsbCBpZgp0aGVyZSBpcyBubyB3b3JrZXIgYXZh aWxhYmxlLgoKVGhpcyBwYXRjaCBhbHNvIGV4dGVuZHMgdGhlIFNVQlNDUklQVElPTiAnc3RyZWFt aW5nJyBwYXJhbWV0ZXIgc28gdGhhdCB0aGUgdXNlcgpjYW4gY29udHJvbCB3aGV0aGVyIHRvIGFw cGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaW4gYSBwYXJhbGxlbCBhcHBseQp3b3JrZXIg b3Igc3BpbGwgdGhlIGNoYW5nZSB0byBkaXNrLiBUaGUgdXNlciBjYW4gc2V0IHRoZSBzdHJlYW1p bmcgcGFyYW1ldGVyIHRvCidvbi9vZmYnLCAncGFyYWxsZWwnLiBUaGUgcGFyYW1ldGVyIHZhbHVl ICdwYXJhbGxlbCcgbWVhbnMgdGhlIHN0cmVhbWluZyB3aWxsCmJlIGFwcGxpZWQgdmlhIGEgcGFy YWxsZWwgYXBwbHkgd29ya2VyLCBpZiBhdmFpbGFibGUuIFRoZSBwYXJhbWV0ZXIgdmFsdWUKJ29u JyBtZWFucyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHdpbGwgYmUgc3BpbGxlZCB0byBkaXNr LiBUaGUgZGVmYXVsdCB2YWx1ZQppcyAnb2ZmJyAoc2FtZSBhcyBjdXJyZW50IGJlaGF2aW91ciku CgpJbiBhZGRpdGlvbiwgdGhlIHBhdGNoIGV4dGVuZHMgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24g U1RSRUFNX0FCT1JUIG1lc3NhZ2Ugc28KdGhhdCBhYm9ydF90aW1lIGFuZCBhYm9ydF9sc24gY2Fu IGFsc28gYmUgc2VudCB3aGljaCBjYW4gYmUgdXNlZCB0byB1cGRhdGUgdGhlCnJlcGxpY2F0aW9u IG9yaWdpbiBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2hlbiB0aGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIGlzCmFib3J0ZWQuIEJlY2F1c2UgdGhpcyBtZXNzYWdlIGV4dGVuc2lvbiBpcyBuZWVk ZWQgdG8gc3VwcG9ydCBwYXJhbGxlbApzdHJlYW1pbmcsIHBhcmFsbGVsIHN0cmVhbWluZyBpcyBu b3Qgc3VwcG9ydGVkIGZvciBwdWJsaWNhdGlvbnMgb24gc2VydmVycyA8ClBHMTYuCi0tLQogZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDExICst CiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MjggKy0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICAgICAg IHwgICAyNSArLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA1ICsKIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAyOSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwgICAgICAgICAgfCAgIDI0ICstCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwg ICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hhY3QuYyAgICAgICAgICAgICAgICAgIHwgICAyNCArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv c3Vic2NyaXB0aW9uY21kcy5jICAgICAgICAgICAgfCAgIDY3ICstCiBzcmMvYmFja2VuZC9saWJw cS9wcW1xLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTggKy0KIHNyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIC4u Li9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2FscmVjZWl2ZXIuYyAgICAgICAgICAgIHwgICAgNiAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSAgICAgICAgICAgfCAg ICAxICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyAgICAg IHwgMTQ0NSArKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9kZWNvZGUuYyAgICAgICAgICAgfCAgICA1ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xhdW5jaGVyLmMgICAgICAgICB8ICAyMjYgKystCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyAgICAgICAgICAgfCAgIDI2ICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgICAgICB8ICAgMzcgKy0KIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgIHwgICAgNSAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgICAgICAgfCAg IDI1ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgICAg ICB8IDEwMDEgKysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0 L3Bnb3V0cHV0LmMgICAgICAgIHwgICAyMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJv Y3NpZ25hbC5jICAgICAgICAgICAgICAgfCAgICA0ICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9sbWdyLmMgICAgICAgICAgICAgICAgICAgIHwgICA0NiArCiBzcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvdXRp bHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jICAgICAgICAgICAgfCAgICA2ICsKIHNyYy9iYWNrZW5k L3V0aWxzL2FkdC9sb2NrZnVuY3MuYyAgICAgICAgICAgICAgICAgIHwgICAgNSArLQogc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgICAgICAgfCAgIDEyICsKIHNy Yy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSAgICAgIHwgICAgMSAr CiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg IDYgKy0KIHNyYy9iaW4vcHNxbC9kZXNjcmliZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAyMSArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAg ICAgICAgfCAgIDIxICstCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmgg ICAgICAgICAgICB8ICAgIDIgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5j aGVyLmggICAgICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxw cm90by5oICAgICAgICAgICAgIHwgICAyOCArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbHdvcmtlci5oICAgICAgICAgICAgfCAgICA4ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L29yaWdpbi5oICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vcGdvdXRwdXQuaCAgICAgICAgICAgICAgICAgfCAgICAyICstCiBzcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggICAgICAgICAgICB8ICAgIDQgKy0KIHNyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggICAgICAgICAgICAgIHwgICAgMiArLQogc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgICAgICAgfCAgMTU1ICsr LQogc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmggICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICA1ICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAxNyArLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmggICAgICAgICAgICAg ICAgICAgfCAgICAxICsKIHNyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCAgICAgICAgICAg ICAgICAgICAgIHwgICAgMiArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlv bi5vdXQgICAgICAgICB8ICAgNDYgKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlv bi5zcWwgICAgICAgICAgICAgIHwgICAgNiArLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIDUwIGZpbGVzIGNoYW5nZWQsIDMxMTAg aW5zZXJ0aW9ucygrKSwgMzQ2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Mu c2dtbAppbmRleCA5MzE2YjgxLi40NGNkYTE1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0 YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNzkxMywxMSAr NzkxMywxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50 Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogCiAgICAgIDxyb3c+CiAgICAgICA8 ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmlu aXRpb24iPgotICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzdHJlYW08L3N0cnVjdGZpZWxkPiA8dHlw ZT5ib29sPC90eXBlPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJzdHJlYW08L3N0cnVjdGZpZWxk PiA8dHlwZT5jaGFyPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAg SWYgdHJ1ZSwgdGhlIHN1YnNjcmlwdGlvbiB3aWxsIGFsbG93IHN0cmVhbWluZyBvZiBpbi1wcm9n cmVzcwotICAgICAgIHRyYW5zYWN0aW9ucworICAgICAgIENvbnRyb2xzIGhvdyB0byBoYW5kbGUg dGhlIHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnM6CisgICAgICAgPGxpdGVy YWw+ZjwvbGl0ZXJhbD4gPSBkaXNhbGxvdyBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNh Y3Rpb25zLAorICAgICAgIDxsaXRlcmFsPnQ8L2xpdGVyYWw+ID0gc3BpbGwgdGhlIGNoYW5nZXMg b2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIHRvCisgICAgICAgZGlzayBhbmQgYXBwbHkgYXQg b25jZSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHRoZQorICAgICAgIHB1 Ymxpc2hlciwKKyAgICAgICA8bGl0ZXJhbD5wPC9saXRlcmFsPiA9IGFwcGx5IGNoYW5nZXMgZGly ZWN0bHkgdXNpbmcgYSBwYXJhbGxlbCBhcHBseQorICAgICAgIHdvcmtlciBpZiBhdmFpbGFibGUg KHNhbWUgYXMgJ3QnIGlmIG5vIHdvcmtlciBpcyBhdmFpbGFibGUpCiAgICAgICA8L3BhcmE+PC9l bnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dt bCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCA4ZTQxNDU5Li44OWM4MTdjIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZp Zy5zZ21sCkBAIC00OTY4LDcgKzQ5NjgsOCBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAg ICAgPGxpc3RpdGVtPgogICAgICAgIDxwYXJhPgogICAgICAgICBTcGVjaWZpZXMgbWF4aW11bSBu dW1iZXIgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzLiBUaGlzIGluY2x1ZGVzCi0gICAg ICAgIGJvdGggYXBwbHkgd29ya2VycyBhbmQgdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlcnMu CisgICAgICAgIGxlYWRlciBhcHBseSB3b3JrZXJzLCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBh bmQgdGFibGUgc3luY2hyb25pemF0aW9uCisgICAgICAgIHdvcmtlcnMuCiAgICAgICAgPC9wYXJh PgogICAgICAgIDxwYXJhPgogICAgICAgICBMb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcnMgYXJl IHRha2VuIGZyb20gdGhlIHBvb2wgZGVmaW5lZCBieQpAQCAtNTAwOCw2ICs1MDA5LDMxIEBAIEFO WSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAo IDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3Rl bnRyeT4KIAorICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbWF4LXBhcmFsbGVsLWFwcGx5LXdv cmtlcnMtcGVyLXN1YnNjcmlwdGlvbiIgeHJlZmxhYmVsPSJtYXhfcGFyYWxsZWxfYXBwbHlfd29y a2Vyc19wZXJfc3Vic2NyaXB0aW9uIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPm1heF9wYXJhbGxl bF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2Vy PC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+CisgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+bWF4 X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjwvdmFybmFtZT4gY29uZmln dXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwv dGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgTWF4aW11bSBu dW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBwZXIgc3Vic2NyaXB0aW9uLiBUaGlzCisg ICAgICAgIHBhcmFtZXRlciBjb250cm9scyB0aGUgYW1vdW50IG9mIHBhcmFsbGVsaXNtIGZvciBz dHJlYW1pbmcgb2YKKyAgICAgICAgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIHdpdGggc3Vic2Ny aXB0aW9uIHBhcmFtZXRlcgorICAgICAgICA8bGl0ZXJhbD5zdHJlYW1pbmcgPSBwYXJhbGxlbDwv bGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgcGFy YWxsZWwgYXBwbHkgd29ya2VycyBhcmUgdGFrZW4gZnJvbSB0aGUgcG9vbCBkZWZpbmVkIGJ5Cisg ICAgICAgIDx2YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L3Zhcm5hbWU+ LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIGRlZmF1bHQgdmFs dWUgaXMgMi4gVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGluIHRoZQorICAgICAgICA8 ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4gZmlsZSBvciBvbiB0aGUgc2VydmVy IGNvbW1hbmQKKyAgICAgICAgbGluZS4KKyAgICAgICA8L3BhcmE+CisgICAgICA8L2xpc3RpdGVt PgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L3Nl Y3QyPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s IGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAppbmRleCA3ZmRmMDhiLi5h N2JkOWJlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTE0OTcsNiAr MTQ5NywxNiBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRp b24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogICAgbWlnaHQgbm90IHZpb2xhdGUg YW55IGNvbnN0cmFpbnQuICBUaGlzIGNhbiBlYXNpbHkgbWFrZSB0aGUgc3Vic2NyaWJlcgogICAg aW5jb25zaXN0ZW50LgogICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBXaGVuIHRoZSBzdHJlYW1p bmcgbW9kZSBpcyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4sIHRoZSBmaW5pc2ggTFNOIG9m CisgICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1heSBub3QgYmUgbG9nZ2VkLiBJbiB0aGF0IGNhc2Us IGl0IG1heSBiZSBuZWNlc3NhcnkgdG8KKyAgIGNoYW5nZSB0aGUgc3RyZWFtaW5nIG1vZGUgdG8g PGxpdGVyYWw+b248L2xpdGVyYWw+IG9yIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4gYW5kCisgICBj YXVzZSB0aGUgc2FtZSBjb25mbGljdHMgYWdhaW4gc28gdGhlIGZpbmlzaCBMU04gb2YgdGhlIGZh aWxlZCB0cmFuc2FjdGlvbiB3aWxsCisgICBiZSB3cml0dGVuIHRvIHRoZSBzZXJ2ZXIgbG9nLiBG b3IgdGhlIHVzYWdlIG9mIGZpbmlzaCBMU04sIHBsZWFzZSByZWZlciB0byA8bGluaworICAgbGlu a2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uIj48Y29tbWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04g Li4uCisgICBTS0lQPC9jb21tYW5kPjwvbGluaz4uCisgIDwvcGFyYT4KICA8L3NlY3QxPgogCiAg PHNlY3QxIGlkPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXJlc3RyaWN0aW9ucyI+CkBAIC0xNjc4LDcg KzE2ODgsOCBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRp b24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogICAgc3Vic2NyaXB0aW9uLiAgQSBk aXNhYmxlZCBzdWJzY3JpcHRpb24gb3IgYSBjcmFzaGVkIHN1YnNjcmlwdGlvbiB3aWxsIGhhdmUK ICAgIHplcm8gcm93cyBpbiB0aGlzIHZpZXcuICBJZiB0aGUgaW5pdGlhbCBkYXRhIHN5bmNocm9u aXphdGlvbiBvZiBhbnkKICAgIHRhYmxlIGlzIGluIHByb2dyZXNzLCB0aGVyZSB3aWxsIGJlIGFk ZGl0aW9uYWwgd29ya2VycyBmb3IgdGhlIHRhYmxlcwotICAgYmVpbmcgc3luY2hyb25pemVkLgor ICAgYmVpbmcgc3luY2hyb25pemVkLiBNb3Jlb3ZlciwgaWYgdGhlIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiBpcyBhcHBsaWVkIGluCisgICBwYXJhbGxlbCwgdGhlcmUgd2lsbCBiZSBhZGRpdGlvbmFs IHdvcmtlcnMuCiAgIDwvcGFyYT4KICA8L3NlY3QxPgogCkBAIC0xODA1LDggKzE4MTYsOSBAQCBD T05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJw Z18xNjM5NSIgZHVyaW5nICJJTlNFUgogCiAgICA8cGFyYT4KICAgICA8bGluayBsaW5rZW5kPSJn dWMtbWF4LWxvZ2ljYWwtcmVwbGljYXRpb24td29ya2VycyI+PHZhcm5hbWU+bWF4X2xvZ2ljYWxf cmVwbGljYXRpb25fd29ya2VyczwvdmFybmFtZT48L2xpbms+Ci0gICAgbXVzdCBiZSBzZXQgdG8g YXQgbGVhc3QgdGhlIG51bWJlciBvZiBzdWJzY3JpcHRpb25zIChmb3IgYXBwbHkgd29ya2Vycyks IHBsdXMKLSAgICBzb21lIHJlc2VydmUgZm9yIHRoZSB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29y a2Vycy4KKyAgICBtdXN0IGJlIHNldCB0byBhdCBsZWFzdCB0aGUgbnVtYmVyIG9mIHN1YnNjcmlw dGlvbnMgKGZvciBsZWFkZXIgYXBwbHkKKyAgICB3b3JrZXJzKSwgcGx1cyBzb21lIHJlc2VydmUg Zm9yIHRoZSB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2VycyBhbmQKKyAgICBwYXJhbGxlbCBh cHBseSB3b3JrZXJzLgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KQEAgLTE4MjQsNiArMTgzNiwx MyBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3Jp Z2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogICAgPC9wYXJhPgogCiAgICA8cGFyYT4KKyAg ICA8bGluayBsaW5rZW5kPSJndWMtbWF4LXBhcmFsbGVsLWFwcGx5LXdvcmtlcnMtcGVyLXN1YnNj cmlwdGlvbiI+PHZhcm5hbWU+bWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlw dGlvbjwvdmFybmFtZT48L2xpbms+CisgICAgIGNvbnRyb2xzIHRoZSBhbW91bnQgb2YgcGFyYWxs ZWxpc20gZm9yIHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcworICAgICB0cmFuc2FjdGlvbnMgd2l0 aCBzdWJzY3JpcHRpb24gcGFyYW1ldGVyCisgICAgIDxsaXRlcmFsPnN0cmVhbWluZyA9IHBhcmFs bGVsPC9saXRlcmFsPi4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CiAgICAgTG9naWNhbCByZXBs aWNhdGlvbiB3b3JrZXJzIGFyZSBhbHNvIGFmZmVjdGVkIGJ5CiAgICAgPGxpbmsgbGlua2VuZD0i Z3VjLXdhbC1yZWNlaXZlci10aW1lb3V0Ij48dmFybmFtZT53YWxfcmVjZWl2ZXJfdGltZW91dDwv dmFybmFtZT48L2xpbms+LAogICAgIDxsaW5rIGxpbmtlbmQ9Imd1Yy13YWwtcmVjZWl2ZXItc3Rh dHVzLWludGVydmFsIj48dmFybmFtZT53YWxfcmVjZWl2ZXJfc3RhdHVzX2ludGVydmFsPC92YXJu YW1lPjwvbGluaz4gYW5kCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21s IGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCAxMWE4ZWJlLi4yYzc2ZWI1IDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9tb25pdG9yaW5nLnNnbWwKQEAgLTE4NTIsNiArMTg1MiwxMSBAQCBwb3N0Z3JlcyAgIDI3MDkz ICAwLjAgIDAuMCAgMzAwOTYgIDI3NTIgPyAgICAgICAgU3MgICAxMTozNCAgIDA6MDAgcG9zdGdy ZXM6IHNlcgogICAgICAgPGVudHJ5PldhaXRpbmcgdG8gYWNxdWlyZSBhbiBhZHZpc29yeSB1c2Vy IGxvY2suPC9lbnRyeT4KICAgICAgPC9yb3c+CiAgICAgIDxyb3c+CisgICAgICA8ZW50cnk+PGxp dGVyYWw+YXBwbHl0cmFuc2FjdGlvbjwvbGl0ZXJhbD48L2VudHJ5PgorICAgICAgPGVudHJ5Pldh aXRpbmcgdG8gYWNxdWlyZSBhIGxvY2sgb24gYSByZW1vdGUgdHJhbnNhY3Rpb24gYmVpbmcgYXBw bGllZAorICAgICAgYnkgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIuPC9lbnRyeT4K KyAgICAgPC9yb3c+CisgICAgIDxyb3c+CiAgICAgICA8ZW50cnk+PGxpdGVyYWw+ZXh0ZW5kPC9s aXRlcmFsPjwvZW50cnk+CiAgICAgICA8ZW50cnk+V2FpdGluZyB0byBleHRlbmQgYSByZWxhdGlv bi48L2VudHJ5PgogICAgICA8L3Jvdz4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wcm90b2Nv bC5zZ21sIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKaW5kZXggMDMzMTJlMC4uNDM5ZWY2 NyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKKysrIGIvZG9jL3NyYy9z Z21sL3Byb3RvY29sLnNnbWwKQEAgLTMxMDMsNyArMzEwMyw3IEBAIHBzcWwgImRibmFtZT1wb3N0 Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAgIDxs aXN0aXRlbT4KICAgICAgIDxwYXJhPgogICAgICAgIFByb3RvY29sIHZlcnNpb24uIEN1cnJlbnRs eSB2ZXJzaW9ucyA8bGl0ZXJhbD4xPC9saXRlcmFsPiwgPGxpdGVyYWw+MjwvbGl0ZXJhbD4sCi0g ICAgICAgYW5kIDxsaXRlcmFsPjM8L2xpdGVyYWw+IGFyZSBzdXBwb3J0ZWQuCisgICAgICAgPGxp dGVyYWw+MzwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJhbD40PC9saXRlcmFsPiBhcmUgc3VwcG9ydGVk LgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAgVmVyc2lvbiA8bGl0ZXJhbD4y PC9saXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25seSBmb3Igc2VydmVyIHZlcnNpb24gMTQKQEAgLTMx MTMsNiArMzExMywxMSBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJh c2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAgIFZlcnNpb24gPGxpdGVyYWw+MzwvbGl0 ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZlciB2ZXJzaW9uIDE1CiAgICAgICAgYW5k IGFib3ZlLCBhbmQgaXQgYWxsb3dzIHN0cmVhbWluZyBvZiB0d28tcGhhc2UgY29tbWl0cy4KICAg ICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFZlcnNpb24gPGxpdGVyYWw+NDwvbGl0 ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZlciB2ZXJzaW9uIDE2CisgICAgICAgYW5k IGFib3ZlLCBhbmQgaXQgYWxsb3dzIHN0cmVhbXMgb2YgbGFyZ2UgaW4tcHJvZ3Jlc3MgdHJhbnNh Y3Rpb25zIHRvCisgICAgICAgYmUgYXBwbGllZCBpbiBwYXJhbGxlbC4KKyAgICAgIDwvcGFyYT4K ICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAtNjg4Myw2ICs2ODg4 LDI4IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklE RU5USUZZX1NZU1RFTTsiCiAgICAgICAgIDwvcGFyYT4KICAgICAgICA8L2xpc3RpdGVtPgogICAg ICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+ SW50NjQgKFhMb2dSZWNQdHIpPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBh cmE+CisgICAgICAgICBUaGUgTFNOIG9mIHRoZSBhYm9ydC4gVGhpcyBmaWVsZCBpcyBhdmFpbGFi bGUgc2luY2UgcHJvdG9jb2wgdmVyc2lvbgorICAgICAgICAgNC4KKyAgICAgICAgPC9wYXJhPgor ICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxp c3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQ2NCAoVGltZXN0YW1wVHopPC90ZXJtPgorICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBBYm9ydCB0aW1lc3RhbXAgb2Yg dGhlIHRyYW5zYWN0aW9uLiBUaGUgdmFsdWUgaXMgaW4gbnVtYmVyCisgICAgICAgICBvZiBtaWNy b3NlY29uZHMgc2luY2UgUG9zdGdyZVNRTCBlcG9jaCAoMjAwMC0wMS0wMSkuIFRoaXMgZmllbGQg aXMKKyAgICAgICAgIGF2YWlsYWJsZSBzaW5jZSBwcm90b2NvbCB2ZXJzaW9uIDQuCisgICAgICAg IDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAg ICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5Pgpk aWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCBmOWExNzc2Li5m MTczYTA5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24u c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAt MjI4LDEzICsyMjgsMjkgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICA8L3Zhcmxp c3RlbnRyeT4KIAogICAgICAgIDx2YXJsaXN0ZW50cnk+Ci0gICAgICAgIDx0ZXJtPjxsaXRlcmFs PnN0cmVhbWluZzwvbGl0ZXJhbD4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KTwvdGVybT4KKyAgICAg ICAgPHRlcm0+PGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPiAoPHR5cGU+ZW51bTwvdHlwZT4p PC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgICA8cGFyYT4KICAgICAgICAgICBT cGVjaWZpZXMgd2hldGhlciB0byBlbmFibGUgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5z YWN0aW9ucwotICAgICAgICAgIGZvciB0aGlzIHN1YnNjcmlwdGlvbi4gIEJ5IGRlZmF1bHQsIGFs bCB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBhcmUgZnVsbHkgZGVjb2RlZCBvbiB0aGUgcHVibGlz aGVyIGFuZCBvbmx5IHRoZW4gc2VudCB0byB0aGUKLSAgICAgICAgICBzdWJzY3JpYmVyIGFzIGEg d2hvbGUuCisgICAgICAgICAgZm9yIHRoaXMgc3Vic2NyaXB0aW9uLiAgVGhlIGRlZmF1bHQgdmFs dWUgaXMgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPiwKKyAgICAgICAgICBtZWFuaW5nIGFsbCB0cmFu c2FjdGlvbnMgYXJlIGZ1bGx5IGRlY29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seQorICAg ICAgICAgIHRoZW4gc2VudCB0byB0aGUgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAg PC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+ b248L2xpdGVyYWw+LCB0aGUgaW5jb21pbmcgY2hhbmdlcyBhcmUgd3JpdHRlbiB0bworICAgICAg ICAgIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhlIHRyYW5z YWN0aW9uIGlzCisgICAgICAgICAgY29tbWl0dGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIHJlY2Vp dmVkIGJ5IHRoZSBzdWJzY3JpYmVyLgorICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFy YT4KKyAgICAgICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCBpbmNv bWluZyBjaGFuZ2VzIGFyZSBkaXJlY3RseQorICAgICAgICAgIGFwcGxpZWQgdmlhIG9uZSBvZiB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VycywgaWYgYXZhaWxhYmxlLiBJZiBubworICAgICAgICAg IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBmcmVlIHRvIGhhbmRsZSBzdHJlYW1pbmcgdHJhbnNh Y3Rpb25zIHRoZW4KKyAgICAgICAgICB0aGUgY2hhbmdlcyBhcmUgd3JpdHRlbiB0byB0ZW1wb3Jh cnkgZmlsZXMgYW5kIGFwcGxpZWQgYWZ0ZXIgdGhlCisgICAgICAgICAgdHJhbnNhY3Rpb24gaXMg Y29tbWl0dGVkLiBOb3RlIHRoYXQgaWYgYW4gZXJyb3IgaGFwcGVucyBpbiBhCisgICAgICAgICAg cGFyYWxsZWwgYXBwbHkgd29ya2VyLCB0aGUgZmluaXNoIExTTiBvZiB0aGUgcmVtb3RlIHRyYW5z YWN0aW9uCisgICAgICAgICAgbWlnaHQgbm90IGJlIHJlcG9ydGVkIGluIHRoZSBzZXJ2ZXIgbG9n LgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlz dGVudHJ5PgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sIGIvZG9j L3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCmluZGV4IDE0M2FlNWIuLjg0MjhlZTcgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv c3lzdGVtLXZpZXdzLnNnbWwKQEAgLTEzNzksOCArMTM3OSw5IEBACiAgICAgICAgPGxpdGVyYWw+ dmlydHVhbHhpZDwvbGl0ZXJhbD4sCiAgICAgICAgPGxpdGVyYWw+c3BlY3Rva2VuPC9saXRlcmFs PiwKICAgICAgICA8bGl0ZXJhbD5vYmplY3Q8L2xpdGVyYWw+LAotICAgICAgIDxsaXRlcmFsPnVz ZXJsb2NrPC9saXRlcmFsPiwgb3IKLSAgICAgICA8bGl0ZXJhbD5hZHZpc29yeTwvbGl0ZXJhbD4u CisgICAgICAgPGxpdGVyYWw+dXNlcmxvY2s8L2xpdGVyYWw+LAorICAgICAgIDxsaXRlcmFsPmFk dmlzb3J5PC9saXRlcmFsPiwgb3IKKyAgICAgICA8bGl0ZXJhbD5hcHBseXRyYW5zYWN0aW9uPC9s aXRlcmFsPi4KICAgICAgICAoU2VlIGFsc28gPHhyZWYgbGlua2VuZD0id2FpdC1ldmVudC1sb2Nr LXRhYmxlIi8+LikKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vz cy90cmFuc2FtL3hhY3QuYwppbmRleCBiN2M3ZmQ5Li5kMGQ5Yzg2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGFjdC5jCkBAIC0xNzEyLDYgKzE3MTIsNyBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0 KGJvb2wgaXNTdWJYYWN0KQogCWludAkJCW5jaGlsZHJlbjsKIAlUcmFuc2FjdGlvbklkICpjaGls ZHJlbjsKIAlUaW1lc3RhbXBUeiB4YWN0X3RpbWU7CisJYm9vbAkJcmVwbG9yaWdpbjsKIAogCS8q CiAJICogSWYgd2UgaGF2ZW4ndCBiZWVuIGFzc2lnbmVkIGFuIFhJRCwgbm9ib2R5IHdpbGwgY2Fy ZSB3aGV0aGVyIHdlIGFib3J0ZWQKQEAgLTE3NDIsNiArMTc0MywxMyBAQCBSZWNvcmRUcmFuc2Fj dGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQllbG9nKFBBTklDLCAiY2Fubm90IGFib3J0IHRy YW5zYWN0aW9uICV1LCBpdCB3YXMgYWxyZWFkeSBjb21taXR0ZWQiLAogCQkJIHhpZCk7CiAKKwkv KgorCSAqIEFyZSB3ZSB1c2luZyB0aGUgcmVwbGljYXRpb24gb3JpZ2lucyBmZWF0dXJlPyAgT3Is IGluIG90aGVyIHdvcmRzLCBhcmUKKwkgKiB3ZSByZXBsYXlpbmcgcmVtb3RlIGFjdGlvbnM/CisJ ICovCisJcmVwbG9yaWdpbiA9IChyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IEludmFsaWRS ZXBPcmlnaW5JZCAmJgorCQkJCSAgcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBEb05vdFJl cGxpY2F0ZUlkKTsKKwogCS8qIEZldGNoIHRoZSBkYXRhIHdlIG5lZWQgZm9yIHRoZSBhYm9ydCBy ZWNvcmQgKi8KIAlucmVscyA9IHNtZ3JHZXRQZW5kaW5nRGVsZXRlcyhmYWxzZSwgJnJlbHMpOwog CW5jaGlsZHJlbiA9IHhhY3RHZXRDb21taXR0ZWRDaGlsZHJlbigmY2hpbGRyZW4pOwpAQCAtMTc2 NSw2ICsxNzczLDExIEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJ CQkJCSAgIE15WGFjdEZsYWdzLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKIAkJCQkJICAgTlVMTCk7 CiAKKwlpZiAocmVwbG9yaWdpbikKKwkJLyogTW92ZSBMU05zIGZvcndhcmQgZm9yIHRoaXMgcmVw bGljYXRpb24gb3JpZ2luICovCisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKHJlcGxvcmln aW5fc2Vzc2lvbl9vcmlnaW5fbHNuLAorCQkJCQkJCQkgICBYYWN0TGFzdFJlY0VuZCk7CisKIAkv KgogCSAqIFJlcG9ydCB0aGUgbGF0ZXN0IGFzeW5jIGFib3J0IExTTiwgc28gdGhhdCB0aGUgV0FM IHdyaXRlciBrbm93cyB0bwogCSAqIGZsdXNoIHRoaXMgYWJvcnQuIFRoZXJlJ3Mgbm90aGluZyB0 byBiZSBnYWluZWQgYnkgZGVsYXlpbmcgdGhpcywgc2luY2UKQEAgLTU4NjcsMTEgKzU4ODAsMTAg QEAgWGFjdExvZ0Fib3J0UmVjb3JkKFRpbWVzdGFtcFR6IGFib3J0X3RpbWUsCiAJfQogCiAJLyoK LQkgKiBEdW1wIHRyYW5zYWN0aW9uIG9yaWdpbiBpbmZvcm1hdGlvbiBvbmx5IGZvciBhYm9ydCBw cmVwYXJlZC4gV2UgbmVlZAotCSAqIHRoaXMgZHVyaW5nIHJlY292ZXJ5IHRvIHVwZGF0ZSB0aGUg cmVwbGljYXRpb24gb3JpZ2luIHByb2dyZXNzLgorCSAqIER1bXAgdHJhbnNhY3Rpb24gb3JpZ2lu IGluZm9ybWF0aW9uLiBXZSBuZWVkIHRoaXMgZHVyaW5nIHJlY292ZXJ5IHRvCisJICogdXBkYXRl IHRoZSByZXBsaWNhdGlvbiBvcmlnaW4gcHJvZ3Jlc3MuCiAJICovCi0JaWYgKChyZXBsb3JpZ2lu X3Nlc3Npb25fb3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5JZCkgJiYKLQkJVHJhbnNhY3Rpb25J ZElzVmFsaWQodHdvcGhhc2VfeGlkKSkKKwlpZiAocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAh PSBJbnZhbGlkUmVwT3JpZ2luSWQpCiAJewogCQl4bF94aW5mby54aW5mbyB8PSBYQUNUX1hJTkZP X0hBU19PUklHSU47CiAKQEAgLTU5MjgsOCArNTk0MCw4IEBAIFhhY3RMb2dBYm9ydFJlY29yZChU aW1lc3RhbXBUeiBhYm9ydF90aW1lLAogCWlmICh4bF94aW5mby54aW5mbyAmIFhBQ1RfWElORk9f SEFTX09SSUdJTikKIAkJWExvZ1JlZ2lzdGVyRGF0YSgoY2hhciAqKSAoJnhsX29yaWdpbiksIHNp emVvZih4bF94YWN0X29yaWdpbikpOwogCi0JaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHR3b3Bo YXNlX3hpZCkpCi0JCVhMb2dTZXRSZWNvcmRGbGFncyhYTE9HX0lOQ0xVREVfT1JJR0lOKTsKKwkv KiBJbmNsdWRlIHRoZSByZXBsaWNhdGlvbiBvcmlnaW4gKi8KKwlYTG9nU2V0UmVjb3JkRmxhZ3Mo WExPR19JTkNMVURFX09SSUdJTik7CiAKIAlyZXR1cm4gWExvZ0luc2VydChSTV9YQUNUX0lELCBp bmZvKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNt ZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCBkNjcz NTU3Li5kMGUwZDIwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRp b25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCkBA IC04NCw3ICs4NCw3IEBAIHR5cGVkZWYgc3RydWN0IFN1Yk9wdHMKIAlib29sCQljb3B5X2RhdGE7 CiAJYm9vbAkJcmVmcmVzaDsKIAlib29sCQliaW5hcnk7Ci0JYm9vbAkJc3RyZWFtaW5nOworCWNo YXIJCXN0cmVhbWluZzsKIAlib29sCQl0d29waGFzZTsKIAlib29sCQlkaXNhYmxlb25lcnI7CiAJ Y2hhcgkgICAqb3JpZ2luOwpAQCAtMTM4LDcgKzEzOCw3IEBAIHBhcnNlX3N1YnNjcmlwdGlvbl9v cHRpb25zKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqc3RtdF9vcHRpb25zLAogCWlmIChJc1Nl dChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0JJTkFSWSkpCiAJCW9wdHMtPmJpbmFyeSA9IGZhbHNl OwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykpCi0JCW9wdHMt PnN0cmVhbWluZyA9IGZhbHNlOworCQlvcHRzLT5zdHJlYW1pbmcgPSBMT0dJQ0FMUkVQX1NUUkVB TV9PRkY7CiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBTVUJPUFRfVFdPUEhBU0VfQ09NTUlU KSkKIAkJb3B0cy0+dHdvcGhhc2UgPSBmYWxzZTsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMs IFNVQk9QVF9ESVNBQkxFX09OX0VSUikpCkBAIC0yNDEsNyArMjQxLDcgQEAgcGFyc2Vfc3Vic2Ny aXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpzdG10X29wdGlvbnMsCiAJ CQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0oZGVmZWwsIHBzdGF0ZSk7CiAKIAkJCW9wdHMtPnNw ZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9TVFJFQU1JTkc7Ci0JCQlvcHRzLT5zdHJlYW1pbmcgPSBk ZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJCW9wdHMtPnN0cmVhbWluZyA9IGRlZkdldFN0cmVhbWlu Z01vZGUoZGVmZWwpOwogCQl9CiAJCWVsc2UgaWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInR3 b19waGFzZSIpID09IDApCiAJCXsKQEAgLTYyOSw3ICs2MjksNyBAQCBDcmVhdGVTdWJzY3JpcHRp b24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCXZh bHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJvd25lciAtIDFdID0gT2JqZWN0SWRHZXREYXR1 bShvd25lcik7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmVuYWJsZWQgLSAxXSA9 IEJvb2xHZXREYXR1bShvcHRzLmVuYWJsZWQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlv bl9zdWJiaW5hcnkgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmJpbmFyeSk7Ci0JdmFsdWVzW0Fu dW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuc3Ry ZWFtaW5nKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPSBD aGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlv bl9zdWJ0d29waGFzZXN0YXRlIC0gMV0gPQogCQlDaGFyR2V0RGF0dW0ob3B0cy50d29waGFzZSA/ CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcgOgpAQCAtMTA5OCw3ICsx MDk4LDcgQEAgQWx0ZXJTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNj cmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJaWYgKElzU2V0KG9wdHMuc3BlY2lmaWVkX29wdHMsIFNV Qk9QVF9TVFJFQU1JTkcpKQogCQkJCXsKIAkJCQkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1YnN0cmVhbSAtIDFdID0KLQkJCQkJCUJvb2xHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CisJ CQkJCQlDaGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOwogCQkJCQlyZXBsYWNlc1tBbnVtX3Bn X3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IHRydWU7CiAJCQkJfQogCkBAIC0yMTIyLDMg KzIxMjIsNjAgQEAgbWVyZ2VfcHVibGljYXRpb25zKExpc3QgKm9sZHB1Ymxpc3QsIExpc3QgKm5l d3B1Ymxpc3QsIGJvb2wgYWRkcHViLCBjb25zdCBjaGFyICoKIAogCXJldHVybiBvbGRwdWJsaXN0 OwogfQorCisvKgorICogRXh0cmFjdCB0aGUgc3RyZWFtaW5nIG1vZGUgdmFsdWUgZnJvbSBhIERl ZkVsZW0uICBUaGlzIGlzIGxpa2UKKyAqIGRlZkdldEJvb2xlYW4oKSBidXQgYWxzbyBhY2NlcHRz IHRoZSBzcGVjaWFsIHZhbHVlIG9mICJwYXJhbGxlbCIuCisgKi8KK2NoYXIKK2RlZkdldFN0cmVh bWluZ01vZGUoRGVmRWxlbSAqZGVmKQoreworCS8qCisJICogSWYgbm8gcGFyYW1ldGVyIHZhbHVl IGdpdmVuLCBhc3N1bWUgInRydWUiIGlzIG1lYW50LgorCSAqLworCWlmICghZGVmLT5hcmcpCisJ CXJldHVybiBMT0dJQ0FMUkVQX1NUUkVBTV9PTjsKKworCS8qCisJICogQWxsb3cgMCwgMSwgImZh bHNlIiwgInRydWUiLCAib2ZmIiwgIm9uIiBvciAicGFyYWxsZWwiLgorCSAqLworCXN3aXRjaCAo bm9kZVRhZyhkZWYtPmFyZykpCisJeworCQljYXNlIFRfSW50ZWdlcjoKKwkJCXN3aXRjaCAoaW50 VmFsKGRlZi0+YXJnKSkKKwkJCXsKKwkJCQljYXNlIDA6CisJCQkJCXJldHVybiBMT0dJQ0FMUkVQ X1NUUkVBTV9PRkY7CisJCQkJY2FzZSAxOgorCQkJCQlyZXR1cm4gTE9HSUNBTFJFUF9TVFJFQU1f T047CisJCQkJZGVmYXVsdDoKKwkJCQkJLyogb3RoZXJ3aXNlLCBlcnJvciBvdXQgYmVsb3cgKi8K KwkJCQkJYnJlYWs7CisJCQl9CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXsKKwkJCQljaGFy CSAgICpzdmFsID0gZGVmR2V0U3RyaW5nKGRlZik7CisKKwkJCQkvKgorCQkJCSAqIFRoZSBzZXQg b2Ygc3RyaW5ncyBhY2NlcHRlZCBoZXJlIHNob3VsZCBtYXRjaCB1cCB3aXRoIHRoZQorCQkJCSAq IGdyYW1tYXIncyBvcHRfYm9vbGVhbl9vcl9zdHJpbmcgcHJvZHVjdGlvbi4KKwkJCQkgKi8KKwkJ CQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAiZmFsc2UiKSA9PSAwIHx8CisJCQkJCXBnX3N0cmNh c2VjbXAoc3ZhbCwgIm9mZiIpID09IDApCisJCQkJCXJldHVybiBMT0dJQ0FMUkVQX1NUUkVBTV9P RkY7CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInRydWUiKSA9PSAwIHx8CisJCQkJCXBn X3N0cmNhc2VjbXAoc3ZhbCwgIm9uIikgPT0gMCkKKwkJCQkJcmV0dXJuIExPR0lDQUxSRVBfU1RS RUFNX09OOworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJwYXJhbGxlbCIpID09IDApCisJ CQkJCXJldHVybiBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTDsKKwkJCX0KKwkJCWJyZWFrOwor CX0KKworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiks CisJCQkgZXJybXNnKCIlcyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgXCJwYXJhbGxlbFwi IiwKKwkJCQkJZGVmLT5kZWZuYW1lKSkpOworCXJldHVybiBMT0dJQ0FMUkVQX1NUUkVBTV9PRkY7 CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9s aWJwcS9wcW1xLmMgYi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKaW5kZXggNGQwNDE1ZS4uNjM5 ODQ1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCisrKyBiL3NyYy9iYWNr ZW5kL2xpYnBxL3BxbXEuYwpAQCAtMTMsMTEgKzEzLDEzIEBACiAKICNpbmNsdWRlICJwb3N0Z3Jl cy5oIgogCisjaW5jbHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCiAjaW5jbHVkZSAibGlicHEvbGli cHEuaCIKICNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgImxpYnBxL3BxbXEu aCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRl ICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5o IgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAKQEAgLTE2Miw5ICsxNjQsMTkgQEAgbXFf cHV0bWVzc2FnZShjaGFyIG1zZ3R5cGUsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pCiAJCXJl c3VsdCA9IHNobV9tcV9zZW5kdihwcV9tcV9oYW5kbGUsIGlvdiwgMiwgdHJ1ZSwgdHJ1ZSk7CiAK IAkJaWYgKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQgIT0gMCkKLQkJCVNlbmRQcm9jU2lnbmFs KHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQsCi0JCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01F U1NBR0UsCi0JCQkJCQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCXsK KwkJCWlmIChJc0xvZ2ljYWxQYXJhbGxlbEFwcGx5V29ya2VyKCkpCisJCQkJU2VuZFByb2NTaWdu YWwocHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCwKKwkJCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVM X0FQUExZX01FU1NBR0UsCisJCQkJCQkJICAgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX2JhY2tlbmRf aWQpOworCQkJZWxzZQorCQkJeworCQkJCUFzc2VydChJc1BhcmFsbGVsV29ya2VyKCkpOworCQkJ CVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFsbGVsX2xlYWRlcl9waWQsCisJCQkJCQkJICAgUFJP Q1NJR19QQVJBTExFTF9NRVNTQUdFLAorCQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9i YWNrZW5kX2lkKTsKKwkJCX0KKwkJfQogCiAJCWlmIChyZXN1bHQgIT0gU0hNX01RX1dPVUxEX0JM T0NLKQogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29y a2VyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggMGQ3MmRlMi4u MmRmYTlhYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisr KyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMTI4LDYgKzEyOCw5IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QKIAl9LAogCXsKIAkJIkFwcGx5V29ya2VyTWFpbiIsIEFwcGx5 V29ya2VyTWFpbgorCX0sCisJeworCQkiUGFyYWxsZWxBcHBseVdvcmtlck1haW4iLCBQYXJhbGxl bEFwcGx5V29ya2VyTWFpbgogCX0KIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvaW50ZXJydXB0LmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCmlu ZGV4IDFhZWQyZTIuLmU2NDAyOWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIv aW50ZXJydXB0LmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9pbnRlcnJ1cHQuYwpAQCAt OTgsOCArOTgsOSBAQCBTaWduYWxIYW5kbGVyRm9yQ3Jhc2hFeGl0KFNJR05BTF9BUkdTKQogICog c2h1dCBkb3duIGFuZCBleGl0LgogICoKICAqIFR5cGljYWxseSwgdGhpcyBoYW5kbGVyIHdvdWxk IGJlIHVzZWQgZm9yIFNJR1RFUk0sIGJ1dCBzb21lIHByb2Nlc3NlcyB1c2UKLSAqIG90aGVyIHNp Z25hbHMuIEluIHBhcnRpY3VsYXIsIHRoZSBjaGVja3BvaW50ZXIgZXhpdHMgb24gU0lHVVNSMiwg YW5kIHRoZQotICogV0FMIHdyaXRlciBleGl0cyBvbiBlaXRoZXIgU0lHSU5UIG9yIFNJR1RFUk0u CisgKiBvdGhlciBzaWduYWxzLiBJbiBwYXJ0aWN1bGFyLCB0aGUgY2hlY2twb2ludGVyIGV4aXRz IG9uIFNJR1VTUjIsIGFuZCB0aGUgV0FMCisgKiB3cml0ZXIgYW5kIHRoZSBsb2dpY2FsIHJlcGxp Y2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBleGl0cyBvbiBlaXRoZXIKKyAqIFNJR0lOVCBv ciBTSUdURVJNLgogICoKICAqIFNodXRkb3duUmVxdWVzdFBlbmRpbmcgc2hvdWxkIGJlIGNoZWNr ZWQgYXQgYSBjb252ZW5pZW50IHBsYWNlIHdpdGhpbiB0aGUKICAqIG1haW4gbG9vcCwgb3IgZWxz ZSB0aGUgbWFpbiBsb29wIHNob3VsZCBjYWxsIEhhbmRsZU1haW5Mb29wSW50ZXJydXB0cy4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3 YWxyZWNlaXZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9s aWJwcXdhbHJlY2VpdmVyLmMKaW5kZXggN2Y2OTdiMC4uMjI1ZGE4MSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJlY2VpdmVyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbGlicHF3YWxyZWNlaXZlci9saWJwcXdhbHJl Y2VpdmVyLmMKQEAgLTQ0Myw5ICs0NDMsOSBAQCBsaWJwcXJjdl9zdGFydHN0cmVhbWluZyhXYWxS ZWNlaXZlckNvbm4gKmNvbm4sCiAJCWFwcGVuZFN0cmluZ0luZm8oJmNtZCwgInByb3RvX3ZlcnNp b24gJyV1JyIsCiAJCQkJCQkgb3B0aW9ucy0+cHJvdG8ubG9naWNhbC5wcm90b192ZXJzaW9uKTsK IAotCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9naWNhbC5zdHJlYW1pbmcgJiYKLQkJCVBRc2VydmVy VmVyc2lvbihjb25uLT5zdHJlYW1Db25uKSA+PSAxNDAwMDApCi0JCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKCZjbWQsICIsIHN0cmVhbWluZyAnb24nIik7CisJCWlmIChvcHRpb25zLT5wcm90by5s b2dpY2FsLnN0cmVhbWluZ19zdHIpCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICIsIHN0cmVh bWluZyAnJXMnIiwKKwkJCQkJCQkgb3B0aW9ucy0+cHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3Ry KTsKIAogCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9naWNhbC50d29waGFzZSAmJgogCQkJUFFzZXJ2 ZXJWZXJzaW9uKGNvbm4tPnN0cmVhbUNvbm4pID49IDE1MDAwMCkKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL01ha2VmaWxlCmluZGV4IGM0ZTJmZGUuLjJkYzI1ZTMgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQpAQCAtMTUsNiArMTUsNyBAQCBpbmNsdWRl ICQodG9wX2J1aWxkZGlyKS9zcmMvTWFrZWZpbGUuZ2xvYmFsCiBvdmVycmlkZSBDUFBGTEFHUyA6 PSAtSSQoc3JjZGlyKSAkKENQUEZMQUdTKQogCiBPQkpTID0gXAorCWFwcGx5cGFyYWxsZWx3b3Jr ZXIubyBcCiAJZGVjb2RlLm8gXAogCWxhdW5jaGVyLm8gXAogCWxvZ2ljYWwubyBcCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5j Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzYjY1NDYKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3Jr ZXIuYwpAQCAtMCwwICsxLDE0NDUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogYXBwbHlwYXJh bGxlbHdvcmtlci5jCisgKgkgICBTdXBwb3J0IHJvdXRpbmVzIGZvciBhcHBseWluZyB4YWN0IGJ5 IHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICoKKyAqIENvcHlyaWdodCAoYykgMjAyMiwgUG9zdGdy ZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJ ICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwor ICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgY29kZSB0byBsYXVuY2gsIHNldCB1cCwgYW5k IHRlYXJkb3duIGEgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlciB3aGljaCByZWNlaXZlcyB0aGUg Y2hhbmdlcyBmcm9tIHRoZSBsZWFkZXIgd29ya2VyIGFuZCBpbnZva2VzIHJvdXRpbmVzCisgKiB0 byBhcHBseSB0aG9zZSBvbiB0aGUgc3Vic2NyaWJlciBkYXRhYmFzZS4KKyAqCisgKiBUaGlzIGZp bGUgY29udGFpbnMgcm91dGluZXMgdGhhdCBhcmUgaW50ZW5kZWQgdG8gc3VwcG9ydCBzZXR0aW5n IHVwLCB1c2luZworICogYW5kIHRlYXJpbmcgZG93biBhIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv IHdoaWNoIGlzIHJlcXVpcmVkIHNvIHRoZSBsZWFkZXIKKyAqIHdvcmtlciBhbmQgcGFyYWxsZWwg YXBwbHkgd29ya2VycyBjYW4gY29tbXVuaWNhdGUgd2l0aCBlYWNoIG90aGVyLgorICoKKyAqIFRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSBhc3NpZ25lZCAoaWYgYXZhaWxhYmxlKSBhcyBz b29uIGFzIHhhY3QncworICogZmlyc3Qgc3RyZWFtIGlzIHJlY2VpdmVkIGZvciBzdWJzY3JpcHRp b25zIHRoYXQgaGF2ZSBzZXQgdGhlaXIgJ3N0cmVhbWluZycKKyAqIG9wdGlvbiBhcyBwYXJhbGxl bC4gVGhlIGxlYWRlciBhcHBseSB3b3JrZXIgd2lsbCBzZW5kIGNoYW5nZXMgdG8gdGhpcyBuZXcK KyAqIHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gV2Uga2VlcCB0aGlzIHdvcmtlciBhc3NpZ25l ZCB0aWxsIHRoZSB0cmFuc2FjdGlvbgorICogY29tbWl0IGlzIHJlY2VpdmVkIGFuZCBhbHNvIHdh aXQgZm9yIHRoZSB3b3JrZXIgdG8gZmluaXNoIGF0IGNvbW1pdC4gVGhpcworICogcHJlc2VydmVz IGNvbW1pdCBvcmRlcmluZyBhbmQgYXZvaWQgZmlsZSBJL08gaW4gbW9zdCBjYXNlcywgYWx0aG91 Z2ggd2UKKyAqIHN0aWxsIG5lZWQgdG8gc3BpbGwgdG8gYSBmaWxlIGlmIHRoZXJlIGlzIG5vIHdv cmtlciBhdmFpbGFibGUuIFNlZSBjb21tZW50cworICogYXRvcCBsb2dpY2FsL3dvcmtlciB0byBr bm93IG1vcmUgYWJvdXQgc3RyZWFtZWQgeGFjdHMgd2hvc2UgY2hhbmdlcyBhcmUKKyAqIHNwaWxs ZWQgdG8gZGlzay4gSXQgaXMgaW1wb3J0YW50IHRvIG1haW50YWluIGNvbW1pdCBvcmRlciB0byBh dm9pZCBmYWlsdXJlcworICogZHVlIHRvOiAoYSkgdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIC0g c2F5IGlmIHdlIGluc2VydCBhIHJvdyBpbiB0aGUgZmlyc3QKKyAqIHRyYW5zYWN0aW9uIGFuZCB1 cGRhdGUgaXQgaW4gdGhlIHNlY29uZCB0cmFuc2FjdGlvbiBvbiBwdWJsaXNoZXIgdGhlbgorICog YWxsb3dpbmcgdGhlIHN1YnNjcmliZXIgdG8gYXBwbHkgYm90aCBpbiBwYXJhbGxlbCBjYW4gbGVh ZCB0byBmYWlsdXJlIGluIHRoZQorICogdXBkYXRlOyAoYikgZGVhZGxvY2tzIC0gYWxsb3dpbmcg dHJhbnNhY3Rpb25zIHRoYXQgdXBkYXRlIHRoZSBzYW1lIHNldCBvZgorICogcm93cy90YWJsZXMg aW4gdGhlIG9wcG9zaXRlIG9yZGVyIHRvIGJlIGFwcGxpZWQgaW4gcGFyYWxsZWwgY2FuIGxlYWQg dG8KKyAqIGRlYWRsb2Nrcy4KKyAqCisgKiBBIHdvcmtlciBwb29sIGlzIHVzZWQgdG8gYXZvaWQg cmVzdGFydGluZyB3b3JrZXJzIGZvciBlYWNoIHN0cmVhbWluZworICogdHJhbnNhY3Rpb24uIFdl IG1haW50YWluIGVhY2ggd29ya2VyJ3MgaW5mb3JtYXRpb24gKFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvKQorICogaW4gdGhlIFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sLiBBZnRlciBzdWNjZXNzZnVs bHkgbGF1bmNoaW5nIGEgbmV3IHdvcmtlciwKKyAqIGl0cyBpbmZvcm1hdGlvbiBpcyBhZGRlZCB0 byB0aGUgUGFyYWxsZWxBcHBseVdvcmtlclBvb2wuIE9uY2UgdGhlIHdvcmtlcgorICogZmluaXNo ZXMgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLCBpdCBpcyBtYXJrZWQgYXMgYXZhaWxhYmxlIGZv ciByZS11c2UuCisgKiBOb3csIGJlZm9yZSBzdGFydGluZyBhIG5ldyB3b3JrZXIgdG8gYXBwbHkg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgd2UKKyAqIGNoZWNrIHRoZSBsaXN0IGZvciBhbnkg YXZhaWxhYmxlIHdvcmtlci4gTm90ZSB0aGF0IHdlIHJldGFpbiBhIG1heGltdW0gb2YKKyAqIGhh bGYgdGhlIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gd29ya2Vy cyBpbiB0aGUgcG9vbCBhbmQKKyAqIGFmdGVyIHRoYXQsIHdlIHNpbXBseSBleGl0IHRoZSB3b3Jr ZXIgYWZ0ZXIgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLgorICoKKyAqIFhYWCBUaGlzIHdvcmtl ciBwb29sIHRocmVzaG9sZCBpcyBhcmJpdHJhcnkgYW5kIHdlIGNhbiBwcm92aWRlIGEgR1VDCisg KiB2YXJpYWJsZSBmb3IgdGhpcyBpbiB0aGUgZnV0dXJlIGlmIHJlcXVpcmVkLgorICoKKyAqIFRo ZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgY3JlYXRlIGEgc2VwYXJhdGUgZHluYW1pYyBzaGFy ZWQgbWVtb3J5IHNlZ21lbnQKKyAqIHdoZW4gZWFjaCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc3Rh cnRzLiBUaGUgcmVhc29uIGZvciB0aGlzIGRlc2lnbiBpcyB0aGF0CisgKiB3ZSBjYW5ub3QgcHJl ZGljdCBob3cgbWFueSB3b3JrZXJzIHdpbGwgYmUgbmVlZGVkLiBJdCBtYXkgYmUgcG9zc2libGUg dG8KKyAqIGFsbG9jYXRlIGVub3VnaCBzaGFyZWQgbWVtb3J5IGluIG9uZSBzZWdtZW50IGJhc2Vk IG9uIHRoZSBtYXhpbXVtIG51bWJlciBvZgorICogcGFyYWxsZWwgYXBwbHkgd29ya2VycyAobWF4 X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiksIGJ1dAorICogdGhpcyB3 b3VsZCB3YXN0ZSBtZW1vcnkgaWYgbm8gcHJvY2VzcyBpcyBhY3R1YWxseSBzdGFydGVkLgorICoK KyAqIFRoZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBjb250YWluczogKGEpIGEgc2ht X21xIHRoYXQgaXMgdXNlZCB0bworICogc2VuZCBjaGFuZ2VzIGluIHRoZSB0cmFuc2FjdGlvbiBm cm9tIGxlYWRlciBhcHBseSB3b3JrZXIgdG8gcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcjsgKGIp IGFub3RoZXIgc2htX21xIHRoYXQgaXMgdXNlZCB0byBzZW5kIGVycm9ycyAoYW5kIG90aGVyIG1l c3NhZ2VzCisgKiByZXBvcnRlZCB2aWEgZWxvZy9lcmVwb3J0KSBmcm9tIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgdG8gbGVhZGVyIGFwcGx5CisgKiB3b3JrZXI7IChjKSBuZWNlc3NhcnkgaW5m b3JtYXRpb24gdG8gYmUgc2hhcmVkIGFtb25nIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMKKyAqIGFu ZCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciAoaS5lLiBtZW1iZXJzIG9mIFBhcmFsbGVsQXBwbHlX b3JrZXJTaGFyZWQpLgorICoKKyAqIExvY2tpbmcgQ29uc2lkZXJhdGlvbnMKKyAqIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqIFNpbmNlIHRoZSBkYXRhYmFzZSBzdHJ1Y3R1cmUgKHNjaGVtYSBv ZiBzdWJzY3JpcHRpb24gdGFibGVzLCBjb25zdHJhaW50cywKKyAqIGV0Yy4pIG9mIHRoZSBwdWJs aXNoZXIgYW5kIHN1YnNjcmliZXIgY291bGQgYmUgZGlmZmVyZW50LCBhcHBseWluZworICogdHJh bnNhY3Rpb25zIGluIHBhcmFsbGVsIG1vZGUgb24gdGhlIHN1YnNjcmliZXIgc2lkZSBjYW4gY2F1 c2Ugc29tZQorICogZGVhZGxvY2tzIHRoYXQgZG8gbm90IG9jY3VyIG9uIHRoZSBwdWJsaXNoZXIg c2lkZS4gVGhpcyBjYW4gaGFwcGVuIGV2ZW4KKyAqIHdpdGhvdXQgcGFyYWxsZWwgbW9kZSB3aGVu IHRoZXJlIGFyZSBjb25jdXJyZW50IG9wZXJhdGlvbnMgb24gdGhlCisgKiBzdWJzY3JpYmVyLiBJ biBvcmRlciB0byBkZXRlY3QgdGhlIGRlYWRsb2NrcyBhbW9uZyBsZWFkZXIgYW5kIHBhcmFsbGVs IGFwcGx5CisgKiB3b3JrZXJzLCB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IHdlIHdhaXQgdXNpbmcg bG1nciBsb2Nrcy4gQW4gYWx0ZXJuYXRpdmUKKyAqIGFwcHJvYWNoIGNvdWxkIGJlIHRvIG5vdCBh bGxvdyBwYXJhbGxlbGlzbSB3aGVuIHRoZSBzY2hlbWEgb2YgdGFibGVzIGlzCisgKiBkaWZmZXJl bnQgYmV0d2VlbiB0aGUgcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGJ1dCB0aGF0IHdvdWxkIGJl IHRvbworICogcmVzdHJpY3RpdmUgYW5kIHdvdWxkIHJlcXVpcmUgdGhlIHB1Ymxpc2hlciB0byBz ZW5kIG11Y2ggbW9yZSBpbmZvcm1hdGlvbgorICogdGhhbiBpdCBpcyBjdXJyZW50bHkgc2VuZGlu Zy4KKyAqCisgKiBDb25zaWRlciBhIGNhc2Ugd2hlcmUgdGhlIHN1YnNjcmliZWQgdGFibGUgZG9l cyBub3QgaGF2ZSBhIHVuaXF1ZSBrZXkgb24gdGhlCisgKiBwdWJsaXNoZXIgYW5kIGhhcyBhIHVu aXF1ZSBrZXkgb24gdGhlIHN1YnNjcmliZXIuCisgKgorICogMSkgRGVhZGxvY2sgYmV0d2VlbiB0 aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKKyAqCisg KiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIChQQSkgaXMgZXhlY3V0aW5nIFRYLTEgYW5kIHRo ZSBsZWFkZXIgYXBwbHkgd29ya2VyCisgKiAoTEEpIGlzIGV4ZWN1dGluZyBUWC0yIGNvbmN1cnJl bnRseSBvbiB0aGUgc3Vic2NyaWJlci4gTm93LCBMQSBpcyB3YWl0aW5nCisgKiBmb3IgUEEgYmVj YXVzZSBvZiB0aGUgdW5pcXVlIGtleSBvZiB0aGUgc3Vic2NyaWJlZCB0YWJsZSB3aGlsZSBQQSBp cyB3YWl0aW5nCisgKiBmb3IgTEEgdG8gc2VuZCB0aGUgbmV4dCBzdHJlYW0gb2YgY2hhbmdlcyBv ciB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZAorICogbWVzc2FnZS4KKyAqCisgKiBJbiBvcmRl ciBmb3IgbG1nciB0byBkZXRlY3QgdGhpcywgd2UgaGF2ZSBMQSBhY3F1aXJlIGEgc2Vzc2lvbiBs b2NrIG9uIHRoZQorICogcmVtb3RlIHRyYW5zYWN0aW9uIChieSBwYV9sb2NrX3N0cmVhbSgpKSBh bmQgaGF2ZSBQQSB3YWl0IG9uIHRoZSBsb2NrIGJlZm9yZQorICogdHJ5aW5nIHRvIHJlY2VpdmUg dGhlIG5leHQgc3RyZWFtIG9mIGNoYW5nZXMuIFNwZWNpZmljYWxseSwgTEEgd2lsbCBhY3F1aXJl CisgKiB0aGUgbG9jayBiZWZvcmUgc2VuZGluZyB0aGUgU1RSRUFNX1NUT1AgYW5kIHdpbGwgcmVs ZWFzZSBpdCBpZiBhbHJlYWR5CisgKiBhY3F1aXJlZCBiZWZvcmUgc2VuZGluZyB0aGUgU1RSRUFN X1NUQVJULCBTVFJFQU1fQUJPUlQgKGZvciB0b3BsZXZlbAorICogdHJhbnNhY3Rpb24pLCBTVFJF QU1fUFJFUEFSRSwgYW5kIFNUUkVBTV9DT01NSVQuIFRoZSBQQSB3aWxsIGFjcXVpcmUgdGhlCisg KiBsb2NrIGFmdGVyIHByb2Nlc3NpbmcgU1RSRUFNX1NUT1AgYW5kIFNUUkVBTV9BQk9SVCAoZm9y IHN1YnRyYW5zYWN0aW9uKSBhbmQKKyAqIHRoZW4gcmVsZWFzZSB0aGUgbG9jayBpbW1lZGlhdGVs eSBhZnRlciBhY3F1aXJpbmcgaXQuCisgKgorICogVGhlIGxvY2sgZ3JhcGggZm9yIHRoZSBhYm92 ZSBleGFtcGxlIHdpbGwgbG9vayBhcyBmb2xsb3dzOgorICogTEEgKHdhaXRpbmcgdG8gYWNxdWly ZSB0aGUgbG9jayBvbiB0aGUgdW5pcXVlIGluZGV4KSAtPiBQQSAod2FpdGluZyB0bworICogYWNx dWlyZSB0aGUgc3RyZWFtIGxvY2spIC0+IExBCisgKgorICogVGhpcyB3YXksIHdoZW4gUEEgaXMg d2FpdGluZyBmb3IgTEEgZm9yIHRoZSBuZXh0IHN0cmVhbSBvZiBjaGFuZ2VzLCB3ZSBjYW4KKyAq IGhhdmUgYSB3YWl0LWVkZ2UgZnJvbSBQQSB0byBMQSBpbiBsbWdyLCB3aGljaCB3aWxsIG1ha2Ug dXMgZGV0ZWN0IHRoZQorICogZGVhZGxvY2sgYmV0d2VlbiBMQSBhbmQgUEEuCisgKgorICogMikg RGVhZGxvY2sgYmV0d2VlbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgcGFyYWxsZWwgYXBw bHkgd29ya2VycworICoKKyAqIFRoaXMgc2NlbmFyaW8gaXMgc2ltaWxhciB0byB0aGUgZmlyc3Qg Y2FzZSBidXQgVFgtMSBhbmQgVFgtMiBhcmUgZXhlY3V0ZWQgYnkKKyAqIHR3byBwYXJhbGxlbCBh cHBseSB3b3JrZXJzIChQQS0xIGFuZCBQQS0yIHJlc3BlY3RpdmVseSkuIEluIHRoaXMgc2NlbmFy aW8sCisgKiBQQS0yIGlzIHdhaXRpbmcgZm9yIFBBLTEgdG8gY29tcGxldGUgaXRzIHRyYW5zYWN0 aW9uIHdoaWxlIFBBLTEgaXMgd2FpdGluZworICogZm9yIHN1YnNlcXVlbnQgaW5wdXQgZnJvbSBM QS4gQWxzbywgTEEgaXMgd2FpdGluZyBmb3IgUEEtMiB0byBjb21wbGV0ZSBpdHMKKyAqIHRyYW5z YWN0aW9uIGluIG9yZGVyIHRvIHByZXNlcnZlIHRoZSBjb21taXQgb3JkZXIuIFRoZXJlIGlzIGEg ZGVhZGxvY2sgYW1vbmcKKyAqIHRoZSB0aHJlZSBwcm9jZXNzZXMuCisgKgorICogSW4gb3JkZXIg Zm9yIGxtZ3IgdG8gZGV0ZWN0IHRoaXMsIHdlIGhhdmUgUEEgYWNxdWlyZSBhIHNlc3Npb24gbG9j ayAodGhpcyBpcworICogYSBkaWZmZXJlbnQgbG9jayB0aGFuIHJlZmVycmVkIGluIHByZXZpb3Vz IGNhc2UsIHNlZQorICogcGFfbG9ja190cmFuc2FjdGlvbigpKSBvbiB0aGUgdHJhbnNhY3Rpb24g YmVpbmcgYXBwbGllZCBhbmQgaGF2ZSBMQSB3YWl0IG9uCisgKiB0aGUgbG9jayBiZWZvcmUgcHJv Y2VlZGluZyBpbiB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzLiBTcGVjaWZpY2FsbHks CisgKiBQQSB3aWxsIGFjcXVpcmUgdGhpcyBsb2NrIGluIFNoYXJlIG1vZGUgYmVmb3JlIGV4ZWN1 dGluZyB0aGUgZmlyc3QgbWVzc2FnZQorICogb2YgdGhlIHRyYW5zYWN0aW9uIGFuZCByZWxlYXNl IGl0IGF0IHRoZSB4YWN0IGVuZC4gTEEgd2lsbCBhY3F1aXJlIHRoaXMgbG9jaworICogaW4gQWNj ZXNzRXhjbHVzaXZlIG1vZGUgYXQgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzIChTVFJFQU1f Q09NTUlUIGFuZAorICogU1RSRUFNX1BSRVBBUkUpIGFuZCByZWxlYXNlIGl0IGltbWVkaWF0ZWx5 LgorICoKKyAqIFRoZSBsb2NrIGdyYXBoIGZvciB0aGUgYWJvdmUgZXhhbXBsZSB3aWxsIGxvb2sg YXMgZm9sbG93czoKKyAqIExBICh3YWl0aW5nIHRvIGFjcXVpcmUgdGhlIHRyYW5zYWN0aW9uIGxv Y2spIC0+IFBBLTIgKHdhaXRpbmcgdG8gYWNxdWlyZSB0aGUKKyAqIGxvY2sgZHVlIHRvIHVuaXF1 ZSBpbmRleCBjb25zdHJhaW50KSAtPiBQQS0xICh3YWl0aW5nIHRvIGFjcXVpcmUgdGhlIHN0cmVh bQorICogbG9jaykgLT4gTEEKKyAqCisgKiBUaGlzIHdheSB3aGVuIExBIGlzIHdhaXRpbmcgdG8g ZmluaXNoIHRoZSB0cmFuc2FjdGlvbiBlbmQgY29tbWFuZCB0byBwcmVzZXJ2ZQorICogdGhlIGNv bW1pdCBvcmRlciwgd2Ugd2lsbCBiZSBhYmxlIHRvIGRldGVjdCBkZWFkbG9jaywgaWYgYW55Lgor ICoKKyAqIE9uZSBtaWdodCB0aGluayB3ZSBjYW4gdXNlIFhhY3RMb2NrVGFibGVXYWl0KCksIGJ1 dCBYYWN0TG9ja1RhYmxlV2FpdCgpCisgKiBjb25zaWRlcnMgUFJFUEFSRUQgVFJBTlNBQ1RJT04g YXMgc3RpbGwgaW4gcHJvZ3Jlc3Mgd2hpY2ggbWVhbnMgdGhlIGxvY2sKKyAqIHdvbid0IGJlIHJl bGVhc2VkIGV2ZW4gYWZ0ZXIgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBoYXMgcHJlcGFyZWQg dGhlCisgKiB0cmFuc2FjdGlvbi4KKyAqCisgKiAzKSBEZWFkbG9jayB3aGVuIHRoZSBzaG1fbXEg YnVmZmVyIGlzIGZ1bGwKKyAqCisgKiBJbiB0aGUgcHJldmlvdXMgc2NlbmFyaW8gKGllLiBQQS0x IGFuZCBQQS0yIGFyZSBleGVjdXRpbmcgdHJhbnNhY3Rpb25zCisgKiBjb25jdXJyZW50bHkpLCBp ZiB0aGUgc2htX21xIGJ1ZmZlciBiZXR3ZWVuIExBIGFuZCBQQS0yIGlzIGZ1bGwsIExBIGhhcyB0 bworICogd2FpdCB0byBzZW5kIG1lc3NhZ2VzLCBhbmQgdGhpcyB3YWl0IGRvZXNuJ3QgYXBwZWFy IGluIGxtZ3IuCisgKgorICogVG8gcmVzb2x2ZSB0aGlzIGlzc3VlLCB3ZSB1c2Ugbm9uLWJsb2Nr aW5nIHdyaXRlIGFuZCB3YWl0IHdpdGggYSB0aW1lb3V0LiBJZgorICogdGhlIHRpbWVvdXQgaXMg ZXhjZWVkZWQsIHRoZSBMQSByZXBvcnRzIGFuIGVycm9yIGFuZCByZXN0YXJ0cyBsb2dpY2FsCisg KiByZXBsaWNhdGlvbi4KKyAqCisgKiA0KSBMb2NrIHR5cGVzCisgKgorICogQm90aCB0aGUgc3Ry ZWFtIGxvY2sgYW5kIHRoZSB0cmFuc2FjdGlvbiBsb2NrIG1lbnRpb25lZCBhYm92ZSBhcmUKKyAq IHNlc3Npb24tbGV2ZWwgbG9ja3MgYmVjYXVzZSBib3RoIGxvY2tzIGNvdWxkIGJlIGFjcXVpcmVk IG91dHNpZGUgdGhlCisgKiB0cmFuc2FjdGlvbiwgYW5kIHRoZSBzdHJlYW0gbG9jayBpbiB0aGUg bGVhZGVyIG5lZWRzIHRvIHBlcnNpc3QgYWNyb3NzCisgKiB0cmFuc2FjdGlvbiBib3VuZGFyaWVz IGkuZS4gdW50aWwgdGhlIGVuZCBvZiB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorICotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJs aWJwcS9wcWZvcm1hdC5oIgorI2luY2x1ZGUgImxpYnBxL3BxbXEuaCIKKyNpbmNsdWRlICJwZ3N0 YXQuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3 b3JrZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKKyNpbmNsdWRlICJyZXBs aWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2lu Y2x1ZGUgInN0b3JhZ2UvbG1nci5oIgorI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNs dWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVk ZSAidXRpbHMvc3lzY2FjaGUuaCIKKworI2RlZmluZSBQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJ QyAweDc4N2NhMDY3CisKKy8qCisgKiBEU00ga2V5cyBmb3IgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LiAgVW5saWtlIG90aGVyIHBhcmFsbGVsIGV4ZWN1dGlvbiBjb2RlLAorICogc2luY2Ugd2UgZG9u J3QgbmVlZCB0byB3b3JyeSBhYm91dCBEU00ga2V5cyBjb25mbGljdGluZyB3aXRoIHBsYW5fbm9k ZV9pZCB3ZQorICogY2FuIHVzZSBzbWFsbCBpbnRlZ2Vycy4KKyAqLworI2RlZmluZSBQQVJBTExF TF9BUFBMWV9LRVlfU0hBUkVECQkxCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9NUQkJCTIK KyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfS0VZX0VSUk9SX1FVRVVFCTMKKworLyogUXVldWUgc2l6 ZSBvZiBEU00sIDE2IE1CIGZvciBub3cuICovCisjZGVmaW5lIERTTV9RVUVVRV9TSVpFCSgxNiAq IDEwMjQgKiAxMDI0KQorCisvKgorICogRXJyb3IgcXVldWUgc2l6ZSBvZiBEU00uIEl0IGlzIGRl c2lyYWJsZSB0byBtYWtlIGl0IGxhcmdlIGVub3VnaCB0aGF0IGEKKyAqIHR5cGljYWwgRXJyb3JS ZXNwb25zZSBjYW4gYmUgc2VudCB3aXRob3V0IGJsb2NraW5nLiAgVGhhdCB3YXksIGEgd29ya2Vy IHRoYXQKKyAqIGVycm9ycyBvdXQgY2FuIHdyaXRlIHRoZSB3aG9sZSBtZXNzYWdlIGludG8gdGhl IHF1ZXVlIGFuZCB0ZXJtaW5hdGUgd2l0aG91dAorICogd2FpdGluZyBmb3IgdGhlIHVzZXIgYmFj a2VuZC4KKyAqLworI2RlZmluZSBEU01fRVJST1JfUVVFVUVfU0laRQkJCSgxNiAqIDEwMjQpCisK Ky8qCisgKiBUaGVyZSBhcmUgdGhyZWUgZmllbGRzIGluIGVhY2ggbWVzc2FnZSByZWNlaXZlZCBi eSB0aGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcjogc3RhcnRfbHNuLCBlbmRfbHNuIGFuZCBz ZW5kX3RpbWUuIEJlY2F1c2Ugd2UgaGF2ZSB1cGRhdGVkIHRoZXNlCisgKiBzdGF0aXN0aWNzIGlu IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLCB3ZSBjYW4gaWdub3JlIHRoZXNlIGZpZWxkcyBpbiB0 aGUKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAoc2VlIGZ1bmN0aW9uIExvZ2ljYWxSZXBBcHBs eUxvb3ApLgorICovCisjZGVmaW5lIFNJWkVfU1RBVFNfTUVTU0FHRSAoMiAqIHNpemVvZihYTG9n UmVjUHRyKSArIHNpemVvZihUaW1lc3RhbXBUeikpCisKKy8qCisgKiBUaGUgdHlwZSBvZiBzZXNz aW9uLWxldmVsIGxvY2sgb24gYSB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkIG9uIGEgbG9naWNh bAorICogcmVwbGljYXRpb24gc3Vic2NyaWJlci4KKyAqLworI2RlZmluZSBQQVJBTExFTF9BUFBM WV9MT0NLX1NUUkVBTQkwCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0xPQ0tfWEFDVAkxCisKKy8q CisgKiBIYXNoIHRhYmxlIGVudHJ5IHRvIG1hcCB4aWQgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlciBzdGF0ZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5 Cit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7CQkJLyogSGFzaCBrZXkgLS0gbXVzdCBiZSBmaXJzdCAq LworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKK30gUGFyYWxsZWxBcHBseVdvcmtl ckVudHJ5OworCisvKgorICogQSBoYXNoIHRhYmxlIHVzZWQgdG8gY2FjaGUgdGhlIHN0YXRlIG9m IHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVpbmcgYXBwbGllZAorICogYnkgdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlcnMuCisgKi8KK3N0YXRpYyBIVEFCICpQYXJhbGxlbEFwcGx5VHhuSGFzaCA9 IE5VTEw7CisKKy8qCisqIEEgbGlzdCAocG9vbCkgb2YgYWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdv cmtlcnMuIFRoZSBpbmZvcm1hdGlvbiBmb3IKKyogdGhlIG5ldyB3b3JrZXIgaXMgYWRkZWQgdG8g dGhlIGxpc3QgYWZ0ZXIgc3VjY2Vzc2Z1bGx5IGxhdW5jaGluZyBpdC4gVGhlCisqIGxpc3QgZW50 cnkgaXMgcmVtb3ZlZCBpZiB0aGVyZSBhcmUgYWxyZWFkeSBlbm91Z2ggd29ya2VycyBpbiB0aGUg d29ya2VyCisqIHBvb2wgZWl0aGVyIGF0IHRoZSBlbmQgb2YgdGhlIHRyYW5zYWN0aW9uIG9yIHdo aWxlIHRyeWluZyB0byBmaW5kIGEgZnJlZQorKiB3b3JrZXIgZm9yIGFwcGx5aW5nIHRoZSB0cmFu c2FjdGlvbi4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdvcmtlcgorKiBwb29sLCBz ZWUgY29tbWVudHMgYXRvcCB0aGlzIGZpbGUuCisgKi8KK3N0YXRpYyBMaXN0ICpQYXJhbGxlbEFw cGx5V29ya2VyUG9vbCA9IE5JTDsKKworLyoKKyAqIEluZm9ybWF0aW9uIHNoYXJlZCBiZXR3ZWVu IGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLworUGFy YWxsZWxBcHBseVdvcmtlclNoYXJlZCAqTXlQYXJhbGxlbFNoYXJlZCA9IE5VTEw7CisKKy8qCisg KiBJcyB0aGVyZSBhIG1lc3NhZ2Ugc2VudCBieSBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0aGF0 IHRoZSBsZWFkZXIgYXBwbHkKKyAqIHdvcmtlciBuZWVkcyB0byByZWNlaXZlPworICovCit2b2xh dGlsZSBzaWdfYXRvbWljX3QgUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gZmFsc2U7CisK Ky8qCisgKiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uIHJlcXVp cmVkIGZvciBhcHBseWluZyB0aGUKKyAqIGN1cnJlbnQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBJ dCBpcyB1c2VkIHRvIHNhdmUgdGhlIGNvc3Qgb2Ygc2VhcmNoaW5nIHRoZQorICogaGFzaCB0YWJs ZSB3aGVuIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGJldHdlZW4gU1RSRUFNX1NUQVJUIGFuZCBTVFJF QU1fU1RPUC4KKyAqLworc3RhdGljIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpzdHJlYW1fYXBw bHlfd29ya2VyID0gTlVMTDsKKworLyogQSBsaXN0IHRvIG1haW50YWluIHN1YnRyYW5zYWN0aW9u cywgaWYgYW55LiAqLworc3RhdGljIExpc3QJICAgKnN1YnhhY3RsaXN0ID0gTklMOworCitzdGF0 aWMgdm9pZCBwYV9mcmVlX3dvcmtlcl9pbmZvKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5m byk7CitzdGF0aWMgUGFyYWxsZWxUcmFuc1N0YXRlIHBhX2dldF94YWN0X3N0YXRlKFBhcmFsbGVs QXBwbHlXb3JrZXJTaGFyZWQgKndzaGFyZWQpOworCisvKgorICogUmV0dXJucyB0cnVlIGlmIGl0 IGlzIE9LIHRvIHN0YXJ0IGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLCBmYWxzZSBvdGhlcndpc2Uu CisgKi8KK3N0YXRpYyBib29sCitwYV9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJ QXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpOworCisJLyoKKwkgKiBEb24ndCBzdGFy dCBhIG5ldyBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaWYgdGhlIHN1YnNjcmlwdGlvbiBpcyBub3QK KwkgKiB1c2luZyBwYXJhbGxlbCBzdHJlYW1pbmcgbW9kZSwgb3IgaWYgdGhlIHB1Ymxpc2hlciBk b2VzIG5vdCBzdXBwb3J0CisJICogcGFyYWxsZWwgYXBwbHkuCisJICovCisJaWYgKCFNeUxvZ2lj YWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5KQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBPbmx5 IGxlYWRlciBhcHBseSB3b3JrZXJzIGNhbiBzdGFydCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiAq LworCWlmICghYW1fbGVhZGVyX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkv KgorCSAqIERvbid0IHN0YXJ0IGEgbmV3IHBhcmFsbGVsIHdvcmtlciBpZiB1c2VyIGhhcyBzZXQg c2tpcGxzbiBhcyBpdCdzCisJICogcG9zc2libGUgdGhhdCB0aGV5IHdhbnQgdG8gc2tpcCB0aGUg c3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBGb3Igc3RyZWFtaW5nCisJICogdHJhbnNhY3Rpb25zLCB3 ZSBuZWVkIHRvIHNlcmlhbGl6ZSB0aGUgdHJhbnNhY3Rpb24gdG8gYSBmaWxlIHNvIHRoYXQgd2UK KwkgKiBjYW4gZ2V0IHRoZSBsYXN0IExTTiBvZiB0aGUgdHJhbnNhY3Rpb24gdG8ganVkZ2Ugd2hl dGhlciB0byBza2lwIGJlZm9yZQorCSAqIHN0YXJ0aW5nIHRvIGFwcGx5IHRoZSBjaGFuZ2UuCisJ ICovCisJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lwbHNuKSkK KwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBGb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0 aGF0IGFyZSBiZWluZyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3JrZXIs IHdlIGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGZvciBhCisJICog cmVsYXRpb24gdGhhdCBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRlIChzZWUKKwkgKiBzaG91bGRf YXBwbHlfY2hhbmdlc19mb3JfcmVsKSBhcyB3ZSB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24g YnkgdGhhdAorCSAqIHRpbWUuIFNvLCB3ZSBkb24ndCBzdGFydCB0aGUgbmV3IHBhcmFsbGVsIGFw cGx5IHdvcmtlciBpbiB0aGlzIGNhc2UuCisJICovCisJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHko KSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBTZXQgdXAg YSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudC4KKyAqCisgKiBXZSBzZXQgdXAgYSBjb250 cm9sIHJlZ2lvbiB0aGF0IGNvbnRhaW5zIGEgZml4ZWQtc2l6ZSB3b3JrZXIgaW5mbworICogKFBh cmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQpLCBhIG1lc3NhZ2UgcXVldWUsIGFuZCBhbiBlcnJvciBx dWV1ZS4KKyAqCisgKiBSZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4K KyAqLworc3RhdGljIGJvb2wKK3BhX3NldHVwX2RzbShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm8pCit7CisJc2htX3RvY19lc3RpbWF0b3IgZTsKKwlTaXplCQlzZWdzaXplOworCWRzbV9z ZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFy ZWQgKnNoYXJlZDsKKwlzaG1fbXEJICAgKm1xOworCVNpemUJCXF1ZXVlX3NpemUgPSBEU01fUVVF VUVfU0laRTsKKwlTaXplCQllcnJvcl9xdWV1ZV9zaXplID0gRFNNX0VSUk9SX1FVRVVFX1NJWkU7 CisKKwkvKgorCSAqIEVzdGltYXRlIGhvdyBtdWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkg KgorCSAqIEJlY2F1c2UgdGhlIFRPQyBtYWNoaW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFk ZGluZyBvZiBvZGRseS1zaXplZAorCSAqIHJlcXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2gg Y2h1bmsgc2VwYXJhdGVseS4KKwkgKgorCSAqIFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0 aGUgbG9jYXRpb24gb2YgdGhlIGhlYWRlciwgYW5kIHR3byBvdGhlcgorCSAqIGtleXMgdG8gdHJh Y2sgdGhlIGxvY2F0aW9ucyBvZiB0aGUgbWVzc2FnZSBxdWV1ZSBhbmQgdGhlIGVycm9yIG1lc3Nh Z2UKKwkgKiBxdWV1ZS4KKwkgKi8KKwlzaG1fdG9jX2luaXRpYWxpemVfZXN0aW1hdG9yKCZlKTsK KwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCBzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlclNo YXJlZCkpOworCXNobV90b2NfZXN0aW1hdGVfY2h1bmsoJmUsIHF1ZXVlX3NpemUpOworCXNobV90 b2NfZXN0aW1hdGVfY2h1bmsoJmUsIGVycm9yX3F1ZXVlX3NpemUpOworCisJc2htX3RvY19lc3Rp bWF0ZV9rZXlzKCZlLCAzKTsKKwlzZWdzaXplID0gc2htX3RvY19lc3RpbWF0ZSgmZSk7CisKKwkv KiBDcmVhdGUgdGhlIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBhbmQgZXN0YWJsaXNoIGEgdGFibGUg b2YgY29udGVudHMuICovCisJc2VnID0gZHNtX2NyZWF0ZShzaG1fdG9jX2VzdGltYXRlKCZlKSwg MCk7CisJaWYgKCFzZWcpCisJCXJldHVybiBmYWxzZTsKKworCXRvYyA9IHNobV90b2NfY3JlYXRl KFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDLCBkc21fc2VnbWVudF9hZGRyZXNzKHNlZyksCisJ CQkJCQkgc2Vnc2l6ZSk7CisKKwkvKiBTZXQgdXAgdGhlIGhlYWRlciByZWdpb24uICovCisJc2hh cmVkID0gc2htX3RvY19hbGxvY2F0ZSh0b2MsIHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2VyU2hh cmVkKSk7CisJU3BpbkxvY2tJbml0KCZzaGFyZWQtPm11dGV4KTsKKworCXNoYXJlZC0+eGFjdF9z dGF0ZSA9IFBBUkFMTEVMX1RSQU5TX1VOS05PV047CisJcGdfYXRvbWljX2luaXRfdTMyKCYoc2hh cmVkLT5wZW5kaW5nX3N0cmVhbV9jb3VudCksIDApOworCXNoYXJlZC0+bGFzdF9jb21taXRfZW5k ID0gSW52YWxpZFhMb2dSZWNQdHI7CisKKwlzaG1fdG9jX2luc2VydCh0b2MsIFBBUkFMTEVMX0FQ UExZX0tFWV9TSEFSRUQsIHNoYXJlZCk7CisKKwkvKiBTZXQgdXAgbWVzc2FnZSBxdWV1ZSBmb3Ig dGhlIHdvcmtlci4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUoc2htX3RvY19hbGxvY2F0ZSh0b2Ms IHF1ZXVlX3NpemUpLCBxdWV1ZV9zaXplKTsKKwlzaG1fdG9jX2luc2VydCh0b2MsIFBBUkFMTEVM X0FQUExZX0tFWV9NUSwgbXEpOworCXNobV9tcV9zZXRfc2VuZGVyKG1xLCBNeVByb2MpOworCisJ LyogQXR0YWNoIHRoZSBxdWV1ZS4gKi8KKwl3aW5mby0+bXFfaGFuZGxlID0gc2htX21xX2F0dGFj aChtcSwgc2VnLCBOVUxMKTsKKworCS8qIFNldCB1cCBlcnJvciBxdWV1ZSBmb3IgdGhlIHdvcmtl ci4gKi8KKwltcSA9IHNobV9tcV9jcmVhdGUoc2htX3RvY19hbGxvY2F0ZSh0b2MsIGVycm9yX3F1 ZXVlX3NpemUpLAorCQkJCQkgICBlcnJvcl9xdWV1ZV9zaXplKTsKKwlzaG1fdG9jX2luc2VydCh0 b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9FUlJPUl9RVUVVRSwgbXEpOworCXNobV9tcV9zZXRfcmVj ZWl2ZXIobXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhlIHF1ZXVlLiAqLworCXdpbmZvLT5l cnJvcl9tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyogUmV0 dXJuIHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdpbmZvLT5kc21fc2VnID0gc2VnOworCXdpbmZv LT5zaGFyZWQgPSBzaGFyZWQ7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIFRyeSB0byBn ZXQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZnJvbSB0aGUgcG9vbC4gSWYgbm9uZSBpcyBhdmFp bGFibGUgdGhlbgorICogc3RhcnQgYSBuZXcgb25lLgorICovCitzdGF0aWMgUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKgorcGFfbGF1bmNoX3BhcmFsbGVsX3dvcmtlcih2b2lkKQoreworCU1lbW9y eUNvbnRleHQgb2xkY29udGV4dDsKKwlib29sCQlsYXVuY2hlZDsKKwlQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqd2luZm87CisJTGlzdAkgICAqYWN0aXZlX3dvcmtlcnMgPSBsaXN0X2NvcHkoUGFy YWxsZWxBcHBseVdvcmtlclBvb2wpOworCUxpc3RDZWxsICAgKmxjOworCisJLyogVHJ5IHRvIGdl dCBhbiBhdmFpbGFibGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZyb20gdGhlIHdvcmtlciBwb29s LiAqLworCWZvcmVhY2gobGMsIGFjdGl2ZV93b3JrZXJzKQorCXsKKwkJd2luZm8gPSAoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKikgbGZpcnN0KGxjKTsKKworCQkvKgorCQkgKiBXZSBmaXJzdCB0 cnkgdG8gZnJlZSB0aGUgd29ya2VyIHRvIGltcHJvdmUgb3VyIGNoYW5jZXMgb2YgZmluZGluZwor CQkgKiBvbmUgdGhhdCBpcyBub3QgaW4gdXNlLiBOb3JtYWxseSwgd2UgZnJlZSB0aGUgd29ya2Vy IGFmdGVyIGVuc3VyaW5nCisJCSAqIHRoYXQgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBi eSB0aGUgcGFyYWxsZWwgd29ya2VyIGJ1dCBmb3IKKwkJICogcm9sbGJhY2tzLCB3ZSBkb24ndCB3 YWl0IGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gZmluaXNoIHNvIGNhbid0CisJCSAqIGZyZWUgdGhl IHdvcmtlciBpbmZvcm1hdGlvbiBpbW1lZGlhdGVseS4KKwkJICovCisJCWlmIChwYV9mcmVlX3dv cmtlcih3aW5mbykpCisJCQljb250aW51ZTsKKworCQlpZiAoIXdpbmZvLT5pbl91c2UpCisJCQly ZXR1cm4gd2luZm87CisJfQorCisJLyoKKwkgKiBTdGFydCBhIG5ldyBwYXJhbGxlbCBhcHBseSB3 b3JrZXIuCisJICoKKwkgKiBUaGUgd29ya2VyIGluZm8gY2FuIGJlIHVzZWQgZm9yIHRoZSBsaWZl dGltZSBvZiB0aGUgd29ya2VyIHByb2Nlc3MsIHNvCisJICogY3JlYXRlIGl0IGluIGEgcGVybWFu ZW50IGNvbnRleHQuCisJICovCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhB cHBseUNvbnRleHQpOworCisJd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgcGFs bG9jMChzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlckluZm8pKTsKKworCS8qIFNldHVwIHNoYXJl ZCBtZW1vcnkuICovCisJaWYgKCFwYV9zZXR1cF9kc20od2luZm8pKQorCXsKKwkJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQlwZnJlZSh3aW5mbyk7CisJCXJldHVybiBOVUxM OworCX0KKworCWxhdW5jaGVkID0gbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE15TG9naWNhbFJl cFdvcmtlci0+ZGJpZCwKKwkJCQkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJ CU15U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJCQkJCQkJCU15TG9naWNhbFJlcFdvcmtlci0+dXNl cmlkLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJZHNtX3NlZ21lbnRfaGFuZGxl KHdpbmZvLT5kc21fc2VnKSk7CisKKwlpZiAobGF1bmNoZWQpCisJeworCQlQYXJhbGxlbEFwcGx5 V29ya2VyUG9vbCA9IGxhcHBlbmQoUGFyYWxsZWxBcHBseVdvcmtlclBvb2wsIHdpbmZvKTsKKwl9 CisJZWxzZQorCXsKKwkJcGFfZnJlZV93b3JrZXJfaW5mbyh3aW5mbyk7CisJCXdpbmZvID0gTlVM TDsKKwl9CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwlyZXR1cm4g d2luZm87Cit9CisKKy8qCisgKiBBbGxvY2F0ZSBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0aGF0 IHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCB4aWQuCisgKgorICogV2UgZmlyc3QgdHJ5 IHRvIGdldCBhbiBhdmFpbGFibGUgd29ya2VyIGZyb20gdGhlIHBvb2wsIGlmIGFueSBhbmQgdGhl biB0cnkKKyAqIHRvIGxhdW5jaCBhIG5ldyB3b3JrZXIuIE9uIHN1Y2Nlc3NmdWwgYWxsb2NhdGlv biwgcmVtZW1iZXIgdGhlIHdvcmtlcgorICogaW5mb3JtYXRpb24gaW4gdGhlIGhhc2ggdGFibGUg c28gdGhhdCB3ZSBjYW4gZ2V0IGl0IGxhdGVyIGZvciBwcm9jZXNzaW5nIHRoZQorICogc3RyZWFt aW5nIGNoYW5nZXMuCisgKi8KK3ZvaWQKK3BhX2FsbG9jYXRlX3dvcmtlcihUcmFuc2FjdGlvbklk IHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8g PSBOVUxMOworCVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50cnk7CisKKwlpZiAoIXBhX2Nh bl9zdGFydCh4aWQpKQorCQlyZXR1cm47CisKKwkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRp YWxpemUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXRlIGhhc2h0YWJsZS4gKi8KKwlpZiAoIVBh cmFsbGVsQXBwbHlUeG5IYXNoKQorCXsKKwkJSEFTSENUTAkJY3RsOworCisJCU1lbVNldCgmY3Rs LCAwLCBzaXplb2YoY3RsKSk7CisJCWN0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQp OworCQljdGwuZW50cnlzaXplID0gc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSk7CisJ CWN0bC5oY3h0ID0gQXBwbHlDb250ZXh0OworCisJCVBhcmFsbGVsQXBwbHlUeG5IYXNoID0gaGFz aF9jcmVhdGUoImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VycyBoYXNo IiwKKwkJCQkJCQkJCQkJICAgMTYsICZjdGwsCisJCQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhB U0hfQkxPQlMgfCBIQVNIX0NPTlRFWFQpOworCX0KKworCXdpbmZvID0gcGFfbGF1bmNoX3BhcmFs bGVsX3dvcmtlcigpOworCWlmICghd2luZm8pCisJCXJldHVybjsKKworCS8qIENyZWF0ZSBhbiBl bnRyeSBmb3IgdGhlIHJlcXVlc3RlZCB0cmFuc2FjdGlvbi4gKi8KKwllbnRyeSA9IGhhc2hfc2Vh cmNoKFBhcmFsbGVsQXBwbHlUeG5IYXNoLCAmeGlkLCBIQVNIX0VOVEVSLCAmZm91bmQpOworCWlm IChmb3VuZCkKKwkJZWxvZyhFUlJPUiwgImhhc2ggdGFibGUgY29ycnVwdGVkIik7CisKKwkvKiBJ bml0aWFsaXplIHNoYXJlZCBtZW1vcnkgYXJlYS4gKi8KKwlTcGluTG9ja0FjcXVpcmUoJndpbmZv LT5zaGFyZWQtPm11dGV4KTsKKwl3aW5mby0+c2hhcmVkLT54YWN0X3N0YXRlID0gUEFSQUxMRUxf VFJBTlNfVU5LTk9XTjsKKwl3aW5mby0+c2hhcmVkLT54aWQgPSB4aWQ7CisJU3BpbkxvY2tSZWxl YXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisKKwl3aW5mby0+aW5fdXNlID0gdHJ1ZTsKKwll bnRyeS0+d2luZm8gPSB3aW5mbzsKKwllbnRyeS0+eGlkID0geGlkOworfQorCisvKgorICogRmlu ZCB0aGUgYXNzaWduZWQgd29ya2VyIGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24sIGlmIGFueS4K KyAqLworUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKgorcGFfZmluZF93b3JrZXIoVHJhbnNhY3Rp b25JZCB4aWQpCit7CisJYm9vbAkJZm91bmQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5ICpl bnRyeTsKKworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwkJcmV0dXJuIE5VTEw7 CisKKwlpZiAoIVBhcmFsbGVsQXBwbHlUeG5IYXNoKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIFJl dHVybiB0aGUgY2FjaGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpZiB2YWxpZC4gKi8KKwlpZiAo c3RyZWFtX2FwcGx5X3dvcmtlcikKKwkJcmV0dXJuIHN0cmVhbV9hcHBseV93b3JrZXI7CisKKwkv KiBGaW5kIGFuIGVudHJ5IGZvciB0aGUgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLworCWVudHJ5 ID0gaGFzaF9zZWFyY2goUGFyYWxsZWxBcHBseVR4bkhhc2gsICZ4aWQsIEhBU0hfRklORCwgJmZv dW5kKTsKKwlpZiAoZm91bmQpCisJeworCQkvKiBUaGUgd29ya2VyIG11c3Qgbm90IGhhdmUgZXhp dGVkLiAgKi8KKwkJQXNzZXJ0KGVudHJ5LT53aW5mby0+aW5fdXNlKTsKKwkJcmV0dXJuIGVudHJ5 LT53aW5mbzsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIE1ha2VzIHRoZSB3b3Jr ZXIgYXZhaWxhYmxlIGZvciByZXVzZS4KKyAqCisgKiBUaGlzIHJlbW92ZXMgdGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBlbnRyeSBmcm9tIHRoZSBoYXNoIHRhYmxlIHNvIHRoYXQgaXQKKyAqIGNh bid0IGJlIHVzZWQuIElmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2VycyBpbiB0aGUgcG9vbCwgaXQg c3RvcHMgdGhlIHdvcmtlcgorICogYW5kIGZyZWVzIHRoZSBjb3JyZXNwb25kaW5nIGluZm8uIE90 aGVyd2lzZSBpdCBqdXN0IG1hcmtzIHRoZSB3b3JrZXIgYXMKKyAqIGF2YWlsYWJsZSBmb3IgcmV1 c2UuCisgKgorICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdvcmtlciBwb29sLCBz ZWUgY29tbWVudHMgYXRvcCB0aGlzIGZpbGUuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSB3 b3JrZXIgaXMgc3RvcHBlZCwgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitib29sCitwYV9mcmVlX3dv cmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJQXNzZXJ0KCFhbV9wYXJh bGxlbF9hcHBseV93b3JrZXIoKSk7CisKKwkvKiBXb3JrZXIgaXMgYWxyZWFkeSBhdmFpbGFibGUg Zm9yIHJldXNlLiAqLworCWlmICghd2luZm8tPmluX3VzZSkKKwkJcmV0dXJuIGZhbHNlOworCisJ LyoKKwkgKiBEb24ndCBmcmVlIHRoZSB3b3JrZXIgaWYgdGhlIHRyYW5zYWN0aW9uIGluIHRoZSB3 b3JrZXIgaXMgc3RpbGwgaW4KKwkgKiBwcm9ncmVzcy4gVGhpcyBjb3VsZCBoYXBwZW4gYXMgd2Ug ZG9uJ3Qgd2FpdCBmb3IgdGhlIGFwcGx5IG9mIHJvbGxiYWNrCisJICogdG8gZmluaXNoLgorCSAq LworCWlmIChwYV9nZXRfeGFjdF9zdGF0ZSh3aW5mby0+c2hhcmVkKSAhPSBQQVJBTExFTF9UUkFO U19GSU5JU0hFRCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKCFoYXNoX3NlYXJjaChQYXJhbGxl bEFwcGx5VHhuSGFzaCwgJndpbmZvLT5zaGFyZWQtPnhpZCwgSEFTSF9SRU1PVkUsIE5VTEwpKQor CQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKworCS8qIFN0b3AgdGhlIHdv cmtlciBpZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wuICovCisJaWYgKGxp c3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKSA+CisJCShtYXhfcGFyYWxsZWxfYXBw bHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIC8gMikpCisJeworCQlpbnQJCQlzbG90X25vOwor CQl1aW50MTYJCWdlbmVyYXRpb247CisKKwkJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVk LT5tdXRleCk7CisJCWdlbmVyYXRpb24gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtl cl9nZW5lcmF0aW9uOworCQlzbG90X25vID0gd2luZm8tPnNoYXJlZC0+bG9naWNhbHJlcF93b3Jr ZXJfc2xvdF9ubzsKKwkJU3BpbkxvY2tSZWxlYXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisK KwkJbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChzbG90X25vLCBnZW5lcmF0aW9uKTsKKworCQlw YV9mcmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsKKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwl3aW5m by0+aW5fdXNlID0gZmFsc2U7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qIEZyZWUgdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlciBpbmZvcm1hdGlvbi4gKi8KK3N0YXRpYyB2b2lkCitwYV9mcmVl X3dvcmtlcl9pbmZvKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKK3sKKwlBc3NlcnQo d2luZm8pOworCisJaWYgKHdpbmZvLT5tcV9oYW5kbGUpCisJCXNobV9tcV9kZXRhY2god2luZm8t Pm1xX2hhbmRsZSk7CisKKwlpZiAod2luZm8tPmVycm9yX21xX2hhbmRsZSkKKwkJc2htX21xX2Rl dGFjaCh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKTsKKworCWlmICh3aW5mby0+ZHNtX3NlZykKKwkJ ZHNtX2RldGFjaCh3aW5mby0+ZHNtX3NlZyk7CisKKwkvKiBSZW1vdmUgZnJvbSB0aGUgd29ya2Vy IHBvb2wuICovCisJUGFyYWxsZWxBcHBseVdvcmtlclBvb2wgPSBsaXN0X2RlbGV0ZV9wdHIoUGFy YWxsZWxBcHBseVdvcmtlclBvb2wsIHdpbmZvKTsKKworCXBmcmVlKHdpbmZvKTsKK30KKworLyoK KyAqIERldGFjaCBmcm9tIHRoZSBlcnJvcl9tcV9oYW5kbGUgZm9yIGVhY2ggcGFyYWxsZWwgYXBw bHkgd29ya2VyLgorICovCit2b2lkCitwYV9kZXRhY2hfYWxsX2Vycm9yX21xKHZvaWQpCit7CisJ TGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBQYXJhbGxlbEFwcGx5V29ya2VyUG9vbCkK Kwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCXNobV9tcV9kZXRhY2god2luZm8tPmVycm9yX21x X2hhbmRsZSk7CisJCXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUgPSBOVUxMOworCX0KK30KKworLyoK KyAqIEludGVycnVwdCBoYW5kbGVyIGZvciBtYWluIGxvb3Agb2YgcGFyYWxsZWwgYXBwbHkgd29y a2VyLgorICovCitzdGF0aWMgdm9pZAorUHJvY2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKHZv aWQpCit7CisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCWlmIChTaHV0ZG93blJlcXVlc3RQ ZW5kaW5nKQorCXsKKwkJZXJlcG9ydChMT0csCisJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNh dGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGZp bmlzaGVkIiwKKwkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCisJCXByb2NfZXhpdCgw KTsKKwl9CisKKwlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwl7CisJCUNvbmZpZ1JlbG9hZFBl bmRpbmcgPSBmYWxzZTsKKwkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJfQorfQor CisvKiBQYXJhbGxlbCBhcHBseSB3b3JrZXIgbWFpbiBsb29wLiAqLworc3RhdGljIHZvaWQKK0xv Z2ljYWxQYXJhbGxlbEFwcGx5TG9vcChzaG1fbXFfaGFuZGxlICptcWgpCit7CisJc2htX21xX3Jl c3VsdCBzaG1xX3JlczsKKwlFcnJvckNvbnRleHRDYWxsYmFjayBlcnJjYWxsYmFjazsKKwlNZW1v cnlDb250ZXh0IG9sZGN4dCA9IEN1cnJlbnRNZW1vcnlDb250ZXh0OworCisJLyoKKwkgKiBJbml0 IHRoZSBBcHBseU1lc3NhZ2VDb250ZXh0IHdoaWNoIHdlIGNsZWFuIHVwIGFmdGVyIGVhY2ggcmVw bGljYXRpb24KKwkgKiBwcm90b2NvbCBtZXNzYWdlLgorCSAqLworCUFwcGx5TWVzc2FnZUNvbnRl eHQgPSBBbGxvY1NldENvbnRleHRDcmVhdGUoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJIkFw cGx5TWVzc2FnZUNvbnRleHQiLAorCQkJCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7 CisKKwkvKgorCSAqIFB1c2ggYXBwbHkgZXJyb3IgY29udGV4dCBjYWxsYmFjay4gRmllbGRzIHdp bGwgYmUgZmlsbGVkIHdoaWxlIGFwcGx5aW5nCisJICogYSBjaGFuZ2UuCisJICovCisJZXJyY2Fs bGJhY2suY2FsbGJhY2sgPSBhcHBseV9lcnJvcl9jYWxsYmFjazsKKwllcnJjYWxsYmFjay5wcmV2 aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CisJZXJyb3JfY29udGV4dF9zdGFjayA9ICZlcnJj YWxsYmFjazsKKworCWZvciAoOzspCisJeworCQl2b2lkCSAgICpkYXRhOworCQlTaXplCQlsZW47 CisKKwkJUHJvY2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKCk7CisKKwkJLyogRW5zdXJlIHdl IGFyZSByZWFkaW5nIHRoZSBkYXRhIGludG8gb3VyIG1lbW9yeSBjb250ZXh0LiAqLworCQlNZW1v cnlDb250ZXh0U3dpdGNoVG8oQXBwbHlNZXNzYWdlQ29udGV4dCk7CisKKwkJc2htcV9yZXMgPSBz aG1fbXFfcmVjZWl2ZShtcWgsICZsZW4sICZkYXRhLCB0cnVlKTsKKworCQlpZiAoc2htcV9yZXMg PT0gU0hNX01RX1NVQ0NFU1MpCisJCXsKKwkJCVN0cmluZ0luZm9EYXRhIHM7CisJCQlpbnQJCQlj OworCisJCQlpZiAobGVuID09IDApCisJCQkJZWxvZyhFUlJPUiwgImludmFsaWQgbWVzc2FnZSBs ZW5ndGgiKTsKKworCQkJcy5jdXJzb3IgPSAwOworCQkJcy5tYXhsZW4gPSAtMTsKKwkJCXMuZGF0 YSA9IChjaGFyICopIGRhdGE7CisJCQlzLmxlbiA9IGxlbjsKKworCQkJLyoKKwkJCSAqIFRoZSBm aXJzdCBieXRlIG9mIG1lc3NhZ2VzIHNlbnQgZnJvbSBsZWFkZXIgYXBwbHkgd29ya2VyIHRvCisJ CQkgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGNhbiBvbmx5IGJlICd3Jy4KKwkJCSAqLworCQkJ YyA9IHBxX2dldG1zZ2J5dGUoJnMpOworCQkJaWYgKGMgIT0gJ3cnKQorCQkJCWVsb2coRVJST1Is ICJ1bmV4cGVjdGVkIG1lc3NhZ2UgXCIlY1wiIiwgYyk7CisKKwkJCS8qCisJCQkgKiBJZ25vcmUg c3RhdGlzdGljcyBmaWVsZHMgdGhhdCBoYXZlIGJlZW4gdXBkYXRlZCBieSB0aGUgbGVhZGVyCisJ CQkgKiBhcHBseSB3b3JrZXIuCisJCQkgKi8KKwkJCXMuY3Vyc29yICs9IFNJWkVfU1RBVFNfTUVT U0FHRTsKKworCQkJYXBwbHlfZGlzcGF0Y2goJnMpOworCQl9CisJCWVsc2UgaWYgKHNobXFfcmVz ID09IFNITV9NUV9XT1VMRF9CTE9DSykKKwkJeworCQkJaW50CQkJcmM7CisKKwkJCS8qIFdhaXQg Zm9yIG1vcmUgd29yay4gKi8KKwkJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsCisJCQkJCQkgICBX TF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAg IDEwMDBMLAorCQkJCQkJICAgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4p OworCisJCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCQkJUmVzZXRMYXRjaChNeUxhdGNoKTsK KwkJfQorCQllbHNlCisJCXsKKwkJCUFzc2VydChzaG1xX3JlcyA9PSBTSE1fTVFfREVUQUNIRUQp OworCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRv IHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IHdvcmtlciIpKSk7CisJCX0KKworCQlNZW1v cnlDb250ZXh0UmVzZXQoQXBwbHlNZXNzYWdlQ29udGV4dCk7CisJCU1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhvbGRjeHQpOworCX0KKworCS8qIFBvcCB0aGUgZXJyb3IgY29udGV4dCBzdGFjay4gKi8K KwllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7CisKKwlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKK30KKworLyoKKyAqIE1ha2Ugc3VyZSB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciB0cmllcyB0byByZWFkIGZyb20gb3VyIGVycm9yIHF1ZXVlIG9uZSBtb3Jl CisgKiB0aW1lLiBUaGlzIGd1YXJkcyBhZ2FpbnN0IHRoZSBjYXNlIHdoZXJlIHdlIGV4aXQgdW5j bGVhbmx5IHdpdGhvdXQgc2VuZGluZworICogYW4gRXJyb3JSZXNwb25zZSwgZm9yIGV4YW1wbGUg YmVjYXVzZSBzb21lIGNvZGUgY2FsbHMgcHJvY19leGl0IGRpcmVjdGx5LgorICovCitzdGF0aWMg dm9pZAorcGFfc2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZykKK3sKKwlTZW5kUHJvY1NpZ25h bChNeUxvZ2ljYWxSZXBXb3JrZXItPmFwcGx5X2xlYWRlcl9waWQsCisJCQkJICAgUFJPQ1NJR19Q QVJBTExFTF9BUFBMWV9NRVNTQUdFLAorCQkJCSAgIEludmFsaWRCYWNrZW5kSWQpOworCisJZHNt X2RldGFjaCgoZHNtX3NlZ21lbnQgKikgRGF0dW1HZXRQb2ludGVyKGFyZykpOworfQorCisvKgor ICogUGFyYWxsZWwgYXBwbHkgd29ya2VyIGVudHJ5IHBvaW50LgorICovCit2b2lkCitQYXJhbGxl bEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKK3sKKwlQYXJhbGxlbEFwcGx5V29ya2Vy U2hhcmVkICpzaGFyZWQ7CisJZHNtX2hhbmRsZQloYW5kbGU7CisJZHNtX3NlZ21lbnQgKnNlZzsK KwlzaG1fdG9jICAgICp0b2M7CisJc2htX21xCSAgICptcTsKKwlzaG1fbXFfaGFuZGxlICptcWg7 CisJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFoOworCVJlcE9yaWdpbklkIG9yaWdpbmlkOworCWlu dAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CisJY2hhcgkJb3JpZ2lu bmFtZVtOQU1FREFUQUxFTl07CisKKwkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcuICovCisJcHFz aWduYWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChT SUdJTlQsIFNpZ25hbEhhbmRsZXJGb3JTaHV0ZG93blJlcXVlc3QpOworCXBxc2lnbmFsKFNJR1RF Uk0sIGRpZSk7CisJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CisKKwkvKgorCSAq IEF0dGFjaCB0byB0aGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgZm9yIHRoZSBwYXJh bGxlbCBhcHBseSwgYW5kCisJICogZmluZCBpdHMgdGFibGUgb2YgY29udGVudHMuCisJICoKKwkg KiBMaWtlIHBhcmFsbGVsIHF1ZXJ5LCB3ZSBkb24ndCBuZWVkIHJlc291cmNlIG93bmVyIGJ5IHRo aXMgdGltZS4gU2VlCisJICogUGFyYWxsZWxXb3JrZXJNYWluLgorCSAqLworCW1lbWNweSgmaGFu ZGxlLCBNeUJnd29ya2VyRW50cnktPmJnd19leHRyYSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsKKwlz ZWcgPSBkc21fYXR0YWNoKGhhbmRsZSk7CisJaWYgKCFzZWcpCisJCWVyZXBvcnQoRVJST1IsCisJ CQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJ CQkJIGVycm1zZygidW5hYmxlIHRvIG1hcCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIp KSk7CisKKwl0b2MgPSBzaG1fdG9jX2F0dGFjaChQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywg ZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcpKTsKKwlpZiAoIXRvYykKKwkJZXJlcG9ydChFUlJPUiwK KwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK KwkJCQkgZXJybXNnKCJiYWQgbWFnaWMgbnVtYmVyIGluIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBz ZWdtZW50IikpKTsKKworCWJlZm9yZV9zaG1lbV9leGl0KHBhX3NodXRkb3duLCBQb2ludGVyR2V0 RGF0dW0oc2VnKSk7CisKKwkvKiBMb29rIHVwIHRoZSBzaGFyZWQgaW5mb3JtYXRpb24uICovCisJ c2hhcmVkID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfU0hBUkVELCBm YWxzZSk7CisJTXlQYXJhbGxlbFNoYXJlZCA9IHNoYXJlZDsKKworCS8qCisJICogQXR0YWNoIHRv IHRoZSBtZXNzYWdlIHF1ZXVlLgorCSAqLworCW1xID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJB TExFTF9BUFBMWV9LRVlfTVEsIGZhbHNlKTsKKwlzaG1fbXFfc2V0X3JlY2VpdmVyKG1xLCBNeVBy b2MpOworCW1xaCA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKgorCSAqIFBy aW1hcnkgaW5pdGlhbGl6YXRpb24gaXMgY29tcGxldGUuIE5vdywgd2UgY2FuIGF0dGFjaCB0byBv dXIgc2xvdC4KKwkgKiBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSBsZWFkZXIgYXBwbHkgd29y a2VyIGRvZXMgbm90IHdyaXRlIGRhdGEgdG8KKwkgKiB0aGUgdW5pbml0aWFsaXplZCBtZW1vcnkg cXVldWUuCisJICovCisJbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKKwor CVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0ZXgpOworCU15UGFyYWxsZWxT aGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb24gPSBNeUxvZ2ljYWxSZXBXb3JrZXIt PmdlbmVyYXRpb247CisJTXlQYXJhbGxlbFNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfc2xvdF9u byA9IHdvcmtlcl9zbG90OworCVNwaW5Mb2NrUmVsZWFzZSgmTXlQYXJhbGxlbFNoYXJlZC0+bXV0 ZXgpOworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhlIGVycm9yIHF1ZXVlLgorCSAqLworCW1xID0g c2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUsIGZhbHNl KTsKKwlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKKwllcnJvcl9tcWggPSBzaG1fbXFf YXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJcHFfcmVkaXJlY3RfdG9fc2htX21xKHNlZywgZXJy b3JfbXFoKTsKKwlwcV9zZXRfcGFyYWxsZWxfbGVhZGVyKE15TG9naWNhbFJlcFdvcmtlci0+YXBw bHlfbGVhZGVyX3BpZCwKKwkJCQkJCSAgIEludmFsaWRCYWNrZW5kSWQpOworCisJTXlMb2dpY2Fs UmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2 X3RpbWUgPQorCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSAwOworCisJSW5pdGlh bGl6ZUFwcGx5V29ya2VyKCk7CisKKwkvKiBTZXR1cCByZXBsaWNhdGlvbiBvcmlnaW4gdHJhY2tp bmcuICovCisJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwlSZXBsaWNhdGlvbk9yaWdpbk5h bWVGb3JMb2dpY2FsUmVwKE15U3Vic2NyaXB0aW9uLT5vaWQsIEludmFsaWRPaWQsCisJCQkJCQkJ CQkgICBvcmlnaW5uYW1lLCBzaXplb2Yob3JpZ2lubmFtZSkpOworCW9yaWdpbmlkID0gcmVwbG9y aWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIGZhbHNlKTsKKworCS8qCisJICogVGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlciBkb2Vzbid0IG5lZWQgdG8gbW9ub3BvbGl6ZSB0aGlzIHJlcGxpY2F0aW9u CisJICogb3JpZ2luIHdoaWNoIHdhcyBhbHJlYWR5IGFjcXVpcmVkIGJ5IGl0cyBsZWFkZXIgcHJv Y2Vzcy4KKwkgKi8KKwlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIE15TG9naWNh bFJlcFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCk7CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdp biA9IG9yaWdpbmlkOworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkgKiBT ZXR1cCBjYWxsYmFjayBmb3Igc3lzY2FjaGUgc28gdGhhdCB3ZSBrbm93IHdoZW4gc29tZXRoaW5n IGNoYW5nZXMgaW4KKwkgKiB0aGUgc3Vic2NyaXB0aW9uIHJlbGF0aW9uIHN0YXRlLgorCSAqLwor CUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFNVQlNDUklQVElPTlJFTE1BUCwKKwkJCQkJ CQkJICBpbnZhbGlkYXRlX3N5bmNpbmdfdGFibGVfc3RhdGVzLAorCQkJCQkJCQkgIChEYXR1bSkg MCk7CisKKwlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9vcmlnaW4ob3JpZ2lubmFtZSk7CisKKwlM b2dpY2FsUGFyYWxsZWxBcHBseUxvb3AobXFoKTsKKworCS8qCisJICogVGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlciBtdXN0IG5vdCBnZXQgaGVyZSBiZWNhdXNlIHRoZSBwYXJhbGxlbCBhcHBseQor CSAqIHdvcmtlciB3aWxsIG9ubHkgc3RvcCB3aGVuIGl0IHJlY2VpdmVzIGEgU0lHVEVSTSBvciBT SUdJTlQgZnJvbSB0aGUKKwkgKiBsZWFkZXIsIGRldGVjdHMgYSBjaGFuZ2UgaW4gc3Vic2NyaXB0 aW9uIGluZm9ybWF0aW9uLCBvciB3aGVuIHRoZXJlCisJICogdGhlcmUgaXMgYW4gZXJyb3IuIE5v bmUgb2YgdGhlc2UgY2FzZXMgd2lsbCBhbGxvdyB0aGUgY29kZSB0byByZWFjaAorCSAqIGhlcmUu CisJICovCisJQXNzZXJ0KGZhbHNlKTsKK30KKworLyoKKyAqIEhhbmRsZSByZWNlaXB0IG9mIGFu IGludGVycnVwdCBpbmRpY2F0aW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIG1lc3NhZ2UuCisg KgorICogTm90ZTogdGhpcyBpcyBjYWxsZWQgd2l0aGluIGEgc2lnbmFsIGhhbmRsZXIhIEFsbCB3 ZSBjYW4gZG8gaXMgc2V0IGEgZmxhZworICogdGhhdCB3aWxsIGNhdXNlIHRoZSBuZXh0IENIRUNL X0ZPUl9JTlRFUlJVUFRTKCkgdG8gaW52b2tlCisgKiBIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2Fn ZXMoKS4KKyAqLwordm9pZAorSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQodm9p ZCkKK3sKKwlJbnRlcnJ1cHRQZW5kaW5nID0gdHJ1ZTsKKwlQYXJhbGxlbEFwcGx5TWVzc2FnZVBl bmRpbmcgPSB0cnVlOworCVNldExhdGNoKE15TGF0Y2gpOworfQorCisvKgorICogSGFuZGxlIGEg c2luZ2xlIHByb3RvY29sIG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBhIHNpbmdsZSBwYXJhbGxlbCBh cHBseQorICogd29ya2VyLgorICovCitzdGF0aWMgdm9pZAorSGFuZGxlUGFyYWxsZWxBcHBseU1l c3NhZ2UoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTdHJpbmdJbmZvIG1zZykKK3sK KwljaGFyCQltc2d0eXBlOworCisJbXNndHlwZSA9IHBxX2dldG1zZ2J5dGUobXNnKTsKKworCXN3 aXRjaCAobXNndHlwZSkKKwl7CisJCWNhc2UgJ0UnOgkJCQkvKiBFcnJvclJlc3BvbnNlICovCisJ CQl7CisJCQkJRXJyb3JEYXRhCWVkYXRhOworCisJCQkJLyogUGFyc2UgRXJyb3JSZXNwb25zZS4g Ki8KKwkJCQlwcV9wYXJzZV9lcnJvcm5vdGljZShtc2csICZlZGF0YSk7CisKKwkJCQkvKgorCQkJ CSAqIElmIGRlc2lyZWQsIGFkZCBhIGNvbnRleHQgbGluZSB0byBzaG93IHRoYXQgdGhpcyBpcyBh CisJCQkJICogbWVzc2FnZSBwcm9wYWdhdGVkIGZyb20gYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu IE90aGVyd2lzZSwKKwkJCQkgKiBpdCBjYW4gc29tZXRpbWVzIGJlIGNvbmZ1c2luZyB0byB1bmRl cnN0YW5kIHdoYXQgYWN0dWFsbHkKKwkJCQkgKiBoYXBwZW5lZC4KKwkJCQkgKi8KKwkJCQlpZiAo ZWRhdGEuY29udGV4dCkKKwkJCQkJZWRhdGEuY29udGV4dCA9IHBzcHJpbnRmKCIlc1xuJXMiLCBl ZGF0YS5jb250ZXh0LAorCQkJCQkJCQkJCQkgXygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxl bCBhcHBseSB3b3JrZXIiKSk7CisJCQkJZWxzZQorCQkJCQllZGF0YS5jb250ZXh0ID0gcHN0cmR1 cChfKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKTsKKworCQkJ CS8qCisJCQkJICogQ29udGV4dCBiZXlvbmQgdGhhdCBzaG91bGQgdXNlIHRoZSBlcnJvciBjb250 ZXh0IGNhbGxiYWNrcworCQkJCSAqIHRoYXQgd2VyZSBpbiBlZmZlY3QgaW4gTG9naWNhbFJlcEFw cGx5TG9vcCgpLgorCQkJCSAqLworCQkJCWVycm9yX2NvbnRleHRfc3RhY2sgPSBhcHBseV9lcnJv cl9jb250ZXh0X3N0YWNrOworCisJCQkJLyoKKwkJCQkgKiBUaGUgYWN0dWFsIGVycm9yIG11c3Qg aGF2ZSBiZWVuIHJlcG9ydGVkIGJ5IHRoZSBwYXJhbGxlbAorCQkJCSAqIGFwcGx5IHdvcmtlci4K KwkJCQkgKi8KKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCQkgZXJybXNnKCJsb2dpY2FsIHJl cGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBleGl0ZWQgZHVlIHRvIGVycm9yIiksCisJ CQkJCQkgZXJyY29udGV4dCgiJXMiLCBlZGF0YS5jb250ZXh0KSkpOworCQkJfQorCisJCQkvKgor CQkJICogRG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZyBhYm91dCBOb3RpY2VSZXNwb25zZSBhbmQK KwkJCSAqIE5vdGlmeVJlc3BvbnNlIGFzIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBk b2Vzbid0IG5lZWQKKwkJCSAqIHRvIHNlbmQgbWVzc2FnZXMgdG8gdGhlIGNsaWVudC4KKwkJCSAq LworCQljYXNlICdOJzoKKwkJY2FzZSAnQSc6CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJ ZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBtZXNzYWdlIHR5cGUgcmVjZWl2ZWQgZnJvbSBsb2dp Y2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcjogJWMgKG1lc3NhZ2UgbGVuZ3Ro ICVkIGJ5dGVzKSIsCisJCQkJIG1zZ3R5cGUsIG1zZy0+bGVuKTsKKwl9Cit9CisKKy8qCisgKiBI YW5kbGUgYW55IHF1ZXVlZCBwcm90b2NvbCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHBhcmFsbGVs IGFwcGx5IHdvcmtlcnMuCisgKi8KK3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyh2 b2lkKQoreworCUxpc3RDZWxsICAgKmxjOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwor CXN0YXRpYyBNZW1vcnlDb250ZXh0IGhwYW1fY29udGV4dCA9IE5VTEw7CisKKwkvKgorCSAqIFRo aXMgaXMgaW52b2tlZCBmcm9tIFByb2Nlc3NJbnRlcnJ1cHRzKCksIGFuZCBzaW5jZSBzb21lIG9m IHRoZQorCSAqIGZ1bmN0aW9ucyBpdCBjYWxscyBjb250YWluIENIRUNLX0ZPUl9JTlRFUlJVUFRT KCksIHRoZXJlIGlzIGEgcG90ZW50aWFsCisJICogZm9yIHJlY3Vyc2l2ZSBjYWxscyBpZiBtb3Jl IHNpZ25hbHMgYXJlIHJlY2VpdmVkIHdoaWxlIHRoaXMgcnVucy4gSXQncworCSAqIHVuY2xlYXIg dGhhdCByZWN1cnNpdmUgZW50cnkgd291bGQgYmUgc2FmZSwgYW5kIGl0IGRvZXNuJ3Qgc2VlbSB1 c2VmdWwKKwkgKiBldmVuIGlmIGl0IGlzIHNhZmUsIHNvIGxldCdzIGJsb2NrIGludGVycnVwdHMg dW50aWwgZG9uZS4KKwkgKi8KKwlIT0xEX0lOVEVSUlVQVFMoKTsKKworCS8qCisJICogTW9yZW92 ZXIsIEN1cnJlbnRNZW1vcnlDb250ZXh0IG1pZ2h0IGJlIHBvaW50aW5nIGFsbW9zdCBhbnl3aGVy ZS4gV2UKKwkgKiBkb24ndCB3YW50IHRvIHJpc2sgbGVha2luZyBkYXRhIGludG8gbG9uZy1saXZl ZCBjb250ZXh0cywgc28gbGV0J3MgZG8KKwkgKiBvdXIgd29yayBoZXJlIGluIGEgcHJpdmF0ZSBj b250ZXh0IHRoYXQgd2UgY2FuIHJlc2V0IG9uIGVhY2ggdXNlLgorCSAqLworCWlmICghaHBhbV9j b250ZXh0KQkJCS8qIGZpcnN0IHRpbWUgdGhyb3VnaD8gKi8KKwkJaHBhbV9jb250ZXh0ID0gQWxs b2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJCSAiSGFuZGxl UGFyYWxsZWxBcHBseU1lc3NhZ2VzIiwKKwkJCQkJCQkJCQkJIEFMTE9DU0VUX0RFRkFVTFRfU0la RVMpOworCWVsc2UKKwkJTWVtb3J5Q29udGV4dFJlc2V0KGhwYW1fY29udGV4dCk7CisKKwlvbGRj b250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGhwYW1fY29udGV4dCk7CisKKwlQYXJhbGxl bEFwcGx5TWVzc2FnZVBlbmRpbmcgPSBmYWxzZTsKKworCWZvcmVhY2gobGMsIFBhcmFsbGVsQXBw bHlXb3JrZXJQb29sKQorCXsKKwkJc2htX21xX3Jlc3VsdCByZXM7CisJCVNpemUJCW5ieXRlczsK KwkJdm9pZAkgICAqZGF0YTsKKwkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gKFBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChsYyk7CisKKwkJLyoKKwkJICogVGhlIGxl YWRlciB3aWxsIGRldGFjaCBmcm9tIHRoZSBlcnJvciBxdWV1ZSBhbmQgc2V0IGl0IHRvIE5VTEwK KwkJICogYmVmb3JlIHByZXBhcmluZyB0byBzdG9wIGFsbCBwYXJhbGxlbCBhcHBseSB3b3JrZXJz LCBzbyB3ZSBkb24ndAorCQkgKiBuZWVkIHRvIGhhbmRsZSBlcnJvciBtZXNzYWdlcyBhbnltb3Jl LiBTZWUKKwkJICogbG9naWNhbHJlcF93b3JrZXJfZGV0YWNoLgorCQkgKi8KKwkJaWYgKCF3aW5m by0+ZXJyb3JfbXFfaGFuZGxlKQorCQkJY29udGludWU7CisKKwkJcmVzID0gc2htX21xX3JlY2Vp dmUod2luZm8tPmVycm9yX21xX2hhbmRsZSwgJm5ieXRlcywgJmRhdGEsIHRydWUpOworCisJCWlm IChyZXMgPT0gU0hNX01RX1dPVUxEX0JMT0NLKQorCQkJY29udGludWU7CisJCWVsc2UgaWYgKHJl cyA9PSBTSE1fTVFfU1VDQ0VTUykKKwkJeworCQkJU3RyaW5nSW5mb0RhdGEgbXNnOworCisJCQlp bml0U3RyaW5nSW5mbygmbXNnKTsKKwkJCWFwcGVuZEJpbmFyeVN0cmluZ0luZm8oJm1zZywgZGF0 YSwgbmJ5dGVzKTsKKwkJCUhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlKHdpbmZvLCAmbXNnKTsK KwkJCXBmcmVlKG1zZy5kYXRhKTsKKwkJfQorCQllbHNlCisJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJ CQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBh cmFsbGVsIGFwcGx5IHdvcmtlciIpKSk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9s ZGNvbnRleHQpOworCisJLyogTWlnaHQgYXMgd2VsbCBjbGVhciB0aGUgY29udGV4dCBvbiBvdXIg d2F5IG91dCAqLworCU1lbW9yeUNvbnRleHRSZXNldChocGFtX2NvbnRleHQpOworCisJUkVTVU1F X0lOVEVSUlVQVFMoKTsKK30KKworLyoKKyAqIFNlbmQgdGhlIGRhdGEgdG8gdGhlIHNwZWNpZmll ZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdmlhIHNoYXJlZC1tZW1vcnkKKyAqIHF1ZXVlLgorICov Cit2b2lkCitwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXpl IG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKK3sKKwlpbnQJCQlyYzsKKwlzaG1fbXFfcmVzdWx0 IHJlc3VsdDsKKwlUaW1lc3RhbXBUeiBzdGFydFRpbWUgPSAwOworCisJQXNzZXJ0KCFJc1RyYW5z YWN0aW9uU3RhdGUoKSk7CisKKyNkZWZpbmUgU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMgMTAw MAorI2RlZmluZSBTSE1fU0VORF9USU1FT1VUX01TCQkoMTAwMDAgLSBTSE1fU0VORF9SRVRSWV9J TlRFUlZBTF9NUykKKworCWZvciAoOzspCisJeworCQlyZXN1bHQgPSBzaG1fbXFfc2VuZCh3aW5m by0+bXFfaGFuZGxlLCBuYnl0ZXMsIGRhdGEsIHRydWUsIHRydWUpOworCisJCWlmIChyZXN1bHQg PT0gU0hNX01RX1NVQ0NFU1MpCisJCQlicmVhazsKKwkJZWxzZSBpZiAocmVzdWx0ID09IFNITV9N UV9ERVRBQ0hFRCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JK RUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qg c2VuZCBkYXRhIHRvIHNoYXJlZC1tZW1vcnkgcXVldWUiKSkpOworCisJCUFzc2VydChyZXN1bHQg PT0gU0hNX01RX1dPVUxEX0JMT0NLKTsKKworCQkvKiBXYWl0IGJlZm9yZSByZXRyeWluZy4gKi8K KwkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElN RU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJCQkJCSAgIFNITV9TRU5EX1JFVFJZX0lOVEVS VkFMX01TLAorCQkJCQkgICBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVf Q0hBTkdFKTsKKworCQlpZiAocmMgJiBXTF9MQVRDSF9TRVQpCisJCXsKKwkJCVJlc2V0TGF0Y2go TXlMYXRjaCk7CisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl9CisKKwkJLyoKKwkJICog SWYgdGhlIGF0dGVtcHQgdG8gc2VuZCBkYXRhIHZpYSBzaGFyZWQgbWVtb3J5IHRpbWVzIG91dCwg d2UgcmVzdGFydAorCQkgKiB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiB0byBwcmV2ZW50IHBvc3Np YmxlIGRlYWRsb2NrcyB3aXRoIGFub3RoZXIKKwkJICogcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBS ZWZlciB0byB0aGUgY29tbWVudHMgYXRvcCB0aGlzIGZpbGUgZm9yCisJCSAqIGRldGFpbHMuCisJ CSAqLworCQlpZiAoc3RhcnRUaW1lID09IDApCisJCQlzdGFydFRpbWUgPSBHZXRDdXJyZW50VGlt ZXN0YW1wKCk7CisJCWVsc2UgaWYgKFRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHN0YXJ0VGlt ZSwgR2V0Q3VycmVudFRpbWVzdGFtcCgpLAorCQkJCQkJCQkJCQlTSE1fU0VORF9USU1FT1VUX01T KSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfQ09OTkVDVElPTl9G QUlMVVJFKSwKKwkJCQkJIGVycm1zZygidGVybWluYXRpbmcgbG9naWNhbCByZXBsaWNhdGlvbiBw YXJhbGxlbCBhcHBseSB3b3JrZXIgZHVlIHRvIHRpbWVvdXQiKSkpOworCX0KK30KKworLyoKKyAq IFdhaXQgdW50aWwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcidzIHRyYW5zYWN0aW9uIHN0YXRl IGhhcyByZWFjaGVkIG9yCisgKiBleGNlZWRlZCB0aGUgZ2l2ZW4geGFjdF9zdGF0ZS4KKyAqLwor c3RhdGljIHZvaWQKK3BhX3dhaXRfZm9yX3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvLAorCQkJCQkgICBQYXJhbGxlbFRyYW5zU3RhdGUgeGFjdF9zdGF0ZSkKK3sKKwlm b3IgKDs7KQorCXsKKwkJLyoKKwkJICogU3RvcCBpZiB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaGFz IHJlYWNoZWQgb3IgZXhjZWVkZWQgdGhlIGdpdmVuCisJCSAqIHhhY3Rfc3RhdGUuCisJCSAqLwor CQlpZiAocGFfZ2V0X3hhY3Rfc3RhdGUod2luZm8tPnNoYXJlZCkgPj0geGFjdF9zdGF0ZSkKKwkJ CWJyZWFrOworCisJCS8qIFdhaXQgdG8gYmUgc2lnbmFsbGVkLiAqLworCQkodm9pZCkgV2FpdExh dGNoKE15TGF0Y2gsCisJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRf T05fUE1fREVBVEgsCisJCQkJCQkgMTBMLAorCQkJCQkJIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJB TExFTF9BUFBMWV9TVEFURV9DSEFOR0UpOworCisJCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBk b24ndCBzcGluLiAqLworCQlSZXNldExhdGNoKE15TGF0Y2gpOworCisJCS8qIEFuIGludGVycnVw dCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICovCisJCUNIRUNLX0ZP Ul9JTlRFUlJVUFRTKCk7CisJfQorfQorCisvKgorICogV2FpdCB1bnRpbCB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyJ3MgdHJhbnNhY3Rpb24gZmluaXNoZXMuCisgKi8KK3N0YXRpYyB2b2lkCitw YV93YWl0X2Zvcl94YWN0X2ZpbmlzaChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7 CisJLyoKKwkgKiBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc2V0IHRoZSBz dGF0ZSB0bworCSAqIFBBUkFMTEVMX1RSQU5TX1NUQVJURUQgd2hpY2ggbWVhbnMgaXQgaGFzIGFj cXVpcmVkIHRoZSB0cmFuc2FjdGlvbgorCSAqIGxvY2suIFRoaXMgaXMgdG8gcHJldmVudCBsZWFk ZXIgYXBwbHkgd29ya2VyIGZyb20gYWNxdWlyaW5nIHRoZQorCSAqIHRyYW5zYWN0aW9uIGxvY2sg ZWFybGllciB0aGFuIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJICovCisJcGFfd2FpdF9m b3JfeGFjdF9zdGF0ZSh3aW5mbywgUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCk7CisKKwkvKgorCSAq IFdhaXQgZm9yIHRoZSB0cmFuc2FjdGlvbiBsb2NrIHRvIGJlIHJlbGVhc2VkLiBUaGlzIGlzIHJl cXVpcmVkIHRvIGRldGVjdAorCSAqIGRlYWRsb2NrIGFtb25nIGxlYWRlciBhbmQgcGFyYWxsZWwg YXBwbHkgd29ya2Vycy4gUmVmZXIgdG8gdGhlIGNvbW1lbnRzCisJICogYXRvcCB0aGlzIGZpbGUu CisJICovCisJcGFfbG9ja190cmFuc2FjdGlvbih3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc1No YXJlTG9jayk7CisJcGFfdW5sb2NrX3RyYW5zYWN0aW9uKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNj ZXNzU2hhcmVMb2NrKTsKKworCS8qCisJICogQ2hlY2sgaWYgdGhlIHN0YXRlIGJlY29tZXMgUEFS QUxMRUxfVFJBTlNfRklOSVNIRUQgaW4gY2FzZSB0aGUgcGFyYWxsZWwKKwkgKiBhcHBseSB3b3Jr ZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMgY2F1c2luZyB0aGUgbG9jayB0byBiZQor CSAqIHJlbGVhc2VkLgorCSAqLworCWlmIChwYV9nZXRfeGFjdF9zdGF0ZSh3aW5mby0+c2hhcmVk KSAhPSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJy bXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8gdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwg YXBwbHkgd29ya2VyIikpKTsKK30KKworLyoKKyAqIFNldCBhbiBlbnVtIGluZGljYXRpbmcgdGhl IHRyYW5zYWN0aW9uIHN0YXRlIGZvciB0aGUgZ2l2ZW4gcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtl ci4KKyAqLwordm9pZAorcGFfc2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJl ZCAqd3NoYXJlZCwKKwkJCQkgIFBhcmFsbGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRlKQoreworCVNw aW5Mb2NrQWNxdWlyZSgmd3NoYXJlZC0+bXV0ZXgpOworCXdzaGFyZWQtPnhhY3Rfc3RhdGUgPSB4 YWN0X3N0YXRlOworCVNwaW5Mb2NrUmVsZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOworfQorCisvKgor ICogR2V0IGFuIGVudW0gaW5kaWNhdGluZyB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgZm9yIHRoZSBn aXZlbiBwYXJhbGxlbCBhcHBseQorICogd29ya2VyLgorICovCitzdGF0aWMgUGFyYWxsZWxUcmFu c1N0YXRlCitwYV9nZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hh cmVkKQoreworCVBhcmFsbGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRlOworCisJU3BpbkxvY2tBY3F1 aXJlKCZ3c2hhcmVkLT5tdXRleCk7CisJeGFjdF9zdGF0ZSA9IHdzaGFyZWQtPnhhY3Rfc3RhdGU7 CisJU3BpbkxvY2tSZWxlYXNlKCZ3c2hhcmVkLT5tdXRleCk7CisKKwlyZXR1cm4geGFjdF9zdGF0 ZTsKK30KKworLyoKKyAqIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaW5mb3JtYXRp b24uCisgKi8KK3ZvaWQKK3BhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKFBhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICp3aW5mbykKK3sKKwlzdHJlYW1fYXBwbHlfd29ya2VyID0gd2luZm87Cit9CisK Ky8qCisgKiBGb3JtIGEgdW5pcXVlIHNhdmVwb2ludCBuYW1lIGZvciB0aGUgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLgorICoKKyAqIE5vdGUgdGhhdCBkaWZmZXJlbnQgc3Vic2NyaXB0aW9ucyBmb3Ig cHVibGljYXRpb25zIG9uIGRpZmZlcmVudCBub2RlcyBjYW4KKyAqIHJlY2VpdmUgc2FtZSByZW1v dGUgeGlkLCBzbyB3ZSBuZWVkIHRvIHVzZSBzdWJzY3JpcHRpb24gaWQgYWxvbmcgd2l0aCBpdC4K KyAqCisgKiBSZXR1cm4gdGhlIG5hbWUgaW4gdGhlIHN1cHBsaWVkIGJ1ZmZlci4KKyAqLworc3Rh dGljIHZvaWQKK3BhX3NhdmVwb2ludF9uYW1lKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlk LCBjaGFyICpzcG5hbWUsIFNpemUgc3pzcCkKK3sKKwlzbnByaW50ZihzcG5hbWUsIHN6c3AsICJw Z19zcF8ldV8ldSIsIHN1Ym9pZCwgeGlkKTsKK30KKworLyoKKyAqIERlZmluZSBhIHNhdmVwb2lu dCBmb3IgYSBzdWJ4YWN0IGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpZiBuZWVkZWQuCisgKgor ICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjYW4gZmlndXJlIG91dCBpZiBhIG5ldyBzdWJ0 cmFuc2FjdGlvbiB3YXMKKyAqIHN0YXJ0ZWQgYnkgY2hlY2tpbmcgaWYgdGhlIG5ldyBjaGFuZ2Ug YXJyaXZlZCB3aXRoIGEgZGlmZmVyZW50IHhpZC4gSW4gdGhhdAorICogY2FzZSBkZWZpbmUgYSBu YW1lZCBzYXZlcG9pbnQsIHNvIHRoYXQgd2UgYXJlIGFibGUgdG8gcm9sbGJhY2sgdG8gaXQKKyAq IGlmIHJlcXVpcmVkLgorICovCit2b2lkCitwYV9zdGFydF9zdWJ0cmFucyhUcmFuc2FjdGlvbklk IGN1cnJlbnRfeGlkLCBUcmFuc2FjdGlvbklkIHRvcF94aWQpCit7CisJaWYgKGN1cnJlbnRfeGlk ICE9IHRvcF94aWQgJiYKKwkJIWxpc3RfbWVtYmVyX3hpZChzdWJ4YWN0bGlzdCwgY3VycmVudF94 aWQpKQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCWNoYXIJCXNwbmFtZVtOQU1FREFU QUxFTl07CisKKwkJcGFfc2F2ZXBvaW50X25hbWUoTXlTdWJzY3JpcHRpb24tPm9pZCwgY3VycmVu dF94aWQsCisJCQkJCQkgIHNwbmFtZSwgc2l6ZW9mKHNwbmFtZSkpOworCisJCWVsb2coREVCVUcx LCAiZGVmaW5pbmcgc2F2ZXBvaW50ICVzIGluIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwg YXBwbHkgd29ya2VyIiwgc3BuYW1lKTsKKworCQkvKiBXZSBtdXN0IGJlIGluIHRyYW5zYWN0aW9u IGJsb2NrIHRvIGRlZmluZSB0aGUgU0FWRVBPSU5ULiAqLworCQlpZiAoIUlzVHJhbnNhY3Rpb25C bG9jaygpKQorCQl7CisJCQlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCQkJCVN0YXJ0VHJh bnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOworCQkJQ29t bWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCX0KKworCQlEZWZpbmVTYXZlcG9pbnQoc3BuYW1l KTsKKworCQkvKgorCQkgKiBDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQgaXMgbmVlZGVkIHRvIHN0 YXJ0IGEgc3VidHJhbnNhY3Rpb24gYWZ0ZXIKKwkJICogaXNzdWluZyBhIFNBVkVQT0lOVCBpbnNp ZGUgYSB0cmFuc2FjdGlvbiBibG9jayAoc2VlCisJCSAqIFN0YXJ0U3ViVHJhbnNhY3Rpb24oKSku CisJCSAqLworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlvbGRjdHggPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKKwkJc3VieGFjdGxpc3Qg PSBsYXBwZW5kX3hpZChzdWJ4YWN0bGlzdCwgY3VycmVudF94aWQpOworCQlNZW1vcnlDb250ZXh0 U3dpdGNoVG8ob2xkY3R4KTsKKwl9Cit9CisKKy8qIFJlc2V0IHRoZSBsaXN0IHRoYXQgbWFpbnRh aW5zIHN1YnRyYW5zYWN0aW9ucy4gKi8KK3ZvaWQKK3BhX3Jlc2V0X3N1YnRyYW5zKHZvaWQpCit7 CisJLyoKKwkgKiBXZSBkb24ndCBuZWVkIHRvIGZyZWUgdGhpcyBleHBsaWNpdGx5IGFzIHRoZSBh bGxvY2F0ZWQgbWVtb3J5IHdpbGwgYmUKKwkgKiBmcmVlZCBhdCB0aGUgdHJhbnNhY3Rpb24gZW5k LgorCSAqLworCXN1YnhhY3RsaXN0ID0gTklMOworfQorCisvKgorICogSGFuZGxlIFNUUkVBTSBB Qk9SVCBtZXNzYWdlIHdoZW4gdGhlIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIGluIGEgcGFyYWxs ZWwKKyAqIGFwcGx5IHdvcmtlci4KKyAqLwordm9pZAorcGFfc3RyZWFtX2Fib3J0KExvZ2ljYWxS ZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEpCit7CisJVHJhbnNhY3Rpb25JZCB4aWQgPSBh Ym9ydF9kYXRhLT54aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQgPSBhYm9ydF9kYXRhLT5zdWJ4 aWQ7CisKKwkvKgorCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3Ry ZWFtaW5nIGZyb20gY29ycmVjdCBwb3NpdGlvbgorCSAqIGluIGNhc2Ugb2YgY3Jhc2guCisJICov CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBhYm9ydF9kYXRhLT5hYm9ydF9sc247 CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBhYm9ydF9kYXRhLT5hYm9y dF90aW1lOworCisJLyoKKwkgKiBJZiB0aGUgdHdvIFhJRHMgYXJlIHRoZSBzYW1lLCBpdCdzIGlu IGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwgc28KKwkgKiBqdXN0IGZyZWUgdGhlIHN1Ynhh Y3RsaXN0LgorCSAqLworCWlmIChzdWJ4aWQgPT0geGlkKQorCXsKKwkJLyoKKwkJICogUmVsZWFz ZSB0aGUgbG9jayBhcyB3ZSBtaWdodCBiZSBwcm9jZXNzaW5nIGFuIGVtcHR5IHN0cmVhbWluZwor CQkgKiB0cmFuc2FjdGlvbiBpbiB3aGljaCBjYXNlIHRoZSBsb2NrIHdvbid0IGJlIHJlbGVhc2Vk IGR1cmluZworCQkgKiB0cmFuc2FjdGlvbiByb2xsYmFjay4KKwkJICovCisJCXBhX3VubG9ja190 cmFuc2FjdGlvbih4aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCUFib3J0Q3VycmVudFRy YW5zYWN0aW9uKCk7CisKKwkJaWYgKElzVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJCQlFbmRU cmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwor CQl9CisKKwkJcGFfcmVzZXRfc3VidHJhbnMoKTsKKworCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5 KFNUQVRFX0lETEUsIE5VTEwpOworCisJCXBhX3NldF94YWN0X3N0YXRlKE15UGFyYWxsZWxTaGFy ZWQsIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKTsKKwl9CisJZWxzZQorCXsKKwkJLyogT0ssIHNv IGl0J3MgYSBzdWJ4YWN0LiBSb2xsYmFjayB0byB0aGUgc2F2ZXBvaW50LiAqLworCQlpbnQJCQlp OworCQljaGFyCQlzcG5hbWVbTkFNRURBVEFMRU5dOworCisJCXBhX3NhdmVwb2ludF9uYW1lKE15 U3Vic2NyaXB0aW9uLT5vaWQsIHN1YnhpZCwgc3BuYW1lLCBzaXplb2Yoc3BuYW1lKSk7CisKKwkJ ZWxvZyhERUJVRzEsICJyb2xsaW5nIGJhY2sgdG8gc2F2ZXBvaW50ICVzIGluIGxvZ2ljYWwgcmVw bGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIiwgc3BuYW1lKTsKKworCQkvKgorCQkgKiBT ZWFyY2ggdGhlIHN1YnhhY3RsaXN0LCBkZXRlcm1pbmUgdGhlIG9mZnNldCB0cmFja2VkIGZvciB0 aGUKKwkJICogc3VieGFjdCwgYW5kIHRydW5jYXRlIHRoZSBsaXN0LgorCQkgKgorCQkgKiBOb3Rl IHRoYXQgZm9yIGFuIGVtcHR5IHN1Yi10cmFuc2FjdGlvbiB3ZSB3b24ndCBmaW5kIHRoZSBzdWJ4 aWQKKwkJICogaGVyZS4KKwkJICovCisJCWZvciAoaSA9IGxpc3RfbGVuZ3RoKHN1YnhhY3RsaXN0 KSAtIDE7IGkgPj0gMDsgaS0tKQorCQl7CisJCQlUcmFuc2FjdGlvbklkIHhpZF90bXAgPSBsZmly c3RfeGlkKGxpc3RfbnRoX2NlbGwoc3VieGFjdGxpc3QsIGkpKTsKKworCQkJaWYgKHhpZF90bXAg PT0gc3VieGlkKQorCQkJeworCQkJCVJvbGxiYWNrVG9TYXZlcG9pbnQoc3BuYW1lKTsKKwkJCQlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlzdWJ4YWN0bGlzdCA9IGxpc3RfdHJ1bmNh dGUoc3VieGFjdGxpc3QsIGkpOworCQkJCWJyZWFrOworCQkJfQorCQl9CisKKwkJcGdzdGF0X3Jl cG9ydF9hY3Rpdml0eShTVEFURV9JRExFSU5UUkFOU0FDVElPTiwgTlVMTCk7CisJfQorfQorCisv KgorICogSGVscGVyIGZ1bmN0aW9ucyB0byBhY3F1aXJlIGFuZCByZWxlYXNlIGEgbG9jayBmb3Ig ZWFjaCBzdHJlYW0gYmxvY2suCisgKgorICogU2V0IGxvY2t0YWdfZmllbGQ0IHRvIFBBUkFMTEVM X0FQUExZX0xPQ0tfU1RSRUFNIHRvIGluZGljYXRlIHRoYXQgaXQncyBhCisgKiBzdHJlYW0gbG9j ay4KKyAqCisgKiBSZWZlciB0byB0aGUgY29tbWVudHMgYXRvcCB0aGlzIGZpbGUgdG8gc2VlIGhv dyB0aGUgc3RyZWFtIGxvY2sgaXMgdXNlZC4KKyAqLwordm9pZAorcGFfbG9ja19zdHJlYW0oVHJh bnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxvY2tBcHBseVRyYW5zYWN0 aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQsCisJCQkJCQkJCSAg IFBBUkFMTEVMX0FQUExZX0xPQ0tfU1RSRUFNLCBsb2NrbW9kZSk7Cit9CisKK3ZvaWQKK3BhX3Vu bG9ja19zdHJlYW0oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCVVu bG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHhpZCwKKwkJCQkJCQkJCSBQQVJBTExFTF9BUFBMWV9MT0NLX1NUUkVBTSwgbG9ja21vZGUpOwor fQorCisvKgorICogSGVscGVyIGZ1bmN0aW9ucyB0byBhY3F1aXJlIGFuZCByZWxlYXNlIGEgbG9j ayBmb3IgZWFjaCBsb2NhbCB0cmFuc2FjdGlvbgorICogYXBwbHkuCisgKgorICogU2V0IGxvY2t0 YWdfZmllbGQ0IHRvIFBBUkFMTEVMX0FQUExZX0xPQ0tfWEFDVCB0byBpbmRpY2F0ZSB0aGF0IGl0 J3MgYQorICogdHJhbnNhY3Rpb24gbG9jay4KKyAqCisgKiBOb3RlIHRoYXQgYWxsIHRoZSBjYWxs ZXJzIG11c3QgcGFzcyBhIHJlbW90ZSB0cmFuc2FjdGlvbiBJRCBpbnN0ZWFkIG9mIGEKKyAqIGxv Y2FsIHRyYW5zYWN0aW9uIElEIGFzIHhpZC4gVGhpcyBpcyBiZWNhdXNlIHRoZSBsb2NhbCB0cmFu c2FjdGlvbiBJRCB3aWxsCisgKiBvbmx5IGJlIGFzc2lnbmVkIHdoaWxlIGFwcGx5aW5nIHRoZSBm aXJzdCBjaGFuZ2UgaW4gdGhlIHBhcmFsbGVsIGFwcGx5IGJ1dAorICogaXQncyBwb3NzaWJsZSB0 aGF0IHRoZSBmaXJzdCBjaGFuZ2UgaW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBibG9j a2VkCisgKiBieSBhIGNvbmN1cnJlbnRseSBleGVjdXRpbmcgdHJhbnNhY3Rpb24gaW4gYW5vdGhl ciBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFdlCisgKiBjYW4gb25seSBjb21tdW5pY2F0ZSB0aGUg bG9jYWwgdHJhbnNhY3Rpb24gaWQgdG8gdGhlIGxlYWRlciBhZnRlciBhcHBseWluZworICogdGhl IGZpcnN0IGNoYW5nZSBzbyBpdCB3b24ndCBiZSBhYmxlIHRvIHdhaXQgYWZ0ZXIgc2VuZGluZyB0 aGUgeGFjdCBmaW5pc2gKKyAqIGNvbW1hbmQgdXNpbmcgdGhpcyBsb2NrLgorICoKKyAqIFJlZmVy IHRvIHRoZSBjb21tZW50cyBhdG9wIHRoaXMgZmlsZSB0byBzZWUgaG93IHRoZSB0cmFuc2FjdGlv biBsb2NrIGlzCisgKiB1c2VkLgorICovCit2b2lkCitwYV9sb2NrX3RyYW5zYWN0aW9uKFRyYW5z YWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlMb2NrQXBwbHlUcmFuc2FjdGlv bkZvclNlc3Npb24oTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkLAorCQkJCQkJCQkgICBQ QVJBTExFTF9BUFBMWV9MT0NLX1hBQ1QsIGxvY2ttb2RlKTsKK30KKwordm9pZAorcGFfdW5sb2Nr X3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlV bmxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1Ymlk LCB4aWQsCisJCQkJCQkJCQkgUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNULCBsb2NrbW9kZSk7Cit9 CisKKy8qCisgKiBEZWNyZW1lbnQgdGhlIG51bWJlciBvZiBwZW5kaW5nIHN0cmVhbWluZyBibG9j a3MgYW5kIHdhaXQgb24gdGhlIHN0cmVhbSBsb2NrCisgKiBpZiB0aGVyZSBpcyBubyBwZW5kaW5n IGJsb2NrIGF2YWlsYWJsZS4KKyAqLwordm9pZAorcGFfZGVjcl9hbmRfd2FpdF9zdHJlYW1fYmxv Y2sodm9pZCkKK3sKKwlBc3NlcnQoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpOworCisJaWYg KHBnX2F0b21pY19zdWJfZmV0Y2hfdTMyKCZNeVBhcmFsbGVsU2hhcmVkLT5wZW5kaW5nX3N0cmVh bV9jb3VudCwgMSkgPT0gMCkKKwl7CisJCXBhX2xvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFyZWQt PnhpZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJcGFfdW5sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hh cmVkLT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJfQorfQorCisvKgorICogRmluaXNoIHByb2Nl c3NpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtl ci4KKyAqLwordm9pZAorcGFfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvLCBYTG9nUmVjUHRyIHJlbW90ZV9sc24pCit7CisJQXNzZXJ0KGFtX2xlYWRlcl9hcHBseV93 b3JrZXIoKSk7CisKKwkvKgorCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRo YXQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbgorCSAqIGNvbnRpbnVlIHRvIHJlY2VpdmUgYW5k IGFwcGx5IGNoYW5nZXMuCisJICovCisJcGFfdW5sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54 aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJLyoKKwkgKiBXYWl0IGZvciB0aGF0IHdvcmtl ciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAorCSAqIG9y ZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVz IGFuZAorCSAqIGRlYWRsb2Nrcy4KKwkgKi8KKwlwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5m byk7CisKKwlzdG9yZV9mbHVzaF9wb3NpdGlvbihyZW1vdGVfbHNuLCB3aW5mby0+c2hhcmVkLT5s YXN0X2NvbW1pdF9lbmQpOworCSh2b2lkKSBwYV9mcmVlX3dvcmtlcih3aW5mbyk7Cit9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwppbmRleCAyY2MwYWM5Li4zM2ZkYmRj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTgyMiwxMCAr ODIyLDExIEBAIERlY29kZUFib3J0KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1Jl Y29yZEJ1ZmZlciAqYnVmLAogCQlmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7IGkr KykKIAkJewogCQkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4 YWN0c1tpXSwKLQkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJCQkJCQkgICBi dWYtPnJlY29yZC0+RW5kUmVjUHRyLCBhYm9ydF90aW1lKTsKIAkJfQogCi0JCVJlb3JkZXJCdWZm ZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7CisJCVJl b3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0 ciwKKwkJCQkJCSAgIGFib3J0X3RpbWUpOwogCX0KIAogCS8qIHVwZGF0ZSB0aGUgZGVjb2Rpbmcg c3RhdHMgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1 bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRl eCA3MzU5NGM2Li5lMDc1YzI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9s YXVuY2hlci5jCkBAIC01NSw2ICs1NSw3IEBACiAvKiBHVUMgdmFyaWFibGVzICovCiBpbnQJCQlt YXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzID0gNDsKIGludAkJCW1heF9zeW5jX3dvcmtl cnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7CitpbnQJCQltYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uID0gMjsKIAogTG9naWNhbFJlcFdvcmtlciAqTXlMb2dpY2FsUmVw V29ya2VyID0gTlVMTDsKIApAQCAtNzQsNiArNzUsNyBAQCBzdGF0aWMgdm9pZCBsb2dpY2FscmVw X2xhdW5jaGVyX29uZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIGxvZ2lj YWxyZXBfd29ya2VyX29uZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIGxv Z2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKTsKIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfd29y a2VyX2NsZWFudXAoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKTsKK3N0YXRpYyBpbnQgbG9naWNh bHJlcF9wYV93b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKIAogc3RhdGljIGJvb2wgb25fY29tbWl0 X2xhdW5jaGVyX3dha2V1cCA9IGZhbHNlOwogCkBAIC0xNTIsOCArMTU0LDEwIEBAIGdldF9zdWJz Y3JpcHRpb25fbGlzdCh2b2lkKQogICoKICAqIFRoaXMgaXMgb25seSBuZWVkZWQgZm9yIGNsZWFu aW5nIHVwIHRoZSBzaGFyZWQgbWVtb3J5IGluIGNhc2UgdGhlIHdvcmtlcgogICogZmFpbHMgdG8g YXR0YWNoLgorICoKKyAqIFJldHVybiB3aGV0aGVyIHRoZSBhdHRhY2ggd2FzIHN1Y2Nlc3NmdWwu CiAgKi8KLXN0YXRpYyB2b2lkCitzdGF0aWMgYm9vbAogV2FpdEZvclJlcGxpY2F0aW9uV29ya2Vy QXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCQkJCQkgICB1aW50MTYgZ2VuZXJh dGlvbiwKIAkJCQkJCQkgICBCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpoYW5kbGUpCkBAIC0xNjks MTEgKzE3MywxMSBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdv cmtlciAqd29ya2VyLAogCiAJCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExX X1NIQVJFRCk7CiAKLQkJLyogV29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBzdGFydGVkOyBubyBu ZWVkIHRvIGRvIGFueXRoaW5nLiAqLworCQkvKiBXb3JrZXIgZWl0aGVyIGRpZWQgb3IgaGFzIHN0 YXJ0ZWQuIFJldHVybiBmYWxzZSBpZiBkaWVkLiAqLwogCQlpZiAoIXdvcmtlci0+aW5fdXNlIHx8 IHdvcmtlci0+cHJvYykKIAkJewogCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9j ayk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4gd29ya2VyLT5pbl91c2U7CiAJCX0KIAogCQlMV0xv Y2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKQEAgLTE4OCw3ICsxOTIsNyBAQCBXYWl0 Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCQkJ aWYgKGdlbmVyYXRpb24gPT0gd29ya2VyLT5nZW5lcmF0aW9uKQogCQkJCWxvZ2ljYWxyZXBfd29y a2VyX2NsZWFudXAod29ya2VyKTsKIAkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxv Y2spOwotCQkJcmV0dXJuOworCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAKIAkJLyoKQEAgLTIxMCw2 ICsyMTQsOCBAQCBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtl ciAqd29ya2VyLAogLyoKICAqIFdhbGtzIHRoZSB3b3JrZXJzIGFycmF5IGFuZCBzZWFyY2hlcyBm b3Igb25lIHRoYXQgbWF0Y2hlcyBnaXZlbgogICogc3Vic2NyaXB0aW9uIGlkIGFuZCByZWxpZC4K KyAqCisgKiBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IG9yIHRhYmxlIHN5bmMgd29ya2VyLgogICovCiBMb2dpY2FsUmVwV29ya2VyICoKIGxvZ2ljYWxy ZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQpA QCAtMjI0LDYgKzIzMCwxMCBAQCBsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lk IHJlbGlkLCBib29sIG9ubHlfcnVubmluZykKIAl7CiAJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAm TG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsKIAorCQkvKiBTa2lwIHBhcmFsbGVsIGFwcGx5IHdv cmtlcnMuICovCisJCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIodykpCisJCQljb250aW51ZTsK KwogCQlpZiAody0+aW5fdXNlICYmIHctPnN1YmlkID09IHN1YmlkICYmIHctPnJlbGlkID09IHJl bGlkICYmCiAJCQkoIW9ubHlfcnVubmluZyB8fCB3LT5wcm9jKSkKIAkJewpAQCAtMjYwLDExICsy NzAsMTMgQEAgbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBib29sIG9ubHlfcnVu bmluZykKIH0KIAogLyoKLSAqIFN0YXJ0IG5ldyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgaWYg cG9zc2libGUuCisgKiBTdGFydCBuZXcgbG9naWNhbCByZXBsaWNhdGlvbiBiYWNrZ3JvdW5kIHdv cmtlciwgaWYgcG9zc2libGUuCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNl IG9uIGZhaWx1cmUuCiAgKi8KLXZvaWQKK2Jvb2wKIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChP aWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAotCQkJ CQkJIE9pZCByZWxpZCkKKwkJCQkJCSBPaWQgcmVsaWQsIGRzbV9oYW5kbGUgc3Vid29ya2VyX2Rz bSkKIHsKIAlCYWNrZ3JvdW5kV29ya2VyIGJndzsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpi Z3dfaGFuZGxlOwpAQCAtMjczLDcgKzI4NSwxMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2go T2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKIAlp bnQJCQlzbG90ID0gMDsKIAlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIgPSBOVUxMOwogCWludAkJ CW5zeW5jd29ya2VyczsKKwlpbnQJCQlucGFyYWxsZWxhcHBseXdvcmtlcnM7CiAJVGltZXN0YW1w VHogbm93OworCWJvb2wJCWlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlciA9IChzdWJ3b3JrZXJfZHNt ICE9IERTTV9IQU5ETEVfSU5WQUxJRCk7CisKKwkvKiBTYW5pdHkgY2hlY2sgLSB0YWJsZXN5bmMg d29ya2VyIGNhbm5vdCBiZSBhIHN1YndvcmtlciAqLworCUFzc2VydCghKGlzX3BhcmFsbGVsX2Fw cGx5X3dvcmtlciAmJiBPaWRJc1ZhbGlkKHJlbGlkKSkpOwogCiAJZXJlcG9ydChERUJVRzEsCiAJ CQkoZXJybXNnX2ludGVybmFsKCJzdGFydGluZyBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBm b3Igc3Vic2NyaXB0aW9uIFwiJXNcIiIsCkBAIC0zNTEsNyArMzY4LDI2IEBAIHJldHJ5OgogCWlm IChPaWRJc1ZhbGlkKHJlbGlkKSAmJiBuc3luY3dvcmtlcnMgPj0gbWF4X3N5bmNfd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uKQogCXsKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9j ayk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCW5wYXJhbGxlbGFwcGx5d29y a2VycyA9IGxvZ2ljYWxyZXBfcGFfd29ya2VyX2NvdW50KHN1YmlkKTsKKworCS8qCisJICogUmV0 dXJuIGZhbHNlIGlmIHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyByZWFjaGVk IHRoZSBsaW1pdAorCSAqIHBlciBzdWJzY3JpcHRpb24uCisJICovCisJaWYgKGlzX3BhcmFsbGVs X2FwcGx5X3dvcmtlciAmJgorCQlucGFyYWxsZWxhcHBseXdvcmtlcnMgPj0gbWF4X3BhcmFsbGVs X2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbikKKwl7CisJCUxXTG9ja1JlbGVhc2UoTG9n aWNhbFJlcFdvcmtlckxvY2spOworCisJCWVyZXBvcnQoTE9HLAorCQkJCShlcnJjb2RlKEVSUkNP REVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCisJCQkJIGVycm1zZygib3V0IG9mIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMiKSwKKwkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8g aW5jcmVhc2UgbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbi4iKSkp OworCisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKgpAQCAtMzY1LDcgKzQwMSw3IEBAIHJldHJ5 OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJ CQkJIGVycm1zZygib3V0IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHNsb3RzIiksCiAJ CQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9sb2dpY2FsX3JlcGxp Y2F0aW9uX3dvcmtlcnMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJ LyogUHJlcGFyZSB0aGUgd29ya2VyIHNsb3QuICovCkBAIC0zODAsNiArNDE2LDggQEAgcmV0cnk6 CiAJd29ya2VyLT5yZWxzdGF0ZSA9IFNVQlJFTF9TVEFURV9VTktOT1dOOwogCXdvcmtlci0+cmVs c3RhdGVfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5zdHJlYW1fZmlsZXNldCA9 IE5VTEw7CisJd29ya2VyLT5hcHBseV9sZWFkZXJfcGlkID0gaXNfcGFyYWxsZWxfYXBwbHlfd29y a2VyID8gTXlQcm9jUGlkIDogSW52YWxpZFBpZDsKKwl3b3JrZXItPnBhcmFsbGVsX2FwcGx5ID0g aXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyOwogCXdvcmtlci0+bGFzdF9sc24gPSBJbnZhbGlkWExv Z1JlY1B0cjsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3Rfc2VuZF90aW1lKTsKIAlU SU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3RfcmVjdl90aW1lKTsKQEAgLTM5NywxOSArNDM1 LDM0IEBAIHJldHJ5OgogCQlCR1dPUktFUl9CQUNLRU5EX0RBVEFCQVNFX0NPTk5FQ1RJT047CiAJ Ymd3LmJnd19zdGFydF90aW1lID0gQmdXb3JrZXJTdGFydF9SZWNvdmVyeUZpbmlzaGVkOwogCXNu cHJpbnRmKGJndy5iZ3dfbGlicmFyeV9uYW1lLCBCR1dfTUFYTEVOLCAicG9zdGdyZXMiKTsKLQlz bnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1h aW4iKTsKKworCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJpbnRmKGJndy5i Z3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIlBhcmFsbGVsQXBwbHlXb3JrZXJNYWluIik7 CisJZWxzZQorCQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJB cHBseVdvcmtlck1haW4iKTsKKwogCWlmIChPaWRJc1ZhbGlkKHJlbGlkKSkKIAkJc25wcmludGYo Ymd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAogCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3Jr ZXIgZm9yIHN1YnNjcmlwdGlvbiAldSBzeW5jICV1Iiwgc3ViaWQsIHJlbGlkKTsKKwllbHNlIGlm IChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdX X01BWExFTiwKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CiAJZWxzZQogCQlzbnByaW50ZihiZ3cuYmd3 X25hbWUsIEJHV19NQVhMRU4sCi0JCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Ig c3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOwotCXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01B WExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIik7CisJCQkJICJsb2dpY2FsIHJlcGxp Y2F0aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOworCisJaWYg KGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlcikKKwkJc25wcmludGYoYmd3LmJnd190eXBlLCBCR1df TUFYTEVOLCAibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCB3b3JrZXIiKTsKKwllbHNlCisJ CXNucHJpbnRmKGJndy5iZ3dfdHlwZSwgQkdXX01BWExFTiwgImxvZ2ljYWwgcmVwbGljYXRpb24g d29ya2VyIik7CiAKIAliZ3cuYmd3X3Jlc3RhcnRfdGltZSA9IEJHV19ORVZFUl9SRVNUQVJUOwog CWJndy5iZ3dfbm90aWZ5X3BpZCA9IE15UHJvY1BpZDsKIAliZ3cuYmd3X21haW5fYXJnID0gSW50 MzJHZXREYXR1bShzbG90KTsKIAorCWlmIChpc19wYXJhbGxlbF9hcHBseV93b3JrZXIpCisJCW1l bWNweShiZ3cuYmd3X2V4dHJhLCAmc3Vid29ya2VyX2RzbSwgc2l6ZW9mKGRzbV9oYW5kbGUpKTsK KwogCWlmICghUmVnaXN0ZXJEeW5hbWljQmFja2dyb3VuZFdvcmtlcigmYmd3LCAmYmd3X2hhbmRs ZSkpCiAJewogCQkvKiBGYWlsZWQgdG8gc3RhcnQgd29ya2VyLCBzbyBjbGVhbiB1cCB0aGUgd29y a2VyIHNsb3QuICovCkBAIC00MjIsMzMgKzQ3NSwyMyBAQCByZXRyeToKIAkJCQkoZXJyY29kZShF UlJDT0RFX0NPTkZJR1VSQVRJT05fTElNSVRfRVhDRUVERUQpLAogCQkJCSBlcnJtc2coIm91dCBv ZiBiYWNrZ3JvdW5kIHdvcmtlciBzbG90cyIpLAogCQkJCSBlcnJoaW50KCJZb3UgbWlnaHQgbmVl ZCB0byBpbmNyZWFzZSBtYXhfd29ya2VyX3Byb2Nlc3Nlcy4iKSkpOwotCQlyZXR1cm47CisJCXJl dHVybiBmYWxzZTsKIAl9CiAKIAkvKiBOb3cgd2FpdCB1bnRpbCBpdCBhdHRhY2hlcy4gKi8KLQlX YWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2VyLCBnZW5lcmF0aW9uLCBiZ3dfaGFu ZGxlKTsKKwlyZXR1cm4gV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKHdvcmtlciwgZ2Vu ZXJhdGlvbiwgYmd3X2hhbmRsZSk7CiB9CiAKIC8qCi0gKiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxp Y2F0aW9uIHdvcmtlciBmb3Igc3ViaWQvcmVsaWQsIGlmIGFueSwgYW5kIHdhaXQgdW50aWwKLSAq IGl0IGRldGFjaGVzIGZyb20gdGhlIHNsb3QuCisgKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBzdG9w IHRoZSB3b3JrZXIgYW5kIHdhaXQgdW50aWwgaXQgZGV0YWNoZXMgZnJvbSB0aGUKKyAqIHNsb3Qu CiAgKi8KLXZvaWQKLWxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQp CitzdGF0aWMgdm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVw V29ya2VyICp3b3JrZXIsIGludCBzaWdubykKIHsKLQlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7 CiAJdWludDE2CQlnZW5lcmF0aW9uOwogCi0JTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2Vy TG9jaywgTFdfU0hBUkVEKTsKLQotCXdvcmtlciA9IGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoc3Vi aWQsIHJlbGlkLCBmYWxzZSk7Ci0KLQkvKiBObyB3b3JrZXIsIG5vdGhpbmcgdG8gZG8uICovCi0J aWYgKCF3b3JrZXIpCi0JewotCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsK LQkJcmV0dXJuOwotCX0KKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWVJbk1vZGUoTG9naWNhbFJlcFdv cmtlckxvY2ssIExXX1NIQVJFRCkpOwogCiAJLyoKIAkgKiBSZW1lbWJlciB3aGljaCBnZW5lcmF0 aW9uIHdhcyBvdXIgd29ya2VyIHNvIHdlIGNhbiBjaGVjayBpZiB3aGF0IHdlIHNlZQpAQCAtNDg2 LDEwICs1MjksNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlk KQogCQkgKiBkaWZmZXJlbnQsIG1lYW5pbmcgdGhhdCBhIGRpZmZlcmVudCB3b3JrZXIgaGFzIHRh a2VuIHRoZSBzbG90LgogCQkgKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3JrZXItPmdl bmVyYXRpb24gIT0gZ2VuZXJhdGlvbikKLQkJewotCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVw V29ya2VyTG9jayk7CiAJCQlyZXR1cm47Ci0JCX0KIAogCQkvKiBXb3JrZXIgaGFzIGFzc2lnbmVk IHByb2MsIHNvIGl0IGhhcyBzdGFydGVkLiAqLwogCQlpZiAod29ya2VyLT5wcm9jKQpAQCAtNDk3 LDcgKzUzNyw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQp CiAJfQogCiAJLyogTm93IHRlcm1pbmF0ZSB0aGUgd29ya2VyIC4uLiAqLwotCWtpbGwod29ya2Vy LT5wcm9jLT5waWQsIFNJR1RFUk0pOworCWtpbGwod29ya2VyLT5wcm9jLT5waWQsIHNpZ25vKTsK IAogCS8qIC4uLiBhbmQgd2FpdCBmb3IgaXQgdG8gZGllLiAqLwogCWZvciAoOzspCkBAIC01MjMs NiArNTYzLDUzIEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQp CiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIAl9 Cit9CisKKy8qCisgKiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vi aWQvcmVsaWQsIGlmIGFueS4KKyAqLwordm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcChPaWQg c3ViaWQsIE9pZCByZWxpZCkKK3sKKwlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7CisKKwlMV0xv Y2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJd29ya2VyID0g bG9naWNhbHJlcF93b3JrZXJfZmluZChzdWJpZCwgcmVsaWQsIGZhbHNlKTsKKworCWlmICh3b3Jr ZXIpCisJeworCQlBc3NlcnQoIWlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpKTsKKwkJbG9n aWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIsIFNJR1RFUk0pOworCX0KKworCUxX TG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworfQorCisvKgorICogU3RvcCB0aGUg bG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY29ycmVzcG9uZGluZyB0 byB0aGUKKyAqIGlucHV0IHNsb3QgbnVtYmVyLgorICoKKyAqIE5vZGUgdGhhdCB0aGUgZnVuY3Rp b24gc2VuZHMgU0lHSU5UIGluc3RlYWQgb2YgU0lHVEVSTSB0byB0aGUgcGFyYWxsZWwgYXBwbHkK KyAqIHdvcmtlciBzbyB0aGF0IHRoZSB3b3JrZXIgZXhpdHMgY2xlYW5seS4KKyAqLwordm9pZAor bG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChpbnQgc2xvdF9ubywgdWludDE2IGdlbmVyYXRpb24p Cit7CisJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOworCisJQXNzZXJ0KHNsb3Rfbm8gPj0gMCAm JiBzbG90X25vIDwgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vycyk7CisKKwlMV0xvY2tB Y3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJd29ya2VyID0gJkxv Z2ljYWxSZXBDdHgtPndvcmtlcnNbc2xvdF9ub107CisJQXNzZXJ0KGlzUGFyYWxsZWxBcHBseVdv cmtlcih3b3JrZXIpKTsKKworCS8qCisJICogT25seSBzdG9wIHRoZSB3b3JrZXIgaWYgdGhlIGdl bmVyYXRpb24gbWF0Y2hlcyBhbmQgdGhlIHdvcmtlciBpcyBhbGl2ZS4KKwkgKi8KKwlpZiAod29y a2VyLT5nZW5lcmF0aW9uID09IGdlbmVyYXRpb24gJiYgd29ya2VyLT5wcm9jKQorCQlsb2dpY2Fs cmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtlciwgU0lHSU5UKTsKIAogCUxXTG9ja1JlbGVh c2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwogfQpAQCAtNTk1LDExICs2ODIsNDAgQEAgbG9naWNh bHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KQogfQogCiAvKgotICogRGV0YWNoIHRoZSB3b3Jr ZXIgKGNsZWFucyB1cCB0aGUgd29ya2VyIGluZm8pLgorICogU3RvcCB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VycyBpZiBhbnksIGFuZCBkZXRhY2ggdGhlIGxlYWRlciBhcHBseSB3b3JrZXIKKyAq IChjbGVhbnMgdXAgdGhlIHdvcmtlciBpbmZvKS4KICAqLwogc3RhdGljIHZvaWQKIGxvZ2ljYWxy ZXBfd29ya2VyX2RldGFjaCh2b2lkKQogeworCS8qIFN0b3AgdGhlIHBhcmFsbGVsIGFwcGx5IHdv cmtlcnMuICovCisJaWYgKGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSkKKwl7CisJCUxpc3QJICAg KndvcmtlcnM7CisJCUxpc3RDZWxsICAgKmxjOworCisJCS8qCisJCSAqIERldGFjaCBmcm9tIHRo ZSBlcnJvcl9tcV9oYW5kbGUgZm9yIGFsbCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzCisJCSAqIGJl Zm9yZSB0ZXJtaW5hdGluZyB0aGVtLiBUaGlzIHByZXZlbnRzIHRoZSBsZWFkZXIgYXBwbHkgd29y a2VyIGZyb20KKwkJICogcmVjZWl2aW5nIHRoZSB3b3JrZXIgdGVybWluYXRpb24gbWVzc2FnZSBh bmQgc2VuZGluZyBpdCB0byBsb2dzIHdoZW4KKwkJICogdGhlIHNhbWUgaXMgYWxyZWFkeSBkb25l IGJ5IHRoZSBwYXJhbGxlbCB3b3JrZXIuCisJCSAqLworCQlwYV9kZXRhY2hfYWxsX2Vycm9yX21x KCk7CisKKwkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsK KworCQl3b3JrZXJzID0gbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCwgdHJ1ZSk7CisJCWZvcmVhY2gobGMsIHdvcmtlcnMpCisJCXsKKwkJCUxvZ2ljYWxS ZXBXb3JrZXIgKncgPSAoTG9naWNhbFJlcFdvcmtlciAqKSBsZmlyc3QobGMpOworCisJCQlpZiAo aXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50 ZXJuYWwodywgU0lHVEVSTSk7CisJCX0KKworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrKTsKKwl9CisKIAkvKiBCbG9jayBjb25jdXJyZW50IGFjY2Vzcy4gKi8KIAlMV0xvY2tB Y3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC02MjIsNiAr NzM4LDggQEAgbG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3Jr ZXIpCiAJd29ya2VyLT51c2VyaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+c3ViaWQgPSBJbnZh bGlkT2lkOwogCXdvcmtlci0+cmVsaWQgPSBJbnZhbGlkT2lkOworCXdvcmtlci0+YXBwbHlfbGVh ZGVyX3BpZCA9IEludmFsaWRQaWQ7CisJd29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOwog fQogCiAvKgpAQCAtNjUzLDYgKzc3MSwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcl9vbmV4aXQoaW50 IGNvZGUsIERhdHVtIGFyZykKIAlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNl dCAhPSBOVUxMKQogCQlGaWxlU2V0RGVsZXRlQWxsKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFt X2ZpbGVzZXQpOwogCisJLyoKKwkgKiBTZXNzaW9uIGxldmVsIGxvY2tzIG1heSBiZSBhY3F1aXJl ZCBvdXRzaWRlIG9mIGEgdHJhbnNhY3Rpb24gaW4gcGFyYWxsZWwKKwkgKiBhcHBseSBtb2RlIGFu ZCB3aWxsIG5vdCBiZSByZWxlYXNlZCB3aGVuIHRoZSB3b3JrZXIgdGVybWluYXRlcywgc28KKwkg KiBtYW51YWxseSByZWxlYXNlIGFsbCBsb2NrcyBiZWZvcmUgdGhlIHdvcmtlciBleGl0cy4KKwkg Ki8KKwlMb2NrUmVsZWFzZUFsbChERUZBVUxUX0xPQ0tNRVRIT0QsIHRydWUpOworCiAJQXBwbHlM YXVuY2hlcldha2V1cCgpOwogfQogCkBAIC02ODEsNiArODA2LDMzIEBAIGxvZ2ljYWxyZXBfc3lu Y193b3JrZXJfY291bnQoT2lkIHN1YmlkKQogfQogCiAvKgorICogQ291bnQgdGhlIG51bWJlciBv ZiByZWdpc3RlcmVkIChidXQgbm90IG5lY2Vzc2FyaWx5IHJ1bm5pbmcpIHBhcmFsbGVsIGFwcGx5 CisgKiB3b3JrZXJzIGZvciBhIHN1YnNjcmlwdGlvbi4KKyAqLworc3RhdGljIGludAorbG9naWNh bHJlcF9wYV93b3JrZXJfY291bnQoT2lkIHN1YmlkKQoreworCWludAkJCWk7CisJaW50CQkJcmVz ID0gMDsKKworCUFzc2VydChMV0xvY2tIZWxkQnlNZShMb2dpY2FsUmVwV29ya2VyTG9jaykpOwor CisJLyoKKwkgKiBTY2FuIGFsbCBhdHRhY2hlZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBvbmx5 IGNvdW50aW5nIHRob3NlIHdoaWNoCisJICogaGF2ZSB0aGUgZ2l2ZW4gc3Vic2NyaXB0aW9uIGlk LgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJz OyBpKyspCisJeworCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtl cnNbaV07CisKKwkJaWYgKHctPnN1YmlkID09IHN1YmlkICYmIGlzUGFyYWxsZWxBcHBseVdvcmtl cih3KSkKKwkJCXJlcysrOworCX0KKworCXJldHVybiByZXM7Cit9CisKKy8qCiAgKiBBcHBseUxh dW5jaGVyU2htZW1TaXplCiAgKgkJQ29tcHV0ZSBzcGFjZSBuZWVkZWQgZm9yIHJlcGxpY2F0aW9u IGxhdW5jaGVyIHNoYXJlZCBtZW1vcnkKICAqLwpAQCAtODY5LDcgKzEwMjEsNyBAQCBBcHBseUxh dW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJCQkJd2FpdF90aW1lID0gd2FsX3JldHJpZXZl X3JldHJ5X2ludGVydmFsOwogCiAJCQkJCWxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChzdWItPmRi aWQsIHN1Yi0+b2lkLCBzdWItPm5hbWUsCi0JCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlk T2lkKTsKKwkJCQkJCQkJCQkJIHN1Yi0+b3duZXIsIEludmFsaWRPaWQsIERTTV9IQU5ETEVfSU5W QUxJRCk7CiAJCQkJfQogCQkJfQogCkBAIC05NTIsNiArMTEwNCwxMCBAQCBwZ19zdGF0X2dldF9z dWJzY3JpcHRpb24oUEdfRlVOQ1RJT05fQVJHUykKIAkJaWYgKE9pZElzVmFsaWQoc3ViaWQpICYm IHdvcmtlci5zdWJpZCAhPSBzdWJpZCkKIAkJCWNvbnRpbnVlOwogCisJCS8qIFNraXAgaWYgdGhp cyBpcyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAqLworCQlpZiAoaXNQYXJhbGxlbEFwcGx5V29y a2VyKCZ3b3JrZXIpKQorCQkJY29udGludWU7CisKIAkJd29ya2VyX3BpZCA9IHdvcmtlci5wcm9j LT5waWQ7CiAKIAkJdmFsdWVzWzBdID0gT2JqZWN0SWRHZXREYXR1bSh3b3JrZXIuc3ViaWQpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZCBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKaW5kZXggNzczNTgz YS4uMjZiZmMwZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9t ZXNvbi5idWlsZAorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1 aWxkCkBAIC0xLDQgKzEsNSBAQAogYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAorICAnYXBwbHlw YXJhbGxlbHdvcmtlci5jJywKICAgJ2RlY29kZS5jJywKICAgJ2xhdW5jaGVyLmMnLAogICAnbG9n aWNhbC5jJywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3Jp Z2luLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCmluZGV4IGYx MzRlNDQuLjhiMDgzNzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvb3JpZ2luLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4u YwpAQCAtMTA3NSwxMiArMTA3NSwyMCBAQCBSZXBsaWNhdGlvbk9yaWdpbkV4aXRDbGVhbnVwKGlu dCBjb2RlLCBEYXR1bSBhcmcpCiAgKiBhcnJheSBkb2Vzbid0IGhhdmUgdG8gYmUgc2VhcmNoZWQg d2hlbiBjYWxsaW5nCiAgKiByZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZSgpLgogICoKLSAqIE9i dmlvdXNseSBvbmx5IG9uZSBzdWNoIGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0IHBlciBwcm9jZXNz IGFuZCB0aGUgY3VycmVudAotICogY2FjaGVkIHZhbHVlIGNhbiBvbmx5IGJlIHNldCBhZ2FpbiBh ZnRlciB0aGUgcHJldmlvdXMgdmFsdWUgaXMgdG9ybiBkb3duCi0gKiB3aXRoIHJlcGxvcmlnaW5f c2Vzc2lvbl9yZXNldCgpLgorICogTm9ybWFsbHkgb25seSBvbmUgc3VjaCBjYWNoZWQgb3JpZ2lu IGNhbiBleGlzdCBwZXIgcHJvY2VzcyBzbyB0aGUgY2FjaGVkCisgKiB2YWx1ZSBjYW4gb25seSBi ZSBzZXQgYWdhaW4gYWZ0ZXIgdGhlIHByZXZpb3VzIHZhbHVlIGlzIHRvcm4gZG93biB3aXRoCisg KiByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQoKS4gRm9yIHRoaXMgbm9ybWFsIGNhc2UgcGFzcyBh Y3F1aXJlZF9ieSA9IDAKKyAqIChtZWFuaW5nIHRoZSBzbG90IGlzIG5vdCBhbGxvd2VkIHRvIGJl IGFscmVhZHkgYWNxdWlyZWQgYnkgYW5vdGhlciBwcm9jZXNzKS4KKyAqCisgKiBIb3dldmVyLCBz b21ldGltZXMgbXVsdGlwbGUgcHJvY2Vzc2VzIGNhbiBzYWZlbHkgcmUtdXNlIHRoZSBzYW1lIG9y aWdpbiBzbG90CisgKiAoZm9yIGV4YW1wbGUsIG11bHRpcGxlIHBhcmFsbGVsIGFwcGx5IHByb2Nl c3NlcyBjYW4gc2FmZWx5IHVzZSB0aGUgc2FtZQorICogb3JpZ2luLCBwcm92aWRlZCB0aGV5IG1h aW50YWluIGNvbW1pdCBvcmRlciBieSBhbGxvd2luZyBvbmx5IG9uZSBwcm9jZXNzIHRvCisgKiBj b21taXQgYXQgYSB0aW1lKS4gRm9yIHRoaXMgY2FzZSB0aGUgZmlyc3QgcHJvY2VzcyBtdXN0IHBh c3MgYWNxdWlyZWRfYnkgPQorICogMCwgYW5kIHRoZW4gdGhlIG90aGVyIHByb2Nlc3NlcyBzaGFy aW5nIHRoYXQgc2FtZSBvcmlnaW4gY2FuIHBhc3MKKyAqIGFjcXVpcmVkX2J5ID0gUElEIG9mIHRo ZSBmaXJzdCBwcm9jZXNzLgogICovCiB2b2lkCi1yZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVw T3JpZ2luSWQgbm9kZSkKK3JlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2Rl LCBpbnQgYWNxdWlyZWRfYnkpCiB7CiAJc3RhdGljIGJvb2wgcmVnaXN0ZXJlZF9jbGVhbnVwOwog CWludAkJCWk7CkBAIC0xMTIyLDcgKzExMzAsNyBAQCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAo UmVwT3JpZ2luSWQgbm9kZSkKIAkJaWYgKGN1cnN0YXRlLT5yb2lkZW50ICE9IG5vZGUpCiAJCQlj b250aW51ZTsKIAotCQllbHNlIGlmIChjdXJzdGF0ZS0+YWNxdWlyZWRfYnkgIT0gMCkKKwkJZWxz ZSBpZiAoY3Vyc3RhdGUtPmFjcXVpcmVkX2J5ICE9IDAgJiYgYWNxdWlyZWRfYnkgPT0gMCkKIAkJ ewogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfSU5fVVNF KSwKQEAgLTExNTMsNyArMTE2MSwxMSBAQCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3Jp Z2luSWQgbm9kZSkKIAogCUFzc2VydChzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5yb2lkZW50 ICE9IEludmFsaWRSZXBPcmlnaW5JZCk7CiAKLQlzZXNzaW9uX3JlcGxpY2F0aW9uX3N0YXRlLT5h Y3F1aXJlZF9ieSA9IE15UHJvY1BpZDsKKwlpZiAoYWNxdWlyZWRfYnkgPT0gMCkKKwkJc2Vzc2lv bl9yZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgPSBNeVByb2NQaWQ7CisJZWxzZSBpZiAo c2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgIT0gYWNxdWlyZWRfYnkpCisJ CWVsb2coRVJST1IsICJjb3VsZCBub3QgZmluZCByZXBsaWNhdGlvbiBzdGF0ZSBzbG90IGZvciBy ZXBsaWNhdGlvbiBvcmlnaW4gd2l0aCBPSUQgJXUgd2hpY2ggd2FzIGFjcXVpcmVkIGJ5ICVkIiwK KwkJCSBub2RlLCBhY3F1aXJlZF9ieSk7CiAKIAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uT3Jp Z2luTG9jayk7CiAKQEAgLTEzMzcsNyArMTM0OSw3IEBAIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9z ZXNzaW9uX3NldHVwKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAluYW1lID0gdGV4dF90b19jc3RyaW5n KCh0ZXh0ICopIERhdHVtR2V0UG9pbnRlcihQR19HRVRBUkdfREFUVU0oMCkpKTsKIAlvcmlnaW4g PSByZXBsb3JpZ2luX2J5X25hbWUobmFtZSwgZmFsc2UpOwotCXJlcGxvcmlnaW5fc2Vzc2lvbl9z ZXR1cChvcmlnaW4pOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW4sIDApOwogCiAJ cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbjsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9wcm90by5jCmluZGV4IGY1ZjJiYzIuLjcyM2JhNDYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKQEAgLTExNjQsMTAgKzExNjQsMTQgQEAgbG9naWNh bHJlcF9yZWFkX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcENvbW1pdERh dGEgKmNvbW1pdF9kYXRhKQogLyoKICAqIFdyaXRlIFNUUkVBTSBBQk9SVCB0byB0aGUgb3V0cHV0 IHN0cmVhbS4gTm90ZSB0aGF0IHhpZCBhbmQgc3VieGlkIHdpbGwgYmUKICAqIHNhbWUgZm9yIHRo ZSB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24gYWJvcnQuCisgKgorICogSWYgd3JpdGVfYWJvcnRfaW5m byBpcyB0cnVlLCBzZW5kIHRoZSBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUgZmllbGRzLAorICog b3RoZXJ3aXNlIGRvbid0LgogICovCiB2b2lkCiBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9y dChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJICBUcmFuc2FjdGlv bklkIHN1YnhpZCkKKwkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkLCBYTG9nUmVjUHRyIGFi b3J0X2xzbiwKKwkJCQkJCQkgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUsIGJvb2wgd3JpdGVfYWJv cnRfaW5mbykKIHsKIAlwcV9zZW5kYnl0ZShvdXQsIExPR0lDQUxfUkVQX01TR19TVFJFQU1fQUJP UlQpOwogCkBAIC0xMTc2LDE5ICsxMTgwLDQwIEBAIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fi b3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKIAkvKiB0cmFuc2FjdGlvbiBJ RCAqLwogCXBxX3NlbmRpbnQzMihvdXQsIHhpZCk7CiAJcHFfc2VuZGludDMyKG91dCwgc3VieGlk KTsKKworCWlmICh3cml0ZV9hYm9ydF9pbmZvKQorCXsKKwkJcHFfc2VuZGludDY0KG91dCwgYWJv cnRfbHNuKTsKKwkJcHFfc2VuZGludDY0KG91dCwgYWJvcnRfdGltZSk7CisJfQogfQogCiAvKgog ICogUmVhZCBTVFJFQU0gQUJPUlQgZnJvbSB0aGUgb3V0cHV0IHN0cmVhbS4KKyAqCisgKiBJZiBy ZWFkX2Fib3J0X2luZm8gaXMgdHJ1ZSwgcmVhZCB0aGUgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1l IGZpZWxkcywKKyAqIG90aGVyd2lzZSBkb24ndC4KICAqLwogdm9pZAotbG9naWNhbHJlcF9yZWFk X3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLCBUcmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJ IFRyYW5zYWN0aW9uSWQgKnN1YnhpZCkKK2xvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3Ry aW5nSW5mbyBpbiwKKwkJCQkJCQkgTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0 YSwKKwkJCQkJCQkgYm9vbCByZWFkX2Fib3J0X2luZm8pCiB7Ci0JQXNzZXJ0KHhpZCAmJiBzdWJ4 aWQpOworCUFzc2VydChhYm9ydF9kYXRhKTsKKworCWFib3J0X2RhdGEtPnhpZCA9IHBxX2dldG1z Z2ludChpbiwgNCk7CisJYWJvcnRfZGF0YS0+c3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsK IAotCSp4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOwotCSpzdWJ4aWQgPSBwcV9nZXRtc2dpbnQo aW4sIDQpOworCWlmIChyZWFkX2Fib3J0X2luZm8pCisJeworCQlhYm9ydF9kYXRhLT5hYm9ydF9s c24gPSBwcV9nZXRtc2dpbnQ2NChpbik7CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSBwcV9n ZXRtc2dpbnQ2NChpbik7CisJfQorCWVsc2UKKwl7CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9 IEludmFsaWRYTG9nUmVjUHRyOworCQlhYm9ydF9kYXRhLT5hYm9ydF90aW1lID0gMDsKKwl9CiB9 CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3Jk ZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZl ci5jCmluZGV4IGI1NjdiOGIuLjhkNWJiYWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0yODcwLDcgKzI4NzAsOCBAQCBSZW9yZGVy QnVmZmVyRmluaXNoUHJlcGFyZWQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlk LAogICogZGlzay4KICAqLwogdm9pZAotUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIg KnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCitSZW9yZGVyQnVmZmVyQWJv cnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwK KwkJCQkgICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnR4 bjsKIApAQCAtMjg4MSw2ICsyODgyLDggQEAgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZm ZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJaWYgKHR4biA9PSBO VUxMKQogCQlyZXR1cm47CiAKKwl0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lID0gYWJvcnRfdGlt ZTsKKwogCS8qIEZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgbm90aWZ5IHRoZSByZW1vdGUgbm9k ZSBhYm91dCB0aGUgYWJvcnQuICovCiAJaWYgKHJidHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJewpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKaW5kZXggOTRlODEz YS4uZGFlZWE2YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90 YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3lu Yy5jCkBAIC0xNCw3ICsxNCw3IEBACiAgKgkgIFRoZSBpbml0aWFsIGRhdGEgc3luY2hyb25pemF0 aW9uIGlzIGRvbmUgc2VwYXJhdGVseSBmb3IgZWFjaCB0YWJsZSwKICAqCSAgaW4gYSBzZXBhcmF0 ZSBhcHBseSB3b3JrZXIgdGhhdCBvbmx5IGZldGNoZXMgdGhlIGluaXRpYWwgc25hcHNob3QgZGF0 YQogICoJICBmcm9tIHRoZSBwdWJsaXNoZXIgYW5kIHRoZW4gc3luY2hyb25pemVzIHRoZSBwb3Np dGlvbiBpbiB0aGUgc3RyZWFtIHdpdGgKLSAqCSAgdGhlIG1haW4gYXBwbHkgd29ya2VyLgorICoJ ICB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlci4KICAqCiAgKgkgIFRoZXJlIGFyZSBzZXZlcmFsIHJl YXNvbnMgZm9yIGRvaW5nIHRoZSBzeW5jaHJvbml6YXRpb24gdGhpcyB3YXk6CiAgKgkgICAtIEl0 IGFsbG93cyB1cyB0byBwYXJhbGxlbGl6ZSB0aGUgaW5pdGlhbCBkYXRhIHN5bmNocm9uaXphdGlv bgpAQCAtMTUzLDcgKzE1Myw3IEBAIGZpbmlzaF9zeW5jX3dvcmtlcih2b2lkKQogCQkJCQlnZXRf cmVsX25hbWUoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCkpKSk7CiAJQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CiAKLQkvKiBGaW5kIHRoZSBtYWluIGFwcGx5IHdvcmtlciBhbmQgc2lnbmFs IGl0LiAqLworCS8qIEZpbmQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHNpZ25hbCBpdC4g Ki8KIAlsb2dpY2FscmVwX3dvcmtlcl93YWtldXAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwg SW52YWxpZE9pZCk7CiAKIAkvKiBTdG9wIGdyYWNlZnVsbHkgKi8KQEAgLTYwOSw3ICs2MDksOCBA QCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNu KQogCQkJCQkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT5vaWQsCiAJCQkJCQkJCQkJCQkgTXlTdWJz Y3JpcHRpb24tPm5hbWUsCiAJCQkJCQkJCQkJCQkgTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQs Ci0JCQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxpZCk7CisJCQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxp ZCwKKwkJCQkJCQkJCQkJCSBEU01fSEFORExFX0lOVkFMSUQpOwogCQkJCQkJaGVudHJ5LT5sYXN0 X3N0YXJ0X3RpbWUgPSBub3c7CiAJCQkJCX0KIAkJCQl9CkBAIC02MzAsNiArNjMxLDE0IEBAIHBy b2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB2 b2lkCiBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB7CisJ LyoKKwkgKiBTa2lwIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGJlY2F1c2UgdGhleSBvbmx5 IG9wZXJhdGUgb24gdGFibGVzIHRoYXQKKwkgKiBhcmUgaW4gYSBSRUFEWSBzdGF0ZS4gU2VlIHBh X2Nhbl9zdGFydCgpIGFuZAorCSAqIHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwoKS4KKwkg Ki8KKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybjsKKwogCWlmIChh bV90YWJsZXN5bmNfd29ya2VyKCkpCiAJCXByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX3N5bmMo Y3VycmVudF9sc24pOwogCWVsc2UKQEAgLTEyNDcsNyArMTI1Niw3IEBAIExvZ2ljYWxSZXBTeW5j VGFibGVTdGFydChYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAKIAkvKgogCSAqIEhlcmUg d2UgdXNlIHRoZSBzbG90IG5hbWUgaW5zdGVhZCBvZiB0aGUgc3Vic2NyaXB0aW9uIG5hbWUgYXMg dGhlCi0JICogYXBwbGljYXRpb25fbmFtZSwgc28gdGhhdCBpdCBpcyBkaWZmZXJlbnQgZnJvbSB0 aGUgbWFpbiBhcHBseSB3b3JrZXIsCisJICogYXBwbGljYXRpb25fbmFtZSwgc28gdGhhdCBpdCBp cyBkaWZmZXJlbnQgZnJvbSB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwKIAkgKiBzbyB0aGF0IHN5 bmNocm9ub3VzIHJlcGxpY2F0aW9uIGNhbiBkaXN0aW5ndWlzaCB0aGVtLgogCSAqLwogCUxvZ1Jl cFdvcmtlcldhbFJjdkNvbm4gPQpAQCAtMTI5NSw3ICsxMzA0LDcgQEAgTG9naWNhbFJlcFN5bmNU YWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAkJICogdGltZSB0aGlzIHRh Ymxlc3luYyB3YXMgbGF1bmNoZWQuCiAJCSAqLwogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlf bmFtZShvcmlnaW5uYW1lLCBmYWxzZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmln aW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAkJKm9yaWdpbl9zdGFydHBvcyA9IHJl cGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoZmFsc2UpOwogCkBAIC0xNDA2LDcgKzE0MTUs NyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9z KQogCQkJCQkJICAgdHJ1ZSAvKiBnbyBiYWNrd2FyZCAqLyAsIHRydWUgLyogV0FMIGxvZyAqLyAp OwogCQlVbmxvY2tSZWxhdGlvbk9pZChSZXBsaWNhdGlvbk9yaWdpblJlbGF0aW9uSWQsIFJvd0V4 Y2x1c2l2ZUxvY2spOwogCi0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJ CXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vz c2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAl9CiAJZWxzZQpAQCAtMTQ2MSw4ICsxNDcwLDggQEAg Y29weV90YWJsZV9kb25lOgogCVNwaW5Mb2NrUmVsZWFzZSgmTXlMb2dpY2FsUmVwV29ya2VyLT5y ZWxtdXRleCk7CiAKIAkvKgotCSAqIEZpbmFsbHksIHdhaXQgdW50aWwgdGhlIG1haW4gYXBwbHkg d29ya2VyIHRlbGxzIHVzIHRvIGNhdGNoIHVwIGFuZCB0aGVuCi0JICogcmV0dXJuIHRvIGxldCBM b2dpY2FsUmVwQXBwbHlMb29wIGRvIGl0LgorCSAqIEZpbmFsbHksIHdhaXQgdW50aWwgdGhlIGxl YWRlciBhcHBseSB3b3JrZXIgdGVsbHMgdXMgdG8gY2F0Y2ggdXAgYW5kCisJICogdGhlbiByZXR1 cm4gdG8gbGV0IExvZ2ljYWxSZXBBcHBseUxvb3AgZG8gaXQuCiAJICovCiAJd2FpdF9mb3Jfd29y a2VyX3N0YXRlX2NoYW5nZShTVUJSRUxfU1RBVEVfQ0FUQ0hVUCk7CiAJcmV0dXJuIHNsb3RuYW1l OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggOTY3NzJlNC4u NThkNGZiZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0y Miw4ICsyMiwxMiBAQAogICogU1RSRUFNRUQgVFJBTlNBQ1RJT05TCiAgKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0KICAqIFN0cmVhbWVkIHRyYW5zYWN0aW9ucyAobGFyZ2UgdHJhbnNhY3Rpb25zIGV4 Y2VlZGluZyBhIG1lbW9yeSBsaW1pdCBvbiB0aGUKLSAqIHVwc3RyZWFtKSBhcmUgbm90IGFwcGxp ZWQgaW1tZWRpYXRlbHksIGJ1dCBpbnN0ZWFkLCB0aGUgZGF0YSBpcyB3cml0dGVuCi0gKiB0byB0 ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBhdCBvbmNlIHdoZW4gdGhlIGZpbmFsIGNv bW1pdCBhcnJpdmVzLgorICogdXBzdHJlYW0pIGFyZSBhcHBsaWVkIHVzaW5nIG9uZSBvZiB0d28g YXBwcm9hY2hlczoKKyAqCisgKiAxKSBXcml0ZSB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGx5 IHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzCisgKgorICogVGhpcyBhcHByb2FjaCBpcyB1 c2VkIHdoZW4gdGhlIHVzZXIgaGFzIHNldCB0aGUgc3Vic2NyaXB0aW9uJ3Mgc3RyZWFtaW5nCisg KiBvcHRpb24gYXMgb24uCiAgKgogICogVW5saWtlIHRoZSByZWd1bGFyIChub24tc3RyZWFtZWQp IGNhc2UsIGhhbmRsaW5nIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBoYXMKICAqIHRvIGhhbmRsZSBh Ym9ydHMgb2YgYm90aCB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24gYW5kIHN1YnRyYW5zYWN0aW9u cy4gVGhpcwpAQCAtNTAsNiArNTQsMTIgQEAKICAqIHRoZSBmaWxlIHdlIGRlc2lyZWQgYWNyb3Nz IG11bHRpcGxlIHN0cmVhbS1vcGVuIGNhbGxzIGZvciB0aGUgc2FtZQogICogdHJhbnNhY3Rpb24u CiAgKgorICogMikgUGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKyAqCisgKiBUaGlzIGFwcHJvYWNo IGlzIHVzZWQgd2hlbiB0aGUgdXNlciBoYXMgc2V0IHRoZSBzdWJzY3JpcHRpb24ncyBzdHJlYW1p bmcKKyAqIG9wdGlvbiBhcyBwYXJhbGxlbC4gU2VlIGxvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtl ci5jIGZvciBpbmZvcm1hdGlvbiBhYm91dAorICogdGhpcyBhcHByb2FjaC4KKyAqCiAgKiBUV09f UEhBU0UgVFJBTlNBQ1RJT05TCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBUd28gcGhh c2UgdHJhbnNhY3Rpb25zIGFyZSByZXBsYXllZCBhdCBwcmVwYXJlIGFuZCB0aGVuIGNvbW1pdHRl ZCBvcgpAQCAtMTUwLDYgKzE2MCw3IEBACiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY1BhcnRpdGlv bi5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5oIgogI2luY2x1ZGUgImZ1 bmNhcGkuaCIKKyNpbmNsdWRlICJsaWJwcS9saWJwcS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9y bWF0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNpbmNsdWRlICJtYi9wZ193Y2hh ci5oIgpAQCAtMjMzLDcgKzI0NCwzOSBAQCB0eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJh Y2tBcmcKIAljaGFyCSAgICpvcmlnaW5fbmFtZTsKIH0gQXBwbHlFcnJvckNhbGxiYWNrQXJnOwog Ci1zdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9 CisvKgorICogV2hhdCBhY3Rpb24gdG8gdGFrZSBmb3IgdGhlIHRyYW5zYWN0aW9uLgorICoKKyAq IFRSQU5TX0xFQURFUl9BUFBMWToKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGlu IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBjaGFuZ2VzIG9mIHRoZQorICogdHJhbnNhY3Rp b24gYXJlIGFwcGxpZWQgZGlyZWN0bHkgYnkgdGhlIHdvcmtlci4KKyAqCisgKiBUUkFOU19MRUFE RVJfU0VSSUFMSVpFOgorICogVGhpcyBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxl YWRlciBhcHBseSB3b3JrZXIgb3IgdGFibGUgc3luYworICogd29ya2VyLiBDaGFuZ2VzIGFyZSB3 cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIHdoZW4gdGhlCisgKiBm aW5hbCBjb21taXQgYXJyaXZlcy4KKyAqCisgKiBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExF TDoKKyAqIFRoaXMgYWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIGFuZCBuZWVkIHRvIHNlbmQKKyAqIHRoZSBjaGFuZ2VzIHRvIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIuCisgKgorICogVFJBTlNfUEFSQUxMRUxfQVBQTFk6CisgKiBUaGlzIGFjdGlv biBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFuZCBjaGFu Z2VzIG9mCisgKiB0aGUgdHJhbnNhY3Rpb24gYXJlIGFwcGxpZWQgZGlyZWN0bHkgYnkgdGhlIHdv cmtlci4KKyAqLwordHlwZWRlZiBlbnVtCit7CisJLyogVGhlIGFjdGlvbiBmb3Igbm9uLXN0cmVh bWluZyB0cmFuc2FjdGlvbnMuICovCisJVFJBTlNfTEVBREVSX0FQUExZLAorCisJLyogQWN0aW9u cyBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gKi8KKwlUUkFOU19MRUFERVJfU0VSSUFMSVpF LAorCVRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMLAorCVRSQU5TX1BBUkFMTEVMX0FQUExZ Cit9IFRyYW5zQXBwbHlBY3Rpb247CisKKy8qIGVycmNvbnRleHQgdHJhY2tlciAqLworQXBwbHlF cnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiB7CiAJLmNvbW1hbmQg PSAwLAogCS5yZWwgPSBOVUxMLApAQCAtMjQzLDcgKzI4Niw5IEBAIHN0YXRpYyBBcHBseUVycm9y Q2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnID0KIAkub3JpZ2luX25hbWUgPSBO VUxMLAogfTsKIAotc3RhdGljIE1lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dCA9IE5V TEw7CitFcnJvckNvbnRleHRDYWxsYmFjayAqYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjayA9IE5V TEw7CisKK01lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dCA9IE5VTEw7CiBNZW1vcnlD b250ZXh0IEFwcGx5Q29udGV4dCA9IE5VTEw7CiAKIC8qIHBlciBzdHJlYW0gY29udGV4dCBmb3Ig c3RyZWFtaW5nIHRyYW5zYWN0aW9ucyAqLwpAQCAtMjYzLDE2ICszMDgsMjUgQEAgc3RhdGljIGJv b2wgaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIHN0YXRpYyBUcmFuc2FjdGlvbklk IHN0cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAogLyoKKyAqIFRoZSBudW1iZXIg b2YgY2hhbmdlcyBhcHBsaWVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkdXJpbmcgb25lIHN0 cmVhbWluZworICogYmxvY2suCisgKi8KK3N0YXRpYyB1aW50MzIgcGFyYWxsZWxfc3RyZWFtX25j aGFuZ2VzID0gMDsKKworLyoKICAqIFdlIGVuYWJsZSBza2lwcGluZyBhbGwgZGF0YSBtb2RpZmlj YXRpb24gY2hhbmdlcyAoSU5TRVJULCBVUERBVEUsIGV0Yy4pIGZvcgogICogdGhlIHN1YnNjcmlw dGlvbiBpZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uJ3MgZmluaXNoIExTTiBtYXRjaGVzIHRoZSBz dWJza2lwbHNuLgogICogT25jZSB3ZSBzdGFydCBza2lwcGluZyBjaGFuZ2VzLCB3ZSBkb24ndCBz dG9wIGl0IHVudGlsIHdlIHNraXAgYWxsIGNoYW5nZXMgb2YKICAqIHRoZSB0cmFuc2FjdGlvbiBl dmVuIGlmIHBnX3N1YnNjcmlwdGlvbiBpcyB1cGRhdGVkIGFuZCBNeVN1YnNjcmlwdGlvbi0+c2tp cGxzbgotICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0IGR1cmluZyB0aGF0LiBBbHNvLCBpbiBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMsIHdlCi0gKiBkb24ndCBza2lwIHJlY2VpdmluZyBhbmQg c3Bvb2xpbmcgdGhlIGNoYW5nZXMgc2luY2Ugd2UgZGVjaWRlIHdoZXRoZXIgb3Igbm90CisgKiBn ZXRzIGNoYW5nZWQgb3IgcmVzZXQgZHVyaW5nIHRoYXQuIEFsc28sIGluIHN0cmVhbWluZyB0cmFu c2FjdGlvbiBjYXNlcyAoc3RyZWFtaW5nID0gb24pLAorICogd2UgZG9uJ3Qgc2tpcCByZWNlaXZp bmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2VzIHNpbmNlIHdlIGRlY2lkZSB3aGV0aGVyIG9yIG5v dAogICogdG8gc2tpcCBhcHBseWluZyB0aGUgY2hhbmdlcyB3aGVuIHN0YXJ0aW5nIHRvIGFwcGx5 IGNoYW5nZXMuIFRoZSBzdWJza2lwbHNuIGlzCiAgKiBjbGVhcmVkIGFmdGVyIHN1Y2Nlc3NmdWxs eSBza2lwcGluZyB0aGUgdHJhbnNhY3Rpb24gb3IgYXBwbHlpbmcgbm9uLWVtcHR5CiAgKiB0cmFu c2FjdGlvbi4gVGhlIGxhdHRlciBwcmV2ZW50cyB0aGUgbWlzdGFrZW5seSBzcGVjaWZpZWQgc3Vi c2tpcGxzbiBmcm9tCi0gKiBiZWluZyBsZWZ0LgorICogYmVpbmcgbGVmdC4gTm90ZSB0aGF0IHdl IGNhbm5vdCBza2lwIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHdoZW4gdXNpbmcKKyAqIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMgYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHRoZSBmaW5pc2ggTFNO IGJlZm9yZSBhcHBseWluZworICogdGhlIGNoYW5nZXMuIFNvLCB3ZSBkb24ndCBzdGFydCBwYXJh bGxlbCBhcHBseSB3b3JrZXIgd2hlbiBmaW5pc2ggTFNOIGlzIHNldAorICogYnkgdGhlIHVzZXIu CiAgKi8KIHN0YXRpYyBYTG9nUmVjUHRyIHNraXBfeGFjdF9maW5pc2hfbHNuID0gSW52YWxpZFhM b2dSZWNQdHI7CiAjZGVmaW5lIGlzX3NraXBwaW5nX2NoYW5nZXMoKSAodW5saWtlbHkoIVhMb2dS ZWNQdHJJc0ludmFsaWQoc2tpcF94YWN0X2ZpbmlzaF9sc24pKSkKQEAgLTMyMCwxNSArMzc0LDgg QEAgc3RhdGljIHZvaWQgc3RyZWFtX2Nsb3NlX2ZpbGUodm9pZCk7CiAKIHN0YXRpYyB2b2lkIHNl bmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9zLCBib29sIGZvcmNlLCBib29sIHJlcXVlc3RS ZXBseSk7CiAKLXN0YXRpYyB2b2lkIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVt b3RlX2xzbik7Ci0KLXN0YXRpYyB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7 Ci0KIHN0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpOwogCi0vKiBw cm90b3R5cGUgbmVlZGVkIGJlY2F1c2Ugb2Ygc3RyZWFtX2NvbW1pdCAqLwotc3RhdGljIHZvaWQg YXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKLQogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxl X2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwogc3Rh dGljIHZvaWQgYXBwbHlfaGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRhdGEg KmVkYXRhLAogCQkJCQkJCQkJCSBSZXN1bHRSZWxJbmZvICpyZWxpbmZvLApAQCAtMzYxLDEwICs0 MDgsMjYgQEAgc3RhdGljIHZvaWQgc3RvcF9za2lwcGluZ19jaGFuZ2VzKHZvaWQpOwogc3RhdGlj IHZvaWQgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbik7 CiAKIC8qIEZ1bmN0aW9ucyBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KLXN0YXRpYyB2b2lk IGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0 X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBs c24pOwogc3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2 b2lkKTsKIAorc3RhdGljIFRyYW5zQXBwbHlBY3Rpb24gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2Fj dGlvbihUcmFuc2FjdGlvbklkIHhpZCwKKwkJCQkJCQkJCQkJCQkgUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKip3aW5mbyk7CisKKy8qCisgKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGxvZ2ljYWwg cmVwbGljYXRpb24gd29ya2VyLgorICovCitzdGF0aWMgY29uc3QgY2hhciAqCitnZXRfd29ya2Vy X25hbWUodm9pZCkKK3sKKwlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQorCQlyZXR1cm4gXygi bG9naWNhbCByZXBsaWNhdGlvbiB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2VyIik7CisJZWxz ZSBpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCXJldHVybiBfKCJsb2dpY2FsIHJl cGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpOworCWVsc2UKKwkJcmV0dXJuIF8oImxv Z2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIik7Cit9CisKIC8qCiAgKiBGb3JtIHRoZSBv cmlnaW4gbmFtZSBmb3IgdGhlIHN1YnNjcmlwdGlvbi4KICAqCkBAIC0zOTQsMTkgKzQ1Nyw0MyBA QCBSZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JMb2dpY2FsUmVwKE9pZCBzdWJvaWQsIE9pZCByZWxp ZCwKICAqCiAgKiBUaGlzIGlzIG1haW5seSBuZWVkZWQgZm9yIGluaXRpYWwgcmVsYXRpb24gZGF0 YSBzeW5jIGFzIHRoYXQgcnVucyBpbgogICogc2VwYXJhdGUgd29ya2VyIHByb2Nlc3MgcnVubmlu ZyBpbiBwYXJhbGxlbCBhbmQgd2UgbmVlZCBzb21lIHdheSB0byBza2lwCi0gKiBjaGFuZ2VzIGNv bWluZyB0byB0aGUgbWFpbiBhcHBseSB3b3JrZXIgZHVyaW5nIHRoZSBzeW5jIG9mIGEgdGFibGUu CisgKiBjaGFuZ2VzIGNvbWluZyB0byB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBkdXJpbmcgdGhl IHN5bmMgb2YgYSB0YWJsZS4KICAqCiAgKiBOb3RlIHdlIG5lZWQgdG8gZG8gc21hbGxlciBvciBl cXVhbHMgY29tcGFyaXNvbiBmb3IgU1lOQ0RPTkUgc3RhdGUgYmVjYXVzZQogICogaXQgbWlnaHQg aG9sZCBwb3NpdGlvbiBvZiBlbmQgb2YgaW5pdGlhbCBzbG90IGNvbnNpc3RlbnQgcG9pbnQgV0FM CiAgKiByZWNvcmQgKyAxIChpZSBzdGFydCBvZiBuZXh0IHJlY29yZCkgYW5kIG5leHQgcmVjb3Jk IGNhbiBiZSBDT01NSVQgb2YKICAqIHRyYW5zYWN0aW9uIHdlIGFyZSBub3cgcHJvY2Vzc2luZyAo d2hpY2ggaXMgd2hhdCB3ZSBzZXQgcmVtb3RlX2ZpbmFsX2xzbgogICogdG8gaW4gYXBwbHlfaGFu ZGxlX2JlZ2luKS4KKyAqCisgKiBOb3RlIHRoYXQgZm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMg dGhhdCBhcmUgYmVpbmcgYXBwbGllZCBpbiB0aGUgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlciwg d2UgZGlzYWxsb3cgYXBwbHlpbmcgY2hhbmdlcyBpZiB0aGUgdGFyZ2V0IHRhYmxlIGluIHRoZQor ICogc3Vic2NyaXB0aW9uIGlzIG5vdCBpbiB0aGUgUkVBRFkgc3RhdGUsIGJlY2F1c2Ugd2UgY2Fu bm90IGRlY2lkZSB3aGV0aGVyIHRvCisgKiBhcHBseSB0aGUgY2hhbmdlIGFzIHdlIHdvbid0IGtu b3cgcmVtb3RlX2ZpbmFsX2xzbiBieSB0aGF0IHRpbWUuCisgKgorICogV2UgYWxyZWFkeSBjaGVj a2VkIHRoaXMgaW4gcGFfY2FuX3N0YXJ0KCkgYmVmb3JlIGFzc2lnbmluZyB0aGUKKyAqIHN0cmVh bWluZyB0cmFuc2FjdGlvbiB0byB0aGUgcGFyYWxsZWwgd29ya2VyLCBidXQgaXQgYWxzbyBuZWVk cyB0byBiZQorICogY2hlY2tlZCBoZXJlIGJlY2F1c2UgaWYgdGhlIHVzZXIgZXhlY3V0ZXMgQUxU RVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNICisgKiBQVUJMSUNBVElPTiBpbiBwYXJhbGxlbCwg dGhlIG5ldyB0YWJsZSBjYW4gYmUgYWRkZWQgdG8gcGdfc3Vic2NyaXB0aW9uX3JlbAorICogd2hp bGUgYXBwbHlpbmcgdGhpcyB0cmFuc2FjdGlvbi4KICAqLwogc3RhdGljIGJvb2wKIHNob3VsZF9h cHBseV9jaGFuZ2VzX2Zvcl9yZWwoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpCiB7CiAJaWYg KGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJcmV0dXJuIE15TG9naWNhbFJlcFdvcmtlci0+cmVs aWQgPT0gcmVsLT5sb2NhbHJlbG9pZDsKKwllbHNlIGlmIChhbV9wYXJhbGxlbF9hcHBseV93b3Jr ZXIoKSkKKwl7CisJCS8qIFdlIGRvbid0IHN5bmNocm9uaXplIHJlbCdzIHRoYXQgYXJlIGluIHVu a25vd24gc3RhdGUuICovCisJCWlmIChyZWwtPnN0YXRlICE9IFNVQlJFTF9TVEFURV9SRUFEWSAm JgorCQkJcmVsLT5zdGF0ZSAhPSBTVUJSRUxfU1RBVEVfVU5LTk9XTikKKwkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RB VEUpLAorCQkJCQkgZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdv cmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AiLAorCQkJCQkJCU15U3Vic2Ny aXB0aW9uLT5uYW1lKSwKKwkJCQkJIGVycmRldGFpbCgiQ2Fubm90IGhhbmRsZSBzdHJlYW1lZCBy ZXBsaWNhdGlvbiB0cmFuc2FjdGlvbnMgdXNpbmcgcGFyYWxsZWwgYXBwbHkgd29ya2VycyB1bnRp bCBhbGwgdGFibGVzIGhhdmUgYmVlbiBzeW5jaHJvbml6ZWQuIikpKTsKKworCQlyZXR1cm4gcmVs LT5zdGF0ZSA9PSBTVUJSRUxfU1RBVEVfUkVBRFk7CisJfQogCWVsc2UKIAkJcmV0dXJuIChyZWwt PnN0YXRlID09IFNVQlJFTF9TVEFURV9SRUFEWSB8fAogCQkJCShyZWwtPnN0YXRlID09IFNVQlJF TF9TVEFURV9TWU5DRE9ORSAmJgpAQCAtNDUyLDQzICs1MzksODggQEAgZW5kX3JlcGxpY2F0aW9u X3N0ZXAodm9pZCkKIH0KIAogLyoKLSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCisg KiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIGZvciBib3RoIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIGFuZCB0aGUKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCiAgKgotICogSWYgaW4g c3RyZWFtaW5nIG1vZGUgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9u KSwgd2UKLSAqIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9wZXIgdG9w bGV2ZWwgdHJhbnNhY3Rpb24uCisgKiBJbiB0aGUgc3RyZWFtaW5nIGNhc2UgKHJlY2VpdmluZyBh IGJsb2NrIG9mIHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiksIGZvcgorICogc2VyaWFsaXplIG1v ZGUsIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZpbGUgZm9yIHRoZSBwcm9wZXIgdG9wbGV2ZWwK KyAqIHRyYW5zYWN0aW9uLCBhbmQgZm9yIHBhcmFsbGVsIG1vZGUsIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIHdpbGwgc2VuZCB0aGUKKyAqIGNoYW5nZXMgdG8gcGFyYWxsZWwgYXBwbHkgd29ya2Vy cyBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIGRlZmluZQorICogc2F2ZXBvaW50 cyBpZiBuZWVkZWQuIChMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gb3IgTE9HSUNBTF9SRVBfTVNH X1RZUEUKKyAqIG1lc3NhZ2VzIHdpbGwgYmUgYXBwbGllZCBieSBib3RoIGxlYWRlciBhcHBseSB3 b3JrZXIgYW5kIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXJzKS4KICAqCi0gKiBSZXR1cm5zIHRy dWUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucywgZmFsc2Ugb3RoZXJ3aXNlIChyZWd1bGFyIG1v ZGUpLgorICogUmV0dXJucyB0cnVlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgKHdoZW4gdGhl IGNoYW5nZSBpcyBlaXRoZXIgc2VyaWFsaXplZAorICogdG8gZmlsZSBvciBzZW50IHRvIHBhcmFs bGVsIGFwcGx5IHdvcmtlciksIGZhbHNlIG90aGVyd2lzZSAocmVndWxhciBtb2RlIG9yCisgKiBu ZWVkcyB0byBiZSBwcm9jZXNzZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyKS4KKyAqCisgKiBF eGNlcHRpb246IElmIHRoZSBtZXNzYWdlIGJlaW5nIHByb2Nlc3NlZCBpcyBMT0dJQ0FMX1JFUF9N U0dfUkVMQVRJT04KKyAqIG9yIExPR0lDQUxfUkVQX01TR19UWVBFLCByZXR1cm4gZmFsc2UgZXZl biBpZiB0aGUgbWVzc2FnZSBuZWVkcyB0byBiZSBzZW50CisgKiB0byBhIHBhcmFsbGVsIGFwcGx5 IHdvcmtlci4KICAqLwogc3RhdGljIGJvb2wKIGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihM b2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsKLQlUcmFuc2FjdGlvbklk IHhpZDsKKwlUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICp3aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKworCWFwcGx5X2Fj dGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsK IAogCS8qIG5vdCBpbiBzdHJlYW1pbmcgbW9kZSAqLwotCWlmICghaW5fc3RyZWFtZWRfdHJhbnNh Y3Rpb24pCisJaWYgKGFwcGx5X2FjdGlvbiA9PSBUUkFOU19MRUFERVJfQVBQTFkpCiAJCXJldHVy biBmYWxzZTsKIAotCUFzc2VydChzdHJlYW1fZmQgIT0gTlVMTCk7CiAJQXNzZXJ0KFRyYW5zYWN0 aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsKIAogCS8qCiAJICogV2Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgWElEIG9mIHRoZSBzdWJ4YWN0IGFzIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZQogCSAqIG1l c3NhZ2UsIHNvIGV4dHJhY3QgaXQuCiAJICovCi0JeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOwor CWN1cnJlbnRfeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOwogCi0JaWYgKCFUcmFuc2FjdGlvbklk SXNWYWxpZCh4aWQpKQorCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoY3VycmVudF94aWQpKQog CQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9O KSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJpbnZhbGlkIHRyYW5zYWN0aW9uIElEIGluIHN0cmVh bWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9uIikpKTsKIAotCS8qIEFkZCB0aGUgbmV3IHN1Ynhh Y3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVyZSkuICovCi0Jc3VieGFjdF9pbmZv X2FkZCh4aWQpOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFE RVJfU0VSSUFMSVpFOgorCQkJQXNzZXJ0KHN0cmVhbV9mZCk7CisKKwkJCS8qIEFkZCB0aGUgbmV3 IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVyZSkuICovCisJCQlzdWJ4 YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlkKTsKKworCQkJLyogV3JpdGUgdGhlIGNoYW5nZSB0byB0 aGUgY3VycmVudCBmaWxlICovCisJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJ CQlyZXR1cm4gdHJ1ZTsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgor CQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRh dGEpOworCisJCQkvKgorCQkJICogWFhYIFRoZSBwdWJsaXNoZXIgc2lkZSBkb2Vzbid0IGFsd2F5 cyBzZW5kIHJlbGF0aW9uL3R5cGUgdXBkYXRlCisJCQkgKiBtZXNzYWdlcyBhZnRlciB0aGUgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uLCBzbyBhbHNvIHVwZGF0ZSB0aGUKKwkJCSAqIHJlbGF0aW9uL3R5 cGUgaW4gbGVhZGVyIGFwcGx5IHdvcmtlci4gU2VlIGZ1bmN0aW9uCisJCQkgKiBjbGVhbnVwX3Jl bF9zeW5jX2NhY2hlLgorCQkJICovCisJCQlyZXR1cm4gKGFjdGlvbiAhPSBMT0dJQ0FMX1JFUF9N U0dfUkVMQVRJT04gJiYKKwkJCQkJYWN0aW9uICE9IExPR0lDQUxfUkVQX01TR19UWVBFKTsKKwor CQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2Vz ICs9IDE7CiAKLQkvKiB3cml0ZSB0aGUgY2hhbmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KLQlz dHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJCQkvKiBEZWZpbmUgYSBzYXZlcG9pbnQg Zm9yIGEgc3VieGFjdCBpZiBuZWVkZWQuICovCisJCQlwYV9zdGFydF9zdWJ0cmFucyhjdXJyZW50 X3hpZCwgc3RyZWFtX3hpZCk7CisJCQlyZXR1cm4gZmFsc2U7CiAKLQlyZXR1cm4gdHJ1ZTsKKwkJ ZGVmYXVsdDoKKwkJCUFzc2VydChmYWxzZSk7CisJCQlyZXR1cm4gZmFsc2U7CQkvKiBzaWxlbmNl IGNvbXBpbGVyIHdhcm5pbmcgKi8KKwl9CiB9CiAKIC8qCkBAIC05MjYsOCArMTA1OCwxMSBAQCBh cHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbChMb2dpY2FsUmVwUHJlcGFyZWRUeG5EYXRhICpw cmVwYXJlX2RhdGEpCiAJICogQmVnaW5UcmFuc2FjdGlvbkJsb2NrIGlzIG5lY2Vzc2FyeSB0byBi YWxhbmNlIHRoZSBFbmRUcmFuc2FjdGlvbkJsb2NrCiAJICogY2FsbGVkIHdpdGhpbiB0aGUgUHJl cGFyZVRyYW5zYWN0aW9uQmxvY2sgYmVsb3cuCiAJICovCi0JQmVnaW5UcmFuc2FjdGlvbkJsb2Nr KCk7Ci0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7IC8qIENvbXBsZXRlcyB0aGUgcHJlY2Vk aW5nIEJlZ2luIGNvbW1hbmQuICovCisJaWYgKCFJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwl7CisJ CUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsg LyogQ29tcGxldGVzIHRoZSBwcmVjZWRpbmcgQmVnaW4gY29tbWFuZC4gKi8KKwl9CiAKIAkvKgog CSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20g Y29ycmVjdCBwb3NpdGlvbgpAQCAtOTc0LDcgKzExMDksNyBAQCBhcHBseV9oYW5kbGVfcHJlcGFy ZShTdHJpbmdJbmZvIHMpCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJcGdzdGF0X3Jl cG9ydF9zdGF0KGZhbHNlKTsKIAotCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5l bmRfbHNuKTsKKwlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgWGFj dExhc3RDb21taXRFbmQpOwogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKQEAg LTk5Niw2ICsxMTMxLDEyIEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAog LyoKICAqIEhhbmRsZSBhIENPTU1JVCBQUkVQQVJFRCBvZiBhIHByZXZpb3VzbHkgUFJFUEFSRUQg dHJhbnNhY3Rpb24uCisgKgorICogTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8gd2FpdCBoZXJl IGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgcHJlcGFyZWQgaW4gYQorICogcGFyYWxsZWwgYXBwbHkg d29ya2VyLiBJbiB0aGF0IGNhc2UsIHdlIGhhdmUgYWxyZWFkeSB3YWl0ZWQgZm9yIHRoZSBwcmVw YXJlCisgKiB0byBmaW5pc2ggaW4gYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKCkgd2hpY2gg d2lsbCBlbnN1cmUgYWxsIHRoZQorICogb3BlcmF0aW9ucyBpbiB0aGF0IHRyYW5zYWN0aW9uIGhh dmUgaGFwcGVuZWQgaW4gdGhlIHN1YnNjcmliZXIsIHNvIG5vCisgKiBjb25jdXJyZW50IHRyYW5z YWN0aW9uIGNhbiBjYXVzZSBkZWFkbG9jayBvciB0cmFuc2FjdGlvbiBkZXBlbmRlbmN5IGlzc3Vl cy4KICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5n SW5mbyBzKQpAQCAtMTAyNSw3ICsxMTY2LDcgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJl ZChTdHJpbmdJbmZvIHMpCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJcGdzdGF0X3Jl cG9ydF9zdGF0KGZhbHNlKTsKIAotCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5l bmRfbHNuKTsKKwlzdG9yZV9mbHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbiwgWGFj dExhc3RDb21taXRFbmQpOwogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCiAJLyog UHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxl bC4gKi8KQEAgLTEwMzksNiArMTE4MCwxMiBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVk KFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBhIFJPTExCQUNLIFBSRVBBUkVEIG9mIGEg cHJldmlvdXNseSBQUkVQQVJFRCBUUkFOU0FDVElPTi4KKyAqCisgKiBOb3RlIHRoYXQgd2UgZG9u J3QgbmVlZCB0byB3YWl0IGhlcmUgaWYgdGhlIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCBpbiBh CisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIEluIHRoYXQgY2FzZSwgd2UgaGF2ZSBhbHJlYWR5 IHdhaXRlZCBmb3IgdGhlIHByZXBhcmUKKyAqIHRvIGZpbmlzaCBpbiBhcHBseV9oYW5kbGVfc3Ry ZWFtX3ByZXBhcmUoKSB3aGljaCB3aWxsIGVuc3VyZSBhbGwgdGhlCisgKiBvcGVyYXRpb25zIGlu IHRoYXQgdHJhbnNhY3Rpb24gaGF2ZSBoYXBwZW5lZCBpbiB0aGUgc3Vic2NyaWJlciwgc28gbm8K KyAqIGNvbmN1cnJlbnQgdHJhbnNhY3Rpb24gY2FuIGNhdXNlIGRlYWRsb2NrIG9yIHRyYW5zYWN0 aW9uIGRlcGVuZGVuY3kgaXNzdWVzLgogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3Jv bGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKQEAgLTEwODAsNyArMTIyNyw3IEBAIGFwcGx5 X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAKIAlwZ3N0YXRfcmVwb3J0 X3N0YXQoZmFsc2UpOwogCi0Jc3RvcmVfZmx1c2hfcG9zaXRpb24ocm9sbGJhY2tfZGF0YS5yb2xs YmFja19lbmRfbHNuKTsKKwlzdG9yZV9mbHVzaF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxi YWNrX2VuZF9sc24sIFhhY3RMYXN0Q29tbWl0RW5kKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24g PSBmYWxzZTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJv bml6ZWQgaW4gcGFyYWxsZWwuICovCkBAIC0xMDkyLDE1ICsxMjM5LDEzIEBAIGFwcGx5X2hhbmRs ZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAKIC8qCiAgKiBIYW5kbGUgU1RSRUFN IFBSRVBBUkUuCi0gKgotICogTG9naWMgaXMgaW4gdHdvIHBhcnRzOgotICogMS4gUmVwbGF5IGFs bCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zCi0gKiAyLiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBw cmVwYXJlZAogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0 cmluZ0luZm8gcykKIHsKIAlMb2dpY2FsUmVwUHJlcGFyZWRUeG5EYXRhIHByZXBhcmVfZGF0YTsK KwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBs eV9hY3Rpb247CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJS T1IsCkBAIC0xMTE2LDI0ICsxMjYxLDY3IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShT dHJpbmdJbmZvIHMpCiAJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9wcmVwYXJlKHMsICZwcmVwYXJl X2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QocHJlcGFyZV9kYXRhLnhpZCwg cHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgcHJl cGFyZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCBwcmVwYXJlX2RhdGEueGlkKTsKKwlh cHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHByZXBhcmVfZGF0YS54 aWQsICZ3aW5mbyk7CiAKLQkvKiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9wZXJhdGlvbnMuICov Ci0JYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEu cHJlcGFyZV9sc24pOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19M RUFERVJfU0VSSUFMSVpFOgogCi0JLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQu ICovCi0JYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CisJCQkv KgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQgdG8gZmlsZSwgc28g cmVwbGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAqLworCQkJYXBw bHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEucHJlcGFy ZV9sc24pOwogCi0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQkvKiBNYXJrIHRoZSB0 cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KKwkJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVy bmFsKCZwcmVwYXJlX2RhdGEpOwogCi0JcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKwkJCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0Jc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFy ZV9kYXRhLmVuZF9sc24pOworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVu ZF9sc24sIFhhY3RMYXN0Q29tbWl0RW5kKTsKIAotCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZh bHNlOworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisKKwkJCS8qIFVubGluayB0 aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KKwkJ CXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVf ZGF0YS54aWQpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJB TExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qIFNlbmQgU1RSRUFNIFBSRVBBUkUgbWVz c2FnZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLworCQkJcGFfc2VuZF9kYXRhKHdp bmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQkvKiBGaW5pc2ggcHJvY2Vzc2luZyB0aGUgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uLiAqLworCQkJcGFfeGFjdF9maW5pc2god2luZm8sIHByZXBhcmVf ZGF0YS5lbmRfbHNuKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfUEFSQUxMRUxfQVBQTFk6 CisJCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CisKKwkJCS8qIE1hcmsgdGhlIHRyYW5zYWN0 aW9uIGFzIHByZXBhcmVkLiAqLworCQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnBy ZXBhcmVfZGF0YSk7CisKKwkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiAKLQkvKiB1bmxpbmsg dGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCi0J c3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9k YXRhLnhpZCk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJTXlQYXJhbGxl bFNoYXJlZC0+bGFzdF9jb21taXRfZW5kID0gWGFjdExhc3RDb21taXRFbmQ7CisKKwkJCXBhX3Nl dF94YWN0X3N0YXRlKE15UGFyYWxsZWxTaGFyZWQsIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEKTsK KwkJCXBhX3VubG9ja190cmFuc2FjdGlvbihNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFjY2Vzc0V4 Y2x1c2l2ZUxvY2spOworCisJCQlwYV9yZXNldF9zdWJ0cmFucygpOworCisJCQllbG9nKERFQlVH MSwgImZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSBQUkVQQVJFIGNvbW1hbmQiKTsKKwkJ CWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQor CisJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0 aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5j aW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CkBAIC0xMTc3LDIxICsxMzY1LDE0IEBA IHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIHsK IAlib29sCQlmaXJzdF9zZWdtZW50OworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsK KwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFu c2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09M X1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiZHVwbGljYXRlIFNUUkVBTSBTVEFS VCBtZXNzYWdlIikpKTsKIAotCS8qCi0JICogU3RhcnQgYSB0cmFuc2FjdGlvbiBvbiBzdHJlYW0g c3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQKLQkgKiBvbiB0aGUgc3Ry ZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBpbiB3aGljaCBjYXNlIGl0 Ci0JICogd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIG1lc3NhZ2Vz LiBXZSBuZWVkIHRoZQotCSAqIHRyYW5zYWN0aW9uIGZvciBoYW5kbGluZyB0aGUgYnVmZmlsZSwg dXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlCi0JICogc3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3Qg aW5mby4KLQkgKi8KLQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7Ci0KIAkvKiBub3RpZnkgaGFu ZGxlIG1ldGhvZHMgd2UncmUgcHJvY2Vzc2luZyBhIHJlbW90ZSB0cmFuc2FjdGlvbiAqLwogCWlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gdHJ1ZTsKIApAQCAtMTIwNSwzNiArMTM4Niw5NSBAQCBh cHBseV9oYW5kbGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAogCXNldF9hcHBseV9lcnJv cl9jb250ZXh0X3hhY3Qoc3RyZWFtX3hpZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCi0JLyoKLQkg KiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHll dC4gVGhpcyB3aWxsIGJlCi0JICogdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUg d29ya2VyIHNvIGNyZWF0ZSBpdCBpbiBhIHBlcm1hbmVudAotCSAqIGNvbnRleHQuIFdlIGNyZWF0 ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZpcnN0IHN0cmVhbWluZyBtZXNzYWdlIGZyb20gYW55Ci0JICog dHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlciBzdHJlYW1pbmcg dHJhbnNhY3Rpb25zLgotCSAqIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUg c3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dAotCSAqIHRoZW4gd2Ugd29uJ3QgYmUgc3Vy ZSB0aGF0IGl0IHdpbGwgZXZlciBiZSB1c2VkLgotCSAqLwotCWlmIChNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN0cmVhbV9maWxlc2V0ID09IE5VTEwpCisJLyogVHJ5IHRvIGFsbG9jYXRlIGEgd29ya2Vy IGZvciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiAqLworCWlmIChmaXJzdF9zZWdtZW50KQor CQlwYV9hbGxvY2F0ZV93b3JrZXIoc3RyZWFtX3hpZCk7CisKKwlhcHBseV9hY3Rpb24gPSBnZXRf dHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CisKKwlzd2l0Y2gg KGFwcGx5X2FjdGlvbikKIAl7Ci0JCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCQljYXNlIFRSQU5T X0xFQURFUl9TRVJJQUxJWkU6CisKKwkJCS8qCisJCQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9u IHN0cmVhbSBzdGFydCwgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlCisJCQkgKiBjb21taXR0ZWQg b24gdGhlIHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4KKwkJ CSAqIHdoaWNoIGNhc2UgaXQgd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwg dGhlCisJCQkgKiBtZXNzYWdlcy4gV2UgbmVlZCB0aGUgdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5n IHRoZSBidWZmaWxlLAorCQkJICogdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlIHN0cmVhbWluZyBk YXRhIGFuZCBzdWJ4YWN0IGluZm8uCisJCQkgKi8KKwkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAo KTsKIAotCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKwkJ CS8qCisJCQkgKiBJbml0aWFsaXplIHRoZSB3b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBo YXZlbid0IHlldC4gVGhpcworCQkJICogd2lsbCBiZSB1c2VkIGZvciB0aGUgZW50aXJlIGR1cmF0 aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0CisJCQkgKiBpbiBhIHBlcm1hbmVudCBjb250 ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdAorCQkJICogc3RyZWFtaW5nIG1l c3NhZ2UgZnJvbSBhbnkgdHJhbnNhY3Rpb24gYW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzCisJCQkg KiBhbmQgb3RoZXIgc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gTm93LCB3ZSBjb3VsZCBjcmVhdGUg YQorCQkJICogZmlsZXNldCBhdCB0aGUgc3RhcnQgb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dCB0 aGVuIHdlIHdvbid0IGJlCisJCQkgKiBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCisJ CQkgKi8KKwkJCWlmICghTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCkKKwkJCXsK KwkJCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKIAotCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVh bV9maWxlc2V0ID0gcGFsbG9jKHNpemVvZihGaWxlU2V0KSk7Ci0JCUZpbGVTZXRJbml0KE15TG9n aWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCi0JCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj dHgpOwotCX0KKwkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFsbG9j KHNpemVvZihGaWxlU2V0KSk7CisJCQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5z dHJlYW1fZmlsZXNldCk7CiAKLQkvKiBvcGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5z YWN0aW9uICovCi0Jc3RyZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBz dHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKwkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y3R4KTsKKwkJCX0KIAotCS8qIGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVu IGV4aXN0aW5nIHN1YnhhY3QgZmlsZSAqLwotCWlmICghZmlyc3Rfc2VnbWVudCkKLQkJc3VieGFj dF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJCQkv KiBPcGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCQkJc3RyZWFt X29wZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9z ZWdtZW50KTsKIAotCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7 CisJCQkvKiBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBz dWJ4YWN0IGZpbGUuICovCisJCQlpZiAoIWZpcnN0X3NlZ21lbnQpCisJCQkJc3VieGFjdF9pbmZv X3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CiAKLQllbmRfcmVw bGljYXRpb25fc3RlcCgpOworCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwkJCWJyZWFrOwor CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8p OworCisJCQkvKgorCQkJICogVW5sb2NrIHRoZSBzaGFyZWQgb2JqZWN0IGxvY2sgc28gdGhhdCB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyCisJCQkgKiBjYW4gY29udGludWUgdG8gcmVjZWl2ZSBj aGFuZ2VzLgorCQkJICovCisJCQlpZiAoIWZpcnN0X3NlZ21lbnQpCisJCQkJcGFfdW5sb2NrX3N0 cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQkvKgor CQkJICogSW5jcmVtZW50IHRoZSBudW1iZXIgb2Ygc3RyZWFtaW5nIGJsb2NrcyB3YWl0aW5nIHRv IGJlCisJCQkgKiBwcm9jZXNzZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCQkJICovCisJ CQlwZ19hdG9taWNfYWRkX2ZldGNoX3UzMigmd2luZm8tPnNoYXJlZC0+cGVuZGluZ19zdHJlYW1f Y291bnQsIDEpOworCisJCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisK KwkJCS8qIENhY2hlIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHRoaXMgdHJhbnNhY3Rp b24uICovCisJCQlwYV9zZXRfc3RyZWFtX2FwcGx5X3dvcmtlcih3aW5mbyk7CisJCQlicmVhazsK KworCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJaWYgKGZpcnN0X3NlZ21lbnQpCisJ CQl7CisJCQkJLyogSG9sZCB0aGUgbG9jayB1bnRpbCB0aGUgZW5kIG9mIHRoZSB0cmFuc2FjdGlv bi4gKi8KKwkJCQlwYV9sb2NrX3RyYW5zYWN0aW9uKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNj ZXNzRXhjbHVzaXZlTG9jayk7CisJCQkJcGFfc2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJl ZCwgUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCk7CisJCQl9CisKKwkJCXBhcmFsbGVsX3N0cmVhbV9u Y2hhbmdlcyA9IDA7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsK KwkJCWJyZWFrOworCX0KKworCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywg TlVMTCk7CiB9CiAKIC8qCkBAIC0xMjQzLDU4ICsxNDgzLDExMSBAQCBhcHBseV9oYW5kbGVfc3Ry ZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFt X3N0b3AoU3RyaW5nSW5mbyBzKQogeworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsK KwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKwogCWlmICghaW5fc3RyZWFtZWRfdHJh bnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NP TF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBTVE9QIG1lc3NhZ2Ug d2l0aG91dCBTVFJFQU0gU1RBUlQiKSkpOwogCi0JLyoKLQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRo IHNlcmlhbGl6ZWQgY2hhbmdlcywgYW5kIHNlcmlhbGl6ZSBpbmZvcm1hdGlvbiBhYm91dAotCSAq IHN1YnhhY3RzIGZvciB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCi0JICovCi0Jc3VieGFjdF9p bmZvX3dyaXRlKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOwotCXN0cmVh bV9jbG9zZV9maWxlKCk7CisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2Fj dGlvbihzdHJlYW1feGlkLCAmd2luZm8pOwogCi0JLyogV2UgbXVzdCBiZSBpbiBhIHZhbGlkIHRy YW5zYWN0aW9uIHN0YXRlICovCi0JQXNzZXJ0KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKKwlzd2l0 Y2ggKGFwcGx5X2FjdGlvbikKKwl7CisJCWNhc2UgVFJBTlNfTEVBREVSX1NFUklBTElaRToKIAot CS8qIENvbW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAqLwotCUNvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCgpOworCQkJLyoKKwkJCSAqIENsb3NlIHRoZSBmaWxlIHdpdGggc2VyaWFsaXpl ZCBjaGFuZ2VzLCBhbmQgc2VyaWFsaXplCisJCQkgKiBpbmZvcm1hdGlvbiBhYm91dCBzdWJ4YWN0 cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgorCQkJICovCisJCQlzdWJ4YWN0X2luZm9f d3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJCQlzdHJlYW1f Y2xvc2VfZmlsZSgpOwogCi0JaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwkJCS8q IFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLworCQkJQXNzZXJ0KElz VHJhbnNhY3Rpb25TdGF0ZSgpKTsKKworCQkJLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5z YWN0aW9uICovCisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFJlc2V0IHBl ci1zdHJlYW0gY29udGV4dCAqLwotCU1lbW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3RyZWFtaW5n Q29udGV4dCk7CisJCQkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KKwkJCU1lbW9yeUNv bnRleHRSZXNldChMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCk7CisKKwkJCXBnc3RhdF9yZXBvcnRf YWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xF QURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAq IExvY2sgYmVmb3JlIHNlbmRpbmcgdGhlIFNUUkVBTV9TVE9QIG1lc3NhZ2Ugc28gdGhhdCB0aGUg bGVhZGVyCisJCQkgKiBjYW4gaG9sZCB0aGUgbG9jayBmaXJzdCBhbmQgdGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlciB3aWxsIHdhaXQKKwkJCSAqIGZvciBsZWFkZXIgdG8gcmVsZWFzZSB0aGUgbG9j ay4gU2VlIExvY2tpbmcgQ29uc2lkZXJhdGlvbnMgYXRvcAorCQkJICogYXBwbHlwYXJhbGxlbHdv cmtlci5jLgorCQkJICovCisJCQlwYV9sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFj Y2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ ZGF0YSk7CisKKwkJCXBhX3NldF9zdHJlYW1fYXBwbHlfd29ya2VyKE5VTEwpOworCisJCQlwZ3N0 YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCQkJYnJlYWs7CisKKwkJY2Fz ZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKwkJCWVsb2coREVCVUcxLCAiYXBwbGllZCAldSBjaGFu Z2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsiLAorCQkJCSBwYXJhbGxlbF9zdHJlYW1fbmNoYW5n ZXMpOworCisJCQkvKgorCQkJICogQnkgdGhlIHRpbWUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlz IHByb2Nlc3NpbmcgdGhlIGNoYW5nZXMgaW4KKwkJCSAqIHRoZSBjdXJyZW50IHN0cmVhbWluZyBi bG9jaywgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgbWF5IGhhdmUKKwkJCSAqIHNlbnQgbXVsdGlw bGUgc3RyZWFtaW5nIGJsb2Nrcy4gVGhpcyBjYW4gbGVhZCB0byBwYXJhbGxlbCBhcHBseQorCQkJ ICogd29ya2VyIHN0YXJ0IHdhaXRpbmcgZXZlbiB3aGVuIHRoZXJlIGFyZSBtb3JlIGNodW5rIG9m IHN0cmVhbXMKKwkJCSAqIGluIHRoZSBxdWV1ZS4gU28sIHRyeSB0byBsb2NrIG9ubHkgaWYgdGhl cmUgaXMgbm8gbWVzc2FnZSBsZWZ0CisJCQkgKiBpbiB0aGUgcXVldWUuIFNlZSBMb2NraW5nIENv bnNpZGVyYXRpb25zIGF0b3AKKwkJCSAqIGFwcGx5cGFyYWxsZWx3b3JrZXIuYy4KKwkJCSAqCisJ CQkgKiBOb3RlIHRoYXQgaGVyZSB3ZSBoYXZlIGEgcmFjZSBjb25kaXRpb24gd2hlcmUgd2UgY2Fu IHN0YXJ0CisJCQkgKiB3YWl0aW5nIGV2ZW4gd2hlbiB0aGVyZSBhcmUgcGVuZGluZyBzdHJlYW1p bmcgY2h1bmtzLiBUaGlzIGNhbgorCQkJICogaGFwcGVuIGlmIHRoZSBsZWFkZXIgc2VuZHMgYW5v dGhlciBzdHJlYW1pbmcgYmxvY2sgYW5kIGFjcXVpcmVzCisJCQkgKiB0aGUgc3RyZWFtIGxvY2sg YWdhaW4gYWZ0ZXIgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjaGVja3MKKwkJCSAqIHRoYXQg dGhlcmUgaXMgbm8gcGVuZGluZyBzdHJlYW1pbmcgYmxvY2sgYW5kIGJlZm9yZSBpdCBhY3R1YWxs eQorCQkJICogc3RhcnRzIHdhaXRpbmcgb24gYSBsb2NrLiBXZSBjYW4gaGFuZGxlIHRoaXMgY2Fz ZSBieSBub3QKKwkJCSAqIGFsbG93aW5nIHRoZSBsZWFkZXIgdG8gaW5jcmVtZW50IHRoZSBzdHJl YW0gYmxvY2sgY291bnQgZHVyaW5nCisJCQkgKiB0aGUgdGltZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgYWNxdWlyZXMgdGhlIGxvY2sgYnV0IGl0IGlzIG5vdAorCQkJICogY2xlYXIgd2hldGhlciB0 aGF0IGlzIHdvcnRoIHRoZSBjb21wbGV4aXR5LgorCQkJICoKKwkJCSAqIE5vdywgaWYgdGhpcyBt aXNzZWQgY2h1bmsgY29udGFpbnMgcm9sbGJhY2sgdG8gc2F2ZXBvaW50LCB0aGVuCisJCQkgKiB0 aGVyZSBpcyBhIHJpc2sgb2YgZGVhZGxvY2sgd2hpY2ggcHJvYmFibHkgc2hvdWxkbid0IGhhcHBl bgorCQkJICogYWZ0ZXIgcmVzdGFydC4KKwkJCSAqLworCQkJcGFfZGVjcl9hbmRfd2FpdF9zdHJl YW1fYmxvY2soKTsKKworCQkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFSU5UUkFO U0FDVElPTiwgTlVMTCk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNl KTsKKwkJCWJyZWFrOworCX0KKworCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAK LQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCXJlc2V0X2FwcGx5 X2Vycm9yX2NvbnRleHRfaW5mbygpOwogfQogCiAvKgotICogSGFuZGxlIFNUUkVBTSBhYm9ydCBt ZXNzYWdlLgorICogSGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHdoZW4gdGhlIHRyYW5zYWN0 aW9uIHdhcyBzZXJpYWxpemVkIHRvIGZpbGUuCiAgKi8KIHN0YXRpYyB2b2lkCi1hcHBseV9oYW5k bGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKK3N0cmVhbV9hYm9ydF9pbnRlcm5hbChUcmFu c2FjdGlvbklkIHhpZCwgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4 aWQ7Ci0JVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7Ci0KLQlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rp b24pCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9M QVRJT04pLAotCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhv dXQgU1RSRUFNIFNUT1AiKSkpOwotCi0JbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAm eGlkLCAmc3VieGlkKTsKLQogCS8qCiAJICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwg aXQncyBpbiBmYWN0IGFib3J0IG9mIHRvcGxldmVsIHhhY3QsIHNvCiAJICoganVzdCBkZWxldGUg dGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBpbmZvLgogCSAqLwogCWlmICh4aWQgPT0gc3VieGlk KQotCXsKLQkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdCh4aWQsIEludmFsaWRYTG9nUmVj UHRyKTsKIAkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwg eGlkKTsKLQl9CiAJZWxzZQogCXsKIAkJLyoKQEAgLTEzMTgsOCArMTYxMSw2IEBAIGFwcGx5X2hh bmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQlib29sCQlmb3VuZCA9IGZhbHNlOwog CQljaGFyCQlwYXRoW01BWFBHUEFUSF07CiAKLQkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFj dChzdWJ4aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKLQogCQlzdWJpZHggPSAtMTsKIAkJYmVnaW5f cmVwbGljYXRpb25fc3RlcCgpOwogCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCB4aWQpOwpAQCAtMTM0NCw3ICsxNjM1LDYgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCQljbGVhbnVwX3N1YnhhY3RfaW5mbygpOwogCQkJZW5k X3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCQkJ cmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiAJCQlyZXR1cm47CiAJCX0KIApAQCAt MTM2Nyw2ICsxNjU3LDExMCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8g cykKIAkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7CiAJfQorfQorCisvKgorICogSGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlLgorICovCitz dGF0aWMgdm9pZAorYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCit7CisJ VHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJTG9naWNhbFJlcFN0 cmVhbUFib3J0RGF0YSBhYm9ydF9kYXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5m bzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKwlib29sCQl0b3BsZXZlbF94YWN0 OworCisJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCQllcmVwb3J0KEVSUk9SLAorCQkJ CShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkgZXJybXNnX2ludGVy bmFsKCJTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKKworCS8q IFdlIHJlY2VpdmUgYWJvcnQgaW5mb3JtYXRpb24gb25seSB3aGVuIHdlIGNhbiBhcHBseSBpbiBw YXJhbGxlbC4gKi8KKwlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZhYm9ydF9kYXRh LAorCQkJCQkJCQkgTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSk7CisKKwl4aWQg PSBhYm9ydF9kYXRhLnhpZDsKKwlzdWJ4aWQgPSBhYm9ydF9kYXRhLnN1YnhpZDsKKwl0b3BsZXZl bF94YWN0ID0gKHhpZCA9PSBzdWJ4aWQpOworCisJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFj dChzdWJ4aWQsIGFib3J0X2RhdGEuYWJvcnRfbHNuKTsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90 cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oeGlkLCAmd2luZm8pOworCisJc3dpdGNoIChhcHBseV9h Y3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisKKwkJCS8qCisJCQkg KiBXZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHRoZSB0cmFuc2FjdGlvbiBo YXMgYmVlbgorCQkJICogc2VyaWFsaXplZCB0byBmaWxlLgorCQkJICovCisJCQlzdHJlYW1fYWJv cnRfaW50ZXJuYWwoeGlkLCBzdWJ4aWQpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFE RVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBV bmxvY2sgdGhlIHNoYXJlZCBvYmplY3QgbG9jayBzbyB0aGF0IHBhcmFsbGVsIGFwcGx5IHdvcmtl ciBjYW4KKwkJCSAqIGNvbnRpbnVlIHRvIHJlY2VpdmUgYW5kIGFwcGx5IGNoYW5nZXMuCisJCQkg Ki8KKwkJCXBhX3VubG9ja19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJ LyoKKwkJCSAqIEZvciB0aGUgY2FzZSBvZiBhYm9ydGluZyB0aGUgc3VidHJhbnNhY3Rpb24sIHdl IGluY3JlbWVudCB0aGUKKwkJCSAqIG51bWJlciBvZiBzdHJlYW1pbmcgYmxvY2tzIGFuZCB0YWtl IHRoZSBsb2NrIGFnYWluIGJlZm9yZQorCQkJICogc2VuZGluZyB0aGUgU1RSRUFNX0FCT1JUIHRv IGVuc3VyZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseQorCQkJICogd29ya2VyIHdpbGwgd2FpdCBv biB0aGUgbG9jayBmb3IgdGhlIG5leHQgc2V0IG9mIGNoYW5nZXMgYWZ0ZXIKKwkJCSAqIHByb2Nl c3NpbmcgdGhlIFNUUkVBTV9BQk9SVCBtZXNzYWdlIGlmIGl0IGlzIG5vdCBhbHJlYWR5IHdhaXRp bmcKKwkJCSAqIGZvciBTVFJFQU1fU1RPUCBtZXNzYWdlLgorCQkJICoKKwkJCSAqIEl0IGlzIGlt cG9ydGFudCB0byBwZXJmb3JtIHRoaXMgbG9ja2luZyBiZWZvcmUgc2VuZGluZyB0aGUKKwkJCSAq IFNUUkVBTV9BQk9SVCBtZXNzYWdlIHNvIHRoYXQgdGhlIGxlYWRlciBjYW4gaG9sZCB0aGUgbG9j ayBmaXJzdAorCQkJICogYW5kIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCB3YWl0IGZv ciB0aGUgbGVhZGVyIHRvCisJCQkgKiByZWxlYXNlIHRoZSBsb2NrLiBUaGlzIGlzIHRoZSBzYW1l IGFzIHdoYXQgd2UgZG8gaW4KKwkJCSAqIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcC4gU2VlIExv Y2tpbmcgQ29uc2lkZXJhdGlvbnMgYXRvcAorCQkJICogYXBwbHlwYXJhbGxlbHdvcmtlci5jLgor CQkJICovCisJCQlpZiAoIXRvcGxldmVsX3hhY3QpCisJCQkJcGdfYXRvbWljX2FkZF9mZXRjaF91 MzIoJndpbmZvLT5zaGFyZWQtPnBlbmRpbmdfc3RyZWFtX2NvdW50LCAxKTsKKworCQkJLyogU2Vu ZCBTVFJFQU0gQUJPUlQgbWVzc2FnZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLwor CQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQkvKgorCQkJICog VW5saWtlIFNUUkVBTV9DT01NSVQgYW5kIFNUUkVBTV9QUkVQQVJFLCB3ZSBkb24ndCB3YWl0IGZv ciB0aGUKKwkJCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0byBmaW5pc2ggYXMgdGhhdCBpcyBu b3QgcmVxdWlyZWQgdG8KKwkJCSAqIG1haW50YWluIHRoZSBjb21taXQgb3JkZXIgYW5kIHdvbid0 IGhhdmUgdGhlIHJpc2sgb2YgZmFpbHVyZXMKKwkJCSAqIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBl bmRlbmNpZXMgYW5kIGRlYWRsb2Nrcy4KKwkJCSAqLworCQkJaWYgKHRvcGxldmVsX3hhY3QpCisJ CQkJKHZvaWQpIHBhX2ZyZWVfd29ya2VyKHdpbmZvKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJB TlNfUEFSQUxMRUxfQVBQTFk6CisJCQlwYV9zdHJlYW1fYWJvcnQoJmFib3J0X2RhdGEpOworCisJ CQkvKgorCQkJICogV2UgbmVlZCB0byB3YWl0IGFmdGVyIHByb2Nlc3Npbmcgcm9sbGJhY2sgdG8g c2F2ZXBvaW50IGZvciB0aGUKKwkJCSAqIG5leHQgc2V0IG9mIGNoYW5nZXMuCisJCQkgKgorCQkJ ICogV2UgaGF2ZSBhIHJhY2UgY29uZGl0aW9uIGhlcmUgd2hlbiB3ZSBjYW4gc3RhcnQgd2FpdGlu ZyBoZXJlCisJCQkgKiB3aGVuIHRoZXJlIGFyZSBtb3JlIGNodW5rIG9mIHN0cmVhbXMgaW4gdGhl IHF1ZXVlLiBTZWUKKwkJCSAqIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcC4KKwkJCSAqLworCQkJ aWYgKCF0b3BsZXZlbF94YWN0KQorCQkJCXBhX2RlY3JfYW5kX3dhaXRfc3RyZWFtX2Jsb2NrKCk7 CisKKwkJCWVsb2coREVCVUcxLCAiZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNIEFCT1JU IGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOwor CQkJYnJlYWs7CisJfQogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CkBA IC0xNDk4LDYgKzE4OTIsOCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZv IHMpCiB7CiAJVHJhbnNhY3Rpb25JZCB4aWQ7CiAJTG9naWNhbFJlcENvbW1pdERhdGEgY29tbWl0 X2RhdGE7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rp b24gYXBwbHlfYWN0aW9uOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVw b3J0KEVSUk9SLApAQCAtMTUwNywxNCArMTkwMyw1MSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Nv bW1pdChTdHJpbmdJbmZvIHMpCiAJeGlkID0gbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQo cywgJmNvbW1pdF9kYXRhKTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgY29t bWl0X2RhdGEuY29tbWl0X2xzbik7CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVkIGNvbW1pdCBm b3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCB4aWQpOworCWFwcGx5X2FjdGlvbiA9IGdldF90 cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oeGlkLCAmd2luZm8pOworCisJc3dpdGNoIChhcHBseV9h Y3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKLQlhcHBseV9zcG9v bGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJCQkvKgorCQkJICog VGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQgdG8gZmlsZSwgc28gcmVwbGF5IGFs bCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAqLworCQkJYXBwbHlfc3Bvb2xl ZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOwogCi0JYXBwbHlfaGFuZGxl X2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9p bnRlcm5hbCgmY29tbWl0X2RhdGEpOworCisJCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2Vy aWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCQlzdHJlYW1fY2xlYW51cF9m aWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQkJYnJlYWs7CisKKwkJY2Fz ZSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJ CS8qIFNlbmQgU1RSRUFNIENPTU1JVCBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuICovCisJCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCS8q IEZpbmlzaCBwcm9jZXNzaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uICovCisJCQlwYV94 YWN0X2ZpbmlzaCh3aW5mbywgY29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQlicmVhazsKKworCQlj YXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5h bCgmY29tbWl0X2RhdGEpOworCisJCQlNeVBhcmFsbGVsU2hhcmVkLT5sYXN0X2NvbW1pdF9lbmQg PSBYYWN0TGFzdENvbW1pdEVuZDsKKworCQkJcGFfc2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNo YXJlZCwgUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQpOworCQkJcGFfdW5sb2NrX3RyYW5zYWN0aW9u KHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGgg c2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8gKi8KLQlzdHJlYW1fY2xlYW51cF9m aWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCQkJcGFfcmVzZXRfc3VidHJh bnMoKTsKKworCQkJZWxvZyhERUJVRzEsICJmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0g Q09NTUlUIGNvbW1hbmQiKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFs c2UpOworCQkJYnJlYWs7CisJfQogCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJl aW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVz KGNvbW1pdF9kYXRhLmVuZF9sc24pOwpAQCAtMTU1OCw5ICsxOTkxLDE2IEBAIGFwcGx5X2hhbmRs ZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKQogCQly ZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IGNvbW1pdF9kYXRhLT5jb21taXR0 aW1lOwogCiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCWlmIChJc1RyYW5zYWN0 aW9uQmxvY2soKSkKKwkJeworCQkJRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJfQorCiAJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxz ZSk7CiAKLQkJc3RvcmVfZmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEtPmVuZF9sc24pOworCQlz dG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0YS0+ZW5kX2xzbiwgWGFjdExhc3RDb21taXRF bmQpOwogCX0KIAllbHNlCiAJewpAQCAtMjUxMSw3ICsyOTUxLDcgQEAgYXBwbHlfaGFuZGxlX3Ry dW5jYXRlKFN0cmluZ0luZm8gcykKIC8qCiAgKiBMb2dpY2FsIHJlcGxpY2F0aW9uIHByb3RvY29s IG1lc3NhZ2UgZGlzcGF0Y2hlci4KICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Rpc3Bh dGNoKFN0cmluZ0luZm8gcykKIHsKIAlMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24gPSBwcV9nZXRt c2dieXRlKHMpOwpAQCAtMjY3NSwxNyArMzExNSwyNCBAQCBnZXRfZmx1c2hfcG9zaXRpb24oWExv Z1JlY1B0ciAqd3JpdGUsIFhMb2dSZWNQdHIgKmZsdXNoLAogLyoKICAqIFN0b3JlIGN1cnJlbnQg cmVtb3RlL2xvY2FsIGxzbiBwYWlyIGluIHRoZSB0cmFja2luZyBsaXN0LgogICovCi1zdGF0aWMg dm9pZAotc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuKQordm9pZAor c3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuLCBYTG9nUmVjUHRyIGxv Y2FsX2xzbikKIHsKIAlGbHVzaFBvc2l0aW9uICpmbHVzaHBvczsKIAorCS8qCisJICogU2tpcCBm b3IgcGFyYWxsZWwgYXBwbHkgd29ya2VycywgYmVjYXVzZSB0aGUgbHNuX21hcHBpbmcgaXMgbWFp bnRhaW5lZAorCSAqIGJ5IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLgorCSAqLworCWlmIChhbV9w YXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuOworCiAJLyogTmVlZCB0byBkbyB0aGlz IGluIHBlcm1hbmVudCBjb250ZXh0ICovCiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29u dGV4dCk7CiAKIAkvKiBUcmFjayBjb21taXQgbHNuICAqLwogCWZsdXNocG9zID0gKEZsdXNoUG9z aXRpb24gKikgcGFsbG9jKHNpemVvZihGbHVzaFBvc2l0aW9uKSk7Ci0JZmx1c2hwb3MtPmxvY2Fs X2VuZCA9IFhhY3RMYXN0Q29tbWl0RW5kOworCWZsdXNocG9zLT5sb2NhbF9lbmQgPSBsb2NhbF9s c247CiAJZmx1c2hwb3MtPnJlbW90ZV9lbmQgPSByZW1vdGVfbHNuOwogCiAJZGxpc3RfcHVzaF90 YWlsKCZsc25fbWFwcGluZywgJmZsdXNocG9zLT5ub2RlKTsKQEAgLTI3NDQsNiArMzE5MSw3IEBA IExvZ2ljYWxSZXBBcHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0X3JlY2VpdmVkKQogCWVycmNhbGxi YWNrLmNhbGxiYWNrID0gYXBwbHlfZXJyb3JfY2FsbGJhY2s7CiAJZXJyY2FsbGJhY2sucHJldmlv dXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwogCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2Fs bGJhY2s7CisJYXBwbHlfZXJyb3JfY29udGV4dF9zdGFjayA9IGVycm9yX2NvbnRleHRfc3RhY2s7 CiAKIAkvKiBUaGlzIG91dGVyIGxvb3AgaXRlcmF0ZXMgb25jZSBwZXIgd2FpdC4gKi8KIAlmb3Ig KDs7KQpAQCAtMjk1OCw2ICszNDA2LDcgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRy IGxhc3RfcmVjZWl2ZWQpCiAKIAkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8KIAll cnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7CisJYXBwbHlfZXJyb3Jf Y29udGV4dF9zdGFjayA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAKIAkvKiBBbGwgZG9uZSAqLwog CXdhbHJjdl9lbmRzdHJlYW1pbmcoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgJnRsaSk7CkBAIC0z MDU2LDkgKzM1MDUsMzEgQEAgc2VuZF9mZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3MsIGJvb2wg Zm9yY2UsIGJvb2wgcmVxdWVzdFJlcGx5KQogfQogCiAvKgotICogUmVyZWFkIHN1YnNjcmlwdGlv biBpbmZvIGlmIG5lZWRlZC4gTW9zdCBjaGFuZ2VzIHdpbGwgYmUgZXhpdC4KKyAqIEV4aXQgcm91 dGluZSBmb3IgYXBwbHkgd29ya2VycyBkdWUgdG8gc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBjaGFu Z2VzLgogICovCiBzdGF0aWMgdm9pZAorYXBwbHlfd29ya2VyX2V4aXQodm9pZCkKK3sKKwlpZiAo YW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJeworCQkvKgorCQkgKiBEb24ndCBzdG9wIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgYXMgdGhlIGxlYWRlciB3aWxsIGRldGVjdCB0aGUKKwkJ ICogc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBjaGFuZ2UgYW5kIHJlc3RhcnQgbG9naWNhbCByZXBs aWNhdGlvbiBsYXRlcgorCQkgKiBhbnl3YXkuIFRoaXMgYWxzbyBwcmV2ZW50cyB0aGUgbGVhZGVy IGZyb20gcmVwb3J0aW5nIGVycm9ycyB3aGVuCisJCSAqIHRyeWluZyB0byBjb21tdW5pY2F0ZSB3 aXRoIGEgc3RvcHBlZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHdoaWNoCisJCSAqIHdvdWxkIGFj Y2lkZW50YWxseSBkaXNhYmxlIHN1YnNjcmlwdGlvbnMgaWYgZGlzYWJsZV9vbl9lcnJvciB3YXMK KwkJICogc2V0LgorCQkgKi8KKwkJcmV0dXJuOworCX0KKworCXByb2NfZXhpdCgwKTsKK30KKwor LyoKKyAqIFJlcmVhZCBzdWJzY3JpcHRpb24gaW5mbyBpZiBuZWVkZWQuIE1vc3QgY2hhbmdlcyB3 aWxsIGJlIGV4aXQuCisgKi8KK3ZvaWQKIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkK IHsKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKQEAgLTMwODgsOSArMzU1OSw5IEBAIG1heWJlX3Jl cmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAlpZiAoIW5ld3N1YikKIAl7CiAJCWVyZXBvcnQoTE9H LAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJz Y3JpcHRpb24gXCIlc1wiIHdpbGwgIgotCQkJCQkJInN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0 aW9uIHdhcyByZW1vdmVkIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkvKiB0 cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdv cmtlciAqLworCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3Rv cCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQiLAorCQkJCQkJZ2V0X3dvcmtl cl9uYW1lKCksIE15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCiAJCXByb2NfZXhpdCgwKTsKIAl9 CkBAIC0zMDk5LDExICszNTcwLDExIEBAIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkK IAlpZiAoIW5ld3N1Yi0+ZW5hYmxlZCkKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2co ImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wi IHdpbGwgIgotCQkJCQkJInN0b3AgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxl ZCIsCi0JCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJLyogdHJhbnNsYXRvcjogZmly c3QgJXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQko ZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVzZSB0aGUg c3Vic2NyaXB0aW9uIHdhcyBkaXNhYmxlZCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlT dWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKLQkJcHJvY19leGl0KDApOworCQlhcHBseV93b3JrZXJf ZXhpdCgpOwogCX0KIAogCS8qICFzbG90bmFtZSBzaG91bGQgbmV2ZXIgaGFwcGVuIHdoZW4gZW5h YmxlZCBpcyB0cnVlLiAqLwpAQCAtMzExNCw3ICszNTg1LDEwIEBAIG1heWJlX3JlcmVhZF9zdWJz Y3JpcHRpb24odm9pZCkKIAogCS8qCiAJICogRXhpdCBpZiBhbnkgcGFyYW1ldGVyIHRoYXQgYWZm ZWN0cyB0aGUgcmVtb3RlIGNvbm5lY3Rpb24gd2FzIGNoYW5nZWQuCi0JICogVGhlIGxhdW5jaGVy IHdpbGwgc3RhcnQgYSBuZXcgd29ya2VyLgorCSAqIFRoZSBsYXVuY2hlciB3aWxsIHN0YXJ0IGEg bmV3IHdvcmtlciBidXQgbm90ZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciB3 b24ndCByZXN0YXJ0IGlmIHRoZSBzdHJlYW1pbmcgb3B0aW9uJ3MgdmFsdWUgaXMgY2hhbmdlZCBm cm9tCisJICogJ3BhcmFsbGVsJyB0byBhbnkgb3RoZXIgdmFsdWUgb3IgdGhlIHNlcnZlciBkZWNp ZGVzIG5vdCB0byBzdHJlYW0gdGhlCisJICogaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb24uCiAJICov CiAJaWYgKHN0cmNtcChuZXdzdWItPmNvbm5pbmZvLCBNeVN1YnNjcmlwdGlvbi0+Y29ubmluZm8p ICE9IDAgfHwKIAkJc3RyY21wKG5ld3N1Yi0+bmFtZSwgTXlTdWJzY3JpcHRpb24tPm5hbWUpICE9 IDAgfHwKQEAgLTMxMjUsMTEgKzM1OTksMTcgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2 b2lkKQogCQluZXdzdWItPm93bmVyICE9IE15U3Vic2NyaXB0aW9uLT5vd25lciB8fAogCQkhZXF1 YWwobmV3c3ViLT5wdWJsaWNhdGlvbnMsIE15U3Vic2NyaXB0aW9uLT5wdWJsaWNhdGlvbnMpKQog CXsKLQkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBs eSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCByZXN0YXJ0IGJlY2F1c2Ugb2Yg YSBwYXJhbWV0ZXIgY2hhbmdlIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQlp ZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCQllcmVwb3J0KExPRywKKwkJCQkJKGVy cm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNj cmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwK KwkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJZWxzZQorCQkJZXJlcG9ydChMT0cs CisJCQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxp Y2F0aW9uIHdvcmtlciAqLworCQkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNc IiB3aWxsIHJlc3RhcnQgYmVjYXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAorCQkJCQkJCWdl dF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAotCQlwcm9jX2V4aXQo MCk7CisJCWFwcGx5X3dvcmtlcl9leGl0KCk7CiAJfQogCiAJLyogQ2hlY2sgZm9yIG90aGVyIGNo YW5nZXMgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuIHRvby4gKi8KQEAgLTM2MTMsMzcgKzQwOTMs MTYgQEAgc3RhcnRfYXBwbHkoWExvZ1JlY1B0ciBvcmlnaW5fc3RhcnRwb3MpCiAJUEdfRU5EX1RS WSgpOwogfQogCi0vKiBMb2dpY2FsIFJlcGxpY2F0aW9uIEFwcGx5IHdvcmtlciBlbnRyeSBwb2lu dCAqLworLyoKKyAqIENvbW1vbiBpbml0aWFsaXphdGlvbiBmb3IgbGVhZGVyIGFwcGx5IHdvcmtl ciBhbmQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIEluaXRpYWxpemUgdGhlIGRhdGFi YXNlIGNvbm5lY3Rpb24sIGluLW1lbW9yeSBzdWJzY3JpcHRpb24gYW5kIG5lY2Vzc2FyeQorICog Y29uZmlnIG9wdGlvbnMuCisgKi8KIHZvaWQKLUFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2Fy ZykKK0luaXRpYWxpemVBcHBseVdvcmtlcih2b2lkKQogewotCWludAkJCXdvcmtlcl9zbG90ID0g RGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CiAJTWVtb3J5Q29udGV4dCBvbGRjdHg7Ci0JY2hhcgkJ b3JpZ2lubmFtZVtOQU1FREFUQUxFTl07Ci0JWExvZ1JlY1B0cglvcmlnaW5fc3RhcnRwb3MgPSBJ bnZhbGlkWExvZ1JlY1B0cjsKLQljaGFyCSAgICpteXNsb3RuYW1lID0gTlVMTDsKLQlXYWxSY3ZT dHJlYW1PcHRpb25zIG9wdGlvbnM7Ci0JaW50CQkJc2VydmVyX3ZlcnNpb247Ci0KLQkvKiBBdHRh Y2ggdG8gc2xvdCAqLwotCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7Ci0K LQkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KLQlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhh bmRsZXJGb3JDb25maWdSZWxvYWQpOwotCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7Ci0JQmFja2dy b3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7Ci0KLQkvKgotCSAqIFdlIGRvbid0IGN1cnJlbnRs eSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEgd2FscmVjZWl2ZXIgcHJvY2VzcywgYnV0Ci0J ICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0ZUF1eFByb2Nlc3NSZXNvdXJjZU93bmVy IGhlcmUuCi0JICovCi0KLQkvKiBJbml0aWFsaXNlIHN0YXRzIHRvIGEgc2FuaXNoIHZhbHVlICov Ci0JTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdvcmtl ci0+bGFzdF9yZWN2X3RpbWUgPQotCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSBH ZXRDdXJyZW50VGltZXN0YW1wKCk7Ci0KLQkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBmdW5j dGlvbnMgKi8KLQlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CiAKIAkvKiBS dW4gYXMgcmVwbGljYSBzZXNzaW9uIHJlcGxpY2F0aW9uIHJvbGUuICovCiAJU2V0Q29uZmlnT3B0 aW9uKCJzZXNzaW9uX3JlcGxpY2F0aW9uX3JvbGUiLCAicmVwbGljYSIsCkBAIC0zNjcxLDkgKzQx MzAsMTAgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCWlmICghTXlTdWJzY3Jp cHRpb24pCiAJewogCQllcmVwb3J0KExPRywKLQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0 aW9uIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1IHdpbGwgbm90ICIKLQkJCQkJCSJz dGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQgZHVyaW5nIHN0YXJ0dXAi LAotCQkJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCkpKTsKKwkJLyogdHJhbnNsYXRvcjog JXMgaXMgdGhlIG5hbWUgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgKi8KKwkJCQkoZXJy bXNnKCIlcyBmb3Igc3Vic2NyaXB0aW9uICV1IHdpbGwgbm90IHN0YXJ0IGJlY2F1c2UgdGhlIHN1 YnNjcmlwdGlvbiB3YXMgcmVtb3ZlZCBkdXJpbmcgc3RhcnR1cCIsCisJCQkJCQlnZXRfd29ya2Vy X25hbWUoKSwgTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCkpKTsKKwogCQlwcm9jX2V4aXQoMCk7 CiAJfQogCkBAIC0zNjgzLDExICs0MTQzLDExIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWlu X2FyZykKIAlpZiAoIU15U3Vic2NyaXB0aW9uLT5lbmFibGVkKQogCXsKIAkJZXJlcG9ydChMT0cs Ci0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNj cmlwdGlvbiBcIiVzXCIgd2lsbCBub3QgIgotCQkJCQkJInN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNj cmlwdGlvbiB3YXMgZGlzYWJsZWQgZHVyaW5nIHN0YXJ0dXAiLAotCQkJCQkJTXlTdWJzY3JpcHRp b24tPm5hbWUpKSk7CisJCS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIGxv Z2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlw dGlvbiBcIiVzXCIgd2lsbCBub3Qgc3RhcnQgYmVjYXVzZSB0aGUgc3Vic2NyaXB0aW9uIHdhcyBk aXNhYmxlZCBkdXJpbmcgc3RhcnR1cCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJz Y3JpcHRpb24tPm5hbWUpKSk7CiAKLQkJcHJvY19leGl0KDApOworCQlhcHBseV93b3JrZXJfZXhp dCgpOwogCX0KIAogCS8qIFNldHVwIHN5bmNocm9ub3VzIGNvbW1pdCBhY2NvcmRpbmcgdG8gdGhl IHVzZXIncyB3aXNoZXMgKi8KQEAgLTM3MDIsMTMgKzQxNjIsNDkgQEAgQXBwbHlXb3JrZXJNYWlu KERhdHVtIG1haW5fYXJnKQogCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCiAJCWVyZXBvcnQo TE9HLAogCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gdGFibGUgc3luY2hyb25pemF0 aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiwgdGFibGUgXCIlc1wiIGhhcyBzdGFy dGVkIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lLCBnZXRfcmVsX25hbWUoTXlMb2dpY2Fs UmVwV29ya2VyLT5yZWxpZCkpKSk7CisJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJ CWdldF9yZWxfbmFtZShNeUxvZ2ljYWxSZXBXb3JrZXItPnJlbGlkKSkpKTsKIAllbHNlCiAJCWVy ZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2Vy IGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKLQkJCQkJCU15U3Vic2NyaXB0 aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBs b2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3Jp cHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1 YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworfQor CisvKiBMb2dpY2FsIFJlcGxpY2F0aW9uIEFwcGx5IHdvcmtlciBlbnRyeSBwb2ludCAqLwordm9p ZAorQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQoreworCWludAkJCXdvcmtlcl9zbG90 ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxF Tl07CisJWExvZ1JlY1B0cglvcmlnaW5fc3RhcnRwb3MgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlj aGFyCSAgICpteXNsb3RuYW1lID0gTlVMTDsKKwlXYWxSY3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7 CisJaW50CQkJc2VydmVyX3ZlcnNpb247CisKKwkvKiBBdHRhY2ggdG8gc2xvdCAqLworCWxvZ2lj YWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7CisKKwkvKiBTZXR1cCBzaWduYWwgaGFu ZGxpbmcgKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQp OworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWdu YWxzKCk7CisKKwkvKgorCSAqIFdlIGRvbid0IGN1cnJlbnRseSBuZWVkIGFueSBSZXNvdXJjZU93 bmVyIGluIGEgd2FscmVjZWl2ZXIgcHJvY2VzcywgYnV0CisJICogaWYgd2UgZGlkLCB3ZSBjb3Vs ZCBjYWxsIENyZWF0ZUF1eFByb2Nlc3NSZXNvdXJjZU93bmVyIGhlcmUuCisJICovCisKKwkvKiBJ bml0aWFsaXNlIHN0YXRzIHRvIGEgc2FuaXNoIHZhbHVlICovCisJTXlMb2dpY2FsUmVwV29ya2Vy LT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQor CQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7 CisKKwkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8KKwlsb2FkX2ZpbGUo ImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CisKKwlJbml0aWFsaXplQXBwbHlXb3JrZXIoKTsK IAogCS8qIENvbm5lY3QgdG8gdGhlIG9yaWdpbiBhbmQgc3RhcnQgdGhlIHJlcGxpY2F0aW9uLiAq LwogCWVsb2coREVCVUcxLCAiY29ubmVjdGluZyB0byBwdWJsaXNoZXIgdXNpbmcgY29ubmVjdGlv biBzdHJpbmcgXCIlc1wiIiwKQEAgLTM3MTgsMjAgKzQyMTQsMTUgQEAgQXBwbHlXb3JrZXJNYWlu KERhdHVtIG1haW5fYXJnKQogCXsKIAkJc3RhcnRfdGFibGVfc3luYygmb3JpZ2luX3N0YXJ0cG9z LCAmbXlzbG90bmFtZSk7CiAKLQkJLyoKLQkJICogQWxsb2NhdGUgdGhlIG9yaWdpbiBuYW1lIGlu IGxvbmctbGl2ZWQgY29udGV4dCBmb3IgZXJyb3IgY29udGV4dAotCQkgKiBtZXNzYWdlLgotCQkg Ki8KIAkJUmVwbGljYXRpb25PcmlnaW5OYW1lRm9yTG9naWNhbFJlcChNeVN1YnNjcmlwdGlvbi0+ b2lkLAogCQkJCQkJCQkJCSAgIE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQsCiAJCQkJCQkJCQkJ ICAgb3JpZ2lubmFtZSwKIAkJCQkJCQkJCQkgICBzaXplb2Yob3JpZ2lubmFtZSkpOwotCQlhcHBs eV9lcnJvcl9jYWxsYmFja19hcmcub3JpZ2luX25hbWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFw cGx5Q29udGV4dCwKLQkJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKKwkJc2V0X2FwcGx5 X2Vycm9yX2NvbnRleHRfb3JpZ2luKG9yaWdpbm5hbWUpOwogCX0KIAllbHNlCiAJewotCQkvKiBU aGlzIGlzIG1haW4gYXBwbHkgd29ya2VyICovCisJCS8qIFRoaXMgaXMgdGhlIGxlYWRlciBhcHBs eSB3b3JrZXIgKi8KIAkJUmVwT3JpZ2luSWQgb3JpZ2luaWQ7CiAJCVRpbWVMaW5lSUQJc3RhcnRw b2ludFRMSTsKIAkJY2hhcgkgICAqZXJyOwpAQCAtMzc1NSw3ICs0MjQ2LDcgQEAgQXBwbHlXb3Jr ZXJNYWluKERhdHVtIG1haW5fYXJnKQogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShv cmlnaW5uYW1lLCB0cnVlKTsKIAkJaWYgKCFPaWRJc1ZhbGlkKG9yaWdpbmlkKSkKIAkJCW9yaWdp bmlkID0gcmVwbG9yaWdpbl9jcmVhdGUob3JpZ2lubmFtZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lv bl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwg MCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAkJb3JpZ2luX3N0 YXJ0cG9zID0gcmVwbG9yaWdpbl9zZXNzaW9uX2dldF9wcm9ncmVzcyhmYWxzZSk7CiAJCUNvbW1p dFRyYW5zYWN0aW9uQ29tbWFuZCgpOwpAQCAtMzc3MywxMiArNDI2NCw3IEBAIEFwcGx5V29ya2Vy TWFpbihEYXR1bSBtYWluX2FyZykKIAkJICovCiAJCSh2b2lkKSB3YWxyY3ZfaWRlbnRpZnlfc3lz dGVtKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4sICZzdGFydHBvaW50VExJKTsKIAotCQkvKgotCQkg KiBBbGxvY2F0ZSB0aGUgb3JpZ2luIG5hbWUgaW4gbG9uZy1saXZlZCBjb250ZXh0IGZvciBlcnJv ciBjb250ZXh0Ci0JCSAqIG1lc3NhZ2UuCi0JCSAqLwotCQlhcHBseV9lcnJvcl9jYWxsYmFja19h cmcub3JpZ2luX25hbWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5Q29udGV4dCwKLQkJCQkJ CQkJCQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKKwkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3Jp Z2luKG9yaWdpbm5hbWUpOwogCX0KIAogCS8qCkBAIC0zNzk2LDEzICs0MjgyLDM2IEBAIEFwcGx5 V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAogCXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3Nl cnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOwogCW9wdGlvbnMucHJvdG8ubG9n aWNhbC5wcm90b192ZXJzaW9uID0KKwkJc2VydmVyX3ZlcnNpb24gPj0gMTYwMDAwID8gTE9HSUNB TFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lv biA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDoKIAkJ c2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lP Tl9OVU0gOgogCQlMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVNOwogCiAJb3B0aW9ucy5wcm90 by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVzID0gTXlTdWJzY3JpcHRpb24tPnB1YmxpY2F0aW9u czsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwuYmluYXJ5ID0gTXlTdWJzY3JpcHRpb24tPmJpbmFy eTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gTXlTdWJzY3JpcHRpb24tPnN0 cmVhbTsKKworCS8qCisJICogQXNzaWduIHRoZSBhcHByb3ByaWF0ZSBvcHRpb24gdmFsdWUgZm9y IHN0cmVhbWluZyBvcHRpb24gYWNjb3JkaW5nIHRvCisJICogdGhlICdzdHJlYW1pbmcnIG1vZGUg YW5kIHRoZSBwdWJsaXNoZXIncyBhYmlsaXR5IHRvIHN1cHBvcnQgdGhhdCBtb2RlLgorCSAqLwor CWlmIChzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAwMDAgJiYKKwkJTXlTdWJzY3JpcHRpb24tPnN0cmVh bSA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCkKKwl7CisJCW9wdGlvbnMucHJvdG8ubG9n aWNhbC5zdHJlYW1pbmdfc3RyID0gInBhcmFsbGVsIjsKKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5w YXJhbGxlbF9hcHBseSA9IHRydWU7CisJfQorCWVsc2UgaWYgKHNlcnZlcl92ZXJzaW9uID49IDE0 MDAwMCAmJgorCQkJIE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gTE9HSUNBTFJFUF9TVFJFQU1f T0ZGKQorCXsKKwkJb3B0aW9ucy5wcm90by5sb2dpY2FsLnN0cmVhbWluZ19zdHIgPSAib24iOwor CQlNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2FwcGx5ID0gZmFsc2U7CisJfQorCWVsc2UK Kwl7CisJCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyID0gTlVMTDsKKwkJTXlM b2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOworCX0KKwogCW9wdGlvbnMu cHJvdG8ubG9naWNhbC50d29waGFzZSA9IGZhbHNlOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5v cmlnaW4gPSBwc3RyZHVwKE15U3Vic2NyaXB0aW9uLT5vcmlnaW4pOwogCkBAIC0zOTAwLDYgKzQ0 MDksMTUgQEAgSXNMb2dpY2FsV29ya2VyKHZvaWQpCiB9CiAKIC8qCisgKiBJcyBjdXJyZW50IHBy b2Nlc3MgYSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlcj8KKyAqLwor Ym9vbAorSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdvcmtlcih2b2lkKQoreworCXJldHVybiBJc0xv Z2ljYWxXb3JrZXIoKSAmJiBhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKTsKK30KKworLyoKICAq IFN0YXJ0IHNraXBwaW5nIGNoYW5nZXMgb2YgdGhlIHRyYW5zYWN0aW9uIGlmIHRoZSBnaXZlbiBM U04gbWF0Y2hlcyB0aGUKICAqIExTTiBzcGVjaWZpZWQgYnkgc3Vic2NyaXB0aW9uJ3Mgc2tpcGxz bi4KICAqLwpAQCAtMzk2MSw3ICs0NDc5LDcgQEAgY2xlYXJfc3Vic2NyaXB0aW9uX3NraXBfbHNu KFhMb2dSZWNQdHIgZmluaXNoX2xzbikKIAlYTG9nUmVjUHRyCW15c2tpcGxzbiA9IE15U3Vic2Ny aXB0aW9uLT5za2lwbHNuOwogCWJvb2wJCXN0YXJ0ZWRfdHggPSBmYWxzZTsKIAotCWlmIChsaWtl bHkoWExvZ1JlY1B0cklzSW52YWxpZChteXNraXBsc24pKSkKKwlpZiAobGlrZWx5KFhMb2dSZWNQ dHJJc0ludmFsaWQobXlza2lwbHNuKSkgfHwgYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCiAJ CXJldHVybjsKIAogCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCkBAIC00MDMzLDcgKzQ1NTEs NyBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQog fQogCiAvKiBFcnJvciBjYWxsYmFjayB0byBnaXZlIG1vcmUgY29udGV4dCBpbmZvIGFib3V0IHRo ZSBjaGFuZ2UgYmVpbmcgYXBwbGllZCAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9y X2NhbGxiYWNrKHZvaWQgKmFyZykKIHsKIAlBcHBseUVycm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9 ICZhcHBseV9lcnJvcl9jYWxsYmFja19hcmc7CkBAIC00MDYxLDIzICs0NTc5LDQ3IEBAIGFwcGx5 X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIAkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAog CQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CiAJfQotCWVsc2Ug aWYgKGVycmFyZy0+cmVtb3RlX2F0dG51bSA8IDApCi0JCWVycmNvbnRleHQoInByb2Nlc3Npbmcg cmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2Ug dHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4g dHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKLQkJCQkgICBlcnJhcmctPm9yaWdp bl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCks Ci0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAotCQkJCSAgIGVycmFyZy0+ cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCi0JCQkJ ICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOwogCWVsc2UKLQkJZXJyY29u dGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNc IiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0 aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1LCBmaW5pc2hlZCBh dCAlWC8lWCIsCi0JCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVw X21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1v dGVyZWwubnNwbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0J CQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRu dW1dLAotCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1Mo ZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJeworCQlpZiAoZXJyYXJnLT5yZW1vdGVfYXR0bnVtIDwg MCkKKwkJeworCQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkK KwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBv cmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0 YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVy cmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJh cmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAor CQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJn LT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90 ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5cGUg XCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5z YWN0aW9uICV1LCBmaW5pc2hlZCBhdCAlWC8lWCIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9u YW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwK KwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFy Zy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwK KwkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKKwkJfQorCQll bHNlCisJCXsKKwkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKGVycmFyZy0+ZmluaXNoX2xzbikp CisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24g b3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVwbGljYXRpb24g dGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1 IiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21l c3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90 ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAor CQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9h dHRudW1dLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJj b250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIl c1wiIGR1cmluZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVs YXRpb24gXCIlcy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVk IGF0ICVYLyVYIiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dp Y2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5y ZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5y ZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmct PnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAg TFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOworCQl9CisJfQogfQogCiAvKiBT ZXQgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24gb2YgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KQEAg LTQwOTcsMyArNDYzOSw0OCBAQCByZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCkK IAlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcucmVtb3RlX2F0dG51bSA9IC0xOwogCXNldF9hcHBs eV9lcnJvcl9jb250ZXh0X3hhY3QoSW52YWxpZFRyYW5zYWN0aW9uSWQsIEludmFsaWRYTG9nUmVj UHRyKTsKIH0KKworLyoKKyAqIEFsbG9jYXRlIHRoZSBvcmlnaW4gbmFtZSBpbiBsb25nLWxpdmVk IGNvbnRleHQgZm9yIGVycm9yIGNvbnRleHQgbWVzc2FnZS4KKyAqLwordm9pZAorc2V0X2FwcGx5 X2Vycm9yX2NvbnRleHRfb3JpZ2luKGNoYXIgKm9yaWdpbm5hbWUpCit7CisJYXBwbHlfZXJyb3Jf Y2FsbGJhY2tfYXJnLm9yaWdpbl9uYW1lID0gTWVtb3J5Q29udGV4dFN0cmR1cChBcHBseUNvbnRl eHQsCisJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKK30KKworLyoKKyAqIFJldHVybiB0 aGUgYWN0aW9uIHRvIHRha2UgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4gKndpbmZvIGlzIGFz c2lnbmVkIHRvCisgKiB0aGUgZGVzdGluYXRpb24gcGFyYWxsZWwgd29ya2VyIGluZm8gKGlmIHRo ZSBhY3Rpb24gaXMKKyAqIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMKSwgb3RoZXJ3aXNl ICp3aW5mbyBpcyBhc3NpZ25lZCBOVUxMLgorICovCitzdGF0aWMgVHJhbnNBcHBseUFjdGlvbgor Z2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKip3aW5mbykKK3sKKwkqd2luZm8gPSBOVUxMOworCisJaWYgKGFtX3Bh cmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJcmV0dXJuIFRSQU5TX1BBUkFMTEVMX0FQUExZ OworCX0KKwllbHNlIGlmIChpbl9yZW1vdGVfdHJhbnNhY3Rpb24pCisJeworCQlyZXR1cm4gVFJB TlNfTEVBREVSX0FQUExZOworCX0KKworCS8qCisJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3Np bmcgdGhpcyB0cmFuc2FjdGlvbiB1c2luZyBhIHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyLgor CSAqLworCSp3aW5mbyA9IHBhX2ZpbmRfd29ya2VyKHhpZCk7CisKKwlpZiAoKndpbmZvKQorCXsK KwkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOworCX0KKwllbHNlCisJewor CQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFUklBTElaRTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCBjYTQ2ZmJhLi40MGM0NGJiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKQEAgLTE4LDYgKzE4 LDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX3B1YmxpY2F0aW9uX3JlbC5oIgogI2luY2x1ZGUg ImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZGVmcmVtLmgi CisjaW5jbHVkZSAiY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oIgogI2luY2x1ZGUgImV4ZWN1 dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZm1nci5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2Vm dW5jcy5oIgpAQCAtMjkwLDcgKzI5MSw3IEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExpc3Qg Km9wdGlvbnMsIFBHT3V0cHV0RGF0YSAqZGF0YSkKIAlib29sCQlvcmlnaW5fb3B0aW9uX2dpdmVu ID0gZmFsc2U7CiAKIAlkYXRhLT5iaW5hcnkgPSBmYWxzZTsKLQlkYXRhLT5zdHJlYW1pbmcgPSBm YWxzZTsKKwlkYXRhLT5zdHJlYW1pbmcgPSBMT0dJQ0FMUkVQX1NUUkVBTV9PRkY7CiAJZGF0YS0+ bWVzc2FnZXMgPSBmYWxzZTsKIAlkYXRhLT50d29fcGhhc2UgPSBmYWxzZTsKIApAQCAtMzY5LDcg KzM3MCw3IEBAIHBhcnNlX291dHB1dF9wYXJhbWV0ZXJzKExpc3QgKm9wdGlvbnMsIFBHT3V0cHV0 RGF0YSAqZGF0YSkKIAkJCQkJCSBlcnJtc2coImNvbmZsaWN0aW5nIG9yIHJlZHVuZGFudCBvcHRp b25zIikpKTsKIAkJCXN0cmVhbWluZ19naXZlbiA9IHRydWU7CiAKLQkJCWRhdGEtPnN0cmVhbWlu ZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQkJZGF0YS0+c3RyZWFtaW5nID0gZGVmR2V0U3Ry ZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1l LCAidHdvX3BoYXNlIikgPT0gMCkKIAkJewpAQCAtNDYxLDEzICs0NjIsMjAgQEAgcGdvdXRwdXRf c3RhcnR1cChMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIE91dHB1dFBsdWdpbk9wdGlvbnMg Km9wdCwKIAkJICogd2Ugb25seSBhbGxvdyBpdCB3aXRoIHN1ZmZpY2llbnQgdmVyc2lvbiBvZiB0 aGUgcHJvdG9jb2wsIGFuZCB3aGVuCiAJCSAqIHRoZSBvdXRwdXQgcGx1Z2luIHN1cHBvcnRzIGl0 LgogCQkgKi8KLQkJaWYgKCFkYXRhLT5zdHJlYW1pbmcpCisJCWlmIChkYXRhLT5zdHJlYW1pbmcg PT0gTE9HSUNBTFJFUF9TVFJFQU1fT0ZGKQogCQkJY3R4LT5zdHJlYW1pbmcgPSBmYWxzZTsKLQkJ ZWxzZSBpZiAoZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFN X1ZFUlNJT05fTlVNKQorCQllbHNlIGlmIChkYXRhLT5zdHJlYW1pbmcgPT0gTE9HSUNBTFJFUF9T VFJFQU1fT04gJiYKKwkJCQkgZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiA8IExPR0lDQUxSRVBfUFJP VE9fU1RSRUFNX1ZFUlNJT05fTlVNKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUo RVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJCSBlcnJtc2coInJlcXVlc3Rl ZCBwcm90b192ZXJzaW9uPSVkIGRvZXMgbm90IHN1cHBvcnQgc3RyZWFtaW5nLCBuZWVkICVkIG9y IGhpZ2hlciIsCiAJCQkJCQkJZGF0YS0+cHJvdG9jb2xfdmVyc2lvbiwgTE9HSUNBTFJFUF9QUk9U T19TVFJFQU1fVkVSU0lPTl9OVU0pKSk7CisJCWVsc2UgaWYgKGRhdGEtPnN0cmVhbWluZyA9PSBM T0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCAmJgorCQkJCSBkYXRhLT5wcm90b2NvbF92ZXJzaW9u IDwgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0pCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVF KSwKKwkJCQkJIGVycm1zZygicmVxdWVzdGVkIHByb3RvX3ZlcnNpb249JWQgZG9lcyBub3Qgc3Vw cG9ydCBwYXJhbGxlbCBzdHJlYW1pbmcsIG5lZWQgJWQgb3IgaGlnaGVyIiwKKwkJCQkJCQlkYXRh LT5wcm90b2NvbF92ZXJzaW9uLCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJT SU9OX05VTSkpKTsKIAkJZWxzZSBpZiAoIWN0eC0+c3RyZWFtaW5nKQogCQkJZXJlcG9ydChFUlJP UiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCkBAIC0x ODQxLDYgKzE4NDksOCBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xzbikKIHsKIAlSZW9y ZGVyQnVmZmVyVFhOICp0b3B0eG47CisJUEdPdXRwdXREYXRhICpkYXRhID0gKFBHT3V0cHV0RGF0 YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlib29sCQl3cml0ZV9hYm9ydF9pbmZv ID0gKGRhdGEtPnN0cmVhbWluZyA9PSBMT0dJQ0FMUkVQX1NUUkVBTV9QQVJBTExFTCk7CiAKIAkv KgogCSAqIFRoZSBhYm9ydCBzaG91bGQgaGFwcGVuIG91dHNpZGUgc3RyZWFtaW5nIGJsb2NrLCBl dmVuIGZvciBzdHJlYW1lZApAQCAtMTg1NCw3ICsxODY0LDkgQEAgcGdvdXRwdXRfc3RyZWFtX2Fi b3J0KHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJQXNzZXJ0KHJidHhuX2lz X3N0cmVhbWVkKHRvcHR4bikpOwogCiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1 ZSk7Ci0JbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlk LCB0eG4tPnhpZCk7CisJbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRv cHR4bi0+eGlkLCB0eG4tPnhpZCwgYWJvcnRfbHNuLAorCQkJCQkJCQkgIHR4bi0+eGFjdF90aW1l LmFib3J0X3RpbWUsIHdyaXRlX2Fib3J0X2luZm8pOworCiAJT3V0cHV0UGx1Z2luV3JpdGUoY3R4 LCB0cnVlKTsKIAogCWNsZWFudXBfcmVsX3N5bmNfY2FjaGUodG9wdHhuLT54aWQsIGZhbHNlKTsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCA3NzY3NjU3Li43YzAwOWQ1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5j bHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRl ICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5j bHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9jb25kaXRp b25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgpAQCAtNjU3LDYgKzY1OCw5 IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChDaGVja1By b2NTaWduYWwoUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQpKQogCQlIYW5kbGVMb2dNZW1vcnlD b250ZXh0SW50ZXJydXB0KCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUEFSQUxM RUxfQVBQTFlfTUVTU0FHRSkpCisJCUhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0 KCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFU QUJBU0UpKQogCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZFUllfQ09O RkxJQ1RfREFUQUJBU0UpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv bG1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwppbmRleCAxMDQzMDY4Li4y ZjE3MWY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKQEAgLTExMTcsNiArMTExNyw0NSBAQCBV bmxvY2tTaGFyZWRPYmplY3RGb3JTZXNzaW9uKE9pZCBjbGFzc2lkLCBPaWQgb2JqaWQsIHVpbnQx NiBvYmpzdWJpZCwKIAlMb2NrUmVsZWFzZSgmdGFnLCBsb2NrbW9kZSwgdHJ1ZSk7CiB9CiAKKy8q CisgKgkJTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uCisgKgorICogT2J0YWluIGEgc2Vz c2lvbi1sZXZlbCBsb2NrIG9uIGEgdHJhbnNhY3Rpb24gYmVpbmcgYXBwbGllZCBvbiBhIGxvZ2lj YWwKKyAqIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIuIFNlZSBMb2NrUmVsYXRpb25JZEZvclNlc3Np b24gZm9yIG5vdGVzIGFib3V0CisgKiBzZXNzaW9uLWxldmVsIGxvY2tzLgorICovCit2b2lkCitM b2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4 aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkgICBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlMT0NL VEFHCQl0YWc7CisKKwlTRVRfTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTih0YWcsCisJCQkJCQkJ CSAgTXlEYXRhYmFzZUlkLAorCQkJCQkJCQkgIHN1Ym9pZCwKKwkJCQkJCQkJICB4aWQsCisJCQkJ CQkJCSAgb2JqaWQpOworCisJKHZvaWQpIExvY2tBY3F1aXJlKCZ0YWcsIGxvY2ttb2RlLCB0cnVl LCBmYWxzZSk7Cit9CisKKy8qCisgKgkJVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24K KyAqLwordm9pZAorVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9pZCwg VHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkJIExPQ0tNT0RFIGxvY2tt b2RlKQoreworCUxPQ0tUQUcJCXRhZzsKKworCVNFVF9MT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9O KHRhZywKKwkJCQkJCQkJICBNeURhdGFiYXNlSWQsCisJCQkJCQkJCSAgc3Vib2lkLAorCQkJCQkJ CQkgIHhpZCwKKwkJCQkJCQkJICBvYmppZCk7CisKKwlMb2NrUmVsZWFzZSgmdGFnLCBsb2NrbW9k ZSwgdHJ1ZSk7Cit9CiAKIC8qCiAgKiBBcHBlbmQgYSBkZXNjcmlwdGlvbiBvZiBhIGxvY2thYmxl IG9iamVjdCB0byBidWYuCkBAIC0xMjAyLDYgKzEyNDEsMTMgQEAgRGVzY3JpYmVMb2NrVGFnKFN0 cmluZ0luZm8gYnVmLCBjb25zdCBMT0NLVEFHICp0YWcpCiAJCQkJCQkJIHRhZy0+bG9ja3RhZ19m aWVsZDMsCiAJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDQpOwogCQkJYnJlYWs7CisJCWNhc2Ug TE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTjoKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLAorCQkJ CQkJCSBfKCJyZW1vdGUgdHJhbnNhY3Rpb24gJXUgb2Ygc3Vic2NyaXB0aW9uICV1IG9mIGRhdGFi YXNlICV1IiksCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDMsCisJCQkJCQkJIHRhZy0+bG9j a3RhZ19maWVsZDIsCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDEpOworCQkJYnJlYWs7CiAJ CWRlZmF1bHQ6CiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwKIAkJCQkJCQkgXygidW5yZWNvZ25p emVkIGxvY2t0YWcgdHlwZSAlZCIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDAxZDI2NGIuLmQ1Mjk1 YzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMzOTEsNiArMzM5MSw5IEBAIFByb2Nlc3NJbnRlcnJ1 cHRzKHZvaWQpCiAKIAlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCiAJCVByb2Nlc3NMb2dN ZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CisKKwlpZiAoUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5k aW5nKQorCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKTsKIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCBiMmFiZDc1Li4xZmFiNDVlIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBAIC0yMzAsNiArMjMwLDkgQEAg cGdzdGF0X2dldF93YWl0X2FjdGl2aXR5KFdhaXRFdmVudEFjdGl2aXR5IHcpCiAJCWNhc2UgV0FJ VF9FVkVOVF9MT0dJQ0FMX0xBVU5DSEVSX01BSU46CiAJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxM YXVuY2hlck1haW4iOwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFM TEVMX0FQUExZX01BSU46CisJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxQYXJhbGxlbEFwcGx5TWFp biI7CisJCQlicmVhazsKIAkJY2FzZSBXQUlUX0VWRU5UX1JFQ09WRVJZX1dBTF9TVFJFQU06CiAJ CQlldmVudF9uYW1lID0gIlJlY292ZXJ5V2FsU3RyZWFtIjsKIAkJCWJyZWFrOwpAQCAtMzg4LDYg KzM5MSw5IEBAIHBnc3RhdF9nZXRfd2FpdF9pcGMoV2FpdEV2ZW50SVBDIHcpCiAJCWNhc2UgV0FJ VF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VSVDoKIAkJCWV2ZW50X25hbWUgPSAiSGFz aEdyb3dCdWNrZXRzUmVpbnNlcnQiOwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVOVF9MT0dJ Q0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRToKKwkJCWV2ZW50X25hbWUgPSAiTG9naWNh bFBhcmFsbGVsQXBwbHlTdGF0ZUNoYW5nZSI7CisJCQlicmVhazsKIAkJY2FzZSBXQUlUX0VWRU5U X0xPR0lDQUxfU1lOQ19EQVRBOgogCQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsU3luY0RhdGEiOwog CQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMg Yi9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKaW5kZXggZjliMzI0ZS4uM2JmMDQ4 MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jCisrKyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYwpAQCAtMzcsMTAgKzM3LDExIEBAIGNvbnN0 IGNoYXIgKmNvbnN0IExvY2tUYWdUeXBlTmFtZXNbXSA9IHsKIAkic3BlY3Rva2VuIiwKIAkib2Jq ZWN0IiwKIAkidXNlcmxvY2siLAotCSJhZHZpc29yeSIKKwkiYWR2aXNvcnkiLAorCSJhcHBseXRy YW5zYWN0aW9uIgogfTsKIAotU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihMb2NrVGFnVHlwZU5h bWVzKSA9PSAoTE9DS1RBR19BRFZJU09SWSArIDEpLAorU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhv ZihMb2NrVGFnVHlwZU5hbWVzKSA9PSAoTE9DS1RBR19MQVNUX1RZUEUgKyAxKSwKIAkJCQkgImFy cmF5IGxlbmd0aCBtaXNtYXRjaCIpOwogCiAvKiBUaGlzIG11c3QgbWF0Y2ggZW51bSBQcmVkaWNh dGVMb2NrVGFyZ2V0VHlwZSAocHJlZGljYXRlX2ludGVybmFscy5oKSAqLwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYwppbmRleCAxYmYxNGVlLi45MWYwNDc5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYwpAQCAtMjk4Miw2ICsyOTgyLDE4IEBAIHN0cnVjdCBjb25maWdfaW50 IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCX0sCiAKIAl7CisJCXsibWF4X3BhcmFsbGVsX2FwcGx5 X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiIsCisJCQlQR0NfU0lHSFVQLAorCQkJUkVQTElDQVRJ T05fU1VCU0NSSUJFUlMsCisJCQlnZXR0ZXh0X25vb3AoIk1heGltdW0gbnVtYmVyIG9mIHBhcmFs bGVsIGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4iKSwKKwkJCU5VTEwsCisJCX0sCisJ CSZtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLAorCQkyLCAwLCBN QVhfUEFSQUxMRUxfV09SS0VSX0xJTUlULAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKworCXsK IAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdDX1NJR0hVUCwgTE9HR0lOR19XSEVSRSwKIAkJCWdl dHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2lu ZyAiCiAJCQkJCQkgImxvZyBmaWxlIHJvdGF0aW9uLiIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IDA0Mzg2NDUuLjIyYjAyZTYgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysg Yi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTM1OSw2 ICszNTksNyBAQAogI21heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0CSMgdGFrZW4g ZnJvbSBtYXhfd29ya2VyX3Byb2Nlc3NlcwogCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFy dCkKICNtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJvbSBt YXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCisjbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtl cnNfcGVyX3N1YnNjcmlwdGlvbiA9IDIJIyB0YWtlbiBmcm9tIG1heF9sb2dpY2FsX3JlcGxpY2F0 aW9uX3dvcmtlcnMKIAogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA0 NGQ5NTdjLi5mNDU0YjMxIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ1MzMsNyArNDUzMyw3IEBAIGdldFN1 YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAx NDAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIHMuc3Vic3RyZWFtLFxuIik7 CiAJZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBmYWxzZSBBUyBzdWJzdHJl YW0sXG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgJ2YnIEFTIHN1YnN0cmVh bSxcbiIpOwogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQogCQlhcHBlbmRQ UUV4cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTQ2NzAsOCArNDY3MCwxMCBAQCBkdW1wU3Vic2NyaXB0 aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYg KHN0cmNtcChzdWJpbmZvLT5zdWJiaW5hcnksICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZm ZXJTdHIocXVlcnksICIsIGJpbmFyeSA9IHRydWUiKTsKIAotCWlmIChzdHJjbXAoc3ViaW5mby0+ c3Vic3RyZWFtLCAiZiIpICE9IDApCisJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJ0 IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHN0cmVhbWluZyA9IG9u Iik7CisJZWxzZSBpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgInAiKSA9PSAwKQorCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gcGFyYWxsZWwiKTsKIAog CWlmIChzdHJjbXAoc3ViaW5mby0+c3VidHdvcGhhc2VzdGF0ZSwgdHdvX3BoYXNlX2Rpc2FibGVk KSAhPSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgdHdvX3BoYXNlID0gb24i KTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKaW5kZXggZGYxNjYzNi4uMjY1YjI4ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3Fs L2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTY1MDIsMTEgKzY1 MDIsMjQgQEAgZGVzY3JpYmVTdWJzY3JpcHRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4sIGJvb2wg dmVyYm9zZSkKIAl7CiAJCS8qIEJpbmFyeSBtb2RlIGFuZCBzdHJlYW1pbmcgYXJlIG9ubHkgc3Vw cG9ydGVkIGluIHYxNCBhbmQgaGlnaGVyICovCiAJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE0MDAw MCkKKwkJewogCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKLQkJCQkJCQkgICIsIHN1YmJpbmFy eSBBUyBcIiVzXCJcbiIKLQkJCQkJCQkgICIsIHN1YnN0cmVhbSBBUyBcIiVzXCJcbiIsCi0JCQkJ CQkJICBnZXR0ZXh0X25vb3AoIkJpbmFyeSIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJTdHJl YW1pbmciKSk7CisJCQkJCQkJICAiLCBzdWJiaW5hcnkgQVMgXCIlc1wiXG4iLAorCQkJCQkJCSAg Z2V0dGV4dF9ub29wKCJCaW5hcnkiKSk7CisKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE2MDAw MCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkgICIsIChDQVNFIHN1YnN0 cmVhbVxuIgorCQkJCQkJCQkgICIgICAgV0hFTiAnZicgVEhFTiAnb2ZmJ1xuIgorCQkJCQkJCQkg ICIgICAgV0hFTiAndCcgVEhFTiAnb24nXG4iCisJCQkJCQkJCSAgIiAgICBXSEVOICdwJyBUSEVO ICdwYXJhbGxlbCdcbiIKKwkJCQkJCQkJICAiICAgRU5EKSBBUyBcIiVzXCJcbiIsCisJCQkJCQkJ CSAgZ2V0dGV4dF9ub29wKCJTdHJlYW1pbmciKSk7CisJCQllbHNlCisJCQkJYXBwZW5kUFFFeHBC dWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiLCBzdWJzdHJlYW0gQVMgXCIlc1wiXG4iLAorCQkJCQkJ CQkgIGdldHRleHRfbm9vcCgiU3RyZWFtaW5nIikpOworCQl9CiAKIAkJLyogVHdvX3BoYXNlIGFu ZCBkaXNhYmxlX29uX2Vycm9yIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiB2MTUgYW5kIGhpZ2hlciAq LwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJz Y3JpcHRpb24uaAppbmRleCA3Yjk4NzE0Li41YjllNWEzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf c3Vic2NyaXB0aW9uLmgKQEAgLTgwLDcgKzgwLDggQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24s NjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cK IAlib29sCQlzdWJiaW5hcnk7CQkvKiBUcnVlIGlmIHRoZSBzdWJzY3JpcHRpb24gd2FudHMgdGhl CiAJCQkJCQkJCSAqIHB1Ymxpc2hlciB0byBzZW5kIGRhdGEgaW4gYmluYXJ5ICovCiAKLQlib29s CQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworCWNo YXIJCXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuIFNlZQor CQkJCQkJCQkgKiBTVUJTVFJFQU1feHh4IGNvbnN0YW50cy4gKi8KIAogCWNoYXIJCXN1YnR3b3Bo YXNlc3RhdGU7CS8qIFN0cmVhbSB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAKQEAgLTEyNCw3 ICsxMjUsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQllbmFibGVkOwkJ LyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gaXMgZW5hYmxlZCAqLwogCWJvb2wJCWJp bmFyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyBkYXRhIGluCiAJ CQkJCQkJCSAqIGJpbmFyeSBmb3JtYXQgKi8KLQlib29sCQlzdHJlYW07CQkJLyogQWxsb3cgc3Ry ZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdHJlYW07CQkJLyog QWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KKwkJCQkJCQkJICogU2Vl IFNVQlNUUkVBTV94eHggY29uc3RhbnRzLiAqLwogCWNoYXIJCXR3b3BoYXNlc3RhdGU7CS8qIEFs bG93IHN0cmVhbWluZyB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAJYm9vbAkJZGlzYWJsZW9u ZXJyOwkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJ ICogYXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgpAQCAtMTM3LDYgKzEz OSwyMSBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAkJCQkJCQkJICogc3BlY2lmaWVk IG9yaWdpbiAqLwogfSBTdWJzY3JpcHRpb247CiAKKy8qIERpc2FsbG93IHN0cmVhbWluZyBpbi1w cm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisjZGVmaW5lIExPR0lDQUxSRVBfU1RSRUFNX09GRiAn ZicKKworLyoKKyAqIFN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIHdyaXR0 ZW4gdG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQKKyAqIGFwcGxpZWQgb25seSBhZnRlciB0aGUgdHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHVwc3RyZWFtLgorICovCisjZGVmaW5lIExPR0lDQUxS RVBfU1RSRUFNX09OICd0JworCisvKgorICogU3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0 aW9ucyBhcmUgYXBwbGllZCBpbW1lZGlhdGVseSB2aWEgYSBwYXJhbGxlbAorICogYXBwbHkgd29y a2VyLgorICovCisjZGVmaW5lIExPR0lDQUxSRVBfU1RSRUFNX1BBUkFMTEVMICdwJworCiBleHRl cm4gU3Vic2NyaXB0aW9uICpHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdf b2spOwogZXh0ZXJuIHZvaWQgRnJlZVN1YnNjcmlwdGlvbihTdWJzY3JpcHRpb24gKnN1Yik7CiBl eHRlcm4gdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uKE9pZCBzdWJpZCk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmggYi9zcmMvaW5jbHVkZS9jb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmgKaW5kZXggMmNiZTdkNy4uNzc5NDc0ZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oCisrKyBiL3NyYy9pbmNs dWRlL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaApAQCAtMjYsNCArMjYsNiBAQCBleHRlcm4g dm9pZCBEcm9wU3Vic2NyaXB0aW9uKERyb3BTdWJzY3JpcHRpb25TdG10ICpzdG10LCBib29sIGlz VG9wTGV2ZWwpOwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgQWx0ZXJTdWJzY3JpcHRpb25Pd25lcihj b25zdCBjaGFyICpuYW1lLCBPaWQgbmV3T3duZXJJZCk7CiBleHRlcm4gdm9pZCBBbHRlclN1YnNj cmlwdGlvbk93bmVyX29pZChPaWQgc3ViaWQsIE9pZCBuZXdPd25lcklkKTsKIAorZXh0ZXJuIGNo YXIgZGVmR2V0U3RyZWFtaW5nTW9kZShEZWZFbGVtICpkZWYpOworCiAjZW5kaWYJCQkJCQkJLyog U1VCU0NSSVBUSU9OQ01EU19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2FsbGF1bmNoZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVu Y2hlci5oCmluZGV4IGYxZTI4MjEuLmQ1MTNlZjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWxsYXVuY2hlci5oCkBAIC0xNCw2ICsxNCw3IEBACiAKIGV4dGVybiBQR0RMTElNUE9S VCBpbnQgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczsKIGV4dGVybiBQR0RMTElNUE9S VCBpbnQgbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uOworZXh0ZXJuIFBHRExMSU1Q T1JUIGludCBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uOwogCiBl eHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyUmVnaXN0ZXIodm9pZCk7CiBleHRlcm4gdm9pZCBBcHBs eUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxwcm90by5oCmluZGV4IDFlYjdkZGEuLjRmYTJiZDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWxwcm90by5oCkBAIC0zMiwxMiArMzIsMTcgQEAKICAqCiAgKiBMT0dJQ0FMUkVQX1BS T1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIGlzIHRoZSBtaW5pbXVtIHByb3RvY29sIHZlcnNpb24g d2l0aAogICogc3VwcG9ydCBmb3IgdHdvLXBoYXNlIGNvbW1pdCBkZWNvZGluZyAoYXQgcHJlcGFy ZSB0aW1lKS4gSW50cm9kdWNlZCBpbiBQRzE1LgorICoKKyAqIExPR0lDQUxSRVBfUFJPVE9fU1RS RUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIGlzIHRoZSBtaW5pbXVtIHByb3RvY29sIHZlcnNpb24K KyAqIHdoZXJlIHdlIHN1cHBvcnQgYXBwbHlpbmcgbGFyZ2Ugc3RyZWFtaW5nIHRyYW5zYWN0aW9u cyBpbiBwYXJhbGxlbC4KKyAqIEludHJvZHVjZWQgaW4gUEcxNi4KICAqLwogI2RlZmluZSBMT0dJ Q0FMUkVQX1BST1RPX01JTl9WRVJTSU9OX05VTSAxCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9f VkVSU0lPTl9OVU0gMQogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05V TSAyCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gMwotI2Rl ZmluZSBMT0dJQ0FMUkVQX1BST1RPX01BWF9WRVJTSU9OX05VTSBMT0dJQ0FMUkVQX1BST1RPX1RX T1BIQVNFX1ZFUlNJT05fTlVNCisjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFM TEVMX1ZFUlNJT05fTlVNIDQKKyNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19NQVhfVkVSU0lPTl9O VU0gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0KIAogLyoKICAq IExvZ2ljYWwgbWVzc2FnZSB0eXBlcwpAQCAtMTc1LDYgKzE4MCwxNyBAQCB0eXBlZGVmIHN0cnVj dCBMb2dpY2FsUmVwUm9sbGJhY2tQcmVwYXJlZFR4bkRhdGEKIAljaGFyCQlnaWRbR0lEU0laRV07 CiB9IExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YTsKIAorLyoKKyAqIFRyYW5zYWN0 aW9uIHByb3RvY29sIGluZm9ybWF0aW9uIGZvciBzdHJlYW0gYWJvcnQuCisgKi8KK3R5cGVkZWYg c3RydWN0IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsK KwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlYTG9nUmVjUHRyCWFib3J0X2xzbjsKKwlUaW1lc3Rh bXBUeiBhYm9ydF90aW1lOworfSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhOworCiBleHRlcm4g dm9pZCBsb2dpY2FscmVwX3dyaXRlX2JlZ2luKFN0cmluZ0luZm8gb3V0LCBSZW9yZGVyQnVmZmVy VFhOICp0eG4pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX2JlZ2luKFN0cmluZ0luZm8g aW4sCiAJCQkJCQkJCSAgTG9naWNhbFJlcEJlZ2luRGF0YSAqYmVnaW5fZGF0YSk7CkBAIC0yNDYs OSArMjYyLDEzIEBAIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2NvbW1pdChT dHJpbmdJbmZvIG91dCwgUmVvcmRlckJ1ZmZlclRYTiAqdHhuCiBleHRlcm4gVHJhbnNhY3Rpb25J ZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIGluLAogCQkJCQkJCQkJ CQkJICAgTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIGV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklk IHhpZCwKLQkJCQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkKTsKLWV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAq eGlkLAotCQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICpzdWJ4aWQpOworCQkJCQkJCQkJCSAgVHJh bnNhY3Rpb25JZCBzdWJ4aWQsCisJCQkJCQkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xzbiwKKwkJ CQkJCQkJCQkgIFRpbWVzdGFtcFR6IGFib3J0X3RpbWUsCisJCQkJCQkJCQkJICBib29sIHdyaXRl X2Fib3J0X2luZm8pOworZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChT dHJpbmdJbmZvIGluLAorCQkJCQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9y dF9kYXRhLAorCQkJCQkJCQkJCSBib29sIHJlYWRfYWJvcnRfaW5mbyk7CiBleHRlcm4gY2hhciAq bG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uKTsKIAogI2Vu ZGlmCQkJCQkJCS8qIExPR0lDQUxfUFJPVE9fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbHdvcmtlci5oCmluZGV4IGNkMWI2ZTguLmRjNjhjZDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9sb2dpY2Fsd29ya2VyLmgKQEAgLTEyLDggKzEyLDE2IEBACiAjaWZuZGVmIExPR0lDQUxX T1JLRVJfSAogI2RlZmluZSBMT0dJQ0FMV09SS0VSX0gKIAorI2luY2x1ZGUgPHNpZ25hbC5oPgor CitleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFBhcmFsbGVsQXBwbHlN ZXNzYWdlUGVuZGluZzsKKwogZXh0ZXJuIHZvaWQgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5f YXJnKTsKK2V4dGVybiB2b2lkIFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJn KTsKIAogZXh0ZXJuIGJvb2wgSXNMb2dpY2FsV29ya2VyKHZvaWQpOworZXh0ZXJuIGJvb2wgSXNM b2dpY2FsUGFyYWxsZWxBcHBseVdvcmtlcih2b2lkKTsKK2V4dGVybiB2b2lkIEhhbmRsZVBhcmFs bGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgSGFuZGxlUGFyYWxs ZWxBcHBseU1lc3NhZ2VzKHZvaWQpOwogCiAjZW5kaWYJCQkJCQkJLyogTE9HSUNBTFdPUktFUl9I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCmluZGV4IDJhNTBkMTAuLmM3YjFhZGYgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCisrKyBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL29yaWdpbi5oCkBAIC01Myw3ICs1Myw3IEBAIGV4dGVybiBYTG9nUmVjUHRy IHJlcGxvcmlnaW5fZ2V0X3Byb2dyZXNzKFJlcE9yaWdpbklkIG5vZGUsIGJvb2wgZmx1c2gpOwog CiBleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShYTG9nUmVjUHRyIHJlbW90 ZV9jb21taXQsCiAJCQkJCQkJCQkgICBYTG9nUmVjUHRyIGxvY2FsX2NvbW1pdCk7Ci1leHRlcm4g dm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSk7CitleHRlcm4g dm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSwgaW50IGFjcXVp cmVkX2J5KTsKIGV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCh2b2lkKTsKIGV4 dGVybiBYTG9nUmVjUHRyIHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoYm9vbCBmbHVz aCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9wZ291dHB1dC5oCmluZGV4IDAyMDI3NTUuLjNjMzBkYTgg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vcGdvdXRwdXQuaApAQCAtMjYsNyArMjYsNyBAQCB0eXBlZGVm IHN0cnVjdCBQR091dHB1dERhdGEKIAlMaXN0CSAgICpwdWJsaWNhdGlvbl9uYW1lczsKIAlMaXN0 CSAgICpwdWJsaWNhdGlvbnM7CiAJYm9vbAkJYmluYXJ5OwotCWJvb2wJCXN0cmVhbWluZzsKKwlj aGFyCQlzdHJlYW1pbmc7CiAJYm9vbAkJbWVzc2FnZXM7CiAJYm9vbAkJdHdvX3BoYXNlOwogCWNo YXIJICAgKm9yaWdpbjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3Jk ZXJidWZmZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAppbmRl eCBjNzAwYjU1Li5mMGViNmM0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9y ZW9yZGVyYnVmZmVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZl ci5oCkBAIC0zMDgsNiArMzA4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlclRYTgog CXsKIAkJVGltZXN0YW1wVHogY29tbWl0X3RpbWU7CiAJCVRpbWVzdGFtcFR6IHByZXBhcmVfdGlt ZTsKKwkJVGltZXN0YW1wVHogYWJvcnRfdGltZTsKIAl9CQkJeGFjdF90aW1lOwogCiAJLyoKQEAg LTY3MCw3ICs2NzEsOCBAQCBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQXNzaWduQ2hpbGQoUmVv cmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLAogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1 ZmZlckNvbW1pdENoaWxkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJ CQkJCQkJCSBUcmFuc2FjdGlvbklkIHN1YnhpZCwgWExvZ1JlY1B0ciBjb21taXRfbHNuLAogCQkJ CQkJCQkJIFhMb2dSZWNQdHIgZW5kX2xzbik7Ci1leHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJv cnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7 CitleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5z YWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkgICBUaW1lc3RhbXBUeiBhYm9y dF90aW1lKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVy ICpyYiwgVHJhbnNhY3Rpb25JZCBvbGRlc3RSdW5uaW5nWGlkKTsKIGV4dGVybiB2b2lkIFJlb3Jk ZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9n UmVjUHRyIGxzbik7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVySW52YWxpZGF0ZShSZW9yZGVy QnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmggYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCmluZGV4IDkzMzlmMjkuLjBjOGJiZGQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaApAQCAtMTgyLDcgKzE4Miw3IEBAIHR5cGVkZWYg c3RydWN0CiAJCQl1aW50MzIJCXByb3RvX3ZlcnNpb247CS8qIExvZ2ljYWwgcHJvdG9jb2wgdmVy c2lvbiAqLwogCQkJTGlzdAkgICAqcHVibGljYXRpb25fbmFtZXM7CS8qIFN0cmluZyBsaXN0IG9m IHB1YmxpY2F0aW9ucyAqLwogCQkJYm9vbAkJYmluYXJ5OyAvKiBBc2sgcHVibGlzaGVyIHRvIHVz ZSBiaW5hcnkgKi8KLQkJCWJvb2wJCXN0cmVhbWluZzsJLyogU3RyZWFtaW5nIG9mIGxhcmdlIHRy YW5zYWN0aW9ucyAqLworCQkJY2hhcgkgICAqc3RyZWFtaW5nX3N0cjsJLyogU3RyZWFtaW5nIG9m IGxhcmdlIHRyYW5zYWN0aW9ucyAqLwogCQkJYm9vbAkJdHdvcGhhc2U7CS8qIFN0cmVhbWluZyBv ZiB0d28tcGhhc2UgdHJhbnNhY3Rpb25zIGF0CiAJCQkJCQkJCQkgKiBwcmVwYXJlIHRpbWUgKi8K IAkJCWNoYXIJICAgKm9yaWdpbjsgLyogT25seSBwdWJsaXNoIGRhdGEgb3JpZ2luYXRpbmcgZnJv bSB0aGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5h bC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5kZXggMmI3 MTE0Zi4uY2YzOTgwMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2Vy X2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFs LmgKQEAgLTE3LDggKzE3LDEyIEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRlICJkYXRhdHlwZS90aW1l c3RhbXAuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9s b2dpY2FscmVsYXRpb24uaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZpbGVzZXQuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2xvY2suaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5oIgorI2luY2x1ZGUg InN0b3JhZ2Uvc2htX3RvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogCiAKQEAgLTYw LDYgKzY0LDE1IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIKIAkgKi8KIAlGaWxl U2V0ICAgICpzdHJlYW1fZmlsZXNldDsKIAorCS8qCisJICogUElEIG9mIGxlYWRlciBhcHBseSB3 b3JrZXIgaWYgdGhpcyBzbG90IGlzIHVzZWQgZm9yIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3Jr ZXIsIEludmFsaWRQaWQgb3RoZXJ3aXNlLgorCSAqLworCXBpZF90CQlhcHBseV9sZWFkZXJfcGlk OworCisJLyogSW5kaWNhdGVzIHdoZXRoZXIgYXBwbHkgY2FuIGJlIHBlcmZvcm1lZCBpbiBwYXJh bGxlbC4gKi8KKwlib29sCQlwYXJhbGxlbF9hcHBseTsKKwogCS8qIFN0YXRzLiAqLwogCVhMb2dS ZWNQdHIJbGFzdF9sc247CiAJVGltZXN0YW1wVHogbGFzdF9zZW5kX3RpbWU7CkBAIC02OCw5ICs4 MSw4OSBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJVGltZXN0YW1wVHogcmVw bHlfdGltZTsKIH0gTG9naWNhbFJlcFdvcmtlcjsKIAorLyoKKyAqIFN0YXRlIG9mIHRoZSB0cmFu c2FjdGlvbiBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKgorICogVGhlIGVudW0gdmFsdWVz IG11c3QgaGF2ZSB0aGUgc2FtZSBvcmRlciBhcyB0aGUgdHJhbnNhY3Rpb24gc3RhdGUKKyAqIHRy YW5zaXRpb25zLgorICovCit0eXBlZGVmIGVudW0gUGFyYWxsZWxUcmFuc1N0YXRlCit7CisJUEFS QUxMRUxfVFJBTlNfVU5LTk9XTiwKKwlQQVJBTExFTF9UUkFOU19TVEFSVEVELAorCVBBUkFMTEVM X1RSQU5TX0ZJTklTSEVECit9IFBhcmFsbGVsVHJhbnNTdGF0ZTsKKworLyoKKyAqIFN0cnVjdCBm b3Igc2hhcmluZyBpbmZvcm1hdGlvbiBiZXR3ZWVuIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBh cmFsbGVsCisgKiBhcHBseSB3b3JrZXJzLgorICovCit0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFw cGx5V29ya2VyU2hhcmVkCit7CisJc2xvY2tfdAkJbXV0ZXg7CisKKwlUcmFuc2FjdGlvbklkIHhp ZDsKKworCS8qCisJICogU3RhdGUgdXNlZCB0byBlbnN1cmUgY29tbWl0IG9yZGVyaW5nLgorCSAq CisJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHNldCBpdCB0byBQQVJBTExFTF9U UkFOU19GSU5JU0hFRCBhZnRlcgorCSAqIGhhbmRsaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2gg Y29tbWFuZHMgd2hpbGUgdGhlIGFwcGx5IGxlYWRlciB3aWxsCisJICogd2FpdCBmb3IgaXQgdG8g YmVjb21lIFBBUkFMTEVMX1RSQU5TX0ZJTklTSEVEIGJlZm9yZSBwcm9jZWVkaW5nIGluCisJICog dHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzIChlLmcuIFNUUkVBTV9DT01NSVQvU1RSRUFNX1BS RVBBUkUpLgorCSAqLworCVBhcmFsbGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRlOworCisJLyogSW5m b3JtYXRpb24gZnJvbSB0aGUgY29ycmVzcG9uZGluZyBMb2dpY2FsUmVwV29ya2VyIHNsb3QuICov CisJdWludDE2CQlsb2dpY2FscmVwX3dvcmtlcl9nZW5lcmF0aW9uOworCWludAkJCWxvZ2ljYWxy ZXBfd29ya2VyX3Nsb3Rfbm87CisKKwkvKgorCSAqIEluZGljYXRlcyB3aGV0aGVyIHRoZXJlIGFy ZSBwZW5kaW5nIHN0cmVhbWluZyBibG9ja3MgaW4gdGhlIHF1ZXVlLiBUaGUKKwkgKiBwYXJhbGxl bCBhcHBseSB3b3JrZXIgd2lsbCBjaGVjayBpdCBiZWZvcmUgc3RhcnRpbmcgdG8gd2FpdC4KKwkg Ki8KKwlwZ19hdG9taWNfdWludDMyCXBlbmRpbmdfc3RyZWFtX2NvdW50OworCisJLyoKKwkgKiBY YWN0TGFzdENvbW1pdEVuZCBmcm9tIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFRoaXMgaXMg cmVxdWlyZWQgYnkKKwkgKiB0aGUgbGVhZGVyIHdvcmtlciBzbyBpdCBjYW4gdXBkYXRlIHRoZSBs c25fbWFwcGluZ3MuCisJICovCisJWExvZ1JlY1B0cglsYXN0X2NvbW1pdF9lbmQ7Cit9IFBhcmFs bGVsQXBwbHlXb3JrZXJTaGFyZWQ7CisKKy8qCisgKiBJbmZvcm1hdGlvbiB3aGljaCBpcyB1c2Vk IHRvIG1hbmFnZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit0eXBlZGVmIHN0cnVj dCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbworeworCXNobV9tcV9oYW5kbGUgKm1xX2hhbmRsZTsK KworCS8qCisJICogVGhlIHF1ZXVlIHVzZWQgdG8gdHJhbnNmZXIgZXJyb3IgbWVzc2FnZXMgZnJv bSB0aGUgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIgdG8gdGhlIGxlYWRlciBhcHBseSB3b3Jr ZXIuCisJICovCisJc2htX21xX2hhbmRsZSAqZXJyb3JfbXFfaGFuZGxlOworCisJZHNtX3NlZ21l bnQgKmRzbV9zZWc7CisKKwkvKgorCSAqIFRydWUgaWYgdGhlIHdvcmtlciBpcyBiZWluZyB1c2Vk IHRvIHByb2Nlc3MgYSBwYXJhbGxlbCBhcHBseQorCSAqIHRyYW5zYWN0aW9uLiBGYWxzZSBpbmRp Y2F0ZXMgdGhpcyB3b3JrZXIgaXMgYXZhaWxhYmxlIGZvciByZS11c2UuCisJICovCisJYm9vbAkJ aW5fdXNlOworCisJUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqc2hhcmVkOworfSBQYXJhbGxl bEFwcGx5V29ya2VySW5mbzsKKwogLyogTWFpbiBtZW1vcnkgY29udGV4dCBmb3IgYXBwbHkgd29y a2VyLiBQZXJtYW5lbnQgZHVyaW5nIHdvcmtlciBsaWZldGltZS4gKi8KIGV4dGVybiBQR0RMTElN UE9SVCBNZW1vcnlDb250ZXh0IEFwcGx5Q29udGV4dDsKIAorZXh0ZXJuIFBHRExMSU1QT1JUIE1l bW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIEVy cm9yQ29udGV4dENhbGxiYWNrICphcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrOworCitleHRlcm4g UEdETExJTVBPUlQgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqTXlQYXJhbGxlbFNoYXJlZDsK KwogLyogbGlicHFyZWNlaXZlciBjb25uZWN0aW9uICovCiBleHRlcm4gUEdETExJTVBPUlQgc3Ry dWN0IFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29ubjsKIApAQCAtODQsOSAr MTc3LDExIEBAIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaChpbnQgc2xvdCk7 CiBleHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3Vi aWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9ydW5uaW5nKTsKIGV4dGVybiBM aXN0ICpsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJvb2wgb25seV9ydW5uaW5n KTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1 YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAotCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCByZWxp ZCk7CitleHRlcm4gYm9vbCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBz dWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKKwkJCQkJCQkJCSBPaWQgdXNlcmlkLCBPaWQgcmVs aWQsCisJCQkJCQkJCQkgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKTsKIGV4dGVybiB2b2lkIGxv Z2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOworZXh0ZXJuIHZvaWQg bG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChpbnQgc2xvdF9ubywgdWludDE2IGdlbmVyYXRpb24p OwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKE9pZCBzdWJpZCwgT2lkIHJl bGlkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cF9wdHIoTG9naWNhbFJl cFdvcmtlciAqd29ya2VyKTsKIApAQCAtMTAzLDEwICsxOTgsNjYgQEAgZXh0ZXJuIHZvaWQgcHJv Y2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKTsKIGV4dGVybiB2b2lk IGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwK IAkJCQkJCQkJCQkJdWludDMyIGhhc2h2YWx1ZSk7CiAKK2V4dGVybiB2b2lkIGFwcGx5X2Rpc3Bh dGNoKFN0cmluZ0luZm8gcyk7CisKK2V4dGVybiB2b2lkIG1heWJlX3JlcmVhZF9zdWJzY3JpcHRp b24odm9pZCk7CisKK2V4dGVybiB2b2lkIEluaXRpYWxpemVBcHBseVdvcmtlcih2b2lkKTsKKwor ZXh0ZXJuIHZvaWQgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuLCBY TG9nUmVjUHRyIGxvY2FsX2xzbik7CisKKy8qIEZ1bmN0aW9uIGZvciBhcHBseSBlcnJvciBjYWxs YmFjayAqLworZXh0ZXJuIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKK2V4 dGVybiB2b2lkIHNldF9hcHBseV9lcnJvcl9jb250ZXh0X29yaWdpbihjaGFyICpvcmlnaW5uYW1l KTsKKworLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIHNldHVwIGFuZCBpbnRlcmFjdGlvbnMgKi8K K2V4dGVybiB2b2lkIHBhX2FsbG9jYXRlX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCk7CitleHRl cm4gUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnBhX2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQg eGlkKTsKK2V4dGVybiBib29sIHBhX2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICp3aW5mbyk7CitleHRlcm4gdm9pZCBwYV9kZXRhY2hfYWxsX2Vycm9yX21xKHZvaWQpOworCitl eHRlcm4gdm9pZCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBT aXplIG5ieXRlcywKKwkJCQkJCSBjb25zdCB2b2lkICpkYXRhKTsKKworZXh0ZXJuIHZvaWQgcGFf c2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCwKKwkJCQkJ CQkgIFBhcmFsbGVsVHJhbnNTdGF0ZSBpbl94YWN0KTsKK2V4dGVybiB2b2lkIHBhX3NldF9zdHJl YW1fYXBwbHlfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CisKK2V4dGVy biB2b2lkIHBhX3N0YXJ0X3N1YnRyYW5zKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQsCisJCQkJ CQkJICBUcmFuc2FjdGlvbklkIHRvcF94aWQpOworZXh0ZXJuIHZvaWQgcGFfcmVzZXRfc3VidHJh bnModm9pZCk7CitleHRlcm4gdm9pZCBwYV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFi b3J0RGF0YSAqYWJvcnRfZGF0YSk7CisKK2V4dGVybiB2b2lkIHBhX2xvY2tfc3RyZWFtKFRyYW5z YWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CitleHRlcm4gdm9pZCBwYV91bmxvY2tf c3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CisKK2V4dGVybiB2 b2lkIHBhX2xvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2tt b2RlKTsKK2V4dGVybiB2b2lkIHBhX3VubG9ja190cmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhp ZCwgTE9DS01PREUgbG9ja21vZGUpOworCitleHRlcm4gdm9pZCBwYV9kZWNyX2FuZF93YWl0X3N0 cmVhbV9ibG9jayh2b2lkKTsKKworZXh0ZXJuIHZvaWQgcGFfeGFjdF9maW5pc2goUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvLAorCQkJCQkJICAgWExvZ1JlY1B0ciByZW1vdGVfbHNuKTsK KworI2RlZmluZSBpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSAoKHdvcmtlciktPmFwcGx5 X2xlYWRlcl9waWQgIT0gSW52YWxpZFBpZCkKKwogc3RhdGljIGlubGluZSBib29sCiBhbV90YWJs ZXN5bmNfd29ya2VyKHZvaWQpCiB7CiAJcmV0dXJuIE9pZElzVmFsaWQoTXlMb2dpY2FsUmVwV29y a2VyLT5yZWxpZCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fbGVhZGVyX2FwcGx5X3dv cmtlcih2b2lkKQoreworCXJldHVybiAoIU9pZElzVmFsaWQoTXlMb2dpY2FsUmVwV29ya2VyLT5y ZWxpZCkgJiYKKwkJCSFpc1BhcmFsbGVsQXBwbHlXb3JrZXIoTXlMb2dpY2FsUmVwV29ya2VyKSk7 Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKHZvaWQp Cit7CisJcmV0dXJuIGlzUGFyYWxsZWxBcHBseVdvcmtlcihNeUxvZ2ljYWxSZXBXb3JrZXIpOwor fQorCiAjZW5kaWYJCQkJCQkJLyogV09SS0VSX0lOVEVSTkFMX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKaW5k ZXggYmUxZDJjOS4uNWEzYmQwMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdy LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sbWdyLmgKQEAgLTEwNyw2ICsxMDcsMTEgQEAg ZXh0ZXJuIHZvaWQgTG9ja1NoYXJlZE9iamVjdEZvclNlc3Npb24oT2lkIGNsYXNzaWQsIE9pZCBv YmppZCwgdWludDE2IG9ianN1YmlkLAogZXh0ZXJuIHZvaWQgVW5sb2NrU2hhcmVkT2JqZWN0Rm9y U2Vzc2lvbihPaWQgY2xhc3NpZCwgT2lkIG9iamlkLCB1aW50MTYgb2Jqc3ViaWQsCiAJCQkJCQkJ CQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKIAorZXh0ZXJuIHZvaWQgTG9ja0FwcGx5VHJhbnNhY3Rp b25Gb3JTZXNzaW9uKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCB1aW50MTYgb2JqaWQs CisJCQkJCQkJCQkJICAgTE9DS01PREUgbG9ja21vZGUpOworZXh0ZXJuIHZvaWQgVW5sb2NrQXBw bHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVp bnQxNiBvYmppZCwKKwkJCQkJCQkJCQkJIExPQ0tNT0RFIGxvY2ttb2RlKTsKKwogLyogRGVzY3Jp YmUgYSBsb2NrdGFnIGZvciBlcnJvciBtZXNzYWdlcyAqLwogZXh0ZXJuIHZvaWQgRGVzY3JpYmVM b2NrVGFnKFN0cmluZ0luZm8gYnVmLCBjb25zdCBMT0NLVEFHICp0YWcpOwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5o CmluZGV4IGU0ZTE0OTUuLjc3NjYxMjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv bG9jay5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9jay5oCkBAIC0xNDksMTAgKzE0OSwx MiBAQCB0eXBlZGVmIGVudW0gTG9ja1RhZ1R5cGUKIAlMT0NLVEFHX1NQRUNVTEFUSVZFX1RPS0VO LAkvKiBzcGVjdWxhdGl2ZSBpbnNlcnRpb24gWGlkIGFuZCB0b2tlbiAqLwogCUxPQ0tUQUdfT0JK RUNULAkJCQkvKiBub24tcmVsYXRpb24gZGF0YWJhc2Ugb2JqZWN0ICovCiAJTE9DS1RBR19VU0VS TE9DSywJCQkvKiByZXNlcnZlZCBmb3Igb2xkIGNvbnRyaWIvdXNlcmxvY2sgY29kZSAqLwotCUxP Q0tUQUdfQURWSVNPUlkJCQkvKiBhZHZpc29yeSB1c2VyIGxvY2tzICovCisJTE9DS1RBR19BRFZJ U09SWSwJCQkvKiBhZHZpc29yeSB1c2VyIGxvY2tzICovCisJTE9DS1RBR19BUFBMWV9UUkFOU0FD VElPTgkvKiB0cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkIG9uIGEgbG9naWNhbAorCQkJCQkJCQkg KiByZXBsaWNhdGlvbiBzdWJzY3JpYmVyICovCiB9IExvY2tUYWdUeXBlOwogCi0jZGVmaW5lIExP Q0tUQUdfTEFTVF9UWVBFCUxPQ0tUQUdfQURWSVNPUlkKKyNkZWZpbmUgTE9DS1RBR19MQVNUX1RZ UEUJTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTgogCiBleHRlcm4gUEdETExJTVBPUlQgY29uc3Qg Y2hhciAqY29uc3QgTG9ja1RhZ1R5cGVOYW1lc1tdOwogCkBAIC0yNzgsNiArMjgwLDE3IEBAIHR5 cGVkZWYgc3RydWN0IExPQ0tUQUcKIAkgKGxvY2t0YWcpLmxvY2t0YWdfdHlwZSA9IExPQ0tUQUdf QURWSVNPUlksIFwKIAkgKGxvY2t0YWcpLmxvY2t0YWdfbG9ja21ldGhvZGlkID0gVVNFUl9MT0NL TUVUSE9EKQogCisvKgorICogSUQgaW5mbyBmb3IgYSByZW1vdGUgdHJhbnNhY3Rpb24gb24gYSBs b2dpY2FsIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIgaXM6IERCCisgKiBPSUQgKyBTVUJTQ1JJUFRJ T04gT0lEICsgVFJBTlNBQ1RJT04gSUQgKyBPQkpJRAorICovCisjZGVmaW5lIFNFVF9MT0NLVEFH X0FQUExZX1RSQU5TQUNUSU9OKGxvY2t0YWcsZGJvaWQsc3Vib2lkLHhpZCxvYmppZCkgXAorCSgo bG9ja3RhZykubG9ja3RhZ19maWVsZDEgPSAoZGJvaWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFn X2ZpZWxkMiA9IChzdWJvaWQpLCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkMyA9ICh4aWQp LCBcCisJIChsb2NrdGFnKS5sb2NrdGFnX2ZpZWxkNCA9IChvYmppZCksIFwKKwkgKGxvY2t0YWcp LmxvY2t0YWdfdHlwZSA9IExPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04sIFwKKwkgKGxvY2t0YWcp LmxvY2t0YWdfbG9ja21ldGhvZGlkID0gREVGQVVMVF9MT0NLTUVUSE9EKQogCiAvKgogICogUGVy LWxvY2tlZC1vYmplY3QgbG9jayBpbmZvcm1hdGlvbjoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3N0b3JhZ2UvcHJvY3NpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgK aW5kZXggZWU2MzY5MC4uOTNhNTFmNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9w cm9jc2lnbmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM1 LDYgKzM1LDcgQEAgdHlwZWRlZiBlbnVtCiAJUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORywJ LyogYXNrIHdhbHNlbmRlcnMgdG8gcHJlcGFyZSBmb3Igc2h1dGRvd24gICovCiAJUFJPQ1NJR19C QVJSSUVSLAkJCS8qIGdsb2JhbCBiYXJyaWVyIGludGVycnVwdCAgKi8KIAlQUk9DU0lHX0xPR19N RU1PUllfQ09OVEVYVCwgLyogYXNrIGJhY2tlbmQgdG8gbG9nIHRoZSBtZW1vcnkgY29udGV4dHMg Ki8KKwlQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsIC8qIE1lc3NhZ2UgZnJvbSBwYXJh bGxlbCBhcHBseSB3b3JrZXJzICovCiAKIAkvKiBSZWNvdmVyeSBjb25mbGljdCByZWFzb25zICov CiAJUFJPQ1NJR19SRUNPVkVSWV9DT05GTElDVF9EQVRBQkFTRSwKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQu aAppbmRleCAwYjIxMDBiLi43NjNmYmVhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93 YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC00Miw2 ICs0Miw3IEBAIHR5cGVkZWYgZW51bQogCVdBSVRfRVZFTlRfQ0hFQ0tQT0lOVEVSX01BSU4sCiAJ V0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX01BSU4sCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5D SEVSX01BSU4sCisJV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX01BSU4sCiAJV0FJ VF9FVkVOVF9SRUNPVkVSWV9XQUxfU1RSRUFNLAogCVdBSVRfRVZFTlRfU1lTTE9HR0VSX01BSU4s CiAJV0FJVF9FVkVOVF9XQUxfUkVDRUlWRVJfTUFJTiwKQEAgLTEwNSw2ICsxMDYsNyBAQCB0eXBl ZGVmIGVudW0KIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0FMTE9DQVRFLAogCVdBSVRf RVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfRUxFQ1QsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVD S0VUU19SRUlOU0VSVCwKKwlXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVf Q0hBTkdFLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX0RBVEEsCiAJV0FJVF9FVkVOVF9MT0dJ Q0FMX1NZTkNfU1RBVEVfQ0hBTkdFLAogCVdBSVRfRVZFTlRfTVFfSU5URVJOQUwsCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQgYi9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKaW5kZXggYzEzZDIxOC4uMWVkNmY0 YyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dApAQCAtMTE3 LDcgKzExNyw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFu dWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgIE5hbWUgICAgICAgfCAg ICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5 IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmln aW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBT a2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3Vi NCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IG5vbmUgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBub25lICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjQgU0VUIChvcmlnaW4gPSBhbnkpOwpAQCAtMTI1LDcgKzEy NSw3IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0IFNFVCAob3JpZ2luID0g YW55KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCiAgICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFi bGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0 IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAg ICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViNCB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAg fCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAg ICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAv MAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIzOwpAQCAtMTM4 LDcgKzEzOCw3IEBAIEVSUk9SOiAgaW52YWxpZCBjb25uZWN0aW9uIHN0cmluZyBzeW50YXg6IG1p c3NpbmcgIj0iIGFmdGVyICJmb29iYXIiIGluIGNvbm5lY3RpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdp biB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNr aXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIFNFVCBQVUJMSUNBVElPTiB0ZXN0cHViMiwgdGVzdHB1YjMgV0lU SCAocmVmcmVzaCA9IGZhbHNlKTsKQEAgLTE1OCw3ICsxNTgsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIFNLSVAgKGxzbiA9ICcwLzEyMzQ1Jyk7CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNh dGlvbiAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJs ZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25u aW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBmICAgICAgICAgfCBkICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzEyMzQ1CisgcmVncmVzc190 ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIs dGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAg ICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVz c19kb2Vzbm90ZXhpc3QyIHwgMC8xMjM0NQogKDEgcm93KQogCiAtLSBvayAtIHdpdGggbHNuID0g Tk9ORQpAQCAtMTcwLDcgKzE3MCw3IEBAIEVSUk9SOiAgaW52YWxpZCBXQUwgbG9jYXRpb24gKExT Tik6IDAvMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJz Y3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEVuYWJsZWQgfCAgICAgUHVibGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAg ICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBh bnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qy IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAoMSByb3cpCiAKIEJFR0lO OwpAQCAtMjA1LDcgKzIwNSw3IEBAIEhJTlQ6ICBBdmFpbGFibGUgdmFsdWVzOiBsb2NhbCwgcmVt b3RlX3dyaXRlLCByZW1vdGVfYXBwbHksIG9uLCBvZmYuCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgICBOYW1lICAgICAg ICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8ICAgICBQdWJsaWNhdGlv biAgICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBv biBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgICBDb25uaW5m byAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViX2ZvbyB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IGYgICAgICAgICB8 IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgbG9jYWwgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAorIHJlZ3Jlc3Nf dGVzdHN1Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0 cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGxvY2FsICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKICgxIHJvdykKIAogLS0gcmVuYW1lIGJhY2sgdG8g a2VlcCB0aGUgcmVzdCBzaW1wbGUKQEAgLTI0Miw3ICsyNDIsNyBAQCBISU5UOiAgVG8gaW5pdGlh dGUgcmVwbGljYXRpb24sIHlvdSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24g c2xvdCwgZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgdCAgICAgIHwg b2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK ICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGJpbmFy eSA9IGZhbHNlKTsKQEAgLTI1MSwxMyArMjUxLDEzIEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2lu IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tp cCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAg fCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIERST1AgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YjsKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCist LSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBDUkVBVEUg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBz dHJlYW1pbmcgPSBmb28pOwotRVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29sZWFuIHZh bHVlCitFUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgInBhcmFs bGVsIgogLS0gbm93IGl0IHdvcmtzCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRl c3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSB0cnVlKTsKIFdBUk5JTkc6 ICBzdWJzY3JpcHRpb24gd2FzIGNyZWF0ZWQsIGJ1dCBpcyBub3QgY29ubmVjdGVkCkBAIC0yNjYs NyArMjY2LDE1IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91IG11c3QgbWFu dWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkg fCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdp biB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNr aXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8 IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAg ICAgfCB0ICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFu eSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8 IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAgICAgfCBkICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorKDEgcm93KQorCitBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwpOworXGRScysKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAg ICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJs aWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmlu Zm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisg cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IHBhcmFsbGVsICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7CkBAIC0yNzUsNyArMjgzLDcgQEAg QUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUp OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMK ICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8 IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBD b25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAg ICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8 IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9 cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1 YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAg ICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYg ICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJv dykKIAogLS0gZmFpbCAtIHB1YmxpY2F0aW9uIGFscmVhZHkgZXhpc3RzCkBAIC0yOTMsNyArMzAx LDcgQEAgRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1YjEiIGlzIGFscmVhZHkgaW4gc3Vic2Ny aXB0aW9uICJyZWdyZXNzX3Rlc3RzdWIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAg ICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgICAgIFB1YmxpY2F0aW9uICAgICAg ICAgfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBl cnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAg ICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHViLHRlc3RwdWIxLHRlc3RwdWIyfSB8IGYgICAgICB8IGYgICAgICAg ICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAg ICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVz c190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1 Yix0ZXN0cHViMSx0ZXN0cHViMn0gfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRi bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiAtLSBmYWlsIC0gcHVi bGljYXRpb24gdXNlZCBtb3JlIHRoZW4gb25jZQpAQCAtMzExLDcgKzMxOSw3IEBAIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViMSwgdGVz dHB1YjIgV0lUSCAocmVmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg c3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhh c2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1p dCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9u X3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAg ICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAg ICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1 YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IDAvMAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7CkBA IC0zNTAsNyArMzU4LDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVz dCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwg T3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0 c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8 IGYgICAgICB8IGYgICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8 IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IHAgICAgICAgICAg ICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwg ZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIC0tZmFpbCAtIGFs dGVyIG9mIHR3b19waGFzZSBvcHRpb24gbm90IHN1cHBvcnRlZC4KQEAgLTM2Miw3ICszNzAsNyBA QCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gdHJ1 ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9u cwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVk IHwgUHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwg RGlzYWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAg IENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAg ICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBwICAgICAgICAgICAgICAg IHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFt ZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nf c3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAg ICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9m ZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEg cm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1l ID0gTk9ORSk7CkBAIC0zNzUsNyArMzgzLDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0 aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAg ICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJs aWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxl IG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmlu Zm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0g cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IHQgICAgICAgICB8IHAgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3Jp cHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9uICAgICAgICB8 IHAgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAg ICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAK IEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05F KTsKQEAgLTM5MSw3ICszOTksNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlv dSBtdXN0IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9u IHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJy b3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi fSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91 c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAg ICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAg ICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3IgPSB0cnVl KTsKQEAgLTM5OSw3ICs0MDcsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IFNFVCAoZGlzYWJsZV9vbl9lcnJvciA9IHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3Ry ZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBT eW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExT TiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg ZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK KyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8 IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IHQg ICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1 YnNjcmlwdGlvbi5zcWwKaW5kZXggZWFlYWRlOC4uNzk5MWFiZiAxMDA2NDQKLS0tIGEvc3JjL3Rl c3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdWJzY3JpcHRpb24uc3FsCkBAIC0xNjcsNyArMTY3LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogCiBEUk9QIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWI7CiAKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29s ZWFuCistLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBD UkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZh bHNlLCBzdHJlYW1pbmcgPSBmb28pOwogCiAtLSBub3cgaXQgd29ya3MKQEAgLTE3NSw2ICsxNzUs MTAgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIAogXGRScysKIAorQUxURVIgU1VCU0NSSVBU SU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKKworXGRScysK KwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IGZh bHNlKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUg PSBOT05FKTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg Yi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA2MGM3MWQwLi40MmM1YzRk IDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTQ3Miw2ICsxNDcyLDcgQEAgTG9naWNh bFJlcFJlbElkCiBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIExvZ2ljYWxSZXBSZWxhdGlvbgogTG9n aWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhCitMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRh CiBMb2dpY2FsUmVwVHVwbGVEYXRhCiBMb2dpY2FsUmVwVHlwCiBMb2dpY2FsUmVwV29ya2VyCkBA IC0xNjYzLDYgKzE2NjQsOSBAQCBPdmVycmlkZVN0YWNrRW50cnkKIE92ZXJyaWRpbmdLaW5kCiBQ QUNFX0hFQURFUgogUEFDTAorUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5CitQYXJhbGxlbEFwcGx5 V29ya2VySW5mbworUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZAogUEFUSAogUEJPT0wKIFBDdHh0 SGFuZGxlCkBAIC0xODk0LDYgKzE4OTgsNyBAQCBQYXJhbGxlbFNsb3RSZXN1bHRIYW5kbGVyCiBQ YXJhbGxlbFN0YXRlCiBQYXJhbGxlbFRhYmxlU2NhbkRlc2MKIFBhcmFsbGVsVGFibGVTY2FuRGVz Y0RhdGEKK1BhcmFsbGVsVHJhbnNTdGF0ZQogUGFyYWxsZWxWYWN1dW1TdGF0ZQogUGFyYWxsZWxX b3JrZXJDb250ZXh0CiBQYXJhbGxlbFdvcmtlckluZm8KQEAgLTI3ODMsNiArMjc4OCw3IEBAIFRy YW5zYWN0aW9uU3RtdEtpbmQKIFRyYW5zZm9ybUluZm8KIFRyYW5zZm9ybUpzb25TdHJpbmdWYWx1 ZXNTdGF0ZQogVHJhbnNpdGlvbkNhcHR1cmVTdGF0ZQorVHJhbnNBcHBseUFjdGlvbgogVHJnbUFy YwogVHJnbUFyY0luZm8KIFRyZ21Cb3VuZAotLSAKMi43LjIud2luZG93cy4xCgo= --_009_OS0PR01MB5716C3561CF53027F22B47AF94E79OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v62-0006-Stop-extra-worker-if-GUC-was-changed.patch" Content-Description: v62-0006-Stop-extra-worker-if-GUC-was-changed.patch Content-Disposition: attachment; filename="v62-0006-Stop-extra-worker-if-GUC-was-changed.patch"; size=4771; creation-date="Sat, 17 Dec 2022 13:39:18 GMT"; modification-date="Sat, 17 Dec 2022 14:04:09 GMT" Content-Transfer-Encoding: base64 RnJvbSBmYWMxNGI0ZmZiZGJmMWQ3NTlhODQyNjBjMTI0OGY3YTEzY2Y0MmYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBzaGVybG9ja2NwcCA8c2hlcmxvY2tjcHBAZm94bWFpbC5jb20+ CkRhdGU6IFNhdCwgMTcgRGVjIDIwMjIgMjA6NDM6MjEgKzA4MDAKU3ViamVjdDogW1BBVENIIHY2 MiA2LzhdIFN0b3AgZXh0cmEgd29ya2VyIGlmIEdVQyB3YXMgY2hhbmdlZAoKSWYgdGhlIG1heF9w YXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gaXMgY2hhbmdlZCB0byBhCmxv d2VyIHZhbHVlLCB0cnkgdG8gc3RvcCBmcmVlIHdvcmtlcnMgaW4gdGhlIHBvb2wgdG8ga2VlcCB0 aGUgbnVtYmVyIG9mCndvcmtlcnMgbG93ZXIgdGhhbiBoYWxmIG9mIHRoZSBtYXhfcGFyYWxsZWxf YXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIAoKLS0tCiAuLi4vcmVwbGljYXRpb24vbG9n aWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgICAgICB8IDczICsrKysrKysrKysrKysrKysrKy0t LS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICAgICAgIHwg IDcgKysrCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgICAg ICB8ICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNjkgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBh cmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFy YWxsZWx3b3JrZXIuYwppbmRleCA1OTNkODUwLi42MjNlNTUxIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtNTQx LDYgKzU0MSwyNSBAQCBwYV9maW5kX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCkKIH0KIAogLyoK KyAqIFN0b3AgdGhlIGdpdmVuIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhbmQgZnJlZSB0aGUgY29y cmVzcG9uZGluZyBpbmZvLgorICovCitzdGF0aWMgdm9pZAorcGFfc3RvcF93b3JrZXIoUGFyYWxs ZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCWludAkJCXNsb3Rfbm87CisJdWludDE2CQln ZW5lcmF0aW9uOworCisJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisJ Z2VuZXJhdGlvbiA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247 CisJc2xvdF9ubyA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX3Nsb3Rfbm87CisJ U3BpbkxvY2tSZWxlYXNlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7CisKKwlsb2dpY2FscmVwX3Bh X3dvcmtlcl9zdG9wKHNsb3Rfbm8sIGdlbmVyYXRpb24pOworCisJcGFfZnJlZV93b3JrZXJfaW5m byh3aW5mbyk7Cit9CisKKy8qCiAgKiBNYWtlcyB0aGUgd29ya2VyIGF2YWlsYWJsZSBmb3IgcmV1 c2UuCiAgKgogICogVGhpcyByZW1vdmVzIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZW50cnkg ZnJvbSB0aGUgaGFzaCB0YWJsZSBzbyB0aGF0IGl0CkBAIC01ODUsMTggKzYwNCw3IEBAIHBhX2Zy ZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykKIAkJbGlzdF9sZW5ndGgo UGFyYWxsZWxBcHBseVdvcmtlclBvb2wpID4KIAkJKG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJz X3Blcl9zdWJzY3JpcHRpb24gLyAyKSkKIAl7Ci0JCWludAkJCXNsb3Rfbm87Ci0JCXVpbnQxNgkJ Z2VuZXJhdGlvbjsKLQotCQlTcGluTG9ja0FjcXVpcmUoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsK LQkJZ2VuZXJhdGlvbiA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRp b247Ci0JCXNsb3Rfbm8gPSB3aW5mby0+c2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9zbG90X25v OwotCQlTcGluTG9ja1JlbGVhc2UoJndpbmZvLT5zaGFyZWQtPm11dGV4KTsKLQotCQlsb2dpY2Fs cmVwX3BhX3dvcmtlcl9zdG9wKHNsb3Rfbm8sIGdlbmVyYXRpb24pOwotCi0JCXBhX2ZyZWVfd29y a2VyX2luZm8od2luZm8pOwotCisJCXBhX3N0b3Bfd29ya2VyKHdpbmZvKTsKIAkJcmV0dXJuIHRy dWU7CiAJfQogCkBAIC02MDcsNiArNjE1LDQ3IEBAIHBhX2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICp3aW5mbykKIH0KIAogLyoKKyAqIFRyeSB0byBzdG9wIHBhcmFsbGVsIGFw cGx5IHdvcmtlcnMgdGhhdCBhcmUgbm90IGluIHVzZSB0byBrZWVwIHRoZSBudW1iZXIgb2YKKyAq IHdvcmtlcnMgbG93ZXIgdGhhbiBoYWxmIG9mIHRoZSBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uLgorICovCit2b2lkCitwYV9zdG9wX2lkbGVfd29ya2Vycyh2b2lk KQoreworCUxpc3QgKmFjdGl2ZV93b3JrZXJzOworCUxpc3RDZWxsICpsYzsKKwlpbnQgbWF4X2Fw cGx5d29ya2VycyA9IG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24g LyAyOworCisJaWYgKGxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKSA8PSBtYXhf YXBwbHl3b3JrZXJzKQorCQlyZXR1cm47CisKKwlhY3RpdmVfd29ya2VycyA9IGxpc3RfY29weShQ YXJhbGxlbEFwcGx5V29ya2VyUG9vbCk7CisKKwlmb3JlYWNoKGxjLCBhY3RpdmVfd29ya2VycykK Kwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqKSBsZmlyc3QobGMpOworCisJCS8qCisJCSAqIFRyeSB0byBmcmVlIGFuZCBzdG9w IHRoZSB3b3JrZXIgdGhhdCBpcyBpbiB1c2UuIE5vcm1hbGx5LCB3ZSBmcmVlCisJCSAqIHRoZSB3 b3JrZXIgYWZ0ZXIgZW5zdXJpbmcgdGhhdCB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIGJ5 IHRoZQorCQkgKiBwYXJhbGxlbCB3b3JrZXIgYnV0IGZvciByb2xsYmFja3MsIHdlIGRvbid0IHdh aXQgZm9yIHRoZSB0cmFuc2FjdGlvbgorCQkgKiB0byBmaW5pc2ggc28gY2FuJ3QgZnJlZSB0aGUg d29ya2VyIGluZm9ybWF0aW9uIGltbWVkaWF0ZWx5LgorCQkgKi8KKwkJaWYgKHdpbmZvLT5pbl91 c2UpCisJCQlwYV9mcmVlX3dvcmtlcih3aW5mbyk7CisKKwkJLyogRGlyZWN0bHkgc3RvcCB0aGUg d29ya2VyIGlmIG5vdCBpbiB1c2UuICovCisJCWVsc2UKKwkJCXBhX3N0b3Bfd29ya2VyKHdpbmZv KTsKKworCQkvKiBSZWNoZWNrIHRoZSBudW1iZXIgb2Ygd29ya2Vycy4gKi8KKwkJaWYgKGxpc3Rf bGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJQb29sKSA8PSBtYXhfYXBwbHl3b3JrZXJzKQorCQkJ YnJlYWs7CisJfQorCisJbGlzdF9mcmVlKGFjdGl2ZV93b3JrZXJzKTsKK30KKworLyoKICAqIEZy ZWUgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbmZvcm1hdGlvbiBhbmQgdW5saW5rIHRoZSBm aWxlcyB3aXRoCiAgKiBzZXJpYWxpemVkIGNoYW5nZXMgaWYgYW55LgogICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCBkZjY3ODUxLi5kM2ViNTA3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTM2MTAsNiArMzYxMCwx MyBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAkJewog CQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwogCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdD X1NJR0hVUCk7CisKKwkJCS8qCisJCQkgKiBUcnkgdG8gc3RvcCBmcmVlIHdvcmtlcnMgaW4gdGhl IHBvb2wgaW4gY2FzZSB0aGUKKwkJCSAqIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9z dWJzY3JpcHRpb24gaXMgY2hhbmdlZCB0byBhCisJCQkgKiBsb3dlciB2YWx1ZS4KKwkJCSAqLwor CQkJcGFfc3RvcF9pZGxlX3dvcmtlcnMoKTsKIAkJfQogCiAJCWlmIChyYyAmIFdMX1RJTUVPVVQp CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDg0OWIzNmMu LjcwY2ZlNGEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRl cm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBA IC0yNjUsNiArMjY1LDcgQEAgZXh0ZXJuIHZvaWQgc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfb3Jp Z2luKGNoYXIgKm9yaWdpbm5hbWUpOwogZXh0ZXJuIHZvaWQgcGFfYWxsb2NhdGVfd29ya2VyKFRy YW5zYWN0aW9uSWQgeGlkKTsKIGV4dGVybiBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqcGFfZmlu ZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIGJvb2wgcGFfZnJlZV93b3JrZXIo UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKK2V4dGVybiB2b2lkIHBhX3N0b3BfaWRs ZV93b3JrZXJzKHZvaWQpOwogZXh0ZXJuIHZvaWQgcGFfZGV0YWNoX2FsbF9lcnJvcl9tcSh2b2lk KTsKIAogZXh0ZXJuIGJvb2wgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3 aW5mbywgU2l6ZSBuYnl0ZXMsCi0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_009_OS0PR01MB5716C3561CF53027F22B47AF94E79OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v62-0003-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v62-0003-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v62-0003-Test-streaming-parallel-option-in-tap-test.patch"; size=81989; creation-date="Sat, 17 Dec 2022 13:39:17 GMT"; modification-date="Sat, 17 Dec 2022 14:04:10 GMT" Content-Transfer-Encoding: base64 RnJvbSBlMzJlZmEyMjA4N2YzNGYzYzVkNzRiZTBkYzI5NTBiZTg4M2Q3NDViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2NjIg My84XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAy MzIgKysrKysrLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3Qu cGwgICAgICB8IDE0MyArKysrLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1f ZGRsLnBsICAgICAgICAgIHwgMjIxICsrKysrKy0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAxOF9z dHJlYW1fc3VieGFjdF9hYm9ydC5wbCAgICAgfCAyMzMgKysrKysrLS0tCiAuLi4vc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCB8IDEzNCArKystLQogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAgfCAzOTMgKysrKysr KysrLS0tLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBs ICAgICB8IDU0MCArKysrKysrKysrKystLS0tLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMzJf c3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsIHwgMTUyICsrKysrKwogOSBmaWxlcyBjaGFuZ2Vk LCAxNDA0IGluc2VydGlvbnMoKyksIDY0NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBs CgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCmluZGV4IDg1ZDFkZDkuLmI5NTFkOTcgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTM2LDYgKzM2LDcgQEAgdGVzdHMgKz0gewogICAg ICAgJ3QvMDI5X29uX2Vycm9yLnBsJywKICAgICAgICd0LzAzMF9vcmlnaW4ucGwnLAogICAgICAg J3QvMDMxX2NvbHVtbl9saXN0LnBsJywKKyAgICAgICd0LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29u ZmxpY3QucGwnLAogICAgICAgJ3QvMTAwX2J1Z3MucGwnLAogICAgIF0sCiAgIH0sCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAppbmRleCBjYmFhMzI3Li4zODk0MWZmIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKQEAgLTgsNiArOCwxNDkgQEAgdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2Ug VGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0 aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2Ny aWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgkaXNfcGFy YWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJV RzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0eXBlIGNv bW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29t bW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1l dGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9u IGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sK KwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3Bh cmFsbGVsKSA9IEBfOworCisJIyBJbnRlcmxlYXZlIGEgcGFpciBvZiB0cmFuc2FjdGlvbnMsIGVh Y2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgorCW15ICRpbiAgPSAnJzsKKwlteSAkb3V0ID0g Jyc7CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCW15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0 KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworCW15ICRoID0g JG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQs ICR0aW1lciwKKwkJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworCSMgSWYgInN0cmVhbWluZyIgcGFy YW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0 aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBw bHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdl cyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlz X3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJz Y3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkkaW4g Lj0gcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFi IFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJfTsKKwkkaC0+cHVtcF9uYjsKKworCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAw MSwgOTk5OSkgcyhpKTsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gNTAwMDsKKwlD T01NSVQ7CisJfSk7CisKKwkkaW4gLj0gcXsKKwlDT01NSVQ7CisJXHEKKwl9OworCSRoLT5maW5p c2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5leHQgdGVzdCBmYWlsLCBzbyBpZ25vcmUgdGhlbSBo ZXJlCisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ Y2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxl bCwgJ0NPTU1JVCcpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks CisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMg VGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCisJJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQgKGJp bmFyeSA9IG9uKSIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24u CisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIEluc2VydCwg dXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0Lgor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOwor CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2Qo YSwzKSA9IDA7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVy LCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCSRyZXN1bHQgPQorCSAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwg cXEoNjY2N3w2NjY3fDY2NjcpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2Fs IGRlZmF1bHRzJyk7CisKKwkjIENoYW5nZSB0aGUgbG9jYWwgdmFsdWVzIG9mIHRoZSBleHRyYSBj b2x1bW5zIG9uIHRoZSBzdWJzY3JpYmVyLAorCSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNr IHRoYXQgc3Vic2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAorCSMgdmFsdWVzLiBUaGlzIGlz IHRvIGVuc3VyZSB0aGF0IG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGJlaGF2ZQorCSMgcHJv cGVybHkgYWZ0ZXIgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisJJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGMgPSAnZXBvY2gn Ojp0aW1lc3RhbXB0eiArIDk4NzY1NDMyMSAqIGludGVydmFsICcxcyciCisJKTsKKworCSMgQ2hl Y2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOworCisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFs bGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQn KTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0 MzIxKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFx KDY2Njd8NjY2N3w2NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5 IGNoYW5nZWQgZGF0YScpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJ eworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJ CSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxv YWQ7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVy ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1 Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsx ODAsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRF IFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1l ID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0 IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNV QlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNh dGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9 IG9uKSIKICk7CkBAIC00OSw4MiArMTk2LDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVz dWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3Jp YmVyJyk7CiAKLSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2Vl ZGluZyB0aGUgNjRrQiBsaW1pdC4KLW15ICRpbiAgPSAnJzsKLW15ICRvdXQgPSAnJzsKLQotbXkg JHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1l b3V0X2RlZmF1bHQpOwotCi1teSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3Fs KCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCi0Jb25fZXJyb3Jfc3RvcCA9PiAwKTsK LQotJGluIC49IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci19OwotJGgtPnB1bXBfbmI7Ci0KLSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwg OTk5OSkgcyhpKTsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiA1MDAwOwotQ09NTUlU OwotfSk7Ci0KLSRpbiAuPSBxewotQ09NTUlUOwotXHEKLX07Ci0kaC0+ZmluaXNoOyAgICAjIGVy cm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQs IHFxKDMzMzR8MzMzNHwzMzM0KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBk ZWZhdWx0cycpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3Jp YmVyLCAkYXBwbmFtZSwgMCk7CiAKLSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2Rl Ci0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NS SVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKLQotIyBJbnNlcnQsIHVwZGF0ZSBh bmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAw MSwgMTAwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09N TUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3Rh YiIpOwotaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLCAnY2hlY2sgZXh0cmEgY29sdW1u cyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRf cmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRl ID0gJ3N0cmVhbWluZyc7IgorKTsKIAotIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUg ZXh0cmEgY29sdW1ucyBvbiB0aGUgc3Vic2NyaWJlciwKLSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5k IGNoZWNrIHRoYXQgc3Vic2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAotIyB2YWx1ZXMuIFRo aXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCi0j IHByb3Blcmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgogJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9j aCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKLSk7Ci0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGIg PSBtZDUoYTo6dGV4dCkiKTsKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVh bWluZyA9IHBhcmFsbGVsLCBiaW5hcnkgPSBvZmYpIik7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50 aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBm b3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi0kcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKLSk7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2 NyksCi0JJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0YScp OwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBw bmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0 b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1Ynhh Y3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKaW5k ZXggYmMwYTljZC4uMzZhMTgwMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDE2X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9z dHJlYW1fc3VieGFjdC5wbApAQCAtOCw2ICs4LDk0IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAK KyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxl dGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitz dWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQs ICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJ JG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJcXIvREVCVUc6ICggW0EtWjAtOV0r Oik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAkdHlwZSBjb21tYW5kLywKKwkJCSRv ZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBz IHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2Ft ZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFt aW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsK KworCW15ICRvZmZzZXQgPSAwOworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3Bl Y2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQg dHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJ IyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQs IHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJ eworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJ CSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9h ZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zm c2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZF UE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsIDEwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNF VCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMTUwMCkg cyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAw OworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZFUE9JTlQg czM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygxNTAxLCAyMDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg bW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzNDsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsIDI1MDApIHMoaSk7 CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJQ09NTUlUOworCX0pOwor CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNr X3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdD T01NSVQnKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3fDE2NjcpLAorCQkn Y2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5k IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDbGVhbnVw IHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKSIpOworCSRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9z aXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIp OworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNo ZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5n ID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxMjUsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxF IHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04g JyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElP TiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OSw0MSArMTQxLDI2IEBA IG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFs IGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgSW5zZXJ0LCB1cGRhdGUgYW5k IGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoICAgIDMsICA1 MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikg PSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5U IHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3Nlcmllcyg1MDEsICAxMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgIDE1MDApIHMoaSk7Ci1V UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHMzOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxNTAxLCAgMjAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsIDI1MDApIHMoaSk7Ci1VUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3 fDE2NjcpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1p bmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7 CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcg c3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBU SU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNo ZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlk IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBv dXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJT Q1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1 Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3 X3N0cmVhbV9kZGwucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5w bAppbmRleCA4NjZmMTUxLi41ZTcxNjgyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMTdfc3RyZWFtX2RkbC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdf c3RyZWFtX2RkbC5wbApAQCAtOCw2ICs4LDEzOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisj IENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRl ZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3Vi IGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk aXNfcGFyYWxsZWwsICR0eXBlKSA9IEBfOworCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwkJCXFyL0RFQlVHOiAoIFtBLVowLTldKzop PyBmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSBTVFJFQU0gJHR5cGUgY29tbWFuZC8sCisJCQkkb2Zm c2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3 aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUg Y29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWlu Zz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisK KwlteSAkb2Zmc2V0ID0gMDsKKworCSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlv biB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0 Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUo Mzo6dGV4dCkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7CisJU0FW RVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQp LCAtNCk7CisJQ09NTUlUOworCX0pOworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMg c3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFt ZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRo YXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwp CisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywK KwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJl bG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkk b2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVh bWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNSwgMTAwMCkg cyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOworCVNBVkVQT0lO VCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwg MippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsIDIwMDApIHMoaSk7CisJQ09NTUlUOworCX0p OworCisJIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBE TUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJ TjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDEsIG1kNSgyMDAxOjp0ZXh0KSwg LTIwMDEsIDIqMjAwMSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsK KwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAyLCBtZDUo MjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIwMDIpOworCUNPTU1JVDsKKwl9KTsKKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19w YXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09N TUlUJyk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50 KGUpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAwMnwxKSwK KwkJJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGluIHN0cmVhbWluZyBtb2Rl IGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2hl Y2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24g d2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCisJIyBhZnRlciBE TUwgdG8gZW5zdXJlIHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUgc2NoZW1hIHNlbnQgZm9yIHRlc3Rf dGFiIHNvIHRoYXQKKwkjIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRoZSBzY2hl bWEgYWdhaW4uCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7 CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwg LWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7CisJQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBmIElOVDsKKwlDT01NSVQ7CisJfSk7CisKKwkj IEEgc21hbGwgdHJhbnNhY3Rpb24gdGhhdCB3b24ndCBnZXQgc3RyZWFtZWQuIFRoaXMgaXMganVz dCB0byBlbnN1cmUgdGhhdCB3ZQorCSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJlZmxlY3Qg dGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQqaSBGUk9N IGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFs bGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQn KTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQo ZikgRlJPTSB0ZXN0X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMw MDR8NSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90aCBz dHJlYW1pbmcgYW5kIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zJworCSk7CisKKwkjIENsZWFu dXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdy ZXMnLCBxeworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxURVIgVEFC TEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYywgRFJPUCBDT0xVTU4gZCwgRFJPUCBDT0xVTU4gZSwg RFJPUCBDT0xVTU4gZjsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFs bGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJl ci0+cmVsb2FkOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1 Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAk bm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAt MzcsNiArMTY5LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJ IkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAk YXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNS RUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIg YXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJl YW1pbmcgPSBvbikiCiApOwpAQCAtNDksNzcgKzE4NSwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwog aXMoJHJlc3VsdCwgcXEoMnwwfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8g c3Vic2NyaWJlcicpOwogCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0 aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkp OwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKLVNBVkVQT0lOVCBzMTsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7Ci1DT01N SVQ7Ci19KTsKLQotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBE TUwKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDUsIDEwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09M VU1OIGQgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAyMDAwKSBz KGkpOwotQ09NTUlUOwotfSk7Ci0KLSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlv biB3aXRoIERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdy ZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDEsIG1kNSgy MDAxOjp0ZXh0KSwgLTIwMDEsIDIqMjAwMSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09M VU1OIGUgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgy MDAyLCBtZDUoMjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIwMDIpOwotQ09NTUlUOwot fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRy ZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpIEZST00gdGVzdF90YWIi KTsKLWlzKCRyZXN1bHQsIHFxKDIwMDJ8MTk5OXwxMDAyfDEpLAotCSdjaGVjayBkYXRhIHdhcyBj b3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBj b250YWluIGxvY2FsIGRlZmF1bHRzJwotKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIEEgbGFyZ2UgKHN0cmVhbWVk KSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJmb3Jt ZWQKLSMgYWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIHNjaGVtYSBz ZW50IGZvciB0ZXN0X3RhYiBzbyB0aGF0Ci0jIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBz ZW5kIHRoZSBzY2hlbWEgYWdhaW4uCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAwMCkgcyhp KTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZiBJTlQ7Ci1DT01NSVQ7Ci19KTsK LQotIyBBIHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3QgZ2V0IHN0cmVhbWVkLiBUaGlzIGlz IGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UKLSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJlZmxl Y3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSwgNCppIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJPTSB0ZXN0X3RhYiIpOwot aXMoJHJlc3VsdCwgcXEoNTAwNXw1MDAyfDQwMDV8MzAwNHw1KSwKLQknY2hlY2sgZGF0YSB3YXMg Y29waWVkIHRvIHN1YnNjcmliZXIgZm9yIGJvdGggc3RyZWFtaW5nIGFuZCBub24tc3RyZWFtaW5n IHRyYW5zYWN0aW9ucycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBX SEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5n JzsiCiApOwogCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCisk bm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBp ZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9u YW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGll CisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBj aGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIs ICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3Rv cDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCmluZGV4IDU1MWYxNmQuLmI0MDRmZWQg MTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9h Ym9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3Rf YWJvcnQucGwKQEAgLTgsNiArOCwxNDUgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7 CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVj ayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3Vj Y2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVj a19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3Bh cmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmlu aXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7 CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2gg YXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUg Y2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFy YWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkg JG9mZnNldCA9IDA7CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQg YXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2Fj dGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkjIFdlIGhh dmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVt cCB1cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRu b2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19t aW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0K KworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAt cyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5z YWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7 CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJU0FWRVBPSU5UIHMy OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1 MDEsMjAwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsMjUwMCkgcyhp KTsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAwMCkgcyhpKTsKKwlTQVZFUE9J TlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7CisJU0FWRVBPSU5UIHM1OworCUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMzUwMSw0MDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVf c3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAnQ09NTUlUJyk7CisKKwlteSAkcmVz dWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEo MjAwMHwwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9u IHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkp OworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9 IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJh bnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyBvdXQgb2Ygb3JkZXIKKwkjIHN1YnRy YW5zYWN0aW9uIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9z dGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNDAwMSw0NTAwKSBzKGkpOworCVNBVkVQT0lO VCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg2MDAxLDY1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNzAwMSw3NTAwKSBz KGkpOworCVJFTEVBU0UgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDApIHMoaSk7CisJUk9MTEJBQ0sg VE8gczE7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAk b2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdDT01NSVQnKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyNTAwfDApLAorCQknY2hl Y2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOwor CisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1z ICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNh Y3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjaworCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODUwMSw5 MDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUwMCkgcyhpKTsKKwlT QVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5NTAxLDEwMDAwKSBzKGkpOworCVJPTExCQUNLOworCX0p OworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNo ZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWws ICdBQk9SVCcpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIp OworCWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVmbGVjdGVk IG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQor CXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ CQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVs b2FkOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hl ciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9w dWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzYsNiAr MTc1LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFU RSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFt ZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVz dCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBT VUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGlj YXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcg PSBvbikiCiApOwpAQCAtNDgsODEgKzE5MSwyNSBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAn Y2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIGxhcmdl IChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCi0kbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDMsNTAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLVNB VkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOwotU0FWRVBPSU5UIHMzOwotSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygxNTAxLDIwMDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwyNTAw KSBzKGkpOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAwMCkgcyhpKTsKLVNBVkVQ T0lOVCBzNDsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAwKSBzKGkpOwotU0FWRVBPSU5UIHM1OwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygzNTAxLDQwMDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00g dGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRv IHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0 aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyCi0jIHN1YnRyYW5zYWN0 aW9uIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDUwMDEsNTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBz KGkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDApIHMoaSk7Ci1SRUxFQVNFIHMy OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg4MDAxLDg1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUNPTU1JVDsKLX0p OwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVz dWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjUw MHwwKSwKLQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vi c2NyaWJlcicpOwotCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3Jp YmVyIHJlY2VpdmluZyByb2xsYmFjawotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7Ci1TQVZFUE9JTlQg czE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDkwMDEsOTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUw MSwxMDAwMCkgcyhpKTsKLVJPTExCQUNLOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRl c3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyNTAwfDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJl ZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBh cmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8g cmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKIAogJG5vZGVf c3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCmlu ZGV4IDRkN2RhODIuLmMwNWQ4ODIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbApAQCAtOSw2ICs5LDkxIEBAIHVz ZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxz OwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0 cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJHR5cGUpID0gQF87CisKKwlpZiAo JGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCQkJ cXIvREVCVUc6ICggW0EtWjAtOV0rOik/IGZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIFNUUkVBTSAk dHlwZSBjb21tYW5kLywKKwkJCSRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwg dGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisj IHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVh bWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFt aW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs ICRpc19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBJZiAic3RyZWFt aW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hl Y2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9n IG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5Lgor CWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRu b2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsK KworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xM QkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlC RUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBD T0xVTU4gYyBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkp OworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7CisJU0FWRVBPSU5UIHMy OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3Rf dGFiIEFERCBDT0xVTU4gZSBJTlQ7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTUwMSwyMDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1O IGM7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSwgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlDT01N SVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCwgJ0NPTU1JVCcpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJP TSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKKwkJJ2NoZWNrIHJvbGxi YWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNv bHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0 IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFi IERST1AgQ09MVU1OIGM7CisJfSk7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJh bGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmli ZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9w dWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwog JG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAg LTM3LDYgKzEyMiwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAog CSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkg JGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJD UkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3Ry IGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3Ry ZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDM1ICsxMzgsMjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEo MnwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAot IyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNL cwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygzLDUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJ TlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLUFMVEVSIFRB QkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4g ZSBJTlQ7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkg cyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7Ci1ST0xMQkFDSyBUTyBz MTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKLQknY2hl Y2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQg ZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9zdHJlYW1pbmcoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1v ZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215 ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxF Q1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0g JyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIg U0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVl cnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3Rh dF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3Rh dGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2Fp dGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwor Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBu YW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3Rv cDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nh c2NhZGUucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5w bAppbmRleCA3YTc5N2YzLi40OTAyMjYzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbApAQCAtMTEsNiArMTEsMjM4IEBAIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlv biB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmli ZXIsICRvZmZzZXQsICRzdHJlYW1pbmdfbW9kZSwgJHR5cGUpID0gQF87CisKKwlpZiAoJHN0cmVh bWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2coCisJCQlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0 aGUgU1RSRUFNICR0eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fw c3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0 cmVhbWluZyIgcGFyYW1ldGVyCisjIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZv ciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9cGFyYWxsZWwKKyMgY2FzZXMuCitzdWIg dGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywgJGFwcG5h bWVfQiwgJGFwcG5hbWVfQywgJHN0cmVhbWluZ19tb2RlKSA9CisJICBAXzsKKworCW15ICRvZmZz ZXRfQiA9IDA7CisJbXkgJG9mZnNldF9DID0gMDsKKworCW15ICRvbGRwaWRfQiA9ICRub2RlX0Et PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9y ZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0InIEFORCBz dGF0ZSA9ICdzdHJlYW1pbmcnOyIpOworCW15ICRvbGRwaWRfQyA9ICRub2RlX0ItPnNhZmVfcHNx bCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlv bgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdz dHJlYW1pbmcnOyIpOworCisJIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uIHN0cmVhbWluZyBt b2RlCisKKwkkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWJfQgorCQlTRVQgKHN0cmVhbWluZyA9ICRzdHJlYW1pbmdfbW9kZSk7 Iik7CisJJG5vZGVfQy0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNVQlND UklQVElPTiB0YXBfc3ViX0MKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpIik7 CisKKwkjIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZpbmlzaCBpbml0aWFsaXphdGlvbgorCisJ JG5vZGVfQS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlk ICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRp b25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBk aWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKwkkbm9k ZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCAiCisJCVNFTEVDVCBwaWQgIT0g JG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9u YW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKwkpIG9yIGRpZSAi VGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQiOworCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQ UkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCisJ IyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMg cmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyKHMpIGFmdGVyIHRoZSBjb21taXQuCisJIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMg c3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFt ZWQgdHJhbnNhY3Rpb24gd2FzIHByZXBhcmVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0 aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJHN0cmVhbWluZ19t b2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9CLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfQi0+cmVsb2Fk OworCisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9t ZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9DLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0 aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldF9CID0gLXMgJG5vZGVfQi0+ bG9nZmlsZTsKKwkkb2Zmc2V0X0MgPSAtcyAkbm9kZV9DLT5sb2dmaWxlOworCisJIyBJbnNlcnQs IHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4K KwkjIFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs IHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVw YXJlZF90YWInO30pOworCisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsK Kwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJY2hlY2tfcGFyYWxs ZWxfbG9nKCRub2RlX0IsICRvZmZzZXRfQiwgJHN0cmVhbWluZ19tb2RlLCAnUFJFUEFSRScpOwor CWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9DLCAkb2Zmc2V0X0MsICRzdHJlYW1pbmdfbW9kZSwg J1BSRVBBUkUnKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIHByZXBhcmVk IG9uIHN1YnNjcmliZXIocykKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3Jp YmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKwor CSMgMlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBS RVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7 CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gd2FzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVy KHMpCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhh dmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2Nh bCBkZWZhdWx0cycKKwkpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2Vy dGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMsIGFuZCBleHRyYSBjb2x1 bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9u IHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0ID0KKwkgICRub2RlX0It PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0 ZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIp OworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNj cmliZXIgQycpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAy UEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVC4KKwkjIDAuIENs ZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcgb25seSAyIHJvd3MuCisJIyAxLiBJbnNl cnQgb25lIG1vcmUgcm93LgorCSMgMi4gUmVjb3JkIGEgU0FWRVBPSU5ULgorCSMgMy4gRGF0YSBp cyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyA0LiBEbyByb2xsYmFjayB0byBTQVZFUE9JTlQgcHJp b3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCisJIyA1LiBUaGVuIENPTU1JVCBQUkVQQVJFRC4K KwkjCisJIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FWRVBPSU5UIGlzIGFib3J0ZWQgbGVhdmlu ZyBvbmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBmcm9tIHN0ZXAgMSkuCisJIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2Vw dCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2RlX0EtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisK KwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0X0IgPSAt cyAkbm9kZV9CLT5sb2dmaWxlOworCSRvZmZzZXRfQyA9IC1zICRub2RlX0MtPmxvZ2ZpbGU7CisK KwkjIDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5UCisJJG5v ZGVfQS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUJFR0lOOworCQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKKwkJU0FWRVBPSU5UIHNwX2lubmVy OworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1k NShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKKwkJUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwX2lubmVyOworCQlQUkVQQVJF IFRSQU5TQUNUSU9OICdvdXRlcic7CisJCSIpOworCisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwor CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX0IsICRvZmZzZXRfQiwgJHN0cmVhbWluZ19tb2Rl LCAnUFJFUEFSRScpOworCisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgcHJlcGFyZWQg b24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlp cygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIg QicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBx cSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyAy UEMgQ09NTUlUCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFS RUQgJ291dGVyJzsiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7 CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgY2hlY2sgdGhl IHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0KKwkg ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00g cGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBp cyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJz Y3JpYmVyIEMnKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZSBhdCBzdWJzY3JpYmVy KHMpLgorCSMgQWxsIHRoZSBzdHJlYW1lZCBkYXRhIChwcmlvciB0byB0aGUgU0FWRVBPSU5UKSBz aG91bGQgYmUgcm9sbGVkIGJhY2suCisJIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3VsZCBiZSBjb21t aXR0ZWQuCisJJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOworCWlzKCRy ZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBC Jyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBj b21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9ICRub2Rl X0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90 YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21t aXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CisJJHJlc3VsdCA9CisJICAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi OyIpOworCWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24g c3Vic2NyaWJlciBDJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX0EtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7 CisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4K KwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9CLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7 CisJCSRub2RlX0ItPnJlbG9hZDsKKworCQkkbm9kZV9DLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0MtPnJlbG9h ZDsKKwl9Cit9CisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU2V0dXAgYSBj YXNjYWRlIG9mIHB1Yi9zdWIgbm9kZXMuCiAjIG5vZGVfQSAtPiBub2RlX0IgLT4gbm9kZV9DCkBA IC0yNjAsMTYwICs0OTIsMTUgQEAgaXMoJHJlc3VsdCwgcXEoMjEpLCAnUm93cyBjb21taXR0ZWQg YXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CiAjIDJQQyArIFNUUkVBTUlORyBURVNUUwog IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotbXkgJG9sZHBpZF9CID0gJG5vZGVfQS0+c2FmZV9w c3FsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlv bgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0 cmVhbWluZyc7Iik7Ci1teSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3Rn cmVzJywgIgotCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBw bGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsK LQotIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uIChzdHJlYW1pbmcgPSBvbikKLQotJG5vZGVf Qi0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1 Yl9CCi0JU0VUIChzdHJlYW1pbmcgPSBvbik7Iik7Ci0kbm9kZV9DLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgIgotCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0MKLQlTRVQgKHN0cmVhbWlu ZyA9IG9uKSIpOwotCi0jIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZpbmlzaCBpbml0aWFsaXph dGlvbgotCi0kbm9kZV9BLT5wb2xsX3F1ZXJ5X3VudGlsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxF Q1QgcGlkICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKLSkg b3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7Ci0k bm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkICE9 ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9u YW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKLSkgb3IgZGllICJU aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7Ci0KLSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQ QVJFRC4KLSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4g VGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNh dGVkIG9uIHN1YnNjcmliZXIocykgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKLQotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dz IHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgVGhlbiAyUEMgUFJFUEFSRQotJG5vZGVfQS0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBz KGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJB TlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7 CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWlu ZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCit0ZXN0X3N0cmVh bWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAn b24nKTsKIAotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgcHJlcGFyZWQgb24gc3Vi c2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBx cSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3Vs dCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9u IGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIDJQQyBDT01NSVQKLSRub2RlX0Et PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3Rh Yic7Iik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9C LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rp b24gd2FzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0gJG5vZGVfQi0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwK LQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCLCBh bmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJwotKTsKLSRyZXN1bHQgPSAkbm9k ZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0 fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3Jp YmVyIEMsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCi0pOwotCi0jIGNo ZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVz dWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRub2RlX0Mt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyIEMnKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBU ZXN0IDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5ULgotIyAw LiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dzLgotIyAxLiBJ bnNlcnQgb25lIG1vcmUgcm93LgotIyAyLiBSZWNvcmQgYSBTQVZFUE9JTlQuCi0jIDMuIERhdGEg aXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyA0LiBEbyByb2xsYmFjayB0byBTQVZFUE9JTlQgcHJp b3IgdG8gdGhlIHN0cmVhbWVkIGluc2VydHMuCi0jIDUuIFRoZW4gQ09NTUlUIFBSRVBBUkVELgot IwotIyBFeHBlY3QgZGF0YSBhZnRlciB0aGUgU0FWRVBPSU5UIGlzIGFib3J0ZWQgbGVhdmluZyBv bmx5IDMgcm93cyAoPSAyIG9yaWdpbmFsICsgMSBmcm9tIHN0ZXAgMSkuCi0jIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9y IDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX0EtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgMlBD IFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQKLSRub2RlX0EtPnNh ZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7Ci0JU0FWRVBPSU5UIHNwX2lubmVyOwotCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlS T0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BfaW5uZXI7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAnb3V0 ZXInOwotCSIpOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5v ZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKLQotIyBjaGVjayB0aGUgdHJhbnNh Y3Rpb24gc3RhdGUgcHJlcGFyZWQgb24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2Rl X0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVk IG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygk cmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycp OwotCi0jIDJQQyBDT01NSVQKLSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlU IFBSRVBBUkVEICdvdXRlcic7Iik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0jIGNoZWNr IHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0K LSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg ZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK LWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBD Jyk7Ci0KLSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZSBhdCBzdWJzY3JpYmVyKHMpLgotIyBB bGwgdGhlIHN0cmVhbWVkIGRhdGEgKHByaW9yIHRvIHRoZSBTQVZFUE9JTlQpIHNob3VsZCBiZSBy b2xsZWQgYmFjay4KLSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0dGVkLgotJHJl c3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwg J1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9 ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVz dF90YWI7Iik7Ci1pcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50 IG9uIHN1YnNjcmliZXIgQicpOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7 Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1 YnNjcmliZXIgQycpOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWI7Iik7Ci1pcygkcmVzdWx0LCBxcSgzKSwgJ1Jv d3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAn cGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwordGVzdF9z dHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVfQywgJGFwcG5hbWVfQiwgJGFwcG5hbWVf QywgJ3BhcmFsbGVsJyk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hl Y2sgYWxsIHRoZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MjNfdHdvcGhhc2Vfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3Bo YXNlX3N0cmVhbS5wbAppbmRleCA5YjQ1NDEwLi5jOTY2YWM5IDEwMDY0NAotLS0gYS9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKQEAgLTgsNiArOCwzMDggQEAgdXNl IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7 CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRy YW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFs bGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVf c3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgk aXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlx ci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0 eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0 aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMg cGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFt aW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1p bmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwg JGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkgJG9mZnNldCA9IDA7CisKKwkjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVE LgorCSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KKwkjIDIuIFRo ZW4gZG8gY29tbWl0IHByZXBhcmVkLgorCSMKKwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNh dGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKworCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNp ZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRy YW5zYWN0aW9uIHdhcyBwcmVwYXJlZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkj IFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwg c28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7 CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJ ImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2Fk OworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZz ZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBjaGVjayB0aGF0IDJQQyBn ZXRzIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcgorCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0 ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUw MDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkj IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJl cgorCW15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1 bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJ IyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7 Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ IyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhh dmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9j YWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJz Y3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQ QyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJh Y2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBE YXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KKwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgor CSMKKwkjIEV4cGVjdCBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAy IHJvd3MuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVs ZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBu b3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRo ZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0 a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7 CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJl ZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNf cGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4g cHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBB UkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0 ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyfDJ8MiksCisJCSdSb3dzIGluc2Vy dGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiBy b3dzJworCSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlp cygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicp OworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgQ2hlY2sgdGhhdCAyUEMg Q09NTUlUIFBSRVBBUkVEIGlzIGRlY29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4KKwkj IDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2 NGtCIGxpbWl0LgorCSMgMi4gVGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFu c2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQg dGhlIHBlbmRpbmcgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCSMKKwkjIEV4cGVjdCBhbGwg ZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0Lgor CSMgTm90ZTogYm90aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4K KwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIENoZWNrIHRoZSBzdWJzY3Jp YmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9n ZmlsZTsKKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxewor CQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKKworCSRub2RlX3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCSRub2Rl X3B1Ymxpc2hlci0+c3RvcCgnaW1tZWRpYXRlJyk7CisKKwkkbm9kZV9wdWJsaXNoZXItPnN0YXJ0 OworCSRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJ1BSRVBBUkUnKTsKKworCSMgY29t bWl0IHBvc3QgdGhlIHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgaW5zZXJ0 cyBhcmUgdmlzaWJsZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dz IGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEg Y29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9y ZSBST0xMQkFDSyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJv d3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3Ry ZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNo IGlzIGFmdGVyIHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVE LgorCSMKKwkjIEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyBy b3dzIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4K KwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhl IGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgYSA+IDI7Iik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K Kwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgVGhlbiBpbnNl cnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1p dC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVH SU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg bW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7 fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ Y2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxl bCwgJ1BSRVBBUkUnKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJl ZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBz dWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUg b3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0cmFuc2Fj dGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZv ciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXIn KSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBh cmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJl ciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQQyBzdGlsbCB3YXMg cmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8MyksCisJCSdjaGVjayB0aGUgb3V0c2lk ZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKwkkcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJP TSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9u IGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlU IFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBh cmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2lu ZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIg dGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgorCSMKKwkjIEV4 cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAo dGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3 aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBDaGVjayB0 aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91 Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMo aSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBU UkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9z dWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICdQUkVQQVJFJyk7CisKKwkjIGNoZWNr IHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEp LCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBJbnNlcnQg YSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2Fj dGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tz IHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5IGtleQor CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKworCSMgMlBDIHRyYW5zYWN0aW9u IGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFu c2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM1 fDMzMzV8MzMzNSksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBvdXRzaWRl IGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21t aXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxl bCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXIt PnJlbG9hZDsKKwl9Cit9CisKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU2V0 dXAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTQ4LDYgKzM1MCwxMCBAQCAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJ T04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1 Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3Ry ZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCAiCiAJQ1JFQVRFIFNVQlNDUklQ VElPTiB0YXBfc3ViCkBAIC02NCwyMzYgKzM3MCwzMCBAQCBteSAkdHdvcGhhc2VfcXVlcnkgPQog JG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLCAkdHdvcGhhc2Vf cXVlcnkpCiAgIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIg dG8gZW5hYmxlIHR3b3BoYXNlIjsKIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog IyBDaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyCi0jIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiBteSAkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGlu aXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgot IyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgotIyAyLiBUaGVuIGRv IGNvbW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24g c3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAwKTsKIAotIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlcgotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4 Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0 Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJl cGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9u IHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygk cmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsK LQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWIn OyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0j IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRl ZmF1bHRzJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1 c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFw cGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7 Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEo MCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgLyBST0xMQkFDSyBQ UkVQQVJFRC4KLSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUg cmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgotIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQ Qy4KLSMgMy4gRG8gcm9sbGJhY2sgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBkYXRhIHJvbGxzIGJh Y2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCi0jIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93 cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5z ZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGlt aXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lO OwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUo YikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CiAK LSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0 cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgMlBDIHRyYW5zYWN0 aW9uIGdldHMgYWJvcnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5z YWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyfDJ8MiksCi0J J1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGFyZSByb2xsZWQgYmFjaywgbGVhdmluZyBvbmx5IHRoZSBv cmlnaW5hbCAyIHJvd3MnKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3Jp YmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQ2hlY2sgdGhhdCAy UEMgQ09NTUlUIFBSRVBBUkVEIGlzIGRlY29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4K LSMgMS4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhl IDY0a0IgbGltaXQuCi0jIDIuIFRoZW4gc2VydmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMgdHJh bnNhY3Rpb24gaXMgY29tbWl0dGVkLgotIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQg dGhlIHBlbmRpbmcgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgotIwotIyBFeHBlY3QgYWxsIGRh dGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMg Tm90ZTogYm90aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4KLSMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0J VVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElP TiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1l ZGlhdGUnKTsKLSRub2RlX3B1Ymxpc2hlci0+c3RvcCgnaW1tZWRpYXRlJyk7Ci0KLSRub2RlX3B1 Ymxpc2hlci0+c3RhcnQ7Ci0kbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKLQotIyBjb21taXQgcG9z dCB0aGUgcmVzdGFydAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki Q09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0kbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIGluc2VydHMgYXJlIHZpc2li bGUKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIp OwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQ QyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWlu IGxvY2FsIGRlZmF1bHRzJwotKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwot IyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBST0xMQkFDSyBQUkVQQVJF RC4KLSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGlj YXRlZCBvbiBzdWJzY3JpYmVyLgotIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KLSMg My4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJF LgotIyA0LiBUaGVuIGRvIGEgUk9MTEJBQ0sgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCB0aGUgMlBD IGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyByb3dzIG9uIHRoZSBzdWJzY3JpYmVyCi0j ICh0aGUgb3JpZ2luYWwgMiArIGluc2VydGVkIDEpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdp bGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwg dXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0Lgot JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQg dHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNh Y3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIEluc2VydCBhIGRpZmZlcmVu dCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQotIyBO b3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1 cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhdGUgcHJpbWFyeSBrZXkKLSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVF UyAoOTk5OTksICdmb29iYXInKSIpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQK LSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlJPTExCQUNLIFBSRVBB UkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVk IG9uIHN1YnNjcmliZXIsCi0jIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQ QyBzdGlsbCB3YXMgcmVwbGljYXRlZAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzfDN8MyksICdjaGVjayB0aGUg b3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7Ci0KLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0 aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIENPTU1J VCBQUkVQQVJFRC4KLSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBh cmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgotIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5n IDJQQy4KLSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVyIHRo ZSBQUkVQQVJFLgotIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgotIwotIyBFeHBlY3Qg MlBDIGRhdGEgKyB0aGUgZXh0cmEgcm93IGFyZSBvbiB0aGUgc3Vic2NyaWJlcgotIyAodGhlIDMz MzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Ci0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSBy ZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUg YW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQ UkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBp cyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29y ZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRo ZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlz IGluc2VydCBpcyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5 OSwgJ2Zvb2JhcicpIik7Ci0KLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rl c3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJB TFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CiAK LSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgotJHJl c3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSgzMzM1fDMzMzV8MzMzNSksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIChhcyB3 ZWxsIGFzIG91dHNpZGUgaW5zZXJ0KSBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQg ZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwotKTsKKyRub2RlX3B1Ymxpc2hl ci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQg RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91 dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlND UklQVElPTiI7CiAKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygk cmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7 Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBu YW1lLCAxKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBjaGVjayBhbGwg dGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJl YW1fcGFyYWxsZWxfY29uZmxpY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3Ry ZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjEwZWZkMmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsCkBAIC0wLDAgKzEsMTUyIEBACisjIENvcHly aWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKworIyBU ZXN0IGZvciBkZWFkbG9jayBpbiBzdHJlYW1pbmcgbW9kZSAicGFyYWxsZWwiIGluIGxvZ2ljYWwg cmVwbGljYXRpb24uCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0 OjpNb3JlOworCitteSAkb2Zmc2V0ID0gMDsKKworIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKK215 ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlz aGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNh bCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkn bG9naWNhbF9kZWNvZGluZ193b3JrX21lbSA9IDY0a0InKTsKKyRub2RlX3B1Ymxpc2hlci0+c3Rh cnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJlciA9IFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVfc3Vic2Ny aWJlci0+aW5pdDsKKworIyBDaGVjayBpZiBhbnkgc3RyZWFtaW5nIGNodW5rcyBhcmUgYXBwbGll ZCB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBXZQorIyBoYXZlIHRvIGxvb2sgZm9y IHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlIGxvZwor IyB2ZXJib3NpdHkuCiskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+ c3RhcnQ7CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYiAoYSBpbnQpIik7 CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHN1YnNjcmliZXIKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiIChhIGludCkiKTsKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVFIElO REVYIGlkeF90YWIgb24gdGVzdF90YWIoYSkiKTsKKworIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0 aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAn IGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKKwor bXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgIgorCUNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YgorCUNPTk5FQ1RJT04g JyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJworCVBVQkxJQ0FU SU9OIHRhcF9wdWIKKwlXSVRIIChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgY29weV9kYXRhID0gZmFs c2UpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KyMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUg NjRrQiBsaW1pdC4KK215ICRpbiAgPSAnJzsKK215ICRvdXQgPSAnJzsKKworbXkgJHRpbWVyID0g SVBDOjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1 bHQpOworCitteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCisJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworIyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CisjIENvbmZpcm0gaWYgYSBkZWFkbG9jayBiZXR3ZWVuIHRoZSBsZWFk ZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkKKyMgd29ya2VyIGNhbiBiZSBk ZXRlY3RlZC4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCiskaW4gLj0gcXsKK0JFR0lOOworSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkg cyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworIyBFbnN1cmUgdGhhdCB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIGV4ZWN1dGVzIHRoZSBpbnNlcnQgY29tbWFuZCBiZWZvcmUgdGhlCisjIGxlYWRl ciB3b3JrZXIuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICgg W0EtWjAtOV0rOik/IGFwcGxpZWQgWzAtOV0rIGNoYW5nZXMgaW4gdGhlIHN0cmVhbWluZyBjaHVu ay8sCisJJG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJJTlNFUlQgSU5UTyB0ZXN0X3RhYiB2YWx1ZXMoMSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7 CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygK Kwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gZGVhZGxvY2sgZGV0ZWN0ZWQvLAorCSRvZmZzZXQp OworCisjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdv cmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVY IGlkeF90YWIiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBi ZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCitteSAkcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOwor aXMoJHJlc3VsdCwgcXEoNTAwMSksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRl ciBkcm9wcGluZyBpbmRleCcpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZp cm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FU RSBUQUJMRSB0ZXN0X3RhYiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVB VEUgVU5JUVVFIElOREVYIGlkeF90YWIgb24gdGVzdF90YWIoYSkiKTsKKworIyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisjIENvbmZpcm0gaWYgYSBkZWFkbG9jayBiZXR3ZWVuIHR3byBwYXJhbGxlbCBh cHBseSB3b3JrZXJzIGNhbiBiZSBkZXRlY3RlZC4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisj IENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOworSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307 CiskaC0+cHVtcF9uYjsKKworIyBFbnN1cmUgdGhhdCB0aGUgZmlyc3QgcGFyYWxsZWwgYXBwbHkg d29ya2VyIGV4ZWN1dGVzIHRoZSBpbnNlcnQgY29tbWFuZAorIyBiZWZvcmUgdGhlIHNlY29uZCBv bmUuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAt OV0rOik/IGFwcGxpZWQgWzAtOV0rIGNoYW5nZXMgaW4gdGhlIHN0cmVhbWluZyBjaHVuay8sCisJ JG9mZnNldCk7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBz KGkpIik7CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGRl YWRsb2NrIGRldGVjdGVkLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXgg b24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiIik7CisKKyMgV2FpdCBmb3IgdGhp cyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2Vy LgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3Vs dCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNv dW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDEwMDAwKSwgJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CisKKyRub2RlX3N1 YnNjcmliZXItPnN0b3A7Ciskbm9kZV9wdWJsaXNoZXItPnN0b3A7CisKK2RvbmVfdGVzdGluZygp OwotLSAKMi43LjIud2luZG93cy4xCgo= --_009_OS0PR01MB5716C3561CF53027F22B47AF94E79OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v62-0004-Allow-streaming-every-change-without-waiting-til.patch" Content-Description: v62-0004-Allow-streaming-every-change-without-waiting-til.patch Content-Disposition: attachment; filename="v62-0004-Allow-streaming-every-change-without-waiting-til.patch"; size=9624; creation-date="Sat, 17 Dec 2022 13:39:18 GMT"; modification-date="Sat, 17 Dec 2022 14:04:11 GMT" Content-Transfer-Encoding: base64 RnJvbSAzYmZjMDU0NDhiYThlZTkzZTI3ZGI3MjNmYzEwNmIzNDdhNWQxMDMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGkgWXUgPHNoaXkuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog TW9uLCAyNCBPY3QgMjAyMiAxNTo1MjoxNCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjYyIDQvOF0g QWxsb3cgc3RyZWFtaW5nIGV2ZXJ5IGNoYW5nZSB3aXRob3V0IHdhaXRpbmcgdGlsbAogbG9naWNh bF9kZWNvZGluZ193b3JrX21lbS4KCkFkZCBhIG5ldyBHVUMgZm9yY2Vfc3RyZWFtX21vZGUsIHdo ZW4gaXQgaXMgc2V0IG9uLCBzZW5kIHRoZSBjaGFuZ2UgdG8Kb3V0cHV0IHBsdWdpbiBpbW1lZGlh dGVseSBpbiBzdHJlYW1pbmcgbW9kZS4gT3RoZXJ3aXNlLCBzZW5kIHVudGlsCmxvZ2ljYWxfZGVj b2Rpbmdfd29ya19tZW0gaXMgZXhjZWVkZWQuCi0tLQogY29udHJpYi90ZXN0X2RlY29kaW5nL2V4 cGVjdGVkL3N0cmVhbS5vdXQgICAgICAgfCAxMyArKysrCiBjb250cmliL3Rlc3RfZGVjb2Rpbmcv c3FsL3N0cmVhbS5zcWwgICAgICAgICAgICB8ICA4ICsrKwogZG9jL3NyYy9zZ21sL2NvbmZpZy5z Z21sICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKysrKwogc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgfCA4MiArKysrKysrKysrKysrKysrLS0tLS0t LS0tCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAgICAgICB8IDEw ICsrKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgICAgfCAg MSArCiA2IGZpbGVzIGNoYW5nZWQsIDEwMCBpbnNlcnRpb25zKCspLCAzMCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9jb250cmliL3Rlc3RfZGVjb2RpbmcvZXhwZWN0ZWQvc3RyZWFtLm91dCBi L2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9zdHJlYW0ub3V0CmluZGV4IDBmMjFkY2Iu LmIwYmI0NjcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9zdHJl YW0ub3V0CisrKyBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9leHBlY3RlZC9zdHJlYW0ub3V0CkBA IC0xMDYsNiArMTA2LDE5IEBAIFNFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90X2dldF9j aGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLE5VTEwsICdpbmNsCiAgY29tbWl0dGluZyBz dHJlYW1lZCB0cmFuc2FjdGlvbgogKDE3IHJvd3MpCiAKKy0tIHN0cmVhbWluZyB0ZXN0IHdpdGgg Zm9yY2Vfc3RyZWFtX21vZGUKK1NFVCBmb3JjZV9zdHJlYW1fbW9kZT1vbjsKK1RSVU5DQVRFIHRh YmxlIHN0cmVhbV90ZXN0OworU0VMRUNUIGRhdGEgRlJPTSBwZ19sb2dpY2FsX3Nsb3RfZ2V0X2No YW5nZXMoJ3JlZ3Jlc3Npb25fc2xvdCcsIE5VTEwsTlVMTCwgJ2luY2x1ZGUteGlkcycsICcwJywg J3NraXAtZW1wdHkteGFjdHMnLCAnMScsICdzdHJlYW0tY2hhbmdlcycsICcxJyk7CisgICAgICAg ICAgICAgICAgICAgZGF0YSAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIG9wZW5pbmcgYSBzdHJlYW1lZCBibG9jayBmb3IgdHJh bnNhY3Rpb24KKyBzdHJlYW1pbmcgdHJ1bmNhdGUgZm9yIHRyYW5zYWN0aW9uCisgY2xvc2luZyBh IHN0cmVhbWVkIGJsb2NrIGZvciB0cmFuc2FjdGlvbgorIGNvbW1pdHRpbmcgc3RyZWFtZWQgdHJh bnNhY3Rpb24KKyg0IHJvd3MpCisKK1JFU0VUIGZvcmNlX3N0cmVhbV9tb2RlOwogRFJPUCBUQUJM RSBzdHJlYW1fdGVzdDsKIFNFTEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Np b25fc2xvdCcpOwogIHBnX2Ryb3BfcmVwbGljYXRpb25fc2xvdCAKZGlmZiAtLWdpdCBhL2NvbnRy aWIvdGVzdF9kZWNvZGluZy9zcWwvc3RyZWFtLnNxbCBiL2NvbnRyaWIvdGVzdF9kZWNvZGluZy9z cWwvc3RyZWFtLnNxbAppbmRleCA0ZmVlYzYyLi5hNWE2M2U3IDEwMDY0NAotLS0gYS9jb250cmli L3Rlc3RfZGVjb2Rpbmcvc3FsL3N0cmVhbS5zcWwKKysrIGIvY29udHJpYi90ZXN0X2RlY29kaW5n L3NxbC9zdHJlYW0uc3FsCkBAIC00NCw1ICs0NCwxMyBAQCB0b2FzdGVkLTEyMzQ1Njc4OTAxMjM0 NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAx MgogCiBTRUxFQ1QgZGF0YSBGUk9NIHBnX2xvZ2ljYWxfc2xvdF9nZXRfY2hhbmdlcygncmVncmVz c2lvbl9zbG90JywgTlVMTCxOVUxMLCAnaW5jbHVkZS14aWRzJywgJzAnLCAnc2tpcC1lbXB0eS14 YWN0cycsICcxJywgJ3N0cmVhbS1jaGFuZ2VzJywgJzEnKTsKIAorLS0gc3RyZWFtaW5nIHRlc3Qg d2l0aCBmb3JjZV9zdHJlYW1fbW9kZQorU0VUIGZvcmNlX3N0cmVhbV9tb2RlPW9uOworCitUUlVO Q0FURSB0YWJsZSBzdHJlYW1fdGVzdDsKK1NFTEVDVCBkYXRhIEZST00gcGdfbG9naWNhbF9zbG90 X2dldF9jaGFuZ2VzKCdyZWdyZXNzaW9uX3Nsb3QnLCBOVUxMLE5VTEwsICdpbmNsdWRlLXhpZHMn LCAnMCcsICdza2lwLWVtcHR5LXhhY3RzJywgJzEnLCAnc3RyZWFtLWNoYW5nZXMnLCAnMScpOwor CitSRVNFVCBmb3JjZV9zdHJlYW1fbW9kZTsKKwogRFJPUCBUQUJMRSBzdHJlYW1fdGVzdDsKIFNF TEVDVCBwZ19kcm9wX3JlcGxpY2F0aW9uX3Nsb3QoJ3JlZ3Jlc3Npb25fc2xvdCcpOwpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s CmluZGV4IDg5YzgxN2MuLjAzNTlkYjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTExNjAwLDYgKzExNjAwLDIy IEBAIExPRzogIENsZWFuVXBMb2NrOiBkZWxldGluZzogbG9jaygweGI3YWNkODQ0KSBpZCgyNDY4 OCwyNDY5NiwwLDAsMCwxKQogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+ CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWZvcmNlLXN0cmVhbS1tb2RlIiB4cmVmbGFi ZWw9ImZvcmNlX3N0cmVhbV9tb2RlIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPmZvcmNlX3N0cmVh bV9tb2RlPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJt PgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmZvcmNlX3N0cmVhbV9tb2RlPC92YXJuYW1lPiBj b25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAg ICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBTcGVj aWZpZXMgd2hldGhlciB0byBmb3JjZSBzZW5kaW5nIHRoZSBjaGFuZ2VzIHRvIG91dHB1dCBwbHVn aW4KKyAgICAgICAgaW1tZWRpYXRlbHkgaW4gc3RyZWFtaW5nIG1vZGUuIElmIHNldCB0byA8bGl0 ZXJhbD5vZmY8L2xpdGVyYWw+ICh0aGUKKyAgICAgICAgZGVmYXVsdCksIHNlbmQgdW50aWwgPHZh cm5hbWU+bG9naWNhbF9kZWNvZGluZ193b3JrX21lbTwvdmFybmFtZT4gaXMKKyAgICAgICAgZXhj ZWVkZWQuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4KKyAgICAgPC92YXJsaXN0 ZW50cnk+CisKICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgPC9zZWN0MT4KICAgPHNlY3QxIGlkPSJy dW50aW1lLWNvbmZpZy1zaG9ydCI+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcmVvcmRlcmJ1ZmZlci5jCmluZGV4IDhkNWJiYWEuLjZmMzMwMTggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0yMDksNiArMjA5 LDEyIEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJEaXNrQ2hhbmdlCiBpbnQJCQlsb2dp Y2FsX2RlY29kaW5nX3dvcmtfbWVtOwogc3RhdGljIGNvbnN0IFNpemUgbWF4X2NoYW5nZXNfaW5f bWVtb3J5ID0gNDA5NjsgLyogWFhYIGZvciByZXN0b3JlIG9ubHkgKi8KIAorLyoKKyAqIFdoZXRo ZXIgdG8gc2VuZCB0aGUgY2hhbmdlIHRvIG91dHB1dCBwbHVnaW4gaW1tZWRpYXRlbHkgaW4gc3Ry ZWFtaW5nIG1vZGUuCisgKiBXaGVuIGl0IGlzIG9mZiwgd2FpdCB1bnRpbCBsb2dpY2FsX2RlY29k aW5nX3dvcmtfbWVtIGlzIGV4Y2VlZGVkLgorICovCitib29sCQlmb3JjZV9zdHJlYW1fbW9kZTsK KwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBwcmltYXJ5 IHJlb3JkZXJidWZmZXIgc3VwcG9ydCByb3V0aW5lcwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0zNTQzLDcgKzM1NDksOSBAQCBSZW9yZGVyQnVmZmVyTGFy Z2VzdFN0cmVhbWFibGVUb3BUWE4oUmVvcmRlckJ1ZmZlciAqcmIpCiAvKgogICogQ2hlY2sgd2hl dGhlciB0aGUgbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSBsaW1pdCB3YXMgcmVhY2hlZCwgYW5k IGlmIHllcwogICogcGljayB0aGUgbGFyZ2VzdCAoc3ViKXRyYW5zYWN0aW9uIGF0LWEtdGltZSB0 byBldmljdCBhbmQgc3BpbGwgaXRzIGNoYW5nZXMgdG8KLSAqIGRpc2sgdW50aWwgd2UgcmVhY2gg dW5kZXIgdGhlIG1lbW9yeSBsaW1pdC4KKyAqIGRpc2sgb3Igc2VuZCB0byBvdXRwdXQgcGx1Z2lu IHVudGlsIHdlIHJlYWNoIHVuZGVyIHRoZSBtZW1vcnkgbGltaXQuCisgKgorICogSWYgZm9yY2Vf c3RyZWFtX21vZGUgaXMgZW5hYmxlZCwgc2VuZCBhbGwgc3RyZWFtYWJsZSBjaGFuZ2VzLgogICoK ICAqIFhYWCBBdCB0aGlzIHBvaW50IHdlIHNlbGVjdCB0aGUgdHJhbnNhY3Rpb25zIHVudGlsIHdl IHJlYWNoIHVuZGVyIHRoZSBtZW1vcnkKICAqIGxpbWl0LCBidXQgd2UgbWlnaHQgYWxzbyBhZGFw dCBhIG1vcmUgZWxhYm9yYXRlIGV2aWN0aW9uIHN0cmF0ZWd5IC0gZm9yIGV4YW1wbGUKQEAgLTM1 NTUsNTAgKzM1NjMsNjQgQEAgUmVvcmRlckJ1ZmZlckNoZWNrTWVtb3J5TGltaXQoUmVvcmRlckJ1 ZmZlciAqcmIpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCi0JLyogYmFpbCBvdXQgaWYg d2UgaGF2ZW4ndCBleGNlZWRlZCB0aGUgbWVtb3J5IGxpbWl0ICovCi0JaWYgKHJiLT5zaXplIDwg bG9naWNhbF9kZWNvZGluZ193b3JrX21lbSAqIDEwMjRMKQotCQlyZXR1cm47Ci0KIAkvKgotCSAq IExvb3AgdW50aWwgd2UgcmVhY2ggdW5kZXIgdGhlIG1lbW9yeSBsaW1pdC4gIE9uZSBtaWdodCB0 aGluayB0aGF0IGp1c3QKLQkgKiBieSBldmljdGluZyB0aGUgbGFyZ2VzdCAoc3ViKXRyYW5zYWN0 aW9uIHdlIHdpbGwgY29tZSB1bmRlciB0aGUgbWVtb3J5Ci0JICogbGltaXQgYmFzZWQgb24gYXNz dW1wdGlvbiB0aGF0IHRoZSBzZWxlY3RlZCB0cmFuc2FjdGlvbiBpcyBhdCBsZWFzdCBhcwotCSAq IGxhcmdlIGFzIHRoZSBtb3N0IHJlY2VudCBjaGFuZ2UgKHdoaWNoIGNhdXNlZCB1cyB0byBnbyBv dmVyIHRoZSBtZW1vcnkKLQkgKiBsaW1pdCkuIEhvd2V2ZXIsIHRoYXQgaXMgbm90IHRydWUgYmVj YXVzZSBhIHVzZXIgY2FuIHJlZHVjZSB0aGUKLQkgKiBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVt IHRvIGEgc21hbGxlciB2YWx1ZSBiZWZvcmUgdGhlIG1vc3QgcmVjZW50Ci0JICogY2hhbmdlLgor CSAqIElmIHBvc3NpYmxlLCBldmljdCBzdHJlYW1hYmxlIHRyYW5zYWN0aW9ucyBmcm9tIG1lbW9y eSBieSBzdHJlYW1pbmcuCiAJICovCi0Jd2hpbGUgKHJiLT5zaXplID49IGxvZ2ljYWxfZGVjb2Rp bmdfd29ya19tZW0gKiAxMDI0TCkKKwlpZiAoUmVvcmRlckJ1ZmZlckNhblN0YXJ0U3RyZWFtaW5n KHJiKSkKIAl7CiAJCS8qCi0JCSAqIFBpY2sgdGhlIGxhcmdlc3QgdHJhbnNhY3Rpb24gKG9yIHN1 YnRyYW5zYWN0aW9uKSBhbmQgZXZpY3QgaXQgZnJvbQotCQkgKiBtZW1vcnkgYnkgc3RyZWFtaW5n LCBpZiBwb3NzaWJsZS4gIE90aGVyd2lzZSwgc3BpbGwgdG8gZGlzay4KKwkJICogSWYgZm9yY2Vf c3RyZWFtX21vZGUgaXMgb2ZmLCBsb29wIHVudGlsIHdlIHJlYWNoIHVuZGVyIHRoZSBtZW1vcnkK KwkJICogbGltaXQuIE90aGVyd2lzZSBsb29wIHVudGlsIHRoZXJlJ3Mgbm8gc3RyZWFtYWJsZSB0 b3AgdHJhbnNhY3Rpb24uCisJCSAqIE9uZSBtaWdodCB0aGluayB0aGF0IGp1c3QgYnkgZXZpY3Rp bmcgdGhlIGxhcmdlc3QgdHJhbnNhY3Rpb24gd2UKKwkJICogd2lsbCBjb21lIHVuZGVyIHRoZSBt ZW1vcnkgbGltaXQgYmFzZWQgb24gYXNzdW1wdGlvbiB0aGF0IHRoZQorCQkgKiBzZWxlY3RlZCB0 cmFuc2FjdGlvbiBpcyBhdCBsZWFzdCBhcyBsYXJnZSBhcyB0aGUgbW9zdCByZWNlbnQgY2hhbmdl CisJCSAqICh3aGljaCBjYXVzZWQgdXMgdG8gZ28gb3ZlciB0aGUgbWVtb3J5IGxpbWl0KS4gSG93 ZXZlciwgdGhhdCBpcyBub3QKKwkJICogdHJ1ZSBiZWNhdXNlIGEgdXNlciBjYW4gcmVkdWNlIHRo ZSBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtIHRvIGEKKwkJICogc21hbGxlciB2YWx1ZSBvciBl bmFibGUgZm9yY2Vfc3RyZWFtX21vZGUgYmVmb3JlIHRoZSBtb3N0IHJlY2VudAorCQkgKiBjaGFu Z2UuCiAJCSAqLwotCQlpZiAoUmVvcmRlckJ1ZmZlckNhblN0YXJ0U3RyZWFtaW5nKHJiKSAmJgot CQkJKHR4biA9IFJlb3JkZXJCdWZmZXJMYXJnZXN0U3RyZWFtYWJsZVRvcFRYTihyYikpICE9IE5V TEwpCisJCXdoaWxlIChyYi0+c2l6ZSA+PSBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtICogMTAy NEwgfHwKKwkJCSAgIChmb3JjZV9zdHJlYW1fbW9kZSAmJiByYi0+c2l6ZSA+IDApKQogCQl7Ci0J CQkvKiB3ZSBrbm93IHRoZXJlIGhhcyB0byBiZSBvbmUsIGJlY2F1c2UgdGhlIHNpemUgaXMgbm90 IHplcm8gKi8KKwkJCXR4biA9IFJlb3JkZXJCdWZmZXJMYXJnZXN0U3RyZWFtYWJsZVRvcFRYTihy Yik7CisJCQlpZiAodHhuID09IE5VTEwpCisJCQkJYnJlYWs7CisKIAkJCUFzc2VydCh0eG4gJiYg IXR4bi0+dG9wdHhuKTsKIAkJCUFzc2VydCh0eG4tPnRvdGFsX3NpemUgPiAwKTsKIAkJCUFzc2Vy dChyYi0+c2l6ZSA+PSB0eG4tPnRvdGFsX3NpemUpOwogCiAJCQlSZW9yZGVyQnVmZmVyU3RyZWFt VFhOKHJiLCB0eG4pOwotCQl9Ci0JCWVsc2UKLQkJeworCiAJCQkvKgotCQkJICogUGljayB0aGUg bGFyZ2VzdCB0cmFuc2FjdGlvbiAob3Igc3VidHJhbnNhY3Rpb24pIGFuZCBldmljdCBpdAotCQkJ ICogZnJvbSBtZW1vcnkgYnkgc2VyaWFsaXppbmcgaXQgdG8gZGlzay4KKwkJCSAqIEFmdGVyIGV2 aWN0aW9uLCB0aGUgdHJhbnNhY3Rpb24gc2hvdWxkIGhhdmUgbm8gZW50cmllcyBpbiBtZW1vcnks CisJCQkgKiBhbmQgc2hvdWxkIHVzZSAwIGJ5dGVzIGZvciBjaGFuZ2VzLgogCQkJICovCi0JCQl0 eG4gPSBSZW9yZGVyQnVmZmVyTGFyZ2VzdFRYTihyYik7CisJCQlBc3NlcnQodHhuLT5zaXplID09 IDApOworCQkJQXNzZXJ0KHR4bi0+bmVudHJpZXNfbWVtID09IDApOworCQl9CisJfQorCisJLyoK KwkgKiBFdmljdCB0cmFuc2FjdGlvbnMgZnJvbSBtZW1vcnkgYnkgc2VyaWFsaXppbmcgdG8gZGlz ay4gTG9vcCB1bnRpbCB3ZQorCSAqIHJlYWNoIHVuZGVyIHRoZSBtZW1vcnkgbGltaXQuIE9uZSBt aWdodCB0aGluayB0aGF0IGp1c3QgYnkgZXZpY3RpbmcgdGhlCisJICogbGFyZ2VzdCAoc3ViKXRy YW5zYWN0aW9uIHdlIHdpbGwgY29tZSB1bmRlciB0aGUgbWVtb3J5IGxpbWl0LCBidXQgdGhpcyBp cworCSAqIG5vdCBzdWZmaWNpZW50LiBTZWUgY29tbWVudHMgYWJvdmUuCisJICovCisJd2hpbGUg KHJiLT5zaXplID49IGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gKiAxMDI0TCkKKwl7CisJCS8q CisJCSAqIFBpY2sgdGhlIGxhcmdlc3QgdHJhbnNhY3Rpb24gKG9yIHN1YnRyYW5zYWN0aW9uKSBh bmQgZXZpY3QgaXQKKwkJICogZnJvbSBtZW1vcnkgYnkgc2VyaWFsaXppbmcgaXQgdG8gZGlzay4K KwkJICovCisJCXR4biA9IFJlb3JkZXJCdWZmZXJMYXJnZXN0VFhOKHJiKTsKIAotCQkJLyogd2Ug a25vdyB0aGVyZSBoYXMgdG8gYmUgb25lLCBiZWNhdXNlIHRoZSBzaXplIGlzIG5vdCB6ZXJvICov Ci0JCQlBc3NlcnQodHhuKTsKLQkJCUFzc2VydCh0eG4tPnNpemUgPiAwKTsKLQkJCUFzc2VydChy Yi0+c2l6ZSA+PSB0eG4tPnNpemUpOworCQkvKiB3ZSBrbm93IHRoZXJlIGhhcyB0byBiZSBvbmUs IGJlY2F1c2UgdGhlIHNpemUgaXMgbm90IHplcm8gKi8KKwkJQXNzZXJ0KHR4bik7CisJCUFzc2Vy dCh0eG4tPnNpemUgPiAwKTsKKwkJQXNzZXJ0KHJiLT5zaXplID49IHR4bi0+c2l6ZSk7CiAKLQkJ CVJlb3JkZXJCdWZmZXJTZXJpYWxpemVUWE4ocmIsIHR4bik7Ci0JCX0KKwkJUmVvcmRlckJ1ZmZl clNlcmlhbGl6ZVRYTihyYiwgdHhuKTsKIAogCQkvKgogCQkgKiBBZnRlciBldmljdGlvbiwgdGhl IHRyYW5zYWN0aW9uIHNob3VsZCBoYXZlIG5vIGVudHJpZXMgaW4gbWVtb3J5LApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Y190YWJsZXMuYwppbmRleCA5MWYwNDc5Li4yMWIxMjVmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMTI0Nyw2ICsxMjQ3LDE2IEBAIHN0cnVjdCBjb25maWdf Ym9vbCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9CiAJCWZhbHNlLAogCQlOVUxMLCBOVUxMLCBOVUxM CiAJfSwKKwl7CisJCXsiZm9yY2Vfc3RyZWFtX21vZGUiLCBQR0NfVVNFUlNFVCwgREVWRUxPUEVS X09QVElPTlMsCisJCQlnZXR0ZXh0X25vb3AoIkZvcmNlIHNlbmRpbmcgdGhlIGNoYW5nZXMgdG8g b3V0cHV0IHBsdWdpbiBpbW1lZGlhdGVseSBpZiBzdHJlYW1pbmcgaXMgc3VwcG9ydGVkLCB3aXRo b3V0IHdhaXRpbmcgdGlsbCBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtLiIpLAorCQkJTlVMTCwK KwkJCUdVQ19OT1RfSU5fU0FNUExFCisJCX0sCisJCSZmb3JjZV9zdHJlYW1fbW9kZSwKKwkJZmFs c2UsCisJCU5VTEwsIE5VTEwsIE5VTEwKKwl9LAogCiAJewogCQl7ImxvZ19kdXJhdGlvbiIsIFBH Q19TVVNFVCwgTE9HR0lOR19XSEFULApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vcmVvcmRlcmJ1ZmZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZl ci5oCmluZGV4IGYwZWI2YzQuLmYyNGM4ODYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3Jlb3JkZXJidWZmZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9y ZGVyYnVmZmVyLmgKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAu aCIKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtOwor ZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgZm9yY2Vfc3RyZWFtX21vZGU7CiAKIC8qIGFuIGluZGl2 aWR1YWwgdHVwbGUsIHN0b3JlZCBpbiBvbmUgY2h1bmsgb2YgbWVtb3J5ICovCiB0eXBlZGVmIHN0 cnVjdCBSZW9yZGVyQnVmZmVyVHVwbGVCdWYKLS0gCjIuNy4yLndpbmRvd3MuMQoK --_009_OS0PR01MB5716C3561CF53027F22B47AF94E79OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v62-0005-Add-GUC-stream_serialize_threshold-and-test-seri.patch" Content-Description: v62-0005-Add-GUC-stream_serialize_threshold-and-test-seri.patch Content-Disposition: attachment; filename="v62-0005-Add-GUC-stream_serialize_threshold-and-test-seri.patch"; size=12836; creation-date="Sat, 17 Dec 2022 13:39:18 GMT"; modification-date="Sat, 17 Dec 2022 14:04:12 GMT" Content-Transfer-Encoding: base64 RnJvbSA0ZGMzNDViYjllOWUwOTYyMGI5ZDBiNmNkNWM2MzBiNDNiMjA2ODk1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBXZWQsIDE0IERlYyAyMDIyIDIwOjM4OjUwICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NjIgNS84XSBBZGQgR1VDIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIGFuZCB0ZXN0CiBzZXJp YWxpemluZyBtZXNzYWdlcyB0byBkaXNrCgotLS0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMyICsrKysrCiAuLi4vcmVwbGljYXRpb24vbG9n aWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgICAgICB8ICAxMiArKwogc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgICAgICAgfCAgIDkgKysKIHNyYy9iYWNrZW5k L3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICAgICAgIHwgIDE0ICsrCiBzcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgICAgICB8ICAgNCArCiAuLi4v c3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5wbCB8IDE0MSArKysr KysrKysrKysrKysrKysrKy0KIDYgZmlsZXMgY2hhbmdlZCwgMjA4IGluc2VydGlvbnMoKyksIDQg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDAzNTlkYjEuLjhkNDEyMmYgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwK QEAgLTExNjE2LDYgKzExNjE2LDM4IEBAIExPRzogIENsZWFuVXBMb2NrOiBkZWxldGluZzogbG9j aygweGI3YWNkODQ0KSBpZCgyNDY4OCwyNDY5NiwwLDAsMCwxKQogICAgICAgPC9saXN0aXRlbT4K ICAgICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLXN0cmVh bS1zZXJpYWxpemUtdGhyZXNob2xkIiB4cmVmbGFiZWw9InN0cmVhbV9zZXJpYWxpemVfdGhyZXNo b2xkIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPnN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkPC92 YXJuYW1lPiAoPHR5cGU+aW50ZWdlcjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAg IDxwcmltYXJ5Pjx2YXJuYW1lPnN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkPC92YXJuYW1lPiBj b25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5kZXh0ZXJtPgorICAg ICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgorICAgICAgICBGb3Jj ZXMgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdG8gc2VyaWFsaXplIG1lc3NhZ2VzIHRvIGZpbGVz IGFmdGVyCisgICAgICAgIHNlbmRpbmcgc3BlY2lmaWVkIGFtb3VudCBvZiBzdHJlYW1pbmcgY2h1 bmtzIHRvIHRoZSBwYXJhbGxlbCBhcHBseQorICAgICAgICB3b3JrZXIuIFNldHRpbmcgdGhpcyB0 byB6ZXJvIHNlcmlhbGl6ZSBhbGwgbWVzc2FnZXMuIEEgdmFsdWUgb2YKKyAgICAgICAgPGxpdGVy YWw+LTE8L2xpdGVyYWw+ICh0aGUgZGVmYXVsdCkgZGlzYWJsZXMgdGhpcyBmZWF0dXJlLiBUaGlz IGlzCisgICAgICAgIGludGVuZGVkIHRvIHRlc3Qgc2VyaWFsaXphdGlvbiB0byBmaWxlcyB3aXRo CisgICAgICAgIDxsaXRlcmFsPnN0cmVhbWluZyA9IHBhcmFsbGVsPC9saXRlcmFsPi4KKyAgICAg ICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgV2hlbiBsb2dpY2FsIHJlcGxpY2F0 aW9uIHN1YnNjcmlwdGlvbiA8bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+CisgICAgICAgIHBh cmFtZXRlciBpcyBzZXQgdG8gPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlcgorICAgICAgICBzZW5kcyBtZXNzYWdlcyB0byBwYXJhbGxlbCB3b3JrZXJz IHdpdGggYSB0aW1lb3V0LiBCeSBkZWZhdWx0LCB0aGUKKyAgICAgICAgbGVhZGVyIGFwcGx5IHdv cmtlciB3aWxsIHNlcmlhbGl6ZSB0aGUgcmVtYWluaW5nIG1lc3NhZ2VzIHRvIGZpbGVzIGlmCisg ICAgICAgIHRoZSB0aW1lb3V0IGlzIGV4Y2VlZGVkLiBJZiB0aGlzIG9wdGlvbiBpcyBzZXQgdG8g YW55IHZhbHVlIG90aGVyIHRoYW4KKyAgICAgICAgPGxpdGVyYWw+LTE8L2xpdGVyYWw+LCBzZXJp YWxpemUgdG8gZmlsZXMgZXZlbiB3aXRob3V0IHRpbWVvdXQuCisgICAgICAgPC9wYXJhPgorCisg ICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0 aGUgPGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+CisgICAgICAgIGZpbGUgb3Ig b24gdGhlIHNlcnZlciBjb21tYW5kIGxpbmUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0 aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgPC9z ZWN0MT4KICAgPHNlY3QxIGlkPSJydW50aW1lLWNvbmZpZy1zaG9ydCI+CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4 IDk0MmI3NjIuLjU5M2Q4NTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0yNTIsNiArMjUyLDkgQEAgc3RhdGlj IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpzdHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsKIC8q IEEgbGlzdCB0byBtYWludGFpbiBzdWJ0cmFuc2FjdGlvbnMsIGlmIGFueS4gKi8KIHN0YXRpYyBM aXN0CSAgICpzdWJ4YWN0bGlzdCA9IE5JTDsKIAorLyogR1VDIHZhcmlhYmxlICovCitpbnQJCXN0 cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkID0gLTE7CisKIHN0YXRpYyB2b2lkIHBhX2ZyZWVfd29y a2VyX2luZm8oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKIHN0YXRpYyBQYXJhbGxl bFRyYW5zU3RhdGUgcGFfZ2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAq d3NoYXJlZCk7CiBzdGF0aWMgUGFydGlhbEZpbGVTZXRTdGF0ZSBwYV9nZXRfZmlsZXNldF9zdGF0 ZSh2b2lkKTsKQEAgLTExNTUsNiArMTE1OCwxNSBAQCBwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKIAlBc3Nl cnQoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKIAlBc3NlcnQoIXdpbmZvLT5zZXJpYWxpemVfY2hh bmdlcyk7CiAKKwkvKiBGb3JjZSB0byBzZXJpYWxpemUgbWVzc2FnZXMgaWYgc3RyZWFtX3Nlcmlh bGl6ZV90aHJlc2hvbGQgaXMgcmVhY2hlZC4gKi8KKwlpZiAoc3RyZWFtX3NlcmlhbGl6ZV90aHJl c2hvbGQgIT0gLTEgJiYKKwkJKHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkID09IDAgfHwKKwkJ IHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIDwgcGFyYWxsZWxfc3RyZWFtX25jaHVua3MpKQor CXsKKwkJcGFyYWxsZWxfc3RyZWFtX25jaHVua3MgPSAwOworCQlyZXR1cm4gZmFsc2U7CisJfQor CiAjZGVmaW5lIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TIDEwMDAKICNkZWZpbmUgU0hNX1NF TkRfVElNRU9VVF9NUwkJKDEwMDAwIC0gU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMpCiAKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDU5NmVkN2QuLmRmNjc4 NTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzI3LDYg KzMyNywxMiBAQCBzdGF0aWMgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CiBzdGF0aWMgdWludDMyIHBhcmFsbGVsX3N0cmVhbV9uY2hhbmdlcyA9IDA7CiAK IC8qCisgKiBUaGUgbnVtYmVyIG9mIHN0cmVhbWluZyBjaHVua3Mgc2VudCBieSBsZWFkZXIgYXBw bHkgd29ya2VyIGR1cmluZyBvbmUKKyAqIHN0cmVhbWVkIHRyYW5zYWN0aW9uLiBUaGlzIGlzIG9u bHkgdXNlZCB3aGVuIHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkID4gMC4KKyAqLwordWludDMy IHBhcmFsbGVsX3N0cmVhbV9uY2h1bmtzID0gMDsKKworLyoKICAqIFdlIGVuYWJsZSBza2lwcGlu ZyBhbGwgZGF0YSBtb2RpZmljYXRpb24gY2hhbmdlcyAoSU5TRVJULCBVUERBVEUsIGV0Yy4pIGZv cgogICogdGhlIHN1YnNjcmlwdGlvbiBpZiB0aGUgcmVtb3RlIHRyYW5zYWN0aW9uJ3MgZmluaXNo IExTTiBtYXRjaGVzIHRoZSBzdWJza2lwbHNuLgogICogT25jZSB3ZSBzdGFydCBza2lwcGluZyBj aGFuZ2VzLCB3ZSBkb24ndCBzdG9wIGl0IHVudGlsIHdlIHNraXAgYWxsIGNoYW5nZXMgb2YKQEAg LTE1MTcsNiArMTUyMyw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBz KQogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgogCQkJQXNzZXJ0KHdpbmZv KTsKIAorCQkJaWYgKHN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkID4gMCkKKwkJCQlwYXJhbGxl bF9zdHJlYW1fbmNodW5rcysrOworCiAJCQkvKgogCQkJICogT25jZSB3ZSBzdGFydCBzZXJpYWxp emluZyB0aGUgY2hhbmdlcywgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgogCQkJICogd2lsbCB3 YWl0IGZvciB0aGUgbGVhZGVyIHRvIHJlbGVhc2UgdGhlIHN0cmVhbSBsb2NrIHVudGlsIHRoZQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCAyMWIxMjVmLi5kZjBlMzBiIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3Ns b3QuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9zeW5jcmVwLmgiCisjaW5jbHVkZSAicmVwbGlj YXRpb24vd29ya2VyX2ludGVybmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJzdG9yYWdlL2xhcmdlX29iamVjdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdfc2ht ZW0uaCIKQEAgLTMwMDQsNiArMzAwNSwxOSBAQCBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1cmVO YW1lc0ludFtdID0KIAl9LAogCiAJeworCQl7InN0cmVhbV9zZXJpYWxpemVfdGhyZXNob2xkIiwg UEdDX1NJR0hVUCwgREVWRUxPUEVSX09QVElPTlMsCisJCQlnZXR0ZXh0X25vb3AoIkZvcmNlcyB0 aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB0byBzZXJpYWxpemUgbWVzc2FnZXMgIgorCQkJCQkJICJ0 byBmaWxlcyBhZnRlciBzZW5kaW5nIHNwZWNpZmllZCBhbW91bnQgb2Ygc3RyZWFtaW5nICIKKwkJ CQkJCSAiY2h1bmtzIGluIHN0cmVhbWluZyBwYXJhbGxlbCBtb2RlLiIpLAorCQkJZ2V0dGV4dF9u b29wKCJBIHZhbHVlIG9mIC0xIGRpc2FibGVzIHRoaXMgZmVhdHVyZS4iKSwKKwkJCUdVQ19OT1Rf SU5fU0FNUExFCisJCX0sCisJCSZzdHJlYW1fc2VyaWFsaXplX3RocmVzaG9sZCwKKwkJLTEsIC0x LCBJTlRfTUFYLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKworCXsKIAkJeyJsb2dfcm90YXRp b25fYWdlIiwgUEdDX1NJR0hVUCwgTE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0 cyB0aGUgYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCiAJCQkJCQkgImxv ZyBmaWxlIHJvdGF0aW9uLiIpLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaAppbmRleCA4ZmU4YTExLi44NDliMzZjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 b3JrZXJfaW50ZXJuYWwuaApAQCAtMjEwLDYgKzIxMCwxMCBAQCBleHRlcm4gUEdETExJTVBPUlQg TG9naWNhbFJlcFdvcmtlciAqTXlMb2dpY2FsUmVwV29ya2VyOwogCiBleHRlcm4gUEdETExJTVBP UlQgYm9vbCBpbl9yZW1vdGVfdHJhbnNhY3Rpb247CiAKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQg c3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCB1aW50MzIg cGFyYWxsZWxfc3RyZWFtX25jaHVua3M7CisKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2Vy X2F0dGFjaChpbnQgc2xvdCk7CiBleHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93 b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9y dW5uaW5nKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1f cGFyYWxsZWxfY29uZmxpY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFt X3BhcmFsbGVsX2NvbmZsaWN0LnBsCmluZGV4IDEwZWZkMmQuLjU5ZTdlNzUgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29uZmxpY3QucGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9wYXJhbGxlbF9jb25mbGlj dC5wbApAQCAtMTMsOCArMTMsMTEgQEAgbXkgJG9mZnNldCA9IDA7CiAjIENyZWF0ZSBwdWJsaXNo ZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5n ID0+ICdsb2dpY2FsJyk7Ci0kbm9kZV9wdWJsaXNoZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3Fs LmNvbmYnLAotCSdsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtID0gNjRrQicpOworJG5vZGVfcHVi bGlzaGVyLT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5jb25mJywgcXEoCisJbG9naWNhbF9k ZWNvZGluZ193b3JrX21lbSA9IDY0a0IKKwltYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zID0gMTAK KykpOwogJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKIAogIyBDcmVhdGUgc3Vic2NyaWJlciBub2Rl CkBAIC0yNCw3ICsyNywxMSBAQCAkbm9kZV9zdWJzY3JpYmVyLT5pbml0OwogIyBDaGVjayBpZiBh bnkgc3RyZWFtaW5nIGNodW5rcyBhcmUgYXBwbGllZCB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyLiBXZQogIyBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFi b3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlIGxvZwogIyB2ZXJib3NpdHkuCi0kbm9kZV9zdWJzY3Jp YmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBk ZWJ1ZzEiKTsKKyRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNv bmYnLCBxcSgKKwlsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxCisJbWF4X3ByZXBhcmVkX3RyYW5z YWN0aW9ucyA9IDEwCispKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CiAKQEAgLTQ3LDcg KzU0LDcgQEAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCUNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1YgogCUNPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9u YW1lPSRhcHBuYW1lJwogCVBVQkxJQ0FUSU9OIHRhcF9wdWIKLQlXSVRIIChzdHJlYW1pbmcgPSBw YXJhbGxlbCwgY29weV9kYXRhID0gZmFsc2UpIik7CisJV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxs ZWwsIHR3b19waGFzZSA9IG9uLCBjb3B5X2RhdGEgPSBmYWxzZSkiKTsKIAogJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIApAQCAtMTQ2LDYgKzE1MywxMzIgQEAg JHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDEwMDAwKSwgJ2Rh dGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CiAKKyMg Q2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiIik7Ciskbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKyMgVGVzdCBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrCisjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKworIyBTZXQgc3RyZWFtX3NlcmlhbGl6ZV90aHJlc2hvbGQgdG8gemVybywg c28gdGhlIG1lc3NhZ2VzIHdpbGwgYmUgc2VyaWFsaXplZCB0byBkaXNrLgorJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJJ0FMVEVSIFNZU1RFTSBTRVQgc3RyZWFtX3Nl cmlhbGl6ZV90aHJlc2hvbGQgPSAwOycpOworJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCisj IFNlcmlhbGl6ZSB0aGUgQ09NTUlUIHRyYW5zYWN0aW9uLgorIyBDaGVjayB0aGUgc3Vic2NyaWJl ciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmls ZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiKTsK KworIyBFbnN1cmUgdGhhdCB0aGUgbWVzc2FnZXMgYXJlIHNlcmlhbGl6ZWQuCiskbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IG9wZW5pbmcg ZmlsZSAiLipcLmNoYW5nZXMiIGZvciBzdHJlYW1lZCBjaGFuZ2VzLywKKwkkb2Zmc2V0KTsKKwor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBDaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCiskcmVzdWx0ID0KKyAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQg dG8gc3Vic2NyaWJlciBieSBzZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrJyk7CisKKyMgQ2xl YW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiIik7Ciskbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFNlcmlhbGl6ZSB0aGUg UFJFUEFSRSB0cmFuc2FjdGlvbi4KKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93 IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsK KwlQUkVQQVJFIFRSQU5TQUNUSU9OICd4YWN0JzsKKwl9KTsKKworIyBFbnN1cmUgdGhhdCB0aGUg bWVzc2FnZXMgYXJlIHNlcmlhbGl6ZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2co CisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IG9wZW5pbmcgZmlsZSAiLipcLmNoYW5nZXMiIGZv ciBzdHJlYW1lZCBjaGFuZ2VzLywKKwkkb2Zmc2V0KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBDaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGlu IHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CitpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVk IG9uIHN1YnNjcmliZXInKTsKKworIyBDaGVjayB0aGF0IDJQQyBnZXRzIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDT01N SVQgUFJFUEFSRUQgJ3hhY3QnOyIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisjIENoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9u IHN1YnNjcmliZXIKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBx cSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1l c3NhZ2VzIHRvIGRpc2snKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJv bm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUg VEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CisKKyMgU2VyaWFsaXplIHRoZSBBQk9SVCB0b3AtdHJhbnNhY3Rpb24uCisjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJz Y3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CisJUk9MTEJBQ0s7CisJfSk7CisKKyMgRW5zdXJl IHRoYXQgdGhlIG1lc3NhZ2VzIGFyZSBzZXJpYWxpemVkLgorJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTldKzopPyBvcGVuaW5nIGZpbGUgIi4qXC5j aGFuZ2VzIiBmb3Igc3RyZWFtZWQgY2hhbmdlcy8sCisJJG9mZnNldCk7CisKKyRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgQ2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi Iik7CitpcygkcmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGJ5 IHNlcmlhbGl6aW5nIG1lc3NhZ2VzIHRvIGRpc2snKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEg ZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgU2VyaWFsaXplIHRoZSBBQk9SVCBzdWItdHJhbnNh Y3Rpb24uCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQg PSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7CisJU0FWRVBPSU5UIHNw OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUw MDEsIDEwMDAwKSBzKGkpOworCVJPTExCQUNLIFRPIHNwOworCUNPTU1JVDsKKwl9KTsKKworIyBF bnN1cmUgdGhhdCB0aGUgbWVzc2FnZXMgYXJlIHNlcmlhbGl6ZWQuCiskbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IG9wZW5pbmcgZmlsZSAi LipcLmNoYW5nZXMiIGZvciBzdHJlYW1lZCBjaGFuZ2VzLywKKwkkb2Zmc2V0KTsKKworJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBDaGVjayB0aGF0IG9u bHkgc3ViLXRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlci4KKyRyZXN1bHQgPQor ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyIGJ5IHNlcmlhbGl6aW5nIG1lc3NhZ2VzIHRvIGRpc2snKTsKKwogJG5v ZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIAotLSAKMi43LjIu d2luZG93cy4xCgo= --_009_OS0PR01MB5716C3561CF53027F22B47AF94E79OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v62-0007-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v62-0007-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v62-0007-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=23088; creation-date="Sat, 17 Dec 2022 13:39:18 GMT"; modification-date="Sat, 17 Dec 2022 14:04:12 GMT" Content-Transfer-Encoding: base64 RnJvbSA0MTZiMTY5ZWJiOTQ3NjUyMGM0NmIzOTQ2ZWU1ZDU0Y2JmMWY0MjQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDExIERlYyAyMDIyIDE5OjE2OjM0ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NjIgNy84XSBSZXRyeSB0byBhcHBseSBzdHJlYW1pbmcgeGFjdCBvbmx5IGluIGFwcGx5IHdvcmtl cgoKV2hlbiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBpcyBzZXQgc3RyZWFtaW5nPXBhcmFs bGVsLCB0aGUgbG9naWMgdHJpZXMgdG8KYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1 c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSWYgdGhpcwpmYWlscyB0aGUgcGFyYWxsZWwg d29ya2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5n IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24g bW9kZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0 aGUgc2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJl ZW4gaW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGVyZSBhcmUg YW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFuZCB0aGUgc3Vic2NyaWJlciBleGl0 cyB3aXRoIGFuCmVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kIHdoZW5ldmVy IHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkCnN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFnIGlzIHJl c2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBoYXMgcHJl dmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5IgpmaWVsZCku Ci0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMTAgKysKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICAg ICAgIHwgIDExICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAg ICAgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwg ICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5jICAgICAgICAgICAgfCAgIDEgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jICAgICAgfCAgMzAgKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYyAgICAgICAgICAgfCAxODIgKysrKysrKysrKysrKysrLS0tLS0tCiBz cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSAr LQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAgICAgICAgfCAg IDcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgICAgICAg fCAgIDIgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAg ICAgfCAgIDggKwogLi4uL3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29uZmxp Y3QucGwgfCAgNjkgKysrKysrKy0KIDEzIGZpbGVzIGNoYW5nZWQsIDI3NCBpbnNlcnRpb25zKCsp LCA1OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDQ0Y2RhMTUuLjc1OTA4MzEgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9j YXRhbG9ncy5zZ21sCkBAIC03OTUwLDYgKzc5NTAsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFj ZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+ JmwKIAogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vi cmV0cnk8L3N0cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgVHJ1ZSBpZiBwcmV2aW91cyBjaGFuZ2UgZmFpbGVkIHRvIGJlIGFw cGxpZWQgd2hpbGUgdGhlcmUgd2VyZSBhbnkKKyAgICAgICBhY3RpdmUgcGFyYWxsZWwgYXBwbHkg d29ya2VycywgbmVjZXNzaXRhdGluZyBhIHJldHJ5LgorICAgICAgPC9wYXJhPjwvZW50cnk+Cisg ICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJs ZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3Rm aWVsZD5zdWJjb25uaW5mbzwvc3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CiAgICAgICA8 L3BhcmE+CiAgICAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCmlu ZGV4IGE3YmQ5YmUuLmE2M2ZhMTUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJl cGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bApAQCAtMTUwMCwxMiArMTUwMCwxMSBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0 YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogCiAgIDxw YXJhPgogICAgV2hlbiB0aGUgc3RyZWFtaW5nIG1vZGUgaXMgPGxpdGVyYWw+cGFyYWxsZWw8L2xp dGVyYWw+LCB0aGUgZmluaXNoIExTTiBvZgotICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90 IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNlLCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvCi0gICBjaGFu Z2UgdGhlIHN0cmVhbWluZyBtb2RlIHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiBvciA8bGl0ZXJh bD5vZmY8L2xpdGVyYWw+IGFuZAotICAgY2F1c2UgdGhlIHNhbWUgY29uZmxpY3RzIGFnYWluIHNv IHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbAotICAgYmUgd3Jp dHRlbiB0byB0aGUgc2VydmVyIGxvZy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBwbGVh c2UgcmVmZXIgdG8gPGxpbmsKLSAgIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNv bW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4uLgotICAgU0tJUDwvY29tbWFuZD48L2xpbms+Lgor ICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNlLCB0 aGUgZmFpbGVkIHRyYW5zYWN0aW9uCisgICB3aWxsIGJlIHJldHJpZWQgaW4gPGxpdGVyYWw+c3Ry ZWFtaW5nID0gb248L2xpdGVyYWw+IG1vZGUuIElmIGl0IGZhaWxzCisgICBhZ2FpbiwgdGhlIGZp bmlzaCBMU04gb2YgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbiB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhl CisgICBzZXJ2ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlzaCBMU04sIHBsZWFzZSByZWZl ciB0bworICAgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uIj48Y29tbWFuZD5B TFRFUiBTVUJTQ1JJUFRJT04gLi4uIFNLSVA8L2NvbW1hbmQ+PC9saW5rPi4KICAgPC9wYXJhPgog IDwvc2VjdDE+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlw dGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKaW5k ZXggZjE3M2EwOS4uNjRkNTgwMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf c3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0 aW9uLnNnbWwKQEAgLTI1MSw2ICsyNTEsMTEgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAg ICAgICAgICB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUgdGhhdCBpZiBhbiBlcnJvciBo YXBwZW5zIGluIGEKICAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHRoZSBmaW5pc2gg TFNOIG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24KICAgICAgICAgICBtaWdodCBub3QgYmUgcmVw b3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCisgICAgICAgICAgV2hlbiBhcHBseWluZyBzdHJlYW1p bmcgdHJhbnNhY3Rpb25zLCBpZiBhIGRlYWRsb2NrIGlzIGRldGVjdGVkLCB0aGUKKyAgICAgICAg ICBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBleGl0IHdpdGggYW4gZXJyb3IuIFRoZQorICAg ICAgICAgIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiBtb2RlIGlzIGRpc3JlZ2FyZGVkIHdo ZW4gcmV0cnlpbmc7CisgICAgICAgICAgaW5zdGVhZCB0aGUgdHJhbnNhY3Rpb24gd2lsbCBiZSBh cHBsaWVkIHVzaW5nIDxsaXRlcmFsPm9uPC9saXRlcmFsPgorICAgICAgICAgIG1vZGUuCiAgICAg ICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+ CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwppbmRleCBhNTA2ZmMzLi43MjNiMTQx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKQEAgLTcxLDYgKzcxLDcgQEAg R2V0U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCwgYm9vbCBtaXNzaW5nX29rKQogCXN1Yi0+c3RyZWFt ID0gc3ViZm9ybS0+c3Vic3RyZWFtOwogCXN1Yi0+dHdvcGhhc2VzdGF0ZSA9IHN1YmZvcm0tPnN1 YnR3b3BoYXNlc3RhdGU7CiAJc3ViLT5kaXNhYmxlb25lcnIgPSBzdWJmb3JtLT5zdWJkaXNhYmxl b25lcnI7CisJc3ViLT5yZXRyeSA9IHN1YmZvcm0tPnN1YnJldHJ5OwogCiAJLyogR2V0IGNvbm5p bmZvICovCiAJZGF0dW0gPSBTeXNDYWNoZUdldEF0dHIoU1VCU0NSSVBUSU9OT0lELApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIvc3JjL2JhY2tlbmQv Y2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDJkODEwNGIuLmMyYzdkOGEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTEzMDEsNyArMTMwMSw3IEBAIFJFVk9LRSBB TEwgT04gcGdfcmVwbGljYXRpb25fb3JpZ2luX3N0YXR1cyBGUk9NIHB1YmxpYzsKIFJFVk9LRSBB TEwgT04gcGdfc3Vic2NyaXB0aW9uIEZST00gcHVibGljOwogR1JBTlQgU0VMRUNUIChvaWQsIHN1 YmRiaWQsIHN1YnNraXBsc24sIHN1Ym5hbWUsIHN1Ym93bmVyLCBzdWJlbmFibGVkLAogICAgICAg ICAgICAgICBzdWJiaW5hcnksIHN1YnN0cmVhbSwgc3VidHdvcGhhc2VzdGF0ZSwgc3ViZGlzYWJs ZW9uZXJyLAotICAgICAgICAgICAgICBzdWJzbG90bmFtZSwgc3Vic3luY2NvbW1pdCwgc3VicHVi bGljYXRpb25zLCBzdWJvcmlnaW4pCisgICAgICAgICAgICAgIHN1YnJldHJ5LCBzdWJzbG90bmFt ZSwgc3Vic3luY2NvbW1pdCwgc3VicHVibGljYXRpb25zLCBzdWJvcmlnaW4pCiAgICAgT04gcGdf c3Vic2NyaXB0aW9uIFRPIHB1YmxpYzsKIAogQ1JFQVRFIFZJRVcgcGdfc3RhdF9zdWJzY3JpcHRp b25fc3RhdHMgQVMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlv bmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwppbmRleCBk MGUwZDIwLi5mMmI3YjE5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3Jp cHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5j CkBAIC02MzUsNiArNjM1LDcgQEAgQ3JlYXRlU3Vic2NyaXB0aW9uKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQ3JlYXRlU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhB U0VfU1RBVEVfUEVORElORyA6CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX0RJU0FC TEVEKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViZGlzYWJsZW9uZXJyIC0gMV0g PSBCb29sR2V0RGF0dW0ob3B0cy5kaXNhYmxlb25lcnIpOworCXZhbHVlc1tBbnVtX3BnX3N1YnNj cmlwdGlvbl9zdWJyZXRyeSAtIDFdID0gQm9vbEdldERhdHVtKGZhbHNlKTsKIAl2YWx1ZXNbQW51 bV9wZ19zdWJzY3JpcHRpb25fc3ViY29ubmluZm8gLSAxXSA9CiAJCUNTdHJpbmdHZXRUZXh0RGF0 dW0oY29ubmluZm8pOwogCWlmIChvcHRzLnNsb3RfbmFtZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKaW5kZXggNjIzZTU1 MS4uOTk2NWM5YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9h cHBseXBhcmFsbGVsd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseXBhcmFsbGVsd29ya2VyLmMKQEAgLTI5OSw2ICsyOTksMTcgQEAgcGFfY2FuX3N0YXJ0 KFRyYW5zYWN0aW9uSWQgeGlkKQogCWlmICghQWxsVGFibGVzeW5jc1JlYWR5KCkpCiAJCXJldHVy biBmYWxzZTsKIAorCS8qCisJICogRG9uJ3QgdXNlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgZm9y IHJldHJpZXMsIGJlY2F1c2UgaXQgaXMgcG9zc2libGUKKwkgKiB0aGF0IGEgZGVhZGxvY2sgd2Fz IGRldGVjdGVkIHRoZSBsYXN0IHRpbWUgd2UgdHJpZWQgdG8gYXBwbHkgYQorCSAqIHRyYW5zYWN0 aW9uIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSAqLworCWlmIChNeVN1YnNjcmlw dGlvbi0+cmV0cnkpCisJeworCQllbG9nKERFQlVHMSwgInBhcmFsbGVsIGFwcGx5IHdvcmtlcnMg YXJlIG5vdCB1c2VkIGZvciByZXRyaWVzIik7CisJCXJldHVybiBmYWxzZTsKKwl9CisKIAlyZXR1 cm4gdHJ1ZTsKIH0KIApAQCAtMTY3MCwzICsxNjgxLDIyIEBAIHBhX3hhY3RfZmluaXNoKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgWExvZ1JlY1B0ciByZW1vdGVfbHNuKQogCXN0b3Jl X2ZsdXNoX3Bvc2l0aW9uKHJlbW90ZV9sc24sIHdpbmZvLT5zaGFyZWQtPmxhc3RfY29tbWl0X2Vu ZCk7CiAJKHZvaWQpIHBhX2ZyZWVfd29ya2VyKHdpbmZvKTsKIH0KKworLyogQ2hlY2sgaWYgYW55 IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiAqLworYm9vbAorcGFfaGF2ZV9hY3RpdmVf d29ya2VyKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBQYXJhbGxl bEFwcGx5V29ya2VyUG9vbCkKKwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp0bXBfd2lu Zm87CisKKwkJdG1wX3dpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChs Yyk7CisKKwkJaWYgKHRtcF93aW5mby0+aW5fdXNlKQorCQkJcmV0dXJuIHRydWU7CisJfQorCisJ cmV0dXJuIGZhbHNlOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMK aW5kZXggZDNlYjUwNy4uZTBjMmQxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3dvcmtlci5jCkBAIC0zOTIsNyArMzkyLDcgQEAgc3RhdGljIHZvaWQgc3RyZWFtX2Nsb3NlX2Zp bGUodm9pZCk7CiAKIHN0YXRpYyB2b2lkIHNlbmRfZmVlZGJhY2soWExvZ1JlY1B0ciByZWN2cG9z LCBib29sIGZvcmNlLCBib29sIHJlcXVlc3RSZXBseSk7CiAKLXN0YXRpYyB2b2lkIERpc2FibGVT dWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpOworc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlv bk9uRXJyb3Iodm9pZCk7CiAKIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJu YWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIHN0YXRpYyB2b2lkIGFwcGx5 X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKQEAgLTQy OSw2ICs0MjksOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4 dF9pbmZvKHZvaWQpOwogc3RhdGljIFRyYW5zQXBwbHlBY3Rpb24gZ2V0X3RyYW5zYWN0aW9uX2Fw cGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJCQkJCQkgUGFyYWxsZWxBcHBs eVdvcmtlckluZm8gKip3aW5mbyk7CiAKK3N0YXRpYyB2b2lkIHNldF9zdWJzY3JpcHRpb25fcmV0 cnkoYm9vbCByZXRyeSk7CisKIC8qCiAgKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGxvZ2ljYWwg cmVwbGljYXRpb24gd29ya2VyLgogICovCkBAIC0xMDQ0LDYgKzEwNDYsOSBAQCBhcHBseV9oYW5k bGVfY29tbWl0KFN0cmluZ0luZm8gcykKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUg YmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJs ZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8K KwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCXBnc3RhdF9yZXBvcnRfYWN0aXZp dHkoU1RBVEVfSURMRSwgTlVMTCk7CiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7 CiB9CkBAIC0xMTUwLDYgKzExNTUsOSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZv IHMpCiAKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSBy ZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJv Y2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4g Ki8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApAQCAt MTIwNiw2ICsxMjE0LDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZv IHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24sIFhhY3RMYXN0 Q29tbWl0RW5kKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0 IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJ LyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJh bGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsK IApAQCAtMTI2Nyw2ICsxMjc4LDkgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0 cmluZ0luZm8gcykKIAlzdG9yZV9mbHVzaF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNr X2VuZF9sc24sIFhhY3RMYXN0Q29tbWl0RW5kKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBm YWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25f cmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5 bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHJvbGxi YWNrX2RhdGEucm9sbGJhY2tfZW5kX2xzbik7CiAKQEAgLTEzOTAsNiArMTQwNCw5IEBAIGFwcGx5 X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJCQlicmVhazsKIAl9CiAKKwkv KiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNl KTsKKwogCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJs ZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwpAQCAtMTk0Miw2 ICsxOTU5LDEwIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQkJ YnJlYWs7CiAJfQogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJaWYgKHRvcGxldmVs X3hhY3QpCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJcmVzZXRfYXBwbHlf ZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CiAKQEAgLTIyMTgsNiArMjIzOSw5IEBAIGFwcGx5X2hh bmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMg dGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3lu Y2luZ190YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkg ZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCXBnc3RhdF9yZXBv cnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAKIAlyZXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X2luZm8oKTsKQEAgLTQzMTksMjAgKzQzNDMsMjggQEAgc3RhcnRfdGFibGVfc3luYyhYTG9n UmVjUHRyICpvcmlnaW5fc3RhcnRwb3MsIGNoYXIgKipteXNsb3RuYW1lKQogCX0KIAlQR19DQVRD SCgpOwogCXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIg ZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9M RF9JTlRFUlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZBbnlU cmFuc2FjdGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJSVVBU UygpOworCisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hy b25pemF0aW9uICovCisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2Ny aXB0aW9uLT5vaWQsIGZhbHNlKTsKKwogCQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVy cikKLQkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoK LQkJCSAqIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25pemF0 aW9uLiBBYm9ydAotCQkJICogdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3Rh dHMgbWVzc2FnZSBpcyBzZW50IGluIGFuCi0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlB Ym9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9u X2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKwkJCURpc2FibGVTdWJzY3JpcHRp b25PbkVycm9yKCk7CiAKLQkJCVBHX1JFX1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0IHRoZSByZXRy eSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KHRydWUpOworCisJCXByb2NfZXhp dCgwKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogCkBAIC00MzU3LDIwICs0Mzg5LDI3IEBAIHN0YXJ0 X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9zKQogCX0KIAlQR19DQVRDSCgpOwogCXsK KwkJLyoKKwkJICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUg ZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJV UFRTKCk7CisKKwkJRW1pdEVycm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlv bigpOworCQlGbHVzaEVycm9yU3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJ CS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzICovCisJ CXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsCisJ CQkJCQkJCQkJICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOworCiAJCWlmIChNeVN1YnNjcmlwdGlv bi0+ZGlzYWJsZW9uZXJyKQotCQkJRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQoKTsKLQkJZWxz ZQotCQl7Ci0JCQkvKgotCQkJICogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5 aW5nIGNoYW5nZXMuIEFib3J0IHRoZQotCQkJICogY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0 IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNlbnQgaW4gYW4KLQkJCSAqIGlkbGUgc3RhdGUuCi0JCQkg Ki8KLQkJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCQkJcGdzdGF0X3JlcG9ydF9zdWJz Y3JpcHRpb25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwgIWFtX3RhYmxlc3luY193b3JrZXIo KSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9USFJPVygp OwotCQl9CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9y ZXRyeSh0cnVlKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogfQpAQCAtNDY0NiwzOSArNDY4NSwyMCBA QCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiB9CiAKIC8qCi0gKiBBZnRlciBlcnJv ciByZWNvdmVyeSwgZGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9u Ci0gKiBhbmQgZXhpdCBjbGVhbmx5LgorICogRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uIGluIGEg bmV3IHRyYW5zYWN0aW9uLgogICovCiBzdGF0aWMgdm9pZAotRGlzYWJsZVN1YnNjcmlwdGlvbkFu ZEV4aXQodm9pZCkKK0Rpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKHZvaWQpCiB7Ci0JLyoKLQkg KiBFbWl0IHRoZSBlcnJvciBtZXNzYWdlLCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0 ZSB0byBhbiBpZGxlCi0JICogc3RhdGUKLQkgKi8KLQlIT0xEX0lOVEVSUlVQVFMoKTsKLQotCUVt aXRFcnJvclJlcG9ydCgpOwotCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCUZsdXNoRXJy b3JTdGF0ZSgpOwotCi0JUkVTVU1FX0lOVEVSUlVQVFMoKTsKLQotCS8qIFJlcG9ydCB0aGUgd29y a2VyIGZhaWxlZCBkdXJpbmcgZWl0aGVyIHRhYmxlIHN5bmNocm9uaXphdGlvbiBvciBhcHBseSAq LwotCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsCi0JCQkJCQkJCQkgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7Ci0KIAkvKiBEaXNhYmxl IHRoZSBzdWJzY3JpcHRpb24gKi8KIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCURpc2Fi bGVTdWJzY3JpcHRpb24oTXlTdWJzY3JpcHRpb24tPm9pZCk7CiAJQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CiAKLQkvKiBOb3RpZnkgdGhlIHN1YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxl ZCBhbmQgZXhpdCAqLworCS8qIE5vdGlmeSB0aGUgc3Vic2NyaXB0aW9uIGhhcyBiZWVuIGRpc2Fi bGVkICovCiAJZXJlcG9ydChMT0csCiAJCQllcnJtc2coInN1YnNjcmlwdGlvbiBcIiVzXCIgaGFz IGJlZW4gZGlzYWJsZWQgYmVjYXVzZSBvZiBhbiBlcnJvciIsCiAJCQkJICAgTXlTdWJzY3JpcHRp b24tPm5hbWUpKTsKLQotCXByb2NfZXhpdCgwKTsKIH0KIAogLyoKQEAgLTQ5NzEsMyArNDk5MSw3 MSBAQCBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqKndpbmZvKQogCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFTkRf VE9fUEFSQUxMRUw7CiAJfQogfQorCisvKgorICogU2V0IHN1YnJldHJ5IG9mIHBnX3N1YnNjcmlw dGlvbiBjYXRhbG9nLgorICoKKyAqIElmIHJldHJ5IGlzIHRydWUsIHN1YnNjcmliZXIgaXMgYWJv dXQgdG8gZXhpdCB3aXRoIGFuIGVycm9yLiBPdGhlcndpc2UsIGl0CisgKiBtZWFucyB0aGF0IHRo ZSB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCBzdWNjZXNzZnVsbHkuCisgKi8KK3N0YXRpYyB2b2lk CitzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wgcmV0cnkpCit7CisJUmVsYXRpb24JcmVsOwor CUhlYXBUdXBsZQl0dXA7CisJYm9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOworCWJvb2wJCW51bGxz W05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdfc3Vic2Ny aXB0aW9uXTsKKwlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisKKwkvKiBG YXN0IHBhdGggLSBpZiBubyBzdGF0ZSBjaGFuZ2UgdGhlbiBub3RoaW5nIHRvIGRvICovCisJaWYg KE15U3Vic2NyaXB0aW9uLT5yZXRyeSA9PSByZXRyeSkKKwkJcmV0dXJuOworCisJLyogRmFzdCBw YXRoIC0gc2tpcCBmb3IgcGFyYWxsZWwgYXBwbHkgd29ya2VycyAqLworCWlmIChhbV9wYXJhbGxl bF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuOworCisJLyogRmFzdCBwYXRoIC0gc2tpcCBzZXQg cmV0cnkgaWYgbm8gYWN0aXZlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKi8KKwlpZiAocmV0cnkg JiYgIXBhX2hhdmVfYWN0aXZlX3dvcmtlcigpKQorCQlyZXR1cm47CisKKwlpZiAoIUlzVHJhbnNh Y3Rpb25TdGF0ZSgpKQorCXsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3RhcnRl ZF90eCA9IHRydWU7CisJfQorCisJLyogTG9vayB1cCB0aGUgc3Vic2NyaXB0aW9uIGluIHRoZSBj YXRhbG9nICovCisJcmVsID0gdGFibGVfb3BlbihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBSb3dF eGNsdXNpdmVMb2NrKTsKKwl0dXAgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFNVQlNDUklQVElPTk9J RCwKKwkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0oTXlTdWJzY3JpcHRpb24tPm9pZCkpOworCisJ aWYgKCFIZWFwVHVwbGVJc1ZhbGlkKHR1cCkpCisJCWVsb2coRVJST1IsICJzdWJzY3JpcHRpb24g XCIlc1wiIGRvZXMgbm90IGV4aXN0IiwgTXlTdWJzY3JpcHRpb24tPm5hbWUpOworCisJTG9ja1No YXJlZE9iamVjdChTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBNeVN1YnNjcmlwdGlvbi0+b2lkLCAw LAorCQkJCQkgQWNjZXNzU2hhcmVMb2NrKTsKKworCS8qIEZvcm0gYSBuZXcgdHVwbGUuICovCisJ bWVtc2V0KHZhbHVlcywgMCwgc2l6ZW9mKHZhbHVlcykpOworCW1lbXNldChudWxscywgZmFsc2Us IHNpemVvZihudWxscykpOworCW1lbXNldChyZXBsYWNlcywgZmFsc2UsIHNpemVvZihyZXBsYWNl cykpOworCisJLyogU2V0IHN1YnJldHJ5ICovCisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9u X3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ocmV0cnkpOworCXJlcGxhY2VzW0FudW1fcGdf c3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSB0cnVlOworCisJdHVwID0gaGVhcF9tb2RpZnlf dHVwbGUodHVwLCBSZWxhdGlvbkdldERlc2NyKHJlbCksIHZhbHVlcywgbnVsbHMsCisJCQkJCQkJ cmVwbGFjZXMpOworCisJLyogVXBkYXRlIHRoZSBjYXRhbG9nLiAqLworCUNhdGFsb2dUdXBsZVVw ZGF0ZShyZWwsICZ0dXAtPnRfc2VsZiwgdHVwKTsKKworCS8qIENsZWFudXAuICovCisJaGVhcF9m cmVldHVwbGUodHVwKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisKKwlpZiAoc3RhcnRl ZF90eCkKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBm NDU0YjMxLi40OWY4MzVlIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ1NjAsOCArNDU2MCw5IEBAIGdldFN1 YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAludHVwcyA9IFBRbnR1cGxlcyhyZXMpOwogCiAJ LyoKLQkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lw bHNuIGluIHRoZSBkdW1wIGFzCi0JICogYWZ0ZXIgcmVzdG9yaW5nIHRoZSBkdW1wIHRoaXMgdmFs dWUgbWF5IG5vIGxvbmdlciBiZSByZWxldmFudC4KKwkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxk cy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGFuZCBzdWJyZXRyeSBpbgorCSAqIHRoZSBk dW1wIGFzIGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25nZXIg YmUKKwkgKiByZWxldmFudC4KIAkgKi8KIAlpX3RhYmxlb2lkID0gUFFmbnVtYmVyKHJlcywgInRh Ymxlb2lkIik7CiAJaV9vaWQgPSBQUWZudW1iZXIocmVzLCAib2lkIik7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCA1YjllNWEzLi5kM2IxNThmIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTg4LDYgKzg4LDExIEBAIENBVEFMT0cocGdfc3Vi c2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElP TiBCS0lfUk9XCiAJYm9vbAkJc3ViZGlzYWJsZW9uZXJyOwkvKiBUcnVlIGlmIGEgd29ya2VyIGVy cm9yIHNob3VsZCBjYXVzZSB0aGUKIAkJCQkJCQkJCSAqIHN1YnNjcmlwdGlvbiB0byBiZSBkaXNh YmxlZCAqLwogCisJYm9vbAkJc3VicmV0cnkgQktJX0RFRkFVTFQoZik7CS8qIFRydWUgaWYgcHJl dmlvdXMgY2hhbmdlIGZhaWxlZAorCQkJCQkJCQkJCQkgKiB0byBiZSBhcHBsaWVkIHdoaWxlIHRo ZXJlIHdlcmUKKwkJCQkJCQkJCQkJICogYW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseQorCQkJCQkJ CQkJCQkgKiB3b3JrZXJzICovCisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxl LWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRo ZSBwdWJsaXNoZXIgKi8KIAl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7CkBA IC0xMzEsNiArMTM2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJZGlz YWJsZW9uZXJyOwkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJ CQkJCQkJICogYXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgogCQkJCQkJ CQkgKiBvY2N1cnMgKi8KKwlib29sCQlyZXRyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgcHJldmlvdXMg Y2hhbmdlIGZhaWxlZCB0byBiZQorCQkJCQkJCQkgKiBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwg YXBwbHkgd29ya2VyICovCiAJY2hhcgkgICAqY29ubmluZm87CQkvKiBDb25uZWN0aW9uIHN0cmlu ZyB0byB0aGUgcHVibGlzaGVyICovCiAJY2hhcgkgICAqc2xvdG5hbWU7CQkvKiBOYW1lIG9mIHRo ZSByZXBsaWNhdGlvbiBzbG90ICovCiAJY2hhcgkgICAqc3luY2NvbW1pdDsJCS8qIFN5bmNocm9u b3VzIGNvbW1pdCBzZXR0aW5nIGZvciB3b3JrZXIgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmgKaW5kZXggNzBjZmU0YS4uMjI4ODE3MiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTI5NSw2ICsyOTUsOCBAQCBleHRlcm4g dm9pZCBwYV9kZWNyX2FuZF93YWl0X3N0cmVhbV9ibG9jayh2b2lkKTsKIGV4dGVybiB2b2lkIHBh X3hhY3RfZmluaXNoKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywKIAkJCQkJCSAgIFhM b2dSZWNQdHIgcmVtb3RlX2xzbik7CiAKK2V4dGVybiBib29sIHBhX2hhdmVfYWN0aXZlX3dvcmtl cih2b2lkKTsKKwogI2RlZmluZSBpc1BhcmFsbGVsQXBwbHlXb3JrZXIod29ya2VyKSAoKHdvcmtl ciktPmFwcGx5X2xlYWRlcl9waWQgIT0gSW52YWxpZFBpZCkKIAogc3RhdGljIGlubGluZSBib29s CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAppbmRleCAzODk0MWZmLi44OTBmYTg4 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKQEAgLTg3LDggKzg3LDE2IEBA IHN1YiB0ZXN0X3N0cmVhbWluZwogCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2Fs IGRlZmF1bHRzJyk7CiAKIAkjIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCW15 ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSk7CiAJJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1 YiBTRVQgKGJpbmFyeSA9IG9uKSIpOworCSRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRp bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiCisJICApCisJICBvciBkaWUKKwkgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGlu ZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCiAJ IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiAJJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDMyX3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5wbAppbmRleCA1OWU3ZTc1Li5iMGU3 YjY3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtX3BhcmFs bGVsX2NvbmZsaWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1f cGFyYWxsZWxfY29uZmxpY3QucGwKQEAgLTEwLDYgKzEwLDIwIEBAIHVzZSBUZXN0OjpNb3JlOwog CiBteSAkb2Zmc2V0ID0gMDsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRy YW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFs bGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVf c3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkdHlwZSkgPSBAXzsKKworCWlmICgk aXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJCQlx ci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgU1RSRUFNICR0 eXBlIGNvbW1hbmQvLAorCQkJJG9mZnNldCk7CisJfQorfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIg bm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3 KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ ICdsb2dpY2FsJyk7CkBAIC0yNCw5ICszOCw5IEBAICRub2RlX3B1Ymxpc2hlci0+c3RhcnQ7CiBt eSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJz Y3JpYmVyJyk7CiAkbm9kZV9zdWJzY3JpYmVyLT5pbml0OwogCi0jIENoZWNrIGlmIGFueSBzdHJl YW1pbmcgY2h1bmtzIGFyZSBhcHBsaWVkIHVzaW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu IFdlCi0jIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhh dCwgc28gYnVtcCB1cCB0aGUgbG9nCi0jIHZlcmJvc2l0eS4KKyMgQ2hlY2sgaWYgYW55IHN0cmVh bWluZyBjaHVua3MgYXJlIGFwcGxpZWQgdXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4K KyMgQW5kIGNoZWNrIGlmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZmFpbGVkIHRvIHN0YXJ0 LiBXZSBoYXZlIHRvIGxvb2sgZm9yCisjIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRo YXQsIHNvIGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCiAkbm9kZV9zdWJzY3JpYmVyLT5hcHBl bmRfY29uZigKIAkncG9zdGdyZXNxbC5jb25mJywgcXEoCiAJbG9nX21pbl9tZXNzYWdlcyA9IGRl YnVnMQpAQCAtMjc5LDYgKzI5Myw1NSBAQCAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOwog aXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBieSBz ZXJpYWxpemluZyBtZXNzYWdlcyB0byBkaXNrJyk7CiAKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZy b20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVGVzdCByZS1h cHBseSBhIGZhaWxlZCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIGxlYWRlciBhcHBs eQorIyB3b3JrZXIgYW5kIGFwcGx5IHN1YnNlcXVlbnQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHVz aW5nIHRoZSBwYXJhbGxlbCBhcHBseQorIyB3b3JrZXIgYWZ0ZXIgdGhpcyByZXRyeSBzdWNjZWVk cy4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRlc3RfdGFiKGEp Iik7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9 IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCSdwb3N0Z3JlcycsIHFxeworQkVHSU47CitJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworSU5TRVJUIElOVE8gdGVz dF90YWIgdmFsdWVzKDEpOworQ09NTUlUO30pOworCisjIENoZWNrIGlmIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgaXMgbm90IHN0YXJ0ZWQgYmVjYXVzZSB0aGUgYWJvdmUKKyMgdHJhbnNhY3Rp b24gZmFpbGVkIHRvIGJlIGFwcGxpZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2co CisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgYXJlIG5v dCB1c2VkIGZvciByZXRyaWVzLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5k ZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiIik7CisKKyMgV2FpdCBmb3Ig dGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29y a2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJl c3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNU IGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSBy ZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKKworIyBBZnRl ciBzdWNjZXNzZnVsbHkgcmV0cnlpbmcgdG8gYXBwbHkgYSBmYWlsZWQgc3RyZWFtaW5nIHRyYW5z YWN0aW9uLCBhcHBseQorIyB0aGUgZm9sbG93aW5nIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1c2lu ZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpIik7CisKK2NoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9z dWJzY3JpYmVyLCAkb2Zmc2V0LCAxLCAnQ09NTUlUJyk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRl c3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSgxMDAwMSksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vi c2NyaWJlciB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyJyk7CisKICRub2RlX3N1YnNj cmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKLS0gCjIuNy4yLndpbmRvd3Mu MQoK --_009_OS0PR01MB5716C3561CF53027F22B47AF94E79OS0PR01MB5716jpnp_--