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 1oM3Bb-00017R-Gx for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Aug 2022 08:05:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oM3Ba-0000mC-19 for pgsql-hackers@arkaria.postgresql.org; Thu, 11 Aug 2022 08:04:58 +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 1oM3BY-0000m0-El for pgsql-hackers@lists.postgresql.org; Thu, 11 Aug 2022 08:04:57 +0000 Received: from esa20.fujitsucc.c3s2.iphmx.com ([216.71.158.65]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oM3BR-0001wN-W0 for pgsql-hackers@lists.postgresql.org; Thu, 11 Aug 2022 08:04:55 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1660205090; x=1691741090; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=BRKIcWgRfavRtBbPVQBj6rU6JTQMssQfXVidZOetBTg=; b=cKhqFmdc7Lsc7EHajJAw5TWoOkFYwEcONMUOHQJdWgiIvpikdkd9T+fp gWEF2i7FDmDh+W8o/KAdpLmyqZJJA8jZe5Y/Z1ExbOBzpPyFH35p4BNpM LC6bRLFyAefTZSHJfCxqqUEIaJlyH/cQ8eSn31bb9sNmgZZzwEeMjtGcQ 0Lil5C1NwFF4DIb7y8R4COCXbZbIu1KX4dRwQkqpoomUDw8l/UCIxQ8P+ toLE9gp3V5JlsDEBlfY5yuXfSTPHn6yVcGy6pt4qnOdlZSdI0tCC/SrHu oHpgdHzG96ESqNdgtpzc5SlaW/vWozGzANbEZ/jZ2xYGVSjSm44Gpfl0o w==; X-IronPort-AV: E=McAfee;i="6400,9594,10435"; a="62495151" X-IronPort-AV: E=Sophos;i="5.93,228,1654527600"; d="scan'208,223";a="62495151" Received: from mail-os0jpn01lp2106.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.106]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Aug 2022 17:04:45 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WK8TWaj/1cnUt0sA7cym5pBgumPTeL7Evkt3uiJWXfe1oZ7+mrslJO2eLCeYOvFm6WP5q+xYY8ntwhsQ+zg+jdDU5mkFVlUY0OIi4fXVNFJfd2smMuqFmK0xs6jKHYnPhH+lqUMwaNUaOHjkrJw/znY4AIgDvBZDNccLVl58QjBFiYXpOmjPMlcyEnMbLgVSs3RsLmtlGJTPXBvy//F3f3UjzjJZ2/ZbLZvw/dWLWfmNFJfvgTUO7dRz6cHNqoTAe4vCqxyvmcilwSDoAWaUb/y4obmluBlZVJtgORgwARXwXTcgQ9DcepETAvEmFG3ZpPI3CIENSOKoxZ5ceyJQMg== 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=u24btDO0059cQp3CXx9iL+if9/kkMCj4VwlZCZjUTD4=; b=i0kXGg6rwmUuq+xU8jmCe5mrT9vldN3N6kG1uH5XQenLx0fFT+o/vEkF6YdTD5pkNLIGso9srIGIIpeDi5mdwe/ZisT3jXZHxLl1s97esMZ4kdJYqN8NsBw+M9jUsZnyczg4cItari6cosPUkIegogT7Baw6bSS5jk7NmSiW3koJz7ZfSzoFO0ZklnS0s09SjmSjuqRVCPjiL545kcFg17wybV9rk6e3KNjg1jt9peE91+PKuLK2b9Oegai2y3HMS2q17pbPZ/asJIKWEXCVjSTxguyi6tHXQmM3FwKSN2sgd7ouYnFbrUnxVVR+0OrjSBoFVCUQiVu6yLTD1zhlQQ== 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 OS0PR01MB6100.jpnprd01.prod.outlook.com (2603:1096:604:ca::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.22; Thu, 11 Aug 2022 08:04:41 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::558e:85ac:20d8:d8c4]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::558e:85ac:20d8:d8c4%5]) with mapi id 15.20.5504.020; Thu, 11 Aug 2022 08:04:41 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila , "wangw.fnst@fujitsu.com" CC: Peter Smith , Masahiko Sawada , "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: AQHYSXX5zhPsn/DiHU+5DFLHlN8Fn6zlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABW2rAIAPPxGAgAgkS4CAApJnMIAAYJqA Date: Thu, 11 Aug 2022 08:04:40 +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?NTBfQWN0aW9uSWQ9ZDJiNmU5NmItYTEyOC00Y2ZiLWFjZTktM2U5ZTdhYTZk?= =?utf-8?B?NmE0O01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0wOC0xMVQwMjoxNjozNFo7TVNJUF9MYWJl?= =?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-office365-filtering-correlation-id: e3629d30-813c-47bb-8c35-08da7b7024d5 x-ms-traffictypediagnostic: OS0PR01MB6100:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: TstRxZ3O9LfrHL0mAoXcq4PuQ75SiJSYyu6+eopgWLRRWrE8ZKnfbIASSlAs9x4c8Mw5fYi0bBteNByqN+ENTERaOonJRUJJBm+Gh46l8NY+qjuh9d65l58PoV6ullSTHSoXx/nNkIkZTVVrMiO9AejlXATCnJGg42do2BnGmOi2GjffAxBFWtWUiMPBNxDFQl11+8r96ZY3xv9U4px9cc27pz1uJgVTWu97KoJGhtrMeWVSTF+wXRDXdzIr3DUO+2dd7embpgBLrPOpKU4SgsV/jnDAUQ/xg2xgCjHsA22f/iCMdB3s5qXoCs3NRFKKGxyiioOgTIRR4lEYZTwdWbj4LKJySSk0G/7nnip5r1mcPok4EK1LqYkCnapxGsImgKiCjaBZH/SwPL65z0jVuM095OR+WdJJeEtOF0MlpXmB4QUoyNa9AE+/BohzR4Kgiq0PA2joenaZMKowubFnZaiHfjxWqYY7JY257iRmIzZmkQ5q1dJi+FgPSRGI+vI3SeZQZB5GqUqB0KYX8hr4Nws7FY/muUhC/rJe0Lst3gQM5NwxwzB9rzPkvxwqC0Dhxp3iJXwnYHIUlqSqCoP3ooF08/MsL0lYJ+/VJhMH8GDmNXeFoVmNakY4aSV+0jZnkU0lgFAfdJ/o9maekqe0wAAyQjRK1Qg5vroBigEJr9Qt7kjFXWsAL5Q3OkACfjLL89awlayUHF9gF+/aQ4uv9jz6aRuFNTkDrLYN3riSSx8XX6Ku7ZmvDZUK9RxhZDjc3oPIrfW28kX80NJXolRTX0X7Iyjt9Yg8kslPAp5uiiXaWEm9Di89B0LkNDF063/1 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:(13230016)(4636009)(366004)(136003)(346002)(39860400002)(376002)(396003)(122000001)(478600001)(99936003)(2940100002)(38100700002)(9686003)(7696005)(26005)(6506007)(53546011)(186003)(71200400001)(52536014)(8676002)(55016003)(5660300002)(8936002)(64756008)(66946007)(66556008)(76116006)(66476007)(41300700001)(4326008)(4744005)(86362001)(2906002)(33656002)(66446008)(85182001)(82960400001)(38070700005)(110136005)(54906003)(316002)(6636002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MWV3ZDRqcDJwN21jTytlZTlOa0RBZ2xONlJFV0FpRi9ZSTgxY1pwTmVQQzFK?= =?utf-8?B?amExQnpDb2UvU1lRaWYxVHI4NmJVd1VRNGtISmlMcnhKM01PZ1BLTWQ0WmQv?= =?utf-8?B?Z01SK2pOUXluaCtrREdIYXRGbnNDSisrZDhObjVEVE9HNzU4clhJMnVja2FI?= =?utf-8?B?V1BpT1VyZXEyMU1MOUtBOFYvSjR4bFY4ck5WQzR1dGd5SW9McCtCQUx2MUJw?= =?utf-8?B?ZUZNbzVNNEtPaVNnajN0QkRlVThpWTM1TXVSZ2YyWjhERExobjF6YjZyVENn?= =?utf-8?B?dmJMU1FsbG00dXlWME5MM0luREh0MG1ieWpUN254OUdCc2RuUVhGSkJZckdO?= =?utf-8?B?OGNHRUV5YU5JeXZwUjB4SHRQbTdPVzZVMkJURmNzQmZxakhyYlBDRHZld3Yz?= =?utf-8?B?RjM0VUZyN0tWVlA0cjltS1ZCeUpscnNteHoveGhMZXdPTkE4QzBsSVJMYXFT?= =?utf-8?B?VndwSk50YS9hZk9ISzBMOWRlVTRMaWh4Y016Uk11U2cwUTFFNUh0aFA2c3NW?= =?utf-8?B?eHo5b0FhaS9Ib3I3VWlmZk5YbWwrVlVCeTg3OTQzUFUvektGOVlydGlxeElx?= =?utf-8?B?b3I1WkRsSjk5cjZKMTRjQkQvNHBjamR6K20waC9FdW1sK2Q3VFhDZVgxaHgv?= =?utf-8?B?NHF1RGVvN0paVXVkZFpBTld1RSszVmRRZ3JrTU1Fb3ByTWYzYmRSSElzS2w4?= =?utf-8?B?UjUrN3QwWGh3WnBnaVFrZTNwUWZhZ1hPN04wcDZIRElCb0x6ZTZsNFV3OWJI?= =?utf-8?B?dTFITXViZEZzaE14OE5RTUpwZEJmdGNhNUk1Vk52WXE1THpwaExQZkxsNmFa?= =?utf-8?B?R3lyOC9RamhOQnhLaDV6UW9seXVIMzczOWUycmVPVnlYWFNiUHZnejN5ekRN?= =?utf-8?B?L1N2MmZVVTFIMjR2T2M1U1o3Yk82b0pnNDBad3ZDSm1mcGNXQkZsQlhMYndv?= =?utf-8?B?QmFacmtaZW1hSTFZalUvZGpIS1RzVytmTitneEkwSDRRVGVMMWdOUVFRUUFQ?= =?utf-8?B?OS95TmwrZEtDZFkxUFAwUzcrVFF2dnhyNkpRQjFQcjZoK3lJekE4UUlnL0l1?= =?utf-8?B?VzRQV1hsY2tmeVZ5MFh4V0VsbVE2ZGFGZnd2U3NYNU9mTWZoem5zTTN2cXNn?= =?utf-8?B?MDJiVjZWYm5ZVWxXTENBL21YenJoZmJUb3dQYUVDRG50ZHgxM2t4VzQwQjAr?= =?utf-8?B?VHNwYXhsNEp2akJBQkw5QmYxQkJpNEtER21ZbDBpN1FoN0p6QmdXZXRhdi80?= =?utf-8?B?YkFBNVpuVUZoSUhSUk5hVUhQQmVTb1J5a0tJbWpMR0FHcmZsVnB0ejQycGZv?= =?utf-8?B?QUx3NnhZUHZwY21kNFl2Slh5OTdid1Y0U2tuK0VNSEgwQVdKQmlzRUZNTGtQ?= =?utf-8?B?cnVkRTRpY3JCSFcxcGplRlIvMzZpY21HTTJkZUh0WVVIMng4OFVpbndFVkZ2?= =?utf-8?B?eWpER01lOHR3WjkvdkhtWlNUbitVc1RnU2duZ3NvbVVZZFVISzBZK2xRNktL?= =?utf-8?B?azRYNkRBK1VlWEFDdlJuZzk0Q2t0anFzb0V3NTJscVpSQ0lYc1RXbTVnKzVW?= =?utf-8?B?bWtLUlhlRy9vd2dsQUdqMHA1L1ZacDZUTlFMUlVuSkowWUFqRVgrTTZpRGNo?= =?utf-8?B?K1BWVSs4Nk91NDk2Zm1BdWpWMHR0bWVrMUJrbjZIdUdmMVJVNXN1d1NRUmdJ?= =?utf-8?B?ZXc1ZDZFVFlZYWc4MTdLazl6czNmWFRPSFFqSDBIeU1aMEV5RmVZSVNQRUNI?= =?utf-8?B?RjlScDNkeUpFZ3JCSmlKbmkzeitMV2FZU1NyK0praVgyQUFMaWRDRHY3OTdl?= =?utf-8?B?eEtSOVN5ajNLaTkyWFJ4UmtDdDc5elBZMEVIVWVMakV2cHhWOXZNbGRXbTd4?= =?utf-8?B?a2krSktRbVdkeFo5Q3EwUDVkdXBCeU9vZXRWRGgraEJEOTJyQ0pSYjlXanZL?= =?utf-8?B?TFZMZzc1ejJEZE92NHV6WjZzdlduRG5YY3JJckh4N3R2K1lDeDhvcjZUd2Rq?= =?utf-8?B?djUzbERaVzM3d1RsLzdOZ3NmU2ovNTVCd0ZoUkw1aXA4ems1WkpzSkZKTWpu?= =?utf-8?B?aG5BWjg0SEtEaTNpQ1krcUVvaXhudDZLbjZ5UWIzM0kxU3JQQW1BSDZ2L2tv?= =?utf-8?Q?KtA9gsWVX2BYGYvQEPdiCsr9Q?= Content-Type: multipart/mixed; boundary="_006_OS0PR01MB5716838ABB8716547F92030394649OS0PR01MB5716jpnp_" 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: e3629d30-813c-47bb-8c35-08da7b7024d5 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Aug 2022 08:04:41.0250 (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: SWSvjaGYaT2z1PN4pVYWn6Ohu5fPnuYd7sLXTmKxvxVGqtWwegfTxs5d29Yz9XQV/neUCnFINkV46IOtog5JXA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS0PR01MB6100 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS0PR01MB5716838ABB8716547F92030394649OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVGh1cnNkYXksIEF1Z3VzdCAxMSwgMjAyMiAzOjQ4IFBNIGhvdXpqLmZuc3RAZnVqaXRzdS5j b20gd3JvdGU6IA0KPiANCj4gT24gVHVlc2RheSwgQXVndXN0IDksIDIwMjIgNzowMCBQTSBBbWl0 IEthcGlsYSA8YW1pdC5rYXBpbGExNkBnbWFpbC5jb20+DQo+IHdyb3RlOg0KPiA+DQo+ID4NCj4g PiBSZXZpZXcgY29tbWVudHMgb24NCj4gPiB2MjAtMDAwMS1QZXJmb3JtLXN0cmVhbWluZy1sb2dp Y2FsLXRyYW5zYWN0aW9ucy1ieS1iYWNrZ3INCj4gDQo+IEF0dGFjaCBuZXcgdmVyc2lvbih2MjEp IHBhdGNoIHNldCB3aGljaCBhZGRyZXNzZWQgYWxsIHRoZSBjb21tZW50cyByZWNlaXZlZA0KPiBz byBmYXIuDQo+IA0KDQpTb3JyeSwgSSBkaWRuJ3QgaW5jbHVkZSB0aGUgZG9jdW1lbnRhdGlvbiBj aGFuZ2VzLiBIZXJlIGlzIHRoZSBjb21wbGV0ZSBwYXRjaCBzZXQuDQoNCkJlc3QgcmVnYXJkcywN CkhvdSB6ag0K --_006_OS0PR01MB5716838ABB8716547F92030394649OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v21-0003-Add-some-checks-before-using-apply-background-wo.patch" Content-Description: v21-0003-Add-some-checks-before-using-apply-background-wo.patch Content-Disposition: attachment; filename="v21-0003-Add-some-checks-before-using-apply-background-wo.patch"; size=56767; creation-date="Thu, 11 Aug 2022 08:02:00 GMT"; modification-date="Thu, 11 Aug 2022 08:04:36 GMT" Content-Transfer-Encoding: base64 RnJvbSBhNzg5NWQzN2UzYTQzMzZhMjU0NWNkM2Q4MGIyNWVlMGM1ZmNmZTRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMTAgQXVnIDIwMjIgMjA6Mzc6MjIgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyMSAzLzVdIEFkZCBzb21lIGNoZWNrcyBiZWZvcmUgdXNpbmcgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIKIHRvIGFwcGx5IGNoYW5nZXMuCgpzdHJlYW1pbmc9cGFyYWxsZWwgbW9kZSBoYXMgdHdv IHJlcXVpcmVtZW50czoKMSkgVGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRo ZSBzdWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28gYmUgdGhlCnVuaXF1ZSBjb2x1bW4gb24gdGhl IHB1Ymxpc2hlci1zaWRlOwoyKSBUaGVyZSBjYW5ub3QgYmUgYW55IG5vbi1pbW11dGFibGUgZnVu Y3Rpb25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZQpyZXBsaWNhdGVkIHRhYmxlLiBMb29r IGZvciBmdW5jdGlvbnMgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CiogYS4gVHJpZ2dlciBmdW5j dGlvbnMKKiBiLiBDb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucyBhbmQgZG9tYWluIGNv bnN0cmFpbnRzCiogYy4gQ29uc3RyYWludCBleHByZXNzaW9ucwoqIGQuIEZvcmVpZ24ga2V5cwoK V2l0aG91dCB0aGVzZSByZXN0cmljdGlvbnMsIHRoZSBmb2xsb3dpbmcgc2NlbmFyaW8gbWF5IG9j Y3VyOgpUaGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgbG9jayBhIHJvdyB3aGVuIHByb2Nlc3Np bmcgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sCmFmdGVyIHRoYXQgdGhlIG1haW4gYXBwbHkgd29y a2VyIHRyaWVzIHRvIGxvY2sgdGhlIHNhbWUgcm93IHdoZW4gcHJvY2Vzc2luZwphbm90aGVyIHRy YW5zYWN0aW9uLiBBdCB0aGlzIHRpbWUsIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3YWl0cyBmb3Ig dGhlCnN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBjb21wbGV0ZSBhbmQgdGhlIGxvY2sgdG8gYmUg cmVsZWFzZWQsIGl0IHdvbid0IHNlbmQKc3Vic2VxdWVudCBkYXRhIG9mIHRoZSBzdHJlYW1pbmcg dHJhbnNhY3Rpb24gdG8gdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyOwp0aGUgYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIgd2FpdHMgdG8gcmVjZWl2ZSB0aGUgcmVzdCBvZiBzdHJlYW1pbmcgdHJh bnNhY3Rpb24KYW5kIGNhbid0IGZpbmlzaCB0aGlzIHRyYW5zYWN0aW9uLiBUaGVuIHRoZSBtYWlu IGFwcGx5IHdvcmtlciB3aWxsIHdhaXQKaW5kZWZpbml0ZWx5LgotLS0KIGRvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICAgIHwgICA1ICsKIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jIHwgIDUzICsrKwogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICAgICAgfCAgODYgKysrLQogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jICAgICAgfCAyMTQgKysrKysrKysrKwog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgICAgfCAgIDEgKwog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgICAgfCAgNDMgKy0K IHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgICAgICAgICAgICAgIHwgIDE3ICsK IHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oICAgICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oICAgICAgIHwgIDE1ICsK IHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICAgIHwgICAxICsK IHNyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmggICAgICAgICAgICAgICAgICAgIHwgICAyICsK IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgICAgICAgICAgIHwgIDMzICst CiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgICB8ICAzMyAr LQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgfCAgIDgg Kwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbCAgfCAgMzMg Ky0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgIHwgNTQ2 ICsrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QgICAgICAgICAgICAgICAgfCAgIDEgKwogMTcgZmlsZXMgY2hhbmdlZCwgMTAwNCBpbnNlcnRp b25zKCspLCA4OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9z Z21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCBlY2UyN2M1Li5iZmMyZjhkZGMgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yNDAsNiArMjQwLDExIEBAIENS RUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlw dGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICAgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVk LiBOb3RlIHRoYXQgaWYgYW4gZXJyb3IgaGFwcGVucyB3aGVuCiAgICAgICAgICAgYXBwbHlpbmcg Y2hhbmdlcyBpbiBhIGJhY2tncm91bmQgd29ya2VyLCB0aGUgZmluaXNoIExTTiBvZiB0aGUKICAg ICAgICAgICByZW1vdGUgdHJhbnNhY3Rpb24gbWlnaHQgbm90IGJlIHJlcG9ydGVkIGluIHRoZSBz ZXJ2ZXIgbG9nLgorICAgICAgICAgIFRoZXJlIGFyZSB0d28gcmVxdWlyZW1lbnRzIGZvciB1c2lu ZyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4KKyAgICAgICAgICBtb2RlOiAxKSB0aGUgdW5p cXVlIGNvbHVtbiBpbiB0aGUgdGFibGUgb24gdGhlIHN1YnNjcmliZXItc2lkZSBzaG91bGQKKyAg ICAgICAgICBhbHNvIGJlIHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNoZXItc2lkZTsg MikgdGhlcmUgY2Fubm90IGJlCisgICAgICAgICAgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rpb25z IHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZSByZXBsaWNhdGVkCisgICAgICAgICAgdGFibGUu CiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0 ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5 Ymd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtl ci5jCmluZGV4IGQ1YjYxY2MuLmE0MjVkOTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jCkBAIC03NjIsMyArNzYyLDU2IEBAIGFwcGx5X2Jn d29ya2VyX3NhdmVwb2ludF9uYW1lKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLAogewog CXNucHJpbnRmKHNwbmFtZSwgc3pzcCwgInBnX3NwXyV1XyV1Iiwgc3Vib2lkLCB4aWQpOwogfQor CisvKgorICogQ2hlY2sgaWYgY2hhbmdlcyBvbiB0aGlzIHJlbGF0aW9uIGNhbiBiZSBhcHBsaWVk IGJ5IGFuIGFwcGx5IGJhY2tncm91bmQKKyAqIHdvcmtlci4KKyAqCisgKiBBbHRob3VnaCB0aGUg Y29tbWl0IG9yZGVyIGlzIG1haW50YWluZWQgYnkgb25seSBhbGxvd2luZyBvbmUgcHJvY2VzcyB0 bworICogY29tbWl0IGF0IGEgdGltZSwgdGhlIGFjY2VzcyBvcmRlciB0byB0aGUgcmVsYXRpb24g aGFzIGNoYW5nZWQuIFRoaXMgY291bGQKKyAqIGNhdXNlIHVuZXhwZWN0ZWQgcHJvYmxlbXMgaWYg dGhlIHVuaXF1ZSBjb2x1bW4gb24gdGhlIHJlcGxpY2F0ZWQgdGFibGUgaXMKKyAqIGluY29uc2lz dGVudCB3aXRoIHRoZSBwdWJsaXNoZXItc2lkZSBvciBjb250YWlucyBub24taW1tdXRhYmxlIGZ1 bmN0aW9ucworICogd2hlbiBhcHBseWluZyB0cmFuc2FjdGlvbnMgdXNpbmcgYW4gYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNr KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQoreworCS8qCisJICogU2tpcCBjaGVjayBpZiBu b3QgdXNpbmcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzLgorCSAqCisJICogSWYgYW55IHdvcmtl ciBpcyBoYW5kbGluZyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCB0aGlzIGNoZWNrIG5lZWRz IHRvCisJICogYmUgcGVyZm9ybWVkIG5vdCBvbmx5IGluIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdv cmtlciwgYnV0IGFsc28gaW4gdGhlCisJICogbWFpbiBhcHBseSB3b3JrZXIuIFRoaXMgaXMgYmVj YXVzZSB3aXRob3V0IHRoZXNlIHJlc3RyaWN0aW9ucywgbWFpbgorCSAqIGFwcGx5IHdvcmtlciBt YXkgYmxvY2sgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIHdoaWNoIHdpbGwgY2F1c2UKKwkgKiBp bmZpbml0ZSB3YWl0cy4KKwkgKi8KKwlpZiAoIWFtX2FwcGx5X2Jnd29ya2VyKCkgJiYKKwkJKGxp c3RfbGVuZ3RoKEFwcGx5Qmd3b3JrZXJzRnJlZUxpc3QpID09IGxpc3RfbGVuZ3RoKEFwcGx5Qmd3 b3JrZXJzTGlzdCkpKQorCQlyZXR1cm47CisKKwkvKgorCSAqIFBhcnRpdGlvbiB0YWJsZSBjaGVj a3MgYXJlIGRvbmUgbGF0ZXIgaW4gZnVuY3Rpb24KKwkgKiBhcHBseV9oYW5kbGVfdHVwbGVfcm91 dGluZy4KKwkgKi8KKwlpZiAocmVsLT5sb2NhbHJlbC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJ TkRfUEFSVElUSU9ORURfVEFCTEUpCisJCXJldHVybjsKKworCS8qCisJICogUmV0dXJuIGlmIGNo YW5nZXMgb24gdGhpcyByZWxhdGlvbiBjYW4gYmUgYXBwbGllZCBieSBhbiBhcHBseSBiYWNrZ3Jv dW5kCisJICogd29ya2VyLgorCSAqLworCWlmIChyZWwtPnBhcmFsbGVsX2FwcGx5ID09IFBBUkFM TEVMX0FQUExZX1NBRkUpCisJCXJldHVybjsKKworCS8qIFdlIGFyZSBpbiBlcnJvciBtb2RlIGFu ZCBzaG91bGQgZ2l2ZSB1c2VyIGNvcnJlY3QgZXJyb3IuICovCisJZXJlcG9ydChFUlJPUiwKKwkJ CShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJ IGVycm1zZygiY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIHVzaW5n ICIKKwkJCQkJInN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsIiwKKwkJ CQkJcmVsLT5yZW1vdGVyZWwubnNwbmFtZSwgcmVsLT5yZW1vdGVyZWwucmVsbmFtZSksCisJCQkg ZXJyZGV0YWlsKCJUaGUgdW5pcXVlIGNvbHVtbiBvbiBzdWJzY3JpYmVyIGlzIG5vdCB0aGUgdW5p cXVlICIKKwkJCQkJICAgImNvbHVtbiBvbiBwdWJsaXNoZXIgb3IgdGhlcmUgaXMgYXQgbGVhc3Qg b25lICIKKwkJCQkJICAgIm5vbi1pbW11dGFibGUgZnVuY3Rpb24uIiksCisJCQkgZXJyaGludCgi UGxlYXNlIGNoYW5nZSB0byB1c2Ugc3Vic2NyaXB0aW9uIHBhcmFtZXRlciAiCisJCQkJCSAic3Ry ZWFtaW5nPW9uLiIpKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMK aW5kZXggNDdiZDgxMS4uYmNmOWJkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cHJvdG8uYwpAQCAtMjMsNyArMjMsOCBAQAogLyoKICAqIFByb3RvY29sIG1lc3NhZ2UgZmxhZ3Mu CiAgKi8KLSNkZWZpbmUgTE9HSUNBTFJFUF9JU19SRVBMSUNBX0lERU5USVRZIDEKKyNkZWZpbmUg QVRUUl9JU19SRVBMSUNBX0lERU5USVRZCSgxIDw8IDApCisjZGVmaW5lIEFUVFJfSVNfVU5JUVVF CQkJCSgxIDw8IDEpCiAKICNkZWZpbmUgTUVTU0FHRV9UUkFOU0FDVElPTkFMICgxPDwwKQogI2Rl ZmluZSBUUlVOQ0FURV9DQVNDQURFCQkoMTw8MCkKQEAgLTQxLDYgKzQyLDY2IEBAIHN0YXRpYyB2 b2lkIGxvZ2ljYWxyZXBfd3JpdGVfbmFtZXNwYWNlKFN0cmluZ0luZm8gb3V0LCBPaWQgbnNwaWQp Owogc3RhdGljIGNvbnN0IGNoYXIgKmxvZ2ljYWxyZXBfcmVhZF9uYW1lc3BhY2UoU3RyaW5nSW5m byBpbik7CiAKIC8qCisgKiBSZWxhdGlvbkdldFVuaXF1ZUtleUJpdG1hcCAtLSBnZXQgYSBiaXRt YXAgb2YgdW5pcXVlIGF0dHJpYnV0ZSBudW1iZXJzCisgKgorICogVGhpcyBpcyBzaW1pbGFyIHRv IFJlbGF0aW9uR2V0SWRlbnRpdHlLZXlCaXRtYXAoKSwgYnV0IHJldHVybnMgYSBiaXRtYXAgb2YK KyAqIGluZGV4IGF0dHJpYnV0ZSBudW1iZXJzIGZvciBhbGwgdW5pcXVlIGluZGV4ZXMuCisgKi8K K3N0YXRpYyBCaXRtYXBzZXQgKgorUmVsYXRpb25HZXRVbmlxdWVLZXlCaXRtYXAoUmVsYXRpb24g cmVsKQoreworCUxpc3QJCSAgICppbmRleG9pZGxpc3QgPSBOSUw7CisJTGlzdENlbGwJICAgKmlu ZGV4b2lkc2NhbjsKKwlCaXRtYXBzZXQJICAgKmF0dHVuaXF1ZSA9IE5VTEw7CisKKwlpZiAoIXJl bC0+cmRfcmVsLT5yZWxoYXNpbmRleCkKKwkJcmV0dXJuIE5VTEw7CisKKwlpbmRleG9pZGxpc3Qg PSBSZWxhdGlvbkdldEluZGV4TGlzdChyZWwpOworCisJZm9yZWFjaChpbmRleG9pZHNjYW4sIGlu ZGV4b2lkbGlzdCkKKwl7CisJCU9pZAkJCWluZGV4b2lkID0gbGZpcnN0X29pZChpbmRleG9pZHNj YW4pOworCQlSZWxhdGlvbglpbmRleFJlbDsKKwkJaW50CQkJaTsKKworCQkvKiBMb29rIHVwIHRo ZSBkZXNjcmlwdGlvbiBmb3IgaW5kZXggKi8KKwkJaW5kZXhSZWwgPSBSZWxhdGlvbklkR2V0UmVs YXRpb24oaW5kZXhvaWQpOworCisJCWlmICghUmVsYXRpb25Jc1ZhbGlkKGluZGV4UmVsKSkKKwkJ CWVsb2coRVJST1IsICJjb3VsZCBub3Qgb3BlbiByZWxhdGlvbiB3aXRoIE9JRCAldSIsIGluZGV4 b2lkKTsKKworCQlpZiAoIWluZGV4UmVsLT5yZF9pbmRleC0+aW5kaXN1bmlxdWUpCisJCXsKKwkJ CVJlbGF0aW9uQ2xvc2UoaW5kZXhSZWwpOworCQkJY29udGludWU7CisJCX0KKworCQkvKiBBZGQg cmVmZXJlbmNlZCBhdHRyaWJ1dGVzIHRvIGlkaW5kZXhhdHRycyAqLworCQlmb3IgKGkgPSAwOyBp IDwgaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRuYXR0czsgaSsrKQorCQl7CisJCQlpbnQgYXR0cm51 bSA9IGluZGV4UmVsLT5yZF9pbmRleC0+aW5ka2V5LnZhbHVlc1tpXTsKKworCQkJLyoKKwkJCSAq IFdlIGRvbid0IGluY2x1ZGUgbm9uLWtleSBjb2x1bW5zIGludG8gaWRpbmRleGF0dHJzCisJCQkg KiBiaXRtYXBzLiBTZWUgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAuCisJCQkgKi8KKwkJCWlm IChhdHRybnVtICE9IDApCisJCQl7CisJCQkJaWYgKGkgPCBpbmRleFJlbC0+cmRfaW5kZXgtPmlu ZG5rZXlhdHRzICYmCisJCQkJCSFibXNfaXNfbWVtYmVyKGF0dHJudW0gLSBGaXJzdExvd0ludmFs aWRIZWFwQXR0cmlidXRlTnVtYmVyLCBhdHR1bmlxdWUpKQorCQkJCQlhdHR1bmlxdWUgPSBibXNf YWRkX21lbWJlcihhdHR1bmlxdWUsCisJCQkJCQkJCQkJCSAgIGF0dHJudW0gLSBGaXJzdExvd0lu dmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyKTsKKwkJCX0KKwkJfQorCQlSZWxhdGlvbkNsb3NlKGlu ZGV4UmVsKTsKKwl9CisJbGlzdF9mcmVlKGluZGV4b2lkbGlzdCk7CisKKwlyZXR1cm4gYXR0dW5p cXVlOworfQorCisvKgogICogQ2hlY2sgaWYgYSBjb2x1bW4gaXMgY292ZXJlZCBieSBhIGNvbHVt biBsaXN0LgogICoKICAqIE5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dCBOVUxMLCB3aGljaCBpcyB0 cmVhdGVkIGFzIGEgY29sdW1uIGxpc3QgY292ZXJpbmcKQEAgLTkzMyw3ICs5OTQsOCBAQCBsb2dp Y2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJpdG1hcHNl dCAqY29sdW1ucykKIAlUdXBsZURlc2MJZGVzYzsKIAlpbnQJCQlpOwogCXVpbnQxNgkJbmxpdmVh dHRzID0gMDsKLQlCaXRtYXBzZXQgICppZGF0dHJzID0gTlVMTDsKKwlCaXRtYXBzZXQgICppZGF0 dHJzID0gTlVMTCwKKwkJCSAgICphdHR1bmlxdWUgPSBOVUxMOwogCWJvb2wJCXJlcGxpZGVudGZ1 bGw7CiAKIAlkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWwpOwpAQCAtOTU4LDYgKzEwMjAsOSBA QCBsb2dpY2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJp dG1hcHNldCAqY29sdW1ucykKIAlpZiAoIXJlcGxpZGVudGZ1bGwpCiAJCWlkYXR0cnMgPSBSZWxh dGlvbkdldElkZW50aXR5S2V5Qml0bWFwKHJlbCk7CiAKKwkvKiBmZXRjaCBiaXRtYXAgb2YgVU5J UVVFIGF0dHJpYnV0ZXMgKi8KKwlhdHR1bmlxdWUgPSBSZWxhdGlvbkdldFVuaXF1ZUtleUJpdG1h cChyZWwpOworCiAJLyogc2VuZCB0aGUgYXR0cmlidXRlcyAqLwogCWZvciAoaSA9IDA7IGkgPCBk ZXNjLT5uYXR0czsgaSsrKQogCXsKQEAgLTk3NCw3ICsxMDM5LDExIEBAIGxvZ2ljYWxyZXBfd3Jp dGVfYXR0cnMoU3RyaW5nSW5mbyBvdXQsIFJlbGF0aW9uIHJlbCwgQml0bWFwc2V0ICpjb2x1bW5z KQogCQlpZiAocmVwbGlkZW50ZnVsbCB8fAogCQkJYm1zX2lzX21lbWJlcihhdHQtPmF0dG51bSAt IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCiAJCQkJCQkgIGlkYXR0cnMpKQot CQkJZmxhZ3MgfD0gTE9HSUNBTFJFUF9JU19SRVBMSUNBX0lERU5USVRZOworCQkJZmxhZ3MgfD0g QVRUUl9JU19SRVBMSUNBX0lERU5USVRZOworCisJCWlmIChibXNfaXNfbWVtYmVyKGF0dC0+YXR0 bnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwKKwkJCQkJCSAgYXR0dW5p cXVlKSkKKwkJCWZsYWdzIHw9IEFUVFJfSVNfVU5JUVVFOwogCiAJCXBxX3NlbmRieXRlKG91dCwg ZmxhZ3MpOwogCkBAIC05ODksNiArMTA1OCw3IEBAIGxvZ2ljYWxyZXBfd3JpdGVfYXR0cnMoU3Ry aW5nSW5mbyBvdXQsIFJlbGF0aW9uIHJlbCwgQml0bWFwc2V0ICpjb2x1bW5zKQogCX0KIAogCWJt c19mcmVlKGlkYXR0cnMpOworCWJtc19mcmVlKGF0dHVuaXF1ZSk7CiB9CiAKIC8qCkBAIC0xMDAx LDcgKzEwNzEsOCBAQCBsb2dpY2FscmVwX3JlYWRfYXR0cnMoU3RyaW5nSW5mbyBpbiwgTG9naWNh bFJlcFJlbGF0aW9uICpyZWwpCiAJaW50CQkJbmF0dHM7CiAJY2hhcgkgICoqYXR0bmFtZXM7CiAJ T2lkCQkgICAqYXR0dHlwczsKLQlCaXRtYXBzZXQgICphdHRrZXlzID0gTlVMTDsKKwlCaXRtYXBz ZXQgICphdHRrZXlzID0gTlVMTCwKKwkJCSAgICphdHR1bmlxdWUgPSBOVUxMOwogCiAJbmF0dHMg PSBwcV9nZXRtc2dpbnQoaW4sIDIpOwogCWF0dG5hbWVzID0gcGFsbG9jKG5hdHRzICogc2l6ZW9m KGNoYXIgKikpOwpAQCAtMTAxNCw5ICsxMDg1LDEzIEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhT dHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCkKIAogCQkvKiBDaGVjayBmb3Ig cmVwbGljYSBpZGVudGl0eSBjb2x1bW4gKi8KIAkJZmxhZ3MgPSBwcV9nZXRtc2dieXRlKGluKTsK LQkJaWYgKGZsYWdzICYgTE9HSUNBTFJFUF9JU19SRVBMSUNBX0lERU5USVRZKQorCQlpZiAoZmxh Z3MgJiBBVFRSX0lTX1JFUExJQ0FfSURFTlRJVFkpCiAJCQlhdHRrZXlzID0gYm1zX2FkZF9tZW1i ZXIoYXR0a2V5cywgaSk7CiAKKwkJLyogQ2hlY2sgZm9yIHVuaXF1ZSBjb2x1bW4gKi8KKwkJaWYg KGZsYWdzICYgQVRUUl9JU19VTklRVUUpCisJCQlhdHR1bmlxdWUgPSBibXNfYWRkX21lbWJlcihh dHR1bmlxdWUsIGkpOworCiAJCS8qIGF0dHJpYnV0ZSBuYW1lICovCiAJCWF0dG5hbWVzW2ldID0g cHN0cmR1cChwcV9nZXRtc2dzdHJpbmcoaW4pKTsKIApAQCAtMTAzMCw2ICsxMTA1LDcgQEAgbG9n aWNhbHJlcF9yZWFkX2F0dHJzKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVs KQogCXJlbC0+YXR0bmFtZXMgPSBhdHRuYW1lczsKIAlyZWwtPmF0dHR5cHMgPSBhdHR0eXBzOwog CXJlbC0+YXR0a2V5cyA9IGF0dGtleXM7CisJcmVsLT5hdHR1bmlxdWUgPSBhdHR1bmlxdWU7CiAJ cmVsLT5uYXR0cyA9IG5hdHRzOwogfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3JlbGF0aW9uLmMKaW5kZXggZTk4OTA0Ny4uMDUwZWFkYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYwpAQCAtMTksMTIgKzE5LDE5IEBACiAKICNpbmNsdWRl ICJhY2Nlc3MvdGFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL25hbWVzcGFjZS5oIgorI2luY2x1 ZGUgImNhdGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9u X3JlbC5oIgorI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRv ci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgorI2luY2x1ZGUgIm9w dGltaXplci9vcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRp b24uaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCIKKyNpbmNsdWRl ICJyZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmgiCiAjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNp bmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgor I2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAKIAogc3RhdGljIE1lbW9yeUNvbnRleHQgTG9n aWNhbFJlcFJlbE1hcENvbnRleHQgPSBOVUxMOwpAQCAtOTIsNiArOTksMjYgQEAgbG9naWNhbHJl cF9yZWxtYXBfaW52YWxpZGF0ZV9jYihEYXR1bSBhcmcsIE9pZCByZWxvaWQpCiB9CiAKIC8qCisg KiBSZWxjYWNoZSBpbnZhbGlkYXRpb24gY2FsbGJhY2sgdG8gcmVzZXQgcGFyYWxsZWxfYXBwbHkg ZmxhZy4KKyAqLworc3RhdGljIHZvaWQKK2xvZ2ljYWxyZXBfcmVsbWFwX3Jlc2V0X3BhcmFsbGVs X2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCit7CisJSEFTSF9T RVFfU1RBVFVTIGhhc2hfc2VxOworCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnk7CisKKwlp ZiAoTG9naWNhbFJlcFJlbE1hcCA9PSBOVUxMKQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0 KCZoYXNoX3NlcSwgTG9naWNhbFJlcFJlbE1hcCk7CisJd2hpbGUgKChlbnRyeSA9IGhhc2hfc2Vx X3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCXsKKwkJZW50cnktPnBhcmFsbGVsX2FwcGx5 ID0gUEFSQUxMRUxfQVBQTFlfVU5LTk9XTjsKKwkJZW50cnktPmxvY2FscmVsdmFsaWQgPSBmYWxz ZTsKKwl9Cit9CisKKy8qCiAgKiBJbml0aWFsaXplIHRoZSByZWxhdGlvbiBtYXAgY2FjaGUuCiAg Ki8KIHN0YXRpYyB2b2lkCkBAIC0xMTYsNiArMTQzLDkgQEAgbG9naWNhbHJlcF9yZWxtYXBfaW5p dCh2b2lkKQogCS8qIFdhdGNoIGZvciBpbnZhbGlkYXRpb24gZXZlbnRzLiAqLwogCUNhY2hlUmVn aXN0ZXJSZWxjYWNoZUNhbGxiYWNrKGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IsCiAJ CQkJCQkJCSAgKERhdHVtKSAwKTsKKwlDYWNoZVJlZ2lzdGVyU3lzY2FjaGVDYWxsYmFjayhQUk9D T0lELAorCQkJCQkJCQkgIGxvZ2ljYWxyZXBfcmVsbWFwX3Jlc2V0X3BhcmFsbGVsX2NiLAorCQkJ CQkJCQkgIChEYXR1bSkgMCk7CiB9CiAKIC8qCkBAIC0xNDIsNiArMTcyLDcgQEAgbG9naWNhbHJl cF9yZWxtYXBfZnJlZV9lbnRyeShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQogCQlwZnJl ZShyZW1vdGVyZWwtPmF0dHR5cHMpOwogCX0KIAlibXNfZnJlZShyZW1vdGVyZWwtPmF0dGtleXMp OworCWJtc19mcmVlKHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsKIAogCWlmIChlbnRyeS0+YXR0cm1h cCkKIAkJZnJlZV9hdHRybWFwKGVudHJ5LT5hdHRybWFwKTsKQEAgLTE5MCw2ICsyMjEsNyBAQCBs b2dpY2FscmVwX3JlbG1hcF91cGRhdGUoTG9naWNhbFJlcFJlbGF0aW9uICpyZW1vdGVyZWwpCiAJ fQogCWVudHJ5LT5yZW1vdGVyZWwucmVwbGlkZW50ID0gcmVtb3RlcmVsLT5yZXBsaWRlbnQ7CiAJ ZW50cnktPnJlbW90ZXJlbC5hdHRrZXlzID0gYm1zX2NvcHkocmVtb3RlcmVsLT5hdHRrZXlzKTsK KwllbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0dW5p cXVlKTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKIH0KIApAQCAtMzExLDYgKzM0 MywxODEgQEAgbG9naWNhbHJlcF9yZWxfbWFya191cGRhdGFibGUoTG9naWNhbFJlcFJlbE1hcEVu dHJ5ICplbnRyeSkKIH0KIAogLyoKKyAqIENoZWNrIGlmIGNoYW5nZXMgb24gb25lIHJlbGF0aW9u IGNhbiBiZSBhcHBsaWVkIGJ5IGFuIGFwcGx5IGJhY2tncm91bmQKKyAqIHdvcmtlciBhbmQgYXNz aWduIHRoZSAncGFyYWxsZWxfYXBwbHknIGZsYWcuCisgKgorICogVGhlcmUgYXJlIHR3byByZXF1 aXJlbWVudHMgZm9yIGFwcGx5aW5nIGNoYW5nZXMgdXNpbmcgYW4gYXBwbHkgYmFja2dyb3VuZAor ICogd29ya2VyOiAxKSB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgdGFibGUgb24gdGhlIHN1YnNj cmliZXItc2lkZSBzaG91bGQgYWxzbworICogYmUgdGhlIHVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1 Ymxpc2hlci1zaWRlOyAyKSB0aGVyZSBjYW5ub3QgYmUgYW55CisgKiBub24taW1tdXRhYmxlIGZ1 bmN0aW9ucyB1c2VkIGJ5IHRoZSBzdWJzY3JpYmVyLXNpZGUgcmVwbGljYXRlZCB0YWJsZS4KKyAq CisgKiBXaXRob3V0IHRoZXNlIHJlc3RyaWN0aW9ucywgdGhlIGZvbGxvd2luZyBzY2VuYXJpbyBt YXkgb2NjdXI6IFRoZSBhcHBseQorICogYmFja2dyb3VuZCB3b3JrZXIgbG9ja3MgYSByb3cgd2hl biBwcm9jZXNzaW5nIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCBhZnRlcgorICogdGhhdCB0aGUg bWFpbiBhcHBseSB3b3JrZXIgdHJpZXMgdG8gbG9jayB0aGUgc2FtZSByb3cgd2hlbiBwcm9jZXNz aW5nCisgKiBhbm90aGVyIG5vbi1zdHJlYW1lZCB0cmFuc2FjdGlvbi4gQXQgdGhpcyB0aW1lLCB0 aGUgbWFpbiBhcHBseSB3b3JrZXIgd2FpdHMKKyAqIGZvciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uIHRvIGNvbXBsZXRlIGFuZCB0aGUgbG9jayB0byBiZSByZWxlYXNlZCwgaXQKKyAqIHdvbid0 IHNlbmQgc3Vic2VxdWVudCBkYXRhIG9mIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gdGhl IGFwcGx5CisgKiBiYWNrZ3JvdW5kIHdvcmtlcjsgdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2Vy IHdhaXRzIHRvIHJlY2VpdmUgdGhlIHJlc3Qgb2YKKyAqIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBh bmQgY2FuJ3QgZmluaXNoIHRoaXMgdHJhbnNhY3Rpb24uIFRoZW4gdGhlIG1haW4gYXBwbHkKKyAq IHdvcmtlciB3aWxsIHdhaXQgaW5kZWZpbml0ZWx5LgorICoKKyAqIFdlIGp1c3QgbWFyayB0aGUg cmVsYXRpb24gZW50cnkgYXMgJ1BBUkFMTEVMX0FQUExZX1VOU0FGRScgaGVyZSBpZiBjaGFuZ2Vz CisgKiBvbiBvbmUgcmVsYXRpb24gY2FuIG5vdCBiZSBhcHBsaWVkIHVzaW5nIGFuIGFwcGx5IGJh Y2tncm91bmQgd29ya2VyIGFuZAorICogbGVhdmUgaXQgdG8gYXBwbHlfYmd3b3JrZXJfcmVsYXRp b25fY2hlY2soKSB0byB0aHJvdyB0aGUgYWN0dWFsIGVycm9yIGlmCisgKiBuZWVkZWQuCisgKi8K K3N0YXRpYyB2b2lkCitsb2dpY2FscmVwX3JlbF9tYXJrX3BhcmFsbGVsX2FwcGx5KExvZ2ljYWxS ZXBSZWxNYXBFbnRyeSAqZW50cnkpCit7CisJQml0bWFwc2V0ICAgKnVrZXk7CisJaW50CQkJaTsK KwlUdXBsZURlc2MJdHVwZGVzYzsKKwlpbnQJCQlhdHRudW07CisJTGlzdAkgICAqZmtleXMgPSBO SUw7CisKKwkvKiBGYXN0IHBhdGggaWYgJ3BhcmFsbGVsX2FwcGx5JyBmbGFnIGlzIGFscmVhZHkg a25vd24uICovCisJaWYgKGVudHJ5LT5wYXJhbGxlbF9hcHBseSAhPSBQQVJBTExFTF9BUFBMWV9V TktOT1dOKQorCQlyZXR1cm47CisKKwkvKiBJbml0aWFsaXplIHRoZSBmbGFnLiAqLworCWVudHJ5 LT5wYXJhbGxlbF9hcHBseSA9IFBBUkFMTEVMX0FQUExZX1NBRkU7CisKKwkvKgorCSAqIEZpcnN0 LCBjaGVjayBpZiB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgcmVsYXRpb24gb24gdGhlIHN1YnNj cmliZXItc2lkZQorCSAqIGlzIGFsc28gdGhlIHVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1Ymxpc2hl ci1zaWRlLgorCSAqLworCXVrZXkgPSBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChlbnRyeS0+ bG9jYWxyZWwsCisJCQkJCQkJCQkgIElOREVYX0FUVFJfQklUTUFQX0tFWSk7CisKKwlpZiAodWtl eSkKKwl7CisJCWkgPSAtMTsKKwkJd2hpbGUgKChpID0gYm1zX25leHRfbWVtYmVyKHVrZXksIGkp KSA+PSAwKQorCQl7CisJCQlhdHRudW0gPSBBdHRyTnVtYmVyR2V0QXR0ck9mZnNldChpICsgRmly c3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisKKwkJCWlmIChlbnRyeS0+YXR0cm1h cC0+YXR0bnVtc1thdHRudW1dIDwgMCB8fAorCQkJCSFibXNfaXNfbWVtYmVyKGVudHJ5LT5hdHRy bWFwLT5hdHRudW1zW2F0dG51bV0sIGVudHJ5LT5yZW1vdGVyZWwuYXR0dW5pcXVlKSkKKwkJCXsK KwkJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHkgPSBQQVJBTExFTF9BUFBMWV9VTlNBRkU7CisJCQkJ cmV0dXJuOworCQkJfQorCQl9CisKKwkJYm1zX2ZyZWUodWtleSk7CisJfQorCisJLyoKKwkgKiBU aGVuLCBjaGVjayBpZiB0aGVyZSBpcyBhbnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiB1c2VkIGJ5 IHRoZQorCSAqIHN1YnNjcmliZXItc2lkZSByZWxhdGlvbi4gTG9vayBmb3IgZnVuY3Rpb25zIGlu IHRoZSBmb2xsb3dpbmcgcGxhY2VzOgorCSAqIGEuIHRyaWdnZXIgZnVuY3Rpb25zOworCSAqIGIu IENvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zIGFuZCBkb21haW4gY29uc3RyYWludHM7 CisJICogYy4gQ29uc3RyYWludCBleHByZXNzaW9uczsKKwkgKiBkLiBGb3JlaWduIGtleXMuCisJ ICovCisJLyogQ2hlY2sgdGhlIHRyaWdnZXIgZnVuY3Rpb25zLiAqLworCWlmIChlbnRyeS0+bG9j YWxyZWwtPnRyaWdkZXNjICE9IE5VTEwpCisJeworCQlmb3IgKGkgPSAwOyBpIDwgZW50cnktPmxv Y2FscmVsLT50cmlnZGVzYy0+bnVtdHJpZ2dlcnM7IGkrKykKKwkJeworCQkJVHJpZ2dlciAgICAq dHJpZyA9IGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2MtPnRyaWdnZXJzICsgaTsKKworCQkJaWYg KHRyaWctPnRnZW5hYmxlZCAhPSBUUklHR0VSX0ZJUkVTX0FMV0FZUyAmJgorCQkJCXRyaWctPnRn ZW5hYmxlZCAhPSBUUklHR0VSX0ZJUkVTX09OX1JFUExJQ0EpCisJCQkJY29udGludWU7CisKKwkJ CWlmIChmdW5jX3ZvbGF0aWxlKHRyaWctPnRnZm9pZCkgIT0gUFJPVk9MQVRJTEVfSU1NVVRBQkxF KQorCQkJeworCQkJCWVudHJ5LT5wYXJhbGxlbF9hcHBseSA9IFBBUkFMTEVMX0FQUExZX1VOU0FG RTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGUgY29sdW1ucy4g Ki8KKwl0dXBkZXNjID0gUmVsYXRpb25HZXREZXNjcihlbnRyeS0+bG9jYWxyZWwpOworCWZvciAo YXR0bnVtID0gMDsgYXR0bnVtIDwgdHVwZGVzYy0+bmF0dHM7IGF0dG51bSsrKQorCXsKKwkJRm9y bV9wZ19hdHRyaWJ1dGUgYXR0ID0gVHVwbGVEZXNjQXR0cih0dXBkZXNjLCBhdHRudW0pOworCisJ CS8qIFdlIGRvbid0IG5lZWQgaW5mbyBmb3IgZHJvcHBlZCBvciBnZW5lcmF0ZWQgYXR0cmlidXRl cyAqLworCQlpZiAoYXR0LT5hdHRpc2Ryb3BwZWQgfHwgYXR0LT5hdHRnZW5lcmF0ZWQpCisJCQlj b250aW51ZTsKKworCQlpZiAoYXR0LT5hdHRoYXNkZWYpCisJCXsKKwkJCU5vZGUJICAgKmRlZmF1 bHRleHByOworCisJCQlkZWZhdWx0ZXhwciA9IGJ1aWxkX2NvbHVtbl9kZWZhdWx0KGVudHJ5LT5s b2NhbHJlbCwgYXR0bnVtICsgMSk7CisJCQlpZiAoY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9ucyhk ZWZhdWx0ZXhwcikpCisJCQl7CisJCQkJZW50cnktPnBhcmFsbGVsX2FwcGx5ID0gUEFSQUxMRUxf QVBQTFlfVU5TQUZFOworCQkJCXJldHVybjsKKwkJCX0KKwkJfQorCisJCS8qCisJCSAqIElmIHRo ZSBjb2x1bW4gaXMgb2YgYSBET01BSU4gdHlwZSwgZGV0ZXJtaW5lIHdoZXRoZXIKKwkJICogdGhh dCBkb21haW4gaGFzIGFueSBDSEVDSyBleHByZXNzaW9ucyB0aGF0IGFyZSBub3QKKwkJICogaW1t dXRhYmxlLgorCQkgKi8KKwkJaWYgKGdldF90eXB0eXBlKGF0dC0+YXR0dHlwaWQpID09IFRZUFRZ UEVfRE9NQUlOKQorCQl7CisJCQlMaXN0CSAgICpkb21haW5fY29uc3RyYWludHM7CisJCQlMaXN0 Q2VsbCAgICpsYzsKKworCQkJZG9tYWluX2NvbnN0cmFpbnRzID0gR2V0RG9tYWluQ29uc3RyYWlu dHMoYXR0LT5hdHR0eXBpZCk7CisKKwkJCWZvcmVhY2gobGMsIGRvbWFpbl9jb25zdHJhaW50cykK KwkJCXsKKwkJCQlEb21haW5Db25zdHJhaW50U3RhdGUgKmNvbiA9IChEb21haW5Db25zdHJhaW50 U3RhdGUgKikgbGZpcnN0KGxjKTsKKworCQkJCWlmIChjb24tPmNoZWNrX2V4cHIgJiYgY29udGFp bl9tdXRhYmxlX2Z1bmN0aW9ucygoTm9kZSAqKSBjb24tPmNoZWNrX2V4cHIpKQorCQkJCXsKKwkJ CQkJZW50cnktPnBhcmFsbGVsX2FwcGx5ID0gUEFSQUxMRUxfQVBQTFlfVU5TQUZFOworCQkJCQly ZXR1cm47CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJLyogQ2hlY2sgdGhlIGNvbnN0cmFpbnRz LiAqLworCWlmICh0dXBkZXNjLT5jb25zdHIpCisJeworCQlDb25zdHJDaGVjayAqY2hlY2sgPSB0 dXBkZXNjLT5jb25zdHItPmNoZWNrOworCisJCS8qCisJCSAqIERldGVybWluZSBpZiB0aGVyZSBh cmUgYW55IENIRUNLIGNvbnN0cmFpbnRzIHdoaWNoCisJCSAqIGNvbnRhaW5zIG5vbi1pbW11dGFi bGUgZnVuY3Rpb24uCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgdHVwZGVzYy0+Y29uc3RyLT5u dW1fY2hlY2s7IGkrKykKKwkJeworCQkJRXhwcgkgICAqY2hlY2tfZXhwciA9IHN0cmluZ1RvTm9k ZShjaGVja1tpXS5jY2Jpbik7CisKKwkJCWlmIChjb250YWluX211dGFibGVfZnVuY3Rpb25zKChO b2RlICopIGNoZWNrX2V4cHIpKQorCQkJeworCQkJCWVudHJ5LT5wYXJhbGxlbF9hcHBseSA9IFBB UkFMTEVMX0FQUExZX1VOU0FGRTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKwl9CisKKwkvKgor CSAqIENoZWNrIHRoZSBmb3JlaWduIGtleXMuCisJICoKKwkgKiBYWFggSXQgaXMgYmV0dGVyIHRv IG9ubHkgY2hlY2sgdGhlIGZvcmVpZ24ga2V5IHdoZW4gaXQgaXMgZGV0ZWN0ZWQgdGhhdAorCSAq IHRoZSBwdWJsaXNoZXIgZG9lcyBub3QgaGF2ZSB0aGUgZm9yZWlnbiBrZXkgYW5kIHRoZSBzdWJz Y3JpYmVyIGRvZXMuIEJ1dAorCSAqIHRoaXMgcmVxdWlyZXMgdGhlIHB1Ymxpc2hlciB0byBzZW5k IG1vcmUgaW5mb3JtYXRpb24uIEluIGFkZGl0aW9uLCBzaW5jZQorCSAqIGZvcmVpZ24ga2V5IGRv ZXMgbm90IHRha2UgZWZmZWN0IGluIHRoZSBzdWJzY3JpYmVyJ3MgYXBwbHkgd29ya2VyIGJ5CisJ ICogZGVmYXVsdCwgaXQgc2VlbXMgdGhhdCBmb3JlaWduIGtleSBkb2VzIG5vdCBoaXQgdGhpcyBF UlJPUiBmcmVxdWVudGx5LgorCSAqIFNvLCBvbmx5IGEgc2ltcGxlIGNoZWNrIGJhc2VkIG9uIHRo ZSBzdWJzY3JpYmVyIHNjaGVtYSBpcyBrZXB0IGhlcmUuCisJICovCisJZmtleXMgPSBSZWxhdGlv bkdldEZLZXlMaXN0KGVudHJ5LT5sb2NhbHJlbCk7CisJaWYgKGZrZXlzKQorCQllbnRyeS0+cGFy YWxsZWxfYXBwbHkgPSBQQVJBTExFTF9BUFBMWV9VTlNBRkU7Cit9CisKKy8qCiAgKiBPcGVuIHRo ZSBsb2NhbCByZWxhdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbW90ZSBvbmUuCiAgKgogICog UmVidWlsZHMgdGhlIFJlbGNhY2hlIG1hcHBpbmcgaWYgaXQgd2FzIGludmFsaWRhdGVkIGJ5IGxv Y2FsIERETC4KQEAgLTQzOCw2ICs2NDUsOSBAQCBsb2dpY2FscmVwX3JlbF9vcGVuKExvZ2ljYWxS ZXBSZWxJZCByZW1vdGVpZCwgTE9DS01PREUgbG9ja21vZGUpCiAJCSAqLwogCQlsb2dpY2FscmVw X3JlbF9tYXJrX3VwZGF0YWJsZShlbnRyeSk7CiAKKwkJLyogU2V0IGlmIGNoYW5nZXMgY291bGQg YmUgYXBwbGllZCB1c2luZyBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gKi8KKwkJbG9naWNh bHJlcF9yZWxfbWFya19wYXJhbGxlbF9hcHBseShlbnRyeSk7CisKIAkJZW50cnktPmxvY2FscmVs dmFsaWQgPSB0cnVlOwogCX0KIApAQCAtNjUzLDYgKzg2Myw3IEBAIGxvZ2ljYWxyZXBfcGFydGl0 aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyb290LAogCQl9CiAJCWVudHJ5LT5yZW1v dGVyZWwucmVwbGlkZW50ID0gcmVtb3RlcmVsLT5yZXBsaWRlbnQ7CiAJCWVudHJ5LT5yZW1vdGVy ZWwuYXR0a2V5cyA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0a2V5cyk7CisJCWVudHJ5LT5yZW1v dGVyZWwuYXR0dW5pcXVlID0gYm1zX2NvcHkocmVtb3RlcmVsLT5hdHR1bmlxdWUpOwogCX0KIAog CWVudHJ5LT5sb2NhbHJlbCA9IHBhcnRyZWw7CkBAIC02OTYsNiArOTA3LDkgQEAgbG9naWNhbHJl cF9wYXJ0aXRpb25fb3BlbihMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJvb3QsCiAJLyogU2V0IGlm IHRoZSB0YWJsZSdzIHJlcGxpY2EgaWRlbnRpdHkgaXMgZW5vdWdoIHRvIGFwcGx5IHVwZGF0ZS9k ZWxldGUuICovCiAJbG9naWNhbHJlcF9yZWxfbWFya191cGRhdGFibGUoZW50cnkpOwogCisJLyog U2V0IGlmIGNoYW5nZXMgY291bGQgYmUgYXBwbGllZCB1c2luZyBhbiBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlci4gKi8KKwlsb2dpY2FscmVwX3JlbF9tYXJrX3BhcmFsbGVsX2FwcGx5KGVudHJ5KTsK KwogCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIAogCS8qIHN0YXRlIGFuZCBzdGF0ZWxz biBhcmUgbGVmdCBzZXQgdG8gMC4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3RhYmxlc3luYy5jCmluZGV4IDI5OWJkYzYuLjBlMWQwYzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtODg0LDYgKzg4NCw3IEBAIGZldGNoX3Jl bW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUsCiAJbHJlbC0+YXR0 bmFtZXMgPSBwYWxsb2MwKE1heFR1cGxlQXR0cmlidXRlTnVtYmVyICogc2l6ZW9mKGNoYXIgKikp OwogCWxyZWwtPmF0dHR5cHMgPSBwYWxsb2MwKE1heFR1cGxlQXR0cmlidXRlTnVtYmVyICogc2l6 ZW9mKE9pZCkpOwogCWxyZWwtPmF0dGtleXMgPSBOVUxMOworCWxyZWwtPmF0dHVuaXF1ZSA9IE5V TEw7CiAKIAkvKgogCSAqIFN0b3JlIHRoZSBjb2x1bW5zIGFzIGEgbGlzdCBvZiBuYW1lcy4gIEln bm9yZSB0aG9zZSB0aGF0IGFyZSBub3QKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jCmluZGV4IDM1ZDE5OTIuLmM1MjY2OWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYwpAQCAtMjcwLDcgKzI3MCw3IEBAIGJvb2wgaW5fc3RyZWFtZWRfdHJh bnNhY3Rpb24gPSBmYWxzZTsKIFRyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZCA9IEludmFsaWRUcmFu c2FjdGlvbklkOwogc3RhdGljIEFwcGx5Qmd3b3JrZXJJbmZvICpzdHJlYW1fYXBwbHlfd29ya2Vy ID0gTlVMTDsKIAotLyogQ2hlY2sgaWYgd2UgYXJlIGFwcGx5aW5nIHRoZSB0cmFuc2FjdGlvbiBp biBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciAqLworLyogQ2hlY2sgaWYgd2UgYXJlIGFwcGx5 aW5nIHRoZSB0cmFuc2FjdGlvbiB1c2luZyBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciAqLwog I2RlZmluZSBhcHBseV9iZ3dvcmtlcl9hY3RpdmUoKSAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24g JiYgc3RyZWFtX2FwcGx5X3dvcmtlciAhPSBOVUxMKQogCiAvKgpAQCAtMTIwMCw4ICsxMjAwLDgg QEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJCSBwcmVwYXJl X2RhdGEueGlkKTsKIAogCQkvKgotCQkgKiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlz IHRyYW5zYWN0aW9uIGluIGFuIGFwcGx5IGJhY2tncm91bmQKLQkJICogd29ya2VyIGFuZCBpZiBz bywgc2VuZCB0aGUgY2hhbmdlcyB0byB0aGF0IHdvcmtlci4KKwkJICogQ2hlY2sgaWYgd2UgYXJl IHByb2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlvbiB1c2luZyBhbiBhcHBseQorCQkgKiBiYWNrZ3Jv dW5kIHdvcmtlciBhbmQgaWYgc28sIHNlbmQgdGhlIGNoYW5nZXMgdG8gdGhhdCB3b3JrZXIuCiAJ CSAqLwogCQlpZiAod3N0YXRlKQogCQl7CkBAIC0xMzQxLDkgKzEzNDEsOSBAQCBhcHBseV9oYW5k bGVfc3RyZWFtX3N0YXJ0KFN0cmluZ0luZm8gcykKIAkJaWYgKHN0cmVhbV9hcHBseV93b3JrZXIp CiAJCXsKIAkJCS8qCi0JCQkgKiBJZiB3ZSBoYXZlIGZvdW5kIGEgZnJlZSB3b3JrZXIgb3IgaWYg d2UgYXJlIGFscmVhZHkgYXBwbHlpbmcgdGhpcwotCQkJICogdHJhbnNhY3Rpb24gaW4gYW4gYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIsIHRoZW4gd2UgcGFzcyB0aGUgZGF0YSB0bwotCQkJICogdGhh dCB3b3JrZXIuCisJCQkgKiBJZiB3ZSBoYXZlIGZvdW5kIGEgZnJlZSB3b3JrZXIgb3IgaWYgd2Ug YXJlIGFscmVhZHkgYXBwbHlpbmcKKwkJCSAqIHRoaXMgdHJhbnNhY3Rpb24gdXNpbmcgYW4gYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIsIHRoZW4gd2UgcGFzcworCQkJICogdGhlIGRhdGEgdG8gdGhh dCB3b3JrZXIuCiAJCQkgKi8KIAkJCWlmIChmaXJzdF9zZWdtZW50KQogCQkJCWFwcGx5X2Jnd29y a2VyX3NlbmRfZGF0YShzdHJlYW1fYXBwbHlfd29ya2VyLCBzLT5sZW4sIHMtPmRhdGEpOwpAQCAt MTQxNSw2ICsxNDE1LDE0IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMp CiAJewogCQljaGFyIGFjdGlvbiA9IExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RPUDsKIAorCQkv KgorCQkgKiBVbmxpa2Ugc3RyZWFtX2NvbW1pdCwgd2UgZG9uJ3QgbmVlZCB0byB3YWl0IGhlcmUg Zm9yIHN0cmVhbV9zdG9wIHRvCisJCSAqIGZpbmlzaC4gQWxsb3dpbmcgdGhlIG90aGVyIHRyYW5z YWN0aW9uIHRvIGJlIGFwcGxpZWQgYmVmb3JlCisJCSAqIHN0cmVhbV9zdG9wIGlzIGZpbmlzaGVk IGNhbiBsZWFkIHRvIGZhaWx1cmVzIGlmIHRoZSB1bmlxdWUKKwkJICogaW5kZXgvY29uc3RyYWlu dCBpcyBkaWZmZXJlbnQgYmV0d2VlbiBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIuIEJ1dAorCQkg KiBmb3Igc3VjaCBjYXNlcywgd2UgZG9uJ3QgYWxsb3cgc3RyZWFtZWQgdHJhbnNhY3Rpb25zIHRv IGJlIGFwcGxpZWQKKwkJICogaW4gcGFyYWxsZWwuIFNlZSBhcHBseV9iZ3dvcmtlcl9yZWxhdGlv bl9jaGVjay4KKwkJICovCiAJCWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YShzdHJlYW1fYXBwbHlf d29ya2VyLCAxLCAmYWN0aW9uKTsKIAogCQllbG9nKERFQlVHMSwgInN0b3BwZWQgc3RyZWFtaW5n IG9mIHhpZCAldSwgJXUgY2hhbmdlcyBzdHJlYW1lZCIsIHN0cmVhbV94aWQsIG5jaGFuZ2VzKTsK QEAgLTE2MzUsOCArMTY0Myw4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5m byBzKQogCQlBcHBseUJnd29ya2VySW5mbyAqd3N0YXRlID0gYXBwbHlfYmd3b3JrZXJfZmluZCh4 aWQpOwogCiAJCS8qCi0JCSAqIENoZWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5nIHRoaXMgdHJhbnNh Y3Rpb24gaW4gYW4gYXBwbHkgYmFja2dyb3VuZAotCQkgKiB3b3JrZXIgYW5kIGlmIHNvLCBzZW5k IHRoZSBjaGFuZ2VzIHRvIHRoYXQgd29ya2VyLgorCQkgKiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vz c2luZyB0aGlzIHRyYW5zYWN0aW9uIHVzaW5nIGFuIGFwcGx5CisJCSAqIGJhY2tncm91bmQgd29y a2VyIGFuZCBpZiBzbywgc2VuZCB0aGUgY2hhbmdlcyB0byB0aGF0IHdvcmtlci4KIAkJICovCiAJ CWlmICh3c3RhdGUpCiAJCXsKQEAgLTE4MzQsOCArMTg0Miw4IEBAIGFwcGx5X2hhbmRsZV9zdHJl YW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAkJZWxvZyhERUJVRzEsICJyZWNlaXZlZCBjb21taXQg Zm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwgeGlkKTsKIAogCQkvKgotCQkgKiBDaGVjayBp ZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlzIHRyYW5zYWN0aW9uIGluIGFuIGFwcGx5IGJhY2tncm91 bmQKLQkJICogd29ya2VyIGFuZCBpZiBzbywgc2VuZCB0aGUgY2hhbmdlcyB0byB0aGF0IHdvcmtl ci4KKwkJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlvbiB1c2lu ZyBhbiBhcHBseQorCQkgKiBiYWNrZ3JvdW5kIHdvcmtlciBhbmQgaWYgc28sIHNlbmQgdGhlIGNo YW5nZXMgdG8gdGhhdCB3b3JrZXIuCiAJCSAqLwogCQlpZiAod3N0YXRlKQogCQl7CkBAIC0yMDY5 LDYgKzIwNzcsOCBAQCBhcHBseV9oYW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8gcykKIAkvKiBTZXQg cmVsYXRpb24gZm9yIGVycm9yIGNhbGxiYWNrICovCiAJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJn LnJlbCA9IHJlbDsKIAorCWFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkv KiBJbml0aWFsaXplIHRoZSBleGVjdXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0 YV9mb3JfcmVsYXRpb24ocmVsKTsKIAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpAQCAtMjIxMiw2 ICsyMjIyLDggQEAgYXBwbHlfaGFuZGxlX3VwZGF0ZShTdHJpbmdJbmZvIHMpCiAJLyogQ2hlY2sg aWYgd2UgY2FuIGRvIHRoZSB1cGRhdGUuICovCiAJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHJl bCk7CiAKKwlhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhyZWwpOworCiAJLyogSW5pdGlh bGl6ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICovCiAJZWRhdGEgPSBjcmVhdGVfZWRhdGFfZm9yX3Jl bGF0aW9uKHJlbCk7CiAJZXN0YXRlID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTIzODAsNiArMjM5Miw4 IEBAIGFwcGx5X2hhbmRsZV9kZWxldGUoU3RyaW5nSW5mbyBzKQogCS8qIENoZWNrIGlmIHdlIGNh biBkbyB0aGUgZGVsZXRlLiAqLwogCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShyZWwpOwogCisJ YXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8qIEluaXRpYWxpemUgdGhl IGV4ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9yZWxhdGlvbihy ZWwpOwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBAIC0yNTY1LDEzICsyNTc5LDE0IEBAIGFw cGx5X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJfQog CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCisJcGFydF9lbnRyeSA9IGxvZ2ljYWxy ZXBfcGFydGl0aW9uX29wZW4ocmVsbWFwZW50cnksIHBhcnRyZWwsCisJCQkJCQkJCQkJICAgYXR0 cm1hcCk7CisKIAkvKiBDaGVjayBpZiB3ZSBjYW4gZG8gdGhlIHVwZGF0ZSBvciBkZWxldGUgb24g dGhlIGxlYWYgcGFydGl0aW9uLiAqLwogCWlmIChvcGVyYXRpb24gPT0gQ01EX1VQREFURSB8fCBv cGVyYXRpb24gPT0gQ01EX0RFTEVURSkKLQl7Ci0JCXBhcnRfZW50cnkgPSBsb2dpY2FscmVwX3Bh cnRpdGlvbl9vcGVuKHJlbG1hcGVudHJ5LCBwYXJ0cmVsLAotCQkJCQkJCQkJCQkgICBhdHRybWFw KTsKIAkJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHBhcnRfZW50cnkpOwotCX0KKworCWFwcGx5 X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKHBhcnRfZW50cnkpOwogCiAJc3dpdGNoIChvcGVyYXRp b24pCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggODA4ZjllYi4uYjI0ODg5 OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC0yNTQxLDYgKzI1NDEsMjMgQEAg Y29tcGFyZV92YWx1ZXNfb2ZfZW51bShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hlLCBPaWQgYXJnMSwg T2lkIGFyZzIpCiB9CiAKIC8qCisgKiBHZXREb21haW5Db25zdHJhaW50cyAtLS0gZ2V0IERvbWFp bkNvbnN0cmFpbnRTdGF0ZSBsaXN0IG9mIHNwZWNpZmllZCBkb21haW4gdHlwZQorICovCitMaXN0 ICoKK0dldERvbWFpbkNvbnN0cmFpbnRzKE9pZCB0eXBlX2lkKQoreworCVR5cGVDYWNoZUVudHJ5 ICp0eXBlbnRyeTsKKwlMaXN0CQkgICAqY29uc3RyYWludHMgPSBOSUw7CisKKwl0eXBlbnRyeSA9 IGxvb2t1cF90eXBlX2NhY2hlKHR5cGVfaWQsIFRZUEVDQUNIRV9ET01BSU5fQ09OU1RSX0lORk8p OworCisJaWYodHlwZW50cnktPmRvbWFpbkRhdGEgIT0gTlVMTCkKKwkJY29uc3RyYWludHMgPSB0 eXBlbnRyeS0+ZG9tYWluRGF0YS0+Y29uc3RyYWludHM7CisKKwlyZXR1cm4gY29uc3RyYWludHM7 Cit9CisKKy8qCiAgKiBMb2FkIChvciByZS1sb2FkKSB0aGUgZW51bURhdGEgbWVtYmVyIG9mIHRo ZSB0eXBjYWNoZSBlbnRyeS4KICAqLwogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHByb3RvLmgKaW5kZXggZWIwZmQyNC4uNDM5NWMxMSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTExMyw2ICsxMTMsNyBAQCB0eXBlZGVmIHN0cnVjdCBM b2dpY2FsUmVwUmVsYXRpb24KIAljaGFyCQlyZXBsaWRlbnQ7CQkvKiByZXBsaWNhIGlkZW50aXR5 ICovCiAJY2hhcgkJcmVsa2luZDsJCS8qIHJlbW90ZSByZWxhdGlvbiBraW5kICovCiAJQml0bWFw c2V0ICAqYXR0a2V5czsJCS8qIEJpdG1hcCBvZiBrZXkgY29sdW1ucyAqLworCUJpdG1hcHNldCAg KmF0dHVuaXF1ZTsJCS8qIEJpdG1hcCBvZiB1bmlxdWUgY29sdW1ucyAqLwogfSBMb2dpY2FsUmVw UmVsYXRpb247CiAKIC8qIFR5cGUgbWFwcGluZyBpbmZvICovCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCmluZGV4IDc4Y2Q3ZTcuLmQ0OWE5ODcgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCisrKyBiL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCkBAIC0xNSw2ICsxNSwxOSBAQAogI2lu Y2x1ZGUgImFjY2Vzcy9hdHRtYXAuaCIKICNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscHJv dG8uaCIKIAorLyoKKyAqCVN0YXRlcyB0byBkZXRlcm1pbmUgaWYgY2hhbmdlcyBvbiBvbmUgcmVs YXRpb24gY2FuIGJlIGFwcGxpZWQgdXNpbmcgYW4KKyAqCWFwcGx5IGJhY2tncm91bmQgd29ya2Vy LgorICovCit0eXBlZGVmIGVudW0gUGFyYWxsZWxBcHBseVNhZmV0eQoreworCVBBUkFMTEVMX0FQ UExZX1VOS05PV04gPSAwLAkvKiB1bmtub3duICAqLworCVBBUkFMTEVMX0FQUExZX1NBRkUsCQkv KiBDYW4gYXBwbHkgY2hhbmdlcyB1c2luZyBhbiBhcHBseSBiYWNrZ3JvdW5kCisJCQkJCQkJCSAg IHdvcmtlciAqLworCVBBUkFMTEVMX0FQUExZX1VOU0FGRQkJLyogQ2FuIG5vdCBhcHBseSBjaGFu Z2VzIHVzaW5nIGFuIGFwcGx5CisJCQkJCQkJCSAgIGJhY2tncm91bmQgd29ya2VyICovCit9IFBh cmFsbGVsQXBwbHlTYWZldHk7CisKIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSZWxNYXBFbnRy eQogewogCUxvZ2ljYWxSZXBSZWxhdGlvbiByZW1vdGVyZWw7CS8qIGtleSBpcyByZW1vdGVyZWwu cmVtb3RlaWQgKi8KQEAgLTMxLDYgKzQ0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJl bE1hcEVudHJ5CiAJUmVsYXRpb24JbG9jYWxyZWw7CQkvKiByZWxjYWNoZSBlbnRyeSAoTlVMTCB3 aGVuIGNsb3NlZCkgKi8KIAlBdHRyTWFwICAgICphdHRybWFwOwkJLyogbWFwIG9mIGxvY2FsIGF0 dHJpYnV0ZXMgdG8gcmVtb3RlIG9uZXMgKi8KIAlib29sCQl1cGRhdGFibGU7CQkvKiBDYW4gYXBw bHkgdXBkYXRlcy9kZWxldGVzPyAqLworCVBhcmFsbGVsQXBwbHlTYWZldHkJcGFyYWxsZWxfYXBw bHk7CS8qIENhbiBhcHBseSBjaGFuZ2VzIGluIGFuIGFwcGx5CisJCQkJCQkJCQkJICAgYmFja2dy b3VuZCB3b3JrZXI/ICovCiAKIAkvKiBTeW5jIHN0YXRlLiAqLwogCWNoYXIJCXN0YXRlOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCA4ZjAzYWQ0Li5iYTg2 OTAxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwu aAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMjAz LDYgKzIwMyw3IEBAIGV4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX3NldF9zdGF0dXMoQXBwbHlC Z3dvcmtlclN0YXR1cyBzdGF0dXMpOwogZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc3VieGFj dF9pbmZvX2FkZChUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkKTsKIGV4dGVybiB2b2lkIGFwcGx5 X2Jnd29ya2VyX3NhdmVwb2ludF9uYW1lKE9pZCBzdWJvaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJ CQkgIGNoYXIgKnNwbmFtZSwgaW50IHN6c3ApOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJf cmVsYXRpb25fY2hlY2soTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpOwogCiBzdGF0aWMgaW5s aW5lIGJvb2wKIGFtX3RhYmxlc3luY193b3JrZXIodm9pZCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL3R5cGNhY2hlLmggYi9zcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oCmluZGV4 IDQzMWFkN2YuLmVkN2MyZTcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hl LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvdHlwY2FjaGUuaApAQCAtMTk5LDYgKzE5OSw4IEBA IGV4dGVybiB1aW50NjQgYXNzaWduX3JlY29yZF90eXBlX2lkZW50aWZpZXIoT2lkIHR5cGVfaWQs IGludDMyIHR5cG1vZCk7CiAKIGV4dGVybiBpbnQJY29tcGFyZV92YWx1ZXNfb2ZfZW51bShUeXBl Q2FjaGVFbnRyeSAqdGNhY2hlLCBPaWQgYXJnMSwgT2lkIGFyZzIpOwogCitleHRlcm4gTGlzdCAq R2V0RG9tYWluQ29uc3RyYWludHMoT2lkIHR5cGVfaWQpOworCiBleHRlcm4gc2l6ZV90IFNoYXJl ZFJlY29yZFR5cG1vZFJlZ2lzdHJ5RXN0aW1hdGUodm9pZCk7CiAKIGV4dGVybiB2b2lkIFNoYXJl ZFJlY29yZFR5cG1vZFJlZ2lzdHJ5SW5pdChTaGFyZWRSZWNvcmRUeXBtb2RSZWdpc3RyeSAqLApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKaW5kZXggOWY0OTQ2ZC4uZWQ5ZWY4NCAx MDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC0xMyw3ICsxMyw3IEBAIHVz ZSBUZXN0OjpNb3JlOwogIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCiBzdWIgdGVzdF9zdHJl YW1pbmcKIHsKLQlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lKSA9IEBfOwogCiAJIyBJbnRlcmxlYXZlIGEgcGFpciBvZiB0cmFuc2Fj dGlvbnMsIGVhY2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgogCW15ICRpbiAgPSAnJzsKQEAg LTI0LDE2ICsyNCw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCW15ICRoID0gJG5vZGVfcHVibGlz aGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0aW1lciwKIAkJ b25fZXJyb3Jfc3RvcCA9PiAwKTsKIAotCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2Vy IHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMKLQkjIHNwZWNpZmllZCBhcyAicGFy YWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcwotCSMg YWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KLQlp ZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9k ZV9zdWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQotCiAJJGluIC49IHF7CiAJQkVHSU47CiAJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygzLCA1MDAwKSBzKGkpOwpAQCAtNDIsMTQgKzMyLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJ fTsKIAkkaC0+cHVtcF9uYjsKIAotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsK LQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQki bG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2Fk OwotCX0KLQogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxewog CUJFR0lOOwpAQCAtMTYzLDcgKzE0NSw3IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQo KiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0 LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVy Jyk7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwg JGFwcG5hbWUsIDApOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJz Y3JpYmVyLCAkYXBwbmFtZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwpAQCAtMTcyLDggKzE1 NCwxMyBAQCBteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKIAkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRp b25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElP TiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgYmluYXJ5ID0gb2ZmKSIpOworIyAi c3RyZWFtaW5nID0gcGFyYWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5j dGlvbnMsIHNvIGNoYW5nZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZnVsdCBleHByZXNzaW9u IG9mIGNvbHVtbiAiYyIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYyBTRVQgREVGQVVMVCB0 b190aW1lc3RhbXAoMTI4NDM1MjMyMyk7CitBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQo c3RyZWFtaW5nID0gcGFyYWxsZWwsIGJpbmFyeSA9IG9mZik7Cit9KTsKIAogJG5vZGVfcHVibGlz aGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBwaWQgIT0gJG9sZHBp ZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgpAQCAtMTgxLDcgKzE2OCw3IEBAICRub2Rl X3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogICBvciBkaWUKICAgIlRp bWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5n IFNVQlNDUklQVElPTiI7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7 CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZf c3RyZWFtX3N1YnhhY3QucGwKaW5kZXggMTA0YTE2OS4uYTkyZmNjNCAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbApAQCAtMTMsMTcgKzEzLDcgQEAg dXNlIFRlc3Q6Ok1vcmU7CiAjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1YiB0ZXN0X3N0 cmVhbWluZwogewotCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBu YW1lLCAkaXNfcGFyYWxsZWwpID0gQF87Ci0KLQkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdv cmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCi0JIyBzcGVjaWZpZWQgYXMg InBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMK LQkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHku Ci0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJ JG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9k ZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsKIAogCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KIAkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKQEAgLTUxLDE0ICs0MSw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCUNPTU1J VDsKIAl9KTsKIAotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKLQkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9t ZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQog CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKIAlteSAkcmVz dWx0ID0KQEAgLTExOSw3ICsxMDEsNyBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwg cXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicp OwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAwKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2Ny aWJlciwgJGFwcG5hbWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwogIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTEyOCw4ICsxMTAs MTMgQEAgbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9u X25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKLSRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisjICJzdHJlYW1pbmcgPSBwYXJh bGxlbCIgZG9lcyBub3Qgc3VwcG9ydCBub24taW1tdXRhYmxlIGZ1bmN0aW9ucywgc28gY2hhbmdl CisjIHRoZSBmdW5jdGlvbiBpbiB0aGUgZGVmdWx0IGV4cHJlc3Npb24gb2YgY29sdW1uICJjIi4K KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRB QkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3RpbWVzdGFtcCgxMjg0 MzUyMzIzKTsKK0FMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJh bGxlbCk7Cit9KTsKIAogJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3Jl cycsCiAJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hF UkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7 IgpAQCAtMTM3LDcgKzEyNCw3IEBAICRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgn cG9zdGdyZXMnLAogICBvciBkaWUKICAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBs eSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CiAKLXRlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwordGVz dF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7 CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDBh NDE1MmQuLjc5YzZiMDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90 d29waGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29w aGFzZV9jYXNjYWRlLnBsCkBAIC00NzAsNiArNDcwLDE0IEBAIHRlc3Rfc3RyZWFtaW5nKCRub2Rl X0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdvbicpOwogIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdCB1c2luZyBzdHJlYW1p bmcgbW9kZSAncGFyYWxsZWwnCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworCisjICJzdHJlYW1pbmcgPSBwYXJhbGxlbCIgZG9lcyBub3Qgc3VwcG9ydCBub24taW1tdXRh YmxlIGZ1bmN0aW9ucywgc28gY2hhbmdlCisjIHRoZSBmdW5jdGlvbiBpbiB0aGUgZGVmdWx0IGV4 cHJlc3Npb24gb2YgY29sdW1uICJjIi4KKyRub2RlX0ItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCAiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGlt ZXN0YW1wKDEyODQzNTIzMjMpOyIpOworJG5vZGVfQy0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs ICJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYyBTRVQgREVGQVVMVCB0b190aW1l c3RhbXAoMTI4NDM1MjMyMyk7Iik7CisKIHRlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0Is ICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdwYXJhbGxlbCcpOwogCiAjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIz X3R3b3BoYXNlX3N0cmVhbS5wbAppbmRleCBlYTFmNDc2Li42ZjkyMWVkIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCisrKyBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKQEAgLTEzLDcgKzEzLDcg QEAgdXNlIFRlc3Q6Ok1vcmU7CiAjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1YiB0ZXN0 X3N0cmVhbWluZwogewotCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUpID0gQF87CiAKIAkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCiAJIyBUZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgpAQCAtMjMsMTYg KzIzLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGlj YXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KIAkjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiAKLQkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBz dGFydHMgaWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCi0JIyBzcGVjaWZpZWQgYXMgInBhcmFs bGVsIi4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKLQkjIGFi b3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCi0JaWYg KCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVf c3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQogCSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIKIAkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJv d3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KApAQCAtNDMsMTQgKzMzLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKIAkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9w cmVwYXJlZF90YWInO30pOwogCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5IEJHVyAjXGQrXF0gc3RhcnRlZC8sIDApOwot CQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKLQkJCSJs b2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7 Ci0JfQotCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAog CSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3Jp YmVyCkBAIC0zMzMsNyArMzE1LDcgQEAgbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBp bml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLXRlc3Rfc3RyZWFtaW5n KCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAK ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3QgdXNpbmcgc3Ry ZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwpAQCAtMzQyLDggKzMyNCwxMyBAQCBteSAkb2xkcGlkID0g JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBpZCBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScg QU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1p bmcgPSBwYXJhbGxlbCkiKTsKKyMgInN0cmVhbWluZyA9IHBhcmFsbGVsIiBkb2VzIG5vdCBzdXBw b3J0IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLCBzbyBjaGFuZ2UKKyMgdGhlIGZ1bmN0aW9uIGlu IHRoZSBkZWZ1bHQgZXhwcmVzc2lvbiBvZiBjb2x1bW4gImMiLgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIg Q09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGltZXN0YW1wKDEyODQzNTIzMjMpOworQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKK30pOwogCiAkbm9k ZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBpZCAh PSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1l ID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCkBAIC0zNTEsNyArMzM4LDcg QEAgJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAgIG9yIGRp ZQogICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIg Y2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotdGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKTsKIAogIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAuLjRkYzU3YzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCkBAIC0wLDAgKzEsNTQ2IEBACisjIENv cHlyaWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKwor IyBUZXN0IHRoZSByZXN0cmljdGlvbnMgb2Ygc3RyZWFtaW5nIG1vZGUgInBhcmFsbGVsIiBpbiBs b2dpY2FsIHJlcGxpY2F0aW9uLgorIyBXaXRob3V0IHRoZXNlIHJlc3RyaWN0aW9ucywgdGhlIHN1 YnNjcmliZXIncyBhcHBseSB3b3JrZXIgbWF5IGZhbGwgaW50byBhbgorIyBpbmZpbml0ZSB3YWl0 IHdpdGhvdXQgdGhlIHVzZXIga25vd2luZy4KKyMKKyMgRm9yIG5vcm1hbCB0YWJsZXMsIHdlIHVz ZSBkZWFkbG9jay1wcm9kdWNpbmcgdGVzdCBjYXNlcyB0byBlbnN1cmUgdGhhdCBmdXR1cmUKKyMg bW9kaWZpY2F0aW9ucyBkbyBub3QgaW52YWxpZGF0ZSBjb25zdHJhaW50IGNoZWNrcy4KKyMKKyMg Rm9yIHBhcnRpdGlvbmVkIHRhYmxlcywgd2UganVzdCB1c2UgdGVzdCBjYXNlcyB0byBjb25maXJt IHRoYXQgdGhlIGNvbnN0cmFpbnQKKyMgY2hlY2tzIGFyZSBhcyBleHBlY3RlZC4KKwordXNlIHN0 cmljdDsKK3VzZSB3YXJuaW5nczsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRvZmZzZXQg PSAwOworCisjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hl ci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXIt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCSdsb2dpY2FsX2RlY29kaW5nX3dvcmtf bWVtID0gNjRrQicpOworJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVhdGUgc3Vic2Ny aWJlciBub2RlCitteSAkbm9kZV9zdWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vi c2NyaWJlci0+c3RhcnQ7CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHB1Ymxpc2hlcgorJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFi MSAoYSBpbnQpIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJD UkVBVEUgVEFCTEUgdGVzdF90YWIyIChhIGludCkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCAoYSBp bnQgcHJpbWFyeSBrZXksIGIgdmFyY2hhcikiKTsKKworIyBTZXR1cCBzdHJ1Y3R1cmUgb24gc3Vi c2NyaWJlcgorIyBXZSBuZWVkIHRvIHRlc3Qgbm9ybWFsIHRhYmxlIGFuZCBwYXJ0aXRpb24gdGFi bGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRB QkxFIHRlc3RfdGFiMSAoYSBpbnQpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiMiAoYSBpbnQpIik7Ciskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3Bh cnRpdGlvbmVkIChhIGludCBwcmltYXJ5IGtleSwgYiB2YXJjaGFyKSBQQVJUSVRJT04gQlkgUkFO R0UoYSkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVB VEUgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIChMSUtFIHRlc3RfdGFiX3BhcnRpdGlvbmVkKSIp OworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxF IHRlc3RfdGFiX3BhcnRpdGlvbmVkIEFUVEFDSCBQQVJUSVRJT04gdGVzdF90YWJfcGFydGl0aW9u IERFRkFVTFQiCispOworCisjIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215ICRwdWJsaXNo ZXJfY29ubnN0ciA9ICRub2RlX3B1Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVz JzsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJM SUNBVElPTiB0YXBfcHViX25vcm1hbCBGT1IgVEFCTEUgdGVzdF90YWIxLCB0ZXN0X3RhYjIiKTsK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNB VElPTiB0YXBfcHViX3BhcnRpdGlvbmVkIEZPUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIp OworCitteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgKKwkncG9zdGdyZXMnLCAiCisJQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViCisJQ09OTkVD VElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnCisJUFVC TElDQVRJT04gdGFwX3B1Yl9ub3JtYWwsIHRhcF9wdWJfcGFydGl0aW9uZWQKKwlXSVRIIChzdHJl YW1pbmcgPSBwYXJhbGxlbCwgY29weV9kYXRhID0gZmFsc2UpIik7CisKKyRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgSW50ZXJsZWF2ZSBhIHBhaXIgb2Yg dHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KK215ICRpbiAgPSAn JzsKK215ICRvdXQgPSAnJzsKKworbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOworCitteSAkaCA9ICRub2RlX3B1 Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIs CisJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IHRoZSB1 bmlxdWUgY29sdW1uIGluIHRoZSByZWxhdGlvbiBvbiB0aGUKKyMgc3Vic2NyaWJlci1zaWRlIGlz IG5vdCB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGUuIENoZWNrIHRoZQor IyBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIEZp cnN0IHdlIGNoZWNrIHRoZSB1bmlxdWUgaW5kZXggb24gbm9ybWFsIHRhYmxlLgorJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggaWR4 X3RhYjEgb24gdGVzdF90YWIxKGEpIik7CisKKyRpbiAuPSBxeworQkVHSU47CitJTlNFUlQgSU5U TyB0ZXN0X3RhYjEgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsK K307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMSB2YWx1ZXMoMSkiKTsKKworJGluIC49IHF7CitDT01N SVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xv ZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVs YXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3Ry ZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXgg b24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiMSIpOworCiskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCitteSAkcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEg ZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIHVuaXF1ZSBpbmRl eCBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZXN0X3RhYl9iX3BhcnRpdGlvbl9pZHggT04g dGVzdF90YWJfcGFydGl0aW9uIChiKSIpOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBm cm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0 X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2co CisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0 aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJh bWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB1bmlx dWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX3BhcnRpdGlv bl9pZHgiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK KworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQs IHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcg aW5kZXgnKTsKKworIyBUcmlnZ2VycyB3aGljaCBleGVjdXRlIG5vbi1pbW11dGFibGUgZnVuY3Rp b24gYXJlIG5vdCBhbGxvd2VkIG9uIHRoZQorIyBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBl cnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIEZpcnN0 IHdlIGNoZWNrIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggaWR4 X3RhYjIgb24gdGVzdF90YWIyKGEpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiMiBvbiB0ZXN0X3RhYjIoYSki KTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JF QVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY190YWIxKCkgUkVUVVJOUyBUUklHR0VSIEFTIFwkXCQK KyAgQkVHSU4KKyAgICBJTlNFUlQgSU5UTyBwdWJsaWMudGVzdF90YWIyIFZBTFVFUyAoTkVXLiop OworICAgIFJFVFVSTiBORVc7CisgIEVORAorXCRcJCBsYW5ndWFnZSBwbHBnc3FsOworQ1JFQVRF IFRSSUdHRVIgdHJpX3RhYjEKK0JFRk9SRSBJTlNFUlQgT04gcHVibGljLnRlc3RfdGFiMQorRk9S IEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY190YWIxKCk7CitBTFRFUiBU QUJMRSB0ZXN0X3RhYjEgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiB0cmlfdGFiMTsKK30pOworCisj IENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOworSU5TRVJUIElOVE8g dGVzdF90YWIxIFZBTFVFUyg1MDAxKTsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMiBTRUxFQ1QgaSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsKKyRoLT5wdW1wX25iOworCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90 YWIxIFZBTFVFUyg1MDAxKSIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZp bmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtB LVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3Rf dGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9cGFyYWxsZWwvLAor CSRvZmZzZXQpOworCisjIERyb3AgdGhlIHRyaWdnZXIgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBp dCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJEUk9Q IFRSSUdHRVIgdHJpX3RhYjEgT04gcHVibGljLnRlc3RfdGFiMSIpOworCiskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0 X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDIpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmli ZXIgYWZ0ZXIgZHJvcHBpbmcgdHJpZ2dlcicpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9t IHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcXsKK0RST1AgZnVuY3Rpb24gdHJpZ2dlcl9mdW5jX3RhYjE7CitEUk9QIElOREVYIGlk eF90YWIyOworfSk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBx cXsKK0RST1AgSU5ERVggaWR4X3RhYjI7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CitUUlVO Q0FURSBUQUJMRSB0ZXN0X3RhYjI7Cit9KTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKyMgVGhlbiB3ZSBjaGVjayB0aGUgdHJpZ2dlciBmdW5jdGlvbiBv biBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXF7CitDUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jKCkgUkVUVVJOUyBUUklHR0VS IEFTIFwkXCQKKyAgQkVHSU4KKyAgICBSRVRVUk4gTlVMTDsKKyAgRU5ECitcJFwkIGxhbmd1YWdl IHBscGdzcWw7CitDUkVBVEUgVFJJR0dFUiBpbnNlcnRfdHJpZworQkVGT1JFIElOU0VSVCBPTiB0 ZXN0X3RhYl9wYXJ0aXRpb24KK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2Vy X2Z1bmMoKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBFTkFCTEUgUkVQTElDQSBU UklHR0VSIGluc2VydF90cmlnOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZy b20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3Rh Yl9wYXJ0aXRpb25lZCIpOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIv RVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJw dWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIg c3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB0cmlnZ2VyIG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiX3Bh cnRpdGlvbiIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3Vs dCwgcXEoMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0 cmlnZ2VyJyk7CisKKyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBjb2x1bW4gZGVmYXVsdCB2YWx1 ZSBleHByZXNzaW9uIGNvbnRhaW5zIGEKKyMgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBvbiB0aGUg c3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkKKyMgYmFja2dyb3Vu ZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29sdW1uIGRlZmF1 bHQgdmFsdWUgZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCiskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIyIFZBTFVFUygxKSIpOwor Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUg RlVOQ1RJT04gZnVuY19jb3VudF90YWIyKCkgUkVUVVJOUyBJTlQgQVMgXCRcJAorICBCRUdJTgor ICAgIFJFVFVSTiAoU0VMRUNUIGNvdW50KCopIEZST00gcHVibGljLnRlc3RfdGFiMik7CisgIEVO RAorXCRcJCBsYW5ndWFnZSBwbHBnc3FsOworQUxURVIgVEFCTEUgdGVzdF90YWIxIEFERCBDT0xV TU4gYiBpbnQgREVGQVVMVCBmdW5jX2NvdW50X3RhYjIoKTsKK30pOworCisjIENoZWNrIHRoZSBz dWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOworVFJVTkNBVEUgdGVzdF90YWIyOworSU5T RVJUIElOVE8gdGVzdF90YWIxIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDAp IHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEoYSkgVkFMVUVTKDEpIik7CisKKyRpbiAu PSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUg dGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFy YW1ldGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBkZWZhdWx0 IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENP TFVNTiBiIERST1AgREVGQVVMVCIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1 bHQsIHFxKDUwMDEpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9w cGluZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24nKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEg ZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTFVNTiBiIik7Ciskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxIik7 Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUg dGVzdF90YWIyIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisjIFRoZW4gd2UgY2hlY2sgdGhlIGNvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24g b24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBTFRFUiBDT0xVTU4gYiBTRVQg REVGQVVMVCByYW5kb20oKSIpOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5v dyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9w YXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIv RVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJw dWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIg c3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIGRlZmF1bHQgdmFsdWUg b24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUxURVIg Q09MVU1OIGIgRFJPUCBERUZBVUxUIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVk Iik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmli ZXIgYWZ0ZXIgZHJvcHBpbmcgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uJyk7CisKKyMgSXQgaXMg bm90IGFsbG93ZWQgdGhhdCBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEg bm9uLWltbXV0YWJsZQorIyBmdW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0 aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZAorIyB3b3JrZXIgaW4gdGhpcyBjYXNlLgor IyBCZWNhdXNlIHRoZSBjb2x1bW4gdHlwZSBvZiB0aGUgcGFydGl0aW9uIHRhYmxlIG11c3QgYmUg dGhlIHNhbWUgYXMgaXRzIHBhcmVudAorIyB0YWJsZSwgb25seSB0ZXN0IG5vcm1hbCB0YWJsZSBo ZXJlLgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRP IHRlc3RfdGFiMiBWQUxVRVMoMSkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRE9NQUlOIHRtcF9kb21haW4gQVMgaW50IENIRUNLIChW QUxVRSA+IC0xKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4gYSBUWVBFIHRt cF9kb21haW47Cit9KTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxeworQ1JFQVRFIERPTUFJTiB0bXBfZG9tYWluIEFTIElOVCBDSEVDSyAoVkFMVUUgPj0g ZnVuY19jb3VudF90YWIyKCkpOworQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBh IFRZUEUgdG1wX2RvbWFpbjsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9t IG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4g Lj0gcXsKK0JFR0lOOworVFJVTkNBVEUgdGVzdF90YWIyOworSU5TRVJUIElOVE8gdGVzdF90YWIx IFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9OworJGgtPnB1 bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQg SU5UTyB0ZXN0X3RhYjEoYSkgVkFMVUVTKDEpIik7CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEK K307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIv RVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJw dWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1w YXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBkb21haW4gY29uc3RyYWludCBleHByZXNz aW9uIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVN TiBhIFRZUEUgaW50Iik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOworaXMoJHJlc3VsdCwgcXEo NTAwMSksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGRv bWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24nCispOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBm cm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjEiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjIiKTsKKyRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgSXQgaXMgbm90IGFsbG93ZWQg dGhhdCBjb25zdHJhaW50IGV4cHJlc3Npb24gY29udGFpbnMgYSBub24taW1tdXRhYmxlIGZ1bmN0 aW9uCisjIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBi eSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzCisjIGNhc2UuCisjIEZpcnN0IHdlIGNoZWNrIHRo ZSBjb25zdHJhaW50IGV4cHJlc3Npb24gb24gbm9ybWFsIHRhYmxlLgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSki KTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxU RVIgVEFCTEUgdGVzdF90YWIxIEFERCBDT05TVFJBSU5UIGNvbnN0X3RhYjEgQ0hFQ0soYSA+PSBm dW5jX2NvdW50X3RhYjIoKSk7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJv bSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJGlu IC49IHF7CitCRUdJTjsKK1RSVU5DQVRFIHRlc3RfdGFiMjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFi MSBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsKKyRoLT5w dW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJU IElOVE8gdGVzdF90YWIxKGEpIFZBTFVFUygxKSIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xx Cit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFy L0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAi cHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9 cGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgY29uc3RyYWludCBvbiB0aGUgc3Vic2Ny aWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29uc3RfdGFiMSIp OworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVz dWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLAorCSdkYXRh IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBjb25zdHJhaW50IGV4cHJl c3Npb24nKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVz dF90YWIxIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNB VEUgVEFCTEUgdGVzdF90YWIyIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBv biBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUREIENPTlNUUkFJTlQg dGVzdF90YWJfY29uIGNoZWNrIChhID4gcmFuZG9tKCkpOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1 YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXIt PmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxF VEUgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFy Z2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlw dGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9w IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0 aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOworCiskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3Rh Yl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEoMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0 byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGNvbnN0cmFpbnQgZXhwcmVzc2lvbicpOworCisj IEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZm9yZWlnbiBrZXkgb24gdGhlIHN1YnNjcmliZXIgc2lk ZS4gQ2hlY2sgdGhlIGVycm9yCisjIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRo aXMgY2FzZS4KKyMgRmlyc3Qgd2UgY2hlY2sgdGhlIGZvcmVpZ24ga2V5IG9uIG5vcm1hbCB0YWJs ZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRF IFRBQkxFIHRhYl9ub3B1YmxpYyhhIGludCk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjIgQUREIFBS SU1BUlkgS0VZIChhKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMiBSRVBMSUNBIElERU5USVRZIEZV TEw7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgVkFMVUVTKDEpOworfSk7Ciskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiMiBBREQgUFJJ TUFSWSBLRVkgKGEpOyIpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3Rn cmVzJywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTlNUUkFJTlQgdGVzdF90YWIx ZmsgRk9SRUlHTiBLRVkoYSkgUkVGRVJFTkNFUyB0ZXN0X3RhYjIoYSk7CitTRUxFQ1QgJ0FMVEVS IFRBQkxFIHRlc3RfdGFiMSBFTkFCTEUgUkVQTElDQSBUUklHR0VSICInIHx8IHRnbmFtZSB8fCAn IicgRlJPTSBwZ190cmlnZ2VyIFdIRVJFIHRncmVsaWQgPSAndGVzdF90YWIxJzo6cmVnY2xhc3M6 Om9pZCBcXGdleGVjCit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cg b24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJGluIC49IHF7 CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMShhKSBWQUxVRVMoMSk7CitJTlNFUlQgSU5U TyB0YWJfbm9wdWJsaWMgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhp KTsKK307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiMiIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xx Cit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFy L0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAi cHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9 cGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFp bnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlO VCB0ZXN0X3RhYjFmayIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFx KDEpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUg Zm9yZWlnbiBrZXknKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1l bnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFC TEUgdGVzdF90YWIxIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi VFJVTkNBVEUgVEFCTEUgdGVzdF90YWIyIik7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIGZvcmVpZ24ga2V5IG9uIHBh cnRpdGlvbiB0YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVB VEUgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uX2YgKGEgaW50IHByaW1hcnkga2V5KTsKK0FMVEVS IFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYl9wYXRpdGlv bl9mayBGT1JFSUdOIEtFWShhKSBSRUZFUkVOQ0VTIHRlc3RfdGFiX3BhcnRpdGlvbl9mKGEpOwor fSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9 IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGFiX3BhcnRpdGlvbmVkIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKSIKKyk7 CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05 XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9w YXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9cGFyYWxs ZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24g dGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05T VFJBSU5UIHRlc3RfdGFiX3BhdGl0aW9uX2ZrIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRp dGlvbmVkIik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisKKyRub2RlX3N1YnNj cmliZXItPnN0b3A7Ciskbm9kZV9wdWJsaXNoZXItPnN0b3A7CisKK2RvbmVfdGVzdGluZygpOwpk aWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA5ZWY3YmMxLi4xMmY0MTAzIDEwMDY0NAotLS0g YS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdApAQCAtMTg5MSw2ICsxODkxLDcgQEAgUGFnZVhMb2dSZWNQdHIKIFBh Z2V0YWJsZUVudHJ5CiBQYWlycwogUGFyYWxsZWxBcHBlbmRTdGF0ZQorUGFyYWxsZWxBcHBseVNh ZmV0eQogUGFyYWxsZWxCaXRtYXBIZWFwU3RhdGUKIFBhcmFsbGVsQmxvY2tUYWJsZVNjYW5EZXNj CiBQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyCi0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_006_OS0PR01MB5716838ABB8716547F92030394649OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v21-0001-Perform-streaming-logical-transactions-by-backgr.patch" Content-Description: v21-0001-Perform-streaming-logical-transactions-by-backgr.patch Content-Disposition: attachment; filename="v21-0001-Perform-streaming-logical-transactions-by-backgr.patch"; size=116910; creation-date="Thu, 11 Aug 2022 08:02:00 GMT"; modification-date="Thu, 11 Aug 2022 08:04:37 GMT" Content-Transfer-Encoding: base64 RnJvbSA3NmYxYmI3ZDgwNTRkMTE2ZTdhMmYyNTcyYmRiNWI0MGFjZDQxNWMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyMSAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IGJhY2tn cm91bmQKIHdvcmtlcnMKCkN1cnJlbnRseSwgZm9yIGxhcmdlIHRyYW5zYWN0aW9ucywgdGhlIHB1 Ymxpc2hlciBzZW5kcyB0aGUgZGF0YSBpbiBtdWx0aXBsZQpzdHJlYW1zIChjaGFuZ2VzIGRpdmlk ZWQgaW50byBjaHVua3MgZGVwZW5kaW5nIHVwb24gbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSks CmFuZCB0aGVuIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUsIHRoZSBhcHBseSB3b3JrZXIgd3JpdGVz IHRoZSBjaGFuZ2VzIGludG8KdGVtcG9yYXJ5IGZpbGVzIGFuZCBvbmNlIGl0IHJlY2VpdmVzIHRo ZSBjb21taXQsIGl0IHJlYWRzIGZyb20gdGhlIGZpbGUgYW5kCmFwcGxpZXMgdGhlIGVudGlyZSB0 cmFuc2FjdGlvbi4gVG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2Ygc3VjaAp0cmFuc2FjdGlv bnMsIHdlIGNhbiBpbnN0ZWFkIGFsbG93IHRoZW0gdG8gYmUgYXBwbGllZCB2aWEgYmFja2dyb3Vu ZCB3b3JrZXJzLgoKSW4gdGhpcyBhcHByb2FjaCwgd2UgYXNzaWduIGEgbmV3IGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBz dHJlYW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3aWxsIHNlbmQKY2hh bmdlcyB0byB0aGlzIG5ldyB3b3JrZXIgdmlhIHNoYXJlZCBtZW1vcnkuIFRoZSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlciB3aWxsCmRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3 cml0aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2Uga2VlcAp0aGlzIHdvcmtlciBhc3NpZ25l ZCB0aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBm b3IKdGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQg b3JkZXJpbmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZSBpbiBt b3N0IGNhc2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlCmlzIG5vIHdvcmtlciBh dmFpbGFibGUuCgpUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJl YW1pbmcnIHBhcmFtZXRlciBzbyB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8g YXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kCndv cmtlciBvciBzcGlsbCB0aGUgY2hhbmdlIHRvIGRpc2suIFRoZSB1c2VyIGNhbiBzZXQgdGhlIHN0 cmVhbWluZyBwYXJhbWV0ZXIgdG8KJ29uL29mZicsICdwYXJhbGxlbCcuIFRoZSBwYXJhbWV0ZXIg dmFsdWUgJ3BhcmFsbGVsJyBtZWFucyB0aGUgc3RyZWFtaW5nIHdpbGwKYmUgYXBwbGllZCB2aWEg YW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIGlmIGF2YWlsYWJsZS4gVGhlIHBhcmFtZXRlciB2 YWx1ZQonb24nIG1lYW5zIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gd2lsbCBiZSBzcGlsbGVk IHRvIGRpc2suIFRoZSBkZWZhdWx0IHZhbHVlCmlzICdvZmYnIChzYW1lIGFzIGN1cnJlbnQgYmVo YXZpb3VyKS4KCkluIGFkZGl0aW9uLCB0aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9naWNhbCByZXBs aWNhdGlvbiBTVFJFQU1fQUJPUlQgbWVzc2FnZSBzbwp0aGF0IGFib3J0X3RpbWUgYW5kIGFib3J0 X2xzbiBjYW4gYWxzbyBiZSBzZW50IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSB0aGUKcmVw bGljYXRpb24gb3JpZ2luIGluIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHdoZW4gdGhlIHN0cmVh bWluZyB0cmFuc2FjdGlvbiBpcwphYm9ydGVkLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sICAgICAgICAgICAgICAgICAgICAgIHwgIDExICstCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwgICAgICAgICAgICAgICAgICAgICAgICB8ICAyOCArLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwt cmVwbGljYXRpb24uc2dtbCAgICAgICAgICAgfCAgMTMgKy0KIGRvYy9zcmMvc2dtbC9wcm90b2Nv bC5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDI4ICstCiBkb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAgICAgICB8ICAyNCArLQogc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGFjdC5jICAgICAgICAgICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvY29tbWFu ZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgICAgfCAgNjYgKy0KIHNyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jIHwgNzY0ICsrKysrKysrKysrKysrKysrKysr KysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jICAgICAgICB8ICAx MCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jICAgICAgfCAx MzEgKysrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyAgICAgICAg fCAgMjMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAgICAg IHwgIDQxICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIu YyB8ICAxMCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAg ICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAg ICAgIHwgNzk0ICsrKysrKysrKysrKysrKysrKy0tLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vcGdvdXRwdXQvcGdvdXRwdXQuYyAgICAgfCAgIDYgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjLmMgICAgICAgICAgICAgICAgICAgIHwgIDEyICsKIHNyYy9iYWNrZW5kL3V0aWxzL21p c2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSAgIHwgICAxICsKIHNyYy9iaW4vcGdfZHVtcC9wZ19k dW1wLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oICAgICAgICAgICB8ICAyMSArLQogc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbGxhdW5jaGVyLmggICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbHByb3RvLmggICAgICAgICAgfCAgMjcgKy0KIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL29yaWdpbi5oICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggICAgICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgICAgfCAxMTEgKysrLQogc3JjL2luY2x1ZGUv dXRpbHMvd2FpdF9ldmVudC5oICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0ICAgICAgfCAgMTIgKy0KIHNyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwgICAgICAgICAgIHwgICA2ICstCiBzcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgICB8ICAgNSArCiAzMyBmaWxlcyBj aGFuZ2VkLCAxOTM4IGluc2VydGlvbnMoKyksIDI1NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYwoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKaW5kZXggY2QyY2MzNy4uOTYyZWE3ZCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTc4 NzMsMTEgKzc4NzMsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlv biBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKIAogICAgICA8cm93Pgog ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgot ICAgICAgIElmIHRydWUsIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBhbGxvdyBzdHJlYW1pbmcgb2Yg aW4tcHJvZ3Jlc3MKLSAgICAgICB0cmFuc2FjdGlvbnMKKyAgICAgICBDb250cm9scyBob3cgdG8g aGFuZGxlIHRoZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zOgorICAgICAg IDxsaXRlcmFsPmY8L2xpdGVyYWw+ID0gZGlzYWxsb3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNz IHRyYW5zYWN0aW9ucywKKyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiA9IHNwaWxsIHRoZSBj aGFuZ2VzIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGRpc2sgYW5kIGFw cGx5IGF0IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB0aGUKKyAg ICAgICBwdWJsaXNoZXIsCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBhcHBseSBjaGFu Z2VzIGRpcmVjdGx5IHVzaW5nIGEgYmFja2dyb3VuZAorICAgICAgIHdvcmtlciBpZiBhdmFpbGFi bGUoc2FtZSBhcyAndCcgaWYgbm8gd29ya2VyIGlzIGF2YWlsYWJsZSkKICAgICAgIDwvcGFyYT48 L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5z Z21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IDI1MjJmNGMuLjBkMWUwNzQgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY29u ZmlnLnNnbWwKQEAgLTQ5MzcsNyArNDkzNyw4IEBAIEFOWSA8cmVwbGFjZWFibGUgY2xhc3M9InBh cmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNlYWJsZSBjbGFzcz0iCiAg ICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIFNwZWNpZmllcyBtYXhpbXVt IG51bWJlciBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcnMuIFRoaXMgaW5jbHVkZXMKLSAg ICAgICAgYm90aCBhcHBseSB3b3JrZXJzIGFuZCB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2Vy cy4KKyAgICAgICAgYXBwbHkgbWFpbiB3b3JrZXJzLCBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMs IGFuZCB0YWJsZSBzeW5jaHJvbml6YXRpb24KKyAgICAgICAgd29ya2Vycy4KICAgICAgICA8L3Bh cmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIExvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VycyBh cmUgdGFrZW4gZnJvbSB0aGUgcG9vbCBkZWZpbmVkIGJ5CkBAIC00OTc3LDYgKzQ5NzgsMzEgQEAg QU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlz dGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tYXgtYXBwbHktYmd3b3JrZXJz LXBlci1zdWJzY3JpcHRpb24iIHhyZWZsYWJlbD0ibWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vi c2NyaXB0aW9uIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPm1heF9hcHBseV9iZ3dvcmtlcnNfcGVy X3N1YnNjcmlwdGlvbjwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGlu ZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5tYXhfYXBwbHlfYmd3b3JrZXJzX3Bl cl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5 PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+Cisg ICAgICAgPHBhcmE+CisgICAgICAgIE1heGltdW0gbnVtYmVyIG9mIGFwcGx5IGJhY2tncm91bmQg d29ya2VycyBwZXIgc3Vic2NyaXB0aW9uLiBUaGlzCisgICAgICAgIHBhcmFtZXRlciBjb250cm9s cyB0aGUgYW1vdW50IG9mIHBhcmFsbGVsaXNtIGZvciBzdHJlYW1pbmcgb2YKKyAgICAgICAgaW4t cHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIHdpdGggc3Vic2NyaXB0aW9uIHBhcmFtZXRlcgorICAgICAg ICA8bGl0ZXJhbD5zdHJlYW1pbmcgPSBwYXJhbGxlbDwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJh PgorICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIGFy ZSB0YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKKyAgICAgICAgPHZhcm5hbWU+bWF4X2xv Z2ljYWxfcmVwbGljYXRpb25fd29ya2VyczwvdmFybmFtZT4uCisgICAgICAgPC9wYXJhPgorICAg ICAgIDxwYXJhPgorICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAyLiBUaGlzIHBhcmFtZXRl ciBjYW4gb25seSBiZSBzZXQgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNv bmY8L2ZpbGVuYW1lPiBmaWxlIG9yIG9uIHRoZSBzZXJ2ZXIgY29tbWFuZAorICAgICAgICBsaW5l LgorICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5 PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNh bC1yZXBsaWNhdGlvbi5zZ21sCmluZGV4IGJkZjFlN2IuLjNlZTlhNTQgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xv Z2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTE1Myw2ICsxMTUzLDE2IEBAIENPTlRFWFQ6ICBw cm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBk dXJpbmcgIklOU0VSCiAgICBtaWdodCBub3QgdmlvbGF0ZSBhbnkgY29uc3RyYWludC4gIFRoaXMg Y2FuIGVhc2lseSBtYWtlIHRoZSBzdWJzY3JpYmVyCiAgICBpbmNvbnNpc3RlbnQuCiAgIDwvcGFy YT4KKworICA8cGFyYT4KKyAgIFdoZW4gdGhlIHN0cmVhbWluZyBtb2RlIGlzIDxsaXRlcmFsPnBh cmFsbGVsPC9saXRlcmFsPiwgdGhlIGZpbmlzaCBMU04gb2YKKyAgIGZhaWxlZCB0cmFuc2FjdGlv bnMgbWF5IG5vdCBiZSBsb2dnZWQuIEluIHRoYXQgY2FzZSwgaXQgbWF5IGJlIG5lY2Vzc2FyeSB0 bworICAgY2hhbmdlIHRoZSBzdHJlYW1pbmcgbW9kZSB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4g YW5kIGNhdXNlIHRoZSBzYW1lCisgICBjb25mbGljdHMgYWdhaW4gc28gdGhlIGZpbmlzaCBMU04g b2YgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbiB3aWxsIGJlIHdyaXR0ZW4KKyAgIHRvIHRoZSBzZXJ2 ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlzaCBMU04sIHBsZWFzZSByZWZlciB0byA8bGlu aworICAgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uIj48Y29tbWFuZD5BTFRFUiBTVUJT Q1JJUFRJT04gLi4uCisgICBTS0lQPC9jb21tYW5kPjwvbGluaz4uCisgIDwvcGFyYT4KICA8L3Nl Y3QxPgogCiAgPHNlY3QxIGlkPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXJlc3RyaWN0aW9ucyI+CkBA IC0xMzM0LDcgKzEzNDQsOCBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3Ig cmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogICAgc3Vic2NyaXB0 aW9uLiAgQSBkaXNhYmxlZCBzdWJzY3JpcHRpb24gb3IgYSBjcmFzaGVkIHN1YnNjcmlwdGlvbiB3 aWxsIGhhdmUKICAgIHplcm8gcm93cyBpbiB0aGlzIHZpZXcuICBJZiB0aGUgaW5pdGlhbCBkYXRh IHN5bmNocm9uaXphdGlvbiBvZiBhbnkKICAgIHRhYmxlIGlzIGluIHByb2dyZXNzLCB0aGVyZSB3 aWxsIGJlIGFkZGl0aW9uYWwgd29ya2VycyBmb3IgdGhlIHRhYmxlcwotICAgYmVpbmcgc3luY2hy b25pemVkLgorICAgYmVpbmcgc3luY2hyb25pemVkLiBNb3Jlb3ZlciwgaWYgdGhlIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkCisgICBwYXJhbGxlbGx5LCB0aGVyZSB3aWxsIGJlIGFk ZGl0aW9uYWwgd29ya2Vycy4KICAgPC9wYXJhPgogIDwvc2VjdDE+CiAKZGlmZiAtLWdpdCBhL2Rv Yy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKaW5k ZXggMGQ0YjcyMC4uNzllYzFhNCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKQEAgLTMwOTYsNyArMzA5Niw3IEBA IHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZ X1NZU1RFTTsiCiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgogICAgICAgIFByb3RvY29s IHZlcnNpb24uIEN1cnJlbnRseSB2ZXJzaW9ucyA8bGl0ZXJhbD4xPC9saXRlcmFsPiwgPGxpdGVy YWw+MjwvbGl0ZXJhbD4sCi0gICAgICAgYW5kIDxsaXRlcmFsPjM8L2xpdGVyYWw+IGFyZSBzdXBw b3J0ZWQuCisgICAgICAgPGxpdGVyYWw+MzwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJhbD40PC9saXRl cmFsPiBhcmUgc3VwcG9ydGVkLgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CiAgICAgICAg VmVyc2lvbiA8bGl0ZXJhbD4yPC9saXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25seSBmb3Igc2VydmVy IHZlcnNpb24gMTQKQEAgLTMxMDYsNiArMzEwNiwxMSBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMg cmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAgIFZlcnNp b24gPGxpdGVyYWw+MzwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZlciB2ZXJz aW9uIDE1CiAgICAgICAgYW5kIGFib3ZlLCBhbmQgaXQgYWxsb3dzIHN0cmVhbWluZyBvZiB0d28t cGhhc2UgY29tbWl0cy4KICAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFZlcnNp b24gPGxpdGVyYWw+NDwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZlciB2ZXJz aW9uIDE2CisgICAgICAgYW5kIGFib3ZlLCBhbmQgaXQgYWxsb3dzIGFwcGx5aW5nIHN0cmVhbSBv ZiBsYXJnZSBpbi1wcm9ncmVzcworICAgICAgIHRyYW5zYWN0aW9ucyBpbiBwYXJhbGxlbC4KKyAg ICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxpc3RlbnRyeT4KIApAQCAt Njc5Nyw2ICs2ODAyLDI3IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRh YmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAg ICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQ2NCAoWExvZ1JlY1B0cik8L3Rlcm0+ CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoZSBMU04gb2Yg dGhlIGFib3J0LiBUaGlzIGZpZWxkIGlzIGF2YWlsYWJsZSBzaW5jZSBwcm90b2NvbCB2ZXJzaW9u CisgICAgICAgICA0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAg IDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPklu dDY0IChUaW1lc3RhbXBUeik8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFy YT4KKyAgICAgICAgIEFib3J0IHRpbWVzdGFtcCBvZiB0aGUgdHJhbnNhY3Rpb24uIFRoZSB2YWx1 ZSBpcyBpbiBudW1iZXIKKyAgICAgICAgIG9mIG1pY3Jvc2Vjb25kcyBzaW5jZSBQb3N0Z3JlU1FM IGVwb2NoICgyMDAwLTAxLTAxKS4gVGhpcyBmaWVsZCBpcworICAgICAgICAgYXZhaWxhYmxlIHNp bmNlIHByb3RvY29sIHZlcnNpb24gNC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0 ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAg ICA8dGVybT5JbnQzMiAoVHJhbnNhY3Rpb25JZCk8L3Rlcm0+CiAgICAgICAgPGxpc3RpdGVtPgog ICAgICAgICA8cGFyYT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNj cmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwK aW5kZXggNzM5MGM3MS4uZWNlMjdjNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2Ny aXB0aW9uLnNnbWwKQEAgLTIxNywxMyArMjE3LDI5IEBAIENSRUFURSBTVUJTQ1JJUFRJT04gPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBsYWNlYWJs CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgICA8dmFybGlzdGVudHJ5PgotICAgICAg ICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5ib29sZWFuPC90eXBl Pik8L3Rlcm0+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4gKDx0 eXBlPmVudW08L3R5cGU+KTwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgogICAgICAgICAgPHBh cmE+CiAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHN0cmVhbWluZyBvZiBp bi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBmb3IgdGhpcyBzdWJzY3JpcHRpb24u ICBCeSBkZWZhdWx0LCBhbGwgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgYXJlIGZ1bGx5IGRlY29k ZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVuIHNlbnQgdG8gdGhlCi0gICAgICAgICAg c3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgIGZvciB0aGlzIHN1YnNjcmlwdGlvbi4g IFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4sCisgICAgICAgICAg bWVhbmluZyBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRoZSBwdWJsaXNo ZXIgYW5kIG9ubHkKKyAgICAgICAgICB0aGVuIHNlbnQgdG8gdGhlIHN1YnNjcmliZXIgYXMgYSB3 aG9sZS4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYg c2V0IHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgdGhlIGluY29taW5nIGNoYW5nZXMgYXJlIHdy aXR0ZW4gdG8KKyAgICAgICAgICB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBvbmx5 IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcworICAgICAgICAgIGNvbW1pdHRlZCBvbiB0aGUgcHVi bGlzaGVyIGFuZCByZWNlaXZlZCBieSB0aGUgc3Vic2NyaWJlci4KKyAgICAgICAgIDwvcGFyYT4K KworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPnBhcmFsbGVs PC9saXRlcmFsPiwgaW5jb21pbmcgY2hhbmdlcyBhcmUgZGlyZWN0bHkKKyAgICAgICAgICBhcHBs aWVkIHZpYSBvbmUgb2YgdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VycywgaWYgYXZhaWxhYmxl LiBJZiBubworICAgICAgICAgIGJhY2tncm91bmQgd29ya2VyIGlzIGZyZWUgdG8gaGFuZGxlIHN0 cmVhbWluZyB0cmFuc2FjdGlvbiB0aGVuIHRoZQorICAgICAgICAgIGNoYW5nZXMgYXJlIHdyaXR0 ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBsaWVkIGFmdGVyIHRoZQorICAgICAgICAgIHRy YW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMgd2hl bgorICAgICAgICAgIGFwcGx5aW5nIGNoYW5nZXMgaW4gYSBiYWNrZ3JvdW5kIHdvcmtlciwgdGhl IGZpbmlzaCBMU04gb2YgdGhlCisgICAgICAgICAgcmVtb3RlIHRyYW5zYWN0aW9uIG1pZ2h0IG5v dCBiZSByZXBvcnRlZCBpbiB0aGUgc2VydmVyIGxvZy4KICAgICAgICAgIDwvcGFyYT4KICAgICAg ICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hhY3QuYwppbmRleCA1MGYwOTJkLi41YTc2ZDljIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFj dC5jCkBAIC0xNzExLDYgKzE3MTEsNyBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNT dWJYYWN0KQogCWludAkJCW5jaGlsZHJlbjsKIAlUcmFuc2FjdGlvbklkICpjaGlsZHJlbjsKIAlU aW1lc3RhbXBUeiB4YWN0X3RpbWU7CisJYm9vbAkJcmVwbG9yaWdpbjsKIAogCS8qCiAJICogSWYg d2UgaGF2ZW4ndCBiZWVuIGFzc2lnbmVkIGFuIFhJRCwgbm9ib2R5IHdpbGwgY2FyZSB3aGV0aGVy IHdlIGFib3J0ZWQKQEAgLTE3NDEsNiArMTc0MiwxMyBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0 KGJvb2wgaXNTdWJYYWN0KQogCQllbG9nKFBBTklDLCAiY2Fubm90IGFib3J0IHRyYW5zYWN0aW9u ICV1LCBpdCB3YXMgYWxyZWFkeSBjb21taXR0ZWQiLAogCQkJIHhpZCk7CiAKKwkvKgorCSAqIEFy ZSB3ZSB1c2luZyB0aGUgcmVwbGljYXRpb24gb3JpZ2lucyBmZWF0dXJlPyAgT3IsIGluIG90aGVy IHdvcmRzLAorCSAqIGFyZSB3ZSByZXBsYXlpbmcgcmVtb3RlIGFjdGlvbnM/CisJICovCisJcmVw bG9yaWdpbiA9IChyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IEludmFsaWRSZXBPcmlnaW5J ZCAmJgorCQkJCSAgcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBEb05vdFJlcGxpY2F0ZUlk KTsKKwogCS8qIEZldGNoIHRoZSBkYXRhIHdlIG5lZWQgZm9yIHRoZSBhYm9ydCByZWNvcmQgKi8K IAlucmVscyA9IHNtZ3JHZXRQZW5kaW5nRGVsZXRlcyhmYWxzZSwgJnJlbHMpOwogCW5jaGlsZHJl biA9IHhhY3RHZXRDb21taXR0ZWRDaGlsZHJlbigmY2hpbGRyZW4pOwpAQCAtMTc2NSw2ICsxNzcz LDExIEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJCQkJCSAgIE15 WGFjdEZsYWdzLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKIAkJCQkJICAgTlVMTCk7CiAKKwlpZiAo cmVwbG9yaWdpbikKKwkJLyogTW92ZSBMU05zIGZvcndhcmQgZm9yIHRoaXMgcmVwbGljYXRpb24g b3JpZ2luICovCisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKHJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW5fbHNuLAorCQkJCQkJCQkgICBYYWN0TGFzdFJlY0VuZCk7CisKIAkvKgogCSAqIFJl cG9ydCB0aGUgbGF0ZXN0IGFzeW5jIGFib3J0IExTTiwgc28gdGhhdCB0aGUgV0FMIHdyaXRlciBr bm93cyB0bwogCSAqIGZsdXNoIHRoaXMgYWJvcnQuIFRoZXJlJ3Mgbm90aGluZyB0byBiZSBnYWlu ZWQgYnkgZGVsYXlpbmcgdGhpcywgc2luY2UKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3N1YnNjcmlwdGlvbmNtZHMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlv bmNtZHMuYwppbmRleCBmNzNkZmI2Li43OGI3ZWU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9j b21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vi c2NyaXB0aW9uY21kcy5jCkBAIC04NCw3ICs4NCw3IEBAIHR5cGVkZWYgc3RydWN0IFN1Yk9wdHMK IAlib29sCQljb3B5X2RhdGE7CiAJYm9vbAkJcmVmcmVzaDsKIAlib29sCQliaW5hcnk7Ci0JYm9v bAkJc3RyZWFtaW5nOworCWNoYXIJCXN0cmVhbWluZzsKIAlib29sCQl0d29waGFzZTsKIAlib29s CQlkaXNhYmxlb25lcnI7CiAJY2hhcgkgICAqb3JpZ2luOwpAQCAtOTgsNiArOTgsNjIgQEAgc3Rh dGljIHZvaWQgUmVwb3J0U2xvdENvbm5lY3Rpb25FcnJvcihMaXN0ICpyc3RhdGVzLCBPaWQgc3Vi aWQsIGNoYXIgKnNsb3RuYW1lLAogCiAKIC8qCisgKiBFeHRyYWN0IHRoZSBzdHJlYW1pbmcgbW9k ZSB2YWx1ZSBmcm9tIGEgRGVmRWxlbS4gIFRoaXMgaXMgbGlrZQorICogZGVmR2V0Qm9vbGVhbigp IGJ1dCBhbHNvIGFjY2VwdHMgdGhlIHNwZWNpYWwgdmFsdWUgb2YgInBhcmFsbGVsIi4KKyAqLwor c3RhdGljIGNoYXIKK2RlZkdldFN0cmVhbWluZ01vZGUoRGVmRWxlbSAqZGVmKQoreworCS8qCisJ ICogSWYgbm8gcGFyYW1ldGVyIHZhbHVlIGdpdmVuLCBhc3N1bWUgInRydWUiIGlzIG1lYW50Lgor CSAqLworCWlmIChkZWYtPmFyZyA9PSBOVUxMKQorCQlyZXR1cm4gU1VCU1RSRUFNX09OOworCisJ LyoKKwkgKiBBbGxvdyAwLCAxLCAiZmFsc2UiLCAidHJ1ZSIsICJvZmYiLCAib24iIG9yICJwYXJh bGxlbCIuCisJICovCisJc3dpdGNoIChub2RlVGFnKGRlZi0+YXJnKSkKKwl7CisJCWNhc2UgVF9J bnRlZ2VyOgorCQkJc3dpdGNoIChpbnRWYWwoZGVmLT5hcmcpKQorCQkJeworCQkJCWNhc2UgMDoK KwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CisJCQkJY2FzZSAxOgorCQkJCQlyZXR1cm4gU1VC U1RSRUFNX09OOworCQkJCWRlZmF1bHQ6CisJCQkJCS8qIG90aGVyd2lzZSwgZXJyb3Igb3V0IGJl bG93ICovCisJCQkJCWJyZWFrOworCQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl7CisJ CQkJY2hhcgkgICAqc3ZhbCA9IGRlZkdldFN0cmluZyhkZWYpOworCisJCQkJLyoKKwkJCQkgKiBU aGUgc2V0IG9mIHN0cmluZ3MgYWNjZXB0ZWQgaGVyZSBzaG91bGQgbWF0Y2ggdXAgd2l0aCB0aGUK KwkJCQkgKiBncmFtbWFyJ3Mgb3B0X2Jvb2xlYW5fb3Jfc3RyaW5nIHByb2R1Y3Rpb24uCisJCQkJ ICovCisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgImZhbHNlIikgPT0gMCB8fAorCQkJCQlw Z19zdHJjYXNlY21wKHN2YWwsICJvZmYiKSA9PSAwKQorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09G RjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAidHJ1ZSIpID09IDAgfHwKKwkJCQkJcGdf c3RyY2FzZWNtcChzdmFsLCAib24iKSA9PSAwKQorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09OOwor CQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJwYXJhbGxlbCIpID09IDApCisJCQkJCXJldHVy biBTVUJTVFJFQU1fUEFSQUxMRUw7CisJCQl9CisJCQlicmVhazsKKwl9CisJZXJlcG9ydChFUlJP UiwKKwkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCSBlcnJtc2coIiVzIHJl cXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciBcInBhcmFsbGVsXCIiLAorCQkJCQlkZWYtPmRlZm5h bWUpKSk7CisJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICov Cit9CisKKy8qCiAgKiBDb21tb24gb3B0aW9uIHBhcnNpbmcgZnVuY3Rpb24gZm9yIENSRUFURSBh bmQgQUxURVIgU1VCU0NSSVBUSU9OIGNvbW1hbmRzLgogICoKICAqIFNpbmNlIG5vdCBhbGwgb3B0 aW9ucyBjYW4gYmUgc3BlY2lmaWVkIGluIGJvdGggY29tbWFuZHMsIHRoaXMgZnVuY3Rpb24KQEAg LTEzNCw3ICsxOTAsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNV Qk9QVF9CSU5BUlkpKQogCQlvcHRzLT5iaW5hcnkgPSBmYWxzZTsKIAlpZiAoSXNTZXQoc3VwcG9y dGVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQotCQlvcHRzLT5zdHJlYW1pbmcgPSBmYWxzZTsK KwkJb3B0cy0+c3RyZWFtaW5nID0gU1VCU1RSRUFNX09GRjsKIAlpZiAoSXNTZXQoc3VwcG9ydGVk X29wdHMsIFNVQk9QVF9UV09QSEFTRV9DT01NSVQpKQogCQlvcHRzLT50d29waGFzZSA9IGZhbHNl OwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0RJU0FCTEVfT05fRVJSKSkKQEAg LTIzNyw3ICsyOTMsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpw c3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShk ZWZlbCwgcHN0YXRlKTsKIAogCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX1NUUkVB TUlORzsKLQkJCW9wdHMtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQkJb3B0 cy0+c3RyZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBp ZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkKIAkJewpAQCAtNjI3 LDcgKzY4Myw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0 ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 Ym93bmVyIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG93bmVyKTsKIAl2YWx1ZXNbQW51bV9wZ19z dWJzY3JpcHRpb25fc3ViZW5hYmxlZCAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZW5hYmxlZCk7 CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmJpbmFyeSAtIDFdID0gQm9vbEdldERh dHVtKG9wdHMuYmluYXJ5KTsKLQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFt IC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCXZhbHVlc1tBbnVtX3BnX3N1 YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IENoYXJHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7 CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3RhdGUgLSAxXSA9CiAJ CUNoYXJHZXREYXR1bShvcHRzLnR3b3BoYXNlID8KIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhBU0Vf U1RBVEVfUEVORElORyA6CkBAIC0xMDg5LDcgKzExNDUsNyBAQCBBbHRlclN1YnNjcmlwdGlvbihQ YXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQlpZiAo SXNTZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykpCiAJCQkJewogCQkJ CQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPQotCQkJCQkJQm9v bEdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwkJCQkJCUNoYXJHZXREYXR1bShvcHRzLnN0cmVh bWluZyk7CiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFd ID0gdHJ1ZTsKIAkJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3 b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwppbmRleCA0MDYwMWFl Li40MGNjYjg5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMK KysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCkBAIC0xMjgsNiArMTI4LDkg QEAgc3RhdGljIGNvbnN0IHN0cnVjdAogCX0sCiAJewogCQkiQXBwbHlXb3JrZXJNYWluIiwgQXBw bHlXb3JrZXJNYWluCisJfSwKKwl7CisJCSJBcHBseUJnd29ya2VyTWFpbiIsIEFwcGx5Qmd3b3Jr ZXJNYWluCiAJfQogfTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUK aW5kZXggYzRlMmZkZS4uY2JmYjVkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L01ha2VmaWxlCkBAIC0xNSw2ICsxNSw3IEBAIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9N YWtlZmlsZS5nbG9iYWwKIG92ZXJyaWRlIENQUEZMQUdTIDo9IC1JJChzcmNkaXIpICQoQ1BQRkxB R1MpCiAKIE9CSlMgPSBcCisJYXBwbHliZ3dvcmtlci5vIFwKIAlkZWNvZGUubyBcCiAJbGF1bmNo ZXIubyBcCiAJbG9naWNhbC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9hcHBseWJnd29ya2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVi NjFjYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv YXBwbHliZ3dvcmtlci5jCkBAIC0wLDAgKzEsNzY0IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq IGFwcGx5Ymd3b3JrZXIuYworICogICAgIFN1cHBvcnQgcm91dGluZXMgZm9yIGFwcGx5aW5nIHhh Y3QgYnkgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYt MjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElG SUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3Jr ZXIuYworICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyByb3V0aW5lcyB0aGF0IGFyZSBpbnRlbmRl ZCB0byBzdXBwb3J0IHNldHRpbmcgdXAsIHVzaW5nLAorICogYW5kIHRlYXJpbmcgZG93biBhIEFw cGx5Qmd3b3JrZXJJbmZvLgorICoKKyAqIFJlZmVyIHRvIHRoZSBjb21tZW50cyBpbiBmaWxlIGhl YWRlciBvZiBsb2dpY2FsL3dvcmtlci5jIHRvIHNlZSBtb3JlCisgKiBpbmZvcm1hdGlvbiBhYm91 dCBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwor CisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCisj aW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJw b3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxsYXVu Y2hlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKKyNpbmNsdWRl ICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZl ci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1ZGUg InN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRl ICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCisjaW5jbHVkZSAi dXRpbHMvc3lzY2FjaGUuaCIKKworI2RlZmluZSBQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQyAw eDc4N2NhMDY3CisKKy8qCisgKiBEU00ga2V5cyBmb3IgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIu ICBVbmxpa2Ugb3RoZXIgcGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBzaW5jZSB3ZSBkb24n dCBuZWVkIHRvIHdvcnJ5IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdpdGggcGxhbl9ub2Rl X2lkIHdlCisgKiBjYW4gdXNlIHNtYWxsIGludGVnZXJzLgorICovCisjZGVmaW5lIEFQUExZX0JH V09SS0VSX0tFWV9TSEFSRUQJMQorI2RlZmluZSBBUFBMWV9CR1dPUktFUl9LRVlfTVEJCTIKKwor LyogUXVldWUgc2l6ZSBvZiBEU00sIDE2IE1CIGZvciBub3cuICovCisjZGVmaW5lIERTTV9RVUVV RV9TSVpFCSgxNioxMDI0KjEwMjQpCisKKy8qCisgKiBUaGVyZSBhcmUgdGhyZWUgZmllbGRzIGlu IG1lc3NhZ2U6IHN0YXJ0X2xzbiwgZW5kX2xzbiBhbmQgc2VuZF90aW1lLiBCZWNhdXNlCisgKiB3 ZSBoYXZlIHVwZGF0ZWQgdGhlc2Ugc3RhdGlzdGljcyBpbiBhcHBseSB3b3JrZXIsIHdlIGNvdWxk IGlnbm9yZSB0aGVzZQorICogZmllbGRzIGluIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLiAoc2Vl IGZ1bmN0aW9uIExvZ2ljYWxSZXBBcHBseUxvb3ApLgorICovCisjZGVmaW5lIFNJWkVfU1RBVFNf TUVTU0FHRSAoMipzaXplb2YoWExvZ1JlY1B0cikrc2l6ZW9mKFRpbWVzdGFtcFR6KSkKKworLyoK KyAqIEVudHJ5IGZvciBhIGhhc2ggdGFibGUgd2UgdXNlIHRvIG1hcCBmcm9tIHhpZCB0byBvdXIg YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIKKyAqIHN0YXRlLgorICovCit0eXBlZGVmIHN0cnVjdCBB cHBseUJnd29ya2VyRW50cnkKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsJLyogSGFzaCBrZXkgLS0g bXVzdCBiZSBmaXJzdCAqLworCUFwcGx5Qmd3b3JrZXJJbmZvICp3c3RhdGU7Cit9IEFwcGx5Qmd3 b3JrZXJFbnRyeTsKKworLyogQXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIGhhc2ggdGFibGUgKGlu aXRpYWxpemVkIG9uIGZpcnN0IHVzZSkuICovCitzdGF0aWMgSFRBQiAqQXBwbHlCZ3dvcmtlcnNI YXNoID0gTlVMTDsKK3N0YXRpYyBMaXN0ICpBcHBseUJnd29ya2Vyc0ZyZWVMaXN0ID0gTklMOwor c3RhdGljIExpc3QgKkFwcGx5Qmd3b3JrZXJzTGlzdCA9IE5JTDsKKworLyoKKyAqIEluZm9ybWF0 aW9uIHNoYXJlZCBiZXR3ZWVuIG1haW4gYXBwbHkgd29ya2VyIGFuZCBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlci4KKyAqLwordm9sYXRpbGUgQXBwbHlCZ3dvcmtlclNoYXJlZCAqTXlQYXJhbGxlbFNo YXJlZCA9IE5VTEw7CisKK0xpc3QJICAgKnN1YnhhY3RsaXN0ID0gTklMOworCitzdGF0aWMgYm9v bCBhcHBseV9iZ3dvcmtlcl9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpOworc3RhdGljIEFw cGx5Qmd3b3JrZXJJbmZvICphcHBseV9iZ3dvcmtlcl9zZXR1cCh2b2lkKTsKK3N0YXRpYyBib29s IGFwcGx5X2Jnd29ya2VyX3NldHVwX2RzbShBcHBseUJnd29ya2VySW5mbyAqd3N0YXRlKTsKKwor LyoKKyAqIENoZWNrIGlmIHN0YXJ0aW5nIGEgbmV3IGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGlz IGFsbG93ZWQuCisgKi8KK3N0YXRpYyBib29sCithcHBseV9iZ3dvcmtlcl9jYW5fc3RhcnQoVHJh bnNhY3Rpb25JZCB4aWQpCit7CisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCQly ZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIERvbid0IHN0YXJ0IGEgbmV3IGJhY2tncm91bmQgd29y a2VyIGlmIG5vdCBpbiBzdHJlYW1pbmcgcGFyYWxsZWwgbW9kZS4KKwkgKi8KKwlpZiAoTXlTdWJz Y3JpcHRpb24tPnN0cmVhbSAhPSBTVUJTVFJFQU1fUEFSQUxMRUwpCisJCXJldHVybiBmYWxzZTsK KworCS8qCisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgYmFja2dyb3VuZCB3b3JrZXIgaWYgdXNlciBo YXMgc2V0IHNraXBsc24gYXMgaXQncworCSAqIHBvc3NpYmxlIHRoYXQgdXNlciB3YW50IHRvIHNr aXAgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gRm9yCisJICogc3RyZWFtaW5nIHRyYW5zYWN0 aW9uLCB3ZSBuZWVkIHRvIHNwaWxsIHRoZSB0cmFuc2FjdGlvbiB0byBkaXNrIHNvIHRoYXQKKwkg KiB3ZSBjYW4gZ2V0IHRoZSBsYXN0IExTTiBvZiB0aGUgdHJhbnNhY3Rpb24gdG8ganVkZ2Ugd2hl dGhlciB0byBza2lwCisJICogYmVmb3JlIHN0YXJ0aW5nIHRvIGFwcGx5IHRoZSBjaGFuZ2UuCisJ ICovCisJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lwbHNuKSkK KwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBGb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0 aGF0IGFyZSBiZWluZyBhcHBsaWVkIGluIGFwcGx5IGJhY2tncm91bmQKKwkgKiB3b3JrZXIsIHdl IGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGZvciBhIHJlbGF0aW9u CisJICogdGhhdCBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRlIChzZWUgc2hvdWxkX2FwcGx5X2No YW5nZXNfZm9yX3JlbCkgYXMgd2UKKwkgKiB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkg dGhhdCB0aW1lLiBTbywgd2UgZG9uJ3Qgc3RhcnQgbmV3IGFwcGx5CisJICogYmFja2dyb3VuZCB3 b3JrZXIgaW4gdGhpcyBjYXNlLgorCSAqLworCWlmICghQWxsVGFibGVzeW5jc1JlYWR5KCkpCisJ CXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICogUmV0dXJuIHRoZSBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlciB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmll ZCB4aWQuCisgKgorICogSWYgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaXMgZm91bmQgaW4g dGhlIGZyZWUgbGlzdCB0aGVuIHJlLXVzZSBpdCwKKyAqIG90aGVyd2lzZSBzdGFydCBhIGZyZXNo IG9uZS4gQ2FjaGUgdGhlIHdvcmtlciBBcHBseUJnd29ya2Vyc0hhc2gga2V5ZWQgYnkKKyAqIHRo ZSBzcGVjaWZpZWQgeGlkLgorICovCitBcHBseUJnd29ya2VySW5mbyAqCithcHBseV9iZ3dvcmtl cl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlpbnQJCQlzZXJ2 ZXJfdmVyc2lvbjsKKwlBcHBseUJnd29ya2VySW5mbyAqd3N0YXRlOworCUFwcGx5Qmd3b3JrZXJF bnRyeSAqZW50cnkgPSBOVUxMOworCisJaWYgKCFhcHBseV9iZ3dvcmtlcl9jYW5fc3RhcnQoeGlk KSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxpemUg YXBwbHkgd29ya2VycyBoYXNodGFibGUuICovCisJaWYgKEFwcGx5Qmd3b3JrZXJzSGFzaCA9PSBO VUxMKQorCXsKKwkJSEFTSENUTAkJY3RsOworCisJCU1lbVNldCgmY3RsLCAwLCBzaXplb2YoY3Rs KSk7CisJCWN0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOworCQljdGwuZW50cnlz aXplID0gc2l6ZW9mKEFwcGx5Qmd3b3JrZXJFbnRyeSk7CisJCWN0bC5oY3h0ID0gQXBwbHlDb250 ZXh0OworCisJCUFwcGx5Qmd3b3JrZXJzSGFzaCA9IGhhc2hfY3JlYXRlKCJsb2dpY2FsIGFwcGx5 IHdvcmtlcnMgaGFzaCIsIDE2LCAmY3RsLAorCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9C TE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJfQorCisJLyogVHJ5IHRvIGdldCBhIGZyZWUgYXBwbHkg YmFja2dyb3VuZCB3b3JrZXIuICovCisJaWYgKGxpc3RfbGVuZ3RoKEFwcGx5Qmd3b3JrZXJzRnJl ZUxpc3QpID4gMCkKKwl7CisJCXdzdGF0ZSA9IChBcHBseUJnd29ya2VySW5mbyAqKSBsbGFzdChB cHBseUJnd29ya2Vyc0ZyZWVMaXN0KTsKKwkJQXNzZXJ0KHdzdGF0ZS0+c2hhcmVkLT5zdGF0dXMg PT0gQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCQlBcHBseUJnd29ya2Vyc0ZyZWVMaXN0ID0g bGlzdF9kZWxldGVfbGFzdChBcHBseUJnd29ya2Vyc0ZyZWVMaXN0KTsKKwl9CisJZWxzZQorCXsK KwkJd3N0YXRlID0gYXBwbHlfYmd3b3JrZXJfc2V0dXAoKTsKKworCQlpZiAod3N0YXRlID09IE5V TEwpCisJCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBDcmVhdGUgZW50cnkgZm9yIHJlcXVlc3Rl ZCB0cmFuc2FjdGlvbi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKEFwcGx5Qmd3b3JrZXJzSGFz aCwgJnhpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJCWVsb2coRVJST1Is ICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOworCisJLyogRmlsbCB1cCB0aGUgaGFzaCBlbnRyeS4g Ki8KKwl3c3RhdGUtPnNoYXJlZC0+c3RhdHVzID0gQVBQTFlfQkdXT1JLRVJfQlVTWTsKKworCXNl cnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNv bm4pOworCXdzdGF0ZS0+c2hhcmVkLT5wcm90b192ZXJzaW9uID0KKwkJc2VydmVyX3ZlcnNpb24g Pj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0g OgorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNF X1ZFUlNJT05fTlVNIDoKKwkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8gTE9HSUNBTFJFUF9Q Uk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgorCQlMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVN OworCisJd3N0YXRlLT5zaGFyZWQtPnN0cmVhbV94aWQgPSB4aWQ7CisJZW50cnktPndzdGF0ZSA9 IHdzdGF0ZTsKKwllbnRyeS0+eGlkID0geGlkOworCisJcmV0dXJuIHdzdGF0ZTsKK30KKworLyoK KyAqIEZpbmQgdGhlIHByZXZpb3VzbHkgYXNzaWduZWQgd29ya2VyIGZvciB0aGUgZ2l2ZW4gdHJh bnNhY3Rpb24sIGlmIGFueS4KKyAqLworQXBwbHlCZ3dvcmtlckluZm8gKgorYXBwbHlfYmd3b3Jr ZXJfZmluZChUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlBcHBseUJnd29y a2VyRW50cnkgKmVudHJ5ID0gTlVMTDsKKworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlk KSkKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAoQXBwbHlCZ3dvcmtlcnNIYXNoID09IE5VTEwpCisJ CXJldHVybiBOVUxMOworCisJLyoKKwkgKiBGaW5kIGVudHJ5IGZvciByZXF1ZXN0ZWQgdHJhbnNh Y3Rpb24uCisJICovCisJZW50cnkgPSBoYXNoX3NlYXJjaChBcHBseUJnd29ya2Vyc0hhc2gsICZ4 aWQsIEhBU0hfRklORCwgJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJeworCQljaGFyIHN0YXR1cyA9 IGVudHJ5LT53c3RhdGUtPnNoYXJlZC0+c3RhdHVzOworCisJCS8qIElmIGFueSB3b3JrZXJzIChv ciB0aGUgcG9zdG1hc3RlcikgaGF2ZSBkaWVkLCB3ZSBoYXZlIGZhaWxlZC4gKi8KKwkJaWYgKHN0 YXR1cyA9PSBBUFBMWV9CR1dPUktFUl9FWElUKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBl cnJtc2coImJhY2tncm91bmQgd29ya2VyICV1IGZhaWxlZCB0byBhcHBseSB0cmFuc2FjdGlvbiAl dSIsCisJCQkJCQkJZW50cnktPndzdGF0ZS0+c2hhcmVkLT53b3JrZXJfaWQsCisJCQkJCQkJZW50 cnktPndzdGF0ZS0+c2hhcmVkLT5zdHJlYW1feGlkKSkpOworCisJCUFzc2VydChzdGF0dXMgPT0g QVBQTFlfQkdXT1JLRVJfQlVTWSk7CisKKwkJcmV0dXJuIGVudHJ5LT53c3RhdGU7CisJfQorCisJ cmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBBZGQgdGhlIHdvcmtlciB0byB0aGUgZnJlZSBsaXN0 IGFuZCByZW1vdmUgdGhlIGVudHJ5IGZyb20gdGhlIGhhc2ggdGFibGUuCisgKi8KK3ZvaWQKK2Fw cGx5X2Jnd29ya2VyX2ZyZWUoQXBwbHlCZ3dvcmtlckluZm8gKndzdGF0ZSkKK3sKKwlNZW1vcnlD b250ZXh0IG9sZGN0eDsKKwlUcmFuc2FjdGlvbklkIHhpZCA9IHdzdGF0ZS0+c2hhcmVkLT5zdHJl YW1feGlkOworCisJQXNzZXJ0KHdzdGF0ZS0+c2hhcmVkLT5zdGF0dXMgPT0gQVBQTFlfQkdXT1JL RVJfRklOSVNIRUQpOworCisJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29u dGV4dCk7CisKKwloYXNoX3NlYXJjaChBcHBseUJnd29ya2Vyc0hhc2gsICZ4aWQsIEhBU0hfUkVN T1ZFLCBOVUxMKTsKKworCWVsb2coREVCVUcxLCAiYWRkaW5nIGZpbmlzaGVkIGFwcGx5IHdvcmtl ciAjJXUgZm9yIHhpZCAldSB0byB0aGUgZnJlZSBsaXN0IiwKKwkJIHdzdGF0ZS0+c2hhcmVkLT53 b3JrZXJfaWQsIHdzdGF0ZS0+c2hhcmVkLT5zdHJlYW1feGlkKTsKKworCUFwcGx5Qmd3b3JrZXJz RnJlZUxpc3QgPSBsYXBwZW5kKEFwcGx5Qmd3b3JrZXJzRnJlZUxpc3QsIHdzdGF0ZSk7CisKKwlN ZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKK30KKworLyogQXBwbHkgQmFja2dyb3VuZCBX b3JrZXIgbWFpbiBsb29wLiAqLworc3RhdGljIHZvaWQKK0xvZ2ljYWxBcHBseUJnd0xvb3Aoc2ht X21xX2hhbmRsZSAqbXFoLCB2b2xhdGlsZSBBcHBseUJnd29ya2VyU2hhcmVkICpzaGFyZWQpCit7 CisJc2htX21xX3Jlc3VsdCBzaG1xX3JlczsKKwlQR1BST0MJICAgKnJlZ2lzdHJhbnQ7CisJRXJy b3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisKKwlyZWdpc3RyYW50ID0gQmFja2VuZFBp ZEdldFByb2MoTXlCZ3dvcmtlckVudHJ5LT5iZ3dfbm90aWZ5X3BpZCk7CisJU2V0TGF0Y2goJnJl Z2lzdHJhbnQtPnByb2NMYXRjaCk7CisKKwkvKgorCSAqIEluaXQgdGhlIEFwcGx5TWVzc2FnZUNv bnRleHQgd2hpY2ggd2UgY2xlYW4gdXAgYWZ0ZXIgZWFjaCByZXBsaWNhdGlvbgorCSAqIHByb3Rv Y29sIG1lc3NhZ2UuCisJICovCisJQXBwbHlNZXNzYWdlQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4 dENyZWF0ZShBcHBseUNvbnRleHQsCisJCQkJCQkJCQkJCQkiQXBwbHlNZXNzYWdlQ29udGV4dCIs CisJCQkJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKworCS8qCisJICogUHVzaCBh cHBseSBlcnJvciBjb250ZXh0IGNhbGxiYWNrLiBGaWVsZHMgd2lsbCBiZSBmaWxsZWQgd2hpbGUg YXBwbHlpbmcKKwkgKiBhIGNoYW5nZS4KKwkgKi8KKwllcnJjYWxsYmFjay5jYWxsYmFjayA9IGFw cGx5X2Vycm9yX2NhbGxiYWNrOworCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4 dF9zdGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOworCisJZm9yICg7 OykKKwl7CisJCXZvaWQJICAgKmRhdGE7CisJCVNpemUJCWxlbjsKKwkJaW50CQkJYzsKKwkJU3Ry aW5nSW5mb0RhdGEgczsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisKKwkJQ0hFQ0tfRk9SX0lO VEVSUlVQVFMoKTsKKworCQkvKiBFbnN1cmUgd2UgYXJlIHJlYWRpbmcgdGhlIGRhdGEgaW50byBv dXIgbWVtb3J5IGNvbnRleHQuICovCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhB cHBseU1lc3NhZ2VDb250ZXh0KTsKKworCQlzaG1xX3JlcyA9IHNobV9tcV9yZWNlaXZlKG1xaCwg JmxlbiwgJmRhdGEsIGZhbHNlKTsKKworCQlpZiAoc2htcV9yZXMgIT0gU0hNX01RX1NVQ0NFU1Mp CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5f UFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHRo ZSBtYWluIGFwcGx5IHdvcmtlciIpKSk7CisKKwkJaWYgKGxlbiA9PSAwKQorCQkJYnJlYWs7CisK KwkJcy5jdXJzb3IgPSAwOworCQlzLm1heGxlbiA9IC0xOworCQlzLmRhdGEgPSAoY2hhciAqKSBk YXRhOworCQlzLmxlbiA9IGxlbjsKKworCQkvKgorCQkgKiBXZSB1c2UgZmlyc3QgYnl0ZSBvZiBt ZXNzYWdlIGZvciBhZGRpdGlvbmFsIGNvbW11bmljYXRpb24gYmV0d2VlbgorCQkgKiBtYWluIExv Z2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGFuZCBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMsIHNv IGlmCisJCSAqIGl0IGRpZmZlcnMgZnJvbSAndycsIHRoZW4gcHJvY2VzcyBpdCBmaXJzdC4KKwkJ ICovCisJCWMgPSBwcV9nZXRtc2dieXRlKCZzKTsKKwkJc3dpdGNoIChjKQorCQl7CisJCQkvKiBF bmQgbWVzc2FnZSBvZiBzdHJlYW1pbmcgY2h1bmsgKi8KKwkJCWNhc2UgTE9HSUNBTF9SRVBfTVNH X1NUUkVBTV9TVE9QOgorCQkJCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIGVuZGVkIHBy b2Nlc3Npbmcgc3RyZWFtaW5nIGNodW5rLCAiCisJCQkJCSAid2FpdGluZyBvbiBzaG1fbXFfcmVj ZWl2ZSIsIHNoYXJlZC0+d29ya2VyX2lkKTsKKworCQkJCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9u ID0gZmFsc2U7CisJCQkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFSU5UUkFOU0FD VElPTiwgTlVMTCk7CisJCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJCQkJY29u dGludWU7CisJCQljYXNlICd3JzoKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxvZyhF UlJPUiwgIltBcHBseSBCR1cgIyV1XSB1bmV4cGVjdGVkIG1lc3NhZ2UgXCIlY1wiIiwKKwkJCQkJ IHNoYXJlZC0+d29ya2VyX2lkLCBjKTsKKwkJCQlicmVhazsKKwkJfQorCisJCS8qCisJCSAqIEln bm9yZSBzdGF0aXN0aWNzIGZpZWxkcyB0aGF0IGhhdmUgYmVlbiB1cGRhdGVkIGJ5IHRoZSBtYWlu IGFwcGx5CisJCSAqIHdvcmtlci4KKwkJICovCisJCXMuY3Vyc29yICs9IFNJWkVfU1RBVFNfTUVT U0FHRTsKKworCQlhcHBseV9kaXNwYXRjaCgmcyk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGN0eCk7CisJCU1lbW9yeUNvbnRleHRSZXNldChBcHBseU1lc3NhZ2VDb250ZXh0KTsKKwor CQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJeworCQkJQ29uZmlnUmVsb2FkUGVuZGluZyA9 IGZhbHNlOworCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJCX0KKwl9CisKKwlN ZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9wTWVtb3J5Q29udGV4dCk7CisKKwkvKiBQb3AgdGhlIGVy cm9yIGNvbnRleHQgc3RhY2suICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxiYWNr LnByZXZpb3VzOworCisJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdXICMldV0gZXhpdGluZyIsIHNo YXJlZC0+d29ya2VyX2lkKTsKKworCS8qIFNpZ25hbCBtYWluIHByb2Nlc3MgdGhhdCB3ZSBhcmUg ZG9uZS4gKi8KKwlTZXRMYXRjaCgmcmVnaXN0cmFudC0+cHJvY0xhdGNoKTsKK30KKworLyoKKyAq IFNldCB0aGUgZXhpdCBzdGF0dXMgc28gdGhhdCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgY2FuIHJl YWxpemUgd2UgaGF2ZQorICogc2h1dGRvd24uCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9iZ3dv cmtlcl9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQoreworCWFwcGx5X2Jnd29ya2VyX3Nl dF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfRVhJVCk7CisKKwlkc21fZGV0YWNoKChkc21fc2VnbWVu dCAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKSk7Cit9CisKKy8qCisgKiBBcHBseSBCYWNrZ3JvdW5k IFdvcmtlciBlbnRyeSBwb2ludC4KKyAqLwordm9pZAorQXBwbHlCZ3dvcmtlck1haW4oRGF0dW0g bWFpbl9hcmcpCit7CisJdm9sYXRpbGUgQXBwbHlCZ3dvcmtlclNoYXJlZCAqc2hhcmVkOworCisJ ZHNtX2hhbmRsZQloYW5kbGU7CisJZHNtX3NlZ21lbnQgKnNlZzsKKwlzaG1fdG9jICAgICp0b2M7 CisJc2htX21xCSAgICptcTsKKwlzaG1fbXFfaGFuZGxlICptcWg7CisJUmVwT3JpZ2luSWQgb3Jp Z2luaWQ7CisJaW50CQkJd29ya2VyX3Nsb3QgPSBEYXR1bUdldEludDMyKG1haW5fYXJnKTsKKwlj aGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKKworCS8qIFNldHVwIHNpZ25hbCBoYW5kbGlu Zy4gKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwor CXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxz KCk7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21l bnQgZm9yIHRoZSBwYXJhbGxlbCBxdWVyeSwgYW5kCisJICogZmluZCBpdHMgdGFibGUgb2YgY29u dGVudHMuCisJICoKKwkgKiBOb3RlOiBhdCB0aGlzIHBvaW50LCB3ZSBoYXZlIG5vdCBjcmVhdGVk IGFueSBSZXNvdXJjZU93bmVyIGluIHRoaXMKKwkgKiBwcm9jZXNzLiAgVGhpcyB3aWxsIHJlc3Vs dCBpbiBvdXIgRFNNIG1hcHBpbmcgc3Vydml2aW5nIHVudGlsIHByb2Nlc3MKKwkgKiBleGl0LCB3 aGljaCBpcyBmaW5lLiAgSWYgdGhlcmUgd2VyZSBhIFJlc291cmNlT3duZXIsIGl0IHdvdWxkIGFj cXVpcmUKKwkgKiBvd25lcnNoaXAgb2YgdGhlIG1hcHBpbmcsIGJ1dCB3ZSBoYXZlIG5vIG5lZWQg Zm9yIHRoYXQuCisJICovCisJbWVtY3B5KCZoYW5kbGUsIE15Qmd3b3JrZXJFbnRyeS0+Ymd3X2V4 dHJhLCBzaXplb2YoZHNtX2hhbmRsZSkpOworCXNlZyA9IGRzbV9hdHRhY2goaGFuZGxlKTsKKwlp ZiAoc2VnID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygidW5hYmxlIHRv IG1hcCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisJdG9jID0gc2htX3RvY19h dHRhY2goUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2Vn KSk7CisJaWYgKHRvYyA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImJh ZCBtYWdpYyBudW1iZXIgaW4gZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQiKSkpOworCisJ YmVmb3JlX3NobWVtX2V4aXQoYXBwbHlfYmd3b3JrZXJfc2h1dGRvd24sIFBvaW50ZXJHZXREYXR1 bShzZWcpKTsKKworCS8qIExvb2sgdXAgdGhlIHNoYXJlZCBpbmZvcm1hdGlvbi4gKi8KKwlzaGFy ZWQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIEFQUExZX0JHV09SS0VSX0tFWV9TSEFSRUQsIGZhbHNl KTsKKwlNeVBhcmFsbGVsU2hhcmVkID0gc2hhcmVkOworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhl IG1lc3NhZ2UgcXVldWUuCisJICovCisJbXEgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIEFQUExZX0JH V09SS0VSX0tFWV9NUSwgZmFsc2UpOworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEsIE15UHJvYyk7 CisJbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qCisJICogTm93LCB3 ZSBoYXZlIGluaXRpYWxpemVkIERTTS4gQXR0YWNoIHRvIHNsb3QuCisJICovCisJbG9naWNhbHJl cF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKKworCU15TG9naWNhbFJlcFdvcmtlci0+bGFz dF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KKwkJTXlM b2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gMDsKKworCUluaXRpYWxpemVBcHBseVdvcmtl cigpOworCisJLyogU2V0dXAgcmVwbGljYXRpb24gb3JpZ2luIHRyYWNraW5nLiAqLworCVN0YXJ0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJc25wcmludGYob3JpZ2lubmFtZSwgc2l6ZW9mKG9yaWdp bm5hbWUpLCAicGdfJXUiLCBNeVN1YnNjcmlwdGlvbi0+b2lkKTsKKwlvcmlnaW5pZCA9IHJlcGxv cmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCB0cnVlKTsKKwlpZiAoIU9pZElzVmFsaWQob3JpZ2lu aWQpKQorCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fY3JlYXRlKG9yaWdpbm5hbWUpOworCisJLyoK KwkgKiBUaGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgZG9lc24ndCBuZWVkIHRvIG1vbm9wb2xp emUgdGhpcyByZXBsaWNhdGlvbgorCSAqIG9yaWdpbiB3aGljaCB3YXMgYWxyZWFkeSBhY3F1aXJl ZCBieSBpdHMgbGVhZGVyIHByb2Nlc3MuCisJICovCisJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVw KG9yaWdpbmlkLCBNeUxvZ2ljYWxSZXBXb3JrZXItPm1haW5fd29ya2VyX3BpZCk7CisJcmVwbG9y aWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCisJLyoKKwkgKiBTZXR1cCBjYWxsYmFjayBmb3Igc3lzY2FjaGUgc28gdGhhdCB3ZSBr bm93IHdoZW4gc29tZXRoaW5nIGNoYW5nZXMgaW4KKwkgKiB0aGUgc3Vic2NyaXB0aW9uIHJlbGF0 aW9uIHN0YXRlLgorCSAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFNVQlNDUklQ VElPTlJFTE1BUCwKKwkJCQkJCQkJICBpbnZhbGlkYXRlX3N5bmNpbmdfdGFibGVfc3RhdGVzLAor CQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwkvKgorCSAqIEFsbG9jYXRlIHRoZSBvcmlnaW4gbmFt ZSBpbiBsb25nLWxpdmVkIGNvbnRleHQgZm9yIGVycm9yIGNvbnRleHQKKwkgKiBtZXNzYWdlLgor CSAqLworCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5vcmlnaW5fbmFtZSA9IE1lbW9yeUNvbnRl eHRTdHJkdXAoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSk7CisK KwllbG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBzdGFydGVkIiwgc2hhcmVkLT53b3JrZXJf aWQpOworCisJTG9naWNhbEFwcGx5Qmd3TG9vcChtcWgsIHNoYXJlZCk7CisKKwkvKgorCSAqIFdl J3JlIGRvbmUuICBFeHBsaWNpdGx5IGRldGFjaCB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IHNv IHRoYXQgd2UKKwkgKiBkb24ndCBnZXQgYSByZXNvdXJjZSBsZWFrIHdhcm5pbmcgYXQgY29tbWl0 IHRpbWUuICBUaGlzIHdpbGwgZmlyZSBhbnkKKwkgKiBvbl9kc21fZGV0YWNoIGNhbGxiYWNrcyB3 ZSd2ZSByZWdpc3RlcmVkLCBhcyB3ZWxsLiAgT25jZSB0aGF0J3MgZG9uZSwKKwkgKiB3ZSBjYW4g Z28gYWhlYWQgYW5kIGV4aXQuCisJICovCisJZHNtX2RldGFjaChzZWcpOworCXByb2NfZXhpdCgw KTsKK30KKworLyoKKyAqIFNldCB1cCBhIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50Lgor ICoKKyAqIFdlIHNldCB1cCBhIGNvbnRyb2wgcmVnaW9uIHRoYXQgY29udGFpbnMgYSBBcHBseUJn d29ya2VyU2hhcmVkLAorICogcGx1cyBvbmUgcmVnaW9uIHBlciBtZXNzYWdlIHF1ZXVlLiBUaGVy ZSBhcmUgYXMgbWFueSBtZXNzYWdlIHF1ZXVlcyBhcworICogdGhlIG51bWJlciBvZiB3b3JrZXJz LgorICovCitzdGF0aWMgYm9vbAorYXBwbHlfYmd3b3JrZXJfc2V0dXBfZHNtKEFwcGx5Qmd3b3Jr ZXJJbmZvICp3c3RhdGUpCit7CisJc2htX3RvY19lc3RpbWF0b3IgZTsKKwlTaXplCQlzZWdzaXpl OworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCUFwcGx5Qmd3b3JrZXJT aGFyZWQgKnNoYXJlZDsKKwlzaG1fbXEJICAgKm1xOworCWludDY0CQlxdWV1ZV9zaXplID0gRFNN X1FVRVVFX1NJWkU7CisJaW50CQkJc2VydmVyX3ZlcnNpb247CisKKwkvKgorCSAqIEVzdGltYXRl IGhvdyBtdWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkgKgorCSAqIEJlY2F1c2UgdGhlIFRP QyBtYWNoaW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFkZGluZyBvZiBvZGRseS1zaXplZAor CSAqIHJlcXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2ggY2h1bmsgc2VwYXJhdGVseS4KKwkg KgorCSAqIFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0aGUgbG9jYXRpb24gb2YgdGhlIGhl YWRlciwgYW5kIHdlIG5lZWQKKwkgKiBhbm90aGVyIGtleSB0byB0cmFjayB0aGUgbG9jYXRpb24g b2YgdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJc2htX3RvY19pbml0aWFsaXplX2VzdGltYXRv cigmZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgc2l6ZW9mKEFwcGx5Qmd3b3JrZXJT aGFyZWQpKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCAoU2l6ZSkgcXVldWVfc2l6ZSk7 CisKKwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJmUsIDIpOworCXNlZ3NpemUgPSBzaG1fdG9jX2Vz dGltYXRlKCZlKTsKKworCS8qIENyZWF0ZSB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGFuZCBl c3RhYmxpc2ggYSB0YWJsZSBvZiBjb250ZW50cy4gKi8KKwlzZWcgPSBkc21fY3JlYXRlKHNobV90 b2NfZXN0aW1hdGUoJmUpLCAwKTsKKworCWlmIChzZWcgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNl OworCisJdG9jID0gc2htX3RvY19jcmVhdGUoUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRz bV9zZWdtZW50X2FkZHJlc3Moc2VnKSwKKwkJCQkJCSBzZWdzaXplKTsKKworCS8qIFNldCB1cCB0 aGUgaGVhZGVyIHJlZ2lvbi4gKi8KKwlzaGFyZWQgPSBzaG1fdG9jX2FsbG9jYXRlKHRvYywgc2l6 ZW9mKEFwcGx5Qmd3b3JrZXJTaGFyZWQpKTsKKwlTcGluTG9ja0luaXQoJnNoYXJlZC0+bXV0ZXgp OworCXNoYXJlZC0+c3RhdHVzID0gQVBQTFlfQkdXT1JLRVJfQlVTWTsKKworCXNlcnZlcl92ZXJz aW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOworCXNo YXJlZC0+cHJvdG9fdmVyc2lvbiA9CisJCXNlcnZlcl92ZXJzaW9uID49IDE2MDAwMCA/IExPR0lD QUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDoKKwkJc2VydmVyX3ZlcnNp b24gPj0gMTUwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSA6CisJ CXNlcnZlcl92ZXJzaW9uID49IDE0MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJ T05fTlVNIDoKKwkJTE9HSUNBTFJFUF9QUk9UT19WRVJTSU9OX05VTTsKKworCXNoYXJlZC0+c3Ry ZWFtX3hpZCA9IHN0cmVhbV94aWQ7CisJc2hhcmVkLT53b3JrZXJfaWQgPSBsaXN0X2xlbmd0aChB cHBseUJnd29ya2Vyc0xpc3QpICsgMTsKKworCXNobV90b2NfaW5zZXJ0KHRvYywgQVBQTFlfQkdX T1JLRVJfS0VZX1NIQVJFRCwgc2hhcmVkKTsKKworCS8qIFNldCB1cCBtZXNzYWdlIHF1ZXVlIGZv ciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21xX2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRlKHRv YywgKFNpemUpIHF1ZXVlX3NpemUpLAorCQkJCQkgICAoU2l6ZSkgcXVldWVfc2l6ZSk7CisJc2ht X3RvY19pbnNlcnQodG9jLCBBUFBMWV9CR1dPUktFUl9LRVlfTVEsIG1xKTsKKwlzaG1fbXFfc2V0 X3NlbmRlcihtcSwgTXlQcm9jKTsKKworCS8qIEF0dGFjaCB0aGUgcXVldWUuICovCisJd3N0YXRl LT5tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyogUmV0dXJu IHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdzdGF0ZS0+ZHNtX3NlZyA9IHNlZzsKKwl3c3RhdGUt PnNoYXJlZCA9IHNoYXJlZDsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICogU3RhcnQgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIgcHJvY2VzcyBhbmQgYWxsb2NhdGUgc2hhcmVkIG1lbW9yeSBm b3IgaXQuCisgKi8KK3N0YXRpYyBBcHBseUJnd29ya2VySW5mbyAqCithcHBseV9iZ3dvcmtlcl9z ZXR1cCh2b2lkKQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlib29sCQlsYXVuY2hl ZDsKKwlBcHBseUJnd29ya2VySW5mbyAqd3N0YXRlOworCWludAkJCW5hcHBseXdvcmtlcnM7CisK KwllbG9nKERFQlVHMSwgInNldHRpbmcgdXAgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgIyV1IiwK KwkJIGxpc3RfbGVuZ3RoKEFwcGx5Qmd3b3JrZXJzTGlzdCkgKyAxKTsKKworCS8qIENoZWNrIGlm IHRoZXJlIGFyZSBmcmVlIHdvcmtlciBzbG90KHMpLiAqLworCUxXTG9ja0FjcXVpcmUoTG9naWNh bFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisJbmFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBf YXBwbHlfYmd3b3JrZXJfY291bnQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCk7CisJTFdMb2Nr UmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisKKwlpZiAobmFwcGx5d29ya2VycyA+PSBt YXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pCisJCXJldHVybiBOVUxMOworCisJ b2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJd3N0 YXRlID0gKEFwcGx5Qmd3b3JrZXJJbmZvICopIHBhbGxvYzAoc2l6ZW9mKEFwcGx5Qmd3b3JrZXJJ bmZvKSk7CisKKwkvKiBTZXR1cCBzaGFyZWQgbWVtb3J5LiAqLworCWlmICghYXBwbHlfYmd3b3Jr ZXJfc2V0dXBfZHNtKHdzdGF0ZSkpCisJeworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29u dGV4dCk7CisJCXBmcmVlKHdzdGF0ZSk7CisKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJbGF1bmNo ZWQgPSBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goTXlMb2dpY2FsUmVwV29ya2VyLT5kYmlkLAor CQkJCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24t Pm5hbWUsCisJCQkJCQkJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCisJCQkJCQkJCQkJ SW52YWxpZE9pZCwKKwkJCQkJCQkJCQlkc21fc2VnbWVudF9oYW5kbGUod3N0YXRlLT5kc21fc2Vn KSk7CisKKwlpZiAobGF1bmNoZWQpCisJCUFwcGx5Qmd3b3JrZXJzTGlzdCA9IGxhcHBlbmQoQXBw bHlCZ3dvcmtlcnNMaXN0LCB3c3RhdGUpOworCWVsc2UKKwl7CisJCWRzbV9kZXRhY2god3N0YXRl LT5kc21fc2VnKTsKKwkJd3N0YXRlLT5kc21fc2VnID0gTlVMTDsKKworCQlwZnJlZSh3c3RhdGUp OworCQl3c3RhdGUgPSBOVUxMOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250 ZXh0KTsKKworCXJldHVybiB3c3RhdGU7Cit9CisKKy8qCisgKiBTZW5kIHRoZSBkYXRhIHRvIHRo ZSBzcGVjaWZpZWQgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgdmlhIHNoYXJlZC1tZW1vcnkgcXVl dWUuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YShBcHBseUJnd29ya2VySW5m byAqd3N0YXRlLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKK3sKKwlzaG1fbXFfcmVz dWx0IHJlc3VsdDsKKworCXJlc3VsdCA9IHNobV9tcV9zZW5kKHdzdGF0ZS0+bXFfaGFuZGxlLCBu Ynl0ZXMsIGRhdGEsIGZhbHNlLCB0cnVlKTsKKworCWlmIChyZXN1bHQgIT0gU0hNX01RX1NVQ0NF U1MpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lO X1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiY291bGQgbm90IHNlbmQgZGF0YSB0 byBzaGFyZWQtbWVtb3J5IHF1ZXVlIikpKTsKK30KKworLyoKKyAqIFdhaXQgdW50aWwgdGhlIHN0 YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciByZWFjaGVzIHRoZQorICogJ3dhaXRfZm9y X3N0YXR1cycuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3dhaXRfZm9yKEFwcGx5Qmd3b3Jr ZXJJbmZvICp3c3RhdGUsCisJCQkJCQlBcHBseUJnd29ya2VyU3RhdHVzIHdhaXRfZm9yX3N0YXR1 cykKK3sKKwlmb3IgKDs7KQorCXsKKwkJY2hhcgkJc3RhdHVzOworCisJCVNwaW5Mb2NrQWNxdWly ZSgmd3N0YXRlLT5zaGFyZWQtPm11dGV4KTsKKwkJc3RhdHVzID0gd3N0YXRlLT5zaGFyZWQtPnN0 YXR1czsKKwkJU3BpbkxvY2tSZWxlYXNlKCZ3c3RhdGUtPnNoYXJlZC0+bXV0ZXgpOworCisJCS8q IERvbmUgaWYgYWxyZWFkeSBpbiBjb3JyZWN0IHN0YXR1cy4gKi8KKwkJaWYgKHN0YXR1cyA9PSB3 YWl0X2Zvcl9zdGF0dXMpCisJCQlicmVhazsKKworCQkvKiBJZiBhbnkgd29ya2VycyBoYXZlIGRp ZWQsIHdlIGhhdmUgZmFpbGVkLiAqLworCQlpZiAoc3RhdHVzID09IEFQUExZX0JHV09SS0VSX0VY SVQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygiYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIgJXUgZmFpbGVkIHRvIGFwcGx5IHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCQl3c3RhdGUt PnNoYXJlZC0+d29ya2VyX2lkLCB3c3RhdGUtPnNoYXJlZC0+c3RyZWFtX3hpZCkpKTsKKworCQkv KiBXYWl0IHRvIGJlIHNpZ25hbGxlZC4gKi8KKwkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNoLCBX TF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJIFdBSVRfRVZFTlRf TE9HSUNBTF9BUFBMWV9CR1dPUktFUl9TVEFURV9DSEFOR0UpOworCisJCS8qIFJlc2V0IHRoZSBs YXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlSZXNldExhdGNoKE15TGF0Y2gpOworCisJCS8q IEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcuICov CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJfQorfQorCisvKgorICogQ2hlY2sgdGhlIHN0 YXR1cyBvZiB3b3JrZXJzIGFuZCByZXBvcnQgYW4gZXJyb3IgaWYgYW55IGFwcGx5IGJhY2tncm91 bmQKKyAqIHdvcmtlciBoYXMgZXhpdGVkIHVuZXhwZWN0ZWRseS4KKyAqLwordm9pZAorYXBwbHlf Ymd3b3JrZXJfY2hlY2tfc3RhdHVzKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlpZiAo YW1fYXBwbHlfYmd3b3JrZXIoKSB8fCBNeVN1YnNjcmlwdGlvbi0+c3RyZWFtICE9IFNVQlNUUkVB TV9QQVJBTExFTCkKKwkJcmV0dXJuOworCisJZm9yZWFjaChsYywgQXBwbHlCZ3dvcmtlcnNMaXN0 KQorCXsKKwkJQXBwbHlCZ3dvcmtlckluZm8gKndzdGF0ZSA9IChBcHBseUJnd29ya2VySW5mbyAq KSBsZmlyc3QobGMpOworCisJCS8qCisJCSAqIFdlIGRvbid0IGxvY2sgaGVyZSBhcyBpbiB0aGUg d29yc3QgY2FzZSB3ZSB3aWxsIGp1c3QgZGV0ZWN0IHRoZQorCQkgKiBmYWlsdXJlIG9mIHdvcmtl ciBhIGJpdCBsYXRlci4KKwkJICovCisJCWlmICh3c3RhdGUtPnNoYXJlZC0+c3RhdHVzID09IEFQ UExZX0JHV09SS0VSX0VYSVQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJD T0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygiYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIgJXUgZXhpdGVkIHVuZXhwZWN0ZWRseSIsCisJCQkJCQkJd3N0 YXRlLT5zaGFyZWQtPndvcmtlcl9pZCkpKTsKKwl9Cit9CisKKy8qIFNldCB0aGUgYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIgc3RhdHVzLiAqLwordm9pZAorYXBwbHlfYmd3b3JrZXJfc2V0X3N0YXR1 cyhBcHBseUJnd29ya2VyU3RhdHVzIHN0YXR1cykKK3sKKwlpZiAoIWFtX2FwcGx5X2Jnd29ya2Vy KCkpCisJCXJldHVybjsKKworCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIHNldCBzdGF0 dXMgdG8gJWQiLCBNeVBhcmFsbGVsU2hhcmVkLT53b3JrZXJfaWQsIHN0YXR1cyk7CisKKwlTcGlu TG9ja0FjcXVpcmUoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKwlNeVBhcmFsbGVsU2hhcmVk LT5zdGF0dXMgPSBzdGF0dXM7CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBhcmFsbGVsU2hhcmVkLT5t dXRleCk7Cit9CisKKy8qCisgKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFjdCBpbiBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBuZWVkZWQuCisgKgorICogVGhlIGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIGNhbiBmaWd1cmUgb3V0IGlmIGEgbmV3IHN1YnRyYW5zYWN0aW9uIHdhcwor ICogc3RhcnRlZCBieSBjaGVja2luZyBpZiB0aGUgbmV3IGNoYW5nZSBhcnJpdmVkIHdpdGggZGlm ZmVyZW50IHhpZC4gSW4gdGhhdAorICogY2FzZSBkZWZpbmUgYSBuYW1lZCBzYXZlcG9pbnQsIHNv IHRoYXQgd2UgYXJlIGFibGUgdG8gY29tbWl0L3JvbGxiYWNrIGl0CisgKiBzZXBhcmF0ZWx5IGxh dGVyLgorICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRkKFRyYW5zYWN0 aW9uSWQgY3VycmVudF94aWQpCit7CisJaWYgKGN1cnJlbnRfeGlkICE9IHN0cmVhbV94aWQgJiYK KwkJIWxpc3RfbWVtYmVyX2ludChzdWJ4YWN0bGlzdCwgKGludCkgY3VycmVudF94aWQpKQorCXsK KwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCWNoYXIJCXNwbmFtZVtNQVhQR1BBVEhdOworCisJ CWFwcGx5X2Jnd29ya2VyX3NhdmVwb2ludF9uYW1lKE15U3Vic2NyaXB0aW9uLT5vaWQsIGN1cnJl bnRfeGlkLAorCQkJCQkJCQkJICBzcG5hbWUsIHNpemVvZihzcG5hbWUpKTsKKworCQllbG9nKERF QlVHMSwgIltBcHBseSBCR1cgIyV1XSBkZWZpbmluZyBzYXZlcG9pbnQgJXMiLAorCQkJIE15UGFy YWxsZWxTaGFyZWQtPndvcmtlcl9pZCwgc3BuYW1lKTsKKworCQlEZWZpbmVTYXZlcG9pbnQoc3Bu YW1lKTsKKworCQkvKgorCQkgKiBDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQgaXMgbmVlZGVkIHRv IHN0YXJ0IGEgc3VidHJhbnNhY3Rpb24gYWZ0ZXIKKwkJICogaXNzdWluZyBhIFNBVkVQT0lOVCBp bnNpZGUgYSB0cmFuc2FjdGlvbiBibG9jayhzZWUKKwkJICogU3RhcnRTdWJUcmFuc2FjdGlvbigp KS4KKwkJICovCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCW9sZGN0eCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQlzdWJ4YWN0bGlzdCA9IGxhcHBl bmRfaW50KHN1YnhhY3RsaXN0LCAoaW50KSBjdXJyZW50X3hpZCk7CisJCU1lbW9yeUNvbnRleHRT d2l0Y2hUbyhvbGRjdHgpOworCX0KK30KKworLyoKKyAqIEZvcm0gdGhlIHNhdmVwb2ludCBuYW1l IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKgorICogUmV0dXJuIHRoZSBuYW1lIGluIHRo ZSBzdXBwbGllZCBidWZmZXIuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3NhdmVwb2ludF9u YW1lKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCSAgY2hhciAqc3BuYW1l LCBpbnQgc3pzcCkKK3sKKwlzbnByaW50ZihzcG5hbWUsIHN6c3AsICJwZ19zcF8ldV8ldSIsIHN1 Ym9pZCwgeGlkKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmlu ZGV4IGM1YzZhMmIuLmQ0ZDUwOTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9k ZWNvZGUuYwpAQCAtNjUxLDkgKzY1MSwxMCBAQCBEZWNvZGVDb21taXQoTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYsCiAJewogCQlmb3IgKGkgPSAwOyBp IDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewotCQkJUmVvcmRlckJ1ZmZlckZvcmdldChj dHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sIGJ1Zi0+b3JpZ3B0cik7CisJCQlSZW9y ZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwgYnVmLT5v cmlncHRyLAorCQkJCQkJCQljb21taXRfdGltZSk7CiAJCX0KLQkJUmVvcmRlckJ1ZmZlckZvcmdl dChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyKTsKKwkJUmVvcmRlckJ1ZmZlckZvcmdl dChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyLCBjb21taXRfdGltZSk7CiAKIAkJcmV0 dXJuOwogCX0KQEAgLTgyMSwxMCArODIyLDExIEBAIERlY29kZUFib3J0KExvZ2ljYWxEZWNvZGlu Z0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCQlmb3IgKGkgPSAwOyBpIDwg cGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewogCQkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+ cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwKLQkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5k UmVjUHRyKTsKKwkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyLCBhYm9ydF90aW1lKTsK IAkJfQogCi0JCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNv cmQtPkVuZFJlY1B0cik7CisJCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhpZCwg YnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwKKwkJCQkJCSAgIGFib3J0X3RpbWUpOwogCX0KIAogCS8q IHVwZGF0ZSB0aGUgZGVjb2Rpbmcgc3RhdHMgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbGF1bmNoZXIuYwppbmRleCAzYmJkNTIyLi44MjVlNzU2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC01NCw2ICs1NCw3IEBACiAKIGludAkJ CW1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0OwogaW50CQkJbWF4X3N5bmNfd29y a2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMjsKK2ludAkJCW1heF9hcHBseV9iZ3dvcmtlcnNfcGVy X3N1YnNjcmlwdGlvbiA9IDI7CiAKIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtl ciA9IE5VTEw7CiAKQEAgLTczLDYgKzc0LDcgQEAgc3RhdGljIHZvaWQgbG9naWNhbHJlcF9sYXVu Y2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVw X3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBsb2dpY2Fs cmVwX3dvcmtlcl9kZXRhY2godm9pZCk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9j bGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CitzdGF0aWMgdm9pZCBsb2dpY2FscmVw X3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CiAKIHN0YXRp YyBib29sIG9uX2NvbW1pdF9sYXVuY2hlcl93YWtldXAgPSBmYWxzZTsKIApAQCAtMTUxLDggKzE1 MywxMCBAQCBnZXRfc3Vic2NyaXB0aW9uX2xpc3Qodm9pZCkKICAqCiAgKiBUaGlzIGlzIG9ubHkg bmVlZGVkIGZvciBjbGVhbmluZyB1cCB0aGUgc2hhcmVkIG1lbW9yeSBpbiBjYXNlIHRoZSB3b3Jr ZXIKICAqIGZhaWxzIHRvIGF0dGFjaC4KKyAqCisgKiBSZXR1cm4gd2hldGhlciB0aGUgYXR0YWNo IHdhcyBzdWNjZXNzZnVsLgogICovCi1zdGF0aWMgdm9pZAorc3RhdGljIGJvb2wKIFdhaXRGb3JS ZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAJCQkJCQkJ ICAgdWludDE2IGdlbmVyYXRpb24sCiAJCQkJCQkJICAgQmFja2dyb3VuZFdvcmtlckhhbmRsZSAq aGFuZGxlKQpAQCAtMTY4LDExICsxNzIsMTEgQEAgV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0 YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAogCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxS ZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCi0JCS8qIFdvcmtlciBlaXRoZXIgZGllZCBvciBo YXMgc3RhcnRlZDsgbm8gbmVlZCB0byBkbyBhbnl0aGluZy4gKi8KKwkJLyogV29ya2VyIGVpdGhl ciBkaWVkIG9yIGhhcyBzdGFydGVkLiBSZXR1cm4gZmFsc2UgaWYgZGllZC4gKi8KIAkJaWYgKCF3 b3JrZXItPmluX3VzZSB8fCB3b3JrZXItPnByb2MpCiAJCXsKIAkJCUxXTG9ja1JlbGVhc2UoTG9n aWNhbFJlcFdvcmtlckxvY2spOwotCQkJcmV0dXJuOworCQkJcmV0dXJuIHdvcmtlci0+aW5fdXNl OwogCQl9CiAKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CkBAIC0xODcs NyArMTkxLDcgQEAgV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3Jr ZXIgKndvcmtlciwKIAkJCWlmIChnZW5lcmF0aW9uID09IHdvcmtlci0+Z2VuZXJhdGlvbikKIAkJ CQlsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKHdvcmtlcik7CiAJCQlMV0xvY2tSZWxlYXNlKExv Z2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJCXJldHVybjsKKwkJCXJldHVybiBmYWxzZTsKIAkJfQog CiAJCS8qCkBAIC0yMjMsNiArMjI3LDEzIEBAIGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1 YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQogCXsKIAkJTG9naWNhbFJlcFdvcmtl ciAqdyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOwogCisJCS8qCisJCSAqIFdlIGFyZSBv bmx5IGludGVyZXN0ZWQgaW4gdGhlIG1haW4gYXBwbHkgd29ya2VyIG9yIHRhYmxlIHN5bmMgd29y a2VyCisJCSAqIGhlcmUuCisJCSAqLworCQlpZiAody0+bWFpbl93b3JrZXJfcGlkICE9IDApCisJ CQljb250aW51ZTsKKwogCQlpZiAody0+aW5fdXNlICYmIHctPnN1YmlkID09IHN1YmlkICYmIHct PnJlbGlkID09IHJlbGlkICYmCiAJCQkoIW9ubHlfcnVubmluZyB8fCB3LT5wcm9jKSkKIAkJewpA QCAtMjU5LDExICsyNzAsMTEgQEAgbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBi b29sIG9ubHlfcnVubmluZykKIH0KIAogLyoKLSAqIFN0YXJ0IG5ldyBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlciwgaWYgcG9zc2libGUuCisgKiBTdGFydCBuZXcgYmFja2dyb3VuZCB3b3JrZXIsIGlm IHBvc3NpYmxlLgogICovCi12b2lkCitib29sCiBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lk IGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKLQkJCQkJ CSBPaWQgcmVsaWQpCisJCQkJCQkgT2lkIHJlbGlkLCBkc21faGFuZGxlIHN1Yndvcmtlcl9kc20p CiB7CiAJQmFja2dyb3VuZFdvcmtlciBiZ3c7CiAJQmFja2dyb3VuZFdvcmtlckhhbmRsZSAqYmd3 X2hhbmRsZTsKQEAgLTI3Myw2ICsyODQsMTAgQEAgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9p ZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsIE9pZCB1c2VyaWQsCiAJTG9n aWNhbFJlcFdvcmtlciAqd29ya2VyID0gTlVMTDsKIAlpbnQJCQluc3luY3dvcmtlcnM7CiAJVGlt ZXN0YW1wVHogbm93OworCWJvb2wJCWlzX3N1YndvcmtlciA9IChzdWJ3b3JrZXJfZHNtICE9IERT TV9IQU5ETEVfSU5WQUxJRCk7CisKKwkvKiBTYW5pdHkgY2hlY2s6IHdlIGRvbid0IHN1cHBvcnQg dGFibGUgc3luYyBpbiBzdWJ3b3JrZXIuICovCisJQXNzZXJ0KCEoaXNfc3Vid29ya2VyICYmIE9p ZElzVmFsaWQocmVsaWQpKSk7CiAKIAllcmVwb3J0KERFQlVHMSwKIAkJCShlcnJtc2dfaW50ZXJu YWwoInN0YXJ0aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24g XCIlc1wiIiwKQEAgLTM1MCw3ICszNjUsNyBAQCByZXRyeToKIAlpZiAoT2lkSXNWYWxpZChyZWxp ZCkgJiYgbnN5bmN3b3JrZXJzID49IG1heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbikK IAl7CiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQlyZXR1cm47CisJ CXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKgpAQCAtMzY0LDcgKzM3OSw3IEBAIHJldHJ5OgogCQkJ CShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVy cm1zZygib3V0IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHNsb3RzIiksCiAJCQkJIGVy cmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9u X3dvcmtlcnMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogUHJl cGFyZSB0aGUgd29ya2VyIHNsb3QuICovCkBAIC0zNzksNiArMzk0LDcgQEAgcmV0cnk6CiAJd29y a2VyLT5yZWxzdGF0ZSA9IFNVQlJFTF9TVEFURV9VTktOT1dOOwogCXdvcmtlci0+cmVsc3RhdGVf bHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IE5VTEw7 CisJd29ya2VyLT5tYWluX3dvcmtlcl9waWQgPSBpc19zdWJ3b3JrZXIgPyBNeVByb2NQaWQgOiAw OwogCXdvcmtlci0+bGFzdF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAlUSU1FU1RBTVBfTk9C RUdJTih3b3JrZXItPmxhc3Rfc2VuZF90aW1lKTsKIAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXIt Pmxhc3RfcmVjdl90aW1lKTsKQEAgLTM5NiwxMCArNDEyLDE4IEBAIHJldHJ5OgogCQlCR1dPUktF Ul9CQUNLRU5EX0RBVEFCQVNFX0NPTk5FQ1RJT047CiAJYmd3LmJnd19zdGFydF90aW1lID0gQmdX b3JrZXJTdGFydF9SZWNvdmVyeUZpbmlzaGVkOwogCXNucHJpbnRmKGJndy5iZ3dfbGlicmFyeV9u YW1lLCBCR1dfTUFYTEVOLCAicG9zdGdyZXMiKTsKLQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9u X25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKworCWlmIChpc19zdWJ3b3Jr ZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5 Qmd3b3JrZXJNYWluIik7CisJZWxzZQorCQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUs IEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKwogCWlmIChPaWRJc1ZhbGlkKHJlbGlk KSkKIAkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAogCQkJCSAibG9naWNhbCBy ZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSBzeW5jICV1Iiwgc3ViaWQsIHJl bGlkKTsKKwllbHNlIGlmIChpc19zdWJ3b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwg QkdXX01BWExFTiwKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSIsIHN1YmlkKTsKIAllbHNlCiAJCXNucHJpbnRmKGJn dy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKIAkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vy IGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CkBAIC00MDksNiArNDMzLDkgQEAgcmV0cnk6 CiAJYmd3LmJnd19ub3RpZnlfcGlkID0gTXlQcm9jUGlkOwogCWJndy5iZ3dfbWFpbl9hcmcgPSBJ bnQzMkdldERhdHVtKHNsb3QpOwogCisJaWYgKGlzX3N1YndvcmtlcikKKwkJbWVtY3B5KGJndy5i Z3dfZXh0cmEsICZzdWJ3b3JrZXJfZHNtLCBzaXplb2YoZHNtX2hhbmRsZSkpOworCiAJaWYgKCFS ZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2VyKCZiZ3csICZiZ3dfaGFuZGxlKSkKIAl7CiAJ CS8qIEZhaWxlZCB0byBzdGFydCB3b3JrZXIsIHNvIGNsZWFuIHVwIHRoZSB3b3JrZXIgc2xvdC4g Ki8KQEAgLTQyMSwxMSArNDQ4LDExIEBAIHJldHJ5OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09O RklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygib3V0IG9mIGJhY2tncm91 bmQgd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3Jl YXNlIG1heF93b3JrZXJfcHJvY2Vzc2VzLiIpKSk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNl OwogCX0KIAogCS8qIE5vdyB3YWl0IHVudGlsIGl0IGF0dGFjaGVzLiAqLwotCVdhaXRGb3JSZXBs aWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdlbmVyYXRpb24sIGJnd19oYW5kbGUpOworCXJl dHVybiBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2VyLCBnZW5lcmF0aW9uLCBi Z3dfaGFuZGxlKTsKIH0KIAogLyoKQEAgLTQzNiwxOSArNDYzLDMxIEBAIHZvaWQKIGxvZ2ljYWxy ZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiB7CiAJTG9naWNhbFJlcFdvcmtl ciAqd29ya2VyOwotCXVpbnQxNgkJZ2VuZXJhdGlvbjsKIAogCUxXTG9ja0FjcXVpcmUoTG9naWNh bFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAKIAl3b3JrZXIgPSBsb2dpY2FscmVwX3dvcmtl cl9maW5kKHN1YmlkLCByZWxpZCwgZmFsc2UpOwogCi0JLyogTm8gd29ya2VyLCBub3RoaW5nIHRv IGRvLiAqLwotCWlmICghd29ya2VyKQorCWlmICh3b3JrZXIpCiAJewotCQlMV0xvY2tSZWxlYXNl KExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOworCQlBc3NlcnQod29ya2VyLT5tYWlu X3dvcmtlcl9waWQgPT0gMCk7CisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwod29y a2VyKTsKIAl9CiAKKwlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKK30KKwor LyoKKyAqIFdvcmtob3JzZSBmb3IgbG9naWNhbHJlcF93b3JrZXJfc3RvcCgpIGFuZCBsb2dpY2Fs cmVwX3dvcmtlcl9kZXRhY2goKS4gU3RvcAorICogdGhlIHdvcmtlciBhbmQgd2FpdCBmb3IgaXQg dG8gZGllLgorICovCitzdGF0aWMgdm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5h bChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCit7CisJdWludDE2CQlnZW5lcmF0aW9uOworCisJ QXNzZXJ0KExXTG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7CisKIAkvKgogCSAq IFJlbWVtYmVyIHdoaWNoIGdlbmVyYXRpb24gd2FzIG91ciB3b3JrZXIgc28gd2UgY2FuIGNoZWNr IGlmIHdoYXQgd2Ugc2VlCiAJICogaXMgc3RpbGwgdGhlIHNhbWUgb25lLgpAQCAtNDg1LDEwICs1 MjQsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCQkg KiBkaWZmZXJlbnQsIG1lYW5pbmcgdGhhdCBhIGRpZmZlcmVudCB3b3JrZXIgaGFzIHRha2VuIHRo ZSBzbG90LgogCQkgKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3JrZXItPmdlbmVyYXRp b24gIT0gZ2VuZXJhdGlvbikKLQkJewotCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2Vy TG9jayk7CiAJCQlyZXR1cm47Ci0JCX0KIAogCQkvKiBXb3JrZXIgaGFzIGFzc2lnbmVkIHByb2Ms IHNvIGl0IGhhcyBzdGFydGVkLiAqLwogCQlpZiAod29ya2VyLT5wcm9jKQpAQCAtNTIyLDggKzU1 OCw2IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAKIAkJ TFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIAl9Ci0KLQlM V0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKIH0KIAogLyoKQEAgLTU5OSw2ICs2 MzMsMjkgQEAgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KQogc3RhdGljIHZvaWQK IGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKQogeworCS8qCisJICogVGhpcyBpcyB0aGUg bWFpbiBhcHBseSB3b3JrZXIsIHN0b3AgYWxsIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMK KwkgKiBwcmV2aW91c2x5IHN0YXJ0ZWQgZnJvbSBoZXJlLgorCSAqLworCWlmIChNeUxvZ2ljYWxS ZXBXb3JrZXItPm1haW5fd29ya2VyX3BpZCA9PSAwKQorCXsKKwkJTGlzdAkgICAqd29ya2VyczsK KwkJTGlzdENlbGwgICAqbGM7CisKKwkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9j aywgTFdfU0hBUkVEKTsKKworCQl3b3JrZXJzID0gbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSk7CisJCWZvcmVhY2gobGMsIHdvcmtlcnMpCisJ CXsKKwkJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAoTG9naWNhbFJlcFdvcmtlciAqKSBsZmlyc3Qo bGMpOworCisJCQlpZiAody0+bWFpbl93b3JrZXJfcGlkICE9IDApCisJCQkJbG9naWNhbHJlcF93 b3JrZXJfc3RvcF9pbnRlcm5hbCh3KTsKKwkJfQorCisJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJl cFdvcmtlckxvY2spOworCX0KKwogCS8qIEJsb2NrIGNvbmN1cnJlbnQgYWNjZXNzLiAqLwogCUxX TG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX0VYQ0xVU0lWRSk7CiAKQEAgLTYy MSw2ICs2NzgsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIg KndvcmtlcikKIAl3b3JrZXItPnVzZXJpZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5zdWJpZCA9 IEludmFsaWRPaWQ7CiAJd29ya2VyLT5yZWxpZCA9IEludmFsaWRPaWQ7CisJd29ya2VyLT5tYWlu X3dvcmtlcl9waWQgPSAwOwogfQogCiAvKgpAQCAtNjgwLDYgKzczOCwzMyBAQCBsb2dpY2FscmVw X3N5bmNfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKIH0KIAogLyoKKyAqIENvdW50IHRoZSBudW1i ZXIgb2YgcmVnaXN0ZXJlZCAoYnV0IG5vdCBuZWNlc3NhcmlseSBydW5uaW5nKSBhcHBseQorICog YmFja2dyb3VuZCB3b3JrZXJzIGZvciBhIHN1YnNjcmlwdGlvbi4KKyAqLworaW50Citsb2dpY2Fs cmVwX2FwcGx5X2Jnd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKK3sKKwlpbnQJCQlpOworCWludAkJ CXJlcyA9IDA7CisKKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9naWNhbFJlcFdvcmtlckxvY2sp KTsKKworCS8qCisJICogU2NhbiBhbGwgYXR0YWNoZWQgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJz LCBvbmx5IGNvdW50aW5nIHRob3NlIHdoaWNoCisJICogaGF2ZSB0aGUgZ2l2ZW4gc3Vic2NyaXB0 aW9uIGlkLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93 b3JrZXJzOyBpKyspCisJeworCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBDdHgt PndvcmtlcnNbaV07CisKKwkJaWYgKHctPnN1YmlkID09IHN1YmlkICYmIHctPm1haW5fd29ya2Vy X3BpZCAhPSAwKQorCQkJcmVzKys7CisJfQorCisJcmV0dXJuIHJlczsKK30KKworLyoKICAqIEFw cGx5TGF1bmNoZXJTaG1lbVNpemUKICAqCQlDb21wdXRlIHNwYWNlIG5lZWRlZCBmb3IgcmVwbGlj YXRpb24gbGF1bmNoZXIgc2hhcmVkIG1lbW9yeQogICovCkBAIC04NjgsNyArOTUzLDcgQEAgQXBw bHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCQkJCXdhaXRfdGltZSA9IHdhbF9yZXRy aWV2ZV9yZXRyeV9pbnRlcnZhbDsKIAogCQkJCQlsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goc3Vi LT5kYmlkLCBzdWItPm9pZCwgc3ViLT5uYW1lLAotCQkJCQkJCQkJCQkgc3ViLT5vd25lciwgSW52 YWxpZE9pZCk7CisJCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lkLCBEU01fSEFORExF X0lOVkFMSUQpOwogCQkJCX0KIAkJCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9vcmlnaW4uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv b3JpZ2luLmMKaW5kZXggYzcyYWQ2Yi4uNjdmMmQ0NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL29yaWdpbi5jCkBAIC0xMDc1LDEyICsxMDc1LDIxIEBAIFJlcGxpY2F0aW9uT3Jp Z2luRXhpdENsZWFudXAoaW50IGNvZGUsIERhdHVtIGFyZykKICAqIGFycmF5IGRvZXNuJ3QgaGF2 ZSB0byBiZSBzZWFyY2hlZCB3aGVuIGNhbGxpbmcKICAqIHJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZh bmNlKCkuCiAgKgotICogT2J2aW91c2x5IG9ubHkgb25lIHN1Y2ggY2FjaGVkIG9yaWdpbiBjYW4g ZXhpc3QgcGVyIHByb2Nlc3MgYW5kIHRoZSBjdXJyZW50CisgKiBOb3JtYWxseSBvbmx5IG9uZSBz dWNoIGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0IHBlciBwcm9jZXNzIGFuZCB0aGUgY3VycmVudAog ICogY2FjaGVkIHZhbHVlIGNhbiBvbmx5IGJlIHNldCBhZ2FpbiBhZnRlciB0aGUgcHJldmlvdXMg dmFsdWUgaXMgdG9ybiBkb3duCiAgKiB3aXRoIHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCgpLgor ICoKKyAqIEhvd2V2ZXIsIGlmIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgJ2FjcXVpcmVkX2J5JyBp cyBub3QgMCwgd2UgYWxsb3cgdGhlCisgKiBwcm9jZXNzIHRvIHVzZSB0aGUgc2FtZSBzbG90IGFs cmVhZHkgYWNxdWlyZWQgYnkgYW5vdGhlciBwcm9jZXNzLiBJdCdzIHNhZmUKKyAqIGJlY2F1c2Ug MSkgVGhlIG9ubHkgY2FsbGVyIChhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMpIHdpbGwgbWFpbnRh aW4gdGhlCisgKiBjb21taXQgb3JkZXIgYnkgYWxsb3dpbmcgb25seSBvbmUgcHJvY2VzcyB0byBj b21taXQgYXQgYSB0aW1lLCBzbyBubyB0d28KKyAqIHdvcmtlcnMgd2lsbCBiZSBvcGVyYXRpbmcg b24gdGhlIHNhbWUgb3JpZ2luIGF0IHRoZSBzYW1lIHRpbWUgKHNlZSBjb21tZW50cworICogaW4g bG9naWNhbC93b3JrZXIuYykuIDIpIEV2ZW4gdGhvdWdoIHdlIHRyeSB0byBhZHZhbmNlIHRoZSBz ZXNzaW9uJ3Mgb3JpZ2luCisgKiBjb25jdXJyZW50bHksIGl0J3Mgc2FmZSB0byBkbyBzbyBhcyB3 ZSBjaGFuZ2UvYWR2YW5jZSB0aGUgc2Vzc2lvbl9vcmlnaW4KKyAqIExTTnMgdW5kZXIgcmVwbGlj YXRlX3N0YXRlIExXTG9jay4KICAqLwogdm9pZAotcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJl cE9yaWdpbklkIG5vZGUpCityZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9k ZSwgaW50IGFjcXVpcmVkX2J5KQogewogCXN0YXRpYyBib29sIHJlZ2lzdGVyZWRfY2xlYW51cDsK IAlpbnQJCQlpOwpAQCAtMTEyMiw3ICsxMTMxLDcgQEAgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVw KFJlcE9yaWdpbklkIG5vZGUpCiAJCWlmIChjdXJzdGF0ZS0+cm9pZGVudCAhPSBub2RlKQogCQkJ Y29udGludWU7CiAKLQkJZWxzZSBpZiAoY3Vyc3RhdGUtPmFjcXVpcmVkX2J5ICE9IDApCisJCWVs c2UgaWYgKGN1cnN0YXRlLT5hY3F1aXJlZF9ieSAhPSAwICYmIGFjcXVpcmVkX2J5ID09IDApCiAJ CXsKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX0lOX1VT RSksCkBAIC0xMTUzLDcgKzExNjIsMTEgQEAgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9y aWdpbklkIG5vZGUpCiAKIAlBc3NlcnQoc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+cm9pZGVu dCAhPSBJbnZhbGlkUmVwT3JpZ2luSWQpOwogCi0Jc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+ YWNxdWlyZWRfYnkgPSBNeVByb2NQaWQ7CisJaWYgKGFjcXVpcmVkX2J5ID09IDApCisJCXNlc3Np b25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID0gTXlQcm9jUGlkOworCWVsc2UgaWYg KHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID09IDApCisJCSBlbG9nKEVS Uk9SLCAiY291bGQgbm90IGZpbmQgcmVwbGljYXRpb24gc3RhdGUgc2xvdCBmb3IgcmVwbGljYXRp b24iCisJCQkgICJvcmlnaW4gd2l0aCBPSUQgJXUgd2hpY2ggd2FzIGFjcXVpcmVkIGJ5ICVkIiwg bm9kZSwgYWNxdWlyZWRfYnkpOwogCiAJTFdMb2NrUmVsZWFzZShSZXBsaWNhdGlvbk9yaWdpbkxv Y2spOwogCkBAIC0xMzM3LDcgKzEzNTAsNyBAQCBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lv bl9zZXR1cChQR19GVU5DVElPTl9BUkdTKQogCiAJbmFtZSA9IHRleHRfdG9fY3N0cmluZygodGV4 dCAqKSBEYXR1bUdldFBvaW50ZXIoUEdfR0VUQVJHX0RBVFVNKDApKSk7CiAJb3JpZ2luID0gcmVw bG9yaWdpbl9ieV9uYW1lKG5hbWUsIGZhbHNlKTsKLQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAo b3JpZ2luKTsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luLCAwKTsKIAogCXJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW47CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvcHJvdG8uYwppbmRleCBmZjg1MTNlLi40N2JkODExIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9wcm90by5jCkBAIC0xMTYzLDMxICsxMTYzLDU2IEBAIGxvZ2ljYWxyZXBf cmVhZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBDb21taXREYXRhICpj b21taXRfZGF0YSkKIC8qCiAgKiBXcml0ZSBTVFJFQU0gQUJPUlQgdG8gdGhlIG91dHB1dCBzdHJl YW0uIE5vdGUgdGhhdCB4aWQgYW5kIHN1YnhpZCB3aWxsIGJlCiAgKiBzYW1lIGZvciB0aGUgdG9w LWxldmVsIHRyYW5zYWN0aW9uIGFib3J0LgorICoKKyAqIElmIHdyaXRlX2Fib3J0X2xzbiBpcyB0 cnVlLCBzZW5kIHRoZSBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUgZmllbGRzLAorICogb3RoZXJ3 aXNlIGRvbid0LgogICovCiB2b2lkCiBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJp bmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1 YnhpZCkKKwkJCQkJCQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBhYm9ydF9s c24sCisJCQkJCQkJICBib29sIHdyaXRlX2Fib3J0X2xzbikKIHsKIAlwcV9zZW5kYnl0ZShvdXQs IExPR0lDQUxfUkVQX01TR19TVFJFQU1fQUJPUlQpOwogCi0JQXNzZXJ0KFRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHhpZCkgJiYgVHJhbnNhY3Rpb25JZElzVmFsaWQoc3VieGlkKSk7CisJQXNzZXJ0KFRy YW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkgJiYgVHJhbnNhY3Rpb25JZElzVmFsaWQodHhuLT54aWQp KTsKIAogCS8qIHRyYW5zYWN0aW9uIElEICovCiAJcHFfc2VuZGludDMyKG91dCwgeGlkKTsKLQlw cV9zZW5kaW50MzIob3V0LCBzdWJ4aWQpOworCXBxX3NlbmRpbnQzMihvdXQsIHR4bi0+eGlkKTsK KworCWlmICh3cml0ZV9hYm9ydF9sc24pCisJeworCQlwcV9zZW5kaW50NjQob3V0LCBhYm9ydF9s c24pOworCQlwcV9zZW5kaW50NjQob3V0LCB0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lKTsKKwl9 CiB9CiAKIC8qCiAgKiBSZWFkIFNUUkVBTSBBQk9SVCBmcm9tIHRoZSBvdXRwdXQgc3RyZWFtLgor ICoKKyAqIElmIHJlYWRfYWJvcnRfbHNuIGlzIHRydWUsIHRyeSB0byByZWFkIHRoZSBhYm9ydF9s c24gYW5kIGFib3J0X3RpbWUgZmllbGRzLAorICogb3RoZXJ3aXNlIGRvbid0LgogICovCiB2b2lk Ci1sb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9u SWQgKnhpZCwKLQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqc3VieGlkKQorbG9naWNhbHJlcF9yZWFk X3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLAorCQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJv cnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJCSBib29sIHJlYWRfYWJvcnRfbHNuKQogewotCUFz c2VydCh4aWQgJiYgc3VieGlkKTsKKwlBc3NlcnQoYWJvcnRfZGF0YSk7CiAKLQkqeGlkID0gcHFf Z2V0bXNnaW50KGluLCA0KTsKLQkqc3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwlhYm9y dF9kYXRhLT54aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCWFib3J0X2RhdGEtPnN1YnhpZCA9 IHBxX2dldG1zZ2ludChpbiwgNCk7CisKKwlpZiAocmVhZF9hYm9ydF9sc24pCisJeworCQlhYm9y dF9kYXRhLT5hYm9ydF9sc24gPSBwcV9nZXRtc2dpbnQ2NChpbik7CisJCWFib3J0X2RhdGEtPmFi b3J0X3RpbWUgPSBwcV9nZXRtc2dpbnQ2NChpbik7CisJfQorCWVsc2UKKwl7CisJCWFib3J0X2Rh dGEtPmFib3J0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCQlhYm9ydF9kYXRhLT5hYm9ydF90 aW1lID0gMDsKKwl9CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcmVvcmRlcmJ1ZmZlci5jCmluZGV4IDg4YTM3ZmQuLjg5ODkzMjggMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0yODI2LDcgKzI4 MjYsOCBAQCBSZW9yZGVyQnVmZmVyRmluaXNoUHJlcGFyZWQoUmVvcmRlckJ1ZmZlciAqcmIsIFRy YW5zYWN0aW9uSWQgeGlkLAogICogZGlzay4KICAqLwogdm9pZAotUmVvcmRlckJ1ZmZlckFib3J0 KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCitS ZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBY TG9nUmVjUHRyIGxzbiwKKwkJCQkgICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lKQogewogCVJlb3Jk ZXJCdWZmZXJUWE4gKnR4bjsKIApAQCAtMjgzNyw2ICsyODM4LDggQEAgUmVvcmRlckJ1ZmZlckFi b3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24p CiAJaWYgKHR4biA9PSBOVUxMKQogCQlyZXR1cm47CiAKKwl0eG4tPnhhY3RfdGltZS5hYm9ydF90 aW1lID0gYWJvcnRfdGltZTsKKwogCS8qIEZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgbm90aWZ5 IHRoZSByZW1vdGUgbm9kZSBhYm91dCB0aGUgYWJvcnQuICovCiAJaWYgKHJidHhuX2lzX3N0cmVh bWVkKHR4bikpCiAJewpAQCAtMjkxMSw3ICsyOTE0LDggQEAgUmVvcmRlckJ1ZmZlckFib3J0T2xk KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIG9sZGVzdFJ1bm5pbmdYaWQpCiAgKiB0 byB0aGlzIHhpZCBtaWdodCByZS1jcmVhdGUgdGhlIHRyYW5zYWN0aW9uIGluY29tcGxldGVseS4K ICAqLwogdm9pZAotUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNh Y3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQorUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVy QnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCQlUaW1l c3RhbXBUeiBhYm9ydF90aW1lKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnR4bjsKIApAQCAtMjky Miw2ICsyOTI2LDggQEAgUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICpyYiwgVHJh bnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCWlmICh0eG4gPT0gTlVMTCkKIAkJcmV0 dXJuOwogCisJdHhuLT54YWN0X3RpbWUuYWJvcnRfdGltZSA9IGFib3J0X3RpbWU7CisKIAkvKiBG b3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zIG5vdGlmeSB0aGUgcmVtb3RlIG5vZGUgYWJvdXQgdGhl IGFib3J0LiAqLwogCWlmIChyYnR4bl9pc19zdHJlYW1lZCh0eG4pKQogCQlyYi0+c3RyZWFtX2Fi b3J0KHJiLCB0eG4sIGxzbik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJs ZXN5bmMuYwppbmRleCA2YTAxZmZkLi4yOTliZGM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTU2OCw3ICs1NjgsOCBAQCBwcm9jZXNzX3N5bmNp bmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogCQkJCQkJCQkJCQkJ IE15U3Vic2NyaXB0aW9uLT5vaWQsCiAJCQkJCQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPm5hbWUs CiAJCQkJCQkJCQkJCQkgTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCi0JCQkJCQkJCQkJCQkg cnN0YXRlLT5yZWxpZCk7CisJCQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxpZCwKKwkJCQkJCQkJCQkJ CSBEU01fSEFORExFX0lOVkFMSUQpOwogCQkJCQkJaGVudHJ5LT5sYXN0X3N0YXJ0X3RpbWUgPSBu b3c7CiAJCQkJCX0KIAkJCQl9CkBAIC01ODksNiArNTkwLDkgQEAgcHJvY2Vzc19zeW5jaW5nX3Rh Ymxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHZvaWQKIHByb2Nlc3Nfc3lu Y2luZ190YWJsZXMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHsKKwlpZiAoYW1fYXBwbHlfYmd3 b3JrZXIoKSkKKwkJcmV0dXJuOworCiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJcHJv Y2Vzc19zeW5jaW5nX3RhYmxlc19mb3Jfc3luYyhjdXJyZW50X2xzbik7CiAJZWxzZQpAQCAtMTI3 Myw3ICsxMjc3LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdp bl9zdGFydHBvcykKIAkJICogdGltZSB0aGlzIHRhYmxlc3luYyB3YXMgbGF1bmNoZWQuCiAJCSAq LwogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCBmYWxzZSk7Ci0J CXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lv bl9zZXR1cChvcmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmln aW5pZDsKIAkJKm9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jl c3MoZmFsc2UpOwogCkBAIC0xMzg0LDcgKzEzODgsNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3Rh cnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkJCQkJICAgdHJ1ZSAvKiBnbyBiYWNr d2FyZCAqLyAsIHRydWUgLyogV0FMIGxvZyAqLyApOwogCQlVbmxvY2tSZWxhdGlvbk9pZChSZXBs aWNhdGlvbk9yaWdpblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCi0JCXJlcGxvcmln aW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChv cmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAl9 CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggNWY4 YzU0MS4uMzVkMTk5MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j CkBAIC0yMiw4ICsyMiwyOCBAQAogICogU1RSRUFNRUQgVFJBTlNBQ1RJT05TCiAgKiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAqIFN0cmVhbWVkIHRyYW5zYWN0aW9ucyAobGFyZ2UgdHJhbnNhY3Rp b25zIGV4Y2VlZGluZyBhIG1lbW9yeSBsaW1pdCBvbiB0aGUKLSAqIHVwc3RyZWFtKSBhcmUgbm90 IGFwcGxpZWQgaW1tZWRpYXRlbHksIGJ1dCBpbnN0ZWFkLCB0aGUgZGF0YSBpcyB3cml0dGVuCi0g KiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBhdCBvbmNlIHdoZW4gdGhlIGZp bmFsIGNvbW1pdCBhcnJpdmVzLgorICogdXBzdHJlYW0pIGFyZSBhcHBsaWVkIHVzaW5nIG9uZSBv ZiB0d28gYXBwcm9hY2hlczoKKyAqCisgKiAxKSBTZXBhcmF0ZSBiYWNrZ3JvdW5kIHdvcmtlcnMK KyAqCisgKiBJZiBzdHJlYW1pbmcgPSBwYXJhbGxlbCwgd2UgYXNzaWduIGEgbmV3IGFwcGx5IGJh Y2tncm91bmQgd29ya2VyIChpZgorICogYXZhaWxhYmxlKSBhcyBzb29uIGFzIHRoZSB4YWN0J3Mg Zmlyc3Qgc3RyZWFtIGlzIHJlY2VpdmVkLiBUaGUgbWFpbiBhcHBseQorICogd29ya2VyIHdpbGwg c2VuZCBjaGFuZ2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gV2Uga2Vl cCB0aGlzCisgKiB3b3JrZXIgYXNzaWduZWQgdGlsbCB0aGUgdHJhbnNhY3Rpb24gY29tbWl0IGlz IHJlY2VpdmVkIGFuZCBhbHNvIHdhaXQgZm9yCisgKiB0aGUgd29ya2VyIHRvIGZpbmlzaCBhdCBj b21taXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBvcmRlcmluZyBhbmQgYXZvaWRzCisgKiBmaWxl IEkvTyBpbiBtb3N0IGNhc2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIHRvIGEgZmlsZSBpZiB0 aGVyZSBpcyBubworICogd29ya2VyIGF2YWlsYWJsZS4gSXQgaXMgaW1wb3J0YW50IHRvIG1haW50 YWluIGNvbW1pdCBvcmRlciB0byBhdm9pZCBmYWlsdXJlcworICogZHVlIHRvIChhKSB0cmFuc2Fj dGlvbiBkZXBlbmRlbmNpZXMsIHNheSBpZiB3ZSBpbnNlcnQgYSByb3cgaW4gdGhlIGZpcnN0Cisg KiB0cmFuc2FjdGlvbiBhbmQgdXBkYXRlIGl0IGluIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gdGhl biBhbGxvd2luZyB0byBhcHBseQorICogYm90aCBpbiBwYXJhbGxlbCBjYW4gbGVhZCB0byBmYWls dXJlIGluIHRoZSB1cGRhdGUuIChiKSBkZWFkbG9ja3MsIGFsbG93aW5nCisgKiB0cmFuc2FjdGlv bnMgdGhhdCB1cGRhdGUgdGhlIHNhbWUgc2V0IG9mIHJvd3MvdGFibGVzIGluIG9wcG9zaXRlIG9y ZGVyIHRvIGJlCisgKiBhcHBsaWVkIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvIGRlYWRsb2Nrcy4K KyAqCisgKiAyKSBXcml0ZSB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGx5IHdoZW4gdGhlIGZp bmFsIGNvbW1pdCBhcnJpdmVzCisgKgorICogSWYgbm8gd29ya2VyIGlzIGF2YWlsYWJsZSB0byBo YW5kbGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24sIHRoZSBkYXRhIGlzCisgKiB3cml0dGVuIHRvIHRl bXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0aGUgZmluYWwgY29t bWl0CisgKiBhcnJpdmVzLgogICoKICAqIFVubGlrZSB0aGUgcmVndWxhciAobm9uLXN0cmVhbWVk KSBjYXNlLCBoYW5kbGluZyBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgaGFzCiAgKiB0byBoYW5kbGUg YWJvcnRzIG9mIGJvdGggdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uIGFuZCBzdWJ0cmFuc2FjdGlv bnMuIFRoaXMKQEAgLTIxOSwyMCArMjM5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwbHlFeGVjdXRp b25EYXRhCiAJUGFydGl0aW9uVHVwbGVSb3V0aW5nICpwcm91dGU7CS8qIHBhcnRpdGlvbiByb3V0 aW5nIGluZm8gKi8KIH0gQXBwbHlFeGVjdXRpb25EYXRhOwogCi0vKiBTdHJ1Y3QgZm9yIHNhdmlu ZyBhbmQgcmVzdG9yaW5nIGFwcGx5IGVycmNvbnRleHQgaW5mb3JtYXRpb24gKi8KLXR5cGVkZWYg c3RydWN0IEFwcGx5RXJyb3JDYWxsYmFja0FyZwotewotCUxvZ2ljYWxSZXBNc2dUeXBlIGNvbW1h bmQ7CS8qIDAgaWYgaW52YWxpZCAqLwotCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsOwotCi0J LyogUmVtb3RlIG5vZGUgaW5mb3JtYXRpb24gKi8KLQlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAt MSBpZiBpbnZhbGlkICovCi0JVHJhbnNhY3Rpb25JZCByZW1vdGVfeGlkOwotCVhMb2dSZWNQdHIJ ZmluaXNoX2xzbjsKLQljaGFyCSAgICpvcmlnaW5fbmFtZTsKLX0gQXBwbHlFcnJvckNhbGxiYWNr QXJnOwotCi1zdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNr X2FyZyA9CisvKiBlcnJjb250ZXh0IHRyYWNrZXIgKi8KK0FwcGx5RXJyb3JDYWxsYmFja0FyZyBh cHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQogewogCS5jb21tYW5kID0gMCwKIAkucmVsID0gTlVM TCwKQEAgLTI0Miw3ICsyNTAsNyBAQCBzdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5 X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiAJLm9yaWdpbl9uYW1lID0gTlVMTCwKIH07CiAKLXN0YXRp YyBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOworTWVtb3J5Q29udGV4 dCBBcHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsKIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0 ID0gTlVMTDsKIAogLyogcGVyIHN0cmVhbSBjb250ZXh0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rp b25zICovCkBAIC0yNTEsMjcgKzI1OSwzOSBAQCBzdGF0aWMgTWVtb3J5Q29udGV4dCBMb2dpY2Fs U3RyZWFtaW5nQ29udGV4dCA9IE5VTEw7CiBXYWxSZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtlcldh bFJjdkNvbm4gPSBOVUxMOwogCiBTdWJzY3JpcHRpb24gKk15U3Vic2NyaXB0aW9uID0gTlVMTDsK LXN0YXRpYyBib29sIE15U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsKK2Jvb2wgTXlTdWJzY3Jp cHRpb25WYWxpZCA9IGZhbHNlOwogCiBib29sCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxz ZTsKIHN0YXRpYyBYTG9nUmVjUHRyIHJlbW90ZV9maW5hbF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0 cjsKIAogLyogZmllbGRzIHZhbGlkIG9ubHkgd2hlbiBwcm9jZXNzaW5nIHN0cmVhbWVkIHRyYW5z YWN0aW9uICovCi1zdGF0aWMgYm9vbCBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOwor Ym9vbCBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCitUcmFuc2FjdGlvbklkIHN0 cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKK3N0YXRpYyBBcHBseUJnd29ya2VySW5m byAqc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CiAKLXN0YXRpYyBUcmFuc2FjdGlvbklkIHN0 cmVhbV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKy8qIENoZWNrIGlmIHdlIGFyZSBhcHBs eWluZyB0aGUgdHJhbnNhY3Rpb24gaW4gYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgKi8KKyNk ZWZpbmUgYXBwbHlfYmd3b3JrZXJfYWN0aXZlKCkgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uICYm IHN0cmVhbV9hcHBseV93b3JrZXIgIT0gTlVMTCkKKworLyoKKyAqIFRoZSBudW1iZXIgb2YgY2hh bmdlcyBkdXJpbmcgb25lIHN0cmVhbWluZyBibG9jayAob25seSBmb3IgYXBwbHkgYmFja2dyb3Vu ZAorICogd29ya2VycykKKyAqLworc3RhdGljIHVpbnQzMiBuY2hhbmdlcyA9IDA7CiAKIC8qCiAg KiBXZSBlbmFibGUgc2tpcHBpbmcgYWxsIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VS VCwgVVBEQVRFLCBldGMuKSBmb3IKICAqIHRoZSBzdWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0 cmFuc2FjdGlvbidzIGZpbmlzaCBMU04gbWF0Y2hlcyB0aGUgc3Vic2tpcGxzbi4KICAqIE9uY2Ug d2Ugc3RhcnQgc2tpcHBpbmcgY2hhbmdlcywgd2UgZG9uJ3Qgc3RvcCBpdCB1bnRpbCB3ZSBza2lw IGFsbCBjaGFuZ2VzIG9mCiAgKiB0aGUgdHJhbnNhY3Rpb24gZXZlbiBpZiBwZ19zdWJzY3JpcHRp b24gaXMgdXBkYXRlZCBhbmQgTXlTdWJzY3JpcHRpb24tPnNraXBsc24KLSAqIGdldHMgY2hhbmdl ZCBvciByZXNldCBkdXJpbmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNh c2VzLCB3ZQotICogZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2Vz IHNpbmNlIHdlIGRlY2lkZSB3aGV0aGVyIG9yIG5vdAorICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0 IGR1cmluZyB0aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMgKHN0cmVh bWluZyA9IG9uKSwKKyAqIHdlIGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUg Y2hhbmdlcyBzaW5jZSB3ZSBkZWNpZGUgd2hldGhlciBvciBub3QKICAqIHRvIHNraXAgYXBwbHlp bmcgdGhlIGNoYW5nZXMgd2hlbiBzdGFydGluZyB0byBhcHBseSBjaGFuZ2VzLiBUaGUgc3Vic2tp cGxzbiBpcwogICogY2xlYXJlZCBhZnRlciBzdWNjZXNzZnVsbHkgc2tpcHBpbmcgdGhlIHRyYW5z YWN0aW9uIG9yIGFwcGx5aW5nIG5vbi1lbXB0eQogICogdHJhbnNhY3Rpb24uIFRoZSBsYXR0ZXIg cHJldmVudHMgdGhlIG1pc3Rha2VubHkgc3BlY2lmaWVkIHN1YnNraXBsc24gZnJvbQotICogYmVp bmcgbGVmdC4KKyAqIGJlaW5nIGxlZnQuIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc2tpcCB0aGUgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9ucyB3aGVuIHVzaW5nCisgKiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl cnMgYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHRoZSBmaW5pc2ggTFNOIGJlZm9yZQorICogYXBwbHlp bmcgdGhlIGNoYW5nZXMuCiAgKi8KIHN0YXRpYyBYTG9nUmVjUHRyIHNraXBfeGFjdF9maW5pc2hf bHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAjZGVmaW5lIGlzX3NraXBwaW5nX2NoYW5nZXMoKSAo dW5saWtlbHkoIVhMb2dSZWNQdHJJc0ludmFsaWQoc2tpcF94YWN0X2ZpbmlzaF9sc24pKSkKQEAg LTMyNCw5ICszNDQsNiBAQCBzdGF0aWMgdm9pZCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZv aWQpOwogCiBzdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsKIAot LyogcHJvdG90eXBlIG5lZWRlZCBiZWNhdXNlIG9mIHN0cmVhbV9jb21taXQgKi8KLXN0YXRpYyB2 b2lkIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcyk7Ci0KIHN0YXRpYyB2b2lkIGFwcGx5X2hh bmRsZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsK IHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25E YXRhICplZGF0YSwKIAkJCQkJCQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKQEAgLTM1OSw3 ICszNzYsNiBAQCBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9pZCk7CiBzdGF0 aWMgdm9pZCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNu KTsKIAogLyogRnVuY3Rpb25zIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLwotc3RhdGljIHZv aWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBz ZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRy IGxzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZv KHZvaWQpOwogCkBAIC0zNzUsMTIgKzM5MSwzNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRf YXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpOwogICogcmVjb3JkICsgMSAoaWUgc3RhcnQg b2YgbmV4dCByZWNvcmQpIGFuZCBuZXh0IHJlY29yZCBjYW4gYmUgQ09NTUlUIG9mCiAgKiB0cmFu c2FjdGlvbiB3ZSBhcmUgbm93IHByb2Nlc3NpbmcgKHdoaWNoIGlzIHdoYXQgd2Ugc2V0IHJlbW90 ZV9maW5hbF9sc24KICAqIHRvIGluIGFwcGx5X2hhbmRsZV9iZWdpbikuCisgKgorICogTm90ZSB0 aGF0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgaXMgYmVpbmcgYXBwbGllZCBpbiBh cHBseQorICogYmFja2dyb3VuZCB3b3JrZXIsIHdlIGRpc2FsbG93IGFwcGx5aW5nIGNoYW5nZXMg b24gYSB0YWJsZSB0aGF0IGlzIG5vdCBpbgorICogdGhlIFJFQURZIHN0YXRlLCBiZWNhdXNlIHdl IGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGFzIHdlCisgKiB3b24n dCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdCB0aW1lLgorICoKKyAqIFdlIGFscmVhZHkg Y2hlY2tlZCB0aGlzIGluIGFwcGx5X2Jnd29ya2VyX2Nhbl9zdGFydCgpIGJlZm9yZSBhc3NpZ25p bmcgdGhlCisgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gdGhlIGJhY2tncm91bmQgd29ya2Vy LCBidXQgaXQgYWxzbyBuZWVkcyB0byBiZQorICogY2hlY2tlZCBoZXJlIGJlY2F1c2UgaWYgdGhl IHVzZXIgZXhlY3V0ZXMgQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNICisgKiBQVUJMSUNB VElPTiBpbiBwYXJhbGxlbCwgdGhlIG5ldyB0YWJsZSBjYW4gYmUgYWRkZWQgdG8gcGdfc3Vic2Ny aXB0aW9uX3JlbAorICogaW4gcGFyYWxsZWwgdG8gdGhpcyB0cmFuc2FjdGlvbi4KICAqLwogc3Rh dGljIGJvb2wKIHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwoTG9naWNhbFJlcFJlbE1hcEVu dHJ5ICpyZWwpCiB7CiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJcmV0dXJuIE15TG9n aWNhbFJlcFdvcmtlci0+cmVsaWQgPT0gcmVsLT5sb2NhbHJlbG9pZDsKKwllbHNlIGlmIChhbV9h cHBseV9iZ3dvcmtlcigpKQorCXsKKwkJaWYgKHJlbC0+c3RhdGUgIT0gU1VCUkVMX1NUQVRFX1JF QURZKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlv biBhcHBseSB3b3JrZXJzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgcmVzdGFydCIsCisJ CQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpLAorCQkJCQkgZXJyZGV0YWlsKCJDYW5ub3QgaGFu ZGxlIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9uIGJ5IGFwcGx5ICIKKwkJCQkJCQkg ICAiYmFja2dyb3VuZCB3b3JrZXJzIHVudGlsIGFsbCB0YWJsZXMgYXJlIHN5bmNocm9uaXplZCIp KSk7CisKKwkJcmV0dXJuIHRydWU7CisJfQogCWVsc2UKIAkJcmV0dXJuIChyZWwtPnN0YXRlID09 IFNVQlJFTF9TVEFURV9SRUFEWSB8fAogCQkJCShyZWwtPnN0YXRlID09IFNVQlJFTF9TVEFURV9T WU5DRE9ORSAmJgpAQCAtNDI2LDQzICs0NjQsOTAgQEAgZW5kX3JlcGxpY2F0aW9uX3N0ZXAodm9p ZCkKIH0KIAogLyoKLSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCisgKiBIYW5kbGUg c3RyZWFtZWQgdHJhbnNhY3Rpb25zIGZvciBib3RoIHRoZSBtYWluIGFwcGx5IHdvcmtlciBhbmQg dGhlIGFwcGx5CisgKiBiYWNrZ3JvdW5kIHdvcmtlcnMuCisgKgorICogSW4gc3RyZWFtaW5nIGNh c2UgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgZm9yCisgKiBT VUJTVFJFQU1fT04gbW9kZSwgc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHBy b3BlciB0b3BsZXZlbAorICogdHJhbnNhY3Rpb24sIGFuZCBmb3IgU1VCU1RSRUFNX1BBUkFMTEVM IG1vZGUsIHNlbmQgdGhlIGNoYW5nZXMgdG8gYXBwbHkKKyAqIGJhY2tncm91bmQgd29ya2VycyAo TE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIG9yIExPR0lDQUxfUkVQX01TR19UWVBFIGNoYW5nZXMK KyAqIHdpbGwgYmUgYXBwbGllZCBieSBib3RoIG1haW4gYW5kIGFwcGx5IGJhY2tncm91bmQgd29y a2VycykuCiAgKgotICogSWYgaW4gc3RyZWFtaW5nIG1vZGUgKHJlY2VpdmluZyBhIGJsb2NrIG9m IHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgd2UKLSAqIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZp bGUgZm9yIHRoZSBwcm9wZXIgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisgKiBGb3Igbm9uLXN0cmVh bWVkIHRyYW5zYWN0aW9ucywgcmV0dXJucyBmYWxzZTsKKyAqIEZvciBzdHJlYW1lZCB0cmFuc2Fj dGlvbnMsIHJldHVybnMgdHJ1ZSBpZiBpbiBtYWluIGFwcGx5IHdvcmtlciwgZmFsc2UKKyAqIG90 aGVyd2lzZS4KICAqCi0gKiBSZXR1cm5zIHRydWUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucywg ZmFsc2Ugb3RoZXJ3aXNlIChyZWd1bGFyIG1vZGUpLgorICogRXhjZXB0aW9uOiBXaGVuIHRoZSBt YWluIGFwcGx5IHdvcmtlciBpcyBhcHBseWluZyBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGluCisg KiBwYXJhbGxlbCBtb2RlIChlLmcuIHdoZW4gYWRkcmVzc2luZyBMT0dJQ0FMX1JFUF9NU0dfUkVM QVRJT04gb3IKKyAqIExPR0lDQUxfUkVQX01TR19UWVBFIGNoYW5nZXMpLCB0aGVuIHJldHVybiBm YWxzZS4KICAqLwogc3RhdGljIGJvb2wKIGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dp Y2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsKLQlUcmFuc2FjdGlvbklkIHhp ZDsKKwlUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJ Ym9vbAlyZXMgPSB0cnVlOwogCi0JLyogbm90IGluIHN0cmVhbWluZyBtb2RlICovCi0JaWYgKCFp bl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkvKiBOb3QgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIG5v dCBpbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gKi8KKwlpZiAoIShpbl9zdHJlYW1lZF90cmFu c2FjdGlvbiB8fCBhbV9hcHBseV9iZ3dvcmtlcigpKSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JQXNz ZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3Ry ZWFtX3hpZCkpOwogCiAJLyoKIAkgKiBXZSBzaG91bGQgaGF2ZSByZWNlaXZlZCBYSUQgb2YgdGhl IHN1YnhhY3QgYXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhlCiAJICogbWVzc2FnZSwgc28gZXh0cmFj dCBpdC4KIAkgKi8KLQl4aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CisJY3VycmVudF94aWQgPSBw cV9nZXRtc2dpbnQocywgNCk7CiAKLQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJ aWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChjdXJyZW50X3hpZCkpCiAJCWVyZXBvcnQoRVJST1Is CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2df aW50ZXJuYWwoImludmFsaWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQgcmVwbGljYXRpb24g dHJhbnNhY3Rpb24iKSkpOwogCi0JLyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkg KHVubGVzcyBhbHJlYWR5IHRoZXJlKS4gKi8KLQlzdWJ4YWN0X2luZm9fYWRkKHhpZCk7CisJaWYg KGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJeworCQkvKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEg c3VieGFjdCBpZiBuZWVkZWQuICovCisJCWFwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQo Y3VycmVudF94aWQpOworCisJCXJlcyA9IGZhbHNlOworCX0KKwllbHNlIGlmIChhcHBseV9iZ3dv cmtlcl9hY3RpdmUoKSkKKwl7CisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIG1haW4gYXBwbHkgd29y a2VyLCBidXQgdGhlcmUgaXMgYW4gYXBwbHkgYmFja2dyb3VuZAorCQkgKiB3b3JrZXIsIHNvIGFw cGx5IHRoZSBjaGFuZ2VzIG9mIHRoaXMgdHJhbnNhY3Rpb24gaW4gdGhhdCBiYWNrZ3JvdW5kCisJ CSAqIHdvcmtlci4gUGFzcyB0aGUgZGF0YSB0byB0aGUgd29ya2VyLgorCQkgKi8KKwkJYXBwbHlf Ymd3b3JrZXJfc2VuZF9kYXRhKHN0cmVhbV9hcHBseV93b3JrZXIsIHMtPmxlbiwgcy0+ZGF0YSk7 CisJCW5jaGFuZ2VzICs9IDE7CisKKwkJLyoKKwkJICogWFhYIFRoZSBwdWJsaXNoZXIgc2lkZSBk b2Vzbid0IGFsd2F5cyBzZW5kIHJlbGF0aW9uL3R5cGUgdXBkYXRlCisJCSAqIG1lc3NhZ2VzIGFm dGVyIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIGFsc28gdXBkYXRlIHRoZQorCQkgKiBy ZWxhdGlvbi90eXBlIGluIG1haW4gYXBwbHkgd29ya2VyIGhlcmUuIFNlZSBmdW5jdGlvbgorCQkg KiBjbGVhbnVwX3JlbF9zeW5jX2NhY2hlLgorCQkgKi8KKwkJaWYgKGFjdGlvbiA9PSBMT0dJQ0FM X1JFUF9NU0dfUkVMQVRJT04gfHwKKwkJCWFjdGlvbiA9PSBMT0dJQ0FMX1JFUF9NU0dfVFlQRSkK KwkJCXJlcyA9IGZhbHNlOworCX0KKwllbHNlCisJeworCQlBc3NlcnQoc3RyZWFtX2ZkICE9IE5V TEwpOworCisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIG1haW4gYXBwbHkgd29ya2VyLCBidXQgdGhl cmUgaXMgbm8gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsCisJCSAqIHNvIHdyaXRlIHRvIHRlbXBv cmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMuCisJCSAq CisJCSAqIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0 aGVyZSkuCisJCSAqLworCQlzdWJ4YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlkKTsKIAotCS8qIHdy aXRlIHRoZSBjaGFuZ2UgdG8gdGhlIGN1cnJlbnQgZmlsZSAqLwotCXN0cmVhbV93cml0ZV9jaGFu Z2UoYWN0aW9uLCBzKTsKKwkJLyogd3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxl ICovCisJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwl9CiAKLQlyZXR1cm4gdHJ1 ZTsKKwlyZXR1cm4gcmVzOwogfQogCiAvKgpAQCAtODQ0LDYgKzkyOSw5IEBAIGFwcGx5X2hhbmRs ZV9jb21taXQoU3RyaW5nSW5mbyBzKQogCiAJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgm Y29tbWl0X2RhdGEpOwogCisJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlciBpZiBhbnkuICovCisJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7CisKIAkv KiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFs bGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7CiAK QEAgLTg5NSwxMCArOTgzLDEyIEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKExvZ2lj YWxSZXBQcmVwYXJlZFR4bkRhdGEgKnByZXBhcmVfZGF0YSkKIAkJCQkJCSAgIGdpZCwgc2l6ZW9m KGdpZCkpOwogCiAJLyoKLQkgKiBCZWdpblRyYW5zYWN0aW9uQmxvY2sgaXMgbmVjZXNzYXJ5IHRv IGJhbGFuY2UgdGhlIEVuZFRyYW5zYWN0aW9uQmxvY2sKKwkgKiBXZSBtdXN0IGJlIGluIHRyYW5z YWN0aW9uIGJsb2NrIHRvIGJhbGFuY2UgdGhlIEVuZFRyYW5zYWN0aW9uQmxvY2sKIAkgKiBjYWxs ZWQgd2l0aGluIHRoZSBQcmVwYXJlVHJhbnNhY3Rpb25CbG9jayBiZWxvdy4KIAkgKi8KLQlCZWdp blRyYW5zYWN0aW9uQmxvY2soKTsKKwlpZiAoIUlzVHJhbnNhY3Rpb25CbG9jaygpKQorCQlCZWdp blRyYW5zYWN0aW9uQmxvY2soKTsKKwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOyAvKiBD b21wbGV0ZXMgdGhlIHByZWNlZGluZyBCZWdpbiBjb21tYW5kLiAqLwogCiAJLyoKQEAgLTk1MCw2 ICsxMDQwLDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAJaW5fcmVt b3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5 IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0 dXMoKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6 ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEu ZW5kX2xzbik7CiAKQEAgLTEwNjQsMTAgKzExNTcsNiBAQCBhcHBseV9oYW5kbGVfcm9sbGJhY2tf cHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIFNUUkVBTSBQUkVQQVJFLgot ICoKLSAqIExvZ2ljIGlzIGluIHR3byBwYXJ0czoKLSAqIDEuIFJlcGxheSBhbGwgdGhlIHNwb29s ZWQgb3BlcmF0aW9ucwotICogMi4gTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQKICAq Lwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMp CkBAIC0xMDg4LDI0ICsxMTc3LDc4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJp bmdJbmZvIHMpCiAJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9wcmVwYXJlKHMsICZwcmVwYXJlX2Rh dGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QocHJlcGFyZV9kYXRhLnhpZCwgcHJl cGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgcHJlcGFy ZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCBwcmVwYXJlX2RhdGEueGlkKTsKKwlpZiAo YW1fYXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHBy ZXBhcmVkLiAqLworCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRh KTsKIAotCS8qIFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucy4gKi8KLQlhcHBseV9z cG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xz bik7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogTWFyayB0aGUgdHJhbnNh Y3Rpb24gYXMgcHJlcGFyZWQuICovCi0JYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnBy ZXBhcmVfZGF0YSk7CisJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKLQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKwkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0KTsKKwkJc3VieGFjdGxp c3QgPSBOSUw7CiAKLQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQlhcHBseV9iZ3dvcmtl cl9zZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwl9CisJZWxzZQorCXsKKwkJ LyogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIuICovCisJCUFwcGx5Qmd3b3JrZXJJbmZv ICp3c3RhdGUgPSBhcHBseV9iZ3dvcmtlcl9maW5kKHByZXBhcmVfZGF0YS54aWQpOwogCi0Jc3Rv cmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQllbG9nKERFQlVHMSwg InJlY2VpdmVkIHByZXBhcmUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwKKwkJCSBwcmVw YXJlX2RhdGEueGlkKTsKKworCQkvKgorCQkgKiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyB0 aGlzIHRyYW5zYWN0aW9uIGluIGFuIGFwcGx5IGJhY2tncm91bmQKKwkJICogd29ya2VyIGFuZCBp ZiBzbywgc2VuZCB0aGUgY2hhbmdlcyB0byB0aGF0IHdvcmtlci4KKwkJICovCisJCWlmICh3c3Rh dGUpCisJCXsKKwkJCS8qIFNlbmQgU1RSRUFNIFBSRVBBUkUgbWVzc2FnZSB0byB0aGUgYXBwbHkg YmFja2dyb3VuZCB3b3JrZXIuICovCisJCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEod3N0YXRl LCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQkvKgorCQkJICogQWZ0ZXIgc2VuZGluZyB0aGUgZGF0 YSB0byB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIHdhaXQgZm9yCisJCQkgKiB0aGF0IHdv cmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAorCQkJ ICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRl bmNpZXMgYW5kCisJCQkgKiBkZWFkbG9ja3MuCisJCQkgKi8KKwkJCWFwcGx5X2Jnd29ya2VyX3dh aXRfZm9yKHdzdGF0ZSwgQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCQkJYXBwbHlfYmd3b3Jr ZXJfZnJlZSh3c3RhdGUpOworCisJCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQkJc3Rv cmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQl9CisJCWVsc2UKKwkJ eworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkIHRvIGZp bGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVkIG9wZXJhdGlvbnMuCisJCQkgKi8K KwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJlcGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRh LnByZXBhcmVfbHNuKTsKKworCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQu ICovCisJCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKKwor CQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCXBnc3RhdF9yZXBvcnRfc3RhdChm YWxzZSk7CisKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsK KworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisKKwkJCS8qIFVubGluayB0aGUg ZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KKwkJCXN0 cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0 YS54aWQpOworCQl9CisJfQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJc3Ry ZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGggc2Vy aWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCi0Jc3RyZWFtX2NsZWFudXBfZmls ZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisJLyogQ2hl Y2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhbnkuICovCisJYXBw bHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhh dCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2lu Z190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwpAQCAtMTE1NSwxNSArMTI5OCw2IEBAIGFw cGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogCQkJCShlcnJjb2RlKEVSUkNP REVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJkdXBsaWNhdGUg U1RSRUFNIFNUQVJUIG1lc3NhZ2UiKSkpOwogCi0JLyoKLQkgKiBTdGFydCBhIHRyYW5zYWN0aW9u IG9uIHN0cmVhbSBzdGFydCwgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlIGNvbW1pdHRlZAotCSAq IG9uIHRoZSBzdHJlYW0gc3RvcCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluIHdo aWNoIGNhc2UgaXQKLQkgKiB3aWxsIGJlIGNvbW1pdHRlZCBhZnRlciBwcm9jZXNzaW5nIGFsbCB0 aGUgbWVzc2FnZXMuIFdlIG5lZWQgdGhlCi0JICogdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5nIHRo ZSBidWZmaWxlLCB1c2VkIGZvciBzZXJpYWxpemluZyB0aGUKLQkgKiBzdHJlYW1pbmcgZGF0YSBh bmQgc3VieGFjdCBpbmZvLgotCSAqLwotCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKLQogCS8q IG5vdGlmeSBoYW5kbGUgbWV0aG9kcyB3ZSdyZSBwcm9jZXNzaW5nIGEgcmVtb3RlIHRyYW5zYWN0 aW9uICovCiAJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSB0cnVlOwogCkBAIC0xMTc3LDM2ICsx MzExLDkzIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogCiAJc2V0 X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChzdHJlYW1feGlkLCBJbnZhbGlkWExvZ1JlY1B0cik7 CiAKLQkvKgotCSAqIEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxlc2V0IGlmIHdl IGhhdmVuJ3QgeWV0LiBUaGlzIHdpbGwgYmUKLQkgKiB1c2VkIGZvciB0aGUgZW50aXJlIGR1cmF0 aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0IGluIGEgcGVybWFuZW50Ci0JICogY29udGV4 dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5nIG1lc3NhZ2UgZnJv bSBhbnkKLQkgKiB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMgYW5kIG90aGVy IHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuCi0JICogTm93LCB3ZSBjb3VsZCBjcmVhdGUgYSBmaWxl c2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0Ci0JICogdGhlbiB3ZSB3 b24ndCBiZSBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCi0JICovCi0JaWYgKE15TG9n aWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPT0gTlVMTCkKKwlpZiAoYW1fYXBwbHlfYmd3 b3JrZXIoKSkKIAl7Ci0JCU1lbW9yeUNvbnRleHQgb2xkY3R4OwotCi0JCW9sZGN0eCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQkvKgorCQkgKiBNYWtlIHN1cmUgdGhl IGhhbmRsZSBhcHBseV9kaXNwYXRjaCBtZXRob2RzIGFyZSBhd2FyZSB3ZSdyZSBpbiBhCisJCSAq IHJlbW90ZSB0cmFuc2FjdGlvbi4KKwkJICovCisJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IHRy dWU7CiAKLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXpl b2YoRmlsZVNldCkpOwotCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9m aWxlc2V0KTsKKwkJLyogQmVnaW4gdGhlIHRyYW5zYWN0aW9uLiAqLworCQlBY2NlcHRJbnZhbGlk YXRpb25NZXNzYWdlcygpOworCQltYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKCk7CiAKLQkJTWVt b3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CisJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQo KTsKIAl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3Jr ZXIuIENoZWNrIGlmIHRoZXJlIGlzIGFueSBmcmVlIGFwcGx5CisJCSAqIGJhY2tncm91bmQgd29y a2VyIHdlIGNhbiB1c2UgdG8gcHJvY2VzcyB0aGlzIHRyYW5zYWN0aW9uLgorCQkgKi8KKwkJaWYg KGZpcnN0X3NlZ21lbnQpCisJCQlzdHJlYW1fYXBwbHlfd29ya2VyID0gYXBwbHlfYmd3b3JrZXJf c3RhcnQoc3RyZWFtX3hpZCk7CisJCWVsc2UKKwkJCXN0cmVhbV9hcHBseV93b3JrZXIgPSBhcHBs eV9iZ3dvcmtlcl9maW5kKHN0cmVhbV94aWQpOwogCi0JLyogb3BlbiB0aGUgc3Bvb2wgZmlsZSBm b3IgdGhpcyB0cmFuc2FjdGlvbiAqLwotCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwgc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisJCWlmIChzdHJlYW1fYXBw bHlfd29ya2VyKQorCQl7CisJCQkvKgorCQkJICogSWYgd2UgaGF2ZSBmb3VuZCBhIGZyZWUgd29y a2VyIG9yIGlmIHdlIGFyZSBhbHJlYWR5IGFwcGx5aW5nIHRoaXMKKwkJCSAqIHRyYW5zYWN0aW9u IGluIGFuIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCB0aGVuIHdlIHBhc3MgdGhlIGRhdGEgdG8K KwkJCSAqIHRoYXQgd29ya2VyLgorCQkJICovCisJCQlpZiAoZmlyc3Rfc2VnbWVudCkKKwkJCQlh cHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5X3dvcmtlciwgcy0+bGVuLCBzLT5k YXRhKTsKIAotCS8qIGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4aXN0 aW5nIHN1YnhhY3QgZmlsZSAqLwotCWlmICghZmlyc3Rfc2VnbWVudCkKLQkJc3VieGFjdF9pbmZv X3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJCQluY2hhbmdl cyA9IDA7CisJCQllbG9nKERFQlVHMSwgInN0YXJ0aW5nIHN0cmVhbWluZyBvZiB4aWQgJXUiLCBz dHJlYW1feGlkKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBTaW5jZSBubyBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlciBpcyBhdmFpbGFibGUgZm9yIHRoZSBmaXJzdAorCQkJICogc3Ry ZWFtIHN0YXJ0LCBzZXJpYWxpemUgYWxsIHRoZSBjaGFuZ2VzIG9mIHRoZSB0cmFuc2FjdGlvbi4K KwkJCSAqCisJCQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9uIHN0cmVhbSBzdGFydCwgdGhpcyB0 cmFuc2FjdGlvbiB3aWxsIGJlCisJCQkgKiBjb21taXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wIHVu bGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4KKwkJCSAqIHdoaWNoIGNhc2UgaXQgd2ls bCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlCisJCQkgKiBtZXNzYWdlcy4g V2UgbmVlZCB0aGUgdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5nIHRoZSBidWZmaWxlLAorCQkJICog dXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlIHN0cmVhbWluZyBkYXRhIGFuZCBzdWJ4YWN0IGluZm8u CisJCQkgKi8KKwkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAotCXBnc3RhdF9yZXBvcnRf YWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7CisJCQkvKgorCQkJICogSW5pdGlhbGl6ZSB0 aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5ZXQuIFRoaXMgd2lsbAor CQkJICogYmUgdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvIGNy ZWF0ZSBpdCBpbiBhCisJCQkgKiBwZXJtYW5lbnQgY29udGV4dC4gV2UgY3JlYXRlIHRoaXMgb24g dGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5nCisJCQkgKiBtZXNzYWdlIGZyb20gYW55IHRyYW5zYWN0 aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3IgdGhpcyBhbmQgb3RoZXIKKwkJCSAqIHN0cmVhbWluZyB0 cmFuc2FjdGlvbnMuIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUgc3RhcnQK KwkJCSAqIG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQgdGhlbiB3ZSB3b24ndCBiZSBzdXJlIHRo YXQgaXQgd2lsbCBldmVyCisJCQkgKiBiZSB1c2VkLgorCQkJICovCisJCQlpZiAoTXlMb2dpY2Fs UmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9PSBOVUxMKQorCQkJeworCQkJCU1lbW9yeUNvbnRl eHQgb2xkY3R4OwogCi0JZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwkJCQlvbGRjdHggPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCQkJCU15TG9naWNhbFJlcFdvcmtl ci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKKwkJCQlGaWxlU2V0 SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKworCQkJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQkJfQorCisJCQkvKiBPcGVuIHRoZSBzcG9vbCBmaWxl IGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCQkJc3RyZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKworCQkJLyogSWYg dGhpcyBpcyBub3QgdGhlIGZpcnN0IHNlZ21lbnQsIG9wZW4gZXhpc3Rpbmcgc3VieGFjdCBmaWxl LiAqLworCQkJaWYgKCFmaXJzdF9zZWdtZW50KQorCQkJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9n aWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCisJCQllbmRfcmVwbGljYXRpb25f c3RlcCgpOworCQl9CisJfQorCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9SVU5OSU5H LCBOVUxMKTsKIH0KIAogLyoKQEAgLTEyMjAsNTMgKzE0MTEsNTIgQEAgYXBwbHlfaGFuZGxlX3N0 cmVhbV9zdG9wKFN0cmluZ0luZm8gcykKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJ T0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIFNUT1AgbWVzc2FnZSB3aXRo b3V0IFNUUkVBTSBTVEFSVCIpKSk7CiAKLQkvKgotCSAqIENsb3NlIHRoZSBmaWxlIHdpdGggc2Vy aWFsaXplZCBjaGFuZ2VzLCBhbmQgc2VyaWFsaXplIGluZm9ybWF0aW9uIGFib3V0Ci0JICogc3Vi eGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KLQkgKi8KLQlzdWJ4YWN0X2luZm9f d3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7Ci0Jc3RyZWFtX2Ns b3NlX2ZpbGUoKTsKKwlpZiAoYXBwbHlfYmd3b3JrZXJfYWN0aXZlKCkpCisJeworCQljaGFyIGFj dGlvbiA9IExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RPUDsKIAotCS8qIFdlIG11c3QgYmUgaW4g YSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwotCUFzc2VydChJc1RyYW5zYWN0aW9uU3RhdGUo KSk7CisJCWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YShzdHJlYW1fYXBwbHlfd29ya2VyLCAxLCAm YWN0aW9uKTsKIAotCS8qIENvbW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAqLwotCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQllbG9nKERFQlVHMSwgInN0b3BwZWQgc3RyZWFt aW5nIG9mIHhpZCAldSwgJXUgY2hhbmdlcyBzdHJlYW1lZCIsIHN0cmVhbV94aWQsIG5jaGFuZ2Vz KTsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxp emVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUgaW5mb3JtYXRpb24KKwkJICogYWJvdXQgc3VieGFj dHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKwkJICovCisJCXN1YnhhY3RfaW5mb193 cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKwkJc3RyZWFtX2Ns b3NlX2ZpbGUoKTsKIAotCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCS8qIFdl IG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLworCQlBc3NlcnQoSXNUcmFu c2FjdGlvblN0YXRlKCkpOworCisJCS8qIENvbW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlv biAqLworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFJlc2V0IHBlci1zdHJl YW0gY29udGV4dCAqLwotCU1lbW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3RyZWFtaW5nQ29udGV4 dCk7CisJCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLworCQlNZW1vcnlDb250ZXh0UmVz ZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCX0KKworCWluX3N0cmVhbWVkX3RyYW5zYWN0 aW9uID0gZmFsc2U7CisJc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CiAKIAlwZ3N0YXRfcmVw b3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRl eHRfaW5mbygpOwogfQogCiAvKgotICogSGFuZGxlIFNUUkVBTSBhYm9ydCBtZXNzYWdlLgorICog SGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHdoZW4gdGhlIHRyYW5zYWN0aW9uIHdhcyBzcGls bGVkIHRvIGRpc2suCiAgKi8KIHN0YXRpYyB2b2lkCi1hcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0 KFN0cmluZ0luZm8gcykKK3NlcmlhbGl6ZV9zdHJlYW1fYWJvcnQoVHJhbnNhY3Rpb25JZCB4aWQs IFRyYW5zYWN0aW9uSWQgc3VieGlkKQogewotCVRyYW5zYWN0aW9uSWQgeGlkOwotCVRyYW5zYWN0 aW9uSWQgc3VieGlkOwotCi0JaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQotCQllcmVwb3J0 KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKLQkJCQkg ZXJybXNnX2ludGVybmFsKCJTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVE9Q IikpKTsKLQotCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQocywgJnhpZCwgJnN1YnhpZCk7 Ci0KIAkvKgogCSAqIElmIHRoZSB0d28gWElEcyBhcmUgdGhlIHNhbWUsIGl0J3MgaW4gZmFjdCBh Ym9ydCBvZiB0b3BsZXZlbCB4YWN0LCBzbwogCSAqIGp1c3QgZGVsZXRlIHRoZSBmaWxlcyB3aXRo IHNlcmlhbGl6ZWQgaW5mby4KIAkgKi8KIAlpZiAoeGlkID09IHN1YnhpZCkKLQl7Ci0JCXNldF9h cHBseV9lcnJvcl9jb250ZXh0X3hhY3QoeGlkLCBJbnZhbGlkWExvZ1JlY1B0cik7CiAJCXN0cmVh bV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7Ci0JfQogCWVs c2UKIAl7CiAJCS8qCkBAIC0xMjkwLDggKzE0ODAsNiBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fi b3J0KFN0cmluZ0luZm8gcykKIAkJYm9vbAkJZm91bmQgPSBmYWxzZTsKIAkJY2hhcgkJcGF0aFtN QVhQR1BBVEhdOwogCi0JCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3VieGlkLCBJbnZh bGlkWExvZ1JlY1B0cik7Ci0KIAkJc3ViaWR4ID0gLTE7CiAJCWJlZ2luX3JlcGxpY2F0aW9uX3N0 ZXAoKTsKIAkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlk KTsKQEAgLTEzMTYsNyArMTUwNCw2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5n SW5mbyBzKQogCQkJY2xlYW51cF9zdWJ4YWN0X2luZm8oKTsKIAkJCWVuZF9yZXBsaWNhdGlvbl9z dGVwKCk7CiAJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKLQkJCXJlc2V0X2FwcGx5X2Vy cm9yX2NvbnRleHRfaW5mbygpOwogCQkJcmV0dXJuOwogCQl9CiAKQEAgLTEzMzksNiArMTUyNiwx NDQgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCWVuZF9yZXBs aWNhdGlvbl9zdGVwKCk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCX0KK30KKwor LyoKKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZS4KKyAqLworc3RhdGljIHZvaWQKK2Fw cGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQoreworCVRyYW5zYWN0aW9uSWQg eGlkOworCVRyYW5zYWN0aW9uSWQgc3VieGlkOworCUxvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEg YWJvcnRfZGF0YTsKKwlib29sIHJlYWRfYWJvcnRfbHNuID0gZmFsc2U7CisKKwlpZiAoaW5fc3Ry ZWFtZWRfdHJhbnNhY3Rpb24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9S VCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOworCisJLyogQ2hlY2sgd2hldGhlciB0 aGUgcHVibGlzaGVyIHNlbmRzIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZS4gKi8KKwlpZiAoYW1f YXBwbHlfYmd3b3JrZXIoKSkKKwkJcmVhZF9hYm9ydF9sc24gPSBNeVBhcmFsbGVsU2hhcmVkLT5w cm90b192ZXJzaW9uID49CisJCQkJCQkgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxf VkVSU0lPTl9OVU07CisKKwlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZhYm9ydF9k YXRhLCByZWFkX2Fib3J0X2xzbik7CisKKwl4aWQgPSBhYm9ydF9kYXRhLnhpZDsKKwlzdWJ4aWQg PSBhYm9ydF9kYXRhLnN1YnhpZDsKKworCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3Vi eGlkLCBhYm9ydF9kYXRhLmFib3J0X2xzbik7CisKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkK Kwl7CisJCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIGFib3J0aW5nIGN1cnJlbnQgdHJh bnNhY3Rpb24geGlkPSV1LCBzdWJ4aWQ9JXUiLAorCQkJIE15UGFyYWxsZWxTaGFyZWQtPndvcmtl cl9pZCAsIEdldEN1cnJlbnRUcmFuc2FjdGlvbklkSWZBbnkoKSwKKwkJCSBHZXRDdXJyZW50U3Vi VHJhbnNhY3Rpb25JZCgpKTsKKworCQkvKgorCQkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdl IGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QKKwkJICogcG9zaXRpb24gaW4gY2Fz ZSBvZiBjcmFzaC4KKwkJICovCisJCWlmIChyZWFkX2Fib3J0X2xzbikKKwkJeworCQkJcmVwbG9y aWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBhYm9ydF9kYXRhLmFib3J0X2xzbjsKKwkJCXJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gYWJvcnRfZGF0YS5hYm9ydF90aW1lOwor CQl9CisKKwkJLyoKKwkJICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwgaXQncyBpbiBm YWN0IGFib3J0IG9mIHRvcGxldmVsIHhhY3QsCisJCSAqIHNvIGp1c3QgZnJlZSB0aGUgc3VieGFj dGxpc3QuCisJCSAqLworCQlpZiAoc3VieGlkID09IHhpZCkKKwkJeworCQkJQWJvcnRDdXJyZW50 VHJhbnNhY3Rpb24oKTsKKworCQkJRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFs c2U7CisJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCisJCQls aXN0X2ZyZWUoc3VieGFjdGxpc3QpOworCQkJc3VieGFjdGxpc3QgPSBOSUw7CisKKwkJCWFwcGx5 X2Jnd29ya2VyX3NldF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCQl9CisJCWVs c2UKKwkJeworCQkJLyoKKwkJCSAqIE9LLCBzbyBpdCdzIGEgc3VieGFjdC4gUm9sbGJhY2sgdG8g dGhlIHNhdmVwb2ludC4KKwkJCSAqCisJCQkgKiBXZSBhbHNvIG5lZWQgdG8gcmVhZCB0aGUgc3Vi eGFjdGxpc3QsIGRldGVybWluZSB0aGUgb2Zmc2V0CisJCQkgKiB0cmFja2VkIGZvciB0aGUgc3Vi eGFjdCwgYW5kIHRydW5jYXRlIHRoZSBsaXN0LgorCQkJICovCisJCQlpbnQJCQlpOworCQkJYm9v bAkJZm91bmQgPSBmYWxzZTsKKwkJCWNoYXIJCXNwbmFtZVtNQVhQR1BBVEhdOworCisJCQlhcHBs eV9iZ3dvcmtlcl9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBzdWJ4aWQsIHNw bmFtZSwKKwkJCQkJCQkJCQkgIHNpemVvZihzcG5hbWUpKTsKKworCQkJZWxvZyhERUJVRzEsICJb QXBwbHkgQkdXICMldV0gcm9sbGluZyBiYWNrIHRvIHNhdmVwb2ludCAlcyIsCisJCQkJIE15UGFy YWxsZWxTaGFyZWQtPndvcmtlcl9pZCwgc3BuYW1lKTsKKworCQkJZm9yIChpID0gbGlzdF9sZW5n dGgoc3VieGFjdGxpc3QpIC0gMTsgaSA+PSAwOyBpLS0pCisJCQl7CisJCQkJeGlkID0gKFRyYW5z YWN0aW9uSWQpIGxpc3RfbnRoX2ludChzdWJ4YWN0bGlzdCwgaSk7CisJCQkJaWYgKHhpZCA9PSBz dWJ4aWQpCisJCQkJeworCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJ CX0KKworCQkJaWYgKGZvdW5kKQorCQkJeworCQkJCVJvbGxiYWNrVG9TYXZlcG9pbnQoc3BuYW1l KTsKKwkJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlzdWJ4YWN0bGlzdCA9IGxp c3RfdHJ1bmNhdGUoc3VieGFjdGxpc3QsIGkgKyAxKTsKKwkJCX0KKworCQkJcGdzdGF0X3JlcG9y dF9hY3Rpdml0eShTVEFURV9JRExFSU5UUkFOU0FDVElPTiwgTlVMTCk7CisJCX0KKwl9CisJZWxz ZQorCXsKKwkJLyogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIuICovCisJCUFwcGx5Qmd3 b3JrZXJJbmZvICp3c3RhdGUgPSBhcHBseV9iZ3dvcmtlcl9maW5kKHhpZCk7CisKKwkJLyoKKwkJ ICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlvbiBpbiBhbiBhcHBs eSBiYWNrZ3JvdW5kCisJCSAqIHdvcmtlciBhbmQgaWYgc28sIHNlbmQgdGhlIGNoYW5nZXMgdG8g dGhhdCB3b3JrZXIuCisJCSAqLworCQlpZiAod3N0YXRlKQorCQl7CisJCQkvKiBTZW5kIFNUUkVB TSBBQk9SVCBtZXNzYWdlIHRvIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gKi8KKwkJCWFw cGx5X2Jnd29ya2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxlbiwgcy0+ZGF0YSk7CisKKwkJCS8q CisJCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdv cmtlciwgd2FpdCBmb3IKKwkJCSAqIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4gVGhpcyBpcyBuZWNl c3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CisJCQkgKiBvcmRlciB3aGljaCBhdm9pZHMgZmFpbHVy ZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkJCSAqIGRlYWRsb2Nrcy4K KwkJCSAqLworCQkJaWYgKHN1YnhpZCA9PSB4aWQpCisJCQl7CisJCQkJYXBwbHlfYmd3b3JrZXJf d2FpdF9mb3Iod3N0YXRlLCBBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisJCQkJYXBwbHlfYmd3 b3JrZXJfZnJlZSh3c3RhdGUpOworCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAq IFdlIGFyZSBpbiBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVu CisJCQkgKiBzZXJpYWxpemVkIHRvIGZpbGUuCisJCQkgKi8KKwkJCXNlcmlhbGl6ZV9zdHJlYW1f YWJvcnQoeGlkLCBzdWJ4aWQpOworCQl9CisJfQogCiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4 dF9pbmZvKCk7CiB9CkBAIC0xNDY4LDggKzE3OTMsOCBAQCBhcHBseV9zcG9vbGVkX21lc3NhZ2Vz KFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIHN0YXRpYyB2b2lkCiBhcHBseV9o YW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7 CiAJTG9naWNhbFJlcENvbW1pdERhdGEgY29tbWl0X2RhdGE7CisJVHJhbnNhY3Rpb25JZCB4aWQ7 CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0x NDc5LDE0ICsxODA0LDgxIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8g cykKIAl4aWQgPSBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChzLCAmY29tbWl0X2RhdGEp OwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoeGlkLCBjb21taXRfZGF0YS5jb21taXRf bHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFu c2FjdGlvbiAldSIsIHhpZCk7CisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJeworCQkvKgor CQkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9t IGNvcnJlY3QKKwkJICogcG9zaXRpb24gaW4gY2FzZSBvZiBjcmFzaC4KKwkJICovCisJCXJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gY29tbWl0X2RhdGEuZW5kX2xzbjsKKwkJcmVwbG9y aWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBjb21taXRfZGF0YS5jb21taXR0aW1lOwor CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZh bHNlKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQlhcHBseV9zcG9vbGVkX21l c3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJCWluX3JlbW90ZV90cmFuc2Fj dGlvbiA9IGZhbHNlOwogCi0JYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2Rh dGEpOworCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCisJCWxpc3RfZnJlZShzdWJ4YWN0 bGlzdCk7CisJCXN1YnhhY3RsaXN0ID0gTklMOworCisJCWFwcGx5X2Jnd29ya2VyX3NldF9zdGF0 dXMoQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCX0KKwllbHNlCisJeworCQkvKiBUaGlzIGlz IHRoZSBtYWluIGFwcGx5IHdvcmtlci4gKi8KKwkJQXBwbHlCZ3dvcmtlckluZm8gKndzdGF0ZSA9 IGFwcGx5X2Jnd29ya2VyX2ZpbmQoeGlkKTsKIAotCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBz ZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mbyAqLwotCXN0cmVhbV9jbGVhbnVwX2Zp bGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCWVsb2coREVCVUcxLCAicmVj ZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhpZCk7CisKKwkJLyoK KwkJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlvbiBpbiBhbiBh cHBseSBiYWNrZ3JvdW5kCisJCSAqIHdvcmtlciBhbmQgaWYgc28sIHNlbmQgdGhlIGNoYW5nZXMg dG8gdGhhdCB3b3JrZXIuCisJCSAqLworCQlpZiAod3N0YXRlKQorCQl7CisJCQkvKiBTZW5kIFNU UkVBTSBDT01NSVQgbWVzc2FnZSB0byB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJ CQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEod3N0YXRlLCBzLT5sZW4sIHMtPmRhdGEpOworCisJ CQkvKgorCQkJICogQWZ0ZXIgc2VuZGluZyB0aGUgZGF0YSB0byB0aGUgYXBwbHkgYmFja2dyb3Vu ZCB3b3JrZXIsIHdhaXQgZm9yCisJCQkgKiB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMg bmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAorCQkJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZh aWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCisJCQkgKiBkZWFkbG9j a3MuCisJCQkgKi8KKwkJCWFwcGx5X2Jnd29ya2VyX3dhaXRfZm9yKHdzdGF0ZSwgQVBQTFlfQkdX T1JLRVJfRklOSVNIRUQpOworCisJCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQkJc3Rv cmVfZmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQlzdG9wX3NraXBwaW5n X2NoYW5nZXMoKTsKKworCQkJYXBwbHlfYmd3b3JrZXJfZnJlZSh3c3RhdGUpOworCisJCQkvKgor CQkJICogVGhlIHRyYW5zYWN0aW9uIGlzIGVpdGhlciBub24tZW1wdHkgb3Igc2tpcHBlZCwgc28g d2UgY2xlYXIgdGhlCisJCQkgKiBzdWJza2lwbHNuLgorCQkJICovCisJCQljbGVhcl9zdWJzY3Jp cHRpb25fc2tpcF9sc24oY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJCX0KKwkJZWxzZQorCQl7 CisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQgdG8gZmls ZSwgc28gcmVwbGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAqLwor CQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOwor CisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJCS8q IFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5m by4gKi8KKwkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs IHhpZCk7CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tncm91 bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXMoKTsKIAog CS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFy YWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRfZGF0YS5lbmRfbHNuKTsK QEAgLTI0NjcsNyArMjg1OSw3IEBAIGFwcGx5X2hhbmRsZV90cnVuY2F0ZShTdHJpbmdJbmZvIHMp CiAvKgogICogTG9naWNhbCByZXBsaWNhdGlvbiBwcm90b2NvbCBtZXNzYWdlIGRpc3BhdGNoZXIu CiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpCiB7 CiAJTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uID0gcHFfZ2V0bXNnYnl0ZShzKTsKQEAgLTI2MzYs NiArMzAyOCwxMCBAQCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24p CiB7CiAJRmx1c2hQb3NpdGlvbiAqZmx1c2hwb3M7CiAKKwkvKiBTa2lwIGlmIG5vdCB0aGUgbWFp biBhcHBseSB3b3JrZXIgKi8KKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwkJcmV0dXJuOwor CiAJLyogTmVlZCB0byBkbyB0aGlzIGluIHBlcm1hbmVudCBjb250ZXh0ICovCiAJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKQEAgLTI2NTAsNyArMzA0Niw3IEBAIHN0b3Jl X2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKIAogCiAvKiBVcGRhdGUgc3Rh dGlzdGljcyBvZiB0aGUgd29ya2VyLiAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIFVwZGF0ZVdvcmtl clN0YXRzKFhMb2dSZWNQdHIgbGFzdF9sc24sIFRpbWVzdGFtcFR6IHNlbmRfdGltZSwgYm9vbCBy ZXBseSkKIHsKIAlNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfbHNuID0gbGFzdF9sc247CkBAIC0y ODEyLDYgKzMyMDgsOSBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNl aXZlZCkKIAkJCUFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7CiAJCQltYXliZV9yZXJlYWRf c3Vic2NyaXB0aW9uKCk7CiAKKwkJCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIgaWYgYW55LiAqLworCQkJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7 CisKIAkJCS8qIFByb2Nlc3MgYW55IHRhYmxlIHN5bmNocm9uaXphdGlvbiBjaGFuZ2VzLiAqLwog CQkJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhsYXN0X3JlY2VpdmVkKTsKIAkJfQpAQCAtMzExNCw3 ICszNTEzLDcgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogLyoKICAqIENhbGxi YWNrIGZyb20gc3Vic2NyaXB0aW9uIHN5c2NhY2hlIGludmFsaWRhdGlvbi4KICAqLwotc3RhdGlj IHZvaWQKK3ZvaWQKIHN1YnNjcmlwdGlvbl9jaGFuZ2VfY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVp ZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKIAlNeVN1YnNjcmlwdGlvblZhbGlkID0gZmFsc2U7CkBA IC0zNTY5LDM3ICszOTY4LDE0IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0 cG9zKQogCVBHX0VORF9UUlkoKTsKIH0KIAotLyogTG9naWNhbCBSZXBsaWNhdGlvbiBBcHBseSB3 b3JrZXIgZW50cnkgcG9pbnQgKi8KKy8qCisgKiBJbml0aWFsaXplIHRoZSBkYXRhYnNlIGNvbm5l Y3Rpb24sIGluLW1lbW9yeSBzdWJzY3JpcHRpb24gYW5kIG5lY2Vzc2FyeQorICogY29uZmlnIG9w dGlvbnMuCisgKi8KIHZvaWQKLUFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKK0luaXRp YWxpemVBcHBseVdvcmtlcih2b2lkKQogewotCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJ bnQzMihtYWluX2FyZyk7CiAJTWVtb3J5Q29udGV4dCBvbGRjdHg7Ci0JY2hhcgkJb3JpZ2lubmFt ZVtOQU1FREFUQUxFTl07Ci0JWExvZ1JlY1B0cglvcmlnaW5fc3RhcnRwb3MgPSBJbnZhbGlkWExv Z1JlY1B0cjsKLQljaGFyCSAgICpteXNsb3RuYW1lID0gTlVMTDsKLQlXYWxSY3ZTdHJlYW1PcHRp b25zIG9wdGlvbnM7Ci0JaW50CQkJc2VydmVyX3ZlcnNpb247Ci0KLQkvKiBBdHRhY2ggdG8gc2xv dCAqLwotCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7Ci0KLQkvKiBTZXR1 cCBzaWduYWwgaGFuZGxpbmcgKi8KLQlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JD b25maWdSZWxvYWQpOwotCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7Ci0JQmFja2dyb3VuZFdvcmtl clVuYmxvY2tTaWduYWxzKCk7Ci0KLQkvKgotCSAqIFdlIGRvbid0IGN1cnJlbnRseSBuZWVkIGFu eSBSZXNvdXJjZU93bmVyIGluIGEgd2FscmVjZWl2ZXIgcHJvY2VzcywgYnV0Ci0JICogaWYgd2Ug ZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0ZUF1eFByb2Nlc3NSZXNvdXJjZU93bmVyIGhlcmUuCi0J ICovCi0KLQkvKiBJbml0aWFsaXNlIHN0YXRzIHRvIGEgc2FuaXNoIHZhbHVlICovCi0JTXlMb2dp Y2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9y ZWN2X3RpbWUgPQotCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUgPSBHZXRDdXJyZW50 VGltZXN0YW1wKCk7Ci0KLQkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8K LQlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CiAKIAkvKiBSdW4gYXMgcmVw bGljYSBzZXNzaW9uIHJlcGxpY2F0aW9uIHJvbGUuICovCiAJU2V0Q29uZmlnT3B0aW9uKCJzZXNz aW9uX3JlcGxpY2F0aW9uX3JvbGUiLCAicmVwbGljYSIsCkBAIC0zNjU5LDEyICs0MDM1LDUwIEBA IEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJZXJlcG9ydChMT0csCiAJCQkJKGVy cm1zZygibG9naWNhbCByZXBsaWNhdGlvbiB0YWJsZSBzeW5jaHJvbml6YXRpb24gd29ya2VyIGZv ciBzdWJzY3JpcHRpb24gXCIlc1wiLCB0YWJsZSBcIiVzXCIgaGFzIHN0YXJ0ZWQiLAogCQkJCQkJ TXlTdWJzY3JpcHRpb24tPm5hbWUsIGdldF9yZWxfbmFtZShNeUxvZ2ljYWxSZXBXb3JrZXItPnJl bGlkKSkpKTsKKwllbHNlIGlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQorCQllcmVwb3J0KExPRywK KwkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IGJhY2tncm91bmQgd29ya2Vy IGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKKwkJCQkJCU15U3Vic2NyaXB0 aW9uLT5uYW1lKSkpOwogCWVsc2UKIAkJZXJlcG9ydChMT0csCiAJCQkJKGVycm1zZygibG9naWNh bCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIHN0 YXJ0ZWQiLAogCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKIAlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKK30KKworLyogTG9naWNhbCBSZXBsaWNhdGlvbiBBcHBseSB3b3JrZXIg ZW50cnkgcG9pbnQgKi8KK3ZvaWQKK0FwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKK3sK KwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOworCWNoYXIJCW9y aWdpbm5hbWVbTkFNRURBVEFMRU5dOworCVhMb2dSZWNQdHIJb3JpZ2luX3N0YXJ0cG9zID0gSW52 YWxpZFhMb2dSZWNQdHI7CisJY2hhcgkgICAqbXlzbG90bmFtZSA9IE5VTEw7CisJV2FsUmN2U3Ry ZWFtT3B0aW9ucyBvcHRpb25zOworCWludAkJCXNlcnZlcl92ZXJzaW9uOworCisJLyogQXR0YWNo IHRvIHNsb3QgKi8KKwlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Nsb3QpOworCisJ LyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nICovCisJcHFzaWduYWwoU0lHSFVQLCBTaWduYWxIYW5k bGVyRm9yQ29uZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChTSUdURVJNLCBkaWUpOworCUJhY2tncm91 bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOworCisJLyoKKwkgKiBXZSBkb24ndCBjdXJyZW50bHkg bmVlZCBhbnkgUmVzb3VyY2VPd25lciBpbiBhIHdhbHJlY2VpdmVyIHByb2Nlc3MsIGJ1dAorCSAq IGlmIHdlIGRpZCwgd2UgY291bGQgY2FsbCBDcmVhdGVBdXhQcm9jZXNzUmVzb3VyY2VPd25lciBo ZXJlLgorCSAqLworCisJLyogSW5pdGlhbGlzZSBzdGF0cyB0byBhIHNhbmlzaCB2YWx1ZSAqLwor CU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXIt Pmxhc3RfcmVjdl90aW1lID0KKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gR2V0 Q3VycmVudFRpbWVzdGFtcCgpOworCisJLyogTG9hZCB0aGUgbGlicHEtc3BlY2lmaWMgZnVuY3Rp b25zICovCisJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2UpOworCisJSW5pdGlh bGl6ZUFwcGx5V29ya2VyKCk7CiAKIAkvKiBDb25uZWN0IHRvIHRoZSBvcmlnaW4gYW5kIHN0YXJ0 IHRoZSByZXBsaWNhdGlvbi4gKi8KIAllbG9nKERFQlVHMSwgImNvbm5lY3RpbmcgdG8gcHVibGlz aGVyIHVzaW5nIGNvbm5lY3Rpb24gc3RyaW5nIFwiJXNcIiIsCkBAIC0zNzEwLDcgKzQxMjQsNyBA QCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCW9yaWdpbmlkID0gcmVwbG9yaWdp bl9ieV9uYW1lKG9yaWdpbm5hbWUsIHRydWUpOwogCQlpZiAoIU9pZElzVmFsaWQob3JpZ2luaWQp KQogCQkJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2NyZWF0ZShvcmlnaW5uYW1lKTsKLQkJcmVwbG9y aWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVw KG9yaWdpbmlkLCAwKTsKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOwog CQlvcmlnaW5fc3RhcnRwb3MgPSByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGZhbHNl KTsKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CkBAIC0zNzUxLDEzICs0MTY1LDE0IEBA IEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAogCXNlcnZlcl92ZXJzaW9uID0gd2Fs cmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOwogCW9wdGlvbnMucHJv dG8ubG9naWNhbC5wcm90b192ZXJzaW9uID0KKwkJc2VydmVyX3ZlcnNpb24gPj0gMTYwMDAwID8g TE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gOgogCQlzZXJ2ZXJf dmVyc2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVN IDoKIAkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1f VkVSU0lPTl9OVU0gOgogCQlMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVNOwogCiAJb3B0aW9u cy5wcm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVzID0gTXlTdWJzY3JpcHRpb24tPnB1Ymxp Y2F0aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwuYmluYXJ5ID0gTXlTdWJzY3JpcHRpb24t PmJpbmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gTXlTdWJzY3JpcHRp b24tPnN0cmVhbTsKKwlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0gKE15U3Vic2Ny aXB0aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX09GRik7CiAJb3B0aW9ucy5wcm90by5sb2dpY2Fs LnR3b3BoYXNlID0gZmFsc2U7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLm9yaWdpbiA9IHBzdHJk dXAoTXlTdWJzY3JpcHRpb24tPm9yaWdpbik7CiAKQEAgLTM5MTYsNyArNDMzMSw4IEBAIGNsZWFy X3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pCiAJWExvZ1JlY1B0 cglteXNraXBsc24gPSBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbjsKIAlib29sCQlzdGFydGVkX3R4 ID0gZmFsc2U7CiAKLQlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQobXlza2lwbHNuKSkp CisJaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlkKG15c2tpcGxzbikpIHx8CisJCWFtX2Fw cGx5X2Jnd29ya2VyKCkpCiAJCXJldHVybjsKIAogCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkp CkBAIC0zOTg4LDcgKzQ0MDQsNyBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1Jl Y1B0ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJvciBjYWxsYmFjayB0byBnaXZlIG1vcmUgY29u dGV4dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcgYXBwbGllZCAqLwotc3RhdGljIHZvaWQK K3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIHsKIAlBcHBseUVycm9yQ2Fs bGJhY2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJvcl9jYWxsYmFja19hcmc7CkBAIC00MDE2LDIz ICs0NDMyLDQ3IEBAIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIAkJCQkJICAgZXJy YXJnLT5yZW1vdGVfeGlkLAogCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hf bHNuKSk7CiAJfQotCWVsc2UgaWYgKGVycmFyZy0+cmVtb3RlX2F0dG51bSA8IDApCi0JCWVycmNv bnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVz XCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNc IiBpbiB0cmFuc2FjdGlvbiAldSBmaW5pc2hlZCBhdCAlWC8lWCIsCi0JCQkJICAgZXJyYXJnLT5v cmlnaW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1h bmQpLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKLQkJCQkgICBlcnJh cmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAot CQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKIAllbHNlCi0JCWVy cmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBc IiVzXCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMu JXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1IGZpbmlzaGVkIGF0ICVYLyVYIiwK LQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90 eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3Bu YW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKLQkJCQkgICBlcnJh cmctPnJlbC0+cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCi0JCQkJ ICAgZXJyYXJnLT5yZW1vdGVfeGlkLAotCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZp bmlzaF9sc24pKTsKKwl7CisJCWlmIChlcnJhcmctPnJlbW90ZV9hdHRudW0gPCAwKQorCQl7CisJ CQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChlcnJhcmctPmZpbmlzaF9sc24pKQorCQkJCWVycmNv bnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVz XCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNc IiBpbiB0cmFuc2FjdGlvbiAldSIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJ CQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAg IGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5y ZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCk7CisJCQllbHNl CisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24g b3JpZ2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRp b24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IGZpbmlzaGVkIGF0ICVYLyVYIiwKKwkJCQkJ CSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlw ZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3Bu YW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAg ZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+Zmlu aXNoX2xzbikpOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQo ZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBk YXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVzXCIgZm9yIHJlcGxp Y2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29sdW1uIFwiJXNcIiBpbiB0cmFuc2Fj dGlvbiAldSIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNh bHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVs LT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVs bmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwuYXR0bmFtZXNbZXJyYXJnLT5y ZW1vdGVfYXR0bnVtXSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCk7CisJCQllbHNlCisJ CQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3Jp Z2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24g XCIlcy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUgZmluaXNoZWQgYXQgJVgv JVgiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBf bWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVt b3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUs CisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3Rl X2F0dG51bV0sCisJCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCisJCQkJCQkgICBMU05fRk9S TUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJCX0KKwl9CiB9CiAKIC8qIFNldCB0cmFu c2FjdGlvbiBpbmZvcm1hdGlvbiBvZiBhcHBseSBlcnJvciBjYWxsYmFjayAqLwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggYTNjMWJhOC4uZjllMzg4 YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0x ODQzLDYgKzE4NDMsOSBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xzbikKIHsKIAlSZW9y ZGVyQnVmZmVyVFhOICp0b3B0eG47CisJUEdPdXRwdXREYXRhICpkYXRhID0gKFBHT3V0cHV0RGF0 YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlib29sIHdyaXRlX2Fib3J0X2xzbiA9 IChkYXRhLT5wcm90b2NvbF92ZXJzaW9uID49CisJCQkJCQkJTE9HSUNBTFJFUF9QUk9UT19TVFJF QU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0pOwogCiAJLyoKIAkgKiBUaGUgYWJvcnQgc2hvdWxkIGhh cHBlbiBvdXRzaWRlIHN0cmVhbWluZyBibG9jaywgZXZlbiBmb3Igc3RyZWFtZWQKQEAgLTE4NTYs NyArMTg1OSw4IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4LAogCUFzc2VydChyYnR4bl9pc19zdHJlYW1lZCh0b3B0eG4pKTsKIAogCU91 dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOwotCWxvZ2ljYWxyZXBfd3JpdGVfc3Ry ZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLT54aWQpOworCWxvZ2ljYWxyZXBf d3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLCBhYm9ydF9sc24s CisJCQkJCQkJCSAgd3JpdGVfYWJvcnRfbHNuKTsKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRy dWUpOwogCiAJY2xlYW51cF9yZWxfc3luY19jYWNoZSh0b3B0eG4tPnhpZCwgZmFsc2UpOwpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4IDkyZjI0YTYuLjdiNjY3NjYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTM4OCw2ICszODgs OSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdhaXRFdmVudElQQyB3KQogCQljYXNlIFdBSVRfRVZF TlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQ6CiAJCQlldmVudF9uYW1lID0gIkhhc2hHcm93 QnVja2V0c1JlaW5zZXJ0IjsKIAkJCWJyZWFrOworCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9B UFBMWV9CR1dPUktFUl9TVEFURV9DSEFOR0U6CisJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxBcHBs eUJnd29ya2VyU3RhdGVDaGFuZ2UiOworCQkJYnJlYWs7CiAJCWNhc2UgV0FJVF9FVkVOVF9MT0dJ Q0FMX1NZTkNfREFUQToKIAkJCWV2ZW50X25hbWUgPSAiTG9naWNhbFN5bmNEYXRhIjsKIAkJCWJy ZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggNWRiNWRmNi4uOTI1NzMxZCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNj L2d1Yy5jCkBAIC0zMjIzLDYgKzMyMjMsMTggQEAgc3RhdGljIHN0cnVjdCBjb25maWdfaW50IENv bmZpZ3VyZU5hbWVzSW50W10gPQogCX0sCiAKIAl7CisJCXsibWF4X2FwcGx5X2Jnd29ya2Vyc19w ZXJfc3Vic2NyaXB0aW9uIiwKKwkJCVBHQ19TSUdIVVAsCisJCQlSRVBMSUNBVElPTl9TVUJTQ1JJ QkVSUywKKwkJCWdldHRleHRfbm9vcCgiTWF4aW11bSBudW1iZXIgb2YgYXBwbHkgYmFja2dyb3Vu ZCB3b3JrZXJzIHBlciBzdWJzY3JpcHRpb24uIiksCisJCQlOVUxMLAorCQl9LAorCQkmbWF4X2Fw cGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLAorCQkyLCAwLCBNQVhfQkFDS0VORFMsCisJ CU5VTEwsIE5VTEwsIE5VTEwKKwl9LAorCisJewogCQl7ImxvZ19yb3RhdGlvbl9hZ2UiLCBQR0Nf U0lHSFVQLCBMT0dHSU5HX1dIRVJFLAogCQkJZ2V0dGV4dF9ub29wKCJTZXRzIHRoZSBhbW91bnQg b2YgdGltZSB0byB3YWl0IGJlZm9yZSBmb3JjaW5nICIKIAkJCQkJCSAibG9nIGZpbGUgcm90YXRp b24uIiksCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29u Zi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUK aW5kZXggOTBiZWMwNS4uNzM0ZDA3YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlz Yy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZQpAQCAtMzYwLDYgKzM2MCw3IEBACiAjbWF4X2xvZ2ljYWxfcmVw bGljYXRpb25fd29ya2VycyA9IDQJIyB0YWtlbiBmcm9tIG1heF93b3JrZXJfcHJvY2Vzc2VzCiAJ CQkJCSMgKGNoYW5nZSByZXF1aXJlcyByZXN0YXJ0KQogI21heF9zeW5jX3dvcmtlcnNfcGVyX3N1 YnNjcmlwdGlvbiA9IDIJIyB0YWtlbiBmcm9tIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtl cnMKKyNtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJv bSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCiAKIAogIy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKaW5kZXggZGE2NjA1MS4uMmE4ZGEyNiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00 NDgwLDcgKzQ0ODAsNyBAQCBnZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJaWYgKGZv dXQtPnJlbW90ZVZlcnNpb24gPj0gMTQwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVy eSwgIiBzLnN1YnN0cmVhbSxcbiIpOwogCWVsc2UKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIgZmFsc2UgQVMgc3Vic3RyZWFtLFxuIik7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LCAiICdmJyBBUyBzdWJzdHJlYW0sXG4iKTsKIAogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9u ID49IDE1MDAwMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCkBAIC00NjE3LDggKzQ2 MTcsMTAgQEAgZHVtcFN1YnNjcmlwdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBTdWJzY3JpcHRp b25JbmZvICpzdWJpbmZvKQogCWlmIChzdHJjbXAoc3ViaW5mby0+c3ViYmluYXJ5LCAidCIpID09 IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBiaW5hcnkgPSB0cnVlIik7CiAK LQlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgImYiKSAhPSAwKQorCWlmIChzdHJjbXAo c3ViaW5mby0+c3Vic3RyZWFtLCAidCIpID09IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1 ZXJ5LCAiLCBzdHJlYW1pbmcgPSBvbiIpOworCWVsc2UgaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJz dHJlYW0sICJwIikgPT0gMCkKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHN0cmVh bWluZyA9IHBhcmFsbGVsIik7CiAKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnR3b3BoYXNlc3Rh dGUsIHR3b19waGFzZV9kaXNhYmxlZCkgIT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVl cnksICIsIHR3b19waGFzZSA9IG9uIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24u aAppbmRleCA3Yjk4NzE0Li5mNGUxZTk0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0 aW9uLmgKQEAgLTgwLDcgKzgwLDggQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJz Y3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAlib29sCQlz dWJiaW5hcnk7CQkvKiBUcnVlIGlmIHRoZSBzdWJzY3JpcHRpb24gd2FudHMgdGhlCiAJCQkJCQkJ CSAqIHB1Ymxpc2hlciB0byBzZW5kIGRhdGEgaW4gYmluYXJ5ICovCiAKLQlib29sCQlzdWJzdHJl YW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworCWNoYXIJCXN1YnN0 cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuCisJCQkJCQkJCSAqIFNl ZSBTVUJTVFJFQU1feHh4IGNvbnN0YW50cy4gKi8KIAogCWNoYXIJCXN1YnR3b3BoYXNlc3RhdGU7 CS8qIFN0cmVhbSB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAKQEAgLTEyNCw3ICsxMjUsOCBA QCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQllbmFibGVkOwkJLyogSW5kaWNh dGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gaXMgZW5hYmxlZCAqLwogCWJvb2wJCWJpbmFyeTsJCQkv KiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyBkYXRhIGluCiAJCQkJCQkJCSAq IGJpbmFyeSBmb3JtYXQgKi8KLQlib29sCQlzdHJlYW07CQkJLyogQWxsb3cgc3RyZWFtaW5nIGlu LXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdHJlYW07CQkJLyogQWxsb3cgc3Ry ZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KKwkJCQkJCQkJICogU2VlIFNVQlNUUkVB TV94eHggY29uc3RhbnRzLiAqLwogCWNoYXIJCXR3b3BoYXNlc3RhdGU7CS8qIEFsbG93IHN0cmVh bWluZyB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAJYm9vbAkJZGlzYWJsZW9uZXJyOwkvKiBJ bmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJICogYXV0b21h dGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgpAQCAtMTM3LDYgKzEzOSwyMSBAQCB0 eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAkJCQkJCQkJICogc3BlY2lmaWVkIG9yaWdpbiAq LwogfSBTdWJzY3JpcHRpb247CiAKKy8qIERpc2FsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0 cmFuc2FjdGlvbnMuICovCisjZGVmaW5lIFNVQlNUUkVBTV9PRkYgJ2YnCisKKy8qCisgKiBTdHJl YW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSB3cml0dGVuIHRvIGEgdGVtcG9yYXJ5 IGZpbGUgYW5kCisgKiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZCBvbiB1cHN0cmVhbS4KKyAqLworI2RlZmluZSBTVUJTVFJFQU1fT04gJ3QnCisKKy8qCisg KiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSBhcHBsaWVkIGltbWVkaWF0 ZWx5IHZpYSBhIGJhY2tncm91bmQKKyAqIHdvcmtlci4KKyAqLworI2RlZmluZSBTVUJTVFJFQU1f UEFSQUxMRUwgJ3AnCisKIGV4dGVybiBTdWJzY3JpcHRpb24gKkdldFN1YnNjcmlwdGlvbihPaWQg c3ViaWQsIGJvb2wgbWlzc2luZ19vayk7CiBleHRlcm4gdm9pZCBGcmVlU3Vic2NyaXB0aW9uKFN1 YnNjcmlwdGlvbiAqc3ViKTsKIGV4dGVybiB2b2lkIERpc2FibGVTdWJzY3JpcHRpb24oT2lkIHN1 YmlkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hl ci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgKaW5kZXggZjFl MjgyMS4uYWM4ZWY5NCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bGxhdW5jaGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVy LmgKQEAgLTE0LDYgKzE0LDcgQEAKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfbG9naWNh bF9yZXBsaWNhdGlvbl93b3JrZXJzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfc3luY193 b3JrZXJzX3Blcl9zdWJzY3JpcHRpb247CitleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9hcHBs eV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsKIAogZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hl clJlZ2lzdGVyKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFp bl9hcmcpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3Rv LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAppbmRleCBhNzcxYWI4 Li5lYjBmZDI0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJv dG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaApAQCAtMzIs MTIgKzMyLDE3IEBACiAgKgogICogTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05V TSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uIHdpdGgKICAqIHN1cHBvcnQgZm9yIHR3 by1waGFzZSBjb21taXQgZGVjb2RpbmcgKGF0IHByZXBhcmUgdGltZSkuIEludHJvZHVjZWQgaW4g UEcxNS4KKyAqCisgKiBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05V TSBpcyB0aGUgbWluaW11bSBwcm90b2NvbCB2ZXJzaW9uCisgKiB3aXRoIHN1cHBvcnQgZm9yIHN0 cmVhbWluZyBsYXJnZSB0cmFuc2FjdGlvbnMgdXNpbmcgYXBwbHkgYmFja2dyb3VuZAorICogd29y a2Vycy4gSW50cm9kdWNlZCBpbiBQRzE2LgogICovCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9f TUlOX1ZFUlNJT05fTlVNIDEKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19WRVJTSU9OX05VTSAx CiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNIDIKICNkZWZpbmUg TE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSAzCi0jZGVmaW5lIExPR0lDQUxS RVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lP Tl9OVU0KKyNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9O VU0gNAorI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01BWF9WRVJTSU9OX05VTSBMT0dJQ0FMUkVQ X1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTQogCiAvKgogICogTG9naWNhbCBtZXNz YWdlIHR5cGVzCkBAIC0xNzUsNiArMTgwLDE3IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBS b2xsYmFja1ByZXBhcmVkVHhuRGF0YQogCWNoYXIJCWdpZFtHSURTSVpFXTsKIH0gTG9naWNhbFJl cFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhOwogCisvKgorICogVHJhbnNhY3Rpb24gcHJvdG9jb2wg aW5mb3JtYXRpb24gZm9yIHN0cmVhbSBhYm9ydC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgTG9naWNh bFJlcFN0cmVhbUFib3J0RGF0YQoreworCVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9u SWQgc3VieGlkOworCVhMb2dSZWNQdHIJYWJvcnRfbHNuOworCVRpbWVzdGFtcFR6IGFib3J0X3Rp bWU7Cit9IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGE7CisKIGV4dGVybiB2b2lkIGxvZ2ljYWxy ZXBfd3JpdGVfYmVnaW4oU3RyaW5nSW5mbyBvdXQsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bik7CiBl eHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfYmVnaW4oU3RyaW5nSW5mbyBpbiwKIAkJCQkJCQkJ ICBMb2dpY2FsUmVwQmVnaW5EYXRhICpiZWdpbl9kYXRhKTsKQEAgLTI0Niw5ICsyNjIsMTIgQEAg ZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gb3V0 LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4KIGV4dGVybiBUcmFuc2FjdGlvbklkIGxvZ2ljYWxyZXBf cmVhZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gb3V0LAogCQkJCQkJCQkJCQkJICAgTG9naWNh bFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3Jp dGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKLQkJCQkJ CQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkKTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVh ZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJ CQkJCSBUcmFuc2FjdGlvbklkICpzdWJ4aWQpOworCQkJCQkJCQkJCSAgUmVvcmRlckJ1ZmZlclRY TiAqdHhuLAorCQkJCQkJCQkJCSAgWExvZ1JlY1B0ciBhYm9ydF9sc24sCisJCQkJCQkJCQkJICBi b29sIHdyaXRlX2Fib3J0X2xzbik7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFt X2Fib3J0KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJCQkJIExvZ2ljYWxSZXBTdHJlYW1BYm9ydERh dGEgKmFib3J0X2RhdGEsCisJCQkJCQkJCQkJIGJvb2wgcmVhZF9hYm9ydF9sc24pOwogZXh0ZXJu IGNoYXIgKmxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbik7 CiAKICNlbmRpZgkJCQkJCQkvKiBMT0dJQ0FMX1BST1RPX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWx3b3JrZXIuaAppbmRleCBjZDFiNmU4Li42YTFhZjdmIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKKysrIGIvc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCkBAIC0xMyw2ICsxMyw3IEBACiAjZGVmaW5lIExP R0lDQUxXT1JLRVJfSAogCiBleHRlcm4gdm9pZCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9h cmcpOworZXh0ZXJuIHZvaWQgQXBwbHlCZ3dvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpOwogCiBl eHRlcm4gYm9vbCBJc0xvZ2ljYWxXb3JrZXIodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2lu LmgKaW5kZXggMmQxYjVlNS4uNDBlYmFkMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vb3JpZ2luLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKQEAg LTUzLDcgKzUzLDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdpbl9nZXRfcHJvZ3Jlc3Mo UmVwT3JpZ2luSWQgbm9kZSwgYm9vbCBmbHVzaCk7CiAKIGV4dGVybiB2b2lkIHJlcGxvcmlnaW5f c2Vzc2lvbl9hZHZhbmNlKFhMb2dSZWNQdHIgcmVtb3RlX2NvbW1pdCwKIAkJCQkJCQkJCSAgIFhM b2dSZWNQdHIgbG9jYWxfY29tbWl0KTsKLWV4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9z ZXR1cChSZXBPcmlnaW5JZCBub2RlKTsKK2V4dGVybiB2b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9z ZXR1cChSZXBPcmlnaW5JZCBub2RlLCBpbnQgYWNxdWlyZWRfYnkpOwogZXh0ZXJuIHZvaWQgcmVw bG9yaWdpbl9zZXNzaW9uX3Jlc2V0KHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdp bl9zZXNzaW9uX2dldF9wcm9ncmVzcyhib29sIGZsdXNoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vcmVvcmRlcmJ1ZmZlci5oCmluZGV4IDJjOTIwNmEuLjM4YzRkYmEgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAorKysgYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKQEAgLTMwMSw2ICszMDEsNyBAQCB0eXBlZGVmIHN0 cnVjdCBSZW9yZGVyQnVmZmVyVFhOCiAJewogCQlUaW1lc3RhbXBUeiBjb21taXRfdGltZTsKIAkJ VGltZXN0YW1wVHogcHJlcGFyZV90aW1lOworCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1lOwogCX0J CQl4YWN0X3RpbWU7CiAKIAkvKgpAQCAtNjQ3LDkgKzY0OCwxMSBAQCBleHRlcm4gdm9pZCBSZW9y ZGVyQnVmZmVyRmluaXNoUHJlcGFyZWQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQg eGlkLAogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFzc2lnbkNoaWxkKFJlb3JkZXJCdWZmZXIg KiwgVHJhbnNhY3Rpb25JZCwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBjb21taXRfbHNuKTsK IGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJDb21taXRDaGlsZChSZW9yZGVyQnVmZmVyICosIFRy YW5zYWN0aW9uSWQsIFRyYW5zYWN0aW9uSWQsCiAJCQkJCQkJCQkgWExvZ1JlY1B0ciBjb21taXRf bHNuLCBYTG9nUmVjUHRyIGVuZF9sc24pOwotZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0 KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24pOworZXh0ZXJu IHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwg WExvZ1JlY1B0ciBsc24sCisJCQkJCQkJICAgVGltZXN0YW1wVHogYWJvcnRfdGltZSk7CiBleHRl cm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlv bklkIHhpZCk7Ci1leHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIg KiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24pOworZXh0ZXJuIHZvaWQgUmVvcmRlckJ1 ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFhMb2dSZWNQdHIgbHNu LAorCQkJCQkJCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1lKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJC dWZmZXJJbnZhbGlkYXRlKFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0 ciBsc24pOwogCiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyU2V0QmFzZVNuYXBzaG90KFJlb3Jk ZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBsc24sIHN0cnVjdCBTbmFwc2hv dERhdGEgKnNuYXApOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2Vy X2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApp bmRleCA5MDE4NDVhLi44ZjAzYWQ0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJf aW50ZXJuYWwuaApAQCAtMTcsOCArMTcsMTEgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImRhdGF0 eXBlL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5o IgogI2luY2x1ZGUgInN0b3JhZ2UvZmlsZXNldC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5o IgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX21xLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1fdG9j LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAKIApAQCAtNjAsNiArNjMsMTIgQEAgdHlw ZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgogCSAqLwogCUZpbGVTZXQgICAgKnN0cmVhbV9m aWxlc2V0OwogCisJLyoKKwkgKiBQSUQgb2YgbWFpbiBhcHBseSB3b3JrZXIgaWYgdGhpcyBzbG90 IGlzIHVzZWQgZm9yIGFuIGFwcGx5IGJhY2tncm91bmQKKwkgKiB3b3JrZXIuCisJICovCisJaW50 CQkJbWFpbl93b3JrZXJfcGlkOworCiAJLyogU3RhdHMuICovCiAJWExvZ1JlY1B0cglsYXN0X2xz bjsKIAlUaW1lc3RhbXBUeiBsYXN0X3NlbmRfdGltZTsKQEAgLTY4LDggKzc3LDcwIEBAIHR5cGVk ZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIKIAlUaW1lc3RhbXBUeiByZXBseV90aW1lOwogfSBM b2dpY2FsUmVwV29ya2VyOwogCisvKiBTdHJ1Y3QgZm9yIHNhdmluZyBhbmQgcmVzdG9yaW5nIGFw cGx5IGVycmNvbnRleHQgaW5mb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0IEFwcGx5RXJyb3JD YWxsYmFja0FyZworeworCUxvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQ7CS8qIDAgaWYgaW52YWxp ZCAqLworCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsOworCisJLyogUmVtb3RlIG5vZGUgaW5m b3JtYXRpb24gKi8KKwlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAtMSBpZiBpbnZhbGlkICovCisJ VHJhbnNhY3Rpb25JZCByZW1vdGVfeGlkOworCVhMb2dSZWNQdHIJZmluaXNoX2xzbjsKKwljaGFy CSAgICpvcmlnaW5fbmFtZTsKK30gQXBwbHlFcnJvckNhbGxiYWNrQXJnOworCisvKgorICogU3Rh dHVzIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLgorICovCit0eXBlZGVmIGVudW0gQXBwbHlC Z3dvcmtlclN0YXR1cworeworCUFQUExZX0JHV09SS0VSX0JVU1kgPSAwLAkJLyogYXNzaWduZWQg dG8gYSB0cmFuc2FjdGlvbiAqLworCUFQUExZX0JHV09SS0VSX0ZJTklTSEVELAkJLyogdHJhbnNh Y3Rpb24gaXMgY29tcGxldGVkICovCisJQVBQTFlfQkdXT1JLRVJfRVhJVAkJCQkvKiBleGl0ICov Cit9IEFwcGx5Qmd3b3JrZXJTdGF0dXM7CisKKy8qCisgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcgaW5m b3JtYXRpb24gYmV0d2VlbiBhcHBseSBtYWluIGFuZCBhcHBseSBiYWNrZ3JvdW5kCisgKiB3b3Jr ZXJzLgorICovCit0eXBlZGVmIHN0cnVjdCBBcHBseUJnd29ya2VyU2hhcmVkCit7CisJc2xvY2tf dAltdXRleDsKKworCS8qIFN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gKi8KKwlB cHBseUJnd29ya2VyU3RhdHVzCXN0YXR1czsKKworCS8qIExvZ2ljYWwgcHJvdG9jb2wgdmVyc2lv bi4gKi8KKwl1aW50MzIJcHJvdG9fdmVyc2lvbjsKKworCVRyYW5zYWN0aW9uSWQJc3RyZWFtX3hp ZDsKKworCS8qIElkIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyICovCisJdWludDMyCXdvcmtl cl9pZDsKK30gQXBwbHlCZ3dvcmtlclNoYXJlZDsKKworLyoKKyAqIEluZm9ybWF0aW9uIHdoaWNo IGlzIHVzZWQgdG8gbWFuYWdlIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqLwordHlw ZWRlZiBzdHJ1Y3QgQXBwbHlCZ3dvcmtlckluZm8KK3sKKwlzaG1fbXFfaGFuZGxlCQkJKm1xX2hh bmRsZTsKKwlkc21fc2VnbWVudAkJCQkqZHNtX3NlZzsKKwlBcHBseUJnd29ya2VyU2hhcmVkIHZv bGF0aWxlCSpzaGFyZWQ7Cit9IEFwcGx5Qmd3b3JrZXJJbmZvOworCiAvKiBNYWluIG1lbW9yeSBj b250ZXh0IGZvciBhcHBseSB3b3JrZXIuIFBlcm1hbmVudCBkdXJpbmcgd29ya2VyIGxpZmV0aW1l LiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0OworZXh0 ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlNZXNzYWdlQ29udGV4dDsKKworZXh0 ZXJuIFBHRExMSU1QT1JUIEFwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFj a19hcmc7CisKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIE15U3Vic2NyaXB0aW9uVmFsaWQ7CisK K2V4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBBcHBseUJnd29ya2VyU2hhcmVkICpNeVBhcmFs bGVsU2hhcmVkOworCitleHRlcm4gUEdETExJTVBPUlQgTGlzdCAqc3VieGFjdGxpc3Q7CiAKIC8q IGxpYnBxcmVjZWl2ZXIgY29ubmVjdGlvbiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIHN0cnVjdCBX YWxSZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm47CkBAIC03OSwxOCArMTUwLDIy IEBAIGV4dGVybiBQR0RMTElNUE9SVCBTdWJzY3JpcHRpb24gKk15U3Vic2NyaXB0aW9uOwogZXh0 ZXJuIFBHRExMSU1QT1JUIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtlcjsKIAog ZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgaW5fcmVtb3RlX3RyYW5zYWN0aW9uOworZXh0ZXJuIFBH RExMSU1QT1JUIGJvb2wgaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb247CitleHRlcm4gUEdETExJTVBP UlQgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkOwogCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dv cmtlcl9hdHRhY2goaW50IHNsb3QpOwogZXh0ZXJuIExvZ2ljYWxSZXBXb3JrZXIgKmxvZ2ljYWxy ZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJCQlib29sIG9u bHlfcnVubmluZyk7CiBleHRlcm4gTGlzdCAqbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoT2lkIHN1 YmlkLCBib29sIG9ubHlfcnVubmluZyk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9s YXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKLQkJCQkJCQkJ CSBPaWQgdXNlcmlkLCBPaWQgcmVsaWQpOworZXh0ZXJuIGJvb2wgbG9naWNhbHJlcF93b3JrZXJf bGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsCisJCQkJCQkJ CQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkLAorCQkJCQkJCQkJIGRzbV9oYW5kbGUgc3Vid29ya2Vy X2RzbSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lk IHJlbGlkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1cChPaWQgc3ViaWQs IE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93YWtldXBfcHRyKExv Z2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CiAKIGV4dGVybiBpbnQJbG9naWNhbHJlcF9zeW5jX3dv cmtlcl9jb3VudChPaWQgc3ViaWQpOworZXh0ZXJuIGludAlsb2dpY2FscmVwX2FwcGx5X2Jnd29y a2VyX2NvdW50KE9pZCBzdWJpZCk7CiAKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uT3JpZ2luTmFt ZUZvclRhYmxlc3luYyhPaWQgc3Vib2lkLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJCSAgY2hhciAq b3JpZ2lubmFtZSwgaW50IHN6b3JnbmFtZSk7CkBAIC0xMDMsMTAgKzE3OCw0MiBAQCBleHRlcm4g dm9pZCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pOwogZXh0 ZXJuIHZvaWQgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcyhEYXR1bSBhcmcsIGludCBj YWNoZWlkLAogCQkJCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKTsKIAorZXh0ZXJuIHZvaWQgVXBk YXRlV29ya2VyU3RhdHMoWExvZ1JlY1B0ciBsYXN0X2xzbiwgVGltZXN0YW1wVHogc2VuZF90aW1l LAorCQkJCQkJCSAgYm9vbCByZXBseSk7CisKK2V4dGVybiB2b2lkIGFwcGx5X2Rpc3BhdGNoKFN0 cmluZ0luZm8gcyk7CisKK2V4dGVybiB2b2lkIEluaXRpYWxpemVBcHBseVdvcmtlcih2b2lkKTsK KworLyogRnVuY3Rpb24gZm9yIGFwcGx5IGVycm9yIGNhbGxiYWNrICovCitleHRlcm4gdm9pZCBh cHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOworCitleHRlcm4gdm9pZCBzdWJzY3JpcHRp b25fY2hhbmdlX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpOwor CisvKiBBcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBzZXR1cCBhbmQgaW50ZXJhY3Rpb25zICovCitl eHRlcm4gQXBwbHlCZ3dvcmtlckluZm8gKmFwcGx5X2Jnd29ya2VyX3N0YXJ0KFRyYW5zYWN0aW9u SWQgeGlkKTsKK2V4dGVybiBBcHBseUJnd29ya2VySW5mbyAqYXBwbHlfYmd3b3JrZXJfZmluZChU cmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl93YWl0X2ZvcihB cHBseUJnd29ya2VySW5mbyAqd3N0YXRlLAorCQkJCQkJCQkJQXBwbHlCZ3dvcmtlclN0YXR1cyB3 YWl0X2Zvcl9zdGF0dXMpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKEFw cGx5Qmd3b3JrZXJJbmZvICp3c3RhdGUsIFNpemUgbmJ5dGVzLAorCQkJCQkJCQkJIGNvbnN0IHZv aWQgKmRhdGEpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfZnJlZShBcHBseUJnd29ya2Vy SW5mbyAqd3N0YXRlKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cyh2 b2lkKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX3NldF9zdGF0dXMoQXBwbHlCZ3dvcmtl clN0YXR1cyBzdGF0dXMpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc3VieGFjdF9pbmZv X2FkZChUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29y a2VyX3NhdmVwb2ludF9uYW1lKE9pZCBzdWJvaWQsIE9pZCByZWxpZCwKKwkJCQkJCQkJCQkgIGNo YXIgKnNwbmFtZSwgaW50IHN6c3ApOworCiBzdGF0aWMgaW5saW5lIGJvb2wKIGFtX3RhYmxlc3lu Y193b3JrZXIodm9pZCkKIHsKIAlyZXR1cm4gT2lkSXNWYWxpZChNeUxvZ2ljYWxSZXBXb3JrZXIt PnJlbGlkKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sCithbV9hcHBseV9iZ3dvcmtlcih2b2lk KQoreworCXJldHVybiBNeUxvZ2ljYWxSZXBXb3JrZXItPm1haW5fd29ya2VyX3BpZCAhPSAwOwor fQorCiAjZW5kaWYJCQkJCQkJLyogV09SS0VSX0lOVEVSTkFMX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZl bnQuaAppbmRleCA2ZjJkNTYxLi44YWNlZTYzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGls cy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC0x MDUsNiArMTA1LDcgQEAgdHlwZWRlZiBlbnVtCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VU U19BTExPQ0FURSwKIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0VMRUNULAogCVdBSVRf RVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQsCisJV0FJVF9FVkVOVF9MT0dJQ0FMX0FQ UExZX0JHV09SS0VSX1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRB LAogCVdBSVRfRVZFTlRfTE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5UX01R X0lOVEVSTkFMLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3Jp cHRpb24ub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0Cmlu ZGV4IGVmMGViZjkuLjk5YjllODYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc3Vic2NyaXB0aW9uLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNj cmlwdGlvbi5vdXQKQEAgLTIxNyw5ICsyMTcsOSBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVz c190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAoMSByb3cpCiAKIERST1AgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29s ZWFuCistLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBD UkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVn cmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZh bHNlLCBzdHJlYW1pbmcgPSBmb28pOwotRVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29s ZWFuIHZhbHVlCitFUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3Ig InBhcmFsbGVsIgogLS0gbm93IGl0IHdvcmtzCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQkxJQ0FU SU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSB0cnVlKTsKIFdB Uk5JTkc6ICB0YWJsZXMgd2VyZSBub3Qgc3Vic2NyaWJlZCwgeW91IHdpbGwgaGF2ZSB0byBydW4g QUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNIIFBVQkxJQ0FUSU9OIHRvIHN1YnNjcmliZSB0 aGUgdGFibGVzCkBAIC0yMzAsNiArMjMwLDE0IEBAIFdBUk5JTkc6ICB0YWJsZXMgd2VyZSBub3Qg c3Vic2NyaWJlZCwgeW91IHdpbGwgaGF2ZSB0byBydW4gQUxURVIgU1VCU0NSSVBUSU9OIC4uCiAg cmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1Yn0gICB8IGYgICAgICB8IHQgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAg ICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKK0FMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7CitcZFJzKworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKKyAgICAgIE5hbWUg ICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9u IHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJy b3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAg ICAgICAgfCBTa2lwIExTTiAKKy0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KKyByZWdyZXNz X3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVi fSAgIHwgZiAgICAgIHwgcCAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAg ICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vz bm90ZXhpc3QgfCAwLzAKKygxIHJvdykKKwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBTRVQgKHN0cmVhbWluZyA9IGZhbHNlKTsKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNz X3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIFxkUnMrCmRpZmYgLS1naXQgYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv c3Vic2NyaXB0aW9uLnNxbAppbmRleCA0NDI1ZmFmLi5lZDE0OGU0IDEwMDY0NAotLS0gYS9zcmMv dGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3N1YnNjcmlwdGlvbi5zcWwKQEAgLTE1Niw3ICsxNTYsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJ T04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAKIERST1AgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YjsKIAotLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJv b2xlYW4KKy0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuIG9yICdwYXJhbGxlbCcK IENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0g ZmFsc2UsIHN0cmVhbWluZyA9IGZvbyk7CiAKIC0tIG5vdyBpdCB3b3JrcwpAQCAtMTY0LDYgKzE2 NCwxMCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBVQgogCiBcZFJzKwogCitBTFRFUiBTVUJTQ1JJ UFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwpOworCitcZFJz KworCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0g ZmFsc2UpOwogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFt ZSA9IE5PTkUpOwogCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDM1YzlmMWUuLjllZjdi YzEgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMTYsNiArMTE2LDEwIEBAIEFwcGVu ZAogQXBwZW5kUGF0aAogQXBwZW5kUmVsSW5mbwogQXBwZW5kU3RhdGUKK0FwcGx5Qmd3b3JrZXJF bnRyeQorQXBwbHlCZ3dvcmtlclNoYXJlZAorQXBwbHlCZ3dvcmtlckluZm8KK0FwcGx5Qmd3b3Jr ZXJTdGF0dXMKIEFwcGx5RXJyb3JDYWxsYmFja0FyZwogQXBwbHlFeGVjdXRpb25EYXRhCiBBcHBs eVN1YlhhY3REYXRhCkBAIC0xNDg1LDYgKzE0ODksNyBAQCBMb2dpY2FsUmVwUmVsSWQKIExvZ2lj YWxSZXBSZWxNYXBFbnRyeQogTG9naWNhbFJlcFJlbGF0aW9uCiBMb2dpY2FsUmVwUm9sbGJhY2tQ cmVwYXJlZFR4bkRhdGEKK0xvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEKIExvZ2ljYWxSZXBUdXBs ZURhdGEKIExvZ2ljYWxSZXBUeXAKIExvZ2ljYWxSZXBXb3JrZXIKLS0gCjIuNy4yLndpbmRvd3Mu MQoK --_006_OS0PR01MB5716838ABB8716547F92030394649OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v21-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v21-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v21-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=6332; creation-date="Thu, 11 Aug 2022 08:02:00 GMT"; modification-date="Thu, 11 Aug 2022 08:04:38 GMT" Content-Transfer-Encoding: base64 RnJvbSBmODY3MWYxMDcxYmExZDliNjVjMTAyYzk4MDMzMjM5YTFiZWE3YTVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgMTEgQXVnIDIwMjIgMTE6NDk6MDggKzA4MDAKU3ViamVjdDogW1BBVENI IHYyMSA1LzVdIEFkZCBhIG1haW5fd29ya2VyX3BpZCB0byBwZ19zdGF0X3N1YnNjcmlwdGlvbgoK bWFpbl93b3JrZXJfcGlkIGlzIFByb2Nlc3MgSUQgb2YgdGhlIG1haW4gYXBwbHkgd29ya2VyLCBp ZiB0aGlzIHByb2Nlc3MgaXMgYQphcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gTlVMTCBpZiB0aGlz IHByb2Nlc3MgaXMgYSBtYWluIGFwcGx5IHdvcmtlciBvciBhCnN5bmNocm9uaXphdGlvbiB3b3Jr ZXIuCgpUaGUgbmV3IGNvbHVtbiBjYW4gbWFrZSBpdCBlYXNpZXIgdG8gZGlzdGluZ3Vpc2ggbWFp biBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CmJhY2tncm91bmQgd29ya2VyLgotLS0KIGRvYy9zcmMv c2dtbC9tb25pdG9yaW5nLnNnbWwgICAgICAgICAgICAgICB8IDExICsrKysrKysrKysrCiBzcmMv YmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgICAgICAgfCAgMSArCiBzcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgfCAyOCArKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAgfCAg NiArKystLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICB8ICAz ICsrLQogNSBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21s L21vbml0b3Jpbmcuc2dtbAppbmRleCBhNmU3ZTNiLi4wYzE0NzA5IDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNn bWwKQEAgLTMxODAsNiArMzE4MCwxNyBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdh aXRfZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogCiAgICAg IDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5tYWluX3dvcmtlcl9w aWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnRlZ2VyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAg ICAgPHBhcmE+CisgICAgICAgUHJvY2VzcyBJRCBvZiB0aGUgbWFpbiBhcHBseSB3b3JrZXIsIGlm IHRoaXMgcHJvY2VzcyBpcyBhIGFwcGx5CisgICAgICAgYmFja2dyb3VuZCB3b3JrZXIuIE5VTEwg aWYgdGhpcyBwcm9jZXNzIGlzIGEgbWFpbiBhcHBseSB3b3JrZXIgb3IgYQorICAgICAgIHN5bmNo cm9uaXphdGlvbiB3b3JrZXIuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisK KyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFy YSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+ CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggODI4NGNkZC4uZWNkMDhkZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtOTQ3LDYgKzk0Nyw3IEBAIENS RUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uIEFTCiAgICAgICAgICAgICBzdS5vaWQgQVMg c3ViaWQsCiAgICAgICAgICAgICBzdS5zdWJuYW1lLAogICAgICAgICAgICAgc3QucGlkLAorICAg ICAgICAgICAgc3QubWFpbl93b3JrZXJfcGlkLAogICAgICAgICAgICAgc3QucmVsaWQsCiAgICAg ICAgICAgICBzdC5yZWNlaXZlZF9sc24sCiAgICAgICAgICAgICBzdC5sYXN0X21zZ19zZW5kX3Rp bWUsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggODI1 ZTc1Ni4uNWE5MjcwMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9sYXVuY2hlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNo ZXIuYwpAQCAtMTAxMCw3ICsxMDEwLDcgQEAgSXNMb2dpY2FsTGF1bmNoZXIodm9pZCkKIERhdHVt CiBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oUEdfRlVOQ1RJT05fQVJHUykKIHsKLSNkZWZpbmUg UEdfU1RBVF9HRVRfU1VCU0NSSVBUSU9OX0NPTFMJOAorI2RlZmluZSBQR19TVEFUX0dFVF9TVUJT Q1JJUFRJT05fQ09MUwk5CiAJT2lkCQkJc3ViaWQgPSBQR19BUkdJU05VTEwoMCkgPyBJbnZhbGlk T2lkIDogUEdfR0VUQVJHX09JRCgwKTsKIAlpbnQJCQlpOwogCVJldHVyblNldEluZm8gKnJzaW5m byA9IChSZXR1cm5TZXRJbmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKQEAgLTEwNDQsMjYgKzEw NDQsMzIgQEAgcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVs c2UKIAkJCW51bGxzWzFdID0gdHJ1ZTsKIAkJdmFsdWVzWzJdID0gSW50MzJHZXREYXR1bSh3b3Jr ZXJfcGlkKTsKLQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQod29ya2VyLmxhc3RfbHNuKSkKKwor CQlpZiAod29ya2VyLm1haW5fd29ya2VyX3BpZCA9PSAwKQogCQkJbnVsbHNbM10gPSB0cnVlOwog CQllbHNlCi0JCQl2YWx1ZXNbM10gPSBMU05HZXREYXR1bSh3b3JrZXIubGFzdF9sc24pOwotCQlp ZiAod29ya2VyLmxhc3Rfc2VuZF90aW1lID09IDApCisJCQl2YWx1ZXNbM10gPSBJbnQzMkdldERh dHVtKHdvcmtlci5tYWluX3dvcmtlcl9waWQpOworCisJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlk KHdvcmtlci5sYXN0X2xzbikpCiAJCQludWxsc1s0XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVl c1s0XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLmxhc3Rfc2VuZF90aW1lKTsKLQkJaWYg KHdvcmtlci5sYXN0X3JlY3ZfdGltZSA9PSAwKQorCQkJdmFsdWVzWzRdID0gTFNOR2V0RGF0dW0o d29ya2VyLmxhc3RfbHNuKTsKKwkJaWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9PSAwKQogCQkJ bnVsbHNbNV0gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbNV0gPSBUaW1lc3RhbXBUekdldERh dHVtKHdvcmtlci5sYXN0X3JlY3ZfdGltZSk7Ci0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdv cmtlci5yZXBseV9sc24pKQorCQkJdmFsdWVzWzVdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3Jr ZXIubGFzdF9zZW5kX3RpbWUpOworCQlpZiAod29ya2VyLmxhc3RfcmVjdl90aW1lID09IDApCiAJ CQludWxsc1s2XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s2XSA9IExTTkdldERhdHVtKHdv cmtlci5yZXBseV9sc24pOwotCQlpZiAod29ya2VyLnJlcGx5X3RpbWUgPT0gMCkKKwkJCXZhbHVl c1s2XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1lKTsKKwkJaWYg KFhMb2dSZWNQdHJJc0ludmFsaWQod29ya2VyLnJlcGx5X2xzbikpCiAJCQludWxsc1s3XSA9IHRy dWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s3XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLnJl cGx5X3RpbWUpOworCQkJdmFsdWVzWzddID0gTFNOR2V0RGF0dW0od29ya2VyLnJlcGx5X2xzbik7 CisJCWlmICh3b3JrZXIucmVwbHlfdGltZSA9PSAwKQorCQkJbnVsbHNbOF0gPSB0cnVlOworCQll bHNlCisJCQl2YWx1ZXNbOF0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5yZXBseV90aW1l KTsKIAogCQl0dXBsZXN0b3JlX3B1dHZhbHVlcyhyc2luZm8tPnNldFJlc3VsdCwgcnNpbmZvLT5z ZXREZXNjLAogCQkJCQkJCSB2YWx1ZXMsIG51bGxzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHJvYy5kYXQgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0Cmlu ZGV4IGJlNDc1ODMuLmI3ZmEyYzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdf cHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtNTM5Myw5 ICs1MzkzLDkgQEAKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uJywgcHJv cm93cyA9PiAnMTAnLCBwcm9pc3N0cmljdCA9PiAnZicsCiAgIHByb3JldHNldCA9PiAndCcsIHBy b3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLAogICBwcm9yZXR0eXBlID0+ICdy ZWNvcmQnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKLSAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQs b2lkLG9pZCxpbnQ0LHBnX2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eixwZ19sc24sdGltZXN0 YW1wdHp9JywKLSAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sb30nLAotICBwcm9h cmduYW1lcyA9PiAne3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxyZWNlaXZlZF9sc24sbGFzdF9tc2df c2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxsYXRlc3RfZW5kX2xzbixsYXRlc3RfZW5k X3RpbWV9JywKKyAgcHJvYWxsYXJndHlwZXMgPT4gJ3tvaWQsb2lkLG9pZCxpbnQ0LGludDQscGdf bHNuLHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1lc3RhbXB0en0nLAorICBwcm9h cmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tz dWJpZCxzdWJpZCxyZWxpZCxwaWQsbWFpbl93b3JrZXJfcGlkLHJlY2VpdmVkX2xzbixsYXN0X21z Z19zZW5kX3RpbWUsbGFzdF9tc2dfcmVjZWlwdF90aW1lLGxhdGVzdF9lbmRfbHNuLGxhdGVzdF9l bmRfdGltZX0nLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbicgfSwKIHsg b2lkID0+ICcyMDI2JywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IGN1cnJlbnQgYmFja2VuZCBQSUQn LAogICBwcm9uYW1lID0+ICdwZ19iYWNrZW5kX3BpZCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJv cGFyYWxsZWwgPT4gJ3InLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9y dWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCA3ZWMz ZDI2Li5iZTEyYzYyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVz Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMjA5MSw2 ICsyMDkxLDcgQEAgcGdfc3RhdF9zc2x8IFNFTEVDVCBzLnBpZCwKIHBnX3N0YXRfc3Vic2NyaXB0 aW9ufCBTRUxFQ1Qgc3Uub2lkIEFTIHN1YmlkLAogICAgIHN1LnN1Ym5hbWUsCiAgICAgc3QucGlk LAorICAgIHN0Lm1haW5fd29ya2VyX3BpZCwKICAgICBzdC5yZWxpZCwKICAgICBzdC5yZWNlaXZl ZF9sc24sCiAgICAgc3QubGFzdF9tc2dfc2VuZF90aW1lLApAQCAtMjA5OCw3ICsyMDk5LDcgQEAg cGdfc3RhdF9zdWJzY3JpcHRpb258IFNFTEVDVCBzdS5vaWQgQVMgc3ViaWQsCiAgICAgc3QubGF0 ZXN0X2VuZF9sc24sCiAgICAgc3QubGF0ZXN0X2VuZF90aW1lCiAgICBGUk9NIChwZ19zdWJzY3Jp cHRpb24gc3UKLSAgICAgTEVGVCBKT0lOIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihOVUxMOjpv aWQpIHN0KHN1YmlkLCByZWxpZCwgcGlkLCByZWNlaXZlZF9sc24sIGxhc3RfbXNnX3NlbmRfdGlt ZSwgbGFzdF9tc2dfcmVjZWlwdF90aW1lLCBsYXRlc3RfZW5kX2xzbiwgbGF0ZXN0X2VuZF90aW1l KSBPTiAoKHN0LnN1YmlkID0gc3Uub2lkKSkpOworICAgICBMRUZUIEpPSU4gcGdfc3RhdF9nZXRf c3Vic2NyaXB0aW9uKE5VTEw6Om9pZCkgc3Qoc3ViaWQsIHJlbGlkLCBwaWQsIG1haW5fd29ya2Vy X3BpZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5kX3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRf dGltZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRfdGltZSkgT04gKChzdC5zdWJpZCA9IHN1 Lm9pZCkpKTsKIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzfCBTRUxFQ1Qgc3Muc3ViaWQsCiAg ICAgcy5zdWJuYW1lLAogICAgIHNzLmFwcGx5X2Vycm9yX2NvdW50LAotLSAKMi43LjIud2luZG93 cy4xCgo= --_006_OS0PR01MB5716838ABB8716547F92030394649OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v21-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v21-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v21-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=31618; creation-date="Thu, 11 Aug 2022 08:02:00 GMT"; modification-date="Thu, 11 Aug 2022 08:04:39 GMT" Content-Transfer-Encoding: base64 RnJvbSBiZWEyMGU5NDBhNmQ0Mzc1ZjE2MjQzMmI1ZGUzYmUzNWZkMzQ3MjM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog V2VkLCAxNSBKdW4gMjAyMiAxMTowMjowOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIxIDQvNV0g UmV0cnkgdG8gYXBwbHkgc3RyZWFtaW5nIHhhY3Qgb25seSBpbiBhcHBseSB3b3JrZXIKCldoZW4g dGhlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgaXMgc2V0IHN0cmVhbWluZz1wYXJhbGxlbCwgdGhl IGxvZ2ljIHRyaWVzIHRvCmFwcGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgYW4g YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuIElmIHRoaXMKZmFpbHMgdGhlIGJhY2tncm91bmQgd29y a2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5nIHRo ZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24gbW9k ZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0aGUg c2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJlZW4g aW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGUgc3Vic2NyaWJl ciBleGl0cyB3aXRoIGFuIGVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kCndo ZW5ldmVyIHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkIHN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFn IGlzIHJlc2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFt aW5nIHRyYW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBo YXMgcHJldmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5Igpm aWVsZCkuCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAg ICAgfCAgIDkgKysKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAg ICAgIHwgICA1ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAg ICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAg ICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3Jr ZXIuYyB8ICAxNiArKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMg ICAgICAgIHwgMTczICsrKysrKysrKysrKysrKysrLS0tLS0tLQogc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICAgIHwgICA0ICsKIHNyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgIHwgMTY4ICsrKysrKysrKysrKysrKy0tLS0t LS0tCiAxMCBmaWxlcyBjaGFuZ2VkLCAyNzIgaW5zZXJ0aW9ucygrKSwgMTEyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21s L2NhdGFsb2dzLnNnbWwKaW5kZXggOTYyZWE3ZC4uZjMzMmNhNiAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAg LTc5MTAsNiArNzkxMCwxNSBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0 aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogCiAgICAgIDxyb3c+ CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29s dW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJyZXRyeTwvc3RydWN0Zmll bGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAg ICBUcnVlIGlmIHRoZSBwcmV2aW91cyBhcHBseSBjaGFuZ2UgZmFpbGVkLCBuZWNlc3NpdGF0aW5n IGEgcmV0cnkKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93 PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNv bHVtbl9kZWZpbml0aW9uIj4KICAgICAgICA8c3RydWN0ZmllbGQ+c3ViY29ubmluZm88L3N0cnVj dGZpZWxkPiA8dHlwZT50ZXh0PC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+CmRp ZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2Rv Yy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCmluZGV4IGJmYzJmOGRkYy4u NGJkNTRiMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAg LTI0NSw2ICsyNDUsMTEgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICAgICBhbHNv IGJlIHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNoZXItc2lkZTsgMikgdGhlcmUgY2Fu bm90IGJlCiAgICAgICAgICAgYW55IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zIHVzZWQgYnkgdGhl IHN1YnNjcmliZXItc2lkZSByZXBsaWNhdGVkCiAgICAgICAgICAgdGFibGUuCisgICAgICAgICAg V2hlbiBhcHBseWluZyBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgaWYgZWl0aGVyIHJlcXVpcmVt ZW50IGlzIG5vdAorICAgICAgICAgIG1ldCwgdGhlIGJhY2tncm91bmQgd29ya2VyIHdpbGwgZXhp dCB3aXRoIGFuIGVycm9yLgorICAgICAgICAgIFRoZSA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJh bD4gbW9kZSBpcyBkaXNyZWdhcmRlZCB3aGVuIHJldHJ5aW5nOworICAgICAgICAgIGluc3RlYWQg dGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUgYXBwbGllZCB1c2luZyA8bGl0ZXJhbD5vbjwvbGl0ZXJh bD4KKyAgICAgICAgICBtb2RlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVt PgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmMKaW5kZXggYTUwNmZjMy4uNzIzYjE0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlw dGlvbi5jCkBAIC03MSw2ICs3MSw3IEBAIEdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wg bWlzc2luZ19vaykKIAlzdWItPnN0cmVhbSA9IHN1YmZvcm0tPnN1YnN0cmVhbTsKIAlzdWItPnR3 b3BoYXNlc3RhdGUgPSBzdWJmb3JtLT5zdWJ0d29waGFzZXN0YXRlOwogCXN1Yi0+ZGlzYWJsZW9u ZXJyID0gc3ViZm9ybS0+c3ViZGlzYWJsZW9uZXJyOworCXN1Yi0+cmV0cnkgPSBzdWJmb3JtLT5z dWJyZXRyeTsKIAogCS8qIEdldCBjb25uaW5mbyAqLwogCWRhdHVtID0gU3lzQ2FjaGVHZXRBdHRy KFNVQlNDUklQVElPTk9JRCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVt X3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAppbmRleCBm MzY5YjFmLi44Mjg0Y2RkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92 aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCkBAIC0x Mjk5LDcgKzEyOTksNyBAQCBSRVZPS0UgQUxMIE9OIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9zdGF0 dXMgRlJPTSBwdWJsaWM7CiBSRVZPS0UgQUxMIE9OIHBnX3N1YnNjcmlwdGlvbiBGUk9NIHB1Ymxp YzsKIEdSQU5UIFNFTEVDVCAob2lkLCBzdWJkYmlkLCBzdWJza2lwbHNuLCBzdWJuYW1lLCBzdWJv d25lciwgc3ViZW5hYmxlZCwKICAgICAgICAgICAgICAgc3ViYmluYXJ5LCBzdWJzdHJlYW0sIHN1 YnR3b3BoYXNlc3RhdGUsIHN1YmRpc2FibGVvbmVyciwKLSAgICAgICAgICAgICAgc3Vic2xvdG5h bWUsIHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQorICAgICAgICAg ICAgICBzdWJyZXRyeSwgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9u cywgc3Vib3JpZ2luKQogICAgIE9OIHBnX3N1YnNjcmlwdGlvbiBUTyBwdWJsaWM7CiAKIENSRUFU RSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzIEFTCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmMKaW5kZXggNzhiN2VlNy4uYTAyMzc1MiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNjg5LDYgKzY4OSw3IEBAIENyZWF0ZVN1YnNj cmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQs CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BFTkRJTkcgOgogCQkJCQkgTE9HSUNB TFJFUF9UV09QSEFTRV9TVEFURV9ESVNBQkxFRCk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0 aW9uX3N1YmRpc2FibGVvbmVyciAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZGlzYWJsZW9uZXJy KTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3VicmV0cnkgLSAxXSA9IEJvb2xHZXRE YXR1bShmYWxzZSk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmNvbm5pbmZvIC0g MV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZvKTsKIAlpZiAob3B0cy5zbG90X25h bWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3 b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5j CmluZGV4IGE0MjVkOTQuLmRiODBlOTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jCkBAIC0xMDcsNiArMTA3LDE4IEBAIGFwcGx5X2Jnd29y a2VyX2Nhbl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCkKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyoK KwkgKiBEb24ndCB1c2UgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIGZvciByZXRyaWVzLCBiZWNh dXNlIGl0IGlzIHBvc3NpYmxlCisJICogdGhhdCB0aGUgbGFzdCB0aW1lIHdlIHRyaWVkIHRvIGFw cGx5IGEgdHJhbnNhY3Rpb24gdXNpbmcgYW4gYXBwbHkKKwkgKiBiYWNrZ3JvdW5kIHdvcmtlciB0 aGUgY2hlY2tzIGZhaWxlZCAoc2VlIGZ1bmN0aW9uCisJICogYXBwbHlfYmd3b3JrZXJfcmVsYXRp b25fY2hlY2spLgorCSAqLworCWlmIChNeVN1YnNjcmlwdGlvbi0+cmV0cnkpCisJeworCQllbG9n KERFQlVHMSwgImFwcGx5IGJhY2tncm91bmQgd29ya2VycyBhcmUgbm90IHVzZWQgZm9yIHJldHJp ZXMiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qCiAJICogRm9yIHN0cmVhbWluZyB0cmFu c2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCBpbiBhcHBseSBiYWNrZ3JvdW5kCiAJICog d29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBmb3Ig YSByZWxhdGlvbgogCSAqIHRoYXQgaXMgbm90IGluIHRoZSBSRUFEWSBzdGF0ZSAoc2VlIHNob3Vs ZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwpIGFzIHdlCkBAIC04MTEsNyArODIzLDUgQEAgYXBwbHlf Ymd3b3JrZXJfcmVsYXRpb25fY2hlY2soTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpCiAJCQkJ CXJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsIHJlbC0+cmVtb3RlcmVsLnJlbG5hbWUpLAogCQkJIGVy cmRldGFpbCgiVGhlIHVuaXF1ZSBjb2x1bW4gb24gc3Vic2NyaWJlciBpcyBub3QgdGhlIHVuaXF1 ZSAiCiAJCQkJCSAgICJjb2x1bW4gb24gcHVibGlzaGVyIG9yIHRoZXJlIGlzIGF0IGxlYXN0IG9u ZSAiCi0JCQkJCSAgICJub24taW1tdXRhYmxlIGZ1bmN0aW9uLiIpLAotCQkJIGVycmhpbnQoIlBs ZWFzZSBjaGFuZ2UgdG8gdXNlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgIgotCQkJCQkgInN0cmVh bWluZz1vbi4iKSkpOworCQkJCQkgICAibm9uLWltbXV0YWJsZSBmdW5jdGlvbi4iKSkpOwogfQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggYzUyNjY5ZS4uNWQw OTNiMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0zNDIs NyArMzQyLDcgQEAgc3RhdGljIHZvaWQgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciBy ZW1vdGVfbHNuKTsKIAogc3RhdGljIHZvaWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lk KTsKIAotc3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCk7CitzdGF0 aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcih2b2lkKTsKIAogc3RhdGljIHZvaWQg YXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0 X2RhdGEpOwogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2luc2VydF9pbnRlcm5hbChBcHBseUV4 ZWN1dGlvbkRhdGEgKmVkYXRhLApAQCAtMzc5LDYgKzM3OSw4IEBAIHN0YXRpYyB2b2lkIGNsZWFy X3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pOwogc3RhdGljIGlu bGluZSB2b2lkIHNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoVHJhbnNhY3Rpb25JZCB4aWQs IFhMb2dSZWNQdHIgbHNuKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNldF9hcHBseV9lcnJvcl9j b250ZXh0X2luZm8odm9pZCk7CiAKK3N0YXRpYyB2b2lkIHNldF9zdWJzY3JpcHRpb25fcmV0cnko Ym9vbCByZXRyeSk7CisKIC8qCiAgKiBTaG91bGQgdGhpcyB3b3JrZXIgYXBwbHkgY2hhbmdlcyBm b3IgZ2l2ZW4gcmVsYXRpb24uCiAgKgpAQCAtOTI5LDYgKzkzMSw5IEBAIGFwcGx5X2hhbmRsZV9j b21taXQoU3RyaW5nSW5mbyBzKQogCiAJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29t bWl0X2RhdGEpOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlw dGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIGlmIGFueS4gKi8KIAlhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXMoKTsK IApAQCAtMTA0MCw2ICsxMDQ1LDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBz KQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0 cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIENoZWNr IHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgYW55LiAqLwogCWFwcGx5 X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygpOwogCkBAIC0xMDkzLDYgKzExMDEsOSBAQCBhcHBseV9o YW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlzdG9yZV9mbHVzaF9wb3NpdGlv bihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7 CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5 KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJv bml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2Rh dGEuZW5kX2xzbik7CiAKQEAgLTExNDgsNiArMTE1OSw5IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFj a19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24ocm9sbGJhY2tf ZGF0YS5yb2xsYmFja19lbmRfbHNuKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsK IAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnko ZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9u aXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHJvbGxiYWNrX2Rh dGEucm9sbGJhY2tfZW5kX2xzbik7CiAKQEAgLTEyNDIsNiArMTI1Niw5IEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdp dGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCiAJCQlzdHJlYW1fY2xl YW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsK IAkJfQorCisJCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9u X3JldHJ5KGZhbHNlKTsKIAl9CiAKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKQEAg LTE2NzEsNiArMTY4OCw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBz KQogCQkJICovCiAJCQlzZXJpYWxpemVfc3RyZWFtX2Fib3J0KHhpZCwgc3VieGlkKTsKIAkJfQor CisJCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5 KGZhbHNlKTsKIAl9CiAKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKQEAgLTE4 ODMsNiArMTkwMyw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykK IAkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1Ynhh Y3QgaW5mby4gKi8KIAkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsIHhpZCk7CiAJCX0KKworCQkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0 X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJfQogCiAJLyogQ2hlY2sgdGhlIHN0YXR1cyBv ZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhbnkuICovCkBAIC0zOTI3LDIwICszOTUwLDI4 IEBAIHN0YXJ0X3RhYmxlX3N5bmMoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zLCBjaGFyICoq bXlzbG90bmFtZSkKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7CisJCS8qCisJCSAqIEVtaXQgdGhlIGVy cm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRvIGFuIGlkbGUK KwkJICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJSVVBUUygpOworCisJCUVtaXRFcnJvclJl cG9ydCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKKwkJRmx1c2hFcnJvclN0YXRl KCk7CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKiBSZXBvcnQgdGhlIHdvcmtlciBm YWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlvbiAqLworCQlwZ3N0YXRfcmVwb3J0X3N1 YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLCBmYWxzZSk7CisKIAkJaWYgKE15 U3Vic2NyaXB0aW9uLT5kaXNhYmxlb25lcnIpCi0JCQlEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhp dCgpOwotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQg ZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlvbi4gQWJvcnQKLQkJCSAqIHRoZSBjdXJyZW50IHRy YW5zYWN0aW9uIHNvIHRoYXQgdGhlIHN0YXRzIG1lc3NhZ2UgaXMgc2VudCBpbiBhbgotCQkJICog aWRsZSBzdGF0ZS4KLQkJCSAqLwotCQkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7Ci0JCQlw Z3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLCBmYWxz ZSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcigpOwogCi0JCQlQR19SRV9USFJPVygp OwotCQl9CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9y ZXRyeSh0cnVlKTsKKworCQlwcm9jX2V4aXQoMCk7CiAJfQogCVBHX0VORF9UUlkoKTsKIApAQCAt Mzk2NSwyMCArMzk5NiwyNyBAQCBzdGFydF9hcHBseShYTG9nUmVjUHRyIG9yaWdpbl9zdGFydHBv cykKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7CisJCS8qCisJCSAqIEVtaXQgdGhlIGVycm9yIG1lc3Nh Z2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKKwkJICogc3Rh dGUKKwkJICovCisJCUhPTERfSU5URVJSVVBUUygpOworCisJCUVtaXRFcnJvclJlcG9ydCgpOwor CQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKKwkJRmx1c2hFcnJvclN0YXRlKCk7CisKKwkJ UkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgd2hp bGUgYXBwbHlpbmcgY2hhbmdlcyAqLworCQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJv cihNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJCSAhYW1fdGFibGVzeW5jX3dvcmtlcigp KTsKKwogCQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVvbmVycikKLQkJCURpc2FibGVTdWJz Y3JpcHRpb25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFJlcG9ydCB0aGUg d29ya2VyIGZhaWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzLiBBYm9ydCB0aGUKLQkJCSAqIGN1 cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUgc3RhdHMgbWVzc2FnZSBpcyBzZW50IGluIGFu Ci0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0JCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24o KTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5v aWQsICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOworCQkJRGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJy b3IoKTsKIAotCQkJUEdfUkVfVEhST1coKTsKLQkJfQorCQkvKiBTZXQgdGhlIHJldHJ5IGZsYWcu ICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkodHJ1ZSk7CiAJfQogCVBHX0VORF9UUlkoKTsK IH0KQEAgLTQyNDAsMzkgKzQyNzgsMjAgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJn KQogfQogCiAvKgotICogQWZ0ZXIgZXJyb3IgcmVjb3ZlcnksIGRpc2FibGUgdGhlIHN1YnNjcmlw dGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlvbgotICogYW5kIGV4aXQgY2xlYW5seS4KKyAqIERpc2Fi bGUgdGhlIHN1YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlvbi4KICAqLwogc3RhdGljIHZv aWQKLURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpCitEaXNhYmxlU3Vic2NyaXB0aW9u T25FcnJvcih2b2lkKQogewotCS8qCi0JICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJl Y292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQotCSAqIHN0YXRlCi0JICovCi0J SE9MRF9JTlRFUlJVUFRTKCk7Ci0KLQlFbWl0RXJyb3JSZXBvcnQoKTsKLQlBYm9ydE91dE9mQW55 VHJhbnNhY3Rpb24oKTsKLQlGbHVzaEVycm9yU3RhdGUoKTsKLQotCVJFU1VNRV9JTlRFUlJVUFRT KCk7Ci0KLQkvKiBSZXBvcnQgdGhlIHdvcmtlciBmYWlsZWQgZHVyaW5nIGVpdGhlciB0YWJsZSBz eW5jaHJvbml6YXRpb24gb3IgYXBwbHkgKi8KLQlwZ3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9l cnJvcihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLAotCQkJCQkJCQkJICFhbV90YWJsZXN5bmNf d29ya2VyKCkpOwotCiAJLyogRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uICovCiAJU3RhcnRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKIAlEaXNhYmxlU3Vic2NyaXB0aW9uKE15U3Vic2NyaXB0aW9uLT5v aWQpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogTm90aWZ5IHRoZSBzdWJz Y3JpcHRpb24gaGFzIGJlZW4gZGlzYWJsZWQgYW5kIGV4aXQgKi8KKwkvKiBOb3RpZnkgdGhlIHN1 YnNjcmlwdGlvbiBoYXMgYmVlbiBkaXNhYmxlZCAqLwogCWVyZXBvcnQoTE9HLAogCQkJZXJybXNn KCJsb2dpY2FsIHJlcGxpY2F0aW9uIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGJlZW4gZGlzYWJs ZWQgZHVlIHRvIGFuIGVycm9yIiwKIAkJCQkgICBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpOwotCi0J cHJvY19leGl0KDApOwogfQogCiAvKgpAQCAtNDUwNywzICs0NTI2LDYzIEBAIHJlc2V0X2FwcGx5 X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKQogCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5yZW1v dGVfYXR0bnVtID0gLTE7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChJbnZhbGlkVHJh bnNhY3Rpb25JZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogfQorCisvKgorICogU2V0IHN1YnJldHJ5 IG9mIHBnX3N1YnNjcmlwdGlvbiBjYXRhbG9nLgorICoKKyAqIElmIHJldHJ5IGlzIHRydWUsIHN1 YnNjcmliZXIgaXMgYWJvdXQgdG8gZXhpdCB3aXRoIGFuIGVycm9yLiBPdGhlcndpc2UsIGl0Cisg KiBtZWFucyB0aGF0IHRoZSB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCBzdWNjZXNzZnVsbHkuCisg Ki8KK3N0YXRpYyB2b2lkCitzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wgcmV0cnkpCit7CisJ UmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0dXA7CisJYm9vbAkJc3RhcnRlZF90eCA9IGZhbHNl OworCWJvb2wJCW51bGxzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisJYm9vbAkJcmVwbGFjZXNb TmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKwlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3N1YnNjcmlw dGlvbl07CisKKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5ID09IHJldHJ5IHx8CisJCWFtX2Fw cGx5X2Jnd29ya2VyKCkpCisJCXJldHVybjsKKworCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkp CisJeworCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlzdGFydGVkX3R4ID0gdHJ1ZTsK Kwl9CisKKwkvKiBMb29rIHVwIHRoZSBzdWJzY3JpcHRpb24gaW4gdGhlIGNhdGFsb2cgKi8KKwly ZWwgPSB0YWJsZV9vcGVuKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2sp OworCXR1cCA9IFNlYXJjaFN5c0NhY2hlQ29weTEoU1VCU0NSSVBUSU9OT0lELAorCQkJCQkJCSAg T2JqZWN0SWRHZXREYXR1bShNeVN1YnNjcmlwdGlvbi0+b2lkKSk7CisKKwlpZiAoIUhlYXBUdXBs ZUlzVmFsaWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgInN1YnNjcmlwdGlvbiBcIiVzXCIgZG9lcyBu b3QgZXhpc3QiLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSk7CisKKwlMb2NrU2hhcmVkT2JqZWN0KFN1 YnNjcmlwdGlvblJlbGF0aW9uSWQsIE15U3Vic2NyaXB0aW9uLT5vaWQsIDAsCisJCQkJCSBBY2Nl c3NTaGFyZUxvY2spOworCisJLyogRm9ybSBhIG5ldyB0dXBsZS4gKi8KKwltZW1zZXQodmFsdWVz LCAwLCBzaXplb2YodmFsdWVzKSk7CisJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxz KSk7CisJbWVtc2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9mKHJlcGxhY2VzKSk7CisKKwkvKiBS ZXNldCBzdWJyZXRyeSAqLworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAt IDFdID0gQm9vbEdldERhdHVtKHJldHJ5KTsKKwlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlv bl9zdWJyZXRyeSAtIDFdID0gdHJ1ZTsKKworCXR1cCA9IGhlYXBfbW9kaWZ5X3R1cGxlKHR1cCwg UmVsYXRpb25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzLAorCQkJCQkJCXJlcGxhY2VzKTsK KworCS8qIFVwZGF0ZSB0aGUgY2F0YWxvZy4gKi8KKwlDYXRhbG9nVHVwbGVVcGRhdGUocmVsLCAm dHVwLT50X3NlbGYsIHR1cCk7CisKKwkvKiBDbGVhbnVwLiAqLworCWhlYXBfZnJlZXR1cGxlKHR1 cCk7CisJdGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCisJaWYgKHN0YXJ0ZWRfdHgpCisJCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggMmE4ZGEyNi4uZWIz Y2JjOSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NTA3LDggKzQ1MDcsOSBAQCBnZXRTdWJzY3JpcHRpb25z KEFyY2hpdmUgKmZvdXQpCiAJbnR1cHMgPSBQUW50dXBsZXMocmVzKTsKIAogCS8qCi0JICogR2V0 IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0IGluY2x1ZGUgc3Vic2tpcGxzbiBpbiB0aGUg ZHVtcCBhcwotCSAqIGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBs b25nZXIgYmUgcmVsZXZhbnQuCisJICogR2V0IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0 IGluY2x1ZGUgc3Vic2tpcGxzbiBhbmQgc3VicmV0cnkgaW4KKwkgKiB0aGUgZHVtcCBhcyBhZnRl ciByZXN0b3JpbmcgdGhlIGR1bXAgdGhpcyB2YWx1ZSBtYXkgbm8gbG9uZ2VyIGJlCisJICogcmVs ZXZhbnQuCiAJICovCiAJaV90YWJsZW9pZCA9IFBRZm51bWJlcihyZXMsICJ0YWJsZW9pZCIpOwog CWlfb2lkID0gUFFmbnVtYmVyKHJlcywgIm9pZCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmgKaW5kZXggZjRlMWU5NC4uMDk2OWI5ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbi5oCkBAIC04OCw2ICs4OCw4IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYx MDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJ Ym9vbAkJc3ViZGlzYWJsZW9uZXJyOwkvKiBUcnVlIGlmIGEgd29ya2VyIGVycm9yIHNob3VsZCBj YXVzZSB0aGUKIAkJCQkJCQkJCSAqIHN1YnNjcmlwdGlvbiB0byBiZSBkaXNhYmxlZCAqLwogCisJ Ym9vbAkJc3VicmV0cnkgQktJX0RFRkFVTFQoZik7CS8qIFRydWUgaWYgdGhlIHByZXZpb3VzIGFw cGx5IGNoYW5nZSBmYWlsZWQuICovCisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlh YmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRv IHRoZSBwdWJsaXNoZXIgKi8KIAl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7 CkBAIC0xMzEsNiArMTMzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJ ZGlzYWJsZW9uZXJyOwkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUK IAkJCQkJCQkJICogYXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgogCQkJ CQkJCQkgKiBvY2N1cnMgKi8KKwlib29sCQlyZXRyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHBy ZXZpb3VzIGFwcGx5IGNoYW5nZQorCQkJCQkJCQkgKiBmYWlsZWQuICovCiAJY2hhcgkgICAqY29u bmluZm87CQkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVibGlzaGVyICovCiAJY2hhcgkg ICAqc2xvdG5hbWU7CQkvKiBOYW1lIG9mIHRoZSByZXBsaWNhdGlvbiBzbG90ICovCiAJY2hhcgkg ICAqc3luY2NvbW1pdDsJCS8qIFN5bmNocm9ub3VzIGNvbW1pdCBzZXR0aW5nIGZvciB3b3JrZXIg Ki8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBw bHkucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCmlu ZGV4IDRkYzU3YzguLmY3ZjY2YTIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMy X3N0cmVhbWluZ19hcHBseS5wbApAQCAtNzgsOSArNzgsMTMgQEAgbXkgJHRpbWVyID0gSVBDOjpS dW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOwog bXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGlu LCBcJG91dCwgJHRpbWVyLAogCW9uX2Vycm9yX3N0b3AgPT4gMCk7CiAKKyMgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IHRoZSB1bmlxdWUgY29sdW1uIGluIHRo ZSByZWxhdGlvbiBvbiB0aGUKICMgc3Vic2NyaWJlci1zaWRlIGlzIG5vdCB0aGUgdW5pcXVlIGNv bHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGUuIENoZWNrIHRoZQotIyBlcnJvciByZXBvcnRlZCBi eSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIGVycm9yIHJlcG9ydGVkIGJ5IGJh Y2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluCisjIGFw cGx5IHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVs bHkuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwogIyBGaXJzdCB3ZSBjaGVjayB0aGUgdW5pcXVl IGluZGV4IG9uIG5vcm1hbCB0YWJsZS4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAogCSJDUkVBVEUgVU5JUVVFIElOREVYIGlkeF90YWIxIG9uIHRlc3RfdGFiMShhKSIp OwpAQCAtMTAzLDE0ICsxMDcsMTkgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAog CXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlv biAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1p bmc9cGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGR1cGxpY2F0ZSBrZXkgdmFsdWUgdmlvbGF0 ZXMgdW5pcXVlIGNvbnN0cmFpbnQgImlkeF90YWIxIi8sCisJJG9mZnNldCk7CisKICMgRHJvcCB0 aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYjEiKTsK IAorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGlu IHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOwogCiBteSAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKLWlzKCRyZXN1bHQs IHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcg aW5kZXgnKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNj cmliZXIgYWZ0ZXIgZHJvcHBpbmcgdW5pcXVlIGluZGV4IHRvIHJldHJ5IGFwcGx5Jyk7CiAKICMg Q2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgogJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMSIpOwpAQCAt MTMxLDE3ICsxNDAsMjMgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VS Uk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVi bGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0 cmVhbWluZz1wYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgdW5pcXVlIGluZGV4 IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggdGVzdF90YWJfYl9wYXJ0aXRpb25faWR4Iik7 Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBp biB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKLWlz KCRyZXN1bHQsIHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIg ZHJvcHBpbmcgaW5kZXgnKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiB1bmlxdWUgaW5kZXgnKTsK IAorIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggdGVzdF90YWJfYl9wYXJ0 aXRpb25faWR4Iik7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBUcmlnZ2VycyB3aGljaCBl eGVjdXRlIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gYXJlIG5vdCBhbGxvd2VkIG9uIHRoZQogIyBz dWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdv cmtlciBpbiB0aGlzIGNhc2UuCisjIEFuZCBhZnRlciByZXRyeWluZyBpbiBhcHBseSB3b3JrZXIs IHdlIGNoZWNrIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQKKyMgc3VjY2Vzc2Z1bGx5LgorIyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CisKICMgRmlyc3Qgd2UgY2hlY2sgdGhlIHRyaWdnZXIgZnVuY3Rp b24gb24gbm9ybWFsIHRhYmxlLgogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKIAkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiMiBvbiB0ZXN0X3RhYjIoYSkiKTsKQEAg LTE4NCwyMiArMTk5LDI2IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9F UlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1 YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBh cmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRoZSB0cmlnZ2VyIG9uIHRoZSBzdWJzY3Jp YmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiRFJPUCBUUklHR0VSIHRyaV90YWIxIE9OIHB1YmxpYy50ZXN0X3RhYjEiKTsKKyRub2Rl X3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gZHVw bGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAiaWR4X3RhYjIiLywK Kwkkb2Zmc2V0KTsKIAorIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIs IG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi RFJPUCBJTkRFWCBpZHhfdGFiMiIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiMSIpOwotaXMoJHJlc3VsdCwgcXEoMiksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl ciBhZnRlciBkcm9wcGluZyB0cmlnZ2VyJyk7CitpcygkcmVzdWx0LCBxcSgyKSwgJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgdHJpZ2dlcicp OworCisjIERyb3AgdGhlIHRyaWdnZXIgb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBUUklHR0VSIHRyaV90YWIxIE9OIHB1 YmxpYy50ZXN0X3RhYjEiKTsKIAogIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJv bm1lbnQuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXF7Ci1E Uk9QIGZ1bmN0aW9uIHRyaWdnZXJfZnVuY190YWIxOwotRFJPUCBJTkRFWCBpZHhfdGFiMjsKLX0p OworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIGZ1bmN0aW9u IHRyaWdnZXJfZnVuY190YWIxIik7CiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkncG9z dGdyZXMnLCBxcXsKIERST1AgSU5ERVggaWR4X3RhYjI7CkBAIC0yMzEsMTkgKzI1MCwyNCBAQCAk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/ IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0 aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywK IAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRoZSB0cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cg aXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiRFJP UCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiX3BhcnRpdGlvbiIpOwotCisjIFdhaXQg Zm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5 IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAK ICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7Ci1pcygkcmVzdWx0LCBx cSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRyaWdn ZXInKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIg YWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiB0cmlnZ2VyJyk7CisKKyMgRHJvcCB0aGUgdHJpZ2dl ciBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJEUk9QIFRSSUdHRVIgaW5zZXJ0X3RyaWcgT04gdGVzdF90YWJfcGFydGl0aW9uIik7 CiAKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbHVt biBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gY29udGFpbnMgYQogIyBub24taW1tdXRhYmxlIGZ1 bmN0aW9uIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBi eQotIyBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIGJhY2tncm91bmQgd29ya2Vy IGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2UgY2hl Y2sKKyMgaWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCisjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKwogIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29sdW1uIGRlZmF1bHQgdmFsdWUg ZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIyIFZBTFVFUygxKSIpOwogCkBAIC0yNzks MTYgKzMwMywxNyBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6 ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMu dGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJhbGxl bC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVy LCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOwot CisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4g dGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOwogaXMoJHJlc3VsdCwgcXEo NTAwMSksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGRl ZmF1bHQgdmFsdWUgZXhwcmVzc2lvbicpOworCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl ciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGNvbHVtbiBkZWZhdWx0IHZhbHVlJyk7CisKKyMg RHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xV TU4gYiBEUk9QIERFRkFVTFQiKTsKIAogIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52 aXJvbm1lbnQuCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVS IFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTFVNTiBiIik7CkBAIC0zMTEsMjAgKzMzNiwyNSBAQCAk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/ IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0 aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywK IAkkb2Zmc2V0KTsKIAotIyBEcm9wIGRlZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmliZXIsIG5v dyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJB TFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxU Iik7Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGll ZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsK IGlzKCRyZXN1bHQsIHFxKDUwMDApLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBh ZnRlciBkcm9wcGluZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBjb2x1bW4gZGVmYXVs dCB2YWx1ZScpOwogCisjIERyb3AgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlci4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0 X3RhYl9wYXJ0aXRpb24gQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7CisKKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGRvbWFpbiBjb25zdHJhaW50 IGV4cHJlc3Npb24gY29udGFpbnMgYSBub24taW1tdXRhYmxlCiAjIGZ1bmN0aW9uIG9uIHRoZSBz dWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kCi0j IHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIHdvcmtlciBpbiB0aGlzIGNhc2UuIEFuZCBhZnRlciBy ZXRyeWluZyBpbiBhcHBseSB3b3JrZXIsIHdlIGNoZWNrIGlmIHRoZQorIyBkYXRhIGlzIHJlcGxp Y2F0ZWQgc3VjY2Vzc2Z1bGx5LgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKICMgQmVjYXVzZSB0 aGUgY29sdW1uIHR5cGUgb2YgdGhlIHBhcnRpdGlvbiB0YWJsZSBtdXN0IGJlIHRoZSBzYW1lIGFz IGl0cyBwYXJlbnQKICMgdGFibGUsIG9ubHkgdGVzdCBub3JtYWwgdGFibGUgaGVyZS4KICRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjIg VkFMVUVTKDEpIik7CkBAIC0zNjMsMjYgKzM5MywzMSBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFy Z2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1l dGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBkb21haW4gY29u c3RyYWludCBleHByZXNzaW9uIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90 YWIxIEFMVEVSIENPTFVNTiBhIFRZUEUgaW50Iik7Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1p bmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YWIxIik7CiBpcygkcmVzdWx0LCBxcSg1MDAxKSwKLQknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lv bicKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVz ZSBvZiBkb21haW4nCiApOwogCisjIERyb3AgZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBv biB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUxURVIgQ09MVU1OIGEgVFlQRSBpbnQiKTsKKwog IyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiAkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxIik7CiAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVz dF90YWIyIik7CiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwog Ci0jIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29uc3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5z IGEgbm9uLWltbXV0YWJsZSBmdW5jdGlvbgotIyBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVj ayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcwotIyBjYXNl LgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29uc3Ry YWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZQorIyBmdW5jdGlvbiBvbiB0 aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3Vu ZAorIyB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBwbHkgd29y a2VyLCB3ZSBjaGVjayBpZiB0aGUKKyMgZGF0YSBpcyByZXBsaWNhdGVkIHN1Y2Nlc3NmdWxseS4K KyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorCiAjIEZpcnN0IHdlIGNoZWNrIHRoZSBjb25zdHJhaW50 IGV4cHJlc3Npb24gb24gbm9ybWFsIHRhYmxlLgogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSkiKTsKIApAQCAtNDEz LDE2ICs0NDgsMTcgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9S OiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGlj LnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9cGFyYWxs ZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwg bm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29uc3RfdGFiMSIpOwotCisj IFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhl IGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOwogaXMoJHJlc3VsdCwgcXEoNTAw MSksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGNvbnN0 cmFpbnQgZXhwcmVzc2lvbicpOworCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRl ciByZXRyeWluZyBiZWNhdXNlIG9mIGNvbnN0cmFpbnQnKTsKKworIyBEcm9wIGNvbnN0cmFpbnQg b24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCBjb25zdF90YWIxIik7 CiAKICMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgogJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMSIp OwpAQCAtNDQ0LDE5ICs0ODAsMjQgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAog CXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlv biAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1l dGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCBjb25zdHJhaW50 IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1Ag Q09OU1RSQUlOVCB0ZXN0X3RhYl9jb24iKTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0 cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwogaXMoJHJlc3VsdCwgcXEoMCksCi0JJ2RhdGEgcmVwbGlj YXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGNvbnN0cmFpbnQgZXhwcmVzc2lvbicp OworCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNl IG9mIGNvbnN0cmFpbnQnKTsKKworIyBEcm9wIGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIu Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUg dGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9jb24iKTsKIAorIyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CiAjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZm9yZWlnbiBrZXkg b24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yCi0jIHJlcG9ydGVkIGJ5IGJh Y2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3 b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBwbHkKKyMgd29ya2Vy LCB3ZSBjaGVjayBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVkIHN1Y2Nlc3NmdWxseS4KKyMgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorCiAjIEZpcnN0IHdlIGNoZWNrIHRoZSBmb3JlaWduIGtleSBvbiBu b3JtYWwgdGFibGUuCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBx cXsKQEAgLTQ5NSwxNSArNTM2LDIzIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygK IAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRp b24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFt aW5nPXBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25z dHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNU UkFJTlQgdGVzdF90YWIxZmsiKTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlx ci9FUlJPUjogKCBbQS1aMC05XSs6KT8gaW5zZXJ0IG9yIHVwZGF0ZSBvbiB0YWJsZSAidGVzdF90 YWIxIiB2aW9sYXRlcyBmb3JlaWduIGtleSBjb25zdHJhaW50ICJ0ZXN0X3RhYjFmayIvLAorCSRv ZmZzZXQpOwogCisjIEluc2VydCBkZXBlbmRlbnQgZGF0YSBvbiB0aGUgcHVibGlzaGVyLCBub3cg aXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VS VCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSkiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJP TSB0ZXN0X3RhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXknKTsKKwknZGF0YSByZXBs aWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBmb3JlaWduIGtl eScpOworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmli ZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxF IHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWIxZmsiKTsKIAogIyBDbGVhbiB1cCB0 ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxIik7CkBAIC01MjksMTYgKzU3 OCwxNyBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0Et WjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90 YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBh cmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50 IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1Ag Q09OU1RSQUlOVCB0ZXN0X3RhYl9wYXRpdGlvbl9mayIpOwotCisjIFdhaXQgZm9yIHRoaXMgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQog ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CiBpcygkcmVzdWx0LCBxcSg1MDAwKSwKLQkn ZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24g a2V5Jyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRyeWluZyBi ZWNhdXNlIG9mIGZvcmVpZ24ga2V5Jyk7CisKKyMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3Ry YWludCBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5U IHRlc3RfdGFiX3BhdGl0aW9uX2ZrIik7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9k ZV9wdWJsaXNoZXItPnN0b3A7Ci0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_006_OS0PR01MB5716838ABB8716547F92030394649OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v21-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v21-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v21-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=70796; creation-date="Thu, 11 Aug 2022 08:02:00 GMT"; modification-date="Thu, 11 Aug 2022 08:04:39 GMT" Content-Transfer-Encoding: base64 RnJvbSA0NzNlOTU3N2QxMDA5OTVhYTZjNGM3NTJjYTJlZDUxNmExMmJmOTlkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MjEg Mi81XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAxOTkg KysrKystLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCAg ICAgIHwgMTIxICsrKy0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5w bCAgICAgICAgICB8IDE5NCArKysrKy0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1f c3VieGFjdF9hYm9ydC5wbCAgICAgfCAyMDEgKysrKysrLS0tCiAuLi4vc3Vic2NyaXB0aW9uL3Qv MDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCB8IDExMiArKystLQogc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAgfCAzNjMgKysrKysrKystLS0t LS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsICAgICB8 IDQ5OCArKysrKysrKysrKystLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgMTA0MyBpbnNlcnRp b25zKCspLCA2NDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0u cGwKaW5kZXggY2JhYTMyNy4uOWY0OTQ2ZCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3Ry ZWFtLnBsCkBAIC04LDYgKzgsMTE2IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwog dXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBz dWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3Ry ZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9y IHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0 ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIEludGVybGVhdmUgYSBwYWlyIG9m IHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0IgbGltaXQuCisJbXkgJGluICA9 ICcnOworCW15ICRvdXQgPSAnJzsKKworCW15ICR0aW1lciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQ b3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0KTsKKworCW15ICRoID0gJG5v ZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0 aW1lciwKKwkJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91 bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMKKwkjIHNwZWNpZmll ZCBhcyAicGFyYWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNz YWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJv c2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5k X2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIp OworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJJGluIC49IHF7CisJQkVHSU47 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShi KSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEs MykgPSAwOworCX07CisJJGgtPnB1bXBfbmI7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJ JG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFy dGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmli ZXItPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkpIHMoaSk7CisJREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgYSA+IDUwMDA7CisJQ09NTUlUOworCX0pOworCisJJGluIC49IHF7 CisJQ09NTUlUOworCVxxCisJfTsKKwkkaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBu ZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQorCisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMz NHwzMzM0fDMzMzQpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJyk7CisKKwkjIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQorCSRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQUxURVIgU1VCU0NSSVBUSU9OIHRh cF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0 ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAx MDAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01N SVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRy YSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMgQ2hhbmdlIHRoZSBsb2Nh bCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmliZXIsCisJIyB1cGRh dGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVj dGVkCisJIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFu c2FjdGlvbnMgYmVoYXZlCisJIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlv bi4KKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0 ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2 YWwgJzFzJyIKKwkpOworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKworCSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVj ayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2VkIGRhdGEnKTsKKworCSMgQ2xl YW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNo ZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+ bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5n ID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxNDcsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxF IHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04g JyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElP TiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC00OSw4MiArMTYzLDI1IEBA IG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFs IGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgSW50ZXJsZWF2ZSBhIHBhaXIg b2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KLW15ICRpbiAg PSAnJzsKLW15ICRvdXQgPSAnJzsKLQotbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBv c3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOwotCi1teSAkaCA9ICRub2Rl X3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGlt ZXIsCi0Jb25fZXJyb3Jfc3RvcCA9PiAwKTsKLQotJGluIC49IHF7Ci1CRUdJTjsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MywgNTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci19Owot JGgtPnB1bXBfbmI7Ci0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsKLURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIGEgPiA1MDAwOwotQ09NTUlUOwotfSk7Ci0KLSRpbiAuPSBxewotQ09NTUlUOwot XHEKLX07Ci0kaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwg c28gaWdub3JlIHRoZW0gaGVyZQotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwgJ2NoZWNrIGV4 dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwordGVzdF9zdHJlYW1pbmcoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSMgVGVzdCB0 aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBv bikiKTsKLQotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2Vl ZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3 fDY2NjcpLCAnY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7Cisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25f bmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorKTsKIAotIyBDaGFu Z2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29sdW1ucyBvbiB0aGUgc3Vic2NyaWJl ciwKLSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNrIHRoYXQgc3Vic2NyaWJlciByZXRhaW5z IHRoZSBleHBlY3RlZAotIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVh bWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCi0jIHByb3Blcmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlVQ REFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICog aW50ZXJ2YWwgJzFzJyIKLSk7Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKwkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsLCBiaW5hcnkgPSBvZmYp Iik7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9k ZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAh PSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1l ID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisg ICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFu Z2luZyBTVUJTQ1JJUFRJT04iOwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBm cm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKLSk7Ci1p cygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCi0JJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0YScpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXIt PnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKaW5kZXggYmMwYTljZC4uMTA0YTE2OSAxMDA2NDQKLS0t IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbApAQCAtOCw2ICs4LDcy IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24g dGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIg c28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5k CisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15 ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxs ZWwpID0gQF87CisKKwkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYg InN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCisJIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdl IGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQs IHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJh bGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJl ci0+cmVsb2FkOworCX0KKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93 cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJ J3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKCAgICAzLCAgNTAwKSBzKGkpOworCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzMTsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDUwMSwgIDEwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgIDE1MDApIHMoaSk7CisJVVBEQVRF IHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MTUwMSwgIDIwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7 CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwgMjUwMCkgcyhpKTsKKwlVUERBVEUgdGVz dF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisKKwlpZiAoJGlzX3Bh cmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkg QkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJ CSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgxNjY3fDE2 Njd8MTY2NyksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJl YW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7 CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyBDcmVh dGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dz X3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTAzLDEwIEBAICRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHVi IEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9k ZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBD T05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScg UFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDksNDEg KzExOSwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hl Y2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIEluc2VydCwg dXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIDY0a0IgbGltaXQuCi0kbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KCAgICAzLCAgNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK LVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAgMTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsICAxNTAw KSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBz MzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOwotU0FWRVBPSU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLCAyNTAwKSBzKGkpOwotVVBE QVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFx KDE2Njd8MTY2N3wxNjY3KSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIg aW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0 cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFw cG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBU ZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hF UkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7 IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5v ZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQg IT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFt ZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQor ICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hh bmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7 CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxN19zdHJlYW1fZGRsLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0 cmVhbV9kZGwucGwKaW5kZXggODY2ZjE1MS4uZWNhYzNhMyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKQEAgLTgsNiArOCwxMTEgQEAgdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6 TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFy ZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNh biBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFs bGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgYSBz bWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJU IElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOworCUFMVEVSIFRBQkxFIHRl c3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7CisJQ09NTUlUOworCX0pOworCisJ IyBDaGVjayB0aGF0IGEgYmFja2dyb3VuZCB3b3JrZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIHBh cmFtZXRlciBpcworCSMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIuICBXZSBoYXZlIHRvIGxvb2sg Zm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzCisJIyBhYm91dCB0aGF0LCBzbyB0ZW1wb3Jhcmls eSBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkk bm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2df bWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9 CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUsIDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVN TiBkIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAyMDAwKSBz KGkpOworCUNPTU1JVDsKKwl9KTsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAw KTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ CQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVs b2FkOworCX0KKworCSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERE TCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7 CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6 dGV4dCksIC0yMDAxLCAyKjIwMDEpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4g ZSBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAw MiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioyMDAyLCAtMyoyMDAyKTsKKwlDT01NSVQ7CisJ fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ bXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRl c3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjAwMnwxOTk5fDEwMDJ8MSksCisJCSdjaGVjayBk YXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEg Y29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIEEgbGFyZ2UgKHN0cmVh bWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJm b3JtZWQKKwkjIGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hl bWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAorCSMgdGhlIG5leHQgdHJhbnNhY3Rpb24gaGFz IHRvIHNlbmQgdGhlIHNjaGVtYSBhZ2Fpbi4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK KwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMs NTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOworCUNP TU1JVDsKKwl9KTsKKworCSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJl YW1lZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCisJIyBzZW5kIHRoZSBzY2hlbWEg YWdhaW4gdG8gcmVmbGVjdCB0aGUgbGFzdCBjb2x1bW4gYWRkZWQgaW4gdGhlIHByZXZpb3VzIHRl c3QuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVH SU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIq aSwgLTMqaSwgNCppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKKwlDT01N SVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpLCBjb3VudChm KSBGUk9NIHRlc3RfdGFiIgorCSk7CisJaXMoJHJlc3VsdCwgcXEoNTAwNXw1MDAyfDQwMDV8MzAw NHw1KSwKKwkJJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0 cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMnCisJKTsKKworCSMgQ2xlYW51 cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jl cycsIHF7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBUQUJM RSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjLCBEUk9QIENPTFVNTiBkLCBEUk9QIENPTFVNTiBlLCBE Uk9QIENPTFVNTiBmOworCX0pOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNo ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVf cHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYg KzE0MiwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVB VEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5h bWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUg U1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxp Y2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5n ID0gb24pIgogKTsKQEAgLTQ5LDc3ICsxNTgsMjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRy ZXN1bHQsIHFxKDJ8MHwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNj cmliZXInKTsKIAotIyBhIHNtYWxsIChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERM IGFuZCBETUwKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1C RUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKLUFM VEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0KSwgLTQpOwotQ09NTUlUOwot fSk7Ci0KLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRl X3Nlcmllcyg1LCAxMDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBk IElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsK LUNPTU1JVDsKLX0pOwotCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0 aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6 dGV4dCksIC0yMDAxLCAyKjIwMDEpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBl IElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwg bWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioyMDAyLCAtMyoyMDAyKTsKLUNPTU1JVDsKLX0pOwot Ci0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0 ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7Ci1p cygkcmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAwMnwxKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFp biBsb2NhbCBkZWZhdWx0cycKLSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRu b2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJh bnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCi0j IGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBm b3IgdGVzdF90YWIgc28gdGhhdAotIyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0 aGUgc2NoZW1hIGFnYWluLgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVz JywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7Ci1B TFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOwotQ09NTUlUOwotfSk7Ci0KLSMg QSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1lZC4gVGhpcyBpcyBqdXN0 IHRvIGVuc3VyZSB0aGF0IHdlCi0jIHNlbmQgdGhlIHNjaGVtYSBhZ2FpbiB0byByZWZsZWN0IHRo ZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUgcHJldmlvdXMgdGVzdC4KLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQqaSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNvdW50KGYpIEZST00gdGVzdF90YWIiKTsKLWlzKCRy ZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGll ZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFu c2FjdGlvbnMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0 IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Igog KTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVf cHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0g JG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAi VGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdp bmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9k ZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAk bm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAppbmRleCA1NTFmMTZkLi4wNDE1ZWY3IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQu cGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0 LnBsCkBAIC04LDYgKzgsMTEzIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxh dGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFt aW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRo ZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0 X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5k IHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCisJIyBzcGVjaWZpZWQg YXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2Fn ZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3Np dHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsK KwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBz KGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOworCVNBVkVQT0lO VCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxNTAxLDIwMDApIHMoaSk7CisJUk9MTEJBQ0sgVE8gczI7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLDI1MDAp IHMoaSk7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyNTAxLDMwMDApIHMoaSk7CisJU0FW RVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzNTsKKwlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDM1MDEsNDAwMCkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisKKwlpZiAoJGlzX3BhcmFs bGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdX ICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRu b2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJP TSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCisJCSdjaGVjayByb2xsYmFj ayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1 bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIG91dCBvZiBvcmRlcgorCSMgc3Vi dHJhbnNhY3Rpb24gUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7CisJU0FWRVBP SU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDYwMDEsNjUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDAp IHMoaSk7CisJUkVMRUFTRSBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDgwMDEsODUwMCkgcyhpKTsKKwlST0xMQkFD SyBUTyBzMTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0 X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksCisJCSdjaGVjayByb2xsYmFjayB0byBz YXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIGxhcmdlIChzdHJl YW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjaworCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoODUwMSw5MDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUw MCkgcyhpKTsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5NTAxLDEwMDAwKSBzKGkpOworCVJP TExCQUNLOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCSRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlp cygkcmVzdWx0LCBxcSgyNTAwfDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBz dWJzY3JpYmVyJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAo YSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK K30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXIt PmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzYsNiArMTQzLDEwIEBA ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNB VElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBf c3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBz dHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFt ZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiAp OwpAQCAtNDgsODEgKzE1OSwyNSBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sgaW5p dGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIGxhcmdlIChzdHJlYW1l ZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBz KGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLVNBVkVQT0lOVCBz MjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAx LDIwMDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwyNTAwKSBzKGkpOwot Uk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAwMCkgcyhpKTsKLVNBVkVQT0lOVCBzNDsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMzAwMSwzNTAwKSBzKGkpOwotU0FWRVBPSU5UIHM1OwotSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzNTAxLDQw MDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIi KTsKLWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2lu dCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVw bGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0g J3N0cmVhbWluZyc7IgogKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGgg c3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyCi0jIHN1YnRyYW5zYWN0aW9uIFJPTExC QUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lO OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEs NTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOwotU0FW RVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDApIHMoaSk7Ci1SRUxFQVNFIHMyOwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cyg4MDAxLDg1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUNPTU1JVDsKLX0pOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKLQkn Y2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicp OwotCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2Vp dmluZyByb2xsYmFjawotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywg cXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDkwMDEsOTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkg cyhpKTsKLVJPTExCQUNLOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7 Ci1pcygkcmVzdWx0LCBxcSgyNTAwfDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBv biBzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIp OworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNh dGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAg b3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBh ZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKIAogJG5vZGVfc3Vic2NyaWJl ci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCmluZGV4IDRkN2Rh ODIuLmNlZWJkMDMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJl YW1fc3VieGFjdF9kZGxfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5 X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbApAQCAtOSw2ICs5LDY5IEBAIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRl c3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGlj aCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29k ZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1w YXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNo ZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkj IENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFy YW1ldGVyIGlzCisJIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBm b3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5 IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRu b2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19t aW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0K KworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xM QkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlC RUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBD T0xVTU4gYyBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkp OworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7CisJU0FWRVBPSU5UIHMy OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3Rf dGFiIEFERCBDT0xVTU4gZSBJTlQ7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTUwMSwyMDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1O IGM7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSwgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlDT01N SVQ7CisJfSk7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2Rl X3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5f bWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJl c3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFx KDEwMDB8NTAwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVk IG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycK KwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+ IDIpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7CisJfSk7CisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyBDcmVhdGUgcHVi bGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVh bWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTAwLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBU QUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24n CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNU SU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElD QVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDksMzUgKzExNiwy NiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3Rf dGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0 aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOwotQUxURVIgVEFCTEUg dGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUw MSwxMDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKLVNB VkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCks IC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOwotQUxURVIgVEFC TEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTUwMSwyMDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBD T0xVTU4gYzsKLVJPTExCQUNLIFRPIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSwgaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLUNP TU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3Vs dCwgcXEoMTAwMHw1MDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxl Y3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVs dHMnCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRh cHBuYW1lLCAwKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdI RVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcn OyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRF UiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisKKyRu b2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlk ICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25h bWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUK KyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNo YW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9w OwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDdhNzk3ZjMuLjBhNDE1MmQgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCisrKyBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCkBAIC0xMSw2 ICsxMSwyMDggQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNR TDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhl IGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIHBhcmFt ZXRlcgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWlu Zz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVsCisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5n Cit7CisJbXkgKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1l X0MsICRzdHJlYW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlteSAkb2xkcGlkX0IgPSAkbm9kZV9B LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRf cmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQg c3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKwlteSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3Bz cWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiKTsKKworCSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1pbmcg bW9kZQorCisJJG5vZGVfQi0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViX0IKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUp OyIpOworCSRub2RlX0MtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJT Q1JJUFRJT04gdGFwX3N1Yl9DCisJCVNFVCAoc3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKSIp OworCisJIyBXYWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKwor CSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBp ZCAhPSAkb2xkcGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0 aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkgb3Ig ZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJJG5v ZGVfQi0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9 ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25f bmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUg IlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQg UFJFUEFSRUQuCisJIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgor CSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlz IHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29y a2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBvcHRwYXJhbWV0ZXJpb24gaXMKKwkjIHNwZWNpZmll ZCBhcyAicGFyYWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNz YWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJv c2l0eS4KKwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9C LT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfQi0+cmVsb2FkOworCisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9DLT5y ZWxvYWQ7CisJfQorCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRv IGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkjIFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9kZV9BLT5z YWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDAp IHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFS RSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJaWYgKCRzdHJlYW1pbmdf bW9kZSBlcSAncGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfQi0+d2FpdF9mb3JfbG9nKHFyL1xbQXBw bHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfQi0+ cmVsb2FkOworCisJCSRub2RlX0MtPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5IEJHVyAjXGQrXF0g c3RhcnRlZC8sIDApOworCQkkbm9kZV9DLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywg ImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0MtPnJlbG9hZDsKKwl9CisK Kwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0 ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9C LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIp OworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlciBDJyk7CisKKwkjIDJQQyBDT01NSVQKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfQS0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0ZWQg b24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2Vy dGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1 bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAor CQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBh bmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIGNoZWNrIHRo ZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9 CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVf Qy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9J TlQuCisJIyAwLiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dz LgorCSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJvdy4KKwkjIDIuIFJlY29yZCBhIFNBVkVQT0lOVC4K KwkjIDMuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgNC4gRG8gcm9sbGJhY2sgdG8g U0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJlYW1lZCBpbnNlcnRzLgorCSMgNS4gVGhlbiBDT01N SVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBpcyBh Ym9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3MgKD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVwIDEp LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0 aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKKwkk bm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJF IGEgPiAyOyIpOworCisJIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNB VkVQT0lOVAorCSRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlCRUdJTjsK KwkJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7CisJCVNBVkVQ T0lOVCBzcF9pbm5lcjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5l cjsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAnb3V0ZXInOworCQkiKTsKKworCSRub2RlX0EtPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZV9DKTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVkIG9u IHN1YnNjcmliZXIocykKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMo JHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEIn KTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEo MSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgMlBD IENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVE ICdvdXRlcic7Iik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwor CSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0 cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9CisJICAk bm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg ZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2Ny aWJlciBDJyk7CisKKwkjIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJlcihz KS4KKwkjIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hv dWxkIGJlIHJvbGxlZCBiYWNrLgorCSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0 dGVkLgorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVz dWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicp OworCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29t bWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPSAkbm9kZV9D LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi IHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0 dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworCSRyZXN1bHQgPQorCSAgJG5vZGVf Qy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsi KTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1 YnNjcmliZXIgQycpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9BLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwor CSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKK30KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogIyBTZXR1cCBhIGNhc2NhZGUgb2YgcHViL3N1YiBub2Rlcy4KICMgbm9kZV9BIC0+IG5v ZGVfQiAtPiBub2RlX0MKQEAgLTI2MCwxNjAgKzQ2MiwxNSBAQCBpcygkcmVzdWx0LCBxcSgyMSks ICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKICMgMlBDICsg U1RSRUFNSU5HIFRFU1RTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1teSAkb2xkcGlkX0Ig PSAkbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJPTSBw Z19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9C JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKLW15ICRvbGRwaWRfQyA9ICRub2RlX0ItPnNh ZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGlj YXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9 ICdzdHJlYW1pbmcnOyIpOwotCi0jIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24gKHN0cmVhbWlu ZyA9IG9uKQotCi0kbm9kZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViX0IKLQlTRVQgKHN0cmVhbWluZyA9IG9uKTsiKTsKLSRub2RlX0Mt PnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJf QwotCVNFVCAoc3RyZWFtaW5nID0gb24pIik7Ci0KLSMgV2FpdCBmb3Igc3Vic2NyaWJlcnMgdG8g ZmluaXNoIGluaXRpYWxpemF0aW9uCi0KLSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bv c3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9CIEZST00gcGdfc3RhdF9yZXBsaWNh dGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0g J3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBs eSB0byByZXN0YXJ0IjsKLSRub2RlX0ItPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVzJywg IgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdI RVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0 YXJ0IjsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQ QVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRy YW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGFs bCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0Lgot IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEluc2VydCwgdXBkYXRlIGFuZCBk ZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotIyBUaGVuIDJQQyBQ UkVQQVJFCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9k ZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZV9DKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1l X0IsICRhcHBuYW1lX0MsICdvbicpOwogCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBp cyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFx KDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBD IENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQg J3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hl Y2sgdGhhdCB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1 bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEo MzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCi0p OwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVz dWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBkZWZh dWx0cycKLSk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1 YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwg cXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVz dWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rp b24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBU TyBTQVZFUE9JTlQuCi0jIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcgb25s eSAyIHJvd3MuCi0jIDEuIEluc2VydCBvbmUgbW9yZSByb3cuCi0jIDIuIFJlY29yZCBhIFNBVkVQ T0lOVC4KLSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDQuIERvIHJvbGxiYWNr IHRvIFNBVkVQT0lOVCBwcmlvciB0byB0aGUgc3RyZWFtZWQgaW5zZXJ0cy4KLSMgNS4gVGhlbiBD T01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCBkYXRhIGFmdGVyIHRoZSBTQVZFUE9JTlQgaXMg YWJvcnRlZCBsZWF2aW5nIG9ubHkgMyByb3dzICg9IDIgb3JpZ2luYWwgKyAxIGZyb20gc3RlcCAx KS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRo ZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQotJG5v ZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBh ID4gMjsiKTsKLQotIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQ T0lOVAotJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlCRUdJTjsKLQlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKLQlTQVZFUE9JTlQgc3Bf aW5uZXI7Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg bW9kKGEsMykgPSAwOwotCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKLQlQUkVQQVJF IFRSQU5TQUNUSU9OICdvdXRlcic7Ci0JIik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0j IGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0k cmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNh Y3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVf Qy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJl ZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQg b24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNj cmliZXIKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCks ICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAk bm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRl ZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlIGF0IHN1 YnNjcmliZXIocykuCi0jIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQ T0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNrLgotIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3VsZCBi ZSBjb21taXR0ZWQuCi0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlz KCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJl ciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21t aXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdo ZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQg YXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRy ZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBD Jyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5n IHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBw bmFtZV9CLCAkYXBwbmFtZV9DLCAncGFyYWxsZWwnKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmluZGV4IDliNDU0MTAuLmVhMWY0NzYgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwK KysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAt OCw2ICs4LDI2NiBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3Jl U1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0 aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMg cGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFt aW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1p bmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwg JGlzX3BhcmFsbGVsKSA9IEBfOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor CSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3Ry ZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJl ZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNp ZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK KwkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIg cGFyYW1ldGVyIGlzCisJIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9v ayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFy aWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJ CSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxv Z19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwor CX0KKworCSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKKwkj IEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtC IGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxewor CQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9t ZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNr IHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCW15 ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFx KDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMg dHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVj ayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1 bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlp cygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVy Jyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQ QVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8g MiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlz IHN0cmVhbWVkIHVzaW5nIDJQQy4KKwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkj IEV4cGVjdCBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3Mu CisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRo ZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIGEgPiAyOyIpOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdo IHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkp OworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwor CQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJB TlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMg aW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJl cGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVk CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBS RVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFi b3J0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5 OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyfDJ8MiksCisJCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwg MiByb3dzJworCSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK KwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJl cicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgQ2hlY2sgdGhhdCAy UEMgQ09NTUlUIFBSRVBBUkVEIGlzIGRlY29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4K KwkjIDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRo ZSA2NGtCIGxpbWl0LgorCSMgMi4gVGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0 cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0 ZWQgdGhlIHBlbmRpbmcgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCSMKKwkjIEV4cGVjdCBh bGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0 LgorCSMgTm90ZTogYm90aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFy dC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAw MCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIp ID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQ QVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9zdWJzY3Jp YmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKwkkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0 ZScpOworCisJJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFy dDsKKworCSMgY29tbWl0IHBvc3QgdGhlIHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7 Iik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMg Y2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMz NCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVy LCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBB UkUgYnV0IGJlZm9yZSBST0xMQkFDSyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQg YmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBp cyBkb25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExC QUNLIFBSRVBBUkVELgorCSMKKwkjIEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2 aW5nIG9ubHkgMyByb3dzIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBp bnNlcnRlZCAxKS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0 LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkK Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJ UFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFu c2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2Fj dGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVu dCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMg Tm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBz dXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoOTk5OTksICdmb29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9y dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNL IFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlz IGFib3J0ZWQgb24gc3Vic2NyaWJlciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUg b2YgdGhlIDJQQyBzdGlsbCB3YXMgcmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8Myks CisJCSdjaGVjayB0aGUgb3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7 CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQ QVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBi YWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4g RGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlz IGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlU IFBSRVBBUkVELgorCSMKKwkjIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9u IHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRh IGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEg PiAyOyIpOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3Mg dG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAor CQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlV UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJ T04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJl cGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVk X3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQg b24gc3Vic2NyaWJlcicpOworCisJIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2Ug YXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJh bnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBp cyBmb3IgYSBzZXBhcmFyZSBwcmltYXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9v YmFyJykiKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9w cmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vi c2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM1fDMzMzV8MzMzNSksCisJCSdSb3dzIGluc2Vy dGVkIGJ5IDJQQyAoYXMgd2VsbCBhcyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24g c3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkp OworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJ IyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTZXR1cAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwpAQCAtNDgsNiArMzA4LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIp OwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0 Z3JlcycsICIKIAlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKQEAgLTY0LDIzNiArMzI4LDMw IEBAIG15ICR0d29waGFzZV9xdWVyeSA9CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3Vu dGlsKCdwb3N0Z3JlcycsICR0d29waGFzZV9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBvdXQgd2hp bGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBlbmFibGUgdHdvcGhhc2UiOwogCi0jIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIENoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXIKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG15ICRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJl c3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2Ny aWJlcicpOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBS RVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMg dHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBFeHBlY3Qg YWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1p dC4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIGNoZWNrIHRo YXQgMlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCi0jIEluc2VydCwgdXBkYXRlIGFu ZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rp b24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1p dHRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBS RVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21t aXR0ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jv d3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRy YSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVz dCAyUEMgUFJFUEFSRSAvIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVk IGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4K LSMKLSMgRXhwZWN0IGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIg cm93cy4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRl IHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCBy b3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVk IHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNj cmliZXInKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVw YXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVy Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK LWlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxl ZCBiYWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0kcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotIyBDaGVjayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBw cm9wZXJseSBvbiBjcmFzaCByZXN0YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRl IGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgMi4gVGhlbiBzZXJ2ZXIg Y3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jIDMuIEFm dGVyIHNlcnZlcnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21t aXR0ZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIg c2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2Ny aWJlciBkbyBjcmFzaC9yZXN0YXJ0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwot Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwot CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikg V0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRu b2RlX3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotJG5vZGVfcHVibGlzaGVyLT5zdG9w KCdpbW1lZGlhdGUnKTsKLQotJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKLSRub2RlX3N1YnNjcmli ZXItPnN0YXJ0OwotCi0jIGNvbW1pdCBwb3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRf dGFiJzsiKTsKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0K LSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMz NCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIs IGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOwotCi0jIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBi dXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sg dG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEg aXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUg d2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQ QVJFRC4KLSMKLSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSAz IHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSku Ci0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUg ZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEg PiAyOyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0 byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0 X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0 ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwot aXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy Jyk7Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9m IHRoZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwg aG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmF0 ZSBwcmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki SU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7Ci0KLSMgMlBD IHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQot JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlciwKLSMgYnV0IHRoZSBleHRy YSBJTlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxsIHdhcyByZXBsaWNhdGVkCi0kcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1 bHQsIHFxKDN8M3wzKSwgJ2NoZWNrIHRoZSBvdXRzaWRlIGluc2VydCB3YXMgY29waWVkIHRvIHN1 YnNjcmliZXInKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlz KCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7 Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRo ZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxl dGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0j IDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJU IGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBDT01N SVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9u IHRoZSBzdWJzY3JpYmVyCi0jICh0aGUgMzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4KLSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4 Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7 Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2Vl ZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFy ZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1 YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVz dWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQot IyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQ QyB0cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyBy b3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJlIHByaW1h cnkga2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNh Y3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChz dHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKIAotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5 OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzV8MzMzNXwzMzM1KSwKLQkn Um93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQpIGhhdmUgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnCi0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Igor ICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJl c3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMg Y29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cAotLSAKMi43LjIud2luZG93cy4x Cgo= --_006_OS0PR01MB5716838ABB8716547F92030394649OS0PR01MB5716jpnp_--