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 1oEiqW-00014D-WC for pgsql-hackers@arkaria.postgresql.org; Fri, 22 Jul 2022 02:56:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oEiqV-0003EM-Q5 for pgsql-hackers@arkaria.postgresql.org; Fri, 22 Jul 2022 02:56:55 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oEiqV-0003Db-2i for pgsql-hackers@lists.postgresql.org; Fri, 22 Jul 2022 02:56:55 +0000 Received: from esa2.fujitsucc.c3s2.iphmx.com ([68.232.152.246]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oEiqN-00039j-LJ for pgsql-hackers@lists.postgresql.org; Fri, 22 Jul 2022 02:56:54 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1658458608; x=1689994608; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=g43/Dck/Zai9QYKpmDhHktdVKG+6SxQKAo2m/Q3Wd1U=; b=cDBHvBCXW/lOlPHbAYkzGCTyDWcj9/zpk1nGOIOsVJa+UTv8+BT38HE1 BhgSL+KH0o+EGC/DXAxmLXzz0bjenuhsEht93RejrciS6YU8BQPIdYDjR k738UCfHMBS8rtSBXKF3aHkSYJ2OIS800D6LwEVxQFtNEiMOqj1crFBb7 KV1gfFW+utXfJaAcGUUy6njetTOvg6KSnv/Ymhb7OnjpMnPOd9OFqYzbm GCQCJi0x9HPqcWH5tJJDwPemEKTkndjcKsDjaMgqJPuB+Emp1VyzwG1fe iFMovS+PtBW8M7n8ZA3uha2vYL5Fk5BpKaie0WIuHJfK1Z9Nx5+UVCoMX g==; X-IronPort-AV: E=McAfee;i="6400,9594,10415"; a="69255488" X-IronPort-AV: E=Sophos;i="5.93,184,1654527600"; d="scan'208,223";a="69255488" Received: from mail-tycjpn01lp2170.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.170]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Jul 2022 11:56:44 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J+WvkCrWVzI9IJbRX/tnl5J4KCz/zffOKLIm33+5zlqP27mYBRGdo/IKWaGcJi1lUpnUHYe3prMf8VotTgpRCRb37G/v8Zyo1ACaWDN4EiFG+PYp7rG5G3upLdFFaUhR1m5QPXB8FX8BhFM5U9Ktss+clLgE18telpsfr6bsNNPEx4uZ8duy33ZMpJA7Wsty0O6envQQ5JHsWVIR1vx4rU89RKL662oZKMbdo0QiOkowyWsa33mxr4RxTiujROkKWPWA7Th8M7x0q2mkegIlpjOlRdczLJlwgiZRFUq/Mg7c+ZmdhFPtCpwxXcdrY9vWc+8Yob8HNGZHVUNvnfMSXQ== 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=EbcrdrK3B69HvJ7t17tui1pC2eEfQ9t7HUEypqEh4xA=; b=l+AzG42a93lzpmZ0XY7dXNebxmC6LgunNOLRcO1jF5FdKOBe+i56ed3S/hUVVjKNICtKs3tEHIsof3nkULGX/7qiw5Xk6aph+aXV89iFgjcawRjjO050rTVNM/lcR6gBJUNSD8YkoCsSX2bIUkkGcEls3MMVt+8Se4ZZ2kTxPowME1qyoblYXj5+ppLyWmjqV2FSFxMxRfN1FsCxDbJz2QfNGxsiMBCgUB2KAcd4Ou0/hP83xIXLHnZloic9/AZlaJSElqED2AVHAVfsEub7ZrdRht6lXINSMhlSW4LRLz++0Ibs7GZVVGgyI/flhMxEZyPL1j4DlcB/5+d7yGSUyQ== 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 OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by TY2PR01MB4442.jpnprd01.prod.outlook.com (2603:1096:404:10d::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.21; Fri, 22 Jul 2022 02:56:39 +0000 Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::b7:3975:8c62:f5d1]) by OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::b7:3975:8c62:f5d1%5]) with mapi id 15.20.5458.019; Fri, 22 Jul 2022 02:56:39 +0000 From: "wangw.fnst@fujitsu.com" To: Peter Smith CC: Amit Kapila , Masahiko Sawada , "shiy.fnst@fujitsu.com" , "houzj.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: AQHYSXX4/KZEbPJKjUy7J1pJS8eGYazlvxQAgAkRYICACBI2gIABs50AgAA5UwCAApvIgIAFAGuAgAXc1wCAADa7gIALO/aAgAsRZICAB606AIAS9tXQgAAv04CAAWQLgIABHxKAgAA3o4CAAd7v0IAJQDLggAkyO+CAAiLMAIAC0M5ggARwU4CABP8UAIAAGBkAgAd/49CABPEVgIAJO7xggABuopCACQ1GAIAJSjQggAS+3MA= Date: Fri, 22 Jul 2022 02:56:39 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9ODY2ZTJkY2EtZTFmYy00OGIzLWEwNDMtYTBhMGM3MDZm?= =?utf-8?B?MDIwO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0wNy0xOVQwMjoyNToxM1o7TVNJUF9MYWJl?= =?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: c4d557a2-7446-4d5d-50a0-08da6b8dcce4 x-ms-traffictypediagnostic: TY2PR01MB4442:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xhjw4gukk8O2DnAZzphc9542h8jnFtd6Z6XaMWeAWWCF8FW5UWckwPBX7LDoWdNTYt4vi5Yg9IpP9ecaE28XCpTxaggCbTC122d+J/RhyuOIR+XhRB/MKUD/QRpzEfQ4wxTlYJYj1tV0Hu6r0zyAPuO7WHuoTkl01YgViSq9To6b++ZCR5E94hDw2kHMXWl/wYOBJEkvyRKQ7eCpj9k2WvHfwDVec32eq5L+AFqakixRYF81hUzFMacrCTPO60POgAV2UM8Ol5Oo946jfpPzgqtCx0qGouW6ZWQJTMqqO51NwDoK4AFIshcWNnRlXZr8WaTQk1/aYtNjRLTFYe9M6F35ds7265rpz2lMTKGLFmKty4B/M8wJZuiWmuoGLauyt/zlcivZ7YQzTV+y9HapSBgoroiXpvJX6OS9mgztMQSI6Fe0TGw5uo5uVGJNcf0thtw7HD0fqdxdOR4mOhyWyLI35InU10FggYm3TTZLAKkccrIek2cLAi6wETjxEvDtn8TbNE9d6OBntDJrasSU4Jo8PzBL1JkHY365Y3Ty0poantFhF4EdustkxrovwEM28zL/EkURdnImzmQf+x9mrV+RkBGoo9L/Byoye879ttlldkruRDQrpjRxMjtWEE/AiN3ykNql7bR4ZWb2mddoNqVdcxPCLCWZLrfSpqSYT/bAb7MDS82p/KndHtl4vVnITXU6y7ru0HLEviyQt0jbbGt+53UuqJF80ljK91hyaaSa3IiuSAKSEtuh4GEi9jAaMItmGCnCDdKZdHTDBwlVBTUNN3NXaffDgwnntbHRqjxLTrhElMXcv4c9HKtxWWf3 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3PR01MB6275.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(136003)(366004)(376002)(346002)(39860400002)(85182001)(4326008)(6916009)(5660300002)(52536014)(66476007)(76116006)(8676002)(8936002)(66946007)(2906002)(122000001)(82960400001)(316002)(66556008)(55016003)(64756008)(54906003)(71200400001)(38100700002)(186003)(86362001)(33656002)(38070700005)(41300700001)(99936003)(9686003)(66446008)(558084003)(7696005)(26005)(478600001)(6506007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?V01lTlExbWJ1bnBMc3BLR2xHZjhVTVNwTHp4Z3pBTmlwdGltbjlldFlWMFBW?= =?utf-8?B?SitscnV6bXVKNXpMSkY5QUsxdllzNXByYmE2Qmd5Q3JuUFBqTkRudUNBNHU5?= =?utf-8?B?OHJ2OHE2RDdLSFBINS9ZRFZxaTNQcktrYzd0R0J5UXM4TjkwNXZXTU1zeFVM?= =?utf-8?B?by8yWmFHRXllVzVxeHFIYlVPNmVlWVI1azQxTHd5SG5vdUFzK0Y0R0w3clZu?= =?utf-8?B?Ykp5L1NCS0NIZkFENDhvUUlwSFloYTZhMG1ML0VhZkdDUzZGenBQS2U3Nkdo?= =?utf-8?B?dUhYRTJCaGRsMTB0WldpYlllVHJkOU9ZV0U0YmJTK051TWRlR2EzeW5mQ01X?= =?utf-8?B?SVIydzFHRGpWeUV6aEdGSjA1ZmNjSFBkZkFvdTFRdWQ1RVM4WTRSYk1xd1hO?= =?utf-8?B?WC9LWVlGL056YnlkbFkxWXJKRHBES2NrVjI4U3FjSy9JSE9JUkh5OWpJcVBx?= =?utf-8?B?bExBRGJPT3ZUL0xBTlQycUdlTm9iTlVXdmh5YURCYWp0dmlUdmFWSEZpMUo1?= =?utf-8?B?Y0xNaTY5SE16Z05EUHk2QWUvZXFJeG94RU13WVJkdFNaRnh5SEVFUjJiZ25V?= =?utf-8?B?L2ZZaWVTR2hIQ3NCbEYyWFB6Y2owVDhnVHRlNUdrNU9wSURJZEZHS0I2T0pU?= =?utf-8?B?MGx2a3R0UDlSNVpidUdqa0l5WGxSVmY4enJiM2lzdXlIZTU4SDJ5OHhTb2p2?= =?utf-8?B?UjQxLzh0RGhTZTVXRnQ2TGVRZWViaGFRWDRaM3VRWERaUk9obVV6d0tOdndO?= =?utf-8?B?M2JDVWFkdmZGOW5oK3A2Q0VHR2hWdHZRTlNEV20weW1qZGp6aktKUEk2dEVa?= =?utf-8?B?K2Q3TUZ0Vm9DZFUyWlVjTm9WcWNPdnR4Y0tHaEc3Y0dZRkJOMGtGMWszeEdG?= =?utf-8?B?OUNyMVVsVjl2ZW9OOHR5TW5qZDVOY2lXWHJWTHJBMk02VzlReXB4VHN6YlFF?= =?utf-8?B?M3pLOE9CYlR1VEJWbnJCbDRyTmY1dlp5NlRITXBSYTQ3VUhaM1lwcHlvNG9I?= =?utf-8?B?YUZTWm5FVnUxRDg2SENwVDNObm12SEZTcG53ekpzUUk3UGlLbGQ2T0o1VVlS?= =?utf-8?B?OEJpdEFoNjJ1dGNPNEJIcnF3NVc2V1NKVVp6VWpUQmlMOGFML29DYkJXVDJz?= =?utf-8?B?WTN3WXhoUFdQWklIbit2blh4TVVZZHl4UGQ3VXNhSjhUQ1Y1aldiTlNzTWUy?= =?utf-8?B?RHZERnVueS84UmsxVENxcnJRQU9tb2lzRCtPVGwrcjdxWGpNUHRwK2NnMWFF?= =?utf-8?B?aEpCemlybGVNL0xZVHZyUW8reGozVW82R2l4RS9Da05sTEJBb0dMRDl3RXlQ?= =?utf-8?B?aWtyRm9ibGliRVVvYTEwMERuaW41aDk4SVZWTzZON0hLRnIxT2VVaGsyakFq?= =?utf-8?B?cXVYZ3oyRjhIUlpVM21vK2gxMFR5QkNNVEt6TGtFQUN4TmdrcnZwWkNLTGRi?= =?utf-8?B?bytzMVMxdklSOVRVV1VVeTl1L1JJanZMV3pOOFAyTHZab0xaeG1XWGdVVGpE?= =?utf-8?B?dG9BbDEyaW9rR1JkQnJ6K2FtSE41enFUaE1MZjZuV041ZlVTZUloQ3R0dERL?= =?utf-8?B?ZXdwYkNQeGpvSXo2UFhDMG1pU0VMUEhLZnZ2b25LQzBPR3NSY1Z3U3Z6UTRR?= =?utf-8?B?Y1hxcm04c2IvQVFIb1c1K1Z1T0NQMmJxcXZUSDVnWTZDMGdQcUtVdnRjMVNL?= =?utf-8?B?ZTF5YklGVnQ4RFo0MEZoekRKWGJ4WDdFTEZoOWZFTVN6Ty9QYUNoVW1hWDlG?= =?utf-8?B?dTU0QmxCeVdXTFRaUXhVcU9zaDBoR1VWcnVKSExwZ2ZDc2RmVXJndHdLSGw0?= =?utf-8?B?RExnMm5TUWtxaUlIRTVJN05tRlJmN2djS0NuN1lDdkxReTRib3ROL0Z5eEpt?= =?utf-8?B?aUVUZjZUWjFwR2ZsaFBaZWJ3cUhpRHZoMW9sU3cvTTZOV1RTMWFQQ0dNRXZk?= =?utf-8?B?SDNXQ2pVYWMyRlBTWWtwM0Z1M2xzZGQ1UGpGYmJ3ZDFTcVZ0UG84RmxIbWI5?= =?utf-8?B?Y3RiYWdROE5DVSs1VmJ5RERsOCtEdkVKelVWVHY5UUsrS2NkSVlWQzZZeHhD?= =?utf-8?B?eE5yZnFZeHFtK2k0bDNaYjMzKzJzS0tEQnFkUUc0NDBLOHJvWDRlTHliblNy?= =?utf-8?Q?hCRtlXi204+28O9j/X00HNDw/?= Content-Type: multipart/mixed; boundary="_005_OS3PR01MB62752B29CEC2592E18236A9A9E909OS3PR01MB6275jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS3PR01MB6275.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c4d557a2-7446-4d5d-50a0-08da6b8dcce4 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jul 2022 02:56:39.8109 (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: eWDG5aPishGISQIK675U8/kK0pYXfZ8h/ecl3QKTEWNkACtbe/sDD2glevQG75v2EX+q50kUjOYoNEwAMcmJnA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY2PR01MB4442 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_005_OS3PR01MB62752B29CEC2592E18236A9A9E909OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVHVlcywgSnVsIDE5LCAyMDIyIGF0IDEwOjI5IEFNIEkgd3JvdGU6DQo+IEF0dGFjaCB0aGUg bmV3cyBwYXRjaGVzLg0KDQpOb3QgYWJsZSB0byBhcHBseSBwYXRjaGVzIGNsZWFubHkgYmVjYXVz ZSB0aGUgY2hhbmdlIGluIEhFQUQgKDM2NjI4Mzk2MWEpLg0KVGhlcmVmb3JlLCBJIHJlYmFzZWQg dGhlIHBhdGNoIGJhc2VkIG9uIHRoZSBjaGFuZ2VzIGluIEhFQUQuDQoNCkF0dGFjaCB0aGUgbmV3 IHBhdGNoZXMuDQoNClJlZ2FyZHMsDQpXYW5nIHdlaQ0K --_005_OS3PR01MB62752B29CEC2592E18236A9A9E909OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v19-0001-Perform-streaming-logical-transactions-by-backgr.patch" Content-Description: v19-0001-Perform-streaming-logical-transactions-by-backgr.patch Content-Disposition: attachment; filename="v19-0001-Perform-streaming-logical-transactions-by-backgr.patch"; size=109156; creation-date="Fri, 22 Jul 2022 02:54:00 GMT"; modification-date="Fri, 22 Jul 2022 02:56:36 GMT" Content-Transfer-Encoding: base64 RnJvbSA4OGZlMDE0NTBkMTA1YmUzYjAzYzBhM2U3YmJlZmNkYTIzZGY4M2IwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYxOSAxLzRdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IGJhY2tn 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 YXZpb3VyKS4KLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICAg ICAgfCAgMTAgKy0KIGRvYy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgICAgICAgICAg ICB8ICAyNSArCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sICAgICAgICAg fCAgMTAgKwogZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgICAgICAgICAgICAgICAgICAgIHwg IDE5ICsKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8ICAy NCArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jICAgICAgICAgICAgIHwgIDEz ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYyAgICAgICB8ICA2NiAr LQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAgICAgICAgIHwgICAzICsK IHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUgICAgICB8ICAgMSArCiAu Li4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd29ya2VyLmMgICAgICAgfCA4MDIgKysrKysr KysrKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jICAg ICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAg ICB8IDEzMCArKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgICAg ICB8ICAyNiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICAg IHwgIDQxICstCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgICAg fCAgMTAgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8 ICAxMCArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyAgICAgIHwg NjkyICsrKysrKysrKysrLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdv dXRwdXQuYyAgIHwgICA2ICstCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50 LmMgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAgICAg ICAgICAgIHwgIDEyICsKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNh bXBsZSB8ICAgMSArCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAg ICAgfCAgIDYgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAg ICB8ICAyMSArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmggICAg IHwgICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oICAgICAgICB8 ICAyNyArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oICAgICAgIHwg ICAxICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oICAgICAgICAgICAgICB8ICAg MiArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgIHwgICA3 ICstCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCAgICAgfCAxMDIg KystCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0ICAgIHwgICAyICst CiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICAgICAgfCAgIDUgKwog MzIgZmlsZXMgY2hhbmdlZCwgMTg2OSBpbnNlcnRpb25zKCspLCAyMjAgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJn d29ya2VyLmMKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9z cmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGExODZlMzVmMDAuLjA5OWIzYzk2NjEgMTAwNjQ0 Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jYXRh bG9ncy5zZ21sCkBAIC03ODczLDExICs3ODczLDE1IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2Vh YmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZs CiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48 cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Ci0gICAgICAgPHN0cnVjdGZpZWxkPnN1YnN0 cmVhbTwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICAgPHN0cnVjdGZpZWxk PnN1YnN0cmVhbTwvc3RydWN0ZmllbGQ+IDx0eXBlPmNoYXI8L3R5cGU+CiAgICAgICA8L3BhcmE+ CiAgICAgICA8cGFyYT4KLSAgICAgICBJZiB0cnVlLCB0aGUgc3Vic2NyaXB0aW9uIHdpbGwgYWxs b3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzCi0gICAgICAgdHJhbnNhY3Rpb25zCisgICAgICAg Q29udHJvbHMgaG93IHRvIGhhbmRsZSB0aGUgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5z YWN0aW9uczoKKyAgICAgICA8bGl0ZXJhbD5mPC9saXRlcmFsPiA9IGRpc2FsbG93IHN0cmVhbWlu ZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMsCisgICAgICAgPGxpdGVyYWw+dDwvbGl0ZXJh bD4gPSBzcGlsbCB0aGUgY2hhbmdlcyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgdG8KKyAg ICAgICBkaXNrIGFuZCBhcHBseSBhdCBvbmNlIGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21t aXR0ZWQgb24gdGhlCisgICAgICAgcHVibGlzaGVyLAorICAgICAgIDxsaXRlcmFsPnA8L2xpdGVy YWw+ID0gYXBwbHkgY2hhbmdlcyBkaXJlY3RseSB1c2luZyBhIGJhY2tncm91bmQgd29ya2VyCiAg ICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBlMmQ3Mjhl MGM0Li5hOTI2YjUzMGVhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC00OTcwLDYgKzQ5NzAsMzEgQEAgQU5ZIDxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJl cGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5 PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tYXgtYXBwbHktYmd3b3JrZXJzLXBlci1z dWJzY3JpcHRpb24iIHhyZWZsYWJlbD0ibWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0 aW9uIj4KKyAgICAgIDx0ZXJtPjx2YXJuYW1lPm1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNj cmlwdGlvbjwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVy bT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5tYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJz Y3JpcHRpb248L3Zhcm5hbWU+IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAg ICAgPC9pbmRleHRlcm0+CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAg PHBhcmE+CisgICAgICAgIE1heGltdW0gbnVtYmVyIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2Vy cyBwZXIgc3Vic2NyaXB0aW9uLiBUaGlzCisgICAgICAgIHBhcmFtZXRlciBjb250cm9scyB0aGUg YW1vdW50IG9mIHBhcmFsbGVsaXNtIG9mIHRoZSBzdHJlYW1pbmcgb2YKKyAgICAgICAgaW4tcHJv Z3Jlc3MgdHJhbnNhY3Rpb25zIHdoZW4gc3Vic2NyaXB0aW9uIHBhcmFtZXRlcgorICAgICAgICA8 bGl0ZXJhbD5zdHJlYW1pbmcgPSBwYXJhbGxlbDwvbGl0ZXJhbD4uCisgICAgICAgPC9wYXJhPgor ICAgICAgIDxwYXJhPgorICAgICAgICBUaGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIGFyZSB0 YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKKyAgICAgICAgPHZhcm5hbWU+bWF4X2xvZ2lj YWxfcmVwbGljYXRpb25fd29ya2VyczwvdmFybmFtZT4uCisgICAgICAgPC9wYXJhPgorICAgICAg IDxwYXJhPgorICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAyLiBUaGlzIHBhcmFtZXRlciBj YW4gb25seSBiZSBzZXQgaW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8 L2ZpbGVuYW1lPiBmaWxlIG9yIG9uIHRoZSBzZXJ2ZXIgY29tbWFuZAorICAgICAgICBsaW5lLgor ICAgICAgIDwvcGFyYT4KKyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5Pgor CiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdpdCBhL2RvYy9z cmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1y ZXBsaWNhdGlvbi5zZ21sCmluZGV4IGJkZjFlN2I3MjcuLjkyOTk3ZjkyOTkgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21s L2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbApAQCAtMTE1Myw2ICsxMTUzLDE2IEBAIENPTlRFWFQ6 ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1 IiBkdXJpbmcgIklOU0VSCiAgICBtaWdodCBub3QgdmlvbGF0ZSBhbnkgY29uc3RyYWludC4gIFRo aXMgY2FuIGVhc2lseSBtYWtlIHRoZSBzdWJzY3JpYmVyCiAgICBpbmNvbnNpc3RlbnQuCiAgIDwv cGFyYT4KKworICA8cGFyYT4KKyAgIFdoZW4gdGhlIHN0cmVhbWluZyBtb2RlIGlzIDxsaXRlcmFs PnBhcmFsbGVsPC9saXRlcmFsPiwgdGhlIGZpbmlzaCBMU04gb2YKKyAgIGZhaWxlZCB0cmFuc2Fj dGlvbnMgbWF5IG5vdCBiZSBsb2dnZWQuIEluIHRoYXQgY2FzZSwgaXQgbWF5IGJlIG5lY2Vzc2Fy eSB0bworICAgY2hhbmdlIHRoZSBzdHJlYW1pbmcgbW9kZSB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJh bD4gYW5kIGNhdXNlIHRoZSBzYW1lCisgICBjb25mbGljdHMgYWdhaW4gc28gdGhlIGZpbmlzaCBM U04gb2YgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbiB3aWxsIGJlIHdyaXR0ZW4KKyAgIHRvIHRoZSBz ZXJ2ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlzaCBMU04sIHBsZWFzZSByZWZlciB0byA8 bGluaworICAgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uIj48Y29tbWFuZD5BTFRFUiBT VUJTQ1JJUFRJT04gLi4uCisgICBTS0lQPC9jb21tYW5kPjwvbGluaz4uCisgIDwvcGFyYT4KICA8 L3NlY3QxPgogCiAgPHNlY3QxIGlkPSJsb2dpY2FsLXJlcGxpY2F0aW9uLXJlc3RyaWN0aW9ucyI+ CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbCBiL2RvYy9zcmMvc2dtbC9w cm90b2NvbC5zZ21sCmluZGV4IGMwYjg5YTNjMDEuLjdlODhiYTk2MzEgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21s CkBAIC02ODA5LDYgKzY4MDksMjUgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9u PWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgICA8L2xpc3RpdGVtPgogICAg ICAgPC92YXJsaXN0ZW50cnk+CiAKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+ SW50NjQgKFhMb2dSZWNQdHIpPC90ZXJtPgorICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgPHBh cmE+CisgICAgICAgICBUaGUgTFNOIG9mIHRoZSBhYm9ydC4KKyAgICAgICAgPC9wYXJhPgorICAg ICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgICA8dGVybT5JbnQ2NCAoVGltZXN0YW1wVHopPC90ZXJtPgorICAgICAgIDxs aXN0aXRlbT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICBBYm9ydCB0aW1lc3RhbXAgb2YgdGhl IHRyYW5zYWN0aW9uLiBUaGUgdmFsdWUgaXMgaW4gbnVtYmVyCisgICAgICAgICBvZiBtaWNyb3Nl Y29uZHMgc2luY2UgUG9zdGdyZVNRTCBlcG9jaCAoMjAwMC0wMS0wMSkuCisgICAgICAgIDwvcGFy YT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgIDx2 YXJsaXN0ZW50cnk+CiAgICAgICAgPHRlcm0+SW50MzIgKFRyYW5zYWN0aW9uSWQpPC90ZXJtPgog ICAgICAgIDxsaXN0aXRlbT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1 YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNn bWwKaW5kZXggNzM5MGM3MTViYy4uYjA4ZTRiNTU4MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVh dGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTIxNywxMyArMjE3LDI5IEBAIENSRUFURSBTVUJTQ1JJ UFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9y ZXBsYWNlYWJsCiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgICA8dmFybGlzdGVudHJ5 PgotICAgICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5ib29s ZWFuPC90eXBlPik8L3Rlcm0+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0 ZXJhbD4gKDx0eXBlPmVudW08L3R5cGU+KTwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgogICAg ICAgICAgPHBhcmE+CiAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHN0cmVh bWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBmb3IgdGhpcyBzdWJz Y3JpcHRpb24uICBCeSBkZWZhdWx0LCBhbGwgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgYXJlIGZ1 bGx5IGRlY29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVuIHNlbnQgdG8gdGhlCi0g ICAgICAgICAgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgIGZvciB0aGlzIHN1YnNj cmlwdGlvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4sCisg ICAgICAgICAgbWVhbmluZyBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRo ZSBwdWJsaXNoZXIgYW5kIG9ubHkKKyAgICAgICAgICB0aGVuIHNlbnQgdG8gdGhlIHN1YnNjcmli ZXIgYXMgYSB3aG9sZS4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAg ICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgdGhlIGluY29taW5nIGNoYW5n ZXMgYXJlIHdyaXR0ZW4gdG8KKyAgICAgICAgICB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBw bGllZCBvbmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcworICAgICAgICAgIGNvbW1pdHRlZCBv biB0aGUgcHVibGlzaGVyLgorICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAg ICAgICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCBpbmNvbWluZyBj aGFuZ2VzIGFyZSBkaXJlY3RseQorICAgICAgICAgIGFwcGxpZWQgdmlhIG9uZSBvZiB0aGUgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXJzLCBpZiBhdmFpbGFibGUuIElmIG5vCisgICAgICAgICAgYmFj a2dyb3VuZCB3b3JrZXIgaXMgZnJlZSB0byBoYW5kbGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRo ZW4gdGhlCisgICAgICAgICAgY2hhbmdlcyBhcmUgd3JpdHRlbiB0byB0ZW1wb3JhcnkgZmlsZXMg YW5kIGFwcGxpZWQgYWZ0ZXIgdGhlCisgICAgICAgICAgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVk LiBOb3RlIHRoYXQgaWYgYW4gZXJyb3IgaGFwcGVucyB3aGVuCisgICAgICAgICAgYXBwbHlpbmcg Y2hhbmdlcyBpbiBhIGJhY2tncm91bmQgd29ya2VyLCB0aGUgZmluaXNoIExTTiBvZiB0aGUKKyAg ICAgICAgICByZW1vdGUgdHJhbnNhY3Rpb24gbWlnaHQgbm90IGJlIHJlcG9ydGVkIGluIHRoZSBz ZXJ2ZXIgbG9nLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAg IDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4IDExNmRlMTE3 NWIuLjNlNjFhNTdiNTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hh Y3QuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKQEAgLTE3MTEsNiAr MTcxMSw3IEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJaW50CQkJ bmNoaWxkcmVuOwogCVRyYW5zYWN0aW9uSWQgKmNoaWxkcmVuOwogCVRpbWVzdGFtcFR6IHhhY3Rf dGltZTsKKwlib29sCQlyZXBsb3JpZ2luOwogCiAJLyoKIAkgKiBJZiB3ZSBoYXZlbid0IGJlZW4g YXNzaWduZWQgYW4gWElELCBub2JvZHkgd2lsbCBjYXJlIHdoZXRoZXIgd2UgYWJvcnRlZApAQCAt MTc0MSw2ICsxNzQyLDEzIEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3Qp CiAJCWVsb2coUEFOSUMsICJjYW5ub3QgYWJvcnQgdHJhbnNhY3Rpb24gJXUsIGl0IHdhcyBhbHJl YWR5IGNvbW1pdHRlZCIsCiAJCQkgeGlkKTsKIAorCS8qCisJICogQXJlIHdlIHVzaW5nIHRoZSBy ZXBsaWNhdGlvbiBvcmlnaW5zIGZlYXR1cmU/ICBPciwgaW4gb3RoZXIgd29yZHMsCisJICogYXJl IHdlIHJlcGxheWluZyByZW1vdGUgYWN0aW9ucz8KKwkgKi8KKwlyZXBsb3JpZ2luID0gKHJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklkICYmCisJCQkJICByZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9IERvTm90UmVwbGljYXRlSWQpOworCiAJLyogRmV0Y2gg dGhlIGRhdGEgd2UgbmVlZCBmb3IgdGhlIGFib3J0IHJlY29yZCAqLwogCW5yZWxzID0gc21nckdl dFBlbmRpbmdEZWxldGVzKGZhbHNlLCAmcmVscyk7CiAJbmNoaWxkcmVuID0geGFjdEdldENvbW1p dHRlZENoaWxkcmVuKCZjaGlsZHJlbik7CkBAIC0xNzY1LDYgKzE3NzMsMTEgQEAgUmVjb3JkVHJh bnNhY3Rpb25BYm9ydChib29sIGlzU3ViWGFjdCkKIAkJCQkJICAgTXlYYWN0RmxhZ3MsIEludmFs aWRUcmFuc2FjdGlvbklkLAogCQkJCQkgICBOVUxMKTsKIAorCWlmIChyZXBsb3JpZ2luKQorCQkv KiBNb3ZlIExTTnMgZm9yd2FyZCBmb3IgdGhpcyByZXBsaWNhdGlvbiBvcmlnaW4gKi8KKwkJcmVw bG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24sCisJ CQkJCQkJCSAgIFhhY3RMYXN0UmVjRW5kKTsKKwogCS8qCiAJICogUmVwb3J0IHRoZSBsYXRlc3Qg YXN5bmMgYWJvcnQgTFNOLCBzbyB0aGF0IHRoZSBXQUwgd3JpdGVyIGtub3dzIHRvCiAJICogZmx1 c2ggdGhpcyBhYm9ydC4gVGhlcmUncyBub3RoaW5nIHRvIGJlIGdhaW5lZCBieSBkZWxheWluZyB0 aGlzLCBzaW5jZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IGJk MGNjMDg0OGQuLjk2OTcxMjg0MTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25j bWRzLmMKQEAgLTg0LDcgKzg0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3ViT3B0cwogCWJvb2wJCWNv cHlfZGF0YTsKIAlib29sCQlyZWZyZXNoOwogCWJvb2wJCWJpbmFyeTsKLQlib29sCQlzdHJlYW1p bmc7CisJY2hhcgkJc3RyZWFtaW5nOwogCWJvb2wJCXR3b3BoYXNlOwogCWJvb2wJCWRpc2FibGVv bmVycjsKIAljaGFyCSAgICpvcmlnaW47CkBAIC05Nyw2ICs5Nyw2MiBAQCBzdGF0aWMgTGlzdCAq bWVyZ2VfcHVibGljYXRpb25zKExpc3QgKm9sZHB1Ymxpc3QsIExpc3QgKm5ld3B1Ymxpc3QsIGJv b2wgYWRkcHViLAogc3RhdGljIHZvaWQgUmVwb3J0U2xvdENvbm5lY3Rpb25FcnJvcihMaXN0ICpy c3RhdGVzLCBPaWQgc3ViaWQsIGNoYXIgKnNsb3RuYW1lLCBjaGFyICplcnIpOwogCiAKKy8qCisg KiBFeHRyYWN0IHRoZSBzdHJlYW1pbmcgbW9kZSB2YWx1ZSBmcm9tIGEgRGVmRWxlbS4gIFRoaXMg aXMgbGlrZQorICogZGVmR2V0Qm9vbGVhbigpIGJ1dCBhbHNvIGFjY2VwdHMgdGhlIHNwZWNpYWwg dmFsdWUgb2YgInBhcmFsbGVsIi4KKyAqLworc3RhdGljIGNoYXIKK2RlZkdldFN0cmVhbWluZ01v ZGUoRGVmRWxlbSAqZGVmKQoreworCS8qCisJICogSWYgbm8gcGFyYW1ldGVyIHZhbHVlIGdpdmVu LCBhc3N1bWUgInRydWUiIGlzIG1lYW50LgorCSAqLworCWlmIChkZWYtPmFyZyA9PSBOVUxMKQor CQlyZXR1cm4gU1VCU1RSRUFNX09OOworCisJLyoKKwkgKiBBbGxvdyAwLCAxLCAiZmFsc2UiLCAi dHJ1ZSIsICJvZmYiLCAib24iIG9yICJwYXJhbGxlbCIuCisJICovCisJc3dpdGNoIChub2RlVGFn KGRlZi0+YXJnKSkKKwl7CisJCWNhc2UgVF9JbnRlZ2VyOgorCQkJc3dpdGNoIChpbnRWYWwoZGVm LT5hcmcpKQorCQkJeworCQkJCWNhc2UgMDoKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CisJ CQkJY2FzZSAxOgorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09OOworCQkJCWRlZmF1bHQ6CisJCQkJ CS8qIG90aGVyd2lzZSwgZXJyb3Igb3V0IGJlbG93ICovCisJCQkJCWJyZWFrOworCQkJfQorCQkJ YnJlYWs7CisJCWRlZmF1bHQ6CisJCQl7CisJCQkJY2hhcgkgICAqc3ZhbCA9IGRlZkdldFN0cmlu ZyhkZWYpOworCisJCQkJLyoKKwkJCQkgKiBUaGUgc2V0IG9mIHN0cmluZ3MgYWNjZXB0ZWQgaGVy ZSBzaG91bGQgbWF0Y2ggdXAgd2l0aCB0aGUKKwkJCQkgKiBncmFtbWFyJ3Mgb3B0X2Jvb2xlYW5f b3Jfc3RyaW5nIHByb2R1Y3Rpb24uCisJCQkJICovCisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3Zh bCwgImZhbHNlIikgPT0gMCB8fAorCQkJCQlwZ19zdHJjYXNlY21wKHN2YWwsICJvZmYiKSA9PSAw KQorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09GRjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFs LCAidHJ1ZSIpID09IDAgfHwKKwkJCQkJcGdfc3RyY2FzZWNtcChzdmFsLCAib24iKSA9PSAwKQor CQkJCQlyZXR1cm4gU1VCU1RSRUFNX09OOworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJw YXJhbGxlbCIpID09IDApCisJCQkJCXJldHVybiBTVUJTVFJFQU1fUEFSQUxMRUw7CisJCQl9CisJ CQlicmVhazsKKwl9CisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKKwkJCSBlcnJtc2coIiVzIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciBcInBh cmFsbGVsXCIiLAorCQkJCQlkZWYtPmRlZm5hbWUpKSk7CisJcmV0dXJuIFNVQlNUUkVBTV9PRkY7 CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCit9CisKIC8qCiAgKiBDb21tb24gb3B0aW9uIHBh cnNpbmcgZnVuY3Rpb24gZm9yIENSRUFURSBhbmQgQUxURVIgU1VCU0NSSVBUSU9OIGNvbW1hbmRz LgogICoKQEAgLTEzNCw3ICsxOTAsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJz ZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAlpZiAoSXNTZXQoc3VwcG9ydGVk X29wdHMsIFNVQk9QVF9CSU5BUlkpKQogCQlvcHRzLT5iaW5hcnkgPSBmYWxzZTsKIAlpZiAoSXNT ZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQotCQlvcHRzLT5zdHJlYW1pbmcg PSBmYWxzZTsKKwkJb3B0cy0+c3RyZWFtaW5nID0gU1VCU1RSRUFNX09GRjsKIAlpZiAoSXNTZXQo c3VwcG9ydGVkX29wdHMsIFNVQk9QVF9UV09QSEFTRV9DT01NSVQpKQogCQlvcHRzLT50d29waGFz ZSA9IGZhbHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0RJU0FCTEVfT05f RVJSKSkKQEAgLTIzNyw3ICsyOTMsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJz ZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAkJCQllcnJvckNvbmZsaWN0aW5n RGVmRWxlbShkZWZlbCwgcHN0YXRlKTsKIAogCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VC T1BUX1NUUkVBTUlORzsKLQkJCW9wdHMtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwp OworCQkJb3B0cy0+c3RyZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0K IAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkKIAkJ ewpAQCAtNjI3LDcgKzY4Myw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJdmFsdWVzW0FudW1fcGdfc3Vic2Ny aXB0aW9uX3N1Ym93bmVyIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG93bmVyKTsKIAl2YWx1ZXNb QW51bV9wZ19zdWJzY3JpcHRpb25fc3ViZW5hYmxlZCAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMu ZW5hYmxlZCk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmJpbmFyeSAtIDFdID0g Qm9vbEdldERhdHVtKG9wdHMuYmluYXJ5KTsKLQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25f c3Vic3RyZWFtIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCXZhbHVlc1tB bnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IENoYXJHZXREYXR1bShvcHRzLnN0 cmVhbWluZyk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3RhdGUg LSAxXSA9CiAJCUNoYXJHZXREYXR1bShvcHRzLnR3b3BoYXNlID8KIAkJCQkJIExPR0lDQUxSRVBf VFdPUEhBU0VfU1RBVEVfUEVORElORyA6CkBAIC0xMDg5LDcgKzExNDUsNyBAQCBBbHRlclN1YnNj cmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwK IAkJCQlpZiAoSXNTZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykpCiAJ CQkJewogCQkJCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPQot CQkJCQkJQm9vbEdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwkJCQkJCUNoYXJHZXREYXR1bShv cHRzLnN0cmVhbWluZyk7CiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0 cmVhbSAtIDFdID0gdHJ1ZTsKIAkJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYmd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwppbmRl eCA0MDYwMWFlZmQ5Li40MGNjYjg5OTNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFz dGVyL2Jnd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCkBA IC0xMjgsNiArMTI4LDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdAogCX0sCiAJewogCQkiQXBwbHlX b3JrZXJNYWluIiwgQXBwbHlXb3JrZXJNYWluCisJfSwKKwl7CisJCSJBcHBseUJnd29ya2VyTWFp biIsIEFwcGx5Qmd3b3JrZXJNYWluCiAJfQogfTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvTWFrZWZpbGUKaW5kZXggYzRlMmZkZWI3MS4uY2JmYjVkNzk0ZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtlZmlsZQorKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCkBAIC0xNSw2ICsxNSw3IEBAIGluY2x1ZGUg JCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmlsZS5nbG9iYWwKIG92ZXJyaWRlIENQUEZMQUdTIDo9 IC1JJChzcmNkaXIpICQoQ1BQRkxBR1MpCiAKIE9CSlMgPSBcCisJYXBwbHliZ3dvcmtlci5vIFwK IAlkZWNvZGUubyBcCiAJbGF1bmNoZXIubyBcCiAJbG9naWNhbC5vIFwKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jIGIvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd29ya2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMC4uYWEyMjI0OTBhMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jCkBAIC0wLDAgKzEsODAy IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGFwcGx5Ymd3b3JrZXIuYworICogICAgIFN1cHBv cnQgcm91dGluZXMgZm9yIGFwcGx5aW5nIHhhY3QgYnkgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIK KyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYworICoKKyAqIFRoaXMgZmlsZSBjb250YWlu cyByb3V0aW5lcyB0aGF0IGFyZSBpbnRlbmRlZCB0byBzdXBwb3J0IHNldHRpbmcgdXAsIHVzaW5n LAorICogYW5kIHRlYXJpbmcgZG93biBhIEFwcGx5Qmd3b3JrZXJTdGF0ZS4KKyAqCisgKiBSZWZl ciB0byB0aGUgY29tbWVudHMgaW4gZmlsZSBoZWFkZXIgb2YgbG9naWNhbC93b3JrZXIuYyB0byBz ZWUgbW9yZQorICogaW5mb3JtYXRpb24gYWJvdXQgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuCisg KgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNp bmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgorI2luY2x1ZGUgIm1iL3BnX3djaGFyLmgiCisjaW5j bHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicG9zdG1hc3Rlci9pbnRlcnJ1cHQuaCIKKyNpbmNs dWRlICJyZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlv bi9sb2dpY2Fsd29ya2VyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vb3JpZ2luLmgiCisjaW5j bHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93 b3JrZXJfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2luY2x1ZGUg InV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1 dGlscy9yZXNvd25lci5oIgorI2luY2x1ZGUgInV0aWxzL3N5c2NhY2hlLmgiCisKKyNkZWZpbmUg UEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMgMHg3OWZiMjQ0NyAvLyBUT0RPIENvbnNpZGVyIGNo YW5nZQorCisvKgorICogRFNNIGtleXMgZm9yIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLiAgVW5s aWtlIG90aGVyIHBhcmFsbGVsIGV4ZWN1dGlvbiBjb2RlLAorICogc2luY2Ugd2UgZG9uJ3QgbmVl ZCB0byB3b3JyeSBhYm91dCBEU00ga2V5cyBjb25mbGljdGluZyB3aXRoIHBsYW5fbm9kZV9pZCB3 ZQorICogY2FuIHVzZSBzbWFsbCBpbnRlZ2Vycy4KKyAqLworI2RlZmluZSBBUFBMWV9CR1dPUktF Ul9LRVlfU0hBUkVECTEKKyNkZWZpbmUgQVBQTFlfQkdXT1JLRVJfS0VZX01RCQkyCisKKy8qIFF1 ZXVlIHNpemUgb2YgRFNNLCAxNiBNQiBmb3Igbm93LiAqLworI2RlZmluZSBEU01fUVVFVUVfU0la RQkxNjAwMDAwMDAKKworLyoKKyAqIFRoZXJlIGFyZSB0aHJlZSBmaWVsZHMgaW4gbWVzc2FnZTog c3RhcnRfbHNuLCBlbmRfbHNuIGFuZCBzZW5kX3RpbWUuIEJlY2F1c2UKKyAqIHdlIGhhdmUgdXBk YXRlZCB0aGVzZSBzdGF0aXN0aWNzIGluIGFwcGx5IHdvcmtlciwgd2UgY291bGQgaWdub3JlIHRo ZXNlCisgKiBmaWVsZHMgaW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuIChzZWUgZnVuY3Rpb24g TG9naWNhbFJlcEFwcGx5TG9vcCkKKyAqLworI2RlZmluZSBJR05PUkVfU0laRV9JTl9NRVNTQUdF ICgzICogc2l6ZW9mKHVpbnQ2NCkpCisKKy8qCisgKiBFbnRyeSBmb3IgYSBoYXNoIHRhYmxlIHdl IHVzZSB0byBtYXAgZnJvbSB4aWQgdG8gb3VyIGFwcGx5IGJhY2tncm91bmQgd29ya2VyCisgKiBz dGF0ZS4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQXBwbHlCZ3dvcmtlckVudHJ5Cit7CisJVHJhbnNh Y3Rpb25JZCB4aWQ7CisJQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGU7Cit9IEFwcGx5Qmd3b3Jr ZXJFbnRyeTsKKworLyogQXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIGhhc2ggdGFibGUgKGluaXRp YWxpemVkIG9uIGZpcnN0IHVzZSkgKi8KK3N0YXRpYyBIVEFCICpBcHBseVdvcmtlcnNIYXNoID0g TlVMTDsKK3N0YXRpYyBMaXN0ICpBcHBseVdvcmtlcnNGcmVlTGlzdCA9IE5JTDsKK3N0YXRpYyBM aXN0ICpBcHBseVdvcmtlcnNMaXN0ID0gTklMOworCisvKgorICogSW5mb3JtYXRpb24gc2hhcmVk IGJldHdlZW4gbWFpbiBhcHBseSB3b3JrZXIgYW5kIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLgor ICovCit2b2xhdGlsZSBBcHBseUJnd29ya2VyU2hhcmVkICpNeVBhcmFsbGVsU2hhcmVkID0gTlVM TDsKKworTGlzdAkgICAqc3VieGFjdGxpc3QgPSBOSUw7CisKK3N0YXRpYyBib29sIGFwcGx5X2Jn d29ya2VyX2Nhbl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCk7CitzdGF0aWMgQXBwbHlCZ3dvcmtl clN0YXRlICphcHBseV9iZ3dvcmtlcl9zZXR1cCh2b2lkKTsKK3N0YXRpYyB2b2lkIGFwcGx5X2Jn d29ya2VyX3NldHVwX2RzbShBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0ZSk7CisKKy8qCisgKiBD aGVjayBpZiBzdGFydGluZyBhIG5ldyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpcyBhbGxvd2Vk LgorICovCitzdGF0aWMgYm9vbAorYXBwbHlfYmd3b3JrZXJfY2FuX3N0YXJ0KFRyYW5zYWN0aW9u SWQgeGlkKQoreworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwkJcmV0dXJuIGZh bHNlOworCisJLyoKKwkgKiBEb24ndCBzdGFydCBhIG5ldyBiYWNrZ3JvdW5kIHdvcmtlciBpZiBu b3QgaW4gc3RyZWFtaW5nIHBhcmFsbGVsIG1vZGUuCisJICovCisJaWYgKE15U3Vic2NyaXB0aW9u LT5zdHJlYW0gIT0gU1VCU1RSRUFNX1BBUkFMTEVMKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgor CSAqIERvbid0IHN0YXJ0IGEgbmV3IGJhY2tncm91bmQgd29ya2VyIGlmIHVzZXIgaGFzIHNldCBz a2lwbHNuIGFzIGl0J3MKKwkgKiBwb3NzaWJsZSB0aGF0IHVzZXIgd2FudCB0byBza2lwIHRoZSBz dHJlYW1pbmcgdHJhbnNhY3Rpb24uIEZvcgorCSAqIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgd2Ug bmVlZCB0byBzcGlsbCB0aGUgdHJhbnNhY3Rpb24gdG8gZGlzayBzbyB0aGF0CisJICogd2UgY2Fu IGdldCB0aGUgbGFzdCBMU04gb2YgdGhlIHRyYW5zYWN0aW9uIHRvIGp1ZGdlIHdoZXRoZXIgdG8g c2tpcAorCSAqIGJlZm9yZSBzdGFydGluZyB0byBhcHBseSB0aGUgY2hhbmdlLgorCSAqLworCWlm ICghWExvZ1JlY1B0cklzSW52YWxpZChNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbikpCisJCXJldHVy biBmYWxzZTsKKworCS8qCisJICogRm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhhdCBhcmUg YmVpbmcgYXBwbGllZCBpbiBhcHBseSBiYWNrZ3JvdW5kCisJICogd29ya2VyLCB3ZSBjYW5ub3Qg ZGVjaWRlIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBmb3IgYSByZWxhdGlvbgorCSAqIHRo YXQgaXMgbm90IGluIHRoZSBSRUFEWSBzdGF0ZSAoc2VlIHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zv cl9yZWwpIGFzIHdlCisJICogd29uJ3Qga25vdyByZW1vdGVfZmluYWxfbHNuIGJ5IHRoYXQgdGlt ZS4gU28sIHdlIGRvbid0IHN0YXJ0IG5ldyBhcHBseQorCSAqIGJhY2tncm91bmQgd29ya2VyIGlu IHRoaXMgY2FzZS4KKwkgKi8KKwlpZiAoIUFsbFRhYmxlc3luY3NSZWFkeSgpKQorCQlyZXR1cm4g ZmFsc2U7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIFRyeSB0byBzdGFydCBhbiBhcHBs eSBiYWNrZ3JvdW5kIHdvcmtlciBhbmQsIGlmIHN1Y2Nlc3NmdWwsIGNhY2hlIGl0IGluCisgKiBB cHBseVdvcmtlcnNIYXNoIGtleWVkIGJ5IHRoZSBzcGVjaWZpZWQgeGlkLgorICovCitBcHBseUJn d29ya2VyU3RhdGUgKgorYXBwbHlfYmd3b3JrZXJfc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCit7 CisJYm9vbAkJZm91bmQ7CisJaW50CQkJc2VydmVyX3ZlcnNpb247CisJQXBwbHlCZ3dvcmtlclN0 YXRlICp3c3RhdGU7CisJQXBwbHlCZ3dvcmtlckVudHJ5ICplbnRyeSA9IE5VTEw7CisKKwlpZiAo IWFwcGx5X2Jnd29ya2VyX2Nhbl9zdGFydCh4aWQpKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIEZp cnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZSBhcHBseSB3b3JrZXJzIGhhc2h0YWJsZSAqLwor CWlmIChBcHBseVdvcmtlcnNIYXNoID09IE5VTEwpCisJeworCQlIQVNIQ1RMCQljdGw7CisKKwkJ TWVtU2V0KCZjdGwsIDAsIHNpemVvZihjdGwpKTsKKwkJY3RsLmtleXNpemUgPSBzaXplb2YoVHJh bnNhY3Rpb25JZCk7CisJCWN0bC5lbnRyeXNpemUgPSBzaXplb2YoQXBwbHlCZ3dvcmtlckVudHJ5 KTsKKwkJY3RsLmhjeHQgPSBBcHBseUNvbnRleHQ7CisKKwkJQXBwbHlXb3JrZXJzSGFzaCA9IGhh c2hfY3JlYXRlKCJsb2dpY2FsIGFwcGx5IHdvcmtlcnMgaGFzaCIsIDgsICZjdGwsCisJCQkJCQkJ CQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9DT05URVhUKTsKKwl9CisKKwkvKgor CSAqIE5vdywgd2UgdHJ5IHRvIGdldCBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gSWYgdGhl cmUgaXMgYXQgbGVhc3Qgb25lCisJICogd29ya2VyIGluIHRoZSBmcmVlIGxpc3QsIHRoZW4gdGFr ZSBvbmUuIE90aGVyd2lzZSwgd2UgdHJ5IHRvIHN0YXJ0IGEKKwkgKiBuZXcgYXBwbHkgYmFja2dy b3VuZCB3b3JrZXIuCisJICovCisJaWYgKGxpc3RfbGVuZ3RoKEFwcGx5V29ya2Vyc0ZyZWVMaXN0 KSA+IDApCisJeworCQl3c3RhdGUgPSAoQXBwbHlCZ3dvcmtlclN0YXRlICopIGxsYXN0KEFwcGx5 V29ya2Vyc0ZyZWVMaXN0KTsKKwkJQXBwbHlXb3JrZXJzRnJlZUxpc3QgPSBsaXN0X2RlbGV0ZV9s YXN0KEFwcGx5V29ya2Vyc0ZyZWVMaXN0KTsKKwkJQXNzZXJ0KHdzdGF0ZS0+c2hhcmVkLT5zdGF0 dXMgPT0gQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCX0KKwllbHNlCisJeworCQl3c3RhdGUg PSBhcHBseV9iZ3dvcmtlcl9zZXR1cCgpOworCisJCWlmICh3c3RhdGUgPT0gTlVMTCkKKwkJCXJl dHVybiBOVUxMOworCX0KKworCS8qCisJICogQ3JlYXRlIGVudHJ5IGZvciByZXF1ZXN0ZWQgdHJh bnNhY3Rpb24uCisJICovCisJZW50cnkgPSBoYXNoX3NlYXJjaChBcHBseVdvcmtlcnNIYXNoLCAm eGlkLCBIQVNIX0VOVEVSLCAmZm91bmQpOworCWlmIChmb3VuZCkKKwkJZWxvZyhFUlJPUiwgImhh c2ggdGFibGUgY29ycnVwdGVkIik7CisKKwkvKiBGaWxsIHVwIHRoZSBoYXNoIGVudHJ5ICovCisJ d3N0YXRlLT5zaGFyZWQtPnN0YXR1cyA9IEFQUExZX0JHV09SS0VSX0JVU1k7CisKKwlzZXJ2ZXJf dmVyc2lvbiA9IHdhbHJjdl9zZXJ2ZXJfdmVyc2lvbihMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKTsK Kwl3c3RhdGUtPnNoYXJlZC0+c2VydmVyX3ZlcnNpb24gPQorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAx NjAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSA6CisJ CXNlcnZlcl92ZXJzaW9uID49IDE1MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVS U0lPTl9OVU0gOgorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNDAwMDAgPyBMT0dJQ0FMUkVQX1BST1RP X1NUUkVBTV9WRVJTSU9OX05VTSA6CisJCUxPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU07CisK Kwl3c3RhdGUtPnNoYXJlZC0+c3RyZWFtX3hpZCA9IHhpZDsKKwllbnRyeS0+d3N0YXRlID0gd3N0 YXRlOworCWVudHJ5LT54aWQgPSB4aWQ7CisKKwlyZXR1cm4gd3N0YXRlOworfQorCisvKgorICog VHJ5IHRvIGxvb2sgdXAgd29ya2VyIGluc2lkZSBBcHBseVdvcmtlcnNIYXNoIGZvciByZXF1ZXN0 ZWQgeGlkLgorICovCitBcHBseUJnd29ya2VyU3RhdGUgKgorYXBwbHlfYmd3b3JrZXJfZmluZChU cmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlBcHBseUJnd29ya2VyRW50cnkg KmVudHJ5ID0gTlVMTDsKKworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSkKKwkJcmV0 dXJuIE5VTEw7CisKKwlpZiAoQXBwbHlXb3JrZXJzSGFzaCA9PSBOVUxMKQorCQlyZXR1cm4gTlVM TDsKKworCS8qCisJICogRmluZCBlbnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLgorCSAq LworCWVudHJ5ID0gaGFzaF9zZWFyY2goQXBwbHlXb3JrZXJzSGFzaCwgJnhpZCwgSEFTSF9GSU5E LCAmZm91bmQpOworCWlmIChmb3VuZCkKKwl7CisJCWNoYXIgc3RhdHVzID0gZW50cnktPndzdGF0 ZS0+c2hhcmVkLT5zdGF0dXM7CisKKwkJLyogSWYgYW55IHdvcmtlcnMgKG9yIHRoZSBwb3N0bWFz dGVyKSBoYXZlIGRpZWQsIHdlIGhhdmUgZmFpbGVkLiAqLworCQlpZiAoc3RhdHVzID09IEFQUExZ X0JHV09SS0VSX0VYSVQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygiYmFja2dy b3VuZCB3b3JrZXIgJXUgZmFpbGVkIHRvIGFwcGx5IHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCQll bnRyeS0+d3N0YXRlLT5zaGFyZWQtPm4sCisJCQkJCQkJZW50cnktPndzdGF0ZS0+c2hhcmVkLT5z dHJlYW1feGlkKSkpOworCisJCUFzc2VydChzdGF0dXMgPT0gQVBQTFlfQkdXT1JLRVJfQlVTWSk7 CisKKwkJcmV0dXJuIGVudHJ5LT53c3RhdGU7CisJfQorCWVsc2UKKwkJcmV0dXJuIE5VTEw7Cit9 CisKKy8qCisgKiBBZGQgdGhlIHdvcmtlciB0byB0aGUgZnJlZSBsaXN0IGFuZCByZW1vdmUgdGhl IGVudHJ5IGZyb20gdGhlIGhhc2ggdGFibGUuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX2Zy ZWUoQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjdHg7 CisJVHJhbnNhY3Rpb25JZCB4aWQgPSB3c3RhdGUtPnNoYXJlZC0+c3RyZWFtX3hpZDsKKworCUFz c2VydCh3c3RhdGUtPnNoYXJlZC0+c3RhdHVzID09IEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsK KworCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJaGFz aF9zZWFyY2goQXBwbHlXb3JrZXJzSGFzaCwgJnhpZCwgSEFTSF9SRU1PVkUsIE5VTEwpOworCisJ ZWxvZyhERUJVRzEsICJhZGRpbmcgZmluaXNoZWQgYXBwbHkgd29ya2VyICMldSBmb3IgeGlkICV1 IHRvIHRoZSBmcmVlIGxpc3QiLAorCQkgd3N0YXRlLT5zaGFyZWQtPm4sIHdzdGF0ZS0+c2hhcmVk LT5zdHJlYW1feGlkKTsKKworCUFwcGx5V29ya2Vyc0ZyZWVMaXN0ID0gbGFwcGVuZChBcHBseVdv cmtlcnNGcmVlTGlzdCwgd3N0YXRlKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgp OworfQorCisvKiBBcHBseSBCYWNrZ3JvdW5kIFdvcmtlciBtYWluIGxvb3AgKi8KK3N0YXRpYyB2 b2lkCitMb2dpY2FsQXBwbHlCZ3dMb29wKHNobV9tcV9oYW5kbGUgKm1xaCwgdm9sYXRpbGUgQXBw bHlCZ3dvcmtlclNoYXJlZCAqc2hhcmVkKQoreworCXNobV9tcV9yZXN1bHQgc2htcV9yZXM7CisJ UEdQUk9DCSAgICpyZWdpc3RyYW50OworCUVycm9yQ29udGV4dENhbGxiYWNrIGVycmNhbGxiYWNr OworCisJcmVnaXN0cmFudCA9IEJhY2tlbmRQaWRHZXRQcm9jKE15Qmd3b3JrZXJFbnRyeS0+Ymd3 X25vdGlmeV9waWQpOworCVNldExhdGNoKCZyZWdpc3RyYW50LT5wcm9jTGF0Y2gpOworCisJLyoK KwkgKiBQdXNoIGFwcGx5IGVycm9yIGNvbnRleHQgY2FsbGJhY2suIEZpZWxkcyB3aWxsIGJlIGZp bGxlZCBhcHBseWluZyBhCisJICogY2hhbmdlLgorCSAqLworCWVycmNhbGxiYWNrLmNhbGxiYWNr ID0gYXBwbHlfZXJyb3JfY2FsbGJhY2s7CisJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9j b250ZXh0X3N0YWNrOworCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisKKwlm b3IgKDs7KQorCXsKKwkJdm9pZAkgICAqZGF0YTsKKwkJU2l6ZQkJbGVuOworCQlpbnQJCQljOwor CQlTdHJpbmdJbmZvRGF0YSBzOworCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKworCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCisJCS8qIEVuc3VyZSB3ZSBhcmUgcmVhZGluZyB0aGUgZGF0YSBp bnRvIG91ciBtZW1vcnkgY29udGV4dC4gKi8KKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKEFwcGx5TWVzc2FnZUNvbnRleHQpOworCisJCXNobXFfcmVzID0gc2htX21xX3JlY2VpdmUo bXFoLCAmbGVuLCAmZGF0YSwgZmFsc2UpOworCisJCWlmIChzaG1xX3JlcyAhPSBTSE1fTVFfU1VD Q0VTUykKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24g dG8gdGhlIG1haW4gYXBwbHkgd29ya2VyIikpKTsKKworCQlpZiAobGVuID09IDApCisJCQlicmVh azsKKworCQlzLmN1cnNvciA9IDA7CisJCXMubWF4bGVuID0gLTE7CisJCXMuZGF0YSA9IChjaGFy ICopIGRhdGE7CisJCXMubGVuID0gbGVuOworCisJCS8qCisJCSAqIFdlIHVzZSBmaXJzdCBieXRl IG9mIG1lc3NhZ2UgZm9yIGFkZGl0aW9uYWwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuCisJCSAqIG1h aW4gTG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgYW5kIGFwcGx5IGJhY2tncm91bmQgd29ya2Vy cywgc28gaWYKKwkJICogaXQgZGlmZmVycyBmcm9tICd3JywgdGhlbiBwcm9jZXNzIGl0IGZpcnN0 LgorCQkgKi8KKwkJYyA9IHBxX2dldG1zZ2J5dGUoJnMpOworCQlzd2l0Y2ggKGMpCisJCXsKKwkJ CS8qIEVuZCBtZXNzYWdlIG9mIHN0cmVhbWluZyBjaHVuayAqLworCQkJY2FzZSBMT0dJQ0FMX1JF UF9NU0dfU1RSRUFNX1NUT1A6CisJCQkJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdXICMldV0gZW5k ZWQgcHJvY2Vzc2luZyBzdHJlYW1pbmcgY2h1bmssIgorCQkJCQkgIndhaXRpbmcgb24gc2htX21x X3JlY2VpdmUiLCBzaGFyZWQtPm4pOworCisJCQkJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBm YWxzZTsKKwkJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRSQU5TQUNUSU9O LCBOVUxMKTsKKwkJCQljb250aW51ZTsKKwkJCWNhc2UgJ3cnOgorCQkJCWJyZWFrOworCQkJZGVm YXVsdDoKKwkJCQllbG9nKEVSUk9SLCAiW0FwcGx5IEJHVyAjJXVdIHVuZXhwZWN0ZWQgbWVzc2Fn ZSBcIiVjXCIiLAorCQkJCQkgc2hhcmVkLT5uLCBjKTsKKwkJCQlicmVhazsKKwkJfQorCisJCS8q IElnbm9yZSBzdGF0aXN0aWNzIGZpZWxkcyB0aGF0IGhhdmUgYmVlbiB1cGRhdGVkLiAqLworCQlz LmN1cnNvciArPSBJR05PUkVfU0laRV9JTl9NRVNTQUdFOworCisJCWFwcGx5X2Rpc3BhdGNoKCZz KTsKKworCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJeworCQkJQ29uZmlnUmVsb2FkUGVu ZGluZyA9IGZhbHNlOworCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJCX0KKwor CQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwkJTWVtb3J5Q29udGV4dFJlc2V0KEFw cGx5TWVzc2FnZUNvbnRleHQpOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BNZW1v cnlDb250ZXh0KTsKKwlNZW1vcnlDb250ZXh0UmVzZXQoQXBwbHlDb250ZXh0KTsKKworCS8qIFBv cCB0aGUgZXJyb3IgY29udGV4dCBzdGFjayAqLworCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJj YWxsYmFjay5wcmV2aW91czsKKworCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIGV4aXRp bmciLCBzaGFyZWQtPm4pOworCisJLyogU2lnbmFsIG1haW4gcHJvY2VzcyB0aGF0IHdlIGFyZSBk b25lLiAqLworCVNldExhdGNoKCZyZWdpc3RyYW50LT5wcm9jTGF0Y2gpOworfQorCisvKgorICog U2V0IHRoZSBleGl0IHN0YXR1cyBzbyB0aGF0IHRoZSBtYWluIGFwcGx5IHdvcmtlciBjYW4gcmVh bGl6ZSB3ZSBoYXZlCisgKiBzaHV0ZG93bi4KKyAqLworc3RhdGljIHZvaWQKK2FwcGx5X2Jnd29y a2VyX3NodXRkb3duKGludCBjb2RlLCBEYXR1bSBhcmcpCit7CisJU3BpbkxvY2tBY3F1aXJlKCZN eVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7CisJTXlQYXJhbGxlbFNoYXJlZC0+c3RhdHVzID0gQVBQ TFlfQkdXT1JLRVJfRVhJVDsKKwlTcGluTG9ja1JlbGVhc2UoJk15UGFyYWxsZWxTaGFyZWQtPm11 dGV4KTsKKworCWRzbV9kZXRhY2goKGRzbV9zZWdtZW50ICopIERhdHVtR2V0UG9pbnRlcihhcmcp KTsKK30KKworLyoKKyAqIEFwcGx5IEJhY2tncm91bmQgV29ya2VyIGVudHJ5IHBvaW50CisgKi8K K3ZvaWQKK0FwcGx5Qmd3b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQoreworCXZvbGF0aWxlIEFw cGx5Qmd3b3JrZXJTaGFyZWQgKnNoYXJlZDsKKworCWRzbV9oYW5kbGUJaGFuZGxlOworCWRzbV9z ZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCXNobV9tcQkgICAqbXE7CisJc2htX21x X2hhbmRsZSAqbXFoOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlSZXBPcmlnaW5JZCBv cmlnaW5pZDsKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOwor CWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRv KFRvcE1lbW9yeUNvbnRleHQpOworCisJLyogSW5pdCB0aGUgbWVtb3J5IGNvbnRleHQgZm9yIHRo ZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciB0byB3b3JrIGluLiAqLworCUFwcGx5Q29udGV4dCA9 IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCSAiQXBw bHlDb250ZXh0IiwKKwkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwkvKgor CSAqIEluaXQgdGhlIEFwcGx5TWVzc2FnZUNvbnRleHQgd2hpY2ggd2UgY2xlYW4gdXAgYWZ0ZXIg ZWFjaCByZXBsaWNhdGlvbgorCSAqIHByb3RvY29sIG1lc3NhZ2UuCisJICovCisJQXBwbHlNZXNz YWdlQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShBcHBseUNvbnRleHQsCisJCQkJCQkJ CQkJCQkiQXBwbHlNZXNzYWdlQ29udGV4dCIsCisJCQkJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxU X1NJWkVTKTsKKworCS8qIFNldHVwIHNpZ25hbCBoYW5kbGluZyAqLworCXBxc2lnbmFsKFNJR0hV UCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CisJcHFzaWduYWwoU0lHVEVSTSwgZGll KTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKKworCS8qCisJICogQ29ubmVj dCB0byB0aGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuCisJICoKKwkgKiBUaGUgYmFj a2VuZCB0aGF0IHJlZ2lzdGVyZWQgdGhpcyB3b3JrZXIgcGFzc2VkIHVzIHRoZSBJRCBvZiBhIHNo YXJlZAorCSAqIG1lbW9yeSBzZWdtZW50IHRvIHdoaWNoIHdlIG11c3QgYXR0YWNoIGZvciBmdXJ0 aGVyIGluc3RydWN0aW9ucy4gIEluCisJICogb3JkZXIgdG8gYXR0YWNoIHRvIGR5bmFtaWMgc2hh cmVkIG1lbW9yeSwgd2UgbmVlZCBhIHJlc291cmNlIG93bmVyLgorCSAqIE9uY2Ugd2UndmUgbWFw cGVkIHRoZSBzZWdtZW50IGluIG91ciBhZGRyZXNzIHNwYWNlLCBhdHRhY2ggdG8gdGhlIHRhYmxl CisJICogb2YgY29udGVudHMgc28gd2UgY2FuIGxvY2F0ZSB0aGUgdmFyaW91cyBkYXRhIHN0cnVj dHVyZXMgd2UnbGwgbmVlZCB0bworCSAqIGZpbmQgd2l0aGluIHRoZSBzZWdtZW50LgorCSAqLwor CUN1cnJlbnRSZXNvdXJjZU93bmVyID0gUmVzb3VyY2VPd25lckNyZWF0ZShOVUxMLCAiTG9naWNh bCBhcHBseSB3b3JrZXIiKTsKKwltZW1jcHkoJmhhbmRsZSwgTXlCZ3dvcmtlckVudHJ5LT5iZ3df ZXh0cmEsIHNpemVvZihkc21faGFuZGxlKSk7CisJc2VnID0gZHNtX2F0dGFjaChoYW5kbGUpOwor CWlmIChzZWcgPT0gTlVMTCkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJ1bmFibGUg dG8gbWFwIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IikpKTsKKwl0b2MgPSBzaG1fdG9j X2F0dGFjaChQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhz ZWcpKTsKKwlpZiAodG9jID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygi YmFkIG1hZ2ljIG51bWJlciBpbiBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisK KwliZWZvcmVfc2htZW1fZXhpdChhcHBseV9iZ3dvcmtlcl9zaHV0ZG93biwgUG9pbnRlckdldERh dHVtKHNlZykpOworCisJLyogTG9vayB1cCB0aGUgc2hhcmVkIGluZm9ybWF0aW9uLiAqLworCXNo YXJlZCA9IHNobV90b2NfbG9va3VwKHRvYywgQVBQTFlfQkdXT1JLRVJfS0VZX1NIQVJFRCwgZmFs c2UpOworCU15UGFyYWxsZWxTaGFyZWQgPSBzaGFyZWQ7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0 aGUgbWVzc2FnZSBxdWV1ZS4KKwkgKi8KKwltcSA9IHNobV90b2NfbG9va3VwKHRvYywgQVBQTFlf QkdXT1JLRVJfS0VZX01RLCBmYWxzZSk7CisJc2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9j KTsKKwltcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyogUnVuIGFzIHJl cGxpY2Egc2Vzc2lvbiByZXBsaWNhdGlvbiByb2xlLiAqLworCVNldENvbmZpZ09wdGlvbigic2Vz c2lvbl9yZXBsaWNhdGlvbl9yb2xlIiwgInJlcGxpY2EiLAorCQkJCQlQR0NfU1VTRVQsIFBHQ19T X09WRVJSSURFKTsKKworCS8qCisJICogTm93LCB3ZSBoYXZlIGluaXRpYWxpemVkIERTTS4gQXR0 YWNoIHRvIHNsb3QuCisJICovCisJbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90 KTsKKworCS8qIENvbm5lY3QgdG8gb3VyIGRhdGFiYXNlLiAqLworCUJhY2tncm91bmRXb3JrZXJJ bml0aWFsaXplQ29ubmVjdGlvbkJ5T2lkKE15TG9naWNhbFJlcFdvcmtlci0+ZGJpZCwKKwkJCQkJ CQkJCQkJICBNeUxvZ2ljYWxSZXBXb3JrZXItPnVzZXJpZCwKKwkJCQkJCQkJCQkJICAwKTsKKwor CS8qCisJICogU2V0IGFsd2F5cy1zZWN1cmUgc2VhcmNoIHBhdGgsIHNvIG1hbGljaW91cyB1c2Vy cyBjYW4ndCByZWRpcmVjdCB1c2VyCisJICogY29kZSAoZS5nLiBwZ19pbmRleC5pbmRleHBycyku CisJICovCisJU2V0Q29uZmlnT3B0aW9uKCJzZWFyY2hfcGF0aCIsICIiLCBQR0NfU1VTRVQsIFBH Q19TX09WRVJSSURFKTsKKworCS8qCisJICogU2V0IHRoZSBjbGllbnQgZW5jb2RpbmcgdG8gdGhl IGRhdGFiYXNlIGVuY29kaW5nLCBzaW5jZSB0aGF0IGlzIHdoYXQKKwkgKiB0aGUgbGVhZGVyIHdp bGwgZXhwZWN0LgorCSAqLworCVNldENsaWVudEVuY29kaW5nKEdldERhdGFiYXNlRW5jb2Rpbmco KSk7CisKKwlzdHJlYW1feGlkID0gc2hhcmVkLT5zdHJlYW1feGlkOworCisJU3RhcnRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5 Q29udGV4dCk7CisKKwlNeVN1YnNjcmlwdGlvbiA9IEdldFN1YnNjcmlwdGlvbihNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCB0cnVlKTsKKwlpZiAoIU15U3Vic2NyaXB0aW9uKQorCXsKKwkJZXJl cG9ydChMT0csCisJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIg Zm9yIHN1YnNjcmlwdGlvbiAldSB3aWxsIG5vdCAiCisJCQkJCQkic3RhcnQgYmVjYXVzZSB0aGUg c3Vic2NyaXB0aW9uIHdhcyByZW1vdmVkIGR1cmluZyBzdGFydHVwIiwKKwkJCQkJCU15TG9naWNh bFJlcFdvcmtlci0+c3ViaWQpKSk7CisJCXByb2NfZXhpdCgwKTsKKwl9CisKKwlNeVN1YnNjcmlw dGlvblZhbGlkID0gdHJ1ZTsKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisK KwkvKiBTZXR1cCBzeW5jaHJvbm91cyBjb21taXQgYWNjb3JkaW5nIHRvIHRoZSB1c2VyJ3Mgd2lz aGVzICovCisJU2V0Q29uZmlnT3B0aW9uKCJzeW5jaHJvbm91c19jb21taXQiLCBNeVN1YnNjcmlw dGlvbi0+c3luY2NvbW1pdCwKKwkJCQkJUEdDX0JBQ0tFTkQsIFBHQ19TX09WRVJSSURFKTsKKwor CS8qIEtlZXAgdXMgaW5mb3JtZWQgYWJvdXQgc3Vic2NyaXB0aW9uIGNoYW5nZXMuICovCisJQ2Fj aGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soU1VCU0NSSVBUSU9OT0lELAorCQkJCQkJCQkgIHN1 YnNjcmlwdGlvbl9jaGFuZ2VfY2IsCisJCQkJCQkJCSAgKERhdHVtKSAwKTsKKworCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyogU2V0dXAgcmVwbGljYXRpb24gb3JpZ2luIHRyYWNr aW5nLiAqLworCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJc25wcmludGYob3JpZ2lubmFt ZSwgc2l6ZW9mKG9yaWdpbm5hbWUpLCAicGdfJXUiLCBNeVN1YnNjcmlwdGlvbi0+b2lkKTsKKwlv cmlnaW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCB0cnVlKTsKKwlpZiAoIU9p ZElzVmFsaWQob3JpZ2luaWQpKQorCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fY3JlYXRlKG9yaWdp bm5hbWUpOworCisJLyoKKwkgKiBUaGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgZG9lc24ndCBu ZWVkIHRvIG1vbm9wb2xpemUgdGhpcyByZXBsaWNhdGlvbgorCSAqIG9yaWdpbiB3aGljaCB3YXMg YWxyZWFkeSBhY3F1aXJlZCBieSBpdHMgbGVhZGVyIHByb2Nlc3MuCisJICovCisJcmVwbG9yaWdp bl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCBmYWxzZSk7CisJcmVwbG9yaWdpbl9zZXNzaW9uX29y aWdpbiA9IG9yaWdpbmlkOworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkg KiBBbGxvY2F0ZSB0aGUgb3JpZ2luIG5hbWUgaW4gbG9uZy1saXZlZCBjb250ZXh0IGZvciBlcnJv ciBjb250ZXh0CisJICogbWVzc2FnZS4KKwkgKi8KKwlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcu b3JpZ2luX25hbWUgPSBNZW1vcnlDb250ZXh0U3RyZHVwKEFwcGx5Q29udGV4dCwKKwkJCQkJCQkJ CQkJCQkJCSAgIG9yaWdpbm5hbWUpOworCisJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdXICMldV0g c3RhcnRlZCIsIHNoYXJlZC0+bik7CisKKwlMb2dpY2FsQXBwbHlCZ3dMb29wKG1xaCwgc2hhcmVk KTsKKworCS8qCisJICogV2UncmUgZG9uZS4gIEV4cGxpY2l0bHkgZGV0YWNoIHRoZSBzaGFyZWQg bWVtb3J5IHNlZ21lbnQgc28gdGhhdCB3ZQorCSAqIGRvbid0IGdldCBhIHJlc291cmNlIGxlYWsg d2FybmluZyBhdCBjb21taXQgdGltZS4gIFRoaXMgd2lsbCBmaXJlIGFueQorCSAqIG9uX2RzbV9k ZXRhY2ggY2FsbGJhY2tzIHdlJ3ZlIHJlZ2lzdGVyZWQsIGFzIHdlbGwuICBPbmNlIHRoYXQncyBk b25lLAorCSAqIHdlIGNhbiBnbyBhaGVhZCBhbmQgZXhpdC4KKwkgKi8KKwlkc21fZGV0YWNoKHNl Zyk7CisJcHJvY19leGl0KDApOworfQorCisvKgorICogU2V0IHVwIGEgZHluYW1pYyBzaGFyZWQg bWVtb3J5IHNlZ21lbnQuCisgKgorICogV2Ugc2V0IHVwIGEgY29udHJvbCByZWdpb24gdGhhdCBj b250YWlucyBhIEFwcGx5Qmd3b3JrZXJTaGFyZWQsCisgKiBwbHVzIG9uZSByZWdpb24gcGVyIG1l c3NhZ2UgcXVldWUuIFRoZXJlIGFyZSBhcyBtYW55IG1lc3NhZ2UgcXVldWVzIGFzCisgKiB0aGUg bnVtYmVyIG9mIHdvcmtlcnMuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9iZ3dvcmtlcl9zZXR1 cF9kc20oQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUpCit7CisJc2htX3RvY19lc3RpbWF0b3Ig ZTsKKwlTaXplCQlzZWdzaXplOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9j OworCUFwcGx5Qmd3b3JrZXJTaGFyZWQgKnNoYXJlZDsKKwlzaG1fbXEJICAgKm1xOworCWludDY0 CQlxdWV1ZV9zaXplID0gRFNNX1FVRVVFX1NJWkU7CisJaW50CQkJc2VydmVyX3ZlcnNpb247CisK KwkvKgorCSAqIEVzdGltYXRlIGhvdyBtdWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkgKgor CSAqIEJlY2F1c2UgdGhlIFRPQyBtYWNoaW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFkZGlu ZyBvZiBvZGRseS1zaXplZAorCSAqIHJlcXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2ggY2h1 bmsgc2VwYXJhdGVseS4KKwkgKgorCSAqIFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0aGUg bG9jYXRpb24gb2YgdGhlIGhlYWRlciwgYW5kIHdlIG5lZWQKKwkgKiBhbm90aGVyIGtleSB0byB0 cmFjayB0aGUgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJc2htX3RvY19p bml0aWFsaXplX2VzdGltYXRvcigmZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgc2l6 ZW9mKEFwcGx5Qmd3b3JrZXJTaGFyZWQpKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCAo U2l6ZSkgcXVldWVfc2l6ZSk7CisKKwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJmUsIDEgKyAxKTsK KwlzZWdzaXplID0gc2htX3RvY19lc3RpbWF0ZSgmZSk7CisKKwkvKiBDcmVhdGUgdGhlIHNoYXJl ZCBtZW1vcnkgc2VnbWVudCBhbmQgZXN0YWJsaXNoIGEgdGFibGUgb2YgY29udGVudHMuICovCisJ c2VnID0gZHNtX2NyZWF0ZShzaG1fdG9jX2VzdGltYXRlKCZlKSwgMCk7CisJdG9jID0gc2htX3Rv Y19jcmVhdGUoUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Mo c2VnKSwKKwkJCQkJCSBzZWdzaXplKTsKKworCS8qIFNldCB1cCB0aGUgaGVhZGVyIHJlZ2lvbi4g Ki8KKwlzaGFyZWQgPSBzaG1fdG9jX2FsbG9jYXRlKHRvYywgc2l6ZW9mKEFwcGx5Qmd3b3JrZXJT aGFyZWQpKTsKKwlTcGluTG9ja0luaXQoJnNoYXJlZC0+bXV0ZXgpOworCXNoYXJlZC0+c3RhdHVz ID0gQVBQTFlfQkdXT1JLRVJfQlVTWTsKKworCXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZl cl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOworCXNoYXJlZC0+c2VydmVyX3ZlcnNp b24gPQorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNjAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1NUUkVB TV9QQVJBTExFTF9WRVJTSU9OX05VTSA6CisJCXNlcnZlcl92ZXJzaW9uID49IDE1MDAwMCA/IExP R0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gOgorCQlzZXJ2ZXJfdmVyc2lvbiA+ PSAxNDAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSA6CisJCUxPR0lD QUxSRVBfUFJPVE9fVkVSU0lPTl9OVU07CisKKwlzaGFyZWQtPnN0cmVhbV94aWQgPSBzdHJlYW1f eGlkOworCXNoYXJlZC0+biA9IGxpc3RfbGVuZ3RoKEFwcGx5V29ya2Vyc0xpc3QpICsgMTsKKwor CXNobV90b2NfaW5zZXJ0KHRvYywgQVBQTFlfQkdXT1JLRVJfS0VZX1NIQVJFRCwgc2hhcmVkKTsK KworCS8qIFNldCB1cCBtZXNzYWdlIHF1ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2ht X21xX2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRlKHRvYywgKFNpemUpIHF1ZXVlX3NpemUpLAorCQkJ CQkgICAoU2l6ZSkgcXVldWVfc2l6ZSk7CisJc2htX3RvY19pbnNlcnQodG9jLCBBUFBMWV9CR1dP UktFUl9LRVlfTVEsIG1xKTsKKwlzaG1fbXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKKworCS8q IEF0dGFjaCB0aGUgcXVldWUuICovCisJd3N0YXRlLT5tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNo KG1xLCBzZWcsIE5VTEwpOworCisJLyogUmV0dXJuIHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdz dGF0ZS0+ZHNtX3NlZyA9IHNlZzsKKwl3c3RhdGUtPnNoYXJlZCA9IHNoYXJlZDsKK30KKworLyoK KyAqIFN0YXJ0IGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHByb2Nlc3MgYW5kIGFsbG9jYXRlIHNo YXJlZCBtZW1vcnkgZm9yIGl0LgorICovCitzdGF0aWMgQXBwbHlCZ3dvcmtlclN0YXRlICoKK2Fw cGx5X2Jnd29ya2VyX3NldHVwKHZvaWQpCit7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0Owor CWJvb2wJCWxhdW5jaGVkOworCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlOworCWludAkJCW5h cHBseXdvcmtlcnM7CisKKwllbG9nKERFQlVHMSwgInNldHRpbmcgdXAgYXBwbHkgd29ya2VyICMl dSIsIGxpc3RfbGVuZ3RoKEFwcGx5V29ya2Vyc0xpc3QpICsgMSk7CisKKwkvKiBDaGVjayBpZiB0 aGVyZSBhcmUgZnJlZSB3b3JrZXIgc2xvdChzKSAqLworCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJl cFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisJbmFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBfYXBw bHlfYmd3b3JrZXJfY291bnQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCk7CisJTFdMb2NrUmVs ZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisJaWYgKG5hcHBseXdvcmtlcnMgPj0gbWF4X2Fw cGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKQorCQlyZXR1cm4gTlVMTDsKKworCW9sZGNv bnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCXdzdGF0ZSA9 IChBcHBseUJnd29ya2VyU3RhdGUgKikgcGFsbG9jMChzaXplb2YoQXBwbHlCZ3dvcmtlclN0YXRl KSk7CisKKwkvKiBTZXR1cCBzaGFyZWQgbWVtb3J5ICovCisJYXBwbHlfYmd3b3JrZXJfc2V0dXBf ZHNtKHdzdGF0ZSk7CisKKwlsYXVuY2hlZCA9IGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChNeUxv Z2ljYWxSZXBXb3JrZXItPmRiaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm9pZCwKKwkJ CQkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCQkJCQlNeUxvZ2ljYWxSZXBXb3Jr ZXItPnVzZXJpZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCWRzbV9zZWdtZW50 X2hhbmRsZSh3c3RhdGUtPmRzbV9zZWcpKTsKKworCWlmIChsYXVuY2hlZCkKKwkJQXBwbHlXb3Jr ZXJzTGlzdCA9IGxhcHBlbmQoQXBwbHlXb3JrZXJzTGlzdCwgd3N0YXRlKTsKKwllbHNlCisJewor CQlkc21fZGV0YWNoKHdzdGF0ZS0+ZHNtX3NlZyk7CisJCXdzdGF0ZS0+ZHNtX3NlZyA9IE5VTEw7 CisKKwkJcGZyZWUod3N0YXRlKTsKKwkJd3N0YXRlID0gTlVMTDsKKwl9CisKKwlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwlyZXR1cm4gd3N0YXRlOworfQorCisvKgorICog U2VuZCB0aGUgZGF0YSB0byB0aGUgc3BlY2lmaWVkIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHZp YSBzaGFyZWQtbWVtb3J5IHF1ZXVlLgorICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9zZW5kX2Rh dGEoQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUsIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpk YXRhKQoreworCXNobV9tcV9yZXN1bHQgcmVzdWx0OworCisJcmVzdWx0ID0gc2htX21xX3NlbmQo d3N0YXRlLT5tcV9oYW5kbGUsIG5ieXRlcywgZGF0YSwgZmFsc2UsIHRydWUpOworCisJaWYgKHJl c3VsdCAhPSBTSE1fTVFfU1VDQ0VTUykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJj b3VsZCBub3Qgc2VuZCB0dXBsZXMgdG8gc2hhcmVkLW1lbW9yeSBxdWV1ZSIpKSk7Cit9CisKKy8q CisgKiBXYWl0IHVudGlsIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgcmVh Y2hlcyB0aGUKKyAqICd3YWl0X2Zvcl9zdGF0dXMnCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2Vy X3dhaXRfZm9yKEFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlLAorCQkJCQkJQXBwbHlCZ3dvcmtl clN0YXR1cyB3YWl0X2Zvcl9zdGF0dXMpCit7CisJZm9yICg7OykKKwl7CisJCWNoYXIJCXN0YXR1 czsKKworCQlTcGluTG9ja0FjcXVpcmUoJndzdGF0ZS0+c2hhcmVkLT5tdXRleCk7CisJCXN0YXR1 cyA9IHdzdGF0ZS0+c2hhcmVkLT5zdGF0dXM7CisJCVNwaW5Mb2NrUmVsZWFzZSgmd3N0YXRlLT5z aGFyZWQtPm11dGV4KTsKKworCQkvKiBEb25lIGlmIGFscmVhZHkgaW4gY29ycmVjdCBzdGF0dXMu ICovCisJCWlmIChzdGF0dXMgPT0gd2FpdF9mb3Jfc3RhdHVzKQorCQkJYnJlYWs7CisKKwkJLyog SWYgYW55IHdvcmtlcnMgKG9yIHRoZSBwb3N0bWFzdGVyKSBoYXZlIGRpZWQsIHdlIGhhdmUgZmFp bGVkLiAqLworCQlpZiAoc3RhdHVzID09IEFQUExZX0JHV09SS0VSX0VYSVQpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRF X1NUQVRFKSwKKwkJCQkJIGVycm1zZygiYmFja2dyb3VuZCB3b3JrZXIgJXUgZmFpbGVkIHRvIGFw cGx5IHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCQl3c3RhdGUtPnNoYXJlZC0+biwgd3N0YXRlLT5z aGFyZWQtPnN0cmVhbV94aWQpKSk7CisKKwkJLyogV2FpdCB0byBiZSBzaWduYWxsZWQuICovCisJ CVdhaXRMYXRjaChNeUxhdGNoLCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAw LAorCQkJCSAgV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX1dPUktFUl9TVEFURV9DSEFOR0UpOwor CisJCS8qIFJlc2V0IHRoZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlSZXNldExhdGNo KE15TGF0Y2gpOworCisJCS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3 ZSB3ZXJlIHdhaXRpbmcuICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJfQorfQorCisv KgorICogQ2hlY2sgdGhlIHN0YXR1cyBvZiB3b3JrZXJzIGFuZCByZXBvcnQgYW4gZXJyb3IgaWYg YW55IGFwcGx5IGJhY2tncm91bmQKKyAqIHdvcmtlciBoYXMgZXhpdGVkIHVuZXhwZWN0ZWRseS4K KyAqLwordm9pZAorYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKHZvaWQpCit7CisJTGlzdENl bGwgICAqbGM7CisKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSB8fCBNeVN1YnNjcmlwdGlvbi0+ c3RyZWFtICE9IFNVQlNUUkVBTV9QQVJBTExFTCkKKwkJcmV0dXJuOworCisJZm9yZWFjaChsYywg QXBwbHlXb3JrZXJzTGlzdCkKKwl7CisJCUFwcGx5Qmd3b3JrZXJTdGF0ZSAqd3N0YXRlID0gKEFw cGx5Qmd3b3JrZXJTdGF0ZSAqKSBsZmlyc3QobGMpOworCisJCS8qCisJCSAqIFdlIGRvbid0IGxv Y2sgaGVyZSBhcyBpbiB0aGUgd29yc3QgY2FzZSB3ZSB3aWxsIGp1c3QgZGV0ZWN0IHRoZQorCQkg KiBmYWlsdXJlIG9mIHdvcmtlciBhIGJpdCBsYXRlci4KKwkJICovCisJCWlmICh3c3RhdGUtPnNo YXJlZC0+c3RhdHVzID09IEFQUExZX0JHV09SS0VSX0VYSVQpCisJCQllcmVwb3J0KEVSUk9SLAor CQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwK KwkJCQkJIGVycm1zZygiYmFja2dyb3VuZCB3b3JrZXIgJXUgZXhpdGVkIHVuZXhwZWN0ZWRseSIs CisJCQkJCQkJd3N0YXRlLT5zaGFyZWQtPm4pKSk7CisJfQorCisJLyoKKwkgKiBFeGl0IGlmIGFu eSByZWxhdGlvbiBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRlIGFuZCBpZiBhbnkgd29ya2VyIGlz CisJICogaGFuZGxpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBhdCB0aGUgc2FtZSB0aW1l LiBCZWNhdXNlIGZvcgorCSAqIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhhdCBpcyBiZWluZyBh cHBsaWVkIGluIGFwcGx5IGJhY2tncm91bmQKKwkgKiB3b3JrZXIsIHdlIGNhbm5vdCBkZWNpZGUg d2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGZvciBhIHJlbGF0aW9uCisJICogdGhhdCBpcyBu b3QgaW4gdGhlIFJFQURZIHN0YXRlIChzZWUgc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbCkg YXMgd2UKKwkgKiB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdCB0aW1lLgorCSAq LworCWlmIChsaXN0X2xlbmd0aChBcHBseVdvcmtlcnNGcmVlTGlzdCkgIT0gbGlzdF9sZW5ndGgo QXBwbHlXb3JrZXJzTGlzdCkgJiYKKwkJIUFsbFRhYmxlc3luY3NSZWFkeSgpKQorCXsKKwkJZXJl cG9ydChMT0csCisJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXJz IGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgcmVzdGFydCIsCisJCQkJCQlNeVN1YnNjcmlw dGlvbi0+bmFtZSksCisJCQkJIGVycmRldGFpbCgiQ2Fubm90IGhhbmRsZSBzdHJlYW1lZCByZXBs aWNhdGlvbiB0cmFuc2FjdGlvbiBieSBhcHBseSAiCisJCQkJCQkgICAiYmFja2dyb3VuZCB3b3Jr ZXJzIHVudGlsIGFsbCB0YWJsZXMgYXJlIHN5bmNocm9uaXplZCIpKSk7CisKKwkJcHJvY19leGl0 KDApOworCX0KK30KKworLyogU2V0IHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBzdGF0dXMg Ki8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3NldF9zdGF0dXMoQXBwbHlCZ3dvcmtlclN0YXR1cyBz dGF0dXMpCit7CisJaWYgKCFhbV9hcHBseV9iZ3dvcmtlcigpKQorCQlyZXR1cm47CisKKwllbG9n KERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBzZXQgc3RhdHVzIHRvICVkIiwgTXlQYXJhbGxlbFNo YXJlZC0+biwgc3RhdHVzKTsKKworCVNwaW5Mb2NrQWNxdWlyZSgmTXlQYXJhbGxlbFNoYXJlZC0+ bXV0ZXgpOworCU15UGFyYWxsZWxTaGFyZWQtPnN0YXR1cyA9IHN0YXR1czsKKwlTcGluTG9ja1Jl bGVhc2UoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKK30KKworLyoKKyAqIERlZmluZSBhIHNh dmVwb2ludCBmb3IgYSBzdWJ4YWN0IGluIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGlmIG5lZWRl ZC4KKyAqCisgKiBJbnNpZGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgd2UgY2FuIGZpZ3VyZSBv dXQgdGhhdCBuZXcgc3VidHJhbnNhY3Rpb24gd2FzCisgKiBzdGFydGVkIGlmIG5ldyBjaGFuZ2Ug YXJyaXZlZCB3aXRoIGRpZmZlcmVudCB4aWQuIEluIHRoYXQgY2FzZSB3ZSBjYW4gZGVmaW5lCisg KiBuYW1lZCBzYXZlcG9pbnQsIHNvIHRoYXQgd2Ugd2VyZSBhYmxlIHRvIGNvbW1pdC9yb2xsYmFj ayBpdCBzZXBhcmF0ZWx5CisgKiBsYXRlci4KKyAqIFNwZWNpYWwgY2FzZSBpcyBpZiB0aGUgZmly c3QgY2hhbmdlIGNvbWVzIGZyb20gc3VidHJhbnNhY3Rpb24sIHRoZW4KKyAqIHdlIGNoZWNrIHRo YXQgY3VycmVudF94aWQgZGlmZmVycyBmcm9tIHN0cmVhbV94aWQuCisgKi8KK3ZvaWQKK2FwcGx5 X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCkKK3sK KwlpZiAoY3VycmVudF94aWQgIT0gc3RyZWFtX3hpZCAmJgorCQkhbGlzdF9tZW1iZXJfaW50KHN1 YnhhY3RsaXN0LCAoaW50KSBjdXJyZW50X3hpZCkpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGN0 eDsKKwkJY2hhcgkJc3BuYW1lW01BWFBHUEFUSF07CisKKwkJc25wcmludGYoc3BuYW1lLCBNQVhQ R1BBVEgsICJzYXZlcG9pbnRfZm9yX3hpZF8ldSIsIGN1cnJlbnRfeGlkKTsKKworCQllbG9nKERF QlVHMSwgIltBcHBseSBCR1cgIyV1XSBkZWZpbmluZyBzYXZlcG9pbnQgJXMiLAorCQkJIE15UGFy YWxsZWxTaGFyZWQtPm4sIHNwbmFtZSk7CisKKwkJRGVmaW5lU2F2ZXBvaW50KHNwbmFtZSk7CisJ CUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQlzdWJ4YWN0bGlzdCA9IGxhcHBlbmRfaW50KHN1Ynhh Y3RsaXN0LCAoaW50KSBjdXJyZW50X3hpZCk7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj dHgpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv ZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4 IGM1YzZhMmJhNjguLmQ0ZDUwOTNhMGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9kZWNvZGUuYwpAQCAtNjUxLDkgKzY1MSwxMCBAQCBEZWNvZGVDb21taXQoTG9naWNhbERlY29k aW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYsCiAJewogCQlmb3IgKGkgPSAw OyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewotCQkJUmVvcmRlckJ1ZmZlckZvcmdl dChjdHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sIGJ1Zi0+b3JpZ3B0cik7CisJCQlS ZW9yZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwgYnVm LT5vcmlncHRyLAorCQkJCQkJCQljb21taXRfdGltZSk7CiAJCX0KLQkJUmVvcmRlckJ1ZmZlckZv cmdldChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyKTsKKwkJUmVvcmRlckJ1ZmZlckZv cmdldChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyLCBjb21taXRfdGltZSk7CiAKIAkJ cmV0dXJuOwogCX0KQEAgLTgyMSwxMCArODIyLDExIEBAIERlY29kZUFib3J0KExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCQlmb3IgKGkgPSAwOyBp IDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewogCQkJUmVvcmRlckJ1ZmZlckFib3J0KGN0 eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwKLQkJCQkJCQkgICBidWYtPnJlY29yZC0+ RW5kUmVjUHRyKTsKKwkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyLCBhYm9ydF90aW1l KTsKIAkJfQogCi0JCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5y ZWNvcmQtPkVuZFJlY1B0cik7CisJCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhp ZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwKKwkJCQkJCSAgIGFib3J0X3RpbWUpOwogCX0KIAog CS8qIHVwZGF0ZSB0aGUgZGVjb2Rpbmcgc3RhdHMgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCAzYmJkNTIyNzI0Li5kOTJiZmFmNmQ2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC01NCw2ICs1NCw3IEBA CiAKIGludAkJCW1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0OwogaW50CQkJbWF4 X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMjsKK2ludAkJCW1heF9hcHBseV9iZ3dv cmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7CiAKIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNh bFJlcFdvcmtlciA9IE5VTEw7CiAKQEAgLTczLDYgKzc0LDcgQEAgc3RhdGljIHZvaWQgbG9naWNh bHJlcF9sYXVuY2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBs b2dpY2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9p ZCBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9pZCk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVw X3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CitzdGF0aWMgdm9pZCBs b2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7 CiAKIHN0YXRpYyBib29sIG9uX2NvbW1pdF9sYXVuY2hlcl93YWtldXAgPSBmYWxzZTsKIApAQCAt MTUxLDggKzE1MywxMCBAQCBnZXRfc3Vic2NyaXB0aW9uX2xpc3Qodm9pZCkKICAqCiAgKiBUaGlz IGlzIG9ubHkgbmVlZGVkIGZvciBjbGVhbmluZyB1cCB0aGUgc2hhcmVkIG1lbW9yeSBpbiBjYXNl IHRoZSB3b3JrZXIKICAqIGZhaWxzIHRvIGF0dGFjaC4KKyAqCisgKiBSZXR1cm4gZmFsc2UgaWYg dGhlIGF0dGFjaCBmYWlscy4gT3RoZXJ3aXNlIHJldHVybiB0cnVlLgogICovCi1zdGF0aWMgdm9p ZAorc3RhdGljIGJvb2wKIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVw V29ya2VyICp3b3JrZXIsCiAJCQkJCQkJICAgdWludDE2IGdlbmVyYXRpb24sCiAJCQkJCQkJICAg QmFja2dyb3VuZFdvcmtlckhhbmRsZSAqaGFuZGxlKQpAQCAtMTY4LDExICsxNzIsMTEgQEAgV2Fp dEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAog CQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCi0JCS8q IFdvcmtlciBlaXRoZXIgZGllZCBvciBoYXMgc3RhcnRlZDsgbm8gbmVlZCB0byBkbyBhbnl0aGlu Zy4gKi8KKwkJLyogV29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBzdGFydGVkLiBSZXR1cm4gZmFs c2UgaWYgZGllZC4gKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3JrZXItPnByb2MpCiAJ CXsKIAkJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQkJcmV0dXJuOwor CQkJcmV0dXJuIHdvcmtlci0+aW5fdXNlOwogCQl9CiAKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2Fs UmVwV29ya2VyTG9jayk7CkBAIC0xODcsNyArMTkxLDcgQEAgV2FpdEZvclJlcGxpY2F0aW9uV29y a2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCWlmIChnZW5lcmF0aW9uID09 IHdvcmtlci0+Z2VuZXJhdGlvbikKIAkJCQlsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKHdvcmtl cik7CiAJCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJCXJldHVybjsK KwkJCXJldHVybiBmYWxzZTsKIAkJfQogCiAJCS8qCkBAIC0yMjMsNiArMjI3LDEzIEBAIGxvZ2lj YWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5n KQogCXsKIAkJTG9naWNhbFJlcFdvcmtlciAqdyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ld OwogCisJCS8qCisJCSAqIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIG1haW4gYXBwbHkg d29ya2VyIG9yIHRhYmxlIHN5bmMgd29ya2VyCisJCSAqIGhlcmUuCisJCSAqLworCQlpZiAody0+ c3Vid29ya2VyKQorCQkJY29udGludWU7CisKIAkJaWYgKHctPmluX3VzZSAmJiB3LT5zdWJpZCA9 PSBzdWJpZCAmJiB3LT5yZWxpZCA9PSByZWxpZCAmJgogCQkJKCFvbmx5X3J1bm5pbmcgfHwgdy0+ cHJvYykpCiAJCXsKQEAgLTI1OSwxMSArMjcwLDExIEBAIGxvZ2ljYWxyZXBfd29ya2Vyc19maW5k KE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpCiB9CiAKIC8qCi0gKiBTdGFydCBuZXcgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIsIGlmIHBvc3NpYmxlLgorICogU3RhcnQgbmV3IGJhY2tncm91 bmQgd29ya2VyLCBpZiBwb3NzaWJsZS4KICAqLwotdm9pZAorYm9vbAogbG9naWNhbHJlcF93b3Jr ZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsIE9pZCB1 c2VyaWQsCi0JCQkJCQkgT2lkIHJlbGlkKQorCQkJCQkJIE9pZCByZWxpZCwgZHNtX2hhbmRsZSBz dWJ3b3JrZXJfZHNtKQogewogCUJhY2tncm91bmRXb3JrZXIgYmd3OwogCUJhY2tncm91bmRXb3Jr ZXJIYW5kbGUgKmJnd19oYW5kbGU7CkBAIC0yNzMsNiArMjg0LDEwIEBAIGxvZ2ljYWxyZXBfd29y a2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQg dXNlcmlkLAogCUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciA9IE5VTEw7CiAJaW50CQkJbnN5bmN3 b3JrZXJzOwogCVRpbWVzdGFtcFR6IG5vdzsKKwlib29sCQlpc19zdWJ3b3JrZXIgPSAoc3Vid29y a2VyX2RzbSAhPSBEU01fSEFORExFX0lOVkFMSUQpOworCisJLyogU2FuaXR5IGNoZWNrIDogd2Ug ZG9uJ3Qgc3VwcG9ydCB0YWJsZSBzeW5jIGluIHN1Yndvcmtlci4gKi8KKwlBc3NlcnQoIShpc19z dWJ3b3JrZXIgJiYgT2lkSXNWYWxpZChyZWxpZCkpKTsKIAogCWVyZXBvcnQoREVCVUcxLAogCQkJ KGVycm1zZ19pbnRlcm5hbCgic3RhcnRpbmcgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9y IHN1YnNjcmlwdGlvbiBcIiVzXCIiLApAQCAtMzUwLDcgKzM2NSw3IEBAIHJldHJ5OgogCWlmIChP aWRJc1ZhbGlkKHJlbGlkKSAmJiBuc3luY3dvcmtlcnMgPj0gbWF4X3N5bmNfd29ya2Vyc19wZXJf c3Vic2NyaXB0aW9uKQogCXsKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7 Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qCkBAIC0zNjQsNyArMzc5LDcg QEAgcmV0cnk6CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VF REVEKSwKIAkJCQkgZXJybXNnKCJvdXQgb2YgbG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgc2xv dHMiKSwKIAkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVhc2UgbWF4X2xvZ2lj YWxfcmVwbGljYXRpb25fd29ya2Vycy4iKSkpOwotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsK IAl9CiAKIAkvKiBQcmVwYXJlIHRoZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTM3OSw2ICszOTQsNyBA QCByZXRyeToKIAl3b3JrZXItPnJlbHN0YXRlID0gU1VCUkVMX1NUQVRFX1VOS05PV047CiAJd29y a2VyLT5yZWxzdGF0ZV9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAl3b3JrZXItPnN0cmVhbV9m aWxlc2V0ID0gTlVMTDsKKwl3b3JrZXItPnN1YndvcmtlciA9IGlzX3N1YndvcmtlcjsKIAl3b3Jr ZXItPmxhc3RfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJVElNRVNUQU1QX05PQkVHSU4od29y a2VyLT5sYXN0X3NlbmRfdGltZSk7CiAJVElNRVNUQU1QX05PQkVHSU4od29ya2VyLT5sYXN0X3Jl Y3ZfdGltZSk7CkBAIC0zOTYsMTkgKzQxMiwzMSBAQCByZXRyeToKIAkJQkdXT1JLRVJfQkFDS0VO RF9EQVRBQkFTRV9DT05ORUNUSU9OOwogCWJndy5iZ3dfc3RhcnRfdGltZSA9IEJnV29ya2VyU3Rh cnRfUmVjb3ZlcnlGaW5pc2hlZDsKIAlzbnByaW50ZihiZ3cuYmd3X2xpYnJhcnlfbmFtZSwgQkdX X01BWExFTiwgInBvc3RncmVzIik7Ci0Jc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1lLCBC R1dfTUFYTEVOLCAiQXBwbHlXb3JrZXJNYWluIik7CisKKwlpZiAoaXNfc3Vid29ya2VyKQorCQlz bnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseUJnd29ya2Vy TWFpbiIpOworCWVsc2UKKwkJc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFY TEVOLCAiQXBwbHlXb3JrZXJNYWluIik7CisKIAlpZiAoT2lkSXNWYWxpZChyZWxpZCkpCiAJCXNu cHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKIAkJCQkgImxvZ2ljYWwgcmVwbGljYXRp b24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUgc3luYyAldSIsIHN1YmlkLCByZWxpZCk7CisJ ZWxzZSBpZiAoaXNfc3Vid29ya2VyKQorCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhM RU4sCisJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGZv ciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CiAJZWxzZQogCQlzbnByaW50ZihiZ3cuYmd3X25h bWUsIEJHV19NQVhMRU4sCiAJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vi c2NyaXB0aW9uICV1Iiwgc3ViaWQpOworCiAJc25wcmludGYoYmd3LmJnd190eXBlLCBCR1dfTUFY TEVOLCAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIiKTsKIAogCWJndy5iZ3dfcmVzdGFydF90 aW1lID0gQkdXX05FVkVSX1JFU1RBUlQ7CiAJYmd3LmJnd19ub3RpZnlfcGlkID0gTXlQcm9jUGlk OwogCWJndy5iZ3dfbWFpbl9hcmcgPSBJbnQzMkdldERhdHVtKHNsb3QpOwogCisJaWYgKGlzX3N1 YndvcmtlcikKKwkJbWVtY3B5KGJndy5iZ3dfZXh0cmEsICZzdWJ3b3JrZXJfZHNtLCBzaXplb2Yo ZHNtX2hhbmRsZSkpOworCiAJaWYgKCFSZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2VyKCZi Z3csICZiZ3dfaGFuZGxlKSkKIAl7CiAJCS8qIEZhaWxlZCB0byBzdGFydCB3b3JrZXIsIHNvIGNs ZWFuIHVwIHRoZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTQyMSwxMSArNDQ5LDExIEBAIHJldHJ5Ogog CQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJ IGVycm1zZygib3V0IG9mIGJhY2tncm91bmQgd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQo IllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF93b3JrZXJfcHJvY2Vzc2VzLiIpKSk7Ci0J CXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qIE5vdyB3YWl0IHVudGlsIGl0IGF0 dGFjaGVzLiAqLwotCVdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdlbmVy YXRpb24sIGJnd19oYW5kbGUpOworCXJldHVybiBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRh Y2god29ya2VyLCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsKIH0KIAogLyoKQEAgLTQzNiwxOCAr NDY0LDI3IEBAIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVs aWQpCiB7CiAJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyOwotCXVpbnQxNgkJZ2VuZXJhdGlvbjsK IAogCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAKIAl3 b3JrZXIgPSBsb2dpY2FscmVwX3dvcmtlcl9maW5kKHN1YmlkLCByZWxpZCwgZmFsc2UpOwogCi0J LyogTm8gd29ya2VyLCBub3RoaW5nIHRvIGRvLiAqLwotCWlmICghd29ya2VyKQotCXsKLQkJTFdM b2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCXJldHVybjsKLQl9CisJaWYgKHdv cmtlcikKKwkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3b3JrZXIpOworCisJTFdM b2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Cit9CisKKy8qCisgKiBXb3JraG9yc2Ug Zm9yIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoKSBhbmQgbG9naWNhbHJlcF93b3JrZXJfZGV0YWNo KCkuIFN0b3AKKyAqIHRoZSB3b3JrZXIgYW5kIHdhaXQgZm9yIGl0IHRvIGRpZS4KKyAqLworc3Rh dGljIHZvaWQKK2xvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwoTG9naWNhbFJlcFdvcmtl ciAqd29ya2VyKQoreworCXVpbnQxNgkJZ2VuZXJhdGlvbjsKKworCUFzc2VydChMV0xvY2tIZWxk QnlNZShMb2dpY2FsUmVwV29ya2VyTG9jaykpOwogCiAJLyoKIAkgKiBSZW1lbWJlciB3aGljaCBn ZW5lcmF0aW9uIHdhcyBvdXIgd29ya2VyIHNvIHdlIGNhbiBjaGVjayBpZiB3aGF0IHdlIHNlZQpA QCAtNDg1LDEwICs1MjIsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lk IHJlbGlkKQogCQkgKiBkaWZmZXJlbnQsIG1lYW5pbmcgdGhhdCBhIGRpZmZlcmVudCB3b3JrZXIg aGFzIHRha2VuIHRoZSBzbG90LgogCQkgKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3Jr ZXItPmdlbmVyYXRpb24gIT0gZ2VuZXJhdGlvbikKLQkJewotCQkJTFdMb2NrUmVsZWFzZShMb2dp Y2FsUmVwV29ya2VyTG9jayk7CiAJCQlyZXR1cm47Ci0JCX0KIAogCQkvKiBXb3JrZXIgaGFzIGFz c2lnbmVkIHByb2MsIHNvIGl0IGhhcyBzdGFydGVkLiAqLwogCQlpZiAod29ya2VyLT5wcm9jKQpA QCAtNTIyLDggKzU1Niw2IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQg cmVsaWQpCiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVE KTsKIAl9Ci0KLQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKIH0KIAogLyoK QEAgLTU5OSw2ICs2MzEsMjkgQEAgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KQog c3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKQogeworCS8qCisJICog SWYgd2UgYXJlIHRoZSBtYWluIGFwcGx5IHdvcmtlciwgc3RvcCBhbGwgdGhlIGFwcGx5IGJhY2tn cm91bmQgd29ya2VycworCSAqIHdlIHN0YXJ0ZWQgYmVmb3JlLgorCSAqLworCWlmICghTXlMb2dp Y2FsUmVwV29ya2VyLT5zdWJ3b3JrZXIpCisJeworCQlMaXN0CSAgICp3b3JrZXJzOworCQlMaXN0 Q2VsbCAgICpsYzsKKworCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19T SEFSRUQpOworCisJCXdvcmtlcnMgPSBsb2dpY2FscmVwX3dvcmtlcnNfZmluZChNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCB0cnVlKTsKKwkJZm9yZWFjaChsYywgd29ya2VycykKKwkJeworCQkJ TG9naWNhbFJlcFdvcmtlciAqdyA9IChMb2dpY2FsUmVwV29ya2VyICopIGxmaXJzdChsYyk7CisK KwkJCWlmICh3LT5zdWJ3b3JrZXIpCisJCQkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5h bCh3KTsKKwkJfQorCisJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworCX0K KwogCS8qIEJsb2NrIGNvbmN1cnJlbnQgYWNjZXNzLiAqLwogCUxXTG9ja0FjcXVpcmUoTG9naWNh bFJlcFdvcmtlckxvY2ssIExXX0VYQ0xVU0lWRSk7CiAKQEAgLTYyMSw2ICs2NzYsNyBAQCBsb2dp Y2FscmVwX3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcikKIAl3b3JrZXIt PnVzZXJpZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5zdWJpZCA9IEludmFsaWRPaWQ7CiAJd29y a2VyLT5yZWxpZCA9IEludmFsaWRPaWQ7CisJd29ya2VyLT5zdWJ3b3JrZXIgPSBmYWxzZTsKIH0K IAogLyoKQEAgLTY3OSw2ICs3MzUsMzAgQEAgbG9naWNhbHJlcF9zeW5jX3dvcmtlcl9jb3VudChP aWQgc3ViaWQpCiAJcmV0dXJuIHJlczsKIH0KIAorLyoKKyAqIENvdW50IHRoZSBudW1iZXIgb2Yg cmVnaXN0ZXJlZCAobm90IG5lY2Vzc2FyaWx5IHJ1bm5pbmcpIGFwcGx5IGJhY2tncm91bmQKKyAq IHdvcmtlcnMgZm9yIGEgc3Vic2NyaXB0aW9uLgorICovCitpbnQKK2xvZ2ljYWxyZXBfYXBwbHlf Ymd3b3JrZXJfY291bnQoT2lkIHN1YmlkKQoreworCWludAkJCWk7CisJaW50CQkJcmVzID0gMDsK KworCUFzc2VydChMV0xvY2tIZWxkQnlNZShMb2dpY2FsUmVwV29ya2VyTG9jaykpOworCisJLyog U2VhcmNoIGZvciBhdHRhY2hlZCB3b3JrZXIgZm9yIGEgZ2l2ZW4gc3Vic2NyaXB0aW9uIGlkLiAq LworCWZvciAoaSA9IDA7IGkgPCBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzOyBpKysp CisJeworCQlMb2dpY2FsUmVwV29ya2VyICp3ID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbaV07 CisKKwkJaWYgKHctPnN1YmlkID09IHN1YmlkICYmIHctPnN1YndvcmtlcikKKwkJCXJlcysrOwor CX0KKworCXJldHVybiByZXM7Cit9CisKIC8qCiAgKiBBcHBseUxhdW5jaGVyU2htZW1TaXplCiAg KgkJQ29tcHV0ZSBzcGFjZSBuZWVkZWQgZm9yIHJlcGxpY2F0aW9uIGxhdW5jaGVyIHNoYXJlZCBt ZW1vcnkKQEAgLTg2OCw3ICs5NDgsNyBAQCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2Fy ZykKIAkJCQkJd2FpdF90aW1lID0gd2FsX3JldHJpZXZlX3JldHJ5X2ludGVydmFsOwogCiAJCQkJ CWxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChzdWItPmRiaWQsIHN1Yi0+b2lkLCBzdWItPm5hbWUs Ci0JCQkJCQkJCQkJCSBzdWItPm93bmVyLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJIHN1Yi0+ b3duZXIsIEludmFsaWRPaWQsIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJfQogCQkJfQogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYwppbmRleCBjNzJhZDZiOTNkLi4y NDU4ZTJmY2U5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29y aWdpbi5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKQEAg LTEwNzUsMTIgKzEwNzUsMjEgQEAgUmVwbGljYXRpb25PcmlnaW5FeGl0Q2xlYW51cChpbnQgY29k ZSwgRGF0dW0gYXJnKQogICogYXJyYXkgZG9lc24ndCBoYXZlIHRvIGJlIHNlYXJjaGVkIHdoZW4g Y2FsbGluZwogICogcmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2UoKS4KICAqCi0gKiBPYnZpb3Vz bHkgb25seSBvbmUgc3VjaCBjYWNoZWQgb3JpZ2luIGNhbiBleGlzdCBwZXIgcHJvY2VzcyBhbmQg dGhlIGN1cnJlbnQKKyAqIE5vcm1hbGx5IG9ubHkgb25lIHN1Y2ggY2FjaGVkIG9yaWdpbiBjYW4g ZXhpc3QgcGVyIHByb2Nlc3MgYW5kIHRoZSBjdXJyZW50CiAgKiBjYWNoZWQgdmFsdWUgY2FuIG9u bHkgYmUgc2V0IGFnYWluIGFmdGVyIHRoZSBwcmV2aW91cyB2YWx1ZSBpcyB0b3JuIGRvd24KICAq IHdpdGggcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KCkuCisgKgorICogSG93ZXZlciwgaWYgdGhl IGZ1bmN0aW9uIHBhcmFtZXRlciAnbXVzdF9hY3F1aXJlJyBpcyBmYWxzZSwgd2UgYWxsb3cgdGhl CisgKiBwcm9jZXNzIHRvIHVzZSB0aGUgc2FtZSBzbG90IGFscmVhZHkgYWNxdWlyZWQgYnkgYW5v dGhlciBwcm9jZXNzLiBJdCdzIHNhZmUKKyAqIGJlY2F1c2UgMSkgVGhlIG9ubHkgY2FsbGVyIChh cHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMpIHdpbGwgbWFpbnRhaW4gdGhlCisgKiBjb21taXQgb3Jk ZXIgYnkgYWxsb3dpbmcgb25seSBvbmUgcHJvY2VzcyB0byBjb21taXQgYXQgYSB0aW1lLCBzbyBu byB0d28KKyAqIHdvcmtlcnMgd2lsbCBiZSBvcGVyYXRpbmcgb24gdGhlIHNhbWUgb3JpZ2luIGF0 IHRoZSBzYW1lIHRpbWUgKHNlZSBjb21tZW50cworICogaW4gbG9naWNhbC93b3JrZXIuYykuIDIp IEV2ZW4gdGhvdWdoIHdlIHRyeSB0byBhZHZhbmNlIHRoZSBzZXNzaW9uJ3Mgb3JpZ2luCisgKiBj b25jdXJyZW50bHksIGl0J3Mgc2FmZSB0byBkbyBzbyBhcyB3ZSBjaGFuZ2UvYWR2YW5jZSB0aGUg c2Vzc2lvbl9vcmlnaW4KKyAqIExTTnMgdW5kZXIgcmVwbGljYXRlX3N0YXRlIExXTG9jay4KICAq Lwogdm9pZAotcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCityZXBs b3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSwgYm9vbCBtdXN0X2FjcXVpcmUp CiB7CiAJc3RhdGljIGJvb2wgcmVnaXN0ZXJlZF9jbGVhbnVwOwogCWludAkJCWk7CkBAIC0xMTIy LDcgKzExMzEsNyBAQCByZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSkK IAkJaWYgKGN1cnN0YXRlLT5yb2lkZW50ICE9IG5vZGUpCiAJCQljb250aW51ZTsKIAotCQllbHNl IGlmIChjdXJzdGF0ZS0+YWNxdWlyZWRfYnkgIT0gMCkKKwkJZWxzZSBpZiAoY3Vyc3RhdGUtPmFj cXVpcmVkX2J5ICE9IDAgJiYgbXVzdF9hY3F1aXJlKQogCQl7CiAJCQllcmVwb3J0KEVSUk9SLAog CQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9JTl9VU0UpLApAQCAtMTE1Myw3ICsxMTYyLDE0 IEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKQogCiAJQXNzZXJ0 KHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPnJvaWRlbnQgIT0gSW52YWxpZFJlcE9yaWdpbklk KTsKIAotCXNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID0gTXlQcm9jUGlk OworCWlmIChtdXN0X2FjcXVpcmUpCisJCXNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVp cmVkX2J5ID0gTXlQcm9jUGlkOworCWVsc2UgaWYgKHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUt PmFjcXVpcmVkX2J5ID09IDApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwKKwkJCQkgZXJybXNnKCJhcHBseSBiYWNr Z3JvdW5kIHdvcmtlciBjb3VsZCBub3QgZmluZCByZXBsaWNhdGlvbiBzdGF0ZSBzbG90IGZvciBy ZXBsaWNhdGlvbiBvcmlnaW4gd2l0aCBPSUQgJXUiLAorCQkJCQkJbm9kZSksCisJCQkJIGVycmRl dGFpbCgiVGhlcmUgaXMgbm8gcmVwbGljYXRpb24gc3RhdGUgc2xvdCBzZXQgYnkgaXRzIG1haW4g YXBwbHkgd29ya2VyLiIpKSk7CiAKIAlMV0xvY2tSZWxlYXNlKFJlcGxpY2F0aW9uT3JpZ2luTG9j ayk7CiAKQEAgLTEzMzcsNyArMTM1Myw3IEBAIHBnX3JlcGxpY2F0aW9uX29yaWdpbl9zZXNzaW9u X3NldHVwKFBHX0ZVTkNUSU9OX0FSR1MpCiAKIAluYW1lID0gdGV4dF90b19jc3RyaW5nKCh0ZXh0 ICopIERhdHVtR2V0UG9pbnRlcihQR19HRVRBUkdfREFUVU0oMCkpKTsKIAlvcmlnaW4gPSByZXBs b3JpZ2luX2J5X25hbWUobmFtZSwgZmFsc2UpOwotCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChv cmlnaW4pOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW4sIHRydWUpOwogCiAJcmVw bG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbjsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9wcm90by5jCmluZGV4IGZmODUxM2UyZDIuLjQ3YmQ4MTFmYjcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKQEAgLTExNjMsMzEgKzExNjMsNTYgQEAgbG9n aWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcENvbW1p dERhdGEgKmNvbW1pdF9kYXRhKQogLyoKICAqIFdyaXRlIFNUUkVBTSBBQk9SVCB0byB0aGUgb3V0 cHV0IHN0cmVhbS4gTm90ZSB0aGF0IHhpZCBhbmQgc3VieGlkIHdpbGwgYmUKICAqIHNhbWUgZm9y IHRoZSB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24gYWJvcnQuCisgKgorICogSWYgd3JpdGVfYWJvcnRf bHNuIGlzIHRydWUsIHNlbmQgdGhlIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBmaWVsZHMsCisg KiBvdGhlcndpc2UgZG9uJ3QuCiAgKi8KIHZvaWQKIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fi b3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKLQkJCQkJCQkgIFRyYW5zYWN0 aW9uSWQgc3VieGlkKQorCQkJCQkJCSAgUmVvcmRlckJ1ZmZlclRYTiAqdHhuLCBYTG9nUmVjUHRy IGFib3J0X2xzbiwKKwkJCQkJCQkgIGJvb2wgd3JpdGVfYWJvcnRfbHNuKQogewogCXBxX3NlbmRi eXRlKG91dCwgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVCk7CiAKLQlBc3NlcnQoVHJhbnNh Y3Rpb25JZElzVmFsaWQoeGlkKSAmJiBUcmFuc2FjdGlvbklkSXNWYWxpZChzdWJ4aWQpKTsKKwlB c3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSAmJiBUcmFuc2FjdGlvbklkSXNWYWxpZCh0 eG4tPnhpZCkpOwogCiAJLyogdHJhbnNhY3Rpb24gSUQgKi8KIAlwcV9zZW5kaW50MzIob3V0LCB4 aWQpOwotCXBxX3NlbmRpbnQzMihvdXQsIHN1YnhpZCk7CisJcHFfc2VuZGludDMyKG91dCwgdHhu LT54aWQpOworCisJaWYgKHdyaXRlX2Fib3J0X2xzbikKKwl7CisJCXBxX3NlbmRpbnQ2NChvdXQs IGFib3J0X2xzbik7CisJCXBxX3NlbmRpbnQ2NChvdXQsIHR4bi0+eGFjdF90aW1lLmFib3J0X3Rp bWUpOworCX0KIH0KIAogLyoKICAqIFJlYWQgU1RSRUFNIEFCT1JUIGZyb20gdGhlIG91dHB1dCBz dHJlYW0uCisgKgorICogSWYgcmVhZF9hYm9ydF9sc24gaXMgdHJ1ZSwgdHJ5IHRvIHJlYWQgdGhl IGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBmaWVsZHMsCisgKiBvdGhlcndpc2UgZG9uJ3QuCiAg Ki8KIHZvaWQKLWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJh bnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJCSBUcmFuc2FjdGlvbklkICpzdWJ4aWQpCitsb2dpY2Fs cmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJIExvZ2ljYWxSZXBT dHJlYW1BYm9ydERhdGEgKmFib3J0X2RhdGEsCisJCQkJCQkJIGJvb2wgcmVhZF9hYm9ydF9sc24p CiB7Ci0JQXNzZXJ0KHhpZCAmJiBzdWJ4aWQpOworCUFzc2VydChhYm9ydF9kYXRhKTsKIAotCSp4 aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOwotCSpzdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQp OworCWFib3J0X2RhdGEtPnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CisJYWJvcnRfZGF0YS0+ c3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKworCWlmIChyZWFkX2Fib3J0X2xzbikKKwl7 CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwkJYWJvcnRf ZGF0YS0+YWJvcnRfdGltZSA9IHBxX2dldG1zZ2ludDY0KGluKTsKKwl9CisJZWxzZQorCXsKKwkJ YWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CisJCWFib3J0X2RhdGEt PmFib3J0X3RpbWUgPSAwOworCX0KIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggODhhMzdmZGU3Mi4uODk4OTMyODA0NiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVy LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMK QEAgLTI4MjYsNyArMjgyNiw4IEBAIFJlb3JkZXJCdWZmZXJGaW5pc2hQcmVwYXJlZChSZW9yZGVy QnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAgKiBkaXNrLgogICovCiB2b2lkCi1SZW9y ZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9n UmVjUHRyIGxzbikKK1Jlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNh Y3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCSAgIFRpbWVzdGFtcFR6IGFib3J0X3Rp bWUpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yODM3LDYgKzI4MzgsOCBAQCBS ZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBY TG9nUmVjUHRyIGxzbikKIAlpZiAodHhuID09IE5VTEwpCiAJCXJldHVybjsKIAorCXR4bi0+eGFj dF90aW1lLmFib3J0X3RpbWUgPSBhYm9ydF90aW1lOworCiAJLyogRm9yIHN0cmVhbWVkIHRyYW5z YWN0aW9ucyBub3RpZnkgdGhlIHJlbW90ZSBub2RlIGFib3V0IHRoZSBhYm9ydC4gKi8KIAlpZiAo cmJ0eG5faXNfc3RyZWFtZWQodHhuKSkKIAl7CkBAIC0yOTExLDcgKzI5MTQsOCBAQCBSZW9yZGVy QnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgb2xkZXN0UnVu bmluZ1hpZCkKICAqIHRvIHRoaXMgeGlkIG1pZ2h0IHJlLWNyZWF0ZSB0aGUgdHJhbnNhY3Rpb24g aW5jb21wbGV0ZWx5LgogICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZm ZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCitSZW9yZGVyQnVmZmVy Rm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBs c24sCisJCQkJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAq dHhuOwogCkBAIC0yOTIyLDYgKzI5MjYsOCBAQCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJC dWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJaWYgKHR4biA9 PSBOVUxMKQogCQlyZXR1cm47CiAKKwl0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lID0gYWJvcnRf dGltZTsKKwogCS8qIEZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgbm90aWZ5IHRoZSByZW1vdGUg bm9kZSBhYm91dCB0aGUgYWJvcnQuICovCiAJaWYgKHJidHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJ CXJiLT5zdHJlYW1fYWJvcnQocmIsIHR4biwgbHNuKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDY3MGM2ZmNhZGEuLjhmZmJhN2UyZTUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtNTY4LDcgKzU2 OCw4IEBAIHByb2Nlc3Nfc3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVu dF9sc24pCiAJCQkJCQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPm9pZCwKIAkJCQkJCQkJCQkJCSBN eVN1YnNjcmlwdGlvbi0+bmFtZSwKIAkJCQkJCQkJCQkJCSBNeUxvZ2ljYWxSZXBXb3JrZXItPnVz ZXJpZCwKLQkJCQkJCQkJCQkJCSByc3RhdGUtPnJlbGlkKTsKKwkJCQkJCQkJCQkJCSByc3RhdGUt PnJlbGlkLAorCQkJCQkJCQkJCQkJIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJCQloZW50cnkt Pmxhc3Rfc3RhcnRfdGltZSA9IG5vdzsKIAkJCQkJfQogCQkJCX0KQEAgLTU4OSw2ICs1OTAsOSBA QCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNu KQogdm9pZAogcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQog eworCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YndvcmtlcikKKwkJcmV0dXJuOworCiAJaWYg KGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3Jfc3lu YyhjdXJyZW50X2xzbik7CiAJZWxzZQpAQCAtMTI3Myw3ICsxMjc3LDcgQEAgTG9naWNhbFJlcFN5 bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAkJICogdGltZSB0aGlz IHRhYmxlc3luYyB3YXMgbGF1bmNoZWQuCiAJCSAqLwogCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5f YnlfbmFtZShvcmlnaW5uYW1lLCBmYWxzZSk7Ci0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChv cmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgdHJ1ZSk7CiAJ CXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAkJKm9yaWdpbl9zdGFydHBv cyA9IHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoZmFsc2UpOwogCkBAIC0xMzg0LDcg KzEzODgsNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQoWExvZ1JlY1B0ciAqb3JpZ2luX3N0 YXJ0cG9zKQogCQkJCQkJICAgdHJ1ZSAvKiBnbyBiYWNrd2FyZCAqLyAsIHRydWUgLyogV0FMIGxv ZyAqLyApOwogCQlVbmxvY2tSZWxhdGlvbk9pZChSZXBsaWNhdGlvbk9yaWdpblJlbGF0aW9uSWQs IFJvd0V4Y2x1c2l2ZUxvY2spOwogCi0JCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5p ZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwgdHJ1ZSk7CiAJCXJlcGxv cmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAl9CiAJZWxzZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggNWY4YzU0MTc2My4uMmFhNzc5NzYyOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC0yMiw4ICsyMiwy OCBAQAogICogU1RSRUFNRUQgVFJBTlNBQ1RJT05TCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICAqIFN0cmVhbWVkIHRyYW5zYWN0aW9ucyAobGFyZ2UgdHJhbnNhY3Rpb25zIGV4Y2VlZGluZyBh IG1lbW9yeSBsaW1pdCBvbiB0aGUKLSAqIHVwc3RyZWFtKSBhcmUgbm90IGFwcGxpZWQgaW1tZWRp YXRlbHksIGJ1dCBpbnN0ZWFkLCB0aGUgZGF0YSBpcyB3cml0dGVuCi0gKiB0byB0ZW1wb3Jhcnkg ZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBhdCBvbmNlIHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJp dmVzLgorICogdXBzdHJlYW0pIGFyZSBhcHBsaWVkIHVzaW5nIG9uZSBvZiB0d28gYXBwcm9hY2hl cy4KKyAqCisgKiAxKSBTZXBhcmF0ZSBiYWNrZ3JvdW5kIHdvcmtlcnMKKyAqCisgKiBJZiBzdHJl YW1pbmcgPSBwYXJhbGxlbCwgd2UgYXNzaWduIGEgbmV3IGFwcGx5IGJhY2tncm91bmQgd29ya2Vy IChpZgorICogYXZhaWxhYmxlKSBhcyBzb29uIGFzIHRoZSB4YWN0J3MgZmlyc3Qgc3RyZWFtIGlz IHJlY2VpdmVkLiBUaGUgbWFpbiBhcHBseQorICogd29ya2VyIHdpbGwgc2VuZCBjaGFuZ2VzIHRv IHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gV2Uga2VlcCB0aGlzCisgKiB3b3Jr ZXIgYXNzaWduZWQgdGlsbCB0aGUgdHJhbnNhY3Rpb24gY29tbWl0IGlzIHJlY2VpdmVkIGFuZCBh bHNvIHdhaXQgZm9yCisgKiB0aGUgd29ya2VyIHRvIGZpbmlzaCBhdCBjb21taXQuIFRoaXMgcHJl c2VydmVzIGNvbW1pdCBvcmRlcmluZyBhbmQgYXZvaWRzCisgKiBmaWxlIEkvTyBpbiBtb3N0IGNh c2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIHRvIGEgZmlsZSBpZiB0aGVyZSBpcyBubworICog d29ya2VyIGF2YWlsYWJsZS4gSXQgaXMgaW1wb3J0YW50IHRvIG1haW50YWluIGNvbW1pdCBvcmRl ciB0byBhdm9pZCBmYWlsdXJlcworICogZHVlIHRvIChhKSB0cmFuc2FjdGlvbiBkZXBlbmRlbmNp ZXMsIHNheSBpZiB3ZSBpbnNlcnQgYSByb3cgaW4gdGhlIGZpcnN0CisgKiB0cmFuc2FjdGlvbiBh bmQgdXBkYXRlIGl0IGluIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gdGhlbiBhbGxvd2luZyB0byBh cHBseQorICogYm90aCBpbiBwYXJhbGxlbCBjYW4gbGVhZCB0byBmYWlsdXJlIGluIHRoZSB1cGRh dGUuIChiKSBkZWFkbG9ja3MsIGFsbG93aW5nCisgKiB0cmFuc2FjdGlvbnMgdGhhdCB1cGRhdGUg dGhlIHNhbWUgc2V0IG9mIHJvd3MvdGFibGVzIGluIG9wcG9zaXRlIG9yZGVyIHRvIGJlCisgKiBh cHBsaWVkIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvIGRlYWRsb2Nrcy4KKyAqCisgKiAyKSBXcml0 ZSB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGx5IHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJp dmVzCisgKgorICogSWYgbm8gd29ya2VyIGlzIGF2YWlsYWJsZSB0byBoYW5kbGUgc3RyZWFtZWQg dHJhbnNhY3Rpb24sIHRoZSBkYXRhIGlzCisgKiB3cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBh bmQgdGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0aGUgZmluYWwgY29tbWl0CisgKiBhcnJpdmVz LgogICoKICAqIFVubGlrZSB0aGUgcmVndWxhciAobm9uLXN0cmVhbWVkKSBjYXNlLCBoYW5kbGlu ZyBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgaGFzCiAgKiB0byBoYW5kbGUgYWJvcnRzIG9mIGJvdGgg dGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uIGFuZCBzdWJ0cmFuc2FjdGlvbnMuIFRoaXMKQEAgLTIx OSwyMCArMjM5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwbHlFeGVjdXRpb25EYXRhCiAJUGFydGl0 aW9uVHVwbGVSb3V0aW5nICpwcm91dGU7CS8qIHBhcnRpdGlvbiByb3V0aW5nIGluZm8gKi8KIH0g QXBwbHlFeGVjdXRpb25EYXRhOwogCi0vKiBTdHJ1Y3QgZm9yIHNhdmluZyBhbmQgcmVzdG9yaW5n IGFwcGx5IGVycmNvbnRleHQgaW5mb3JtYXRpb24gKi8KLXR5cGVkZWYgc3RydWN0IEFwcGx5RXJy b3JDYWxsYmFja0FyZwotewotCUxvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQ7CS8qIDAgaWYgaW52 YWxpZCAqLwotCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsOwotCi0JLyogUmVtb3RlIG5vZGUg aW5mb3JtYXRpb24gKi8KLQlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAtMSBpZiBpbnZhbGlkICov Ci0JVHJhbnNhY3Rpb25JZCByZW1vdGVfeGlkOwotCVhMb2dSZWNQdHIJZmluaXNoX2xzbjsKLQlj aGFyCSAgICpvcmlnaW5fbmFtZTsKLX0gQXBwbHlFcnJvckNhbGxiYWNrQXJnOwotCi1zdGF0aWMg QXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CisvKiBlcnJj b250ZXh0IHRyYWNrZXIgKi8KK0FwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxs YmFja19hcmcgPQogewogCS5jb21tYW5kID0gMCwKIAkucmVsID0gTlVMTCwKQEAgLTI0Miw3ICsy NTAsNyBAQCBzdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNr X2FyZyA9CiAJLm9yaWdpbl9uYW1lID0gTlVMTCwKIH07CiAKLXN0YXRpYyBNZW1vcnlDb250ZXh0 IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOworTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VD b250ZXh0ID0gTlVMTDsKIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0ID0gTlVMTDsKIAogLyog cGVyIHN0cmVhbSBjb250ZXh0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zICovCkBAIC0yNTEs MjcgKzI1OSwzOSBAQCBzdGF0aWMgTWVtb3J5Q29udGV4dCBMb2dpY2FsU3RyZWFtaW5nQ29udGV4 dCA9IE5VTEw7CiBXYWxSZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm4gPSBOVUxM OwogCiBTdWJzY3JpcHRpb24gKk15U3Vic2NyaXB0aW9uID0gTlVMTDsKLXN0YXRpYyBib29sIE15 U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsKK2Jvb2wgTXlTdWJzY3JpcHRpb25WYWxpZCA9IGZh bHNlOwogCiBib29sCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIHN0YXRpYyBYTG9n UmVjUHRyIHJlbW90ZV9maW5hbF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAogLyogZmllbGRz IHZhbGlkIG9ubHkgd2hlbiBwcm9jZXNzaW5nIHN0cmVhbWVkIHRyYW5zYWN0aW9uICovCi1zdGF0 aWMgYm9vbCBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworYm9vbCBpbl9zdHJlYW1l ZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCitUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKK3N0YXRpYyBBcHBseUJnd29ya2VyU3RhdGUgKnN0cmVhbV9hcHBs eV93b3JrZXIgPSBOVUxMOwogCi1zdGF0aWMgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52 YWxpZFRyYW5zYWN0aW9uSWQ7CisvKiBDaGVjayBpZiB3ZSBhcmUgYXBwbHlpbmcgdGhlIHRyYW5z YWN0aW9uIGluIGFuIGFwcGx5IGJhY2tncm91bmQgd29ya2VyICovCisjZGVmaW5lIGFwcGx5X2Jn d29ya2VyX2FjdGl2ZSgpIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiAmJiBzdHJlYW1fYXBwbHlf d29ya2VyICE9IE5VTEwpCisKKy8qCisgKiBUaGUgbnVtYmVyIG9mIGNoYW5nZXMgZHVyaW5nIG9u ZSBzdHJlYW1pbmcgYmxvY2sgKG9ubHkgZm9yIGFwcGx5IGJhY2tncm91bmQKKyAqIHdvcmtlcnMp CisgKi8KK3N0YXRpYyB1aW50MzIgbmNoYW5nZXMgPSAwOwogCiAvKgogICogV2UgZW5hYmxlIHNr aXBwaW5nIGFsbCBkYXRhIG1vZGlmaWNhdGlvbiBjaGFuZ2VzIChJTlNFUlQsIFVQREFURSwgZXRj LikgZm9yCiAgKiB0aGUgc3Vic2NyaXB0aW9uIGlmIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24ncyBm aW5pc2ggTFNOIG1hdGNoZXMgdGhlIHN1YnNraXBsc24uCiAgKiBPbmNlIHdlIHN0YXJ0IHNraXBw aW5nIGNoYW5nZXMsIHdlIGRvbid0IHN0b3AgaXQgdW50aWwgd2Ugc2tpcCBhbGwgY2hhbmdlcyBv ZgogICogdGhlIHRyYW5zYWN0aW9uIGV2ZW4gaWYgcGdfc3Vic2NyaXB0aW9uIGlzIHVwZGF0ZWQg YW5kIE15U3Vic2NyaXB0aW9uLT5za2lwbHNuCi0gKiBnZXRzIGNoYW5nZWQgb3IgcmVzZXQgZHVy aW5nIHRoYXQuIEFsc28sIGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNlcywgd2UKLSAqIGRv bid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBzaW5jZSB3ZSBkZWNp ZGUgd2hldGhlciBvciBub3QKKyAqIGdldHMgY2hhbmdlZCBvciByZXNldCBkdXJpbmcgdGhhdC4g QWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2VzIChzdHJlYW1pbmcgPSBvbiksCisg KiB3ZSBkb24ndCBza2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNoYW5nZXMgc2luY2Ug d2UgZGVjaWRlIHdoZXRoZXIgb3Igbm90CiAgKiB0byBza2lwIGFwcGx5aW5nIHRoZSBjaGFuZ2Vz IHdoZW4gc3RhcnRpbmcgdG8gYXBwbHkgY2hhbmdlcy4gVGhlIHN1YnNraXBsc24gaXMKICAqIGNs ZWFyZWQgYWZ0ZXIgc3VjY2Vzc2Z1bGx5IHNraXBwaW5nIHRoZSB0cmFuc2FjdGlvbiBvciBhcHBs eWluZyBub24tZW1wdHkKICAqIHRyYW5zYWN0aW9uLiBUaGUgbGF0dGVyIHByZXZlbnRzIHRoZSBt aXN0YWtlbmx5IHNwZWNpZmllZCBzdWJza2lwbHNuIGZyb20KLSAqIGJlaW5nIGxlZnQuCisgKiBi ZWluZyBsZWZ0LiBOb3RlIHRoYXQgd2UgY2Fubm90IHNraXAgdGhlIHN0cmVhbWluZyB0cmFuc2Fj dGlvbnMgd2hlbiB1c2luZworICogYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIGJlY2F1c2Ugd2Ug Y2Fubm90IGdldCB0aGUgZmluaXNoIExTTiBiZWZvcmUKKyAqIGFwcGx5aW5nIHRoZSBjaGFuZ2Vz LgogICovCiBzdGF0aWMgWExvZ1JlY1B0ciBza2lwX3hhY3RfZmluaXNoX2xzbiA9IEludmFsaWRY TG9nUmVjUHRyOwogI2RlZmluZSBpc19za2lwcGluZ19jaGFuZ2VzKCkgKHVubGlrZWx5KCFYTG9n UmVjUHRySXNJbnZhbGlkKHNraXBfeGFjdF9maW5pc2hfbHNuKSkpCkBAIC0zMjQsOSArMzQ0LDYg QEAgc3RhdGljIHZvaWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsKIAogc3RhdGlj IHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCk7CiAKLS8qIHByb3RvdHlwZSBu ZWVkZWQgYmVjYXVzZSBvZiBzdHJlYW1fY29tbWl0ICovCi1zdGF0aWMgdm9pZCBhcHBseV9kaXNw YXRjaChTdHJpbmdJbmZvIHMpOwotCiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfY29tbWl0X2lu dGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7CiBzdGF0aWMgdm9pZCBh cHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJ CQkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCkBAIC0zNTksNyArMzc2LDYgQEAgc3Rh dGljIHZvaWQgc3RvcF9za2lwcGluZ19jaGFuZ2VzKHZvaWQpOwogc3RhdGljIHZvaWQgY2xlYXJf c3Vic2NyaXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbik7CiAKIC8qIEZ1bmN0 aW9ucyBmb3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KLXN0YXRpYyB2b2lkIGFwcGx5X2Vycm9y X2NhbGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2FwcGx5X2Vycm9y X2NvbnRleHRfeGFjdChUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOwogc3RhdGlj IGlubGluZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKTsKIApAQCAt NDI2LDQwICs0NDIsODUgQEAgZW5kX3JlcGxpY2F0aW9uX3N0ZXAodm9pZCkKIH0KIAogLyoKLSAq IEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCisgKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNh Y3Rpb25zIGZvciBib3RoIHRoZSBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIGFwcGx5CisgKiBi YWNrZ3JvdW5kIHdvcmtlcnMuCisgKgorICogSW4gc3RyZWFtaW5nIGNhc2UgKHJlY2VpdmluZyBh IGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgZm9yCisgKiBTVUJTVFJFQU1fT04gbW9k ZSwgc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHByb3BlciB0b3BsZXZlbAor ICogdHJhbnNhY3Rpb24sIGFuZCBmb3IgU1VCU1RSRUFNX1BBUkFMTEVMIG1vZGUsIHNlbmQgdGhl IGNoYW5nZXMgdG8gYXBwbHkKKyAqIGJhY2tncm91bmQgd29ya2VycyAoTE9HSUNBTF9SRVBfTVNH X1JFTEFUSU9OIG9yIExPR0lDQUxfUkVQX01TR19UWVBFIGNoYW5nZXMKKyAqIHdpbGwgYWxzbyBi ZSBhcHBsaWVkIGluIG1haW4gYXBwbHkgd29ya2VyKS4KICAqCi0gKiBJZiBpbiBzdHJlYW1pbmcg bW9kZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Ygc3RyZWFtZWQgdHJhbnNhY3Rpb24pLCB3ZQotICog c2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHByb3BlciB0b3BsZXZlbCB0cmFu c2FjdGlvbi4KKyAqIEZvciBub24tc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCByZXR1cm5zIGZhbHNl OworICogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucywgcmV0dXJucyB0cnVlIGlmIGluIG1haW4g YXBwbHkgd29ya2VyLCBmYWxzZQorICogb3RoZXJ3aXNlLgogICoKLSAqIFJldHVybnMgdHJ1ZSBm b3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCBmYWxzZSBvdGhlcndpc2UgKHJlZ3VsYXIgbW9kZSku CisgKiBFeGNlcHRpb246IFdoZW4gdGhlIG1haW4gYXBwbHkgd29ya2VyIGlzIGFwcGx5aW5nIHN0 cmVhbWluZyB0cmFuc2FjdGlvbnMgaW4KKyAqIHBhcmFsbGVsIG1vZGUgKGUuZy4gd2hlbiBhZGRy ZXNzaW5nIExPR0lDQUxfUkVQX01TR19SRUxBVElPTiBvcgorICogTE9HSUNBTF9SRVBfTVNHX1RZ UEUgY2hhbmdlcyksIHRoZW4gcmV0dXJuIGZhbHNlLgogICovCiBzdGF0aWMgYm9vbAogaGFuZGxl X3N0cmVhbWVkX3RyYW5zYWN0aW9uKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5nSW5m byBzKQogewotCVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQg PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAotCS8qIG5vdCBpbiBzdHJlYW1pbmcgbW9kZSAqLwot CWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJLyogTm90IGluIHN0cmVhbWluZyBtb2Rl ICovCisJaWYgKCEoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gfHwgYW1fYXBwbHlfYmd3b3JrZXIo KSkpCiAJCXJldHVybiBmYWxzZTsKIAotCUFzc2VydChzdHJlYW1fZmQgIT0gTlVMTCk7CiAJQXNz ZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsKIAogCS8qCiAJICogV2Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgWElEIG9mIHRoZSBzdWJ4YWN0IGFzIHRoZSBmaXJzdCBwYXJ0IG9m IHRoZQogCSAqIG1lc3NhZ2UsIHNvIGV4dHJhY3QgaXQuCiAJICovCi0JeGlkID0gcHFfZ2V0bXNn aW50KHMsIDQpOworCWN1cnJlbnRfeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOwogCi0JaWYgKCFU cmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQoY3Vy cmVudF94aWQpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9D T0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJpbnZhbGlkIHRyYW5zYWN0aW9u IElEIGluIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9uIikpKTsKIAotCS8qIEFkZCB0 aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVyZSkuICovCi0J c3VieGFjdF9pbmZvX2FkZCh4aWQpOworCWlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQorCXsKKwkJ LyogRGVmaW5lIGEgc2F2ZXBvaW50IGZvciBhIHN1YnhhY3QgaWYgbmVlZGVkLiAqLworCQlhcHBs eV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlkKTsKKworCQlyZXR1cm4gZmFs c2U7CisJfQorCisJaWYgKGFwcGx5X2Jnd29ya2VyX2FjdGl2ZSgpKQorCXsKKwkJLyoKKwkJICog VGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIsIGJ1dCB0aGVyZSBpcyBhbiBhcHBseSBiYWNr Z3JvdW5kCisJCSAqIHdvcmtlciwgc28gYXBwbHkgdGhlIGNoYW5nZXMgb2YgdGhpcyB0cmFuc2Fj dGlvbiBpbiB0aGF0IGJhY2tncm91bmQKKwkJICogd29ya2VyLiBQYXNzIHRoZSBkYXRhIHRvIHRo ZSB3b3JrZXIuCisJCSAqLworCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5 X3dvcmtlciwgcy0+bGVuLCBzLT5kYXRhKTsKKwkJbmNoYW5nZXMgKz0gMTsKKworCQkvKgorCQkg KiBYWFggVGhlIHB1Ymxpc2hlciBzaWRlIGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlw ZSB1cGRhdGUKKwkJICogbWVzc2FnZXMgYWZ0ZXIgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwg c28gYWxzbyB1cGRhdGUgdGhlCisJCSAqIHJlbGF0aW9uL3R5cGUgaW4gbWFpbiBhcHBseSB3b3Jr ZXIgaGVyZS4gU2VlIGZ1bmN0aW9uCisJCSAqIGNsZWFudXBfcmVsX3N5bmNfY2FjaGUuCisJCSAq LworCQlpZiAoYWN0aW9uID09IExPR0lDQUxfUkVQX01TR19SRUxBVElPTiB8fAorCQkJYWN0aW9u ID09IExPR0lDQUxfUkVQX01TR19UWVBFKQorCQkJcmV0dXJuIGZhbHNlOworCisJCXJldHVybiB0 cnVlOworCX0KKworCS8qCisJICogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIsIGJ1dCB0 aGVyZSBpcyBubyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwKKwkgKiBzbyB3cml0ZSB0byB0ZW1w b3JhcnkgZmlsZXMgYW5kIGFwcGx5IHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzLgorCSAq CisJICogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVzcyBhbHJlYWR5IHRo ZXJlKS4KKwkgKi8KKwlzdWJ4YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlkKTsKIAotCS8qIHdyaXRl IHRoZSBjaGFuZ2UgdG8gdGhlIGN1cnJlbnQgZmlsZSAqLworCS8qIFdyaXRlIHRoZSBjaGFuZ2Ug dG8gdGhlIGN1cnJlbnQgZmlsZSAqLwogCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsK IAogCXJldHVybiB0cnVlOwpAQCAtODQ0LDYgKzkwNSw5IEBAIGFwcGx5X2hhbmRsZV9jb21taXQo U3RyaW5nSW5mbyBzKQogCiAJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2Rh dGEpOwogCisJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBp ZiBhbnkuICovCisJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7CisKIAkvKiBQcm9jZXNz IGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwog CXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7CiAKQEAgLTg5OCw3 ICs5NjIsOSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbChMb2dpY2FsUmVwUHJlcGFy ZWRUeG5EYXRhICpwcmVwYXJlX2RhdGEpCiAJICogQmVnaW5UcmFuc2FjdGlvbkJsb2NrIGlzIG5l Y2Vzc2FyeSB0byBiYWxhbmNlIHRoZSBFbmRUcmFuc2FjdGlvbkJsb2NrCiAJICogY2FsbGVkIHdp dGhpbiB0aGUgUHJlcGFyZVRyYW5zYWN0aW9uQmxvY2sgYmVsb3cuCiAJICovCi0JQmVnaW5UcmFu c2FjdGlvbkJsb2NrKCk7CisJaWYgKCFJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwkJQmVnaW5UcmFu c2FjdGlvbkJsb2NrKCk7CisKIAlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsgLyogQ29tcGxl dGVzIHRoZSBwcmVjZWRpbmcgQmVnaW4gY29tbWFuZC4gKi8KIAogCS8qCkBAIC05NTAsNiArMTAx Niw5IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAogCWluX3JlbW90ZV90 cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlciBpZiBhbnkuICovCisJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7 CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGlu IHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9s c24pOwogCkBAIC0xMDY0LDEwICsxMTMzLDYgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBh cmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBTVFJFQU0gUFJFUEFSRS4KLSAqCi0g KiBMb2dpYyBpcyBpbiB0d28gcGFydHM6Ci0gKiAxLiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9w ZXJhdGlvbnMKLSAqIDIuIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVkCiAgKi8KIHN0 YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQpAQCAt MTA4OCwyNCArMTE1Myw3OCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5m byBzKQogCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fcHJlcGFyZShzLCAmcHJlcGFyZV9kYXRhKTsK IAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVf ZGF0YS5wcmVwYXJlX2xzbik7CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVkIHByZXBhcmUgZm9y IHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwgcHJlcGFyZV9kYXRhLnhpZCk7CisJaWYgKGFtX2Fw cGx5X2Jnd29ya2VyKCkpCisJeworCQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJl ZC4gKi8KKwkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CiAK LQkvKiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9wZXJhdGlvbnMuICovCi0JYXBwbHlfc3Bvb2xl ZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOwor CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9u IGFzIHByZXBhcmVkLiAqLwotCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJl X2RhdGEpOworCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCi0JQ29tbWl0VHJhbnNhY3Rp b25Db21tYW5kKCk7CisJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCXN1YnhhY3RsaXN0ID0g TklMOwogCi0JcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKKwkJYXBwbHlfYmd3b3JrZXJfc2V0 X3N0YXR1cyhBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisJfQorCWVsc2UKKwl7CisJCS8qIFRo aXMgaXMgdGhlIG1haW4gYXBwbHkgd29ya2VyLiAqLworCQlBcHBseUJnd29ya2VyU3RhdGUgKndz dGF0ZSA9IGFwcGx5X2Jnd29ya2VyX2ZpbmQocHJlcGFyZV9kYXRhLnhpZCk7CiAKLQlzdG9yZV9m bHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisJCWVsb2coREVCVUcxLCAicmVj ZWl2ZWQgcHJlcGFyZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLAorCQkJIHByZXBhcmVf ZGF0YS54aWQpOworCisJCS8qCisJCSAqIENoZWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5nIHRoaXMg dHJhbnNhY3Rpb24gaW4gYW4gYXBwbHkgYmFja2dyb3VuZAorCQkgKiB3b3JrZXIgYW5kIGlmIHNv LCBzZW5kIHRoZSBjaGFuZ2VzIHRvIHRoYXQgd29ya2VyLgorCQkgKi8KKwkJaWYgKHdzdGF0ZSkK KwkJeworCQkJLyogU2VuZCBTVFJFQU0gUFJFUEFSRSBtZXNzYWdlIHRvIHRoZSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlci4gKi8KKwkJCWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMt Pmxlbiwgcy0+ZGF0YSk7CisKKwkJCS8qCisJCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRv IHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgd2FpdCBmb3IKKwkJCSAqIHRoYXQgd29ya2Vy IHRvIGZpbmlzaC4gVGhpcyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CisJCQkgKiBv cmRlciB3aGljaCBhdm9pZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2ll cyBhbmQKKwkJCSAqIGRlYWRsb2Nrcy4KKwkJCSAqLworCQkJYXBwbHlfYmd3b3JrZXJfd2FpdF9m b3Iod3N0YXRlLCBBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisJCQlhcHBseV9iZ3dvcmtlcl9m cmVlKHdzdGF0ZSk7CisKKwkJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CisJCQlzdG9yZV9m bHVzaF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisJCX0KKwkJZWxzZQorCQl7CisJ CQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQgdG8gZmlsZSwg c28gcmVwbGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAqLworCQkJ YXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEucHJl cGFyZV9sc24pOworCisJCQkvKiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8K KwkJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOworCisJCQlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNl KTsKKworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCisJ CQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQkJLyogVW5saW5rIHRoZSBmaWxl cyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLworCQkJc3RyZWFt X2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhp ZCk7CisJCX0KKwl9CiAKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwlzdHJlYW1f YXBwbHlfd29ya2VyID0gTlVMTDsKIAotCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxp emVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKwkvKiBDaGVjayB0 aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9i Z3dvcmtlcl9jaGVja19zdGF0dXMoKTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFy ZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3Rh YmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CkBAIC0xMTU1LDE1ICsxMjc0LDYgQEAgYXBwbHlf aGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9Q Uk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoImR1cGxpY2F0ZSBTVFJF QU0gU1RBUlQgbWVzc2FnZSIpKSk7CiAKLQkvKgotCSAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24g c3RyZWFtIHN0YXJ0LCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUgY29tbWl0dGVkCi0JICogb24g dGhlIHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4gd2hpY2gg Y2FzZSBpdAotCSAqIHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBt ZXNzYWdlcy4gV2UgbmVlZCB0aGUKLQkgKiB0cmFuc2FjdGlvbiBmb3IgaGFuZGxpbmcgdGhlIGJ1 ZmZpbGUsIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZQotCSAqIHN0cmVhbWluZyBkYXRhIGFuZCBz dWJ4YWN0IGluZm8uCi0JICovCi0JYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwotCiAJLyogbm90 aWZ5IGhhbmRsZSBtZXRob2RzIHdlJ3JlIHByb2Nlc3NpbmcgYSByZW1vdGUgdHJhbnNhY3Rpb24g Ki8KIAlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IHRydWU7CiAKQEAgLTExNzcsMzYgKzEyODcs OTMgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAKIAlzZXRfYXBw bHlfZXJyb3JfY29udGV4dF94YWN0KHN0cmVhbV94aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIAot CS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2 ZW4ndCB5ZXQuIFRoaXMgd2lsbCBiZQotCSAqIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24g b2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQgaW4gYSBwZXJtYW5lbnQKLQkgKiBjb250ZXh0LiBX ZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdCBzdHJlYW1pbmcgbWVzc2FnZSBmcm9tIGFu eQotCSAqIHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3IgdGhpcyBhbmQgb3RoZXIgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9ucy4KLQkgKiBOb3csIHdlIGNvdWxkIGNyZWF0ZSBhIGZpbGVzZXQg YXQgdGhlIHN0YXJ0IG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQKLQkgKiB0aGVuIHdlIHdvbid0 IGJlIHN1cmUgdGhhdCBpdCB3aWxsIGV2ZXIgYmUgdXNlZC4KLQkgKi8KLQlpZiAoTXlMb2dpY2Fs UmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9PSBOVUxMKQorCWlmIChhbV9hcHBseV9iZ3dvcmtl cigpKQogCXsKLQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7Ci0KLQkJb2xkY3R4ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisJCS8qCisJCSAqIE1ha2Ugc3VyZSB0aGUgaGFu ZGxlIGFwcGx5X2Rpc3BhdGNoIG1ldGhvZHMgYXJlIGF3YXJlIHdlJ3JlIGluIGEKKwkJICogcmVt b3RlIHRyYW5zYWN0aW9uLgorCQkgKi8KKwkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gdHJ1ZTsK IAotCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID0gcGFsbG9jKHNpemVvZihG aWxlU2V0KSk7Ci0JCUZpbGVTZXRJbml0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVz ZXQpOworCQkvKiBCZWdpbiB0aGUgdHJhbnNhY3Rpb24uICovCisJCUFjY2VwdEludmFsaWRhdGlv bk1lc3NhZ2VzKCk7CisJCW1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24oKTsKIAotCQlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJ QmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwog CX0KKwllbHNlCisJeworCQkvKgorCQkgKiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5IHdvcmtlci4g Q2hlY2sgaWYgdGhlcmUgaXMgYW55IGZyZWUgYXBwbHkKKwkJICogYmFja2dyb3VuZCB3b3JrZXIg d2UgY2FuIHVzZSB0byBwcm9jZXNzIHRoaXMgdHJhbnNhY3Rpb24uCisJCSAqLworCQlpZiAoZmly c3Rfc2VnbWVudCkKKwkJCXN0cmVhbV9hcHBseV93b3JrZXIgPSBhcHBseV9iZ3dvcmtlcl9zdGFy dChzdHJlYW1feGlkKTsKKwkJZWxzZQorCQkJc3RyZWFtX2FwcGx5X3dvcmtlciA9IGFwcGx5X2Jn d29ya2VyX2ZpbmQoc3RyZWFtX3hpZCk7CiAKLQkvKiBvcGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0 aGlzIHRyYW5zYWN0aW9uICovCi0Jc3RyZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXIt PnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKwkJaWYgKHN0cmVhbV9hcHBseV93 b3JrZXIpCisJCXsKKwkJCS8qCisJCQkgKiBJZiB3ZSBoYXZlIGZvdW5kIGEgZnJlZSB3b3JrZXIg b3IgaWYgd2UgYXJlIGFscmVhZHkgYXBwbHlpbmcgdGhpcworCQkJICogdHJhbnNhY3Rpb24gaW4g YW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIHRoZW4gd2UgcGFzcyB0aGUgZGF0YSB0bworCQkJ ICogdGhhdCB3b3JrZXIuCisJCQkgKi8KKwkJCWlmIChmaXJzdF9zZWdtZW50KQorCQkJCWFwcGx5 X2Jnd29ya2VyX3NlbmRfZGF0YShzdHJlYW1fYXBwbHlfd29ya2VyLCBzLT5sZW4sIHMtPmRhdGEp OwogCi0JLyogaWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHNlZ21lbnQsIG9wZW4gZXhpc3Rpbmcg c3VieGFjdCBmaWxlICovCi0JaWYgKCFmaXJzdF9zZWdtZW50KQotCQlzdWJ4YWN0X2luZm9fcmVh ZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKwkJCW5jaGFuZ2VzID0g MDsKKwkJCWVsb2coREVCVUcxLCAic3RhcnRpbmcgc3RyZWFtaW5nIG9mIHhpZCAldSIsIHN0cmVh bV94aWQpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIFNpbmNlIG5vIGFwcGx5IGJh Y2tncm91bmQgd29ya2VyIGlzIGF2YWlsYWJsZSBmb3IgdGhlIGZpcnN0CisJCQkgKiBzdHJlYW0g c3RhcnQsIHNlcmlhbGl6ZSBhbGwgdGhlIGNoYW5nZXMgb2YgdGhlIHRyYW5zYWN0aW9uLgorCQkJ ICoKKwkJCSAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24gc3RyZWFtIHN0YXJ0LCB0aGlzIHRyYW5z YWN0aW9uIHdpbGwgYmUKKwkJCSAqIGNvbW1pdHRlZCBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNz IGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBpbgorCQkJICogd2hpY2ggY2FzZSBpdCB3aWxsIGJl IGNvbW1pdHRlZCBhZnRlciBwcm9jZXNzaW5nIGFsbCB0aGUKKwkJCSAqIG1lc3NhZ2VzLiBXZSBu ZWVkIHRoZSB0cmFuc2FjdGlvbiBmb3IgaGFuZGxpbmcgdGhlIGJ1ZmZpbGUsCisJCQkgKiB1c2Vk IGZvciBzZXJpYWxpemluZyB0aGUgc3RyZWFtaW5nIGRhdGEgYW5kIHN1YnhhY3QgaW5mby4KKwkJ CSAqLworCQkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwogCi0JcGdzdGF0X3JlcG9ydF9hY3Rp dml0eShTVEFURV9SVU5OSU5HLCBOVUxMKTsKKwkJCS8qCisJCQkgKiBJbml0aWFsaXplIHRoZSB3 b3JrZXIncyBzdHJlYW1fZmlsZXNldCBpZiB3ZSBoYXZlbid0IHlldC4gVGhpcyB3aWxsCisJCQkg KiBiZSB1c2VkIGZvciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRl IGl0IGluIGEKKwkJCSAqIHBlcm1hbmVudCBjb250ZXh0LiBXZSBjcmVhdGUgdGhpcyBvbiB0aGUg dmVyeSBmaXJzdCBzdHJlYW1pbmcKKwkJCSAqIG1lc3NhZ2UgZnJvbSBhbnkgdHJhbnNhY3Rpb24g YW5kIHRoZW4gdXNlIGl0IGZvciB0aGlzIGFuZCBvdGhlcgorCQkJICogc3RyZWFtaW5nIHRyYW5z YWN0aW9ucy4gTm93LCB3ZSBjb3VsZCBjcmVhdGUgYSBmaWxlc2V0IGF0IHRoZSBzdGFydAorCQkJ ICogb2YgdGhlIHdvcmtlciBhcyB3ZWxsIGJ1dCB0aGVuIHdlIHdvbid0IGJlIHN1cmUgdGhhdCBp dCB3aWxsIGV2ZXIKKwkJCSAqIGJlIHVzZWQuCisJCQkgKi8KKwkJCWlmIChNeUxvZ2ljYWxSZXBX b3JrZXItPnN0cmVhbV9maWxlc2V0ID09IE5VTEwpCisJCQl7CisJCQkJTWVtb3J5Q29udGV4dCBv bGRjdHg7CiAKLQllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCQkJCW9sZGN0eCA9IE1lbW9yeUNv bnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5z dHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOworCQkJCUZpbGVTZXRJbml0 KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOworCisJCQkJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN0eCk7CisJCQl9CisKKwkJCS8qIE9wZW4gdGhlIHNwb29sIGZpbGUgZm9y IHRoaXMgdHJhbnNhY3Rpb24uICovCisJCQlzdHJlYW1fb3Blbl9maWxlKE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCisJCQkvKiBJZiB0aGlz IGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUuICov CisJCQlpZiAoIWZpcnN0X3NlZ21lbnQpCisJCQkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2Fs UmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisKKwkJCWVuZF9yZXBsaWNhdGlvbl9zdGVw KCk7CisJCX0KKwl9CisKKwlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5V TEwpOwogfQogCiAvKgpAQCAtMTIyMCw1MyArMTM4Nyw1MiBAQCBhcHBseV9oYW5kbGVfc3RyZWFt X3N0b3AoU3RyaW5nSW5mbyBzKQogCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFU SU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gU1RPUCBtZXNzYWdlIHdpdGhvdXQg U1RSRUFNIFNUQVJUIikpKTsKIAotCS8qCi0JICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxp emVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQKLQkgKiBzdWJ4YWN0 cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgotCSAqLwotCXN1YnhhY3RfaW5mb193cml0 ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKLQlzdHJlYW1fY2xvc2Vf ZmlsZSgpOworCWlmIChhcHBseV9iZ3dvcmtlcl9hY3RpdmUoKSkKKwl7CisJCWNoYXIgYWN0aW9u ID0gTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9TVE9QOwogCi0JLyogV2UgbXVzdCBiZSBpbiBhIHZh bGlkIHRyYW5zYWN0aW9uIHN0YXRlICovCi0JQXNzZXJ0KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsK KwkJYXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKHN0cmVhbV9hcHBseV93b3JrZXIsIDEsICZhY3Rp b24pOwogCi0JLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCi0JQ29tbWl0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCWVsb2coREVCVUcxLCAic3RvcHBlZCBzdHJlYW1pbmcg b2YgeGlkICV1LCAldSBjaGFuZ2VzIHN0cmVhbWVkIiwgc3RyZWFtX3hpZCwgbmNoYW5nZXMpOwor CX0KKwllbHNlCisJeworCQkvKgorCQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlhbGl6ZWQg Y2hhbmdlcywgYW5kIHNlcmlhbGl6ZSBpbmZvcm1hdGlvbgorCQkgKiBhYm91dCBzdWJ4YWN0cyBm b3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgorCQkgKi8KKwkJc3VieGFjdF9pbmZvX3dyaXRl KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCQlzdHJlYW1fY2xvc2Vf ZmlsZSgpOwogCi0JaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwkJLyogV2UgbXVz dCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9uIHN0YXRlICovCisJCUFzc2VydChJc1RyYW5zYWN0 aW9uU3RhdGUoKSk7CiAKLQkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KLQlNZW1vcnlD b250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCQkvKiBDb21taXQgdGhlIHBl ci1zdHJlYW0gdHJhbnNhY3Rpb24gKi8KKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisK KwkJLyogUmVzZXQgcGVyLXN0cmVhbSBjb250ZXh0ICovCisJCU1lbW9yeUNvbnRleHRSZXNldChM b2dpY2FsU3RyZWFtaW5nQ29udGV4dCk7CisJfQorCisJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24g PSBmYWxzZTsKKwlzdHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsKIAogCXBnc3RhdF9yZXBvcnRf YWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9p bmZvKCk7CiB9CiAKIC8qCi0gKiBIYW5kbGUgU1RSRUFNIGFib3J0IG1lc3NhZ2UuCisgKiBIYW5k bGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJhbnNhY3Rpb24gd2FzIHNwaWxsZWQg dG8gZGlzay4KICAqLwogc3RhdGljIHZvaWQKLWFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3Ry aW5nSW5mbyBzKQorc2VyaWFsaXplX3N0cmVhbV9hYm9ydChUcmFuc2FjdGlvbklkIHhpZCwgVHJh bnNhY3Rpb25JZCBzdWJ4aWQpCiB7Ci0JVHJhbnNhY3Rpb25JZCB4aWQ7Ci0JVHJhbnNhY3Rpb25J ZCBzdWJ4aWQ7Ci0KLQlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCi0JCWVyZXBvcnQoRVJS T1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAotCQkJCSBlcnJt c2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkp OwotCi0JbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmeGlkLCAmc3VieGlkKTsKLQog CS8qCiAJICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0 IG9mIHRvcGxldmVsIHhhY3QsIHNvCiAJICoganVzdCBkZWxldGUgdGhlIGZpbGVzIHdpdGggc2Vy aWFsaXplZCBpbmZvLgogCSAqLwogCWlmICh4aWQgPT0gc3VieGlkKQotCXsKLQkJc2V0X2FwcGx5 X2Vycm9yX2NvbnRleHRfeGFjdCh4aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIAkJc3RyZWFtX2Ns ZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkKTsKLQl9CiAJZWxzZQog CXsKIAkJLyoKQEAgLTEyOTAsOCArMTQ1Niw2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQo U3RyaW5nSW5mbyBzKQogCQlib29sCQlmb3VuZCA9IGZhbHNlOwogCQljaGFyCQlwYXRoW01BWFBH UEFUSF07CiAKLQkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChzdWJ4aWQsIEludmFsaWRY TG9nUmVjUHRyKTsKLQogCQlzdWJpZHggPSAtMTsKIAkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgp OwogCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwpA QCAtMTMxNiw3ICsxNDgwLDYgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZv IHMpCiAJCQljbGVhbnVwX3N1YnhhY3RfaW5mbygpOwogCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAo KTsKIAkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwotCQkJcmVzZXRfYXBwbHlfZXJyb3Jf Y29udGV4dF9pbmZvKCk7CiAJCQlyZXR1cm47CiAJCX0KIApAQCAtMTMzOSw2ICsxNTAyLDE0MyBA QCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJZW5kX3JlcGxpY2F0 aW9uX3N0ZXAoKTsKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAJfQorfQorCisvKgor ICogSGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlLgorICovCitzdGF0aWMgdm9pZAorYXBwbHlf aGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCit7CisJVHJhbnNhY3Rpb25JZCB4aWQ7 CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSBhYm9y dF9kYXRhOworCWJvb2wgcmVhZF9hYm9ydF9sc24gPSBmYWxzZTsKKworCWlmIChpbl9zdHJlYW1l ZF90cmFuc2FjdGlvbikKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX1BS T1RPQ09MX1ZJT0xBVElPTiksCisJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIEFCT1JUIG1l c3NhZ2Ugd2l0aG91dCBTVFJFQU0gU1RPUCIpKSk7CisKKwkvKiBDaGVjayB3aGV0aGVyIHRoZSBw dWJsaXNoZXIgc2VuZHMgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lLiAqLworCWlmIChhbV9hcHBs eV9iZ3dvcmtlcigpKQorCQlyZWFkX2Fib3J0X2xzbiA9IE15UGFyYWxsZWxTaGFyZWQtPnNlcnZl cl92ZXJzaW9uID49CisJCQkJCQkgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVS U0lPTl9OVU07CisKKwlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZhYm9ydF9kYXRh LCByZWFkX2Fib3J0X2xzbik7CisKKwl4aWQgPSBhYm9ydF9kYXRhLnhpZDsKKwlzdWJ4aWQgPSBh Ym9ydF9kYXRhLnN1YnhpZDsKKworCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3VieGlk LCBhYm9ydF9kYXRhLmFib3J0X2xzbik7CisKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwl7 CisJCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIGFib3J0aW5nIGN1cnJlbnQgdHJhbnNh Y3Rpb24geGlkPSV1LCBzdWJ4aWQ9JXUiLAorCQkJIE15UGFyYWxsZWxTaGFyZWQtPm4sIEdldEN1 cnJlbnRUcmFuc2FjdGlvbklkSWZBbnkoKSwKKwkJCSBHZXRDdXJyZW50U3ViVHJhbnNhY3Rpb25J ZCgpKTsKKworCQkvKgorCQkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0 IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QKKwkJICogcG9zaXRpb24gaW4gY2FzZSBvZiBjcmFzaC4K KwkJICovCisJCWlmIChyZWFkX2Fib3J0X2xzbikKKwkJeworCQkJcmVwbG9yaWdpbl9zZXNzaW9u X29yaWdpbl9sc24gPSBhYm9ydF9kYXRhLmFib3J0X2xzbjsKKwkJCXJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW5fdGltZXN0YW1wID0gYWJvcnRfZGF0YS5hYm9ydF90aW1lOworCQl9CisKKwkJLyoK KwkJICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0IG9m IHRvcGxldmVsIHhhY3QsCisJCSAqIHNvIGp1c3QgZnJlZSB0aGUgc3VieGFjdGxpc3QuCisJCSAq LworCQlpZiAoc3VieGlkID09IHhpZCkKKwkJeworCQkJQWJvcnRDdXJyZW50VHJhbnNhY3Rpb24o KTsKKworCQkJRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJCQlDb21taXRUcmFuc2FjdGlv bkNvbW1hbmQoKTsKKworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJCQlwZ3N0 YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCisJCQlsaXN0X2ZyZWUoc3Vi eGFjdGxpc3QpOworCQkJc3VieGFjdGxpc3QgPSBOSUw7CisKKwkJCWFwcGx5X2Jnd29ya2VyX3Nl dF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCQl9CisJCWVsc2UKKwkJeworCQkJ LyoKKwkJCSAqIE9LLCBzbyBpdCdzIGEgc3VieGFjdC4gUm9sbGJhY2sgdG8gdGhlIHNhdmVwb2lu dC4KKwkJCSAqCisJCQkgKiBXZSBhbHNvIG5lZWQgdG8gcmVhZCB0aGUgc3VieGFjdGxpc3QsIGRl dGVybWluZSB0aGUgb2Zmc2V0CisJCQkgKiB0cmFja2VkIGZvciB0aGUgc3VieGFjdCwgYW5kIHRy dW5jYXRlIHRoZSBsaXN0LgorCQkJICovCisJCQlpbnQJCQlpOworCQkJYm9vbAkJZm91bmQgPSBm YWxzZTsKKwkJCWNoYXIJCXNwbmFtZVtNQVhQR1BBVEhdOworCisJCQlzbnByaW50ZihzcG5hbWUs IE1BWFBHUEFUSCwgInNhdmVwb2ludF9mb3JfeGlkXyV1Iiwgc3VieGlkKTsKKworCQkJZWxvZyhE RUJVRzEsICJbQXBwbHkgQkdXICMldV0gcm9sbGluZyBiYWNrIHRvIHNhdmVwb2ludCAlcyIsCisJ CQkJIE15UGFyYWxsZWxTaGFyZWQtPm4sIHNwbmFtZSk7CisKKwkJCWZvciAoaSA9IGxpc3RfbGVu Z3RoKHN1YnhhY3RsaXN0KSAtIDE7IGkgPj0gMDsgaS0tKQorCQkJeworCQkJCXhpZCA9IChUcmFu c2FjdGlvbklkKSBsaXN0X250aF9pbnQoc3VieGFjdGxpc3QsIGkpOworCQkJCWlmICh4aWQgPT0g c3VieGlkKQorCQkJCXsKKwkJCQkJZm91bmQgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9CisJ CQl9CisKKwkJCWlmIChmb3VuZCkKKwkJCXsKKwkJCQlSb2xsYmFja1RvU2F2ZXBvaW50KHNwbmFt ZSk7CisJCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQkJc3VieGFjdGxpc3QgPSBs aXN0X3RydW5jYXRlKHN1YnhhY3RsaXN0LCBpICsgMSk7CisJCQl9CisKKwkJCXBnc3RhdF9yZXBv cnRfYWN0aXZpdHkoU1RBVEVfSURMRUlOVFJBTlNBQ1RJT04sIE5VTEwpOworCQl9CisJfQorCWVs c2UKKwl7CisJCS8qIFRoaXMgaXMgdGhlIG1haW4gYXBwbHkgd29ya2VyLiAqLworCQlBcHBseUJn d29ya2VyU3RhdGUgKndzdGF0ZSA9IGFwcGx5X2Jnd29ya2VyX2ZpbmQoeGlkKTsKKworCQkvKgor CQkgKiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyB0aGlzIHRyYW5zYWN0aW9uIGluIGFuIGFw cGx5IGJhY2tncm91bmQKKwkJICogd29ya2VyIGFuZCBpZiBzbywgc2VuZCB0aGUgY2hhbmdlcyB0 byB0aGF0IHdvcmtlci4KKwkJICovCisJCWlmICh3c3RhdGUpCisJCXsKKwkJCS8qIFNlbmQgU1RS RUFNIEFCT1JUIG1lc3NhZ2UgdG8gdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLiAqLworCQkJ YXBwbHlfYmd3b3JrZXJfc2VuZF9kYXRhKHdzdGF0ZSwgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJ LyoKKwkJCSAqIEFmdGVyIHNlbmRpbmcgdGhlIGRhdGEgdG8gdGhlIGFwcGx5IGJhY2tncm91bmQg d29ya2VyLCB3YWl0IGZvcgorCQkJICogdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5l Y2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQKKwkJCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWls dXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAorCQkJICogZGVhZGxvY2tz LgorCQkJICovCisJCQlpZiAoc3VieGlkID09IHhpZCkKKwkJCXsKKwkJCQlhcHBseV9iZ3dvcmtl cl93YWl0X2Zvcih3c3RhdGUsIEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwkJCQlhcHBseV9i Z3dvcmtlcl9mcmVlKHdzdGF0ZSk7CisJCQl9CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKgorCQkJ ICogV2UgYXJlIGluIG1haW4gYXBwbHkgd29ya2VyIGFuZCB0aGUgdHJhbnNhY3Rpb24gaGFzIGJl ZW4KKwkJCSAqIHNlcmlhbGl6ZWQgdG8gZmlsZS4KKwkJCSAqLworCQkJc2VyaWFsaXplX3N0cmVh bV9hYm9ydCh4aWQsIHN1YnhpZCk7CisJCX0KKwl9CiAKIAlyZXNldF9hcHBseV9lcnJvcl9jb250 ZXh0X2luZm8oKTsKIH0KQEAgLTE0NjgsOCArMTc2OCw4IEBAIGFwcGx5X3Nwb29sZWRfbWVzc2Fn ZXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogc3RhdGljIHZvaWQKIGFwcGx5 X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIHsKLQlUcmFuc2FjdGlvbklkIHhp ZDsKIAlMb2dpY2FsUmVwQ29tbWl0RGF0YSBjb21taXRfZGF0YTsKKwlUcmFuc2FjdGlvbklkIHhp ZDsKIAogCWlmIChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKQEAg LTE0NzksMTQgKzE3NzksODEgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5m byBzKQogCXhpZCA9IGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0KHMsICZjb21taXRfZGF0 YSk7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdCh4aWQsIGNvbW1pdF9kYXRhLmNvbW1p dF9sc24pOwogCi0JZWxvZyhERUJVRzEsICJyZWNlaXZlZCBjb21taXQgZm9yIHN0cmVhbWVkIHRy YW5zYWN0aW9uICV1IiwgeGlkKTsKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJCS8q CisJCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZy b20gY29ycmVjdAorCQkgKiBwb3NpdGlvbiBpbiBjYXNlIG9mIGNyYXNoLgorCQkgKi8KKwkJcmVw bG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBjb21taXRfZGF0YS5lbmRfbHNuOworCQlyZXBs b3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFtcCA9IGNvbW1pdF9kYXRhLmNvbW1pdHRpbWU7 CiAKLQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7 CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZh bHNlKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQlhcHBseV9oYW5kbGVfY29t bWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZh bHNlOworCisJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CisKKwkJbGlzdF9mcmVlKHN1Ynhh Y3RsaXN0KTsKKwkJc3VieGFjdGxpc3QgPSBOSUw7CisKKwkJYXBwbHlfYmd3b3JrZXJfc2V0X3N0 YXR1cyhBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisJfQorCWVsc2UKKwl7CisJCS8qIFRoaXMg aXMgdGhlIG1haW4gYXBwbHkgd29ya2VyLiAqLworCQlBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0 ZSA9IGFwcGx5X2Jnd29ya2VyX2ZpbmQoeGlkKTsKKworCQllbG9nKERFQlVHMSwgInJlY2VpdmVk IGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCB4aWQpOworCisJCS8qCisJCSAq IENoZWNrIGlmIHdlIGFyZSBwcm9jZXNzaW5nIHRoaXMgdHJhbnNhY3Rpb24gaW4gYW4gYXBwbHkg YmFja2dyb3VuZAorCQkgKiB3b3JrZXIgYW5kIGlmIHNvLCBzZW5kIHRoZSBjaGFuZ2VzIHRvIHRo YXQgd29ya2VyLgorCQkgKi8KKwkJaWYgKHdzdGF0ZSkKKwkJeworCQkJLyogU2VuZCBTVFJFQU0g Q09NTUlUIG1lc3NhZ2UgdG8gdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLiAqLworCQkJYXBw bHlfYmd3b3JrZXJfc2VuZF9kYXRhKHdzdGF0ZSwgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJLyoK KwkJCSAqIEFmdGVyIHNlbmRpbmcgdGhlIGRhdGEgdG8gdGhlIGFwcGx5IGJhY2tncm91bmQgd29y a2VyLCB3YWl0IGZvcgorCQkJICogdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vz c2FyeSB0byBtYWludGFpbiBjb21taXQKKwkJCSAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJl cyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZAorCQkJICogZGVhZGxvY2tzLgor CQkJICovCisJCQlhcHBseV9iZ3dvcmtlcl93YWl0X2Zvcih3c3RhdGUsIEFQUExZX0JHV09SS0VS X0ZJTklTSEVEKTsKIAotCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5n ZXMgYW5kIHN1YnhhY3QgaW5mbyAqLwotCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQkJ c3RvcmVfZmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQlzdG9wX3NraXBw aW5nX2NoYW5nZXMoKTsKKworCQkJYXBwbHlfYmd3b3JrZXJfZnJlZSh3c3RhdGUpOworCisJCQkv KgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGlzIGVpdGhlciBub24tZW1wdHkgb3Igc2tpcHBlZCwg c28gd2UgY2xlYXIgdGhlCisJCQkgKiBzdWJza2lwbHNuLgorCQkJICovCisJCQljbGVhcl9zdWJz Y3JpcHRpb25fc2tpcF9sc24oY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJCX0KKwkJZWxzZQor CQl7CisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQgdG8g ZmlsZSwgc28gcmVwbGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJCSAq LworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24p OworCisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJ CS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3Qg aW5mby4gKi8KKwkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3Vi aWQsIHhpZCk7CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXMoKTsK IAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4g cGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRfZGF0YS5lbmRfbHNu KTsKQEAgLTI0NjcsNyArMjgzNCw3IEBAIGFwcGx5X2hhbmRsZV90cnVuY2F0ZShTdHJpbmdJbmZv IHMpCiAvKgogICogTG9naWNhbCByZXBsaWNhdGlvbiBwcm90b2NvbCBtZXNzYWdlIGRpc3BhdGNo ZXIuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMp CiB7CiAJTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uID0gcHFfZ2V0bXNnYnl0ZShzKTsKQEAgLTI2 MzYsNiArMzAwMywxMCBAQCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9s c24pCiB7CiAJRmx1c2hQb3NpdGlvbiAqZmx1c2hwb3M7CiAKKwkvKiBTa2lwIGlmIG5vdCB0aGUg bWFpbiBhcHBseSB3b3JrZXIgKi8KKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwkJcmV0dXJu OworCiAJLyogTmVlZCB0byBkbyB0aGlzIGluIHBlcm1hbmVudCBjb250ZXh0ICovCiAJTWVtb3J5 Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKQEAgLTI2NTAsNyArMzAyMSw3IEBAIHN0 b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKIAogCiAvKiBVcGRhdGUg c3RhdGlzdGljcyBvZiB0aGUgd29ya2VyLiAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIFVwZGF0ZVdv cmtlclN0YXRzKFhMb2dSZWNQdHIgbGFzdF9sc24sIFRpbWVzdGFtcFR6IHNlbmRfdGltZSwgYm9v bCByZXBseSkKIHsKIAlNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfbHNuID0gbGFzdF9sc247CkBA IC0yODEyLDYgKzMxODMsOSBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9y ZWNlaXZlZCkKIAkJCUFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7CiAJCQltYXliZV9yZXJl YWRfc3Vic2NyaXB0aW9uKCk7CiAKKwkJCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFj a2dyb3VuZCB3b3JrZXIgaWYgYW55LiAqLworCQkJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVz KCk7CisKIAkJCS8qIFByb2Nlc3MgYW55IHRhYmxlIHN5bmNocm9uaXphdGlvbiBjaGFuZ2VzLiAq LwogCQkJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhsYXN0X3JlY2VpdmVkKTsKIAkJfQpAQCAtMzEx NCw3ICszNDg4LDcgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogLyoKICAqIENh bGxiYWNrIGZyb20gc3Vic2NyaXB0aW9uIHN5c2NhY2hlIGludmFsaWRhdGlvbi4KICAqLwotc3Rh dGljIHZvaWQKK3ZvaWQKIHN1YnNjcmlwdGlvbl9jaGFuZ2VfY2IoRGF0dW0gYXJnLCBpbnQgY2Fj aGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKIAlNeVN1YnNjcmlwdGlvblZhbGlkID0gZmFsc2U7 CkBAIC0zNzEwLDcgKzQwODQsNyBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJ CW9yaWdpbmlkID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIHRydWUpOwogCQlpZiAo IU9pZElzVmFsaWQob3JpZ2luaWQpKQogCQkJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2NyZWF0ZShv cmlnaW5uYW1lKTsKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwkJcmVw bG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkLCB0cnVlKTsKIAkJcmVwbG9yaWdpbl9zZXNz aW9uX29yaWdpbiA9IG9yaWdpbmlkOwogCQlvcmlnaW5fc3RhcnRwb3MgPSByZXBsb3JpZ2luX3Nl c3Npb25fZ2V0X3Byb2dyZXNzKGZhbHNlKTsKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CkBAIC0zNzUxLDEzICs0MTI1LDE0IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykK IAogCXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldh bFJjdkNvbm4pOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5wcm90b192ZXJzaW9uID0KKwkJc2Vy dmVyX3ZlcnNpb24gPj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxf VkVSU0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BS T1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDoKIAkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8g TE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgogCQlMT0dJQ0FMUkVQX1BST1RP X1ZFUlNJT05fTlVNOwogCiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVz ID0gTXlTdWJzY3JpcHRpb24tPnB1YmxpY2F0aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwu YmluYXJ5ID0gTXlTdWJzY3JpcHRpb24tPmJpbmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwu c3RyZWFtaW5nID0gTXlTdWJzY3JpcHRpb24tPnN0cmVhbTsKKwlvcHRpb25zLnByb3RvLmxvZ2lj YWwuc3RyZWFtaW5nID0gKE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX09GRik7 CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnR3b3BoYXNlID0gZmFsc2U7CiAJb3B0aW9ucy5wcm90 by5sb2dpY2FsLm9yaWdpbiA9IHBzdHJkdXAoTXlTdWJzY3JpcHRpb24tPm9yaWdpbik7CiAKQEAg LTM5MTYsNyArNDI5MSw4IEBAIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRy IGZpbmlzaF9sc24pCiAJWExvZ1JlY1B0cglteXNraXBsc24gPSBNeVN1YnNjcmlwdGlvbi0+c2tp cGxzbjsKIAlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7CiAKLQlpZiAobGlrZWx5KFhMb2dSZWNQ dHJJc0ludmFsaWQobXlza2lwbHNuKSkpCisJaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlk KG15c2tpcGxzbikpIHx8CisJCWFtX2FwcGx5X2Jnd29ya2VyKCkpCiAJCXJldHVybjsKIAogCWlm ICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCkBAIC0zOTg4LDcgKzQzNjQsNyBAQCBjbGVhcl9zdWJz Y3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJvciBj YWxsYmFjayB0byBnaXZlIG1vcmUgY29udGV4dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcg YXBwbGllZCAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQg KmFyZykKIHsKIAlBcHBseUVycm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJvcl9j YWxsYmFja19hcmc7CkBAIC00MDE2LDIzICs0MzkyLDQ3IEBAIGFwcGx5X2Vycm9yX2NhbGxiYWNr KHZvaWQgKmFyZykKIAkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAogCQkJCQkgICBMU05fRk9S TUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CiAJfQotCWVsc2UgaWYgKGVycmFyZy0+cmVt b3RlX2F0dG51bSA8IDApCi0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9y IHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24g dGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSBmaW5pc2hlZCBhdCAl WC8lWCIsCi0JCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21l c3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVy ZWwubnNwbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJ ICAgZXJyYXJnLT5yZW1vdGVfeGlkLAotCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZp bmlzaF9sc24pKTsKIAllbHNlCi0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEg Zm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRp b24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9u ICV1IGZpbmlzaGVkIGF0ICVYLyVYIiwKLQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAotCQkJ CSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJICAgZXJy YXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVy ZWwucmVsbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFy Zy0+cmVtb3RlX2F0dG51bV0sCi0JCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAotCQkJCSAgIExT Tl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKKwl7CisJCWlmIChlcnJhcmctPnJl bW90ZV9hdHRudW0gPCAwKQorCQl7CisJCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChlcnJhcmct PmZpbmlzaF9sc24pKQorCQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9y IHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24g dGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSIsCisJCQkJCQkgICBl cnJhcmctPm9yaWdpbl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJy YXJnLT5jb21tYW5kKSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwK KwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFy Zy0+cmVtb3RlX3hpZCk7CisJCQllbHNlCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1v dGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciBy ZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IGZp bmlzaGVkIGF0ICVYLyVYIiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkg ICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJy YXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90 ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNO X0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOworCQl9CisJCWVsc2UKKwkJeworCQkJ aWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250 ZXh0KCJwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wi IGR1cmluZyBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIg Y29sdW1uIFwiJXNcIiBpbiB0cmFuc2FjdGlvbiAldSIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdp bl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5k KSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVy cmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1v dGVyZWwuYXR0bmFtZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKKwkJCQkJCSAgIGVycmFyZy0+ cmVtb3RlX3hpZCk7CisJCQllbHNlCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUg ZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBs aWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNh Y3Rpb24gJXUgZmluaXNoZWQgYXQgJVgvJVgiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFt ZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJ CQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmct PnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVs LmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCisJCQkJCQkgICBlcnJhcmctPnJlbW90 ZV94aWQsCisJCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJ CX0KKwl9CiB9CiAKIC8qIFNldCB0cmFuc2FjdGlvbiBpbmZvcm1hdGlvbiBvZiBhcHBseSBlcnJv ciBjYWxsYmFjayAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRw dXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0 LmMKaW5kZXggYTNjMWJhOGE0MC4uZjllMzg4YWRhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0xODQzLDYgKzE4NDMsOSBAQCBwZ291dHB1dF9z dHJlYW1fYWJvcnQoc3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJICBY TG9nUmVjUHRyIGFib3J0X2xzbikKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0b3B0eG47CisJUEdP dXRwdXREYXRhICpkYXRhID0gKFBHT3V0cHV0RGF0YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJp dmF0ZTsKKwlib29sIHdyaXRlX2Fib3J0X2xzbiA9IChkYXRhLT5wcm90b2NvbF92ZXJzaW9uID49 CisJCQkJCQkJTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0pOwog CiAJLyoKIAkgKiBUaGUgYWJvcnQgc2hvdWxkIGhhcHBlbiBvdXRzaWRlIHN0cmVhbWluZyBibG9j aywgZXZlbiBmb3Igc3RyZWFtZWQKQEAgLTE4NTYsNyArMTg1OSw4IEBAIHBnb3V0cHV0X3N0cmVh bV9hYm9ydChzdHJ1Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCUFzc2VydChyYnR4 bl9pc19zdHJlYW1lZCh0b3B0eG4pKTsKIAogCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgs IHRydWUpOwotCWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4t PnhpZCwgdHhuLT54aWQpOworCWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0 LCB0b3B0eG4tPnhpZCwgdHhuLCBhYm9ydF9sc24sCisJCQkJCQkJCSAgd3JpdGVfYWJvcnRfbHNu KTsKIAlPdXRwdXRQbHVnaW5Xcml0ZShjdHgsIHRydWUpOwogCiAJY2xlYW51cF9yZWxfc3luY19j YWNoZSh0b3B0eG4tPnhpZCwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvd2FpdF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9l dmVudC5jCmluZGV4IGRhNTdhOTMwMzQuLjJlMTQ2ZmUwODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS93YWl0X2V2ZW50LmMKQEAgLTM4OCw2ICszODgsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRf aXBjKFdhaXRFdmVudElQQyB3KQogCQljYXNlIFdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNf UkVJTlNFUlQ6CiAJCQlldmVudF9uYW1lID0gIkhhc2hHcm93QnVja2V0c1JlaW5zZXJ0IjsKIAkJ CWJyZWFrOworCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9XT1JLRVJfU1RBVEVfQ0hB TkdFOgorCQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsQXBwbHlXb3JrZXJTdGF0ZUNoYW5nZSI7CisJ CQlicmVhazsKIAkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBOgogCQkJZXZlbnRf bmFtZSA9ICJMb2dpY2FsU3luY0RhdGEiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwppbmRl eCBhZjRhMWMzMDY4Li5hNDBkZGY4NDdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Yy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKQEAgLTMyMjAsNiAr MzIyMCwxOCBAQCBzdGF0aWMgc3RydWN0IGNvbmZpZ19pbnQgQ29uZmlndXJlTmFtZXNJbnRbXSA9 CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJeworCQl7Im1heF9hcHBseV9iZ3dvcmtlcnNf cGVyX3N1YnNjcmlwdGlvbiIsCisJCQlQR0NfU0lHSFVQLAorCQkJUkVQTElDQVRJT05fU1VCU0NS SUJFUlMsCisJCQlnZXR0ZXh0X25vb3AoIk1heGltdW0gbnVtYmVyIG9mIGFwcGx5IGJhY2tncm91 bmQgd29ya2VycyBwZXIgc3Vic2NyaXB0aW9uLiIpLAorCQkJTlVMTCwKKwkJfSwKKwkJJm1heF9h cHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiwKKwkJMiwgMCwgTUFYX0JBQ0tFTkRTLAor CQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCXsKIAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdD X1NJR0hVUCwgTE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50 IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggYjRiYzA2ZTVmNS4uYWQxODcxMGFmNCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxl CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQpAQCAt MzYwLDYgKzM2MCw3IEBACiAjbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDQJIyB0 YWtlbiBmcm9tIG1heF93b3JrZXJfcHJvY2Vzc2VzCiAJCQkJCSMgKGNoYW5nZSByZXF1aXJlcyBy ZXN0YXJ0KQogI21heF9zeW5jX3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDIJIyB0YWtlbiBm cm9tIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMKKyNtYXhfYXBwbHlfYmd3b3JrZXJz X3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlv bl93b3JrZXJzCiAKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ19kdW1wL3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggZjlj NTFkMWU2Ny4uYjg5NGNjYTkyOSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YworKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NDU3LDcgKzQ0NTcsNyBAQCBn ZXRTdWJzY3JpcHRpb25zKEFyY2hpdmUgKmZvdXQpCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24g Pj0gMTQwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBzLnN1YnN0cmVhbSxc biIpOwogCWVsc2UKLQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgZmFsc2UgQVMgc3Vi c3RyZWFtLFxuIik7CisJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiICdmJyBBUyBzdWJz dHJlYW0sXG4iKTsKIAogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE1MDAwMCkKIAkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksCkBAIC00NTk0LDggKzQ1OTQsMTAgQEAgZHVtcFN1YnNj cmlwdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBTdWJzY3JpcHRpb25JbmZvICpzdWJpbmZvKQog CWlmIChzdHJjbXAoc3ViaW5mby0+c3ViYmluYXJ5LCAidCIpID09IDApCiAJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAiLCBiaW5hcnkgPSB0cnVlIik7CiAKLQlpZiAoc3RyY21wKHN1Ymlu Zm8tPnN1YnN0cmVhbSwgImYiKSAhPSAwKQorCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFt LCAidCIpID09IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBzdHJlYW1pbmcg PSBvbiIpOworCWVsc2UgaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJwIikgPT0gMCkK KwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHN0cmVhbWluZyA9IHBhcmFsbGVsIik7 CiAKIAlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnR3b3BoYXNlc3RhdGUsIHR3b19waGFzZV9kaXNh YmxlZCkgIT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHR3b19waGFzZSA9 IG9uIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5o IGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCBjOWEzMDI2YjI4 Li43MWFkMDNhOTM0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlw dGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTgw LDcgKzgwLDggQEAgQ0FUQUxPRyhwZ19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxh dGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJLSV9ST1cKIAlib29sCQlzdWJiaW5hcnk7CQkv KiBUcnVlIGlmIHRoZSBzdWJzY3JpcHRpb24gd2FudHMgdGhlCiAJCQkJCQkJCSAqIHB1Ymxpc2hl ciB0byBzZW5kIGRhdGEgaW4gYmluYXJ5ICovCiAKLQlib29sCQlzdWJzdHJlYW07CQkvKiBTdHJl YW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworCWNoYXIJCXN1YnN0cmVhbTsJCS8qIFN0 cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuCisJCQkJCQkJCSAqIFNlZSBTVUJTVFJFQU1f eHh4IGNvbnN0YW50cy4gKi8KIAogCWNoYXIJCXN1YnR3b3BoYXNlc3RhdGU7CS8qIFN0cmVhbSB0 d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAKQEAgLTEyNCw3ICsxMjUsOCBAQCB0eXBlZGVmIHN0 cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQllbmFibGVkOwkJLyogSW5kaWNhdGVzIGlmIHRoZSBz dWJzY3JpcHRpb24gaXMgZW5hYmxlZCAqLwogCWJvb2wJCWJpbmFyeTsJCQkvKiBJbmRpY2F0ZXMg aWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyBkYXRhIGluCiAJCQkJCQkJCSAqIGJpbmFyeSBmb3Jt YXQgKi8KLQlib29sCQlzdHJlYW07CQkJLyogQWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRy YW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdHJlYW07CQkJLyogQWxsb3cgc3RyZWFtaW5nIGluLXBy b2dyZXNzIHRyYW5zYWN0aW9ucy4KKwkJCQkJCQkJICogU2VlIFNVQlNUUkVBTV94eHggY29uc3Rh bnRzLiAqLwogCWNoYXIJCXR3b3BoYXNlc3RhdGU7CS8qIEFsbG93IHN0cmVhbWluZyB0d28tcGhh c2UgdHJhbnNhY3Rpb25zICovCiAJYm9vbAkJZGlzYWJsZW9uZXJyOwkvKiBJbmRpY2F0ZXMgaWYg dGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJICogYXV0b21hdGljYWxseSBkaXNh YmxlZCBpZiBhIHdvcmtlciBlcnJvcgpAQCAtMTM3LDYgKzEzOSwyMSBAQCB0eXBlZGVmIHN0cnVj dCBTdWJzY3JpcHRpb24KIAkJCQkJCQkJICogc3BlY2lmaWVkIG9yaWdpbiAqLwogfSBTdWJzY3Jp cHRpb247CiAKKy8qIERpc2FsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMu ICovCisjZGVmaW5lIFNVQlNUUkVBTV9PRkYgJ2YnCisKKy8qCisgKiBTdHJlYW1pbmcgaW4tcHJv Z3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSB3cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kCisg KiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB1cHN0 cmVhbS4KKyAqLworI2RlZmluZSBTVUJTVFJFQU1fT04gJ3QnCisKKy8qCisgKiBTdHJlYW1pbmcg aW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5IHZpYSBhIGJh Y2tncm91bmQKKyAqIHdvcmtlci4KKyAqLworI2RlZmluZSBTVUJTVFJFQU1fUEFSQUxMRUwgJ3An CisKIGV4dGVybiBTdWJzY3JpcHRpb24gKkdldFN1YnNjcmlwdGlvbihPaWQgc3ViaWQsIGJvb2wg bWlzc2luZ19vayk7CiBleHRlcm4gdm9pZCBGcmVlU3Vic2NyaXB0aW9uKFN1YnNjcmlwdGlvbiAq c3ViKTsKIGV4dGVybiB2b2lkIERpc2FibGVTdWJzY3JpcHRpb24oT2lkIHN1YmlkKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgKaW5kZXggZjFlMjgyMWUyNS4uYWM4 ZWY5NDM4MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5j aGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmgKQEAg LTE0LDYgKzE0LDcgQEAKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfbG9naWNhbF9yZXBs aWNhdGlvbl93b3JrZXJzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfc3luY193b3JrZXJz X3Blcl9zdWJzY3JpcHRpb247CitleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9hcHBseV9iZ3dv cmtlcnNfcGVyX3N1YnNjcmlwdGlvbjsKIAogZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlclJlZ2lz dGVyKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcp OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggYi9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAppbmRleCBhNzcxYWI4ZmYzLi5l YjBmZDI0ZmQ4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJv 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 aW9uL2xvZ2ljYWx3b3JrZXIuaAppbmRleCBjZDFiNmU4YWZjLi42YTFhZjdmMTNjIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKKysrIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCkBAIC0xMyw2ICsxMyw3IEBACiAjZGVm aW5lIExPR0lDQUxXT1JLRVJfSAogCiBleHRlcm4gdm9pZCBBcHBseVdvcmtlck1haW4oRGF0dW0g bWFpbl9hcmcpOworZXh0ZXJuIHZvaWQgQXBwbHlCZ3dvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcp OwogCiBleHRlcm4gYm9vbCBJc0xvZ2ljYWxXb3JrZXIodm9pZCk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v b3JpZ2luLmgKaW5kZXggMmQxYjVlNWMyOC4uYzczODliNDBhNyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v b3JpZ2luLmgKQEAgLTUzLDcgKzUzLDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgcmVwbG9yaWdpbl9n ZXRfcHJvZ3Jlc3MoUmVwT3JpZ2luSWQgbm9kZSwgYm9vbCBmbHVzaCk7CiAKIGV4dGVybiB2b2lk IHJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKFhMb2dSZWNQdHIgcmVtb3RlX2NvbW1pdCwKIAkJ CQkJCQkJCSAgIFhMb2dSZWNQdHIgbG9jYWxfY29tbWl0KTsKLWV4dGVybiB2b2lkIHJlcGxvcmln aW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKTsKK2V4dGVybiB2b2lkIHJlcGxvcmln aW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlLCBib29sIG11c3RfYWNxdWlyZSk7CiBl eHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Npb25fcmVzZXQodm9pZCk7CiBleHRlcm4gWExvZ1Jl Y1B0ciByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3Byb2dyZXNzKGJvb2wgZmx1c2gpOwogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggYi9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5kZXggZDEwOWQwYmFlZC4uZDJhODBk NzllNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaApAQCAtMzAxLDYg KzMwMSw3IEBAIHR5cGVkZWYgc3RydWN0IFJlb3JkZXJCdWZmZXJUWE4KIAl7CiAJCVRpbWVzdGFt cFR6IGNvbW1pdF90aW1lOwogCQlUaW1lc3RhbXBUeiBwcmVwYXJlX3RpbWU7CisJCVRpbWVzdGFt cFR6IGFib3J0X3RpbWU7CiAJfQkJCXhhY3RfdGltZTsKIAogCS8qCkBAIC02NDcsOSArNjQ4LDEx IEBAIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGaW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVy ICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQXNzaWdu Q2hpbGQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBUcmFuc2FjdGlvbklkLCBYTG9n UmVjUHRyIGNvbW1pdF9sc24pOwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckNvbW1pdENoaWxk KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgVHJhbnNhY3Rpb25JZCwKIAkJCQkJCQkJ CSBYTG9nUmVjUHRyIGNvbW1pdF9sc24sIFhMb2dSZWNQdHIgZW5kX2xzbik7Ci1leHRlcm4gdm9p ZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9n UmVjUHRyIGxzbik7CitleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZl ciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkgICBUaW1lc3RhbXBU eiBhYm9ydF90aW1lKTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydE9sZChSZW9yZGVy QnVmZmVyICosIFRyYW5zYWN0aW9uSWQgeGlkKTsKLWV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJG b3JnZXQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbik7Citl eHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rp b25JZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJCQkJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWUpOwog ZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckludmFsaWRhdGUoUmVvcmRlckJ1ZmZlciAqLCBUcmFu c2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbik7CiAKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJT ZXRCYXNlU25hcHNob3QoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRy IGxzbiwgc3RydWN0IFNuYXBzaG90RGF0YSAqc25hcCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oCmluZGV4IDkwMTg0NWFiYzIuLmEzNTYwZDQ5MDQgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0xNyw4ICsxNywxMSBAQAog I2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmgiCiAjaW5jbHVkZSAiZGF0YXR5cGUvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAicmVw bGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9maWxlc2V0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1fbXEuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3NobV90b2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIK IAogCkBAIC02MCw2ICs2Myw5IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIKIAkg Ki8KIAlGaWxlU2V0ICAgICpzdHJlYW1fZmlsZXNldDsKIAorCS8qIEluZGljYXRlcyBpZiB0aGlz IHNsb3QgaXMgdXNlZCBmb3IgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJYm9vbAkJ c3Vid29ya2VyOworCiAJLyogU3RhdHMuICovCiAJWExvZ1JlY1B0cglsYXN0X2xzbjsKIAlUaW1l c3RhbXBUeiBsYXN0X3NlbmRfdGltZTsKQEAgLTY4LDggKzc0LDY4IEBAIHR5cGVkZWYgc3RydWN0 IExvZ2ljYWxSZXBXb3JrZXIKIAlUaW1lc3RhbXBUeiByZXBseV90aW1lOwogfSBMb2dpY2FsUmVw V29ya2VyOwogCisvKiBTdHJ1Y3QgZm9yIHNhdmluZyBhbmQgcmVzdG9yaW5nIGFwcGx5IGVycmNv bnRleHQgaW5mb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0IEFwcGx5RXJyb3JDYWxsYmFja0Fy ZworeworCUxvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQ7CS8qIDAgaWYgaW52YWxpZCAqLworCUxv Z2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsOworCisJLyogUmVtb3RlIG5vZGUgaW5mb3JtYXRpb24g Ki8KKwlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAtMSBpZiBpbnZhbGlkICovCisJVHJhbnNhY3Rp b25JZCByZW1vdGVfeGlkOworCVhMb2dSZWNQdHIJZmluaXNoX2xzbjsKKwljaGFyCSAgICpvcmln aW5fbmFtZTsKK30gQXBwbHlFcnJvckNhbGxiYWNrQXJnOworCisvKgorICogU3RhdHVzIG9mIGFw cGx5IGJhY2tncm91bmQgd29ya2VyLgorICovCit0eXBlZGVmIGVudW0gQXBwbHlCZ3dvcmtlclN0 YXR1cworeworCUFQUExZX0JHV09SS0VSX0JVU1kgPSAwLAkJLyogYXNzaWduZWQgdG8gYSB0cmFu c2FjdGlvbiAqLworCUFQUExZX0JHV09SS0VSX0ZJTklTSEVELAkJLyogdHJhbnNhY3Rpb24gaXMg Y29tcGxldGVkICovCisJQVBQTFlfQkdXT1JLRVJfRVhJVAkJCQkvKiBleGl0ICovCit9IEFwcGx5 Qmd3b3JrZXJTdGF0dXM7CisKKy8qCisgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24g YmV0d2VlbiBhcHBseSBtYWluIGFuZCBhcHBseSBiYWNrZ3JvdW5kCisgKiB3b3JrZXJzLgorICov Cit0eXBlZGVmIHN0cnVjdCBBcHBseUJnd29ya2VyU2hhcmVkCit7CisJc2xvY2tfdAltdXRleDsK KworCS8qIFN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gKi8KKwlBcHBseUJnd29y a2VyU3RhdHVzCXN0YXR1czsKKworCS8qIHNlcnZlciB2ZXJzaW9uIG9mIHB1Ymxpc2hlci4gKi8K Kwl1aW50MzIJc2VydmVyX3ZlcnNpb247CisKKwlUcmFuc2FjdGlvbklkCXN0cmVhbV94aWQ7CisJ dWludDMyCW47CS8qIGlkIG9mIGFwcGx5IGJhY2tncm91bmQgd29ya2VyICovCit9IEFwcGx5Qmd3 b3JrZXJTaGFyZWQ7CisKKy8qCisgKiBTdHJ1Y3QgZm9yIG1haW50YWluaW5nIGFuIGFwcGx5IGJh Y2tncm91bmQgd29ya2VyLgorICovCit0eXBlZGVmIHN0cnVjdCBBcHBseUJnd29ya2VyU3RhdGUK K3sKKwlzaG1fbXFfaGFuZGxlCQkJKm1xX2hhbmRsZTsKKwlkc21fc2VnbWVudAkJCQkqZHNtX3Nl ZzsKKwlBcHBseUJnd29ya2VyU2hhcmVkIHZvbGF0aWxlCSpzaGFyZWQ7Cit9IEFwcGx5Qmd3b3Jr ZXJTdGF0ZTsKKwogLyogTWFpbiBtZW1vcnkgY29udGV4dCBmb3IgYXBwbHkgd29ya2VyLiBQZXJt YW5lbnQgZHVyaW5nIHdvcmtlciBsaWZldGltZS4gKi8KIGV4dGVybiBQR0RMTElNUE9SVCBNZW1v cnlDb250ZXh0IEFwcGx5Q29udGV4dDsKK2V4dGVybiBQR0RMTElNUE9SVCBNZW1vcnlDb250ZXh0 IEFwcGx5TWVzc2FnZUNvbnRleHQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCBBcHBseUVycm9yQ2Fs bGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnOworCitleHRlcm4gUEdETExJTVBPUlQg Ym9vbCBNeVN1YnNjcmlwdGlvblZhbGlkOworCitleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUg QXBwbHlCZ3dvcmtlclNoYXJlZCAqTXlQYXJhbGxlbFNoYXJlZDsKKworZXh0ZXJuIFBHRExMSU1Q T1JUIExpc3QgKnN1YnhhY3RsaXN0OwogCiAvKiBsaWJwcXJlY2VpdmVyIGNvbm5lY3Rpb24gKi8K IGV4dGVybiBQR0RMTElNUE9SVCBzdHJ1Y3QgV2FsUmVjZWl2ZXJDb25uICpMb2dSZXBXb3JrZXJX YWxSY3ZDb25uOwpAQCAtNzksMTggKzE0NSwyMiBAQCBleHRlcm4gUEdETExJTVBPUlQgU3Vic2Ny aXB0aW9uICpNeVN1YnNjcmlwdGlvbjsKIGV4dGVybiBQR0RMTElNUE9SVCBMb2dpY2FsUmVwV29y a2VyICpNeUxvZ2ljYWxSZXBXb3JrZXI7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGluX3Jl bW90ZV90cmFuc2FjdGlvbjsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIGluX3N0cmVhbWVkX3Ry YW5zYWN0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIFRyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZDsK IAogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KTsKIGV4dGVy biBMb2dpY2FsUmVwV29ya2VyICpsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lk IHJlbGlkLAogCQkJCQkJCQkJCQkJYm9vbCBvbmx5X3J1bm5pbmcpOwogZXh0ZXJuIExpc3QgKmxv Z2ljYWxyZXBfd29ya2Vyc19maW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpOwotZXh0 ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNv bnN0IGNoYXIgKnN1Ym5hbWUsCi0JCQkJCQkJCQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkKTsKK2V4 dGVybiBib29sIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBj b25zdCBjaGFyICpzdWJuYW1lLAorCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCByZWxpZCwKKwkJ CQkJCQkJCSBkc21faGFuZGxlIHN1Yndvcmtlcl9kc20pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJl cF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBsb2dpY2Fs cmVwX3dvcmtlcl93YWtldXAoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9n aWNhbHJlcF93b3JrZXJfd2FrZXVwX3B0cihMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCiBl eHRlcm4gaW50CWxvZ2ljYWxyZXBfc3luY193b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKK2V4dGVy biBpbnQJbG9naWNhbHJlcF9hcHBseV9iZ3dvcmtlcl9jb3VudChPaWQgc3ViaWQpOwogCiBleHRl cm4gdm9pZCBSZXBsaWNhdGlvbk9yaWdpbk5hbWVGb3JUYWJsZXN5bmMoT2lkIHN1Ym9pZCwgT2lk IHJlbGlkLAogCQkJCQkJCQkJCQkgIGNoYXIgKm9yaWdpbm5hbWUsIGludCBzem9yZ25hbWUpOwpA QCAtMTAzLDEwICsxNzMsMzggQEAgZXh0ZXJuIHZvaWQgcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhY TG9nUmVjUHRyIGN1cnJlbnRfbHNuKTsKIGV4dGVybiB2b2lkIGludmFsaWRhdGVfc3luY2luZ190 YWJsZV9zdGF0ZXMoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwKIAkJCQkJCQkJCQkJdWludDMyIGhh c2h2YWx1ZSk7CiAKK2V4dGVybiB2b2lkIFVwZGF0ZVdvcmtlclN0YXRzKFhMb2dSZWNQdHIgbGFz dF9sc24sIFRpbWVzdGFtcFR6IHNlbmRfdGltZSwKKwkJCQkJCQkgIGJvb2wgcmVwbHkpOworCitl eHRlcm4gdm9pZCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOworCisvKiBGdW5jdGlvbiBm b3IgYXBwbHkgZXJyb3IgY2FsbGJhY2sgKi8KK2V4dGVybiB2b2lkIGFwcGx5X2Vycm9yX2NhbGxi YWNrKHZvaWQgKmFyZyk7CisKK2V4dGVybiB2b2lkIHN1YnNjcmlwdGlvbl9jaGFuZ2VfY2IoRGF0 dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSk7CisKKy8qIEFwcGx5IGJhY2tn cm91bmQgd29ya2VyIHNldHVwIGFuZCBpbnRlcmFjdGlvbnMgKi8KK2V4dGVybiBBcHBseUJnd29y a2VyU3RhdGUgKmFwcGx5X2Jnd29ya2VyX3N0YXJ0KFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVy biBBcHBseUJnd29ya2VyU3RhdGUgKmFwcGx5X2Jnd29ya2VyX2ZpbmQoVHJhbnNhY3Rpb25JZCB4 aWQpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfd2FpdF9mb3IoQXBwbHlCZ3dvcmtlclN0 YXRlICp3c3RhdGUsCisJCQkJCQkJCQlBcHBseUJnd29ya2VyU3RhdHVzIHdhaXRfZm9yX3N0YXR1 cyk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoQXBwbHlCZ3dvcmtlclN0 YXRlICp3c3RhdGUsIFNpemUgbmJ5dGVzLAorCQkJCQkJCQkJIGNvbnN0IHZvaWQgKmRhdGEpOwor ZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfZnJlZShBcHBseUJnd29ya2VyU3RhdGUgKndzdGF0 ZSk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0dXModm9pZCk7CitleHRl cm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9zZXRfc3RhdHVzKEFwcGx5Qmd3b3JrZXJTdGF0dXMgc3Rh dHVzKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQoVHJhbnNh Y3Rpb25JZCBjdXJyZW50X3hpZCk7CisKIHN0YXRpYyBpbmxpbmUgYm9vbAogYW1fdGFibGVzeW5j X3dvcmtlcih2b2lkKQogewogCXJldHVybiBPaWRJc1ZhbGlkKE15TG9naWNhbFJlcFdvcmtlci0+ cmVsaWQpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wKK2FtX2FwcGx5X2Jnd29ya2VyKHZvaWQp Cit7CisJcmV0dXJuIE15TG9naWNhbFJlcFdvcmtlci0+c3Vid29ya2VyOworfQorCiAjZW5kaWYJ CQkJCQkJLyogV09SS0VSX0lOVEVSTkFMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0 aWxzL3dhaXRfZXZlbnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaAppbmRleCBj M2FkZTAxMTIwLi5lMzVmMTk5ZmQ0IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0 X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCkBAIC0xMDUsNiAr MTA1LDcgQEAgdHlwZWRlZiBlbnVtCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19BTExP Q0FURSwKIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0VMRUNULAogCVdBSVRfRVZFTlRf SEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQsCisJV0FJVF9FVkVOVF9MT0dJQ0FMX0FQUExZX1dP UktFUl9TVEFURV9DSEFOR0UsCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfREFUQSwKIAlXQUlU X0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9DSEFOR0UsCiAJV0FJVF9FVkVOVF9NUV9JTlRFUk5B TCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAppbmRleCBlZjBl YmY5NmI5Li40YmU1MzdlYTBiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3N1YnNjcmlwdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3Jp cHRpb24ub3V0CkBAIC0yMTksNyArMjE5LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3Nf dGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVz c190ZXN0c3ViOwogLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4KIENSRUFURSBT VUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2Rv ZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVzdHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0 cmVhbWluZyA9IGZvbyk7Ci1FUlJPUjogIHN0cmVhbWluZyByZXF1aXJlcyBhIEJvb2xlYW4gdmFs dWUKK0VSUk9SOiAgc3RyZWFtaW5nIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciAicGFyYWxs ZWwiCiAtLSBub3cgaXQgd29ya3MKIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IENPTk5FQ1RJT04gJ2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCTElDQVRJT04gdGVz dHB1YiBXSVRIIChjb25uZWN0ID0gZmFsc2UsIHN0cmVhbWluZyA9IHRydWUpOwogV0FSTklORzog IHRhYmxlcyB3ZXJlIG5vdCBzdWJzY3JpYmVkLCB5b3Ugd2lsbCBoYXZlIHRvIHJ1biBBTFRFUiBT VUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04gdG8gc3Vic2NyaWJlIHRoZSB0YWJs ZXMKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMzRhNzZjZWI2MC4uNDEzN2RjNzdiNCAx MDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTExNiw2ICsxMTYsMTAgQEAgQXBwZW5kCiBB cHBlbmRQYXRoCiBBcHBlbmRSZWxJbmZvCiBBcHBlbmRTdGF0ZQorQXBwbHlCZ3dvcmtlckVudHJ5 CitBcHBseUJnd29ya2VyU2hhcmVkCitBcHBseUJnd29ya2VyU3RhdGUKK0FwcGx5Qmd3b3JrZXJT dGF0dXMKIEFwcGx5RXJyb3JDYWxsYmFja0FyZwogQXBwbHlFeGVjdXRpb25EYXRhCiBBcHBseVN1 YlhhY3REYXRhCkBAIC0xNDg1LDYgKzE0ODksNyBAQCBMb2dpY2FsUmVwUmVsSWQKIExvZ2ljYWxS ZXBSZWxNYXBFbnRyeQogTG9naWNhbFJlcFJlbGF0aW9uCiBMb2dpY2FsUmVwUm9sbGJhY2tQcmVw YXJlZFR4bkRhdGEKK0xvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEKIExvZ2ljYWxSZXBUdXBsZURh dGEKIExvZ2ljYWxSZXBUeXAKIExvZ2ljYWxSZXBXb3JrZXIKLS0gCjIuMjMuMC53aW5kb3dzLjEK Cg== --_005_OS3PR01MB62752B29CEC2592E18236A9A9E909OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v19-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v19-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v19-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=70776; creation-date="Fri, 22 Jul 2022 02:54:00 GMT"; modification-date="Fri, 22 Jul 2022 02:56:37 GMT" Content-Transfer-Encoding: base64 RnJvbSBlZjc4NWEzYmI5YmFlZDFhMWY1ODhlNzkwNWRhYzAwMDUwNDQ4YjU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MTkg Mi80XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgMTk5ICsrKyst LS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCB8IDExOSAr KystLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgICAgIHwgMTg4 ICsrKystLS0KIC4uLi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCAgICAgICAgICAgICB8 IDE5NSArKysrLS0tCiAuLi4vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsICAgICAg ICAgfCAxMTAgKysrLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBs ICAgIHwgMzYzICsrKysrKystLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vf c3RyZWFtLnBsICAgICB8IDQ5OCArKysrKysrKysrLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwg MTAzNSBpbnNlcnRpb25zKCspLCA2MzcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxNV9zdHJlYW0ucGwKaW5kZXggNjU2MWIxODlkZS4uMGJkZDIzNDkzNSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDYgKzgsMTE2IEBAIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6 Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBh cmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBj YW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJh bGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIs ICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIElu dGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0Ig bGltaXQuCisJbXkgJGluICA9ICcnOworCW15ICRvdXQgPSAnJzsKKworCW15ICR0aW1lciA9IElQ Qzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0 KTsKKworCW15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz JywgXCRpbiwgXCRvdXQsICR0aW1lciwKKwkJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworCSMgQ2hl Y2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBwYXJhbWV0 ZXIgaXMKKwkjIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0 aGUgREVCVUcxIGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVt cCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9t ZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJ JGluIC49IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCX07CisJJGgtPnB1bXBfbmI7CisKKwlpZiAoJGlz X3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBw bHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7 CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkp IHMoaSk7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDUwMDA7CisJQ09NTUlUOwor CX0pOworCisJJGluIC49IHF7CisJQ09NTUlUOworCVxxCisJfTsKKwkkaC0+ZmluaXNoOyAgICAj IGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQorCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1 bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJ aXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBj b250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisKKwkjIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5h cnkgbW9kZQorCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKworCSMgSW5zZXJ0 LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQu CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2 NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKwor CSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1 YnNjcmliZXIsCisJIyB1cGRhdGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVy IHJldGFpbnMgdGhlIGV4cGVjdGVkCisJIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQg bm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCisJIyBwcm9wZXJseSBhZnRlciBhIHN0 cmVhbWluZyB0cmFuc2FjdGlvbi4KKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsg OTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKKwkpOworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCki KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2 Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2Vk IGRhdGEnKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4g MikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworfQor CiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5p dChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxNDcsMTAgQEAgJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWIn OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0 YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRh cHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBA IC01NCw4MiArMTY4LDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8 MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMg SW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRr QiBsaW1pdC4KLW15ICRpbiAgPSAnJzsKLW15ICRvdXQgPSAnJzsKLQotbXkgJHRpbWVyID0gSVBD OjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQp OwotCi1teSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jlcycs IFwkaW4sIFwkb3V0LCAkdGltZXIsCi0Jb25fZXJyb3Jfc3RvcCA9PiAwKTsKLQotJGluIC49IHF7 Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7Ci19OwotJGgtPnB1bXBfbmI7Ci0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsK LURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiA1MDAwOwotQ09NTUlUOwotfSk7Ci0KLSRp biAuPSBxewotQ09NTUlUOwotXHEKLX07Ci0kaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRo ZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQotCi0kbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMz NHwzMzM0KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwot Ci0jIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5hcnkgbW9kZQotJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAo YmluYXJ5ID0gb24pIik7Ci0KLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93 cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpOwotVVBE QVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwordGVzdF9zdHJlYW1pbmcoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSRyZXN1bHQg PQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLCAnY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxv Y2FsIGRlZmF1bHRzJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24g V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgorKTsKIAotIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29sdW1u cyBvbiB0aGUgc3Vic2NyaWJlciwKLSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNrIHRoYXQg c3Vic2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAotIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5z dXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCi0jIHByb3Blcmx5IGFm dGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFt cHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKLSk7Ci0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4 dCkiKTsKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFs bGVsLCBiaW5hcnkgPSBvZmYpIik7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8g cmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIKLSk7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCi0JJ2NoZWNr IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0YScpOwordGVzdF9zdHJl YW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAK ICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKaW5kZXggZjI3ZjE2OTRm Mi4uNDU0MjlkZGRiYSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0 cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1f c3VieGFjdC5wbApAQCAtOCw2ICs4LDcyIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5j YXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAi c3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGgg Zm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1 YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIENoZWNrIHRoYXQgYSBiYWNr Z3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCisJIyBzcGVj aWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cg bWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2 ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgSW5zZXJ0LCB1cGRh dGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KCAgICAzLCAgNTAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwgIDEwMDApIHMoaSk7CisJVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAw MSwgIDE1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ U0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7CisJVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwg MjUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01N SVQ7CisJfSk7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2Rl X3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5f bWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJl c3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK KwlpcygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2NyksCisJCSdjaGVjayBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250 YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxp c2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9k ZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcs NiArMTAzLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNS RUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBw bmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFU RSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBw bGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1p bmcgPSBvbikiCiApOwpAQCAtNTQsNDEgKzEyNCwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMo JHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vi c2NyaWJlcicpOwogCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8g ZXhjZWVkIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdy ZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKCAgICAzLCAgNTAwKSBzKGkpOwotVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAgMTAw MCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQg czI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEwMDEsICAxNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7Ci1V UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHM0OwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygyMDAxLCAyNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK LUNPTU1JVDsKLX0pOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJz Y3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkg RlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTY2N3wxNjY3fDE2NjcpLAotCSdjaGVj ayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0 cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwn CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBw Z19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFO RCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5n ID0gcGFyYWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9u IFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1p bmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBs eSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3RyZWFt aW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOworCiAk bm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3RyZWFtX2RkbC5wbCBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCmluZGV4IDBiY2U2M2I3MTYuLjUyZGZl ZjQ3ODAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRs LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCkBAIC04 LDYgKzgsMTExIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVT UUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRo ZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBw YXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1p bmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWlu ZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAk aXNfcGFyYWxsZWwpID0gQF87CisKKwkjIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rp b24gd2l0aCBEREwgYW5kIERNTAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9z dGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMywgbWQ1 KDM6OnRleHQpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOworCVNB VkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDQsIG1kNSg0Ojp0ZXh0 KSwgLTQpOworCUNPTU1JVDsKKwl9KTsKKworCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29y a2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMKKwkjIHNwZWNpZmllZCBhcyAi cGFyYWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcwor CSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4K KwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkk bm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5z YWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJ J3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LCAxMDAwKSBzKGkpOworCUFM VEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisKKwlpZiAo JGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xb QXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVu ZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5n Iik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIGEgc21hbGwgKG5vbi1z dHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFZBTFVFUyAoMjAwMSwgbWQ1KDIwMDE6OnRleHQpLCAtMjAwMSwgMioyMDAxKTsKKwlBTFRF UiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDIsIG1kNSgyMDAyOjp0ZXh0KSwgLTIwMDIsIDIq MjAwMiwgLTMqMjAwMik7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkKSwgY291bnQoZSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDIw MDJ8MTk5OXwxMDAyfDEpLAorCQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIg aW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0 cycKKwkpOworCisJIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5k IERNTC4gT25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCisJIyBhZnRlciBETUwgdG8gZW5zdXJl IHRoYXQgd2UgaW52YWxpZGF0ZSB0aGUgc2NoZW1hIHNlbnQgZm9yIHRlc3RfdGFiIHNvIHRoYXQK KwkjIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRoZSBzY2hlbWEgYWdhaW4uCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMq aSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVz dF90YWIgQUREIENPTFVNTiBmIElOVDsKKwlDT01NSVQ7CisJfSk7CisKKwkjIEEgc21hbGwgdHJh bnNhY3Rpb24gdGhhdCB3b24ndCBnZXQgc3RyZWFtZWQuIFRoaXMgaXMganVzdCB0byBlbnN1cmUg dGhhdCB3ZQorCSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJlZmxlY3QgdGhlIGxhc3QgY29s dW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmksIDQqaSBGUk9NIGdlbmVyYXRlX3Nl cmllcyg1MDAxLDUwMDUpIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJPTSB0ZXN0X3RhYiIKKwkpOworCWlzKCRy ZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90aCBzdHJlYW1pbmcgYW5kIG5vbi1zdHJlYW1pbmcgdHJh bnNhY3Rpb25zJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIChhID4gMik7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYywgRFJP UCBDT0xVTU4gZCwgRFJPUCBDT0xVTU4gZSwgRFJPUCBDT0xVTU4gZjsKKwl9KTsKKwkkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJs aXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFt aW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxNDIsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRB QkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJ T04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNB VElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC01NCw3NiArMTYzLDI1 IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDB8MCksICdjaGVjayBpbml0 aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgYSBzbWFsbCAobm9uLXN0 cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBW QUxVRVMgKDMsIG1kNSgzOjp0ZXh0KSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1O IGMgSU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg0LCBt ZDUoNDo6dGV4dCksIC00KTsKLUNPTU1JVDsKLX0pOwotCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJh bnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNSwgMTAwMCkgcyhpKTsKLUFMVEVS IFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEwMDEsIDIwMDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotIyBhIHNtYWxsIChu b24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKLSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFZBTFVFUyAoMjAwMSwgbWQ1KDIwMDE6OnRleHQpLCAtMjAwMSwgMioyMDAxKTsKLUFMVEVS IFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDIsIG1kNSgyMDAyOjp0ZXh0KSwgLTIwMDIsIDIqMjAw MiwgLTMqMjAwMik7Ci1DT01NSVQ7Ci19KTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAyfDE5 OTl8MTAwMnwxKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3Ry ZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFt aW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9u YW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0jIEEgbGFy Z2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERE TCBpcyBwZXJmb3JtZWQKLSMgYWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUg dGhlIHNjaGVtYSBzZW50IGZvciB0ZXN0X3RhYiBzbyB0aGF0Ci0jIHRoZSBuZXh0IHRyYW5zYWN0 aW9uIGhhcyB0byBzZW5kIHRoZSBzY2hlbWEgYWdhaW4uCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIw MDMsNTAwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZiBJTlQ7Ci1D T01NSVQ7Ci19KTsKLQotIyBBIHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3QgZ2V0IHN0cmVh bWVkLiBUaGlzIGlzIGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UKLSMgc2VuZCB0aGUgc2NoZW1hIGFn YWluIHRvIHJlZmxlY3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0 LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMq aSwgNCppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKLUNPTU1JVDsKLX0p OworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlND UklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKIAotJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKyRub2RlX3B1Ymxpc2hlci0+cG9s bF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBw Z19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFO RCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGls ZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElP TiI7CiAKLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpLCBjb3Vu dChmKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg1MDA1fDUwMDJ8NDAwNXwzMDA0 fDUpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90aCBzdHJl YW1pbmcgYW5kIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zJwotKTsKK3Rlc3Rfc3RyZWFtaW5n KCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAkbm9k ZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCmluZGV4IDcx NTU0NDJlNzYuLjY4ZjBlNGIwZDEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKQEAgLTgsNiArOCwxMTMgQEAgdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2Ug VGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdo aWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBj b2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5n PXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxp c2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKwor CSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBw YXJhbWV0ZXIgaXMKKwkjIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLiAgV2UgaGF2ZSB0byBsb29r IGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJp bHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJ JG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9n X21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJ fQorCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJP TExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxewor CUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo NTAxLDEwMDApIHMoaSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkp OworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKKwlST0xMQkFDSyBU TyBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDIwMDEsMjUwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDI1MDEsMzAwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDAp IHMoaSk7CisJU0FWRVBPSU5UIHM1OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzUwMSw0MDAwKSBzKGkpOworCUNPTU1J VDsKKwl9KTsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9t ZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwlteSAkcmVz dWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEo MjAwMHwwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9u IHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkp OworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNl aXZpbmcgb3V0IG9mIG9yZGVyCisJIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDQwMDEsNDUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDU1MDApIHMo aSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOworCVNBVkVQT0lO VCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDcwMDEsNzUwMCkgcyhpKTsKKwlSRUxFQVNFIHMyOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo ODAwMSw4NTAwKSBzKGkpOworCVJPTExCQUNLIFRPIHMxOworCUNPTU1JVDsKKwl9KTsKKworCSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkkcmVzdWx0ID0K KwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjUwMHww KSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNj cmliZXInKTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmli ZXIgcmVjZWl2aW5nIHJvbGxiYWNrCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7CisJU0FWRVBP SU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoOTAwMSw5NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDk1MDEsMTAwMDApIHMoaSk7CisJUk9MTEJBQ0s7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayBy b2xsYmFjayB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUg dGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQog bXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJs aXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dp Y2FsJyk7CkBAIC0zNiw2ICsxNDMsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFi Iik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNo ZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHVi IFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBAIC01Myw4MSArMTY0LDI1IEBAIG15ICRyZXN1 bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRy ZXN1bHQsIHFxKDJ8MCksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3Jp YmVyJyk7CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFu ZCBST0xMQkFDS3MKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7 Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUw MSwxMDAwKSBzKGkpOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDApIHMoaSk7Ci1T QVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKLVJPTExCQUNLIFRPIHMyOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygyMDAxLDI1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjUwMSwz MDAwKSBzKGkpOwotU0FWRVBPSU5UIHM0OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7Ci1TQVZF UE9JTlQgczU7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDM1MDEsNDAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwordGVzdF9zdHJlYW1pbmco JG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSRyZXN1 bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAw fDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJz Y3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBt b2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitt eSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VM RUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9 ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVy Ci0jIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7Ci1TQVZF UE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNjAwMSw2NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDApIHMo aSk7Ci1SRUxFQVNFIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBz MTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKIAotJHJl c3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1 MDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1 YnNjcmliZXInKTsKLQotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2Ny aWJlciByZWNlaXZpbmcgcm9sbGJhY2sKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdw b3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODUwMSw5MDAwKSBzKGkpOwotU0FWRVBPSU5U IHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3Nlcmllcyg5MDAxLDk1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1 MDEsMTAwMDApIHMoaSk7Ci1ST0xMQkFDSzsKLX0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1 ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0 YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0 YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdh aXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsK IAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3Vs dCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8 MCksICdjaGVjayByb2xsYmFjayB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEp OwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9h Ym9ydC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxf YWJvcnQucGwKaW5kZXggZGJkMGZjYTRkMS4uYjI3NjA2MzcyMSAxMDA2NDQKLS0tIGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAorKysgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCkBA IC05LDYgKzksNjkgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwg dGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisj IHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVh bWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFt aW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs ICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2Vy IHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMKKwkjIHNwZWNpZmllZCBhcyAicGFy YWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcworCSMg YWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlp ZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9k ZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0 aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDApIHMoaSk7CisJ QUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKKwlTQVZFUE9JTlQgczE7CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENP TFVNTiBkIElOVDsKKwlTQVZFUE9JTlQgczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1MDAp IHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKKwlTQVZFUE9J TlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWks IDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7CisJQUxURVIg VEFCTEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYzsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDUwMSwxMDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCWlmICgkaXNfcGFyYWxsZWwp CisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xk K1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVf c3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRl c3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMTAwMHw1MDApLAorCQknY2hlY2sgcm9sbGJhY2sg dG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29sdW1u cyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0 YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCURFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgRFJP UCBDT0xVTU4gYzsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOworfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVy ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1 Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsx MDAsMTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRF IFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1l ID0gJ3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0 IHVzaW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNV QlNDUklQVElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNh dGlvbl9uYW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9 IG9uKSIKICk7CkBAIC01NCwzNSArMTIxLDI2IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MCksICdj aGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgbGFyZ2Ug KHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo Myw1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOwotU0FW RVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwg LWkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0 X3RhYiBBREQgQ09MVU1OIGQgSU5UOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3Nlcmllcygx MDAxLDE1MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOwot U0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7Ci1B TFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDUwMSwxMDAwKSBzKGkpOwotQ09NTUlUOwotfSk7Cit0ZXN0X3N0cmVhbWluZygkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKLQknY2hl Y2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQg ZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxs ZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9 ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUn IEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFt aW5nID0gcGFyYWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0 aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJl YW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBh cHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CisKK3Rlc3Rfc3Ry ZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwor CiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwogCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCBi L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCmluZGV4IDdh Nzk3ZjM3YmEuLjBhNDE1MmQzYmUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAy Ml90d29waGFzZV9jYXNjYWRlLnBsCkBAIC0xMSw2ICsxMSwyMDggQEAgdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6 TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFy ZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIHBhcmFtZXRlcgorIyBzbyB0aGUgc2FtZSBjb2RlIGNh biBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVs CisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX0EsICRub2RlX0Is ICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICRzdHJlYW1pbmdfbW9kZSkgPQorCSAg QF87CisKKwlteSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs ICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKwlt eSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VM RUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFt ZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKworCSMgU2V0dXAg bG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1pbmcgbW9kZQorCisJJG5vZGVfQi0+c2FmZV9wc3Fs KAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IKKwkJU0VU IChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpOyIpOworCSRub2RlX0MtPnNhZmVfcHNxbCgK KwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9DCisJCVNFVCAo c3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKSIpOworCisJIyBXYWl0IGZvciBzdWJzY3JpYmVy cyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKworCSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwo CisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0IgRlJPTSBwZ19zdGF0 X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGlu ZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJJG5vZGVfQi0+cG9sbF9xdWVyeV91bnRpbCgKKwkJ J3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVw bGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3Rh dGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZv ciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJIyAxLiBEYXRhIGlzIHN0 cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFy ZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihz KSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor CSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBv cHRwYXJhbWV0ZXJpb24gaXMKKwkjIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLiAgV2UgaGF2ZSB0 byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVt cG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJHN0cmVhbWluZ19tb2Rl IGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9CLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfQi0+cmVsb2FkOwor CisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNz YWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9DLT5yZWxvYWQ7CisJfQorCisJIyBJbnNlcnQsIHVw ZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkj IFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7 CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJl ZF90YWInO30pOworCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxsZWwnKQorCXsKKwkJ JG5vZGVfQi0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7 CisJCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNz YWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfQi0+cmVsb2FkOworCisJCSRub2RlX0MtPndhaXRf Zm9yX2xvZyhxci9cW0FwcGx5IEJHVyAjXGQrXF0gc3RhcnRlZC8sIDApOworCQkkbm9kZV9DLT5h cHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5n Iik7CisJCSRub2RlX0MtPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisK KwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy KHMpCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQs IHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJl c3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIDJQQyBDT01NSVQK Kwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9w cmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9C KTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQg PSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgz MzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBv biBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJ KTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMo JHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2 ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2Fs IGRlZmF1bHRzJworCSk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRl ZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwor CWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKwor CSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgd2l0 aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQuCisJIyAwLiBDbGVhbnVwIGZyb20gcHJl dmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dzLgorCSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJv dy4KKwkjIDIuIFJlY29yZCBhIFNBVkVQT0lOVC4KKwkjIDMuIERhdGEgaXMgc3RyZWFtZWQgdXNp bmcgMlBDLgorCSMgNC4gRG8gcm9sbGJhY2sgdG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJl YW1lZCBpbnNlcnRzLgorCSMgNS4gVGhlbiBDT01NSVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0 IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBpcyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3Mg KD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVwIDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAo ZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyAyUEMgUFJFUEFS RSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVAorCSRub2RlX0EtPnNhZmVfcHNx bCgKKwkJJ3Bvc3RncmVzJywgIgorCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFM VUVTICg5OTk5LCAnZm9vYmFyJyk7CisJCVNBVkVQT0lOVCBzcF9pbm5lcjsKKwkJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ CVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAn b3V0ZXInOworCQkiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7 CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgY2hlY2sgdGhl IHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0ID0K KwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlv biBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0Mt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICdvdXRlcic7Iik7CisKKwkkbm9kZV9BLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBv biBzdWJzY3JpYmVyCisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7CisJ JHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAn dHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIGNoZWNrIGluc2Vy dHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJlcihzKS4KKwkjIEFsbCB0aGUgc3RyZWFtZWQgZGF0 YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNrLgorCSMgKDk5 OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0dGVkLgorCSRyZXN1bHQgPSAkbm9kZV9CLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdo ZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVk IGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsK KwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNj cmliZXIgQicpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlp cygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmli ZXIgQycpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jv d3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworCisJIyBDbGVhbnVw IHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKK30K KwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTZXR1cCBhIGNhc2NhZGUgb2Yg cHViL3N1YiBub2Rlcy4KICMgbm9kZV9BIC0+IG5vZGVfQiAtPiBub2RlX0MKQEAgLTI2MCwxNjAg KzQ2MiwxNSBAQCBpcygkcmVzdWx0LCBxcSgyMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2Vu dCBvbiBzdWJzY3JpYmVyIEMnKTsKICMgMlBDICsgU1RSRUFNSU5HIFRFU1RTCiAjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLQogCi1teSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi KTsKLW15ICRvbGRwaWRfQyA9ICRub2RlX0ItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0J U0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9u YW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOwotCi0jIFNldHVw IGxvZ2ljYWwgcmVwbGljYXRpb24gKHN0cmVhbWluZyA9IG9uKQotCi0kbm9kZV9CLT5zYWZlX3Bz cWwoCi0JJ3Bvc3RncmVzJywgIgotCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IKLQlTRVQg KHN0cmVhbWluZyA9IG9uKTsiKTsKLSRub2RlX0MtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAi Ci0JQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQwotCVNFVCAoc3RyZWFtaW5nID0gb24pIik7 Ci0KLSMgV2FpdCBmb3Igc3Vic2NyaWJlcnMgdG8gZmluaXNoIGluaXRpYWxpemF0aW9uCi0KLSRu b2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0g JG9sZHBpZF9CIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25h bWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRp bWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKLSRub2RlX0ItPnBv bGxfcXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9D IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFw cG5hbWVfQycgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3 aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKLQotIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAx LiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNv bW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vi c2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwotCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVk IHRoZSA2NGtCIGxpbWl0LgotIyBUaGVuIDJQQyBQUkVQQVJFCi0kbm9kZV9BLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBE QVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAn dGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29u JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdvbicpOwogCi0j IGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMp Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVw YXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQot JG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiB3YXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBj b2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCi0pOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVf cHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0J J1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5k IGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKLSk7Ci0KLSMgY2hlY2sgdGhlIHRy YW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAk bm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21t aXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK LWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXIgQycpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBS RVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQuCi0jIDAuIENsZWFudXAg ZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcgb25seSAyIHJvd3MuCi0jIDEuIEluc2VydCBvbmUg bW9yZSByb3cuCi0jIDIuIFJlY29yZCBhIFNBVkVQT0lOVC4KLSMgMy4gRGF0YSBpcyBzdHJlYW1l ZCB1c2luZyAyUEMuCi0jIDQuIERvIHJvbGxiYWNrIHRvIFNBVkVQT0lOVCBwcmlvciB0byB0aGUg c3RyZWFtZWQgaW5zZXJ0cy4KLSMgNS4gVGhlbiBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVj dCBkYXRhIGFmdGVyIHRoZSBTQVZFUE9JTlQgaXMgYWJvcnRlZCBsZWF2aW5nIG9ubHkgMyByb3dz ICg9IDIgb3JpZ2luYWwgKyAxIGZyb20gc3RlcCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChk ZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyAyUEMgUFJFUEFSRSB3 aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVAotJG5vZGVfQS0+c2FmZV9wc3FsKAot CSdwb3N0Z3JlcycsICIKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5 OTksICdmb29iYXInKTsKLQlTQVZFUE9JTlQgc3BfaW5uZXI7Ci0JSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBz KGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVJPTExCQUNLIFRP IFNBVkVQT0lOVCBzcF9pbm5lcjsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICdvdXRlcic7Ci0JIik7 Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0 ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFx KDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBD IENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQg J291dGVyJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRu b2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5z YWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPQotICAkbm9kZV9C LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVk X3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBz dWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyBj aGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlIGF0IHN1YnNjcmliZXIocykuCi0jIEFsbCB0aGUgc3Ry ZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNr LgotIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3VsZCBiZSBjb21taXR0ZWQuCi0kcmVzdWx0ID0gJG5v ZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21t aXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQi0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsK LWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2Ny aWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRy ZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBD Jyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0 ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCit0ZXN0X3N0cmVhbWluZygk bm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAncGFyYWxs ZWwnKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBjaGVjayBhbGwgdGhl IGNsZWFudXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFz ZV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFt LnBsCmluZGV4IGQ4NDc1ZDI1YTQuLmI4OTQxNGFiNzQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAtOCw2ICs4LDI2NiBAQCB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVz ZSBUZXN0OjpNb3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMg d2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1l IGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1p bmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVi bGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOwor CisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAv IENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNh Y3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgYWxs IGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4K KwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIENoZWNrIHRoYXQgYSBiYWNr Z3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCisJIyBzcGVj aWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cg bWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2 ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgY2hlY2sgdGhhdCAy UEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBk ZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9k KGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ CVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCWlmICgkaXNf cGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvXFtBcHBs eSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2Nv bmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsK KwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRub2RlX3B1Ymxpc2hlci0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMg aW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCW15ICRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21t aXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlU IFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlz IGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0 KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIs IGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3Ry YW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJFUEFS RUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBs aWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4K KwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkjIEV4cGVjdCBkYXRhIHJvbGxzIGJh Y2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCisJIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiBy b3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBU aGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2 NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBx eworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIg U0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFy ZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24g c3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlz KCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicp OworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVk X3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcgor CSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK KwlpcygkcmVzdWx0LCBxcSgyfDJ8MiksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9s bGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzJworCSk7CisKKwkkcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwg J3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworCSMgQ2hlY2sgdGhhdCAyUEMgQ09NTUlUIFBSRVBBUkVEIGlz IGRlY29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4KKwkjIDEuIGluc2VydCwgdXBkYXRl IGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSMgMi4g VGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0 ZWQuCisJIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQgdGhlIHBlbmRpbmcgdHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkLgorCSMKKwkjIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVk IG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgorCSMgTm90ZTogYm90aCBwdWJs aXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4KKwkjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00g dGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0 X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlhdGUn KTsKKwkkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCisJJG5vZGVfcHVibGlz aGVyLT5zdGFydDsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworCSMgY29tbWl0IHBvc3Qg dGhlIHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki Q09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisJJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgaW5zZXJ0cyBhcmUgdmlz aWJsZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVk IGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBj b250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBST0xMQkFD SyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2gg YXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNp bmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBkb25lIHdoaWNoIGlzIGFmdGVy IHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgorCSMKKwkj IEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgMyByb3dzIG9uIHRo ZSBzdWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KKwkjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhj ZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7 Iik7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBl eGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAn dGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJl ZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBz dWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3ZSBhcmUg b3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0cmFuc2Fj dGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZv ciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdmb29iYXIn KSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBh cmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJl ciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQQyBzdGlsbCB3YXMg cmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8MyksCisJCSdjaGVjayB0aGUgb3V0c2lk ZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKwkkcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJP TSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9u IGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlU IFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBh cmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2lu ZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIg dGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgorCSMKKwkjIEV4 cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAo dGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3 aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBUaGVuIGlu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlC RUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIg PSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFi Jzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2Ny aWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1 bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJ IyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQ QyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMg cm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmFyZSBwcmlt YXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJTlNF UlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKKworCSMgMlBDIHRy YW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0 LCBxcSgzMzM1fDMzMzV8MzMzNSksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2VsbCBh cyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJh IGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlv biBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRh dGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog IyBTZXR1cAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNDgsNiArMzA4LDEw IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJM SUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0 YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2lu ZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwog JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsICIKIAlDUkVBVEUgU1VC U0NSSVBUSU9OIHRhcF9zdWIKQEAgLTcwLDIzNiArMzM0LDMwIEBAIG15ICR0d29waGFzZV9xdWVy eSA9CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICR0d29w aGFzZV9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2Ny aWJlciB0byBlbmFibGUgdHdvcGhhc2UiOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCiAjIENoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIKLSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hl Y2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFS RUQuCi0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCi0jIDIuIFRo ZW4gZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRl ZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KLSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKLQotIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vi c2NyaWJlcgotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2Vl ZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFy ZWRfdGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1 YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVz dWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQot IyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIp OwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNo ZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3Vs dCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyLCBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJwotKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVz dWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0K LSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIFJP TExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdo aWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQg dXNpbmcgMlBDLgotIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGRhdGEg cm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cy4KLSMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBm b3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMg VGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUg NjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7 Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQg YiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hF UkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFi Jzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQot IyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmli ZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBx cSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyAyUEMg dHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDJ8 MnwyKSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9u bHkgdGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVk X3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9u IHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBDaGVj ayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBwcm9wZXJseSBvbiBjcmFzaCBy ZXN0YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4 Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgMi4gVGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhl IDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jIDMuIEFmdGVyIHNlcnZlcnMgYXJlIHJl c3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jCi0jIEV4cGVj dCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29t bWl0LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBkbyBjcmFzaC9yZXN0 YXJ0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0kbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkg cyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAw OwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRS QU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3N1YnNjcmliZXItPnN0 b3AoJ2ltbWVkaWF0ZScpOwotJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKLQot JG5vZGVfcHVibGlzaGVyLT5zdGFydDsKLSRub2RlX3N1YnNjcmliZXItPnN0YXJ0OwotCi0jIGNv bW1pdCBwb3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLSRub2RlX3B1 Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit0ZXN0X3N0cmVhbWluZygkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBjaGVjayBp bnNlcnRzIGFyZSB2aXNpYmxlCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93 cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJh IGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdf c3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQg c3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBS RVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSBy ZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBD LgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBS RVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IHRo ZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSAzIHJvd3Mgb24gdGhlIHN1YnNjcmli ZXIKLSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSkuCi0jIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93 cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIFRoZW4gaW5z ZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGlt aXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lO OwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUo YikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChh LDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0K LSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0 cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMgSW5zZXJ0IGEgZGlm ZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rpb24p Ci0jIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1h a2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmF0ZSBwcmltYXJ5IGtleQotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5TRVJUIElOVE8gdGVzdF90YWIg VkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7Ci0KLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJv cnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiUk9MTEJBQ0sg UFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFi b3J0ZWQgb24gc3Vic2NyaWJlciwKLSMgYnV0IHRoZSBleHRyYSBJTlNFUlQgb3V0c2lkZSBvZiB0 aGUgMlBDIHN0aWxsIHdhcyByZXBsaWNhdGVkCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDN8M3wzKSwgJ2NoZWNr IHRoZSBvdXRzaWRlIGluc2VydCB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKLQotJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJh bnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUg Q09NTUlUIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdo aWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMgc3RyZWFtZWQg dXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0 ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4 cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVyCi0jICh0 aGUgMzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxs IGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVw ZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0 aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQg cmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90 ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJl IHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMg KDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQK LSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNPTU1JVCBQUkVQQVJF RCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCki KTsKIAotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVy Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK LWlzKCRyZXN1bHQsIHFxKDMzMzV8MzMzNXwzMzM1KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMg KGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQpIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIs IGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOworJG5vZGVfcHVi bGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9s ZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICck YXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGlt ZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcg U1VCU0NSSVBUSU9OIjsKIAotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK LWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXInKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwg JGFwcG5hbWUsIDEpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNr IGFsbCB0aGUgY2xlYW51cAotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_005_OS3PR01MB62752B29CEC2592E18236A9A9E909OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v19-0003-Add-some-checks-before-using-apply-background-wo.patch" Content-Description: v19-0003-Add-some-checks-before-using-apply-background-wo.patch Content-Disposition: attachment; filename="v19-0003-Add-some-checks-before-using-apply-background-wo.patch"; size=38751; creation-date="Fri, 22 Jul 2022 02:54:00 GMT"; modification-date="Fri, 22 Jul 2022 02:56:38 GMT" Content-Transfer-Encoding: base64 RnJvbSAxY2IxOWFkNTI1ZmM2OTAzZjliNTU1NjhjMTYyNTRkY2EzYzY3MzZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog VHVlLCAxNCBKdW4gMjAyMiAxMToyMzo1MiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE5IDMvNF0g QWRkIHNvbWUgY2hlY2tzIGJlZm9yZSB1c2luZyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcgogdG8g YXBwbHkgY2hhbmdlcy4KCnN0cmVhbWluZz1wYXJhbGxlbCBtb2RlIGhhcyB0d28gcmVxdWlyZW1l bnRzOgoxKSBUaGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgcmVsYXRpb24gb24gdGhlIHN1YnNjcmli ZXItc2lkZSBzaG91bGQgYWxzbyBiZSB0aGUKdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVy LXNpZGU7CjIpIFRoZXJlIGNhbm5vdCBiZSBhbnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMgdXNl ZCBieSB0aGUgc3Vic2NyaWJlci1zaWRlCnJlcGxpY2F0ZWQgdGFibGUuIExvb2sgZm9yIGZ1bmN0 aW9ucyBpbiB0aGUgZm9sbG93aW5nIHBsYWNlczoKKiBhLiBUcmlnZ2VyIGZ1bmN0aW9ucwoqIGIu IENvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zIGFuZCBkb21haW4gY29uc3RyYWludHMK KiBjLiBDb25zdHJhaW50IGV4cHJlc3Npb25zCiogZC4gRm9yZWlnbiBrZXlzCi0tLQogZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgIHwgICA0ICsKIC4uLi9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYyAgICAgICB8ICA0NCArKwogc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAgICAgIHwgIDg4ICsrKy0KIHNyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyAgICB8IDIwMSArKysrKysrKysKIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgICB8ICAgMSArCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAgMjMgKy0KIHNyYy9i YWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgICAgICAgICAgICB8ICAxNyArCiBzcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggICAgIHwgIDE1ICsKIHNyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91 dGlscy90eXBjYWNoZS5oICAgICAgICAgICAgICAgICAgfCAgIDIgKwogLi4uL3N1YnNjcmlwdGlv bi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsICAgIHwgICA2ICsKIC4uLi9zdWJzY3JpcHRpb24v dC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsICAgICB8IDM4MCArKysrKysrKysrKysrKysrKysKIHNy Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiAxNCBm aWxlcyBjaGFuZ2VkLCA3NzUgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBs CgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwg Yi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCBiMDhlNGI1 NTgwLi44MzI4OTk1NzBmIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJz Y3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24u c2dtbApAQCAtMjQwLDYgKzI0MCwxMCBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAg ICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBl bnMgd2hlbgogICAgICAgICAgIGFwcGx5aW5nIGNoYW5nZXMgaW4gYSBiYWNrZ3JvdW5kIHdvcmtl ciwgdGhlIGZpbmlzaCBMU04gb2YgdGhlCiAgICAgICAgICAgcmVtb3RlIHRyYW5zYWN0aW9uIG1p Z2h0IG5vdCBiZSByZXBvcnRlZCBpbiB0aGUgc2VydmVyIGxvZy4KKyAgICAgICAgICA8bGl0ZXJh bD5wYXJhbGxlbDwvbGl0ZXJhbD4gbW9kZSBoYXMgdHdvIHJlcXVpcmVtZW50czogMSkgdGhlIHVu aXF1ZQorICAgICAgICAgIGNvbHVtbiBpbiB0aGUgcmVsYXRpb24gb24gdGhlIHN1YnNjcmliZXIt c2lkZSBzaG91bGQgYWxzbyBiZSB0aGUKKyAgICAgICAgICB1bmlxdWUgY29sdW1uIG9uIHRoZSBw dWJsaXNoZXItc2lkZTsgMikgdGhlcmUgY2Fubm90IGJlIGFueQorICAgICAgICAgIG5vbi1pbW11 dGFibGUgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZSByZXBsaWNhdGVkIHRh YmxlLgogICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFy bGlzdGVudHJ5PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9h cHBseWJnd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3 b3JrZXIuYwppbmRleCBhYTIyMjQ5MGEwLi44OWM3MTJmNzg1IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYwpAQCAtODAwLDMgKzgwMCw0NyBA QCBhcHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRkKFRyYW5zYWN0aW9uSWQgY3VycmVudF94 aWQpCiAJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCX0KIH0KKworLyoKKyAqIENo ZWNrIGlmIGNoYW5nZXMgb24gdGhpcyByZWxhdGlvbiBjYW4gYmUgYXBwbGllZCBieSBhbiBhcHBs eSBiYWNrZ3JvdW5kCisgKiB3b3JrZXIuCisgKgorICogQWx0aG91Z2ggdGhlIGNvbW1pdCBvcmRl ciBpcyBtYWludGFpbmVkIG9ubHkgYWxsb3dpbmcgb25lIHByb2Nlc3MgdG8gY29tbWl0CisgKiBh dCBhIHRpbWUsIHRoZSBhY2Nlc3Mgb3JkZXIgdG8gdGhlIHJlbGF0aW9uIGhhcyBjaGFuZ2VkLiBU aGlzIGNvdWxkIGNhdXNlCisgKiB1bmV4cGVjdGVkIHByb2JsZW1zIGlmIHRoZSB1bmlxdWUgY29s dW1uIG9uIHRoZSByZXBsaWNhdGVkIHRhYmxlIGlzCisgKiBpbmNvbnNpc3RlbnQgd2l0aCB0aGUg cHVibGlzaGVyLXNpZGUgb3IgY29udGFpbnMgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMKKyAqIHdo ZW4gYXBwbHlpbmcgdHJhbnNhY3Rpb25zIGluIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4K KyAqLwordm9pZAorYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2soTG9naWNhbFJlcFJlbE1h cEVudHJ5ICpyZWwpCit7CisJLyogU2tpcCBjaGVjayBpZiBub3QgYW4gYXBwbHkgYmFja2dyb3Vu ZCB3b3JrZXIuICovCisJaWYgKCFhbV9hcHBseV9iZ3dvcmtlcigpKQorCQlyZXR1cm47CisKKwkv KgorCSAqIFBhcnRpdGlvbiB0YWJsZSBjaGVja3MgYXJlIGRvbmUgbGF0ZXIgaW4gZnVuY3Rpb24K KwkgKiBhcHBseV9oYW5kbGVfdHVwbGVfcm91dGluZy4KKwkgKi8KKwlpZiAocmVsLT5sb2NhbHJl bC0+cmRfcmVsLT5yZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJCXJldHVy bjsKKworCS8qCisJICogUmV0dXJuIGlmIGNoYW5nZXMgb24gdGhpcyByZWxhdGlvbiBjYW4gYmUg YXBwbGllZCBieSBhbiBhcHBseSBiYWNrZ3JvdW5kCisJICogd29ya2VyLgorCSAqLworCWlmIChy ZWwtPnBhcmFsbGVsX2FwcGx5ID09IFBBUkFMTEVMX0FQUExZX1NBRkUpCisJCXJldHVybjsKKwor CS8qIFdlIGFyZSBpbiBlcnJvciBtb2RlIGFuZCBzaG91bGQgZ2l2ZSB1c2VyIGNvcnJlY3QgZXJy b3IuICovCisJZXJlcG9ydChFUlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9J Tl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJIGVycm1zZygiY2Fubm90IHJlcGxpY2F0ZSB0YXJn ZXQgcmVsYXRpb24gXCIlcy4lc1wiIHVzaW5nICIKKwkJCQkJInN1YnNjcmlwdGlvbiBwYXJhbWV0 ZXIgc3RyZWFtaW5nPXBhcmFsbGVsIiwKKwkJCQkJcmVsLT5yZW1vdGVyZWwubnNwbmFtZSwgcmVs LT5yZW1vdGVyZWwucmVsbmFtZSksCisJCQkgZXJyZGV0YWlsKCJUaGUgdW5pcXVlIGNvbHVtbiBv biBzdWJzY3JpYmVyIGlzIG5vdCB0aGUgdW5pcXVlICIKKwkJCQkJICAgImNvbHVtbiBvbiBwdWJs aXNoZXIgb3IgdGhlcmUgaXMgYXQgbGVhc3Qgb25lICIKKwkJCQkJICAgIm5vbi1pbW11dGFibGUg ZnVuY3Rpb24uIiksCisJCQkgZXJyaGludCgiUGxlYXNlIGNoYW5nZSB0byB1c2Ugc3Vic2NyaXB0 aW9uIHBhcmFtZXRlciAiCisJCQkJCSAic3RyZWFtaW5nPW9uLiIpKSk7Cit9CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggNDdiZDgxMWZiNy4uNTExYmQ5YzA1MiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtMjMsNyArMjMsOCBA QAogLyoKICAqIFByb3RvY29sIG1lc3NhZ2UgZmxhZ3MuCiAgKi8KLSNkZWZpbmUgTE9HSUNBTFJF UF9JU19SRVBMSUNBX0lERU5USVRZIDEKKyNkZWZpbmUgQVRUUl9JU19SRVBMSUNBX0lERU5USVRZ CSgxIDw8IDApCisjZGVmaW5lIEFUVFJfSVNfVU5JUVVFCQkJCSgxIDw8IDEpCiAKICNkZWZpbmUg TUVTU0FHRV9UUkFOU0FDVElPTkFMICgxPDwwKQogI2RlZmluZSBUUlVOQ0FURV9DQVNDQURFCQko MTw8MCkKQEAgLTQwLDYgKzQxLDY4IEBAIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfcmVhZF90dXBs ZShTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwVHVwbGVEYXRhICp0dXBsZSk7CiBzdGF0aWMgdm9p ZCBsb2dpY2FscmVwX3dyaXRlX25hbWVzcGFjZShTdHJpbmdJbmZvIG91dCwgT2lkIG5zcGlkKTsK IHN0YXRpYyBjb25zdCBjaGFyICpsb2dpY2FscmVwX3JlYWRfbmFtZXNwYWNlKFN0cmluZ0luZm8g aW4pOwogCitzdGF0aWMgQml0bWFwc2V0ICpSZWxhdGlvbkdldFVuaXF1ZUtleUJpdG1hcChSZWxh dGlvbiByZWwpOworCisvKgorICogUmVsYXRpb25HZXRVbmlxdWVLZXlCaXRtYXAgLS0gZ2V0IGEg Yml0bWFwIG9mIHVuaXF1ZSBhdHRyaWJ1dGUgbnVtYmVycworICoKKyAqIFRoaXMgaXMgc2ltaWxh ciB0byBSZWxhdGlvbkdldElkZW50aXR5S2V5Qml0bWFwKCksIGJ1dCByZXR1cm5zIGEgYml0bWFw IG9mCisgKiBpbmRleCBhdHRyaWJ1dGUgbnVtYmVycyBmb3IgYWxsIHVuaXF1ZSBpbmRleGVzLgor ICovCitzdGF0aWMgQml0bWFwc2V0ICoKK1JlbGF0aW9uR2V0VW5pcXVlS2V5Qml0bWFwKFJlbGF0 aW9uIHJlbCkKK3sKKwlMaXN0CQkgICAqaW5kZXhvaWRsaXN0ID0gTklMOworCUxpc3RDZWxsCSAg ICppbmRleG9pZHNjYW47CisJQml0bWFwc2V0CSAgICphdHR1bmlxdWUgPSBOVUxMOworCisJaWYg KCFyZWwtPnJkX3JlbC0+cmVsaGFzaW5kZXgpCisJCXJldHVybiBOVUxMOworCisJaW5kZXhvaWRs aXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsKTsKKworCWZvcmVhY2goaW5kZXhvaWRzY2Fu LCBpbmRleG9pZGxpc3QpCisJeworCQlPaWQJCQlpbmRleG9pZCA9IGxmaXJzdF9vaWQoaW5kZXhv aWRzY2FuKTsKKwkJUmVsYXRpb24JaW5kZXhSZWw7CisJCWludAkJCWk7CisKKwkJLyogTG9vayB1 cCB0aGUgZGVzY3JpcHRpb24gZm9yIGluZGV4ICovCisJCWluZGV4UmVsID0gUmVsYXRpb25JZEdl dFJlbGF0aW9uKGluZGV4b2lkKTsKKworCQlpZiAoIVJlbGF0aW9uSXNWYWxpZChpbmRleFJlbCkp CisJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IG9wZW4gcmVsYXRpb24gd2l0aCBPSUQgJXUiLCBp bmRleG9pZCk7CisKKwkJaWYgKCFpbmRleFJlbC0+cmRfaW5kZXgtPmluZGlzdW5pcXVlKQorCQl7 CisJCQlSZWxhdGlvbkNsb3NlKGluZGV4UmVsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyog QWRkIHJlZmVyZW5jZWQgYXR0cmlidXRlcyB0byBpZGluZGV4YXR0cnMgKi8KKwkJZm9yIChpID0g MDsgaSA8IGluZGV4UmVsLT5yZF9pbmRleC0+aW5kbmF0dHM7IGkrKykKKwkJeworCQkJaW50IGF0 dHJudW0gPSBpbmRleFJlbC0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbaV07CisKKwkJCS8qCisJ CQkgKiBXZSBkb24ndCBpbmNsdWRlIG5vbi1rZXkgY29sdW1ucyBpbnRvIGlkaW5kZXhhdHRycwor CQkJICogYml0bWFwcy4gU2VlIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwLgorCQkJICovCisJ CQlpZiAoYXR0cm51bSAhPSAwKQorCQkJeworCQkJCWlmIChpIDwgaW5kZXhSZWwtPnJkX2luZGV4 LT5pbmRua2V5YXR0cyAmJgorCQkJCQkhYm1zX2lzX21lbWJlcihhdHRybnVtIC0gRmlyc3RMb3dJ bnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwgYXR0dW5pcXVlKSkKKwkJCQkJYXR0dW5pcXVlID0g Ym1zX2FkZF9tZW1iZXIoYXR0dW5pcXVlLAorCQkJCQkJCQkJCQkgICBhdHRybnVtIC0gRmlyc3RM b3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCQl9CisJCX0KKwkJUmVsYXRpb25DbG9z ZShpbmRleFJlbCk7CisJfQorCWxpc3RfZnJlZShpbmRleG9pZGxpc3QpOworCisJcmV0dXJuIGF0 dHVuaXF1ZTsKK30KKwogLyoKICAqIENoZWNrIGlmIGEgY29sdW1uIGlzIGNvdmVyZWQgYnkgYSBj b2x1bW4gbGlzdC4KICAqCkBAIC05MzMsNyArOTk2LDggQEAgbG9naWNhbHJlcF93cml0ZV9hdHRy cyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJVHVw bGVEZXNjCWRlc2M7CiAJaW50CQkJaTsKIAl1aW50MTYJCW5saXZlYXR0cyA9IDA7Ci0JQml0bWFw c2V0ICAqaWRhdHRycyA9IE5VTEw7CisJQml0bWFwc2V0ICAqaWRhdHRycyA9IE5VTEwsCisJCQkg ICAqYXR0dW5pcXVlID0gTlVMTDsKIAlib29sCQlyZXBsaWRlbnRmdWxsOwogCiAJZGVzYyA9IFJl bGF0aW9uR2V0RGVzY3IocmVsKTsKQEAgLTk1OCw2ICsxMDIyLDkgQEAgbG9naWNhbHJlcF93cml0 ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLCBCaXRtYXBzZXQgKmNvbHVtbnMp CiAJaWYgKCFyZXBsaWRlbnRmdWxsKQogCQlpZGF0dHJzID0gUmVsYXRpb25HZXRJZGVudGl0eUtl eUJpdG1hcChyZWwpOwogCisJLyogZmV0Y2ggYml0bWFwIG9mIFVOSVFVRSBhdHRyaWJ1dGVzICov CisJYXR0dW5pcXVlID0gUmVsYXRpb25HZXRVbmlxdWVLZXlCaXRtYXAocmVsKTsKKwogCS8qIHNl bmQgdGhlIGF0dHJpYnV0ZXMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZGVzYy0+bmF0dHM7IGkrKykK IAl7CkBAIC05NzQsNyArMTA0MSwxMSBAQCBsb2dpY2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0lu Zm8gb3V0LCBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqY29sdW1ucykKIAkJaWYgKHJlcGxpZGVu dGZ1bGwgfHwKIAkJCWJtc19pc19tZW1iZXIoYXR0LT5hdHRudW0gLSBGaXJzdExvd0ludmFsaWRI ZWFwQXR0cmlidXRlTnVtYmVyLAogCQkJCQkJICBpZGF0dHJzKSkKLQkJCWZsYWdzIHw9IExPR0lD QUxSRVBfSVNfUkVQTElDQV9JREVOVElUWTsKKwkJCWZsYWdzIHw9IEFUVFJfSVNfUkVQTElDQV9J REVOVElUWTsKKworCQlpZiAoYm1zX2lzX21lbWJlcihhdHQtPmF0dG51bSAtIEZpcnN0TG93SW52 YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJCQkgIGF0dHVuaXF1ZSkpCisJCQlmbGFncyB8 PSBBVFRSX0lTX1VOSVFVRTsKIAogCQlwcV9zZW5kYnl0ZShvdXQsIGZsYWdzKTsKIApAQCAtOTg5 LDYgKzEwNjAsNyBAQCBsb2dpY2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxh dGlvbiByZWwsIEJpdG1hcHNldCAqY29sdW1ucykKIAl9CiAKIAlibXNfZnJlZShpZGF0dHJzKTsK KwlibXNfZnJlZShhdHR1bmlxdWUpOwogfQogCiAvKgpAQCAtMTAwMSw3ICsxMDczLDggQEAgbG9n aWNhbHJlcF9yZWFkX2F0dHJzKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVs KQogCWludAkJCW5hdHRzOwogCWNoYXIJICAqKmF0dG5hbWVzOwogCU9pZAkJICAgKmF0dHR5cHM7 Ci0JQml0bWFwc2V0ICAqYXR0a2V5cyA9IE5VTEw7CisJQml0bWFwc2V0ICAqYXR0a2V5cyA9IE5V TEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAogCW5hdHRzID0gcHFfZ2V0bXNnaW50KGlu LCAyKTsKIAlhdHRuYW1lcyA9IHBhbGxvYyhuYXR0cyAqIHNpemVvZihjaGFyICopKTsKQEAgLTEw MTQsOSArMTA4NywxMyBAQCBsb2dpY2FscmVwX3JlYWRfYXR0cnMoU3RyaW5nSW5mbyBpbiwgTG9n aWNhbFJlcFJlbGF0aW9uICpyZWwpCiAKIAkJLyogQ2hlY2sgZm9yIHJlcGxpY2EgaWRlbnRpdHkg Y29sdW1uICovCiAJCWZsYWdzID0gcHFfZ2V0bXNnYnl0ZShpbik7Ci0JCWlmIChmbGFncyAmIExP R0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElUWSkKKwkJaWYgKGZsYWdzICYgQVRUUl9JU19SRVBM SUNBX0lERU5USVRZKQogCQkJYXR0a2V5cyA9IGJtc19hZGRfbWVtYmVyKGF0dGtleXMsIGkpOwog CisJCS8qIENoZWNrIGZvciB1bmlxdWUgY29sdW1uICovCisJCWlmIChmbGFncyAmIEFUVFJfSVNf VU5JUVVFKQorCQkJYXR0dW5pcXVlID0gYm1zX2FkZF9tZW1iZXIoYXR0dW5pcXVlLCBpKTsKKwog CQkvKiBhdHRyaWJ1dGUgbmFtZSAqLwogCQlhdHRuYW1lc1tpXSA9IHBzdHJkdXAocHFfZ2V0bXNn c3RyaW5nKGluKSk7CiAKQEAgLTEwMzAsNiArMTEwNyw3IEBAIGxvZ2ljYWxyZXBfcmVhZF9hdHRy cyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCkKIAlyZWwtPmF0dG5hbWVz ID0gYXR0bmFtZXM7CiAJcmVsLT5hdHR0eXBzID0gYXR0dHlwczsKIAlyZWwtPmF0dGtleXMgPSBh dHRrZXlzOworCXJlbC0+YXR0dW5pcXVlID0gYXR0dW5pcXVlOwogCXJlbC0+bmF0dHMgPSBuYXR0 czsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxh dGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jCmluZGV4 IGU5ODkwNDc2ODEuLjM3ZTQxMGI4ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3JlbGF0aW9uLmMKQEAgLTE5LDEyICsxOSwxOSBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3Rh YmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJjYXRhbG9n L3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCIKKyNp bmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3Iu aCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvb3B0 aW1pemVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgiCiAjaW5j bHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5jbHVkZSAicmV3cml0ZS9y ZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisjaW5jbHVkZSAidXRp bHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNsdWRlICJ1 dGlscy90eXBjYWNoZS5oIgogCiAKIHN0YXRpYyBNZW1vcnlDb250ZXh0IExvZ2ljYWxSZXBSZWxN YXBDb250ZXh0ID0gTlVMTDsKQEAgLTkxLDYgKzk4LDI2IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2lu dmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQogCX0KIH0KIAorLyoKKyAqIFJlbGNh Y2hlIGludmFsaWRhdGlvbiBjYWxsYmFjayB0byByZXNldCBwYXJhbGxlbCBmbGFnLgorICovCitz dGF0aWMgdm9pZAorbG9naWNhbHJlcF9yZWxtYXBfcmVzZXRfcGFyYWxsZWxfY2IoRGF0dW0gYXJn LCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKK3sKKwlIQVNIX1NFUV9TVEFUVVMgaGFz aF9zZXE7CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeTsKKworCWlmIChMb2dpY2FsUmVw UmVsTWFwID09IE5VTEwpCisJCXJldHVybjsKKworCWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBM b2dpY2FsUmVwUmVsTWFwKTsKKwl3aGlsZSAoKGVudHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNo X3NlcSkpICE9IE5VTEwpCisJeworCQllbnRyeS0+cGFyYWxsZWxfYXBwbHkgPSBQQVJBTExFTF9B UFBMWV9VTktOT1dOOworCQllbnRyeS0+bG9jYWxyZWx2YWxpZCA9IGZhbHNlOworCX0KK30KKwog LyoKICAqIEluaXRpYWxpemUgdGhlIHJlbGF0aW9uIG1hcCBjYWNoZS4KICAqLwpAQCAtMTE2LDYg KzE0Myw5IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2luaXQodm9pZCkKIAkvKiBXYXRjaCBmb3IgaW52 YWxpZGF0aW9uIGV2ZW50cy4gKi8KIAlDYWNoZVJlZ2lzdGVyUmVsY2FjaGVDYWxsYmFjayhsb2dp Y2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiLAogCQkJCQkJCQkgIChEYXR1bSkgMCk7CisJQ2Fj aGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soUFJPQ09JRCwKKwkJCQkJCQkJICBsb2dpY2FscmVw X3JlbG1hcF9yZXNldF9wYXJhbGxlbF9jYiwKKwkJCQkJCQkJICAoRGF0dW0pIDApOwogfQogCiAv KgpAQCAtMTQyLDYgKzE3Miw3IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2ZyZWVfZW50cnkoTG9naWNh bFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAkJcGZyZWUocmVtb3RlcmVsLT5hdHR0eXBzKTsKIAl9 CiAJYm1zX2ZyZWUocmVtb3RlcmVsLT5hdHRrZXlzKTsKKwlibXNfZnJlZShyZW1vdGVyZWwtPmF0 dHVuaXF1ZSk7CiAKIAlpZiAoZW50cnktPmF0dHJtYXApCiAJCWZyZWVfYXR0cm1hcChlbnRyeS0+ YXR0cm1hcCk7CkBAIC0xOTAsNiArMjIxLDcgQEAgbG9naWNhbHJlcF9yZWxtYXBfdXBkYXRlKExv Z2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVsKQogCX0KIAllbnRyeS0+cmVtb3RlcmVsLnJlcGxp ZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlkZW50OwogCWVudHJ5LT5yZW1vdGVyZWwuYXR0a2V5cyA9 IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0a2V5cyk7CisJZW50cnktPnJlbW90ZXJlbC5hdHR1bmlx dWUgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dHVuaXF1ZSk7CiAJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN0eCk7CiB9CiAKQEAgLTMxMCw2ICszNDIsMTY4IEBAIGxvZ2ljYWxyZXBfcmVsX21h cmtfdXBkYXRhYmxlKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCiAJfQogfQogCisvKgor ICogQ2hlY2sgaWYgY2hhbmdlcyBvbiBvbmUgcmVsYXRpb24gY2FuIGJlIGFwcGxpZWQgYnkgYW4g YXBwbHkgYmFja2dyb3VuZAorICogd29ya2VyIGFuZCBhc3NpZ24gdGhlICdwYXJhbGxlbF9hcHBs eScgZmxhZy4KKyAqCisgKiBUaGVyZSBhcmUgdHdvIHJlcXVpcmVtZW50cyBmb3IgYXBwbHlpbmcg Y2hhbmdlcyBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kCisgKiB3b3JrZXI6IDEpIFRoZSB1bmlxdWUg Y29sdW1uIGluIHRoZSByZWxhdGlvbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlIHNob3VsZAorICog YWxzbyBiZSB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGU7IDIpIFRoZXJl IGNhbm5vdCBiZSBhbnkKKyAqIG5vbi1pbW11dGFibGUgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIHN1 YnNjcmliZXItc2lkZS4KKyAqCisgKiBXZSBqdXN0IG1hcmsgdGhlIHJlbGF0aW9uIGVudHJ5IGFz ICdQQVJBTExFTF9BUFBMWV9VTlNBRkUnIGhlcmUgaWYgY2hhbmdlcworICogb24gb25lIHJlbGF0 aW9uIGNhbiBub3QgYmUgYXBwbGllZCBieSBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBhbmQg bGVhdmUKKyAqIGl0IHRvIGFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKCkgdG8gdGhyb3cg dGhlIGFjdHVhbCBlcnJvciBpZiBuZWVkZWQuCisgKi8KK3N0YXRpYyB2b2lkCitsb2dpY2FscmVw X3JlbF9tYXJrX3BhcmFsbGVsX2FwcGx5KExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnkpCit7 CisJQml0bWFwc2V0ICAgKnVrZXk7CisJaW50CQkJaTsKKwlUdXBsZURlc2MJdHVwZGVzYzsKKwlp bnQJCQlhdHRudW07CisJTGlzdAkgICAqZmtleXMgPSBOSUw7CisKKwkvKiBGYXN0IHBhdGggaWYg J3BhcmFsbGVsX2FwcGx5JyBmbGFnIGlzIGFscmVhZHkga25vd24uICovCisJaWYgKGVudHJ5LT5w YXJhbGxlbF9hcHBseSAhPSBQQVJBTExFTF9BUFBMWV9VTktOT1dOKQorCQlyZXR1cm47CisKKwkv KiBJbml0aWFsaXplIHRoZSBmbGFnLiAqLworCWVudHJ5LT5wYXJhbGxlbF9hcHBseSA9IFBBUkFM TEVMX0FQUExZX1NBRkU7CisKKwkvKgorCSAqIEZpcnN0LCBjaGVjayBpZiB0aGUgdW5pcXVlIGNv bHVtbiBpbiB0aGUgcmVsYXRpb24gb24gdGhlIHN1YnNjcmliZXItc2lkZQorCSAqIGlzIGFsc28g dGhlIHVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlLgorCSAqLworCXVrZXkgPSBS ZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcChlbnRyeS0+bG9jYWxyZWwsCisJCQkJCQkJCQkgIElO REVYX0FUVFJfQklUTUFQX0tFWSk7CisKKwlpZiAodWtleSkKKwl7CisJCWkgPSAtMTsKKwkJd2hp bGUgKChpID0gYm1zX25leHRfbWVtYmVyKHVrZXksIGkpKSA+PSAwKQorCQl7CisJCQlhdHRudW0g PSBBdHRyTnVtYmVyR2V0QXR0ck9mZnNldChpICsgRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0 ZU51bWJlcik7CisKKwkJCWlmIChlbnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRudW1dIDwgMCB8 fAorCQkJCSFibXNfaXNfbWVtYmVyKGVudHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0dG51bV0sIGVu dHJ5LT5yZW1vdGVyZWwuYXR0dW5pcXVlKSkKKwkJCXsKKwkJCQllbnRyeS0+cGFyYWxsZWxfYXBw bHkgPSBQQVJBTExFTF9BUFBMWV9VTlNBRkU7CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisKKwkJ Ym1zX2ZyZWUodWtleSk7CisJfQorCisJLyoKKwkgKiBUaGVuLCBjaGVjayBpZiB0aGVyZSBpcyBh bnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiB1c2VkIGJ5IHRoZSBsb2NhbAorCSAqIHRhYmxlLiBM b29rIGZvciBmdW5jdGlvbnMgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisJICogYS4gdHJpZ2dl ciBmdW5jdGlvbnM7CisJICogYi4gQ29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbnMgYW5k IGRvbWFpbiBjb25zdHJhaW50czsKKwkgKiBjLiBDb25zdHJhaW50IGV4cHJlc3Npb25zOworCSAq IGQuIEZvcmVpZ24ga2V5cy4KKwkgKi8KKwkvKiBDaGVjayB0aGUgdHJpZ2dlciBmdW5jdGlvbnMu ICovCisJaWYgKGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2MgIT0gTlVMTCkKKwl7CisJCWZvciAo aSA9IDA7IGkgPCBlbnRyeS0+bG9jYWxyZWwtPnRyaWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQor CQl7CisJCQlUcmlnZ2VyICAgICp0cmlnID0gZW50cnktPmxvY2FscmVsLT50cmlnZGVzYy0+dHJp Z2dlcnMgKyBpOworCisJCQlpZiAodHJpZy0+dGdlbmFibGVkICE9IFRSSUdHRVJfRklSRVNfQUxX QVlTICYmCisJCQkJdHJpZy0+dGdlbmFibGVkICE9IFRSSUdHRVJfRklSRVNfT05fUkVQTElDQSkK KwkJCQljb250aW51ZTsKKworCQkJaWYgKGZ1bmNfdm9sYXRpbGUodHJpZy0+dGdmb2lkKSAhPSBQ Uk9WT0xBVElMRV9JTU1VVEFCTEUpCisJCQl7CisJCQkJZW50cnktPnBhcmFsbGVsX2FwcGx5ID0g UEFSQUxMRUxfQVBQTFlfVU5TQUZFOworCQkJCXJldHVybjsKKwkJCX0KKwkJfQorCX0KKworCS8q IENoZWNrIHRoZSBjb2x1bW5zLiAqLworCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2NyKGVudHJ5 LT5sb2NhbHJlbCk7CisJZm9yIChhdHRudW0gPSAwOyBhdHRudW0gPCB0dXBkZXNjLT5uYXR0czsg YXR0bnVtKyspCisJeworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NBdHRyKHR1 cGRlc2MsIGF0dG51bSk7CisKKwkJLyogV2UgZG9uJ3QgbmVlZCBpbmZvIGZvciBkcm9wcGVkIG9y IGdlbmVyYXRlZCBhdHRyaWJ1dGVzICovCisJCWlmIChhdHQtPmF0dGlzZHJvcHBlZCB8fCBhdHQt PmF0dGdlbmVyYXRlZCkKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIFdlIGRvbid0IG5lZWQg dG8gY2hlY2sgY29sdW1ucyB0aGF0IG9ubHkgZXhpc3Qgb24gdGhlCisJCSAqIHN1YnNjcmliZXIK KwkJICovCisJCWlmIChlbnRyeS0+YXR0cm1hcC0+YXR0bnVtc1thdHRudW1dIDwgMCkKKwkJCWNv bnRpbnVlOworCisJCWlmIChhdHQtPmF0dGhhc2RlZikKKwkJeworCQkJTm9kZQkgICAqZGVmYXVs dGV4cHI7CisKKwkJCWRlZmF1bHRleHByID0gYnVpbGRfY29sdW1uX2RlZmF1bHQoZW50cnktPmxv Y2FscmVsLCBhdHRudW0gKyAxKTsKKwkJCWlmIChjb250YWluX211dGFibGVfZnVuY3Rpb25zKGRl ZmF1bHRleHByKSkKKwkJCXsKKwkJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHkgPSBQQVJBTExFTF9B UFBMWV9VTlNBRkU7CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisKKwkJLyoKKwkJICogSWYgdGhl IGNvbHVtbiBpcyBvZiBhIERPTUFJTiB0eXBlLCBkZXRlcm1pbmUgd2hldGhlcgorCQkgKiB0aGF0 IGRvbWFpbiBoYXMgYW55IENIRUNLIGV4cHJlc3Npb25zIHRoYXQgYXJlIG5vdAorCQkgKiBpbW11 dGFibGUuCisJCSAqLworCQlpZiAoZ2V0X3R5cHR5cGUoYXR0LT5hdHR0eXBpZCkgPT0gVFlQVFlQ RV9ET01BSU4pCisJCXsKKwkJCUxpc3QJICAgKmRvbWFpbl9jb25zdHJhaW50czsKKwkJCUxpc3RD ZWxsICAgKmxjOworCisJCQlkb21haW5fY29uc3RyYWludHMgPSBHZXREb21haW5Db25zdHJhaW50 cyhhdHQtPmF0dHR5cGlkKTsKKworCQkJZm9yZWFjaChsYywgZG9tYWluX2NvbnN0cmFpbnRzKQor CQkJeworCQkJCURvbWFpbkNvbnN0cmFpbnRTdGF0ZSAqY29uID0gKERvbWFpbkNvbnN0cmFpbnRT dGF0ZSAqKSBsZmlyc3QobGMpOworCisJCQkJaWYgKGNvbi0+Y2hlY2tfZXhwciAmJiBjb250YWlu X211dGFibGVfZnVuY3Rpb25zKChOb2RlICopIGNvbi0+Y2hlY2tfZXhwcikpCisJCQkJeworCQkJ CQllbnRyeS0+cGFyYWxsZWxfYXBwbHkgPSBQQVJBTExFTF9BUFBMWV9VTlNBRkU7CisJCQkJCXJl dHVybjsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGUgY29uc3RyYWludHMu ICovCisJaWYgKHR1cGRlc2MtPmNvbnN0cikKKwl7CisJCUNvbnN0ckNoZWNrICpjaGVjayA9IHR1 cGRlc2MtPmNvbnN0ci0+Y2hlY2s7CisKKwkJLyoKKwkJICogRGV0ZXJtaW5lIGlmIHRoZXJlIGFy ZSBhbnkgQ0hFQ0sgY29uc3RyYWludHMgd2hpY2gKKwkJICogY29udGFpbnMgbm9uLWltbXV0YWJs ZSBmdW5jdGlvbi4KKwkJICovCisJCWZvciAoaSA9IDA7IGkgPCB0dXBkZXNjLT5jb25zdHItPm51 bV9jaGVjazsgaSsrKQorCQl7CisJCQlFeHByCSAgICpjaGVja19leHByID0gc3RyaW5nVG9Ob2Rl KGNoZWNrW2ldLmNjYmluKTsKKworCQkJaWYgKGNvbnRhaW5fbXV0YWJsZV9mdW5jdGlvbnMoKE5v ZGUgKikgY2hlY2tfZXhwcikpCisJCQl7CisJCQkJZW50cnktPnBhcmFsbGVsX2FwcGx5ID0gUEFS QUxMRUxfQVBQTFlfVU5TQUZFOworCQkJCXJldHVybjsKKwkJCX0KKwkJfQorCX0KKworCS8qIENo ZWNrIHRoZSBmb3JlaWduIGtleXMuICovCisJZmtleXMgPSBSZWxhdGlvbkdldEZLZXlMaXN0KGVu dHJ5LT5sb2NhbHJlbCk7CisJaWYgKGZrZXlzKQorCQllbnRyeS0+cGFyYWxsZWxfYXBwbHkgPSBQ QVJBTExFTF9BUFBMWV9VTlNBRkU7Cit9CisKIC8qCiAgKiBPcGVuIHRoZSBsb2NhbCByZWxhdGlv biBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbW90ZSBvbmUuCiAgKgpAQCAtNDM4LDYgKzYzMiw5IEBA IGxvZ2ljYWxyZXBfcmVsX29wZW4oTG9naWNhbFJlcFJlbElkIHJlbW90ZWlkLCBMT0NLTU9ERSBs b2NrbW9kZSkKIAkJICovCiAJCWxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKGVudHJ5KTsK IAorCQkvKiBTZXQgaWYgY2hhbmdlcyBjb3VsZCBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlci4gKi8KKwkJbG9naWNhbHJlcF9yZWxfbWFya19wYXJhbGxlbF9hcHBseShl bnRyeSk7CisKIAkJZW50cnktPmxvY2FscmVsdmFsaWQgPSB0cnVlOwogCX0KIApAQCAtNjUzLDYg Kzg1MCw3IEBAIGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVudHJ5 ICpyb290LAogCQl9CiAJCWVudHJ5LT5yZW1vdGVyZWwucmVwbGlkZW50ID0gcmVtb3RlcmVsLT5y ZXBsaWRlbnQ7CiAJCWVudHJ5LT5yZW1vdGVyZWwuYXR0a2V5cyA9IGJtc19jb3B5KHJlbW90ZXJl bC0+YXR0a2V5cyk7CisJCWVudHJ5LT5yZW1vdGVyZWwuYXR0dW5pcXVlID0gYm1zX2NvcHkocmVt b3RlcmVsLT5hdHR1bmlxdWUpOwogCX0KIAogCWVudHJ5LT5sb2NhbHJlbCA9IHBhcnRyZWw7CkBA IC02OTYsNiArODk0LDkgQEAgbG9naWNhbHJlcF9wYXJ0aXRpb25fb3BlbihMb2dpY2FsUmVwUmVs TWFwRW50cnkgKnJvb3QsCiAJLyogU2V0IGlmIHRoZSB0YWJsZSdzIHJlcGxpY2EgaWRlbnRpdHkg aXMgZW5vdWdoIHRvIGFwcGx5IHVwZGF0ZS9kZWxldGUuICovCiAJbG9naWNhbHJlcF9yZWxfbWFy a191cGRhdGFibGUoZW50cnkpOwogCisJLyogU2V0IGlmIGNoYW5nZXMgY291bGQgYmUgYXBwbGll ZCBpbiB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJbG9naWNhbHJlcF9yZWxfbWFy a19wYXJhbGxlbF9hcHBseShlbnRyeSk7CisKIAllbnRyeS0+bG9jYWxyZWx2YWxpZCA9IHRydWU7 CiAKIAkvKiBzdGF0ZSBhbmQgc3RhdGVsc24gYXJlIGxlZnQgc2V0IHRvIDAuICovCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCA4ZmZiYTdlMmU1Li4z Y2RiZjhiNDU3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Rh Ymxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5j LmMKQEAgLTg4NCw2ICs4ODQsNyBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3Bu YW1lLCBjaGFyICpyZWxuYW1lLAogCWxyZWwtPmF0dG5hbWVzID0gcGFsbG9jMChNYXhUdXBsZUF0 dHJpYnV0ZU51bWJlciAqIHNpemVvZihjaGFyICopKTsKIAlscmVsLT5hdHR0eXBzID0gcGFsbG9j MChNYXhUdXBsZUF0dHJpYnV0ZU51bWJlciAqIHNpemVvZihPaWQpKTsKIAlscmVsLT5hdHRrZXlz ID0gTlVMTDsKKwlscmVsLT5hdHR1bmlxdWUgPSBOVUxMOwogCiAJLyoKIAkgKiBTdG9yZSB0aGUg Y29sdW1ucyBhcyBhIGxpc3Qgb2YgbmFtZXMuICBJZ25vcmUgdGhvc2UgdGhhdCBhcmUgbm90CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCAyYWE3Nzk3NjI4Li40 MTc5M2QyNmMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAg LTEzOTEsNiArMTM5MSwxNCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBz KQogCXsKIAkJY2hhciBhY3Rpb24gPSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUT1A7CiAKKwkJ LyoKKwkJICogVW5saWtlIHN0cmVhbV9jb21taXQsIHdlIGRvbid0IG5lZWQgdG8gd2FpdCBoZXJl IGZvciBzdHJlYW1fc3RvcCB0bworCQkgKiBmaW5pc2guIEFsbG93aW5nIHRoZSBvdGhlciB0cmFu c2FjdGlvbiB0byBiZSBhcHBsaWVkIGJlZm9yZQorCQkgKiBzdHJlYW1fc3RvcCBpcyBmaW5pc2hl ZCBjYW4gbGVhZCB0byBmYWlsdXJlcyBpZiB0aGUgdW5pcXVlCisJCSAqIGluZGV4L2NvbnN0cmFp bnQgaXMgZGlmZmVyZW50IGJldHdlZW4gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyLiBCdXQKKwkJ ICogZm9yIHN1Y2ggY2FzZXMsIHdlIGRvbid0IGFsbG93IHN0cmVhbWVkIHRyYW5zYWN0aW9ucyB0 byBiZSBhcHBsaWVkCisJCSAqIGluIHBhcmFsbGVsLiBTZWUgYXBwbHlfYmd3b3JrZXJfcmVsYXRp b25fY2hlY2suCisJCSAqLwogCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5 X3dvcmtlciwgMSwgJmFjdGlvbik7CiAKIAkJZWxvZyhERUJVRzEsICJzdG9wcGVkIHN0cmVhbWlu ZyBvZiB4aWQgJXUsICV1IGNoYW5nZXMgc3RyZWFtZWQiLCBzdHJlYW1feGlkLCBuY2hhbmdlcyk7 CkBAIC0yMDQ0LDYgKzIwNTIsOCBAQCBhcHBseV9oYW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8gcykK IAkvKiBTZXQgcmVsYXRpb24gZm9yIGVycm9yIGNhbGxiYWNrICovCiAJYXBwbHlfZXJyb3JfY2Fs bGJhY2tfYXJnLnJlbCA9IHJlbDsKIAorCWFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKHJl bCk7CisKIAkvKiBJbml0aWFsaXplIHRoZSBleGVjdXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNy ZWF0ZV9lZGF0YV9mb3JfcmVsYXRpb24ocmVsKTsKIAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpA QCAtMjE4Nyw2ICsyMTk3LDggQEAgYXBwbHlfaGFuZGxlX3VwZGF0ZShTdHJpbmdJbmZvIHMpCiAJ LyogQ2hlY2sgaWYgd2UgY2FuIGRvIHRoZSB1cGRhdGUuICovCiAJY2hlY2tfcmVsYXRpb25fdXBk YXRhYmxlKHJlbCk7CiAKKwlhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhyZWwpOworCiAJ LyogSW5pdGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICovCiAJZWRhdGEgPSBjcmVhdGVfZWRh dGFfZm9yX3JlbGF0aW9uKHJlbCk7CiAJZXN0YXRlID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTIzNTUs NiArMjM2Nyw4IEBAIGFwcGx5X2hhbmRsZV9kZWxldGUoU3RyaW5nSW5mbyBzKQogCS8qIENoZWNr IGlmIHdlIGNhbiBkbyB0aGUgZGVsZXRlLiAqLwogCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShy ZWwpOwogCisJYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8qIEluaXRp YWxpemUgdGhlIGV4ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9y ZWxhdGlvbihyZWwpOwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBAIC0yNTQwLDEzICsyNTU0 LDE0IEBAIGFwcGx5X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRh dGEsCiAJfQogCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCisJcGFydF9lbnRyeSA9 IGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4ocmVsbWFwZW50cnksIHBhcnRyZWwsCisJCQkJCQkJ CQkJICAgYXR0cm1hcCk7CisKIAkvKiBDaGVjayBpZiB3ZSBjYW4gZG8gdGhlIHVwZGF0ZSBvciBk ZWxldGUgb24gdGhlIGxlYWYgcGFydGl0aW9uLiAqLwogCWlmIChvcGVyYXRpb24gPT0gQ01EX1VQ REFURSB8fCBvcGVyYXRpb24gPT0gQ01EX0RFTEVURSkKLQl7Ci0JCXBhcnRfZW50cnkgPSBsb2dp Y2FscmVwX3BhcnRpdGlvbl9vcGVuKHJlbG1hcGVudHJ5LCBwYXJ0cmVsLAotCQkJCQkJCQkJCQkg ICBhdHRybWFwKTsKIAkJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHBhcnRfZW50cnkpOwotCX0K KworCWFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKHBhcnRfZW50cnkpOwogCiAJc3dpdGNo IChvcGVyYXRpb24pCiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlw Y2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggODA4Zjll YmQwZC4uYjI0ODg5OWQ4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlw Y2FjaGUuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC0yNTQw LDYgKzI1NDAsMjMgQEAgY29tcGFyZV92YWx1ZXNfb2ZfZW51bShUeXBlQ2FjaGVFbnRyeSAqdGNh Y2hlLCBPaWQgYXJnMSwgT2lkIGFyZzIpCiAJCXJldHVybiAwOwogfQogCisvKgorICogR2V0RG9t YWluQ29uc3RyYWludHMgLS0tIGdldCBEb21haW5Db25zdHJhaW50U3RhdGUgbGlzdCBvZiBzcGVj aWZpZWQgZG9tYWluIHR5cGUKKyAqLworTGlzdCAqCitHZXREb21haW5Db25zdHJhaW50cyhPaWQg dHlwZV9pZCkKK3sKKwlUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnk7CisJTGlzdAkJICAgKmNvbnN0 cmFpbnRzID0gTklMOworCisJdHlwZW50cnkgPSBsb29rdXBfdHlwZV9jYWNoZSh0eXBlX2lkLCBU WVBFQ0FDSEVfRE9NQUlOX0NPTlNUUl9JTkZPKTsKKworCWlmKHR5cGVudHJ5LT5kb21haW5EYXRh ICE9IE5VTEwpCisJCWNvbnN0cmFpbnRzID0gdHlwZW50cnktPmRvbWFpbkRhdGEtPmNvbnN0cmFp bnRzOworCisJcmV0dXJuIGNvbnN0cmFpbnRzOworfQorCiAvKgogICogTG9hZCAob3IgcmUtbG9h ZCkgdGhlIGVudW1EYXRhIG1lbWJlciBvZiB0aGUgdHlwY2FjaGUgZW50cnkuCiAgKi8KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggZWIwZmQyNGZkOC4uNDM5NWMxMWY3 NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTExMyw2ICsxMTMs NyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUmVsYXRpb24KIAljaGFyCQlyZXBsaWRlbnQ7 CQkvKiByZXBsaWNhIGlkZW50aXR5ICovCiAJY2hhcgkJcmVsa2luZDsJCS8qIHJlbW90ZSByZWxh dGlvbiBraW5kICovCiAJQml0bWFwc2V0ICAqYXR0a2V5czsJCS8qIEJpdG1hcCBvZiBrZXkgY29s dW1ucyAqLworCUJpdG1hcHNldCAgKmF0dHVuaXF1ZTsJCS8qIEJpdG1hcCBvZiB1bmlxdWUgY29s dW1ucyAqLwogfSBMb2dpY2FsUmVwUmVsYXRpb247CiAKIC8qIFR5cGUgbWFwcGluZyBpbmZvICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCmluZGV4IDc4Y2Q3ZTc3 ZjUuLjgwMTFlNjQ4ZDcgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxyZWxhdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlv bi5oCkBAIC0xNSw2ICsxNSwxOSBAQAogI2luY2x1ZGUgImFjY2Vzcy9hdHRtYXAuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCIKIAorLyoKKyAqCVN0YXRlcyB0byBkZXRl cm1pbmUgaWYgY2hhbmdlcyBvbiBvbmUgcmVsYXRpb24gY2FuIGJlIGFwcGxpZWQgdXNpbmcgYW4K KyAqCWFwcGx5IGJhY2tncm91bmQgd29ya2VyLgorICovCit0eXBlZGVmIGVudW0gUGFyYWxsZUFw cGx5U2FmZXR5Cit7CisJUEFSQUxMRUxfQVBQTFlfVU5LTk9XTiA9IDAsCS8qIHVua25vd24gICov CisJUEFSQUxMRUxfQVBQTFlfU0FGRSwJCS8qIENhbiBhcHBseSBjaGFuZ2VzIGluIGFuIGFwcGx5 IGJhY2tncm91bmQKKwkJCQkJCQkJICAgd29ya2VyICovCisJUEFSQUxMRUxfQVBQTFlfVU5TQUZF CQkvKiBDYW4gbm90IGFwcGx5IGNoYW5nZXMgaW4gYW4gYXBwbHkgYmFja2dyb3VuZAorCQkJCQkJ CQkgICB3b3JrZXIgKi8KK30gUGFyYWxsZUFwcGx5U2FmZXR5OworCiB0eXBlZGVmIHN0cnVjdCBM b2dpY2FsUmVwUmVsTWFwRW50cnkKIHsKIAlMb2dpY2FsUmVwUmVsYXRpb24gcmVtb3RlcmVsOwkv KiBrZXkgaXMgcmVtb3RlcmVsLnJlbW90ZWlkICovCkBAIC0zMSw2ICs0NCw4IEBAIHR5cGVkZWYg c3RydWN0IExvZ2ljYWxSZXBSZWxNYXBFbnRyeQogCVJlbGF0aW9uCWxvY2FscmVsOwkJLyogcmVs Y2FjaGUgZW50cnkgKE5VTEwgd2hlbiBjbG9zZWQpICovCiAJQXR0ck1hcCAgICAqYXR0cm1hcDsJ CS8qIG1hcCBvZiBsb2NhbCBhdHRyaWJ1dGVzIHRvIHJlbW90ZSBvbmVzICovCiAJYm9vbAkJdXBk YXRhYmxlOwkJLyogQ2FuIGFwcGx5IHVwZGF0ZXMvZGVsZXRlcz8gKi8KKwlQYXJhbGxlQXBwbHlT YWZldHkJcGFyYWxsZWxfYXBwbHk7CS8qIENhbiBhcHBseSBjaGFuZ2VzIGluIGFuIGFwcGx5CisJ CQkJCQkJCQkJICAgYmFja2dyb3VuZCB3b3JrZXI/ICovCiAKIAkvKiBTeW5jIHN0YXRlLiAqLwog CWNoYXIJCXN0YXRlOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2Vy X2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApp bmRleCBhMzU2MGQ0OTA0Li4xYzBkYjA1YzhhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93 b3JrZXJfaW50ZXJuYWwuaApAQCAtMTk0LDYgKzE5NCw3IEBAIGV4dGVybiB2b2lkIGFwcGx5X2Jn d29ya2VyX2ZyZWUoQXBwbHlCZ3dvcmtlclN0YXRlICp3c3RhdGUpOwogZXh0ZXJuIHZvaWQgYXBw bHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKHZvaWQpOwogZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3Jr ZXJfc2V0X3N0YXR1cyhBcHBseUJnd29ya2VyU3RhdHVzIHN0YXR1cyk7CiBleHRlcm4gdm9pZCBh cHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRkKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQp OworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2soTG9naWNhbFJlcFJl bE1hcEVudHJ5ICpyZWwpOwogCiBzdGF0aWMgaW5saW5lIGJvb2wKIGFtX3RhYmxlc3luY193b3Jr ZXIodm9pZCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmggYi9zcmMv aW5jbHVkZS91dGlscy90eXBjYWNoZS5oCmluZGV4IDQzMWFkN2YxYjMuLmVkN2MyZTdmNDggMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvdHlwY2FjaGUuaApAQCAtMTk5LDYgKzE5OSw4IEBAIGV4dGVybiB1aW50NjQgYXNzaWdu X3JlY29yZF90eXBlX2lkZW50aWZpZXIoT2lkIHR5cGVfaWQsIGludDMyIHR5cG1vZCk7CiAKIGV4 dGVybiBpbnQJY29tcGFyZV92YWx1ZXNfb2ZfZW51bShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hlLCBP aWQgYXJnMSwgT2lkIGFyZzIpOwogCitleHRlcm4gTGlzdCAqR2V0RG9tYWluQ29uc3RyYWludHMo T2lkIHR5cGVfaWQpOworCiBleHRlcm4gc2l6ZV90IFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5 RXN0aW1hdGUodm9pZCk7CiAKIGV4dGVybiB2b2lkIFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lzdHJ5 SW5pdChTaGFyZWRSZWNvcmRUeXBtb2RSZWdpc3RyeSAqLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAppbmRleCAwYTQxNTJkM2JlLi4zMGEwMWY3 MzA1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2Fz Y2FkZS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2Fk ZS5wbApAQCAtMzksNiArMzksMTIgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJCUFMVEVSIFNVQlND UklQVElPTiB0YXBfc3ViX0MKIAkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpIik7 CiAKKwlpZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9DLT5z YWZlX3BzcWwoCisJCQkncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgYyBE Uk9QIERFRkFVTFQiKTsKKwl9CisKIAkjIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZpbmlzaCBp bml0aWFsaXphdGlvbgogCiAJJG5vZGVfQS0+cG9sbF9xdWVyeV91bnRpbCgKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwgYi9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAuLjdmOGJmYTY3NDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCkBAIC0wLDAgKzEsMzgw IEBACisjIENvcHlyaWdodCAoYykgMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKKworIyBUZXN0IHRoZSByZXN0cmljdGlvbnMgb2Ygc3RyZWFtaW5nIG1vZGUgInBhcmFs bGVsIiBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7 Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitteSAkb2Zmc2V0ID0gMDsKKworIyBDcmVhdGUgcHVi bGlzaGVyIG5vZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0 ZXItPm5ldygncHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVh bWluZyA9PiAnbG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywKKwknbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSA9IDY0a0InKTsKKyRub2Rl X3B1Ymxpc2hlci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVf c3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicp OworJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisj IFNldHVwIHN0cnVjdHVyZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYiAoYSBpbnQgcHJpbWFyeSBrZXks IGIgdmFyY2hhcikiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCAoYSBpbnQgcHJpbWFyeSBrZXksIGIg dmFyY2hhcikiKTsKKworIyBTZXR1cCBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJlcgorIyBXZSBuZWVk IHRvIHRlc3Qgbm9ybWFsIHRhYmxlIGFuZCBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiIChhIGlu dCBwcmltYXJ5IGtleSwgYiB2YXJjaGFyKSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCAoYSBpbnQg cHJpbWFyeSBrZXksIGIgdmFyY2hhcikgUEFSVElUSU9OIEJZIFJBTkdFKGEpIik7Ciskbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFi X3BhcnRpdGlvbiAoTElLRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCkiKTsKKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRp b25lZCBBVFRBQ0ggUEFSVElUSU9OIHRlc3RfdGFiX3BhcnRpdGlvbiBERUZBVUxUIgorKTsKKwor IyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9k ZV9wdWJsaXNoZXItPmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBG T1IgVEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnRpdGlvbmVkIEZPUiBUQUJMRSB0 ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworCitteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCAiCisJQ1JFQVRFIFNVQlNDUklQ VElPTiB0YXBfc3ViCisJQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9u X25hbWU9JGFwcG5hbWUnCisJUFVCTElDQVRJT04gdGFwX3B1YiwgdGFwX3B1Yl9wYXJ0aXRpb25l ZAorCVdJVEggKHN0cmVhbWluZyA9IHBhcmFsbGVsLCBjb3B5X2RhdGEgPSBmYWxzZSkiKTsKKwor JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBJdCBpcyBu b3QgYWxsb3dlZCB0aGF0IHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHB1Ymxpc2hlciBhbmQgdGhl IHN1YnNjcmliZXIKKyMgaXMgZGlmZmVyZW50LiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkg YmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBGaXJzdCB3ZSBjaGVjayB0aGUgdW5p cXVlIGluZGV4IG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVFIElOREVYIHRlc3RfdGFiX2JfaWR4IE9OIHRlc3Rf dGFiIChiKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJl bGF0aW9uICJwdWJsaWMudGVzdF90YWIiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3Ry ZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXgg b24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX2lkeCIpOworCiskbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCitteSAkcmVzdWx0ID0KKyAg JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQg dG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOworCisjIFRoZW4gd2UgY2hlY2sg dGhlIHVuaXF1ZSBpbmRleCBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCB0ZXN0X3RhYl9iX3Bh cnRpdGlvbl9pZHggT04gdGVzdF90YWJfcGFydGl0aW9uIChiKSIpOworCisjIENoZWNrIHRoZSBz dWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVy LT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJ TlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNh dGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1 YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKwor IyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4K KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCB0ZXN0 X3RhYl9iX3BhcnRpdGlvbl9pZHgiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQi KTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIg YWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKKworIyBUcmlnZ2VycyB3aGljaCBleGVjdXRlIG5vbi1p bW11dGFibGUgZnVuY3Rpb24gYXJlIG5vdCBhbGxvd2VkIG9uIHRoZQorIyBzdWJzY3JpYmVyIHNp ZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlz IGNhc2UuCisjIEZpcnN0IHdlIGNoZWNrIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIG9uIG5vcm1hbCB0 YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NS RUFURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmMoKSBSRVRVUk5TIFRSSUdHRVIgQVMgXCRcJAorICBC RUdJTgorICAgIFJFVFVSTiBOVUxMOworICBFTkQKK1wkXCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKK0NS RUFURSBUUklHR0VSIGluc2VydF90cmlnCitCRUZPUkUgSU5TRVJUIE9OIHRlc3RfdGFiCitGT1Ig RUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jKCk7CitBTFRFUiBUQUJMRSB0 ZXN0X3RhYiBFTkFCTEUgUkVQTElDQSBUUklHR0VSIGluc2VydF90cmlnOworfSk7CisKKyMgQ2hl Y2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1 YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiIpOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zv cl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0 IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIg c3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSB0cmlnZ2VyIG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiIik7 CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1 bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBj b3VudCgqKSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVwbGlj YXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRyaWdnZXInKTsKKworIyBUaGVuIHdl IGNoZWNrIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIG9uIHBhcnRpdGlvbiB0YWJsZS4KKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBUUklHR0VSIGlu c2VydF90cmlnCitCRUZPUkUgSU5TRVJUIE9OIHRlc3RfdGFiX3BhcnRpdGlvbgorRk9SIEVBQ0gg Uk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuYygpOworQUxURVIgVEFCTEUgdGVzdF90 YWJfcGFydGl0aW9uIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgaW5zZXJ0X3RyaWc7Cit9KTsKKwor IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5v ZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CisKKyRub2RlX3N1 YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90 IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIg dXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9cGFyYWxsZWwvLAorCSRvZmZz ZXQpOworCisjIERyb3AgdGhlIHRyaWdnZXIgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jr cy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJEUk9QIFRSSUdH RVIgaW5zZXJ0X3RyaWcgT04gdGVzdF90YWJfcGFydGl0aW9uIik7CisKKyRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiX3BhcnRpdGlvbmVkIik7CitpcygkcmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0 byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRyaWdnZXInKTsKKworIyBJdCBpcyBub3QgYWxs b3dlZCB0aGF0IGNvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gY29udGFpbnMgYQorIyBu b24taW1tdXRhYmxlIGZ1bmN0aW9uIG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBl cnJvciByZXBvcnRlZCBieQorIyBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIEZp cnN0IHdlIGNoZWNrIHRoZSBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9uIG5vcm1h bCB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRF UiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCByYW5kb20oKSIpOwor CisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAk bm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3Jp YmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBs aWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIiIHVzaW5nIHN1YnNjcmlwdGlv biBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIGRl ZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRF UiBDT0xVTU4gYiBEUk9QIERFRkFVTFQiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRy ZXN1bHQsIHFxKDUwMDApLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBk cm9wcGluZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24nKTsKKworIyBUaGVuIHdlIGNoZWNrIHRo ZSBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9uIHBhcnRpdGlvbiB0YWJsZS4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0 X3RhYl9wYXJ0aXRpb24gQUxURVIgQ09MVU1OIGIgU0VUIERFRkFVTFQgcmFuZG9tKCkiKTsKKwor IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5v ZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiSU5TRVJUIElOVE8gdGVzdF90YWJfcGFydGl0aW9uZWQgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpIgorKTsKKworJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBj YW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlv bmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCisJ JG9mZnNldCk7CisKKyMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cg aXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIp OworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVz dWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEoNTAw MCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGRlZmF1 bHQgdmFsdWUgZXhwcmVzc2lvbicpOworCisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZG9tYWlu IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUKKyMgZnVuY3Rp b24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJh Y2tncm91bmQKKyMgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgQmVjYXVzZSB0aGUgY29sdW1uIHR5 cGUgb2YgdGhlIHBhcnRpdGlvbiB0YWJsZSBtdXN0IGJlIHRoZSBzYW1lIGFzIGl0cyBwYXJlbnQK KyMgdGFibGUsIG9ubHkgdGVzdCBub3JtYWwgdGFibGUgaGVyZS4KKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBET01BSU4gdGVzdF9kb21haW4g QVMgaW50IENIRUNLKFZBTFVFID4gcmFuZG9tKCkpOworQUxURVIgVEFCTEUgdGVzdF90YWIgQUxU RVIgQ09MVU1OIGEgVFlQRSB0ZXN0X2RvbWFpbjsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3Jp YmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZS T00gdGVzdF90YWIiKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VS Uk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVi bGljLnRlc3RfdGFiIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJh bGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9u IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGEg VFlQRSBpbnQiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAor CSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkb21haW4gY29u c3RyYWludCBleHByZXNzaW9uJworKTsKKworIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0 cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUgZnVuY3Rpb24KKyMgb24g dGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91 bmQgd29ya2VyIGluIHRoaXMKKyMgY2FzZS4KKyMgRmlyc3Qgd2UgY2hlY2sgdGhlIGNvbnN0cmFp bnQgZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoCisJJ3Bvc3RncmVzJywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09OU1RSQUlO VCB0ZXN0X3RhYl9jb24gY2hlY2sgKGEgPiByYW5kb20oKSk7Cit9KTsKKworIyBDaGVjayB0aGUg c3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJl ci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwki SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1MDAwKSBzKGkpIgorKTsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jf bG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCBy ZWxhdGlvbiAicHVibGljLnRlc3RfdGFiIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0 cmVhbWluZz1wYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCBjb25zdHJhaW50IG9uIHRo ZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT05TVFJBSU5UIHRlc3Rf dGFiX2NvbiIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCks CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGNvbnN0cmFp bnQgZXhwcmVzc2lvbicpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIGNvbnN0cmFpbnQgZXhwcmVz c2lvbiBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUREIENPTlNU UkFJTlQgdGVzdF90YWJfY29uIGNoZWNrIChhID4gcmFuZG9tKCkpOworfSk7CisKKyMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJERUxFVEUgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworCiskbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNh dGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1 YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKwor IyBEcm9wIGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3Rh Yl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOworCiskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEoMCksCisJJ2RhdGEgcmVwbGlj YXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGNvbnN0cmFpbnQgZXhwcmVzc2lvbicp OworCisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZm9yZWlnbiBrZXkgb24gdGhlIHN1YnNjcmli ZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yCisjIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2Vy IGluIHRoaXMgY2FzZS4KKyMgRmlyc3Qgd2UgY2hlY2sgdGhlIGZvcmVpZ24ga2V5IG9uIG5vcm1h bCB0YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUg RlJPTSB0ZXN0X3RhYiIpOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NS RUFURSBUQUJMRSB0ZXN0X3RhYl9mIChhIGludCBwcmltYXJ5IGtleSk7CitBTFRFUiBUQUJMRSB0 ZXN0X3RhYiBBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYmZrIEZPUkVJR04gS0VZKGEpIFJFRkVSRU5D RVMgdGVzdF90YWJfZihhKTsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9t IG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMo aSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICgg W0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVz dF90YWIiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywK Kwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBz dWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFi ZmsiKTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKwor JHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAorCSdk YXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBr ZXknKTsKKworIyBUaGVuIHdlIGNoZWNrIHRoZSBmb3JlaWduIGtleSBvbiBwYXJ0aXRpb24gdGFi bGUuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIFRBQkxFIHRl c3RfdGFiX3BhcnRpdGlvbl9mIChhIGludCBwcmltYXJ5IGtleSk7CitBTFRFUiBUQUJMRSB0ZXN0 X3RhYl9wYXJ0aXRpb24gQUREIENPTlNUUkFJTlQgdGVzdF90YWJfcGF0aXRpb25fZmsgRk9SRUlH TiBLRVkoYSkgUkVGRVJFTkNFUyB0ZXN0X3RhYl9wYXJ0aXRpb25fZihhKTsKK30pOworCisjIENo ZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5v dCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQi IHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zm c2V0KTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3Jp YmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0 X3RhYl9wYXRpdGlvbl9mayIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwor aXMoJHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFm dGVyIGRyb3BwaW5nIHRoZSBmb3JlaWduIGtleScpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zdG9w OworJG5vZGVfcHVibGlzaGVyLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKaW5kZXggNDEzN2RjNzdiNC4uNjk3ZTZhN2JhMyAxMDA2NDQKLS0tIGEvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKQEAgLTE4OTEsNiArMTg5MSw3IEBAIFBhZ2VYTG9nUmVjUHRyCiBQYWdldGFi bGVFbnRyeQogUGFpcnMKIFBhcmFsbGVsQXBwZW5kU3RhdGUKK1BhcmFsbGVsQXBwbHlTYWZldHkK IFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlCiBQYXJhbGxlbEJsb2NrVGFibGVTY2FuRGVzYwogUGFy YWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlcgotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_005_OS3PR01MB62752B29CEC2592E18236A9A9E909OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v19-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v19-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v19-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=29737; creation-date="Fri, 22 Jul 2022 02:54:00 GMT"; modification-date="Fri, 22 Jul 2022 02:56:39 GMT" Content-Transfer-Encoding: base64 RnJvbSA0MDM3Y2U4ZWRmMGQxMjZmNzA4N2ZjOGYwNjljMGNhMTJmMjlmNzBlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog V2VkLCAxNSBKdW4gMjAyMiAxMTowMjowOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjE5IDQvNF0g UmV0cnkgdG8gYXBwbHkgc3RyZWFtaW5nIHhhY3Qgb25seSBpbiBhcHBseSB3b3JrZXIKCldoZW4g dGhlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgaXMgc2V0IHN0cmVhbWluZz1wYXJhbGxlbCwgdGhl IGxvZ2ljIHRyaWVzIHRvCmFwcGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgYW4g YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuIElmIHRoaXMKZmFpbHMgdGhlIGJhY2tncm91bmQgd29y a2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5nIHRo ZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24gbW9k ZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0aGUg c2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJlZW4g aW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGUgc3Vic2NyaWJl ciBleGl0cyB3aXRoIGFuIGVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kCndo ZW5ldmVyIHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkIHN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFn IGlzIHJlc2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFt aW5nIHRyYW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBo YXMgcHJldmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5Igpm aWVsZCkuCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAg IHwgICA5ICsKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8 ICAgNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgIDEg KwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jICAgICAgIHwgIDE2ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAxNjUgKysr KysrKysrKysrKy0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAg ICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAg ICAgICB8ICAgNCArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbCAg ICAgfCAxNTQgKysrKysrKysrLS0tLS0tLQogMTAgZmlsZXMgY2hhbmdlZCwgMjUzIGluc2VydGlv bnMoKyksIDEwOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY2F0YWxv Z3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IDA5OWIzYzk2NjEuLjFh ZGZlZDY2N2QgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC03OTA3LDYgKzc5MDcsMTUgQEAgU0NSQU0tU0hB LTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8 cmVwbGFjZWFibGU+JmwKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAg ICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3VicmV0cnk8L3N0 cnVjdGZpZWxkPiA8dHlwZT5ib29sPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgVHJ1ZSBpZiB0aGUgcHJldmlvdXMgYXBwbHkgY2hhbmdlIGZhaWxlZCwgbmVjZXNz aXRhdGluZyBhIHJldHJ5CisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAg ICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSBy b2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnN1YmNvbm5pbmZv PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf c3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggODMyODk5NTcwZi4uOGJhNjQ3MGU4YSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3Ny Yy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKQEAgLTI0NCw2ICsyNDQsMTEgQEAg Q1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2Ny aXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICAgICBjb2x1bW4gaW4gdGhlIHJlbGF0aW9u IG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28gYmUgdGhlCiAgICAgICAgICAgdW5p cXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGU7IDIpIHRoZXJlIGNhbm5vdCBiZSBhbnkK ICAgICAgICAgICBub24taW1tdXRhYmxlIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBzdWJzY3JpYmVy LXNpZGUgcmVwbGljYXRlZCB0YWJsZS4KKyAgICAgICAgICBXaGVuIGFwcGx5aW5nIGEgc3RyZWFt aW5nIHRyYW5zYWN0aW9uLCBpZiBlaXRoZXIgcmVxdWlyZW1lbnQgaXMgbm90CisgICAgICAgICAg bWV0LCB0aGUgYmFja2dyb3VuZCB3b3JrZXIgd2lsbCBleGl0IHdpdGggYW4gZXJyb3IuCisgICAg ICAgICAgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+IG1vZGUgaXMgZGlzcmVnYXJkZWQgd2hl biByZXRyeWluZzsKKyAgICAgICAgICBpbnN0ZWFkIHRoZSB0cmFuc2FjdGlvbiB3aWxsIGJlIGFw cGxpZWQgdXNpbmcgPGxpdGVyYWw+b248L2xpdGVyYWw+CisgICAgICAgICAgbW9kZS4KICAgICAg ICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IDMzYWUzZGE4YWUuLjlmYWVi MmIxYzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMK KysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpAQCAtNzEsNiArNzEs NyBAQCBHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spCiAJc3ViLT5z dHJlYW0gPSBzdWJmb3JtLT5zdWJzdHJlYW07CiAJc3ViLT50d29waGFzZXN0YXRlID0gc3ViZm9y bS0+c3VidHdvcGhhc2VzdGF0ZTsKIAlzdWItPmRpc2FibGVvbmVyciA9IHN1YmZvcm0tPnN1YmRp c2FibGVvbmVycjsKKwlzdWItPnJldHJ5ID0gc3ViZm9ybS0+c3VicmV0cnk7CiAKIAkvKiBHZXQg Y29ubmluZm8gKi8KIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihTVUJTQ1JJUFRJT05PSUQsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFj a2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggZjM2OWIxZmMxNC4uODI4NGNkZDAw YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBi L3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTI5OSw3ICsxMjk5LDcg QEAgUkVWT0tFIEFMTCBPTiBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc3RhdHVzIEZST00gcHVibGlj OwogUkVWT0tFIEFMTCBPTiBwZ19zdWJzY3JpcHRpb24gRlJPTSBwdWJsaWM7CiBHUkFOVCBTRUxF Q1QgKG9pZCwgc3ViZGJpZCwgc3Vic2tpcGxzbiwgc3VibmFtZSwgc3Vib3duZXIsIHN1YmVuYWJs ZWQsCiAgICAgICAgICAgICAgIHN1YmJpbmFyeSwgc3Vic3RyZWFtLCBzdWJ0d29waGFzZXN0YXRl LCBzdWJkaXNhYmxlb25lcnIsCi0gICAgICAgICAgICAgIHN1YnNsb3RuYW1lLCBzdWJzeW5jY29t bWl0LCBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9yaWdpbikKKyAgICAgICAgICAgICAgc3VicmV0cnks IHN1YnNsb3RuYW1lLCBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9yaWdpbikK ICAgICBPTiBwZ19zdWJzY3JpcHRpb24gVE8gcHVibGljOwogCiBDUkVBVEUgVklFVyBwZ19zdGF0 X3N1YnNjcmlwdGlvbl9zdGF0cyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMv c3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21k cy5jCmluZGV4IDk2OTcxMjg0MTQuLmJkNTVjNmFjNGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmMKQEAgLTY4OSw2ICs2ODksNyBAQCBDcmVhdGVTdWJzY3JpcHRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCQkg TE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKIAkJCQkJIExPR0lDQUxSRVBfVFdP UEhBU0VfU1RBVEVfRElTQUJMRUQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJk aXNhYmxlb25lcnIgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmRpc2FibGVvbmVycik7CisJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0RGF0dW0oZmFs c2UpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyAtIDFdID0KIAkJ Q1N0cmluZ0dldFRleHREYXR1bShjb25uaW5mbyk7CiAJaWYgKG9wdHMuc2xvdF9uYW1lKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd29ya2VyLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYwppbmRleCA4 OWM3MTJmNzg1Li41ZDdiNTVlNWFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2FwcGx5Ymd3b3JrZXIuYwpAQCAtMTA2LDYgKzEwNiwxOCBAQCBhcHBseV9iZ3dvcmtl cl9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCiAJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlk KE15U3Vic2NyaXB0aW9uLT5za2lwbHNuKSkKIAkJcmV0dXJuIGZhbHNlOwogCisJLyoKKwkgKiBE b24ndCB1c2UgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIGZvciByZXRyaWVzLCBiZWNhdXNlIGl0 IGlzIHBvc3NpYmxlCisJICogdGhhdCB0aGUgbGFzdCB0aW1lIHdlIHRyaWVkIHRvIGFwcGx5IGEg dHJhbnNhY3Rpb24gdXNpbmcgYW4gYXBwbHkKKwkgKiBiYWNrZ3JvdW5kIHdvcmtlciB0aGUgY2hl Y2tzIGZhaWxlZCAoc2VlIGZ1bmN0aW9uCisJICogYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hl Y2spLgorCSAqLworCWlmIChNeVN1YnNjcmlwdGlvbi0+cmV0cnkpCisJeworCQllbG9nKERFQlVH MSwgImFwcGx5IGJhY2tncm91bmQgd29ya2VycyBhcmUgbm90IHVzZWQgZm9yIHJldHJpZXMiKTsK KwkJcmV0dXJuIGZhbHNlOworCX0KKwogCS8qCiAJICogRm9yIHN0cmVhbWluZyB0cmFuc2FjdGlv bnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCBpbiBhcHBseSBiYWNrZ3JvdW5kCiAJICogd29ya2Vy LCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBmb3IgYSByZWxh dGlvbgpAQCAtODQwLDcgKzg1Miw1IEBAIGFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKExv Z2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQogCQkJCQlyZWwtPnJlbW90ZXJlbC5uc3BuYW1lLCBy ZWwtPnJlbW90ZXJlbC5yZWxuYW1lKSwKIAkJCSBlcnJkZXRhaWwoIlRoZSB1bmlxdWUgY29sdW1u IG9uIHN1YnNjcmliZXIgaXMgbm90IHRoZSB1bmlxdWUgIgogCQkJCQkgICAiY29sdW1uIG9uIHB1 Ymxpc2hlciBvciB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgIgotCQkJCQkgICAibm9uLWltbXV0YWJs ZSBmdW5jdGlvbi4iKSwKLQkJCSBlcnJoaW50KCJQbGVhc2UgY2hhbmdlIHRvIHVzZSBzdWJzY3Jp cHRpb24gcGFyYW1ldGVyICIKLQkJCQkJICJzdHJlYW1pbmc9b24uIikpKTsKKwkJCQkJICAgIm5v bi1pbW11dGFibGUgZnVuY3Rpb24uIikpKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCmluZGV4IDQxNzkzZDI2YzIuLmM5MTRjZWNlOTkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMzc5LDYgKzM3OSw4IEBAIHN0YXRpYyB2 b2lkIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pOwog c3RhdGljIGlubGluZSB2b2lkIHNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoVHJhbnNhY3Rp b25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCByZXNldF9hcHBs eV9lcnJvcl9jb250ZXh0X2luZm8odm9pZCk7CiAKK3N0YXRpYyB2b2lkIHNldF9zdWJzY3JpcHRp b25fcmV0cnkoYm9vbCByZXRyeSk7CisKIC8qCiAgKiBTaG91bGQgdGhpcyB3b3JrZXIgYXBwbHkg Y2hhbmdlcyBmb3IgZ2l2ZW4gcmVsYXRpb24uCiAgKgpAQCAtOTA1LDYgKzkwNyw5IEBAIGFwcGx5 X2hhbmRsZV9jb21taXQoU3RyaW5nSW5mbyBzKQogCiAJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRl cm5hbCgmY29tbWl0X2RhdGEpOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0 X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFw cGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KIAlhcHBseV9iZ3dvcmtlcl9jaGVja19z dGF0dXMoKTsKIApAQCAtMTAxNiw2ICsxMDIxLDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3Ry aW5nSW5mbyBzKQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNl dCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwog CS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgYW55LiAq LwogCWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygpOwogCkBAIC0xMDY5LDYgKzEwNzcsOSBA QCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlzdG9yZV9mbHVz aF9wb3NpdGlvbihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9u ID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0 aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWlu ZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhw cmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTExMjQsNiArMTEzNSw5IEBAIGFwcGx5X2hhbmRs ZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24o cm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNuKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24g PSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRp b25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5n IHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHJv bGxiYWNrX2RhdGEucm9sbGJhY2tfZW5kX2xzbik7CiAKQEAgLTEyMTgsNiArMTIzMiw5IEBAIGFw cGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJCQkvKiBVbmxpbmsgdGhl IGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCiAJCQlz dHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2Rh dGEueGlkKTsKIAkJfQorCisJCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vi c2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKIAl9CiAKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBm YWxzZTsKQEAgLTE2NDYsNiArMTY2Myw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3Ry aW5nSW5mbyBzKQogCQkJICovCiAJCQlzZXJpYWxpemVfc3RyZWFtX2Fib3J0KHhpZCwgc3VieGlk KTsKIAkJfQorCisJCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0 aW9uX3JldHJ5KGZhbHNlKTsKIAl9CiAKIAlyZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8o KTsKQEAgLTE4NTgsNiArMTg3OCw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmlu Z0luZm8gcykKIAkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMg YW5kIHN1YnhhY3QgaW5mby4gKi8KIAkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHhpZCk7CiAJCX0KKworCQkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4g Ki8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJfQogCiAJLyogQ2hlY2sgdGhl IHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhbnkuICovCkBAIC0zOTAyLDIw ICszOTI1LDI4IEBAIHN0YXJ0X3RhYmxlX3N5bmMoWExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9z LCBjaGFyICoqbXlzbG90bmFtZSkKIAl9CiAJUEdfQ0FUQ0goKTsKIAl7CisJCS8qCisJCSAqIEVt aXQgdGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZyb20gdGhlIGVycm9yIHN0YXRlIHRv IGFuIGlkbGUKKwkJICogc3RhdGUKKwkJICovCisJCUhPTERfSU5URVJSVVBUUygpOworCisJCUVt aXRFcnJvclJlcG9ydCgpOworCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKKwkJRmx1c2hF cnJvclN0YXRlKCk7CisKKwkJUkVTVU1FX0lOVEVSUlVQVFMoKTsKKworCQkvKiBSZXBvcnQgdGhl IHdvcmtlciBmYWlsZWQgZHVyaW5nIHRhYmxlIHN5bmNocm9uaXphdGlvbiAqLworCQlwZ3N0YXRf cmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLCBmYWxzZSk7CisK KwkJLyogU2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KHRy dWUpOworCiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQogCQkJRGlzYWJsZVN1 YnNjcmlwdGlvbkFuZEV4aXQoKTsKLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogUmVwb3J0IHRo ZSB3b3JrZXIgZmFpbGVkIGR1cmluZyB0YWJsZSBzeW5jaHJvbml6YXRpb24uIEFib3J0Ci0JCQkg KiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNl bnQgaW4gYW4KLQkJCSAqIGlkbGUgc3RhdGUuCi0JCQkgKi8KLQkJCUFib3J0T3V0T2ZBbnlUcmFu c2FjdGlvbigpOwotCQkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3Jp cHRpb24tPm9pZCwgZmFsc2UpOwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCXByb2NfZXhp dCgwKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogCkBAIC0zOTQwLDIwICszOTcxLDI3IEBAIHN0YXJ0 X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9zKQogCX0KIAlQR19DQVRDSCgpOwogCXsK KwkJLyoKKwkJICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUg ZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJV UFRTKCk7CisKKwkJRW1pdEVycm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlv bigpOworCQlGbHVzaEVycm9yU3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJ CS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCB3aGlsZSBhcHBseWluZyBjaGFuZ2VzICovCisJ CXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsCisJ CQkJCQkJCQkJICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOworCisJCS8qIFNldCB0aGUgcmV0cnkg ZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKKwogCQlpZiAoTXlTdWJz Y3JpcHRpb24tPmRpc2FibGVvbmVycikKIAkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7 Ci0JCWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCB3aGls ZSBhcHBseWluZyBjaGFuZ2VzLiBBYm9ydCB0aGUKLQkJCSAqIGN1cnJlbnQgdHJhbnNhY3Rpb24g c28gdGhhdCB0aGUgc3RhdHMgbWVzc2FnZSBpcyBzZW50IGluIGFuCi0JCQkgKiBpZGxlIHN0YXRl LgotCQkJICovCi0JCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQkJCXBnc3RhdF9yZXBv cnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsICFhbV90YWJsZXN5bmNf d29ya2VyKCkpOwotCi0JCQlQR19SRV9USFJPVygpOwotCQl9CiAJfQogCVBHX0VORF9UUlkoKTsK IH0KQEAgLTQyMDAsMjggKzQyMzgsMTEgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJn KQogfQogCiAvKgotICogQWZ0ZXIgZXJyb3IgcmVjb3ZlcnksIGRpc2FibGUgdGhlIHN1YnNjcmlw dGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlvbgotICogYW5kIGV4aXQgY2xlYW5seS4KKyAqIERpc2Fi bGUgdGhlIHN1YnNjcmlwdGlvbiBpbiBhIG5ldyB0cmFuc2FjdGlvbi4KICAqLwogc3RhdGljIHZv aWQKIERpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpCiB7Ci0JLyoKLQkgKiBFbWl0IHRo ZSBlcnJvciBtZXNzYWdlLCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBp ZGxlCi0JICogc3RhdGUKLQkgKi8KLQlIT0xEX0lOVEVSUlVQVFMoKTsKLQotCUVtaXRFcnJvclJl cG9ydCgpOwotCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCUZsdXNoRXJyb3JTdGF0ZSgp OwotCi0JUkVTVU1FX0lOVEVSUlVQVFMoKTsKLQotCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxl ZCBkdXJpbmcgZWl0aGVyIHRhYmxlIHN5bmNocm9uaXphdGlvbiBvciBhcHBseSAqLwotCXBnc3Rh dF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsCi0J CQkJCQkJCQkgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7Ci0KIAkvKiBEaXNhYmxlIHRoZSBzdWJz Y3JpcHRpb24gKi8KIAlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCURpc2FibGVTdWJzY3Jp cHRpb24oTXlTdWJzY3JpcHRpb24tPm9pZCk7CkBAIC00MjMxLDggKzQyNTIsNiBAQCBEaXNhYmxl U3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKQogCWVyZXBvcnQoTE9HLAogCQkJZXJybXNnKCJsb2dp Y2FsIHJlcGxpY2F0aW9uIHN1YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGJlZW4gZGlzYWJsZWQgZHVl IHRvIGFuIGVycm9yIiwKIAkJCQkgICBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpOwotCi0JcHJvY19l eGl0KDApOwogfQogCiAvKgpAQCAtNDQ2NywzICs0NDg2LDYzIEBAIHJlc2V0X2FwcGx5X2Vycm9y X2NvbnRleHRfaW5mbyh2b2lkKQogCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5yZW1vdGVfYXR0 bnVtID0gLTE7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChJbnZhbGlkVHJhbnNhY3Rp b25JZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogfQorCisvKgorICogU2V0IHN1YnJldHJ5IG9mIHBn X3N1YnNjcmlwdGlvbiBjYXRhbG9nLgorICoKKyAqIElmIHJldHJ5IGlzIHRydWUsIHN1YnNjcmli ZXIgaXMgYWJvdXQgdG8gZXhpdCB3aXRoIGFuIGVycm9yLiBPdGhlcndpc2UsIGl0CisgKiBtZWFu cyB0aGF0IHRoZSB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCBzdWNjZXNzZnVsbHkuCisgKi8KK3N0 YXRpYyB2b2lkCitzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wgcmV0cnkpCit7CisJUmVsYXRp b24JcmVsOworCUhlYXBUdXBsZQl0dXA7CisJYm9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOworCWJv b2wJCW51bGxzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNf cGdfc3Vic2NyaXB0aW9uXTsKKwlEYXR1bQkJdmFsdWVzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07 CisKKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5ID09IHJldHJ5IHx8CisJCWFtX2FwcGx5X2Jn d29ya2VyKCkpCisJCXJldHVybjsKKworCWlmICghSXNUcmFuc2FjdGlvblN0YXRlKCkpCisJewor CQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlzdGFydGVkX3R4ID0gdHJ1ZTsKKwl9CisK KwkvKiBMb29rIHVwIHRoZSBzdWJzY3JpcHRpb24gaW4gdGhlIGNhdGFsb2cgKi8KKwlyZWwgPSB0 YWJsZV9vcGVuKFN1YnNjcmlwdGlvblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOworCXR1 cCA9IFNlYXJjaFN5c0NhY2hlQ29weTEoU1VCU0NSSVBUSU9OT0lELAorCQkJCQkJCSAgT2JqZWN0 SWRHZXREYXR1bShNeVN1YnNjcmlwdGlvbi0+b2lkKSk7CisKKwlpZiAoIUhlYXBUdXBsZUlzVmFs aWQodHVwKSkKKwkJZWxvZyhFUlJPUiwgInN1YnNjcmlwdGlvbiBcIiVzXCIgZG9lcyBub3QgZXhp c3QiLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSk7CisKKwlMb2NrU2hhcmVkT2JqZWN0KFN1YnNjcmlw dGlvblJlbGF0aW9uSWQsIE15U3Vic2NyaXB0aW9uLT5vaWQsIDAsCisJCQkJCSBBY2Nlc3NTaGFy ZUxvY2spOworCisJLyogRm9ybSBhIG5ldyB0dXBsZS4gKi8KKwltZW1zZXQodmFsdWVzLCAwLCBz aXplb2YodmFsdWVzKSk7CisJbWVtc2V0KG51bGxzLCBmYWxzZSwgc2l6ZW9mKG51bGxzKSk7CisJ bWVtc2V0KHJlcGxhY2VzLCBmYWxzZSwgc2l6ZW9mKHJlcGxhY2VzKSk7CisKKwkvKiBSZXNldCBz dWJyZXRyeSAqLworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJyZXRyeSAtIDFdID0g Qm9vbEdldERhdHVtKHJldHJ5KTsKKwlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJy ZXRyeSAtIDFdID0gdHJ1ZTsKKworCXR1cCA9IGhlYXBfbW9kaWZ5X3R1cGxlKHR1cCwgUmVsYXRp b25HZXREZXNjcihyZWwpLCB2YWx1ZXMsIG51bGxzLAorCQkJCQkJCXJlcGxhY2VzKTsKKworCS8q IFVwZGF0ZSB0aGUgY2F0YWxvZy4gKi8KKwlDYXRhbG9nVHVwbGVVcGRhdGUocmVsLCAmdHVwLT50 X3NlbGYsIHR1cCk7CisKKwkvKiBDbGVhbnVwLiAqLworCWhlYXBfZnJlZXR1cGxlKHR1cCk7CisJ dGFibGVfY2xvc2UocmVsLCBOb0xvY2spOworCisJaWYgKHN0YXJ0ZWRfdHgpCisJCUNvbW1pdFRy YW5zYWN0aW9uQ29tbWFuZCgpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1 bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggYjg5NGNjYTkyOS4uZTkzOTU5 ZjE3ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NDg0LDggKzQ0ODQsOSBAQCBnZXRTdWJzY3JpcHRpb25z KEFyY2hpdmUgKmZvdXQpCiAJbnR1cHMgPSBQUW50dXBsZXMocmVzKTsKIAogCS8qCi0JICogR2V0 IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0IGluY2x1ZGUgc3Vic2tpcGxzbiBpbiB0aGUg ZHVtcCBhcwotCSAqIGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBs b25nZXIgYmUgcmVsZXZhbnQuCisJICogR2V0IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0 IGluY2x1ZGUgc3Vic2tpcGxzbiBhbmQgc3VicmV0cnkgaW4KKwkgKiB0aGUgZHVtcCBhcyBhZnRl ciByZXN0b3JpbmcgdGhlIGR1bXAgdGhpcyB2YWx1ZSBtYXkgbm8gbG9uZ2VyIGJlCisJICogcmVs ZXZhbnQuCiAJICovCiAJaV90YWJsZW9pZCA9IFBRZm51bWJlcihyZXMsICJ0YWJsZW9pZCIpOwog CWlfb2lkID0gUFFmbnVtYmVyKHJlcywgIm9pZCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmgKaW5kZXggNzFhZDAzYTkzNC4uOWI3MmY0YjQwYyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oCkBAIC04OCw2ICs4OCw4IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0 aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lf Uk9XCiAJYm9vbAkJc3ViZGlzYWJsZW9uZXJyOwkvKiBUcnVlIGlmIGEgd29ya2VyIGVycm9yIHNo b3VsZCBjYXVzZSB0aGUKIAkJCQkJCQkJCSAqIHN1YnNjcmlwdGlvbiB0byBiZSBkaXNhYmxlZCAq LwogCisJYm9vbAkJc3VicmV0cnkgQktJX0RFRkFVTFQoZik7CS8qIFRydWUgaWYgdGhlIHByZXZp b3VzIGFwcGx5IGNoYW5nZSBmYWlsZWQuICovCisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8q IHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3Ry aW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9U X05VTEw7CkBAIC0xMzEsNiArMTMzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJ Ym9vbAkJZGlzYWJsZW9uZXJyOwkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91 bGQgYmUKIAkJCQkJCQkJICogYXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJv cgogCQkJCQkJCQkgKiBvY2N1cnMgKi8KKwlib29sCQlyZXRyeTsJCQkvKiBJbmRpY2F0ZXMgaWYg dGhlIHByZXZpb3VzIGFwcGx5IGNoYW5nZQorCQkJCQkJCQkgKiBmYWlsZWQuICovCiAJY2hhcgkg ICAqY29ubmluZm87CQkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVibGlzaGVyICovCiAJ Y2hhcgkgICAqc2xvdG5hbWU7CQkvKiBOYW1lIG9mIHRoZSByZXBsaWNhdGlvbiBzbG90ICovCiAJ Y2hhcgkgICAqc3luY2NvbW1pdDsJCS8qIFN5bmNocm9ub3VzIGNvbW1pdCBzZXR0aW5nIGZvciB3 b3JrZXIgKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1p bmdfYXBwbHkucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5 LnBsCmluZGV4IDdmOGJmYTY3NDUuLjI0YzUxOWE4NzAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBwbHkucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbApAQCAtNTcsOCArNTcsMTMgQEAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOwogCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93 ZWQgdGhhdCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBwdWJsaXNoZXIgYW5kIHRoZSBzdWJzY3Jp YmVyCi0jIGlzIGRpZmZlcmVudC4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91 bmQgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgaXMgZGlmZmVyZW50LiBDaGVjayB0aGUgZXJyb3Ig cmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQKKyMgYWZ0ZXIg cmV0cnlpbmcgaW4gYXBwbHkgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUgZGF0YSBpcyByZXBsaWNh dGVkCisjIHN1Y2Nlc3NmdWxseS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCiAjIEZpcnN0IHdl IGNoZWNrIHRoZSB1bmlxdWUgaW5kZXggb24gbm9ybWFsIHRhYmxlLgogJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBVTklRVUUgSU5ERVggdGVzdF90YWJf Yl9pZHggT04gdGVzdF90YWIgKGIpIik7CkBAIC03MSwxNCArNzYsMTUgQEAgJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVw bGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiIiB1c2luZyBzdWJzY3JpcHRp b24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0 aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggdGVzdF90YWJfYl9p ZHgiKTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBs aWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOwogCiBteSAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9w cGluZyBpbmRleCcpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlcnMgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiB1bmlxdWUgaW5kZXgnKTsKKwor IyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggdGVzdF90YWJfYl9pZHgiKTsK IAogIyBUaGVuIHdlIGNoZWNrIHRoZSB1bmlxdWUgaW5kZXggb24gcGFydGl0aW9uIHRhYmxlLgog JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCkBAIC05NSwxNyArMTAxLDIw IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05 XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9w YXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9cGFyYWxs ZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2Ny aWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJEUk9QIElOREVYIHRlc3RfdGFiX2JfcGFydGl0aW9uX2lkeCIpOwotCisjIFdhaXQgZm9y IHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdv cmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRy ZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVD VCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7Ci1pcygkcmVzdWx0LCBxcSg1 MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4 Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVy cyBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIHVuaXF1ZSBpbmRleCcpOworCisjIERyb3AgdGhl IHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCB0ZXN0X3RhYl9iX3BhcnRpdGlvbl9pZHgiKTsK IAogIyBUcmlnZ2VycyB3aGljaCBleGVjdXRlIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gYXJlIG5v dCBhbGxvd2VkIG9uIHRoZQogIyBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBv cnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIEFuZCBhZnRlciByZXRy eWluZyBpbiBhcHBseSB3b3JrZXIsIHdlIGNoZWNrIGlmIHRoZSBkYXRhIGlzIHJlcGxpY2F0ZWQK KyMgc3VjY2Vzc2Z1bGx5LgogIyBGaXJzdCB3ZSBjaGVjayB0aGUgdHJpZ2dlciBmdW5jdGlvbiBv biBub3JtYWwgdGFibGUuCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVz JywgcXF7CkBAIC0xMjksMTUgKzEzOCwxNiBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9s b2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJl bGF0aW9uICJwdWJsaWMudGVzdF90YWIiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3Ry ZWFtaW5nPXBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRoZSB0cmlnZ2VyIG9uIHRo ZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9OIHRlc3RfdGFiIik7Ci0K KyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0 aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDAp LCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdHJpZ2dlcicp OworaXMoJHJlc3VsdCwgcXEoMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcnMgYWZ0 ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiB0cmlnZ2VyJyk7CisKKyMgRHJvcCB0aGUgdHJpZ2dlciBv biB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCSJEUk9QIFRSSUdHRVIgaW5zZXJ0X3RyaWcgT04gdGVzdF90YWIiKTsKIAogIyBUaGVuIHdl IGNoZWNrIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIG9uIHBhcnRpdGlvbiB0YWJsZS4KICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgKQEAgLTE1NywxOSArMTY3LDI0IEBAICRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxp Y2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcg c3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9cGFyYWxsZWwvLAogCSRvZmZzZXQpOwog Ci0jIERyb3AgdGhlIHRyaWdnZXIgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJEUk9QIFRSSUdHRVIgaW5z ZXJ0X3RyaWcgT04gdGVzdF90YWJfcGFydGl0aW9uIik7Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCop IEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAnZGF0YSBy ZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdHJpZ2dlcicpOworaXMoJHJl c3VsdCwgcXEoMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcnMgYWZ0ZXIgcmV0cnlp bmcgYmVjYXVzZSBvZiB0cmlnZ2VyJyk7CiAKKyMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vi c2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJEUk9Q IFRSSUdHRVIgaW5zZXJ0X3RyaWcgT04gdGVzdF90YWJfcGFydGl0aW9uIik7CisKKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbHVtbiBkZWZhdWx0IHZh bHVlIGV4cHJlc3Npb24gY29udGFpbnMgYQogIyBub24taW1tdXRhYmxlIGZ1bmN0aW9uIG9uIHRo ZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieQotIyBiYWNrZ3Jv dW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2Fz ZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2UgY2hlY2sKKyMgaWYgdGhl IGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCisjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KwogIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBv biBub3JtYWwgdGFibGUuCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK IAkiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGIgU0VUIERFRkFVTFQgcmFuZG9t KCkiKTsKQEAgLTE4NSwxNiArMjAwLDE3IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xv ZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVs YXRpb24gInB1YmxpYy50ZXN0X3RhYiIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJl YW1pbmc9cGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgZGVmYXVsdCB2YWx1ZSBvbiB0 aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBiIERST1Ag REVGQVVMVCIpOwotCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJl IGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIik7CiBpcygk cmVzdWx0LCBxcSg1MDAwKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIg ZHJvcHBpbmcgZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0 byBzdWJzY3JpYmVycyBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGNvbHVtbiBkZWZhdWx0IHZh bHVlJyk7CisKKyMgRHJvcCBkZWZhdWx0IHZhbHVlIG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFi IEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOwogCiAjIFRoZW4gd2UgY2hlY2sgdGhlIGNv bHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24gb24gcGFydGl0aW9uIHRhYmxlLgogJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCkBAIC0yMTEsMjAgKzIyNywyNSBAQCAk bm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/ IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0 aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywK IAkkb2Zmc2V0KTsKIAotIyBEcm9wIGRlZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmliZXIsIG5v dyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJB TFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxU Iik7Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGll ZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsK IGlzKCRyZXN1bHQsIHFxKDUwMDApLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBh ZnRlciBkcm9wcGluZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29sdW1uIGRlZmF1 bHQgdmFsdWUnKTsKKworIyBEcm9wIGRlZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmliZXIuCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVz dF90YWJfcGFydGl0aW9uIEFMVEVSIENPTFVNTiBiIERST1AgREVGQVVMVCIpOwogCisjID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBkb21haW4gY29uc3RyYWlu dCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZQogIyBmdW5jdGlvbiBvbiB0aGUg c3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZAot IyB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIg cmV0cnlpbmcgaW4gYXBwbHkgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUgZGF0YQorIyBpcyByZXBs aWNhdGVkIHN1Y2Nlc3NmdWxseS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCiAjIEJlY2F1c2Ug dGhlIGNvbHVtbiB0eXBlIG9mIHRoZSBwYXJ0aXRpb24gdGFibGUgbXVzdCBiZSB0aGUgc2FtZSBh cyBpdHMgcGFyZW50CiAjIHRhYmxlLCBvbmx5IHRlc3Qgbm9ybWFsIHRhYmxlIGhlcmUuCiAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCkBAIC0yNDIsMjEgKzI2MywyNiBAQCAkbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCBy ZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIiIHVzaW5nIHN1YnNjcmlw dGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9w IGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24gb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3 b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBU QUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYSBUWVBFIGludCIpOwotCisjIFdhaXQgZm9yIHRo aXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtl ci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1 bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBj b3VudCgqKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgwKSwKLQknZGF0YSByZXBs aWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgZG9tYWluIGNvbnN0cmFpbnQgZXhw cmVzc2lvbicKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5n IGJlY2F1c2Ugb2YgZG9tYWluJwogKTsKIAotIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0 cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUgZnVuY3Rpb24KLSMgb24g dGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91 bmQgd29ya2VyIGluIHRoaXMKLSMgY2FzZS4KKyMgRHJvcCBkb21haW4gY29uc3RyYWludCBleHBy ZXNzaW9uIG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBhIFRZUEUgaW50 Iik7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNv bnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUKKyMgZnVuY3Rpb24g b24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tn cm91bmQKKyMgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5 IHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlIGRhdGEKKyMgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVs bHkuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwogIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29uc3Ry YWludCBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgKIAkncG9zdGdyZXMnLCBxcXsKQEAgLTI3NCwxNiArMzAwLDE3IEBAICRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJl cGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYiIgdXNpbmcgc3Vic2NyaXB0 aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9cGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3Ag Y29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1Ag Q09OU1RSQUlOVCB0ZXN0X3RhYl9jb24iKTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0 cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMCksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBz dWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGNvbnN0cmFpbnQgZXhwcmVzc2lvbicpOworCSdkYXRh IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcnMgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBjb25z dHJhaW50Jyk7CisKKyMgRHJvcCBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFi IERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9jb24iKTsKIAogIyBUaGVuIHdlIGNoZWNrIHRoZSBj b25zdHJhaW50IGV4cHJlc3Npb24gb24gcGFydGl0aW9uIHRhYmxlLgogJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKApAQCAtMzAwLDE5ICszMjcsMjQgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2Fp dF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRh cmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3Jp cHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJv cCBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFy dGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9jb24iKTsKLQorIyBXYWl0IGZvciB0aGlz IHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIu CiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0 ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwogaXMoJHJlc3VsdCwgcXEoMCksCi0J J2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGNvbnN0cmFpbnQg ZXhwcmVzc2lvbicpOworCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlcnMgYWZ0ZXIgcmV0 cnlpbmcgYmVjYXVzZSBvZiBjb25zdHJhaW50Jyk7CiAKKyMgRHJvcCBjb25zdHJhaW50IG9uIHRo ZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ IkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJf Y29uIik7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0 IGZvcmVpZ24ga2V5IG9uIHRoZSBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvcgotIyBy ZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjIHJlcG9ydGVkIGJ5 IGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFw cGx5CisjIHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNz ZnVsbHkuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwogIyBGaXJzdCB3ZSBjaGVjayB0aGUgZm9y ZWlnbiBrZXkgb24gbm9ybWFsIHRhYmxlLgogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIik7CiAkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOwpAQCAtMzMzLDE2ICszNjUsMTcgQEAgJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVw bGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiIiB1c2luZyBzdWJzY3JpcHRp b24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0 aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtz LgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxF IHRlc3RfdGFiIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYmZrIik7Ci0KKyMgV2FpdCBmb3IgdGhp cyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2Vy LgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3Vs dCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNv dW50KCopIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDApLAotCSdkYXRhIHJl cGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBrZXknKTsK KwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ug b2YgZm9yZWlnbiBrZXknKTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9u IHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYmZrIik7CiAK ICMgVGhlbiB3ZSBjaGVjayB0aGUgZm9yZWlnbiBrZXkgb24gcGFydGl0aW9uIHRhYmxlLgogJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKQEAgLTM2MywxNiArMzk2 LDE3IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1a MC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3Rh Yl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9cGFy YWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg b24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBD T05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0aW9uX2ZrIik7Ci0KKyMgV2FpdCBmb3IgdGhpcyBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCop IEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDApLAotCSdk YXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9yZWlnbiBr ZXknKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXJzIGFmdGVyIHJldHJ5aW5nIGJl Y2F1c2Ugb2YgZm9yZWlnbiBrZXknKTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJh aW50IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQg dGVzdF90YWJfcGF0aXRpb25fZmsiKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2Rl X3B1Ymxpc2hlci0+c3RvcDsKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_005_OS3PR01MB62752B29CEC2592E18236A9A9E909OS3PR01MB6275jpnp_--