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 1oTKUH-00087q-3f for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Aug 2022 09:58:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oTKUF-00037T-Nv for pgsql-hackers@arkaria.postgresql.org; Wed, 31 Aug 2022 09:58:19 +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 1oTKRy-0006nu-Hu for pgsql-hackers@lists.postgresql.org; Wed, 31 Aug 2022 09:55:58 +0000 Received: from esa13.fujitsucc.c3s2.iphmx.com ([68.232.156.96]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oTKRu-0001oB-4a for pgsql-hackers@lists.postgresql.org; Wed, 31 Aug 2022 09:55:58 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1661939754; x=1693475754; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=woIFLkwpifYEiN4dBjJQGHsTxm5HUDNfSRi5jFu6uNg=; b=GQWyVE44RVSEIMWRdlPpxsxKApKo1BTRaTJUVZqma8/7Ve820bO7dO7S fmShPzTQ3QRYvpoy4oW8okOj5jm/5o9nFA+WDLur8p9ZPxy2/8kY8bx23 kz8vei2Z6JhwtnIq7mmMs4wQbCUERAx+TlVIo5/zcXBn7NNWWy5vJIZM+ ApuC+UFQhgCcvpnpzioZ/8QApB4MiHxyWUcVZqgQDa5pcODzrUyatsyso U+x/4isppJrY1slORG+uar5zFvwFYX6nt+1BYHTqW2cRwi8eTtJbwXHDd qJxyCJrF0XBHIzAOZQ1kcNXQtjcaHP59SNogSqKwGV+dw9rwJ+5jqTs/j Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10455"; a="63767371" X-IronPort-AV: E=Sophos;i="5.93,277,1654527600"; d="scan'208,223";a="63767371" 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; 31 Aug 2022 18:55:50 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CS7j3dKY4d4htYrijicUAMWxOWBjiMWyGfCJG4NvPpYo4XGZWNuLTtg0duOLqkwjXCkEwGCBKiLlWIOF77WLX9ZQX+c/Go/5pGnKJR8fDPZXwzf4GsKD3ueUgOZ+7vooFtMjgNAhY/1vaLpqZHkzzK9hTDWOQqROy6MyOeg2+V4/xEY4UI9M92EkLZ0WQv7RG/nM+lSKrN66iJMf4FK0buWktsRGBBPhshxy0jMvW+E8aT+aE5GgtXvk+TcATeEbaFLOymLy2lvBLjl/TSen+oOiDt3/aEnfn5fqmuHkyDuZTSy1xlB9z9XDG1ZgkwqgKO/Bswz7WagUi87K8PDnyw== 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=lBJch4FrVhDnccUjAhPKPv0eCixPQwjEx7qcgUaP1wo=; b=OsEiZndOVhM/4Mdq81ailpvAc/V1mUSsBXWH2oiz4nl2JoYcozKl+p9KBlNdTxEE6s57AuCicU8uMzyIAJlqnc0b34aDn98x5v9abgnXLvA84OKs571L4UcgyOAdwU8dprOM8P5X3dkv+7yME5pcmkRd5SoEmp+DENj7AO2Wr+pWQuNr8hLj5SMxj6d2ftuItD5hmwJRDEMsShhCqZiesdL1YJ6tSaZy59A9BvczrR2uS0hIGmNf9zXTdQO2Dd+LBxRmf2GCAppGlEiepn8UwA4VBvrg2QXPOJaBIEa3OJDzAxm7snjDNYvwNUW+p5fOASguhGXQ2G1OZ8fT/0KTeA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com (2603:1096:604:bb::12) by OSZPR01MB8321.jpnprd01.prod.outlook.com (2603:1096:604:184::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.10; Wed, 31 Aug 2022 09:55:46 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::1da0:1ce2:1710:fda]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::1da0:1ce2:1710:fda%5]) with mapi id 15.20.5588.010; Wed, 31 Aug 2022 09:55:46 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila CC: "wangw.fnst@fujitsu.com" , Peter Smith , Dilip Kumar , Masahiko Sawada , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX5zhPsn/DiHU+5DFLHlN8Fn6zlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACghoIAB8TqAgAqL+oCADJWRgIAGVm0AgAGAQICAAerMgIABYRWAgAgnZ+CAAXRdgIAGBUSQgAGFeoCAAFYagIABb5ag Date: Wed, 31 Aug 2022 09:55:45 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9YWFkZDFlOTktZTY4MC00Yjc5LWE2NjAtNGRkOGMzY2Ey?= =?utf-8?B?M2QyO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0wOC0zMVQwOTo0Njo0Nlo7TVNJUF9MYWJl?= =?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: efaca93d-480a-4f10-5c3e-08da8b36f9ba x-ms-traffictypediagnostic: OSZPR01MB8321:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 6SYCnf6DHClUl/eGapyO4LhCBq2LsF7lRrxg6MWTKoRTRqa9B3LXKE0qrBHhDt4uI1ujfMTnudAh1b2kwkUrQJS3RjSorINzXsrErf6H/cp9tXrPGbEY4oBZ08mWcDFeEFaXPSbAGyHzhkq9+n7UF8d8wZrDkB9cxdK2zkcqH1y8exD0SPogByz8x6XEkJb0IMUDSvH4xPGyeauVTQ3Y2/YFa0jZEgaZudnW98y+44fPBBYEw2XheMdYJ9dStnuHV68gRsi02ZvTv7r1onVL61yIXx5SLD2RhDid6q437HiBtHKdmRLfSGLZ7xJ2zoN4wHDD35p7prLsYo4KEtJKC1xT/OCStixIJzEEloqw82fBwagwRv8cMd3THHXGDT36CUu+56rWDQuPFn9xMnctQQWmTns5yuW3SIB4OXznvEL64kYFrfTiaL91SSNq/wN8/b0eXNyXKwUQUG/+p/MyFmMmH+Oi4mvRqSct6Cul4ZS+Jt0/+24eKXpEecPhayFsZrGXneGtaKUZ5CW2xK6gVFXNvtjj3ZlBqCanp6Bn2kccnErmb0rJDTtq1gf+9lgoRz4MAVUiX5KoM15eyRizKxW3j77hJCPQa1vdjNPL22lFIIjZI8WqcIX6O6cUwjP89HyHZQd9emmaJG9m2qDmUZrQrLby/+i77RuCGMOzoJtGGnigllMQ6F6Gy9KFMc9aZf3YaXG4mSV/lCti+TOoogyPgHyqBYiz+j0Ebf0GMQsv3V+zN6ChFr6E/6GHpfuSafegy3yUcJ0es+WetjuAOrZmri5HdbCs/hrnmt3AKcdgmUoB88OC77PzAzI27mNNro4k02WuVwCTi/gC2wH05A== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(136003)(346002)(396003)(39860400002)(366004)(376002)(1590799006)(966005)(99936003)(8936002)(52536014)(82960400001)(5660300002)(41300700001)(55016003)(478600001)(33656002)(76116006)(66556008)(4326008)(66476007)(66946007)(66446008)(64756008)(8676002)(1580799003)(83380400001)(7696005)(186003)(86362001)(53546011)(38070700005)(6506007)(9686003)(26005)(6916009)(54906003)(38100700002)(85182001)(316002)(2906002)(122000001)(71200400001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?RE40ZFdTd0p3T1JCVUl1bDJVMDZPVkZhNWFXM1RBSVM4cHpKd2pnNW5DTkpG?= =?utf-8?B?L0hVbEVuV0dWOWIxUEg0c09wUXRsOG43cGxwSXU0bFBHOXVPbVRTMUhvbEdo?= =?utf-8?B?d0Y4a0lCR04zbUlKalNvbmp0c3h0Q2NCY3h2azVhYVdIWUJnTTdBNTUwaDQ1?= =?utf-8?B?NGRQRXdhUU16OW5ZeldJR1hWTEIvdFVSckQ3TGdYRm1jbUJEQWttZkxrMEpV?= =?utf-8?B?a2tzQndyUnF0dHEvVERIWXZvalN4S0NmRVh2Tlk2Um54NXpRKzZxcm9uL2lp?= =?utf-8?B?alBBeUQxNmZOeE5nSDlTOG5XcjJ6WkhVZTFTc2gzeGpjT1YrRnYwaHRzM1Jp?= =?utf-8?B?dGZoMFJNeC93ZkRaWC9sSjFqL1hBU05HWVFybHI0MWRYZDMxeHB1RmdlTzh3?= =?utf-8?B?cHl2SWxNb1Vha3ArUis0aTdHYWp0NXY1bWtrVUNBK1BOMVpSOXhwQjBKVVdz?= =?utf-8?B?UDNNTzJhRVBubUJ0T3ZxZ1g3blJRbUNHTXR0TGdPZk1zZG5SVVZDM0Eyb04w?= =?utf-8?B?YTVCT2V5cDZoSENleEVUR2lEV0FuaFZRWXNuTEJ5MnhYdThtZ2xZWDRLUFFH?= =?utf-8?B?U1FpOWppUHVqTElneE1DQzZZNisyOGU4ZzU1SWk0OVlDK3RDNnpNNzg2NUhM?= =?utf-8?B?SmZkVytWTjQvN3Vjam1GeHVxbTcwc05sWXowb0FpRDMxajFPZVVKZW8vTERr?= =?utf-8?B?TVB2SHRCTloyUUpGYk92UCtsdUZnV1dBT2EybndtNzdkY2FQUWxhdHBwaTdO?= =?utf-8?B?Vyt2enZiYld0OHJOVEJEOU5aWjNCS2dycXBCbm04V2pjVkN5ZWtOTG8rYkNI?= =?utf-8?B?NWlrSWdSbG55S0VVUmZkTHE5dG91NE9MMnVFV1JQTDlQNHRSNDBZNGoyajNB?= =?utf-8?B?WmJ1MUx4anpTL2VKZTlXV0kvRWpyUFJTaXdnNWg1S2cwZUo4RlNsQU5oN01t?= =?utf-8?B?RjdpYXdEUk01VjUxQ3FpeC95Tmo3L1NLZk1qN29EZU1EYWhqL0t4ZWQ4UzR2?= =?utf-8?B?MTBMMm1sVDNyWENFMUc2MEdHT0hOOHozTm90U0VPb3BpMU5iQXVRK3RwVFNh?= =?utf-8?B?bnZKMTIzMW1DRkZYeGtjUy9RVWRUSGtHWWRpd0poNFJUT0RTeHVZYW5HclBF?= =?utf-8?B?bFUrYU92cVAyQUx3dXFJelpIWlhIaDd0MWxaKzI5aGs1N3hCYlovR2xqVXdY?= =?utf-8?B?Uzg5Q2ZORFZBY1NqaGZiVWhWR0ZoNVVqbDhmdDJXdk1RSUp6WmRGejVjQW1j?= =?utf-8?B?VUg4cnJLMUJnK2xIWkV3cmI5ekYwTXllV3d1alYzaW05aVA0U0QwdWsrY2hO?= =?utf-8?B?NW1WQm5rZHpCdmlibFJEbVJVMVEzb3NORmVnZXpWeFE1dkVBSUMwUkR1TzE3?= =?utf-8?B?YXVkT0xnTG9JOHEwR0tPckwxejJKMlhHZE1OdDdGWXZXNndBNHFyRy8wOVox?= =?utf-8?B?RkNiYVJFa1dabE1yQVQvZXRrTXBIeW5uay9iYTNqTmZTRzNPeUN1bTg2MFYr?= =?utf-8?B?ays1STcxU1RmMHkxL1VnQVA5TkVKb28rZjc5eHZkYTNKenlnTzdKaWFsTTdr?= =?utf-8?B?WVQybW1ETDdXOEM3RHp3WDFucjhOSnF5NDMvK2V2Zy9lTDAwbUI1dks3Mit1?= =?utf-8?B?OTNKN3hpcm1EQTVtYkRJRW5yV0xzVXpLWFpzczh1SkVTR2ZqNkRlWE5xcHNp?= =?utf-8?B?aDROVk5GcWxmUFhEQ3E3cmRYNUt0REJXZDRjVFdqT0NJc2daR3hHSzVWNXdp?= =?utf-8?B?a01HOUlnOWEyeUNWY016Z085UGJWL1JvUG04bW5JRW1LenpJYUJlVnN6UDFG?= =?utf-8?B?UW9aMytwWFQ1bDVranpGK3NpTmFGZHI5YXhkSlBxVEdSRzNXbjhZS09Ra0cr?= =?utf-8?B?SGtjUG9pWWkrWEJjdlJqZW53d3lIWC9xREsySmJiKytHd0pYR24vVkl6a1I1?= =?utf-8?B?WXovbmMwcS9RQnNCWmhzdEVmMGR2OVhoR1BMbWd2R3haZmtYR2RIa2Q0WUVT?= =?utf-8?B?UDhTOXFFNzB5NFhPNXBUWlJUYldwVHZaWFl1SGhkTkR4RTQzUkVTUjNlNG50?= =?utf-8?B?ZVBwTkMvOHpxdGwrVG1iWlNBbTNqQTM2b29zWEZIWnJtVzVaMi9EY2FrNU51?= =?utf-8?Q?J11ZW09UzBSCvEEKCqMg5bJTL?= Content-Type: multipart/mixed; boundary="_006_OS0PR01MB5716546863340CA19EC5F8C394789OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS0PR01MB5716.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: efaca93d-480a-4f10-5c3e-08da8b36f9ba X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Aug 2022 09:55:46.0425 (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: 0oFGvFllA7zGXVO3+DYUYXGg6dlHakmQOlCLjdKbegNypUEXSYFdYT3RDpodX8eoP7XmeQBysHfoQwUANs5ndg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSZPR01MB8321 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS0PR01MB5716546863340CA19EC5F8C394789OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gVHVlc2RheSwgQXVndXN0IDMwLCAyMDIyIDc6NTEgUE0gQW1pdCBLYXBpbGEgPGFtaXQua2Fw aWxhMTZAZ21haWwuY29tPiB3cm90ZToNCj4gDQo+IE9uIFR1ZSwgQXVnIDMwLCAyMDIyIGF0IDEy OjEyIFBNIEFtaXQgS2FwaWxhIDxhbWl0LmthcGlsYTE2QGdtYWlsLmNvbT4NCj4gd3JvdGU6DQo+ ID4NCj4gPiBGZXcgb3RoZXIgY29tbWVudHMgb24gdjI1LTAwMDEqDQo+ID4gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KPiA+DQo+IA0KPiBTb21lIG1vcmUgY29tbWVudHMgb24gdjI1LTAw MDEqOg0KPiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiAxLg0KPiArc3RhdGljIHZv aWQNCj4gK2FwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQ0KPiAuLi4NCj4g Li4uDQo+ICsgZWxzZSBpZiAoYXBwbHlfYWN0aW9uID09IFRBX1NFTkRfVE9fUEFSQUxMRUxfV09S S0VSKSB7IGlmIChzdWJ4aWQgPT0NCj4gKyB4aWQpIHBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5f cmVzZXQoKTsNCj4gKw0KPiArIC8qIFNlbmQgU1RSRUFNIEFCT1JUIG1lc3NhZ2UgdG8gdGhlIGFw cGx5IHBhcmFsbGVsIHdvcmtlci4gKi8NCj4gKyBwYXJhbGxlbF9hcHBseV9zZW5kX2RhdGEod2lu Zm8sIHMtPmxlbiwgcy0+ZGF0YSk7DQo+ICsNCj4gKyAvKg0KPiArICogQWZ0ZXIgc2VuZGluZyB0 aGUgZGF0YSB0byB0aGUgYXBwbHkgcGFyYWxsZWwgd29ya2VyLCB3YWl0IGZvcg0KPiArICogdGhh dCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQN Cj4gKyAqIG9yZGVyIHdoaWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVw ZW5kZW5jaWVzIGFuZA0KPiArICogZGVhZGxvY2tzLg0KPiArICovDQo+ICsgaWYgKHN1YnhpZCA9 PSB4aWQpDQo+ICsgew0KPiArIHBhcmFsbGVsX2FwcGx5X3dhaXRfZm9yX2ZyZWUod2luZm8pOw0K PiAuLi4NCj4gLi4uDQo+IA0KPiBGcm9tIHRoaXMgY29kZSwgaXQgYXBwZWFycyB0aGF0IHdlIGFy ZSB3YWl0aW5nIGZvciByb2xsYmFja3MgdG8gZmluaXNoIGJ1dCBub3QNCj4gZG9pbmcgdGhlIHNh bWUgaW4gdGhlIHJvbGxiYWNrIHRvIHNhdmVwb2ludCBjYXNlcy4gSXMgdGhlcmUgYSByZWFzb24g Zm9yIHRoZQ0KPiBzYW1lPyBJIHRoaW5rIHdlIG5lZWQgdG8gd2FpdCBmb3Igcm9sbGJhY2tzIHRv IGF2b2lkIHRyYW5zYWN0aW9uIGRlcGVuZGVuY3kNCj4gYW5kIGRlYWRsb2NrIGlzc3Vlcy4gQ29u c2lkZXIgdGhlIGJlbG93IGNhc2U6DQo+IA0KPiBDb25zaWRlciB0YWJsZSB0MSAoYzEgcHJpbWFy eSBrZXksIGMyLCBjMykgaGFzIGEgcm93ICgxLCAyLCAzKSBvbiBib3RoIHB1Ymxpc2hlciBhbmQN Cj4gc3Vic2NyaWJlci4NCj4gDQo+IFB1Ymxpc2hlcg0KPiBTZXNzaW9uLTENCj4gPT09PT09PT09 PQ0KPiBCZWdpbjsNCj4gLi4uDQo+IERlbGV0ZSBmcm9tIHQxIHdoZXJlIGMxID0gMTsNCj4gDQo+ IFNlc3Npb24tMg0KPiBCZWdpbjsNCj4gLi4uDQo+IGluc2VydCBpbnRvIHQxIHZhbHVlcygxLCA0 LCA1KTsgLS1UaGlzIHdpbGwgd2FpdCBmb3IgU2Vzc2lvbi0xJ3MgRGVsZXRlIHRvIGZpbmlzaC4N Cj4gDQo+IFNlc3Npb24tMQ0KPiBSb2xsYmFjazsNCj4gDQo+IFNlc3Npb24tMg0KPiAtLSBUaGUg d2FpdCB3aWxsIGJlIGZpbmlzaGVkIGFuZCB0aGUgaW5zZXJ0IHdpbGwgYmUgc3VjY2Vzc2Z1bC4N Cj4gQ29tbWl0Ow0KPiANCj4gTm93LCBhc3N1bWUgYm90aCB0aGVzZSB0cmFuc2FjdGlvbnMgZ2V0 IHN0cmVhbWVkIGFuZCBpZiB3ZSBkaWRuJ3Qgd2FpdCBmb3INCj4gcm9sbGJhY2svcm9sbGJhY2sg dG8gc2F2ZXBvaW50LCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBpbnNlcnQgZ2V0cyBleGVjdXRl ZA0KPiBiZWZvcmUgYW5kIGxlYWRzIHRvIGEgY29uc3RyYWludCB2aW9sYXRpb24uIFRoaXMgd29u J3QgaGFwcGVuIGluIG5vbi1wYXJhbGxlbA0KPiBtb2RlLCBzbyB3ZSBzaG91bGQgd2FpdCBmb3Ig cm9sbGJhY2tzIHRvIGZpbmlzaC4NCg0KQWdyZWVkIGFuZCBjaGFuZ2VkLg0KDQo+IDIuIEkgdGhp bmsgd2UgZG9uJ3QgbmVlZCB0byB3YWl0IGF0IFJvbGxiYWNrIFByZXBhcmVkL0NvbW1pdCBQcmVw YXJlZA0KPiBiZWNhdXNlIHdlIHdhaXQgZm9yIHByZXBhcmUgdG8gZmluaXNoIGluICpfc3RyZWFt X3ByZXBhcmUgZnVuY3Rpb24uDQo+IFRoYXQgd2lsbCBlbnN1cmUgYWxsIHRoZSBvcGVyYXRpb25z IGluIHRoYXQgdHJhbnNhY3Rpb24gaGF2ZSBoYXBwZW5lZCBpbiB0aGUNCj4gc3Vic2NyaWJlciwg c28gbm8gY29uY3VycmVudCB0cmFuc2FjdGlvbiBjYW4gY3JlYXRlIGRlYWRsb2NrIG9yIHRyYW5z YWN0aW9uDQo+IGRlcGVuZGVuY3kgaXNzdWVzLiBJZiBzbywgSSB0aGluayBpdCBpcyBiZXR0ZXIg dG8gZXhwbGFpbiB0aGlzIGluIHRoZSBjb21tZW50cy4NCg0KQWRkZWQgc29tZSBjb21tZW50cyBh Ym91dCB0aGlzLg0KDQo+IDMuDQo+ICsvKiBXaGF0IGFjdGlvbiB0byB0YWtlIGZvciB0aGUgdHJh bnNhY3Rpb24uICovIHR5cGVkZWYgZW51bQ0KPiAgew0KPiAtIExvZ2ljYWxSZXBNc2dUeXBlIGNv bW1hbmQ7IC8qIDAgaWYgaW52YWxpZCAqLw0KPiAtIExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVs Ow0KPiArIC8qIFRoZSBhY3Rpb24gZm9yIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiAqLw0K PiArIFRBX0FQUExZX0lOX0xFQURFUl9XT1JLRVIsDQo+IA0KPiAtIC8qIFJlbW90ZSBub2RlIGlu Zm9ybWF0aW9uICovDQo+IC0gaW50IHJlbW90ZV9hdHRudW07IC8qIC0xIGlmIGludmFsaWQgKi8N Cj4gLSBUcmFuc2FjdGlvbklkIHJlbW90ZV94aWQ7DQo+IC0gWExvZ1JlY1B0ciBmaW5pc2hfbHNu Ow0KPiAtIGNoYXIgICAgKm9yaWdpbl9uYW1lOw0KPiAtfSBBcHBseUVycm9yQ2FsbGJhY2tBcmc7 DQo+ICsgLyogQWN0aW9ucyBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4gKi8gIFRBX1NFUklB TElaRV9UT19GSUxFLA0KPiArVEFfQVBQTFlfSU5fUEFSQUxMRUxfV09SS0VSLCAgVEFfU0VORF9U T19QQVJBTExFTF9XT1JLRVIgfQ0KPiArVHJhbnNhY3Rpb25BcHBseUFjdGlvbjsNCj4gDQo+IEkg dGhpbmsgZWFjaCBhY3Rpb24gbmVlZHMgZXhwbGFuYXRpb24gYXRvcCB0aGlzIGVudW0gdHlwZWRl Zi4NCg0KQWRkZWQuDQoNCj4gNC4NCj4gQEAgLTExNDksMjQgKzEzMTUsMTQgQEAgc3RhdGljIHZv aWQNCj4gIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKSB7IC4uLg0KPiAr IGVsc2UgaWYgKGFwcGx5X2FjdGlvbiA9PSBUQV9TRVJJQUxJWkVfVE9fRklMRSkgew0KPiArIC8q DQo+ICsgKiBGb3IgdGhlIGZpcnN0IHN0cmVhbSBzdGFydCwgY2hlY2sgaWYgdGhlcmUgaXMgYW55 IGZyZWUgYXBwbHkNCj4gKyAqIHBhcmFsbGVsIHdvcmtlciB3ZSBjYW4gdXNlIHRvIHByb2Nlc3Mg dGhpcyB0cmFuc2FjdGlvbi4NCj4gKyAqLw0KPiArIGlmIChmaXJzdF9zZWdtZW50KQ0KPiArIHdp bmZvID0gcGFyYWxsZWxfYXBwbHlfc3RhcnRfd29ya2VyKHN0cmVhbV94aWQpOw0KPiANCj4gLSAv KiBvcGVuIHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uICovDQo+IC0gc3RyZWFt X29wZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9z ZWdtZW50KTsNCj4gKyBpZiAod2luZm8pDQo+ICsgew0KPiArIC8qDQo+ICsgKiBJZiB3ZSBoYXZl IGZvdW5kIGEgZnJlZSB3b3JrZXIsIHRoZW4gd2UgcGFzcyB0aGUgZGF0YSB0byB0aGF0DQo+ICsg KiB3b3JrZXIuDQo+ICsgKi8NCj4gKyBwYXJhbGxlbF9hcHBseV9zZW5kX2RhdGEod2luZm8sIHMt Pmxlbiwgcy0+ZGF0YSk7DQo+IA0KPiAtIC8qIGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdt ZW50LCBvcGVuIGV4aXN0aW5nIHN1YnhhY3QgZmlsZSAqLw0KPiAtIGlmICghZmlyc3Rfc2VnbWVu dCkNCj4gLSBzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJl YW1feGlkKTsNCj4gKyBuY2hhbmdlcyA9IDA7DQo+IA0KPiAtIHBnc3RhdF9yZXBvcnRfYWN0aXZp dHkoU1RBVEVfUlVOTklORywgTlVMTCk7DQo+ICsgLyogQ2FjaGUgdGhlIGFwcGx5IHBhcmFsbGVs IHdvcmtlciBmb3IgdGhpcyB0cmFuc2FjdGlvbi4gKi8NCj4gKyBzdHJlYW1fYXBwbHlfd29ya2Vy ID0gd2luZm87IH0NCj4gLi4uDQo+IA0KPiBUaGlzIGxvb2tzIG9kZCB0byBtZSBpbiB0aGUgc2Vu c2UgdGhhdCBldmVuIGlmIHRoZSBhY3Rpb24gaXMNCj4gVEFfU0VSSUFMSVpFX1RPX0ZJTEUsIHdl IHN0aWxsIHNlbmQgdGhlIGluZm9ybWF0aW9uIHRvIHRoZSBwYXJhbGxlbA0KPiB3b3JrZXIuIFdv bid0IGl0IGJlIGJldHRlciBpZiB3ZSBjYWxsIHBhcmFsbGVsX2FwcGx5X3N0YXJ0X3dvcmtlcigp DQo+IGZvciBmaXJzdF9zZWdtZW50IGJlZm9yZSBjaGVja2luZyBhcHBseV9hY3Rpb24gd2l0aA0K PiBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKCkuIFRoYXQgd2F5IHdlIGNhbiBhdm9pZCB0 aGlzIHNwZWNpYWwNCj4gY2FzZSBoYW5kbGluZy4NCg0KQ2hhbmdlZCBhcyBzdWdnZXN0ZWQuDQoN Cj4gNS4NCj4gKy8qDQo+ICsgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gYmV0d2Vl biBhcHBseSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBhcHBseQ0KPiArICogcGFyYWxsZWwgd29y a2Vycy4NCj4gKyAqLw0KPiArdHlwZWRlZiBzdHJ1Y3QgQXBwbHlQYXJhbGxlbFdvcmtlclNoYXJl ZA0KPiArew0KPiArIHNsb2NrX3QgbXV0ZXg7DQo+ICsNCj4gKyBib29sIGluX3VzZTsNCj4gKw0K PiArIC8qIExvZ2ljYWwgcHJvdG9jb2wgdmVyc2lvbi4gKi8NCj4gKyB1aW50MzIgcHJvdG9fdmVy c2lvbjsNCj4gKw0KPiArIFRyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZDsNCj4gDQo+IEFyZSB3ZSB1 c2luZyBzdHJlYW1feGlkIHBhc3NlZCBieSB0aGUgbGVhZGVyIGluIHBhcmFsbGVsIHdvcmtlcj8g SWYNCj4gc28sIGhvdz8gSWYgbm90LCB0aGVuIGNhbiB3ZSBkbyB3aXRob3V0IHRoaXM/DQoNCk5v LCBpdCBzZWVtcyB3ZSBkb24ndCBuZWVkIHRoaXMuIFJlbW92ZWQuDQoNCj4gNi4NCj4gK3ZvaWQN Cj4gK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lkKQ0KPiB7DQo+IC4uLg0KPiArIC8q IE9LIHRvIHByb2Nlc3MgbWVzc2FnZXMuICBSZXNldCB0aGUgZmxhZyBzYXlpbmcgdGhlcmUgYXJl IG1vcmUgdG8gZG8uICovDQo+ICsgUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gZmFsc2U7 DQo+IA0KPiBJIGRvbid0IHVuZGVyc3RhbmQgdGhlIG1lYW5pbmcgb2YgdGhlIHNlY29uZCBwYXJ0 IG9mIHRoZSBjb21tZW50Lg0KPiBTaG91bGRuJ3Qgd2Ugc2F5OiAiUmVzZXQgdGhlIGZsYWcgc2F5 aW5nIHRoZXJlIGlzIG5vdGhpbmcgbW9yZSB0bw0KPiBkby4iPyBJIGtub3cgeW91IGhhdmUgY29w aWVkIGZyb20gdGhlIG90aGVyIHBhcnQgb2YgdGhlIGNvZGUgYnV0IHRoZXJlDQo+IGFsc28gSSBh bSBub3Qgc3VyZSBpZiBpdCBpcyBjb3JyZWN0Lg0KDQpJIGZlZWwgdGhlIGNvbW1lbnQgaGVyZSBp cyBub3QgdmVyeSBoZWxwZnVsLCBzbyBJIHJlbW92ZWQgdGhpcy4NCg0KPiA3Lg0KPiArc3RhdGlj IExpc3QgKkFwcGx5UGFyYWxsZWxXb3JrZXJzRnJlZUxpc3QgPSBOSUw7DQo+ICtzdGF0aWMgTGlz dCAqQXBwbHlQYXJhbGxlbFdvcmtlcnNMaXN0ID0gTklMOw0KPiANCj4gRG8gd2UgcmVhbGx5IG5l ZWQgdG8gbWFpbnRhaW4gdHdvIGRpZmZlcmVudCB3b3JrZXJzJyBsaXN0cz8gSWYgc28sDQo+IHdo YXQgaXMgdGhlIGFkdmFudGFnZT8gSSB0aGluayB0aGVyZSB3b24ndCBiZSBtYW55IHBhcmFsbGVs IGFwcGx5DQo+IHdvcmtlcnMsIHNvIGV2ZW4gaWYgbWFpbnRhaW4gb25lIGxpc3QgYW5kIHNlYXJj aCBpdCwgdGhlcmUgc2hvdWxkbid0DQo+IGJlIGFueSBwZXJmb3JtYW5jZSBpbXBhY3QuIEkgZmVl bCBtYWludGFpbmluZyB0d28gbGlzdHMgZm9yIHRoaXMNCj4gcHVycG9zZSBpcyBhIGJpdCBjb21w bGV4IGFuZCBoYXMgbW9yZSBjaGFuY2VzIG9mIGJ1Z3MsIHNvIHdlIHNob3VsZA0KPiB0cnkgdG8g YXZvaWQgaXQgaWYgcG9zc2libGUuDQoNCkFncmVlZCwgSSByZW1vdmVkIHRoZSBBcHBseVBhcmFs bGVsV29ya2Vyc0xpc3QgYW5kIHJldXNlZA0KQXBwbHlQYXJhbGxlbFdvcmtlcnNMaXN0IGluIG90 aGVyIHBsYWNlcy4NCg0KQXR0YWNoIHRoZSBuZXcgdmVyc2lvbiBwYXRjaCBzZXQgd2hpY2ggYWRk cmVzc2VkIGFib3ZlIGNvbW1lbnRzDQphbmQgY29tbWVudHMgZnJvbVsxXS4NCg0KWzFdIGh0dHBz Oi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FBNGVLMSUyQmU4SnNpQzh1TVpQVTI1 eFFSeXhOdlZTMjRNNCUzRFp5LXhEMThqelglMkJ2cm1BJTQwbWFpbC5nbWFpbC5jb20NCg0KQmVz dCByZWdhcmRzLA0KSG91IHpqDQo= --_006_OS0PR01MB5716546863340CA19EC5F8C394789OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v26-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v26-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v26-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=7833; creation-date="Wed, 31 Aug 2022 09:46:00 GMT"; modification-date="Wed, 31 Aug 2022 09:55:41 GMT" Content-Transfer-Encoding: base64 RnJvbSA3YTAwZTU2YjZmYjcxZDFjYjU4NzRlMTYyNzc1ZjczNTNhYTUyODczIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgMTEgQXVnIDIwMjIgMTE6NDk6MDggKzA4MDAKU3ViamVjdDogW1BBVENI IHYyNiA1LzVdIEFkZCBhIG1haW5fd29ya2VyX3BpZCB0byBwZ19zdGF0X3N1YnNjcmlwdGlvbgoK bWFpbl93b3JrZXJfcGlkIGlzIFByb2Nlc3MgSUQgb2YgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIs IGlmIHRoaXMgcHJvY2VzcyBpcyBhCmFwcGx5IHBhcmFsbGVsIHdvcmtlci4gTlVMTCBpZiB0aGlz IHByb2Nlc3MgaXMgYSBsZWFkZXIgYXBwbHkgd29ya2VyIG9yIGEKc3luY2hyb25pemF0aW9uIHdv cmtlci4KClRoZSBuZXcgY29sdW1uIGNhbiBtYWtlIGl0IGVhc2llciB0byBkaXN0aW5ndWlzaCBs ZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBhcHBseQpwYXJhbGxlbCB3b3JrZXIgd2hpY2ggaXMgYWxz byBzaW1pbGFyIHRvIHRoZSAnbGVhZGVyX3BpZCcgY29sdW1uIGluCnBnX3N0YXRfYWN0aXZpdHku Ci0tLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgIHwgMjEgKysr KysrKysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwg ICAgICAgfCAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMg fCAyOCArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3Byb2MuZGF0ICAgICAgICAgICAgfCAgNiArKystLS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvcnVsZXMub3V0ICAgICAgICB8ICAzICsrLQogNSBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRp b25zKCspLCAxOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRv cmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAppbmRleCAxZDk1MDlhLi4y YzJlOTYxIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2Rv Yy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKQEAgLTMxODAsMTEgKzMxODAsMjIgQEAgU0VMRUNU IHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBX SEVSRSB3YWl0X2V2ZW50IGkKIAogICAgICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8 c3RydWN0ZmllbGQ+YXBwbHlfbGVhZGVyX3BpZDwvc3RydWN0ZmllbGQ+IDx0eXBlPmludGVnZXI8 L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBQcm9jZXNzIElEIG9m IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyLCBpZiB0aGlzIHByb2Nlc3MgaXMgYW4gYXBwbHkKKyAg ICAgICBwYXJhbGxlbCB3b3JrZXIuIE5VTEwgaWYgdGhpcyBwcm9jZXNzIGlzIGEgbGVhZGVyIGFw cGx5IHdvcmtlciBvciBhCisgICAgICAgc3luY2hyb25pemF0aW9uIHdvcmtlci4KKyAgICAgIDwv cGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4K ICAgICAgICA8c3RydWN0ZmllbGQ+cmVsaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+ CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBPSUQgb2YgdGhlIHJlbGF0aW9u IHRoYXQgdGhlIHdvcmtlciBpcyBzeW5jaHJvbml6aW5nOyBudWxsIGZvciB0aGUKLSAgICAgICBt YWluIGFwcGx5IHdvcmtlcgorICAgICAgIG1haW4gYXBwbHkgd29ya2VyIGFuZCB0aGUgYXBwbHkg cGFyYWxsZWwgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKQEAg LTMxOTQsNyArMzIwNSw3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVu dCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICA8L3BhcmE+ CiAgICAgICA8cGFyYT4KICAgICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiByZWNl aXZlZCwgdGhlIGluaXRpYWwgdmFsdWUgb2YKLSAgICAgICB0aGlzIGZpZWxkIGJlaW5nIDAKKyAg ICAgICB0aGlzIGZpZWxkIGJlaW5nIDA7IG51bGwgZm9yIHRoZSBhcHBseSBwYXJhbGxlbCB3b3Jr ZXIKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzIwMyw3ICszMjE0 LDggQEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3Rh dF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGFzdF9t c2dfc2VuZF90aW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6b25l PC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgU2VuZCB0aW1lIG9m IGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyCisgICAgICAgU2Vu ZCB0aW1lIG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyOyBu dWxsIGZvciB0aGUKKyAgICAgICBhcHBseSBwYXJhbGxlbCB3b3JrZXIKICAgICAgIDwvcGFyYT48 L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzIxMiw3ICszMjI0LDggQEAgU0VMRUNUIHBpZCwg d2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSB3 YWl0X2V2ZW50IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGFzdF9tc2dfcmVjZWlwdF90aW1lPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6b25lPC90eXBlPgogICAgICAg PC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgUmVjZWlwdCB0aW1lIG9mIGxhc3QgbWVzc2Fn ZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyCisgICAgICAgUmVjZWlwdCB0aW1lIG9m IGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyOyBudWxsIGZvcgor ICAgICAgIHRoZSBhcHBseSBwYXJhbGxlbCB3b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5Pgog ICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDY1MmQ3 NmYuLmQzNTc0OGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdz LnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk0Nyw2 ICs5NDcsNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3N1YnNjcmlwdGlvbiBBUwogICAgICAgICAg ICAgc3Uub2lkIEFTIHN1YmlkLAogICAgICAgICAgICAgc3Uuc3VibmFtZSwKICAgICAgICAgICAg IHN0LnBpZCwKKyAgICAgICAgICAgIHN0LmFwcGx5X2xlYWRlcl9waWQsCiAgICAgICAgICAgICBz dC5yZWxpZCwKICAgICAgICAgICAgIHN0LnJlY2VpdmVkX2xzbiwKICAgICAgICAgICAgIHN0Lmxh c3RfbXNnX3NlbmRfdGltZSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNo ZXIuYwppbmRleCA3YTQ2Y2MyLi45OWY0OTFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9sYXVuY2hlci5jCkBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBJc0xvZ2ljYWxMYXVuY2hl cih2b2lkKQogRGF0dW0KIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5DVElPTl9BUkdT KQogewotI2RlZmluZSBQR19TVEFUX0dFVF9TVUJTQ1JJUFRJT05fQ09MUwk4CisjZGVmaW5lIFBH X1NUQVRfR0VUX1NVQlNDUklQVElPTl9DT0xTCTkKIAlPaWQJCQlzdWJpZCA9IFBHX0FSR0lTTlVM TCgwKSA/IEludmFsaWRPaWQgOiBQR19HRVRBUkdfT0lEKDApOwogCWludAkJCWk7CiAJUmV0dXJu U2V0SW5mbyAqcnNpbmZvID0gKFJldHVyblNldEluZm8gKikgZmNpbmZvLT5yZXN1bHRpbmZvOwpA QCAtMTA3OSwyNiArMTA3OSwzMiBAQCBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oUEdfRlVOQ1RJ T05fQVJHUykKIAkJZWxzZQogCQkJbnVsbHNbMV0gPSB0cnVlOwogCQl2YWx1ZXNbMl0gPSBJbnQz MkdldERhdHVtKHdvcmtlcl9waWQpOwotCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZCh3b3JrZXIu bGFzdF9sc24pKQorCisJCWlmICh3b3JrZXIuYXBwbHlfbGVhZGVyX3BpZCA9PSAwKQogCQkJbnVs bHNbM10gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbM10gPSBMU05HZXREYXR1bSh3b3JrZXIu bGFzdF9sc24pOwotCQlpZiAod29ya2VyLmxhc3Rfc2VuZF90aW1lID09IDApCisJCQl2YWx1ZXNb M10gPSBJbnQzMkdldERhdHVtKHdvcmtlci5hcHBseV9sZWFkZXJfcGlkKTsKKworCQlpZiAoWExv Z1JlY1B0cklzSW52YWxpZCh3b3JrZXIubGFzdF9sc24pKQogCQkJbnVsbHNbNF0gPSB0cnVlOwog CQllbHNlCi0JCQl2YWx1ZXNbNF0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5sYXN0X3Nl bmRfdGltZSk7Ci0JCWlmICh3b3JrZXIubGFzdF9yZWN2X3RpbWUgPT0gMCkKKwkJCXZhbHVlc1s0 XSA9IExTTkdldERhdHVtKHdvcmtlci5sYXN0X2xzbik7CisJCWlmICh3b3JrZXIubGFzdF9zZW5k X3RpbWUgPT0gMCkKIAkJCW51bGxzWzVdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzVdID0g VGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9yZWN2X3RpbWUpOwotCQlpZiAoWExvZ1Jl Y1B0cklzSW52YWxpZCh3b3JrZXIucmVwbHlfbHNuKSkKKwkJCXZhbHVlc1s1XSA9IFRpbWVzdGFt cFR6R2V0RGF0dW0od29ya2VyLmxhc3Rfc2VuZF90aW1lKTsKKwkJaWYgKHdvcmtlci5sYXN0X3Jl Y3ZfdGltZSA9PSAwKQogCQkJbnVsbHNbNl0gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbNl0g PSBMU05HZXREYXR1bSh3b3JrZXIucmVwbHlfbHNuKTsKLQkJaWYgKHdvcmtlci5yZXBseV90aW1l ID09IDApCisJCQl2YWx1ZXNbNl0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5sYXN0X3Jl Y3ZfdGltZSk7CisJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5yZXBseV9sc24pKQog CQkJbnVsbHNbN10gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbN10gPSBUaW1lc3RhbXBUekdl dERhdHVtKHdvcmtlci5yZXBseV90aW1lKTsKKwkJCXZhbHVlc1s3XSA9IExTTkdldERhdHVtKHdv cmtlci5yZXBseV9sc24pOworCQlpZiAod29ya2VyLnJlcGx5X3RpbWUgPT0gMCkKKwkJCW51bGxz WzhdID0gdHJ1ZTsKKwkJZWxzZQorCQkJdmFsdWVzWzhdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3 b3JrZXIucmVwbHlfdGltZSk7CiAKIAkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRS ZXN1bHQsIHJzaW5mby0+c2V0RGVzYywKIAkJCQkJCQkgdmFsdWVzLCBudWxscyk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdAppbmRleCBiZTQ3NTgzLi5iNjg4NDNkIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJv Yy5kYXQKQEAgLTUzOTMsOSArNTM5Myw5IEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X3N1 YnNjcmlwdGlvbicsIHByb3Jvd3MgPT4gJzEwJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAogICBwcm9y ZXRzZXQgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywKICAg cHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCi0gIHByb2FsbGFy Z3R5cGVzID0+ICd7b2lkLG9pZCxvaWQsaW50NCxwZ19sc24sdGltZXN0YW1wdHosdGltZXN0YW1w dHoscGdfbHNuLHRpbWVzdGFtcHR6fScsCi0gIHByb2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvLG8s byxvLG99JywKLSAgcHJvYXJnbmFtZXMgPT4gJ3tzdWJpZCxzdWJpZCxyZWxpZCxwaWQscmVjZWl2 ZWRfbHNuLGxhc3RfbXNnX3NlbmRfdGltZSxsYXN0X21zZ19yZWNlaXB0X3RpbWUsbGF0ZXN0X2Vu ZF9sc24sbGF0ZXN0X2VuZF90aW1lfScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7b2lkLG9pZCxv aWQsaW50NCxpbnQ0LHBnX2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eixwZ19sc24sdGltZXN0 YW1wdHp9JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sbyxvfScsCisgIHBy b2FyZ25hbWVzID0+ICd7c3ViaWQsc3ViaWQscmVsaWQscGlkLGFwcGx5X2xlYWRlcl9waWQscmVj ZWl2ZWRfbHNuLGxhc3RfbXNnX3NlbmRfdGltZSxsYXN0X21zZ19yZWNlaXB0X3RpbWUsbGF0ZXN0 X2VuZF9sc24sbGF0ZXN0X2VuZF90aW1lfScsCiAgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfc3Vi c2NyaXB0aW9uJyB9LAogeyBvaWQgPT4gJzIwMjYnLCBkZXNjciA9PiAnc3RhdGlzdGljczogY3Vy cmVudCBiYWNrZW5kIFBJRCcsCiAgIHByb25hbWUgPT4gJ3BnX2JhY2tlbmRfcGlkJywgcHJvdm9s YXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVs ZXMub3V0CmluZGV4IDdlYzNkMjYuLjAwN2U3MTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVs ZXMub3V0CkBAIC0yMDkxLDYgKzIwOTEsNyBAQCBwZ19zdGF0X3NzbHwgU0VMRUNUIHMucGlkLAog cGdfc3RhdF9zdWJzY3JpcHRpb258IFNFTEVDVCBzdS5vaWQgQVMgc3ViaWQsCiAgICAgc3Uuc3Vi bmFtZSwKICAgICBzdC5waWQsCisgICAgc3QuYXBwbHlfbGVhZGVyX3BpZCwKICAgICBzdC5yZWxp ZCwKICAgICBzdC5yZWNlaXZlZF9sc24sCiAgICAgc3QubGFzdF9tc2dfc2VuZF90aW1lLApAQCAt MjA5OCw3ICsyMDk5LDcgQEAgcGdfc3RhdF9zdWJzY3JpcHRpb258IFNFTEVDVCBzdS5vaWQgQVMg c3ViaWQsCiAgICAgc3QubGF0ZXN0X2VuZF9sc24sCiAgICAgc3QubGF0ZXN0X2VuZF90aW1lCiAg ICBGUk9NIChwZ19zdWJzY3JpcHRpb24gc3UKLSAgICAgTEVGVCBKT0lOIHBnX3N0YXRfZ2V0X3N1 YnNjcmlwdGlvbihOVUxMOjpvaWQpIHN0KHN1YmlkLCByZWxpZCwgcGlkLCByZWNlaXZlZF9sc24s IGxhc3RfbXNnX3NlbmRfdGltZSwgbGFzdF9tc2dfcmVjZWlwdF90aW1lLCBsYXRlc3RfZW5kX2xz biwgbGF0ZXN0X2VuZF90aW1lKSBPTiAoKHN0LnN1YmlkID0gc3Uub2lkKSkpOworICAgICBMRUZU IEpPSU4gcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKE5VTEw6Om9pZCkgc3Qoc3ViaWQsIHJlbGlk LCBwaWQsIGFwcGx5X2xlYWRlcl9waWQsIHJlY2VpdmVkX2xzbiwgbGFzdF9tc2dfc2VuZF90aW1l LCBsYXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVzdF9lbmRfbHNuLCBsYXRlc3RfZW5kX3RpbWUp IE9OICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7CiBwZ19zdGF0X3N1YnNjcmlwdGlvbl9zdGF0c3wg U0VMRUNUIHNzLnN1YmlkLAogICAgIHMuc3VibmFtZSwKICAgICBzcy5hcHBseV9lcnJvcl9jb3Vu dCwKLS0gCjIuNy4yLndpbmRvd3MuMQoK --_006_OS0PR01MB5716546863340CA19EC5F8C394789OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v26-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v26-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v26-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=132262; creation-date="Wed, 31 Aug 2022 09:46:00 GMT"; modification-date="Wed, 31 Aug 2022 09:55:42 GMT" Content-Transfer-Encoding: base64 RnJvbSBlZDVlYTE0MjBkMjJkNjM1NDA3YmI2ZTZkMjZkYWVmODQ2MmRkNTI0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyNiAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRoZSBmaWxlIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUgdHJh bnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rpb25z LCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVsIHdv cmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBwbHkg d29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJlYW0g aXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwKc2VuZCBjaGFuZ2Vz IHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlcgp3aWxsIGRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0aW5n IGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2UKa2VlcCB0aGlzIHdvcmtlciBhc3NpZ25lZCB0aWxs IHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdApmb3IgdGhl IHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3JkZXJp bmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZSBpbiBtb3N0IGNh c2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlCmlzIG5vIHdvcmtlciBhdmFpbGFi bGUuCgpUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJlYW1pbmcn IHBhcmFtZXRlciBzbyB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8gYXBwbHkg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiBhbiBwYXJhbGxlbCBhcHBseQp3b3JrZXIgb3Ig c3BpbGwgdGhlIGNoYW5nZSB0byBkaXNrLiBUaGUgdXNlciBjYW4gc2V0IHRoZSBzdHJlYW1pbmcg cGFyYW1ldGVyIHRvCidvbi9vZmYnLCAncGFyYWxsZWwnLiBUaGUgcGFyYW1ldGVyIHZhbHVlICdw YXJhbGxlbCcgbWVhbnMgdGhlIHN0cmVhbWluZyB3aWxsCmJlIGFwcGxpZWQgdmlhIGFuIHBhcmFs bGVsIGFwcGx5IHdvcmtlciwgaWYgYXZhaWxhYmxlLiBUaGUgcGFyYW1ldGVyIHZhbHVlCidvbicg bWVhbnMgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB3aWxsIGJlIHNwaWxsZWQgdG8gZGlzay4g VGhlIGRlZmF1bHQgdmFsdWUKaXMgJ29mZicgKHNhbWUgYXMgY3VycmVudCBiZWhhdmlvdXIpLgoK SW4gYWRkaXRpb24sIHRoZSBwYXRjaCBleHRlbmRzIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIFNU UkVBTV9BQk9SVCBtZXNzYWdlIHNvCnRoYXQgYWJvcnRfdGltZSBhbmQgYWJvcnRfbHNuIGNhbiBh bHNvIGJlIHNlbnQgd2hpY2ggY2FuIGJlIHVzZWQgdG8gdXBkYXRlIHRoZQpyZXBsaWNhdGlvbiBv cmlnaW4gaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdoZW4gdGhlIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiBpcwphYm9ydGVkLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAxMSArLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDI4ICstCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBs aWNhdGlvbi5zZ21sICAgICAgICAgICAgICB8ICAgMTMgKy0KIGRvYy9zcmMvc2dtbC9wcm90b2Nv bC5zZ21sICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyOSArLQogZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgICAgICAgfCAgIDI0ICstCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgICAgICAgICAgICAgICAgICB8ICAgMTMgKwogc3JjL2Jh Y2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jICAgICAgICAgICAgfCAgIDY2ICstCiBz cmMvYmFja2VuZC9saWJwcS9wcW1xLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTgg Ky0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICAgICAgIHwg ICAgMyArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlICAgICAgICAg ICB8ICAgIDEgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5j ICAgICAgfCAxMDg5ICsrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RlY29kZS5jICAgICAgICAgICB8ICAgMTAgKy0KIHNyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICAgICAgIHwgIDE2NiArKy0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYyAgICAgICAgICAgIHwgICA0MSArLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgICAgfCAgIDEwICstCiBz cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jICAgICAgICB8ICAgIDYg Ky0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICAgICAgIHwg IDgzMCArKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bn b3V0cHV0LmMgICAgICAgIHwgICAgNiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3Np Z25hbC5jICAgICAgICAgICAgICAgfCAgICA0ICsKIHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgMyArCiBzcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS93YWl0X2V2ZW50LmMgICAgICAgICAgICB8ICAgIDMgKwogc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEyICsKIHNyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSAgICAgIHwgICAgMSArCiBzcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy9p bmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAgICAgICAgIHwgICAyMSArLQog c3JjL2luY2x1ZGUvbm9kZXMvcGdfbGlzdC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEx ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oICAgICAgICAgIHwg ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAgICAgICAg ICB8ICAgMjcgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCAgICAg ICAgICAgIHwgICAgNiArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgg ICAgICAgICAgICB8ICAgIDcgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRl cm5hbC5oICAgICAgICAgIHwgIDEyNCArKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25h bC5oICAgICAgICAgICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2 ZW50LmggICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9zdWJzY3JpcHRpb24ub3V0ICAgICAgICAgfCAgIDEyICstCiBzcmMvdGVzdC9yZWdyZXNz L3NxbC9zdWJzY3JpcHRpb24uc3FsICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICAgICAgIHwgICAgNCArCiAzNiBmaWxl cyBjaGFuZ2VkLCAyMzYyIGluc2VydGlvbnMoKyksIDI1MiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3 b3JrZXIuYwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3Ny Yy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggMDBmODMzZC4uZTVlOGI0ZCAxMDA2NDQKLS0tIGEv ZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNn bWwKQEAgLTc4OTIsMTEgKzc4OTIsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0 O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKIAogICAg ICA8cm93PgogICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9z dHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3Ry ZWFtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAg IDxwYXJhPgotICAgICAgIElmIHRydWUsIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBhbGxvdyBzdHJl YW1pbmcgb2YgaW4tcHJvZ3Jlc3MKLSAgICAgICB0cmFuc2FjdGlvbnMKKyAgICAgICBDb250cm9s cyBob3cgdG8gaGFuZGxlIHRoZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25z OgorICAgICAgIDxsaXRlcmFsPmY8L2xpdGVyYWw+ID0gZGlzYWxsb3cgc3RyZWFtaW5nIG9mIGlu LXByb2dyZXNzIHRyYW5zYWN0aW9ucywKKyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiA9IHNw aWxsIHRoZSBjaGFuZ2VzIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGRp c2sgYW5kIGFwcGx5IGF0IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBv biB0aGUKKyAgICAgICBwdWJsaXNoZXIsCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBh cHBseSBjaGFuZ2VzIGRpcmVjdGx5IHVzaW5nIGFuIHBhcmFsbGVsIGFwcGx5CisgICAgICAgd29y a2VyIGlmIGF2YWlsYWJsZSAoc2FtZSBhcyAndCcgaWYgbm8gd29ya2VyIGlzIGF2YWlsYWJsZSkK ICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL2NvbmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IGE1Y2Q0 ZTQuLmEwNTE0OTAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTQ5NDAsNyArNDk0MCw4IEBAIEFOWSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNl YWJsZSBjbGFzcz0iCiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIFNw ZWNpZmllcyBtYXhpbXVtIG51bWJlciBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcnMuIFRo aXMgaW5jbHVkZXMKLSAgICAgICAgYm90aCBhcHBseSB3b3JrZXJzIGFuZCB0YWJsZSBzeW5jaHJv bml6YXRpb24gd29ya2Vycy4KKyAgICAgICAgYXBwbHkgbGVhZGVyIHdvcmtlcnMsIHBhcmFsbGVs IGFwcGx5IHdvcmtlcnMsIGFuZCB0YWJsZSBzeW5jaHJvbml6YXRpb24KKyAgICAgICAgd29ya2Vy cy4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIExvZ2ljYWwgcmVwbGlj YXRpb24gd29ya2VycyBhcmUgdGFrZW4gZnJvbSB0aGUgcG9vbCBkZWZpbmVkIGJ5CkBAIC00OTgw LDYgKzQ5ODEsMzEgQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1fc3lu YzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAgICAgIDwvbGlzdGl0ZW0+ CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0ZW50cnkgaWQ9Imd1Yy1tYXgt cGFyYWxsZWwtYXBwbHktd29ya2Vycy1wZXItc3Vic2NyaXB0aW9uIiB4cmVmbGFiZWw9Im1heF9w YXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24iPgorICAgICAgPHRlcm0+PHZh cm5hbWU+bWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbjwvdmFybmFt ZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJp bWFyeT48dmFybmFtZT5tYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9u PC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwvaW5k ZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJhPgor ICAgICAgICBNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHBlciBzdWJz Y3JpcHRpb24uIFRoaXMKKyAgICAgICAgcGFyYW1ldGVyIGNvbnRyb2xzIHRoZSBhbW91bnQgb2Yg cGFyYWxsZWxpc20gZm9yIHN0cmVhbWluZyBvZgorICAgICAgICBpbi1wcm9ncmVzcyB0cmFuc2Fj dGlvbnMgd2l0aCBzdWJzY3JpcHRpb24gcGFyYW1ldGVyCisgICAgICAgIDxsaXRlcmFsPnN0cmVh bWluZyA9IHBhcmFsbGVsPC9saXRlcmFsPi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+ CisgICAgICAgIFRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBw b29sIGRlZmluZWQgYnkKKyAgICAgICAgPHZhcm5hbWU+bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25f d29ya2VyczwvdmFybmFtZT4uCisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAg ICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAyLiBUaGlzIHBhcmFtZXRlciBjYW4gb25seSBiZSBzZXQg aW4gdGhlCisgICAgICAgIDxmaWxlbmFtZT5wb3N0Z3Jlc3FsLmNvbmY8L2ZpbGVuYW1lPiBmaWxl IG9yIG9uIHRoZSBzZXJ2ZXIgY29tbWFuZAorICAgICAgICBsaW5lLgorICAgICAgIDwvcGFyYT4K KyAgICAgIDwvbGlzdGl0ZW0+CisgICAgIDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFi bGVsaXN0PgogICAgIDwvc2VjdDI+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s CmluZGV4IGJkZjFlN2IuLmEyNGNhMTAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24u c2dtbApAQCAtMTE1Myw2ICsxMTUzLDE2IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBk YXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICBt aWdodCBub3QgdmlvbGF0ZSBhbnkgY29uc3RyYWludC4gIFRoaXMgY2FuIGVhc2lseSBtYWtlIHRo ZSBzdWJzY3JpYmVyCiAgICBpbmNvbnNpc3RlbnQuCiAgIDwvcGFyYT4KKworICA8cGFyYT4KKyAg IFdoZW4gdGhlIHN0cmVhbWluZyBtb2RlIGlzIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPiwg dGhlIGZpbmlzaCBMU04gb2YKKyAgIGZhaWxlZCB0cmFuc2FjdGlvbnMgbWF5IG5vdCBiZSBsb2dn ZWQuIEluIHRoYXQgY2FzZSwgaXQgbWF5IGJlIG5lY2Vzc2FyeSB0bworICAgY2hhbmdlIHRoZSBz dHJlYW1pbmcgbW9kZSB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+b2ZmPC9s aXRlcmFsPiBhbmQKKyAgIGNhdXNlIHRoZSBzYW1lIGNvbmZsaWN0cyBhZ2FpbiBzbyB0aGUgZmlu aXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdpbGwKKyAgIGJlIHdyaXR0ZW4gdG8g dGhlIHNlcnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ugb2YgZmluaXNoIExTTiwgcGxlYXNlIHJlZmVy IHRvIDxsaW5rCisgICBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24iPjxjb21tYW5kPkFM VEVSIFNVQlNDUklQVElPTiAuLi4KKyAgIFNLSVA8L2NvbW1hbmQ+PC9saW5rPi4KKyAgPC9wYXJh PgogIDwvc2VjdDE+CiAKICA8c2VjdDEgaWQ9ImxvZ2ljYWwtcmVwbGljYXRpb24tcmVzdHJpY3Rp b25zIj4KQEAgLTEzMzQsNyArMTM0NCw4IEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBk YXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICBz dWJzY3JpcHRpb24uICBBIGRpc2FibGVkIHN1YnNjcmlwdGlvbiBvciBhIGNyYXNoZWQgc3Vic2Ny aXB0aW9uIHdpbGwgaGF2ZQogICAgemVybyByb3dzIGluIHRoaXMgdmlldy4gIElmIHRoZSBpbml0 aWFsIGRhdGEgc3luY2hyb25pemF0aW9uIG9mIGFueQogICAgdGFibGUgaXMgaW4gcHJvZ3Jlc3Ms IHRoZXJlIHdpbGwgYmUgYWRkaXRpb25hbCB3b3JrZXJzIGZvciB0aGUgdGFibGVzCi0gICBiZWlu ZyBzeW5jaHJvbml6ZWQuCisgICBiZWluZyBzeW5jaHJvbml6ZWQuIE1vcmVvdmVyLCBpZiB0aGUg c3RyZWFtaW5nIHRyYW5zYWN0aW9uIGlzIGFwcGxpZWQgaW4KKyAgIHBhcmFsbGVsLCB0aGVyZSB3 aWxsIGJlIGFkZGl0aW9uYWwgd29ya2Vycy4KICAgPC9wYXJhPgogIDwvc2VjdDE+CiAKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29s LnNnbWwKaW5kZXggODc4NzBjNS4uZDEwN2RkMiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3By b3RvY29sLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKQEAgLTMwOTYsNyAr MzA5Niw3IEBAIHBzcWwgImRibmFtZT1wb3N0Z3JlcyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMg IklERU5USUZZX1NZU1RFTTsiCiAgICAgIDxsaXN0aXRlbT4KICAgICAgIDxwYXJhPgogICAgICAg IFByb3RvY29sIHZlcnNpb24uIEN1cnJlbnRseSB2ZXJzaW9ucyA8bGl0ZXJhbD4xPC9saXRlcmFs PiwgPGxpdGVyYWw+MjwvbGl0ZXJhbD4sCi0gICAgICAgYW5kIDxsaXRlcmFsPjM8L2xpdGVyYWw+ IGFyZSBzdXBwb3J0ZWQuCisgICAgICAgPGxpdGVyYWw+MzwvbGl0ZXJhbD4sIGFuZCA8bGl0ZXJh bD40PC9saXRlcmFsPiBhcmUgc3VwcG9ydGVkLgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+ CiAgICAgICAgVmVyc2lvbiA8bGl0ZXJhbD4yPC9saXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25seSBm b3Igc2VydmVyIHZlcnNpb24gMTQKQEAgLTMxMDYsNiArMzEwNiwxMSBAQCBwc3FsICJkYm5hbWU9 cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAg ICAgIFZlcnNpb24gPGxpdGVyYWw+MzwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNl cnZlciB2ZXJzaW9uIDE1CiAgICAgICAgYW5kIGFib3ZlLCBhbmQgaXQgYWxsb3dzIHN0cmVhbWlu ZyBvZiB0d28tcGhhc2UgY29tbWl0cy4KICAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIFZlcnNpb24gPGxpdGVyYWw+NDwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNl cnZlciB2ZXJzaW9uIDE2CisgICAgICAgYW5kIGFib3ZlLCBhbmQgaXQgYWxsb3dzIGFwcGx5aW5n IHN0cmVhbXMgb2YgbGFyZ2UgaW4tcHJvZ3Jlc3MKKyAgICAgICB0cmFuc2FjdGlvbnMgaW4gcGFy YWxsZWwuCisgICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50 cnk+CiAKQEAgLTY4NzYsNiArNjg4MSwyOCBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGlj YXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAgICA8L3BhcmE+CiAg ICAgICAgPC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlz dGVudHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChYTG9nUmVjUHRyKTwvdGVybT4KKyAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgVGhlIExTTiBvZiB0aGUgYWJvcnQu IFRoaXMgZmllbGQgaXMgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24KKyAgICAgICAg IDQuCisgICAgICAgIDwvcGFyYT4KKyAgICAgICA8L2xpc3RpdGVtPgorICAgICAgPC92YXJsaXN0 ZW50cnk+CisKKyAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAgICAgPHRlcm0+SW50NjQgKFRpbWVz dGFtcFR6KTwvdGVybT4KKyAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgIDxwYXJhPgorICAgICAg ICAgQWJvcnQgdGltZXN0YW1wIG9mIHRoZSB0cmFuc2FjdGlvbi4gVGhlIHZhbHVlIGlzIGluIG51 bWJlcgorICAgICAgICAgb2YgbWljcm9zZWNvbmRzIHNpbmNlIFBvc3RncmVTUUwgZXBvY2ggKDIw MDAtMDEtMDEpLiBUaGlzIGZpZWxkIGlzCisgICAgICAgICBhdmFpbGFibGUgc2luY2UgcHJvdG9j b2wgdmVyc2lvbiA0LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAg IDwvdmFybGlzdGVudHJ5PgorCiAgICAgIDwvdmFyaWFibGVsaXN0PgogICAgIDwvbGlzdGl0ZW0+ CiAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRl X3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwKaW5kZXggNzM5MGM3MS4uY2JjZDAyYiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Jl Zi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf c3Vic2NyaXB0aW9uLnNnbWwKQEAgLTIxNywxMyArMjE3LDI5IEBAIENSRUFURSBTVUJTQ1JJUFRJ T04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1lPC9yZXBs YWNlYWJsCiAgICAgICAgPC92YXJsaXN0ZW50cnk+CiAKICAgICAgICA8dmFybGlzdGVudHJ5Pgot ICAgICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ICg8dHlwZT5ib29sZWFu PC90eXBlPik8L3Rlcm0+CisgICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJh bD4gKDx0eXBlPmVudW08L3R5cGU+KTwvdGVybT4KICAgICAgICAgPGxpc3RpdGVtPgogICAgICAg ICAgPHBhcmE+CiAgICAgICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5hYmxlIHN0cmVhbWlu ZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBmb3IgdGhpcyBzdWJzY3Jp cHRpb24uICBCeSBkZWZhdWx0LCBhbGwgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgYXJlIGZ1bGx5 IGRlY29kZWQgb24gdGhlIHB1Ymxpc2hlciBhbmQgb25seSB0aGVuIHNlbnQgdG8gdGhlCi0gICAg ICAgICAgc3Vic2NyaWJlciBhcyBhIHdob2xlLgorICAgICAgICAgIGZvciB0aGlzIHN1YnNjcmlw dGlvbi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxsaXRlcmFsPm9mZjwvbGl0ZXJhbD4sCisgICAg ICAgICAgbWVhbmluZyBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmdWxseSBkZWNvZGVkIG9uIHRoZSBw dWJsaXNoZXIgYW5kIG9ubHkKKyAgICAgICAgICB0aGVuIHNlbnQgdG8gdGhlIHN1YnNjcmliZXIg YXMgYSB3aG9sZS4KKyAgICAgICAgIDwvcGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAg ICAgSWYgc2V0IHRvIDxsaXRlcmFsPm9uPC9saXRlcmFsPiwgdGhlIGluY29taW5nIGNoYW5nZXMg YXJlIHdyaXR0ZW4gdG8KKyAgICAgICAgICB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGll ZCBvbmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcworICAgICAgICAgIGNvbW1pdHRlZCBvbiB0 aGUgcHVibGlzaGVyIGFuZCByZWNlaXZlZCBieSB0aGUgc3Vic2NyaWJlci4KKyAgICAgICAgIDwv cGFyYT4KKworICAgICAgICAgPHBhcmE+CisgICAgICAgICAgSWYgc2V0IHRvIDxsaXRlcmFsPnBh cmFsbGVsPC9saXRlcmFsPiwgaW5jb21pbmcgY2hhbmdlcyBhcmUgZGlyZWN0bHkKKyAgICAgICAg ICBhcHBsaWVkIHZpYSBvbmUgb2YgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIGlmIGF2YWls YWJsZS4gSWYgbm8KKyAgICAgICAgICBwYXJhbGxlbCB3b3JrZXIgaXMgZnJlZSB0byBoYW5kbGUg c3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGVuIHRoZQorICAgICAgICAgIGNoYW5nZXMgYXJlIHdy aXR0ZW4gdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBsaWVkIGFmdGVyIHRoZQorICAgICAgICAg IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMg d2hlbgorICAgICAgICAgIGFwcGx5aW5nIGNoYW5nZXMgaW4gYSBwYXJhbGxlbCB3b3JrZXIsIHRo ZSBmaW5pc2ggTFNOIG9mIHRoZQorICAgICAgICAgIHJlbW90ZSB0cmFuc2FjdGlvbiBtaWdodCBu b3QgYmUgcmVwb3J0ZWQgaW4gdGhlIHNlcnZlciBsb2cuCiAgICAgICAgICA8L3BhcmE+CiAgICAg ICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS94YWN0LmMKaW5kZXggNTBmMDkyZC4uNWE3NmQ5YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGFjdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hh Y3QuYwpAQCAtMTcxMSw2ICsxNzExLDcgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlz U3ViWGFjdCkKIAlpbnQJCQluY2hpbGRyZW47CiAJVHJhbnNhY3Rpb25JZCAqY2hpbGRyZW47CiAJ VGltZXN0YW1wVHogeGFjdF90aW1lOworCWJvb2wJCXJlcGxvcmlnaW47CiAKIAkvKgogCSAqIElm IHdlIGhhdmVuJ3QgYmVlbiBhc3NpZ25lZCBhbiBYSUQsIG5vYm9keSB3aWxsIGNhcmUgd2hldGhl ciB3ZSBhYm9ydGVkCkBAIC0xNzQxLDYgKzE3NDIsMTMgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9y dChib29sIGlzU3ViWGFjdCkKIAkJZWxvZyhQQU5JQywgImNhbm5vdCBhYm9ydCB0cmFuc2FjdGlv biAldSwgaXQgd2FzIGFscmVhZHkgY29tbWl0dGVkIiwKIAkJCSB4aWQpOwogCisJLyoKKwkgKiBB cmUgd2UgdXNpbmcgdGhlIHJlcGxpY2F0aW9uIG9yaWdpbnMgZmVhdHVyZT8gIE9yLCBpbiBvdGhl ciB3b3JkcywKKwkgKiBhcmUgd2UgcmVwbGF5aW5nIHJlbW90ZSBhY3Rpb25zPworCSAqLworCXJl cGxvcmlnaW4gPSAocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiAhPSBJbnZhbGlkUmVwT3JpZ2lu SWQgJiYKKwkJCQkgIHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0gRG9Ob3RSZXBsaWNhdGVJ ZCk7CisKIAkvKiBGZXRjaCB0aGUgZGF0YSB3ZSBuZWVkIGZvciB0aGUgYWJvcnQgcmVjb3JkICov CiAJbnJlbHMgPSBzbWdyR2V0UGVuZGluZ0RlbGV0ZXMoZmFsc2UsICZyZWxzKTsKIAluY2hpbGRy ZW4gPSB4YWN0R2V0Q29tbWl0dGVkQ2hpbGRyZW4oJmNoaWxkcmVuKTsKQEAgLTE3NjUsNiArMTc3 MywxMSBAQCBSZWNvcmRUcmFuc2FjdGlvbkFib3J0KGJvb2wgaXNTdWJYYWN0KQogCQkJCQkgICBN eVhhY3RGbGFncywgSW52YWxpZFRyYW5zYWN0aW9uSWQsCiAJCQkJCSAgIE5VTEwpOwogCisJaWYg KHJlcGxvcmlnaW4pCisJCS8qIE1vdmUgTFNOcyBmb3J3YXJkIGZvciB0aGlzIHJlcGxpY2F0aW9u IG9yaWdpbiAqLworCQlyZXBsb3JpZ2luX3Nlc3Npb25fYWR2YW5jZShyZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luX2xzbiwKKwkJCQkJCQkJICAgWGFjdExhc3RSZWNFbmQpOworCiAJLyoKIAkgKiBS ZXBvcnQgdGhlIGxhdGVzdCBhc3luYyBhYm9ydCBMU04sIHNvIHRoYXQgdGhlIFdBTCB3cml0ZXIg a25vd3MgdG8KIAkgKiBmbHVzaCB0aGlzIGFib3J0LiBUaGVyZSdzIG5vdGhpbmcgdG8gYmUgZ2Fp bmVkIGJ5IGRlbGF5aW5nIHRoaXMsIHNpbmNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRp b25jbWRzLmMKaW5kZXggNjcwYjIxOS4uM2RjMDNkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1 YnNjcmlwdGlvbmNtZHMuYwpAQCAtODQsNyArODQsNyBAQCB0eXBlZGVmIHN0cnVjdCBTdWJPcHRz CiAJYm9vbAkJY29weV9kYXRhOwogCWJvb2wJCXJlZnJlc2g7CiAJYm9vbAkJYmluYXJ5OwotCWJv b2wJCXN0cmVhbWluZzsKKwljaGFyCQlzdHJlYW1pbmc7CiAJYm9vbAkJdHdvcGhhc2U7CiAJYm9v bAkJZGlzYWJsZW9uZXJyOwogCWNoYXIJICAgKm9yaWdpbjsKQEAgLTk4LDYgKzk4LDYyIEBAIHN0 YXRpYyB2b2lkIFJlcG9ydFNsb3RDb25uZWN0aW9uRXJyb3IoTGlzdCAqcnN0YXRlcywgT2lkIHN1 YmlkLCBjaGFyICpzbG90bmFtZSwKIAogCiAvKgorICogRXh0cmFjdCB0aGUgc3RyZWFtaW5nIG1v ZGUgdmFsdWUgZnJvbSBhIERlZkVsZW0uICBUaGlzIGlzIGxpa2UKKyAqIGRlZkdldEJvb2xlYW4o KSBidXQgYWxzbyBhY2NlcHRzIHRoZSBzcGVjaWFsIHZhbHVlIG9mICJwYXJhbGxlbCIuCisgKi8K K3N0YXRpYyBjaGFyCitkZWZHZXRTdHJlYW1pbmdNb2RlKERlZkVsZW0gKmRlZikKK3sKKwkvKgor CSAqIElmIG5vIHBhcmFtZXRlciB2YWx1ZSBnaXZlbiwgYXNzdW1lICJ0cnVlIiBpcyBtZWFudC4K KwkgKi8KKwlpZiAoZGVmLT5hcmcgPT0gTlVMTCkKKwkJcmV0dXJuIFNVQlNUUkVBTV9PTjsKKwor CS8qCisJICogQWxsb3cgMCwgMSwgImZhbHNlIiwgInRydWUiLCAib2ZmIiwgIm9uIiBvciAicGFy YWxsZWwiLgorCSAqLworCXN3aXRjaCAobm9kZVRhZyhkZWYtPmFyZykpCisJeworCQljYXNlIFRf SW50ZWdlcjoKKwkJCXN3aXRjaCAoaW50VmFsKGRlZi0+YXJnKSkKKwkJCXsKKwkJCQljYXNlIDA6 CisJCQkJCXJldHVybiBTVUJTVFJFQU1fT0ZGOworCQkJCWNhc2UgMToKKwkJCQkJcmV0dXJuIFNV QlNUUkVBTV9PTjsKKwkJCQlkZWZhdWx0OgorCQkJCQkvKiBvdGhlcndpc2UsIGVycm9yIG91dCBi ZWxvdyAqLworCQkJCQlicmVhazsKKwkJCX0KKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJewor CQkJCWNoYXIJICAgKnN2YWwgPSBkZWZHZXRTdHJpbmcoZGVmKTsKKworCQkJCS8qCisJCQkJICog VGhlIHNldCBvZiBzdHJpbmdzIGFjY2VwdGVkIGhlcmUgc2hvdWxkIG1hdGNoIHVwIHdpdGggdGhl CisJCQkJICogZ3JhbW1hcidzIG9wdF9ib29sZWFuX29yX3N0cmluZyBwcm9kdWN0aW9uLgorCQkJ CSAqLworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJmYWxzZSIpID09IDAgfHwKKwkJCQkJ cGdfc3RyY2FzZWNtcChzdmFsLCAib2ZmIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9P RkY7CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgInRydWUiKSA9PSAwIHx8CisJCQkJCXBn X3N0cmNhc2VjbXAoc3ZhbCwgIm9uIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PTjsK KwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAicGFyYWxsZWwiKSA9PSAwKQorCQkJCQlyZXR1 cm4gU1VCU1RSRUFNX1BBUkFMTEVMOworCQkJfQorCQkJYnJlYWs7CisJfQorCWVyZXBvcnQoRVJS T1IsCisJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkgZXJybXNnKCIlcyBy ZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUgb3IgXCJwYXJhbGxlbFwiIiwKKwkJCQkJZGVmLT5kZWZu YW1lKSkpOworCXJldHVybiBTVUJTVFJFQU1fT0ZGOwkJLyoga2VlcCBjb21waWxlciBxdWlldCAq LworfQorCisvKgogICogQ29tbW9uIG9wdGlvbiBwYXJzaW5nIGZ1bmN0aW9uIGZvciBDUkVBVEUg YW5kIEFMVEVSIFNVQlNDUklQVElPTiBjb21tYW5kcy4KICAqCiAgKiBTaW5jZSBub3QgYWxsIG9w dGlvbnMgY2FuIGJlIHNwZWNpZmllZCBpbiBib3RoIGNvbW1hbmRzLCB0aGlzIGZ1bmN0aW9uCkBA IC0xMzQsNyArMTkwLDcgQEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAq cHN0YXRlLCBMaXN0ICpzdG10X29wdGlvbnMsCiAJaWYgKElzU2V0KHN1cHBvcnRlZF9vcHRzLCBT VUJPUFRfQklOQVJZKSkKIAkJb3B0cy0+YmluYXJ5ID0gZmFsc2U7CiAJaWYgKElzU2V0KHN1cHBv cnRlZF9vcHRzLCBTVUJPUFRfU1RSRUFNSU5HKSkKLQkJb3B0cy0+c3RyZWFtaW5nID0gZmFsc2U7 CisJCW9wdHMtPnN0cmVhbWluZyA9IFNVQlNUUkVBTV9PRkY7CiAJaWYgKElzU2V0KHN1cHBvcnRl ZF9vcHRzLCBTVUJPUFRfVFdPUEhBU0VfQ09NTUlUKSkKIAkJb3B0cy0+dHdvcGhhc2UgPSBmYWxz ZTsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9ESVNBQkxFX09OX0VSUikpCkBA IC0yMzcsNyArMjkzLDcgQEAgcGFyc2Vfc3Vic2NyaXB0aW9uX29wdGlvbnMoUGFyc2VTdGF0ZSAq cHN0YXRlLCBMaXN0ICpzdG10X29wdGlvbnMsCiAJCQkJZXJyb3JDb25mbGljdGluZ0RlZkVsZW0o ZGVmZWwsIHBzdGF0ZSk7CiAKIAkJCW9wdHMtPnNwZWNpZmllZF9vcHRzIHw9IFNVQk9QVF9TVFJF QU1JTkc7Ci0JCQlvcHRzLT5zdHJlYW1pbmcgPSBkZWZHZXRCb29sZWFuKGRlZmVsKTsKKwkJCW9w dHMtPnN0cmVhbWluZyA9IGRlZkdldFN0cmVhbWluZ01vZGUoZGVmZWwpOwogCQl9CiAJCWVsc2Ug aWYgKHN0cmNtcChkZWZlbC0+ZGVmbmFtZSwgInR3b19waGFzZSIpID09IDApCiAJCXsKQEAgLTYy Nyw3ICs2ODMsNyBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVh dGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9z dWJvd25lciAtIDFdID0gT2JqZWN0SWRHZXREYXR1bShvd25lcik7CiAJdmFsdWVzW0FudW1fcGdf c3Vic2NyaXB0aW9uX3N1YmVuYWJsZWQgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmVuYWJsZWQp OwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJiaW5hcnkgLSAxXSA9IEJvb2xHZXRE YXR1bShvcHRzLmJpbmFyeSk7Ci0JdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVh bSAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwl2YWx1ZXNbQW51bV9wZ19z dWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPSBDaGFyR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcp OwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJ0d29waGFzZXN0YXRlIC0gMV0gPQog CQlDaGFyR2V0RGF0dW0ob3B0cy50d29waGFzZSA/CiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNF X1NUQVRFX1BFTkRJTkcgOgpAQCAtMTA4OSw3ICsxMTQ1LDcgQEAgQWx0ZXJTdWJzY3JpcHRpb24o UGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJaWYg KElzU2V0KG9wdHMuc3BlY2lmaWVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQogCQkJCXsKIAkJ CQkJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0KLQkJCQkJCUJv b2xHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CisJCQkJCQlDaGFyR2V0RGF0dW0ob3B0cy5zdHJl YW1pbmcpOwogCQkJCQlyZXBsYWNlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAx XSA9IHRydWU7CiAJCQkJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMg Yi9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKaW5kZXggNGQwNDE1ZS4uNmQ1Mzk0ZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvbGlicHEvcHFtcS5jCisrKyBiL3NyYy9iYWNrZW5kL2xpYnBxL3Bx bXEuYwpAQCAtMTMsMTEgKzEzLDEzIEBACiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgogCisjaW5j bHVkZSAiYWNjZXNzL3BhcmFsbGVsLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNpbmNs dWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgImxpYnBxL3BxbXEuaCIKICNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlv bi9sb2dpY2Fsd29ya2VyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUg InV0aWxzL2J1aWx0aW5zLmgiCiAKQEAgLTE2Miw5ICsxNjQsMTkgQEAgbXFfcHV0bWVzc2FnZShj aGFyIG1zZ3R5cGUsIGNvbnN0IGNoYXIgKnMsIHNpemVfdCBsZW4pCiAJCXJlc3VsdCA9IHNobV9t cV9zZW5kdihwcV9tcV9oYW5kbGUsIGlvdiwgMiwgdHJ1ZSwgdHJ1ZSk7CiAKIAkJaWYgKHBxX21x X3BhcmFsbGVsX2xlYWRlcl9waWQgIT0gMCkKLQkJCVNlbmRQcm9jU2lnbmFsKHBxX21xX3BhcmFs bGVsX2xlYWRlcl9waWQsCi0JCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCi0JCQkJ CQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9pZCk7CisJCXsKKwkJCWlmIChJc1Bh cmFsbGVsV29ya2VyKCkpCisJCQkJU2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxsZWxfbGVhZGVy X3BpZCwKKwkJCQkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX01FU1NBR0UsCisJCQkJCQkJICAgcHFf bXFfcGFyYWxsZWxfbGVhZGVyX2JhY2tlbmRfaWQpOworCQkJZWxzZQorCQkJeworCQkJCUFzc2Vy dChJc0xvZ2ljYWxQYXJhbGxlbEFwcGx5V29ya2VyKCkpOworCQkJCVNlbmRQcm9jU2lnbmFsKHBx X21xX3BhcmFsbGVsX2xlYWRlcl9waWQsCisJCQkJCQkJICAgUFJPQ1NJR19QQVJBTExFTF9BUFBM WV9NRVNTQUdFLAorCQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsK KwkJCX0KKwkJfQogCiAJCWlmIChyZXN1bHQgIT0gU0hNX01RX1dPVUxEX0JMT0NLKQogCQkJYnJl YWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKaW5kZXggNDA2MDFhZS4uZWU0ODFiYiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCisrKyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwpAQCAtMTI4LDYgKzEyOCw5IEBAIHN0YXRpYyBjb25z dCBzdHJ1Y3QKIAl9LAogCXsKIAkJIkFwcGx5V29ya2VyTWFpbiIsIEFwcGx5V29ya2VyTWFpbgor CX0sCisJeworCQkiUGFyYWxsZWxBcHBseVdvcmtlck1haW4iLCBQYXJhbGxlbEFwcGx5V29ya2Vy TWFpbgogCX0KIH07CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCmlu ZGV4IGM0ZTJmZGUuLjJkYzI1ZTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9N YWtlZmlsZQpAQCAtMTUsNiArMTUsNyBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMvTWFr ZWZpbGUuZ2xvYmFsCiBvdmVycmlkZSBDUFBGTEFHUyA6PSAtSSQoc3JjZGlyKSAkKENQUEZMQUdT KQogCiBPQkpTID0gXAorCWFwcGx5cGFyYWxsZWx3b3JrZXIubyBcCiAJZGVjb2RlLm8gXAogCWxh dW5jaGVyLm8gXAogCWxvZ2ljYWwubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAuLmY1OTJjMmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMCwwICsxLDEwODkgQEAK Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICogYXBwbHlwYXJhbGxlbHdvcmtlci5jCisgKiAgICAgU3Vw cG9ydCByb3V0aW5lcyBmb3IgYXBwbHlpbmcgeGFjdCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIK KyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxv cG1lbnQgR3JvdXAKKyAqCisgKiBJREVOVElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYworICoKKyAqIFRoaXMgZmlsZSBj b250YWlucyByb3V0aW5lcyB0aGF0IGFyZSBpbnRlbmRlZCB0byBzdXBwb3J0IHNldHRpbmcgdXAs IHVzaW5nLAorICogYW5kIHRlYXJpbmcgZG93biBhIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvLgor ICoKKyAqIFJlZmVyIHRvIHRoZSBjb21tZW50cyBpbiBmaWxlIGhlYWRlciBvZiBsb2dpY2FsL3dv cmtlci5jIHRvIHNlZSBtb3JlCisgKiBpbmZvcm1hdGlvbiBhYm91dCBwYXJhbGxlbCBhcHBseSB3 b3JrZXIuCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1ZGUgInBvc3RncmVz LmgiCisKKyNpbmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgorI2luY2x1ZGUgImxpYnBxL3BxbXEu aCIKKyNpbmNsdWRlICJtYi9wZ193Y2hhci5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1 ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNh bGxhdW5jaGVyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgorI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJl Y2VpdmVyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5j bHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgorI2lu Y2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKKyNpbmNsdWRlICJ1dGlscy9pbnZhbC5oIgorI2luY2x1 ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKKyNpbmNs dWRlICJ1dGlscy9zeXNjYWNoZS5oIgorCisjZGVmaW5lIFBHX0xPR0lDQUxfQVBQTFlfU0hNX01B R0lDIDB4Nzg3Y2EwNjcKKworLyoKKyAqIERTTSBrZXlzIGZvciBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuICBVbmxpa2Ugb3RoZXIgcGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBzaW5jZSB3ZSBk b24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdpdGggcGxhbl9u b2RlX2lkIHdlCisgKiBjYW4gdXNlIHNtYWxsIGludGVnZXJzLgorICovCisjZGVmaW5lIFBBUkFM TEVMX0FQUExZX0tFWV9TSEFSRUQJCTEKKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfS0VZX01RCQkJ MgorI2RlZmluZSBQQVJBTExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUJMworCisvKiBRdWV1ZSBz aXplIG9mIERTTSwgMTYgTUIgZm9yIG5vdy4gKi8KKyNkZWZpbmUgRFNNX1FVRVVFX1NJWkUJKDE2 ICogMTAyNCAqIDEwMjQpCisKKy8qCisgKiBFcnJvciBxdWV1ZSBzaXplIG9mIERTTS4gSXQgaXMg ZGVzaXJhYmxlIHRvIG1ha2UgaXQgbGFyZ2UgZW5vdWdoIHRoYXQgYQorICogdHlwaWNhbCBFcnJv clJlc3BvbnNlIGNhbiBiZSBzZW50IHdpdGhvdXQgYmxvY2tpbmcuICBUaGF0IHdheSwgYSB3b3Jr ZXIgdGhhdAorICogZXJyb3JzIG91dCBjYW4gd3JpdGUgdGhlIHdob2xlIG1lc3NhZ2UgaW50byB0 aGUgcXVldWUgYW5kIHRlcm1pbmF0ZSB3aXRob3V0CisgKiB3YWl0aW5nIGZvciB0aGUgdXNlciBi YWNrZW5kLgorICovCisjZGVmaW5lIERTTV9FUlJPUl9RVUVVRV9TSVpFCQkJMTYzODQKKworLyoK KyAqIFRoZXJlIGFyZSB0aHJlZSBmaWVsZHMgaW4gZWFjaCBtZXNzYWdlIHJlY2VpdmVkIGJ5IGFw cGx5IHdvcmtlcjogc3RhcnRfbHNuLAorICogZW5kX2xzbiBhbmQgc2VuZF90aW1lLiBCZWNhdXNl IHdlIGhhdmUgdXBkYXRlZCB0aGVzZSBzdGF0aXN0aWNzIGluIGFwcGx5CisgKiB3b3JrZXIsIHdl IGNvdWxkIGlnbm9yZSB0aGVzZSBmaWVsZHMgaW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyIChzZWUg ZnVuY3Rpb24KKyAqIExvZ2ljYWxSZXBBcHBseUxvb3ApLgorICovCisjZGVmaW5lIFNJWkVfU1RB VFNfTUVTU0FHRSAoMiAqIHNpemVvZihYTG9nUmVjUHRyKSArIHNpemVvZihUaW1lc3RhbXBUeikp CisKKy8qCisgKiBFbnRyeSBmb3IgYSBoYXNoIHRhYmxlIHdlIHVzZSB0byBtYXAgZnJvbSB4aWQg dG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICogc3RhdGUuCisgKi8KK3R5cGVkZWYgc3Ry dWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeQoreworCVRyYW5zYWN0aW9uSWQgeGlkOwkvKiBI YXNoIGtleSAtLSBtdXN0IGJlIGZpcnN0ICovCisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndp bmZvOworfSBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnk7CisKKy8qIFBhcmFsbGVsIGFwcGx5IHdv cmtlcnMgaGFzaCB0YWJsZSAoaW5pdGlhbGl6ZWQgb24gZmlyc3QgdXNlKS4gKi8KK3N0YXRpYyBI VEFCICpQYXJhbGxlbEFwcGx5V29ya2Vyc0hhc2ggPSBOVUxMOworCisvKgorICogTGlzdCB0aGF0 IHN0b3JlcyB0aGUgaW5mb3JtYXRpb24gb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyB0aGF0IHdl cmUKKyAqIHN0YXJ0ZWQuIE5ld2x5IGFkZGVkIHdvcmtlciBpbmZvcm1hdGlvbiB3aWxsIGJlIHJl bW92ZWQgZnJvbSB0aGUgbGlzdCBhdCB0aGUKKyAqIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24gd2hl biB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wuIEJlc2lkZXMsCisgKiBleGl0 ZWQgd29ya2VycyB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgbGlzdCBhZnRlciBiZWluZyBkZXRl Y3RlZC4KKyovCitzdGF0aWMgTGlzdCAqUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0ID0gTklMOwor CisvKgorICogSW5mb3JtYXRpb24gc2hhcmVkIGJldHdlZW4gbGVhZGVyIGFwcGx5IHdvcmtlciBh bmQgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit2b2xhdGlsZSBQYXJhbGxlbEFwcGx5V29y a2VyU2hhcmVkICpNeVBhcmFsbGVsU2hhcmVkID0gTlVMTDsKKworLyoKKyAqIElzIHRoZXJlIGEg bWVzc2FnZSBwZW5kaW5nIGluIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aGljaCB3ZSBuZWVkIHRv CisgKiByZWNlaXZlPworICovCit2b2xhdGlsZSBib29sIFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVu ZGluZyA9IGZhbHNlOworCisvKgorICogQ2FjaGUgYSBwb2ludGVyIHRvIHRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgd2hpY2ggaXMgcmVzcG9uc2libGUgZm9yCisgKiBhcHBseWluZyB0aGUgY3Vy cmVudCBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiBJdCBpcyB1c2VkIHRvIHNhdmUgdGhlCisgKiBj b3N0IG9mIHNlYXJjaGluZyB0aGUgaGFzaCB0YWJsZSB3aGVuIGFwcGx5aW5nIHRoZSBjaGFuZ2Vz IGJldHdlZW4KKyAqIFNUUkVBTV9TVEFSVCBhbmQgU1RSRUFNX1NUT1AuCisgKi8KK1BhcmFsbGVs QXBwbHlXb3JrZXJJbmZvICpzdHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsKKworTGlzdAkgICAq c3VieGFjdGxpc3QgPSBOSUw7CisKK3N0YXRpYyBib29sIHBhcmFsbGVsX2FwcGx5X2Nhbl9zdGFy dChUcmFuc2FjdGlvbklkIHhpZCk7CitzdGF0aWMgYm9vbCBwYXJhbGxlbF9hcHBseV9zZXR1cF9k c20oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKTsKK3N0YXRpYyBQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqcGFyYWxsZWxfYXBwbHlfc2V0dXBfd29ya2VyKHZvaWQpOworCisvKgorICog Q2hlY2sgaWYgc3RhcnRpbmcgYSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGFsbG93ZWQu CisgKi8KK3N0YXRpYyBib29sCitwYXJhbGxlbF9hcHBseV9jYW5fc3RhcnQoVHJhbnNhY3Rpb25J ZCB4aWQpCit7CisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCQlyZXR1cm4gZmFs c2U7CisKKwkvKgorCSAqIERvbid0IHN0YXJ0IGEgbmV3IHBhcmFsbGVsIHdvcmtlciBpZiBub3Qg aW4gc3RyZWFtaW5nIHBhcmFsbGVsIG1vZGUuCisJICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5z dHJlYW0gIT0gU1VCU1RSRUFNX1BBUkFMTEVMKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAq IERvbid0IHN0YXJ0IGEgbmV3IHBhcmFsbGVsIHdvcmtlciBpZiB1c2VyIGhhcyBzZXQgc2tpcGxz biBhcyBpdCdzCisJICogcG9zc2libGUgdGhhdCB1c2VyIHdhbnQgdG8gc2tpcCB0aGUgc3RyZWFt aW5nIHRyYW5zYWN0aW9uLiBGb3IKKwkgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHdlIG5lZWQg dG8gc3BpbGwgdGhlIHRyYW5zYWN0aW9uIHRvIGRpc2sgc28gdGhhdAorCSAqIHdlIGNhbiBnZXQg dGhlIGxhc3QgTFNOIG9mIHRoZSB0cmFuc2FjdGlvbiB0byBqdWRnZSB3aGV0aGVyIHRvIHNraXAK KwkgKiBiZWZvcmUgc3RhcnRpbmcgdG8gYXBwbHkgdGhlIGNoYW5nZS4KKwkgKi8KKwlpZiAoIVhM b2dSZWNQdHJJc0ludmFsaWQoTXlTdWJzY3JpcHRpb24tPnNraXBsc24pKQorCQlyZXR1cm4gZmFs c2U7CisKKwkvKgorCSAqIEZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgYXJlIGJlaW5n IGFwcGxpZWQgdXNpbmcgcGFyYWxsZWwgYXBwbHkKKwkgKiB3b3JrZXIsIHdlIGNhbm5vdCBkZWNp ZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGZvciBhIHJlbGF0aW9uIHRoYXQKKwkgKiBp cyBub3QgaW4gdGhlIFJFQURZIHN0YXRlIChzZWUgc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3Jl bCkgYXMgd2Ugd29uJ3QKKwkgKiBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdCB0aW1lLiBT bywgd2UgZG9uJ3Qgc3RhcnQgdGhlIG5ldyBwYXJhbGxlbAorCSAqIGFwcGx5IHdvcmtlciBpbiB0 aGlzIGNhc2UuCisJICovCisJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKKwkJcmV0dXJuIGZh bHNlOworCisJLyoKKwkgKiBEbyBub3QgYWxsb3cgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRvIGJl IHN0YXJ0ZWQgaW4gdGhlIHBhcmFsbGVsIGFwcGx5CisJICogd29ya2VyLgorCSAqLworCWlmIChh bV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuIGZhbHNlOworCisJcmV0dXJuIHRy dWU7Cit9CisKKy8qCisgKiBTdGFydCBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbmZvcm1hdGlv biB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlCisgKiBzcGVjaWZpZWQgeGlkLgorICoKKyAqIElm IGFuIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBub3QgaW4gdXNlIHRoZW4gcmUtdXNlIGl0LCBv dGhlcndpc2Ugc3RhcnQgYQorICogZnJlc2ggb25lLiBDYWNoZSB0aGUgd29ya2VyIGluZm9ybWF0 aW9uIGluIFBhcmFsbGVsQXBwbHlXb3JrZXJzSGFzaCBrZXllZCBieQorICogdGhlIHNwZWNpZmll ZCB4aWQuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3N0YXJ0X3dvcmtlcihUcmFuc2FjdGlv bklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlMaXN0Q2VsbCAgICpsYzsKKwlQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqd2luZm8gPSBOVUxMOworCVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAq ZW50cnkgPSBOVUxMOworCisJaWYgKCFwYXJhbGxlbF9hcHBseV9jYW5fc3RhcnQoeGlkKSkKKwkJ cmV0dXJuOworCisJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplIGFwcGx5IHdvcmtl cnMgaGFzaHRhYmxlLiAqLworCWlmIChQYXJhbGxlbEFwcGx5V29ya2Vyc0hhc2ggPT0gTlVMTCkK Kwl7CisJCUhBU0hDVEwJCWN0bDsKKworCQlNZW1TZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkpOwor CQljdGwua2V5c2l6ZSA9IHNpemVvZihUcmFuc2FjdGlvbklkKTsKKwkJY3RsLmVudHJ5c2l6ZSA9 IHNpemVvZihQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkpOworCQljdGwuaGN4dCA9IEFwcGx5Q29u dGV4dDsKKworCQlQYXJhbGxlbEFwcGx5V29ya2Vyc0hhc2ggPSBoYXNoX2NyZWF0ZSgibG9naWNh bCBhcHBseSB3b3JrZXJzIGhhc2giLAorCQkJCQkJCQkJCQkgICAxNiwgJmN0bCwKKwkJCQkJCQkJ CQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJfQorCisJLyog VHJ5IHRvIGdldCBhIGZyZWUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLworCWZvcmVhY2gobGMs IFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCkKKwl7CisJCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv ICp0bXBfd2luZm87CisKKwkJdG1wX3dpbmZvID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICop IGxmaXJzdChsYyk7CisKKwkJaWYgKHRtcF93aW5mby0+ZXJyb3JfbXFfaGFuZGxlID09IE5VTEwp CisJCXsKKwkJCS8qCisJCQkgKiBSZWxlYXNlIHRoZSB3b3JrZXIgaW5mb3JtYXRpb24gYW5kIHRy eSBuZXh0IG9uZSBpZiB0aGUgcGFyYWxsZWwKKwkJCSAqIGFwcGx5IHdvcmtlciBleGl0ZWQgY2xl YW5seS4KKwkJCSAqLworCQkJUGFyYWxsZWxBcHBseVdvcmtlcnNMaXN0ID0gZm9yZWFjaF9kZWxl dGVfY3VycmVudChQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QsIGxjKTsKKwkJCXNobV9tcV9kZXRh Y2godG1wX3dpbmZvLT5tcV9oYW5kbGUpOworCQkJZHNtX2RldGFjaCh0bXBfd2luZm8tPmRzbV9z ZWcpOworCQkJcGZyZWUodG1wX3dpbmZvKTsKKworCQkJY29udGludWU7CisJCX0KKworCQlpZiAo IXRtcF93aW5mby0+aW5fcmVtb3RlX3RyYW5zYWN0aW9uKQorCQl7CisJCQl3aW5mbyA9IHRtcF93 aW5mbzsKKwkJCWJyZWFrOworCQl9CisJfQorCisJLyogVHJ5IHRvIHN0YXJ0IGEgbmV3IHBhcmFs bGVsIGFwcGx5IHdvcmtlci4gKi8KKwlpZiAod2luZm8gPT0gTlVMTCkKKwkJd2luZm8gPSBwYXJh bGxlbF9hcHBseV9zZXR1cF93b3JrZXIoKTsKKworCS8qIEZhaWxlZCB0byBzdGFydCBhIG5ldyBw YXJhbGxlbCBhcHBseSB3b3JrZXIuICovCisJaWYgKHdpbmZvID09IE5VTEwpCisJCXJldHVybjsK KworCS8qIENyZWF0ZSBlbnRyeSBmb3IgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLworCWVudHJ5 ID0gaGFzaF9zZWFyY2goUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX0VOVEVS LCAmZm91bmQpOworCWlmIChmb3VuZCkKKwkJZWxvZyhFUlJPUiwgImhhc2ggdGFibGUgY29ycnVw dGVkIik7CisKKwl3aW5mby0+aW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gdHJ1ZTsKKwl3aW5mby0+ c2hhcmVkLT5pbl91c2UgPSB0cnVlOworCWVudHJ5LT53aW5mbyA9IHdpbmZvOworCWVudHJ5LT54 aWQgPSB4aWQ7Cit9CisKKy8qCisgKiBGaW5kIHRoZSBwcmV2aW91c2x5IGFzc2lnbmVkIHdvcmtl ciBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0aW9uLCBpZiBhbnkuCisgKi8KK1BhcmFsbGVsQXBwbHlX b3JrZXJJbmZvICoKK3BhcmFsbGVsX2FwcGx5X2ZpbmRfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlk KQoreworCWJvb2wJCWZvdW5kOworCVBhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeSAqZW50cnkgPSBO VUxMOworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCQlyZXR1cm4gTlVMTDsK KworCWlmIChQYXJhbGxlbEFwcGx5V29ya2Vyc0hhc2ggPT0gTlVMTCkKKwkJcmV0dXJuIE5VTEw7 CisKKwkvKiBSZXR1cm4gdGhlIGNhY2hlZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaWYgdmFsaWQu ICovCisJaWYgKHN0cmVhbV9hcHBseV93b3JrZXIgIT0gTlVMTCkKKwkJcmV0dXJuIHN0cmVhbV9h cHBseV93b3JrZXI7CisKKwkvKgorCSAqIEZpbmQgZW50cnkgZm9yIHJlcXVlc3RlZCB0cmFuc2Fj dGlvbi4KKwkgKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlXb3JrZXJzSGFz aCwgJnhpZCwgSEFTSF9GSU5ELCAmZm91bmQpOworCWlmIChmb3VuZCkKKwl7CisJCS8qIElmIGFu eSB3b3JrZXJzIChvciB0aGUgcG9zdG1hc3RlcikgaGF2ZSBkaWVkLCB3ZSBoYXZlIGZhaWxlZC4g Ki8KKwkJaWYgKGVudHJ5LT53aW5mby0+ZXJyb3JfbXFfaGFuZGxlID09IE5VTEwpCisJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlT SVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHBhcmFsbGVsIGFw cGx5IHdvcmtlciIpKSk7CisKKwkJZW50cnktPndpbmZvLT5zaGFyZWQtPmluX3VzZSA9IHRydWU7 CisKKwkJcmV0dXJuIGVudHJ5LT53aW5mbzsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoK KyAqIFJlbW92ZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGVudHJ5IGZyb20gdGhlIGhhc2gg dGFibGUuIEFuZCBzdG9wIHRoZQorICogd29ya2VyIGlmIHRoZXJlIGFyZSBlbm91Z2ggd29ya2Vy cyBpbiB0aGUgcG9vbC4KKyAqCisgKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBzaG91bGQgb25s eSBiZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uCisgKi8KK3ZvaWQKK3Bh cmFsbGVsX2FwcGx5X2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywg VHJhbnNhY3Rpb25JZCB4aWQpCit7CisJaW50CQkJbmFwcGx5d29ya2VyczsKKworCUFzc2VydCgh d2luZm8tPnNoYXJlZC0+aW5fdXNlKTsKKworCWhhc2hfc2VhcmNoKFBhcmFsbGVsQXBwbHlXb3Jr ZXJzSGFzaCwgJnhpZCwgSEFTSF9SRU1PVkUsIE5VTEwpOworCisJTFdMb2NrQWNxdWlyZShMb2dp Y2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKwluYXBwbHl3b3JrZXJzID0gbG9naWNhbHJl cF9wYXJhbGxlbF9hcHBseV93b3JrZXJfY291bnQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCk7 CisJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisKKwlpZiAobmFwcGx5d29y a2VycyA+IChtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uIC8gMikp CisJeworCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2J5X3Nsb3Qod2luZm8tPnNoYXJlZC0+bG9n aWNhbHJlcF93b3JrZXJfc2xvdF9ubywKKwkJCQkJCQkJCSAgIHdpbmZvLT5zaGFyZWQtPmxvZ2lj YWxyZXBfd29ya2VyX2dlbmVyYXRpb24pOworCisJCVBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCA9 IGxpc3RfZGVsZXRlX3B0cihQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QsIHdpbmZvKTsKKworCQlz aG1fbXFfZGV0YWNoKHdpbmZvLT5tcV9oYW5kbGUpOworCQlzaG1fbXFfZGV0YWNoKHdpbmZvLT5l cnJvcl9tcV9oYW5kbGUpOworCQlkc21fZGV0YWNoKHdpbmZvLT5kc21fc2VnKTsKKwkJcGZyZWUo d2luZm8pOworCX0KKwllbHNlCisJCXdpbmZvLT5pbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxz ZTsKK30KKworLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIG1haW4gbG9vcC4gKi8KK3N0YXRpYyB2 b2lkCitMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21xX2hhbmRsZSAqbXFoLCB2b2xhdGls ZSBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpzaGFyZWQpCit7CisJc2htX21xX3Jlc3VsdCBz aG1xX3JlczsKKwlQR1BST0MJICAgKnJlZ2lzdHJhbnQ7CisJRXJyb3JDb250ZXh0Q2FsbGJhY2sg ZXJyY2FsbGJhY2s7CisKKwlyZWdpc3RyYW50ID0gQmFja2VuZFBpZEdldFByb2MoTXlCZ3dvcmtl ckVudHJ5LT5iZ3dfbm90aWZ5X3BpZCk7CisJU2V0TGF0Y2goJnJlZ2lzdHJhbnQtPnByb2NMYXRj aCk7CisKKwkvKgorCSAqIEluaXQgdGhlIEFwcGx5TWVzc2FnZUNvbnRleHQgd2hpY2ggd2UgY2xl YW4gdXAgYWZ0ZXIgZWFjaCByZXBsaWNhdGlvbgorCSAqIHByb3RvY29sIG1lc3NhZ2UuCisJICov CisJQXBwbHlNZXNzYWdlQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShBcHBseUNvbnRl eHQsCisJCQkJCQkJCQkJCQkiQXBwbHlNZXNzYWdlQ29udGV4dCIsCisJCQkJCQkJCQkJCQlBTExP Q1NFVF9ERUZBVUxUX1NJWkVTKTsKKworCS8qCisJICogUHVzaCBhcHBseSBlcnJvciBjb250ZXh0 IGNhbGxiYWNrLiBGaWVsZHMgd2lsbCBiZSBmaWxsZWQgd2hpbGUgYXBwbHlpbmcKKwkgKiBhIGNo YW5nZS4KKwkgKi8KKwllcnJjYWxsYmFjay5jYWxsYmFjayA9IGFwcGx5X2Vycm9yX2NhbGxiYWNr OworCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9j b250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOworCisJZm9yICg7OykKKwl7CisJCXZvaWQJICAg KmRhdGE7CisJCVNpemUJCWxlbjsKKwkJaW50CQkJYzsKKwkJU3RyaW5nSW5mb0RhdGEgczsKKwkJ TWVtb3J5Q29udGV4dCBvbGRjdHg7CisKKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKworCQkv KiBFbnN1cmUgd2UgYXJlIHJlYWRpbmcgdGhlIGRhdGEgaW50byBvdXIgbWVtb3J5IGNvbnRleHQu ICovCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseU1lc3NhZ2VDb250ZXh0 KTsKKworCQlzaG1xX3JlcyA9IHNobV9tcV9yZWNlaXZlKG1xaCwgJmxlbiwgJmRhdGEsIGZhbHNl KTsKKworCQlpZiAoc2htcV9yZXMgIT0gU0hNX01RX1NVQ0NFU1MpCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRF KSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRvIHRoZSBsZWFkZXIgYXBwbHkgd29y a2VyIikpKTsKKworCQlpZiAobGVuID09IDApCisJCQlicmVhazsKKworCQlzLmN1cnNvciA9IDA7 CisJCXMubWF4bGVuID0gLTE7CisJCXMuZGF0YSA9IChjaGFyICopIGRhdGE7CisJCXMubGVuID0g bGVuOworCisJCS8qCisJCSAqIFRoZSBmaXJzdCBieXRlIG9mIG1lc3NhZ2UgZm9yIGFkZGl0aW9u YWwgY29tbXVuaWNhdGlvbiBiZXR3ZWVuCisJCSAqIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMgY2FuIG9ubHkgYmUgJ3cnLgorCQkgKi8KKwkJYyA9IHBxX2dl dG1zZ2J5dGUoJnMpOworCQlpZiAoYyAhPSAndycpCisJCQllbG9nKEVSUk9SLCAiW1BhcmFsbGVs IEFwcGx5IFdvcmtlciAjJXVdIHVuZXhwZWN0ZWQgbWVzc2FnZSBcIiVjXCIiLAorCQkJCSBzaGFy ZWQtPndvcmtlcl9pZCwgYyk7CisKKwkJLyoKKwkJICogSWdub3JlIHN0YXRpc3RpY3MgZmllbGRz IHRoYXQgaGF2ZSBiZWVuIHVwZGF0ZWQgYnkgdGhlIGxlYWRlciBhcHBseQorCQkgKiB3b3JrZXIu CisJCSAqLworCQlzLmN1cnNvciArPSBTSVpFX1NUQVRTX01FU1NBR0U7CisKKwkJYXBwbHlfZGlz cGF0Y2goJnMpOworCisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQlNZW1vcnlD b250ZXh0UmVzZXQoQXBwbHlNZXNzYWdlQ29udGV4dCk7CisKKwkJaWYgKENvbmZpZ1JlbG9hZFBl bmRpbmcpCisJCXsKKwkJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKKwkJCVByb2Nlc3ND b25maWdGaWxlKFBHQ19TSUdIVVApOworCQl9CisJfQorCisJLyogUG9wIHRoZSBlcnJvciBjb250 ZXh0IHN0YWNrLiAqLworCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91 czsKKworCWVsb2coREVCVUcxLCAiW1BhcmFsbGVsIEFwcGx5IFdvcmtlciAjJXVdIGV4aXRpbmci LCBzaGFyZWQtPndvcmtlcl9pZCk7CisKKwkvKiBTaWduYWwgbWFpbiBwcm9jZXNzIHRoYXQgd2Ug YXJlIGRvbmUuICovCisJU2V0TGF0Y2goJnJlZ2lzdHJhbnQtPnByb2NMYXRjaCk7Cit9CisKKy8q CisgKiBNYWtlIHN1cmUgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdHJpZXMgdG8gcmVhZCBmcm9t IG91ciBlcnJvciBxdWV1ZSBvbmUgbW9yZQorICogdGltZS4gVGhpcyBndWFyZHMgYWdhaW5zdCB0 aGUgY2FzZSB3aGVyZSB3ZSBleGl0IHVuY2xlYW5seSB3aXRob3V0IHNlbmRpbmcKKyAqIGFuIEVy cm9yUmVzcG9uc2UsIGZvciBleGFtcGxlIGJlY2F1c2Ugc29tZSBjb2RlIGNhbGxzIHByb2NfZXhp dCBkaXJlY3RseS4KKyAqLworc3RhdGljIHZvaWQKK3BhcmFsbGVsX2FwcGx5X3NodXRkb3duKGlu dCBjb2RlLCBEYXR1bSBhcmcpCit7CisJU2VuZFByb2NTaWduYWwoTXlMb2dpY2FsUmVwV29ya2Vy LT5hcHBseV9sZWFkZXJfcGlkLAorCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfQVBQTFlfTUVTU0FH RSwKKwkJCQkgICBJbnZhbGlkQmFja2VuZElkKTsKKworCWRzbV9kZXRhY2goKGRzbV9zZWdtZW50 ICopIERhdHVtR2V0UG9pbnRlcihhcmcpKTsKK30KKworLyoKKyAqIFBhcmFsbGVsIGFwcGx5IHdv cmtlciBlbnRyeSBwb2ludC4KKyAqLwordm9pZAorUGFyYWxsZWxBcHBseVdvcmtlck1haW4oRGF0 dW0gbWFpbl9hcmcpCit7CisJdm9sYXRpbGUgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqc2hh cmVkOworCWRzbV9oYW5kbGUJaGFuZGxlOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAg ICAqdG9jOworCXNobV9tcQkgICAqbXE7CisJc2htX21xX2hhbmRsZSAqbXFoOworCXNobV9tcV9o YW5kbGUgKmVycm9yX21xaDsKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFp bl9hcmcpOworCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCisJLyogU2V0dXAgc2ln bmFsIGhhbmRsaW5nLiAqLworCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZp Z1JlbG9hZCk7CisJcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5i bG9ja1NpZ25hbHMoKTsKKworCS8qCisJICogQXR0YWNoIHRvIHRoZSBkeW5hbWljIHNoYXJlZCBt ZW1vcnkgc2VnbWVudCBmb3IgdGhlIHBhcmFsbGVsIGFwcGx5LCBhbmQKKwkgKiBmaW5kIGl0cyB0 YWJsZSBvZiBjb250ZW50cy4KKwkgKgorCSAqIExpa2UgcGFyYWxsZWwgcXVlcnksIHdlIGRvbid0 IG5lZWQgcmVzb3VyY2Ugb3duZXIgYnkgdGhpcyB0aW1lLiBTZWUKKwkgKiBQYXJhbGxlbFdvcmtl ck1haW4uCisJICovCisJbWVtY3B5KCZoYW5kbGUsIE15Qmd3b3JrZXJFbnRyeS0+Ymd3X2V4dHJh LCBzaXplb2YoZHNtX2hhbmRsZSkpOworCXNlZyA9IGRzbV9hdHRhY2goaGFuZGxlKTsKKwlpZiAo c2VnID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpF Q1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygidW5hYmxlIHRvIG1h cCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisKKwl0b2MgPSBzaG1fdG9jX2F0 dGFjaChQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhzZWcp KTsKKwlpZiAodG9jID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJS Q09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiYmFk IG1hZ2ljIG51bWJlciBpbiBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisKKwli ZWZvcmVfc2htZW1fZXhpdChwYXJhbGxlbF9hcHBseV9zaHV0ZG93biwgUG9pbnRlckdldERhdHVt KHNlZykpOworCisJLyogTG9vayB1cCB0aGUgc2hhcmVkIGluZm9ybWF0aW9uLiAqLworCXNoYXJl ZCA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwgZmFsc2Up OworCU15UGFyYWxsZWxTaGFyZWQgPSBzaGFyZWQ7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUg bWVzc2FnZSBxdWV1ZS4KKwkgKi8KKwltcSA9IHNobV90b2NfbG9va3VwKHRvYywgUEFSQUxMRUxf QVBQTFlfS0VZX01RLCBmYWxzZSk7CisJc2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9jKTsK KwltcWggPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyoKKwkgKiBQcmltYXJ5 IGluaXRpYWxpemF0aW9uIGlzIGNvbXBsZXRlLiBOb3csIHdlIGNhbiBhdHRhY2ggdG8gb3VyIHNs b3QuIFRoaXMKKwkgKiBpcyB0byBlbnN1cmUgdGhhdCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBk b2VzIG5vdCB3cml0ZSBkYXRhIHRvIHRoZQorCSAqIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHF1ZXVl LgorCSAqLworCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7CisJTXlQYXJh bGxlbFNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJfZ2VuZXJhdGlvbiA9IE15TG9naWNhbFJlcFdv cmtlci0+Z2VuZXJhdGlvbjsKKwlNeVBhcmFsbGVsU2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9z bG90X25vID0gd29ya2VyX3Nsb3Q7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgZXJyb3IgcXVl dWUuCisJICovCisJbXEgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9F UlJPUl9RVUVVRSwgZmFsc2UpOworCXNobV9tcV9zZXRfc2VuZGVyKG1xLCBNeVByb2MpOworCWVy cm9yX21xaCA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwlwcV9yZWRpcmVjdF90 b19zaG1fbXEoc2VnLCBlcnJvcl9tcWgpOworCXBxX3NldF9wYXJhbGxlbF9sZWFkZXIoTXlMb2dp Y2FsUmVwV29ya2VyLT5hcHBseV9sZWFkZXJfcGlkLAorCQkJCQkJICAgSW52YWxpZEJhY2tlbmRJ ZCk7CisKKwlNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3Rfc2VuZF90aW1lID0gTXlMb2dpY2FsUmVw V29ya2VyLT5sYXN0X3JlY3ZfdGltZSA9CisJCU15TG9naWNhbFJlcFdvcmtlci0+cmVwbHlfdGlt ZSA9IDA7CisKKwlJbml0aWFsaXplQXBwbHlXb3JrZXIoKTsKKworCS8qCisJICogU2V0dXAgY2Fs bGJhY2sgZm9yIHN5c2NhY2hlIHNvIHRoYXQgd2Uga25vdyB3aGVuIHNvbWV0aGluZyBjaGFuZ2Vz IGluCisJICogdGhlIHN1YnNjcmlwdGlvbiByZWxhdGlvbiBzdGF0ZS4KKwkgKi8KKwlDYWNoZVJl Z2lzdGVyU3lzY2FjaGVDYWxsYmFjayhTVUJTQ1JJUFRJT05SRUxNQVAsCisJCQkJCQkJCSAgaW52 YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcywKKwkJCQkJCQkJICAoRGF0dW0pIDApOworCisJ LyoKKwkgKiBBbGxvY2F0ZSB0aGUgb3JpZ2luIG5hbWUgaW4gbG9uZy1saXZlZCBjb250ZXh0IGZv ciBlcnJvciBjb250ZXh0CisJICogbWVzc2FnZS4KKwkgKi8KKwlzbnByaW50ZihvcmlnaW5uYW1l LCBzaXplb2Yob3JpZ2lubmFtZSksICJwZ18ldSIsIE15U3Vic2NyaXB0aW9uLT5vaWQpOworCWFw cGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5vcmlnaW5fbmFtZSA9IE1lbW9yeUNvbnRleHRTdHJkdXAo QXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSk7CisKKwllbG9nKERF QlVHMSwgIltQYXJhbGxlbCBBcHBseSBXb3JrZXIgIyV1XSBzdGFydGVkIiwgc2hhcmVkLT53b3Jr ZXJfaWQpOworCisJTG9naWNhbFBhcmFsbGVsQXBwbHlMb29wKG1xaCwgc2hhcmVkKTsKKworCXBy b2NfZXhpdCgwKTsKK30KKworLyoKKyAqIEhhbmRsZSByZWNlaXB0IG9mIGFuIGludGVycnVwdCBp bmRpY2F0aW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIG1lc3NhZ2UuCisgKgorICogTm90ZTog dGhpcyBpcyBjYWxsZWQgd2l0aGluIGEgc2lnbmFsIGhhbmRsZXIhICBBbGwgd2UgY2FuIGRvIGlz IHNldCBhIGZsYWcKKyAqIHRoYXQgd2lsbCBjYXVzZSB0aGUgbmV4dCBDSEVDS19GT1JfSU5URVJS VVBUUygpIHRvIGludm9rZQorICogSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKCkuCisgKi8K K3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJydXB0KHZvaWQpCit7CisJSW50 ZXJydXB0UGVuZGluZyA9IHRydWU7CisJUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0gdHJ1 ZTsKKwlTZXRMYXRjaChNeUxhdGNoKTsKK30KKworLyoKKyAqIEhhbmRsZSBhIHNpbmdsZSBwcm90 b2NvbCBtZXNzYWdlIHJlY2VpdmVkIGZyb20gYSBzaW5nbGUgcGFyYWxsZWwgYXBwbHkKKyAqIHdv cmtlci4KKyAqLworc3RhdGljIHZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlKFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgU3RyaW5nSW5mbyBtc2cpCit7CisJY2hhcgkJbXNn dHlwZTsKKworCW1zZ3R5cGUgPSBwcV9nZXRtc2dieXRlKG1zZyk7CisKKwlzd2l0Y2ggKG1zZ3R5 cGUpCisJeworCQljYXNlICdFJzoJCQkJLyogRXJyb3JSZXNwb25zZSAqLworCQkJeworCQkJCUVy cm9yRGF0YQllZGF0YTsKKwkJCQlFcnJvckNvbnRleHRDYWxsYmFjayAqc2F2ZV9lcnJvcl9jb250 ZXh0X3N0YWNrOworCisJCQkJLyogUGFyc2UgRXJyb3JSZXNwb25zZS4gKi8KKwkJCQlwcV9wYXJz ZV9lcnJvcm5vdGljZShtc2csICZlZGF0YSk7CisKKwkJCQkvKiBEZWF0aCBvZiBhIHdvcmtlciBp c24ndCBlbm91Z2gganVzdGlmaWNhdGlvbiBmb3Igc3VpY2lkZS4gKi8KKwkJCQllZGF0YS5lbGV2 ZWwgPSBNaW4oZWRhdGEuZWxldmVsLCBFUlJPUik7CisKKwkJCQkvKgorCQkJCSAqIElmIGRlc2ly ZWQsIGFkZCBhIGNvbnRleHQgbGluZSB0byBzaG93IHRoYXQgdGhpcyBpcyBhCisJCQkJICogbWVz c2FnZSBwcm9wYWdhdGVkIGZyb20gYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJCQkJICogT3Ro ZXJ3aXNlLCBpdCBjYW4gc29tZXRpbWVzIGJlIGNvbmZ1c2luZyB0byB1bmRlcnN0YW5kIHdoYXQK KwkJCQkgKiBhY3R1YWxseSBoYXBwZW5lZC4KKwkJCQkgKi8KKwkJCQlpZiAoZWRhdGEuY29udGV4 dCkKKwkJCQkJZWRhdGEuY29udGV4dCA9IHBzcHJpbnRmKCIlc1xuJXMiLCBlZGF0YS5jb250ZXh0 LAorCQkJCQkJCQkJCQkgXygicGFyYWxsZWwgYXBwbHkgd29ya2VyIikpOworCQkJCWVsc2UKKwkJ CQkJZWRhdGEuY29udGV4dCA9IHBzdHJkdXAoXygicGFyYWxsZWwgYXBwbHkgd29ya2VyIikpOwor CisJCQkJLyoKKwkJCQkgKiBDb250ZXh0IGJleW9uZCB0aGF0IHNob3VsZCB1c2UgdGhlIGVycm9y IGNvbnRleHQgY2FsbGJhY2tzCisJCQkJICogdGhhdCB3ZXJlIGluIGVmZmVjdCBpbiBMb2dpY2Fs UmVwQXBwbHlMb29wKCkuCisJCQkJICovCisJCQkJc2F2ZV9lcnJvcl9jb250ZXh0X3N0YWNrID0g ZXJyb3JfY29udGV4dF9zdGFjazsKKwkJCQllcnJvcl9jb250ZXh0X3N0YWNrID0gYXBwbHlfZXJy b3JfY29udGV4dF9zdGFjazsKKworCQkJCVRocm93RXJyb3JEYXRhKCZlZGF0YSk7CisKKwkJCQkv KiBTaG91bGQgbm90IHJlYWNoIGhlcmUgYWZ0ZXIgcmV0aHJvd2luZyBhbiBlcnJvci4gKi8KKwkJ CQllcnJvcl9jb250ZXh0X3N0YWNrID0gc2F2ZV9lcnJvcl9jb250ZXh0X3N0YWNrOworCisJCQkJ YnJlYWs7CisJCQl9CisKKwkJY2FzZSAnWCc6CQkJCS8qIFRlcm1pbmF0ZSwgaW5kaWNhdGluZyBj bGVhbiBleGl0ICovCisJCQl7CisJCQkJc2htX21xX2RldGFjaCh3aW5mby0+ZXJyb3JfbXFfaGFu ZGxlKTsKKwkJCQl3aW5mby0+ZXJyb3JfbXFfaGFuZGxlID0gTlVMTDsKKwkJCQlicmVhazsKKwkJ CX0KKworCQkJLyoKKwkJCSAqIERvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgYWJvdXQgTm90aWNl UmVzcG9uc2UgYW5kCisJCQkgKiBOb3RpZnlSZXNwb25zZSBhcyB0aGUgbG9naWNhbCByZXBsaWNh dGlvbiB3b3JrZXIgZG9lc24ndCBuZWVkIHRvCisJCQkgKiBzZW5kIG1lc3NhZ2VzIHRvIHRoZSBj bGllbnQuCisJCQkgKi8KKwkJY2FzZSAnTic6CisJCWNhc2UgJ0EnOgorCQkJCWJyZWFrOworCQlk ZWZhdWx0OgorCQkJeworCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgbWVzc2FnZSB0eXBl IHJlY2VpdmVkIGZyb20gcGFyYWxsZWwgYXBwbHkgd29ya2VyOiAlYyAobWVzc2FnZSBsZW5ndGgg JWQgYnl0ZXMpIiwKKwkJCQkJIG1zZ3R5cGUsIG1zZy0+bGVuKTsKKwkJCX0KKwl9Cit9CisKKy8q CisgKiBIYW5kbGUgYW55IHF1ZXVlZCBwcm90b2NvbCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKi8KK3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNz YWdlcyh2b2lkKQoreworCUxpc3RDZWxsCSAqbGM7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0 OworCisJc3RhdGljIE1lbW9yeUNvbnRleHQgaHBtX2NvbnRleHQgPSBOVUxMOworCisJLyoKKwkg KiBUaGlzIGlzIGludm9rZWQgZnJvbSBQcm9jZXNzSW50ZXJydXB0cygpLCBhbmQgc2luY2Ugc29t ZSBvZiB0aGUKKwkgKiBmdW5jdGlvbnMgaXQgY2FsbHMgY29udGFpbiBDSEVDS19GT1JfSU5URVJS VVBUUygpLCB0aGVyZSBpcyBhIHBvdGVudGlhbAorCSAqIGZvciByZWN1cnNpdmUgY2FsbHMgaWYg bW9yZSBzaWduYWxzIGFyZSByZWNlaXZlZCB3aGlsZSB0aGlzIHJ1bnMuICBJdCdzCisJICogdW5j bGVhciB0aGF0IHJlY3Vyc2l2ZSBlbnRyeSB3b3VsZCBiZSBzYWZlLCBhbmQgaXQgZG9lc24ndCBz ZWVtIHVzZWZ1bAorCSAqIGV2ZW4gaWYgaXQgaXMgc2FmZSwgc28gbGV0J3MgYmxvY2sgaW50ZXJy dXB0cyB1bnRpbCBkb25lLgorCSAqLworCUhPTERfSU5URVJSVVBUUygpOworCisJLyoKKwkgKiBN b3Jlb3ZlciwgQ3VycmVudE1lbW9yeUNvbnRleHQgbWlnaHQgYmUgcG9pbnRpbmcgYWxtb3N0IGFu eXdoZXJlLiAgV2UKKwkgKiBkb24ndCB3YW50IHRvIHJpc2sgbGVha2luZyBkYXRhIGludG8gbG9u Zy1saXZlZCBjb250ZXh0cywgc28gbGV0J3MgZG8KKwkgKiBvdXIgd29yayBoZXJlIGluIGEgcHJp dmF0ZSBjb250ZXh0IHRoYXQgd2UgY2FuIHJlc2V0IG9uIGVhY2ggdXNlLgorCSAqLworCWlmICho cG1fY29udGV4dCA9PSBOVUxMKQkvKiBmaXJzdCB0aW1lIHRocm91Z2g/ICovCisJCWhwbV9jb250 ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKFRvcE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkJ CSJIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMiLAorCQkJCQkJCQkJCQlBTExPQ1NFVF9ERUZB VUxUX1NJWkVTKTsKKwllbHNlCisJCU1lbW9yeUNvbnRleHRSZXNldChocG1fY29udGV4dCk7CisK KwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGhwbV9jb250ZXh0KTsKKworCVBh cmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IGZhbHNlOworCisJZm9yZWFjaChsYywgUGFyYWxs ZWxBcHBseVdvcmtlcnNMaXN0KQorCXsKKwkJc2htX21xX3Jlc3VsdCByZXM7CisJCVNpemUJCW5i eXRlczsKKwkJdm9pZAkgICAqZGF0YTsKKwkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv ID0gKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICopIGxmaXJzdChsYyk7CisKKwkJaWYgKHdpbmZv LT5lcnJvcl9tcV9oYW5kbGUgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCisJCXJlcyA9IHNobV9t cV9yZWNlaXZlKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUsICZuYnl0ZXMsCisJCQkJCQkJICZkYXRh LCB0cnVlKTsKKworCQlpZiAocmVzID09IFNITV9NUV9XT1VMRF9CTE9DSykKKwkJCWJyZWFrOwor CQllbHNlIGlmIChyZXMgPT0gU0hNX01RX1NVQ0NFU1MpCisJCXsKKwkJCVN0cmluZ0luZm9EYXRh IG1zZzsKKworCQkJaW5pdFN0cmluZ0luZm8oJm1zZyk7CisJCQlhcHBlbmRCaW5hcnlTdHJpbmdJ bmZvKCZtc2csIGRhdGEsIG5ieXRlcyk7CisJCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZSh3 aW5mbywgJm1zZyk7CisJCQlwZnJlZShtc2cuZGF0YSk7CisJCX0KKwkJZWxzZQorCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lU RV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3QgY29ubmVjdGlvbiB0byB0aGUgbGVhZGVyIGFw cGx5IHdvcmtlciIpKSk7CisJfQorCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQp OworCisJLyogTWlnaHQgYXMgd2VsbCBjbGVhciB0aGUgY29udGV4dCBvbiBvdXIgd2F5IG91dCAq LworCU1lbW9yeUNvbnRleHRSZXNldChocG1fY29udGV4dCk7CisKKwlSRVNVTUVfSU5URVJSVVBU UygpOworfQorCisvKgorICogU2V0IHVwIGEgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQu CisgKgorICogV2Ugc2V0IHVwIGEgY29udHJvbCByZWdpb24gdGhhdCBjb250YWlucyBhIFBhcmFs bGVsQXBwbHlXb3JrZXJTaGFyZWQsIHBsdXMKKyAqIG9uZSByZWdpb24gdG8gZWFjaCBvZiBtZXNz YWdlIHF1ZXVlIGFuZCBlcnJvciBxdWV1ZS4KKyAqCisgKiBSZXR1cm5zIHRydWUgb24gc3VjY2Vz cywgZmFsc2Ugb24gZmFpbHVyZS4KKyAqLworc3RhdGljIGJvb2wKK3BhcmFsbGVsX2FwcGx5X3Nl dHVwX2RzbShQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJc2htX3RvY19lc3Rp bWF0b3IgZTsKKwlTaXplCQlzZWdzaXplOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAg ICAqdG9jOworCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsKKwlzaG1fbXEJICAg Km1xOworCVNpemUJCXF1ZXVlX3NpemUgPSBEU01fUVVFVUVfU0laRTsKKwlTaXplCQllcnJvcl9x dWV1ZV9zaXplID0gRFNNX0VSUk9SX1FVRVVFX1NJWkU7CisJaW50CQkJc2VydmVyX3ZlcnNpb247 CisKKwkvKgorCSAqIEVzdGltYXRlIGhvdyBtdWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkg KgorCSAqIEJlY2F1c2UgdGhlIFRPQyBtYWNoaW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFk ZGluZyBvZiBvZGRseS1zaXplZAorCSAqIHJlcXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2gg Y2h1bmsgc2VwYXJhdGVseS4KKwkgKgorCSAqIFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0 aGUgbG9jYXRpb24gb2YgdGhlIGhlYWRlciwgYW5kIHdlIG5lZWQKKwkgKiBhbm90aGVyIGtleSB0 byB0cmFjayB0aGUgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJc2htX3Rv Y19pbml0aWFsaXplX2VzdGltYXRvcigmZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwg c2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQpKTsKKwlzaG1fdG9jX2VzdGltYXRlX2No dW5rKCZlLCBxdWV1ZV9zaXplKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCBlcnJvcl9x dWV1ZV9zaXplKTsKKworCXNobV90b2NfZXN0aW1hdGVfa2V5cygmZSwgMyk7CisJc2Vnc2l6ZSA9 IHNobV90b2NfZXN0aW1hdGUoJmUpOworCisJLyogQ3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5IHNl Z21lbnQgYW5kIGVzdGFibGlzaCBhIHRhYmxlIG9mIGNvbnRlbnRzLiAqLworCXNlZyA9IGRzbV9j cmVhdGUoc2htX3RvY19lc3RpbWF0ZSgmZSksIDApOworCWlmIChzZWcgPT0gTlVMTCkKKwkJcmV0 dXJuIGZhbHNlOworCisJdG9jID0gc2htX3RvY19jcmVhdGUoUEdfTE9HSUNBTF9BUFBMWV9TSE1f TUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Moc2VnKSwKKwkJCQkJCSBzZWdzaXplKTsKKworCS8q IFNldCB1cCB0aGUgaGVhZGVyIHJlZ2lvbi4gKi8KKwlzaGFyZWQgPSBzaG1fdG9jX2FsbG9jYXRl KHRvYywgc2l6ZW9mKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQpKTsKKwlTcGluTG9ja0luaXQo JnNoYXJlZC0+bXV0ZXgpOworCisJc2VydmVyX3ZlcnNpb24gPSB3YWxyY3Zfc2VydmVyX3ZlcnNp b24oTG9nUmVwV29ya2VyV2FsUmN2Q29ubik7CisJc2hhcmVkLT5wcm90b192ZXJzaW9uID0KKwkJ c2VydmVyX3ZlcnNpb24gPj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxM RUxfVkVSU0lPTl9OVU0gOgorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQ X1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNIDoKKwkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAw ID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgorCQlMT0dJQ0FMUkVQX1BS T1RPX1ZFUlNJT05fTlVNOworCisJc2hhcmVkLT5pbl91c2UgPSBmYWxzZTsKKwlzaGFyZWQtPndv cmtlcl9pZCA9IGxpc3RfbGVuZ3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCkgKyAxOworCisJ c2htX3RvY19pbnNlcnQodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfU0hBUkVELCBzaGFyZWQpOwor CisJLyogU2V0IHVwIG1lc3NhZ2UgcXVldWUgZm9yIHRoZSB3b3JrZXIuICovCisJbXEgPSBzaG1f bXFfY3JlYXRlKHNobV90b2NfYWxsb2NhdGUodG9jLCBxdWV1ZV9zaXplKSwgcXVldWVfc2l6ZSk7 CisJc2htX3RvY19pbnNlcnQodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfTVEsIG1xKTsKKwlzaG1f bXFfc2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKKworCS8qIEF0dGFjaCB0aGUgcXVldWUuICovCisJ d2luZm8tPm1xX2hhbmRsZSA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywgTlVMTCk7CisKKwkvKiBT ZXQgdXAgZXJyb3IgcXVldWUgZm9yIHRoZSB3b3JrZXIuICovCisJbXEgPSBzaG1fbXFfY3JlYXRl KHNobV90b2NfYWxsb2NhdGUodG9jLCBlcnJvcl9xdWV1ZV9zaXplKSwKKwkJCQkJICAgZXJyb3Jf cXVldWVfc2l6ZSk7CisJc2htX3RvY19pbnNlcnQodG9jLCBQQVJBTExFTF9BUFBMWV9LRVlfRVJS T1JfUVVFVUUsIG1xKTsKKwlzaG1fbXFfc2V0X3JlY2VpdmVyKG1xLCBNeVByb2MpOworCisJLyog QXR0YWNoIHRoZSBxdWV1ZS4gKi8KKwl3aW5mby0+ZXJyb3JfbXFfaGFuZGxlID0gc2htX21xX2F0 dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qIFJldHVybiByZXN1bHRzIHRvIGNhbGxlci4gKi8K Kwl3aW5mby0+ZHNtX3NlZyA9IHNlZzsKKwl3aW5mby0+c2hhcmVkID0gc2hhcmVkOworCisJcmV0 dXJuIHRydWU7Cit9CisKKy8qCisgKiBTdGFydCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgcHJvY2Vz cyBhbmQgYWxsb2NhdGUgc2hhcmVkIG1lbW9yeSBmb3IgaXQuCisgKi8KK3N0YXRpYyBQYXJhbGxl bEFwcGx5V29ya2VySW5mbyAqCitwYXJhbGxlbF9hcHBseV9zZXR1cF93b3JrZXIodm9pZCkKK3sK KwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisJYm9vbAkJbGF1bmNoZWQ7CisJUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvOworCWludAkJCW5hcHBseXdvcmtlcnM7CisKKwllbG9nKERF QlVHMSwgInNldHRpbmcgdXAgcGFyYWxsZWwgYXBwbHkgd29ya2VyICV1IiwKKwkJIGxpc3RfbGVu Z3RoKFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCkgKyAxKTsKKworCS8qIENoZWNrIGlmIHRoZXJl IGFyZSBmcmVlIHdvcmtlciBzbG90KHMpLiAqLworCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdv cmtlckxvY2ssIExXX1NIQVJFRCk7CisJbmFwcGx5d29ya2VycyA9IGxvZ2ljYWxyZXBfcGFyYWxs ZWxfYXBwbHlfd29ya2VyX2NvdW50KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQpOworCUxXTG9j a1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworCisJaWYgKG5hcHBseXdvcmtlcnMgPj0g bWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbikKKwkJcmV0dXJuIE5V TEw7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7 CisKKwl3aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBwYWxsb2MwKHNpemVvZihQ YXJhbGxlbEFwcGx5V29ya2VySW5mbykpOworCisJLyogU2V0dXAgc2hhcmVkIG1lbW9yeS4gKi8K KwlpZiAoIXBhcmFsbGVsX2FwcGx5X3NldHVwX2RzbSh3aW5mbykpCisJeworCQlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisJCXBmcmVlKHdpbmZvKTsKKworCQlyZXR1cm4gTlVM TDsKKwl9CisKKwlsYXVuY2hlZCA9IGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChNeUxvZ2ljYWxS ZXBXb3JrZXItPmRiaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm9pZCwKKwkJCQkJCQkJ CQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCQkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnVz ZXJpZCwKKwkJCQkJCQkJCQlJbnZhbGlkT2lkLAorCQkJCQkJCQkJCWRzbV9zZWdtZW50X2hhbmRs ZSh3aW5mby0+ZHNtX3NlZykpOworCisJaWYgKGxhdW5jaGVkKQorCQlQYXJhbGxlbEFwcGx5V29y a2Vyc0xpc3QgPSBsYXBwZW5kKFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCwgd2luZm8pOworCWVs c2UKKwl7CisJCXNobV9tcV9kZXRhY2god2luZm8tPm1xX2hhbmRsZSk7CisJCXNobV9tcV9kZXRh Y2god2luZm8tPmVycm9yX21xX2hhbmRsZSk7CisJCWRzbV9kZXRhY2god2luZm8tPmRzbV9zZWcp OworCQlwZnJlZSh3aW5mbyk7CisKKwkJd2luZm8gPSBOVUxMOworCX0KKworCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVybiB3aW5mbzsKK30KKworLyoKKyAqIFNl bmQgdGhlIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdmlhIHNo YXJlZC1tZW1vcnkgcXVldWUuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YShQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpk YXRhKQoreworCXNobV9tcV9yZXN1bHQgcmVzdWx0OworCisJcmVzdWx0ID0gc2htX21xX3NlbmQo d2luZm8tPm1xX2hhbmRsZSwgbmJ5dGVzLCBkYXRhLCBmYWxzZSwgdHJ1ZSk7CisKKwlpZiAocmVz dWx0ICE9IFNITV9NUV9TVUNDRVNTKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVS UkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2coImNv dWxkIG5vdCBzZW5kIGRhdGEgdG8gc2hhcmVkLW1lbW9yeSBxdWV1ZSIpKSk7Cit9CisKKy8qCisg KiBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgZnJlZSAoaS5lLiBpbl91 c2UgZmxhZyBpcyBmYWxzZSkuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3dhaXRfZm9yX2Zy ZWUoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQoreworCWZvciAoOzspCisJeworCQli b29sCQlpbl91c2U7CisKKwkJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+c2hhcmVkLT5tdXRleCk7 CisJCWluX3VzZSA9IHdpbmZvLT5zaGFyZWQtPmluX3VzZTsKKwkJU3BpbkxvY2tSZWxlYXNlKCZ3 aW5mby0+c2hhcmVkLT5tdXRleCk7CisKKwkJaWYgKCFpbl91c2UpCisJCQlicmVhazsKKworCQkv KiBJZiBhbnkgd29ya2VycyBoYXZlIGRpZWQsIHdlIGhhdmUgZmFpbGVkLiAqLworCQlpZiAod2lu Zm8tPmVycm9yX21xX2hhbmRsZSA9PSBOVUxMKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBl cnJtc2coImxvc3QgY29ubmVjdGlvbiB0byBwYXJhbGxlbCBhcHBseSB3b3JrZXIiKSkpOworCisJ CS8qIFdhaXQgdG8gYmUgc2lnbmFsbGVkLiAqLworCQkodm9pZCkgV2FpdExhdGNoKE15TGF0Y2gs CisJCQkJCQkgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs CisJCQkJCQkgMTAwMEwsCisJCQkJCQkgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZ X1NUQVRFX0NIQU5HRSk7CisKKwkJLyogUmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4u ICovCisJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisKKwkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZl IG9jY3VycmVkIHdoaWxlIHdlIHdlcmUgd2FpdGluZy4gKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQ VFMoKTsKKwl9Cit9CisKKy8qCisgKiBNYXJrIHRoZSBjdXJyZW50IHBhcmFsbGVsIGFwcGx5IHdv cmtlciBhcyBpZGxlLgorICovCit2b2lkCitwYXJhbGxlbF9hcHBseV9zZXRfaWRsZSh2b2lkKQor eworCUFzc2VydChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSk7CisKKwlTcGluTG9ja0FjcXVp cmUoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKwlNeVBhcmFsbGVsU2hhcmVkLT5pbl91c2Ug PSBmYWxzZTsKKwlTcGluTG9ja1JlbGVhc2UoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKK30K KworLyoKKyAqIERlZmluZSBhIHNhdmVwb2ludCBmb3IgYSBzdWJ4YWN0IGluIHBhcmFsbGVsIGFw cGx5IHdvcmtlciBpZiBuZWVkZWQuCisgKgorICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBj YW4gZmlndXJlIG91dCBpZiBhIG5ldyBzdWJ0cmFuc2FjdGlvbiB3YXMKKyAqIHN0YXJ0ZWQgYnkg Y2hlY2tpbmcgaWYgdGhlIG5ldyBjaGFuZ2UgYXJyaXZlZCB3aXRoIGRpZmZlcmVudCB4aWQuIElu IHRoYXQKKyAqIGNhc2UgZGVmaW5lIGEgbmFtZWQgc2F2ZXBvaW50LCBzbyB0aGF0IHdlIGFyZSBh YmxlIHRvIGNvbW1pdC9yb2xsYmFjayBpdAorICogc2VwYXJhdGVseSBsYXRlci4KKyAqLwordm9p ZAorcGFyYWxsZWxfYXBwbHlfc3VieGFjdF9pbmZvX2FkZChUcmFuc2FjdGlvbklkIGN1cnJlbnRf eGlkKQoreworCWlmIChjdXJyZW50X3hpZCAhPSBzdHJlYW1feGlkICYmCisJCSFsaXN0X21lbWJl cl94aWQoc3VieGFjdGxpc3QsIChpbnQpIGN1cnJlbnRfeGlkKSkKKwl7CisJCU1lbW9yeUNvbnRl eHQgb2xkY3R4OworCQljaGFyCQlzcG5hbWVbTUFYUEdQQVRIXTsKKworCQlwYXJhbGxlbF9hcHBs eV9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBjdXJyZW50X3hpZCwKKwkJCQkJ CQkJCSAgc3BuYW1lLCBzaXplb2Yoc3BuYW1lKSk7CisKKwkJZWxvZyhERUJVRzEsICJbUGFyYWxs ZWwgQXBwbHkgV29ya2VyICMldV0gZGVmaW5pbmcgc2F2ZXBvaW50ICVzIiwKKwkJCSBNeVBhcmFs bGVsU2hhcmVkLT53b3JrZXJfaWQsIHNwbmFtZSk7CisKKwkJLyogV2UgbXVzdCBiZSBpbiB0cmFu c2FjdGlvbiBibG9jayB0byBkZWZpbmUgdGhlIFNBVkVQT0lOVC4gKi8KKwkJaWYgKCFJc1RyYW5z YWN0aW9uQmxvY2soKSkKKwkJeworCQkJQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7CisJCQlDb21t aXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJfQorCisJCURlZmluZVNhdmVwb2ludChzcG5hbWUp OworCisJCS8qCisJCSAqIENvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCBpcyBuZWVkZWQgdG8gc3Rh cnQgYSBzdWJ0cmFuc2FjdGlvbiBhZnRlcgorCQkgKiBpc3N1aW5nIGEgU0FWRVBPSU5UIGluc2lk ZSBhIHRyYW5zYWN0aW9uIGJsb2NrIChzZWUKKwkJICogU3RhcnRTdWJUcmFuc2FjdGlvbigpKS4K KwkJICovCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCW9sZGN0eCA9IE1lbW9y eUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQlzdWJ4YWN0bGlzdCA9IGxhcHBlbmRf eGlkKHN1YnhhY3RsaXN0LCBjdXJyZW50X3hpZCk7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhv bGRjdHgpOworCX0KK30KKworLyoKKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVu IHRoZSB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCBpbiBhIHBhcmFsbGVsCisgKiBhcHBseSB3b3Jr ZXIuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3Ry ZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJCWJvb2wgcmVhZF9hYm9ydF9sc24pCit7 CisJVHJhbnNhY3Rpb25JZCB4aWQgPSBhYm9ydF9kYXRhLT54aWQ7CisJVHJhbnNhY3Rpb25JZCBz dWJ4aWQgPSBhYm9ydF9kYXRhLT5zdWJ4aWQ7CisKKwllbG9nKERFQlVHMSwgIltQYXJhbGxlbCBB cHBseSBXb3JrZXIgIyV1XSBhYm9ydGluZyBjdXJyZW50IHRyYW5zYWN0aW9uIHhpZD0ldSwgc3Vi eGlkPSV1IiwKKwkJIE15UGFyYWxsZWxTaGFyZWQtPndvcmtlcl9pZCAsIEdldEN1cnJlbnRUcmFu c2FjdGlvbklkSWZBbnkoKSwKKwkJIEdldEN1cnJlbnRTdWJUcmFuc2FjdGlvbklkKCkpOworCisJ LyoKKwkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBm cm9tIGNvcnJlY3QKKwkgKiBwb3NpdGlvbiBpbiBjYXNlIG9mIGNyYXNoLgorCSAqLworCWlmIChy ZWFkX2Fib3J0X2xzbikKKwl7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gYWJv cnRfZGF0YS0+YWJvcnRfbHNuOworCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX3RpbWVzdGFt cCA9IGFib3J0X2RhdGEtPmFib3J0X3RpbWU7CisJfQorCisJLyoKKwkgKiBJZiB0aGUgdHdvIFhJ RHMgYXJlIHRoZSBzYW1lLCBpdCdzIGluIGZhY3QgYWJvcnQgb2YgdG9wbGV2ZWwgeGFjdCwKKwkg KiBzbyBqdXN0IGZyZWUgdGhlIHN1YnhhY3RsaXN0LgorCSAqLworCWlmIChzdWJ4aWQgPT0geGlk KQorCXsKKwkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1cCgpOworCisJCUFib3J0Q3Vy cmVudFRyYW5zYWN0aW9uKCk7CisKKwkJaWYgKElzVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7CisJ CQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFu ZCgpOworCQl9CisKKwkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCgpOworCisJCWlu X3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNU QVRFX0lETEUsIE5VTEwpOworCisJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCXN1YnhhY3Rs aXN0ID0gTklMOworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBPSywgc28gaXQncyBhIHN1Ynhh Y3QuIFJvbGxiYWNrIHRvIHRoZSBzYXZlcG9pbnQuCisJCSAqCisJCSAqIFdlIGFsc28gbmVlZCB0 byByZWFkIHRoZSBzdWJ4YWN0bGlzdCwgZGV0ZXJtaW5lIHRoZSBvZmZzZXQKKwkJICogdHJhY2tl ZCBmb3IgdGhlIHN1YnhhY3QsIGFuZCB0cnVuY2F0ZSB0aGUgbGlzdC4KKwkJICovCisJCWludAkJ CWk7CisJCWJvb2wJCWZvdW5kID0gZmFsc2U7CisJCWNoYXIJCXNwbmFtZVtNQVhQR1BBVEhdOwor CisJCXBhcmFsbGVsX2FwcGx5X3NhdmVwb2ludF9uYW1lKE15U3Vic2NyaXB0aW9uLT5vaWQsIHN1 YnhpZCwgc3BuYW1lLAorCQkJCQkJCQkJICBzaXplb2Yoc3BuYW1lKSk7CisKKwkJZWxvZyhERUJV RzEsICJbUGFyYWxsZWwgQXBwbHkgV29ya2VyICMldV0gcm9sbGluZyBiYWNrIHRvIHNhdmVwb2lu dCAlcyIsCisJCQkgTXlQYXJhbGxlbFNoYXJlZC0+d29ya2VyX2lkLCBzcG5hbWUpOworCisJCWZv ciAoaSA9IGxpc3RfbGVuZ3RoKHN1YnhhY3RsaXN0KSAtIDE7IGkgPj0gMDsgaS0tKQorCQl7CisJ CQl4aWQgPSAoVHJhbnNhY3Rpb25JZCkgbGlzdF9udGhfeGlkKHN1YnhhY3RsaXN0LCBpKTsKKwkJ CWlmICh4aWQgPT0gc3VieGlkKQorCQkJeworCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQlicmVhazsK KwkJCX0KKwkJfQorCisJCWlmIChmb3VuZCkKKwkJeworCQkJUm9sbGJhY2tUb1NhdmVwb2ludChz cG5hbWUpOworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQlzdWJ4YWN0bGlzdCA9 IGxpc3RfdHJ1bmNhdGUoc3VieGFjdGxpc3QsIGkgKyAxKTsKKwkJfQorCisJCXBnc3RhdF9yZXBv cnRfYWN0aXZpdHkoU1RBVEVfSURMRUlOVFJBTlNBQ1RJT04sIE5VTEwpOworCX0KKworCXBhcmFs bGVsX2FwcGx5X3NldF9pZGxlKCk7Cit9CisKKy8qCisgKiBGb3JtIHRoZSBzYXZlcG9pbnQgbmFt ZSBmb3IgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKyAqCisgKiBSZXR1cm4gdGhlIG5hbWUg aW4gdGhlIHN1cHBsaWVkIGJ1ZmZlci4KKyAqLwordm9pZAorcGFyYWxsZWxfYXBwbHlfc2F2ZXBv aW50X25hbWUoT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCQkJICBjaGFyICpz cG5hbWUsIGludCBzenNwKQoreworCXNucHJpbnRmKHNwbmFtZSwgc3pzcCwgInBnX3NwXyV1XyV1 Iiwgc3Vib2lkLCB4aWQpOworfQorCisvKiBTZXR1cCByZXBsaWNhdGlvbiBvcmlnaW4gdHJhY2tp bmcuICovCit2b2lkCitwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3NldHVwKHZvaWQpCit7CisJ UmVwT3JpZ2luSWQgb3JpZ2luaWQ7CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisJ Ym9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOworCisJLyogVGhpcyBmdW5jdGlvbiBtaWdodCBiZSBj YWxsZWQgaW5zaWRlIG9yIG91dHNpZGUgb2YgdHJhbnNhY3Rpb24uICovCisJaWYgKCFJc1RyYW5z YWN0aW9uU3RhdGUoKSkKKwl7CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCXN0YXJ0 ZWRfdHggPSB0cnVlOworCX0KKworCXNucHJpbnRmKG9yaWdpbm5hbWUsIHNpemVvZihvcmlnaW5u YW1lKSwgInBnXyV1IiwgTXlTdWJzY3JpcHRpb24tPm9pZCk7CisJb3JpZ2luaWQgPSByZXBsb3Jp Z2luX2J5X25hbWUob3JpZ2lubmFtZSwgZmFsc2UpOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1 cChvcmlnaW5pZCk7CisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOworCisJ aWYgKHN0YXJ0ZWRfdHgpCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworfQorCisvKiBS ZXNldCByZXBsaWNhdGlvbiBvcmlnaW4gdHJhY2tpbmcuICovCit2b2lkCitwYXJhbGxlbF9hcHBs eV9yZXBsb3JpZ2luX3Jlc2V0KHZvaWQpCit7CisJYm9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOwor CisJLyogVGhpcyBmdW5jdGlvbiBtaWdodCBiZSBjYWxsZWQgaW5zaWRlIG9yIG91dHNpZGUgb2Yg dHJhbnNhY3Rpb24uICovCisJaWYgKCFJc1RyYW5zYWN0aW9uU3RhdGUoKSkKKwl7CisJCVN0YXJ0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCXN0YXJ0ZWRfdHggPSB0cnVlOworCX0KKworCXJlcGxv cmlnaW5fc2Vzc2lvbl9yZXNldCgpOworCisJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IElu dmFsaWRSZXBPcmlnaW5JZDsKKwlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luX2xzbiA9IEludmFs aWRYTG9nUmVjUHRyOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gMDsK KworCWlmIChzdGFydGVkX3R4KQorCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKK30KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCmluZGV4IDE2NjdkNzIuLmE0Mzc2 ODMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYwpAQCAtNjUyLDkg KzY1MiwxMCBAQCBEZWNvZGVDb21taXQoTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9n UmVjb3JkQnVmZmVyICpidWYsCiAJewogCQlmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLT5uc3VieGFj dHM7IGkrKykKIAkJewotCQkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHBhcnNl ZC0+c3VieGFjdHNbaV0sIGJ1Zi0+b3JpZ3B0cik7CisJCQlSZW9yZGVyQnVmZmVyRm9yZ2V0KGN0 eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwgYnVmLT5vcmlncHRyLAorCQkJCQkJCQlj b21taXRfdGltZSk7CiAJCX0KLQkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHhp ZCwgYnVmLT5vcmlncHRyKTsKKwkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHhp ZCwgYnVmLT5vcmlncHRyLCBjb21taXRfdGltZSk7CiAKIAkJcmV0dXJuOwogCX0KQEAgLTgyMiwx MCArODIzLDExIEBAIERlY29kZUFib3J0KExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExv Z1JlY29yZEJ1ZmZlciAqYnVmLAogCQlmb3IgKGkgPSAwOyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7 IGkrKykKIAkJewogCQkJUmVvcmRlckJ1ZmZlckFib3J0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5z dWJ4YWN0c1tpXSwKLQkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyKTsKKwkJCQkJCQkg ICBidWYtPnJlY29yZC0+RW5kUmVjUHRyLCBhYm9ydF90aW1lKTsKIAkJfQogCi0JCVJlb3JkZXJC dWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7CisJ CVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJl Y1B0ciwKKwkJCQkJCSAgIGFib3J0X3RpbWUpOwogCX0KIAogCS8qIHVwZGF0ZSB0aGUgZGVjb2Rp bmcgc3RhdHMgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv bGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpp bmRleCAzYmJkNTIyLi43YTQ2Y2MyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xhdW5jaGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9sYXVuY2hlci5jCkBAIC01NCw2ICs1NCw3IEBACiAKIGludAkJCW1heF9sb2dpY2FsX3JlcGxp Y2F0aW9uX3dvcmtlcnMgPSA0OwogaW50CQkJbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0 aW9uID0gMjsKK2ludAkJCW1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRp b24gPSAyOwogCiBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2ljYWxSZXBXb3JrZXIgPSBOVUxMOwog CkBAIC03Myw2ICs3NCw3IEBAIHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfbGF1bmNoZXJfb25leGl0 KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfb25l eGl0KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgbG9naWNhbHJlcF93b3JrZXJf ZGV0YWNoKHZvaWQpOwogc3RhdGljIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChMb2dp Y2FsUmVwV29ya2VyICp3b3JrZXIpOworc3RhdGljIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfc3Rv cF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCiBzdGF0aWMgYm9vbCBvbl9j b21taXRfbGF1bmNoZXJfd2FrZXVwID0gZmFsc2U7CiAKQEAgLTE1MSw4ICsxNTMsMTAgQEAgZ2V0 X3N1YnNjcmlwdGlvbl9saXN0KHZvaWQpCiAgKgogICogVGhpcyBpcyBvbmx5IG5lZWRlZCBmb3Ig Y2xlYW5pbmcgdXAgdGhlIHNoYXJlZCBtZW1vcnkgaW4gY2FzZSB0aGUgd29ya2VyCiAgKiBmYWls cyB0byBhdHRhY2guCisgKgorICogUmV0dXJuIHdoZXRoZXIgdGhlIGF0dGFjaCB3YXMgc3VjY2Vz c2Z1bC4KICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBXYWl0Rm9yUmVwbGljYXRpb25X b3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAogCQkJCQkJCSAgIHVpbnQxNiBn ZW5lcmF0aW9uLAogCQkJCQkJCSAgIEJhY2tncm91bmRXb3JrZXJIYW5kbGUgKmhhbmRsZSkKQEAg LTE2OCwxMSArMTcyLDExIEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2Fs UmVwV29ya2VyICp3b3JrZXIsCiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9j aywgTFdfU0hBUkVEKTsKIAotCQkvKiBXb3JrZXIgZWl0aGVyIGRpZWQgb3IgaGFzIHN0YXJ0ZWQ7 IG5vIG5lZWQgdG8gZG8gYW55dGhpbmcuICovCisJCS8qIFdvcmtlciBlaXRoZXIgZGllZCBvciBo YXMgc3RhcnRlZC4gUmV0dXJuIGZhbHNlIGlmIGRpZWQuICovCiAJCWlmICghd29ya2VyLT5pbl91 c2UgfHwgd29ya2VyLT5wcm9jKQogCQl7CiAJCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrKTsKLQkJCXJldHVybjsKKwkJCXJldHVybiB3b3JrZXItPmluX3VzZTsKIAkJfQogCiAJ CUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwpAQCAtMTg3LDcgKzE5MSw3IEBA IFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIs CiAJCQlpZiAoZ2VuZXJhdGlvbiA9PSB3b3JrZXItPmdlbmVyYXRpb24pCiAJCQkJbG9naWNhbHJl cF93b3JrZXJfY2xlYW51cCh3b3JrZXIpOwogCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29y a2VyTG9jayk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIAogCQkvKgpAQCAt MjA5LDYgKzIxMyw4IEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVw V29ya2VyICp3b3JrZXIsCiAvKgogICogV2Fsa3MgdGhlIHdvcmtlcnMgYXJyYXkgYW5kIHNlYXJj aGVzIGZvciBvbmUgdGhhdCBtYXRjaGVzIGdpdmVuCiAgKiBzdWJzY3JpcHRpb24gaWQgYW5kIHJl bGlkLgorICoKKyAqIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGxlYWRlciBhcHBseSB3 b3JrZXIgb3IgdGFibGUgc3luYyB3b3JrZXIuCiAgKi8KIExvZ2ljYWxSZXBXb3JrZXIgKgogbG9n aWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwgYm9vbCBvbmx5X3J1bm5p bmcpCkBAIC0yMjMsNiArMjI5LDEwIEBAIGxvZ2ljYWxyZXBfd29ya2VyX2ZpbmQoT2lkIHN1Ymlk LCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQogCXsKIAkJTG9naWNhbFJlcFdvcmtlciAq dyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOwogCisJCS8qIFNraXAgcGFyYWxsZWwgYXBw bHkgd29ya2Vycy4gKi8KKwkJaWYgKGlzUGFyYWxsZWxBcHBseVdvcmtlcih3KSkKKwkJCWNvbnRp bnVlOworCiAJCWlmICh3LT5pbl91c2UgJiYgdy0+c3ViaWQgPT0gc3ViaWQgJiYgdy0+cmVsaWQg PT0gcmVsaWQgJiYKIAkJCSghb25seV9ydW5uaW5nIHx8IHctPnByb2MpKQogCQl7CkBAIC0yNTks MTEgKzI2OSwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJvb2wgb25s eV9ydW5uaW5nKQogfQogCiAvKgotICogU3RhcnQgbmV3IGFwcGx5IGJhY2tncm91bmQgd29ya2Vy LCBpZiBwb3NzaWJsZS4KKyAqIFN0YXJ0IG5ldyBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9zc2li bGUuCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZhaWx1cmUuCiAg Ki8KLXZvaWQKK2Jvb2wKIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1 YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLCBPaWQgdXNlcmlkLAotCQkJCQkJIE9pZCByZWxpZCkK KwkJCQkJCSBPaWQgcmVsaWQsIGRzbV9oYW5kbGUgc3Vid29ya2VyX2RzbSkKIHsKIAlCYWNrZ3Jv dW5kV29ya2VyIGJndzsKIAlCYWNrZ3JvdW5kV29ya2VySGFuZGxlICpiZ3dfaGFuZGxlOwpAQCAt MjcyLDcgKzI4NCwxMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBz dWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lkIHVzZXJpZCwKIAlpbnQJCQlzbG90ID0gMDsK IAlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIgPSBOVUxMOwogCWludAkJCW5zeW5jd29ya2VyczsK KwlpbnQJCQlucGFyYWxsZWxhcHBseXdvcmtlcnM7CiAJVGltZXN0YW1wVHogbm93OworCWJvb2wJ CWlzX3N1YndvcmtlciA9IChzdWJ3b3JrZXJfZHNtICE9IERTTV9IQU5ETEVfSU5WQUxJRCk7CisK KwkvKiBTYW5pdHkgY2hlY2s6IHdlIGRvbid0IHN1cHBvcnQgdGFibGUgc3luYyBpbiBzdWJ3b3Jr ZXIuICovCisJQXNzZXJ0KCEoaXNfc3Vid29ya2VyICYmIE9pZElzVmFsaWQocmVsaWQpKSk7CiAK IAllcmVwb3J0KERFQlVHMSwKIAkJCShlcnJtc2dfaW50ZXJuYWwoInN0YXJ0aW5nIGxvZ2ljYWwg cmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIiwKQEAgLTM1MCw3ICsz NjcsMTkgQEAgcmV0cnk6CiAJaWYgKE9pZElzVmFsaWQocmVsaWQpICYmIG5zeW5jd29ya2VycyA+ PSBtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pCiAJewogCQlMV0xvY2tSZWxlYXNl KExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CisJfQor CisJbnBhcmFsbGVsYXBwbHl3b3JrZXJzID0gbG9naWNhbHJlcF9wYXJhbGxlbF9hcHBseV93b3Jr ZXJfY291bnQoc3ViaWQpOworCisJLyoKKwkgKiBSZXR1cm4gc2lsZW50bHkgaWYgdGhlIG51bWJl ciBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHJlYWNoZWQgdGhlCisJICogbGltaXQgcGVyIHN1 YnNjcmlwdGlvbi4KKwkgKi8KKwlpZiAoaXNfc3Vid29ya2VyICYmIG5wYXJhbGxlbGFwcGx5d29y a2VycyA+PSBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKQorCXsK KwkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisJCXJldHVybiBmYWxzZTsK IAl9CiAKIAkvKgpAQCAtMzY0LDcgKzM5Myw3IEBAIHJldHJ5OgogCQkJCShlcnJjb2RlKEVSUkNP REVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygib3V0IG9mIGxv Z2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQoIllvdSBtaWdo dCBuZWVkIHRvIGluY3JlYXNlIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMuIikpKTsK LQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CiAJfQogCiAJLyogUHJlcGFyZSB0aGUgd29ya2Vy IHNsb3QuICovCkBAIC0zNzksNiArNDA4LDcgQEAgcmV0cnk6CiAJd29ya2VyLT5yZWxzdGF0ZSA9 IFNVQlJFTF9TVEFURV9VTktOT1dOOwogCXdvcmtlci0+cmVsc3RhdGVfbHNuID0gSW52YWxpZFhM b2dSZWNQdHI7CiAJd29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IE5VTEw7CisJd29ya2VyLT5hcHBs eV9sZWFkZXJfcGlkID0gaXNfc3Vid29ya2VyID8gTXlQcm9jUGlkIDogSW52YWxpZFBpZDsKIAl3 b3JrZXItPmxhc3RfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJVElNRVNUQU1QX05PQkVHSU4o d29ya2VyLT5sYXN0X3NlbmRfdGltZSk7CiAJVElNRVNUQU1QX05PQkVHSU4od29ya2VyLT5sYXN0 X3JlY3ZfdGltZSk7CkBAIC0zOTYsMTAgKzQyNiwxOCBAQCByZXRyeToKIAkJQkdXT1JLRVJfQkFD S0VORF9EQVRBQkFTRV9DT05ORUNUSU9OOwogCWJndy5iZ3dfc3RhcnRfdGltZSA9IEJnV29ya2Vy U3RhcnRfUmVjb3ZlcnlGaW5pc2hlZDsKIAlzbnByaW50ZihiZ3cuYmd3X2xpYnJhcnlfbmFtZSwg QkdXX01BWExFTiwgInBvc3RncmVzIik7Ci0Jc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1l LCBCR1dfTUFYTEVOLCAiQXBwbHlXb3JrZXJNYWluIik7CisKKwlpZiAoaXNfc3Vid29ya2VyKQor CQlzbnByaW50ZihiZ3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJQYXJhbGxlbEFw cGx5V29ya2VyTWFpbiIpOworCWVsc2UKKwkJc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1l LCBCR1dfTUFYTEVOLCAiQXBwbHlXb3JrZXJNYWluIik7CisKIAlpZiAoT2lkSXNWYWxpZChyZWxp ZCkpCiAJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKIAkJCQkgImxvZ2ljYWwg cmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUgc3luYyAldSIsIHN1YmlkLCBy ZWxpZCk7CisJZWxzZSBpZiAoaXNfc3Vid29ya2VyKQorCQlzbnByaW50ZihiZ3cuYmd3X25hbWUs IEJHV19NQVhMRU4sCisJCQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdv cmtlciBmb3Igc3Vic2NyaXB0aW9uICV1Iiwgc3ViaWQpOwogCWVsc2UKIAkJc25wcmludGYoYmd3 LmJnd19uYW1lLCBCR1dfTUFYTEVOLAogCQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIg Zm9yIHN1YnNjcmlwdGlvbiAldSIsIHN1YmlkKTsKQEAgLTQwOSw2ICs0NDcsOSBAQCByZXRyeToK IAliZ3cuYmd3X25vdGlmeV9waWQgPSBNeVByb2NQaWQ7CiAJYmd3LmJnd19tYWluX2FyZyA9IElu dDMyR2V0RGF0dW0oc2xvdCk7CiAKKwlpZiAoaXNfc3Vid29ya2VyKQorCQltZW1jcHkoYmd3LmJn d19leHRyYSwgJnN1Yndvcmtlcl9kc20sIHNpemVvZihkc21faGFuZGxlKSk7CisKIAlpZiAoIVJl Z2lzdGVyRHluYW1pY0JhY2tncm91bmRXb3JrZXIoJmJndywgJmJnd19oYW5kbGUpKQogCXsKIAkJ LyogRmFpbGVkIHRvIHN0YXJ0IHdvcmtlciwgc28gY2xlYW4gdXAgdGhlIHdvcmtlciBzbG90LiAq LwpAQCAtNDIxLDExICs0NjIsMTEgQEAgcmV0cnk6CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05G SUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJvdXQgb2YgYmFja2dyb3Vu ZCB3b3JrZXIgc2xvdHMiKSwKIAkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5jcmVh c2UgbWF4X3dvcmtlcl9wcm9jZXNzZXMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7 CiAJfQogCiAJLyogTm93IHdhaXQgdW50aWwgaXQgYXR0YWNoZXMuICovCi0JV2FpdEZvclJlcGxp Y2F0aW9uV29ya2VyQXR0YWNoKHdvcmtlciwgZ2VuZXJhdGlvbiwgYmd3X2hhbmRsZSk7CisJcmV0 dXJuIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdlbmVyYXRpb24sIGJn d19oYW5kbGUpOwogfQogCiAvKgpAQCAtNDM2LDE5ICs0NzcsNTIgQEAgdm9pZAogbG9naWNhbHJl cF93b3JrZXJfc3RvcChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIHsKIAlMb2dpY2FsUmVwV29ya2Vy ICp3b3JrZXI7Ci0JdWludDE2CQlnZW5lcmF0aW9uOwogCiAJTFdMb2NrQWNxdWlyZShMb2dpY2Fs UmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIAogCXdvcmtlciA9IGxvZ2ljYWxyZXBfd29ya2Vy X2ZpbmQoc3ViaWQsIHJlbGlkLCBmYWxzZSk7CiAKLQkvKiBObyB3b3JrZXIsIG5vdGhpbmcgdG8g ZG8uICovCi0JaWYgKCF3b3JrZXIpCisJaWYgKHdvcmtlcikKIAl7Ci0JCUxXTG9ja1JlbGVhc2Uo TG9naWNhbFJlcFdvcmtlckxvY2spOwotCQlyZXR1cm47CisJCUFzc2VydCghaXNQYXJhbGxlbEFw cGx5V29ya2VyKHdvcmtlcikpOworCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdv cmtlcik7CiAJfQogCisJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Cit9CisK Ky8qCisgKiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBjb3JyZXNwb25kaW5n IHRvIHRoZSBpbnB1dCBzbG90IG51bWJlciwKKyAqIGFuZCB3YWl0IHVudGlsIGl0IGRldGFjaGVz IGZyb20gdGhlIHNsb3QuCisgKi8KK3ZvaWQKK2xvZ2ljYWxyZXBfd29ya2VyX3N0b3BfYnlfc2xv dChpbnQgc2xvdF9ubywgdWludDE2IGdlbmVyYXRpb24pCit7CisJTG9naWNhbFJlcFdvcmtlciAq d29ya2VyID0gJkxvZ2ljYWxSZXBDdHgtPndvcmtlcnNbc2xvdF9ub107CisKKwlMV0xvY2tBY3F1 aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOworCisJLyogUmV0dXJuIGlmIHRo ZSBnZW5lcmF0aW9uIGRvZXNuJ3QgbWF0Y2ggb3IgdGhlIHdvcmtlciBpcyBub3QgYWxpdmUuICov CisJaWYgKHdvcmtlci0+Z2VuZXJhdGlvbiAhPSBnZW5lcmF0aW9uIHx8CisJCXdvcmtlci0+cHJv YyA9PSBOVUxMKQorCQlyZXR1cm47CisKKwlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFs KHdvcmtlcik7CisKKwlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKK30KKwor LyoKKyAqIFdvcmtob3JzZSBmb3IgbG9naWNhbHJlcF93b3JrZXJfc3RvcCgpIGFuZCBsb2dpY2Fs cmVwX3dvcmtlcl9kZXRhY2goKS4gU3RvcAorICogdGhlIHdvcmtlciBhbmQgd2FpdCBmb3IgaXQg dG8gZGllLgorICovCitzdGF0aWMgdm9pZAorbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5h bChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCit7CisJdWludDE2CQlnZW5lcmF0aW9uOworCisJ QXNzZXJ0KExXTG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7CisKIAkvKgogCSAq IFJlbWVtYmVyIHdoaWNoIGdlbmVyYXRpb24gd2FzIG91ciB3b3JrZXIgc28gd2UgY2FuIGNoZWNr IGlmIHdoYXQgd2Ugc2VlCiAJICogaXMgc3RpbGwgdGhlIHNhbWUgb25lLgpAQCAtNDg1LDEwICs1 NTksNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQogCQkg KiBkaWZmZXJlbnQsIG1lYW5pbmcgdGhhdCBhIGRpZmZlcmVudCB3b3JrZXIgaGFzIHRha2VuIHRo ZSBzbG90LgogCQkgKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3JrZXItPmdlbmVyYXRp b24gIT0gZ2VuZXJhdGlvbikKLQkJewotCQkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2Vy TG9jayk7CiAJCQlyZXR1cm47Ci0JCX0KIAogCQkvKiBXb3JrZXIgaGFzIGFzc2lnbmVkIHByb2Ms IHNvIGl0IGhhcyBzdGFydGVkLiAqLwogCQlpZiAod29ya2VyLT5wcm9jKQpAQCAtNTIyLDggKzU5 Myw2IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAKIAkJ TFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIAl9Ci0KLQlM V0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKIH0KIAogLyoKQEAgLTU5OSw2ICs2 NjgsMjkgQEAgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KQogc3RhdGljIHZvaWQK IGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKQogeworCS8qCisJICogVGhpcyBpcyB0aGUg bGVhZGVyIGFwcGx5IHdvcmtlcjsgc3RvcCBhbGwgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMK KwkgKiBwcmV2aW91c2x5IHN0YXJ0ZWQgZnJvbSBoZXJlLgorCSAqLworCWlmICghaXNQYXJhbGxl bEFwcGx5V29ya2VyKE15TG9naWNhbFJlcFdvcmtlcikpCisJeworCQlMaXN0CSAgICp3b3JrZXJz OworCQlMaXN0Q2VsbCAgICpsYzsKKworCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJM b2NrLCBMV19TSEFSRUQpOworCisJCXdvcmtlcnMgPSBsb2dpY2FscmVwX3dvcmtlcnNfZmluZChN eUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB0cnVlKTsKKwkJZm9yZWFjaChsYywgd29ya2VycykK KwkJeworCQkJTG9naWNhbFJlcFdvcmtlciAqdyA9IChMb2dpY2FsUmVwV29ya2VyICopIGxmaXJz dChsYyk7CisKKwkJCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIodykpCisJCQkJbG9naWNhbHJl cF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3KTsKKwkJfQorCisJCUxXTG9ja1JlbGVhc2UoTG9naWNh bFJlcFdvcmtlckxvY2spOworCX0KKwogCS8qIEJsb2NrIGNvbmN1cnJlbnQgYWNjZXNzLiAqLwog CUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX0VYQ0xVU0lWRSk7CiAKQEAg LTYyMSw2ICs3MTMsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3Jr ZXIgKndvcmtlcikKIAl3b3JrZXItPnVzZXJpZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5zdWJp ZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5yZWxpZCA9IEludmFsaWRPaWQ7CisJd29ya2VyLT5h cHBseV9sZWFkZXJfcGlkID0gSW52YWxpZFBpZDsKIH0KIAogLyoKQEAgLTY4MCw2ICs3NzMsMzMg QEAgbG9naWNhbHJlcF9zeW5jX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpCiB9CiAKIC8qCisgKiBD b3VudCB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVyZWQgKGJ1dCBub3QgbmVjZXNzYXJpbHkgcnVubmlu ZykgcGFyYWxsZWwgYXBwbHkKKyAqIHdvcmtlcnMgZm9yIGEgc3Vic2NyaXB0aW9uLgorICovCitp bnQKK2xvZ2ljYWxyZXBfcGFyYWxsZWxfYXBwbHlfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKK3sK KwlpbnQJCQlpOworCWludAkJCXJlcyA9IDA7CisKKwlBc3NlcnQoTFdMb2NrSGVsZEJ5TWUoTG9n aWNhbFJlcFdvcmtlckxvY2spKTsKKworCS8qCisJICogU2NhbiBhbGwgYXR0YWNoZWQgcGFyYWxs ZWwgYXBwbHkgd29ya2Vycywgb25seSBjb3VudGluZyB0aG9zZSB3aGljaAorCSAqIGhhdmUgdGhl IGdpdmVuIHN1YnNjcmlwdGlvbiBpZC4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgbWF4X2xvZ2lj YWxfcmVwbGljYXRpb25fd29ya2VyczsgaSsrKQorCXsKKwkJTG9naWNhbFJlcFdvcmtlciAqdyA9 ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOworCisJCWlmICh3LT5zdWJpZCA9PSBzdWJpZCAm JiBpc1BhcmFsbGVsQXBwbHlXb3JrZXIodykpCisJCQlyZXMrKzsKKwl9CisKKwlyZXR1cm4gcmVz OworfQorCisvKgogICogQXBwbHlMYXVuY2hlclNobWVtU2l6ZQogICoJCUNvbXB1dGUgc3BhY2Ug bmVlZGVkIGZvciByZXBsaWNhdGlvbiBsYXVuY2hlciBzaGFyZWQgbWVtb3J5CiAgKi8KQEAgLTg2 OCw3ICs5ODgsNyBAQCBBcHBseUxhdW5jaGVyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJCQkJd2Fp dF90aW1lID0gd2FsX3JldHJpZXZlX3JldHJ5X2ludGVydmFsOwogCiAJCQkJCWxvZ2ljYWxyZXBf d29ya2VyX2xhdW5jaChzdWItPmRiaWQsIHN1Yi0+b2lkLCBzdWItPm5hbWUsCi0JCQkJCQkJCQkJ CSBzdWItPm93bmVyLCBJbnZhbGlkT2lkKTsKKwkJCQkJCQkJCQkJIHN1Yi0+b3duZXIsIEludmFs aWRPaWQsIERTTV9IQU5ETEVfSU5WQUxJRCk7CiAJCQkJfQogCQkJfQogCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMKaW5kZXggZmY4NTEzZS4uNDdiZDgxMSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwpAQCAtMTE2MywzMSArMTE2Myw1NiBAQCBs b2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwQ29t bWl0RGF0YSAqY29tbWl0X2RhdGEpCiAvKgogICogV3JpdGUgU1RSRUFNIEFCT1JUIHRvIHRoZSBv dXRwdXQgc3RyZWFtLiBOb3RlIHRoYXQgeGlkIGFuZCBzdWJ4aWQgd2lsbCBiZQogICogc2FtZSBm b3IgdGhlIHRvcC1sZXZlbCB0cmFuc2FjdGlvbiBhYm9ydC4KKyAqCisgKiBJZiB3cml0ZV9hYm9y dF9sc24gaXMgdHJ1ZSwgc2VuZCB0aGUgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lIGZpZWxkcywK KyAqIG90aGVyd2lzZSBkb24ndC4KICAqLwogdm9pZAogbG9naWNhbHJlcF93cml0ZV9zdHJlYW1f YWJvcnQoU3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLAotCQkJCQkJCSAgVHJhbnNh Y3Rpb25JZCBzdWJ4aWQpCisJCQkJCQkJICBSZW9yZGVyQnVmZmVyVFhOICp0eG4sIFhMb2dSZWNQ dHIgYWJvcnRfbHNuLAorCQkJCQkJCSAgYm9vbCB3cml0ZV9hYm9ydF9sc24pCiB7CiAJcHFfc2Vu ZGJ5dGUob3V0LCBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX0FCT1JUKTsKIAotCUFzc2VydChUcmFu c2FjdGlvbklkSXNWYWxpZCh4aWQpICYmIFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN1YnhpZCkpOwor CUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpICYmIFRyYW5zYWN0aW9uSWRJc1ZhbGlk KHR4bi0+eGlkKSk7CiAKIAkvKiB0cmFuc2FjdGlvbiBJRCAqLwogCXBxX3NlbmRpbnQzMihvdXQs IHhpZCk7Ci0JcHFfc2VuZGludDMyKG91dCwgc3VieGlkKTsKKwlwcV9zZW5kaW50MzIob3V0LCB0 eG4tPnhpZCk7CisKKwlpZiAod3JpdGVfYWJvcnRfbHNuKQorCXsKKwkJcHFfc2VuZGludDY0KG91 dCwgYWJvcnRfbHNuKTsKKwkJcHFfc2VuZGludDY0KG91dCwgdHhuLT54YWN0X3RpbWUuYWJvcnRf dGltZSk7CisJfQogfQogCiAvKgogICogUmVhZCBTVFJFQU0gQUJPUlQgZnJvbSB0aGUgb3V0cHV0 IHN0cmVhbS4KKyAqCisgKiBJZiByZWFkX2Fib3J0X2xzbiBpcyB0cnVlLCB0cnkgdG8gcmVhZCB0 aGUgYWJvcnRfbHNuIGFuZCBhYm9ydF90aW1lIGZpZWxkcywKKyAqIG90aGVyd2lzZSBkb24ndC4K ICAqLwogdm9pZAotbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLCBU cmFuc2FjdGlvbklkICp4aWQsCi0JCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnN1YnhpZCkKK2xvZ2lj YWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwKKwkJCQkJCQkgTG9naWNhbFJl cFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSwKKwkJCQkJCQkgYm9vbCByZWFkX2Fib3J0X2xz bikKIHsKLQlBc3NlcnQoeGlkICYmIHN1YnhpZCk7CisJQXNzZXJ0KGFib3J0X2RhdGEpOwogCi0J KnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7Ci0JKnN1YnhpZCA9IHBxX2dldG1zZ2ludChpbiwg NCk7CisJYWJvcnRfZGF0YS0+eGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwlhYm9ydF9kYXRh LT5zdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOworCisJaWYgKHJlYWRfYWJvcnRfbHNuKQor CXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gcHFfZ2V0bXNnaW50NjQoaW4pOworCQlhYm9y dF9kYXRhLT5hYm9ydF90aW1lID0gcHFfZ2V0bXNnaW50NjQoaW4pOworCX0KKwllbHNlCisJewor CQlhYm9ydF9kYXRhLT5hYm9ydF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwkJYWJvcnRfZGF0 YS0+YWJvcnRfdGltZSA9IDA7CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwppbmRleCA4OWNmOWY5Li41YTIwYzc0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwor KysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZmZXIuYwpAQCAt MjgzOSw3ICsyODM5LDggQEAgUmVvcmRlckJ1ZmZlckZpbmlzaFByZXBhcmVkKFJlb3JkZXJCdWZm ZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwKICAqIGRpc2suCiAgKi8KIHZvaWQKLVJlb3JkZXJC dWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQ dHIgbHNuKQorUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlv bklkIHhpZCwgWExvZ1JlY1B0ciBsc24sCisJCQkJICAgVGltZXN0YW1wVHogYWJvcnRfdGltZSkK IHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0eG47CiAKQEAgLTI4NTAsNiArMjg1MSw4IEBAIFJlb3Jk ZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dS ZWNQdHIgbHNuKQogCWlmICh0eG4gPT0gTlVMTCkKIAkJcmV0dXJuOwogCisJdHhuLT54YWN0X3Rp bWUuYWJvcnRfdGltZSA9IGFib3J0X3RpbWU7CisKIAkvKiBGb3Igc3RyZWFtZWQgdHJhbnNhY3Rp b25zIG5vdGlmeSB0aGUgcmVtb3RlIG5vZGUgYWJvdXQgdGhlIGFib3J0LiAqLwogCWlmIChyYnR4 bl9pc19zdHJlYW1lZCh0eG4pKQogCXsKQEAgLTI5MjQsNyArMjkyNyw4IEBAIFJlb3JkZXJCdWZm ZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCBvbGRlc3RSdW5uaW5n WGlkKQogICogdG8gdGhpcyB4aWQgbWlnaHQgcmUtY3JlYXRlIHRoZSB0cmFuc2FjdGlvbiBpbmNv bXBsZXRlbHkuCiAgKi8KIHZvaWQKLVJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAq cmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jlb3JkZXJCdWZmZXJGb3Jn ZXQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwK KwkJCQkJVGltZXN0YW1wVHogYWJvcnRfdGltZSkKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0eG47 CiAKQEAgLTI5MzUsNiArMjkzOSw4IEBAIFJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZl ciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlpZiAodHhuID09IE5V TEwpCiAJCXJldHVybjsKIAorCXR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUgPSBhYm9ydF90aW1l OworCiAJLyogRm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBub3RpZnkgdGhlIHJlbW90ZSBub2Rl IGFib3V0IHRoZSBhYm9ydC4gKi8KIAlpZiAocmJ0eG5faXNfc3RyZWFtZWQodHhuKSkKIAkJcmIt PnN0cmVhbV9hYm9ydChyYiwgdHhuLCBsc24pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvdGFibGVzeW5jLmMKaW5kZXggZDM3ZDhhMC4uNjBkZmI4NiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCkBAIC01NjgsNyArNTY4LDggQEAgcHJv Y2Vzc19zeW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIAkJ CQkJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+b2lkLAogCQkJCQkJCQkJCQkJIE15U3Vic2NyaXB0 aW9uLT5uYW1lLAogCQkJCQkJCQkJCQkJIE15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAotCQkJ CQkJCQkJCQkJIHJzdGF0ZS0+cmVsaWQpOworCQkJCQkJCQkJCQkJIHJzdGF0ZS0+cmVsaWQsCisJ CQkJCQkJCQkJCQkgRFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJCQkJCWhlbnRyeS0+bGFzdF9zdGFy dF90aW1lID0gbm93OwogCQkJCQl9CiAJCQkJfQpAQCAtNTg5LDYgKzU5MCw5IEBAIHByb2Nlc3Nf c3luY2luZ190YWJsZXNfZm9yX2FwcGx5KFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB2b2lkCiBw cm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pCiB7CisJaWYgKGFt X3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisKIAlpZiAoYW1fdGFibGVzeW5j X3dvcmtlcigpKQogCQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9zeW5jKGN1cnJlbnRfbHNu KTsKIAllbHNlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCA1 ZjhjNTQxLi5jMTkxNzk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMKQEAgLTIyLDggKzIyLDQ5IEBACiAgKiBTVFJFQU1FRCBUUkFOU0FDVElPTlMKICAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLQogICogU3RyZWFtZWQgdHJhbnNhY3Rpb25zIChsYXJnZSB0cmFuc2Fj dGlvbnMgZXhjZWVkaW5nIGEgbWVtb3J5IGxpbWl0IG9uIHRoZQotICogdXBzdHJlYW0pIGFyZSBu b3QgYXBwbGllZCBpbW1lZGlhdGVseSwgYnV0IGluc3RlYWQsIHRoZSBkYXRhIGlzIHdyaXR0ZW4K LSAqIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0aGUg ZmluYWwgY29tbWl0IGFycml2ZXMuCisgKiB1cHN0cmVhbSkgYXJlIGFwcGxpZWQgdXNpbmcgb25l IG9mIHR3byBhcHByb2FjaGVzOgorICoKKyAqIDEpIFBhcmFsbGVsIGFwcGx5IHdvcmtlcnMKKyAq CisgKiBJZiBzdHJlYW1pbmcgPSBwYXJhbGxlbCwgd2UgYXNzaWduIGEgbmV3IHBhcmFsbGVsIGFw cGx5IHdvcmtlciAoaWYKKyAqIGF2YWlsYWJsZSkgYXMgc29vbiBhcyB0aGUgeGFjdCdzIGZpcnN0 IHN0cmVhbSBpcyByZWNlaXZlZC4gVGhlIGxlYWRlciBhcHBseQorICogd29ya2VyIHdpbGwgc2Vu ZCBjaGFuZ2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gV2Uga2VlcCB0 aGlzCisgKiB3b3JrZXIgYXNzaWduZWQgdGlsbCB0aGUgdHJhbnNhY3Rpb24gY29tbWl0IGlzIHJl Y2VpdmVkIGFuZCBhbHNvIHdhaXQgZm9yCisgKiB0aGUgd29ya2VyIHRvIGZpbmlzaCBhdCBjb21t aXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBvcmRlcmluZyBhbmQgYXZvaWRzCisgKiBmaWxlIEkv TyBpbiBtb3N0IGNhc2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIHRvIGEgZmlsZSBpZiB0aGVy ZSBpcyBubworICogd29ya2VyIGF2YWlsYWJsZS4gSXQgaXMgaW1wb3J0YW50IHRvIG1haW50YWlu IGNvbW1pdCBvcmRlciB0byBhdm9pZCBmYWlsdXJlcworICogZHVlIHRvIChhKSB0cmFuc2FjdGlv biBkZXBlbmRlbmNpZXMsIHNheSBpZiB3ZSBpbnNlcnQgYSByb3cgaW4gdGhlIGZpcnN0CisgKiB0 cmFuc2FjdGlvbiBhbmQgdXBkYXRlIGl0IGluIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gdGhlbiBh bGxvd2luZyB0byBhcHBseQorICogYm90aCBpbiBwYXJhbGxlbCBjYW4gbGVhZCB0byBmYWlsdXJl IGluIHRoZSB1cGRhdGUuIChiKSBkZWFkbG9ja3MsIGFsbG93aW5nCisgKiB0cmFuc2FjdGlvbnMg dGhhdCB1cGRhdGUgdGhlIHNhbWUgc2V0IG9mIHJvd3MvdGFibGVzIGluIG9wcG9zaXRlIG9yZGVy IHRvIGJlCisgKiBhcHBsaWVkIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvIGRlYWRsb2Nrcy4KKyAq CisgKiBJZiB0aGVyZSBhcmUgZW5vdWdoIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKHJlYWNoZWQg aGFsZiBvZiB0aGUKKyAqIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRp b24pIGluIHRoZSBwb29sLCB0aGUgbmV3IHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIgd2lsbCBi ZSBzaHV0IGRvd24gYXQgdHJhbnNhY3Rpb24gZW5kLiBPdGhlcndpc2UsIGl0IHdpbGwgc3RheSBp biB0aGUKKyAqIHBvb2wuCisgKgorICogVGhlIGxlYWRlciBhcHBseSB3b3JrZXIgd2lsbCBjcmVh dGUgc2VwYXJhdGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQKKyAqIHdoZW4gZWFjaCBw YXJhbGxlbCBhcHBseSB3b3JrZXIgc3RhcnRzLiBUaGUgcmVhc29uIGZvciB0aGlzIGRlc2lnbiBp cyB0aGF0CisgKiB3ZSBjYW5ub3QgY291bnQgaG93IG1hbnkgd29ya2VycyB3aWxsIGJlIHN0YXJ0 ZWQuIEl0IG1heSBiZSBwb3NzaWJsZSB0bworICogYWxsb2NhdGUgZW5vdWdoIHNoYXJlZCBtZW1v cnkgaW4gb25lIHNlZ21lbnQgYmFzZWQgb24gdGhlIG1heGltdW0gbnVtYmVyIG9mCisgKiBwYXJh bGxlbCBhcHBseSB3b3JrZXJzIChtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2Ny aXB0aW9uKSwgYnV0IHRoaXMKKyAqIG1heSB3YXN0ZSBzb21lIG1lbW9yeSBpZiBubyBwcm9jZXNz IGlzIGFjdHVhbGx5IHN0YXJ0ZWQuCisgKgorICogVGhlIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBz ZWdtZW50IHdpbGwgY29udGFpbiAoMSkgYSBzaG1fbXEgdGhhdCBjYW4gYmUgdXNlZAorICogdG8g dHJhbnNwb3J0IGVycm9ycyAoYW5kIG90aGVyIG1lc3NhZ2VzIHJlcG9ydGVkIHZpYSBlbG9nL2Vy ZXBvcnQpIGZyb20gdGhlCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdG8gbGVhZGVyIGFwcGx5 IHdvcmtlciAoMikgYW5vdGhlciBzaG1fbXEgdGhhdCBjYW4KKyAqIGJlIHVzZWQgdG8gc2VuZCBj aGFuZ2VzIGluIHRoZSB0cmFuc2FjdGlvbiBmcm9tIGxlYWRlciBhcHBseSB3b3JrZXIgdG8KKyAq IHBhcmFsbGVsIGFwcGx5IHdvcmtlciAoMykgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGJlIHNo YXJlZCBhbW9uZyBwYXJhbGxlbAorICogYXBwbHkgd29ya2VycyBhbmQgbGVhZGVyIGFwcGx5IHdv cmtlcihpLmUuIHByb3RvY29sIHZlcnNpb24sIHN0cmVhbWluZworICogdHJhbnNhY3Rpb24gSUQs IGluX3VzZSBmbGFnIGFuZCB0aGUgY29ycmVzcG9uZGluZyBMb2dpY2FsUmVwV29ya2VyIHNsb3QK KyAqIGluZm9ybWF0aW9uKS4KKyAqCisgKiAyKSBXcml0ZSB0byB0ZW1wb3JhcnkgZmlsZXMgYW5k IGFwcGx5IHdoZW4gdGhlIGZpbmFsIGNvbW1pdCBhcnJpdmVzCisgKgorICogSWYgbm8gd29ya2Vy IGlzIGF2YWlsYWJsZSB0byBoYW5kbGUgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uLCB0aGUgZGF0 YSBpcworICogd3JpdHRlbiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBhdCBv bmNlIHdoZW4gdGhlIGZpbmFsIGNvbW1pdAorICogYXJyaXZlcy4KICAqCiAgKiBVbmxpa2UgdGhl IHJlZ3VsYXIgKG5vbi1zdHJlYW1lZCkgY2FzZSwgaGFuZGxpbmcgc3RyZWFtZWQgdHJhbnNhY3Rp b25zIGhhcwogICogdG8gaGFuZGxlIGFib3J0cyBvZiBib3RoIHRoZSB0b3BsZXZlbCB0cmFuc2Fj dGlvbiBhbmQgc3VidHJhbnNhY3Rpb25zLiBUaGlzCkBAIC0yMTksMjAgKzI2MCwzNSBAQCB0eXBl ZGVmIHN0cnVjdCBBcHBseUV4ZWN1dGlvbkRhdGEKIAlQYXJ0aXRpb25UdXBsZVJvdXRpbmcgKnBy b3V0ZTsJLyogcGFydGl0aW9uIHJvdXRpbmcgaW5mbyAqLwogfSBBcHBseUV4ZWN1dGlvbkRhdGE7 CiAKLS8qIFN0cnVjdCBmb3Igc2F2aW5nIGFuZCByZXN0b3JpbmcgYXBwbHkgZXJyY29udGV4dCBp bmZvcm1hdGlvbiAqLwotdHlwZWRlZiBzdHJ1Y3QgQXBwbHlFcnJvckNhbGxiYWNrQXJnCisvKgor ICogV2hhdCBhY3Rpb24gdG8gdGFrZSBmb3IgdGhlIHRyYW5zYWN0aW9uLgorICoKKyAqIFRBX0FQ UExZX0lOX0xFQURFUl9XT1JLRVIgbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBs eSB3b3JrZXIgYW5kCisgKiBjaGFuZ2VzIG9mIHRoZSB0cmFuc2FjdGlvbiBhcmUgYXBwbGllZCBk aXJlY3RseSBpbiB0aGUgd29ya2VyLgorICoKKyAqIFRBX1NFUklBTElaRV9UT19GSUxFIG1lYW5z IHRoYXQgd2UgYXJlIGluIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIGNoYW5nZXMKKyAqIGFyZSB3 cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIHdoZW4gdGhlIGZpbmFs IGNvbW1pdAorICogYXJyaXZlcy4KKyAqCisgKiBUQV9BUFBMWV9JTl9QQVJBTExFTF9XT1JLRVIg bWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorICogYW5kIGNo YW5nZXMgb2YgdGhlIHRyYW5zYWN0aW9uIGFyZSBhcHBsaWVkIGRpcmVjdGx5IGluIHRoZSB3b3Jr ZXIuCisgKgorICogVEFfU0VORF9UT19QQVJBTExFTF9XT1JLRVIgbWVhbnMgdGhhdCB3ZSBhcmUg aW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kCisgKiBuZWVkIHRvIHNlbmQgdGhlIGNoYW5n ZXMgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLwordHlwZWRlZiBlbnVtCiB7Ci0J TG9naWNhbFJlcE1zZ1R5cGUgY29tbWFuZDsJLyogMCBpZiBpbnZhbGlkICovCi0JTG9naWNhbFJl cFJlbE1hcEVudHJ5ICpyZWw7CisJLyogVGhlIGFjdGlvbiBmb3Igbm9uLXN0cmVhbWluZyB0cmFu c2FjdGlvbnMuICovCisJVEFfQVBQTFlfSU5fTEVBREVSX1dPUktFUiwKIAotCS8qIFJlbW90ZSBu b2RlIGluZm9ybWF0aW9uICovCi0JaW50CQkJcmVtb3RlX2F0dG51bTsJLyogLTEgaWYgaW52YWxp ZCAqLwotCVRyYW5zYWN0aW9uSWQgcmVtb3RlX3hpZDsKLQlYTG9nUmVjUHRyCWZpbmlzaF9sc247 Ci0JY2hhcgkgICAqb3JpZ2luX25hbWU7Ci19IEFwcGx5RXJyb3JDYWxsYmFja0FyZzsKKwkvKiBB Y3Rpb25zIGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiAqLworCVRBX1NFUklBTElaRV9UT19G SUxFLAorCVRBX0FQUExZX0lOX1BBUkFMTEVMX1dPUktFUiwKKwlUQV9TRU5EX1RPX1BBUkFMTEVM X1dPUktFUgorfSBUcmFuc2FjdGlvbkFwcGx5QWN0aW9uOwogCi1zdGF0aWMgQXBwbHlFcnJvckNh bGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CisvKiBlcnJjb250ZXh0IHRyYWNr ZXIgKi8KK0FwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQog ewogCS5jb21tYW5kID0gMCwKIAkucmVsID0gTlVMTCwKQEAgLTI0Miw3ICsyOTgsOSBAQCBzdGF0 aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZyA9CiAJLm9y aWdpbl9uYW1lID0gTlVMTCwKIH07CiAKLXN0YXRpYyBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2Fn ZUNvbnRleHQgPSBOVUxMOworRXJyb3JDb250ZXh0Q2FsbGJhY2sJKmFwcGx5X2Vycm9yX2NvbnRl eHRfc3RhY2sgPSBOVUxMOworCitNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBO VUxMOwogTWVtb3J5Q29udGV4dCBBcHBseUNvbnRleHQgPSBOVUxMOwogCiAvKiBwZXIgc3RyZWFt IGNvbnRleHQgZm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgKi8KQEAgLTI1MSwyNyArMzA5LDM1 IEBAIHN0YXRpYyBNZW1vcnlDb250ZXh0IExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0ID0gTlVMTDsK IFdhbFJlY2VpdmVyQ29ubiAqTG9nUmVwV29ya2VyV2FsUmN2Q29ubiA9IE5VTEw7CiAKIFN1YnNj cmlwdGlvbiAqTXlTdWJzY3JpcHRpb24gPSBOVUxMOwotc3RhdGljIGJvb2wgTXlTdWJzY3JpcHRp b25WYWxpZCA9IGZhbHNlOworYm9vbCBNeVN1YnNjcmlwdGlvblZhbGlkID0gZmFsc2U7CiAKIGJv b2wJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogc3RhdGljIFhMb2dSZWNQdHIgcmVt b3RlX2ZpbmFsX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCiAvKiBmaWVsZHMgdmFsaWQgb25s eSB3aGVuIHByb2Nlc3Npbmcgc3RyZWFtZWQgdHJhbnNhY3Rpb24gKi8KLXN0YXRpYyBib29sIGlu X3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7Citib29sIGluX3N0cmVhbWVkX3RyYW5zYWN0 aW9uID0gZmFsc2U7CisKK1RyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZCA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwogCi1zdGF0aWMgVHJhbnNhY3Rpb25JZCBzdHJlYW1feGlkID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CisvKgorICogVGhlIG51bWJlciBvZiBjaGFuZ2VzIHNlbnQgdG8gcGFyYWxsZWwg YXBwbHkgd29ya2VycyBkdXJpbmcgb25lIHN0cmVhbWluZworICogYmxvY2suCisgKi8KK3N0YXRp YyB1aW50MzIgbmNoYW5nZXMgPSAwOwogCiAvKgogICogV2UgZW5hYmxlIHNraXBwaW5nIGFsbCBk YXRhIG1vZGlmaWNhdGlvbiBjaGFuZ2VzIChJTlNFUlQsIFVQREFURSwgZXRjLikgZm9yCiAgKiB0 aGUgc3Vic2NyaXB0aW9uIGlmIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24ncyBmaW5pc2ggTFNOIG1h dGNoZXMgdGhlIHN1YnNraXBsc24uCiAgKiBPbmNlIHdlIHN0YXJ0IHNraXBwaW5nIGNoYW5nZXMs IHdlIGRvbid0IHN0b3AgaXQgdW50aWwgd2Ugc2tpcCBhbGwgY2hhbmdlcyBvZgogICogdGhlIHRy YW5zYWN0aW9uIGV2ZW4gaWYgcGdfc3Vic2NyaXB0aW9uIGlzIHVwZGF0ZWQgYW5kIE15U3Vic2Ny aXB0aW9uLT5za2lwbHNuCi0gKiBnZXRzIGNoYW5nZWQgb3IgcmVzZXQgZHVyaW5nIHRoYXQuIEFs c28sIGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNlcywgd2UKLSAqIGRvbid0IHNraXAgcmVj ZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUgY2hhbmdlcyBzaW5jZSB3ZSBkZWNpZGUgd2hldGhlciBv ciBub3QKKyAqIGdldHMgY2hhbmdlZCBvciByZXNldCBkdXJpbmcgdGhhdC4gQWxzbywgaW4gc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uIGNhc2VzIChzdHJlYW1pbmcgPSBvbiksCisgKiB3ZSBkb24ndCBz a2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNoYW5nZXMgc2luY2Ugd2UgZGVjaWRlIHdo ZXRoZXIgb3Igbm90CiAgKiB0byBza2lwIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIHdoZW4gc3RhcnRp bmcgdG8gYXBwbHkgY2hhbmdlcy4gVGhlIHN1YnNraXBsc24gaXMKICAqIGNsZWFyZWQgYWZ0ZXIg c3VjY2Vzc2Z1bGx5IHNraXBwaW5nIHRoZSB0cmFuc2FjdGlvbiBvciBhcHBseWluZyBub24tZW1w dHkKICAqIHRyYW5zYWN0aW9uLiBUaGUgbGF0dGVyIHByZXZlbnRzIHRoZSBtaXN0YWtlbmx5IHNw ZWNpZmllZCBzdWJza2lwbHNuIGZyb20KLSAqIGJlaW5nIGxlZnQuCisgKiBiZWluZyBsZWZ0LiBO b3RlIHRoYXQgd2UgY2Fubm90IHNraXAgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgd2hlbiB1 c2luZworICogcGFyYWxsZWwgYXBwbHkgd29ya2VycyBiZWNhdXNlIHdlIGNhbm5vdCBnZXQgdGhl IGZpbmlzaCBMU04gYmVmb3JlCisgKiBhcHBseWluZyB0aGUgY2hhbmdlcy4KICAqLwogc3RhdGlj IFhMb2dSZWNQdHIgc2tpcF94YWN0X2ZpbmlzaF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKICNk ZWZpbmUgaXNfc2tpcHBpbmdfY2hhbmdlcygpICh1bmxpa2VseSghWExvZ1JlY1B0cklzSW52YWxp ZChza2lwX3hhY3RfZmluaXNoX2xzbikpKQpAQCAtMzI0LDkgKzM5MCw2IEBAIHN0YXRpYyB2b2lk IG1heWJlX3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCk7CiAKIHN0YXRpYyB2b2lkIERpc2FibGVT dWJzY3JpcHRpb25BbmRFeGl0KHZvaWQpOwogCi0vKiBwcm90b3R5cGUgbmVlZGVkIGJlY2F1c2Ug b2Ygc3RyZWFtX2NvbW1pdCAqLwotc3RhdGljIHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5m byBzKTsKLQogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2Fs UmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpOwogc3RhdGljIHZvaWQgYXBwbHlfaGFuZGxlX2lu c2VydF9pbnRlcm5hbChBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhLAogCQkJCQkJCQkJCSBSZXN1 bHRSZWxJbmZvICpyZWxpbmZvLApAQCAtMzU5LDI4ICs0MjIsNTIgQEAgc3RhdGljIHZvaWQgc3Rv cF9za2lwcGluZ19jaGFuZ2VzKHZvaWQpOwogc3RhdGljIHZvaWQgY2xlYXJfc3Vic2NyaXB0aW9u X3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbik7CiAKIC8qIEZ1bmN0aW9ucyBmb3IgYXBw bHkgZXJyb3IgY2FsbGJhY2sgKi8KLXN0YXRpYyB2b2lkIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZv aWQgKmFyZyk7CiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFj dChUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOwogc3RhdGljIGlubGluZSB2b2lk IHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKTsKIAorc3RhdGljIFRyYW5zYWN0 aW9uQXBwbHlBY3Rpb24gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklk IHhpZCwKKwkJCQkJCQkJCQkJCQkJICAgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5mbyk7 CisKIC8qCiAgKiBTaG91bGQgdGhpcyB3b3JrZXIgYXBwbHkgY2hhbmdlcyBmb3IgZ2l2ZW4gcmVs YXRpb24uCiAgKgogICogVGhpcyBpcyBtYWlubHkgbmVlZGVkIGZvciBpbml0aWFsIHJlbGF0aW9u IGRhdGEgc3luYyBhcyB0aGF0IHJ1bnMgaW4KICAqIHNlcGFyYXRlIHdvcmtlciBwcm9jZXNzIHJ1 bm5pbmcgaW4gcGFyYWxsZWwgYW5kIHdlIG5lZWQgc29tZSB3YXkgdG8gc2tpcAotICogY2hhbmdl cyBjb21pbmcgdG8gdGhlIG1haW4gYXBwbHkgd29ya2VyIGR1cmluZyB0aGUgc3luYyBvZiBhIHRh YmxlLgorICogY2hhbmdlcyBjb21pbmcgdG8gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgZHVyaW5n IHRoZSBzeW5jIG9mIGEgdGFibGUuCiAgKgogICogTm90ZSB3ZSBuZWVkIHRvIGRvIHNtYWxsZXIg b3IgZXF1YWxzIGNvbXBhcmlzb24gZm9yIFNZTkNET05FIHN0YXRlIGJlY2F1c2UKICAqIGl0IG1p Z2h0IGhvbGQgcG9zaXRpb24gb2YgZW5kIG9mIGluaXRpYWwgc2xvdCBjb25zaXN0ZW50IHBvaW50 IFdBTAogICogcmVjb3JkICsgMSAoaWUgc3RhcnQgb2YgbmV4dCByZWNvcmQpIGFuZCBuZXh0IHJl Y29yZCBjYW4gYmUgQ09NTUlUIG9mCiAgKiB0cmFuc2FjdGlvbiB3ZSBhcmUgbm93IHByb2Nlc3Np bmcgKHdoaWNoIGlzIHdoYXQgd2Ugc2V0IHJlbW90ZV9maW5hbF9sc24KICAqIHRvIGluIGFwcGx5 X2hhbmRsZV9iZWdpbikuCisgKgorICogTm90ZSB0aGF0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rp b25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQgaW4gcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlciwg d2UgZGlzYWxsb3cgYXBwbHlpbmcgY2hhbmdlcyBvbiBhIHRhYmxlIHRoYXQgaXMgbm90IGluCisg KiB0aGUgUkVBRFkgc3RhdGUsIGJlY2F1c2Ugd2UgY2Fubm90IGRlY2lkZSB3aGV0aGVyIHRvIGFw cGx5IHRoZSBjaGFuZ2UgYXMgd2UKKyAqIHdvbid0IGtub3cgcmVtb3RlX2ZpbmFsX2xzbiBieSB0 aGF0IHRpbWUuCisgKgorICogV2UgYWxyZWFkeSBjaGVja2VkIHRoaXMgaW4gcGFyYWxsZWxfYXBw bHlfY2FuX3N0YXJ0KCkgYmVmb3JlIGFzc2lnbmluZyB0aGUKKyAqIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiB0byB0aGUgcGFyYWxsZWwgd29ya2VyLCBidXQgaXQgYWxzbyBuZWVkcyB0byBiZQorICog Y2hlY2tlZCBoZXJlIGJlY2F1c2UgaWYgdGhlIHVzZXIgZXhlY3V0ZXMgQUxURVIgU1VCU0NSSVBU SU9OIC4uLiBSRUZSRVNICisgKiBQVUJMSUNBVElPTiBpbiBwYXJhbGxlbCwgdGhlIG5ldyB0YWJs ZSBjYW4gYmUgYWRkZWQgdG8gcGdfc3Vic2NyaXB0aW9uX3JlbAorICogaW4gcGFyYWxsZWwgd2hp bGUgYXBwbHlpbmcgdGhpcyB0cmFuc2FjdGlvbi4KICAqLwogc3RhdGljIGJvb2wKIHNob3VsZF9h cHBseV9jaGFuZ2VzX2Zvcl9yZWwoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpCiB7CiAJaWYg KGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJcmV0dXJuIE15TG9naWNhbFJlcFdvcmtlci0+cmVs aWQgPT0gcmVsLT5sb2NhbHJlbG9pZDsKKwllbHNlIGlmIChhbV9wYXJhbGxlbF9hcHBseV93b3Jr ZXIoKSkKKwl7CisJCWlmIChyZWwtPnN0YXRlICE9IFNVQlJFTF9TVEFURV9SRUFEWSkKKwkJCWVy ZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29y a2VycyBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQiLAorCQkJCQkJCU15U3Vi c2NyaXB0aW9uLT5uYW1lKSwKKwkJCQkJIGVycmRldGFpbCgiQ2Fubm90IGhhbmRsZSBzdHJlYW1l ZCByZXBsaWNhdGlvbiB0cmFuc2FjdGlvbiBieSBwYXJhbGxlbCAiCisJCQkJCQkJICAgImFwcGx5 IHdvcmtlcnMgdW50aWwgYWxsIHRhYmxlcyBhcmUgc3luY2hyb25pemVkLiIpKSk7CisKKwkJcmV0 dXJuIHRydWU7CisJfQogCWVsc2UKIAkJcmV0dXJuIChyZWwtPnN0YXRlID09IFNVQlJFTF9TVEFU RV9SRUFEWSB8fAogCQkJCShyZWwtPnN0YXRlID09IFNVQlJFTF9TVEFURV9TWU5DRE9ORSAmJgpA QCAtNDI2LDQzICs1MTMsOTIgQEAgZW5kX3JlcGxpY2F0aW9uX3N0ZXAodm9pZCkKIH0KIAogLyoK LSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCisgKiBIYW5kbGUgc3RyZWFtZWQgdHJh bnNhY3Rpb25zIGZvciBib3RoIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCB0aGUgcGFyYWxs ZWwKKyAqIGFwcGx5IHdvcmtlcnMuCisgKgorICogSW4gc3RyZWFtaW5nIGNhc2UgKHJlY2Vpdmlu ZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgZm9yCisgKiBTVUJTVFJFQU1fT04g bW9kZSwgc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHByb3BlciB0b3BsZXZl bAorICogdHJhbnNhY3Rpb24sIGFuZCBmb3IgU1VCU1RSRUFNX1BBUkFMTEVMIG1vZGUsIHNlbmQg dGhlIGNoYW5nZXMgdG8gcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlcnMgKExPR0lDQUxfUkVQX01T R19SRUxBVElPTiBvciBMT0dJQ0FMX1JFUF9NU0dfVFlQRSBjaGFuZ2VzCisgKiB3aWxsIGJlIGFw cGxpZWQgYnkgYm90aCBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3Jr ZXJzKS4KICAqCi0gKiBJZiBpbiBzdHJlYW1pbmcgbW9kZSAocmVjZWl2aW5nIGEgYmxvY2sgb2Yg c3RyZWFtZWQgdHJhbnNhY3Rpb24pLCB3ZQotICogc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmls ZSBmb3IgdGhlIHByb3BlciB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKyAqIEZvciBub24tc3RyZWFt ZWQgdHJhbnNhY3Rpb25zLCByZXR1cm5zIGZhbHNlOworICogRm9yIHN0cmVhbWVkIHRyYW5zYWN0 aW9ucywgcmV0dXJucyB0cnVlIGlmIGluIGxlYWRlciBhcHBseSB3b3JrZXIsIGZhbHNlCisgKiBv dGhlcndpc2UuCiAgKgotICogUmV0dXJucyB0cnVlIGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMs IGZhbHNlIG90aGVyd2lzZSAocmVndWxhciBtb2RlKS4KKyAqIEV4Y2VwdGlvbjogSWYgdGhlIG1l c3NhZ2UgYmVpbmcgcHJvY2Vzc2VkIGlzIExPR0lDQUxfUkVQX01TR19SRUxBVElPTgorICogb3Ig TE9HSUNBTF9SRVBfTVNHX1RZUEUsIHJldHVybiBmYWxzZSBldmVuIGlmIHRoZSBtZXNzYWdlIG5l ZWRzIHRvIGJlIHNlbnQKKyAqIHRvIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgogICovCiBzdGF0 aWMgYm9vbAogaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExvZ2ljYWxSZXBNc2dUeXBlIGFj dGlvbiwgU3RyaW5nSW5mbyBzKQogewotCVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0aW9u SWQgY3VycmVudF94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlQYXJhbGxlbEFwcGx5V29y a2VySW5mbyAqd2luZm8gPSBOVUxMOworCVRyYW5zYWN0aW9uQXBwbHlBY3Rpb24JYXBwbHlfYWN0 aW9uOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihzdHJl YW1feGlkLCAmd2luZm8pOwogCiAJLyogbm90IGluIHN0cmVhbWluZyBtb2RlICovCi0JaWYgKCFp bl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwlpZiAoYXBwbHlfYWN0aW9uID09IFRBX0FQUExZX0lO X0xFQURFUl9XT1JLRVIpCiAJCXJldHVybiBmYWxzZTsKIAotCUFzc2VydChzdHJlYW1fZmQgIT0g TlVMTCk7CiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsKIAogCS8q CiAJICogV2Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgWElEIG9mIHRoZSBzdWJ4YWN0IGFzIHRoZSBm aXJzdCBwYXJ0IG9mIHRoZQogCSAqIG1lc3NhZ2UsIHNvIGV4dHJhY3QgaXQuCiAJICovCi0JeGlk ID0gcHFfZ2V0bXNnaW50KHMsIDQpOworCWN1cnJlbnRfeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQp OwogCi0JaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCWlmICghVHJhbnNhY3Rpb25J ZElzVmFsaWQoY3VycmVudF94aWQpKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVS UkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJpbnZhbGlk IHRyYW5zYWN0aW9uIElEIGluIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9uIikpKTsK IAotCS8qIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0 aGVyZSkuICovCi0Jc3VieGFjdF9pbmZvX2FkZCh4aWQpOworCWlmIChhcHBseV9hY3Rpb24gPT0g VEFfQVBQTFlfSU5fUEFSQUxMRUxfV09SS0VSKQorCXsKKwkJLyogRGVmaW5lIGEgc2F2ZXBvaW50 IGZvciBhIHN1YnhhY3QgaWYgbmVlZGVkLiAqLworCQlwYXJhbGxlbF9hcHBseV9zdWJ4YWN0X2lu Zm9fYWRkKGN1cnJlbnRfeGlkKTsKIAotCS8qIHdyaXRlIHRoZSBjaGFuZ2UgdG8gdGhlIGN1cnJl bnQgZmlsZSAqLwotCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwkJcmV0dXJuIGZh bHNlOworCX0KKwllbHNlIGlmIChhcHBseV9hY3Rpb24gPT0gVEFfU0VORF9UT19QQVJBTExFTF9X T1JLRVIpCisJeworCQlBc3NlcnQod2luZm8pOworCisJCXBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0 YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKKwkJbmNoYW5nZXMgKz0gMTsKKworCQkvKgorCQkg KiBYWFggVGhlIHB1Ymxpc2hlciBzaWRlIGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlw ZSB1cGRhdGUKKwkJICogbWVzc2FnZXMgYWZ0ZXIgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwg c28gYWxzbyB1cGRhdGUgdGhlCisJCSAqIHJlbGF0aW9uL3R5cGUgaW4gbGVhZGVyIGFwcGx5IHdv cmtlciBoZXJlLiBTZWUgZnVuY3Rpb24KKwkJICogY2xlYW51cF9yZWxfc3luY19jYWNoZS4KKwkJ ICovCisJCWlmIChhY3Rpb24gPT0gTE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIHx8CisJCQlhY3Rp b24gPT0gTE9HSUNBTF9SRVBfTVNHX1RZUEUpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJcmV0dXJu IHRydWU7CisJfQorCWVsc2UgaWYgKGFwcGx5X2FjdGlvbiA9PSBUQV9TRVJJQUxJWkVfVE9fRklM RSkKKwl7CisJCUFzc2VydChzdHJlYW1fZmQgIT0gTlVMTCk7CiAKLQlyZXR1cm4gdHJ1ZTsKKwkJ LyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkgKHVubGVzcyBhbHJlYWR5IHRoZXJl KS4gKi8KKwkJc3VieGFjdF9pbmZvX2FkZChjdXJyZW50X3hpZCk7CisKKwkJLyogd3JpdGUgdGhl IGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxlICovCisJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0 aW9uLCBzKTsKKworCQlyZXR1cm4gdHJ1ZTsKKwl9CisJZWxzZQorCXsKKwkJQXNzZXJ0KGZhbHNl KTsKKwkJcmV0dXJuIGZhbHNlOwkvKiBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmcgKi8KKwl9CiB9 CiAKIC8qCkBAIC04OTgsOCArMTAzNCwxMSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5h bChMb2dpY2FsUmVwUHJlcGFyZWRUeG5EYXRhICpwcmVwYXJlX2RhdGEpCiAJICogQmVnaW5UcmFu c2FjdGlvbkJsb2NrIGlzIG5lY2Vzc2FyeSB0byBiYWxhbmNlIHRoZSBFbmRUcmFuc2FjdGlvbkJs b2NrCiAJICogY2FsbGVkIHdpdGhpbiB0aGUgUHJlcGFyZVRyYW5zYWN0aW9uQmxvY2sgYmVsb3cu CiAJICovCi0JQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7Ci0JQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7IC8qIENvbXBsZXRlcyB0aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQuICovCisJaWYg KCFJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwl7CisJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOwor CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsgLyogQ29tcGxldGVzIHRoZSBwcmVjZWRpbmcg QmVnaW4gY29tbWFuZC4gKi8KKwl9CiAKIAkvKgogCSAqIFVwZGF0ZSBvcmlnaW4gc3RhdGUgc28g d2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29ycmVjdCBwb3NpdGlvbgpAQCAtOTY4LDYg KzExMDcsMTIgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAvKgogICog SGFuZGxlIGEgQ09NTUlUIFBSRVBBUkVEIG9mIGEgcHJldmlvdXNseSBQUkVQQVJFRCB0cmFuc2Fj dGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB3YWl0IGhlcmUgaWYgdGhl IHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCBpbiBhCisgKiBwYXJhbGxlbCBhcHBseSB3b3JrZXIu IEJlY2F1c2Ugd2UgaGF2ZSBhbHJlYWR5IHdhaXRlZCBmb3IgdGhlIHByZXBhcmUgdG8KKyAqIGZp bmlzaCBpbiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoKSB3aGljaCB3aWxsIGVuc3VyZSBh bGwgdGhlIG9wZXJhdGlvbnMKKyAqIGluIHRoYXQgdHJhbnNhY3Rpb24gaGF2ZSBoYXBwZW5lZCBp biB0aGUgc3Vic2NyaWJlciBhbmQgbm8gY29uY3VycmVudAorICogdHJhbnNhY3Rpb24gY2FuIGNy ZWF0ZSBkZWFkbG9jayBvciB0cmFuc2FjdGlvbiBkZXBlbmRlbmN5IGlzc3Vlcy4KICAqLwogc3Rh dGljIHZvaWQKIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQpAQCAt MTAxMSw2ICsxMTU2LDEyIEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5m byBzKQogCiAvKgogICogSGFuZGxlIGEgUk9MTEJBQ0sgUFJFUEFSRUQgb2YgYSBwcmV2aW91c2x5 IFBSRVBBUkVEIFRSQU5TQUNUSU9OLgorICoKKyAqIE5vdGUgdGhhdCB3ZSBkb24ndCBuZWVkIHRv IHdhaXQgaGVyZSBpZiB0aGUgdHJhbnNhY3Rpb24gd2FzIHByZXBhcmVkIGluIGEKKyAqIHBhcmFs bGVsIGFwcGx5IHdvcmtlci4gQmVjYXVzZSB3ZSBoYXZlIGFscmVhZHkgd2FpdGVkIGZvciB0aGUg cHJlcGFyZSB0bworICogZmluaXNoIGluIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZSgpIHdo aWNoIHdpbGwgZW5zdXJlIGFsbCB0aGUgb3BlcmF0aW9ucworICogaW4gdGhhdCB0cmFuc2FjdGlv biBoYXZlIGhhcHBlbmVkIGluIHRoZSBzdWJzY3JpYmVyIGFuZCBubyBjb25jdXJyZW50CisgKiB0 cmFuc2FjdGlvbiBjYW4gY3JlYXRlIGRlYWRsb2NrIG9yIHRyYW5zYWN0aW9uIGRlcGVuZGVuY3kg aXNzdWVzLgogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVk KFN0cmluZ0luZm8gcykKQEAgLTEwNjQsMTUgKzEyMTUsMTMgQEAgYXBwbHlfaGFuZGxlX3JvbGxi YWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAogLyoKICAqIEhhbmRsZSBTVFJFQU0gUFJFUEFS RS4KLSAqCi0gKiBMb2dpYyBpcyBpbiB0d28gcGFydHM6Ci0gKiAxLiBSZXBsYXkgYWxsIHRoZSBz cG9vbGVkIG9wZXJhdGlvbnMKLSAqIDIuIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHByZXBhcmVk CiAgKi8KIHN0YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5m byBzKQogewogCUxvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgcHJlcGFyZV9kYXRhOworCVBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5VTEw7CisJVHJhbnNhY3Rpb25BcHBseUFjdGlv bglhcHBseV9hY3Rpb247CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBv cnQoRVJST1IsCkBAIC0xMDg4LDI0ICsxMjM3LDcyIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJl cGFyZShTdHJpbmdJbmZvIHMpCiAJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9wcmVwYXJlKHMsICZw cmVwYXJlX2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QocHJlcGFyZV9kYXRh LnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVjZWl2 ZWQgcHJlcGFyZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCBwcmVwYXJlX2RhdGEueGlk KTsKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHByZXBhcmVf ZGF0YS54aWQsICZ3aW5mbyk7CiAKLQkvKiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9wZXJhdGlv bnMuICovCi0JYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJl X2RhdGEucHJlcGFyZV9sc24pOworCWlmIChhcHBseV9hY3Rpb24gPT0gVEFfQVBQTFlfSU5fUEFS QUxMRUxfV09SS0VSKQorCXsKKwkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1cCgpOwog Ci0JLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCi0JYXBwbHlfaGFuZGxl X3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVfZGF0YSk7CisJCS8qIE1hcmsgdGhlIHRyYW5zYWN0 aW9uIGFzIHByZXBhcmVkLiAqLworCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJl cGFyZV9kYXRhKTsKIAotCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKIAotCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CisJCXBhcmFs bGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVzZXQoKTsKIAotCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHBy ZXBhcmVfZGF0YS5lbmRfbHNuKTsKKwkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0KTsKKwkJc3VieGFj dGxpc3QgPSBOSUw7CiAKLQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKwkJcGFyYWxs ZWxfYXBwbHlfc2V0X2lkbGUoKTsKKwl9CisJZWxzZSBpZiAoYXBwbHlfYWN0aW9uID09IFRBX1NF TkRfVE9fUEFSQUxMRUxfV09SS0VSKQorCXsKKwkJQXNzZXJ0KHdpbmZvKTsKKworCQlwYXJhbGxl bF9hcHBseV9yZXBsb3JpZ2luX3Jlc2V0KCk7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGgg c2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCi0Jc3RyZWFtX2NsZWFudXBf ZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisJCS8q IFNlbmQgU1RSRUFNIFBSRVBBUkUgbWVzc2FnZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LiAqLworCQlwYXJhbGxlbF9hcHBseV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7 CisKKwkJLyoKKwkJICogQWZ0ZXIgc2VuZGluZyB0aGUgZGF0YSB0byB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyLCB3YWl0IGZvcgorCQkgKiB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMg bmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAorCQkgKiBvcmRlciB3aGljaCBhdm9pZHMgZmFp bHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkJICogZGVhZGxvY2tz LgorCQkgKi8KKwkJcGFyYWxsZWxfYXBwbHlfd2FpdF9mb3JfZnJlZSh3aW5mbyk7CisJCXBhcmFs bGVsX2FwcGx5X3JlcGxvcmlnaW5fc2V0dXAoKTsKKwkJcGFyYWxsZWxfYXBwbHlfZnJlZV93b3Jr ZXIod2luZm8sIHByZXBhcmVfZGF0YS54aWQpOworCisJCWVsb2coREVCVUcxLCAic3RyZWFtZWQg dHJhbnNhY3Rpb24gJXUgd2FzIHByZXBhcmVkIHVzaW5nIGFuIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciIsCisJCQkgcHJlcGFyZV9kYXRhLnhpZCk7CisKKwkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJl cGFyZV9kYXRhLmVuZF9sc24pOworCX0KKwllbHNlIGlmIChhcHBseV9hY3Rpb24gPT0gVEFfU0VS SUFMSVpFX1RPX0ZJTEUpCisJeworCQkvKgorCQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFzIGJlZW4g c2VyaWFsaXplZCB0byBmaWxlLCBzbyByZXBsYXkgYWxsIHRoZQorCQkgKiBzcG9vbGVkIG9wZXJh dGlvbnMuCisJCSAqLworCQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQs IHByZXBhcmVfZGF0YS5wcmVwYXJlX2xzbik7CisKKwkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24g YXMgcHJlcGFyZWQuICovCisJCWFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKCZwcmVwYXJl X2RhdGEpOworCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCXN0b3JlX2ZsdXNo X3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKworCQkvKiBVbmxpbmsgdGhlIGZpbGVz IHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCisJCXN0cmVhbV9j bGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQp OworCX0KKwllbHNlCisJCUFzc2VydChmYWxzZSk7CisKKwlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFs c2UpOworCisJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKIAkvKiBQcm9jZXNzIGFu eSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXBy b2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwpAQCAtMTEzNCw3ICsx MzMxLDcgQEAgYXBwbHlfaGFuZGxlX29yaWdpbihTdHJpbmdJbmZvIHMpCiAJICogT1JJR0lOIG1l c3NhZ2UgY2FuIG9ubHkgY29tZSBpbnNpZGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIG9yIGluc2lk ZQogCSAqIHJlbW90ZSB0cmFuc2FjdGlvbiBhbmQgYmVmb3JlIGFueSBhY3R1YWwgd3JpdGVzLgog CSAqLwotCWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gJiYKKwlpZiAoIWluX3N0cmVhbWVk X3RyYW5zYWN0aW9uICYmIHN0cmVhbV9hcHBseV93b3JrZXIgPT0gTlVMTCAmJgogCQkoIWluX3Jl bW90ZV90cmFuc2FjdGlvbiB8fAogCQkgKElzVHJhbnNhY3Rpb25TdGF0ZSgpICYmICFhbV90YWJs ZXN5bmNfd29ya2VyKCkpKSkKIAkJZXJlcG9ydChFUlJPUiwKQEAgLTExNDksMjQgKzEzNDYsMTQg QEAgc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQog ewogCWJvb2wJCWZpcnN0X3NlZ21lbnQ7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZv ID0gTlVMTDsKKwlUcmFuc2FjdGlvbkFwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAogCWlmIChp bl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShF UlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiZHVwbGlj YXRlIFNUUkVBTSBTVEFSVCBtZXNzYWdlIikpKTsKIAotCS8qCi0JICogU3RhcnQgYSB0cmFuc2Fj dGlvbiBvbiBzdHJlYW0gc3RhcnQsIHRoaXMgdHJhbnNhY3Rpb24gd2lsbCBiZSBjb21taXR0ZWQK LQkgKiBvbiB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBp biB3aGljaCBjYXNlIGl0Ci0JICogd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBh bGwgdGhlIG1lc3NhZ2VzLiBXZSBuZWVkIHRoZQotCSAqIHRyYW5zYWN0aW9uIGZvciBoYW5kbGlu ZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlCi0JICogc3RyZWFtaW5nIGRh dGEgYW5kIHN1YnhhY3QgaW5mby4KLQkgKi8KLQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7Ci0K LQkvKiBub3RpZnkgaGFuZGxlIG1ldGhvZHMgd2UncmUgcHJvY2Vzc2luZyBhIHJlbW90ZSB0cmFu c2FjdGlvbiAqLwotCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gdHJ1ZTsKLQogCS8qIGV4dHJh Y3QgWElEIG9mIHRoZSB0b3AtbGV2ZWwgdHJhbnNhY3Rpb24gKi8KIAlzdHJlYW1feGlkID0gbG9n aWNhbHJlcF9yZWFkX3N0cmVhbV9zdGFydChzLCAmZmlyc3Rfc2VnbWVudCk7CiAKQEAgLTExNzgs MzUgKzEzNjUsODggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAJ c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChzdHJlYW1feGlkLCBJbnZhbGlkWExvZ1JlY1B0 cik7CiAKIAkvKgotCSAqIEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxlc2V0IGlm IHdlIGhhdmVuJ3QgeWV0LiBUaGlzIHdpbGwgYmUKLQkgKiB1c2VkIGZvciB0aGUgZW50aXJlIGR1 cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0IGluIGEgcGVybWFuZW50Ci0JICogY29u dGV4dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5nIG1lc3NhZ2Ug ZnJvbSBhbnkKLQkgKiB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMgYW5kIG90 aGVyIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuCi0JICogTm93LCB3ZSBjb3VsZCBjcmVhdGUgYSBm aWxlc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0Ci0JICogdGhlbiB3 ZSB3b24ndCBiZSBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCisJICogRm9yIHRoZSBm aXJzdCBzdHJlYW0gc3RhcnQsIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBmcmVlIHBhcmFsbGVsIGFw cGx5CisJICogd29ya2VyIHdlIGNhbiB1c2UgdG8gcHJvY2VzcyB0aGlzIHRyYW5zYWN0aW9uLgog CSAqLwotCWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0ID09IE5VTEwpCisJ aWYgKGZpcnN0X3NlZ21lbnQpCisJCXBhcmFsbGVsX2FwcGx5X3N0YXJ0X3dvcmtlcihzdHJlYW1f eGlkKTsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3Ry ZWFtX3hpZCwgJndpbmZvKTsKKworCWlmIChhcHBseV9hY3Rpb24gPT0gVEFfQVBQTFlfSU5fUEFS QUxMRUxfV09SS0VSKQogCXsKLQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCS8qCisJCSAqIE1h a2Ugc3VyZSB0aGUgaGFuZGxlIGFwcGx5X2Rpc3BhdGNoIG1ldGhvZHMgYXJlIGF3YXJlIHdlJ3Jl IGluIGEKKwkJICogcmVtb3RlIHRyYW5zYWN0aW9uLgorCQkgKi8KKwkJaW5fcmVtb3RlX3RyYW5z YWN0aW9uID0gdHJ1ZTsKKwl9CisJZWxzZSBpZiAoYXBwbHlfYWN0aW9uID09IFRBX1NFTkRfVE9f UEFSQUxMRUxfV09SS0VSKQorCXsKKwkJQXNzZXJ0KHdpbmZvKTsKIAotCQlvbGRjdHggPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKwkJcGFyYWxsZWxfYXBwbHlfc2VuZF9k YXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOwogCi0JCU15TG9naWNhbFJlcFdvcmtlci0+c3Ry ZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKLQkJRmlsZVNldEluaXQoTXlM b2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCk7CisJCW5jaGFuZ2VzID0gMDsKKwkJZWxv ZyhERUJVRzEsICJzdGFydGluZyBzdHJlYW1pbmcgb2YgeGlkICV1Iiwgc3RyZWFtX3hpZCk7CiAK LQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJCS8qIENhY2hlIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIgZm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCisJCXN0cmVhbV9hcHBseV93 b3JrZXIgPSB3aW5mbzsKIAl9CisJZWxzZSBpZiAoYXBwbHlfYWN0aW9uID09IFRBX1NFUklBTEla RV9UT19GSUxFKQorCXsKKwkJLyoKKwkJICogTm90aWZ5IGhhbmRsZSBtZXRob2RzIHdlJ3JlIHBy b2Nlc3NpbmcgYSByZW1vdGUgaW4tcHJvZ3Jlc3MKKwkJICogdHJhbnNhY3Rpb24uCisJCSAqLwor CQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IHRydWU7CiAKLQkvKiBvcGVuIHRoZSBzcG9vbCBm aWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uICovCi0Jc3RyZWFtX29wZW5fZmlsZShNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKwkJLyoKKwkJICog U2luY2Ugbm8gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGF2YWlsYWJsZSBmb3IgdGhlIGZpcnN0 CisJCSAqIHN0cmVhbSBzdGFydCwgc2VyaWFsaXplIGFsbCB0aGUgY2hhbmdlcyBvZiB0aGUgdHJh bnNhY3Rpb24uCisJCSAqCisJCSAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24gc3RyZWFtIHN0YXJ0 LCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUKKwkJICogY29tbWl0dGVkIG9uIHRoZSBzdHJlYW0g c3RvcCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGluCisJCSAqIHdoaWNoIGNhc2Ug aXQgd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlCisJCSAqIG1lc3Nh Z2VzLiBXZSBuZWVkIHRoZSB0cmFuc2FjdGlvbiBmb3IgaGFuZGxpbmcgdGhlIGJ1ZmZpbGUsCisJ CSAqIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZSBzdHJlYW1pbmcgZGF0YSBhbmQgc3VieGFjdCBp bmZvLgorCQkgKi8KKwkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwogCi0JLyogaWYgdGhpcyBp cyBub3QgdGhlIGZpcnN0IHNlZ21lbnQsIG9wZW4gZXhpc3Rpbmcgc3VieGFjdCBmaWxlICovCi0J aWYgKCFmaXJzdF9zZWdtZW50KQotCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKwkJLyoKKwkJICogSW5pdGlhbGl6ZSB0aGUgd29ya2Vy J3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5ZXQuIFRoaXMgd2lsbAorCQkgKiBiZSB1 c2VkIGZvciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0IGlu IGEKKwkJICogcGVybWFuZW50IGNvbnRleHQuIFdlIGNyZWF0ZSB0aGlzIG9uIHRoZSB2ZXJ5IGZp cnN0IHN0cmVhbWluZworCQkgKiBtZXNzYWdlIGZyb20gYW55IHRyYW5zYWN0aW9uIGFuZCB0aGVu IHVzZSBpdCBmb3IgdGhpcyBhbmQgb3RoZXIKKwkJICogc3RyZWFtaW5nIHRyYW5zYWN0aW9ucy4g Tm93LCB3ZSBjb3VsZCBjcmVhdGUgYSBmaWxlc2V0IGF0IHRoZSBzdGFydAorCQkgKiBvZiB0aGUg d29ya2VyIGFzIHdlbGwgYnV0IHRoZW4gd2Ugd29uJ3QgYmUgc3VyZSB0aGF0IGl0IHdpbGwgZXZl cgorCQkgKiBiZSB1c2VkLgorCQkgKi8KKwkJaWYgKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFt X2ZpbGVzZXQgPT0gTlVMTCkKKwkJeworCQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAKLQlwZ3N0 YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcsIE5VTEwpOworCQkJb2xkY3R4ID0gTWVt b3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKLQllbmRfcmVwbGljYXRpb25fc3Rl cCgpOworCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXpl b2YoRmlsZVNldCkpOworCQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1f ZmlsZXNldCk7CisKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQl9CisKKwkJ LyogT3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlvbi4gKi8KKwkJc3RyZWFt X29wZW5fZmlsZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9z ZWdtZW50KTsKKworCQkvKiBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBl eGlzdGluZyBzdWJ4YWN0IGZpbGUuICovCisJCWlmICghZmlyc3Rfc2VnbWVudCkKKwkJCXN1Ynhh Y3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCisJ CWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJfQorCWVsc2UKKwkJQXNzZXJ0KGZhbHNlKTsKKwor CXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7CiB9CiAKIC8qCkBA IC0xMjE1LDU4ICsxNDU1LDc2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5m byBzKQogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMp CiB7Ci0JaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKLQkJZXJlcG9ydChFUlJPUiwKLQkJ CQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCi0JCQkJIGVycm1zZ19pbnRl cm5hbCgiU1RSRUFNIFNUT1AgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVEFSVCIpKSk7CisJUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvID0gTlVMTDsKKwlUcmFuc2FjdGlvbkFwcGx5QWN0 aW9uIGFwcGx5X2FjdGlvbjsKIAotCS8qCi0JICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxp emVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQKLQkgKiBzdWJ4YWN0 cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgotCSAqLwotCXN1YnhhY3RfaW5mb193cml0 ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKLQlzdHJlYW1fY2xvc2Vf ZmlsZSgpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oc3Ry ZWFtX3hpZCwgJndpbmZvKTsKKworCWlmIChhcHBseV9hY3Rpb24gPT0gVEFfQVBQTFlfSU5fUEFS QUxMRUxfV09SS0VSKQorCXsKKwkJZWxvZyhERUJVRzEsICJbUGFyYWxsZWwgQXBwbHkgV29ya2Vy ICMldV0gZW5kZWQgcHJvY2Vzc2luZyBzdHJlYW1pbmcgY2h1bmssICIKKwkJCSAid2FpdGluZyBv biBzaG1fbXFfcmVjZWl2ZSIsIE15UGFyYWxsZWxTaGFyZWQtPndvcmtlcl9pZCk7CiAKLQkvKiBX ZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KLQlBc3NlcnQoSXNUcmFu c2FjdGlvblN0YXRlKCkpOworCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRS QU5TQUNUSU9OLCBOVUxMKTsKKwl9CisJZWxzZSBpZiAoYXBwbHlfYWN0aW9uID09IFRBX1NFTkRf VE9fUEFSQUxMRUxfV09SS0VSKQorCXsKKwkJQXNzZXJ0KHdpbmZvKTsKIAotCS8qIENvbW1pdCB0 aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAqLwotCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OworCQlwYXJhbGxlbF9hcHBseV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CiAK LQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCQllbG9nKERFQlVHMSwgInN0b3Bw ZWQgc3RyZWFtaW5nIG9mIHhpZCAldSwgJXUgY2hhbmdlcyBzdHJlYW1lZCIsCisJCQkgc3RyZWFt X3hpZCwgbmNoYW5nZXMpOwogCi0JLyogUmVzZXQgcGVyLXN0cmVhbSBjb250ZXh0ICovCi0JTWVt b3J5Q29udGV4dFJlc2V0KExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0KTsKKwkJc3RyZWFtX2FwcGx5 X3dvcmtlciA9IE5VTEw7CisKKwkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBO VUxMKTsKKwl9CisJZWxzZSBpZiAoYXBwbHlfYWN0aW9uID09IFRBX1NFUklBTElaRV9UT19GSUxF KQorCXsKKwkJaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkJIGVycm1z Z19pbnRlcm5hbCgiU1RSRUFNIFNUT1AgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVEFSVCIpKSk7 CisKKwkJLyoKKwkJICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMsIGFu ZCBzZXJpYWxpemUgaW5mb3JtYXRpb24KKwkJICogYWJvdXQgc3VieGFjdHMgZm9yIHRoZSB0b3Bs ZXZlbCB0cmFuc2FjdGlvbi4KKwkJICovCisJCXN1YnhhY3RfaW5mb193cml0ZShNeUxvZ2ljYWxS ZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKwkJc3RyZWFtX2Nsb3NlX2ZpbGUoKTsKKwor CQkvKiBXZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KKwkJQXNzZXJ0 KElzVHJhbnNhY3Rpb25TdGF0ZSgpKTsKKworCQkvKiBDb21taXQgdGhlIHBlci1zdHJlYW0gdHJh bnNhY3Rpb24gKi8KKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJLyogUmVzZXQg cGVyLXN0cmVhbSBjb250ZXh0ICovCisJCU1lbW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3RyZWFt aW5nQ29udGV4dCk7CisKKwkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxM KTsKKwl9CisJZWxzZQorCQlBc3NlcnQoZmFsc2UpOworCisJaW5fc3RyZWFtZWRfdHJhbnNhY3Rp b24gPSBmYWxzZTsKIAotCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7 CiAJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CiAKIC8qCi0gKiBIYW5kbGUg U1RSRUFNIGFib3J0IG1lc3NhZ2UuCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hl biB0aGUgdHJhbnNhY3Rpb24gd2FzIHNwaWxsZWQgdG8gZGlzay4KICAqLwogc3RhdGljIHZvaWQK LWFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQorc2VyaWFsaXplX3N0cmVh bV9hYm9ydChUcmFuc2FjdGlvbklkIHhpZCwgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpCiB7Ci0JVHJh bnNhY3Rpb25JZCB4aWQ7Ci0JVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7Ci0KLQlpZiAoaW5fc3RyZWFt ZWRfdHJhbnNhY3Rpb24pCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9Q Uk9UT0NPTF9WSU9MQVRJT04pLAotCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBt ZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOwotCi0JbG9naWNhbHJlcF9yZWFkX3N0cmVh bV9hYm9ydChzLCAmeGlkLCAmc3VieGlkKTsKLQogCS8qCiAJICogSWYgdGhlIHR3byBYSURzIGFy ZSB0aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0IG9mIHRvcGxldmVsIHhhY3QsIHNvCiAJICog anVzdCBkZWxldGUgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBpbmZvLgogCSAqLwogCWlmICh4 aWQgPT0gc3VieGlkKQotCXsKLQkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdCh4aWQsIElu dmFsaWRYTG9nUmVjUHRyKTsKIAkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwgeGlkKTsKLQl9CiAJZWxzZQogCXsKIAkJLyoKQEAgLTEyOTAsOCArMTU0OCw2 IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQlib29sCQlmb3Vu ZCA9IGZhbHNlOwogCQljaGFyCQlwYXRoW01BWFBHUEFUSF07CiAKLQkJc2V0X2FwcGx5X2Vycm9y X2NvbnRleHRfeGFjdChzdWJ4aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKLQogCQlzdWJpZHggPSAt MTsKIAkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwogCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxv Z2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOwpAQCAtMTMxNiw3ICsxNTcyLDYgQEAgYXBwbHlf aGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCQljbGVhbnVwX3N1YnhhY3RfaW5m bygpOwogCQkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAkJCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOwotCQkJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiAJCQlyZXR1cm47 CiAJCX0KIApAQCAtMTMzOSw2ICsxNTk0LDc4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQo U3RyaW5nSW5mbyBzKQogCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOwogCQlDb21taXRUcmFuc2Fj dGlvbkNvbW1hbmQoKTsKIAl9Cit9CisKKy8qCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3Nh Z2UuCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0lu Zm8gcykKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1YnhpZDsKKwlM b2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhIGFib3J0X2RhdGE7CisJYm9vbCByZWFkX2Fib3J0X2xz biA9IGZhbHNlOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5VTEw7CisJVHJh bnNhY3Rpb25BcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisKKwlpZiAoaW5fc3RyZWFtZWRfdHJh bnNhY3Rpb24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NP TF9WSU9MQVRJT04pLAorCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdl IHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOworCisJLyogQ2hlY2sgd2hldGhlciB0aGUgcHVibGlz aGVyIHNlbmRzIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZS4gKi8KKwlpZiAoYW1fcGFyYWxsZWxf YXBwbHlfd29ya2VyKCkpCisJCXJlYWRfYWJvcnRfbHNuID0gTXlQYXJhbGxlbFNoYXJlZC0+cHJv dG9fdmVyc2lvbiA+PQorCQkJCQkJIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZF UlNJT05fTlVNOworCisJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChzLCAmYWJvcnRfZGF0 YSwgcmVhZF9hYm9ydF9sc24pOworCisJeGlkID0gYWJvcnRfZGF0YS54aWQ7CisJc3VieGlkID0g YWJvcnRfZGF0YS5zdWJ4aWQ7CisKKwlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHN1Ynhp ZCwgYWJvcnRfZGF0YS5hYm9ydF9sc24pOworCisJYXBwbHlfYWN0aW9uID0gZ2V0X3RyYW5zYWN0 aW9uX2FwcGx5X2FjdGlvbih4aWQsICZ3aW5mbyk7CisKKwlpZiAoYXBwbHlfYWN0aW9uID09IFRB X0FQUExZX0lOX1BBUkFMTEVMX1dPUktFUikKKwkJcGFyYWxsZWxfYXBwbHlfc3RyZWFtX2Fib3J0 KCZhYm9ydF9kYXRhLCByZWFkX2Fib3J0X2xzbik7CisJZWxzZSBpZiAoYXBwbHlfYWN0aW9uID09 IFRBX1NFTkRfVE9fUEFSQUxMRUxfV09SS0VSKQorCXsKKwkJQXNzZXJ0KHdpbmZvKTsKKworCQlp ZiAoc3VieGlkID09IHhpZCkKKwkJCXBhcmFsbGVsX2FwcGx5X3JlcGxvcmlnaW5fcmVzZXQoKTsK KworCQkvKiBTZW5kIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIuICovCisJCXBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5k YXRhKTsKKworCQkvKgorCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBwYXJhbGxl bCBhcHBseSB3b3JrZXIsIHdhaXQgZm9yIHRoYXQKKwkJICogd29ya2VyIHRvIGZpbmlzaC4gVGhp cyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0IG9yZGVyIHdoaWNoCisJCSAqIGF2b2lk cyBmYWlsdXJlcyBkdWUgdG8gdHJhbnNhY3Rpb24gZGVwZW5kZW5jaWVzIGFuZCBkZWFkbG9ja3Mu CisJCSAqLworCQlwYXJhbGxlbF9hcHBseV93YWl0X2Zvcl9mcmVlKHdpbmZvKTsKKworCQlpZiAo c3VieGlkID09IHhpZCkKKwkJeworCQkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1cCgp OworCQkJcGFyYWxsZWxfYXBwbHlfZnJlZV93b3JrZXIod2luZm8sIHhpZCk7CisKKwkJCWVsb2co REVCVUcxLCAic3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUgd2FzIGFib3J0ZWQgdXNpbmcgYW4gcGFy YWxsZWwgYXBwbHkgd29ya2VyIiwKKwkJCQkgeGlkKTsKKwkJfQorCX0KKwllbHNlIGlmIChhcHBs eV9hY3Rpb24gPT0gVEFfU0VSSUFMSVpFX1RPX0ZJTEUpCisJeworCQkvKgorCQkgKiBXZSBhcmUg aW4gbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuCisJCSAq IHNlcmlhbGl6ZWQgdG8gZmlsZS4KKwkJICovCisJCXNlcmlhbGl6ZV9zdHJlYW1fYWJvcnQoeGlk LCBzdWJ4aWQpOworCX0KKwllbHNlCisJCUFzc2VydChmYWxzZSk7CiAKIAlyZXNldF9hcHBseV9l cnJvcl9jb250ZXh0X2luZm8oKTsKIH0KQEAgLTE0NzAsNiArMTc5Nyw4IEBAIGFwcGx5X2hhbmRs ZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIHsKIAlUcmFuc2FjdGlvbklkIHhpZDsKIAlM b2dpY2FsUmVwQ29tbWl0RGF0YSBjb21taXRfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5m byAqd2luZm8gPSBOVUxMOworCVRyYW5zYWN0aW9uQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwog CiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTQ3 OSwxNCArMTgwOCw2OSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMp CiAJeGlkID0gbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQocywgJmNvbW1pdF9kYXRhKTsK IAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xz bik7CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVkIGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJhbnNh Y3Rpb24gJXUiLCB4aWQpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9h Y3Rpb24oeGlkLCAmd2luZm8pOwogCi0JYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1p dF9kYXRhLmNvbW1pdF9sc24pOworCWlmIChhcHBseV9hY3Rpb24gPT0gVEFfQVBQTFlfSU5fUEFS QUxMRUxfV09SS0VSKQorCXsKKwkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9zZXR1cCgpOwog Ci0JYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCQlhcHBseV9o YW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJcGFyYWxsZWxfYXBwbHlf cmVwbG9yaWdpbl9yZXNldCgpOworCisJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCXN1Ynhh Y3RsaXN0ID0gTklMOworCisJCXBhcmFsbGVsX2FwcGx5X3NldF9pZGxlKCk7CisJfQorCWVsc2Ug aWYgKGFwcGx5X2FjdGlvbiA9PSBUQV9TRU5EX1RPX1BBUkFMTEVMX1dPUktFUikKKwl7CisJCUFz c2VydCh3aW5mbyk7CisKKwkJcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCgpOworCisJ CS8qIFNlbmQgU1RSRUFNIENPTU1JVCBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuICovCisJCXBhcmFsbGVsX2FwcGx5X3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRh KTsKIAotCS8qIHVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1 YnhhY3QgaW5mbyAqLwotCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsIHhpZCk7CisJCS8qCisJCSAqIEFmdGVyIHNlbmRpbmcgdGhlIGRhdGEgdG8gdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlciwgd2FpdCBmb3IKKwkJICogdGhhdCB3b3JrZXIgdG8gZmluaXNo LiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBtYWludGFpbiBjb21taXQKKwkJICogb3JkZXIgd2hpY2gg YXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCisJCSAq IGRlYWRsb2Nrcy4KKwkJICovCisJCXBhcmFsbGVsX2FwcGx5X3dhaXRfZm9yX2ZyZWUod2luZm8p OworCQlwYXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3NldHVwKCk7CisKKwkJcGdzdGF0X3JlcG9y dF9zdGF0KGZhbHNlKTsKKwkJc3RvcmVfZmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEuZW5kX2xz bik7CisJCXN0b3Bfc2tpcHBpbmdfY2hhbmdlcygpOworCisJCXBhcmFsbGVsX2FwcGx5X2ZyZWVf d29ya2VyKHdpbmZvLCB4aWQpOworCisJCWVsb2coREVCVUcxLCAic3RyZWFtZWQgdHJhbnNhY3Rp b24gJXUgd2FzIGNvbW1pdHRlZCB1c2luZyBhbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiLAorCQkJ IHhpZCk7CisKKwkJLyoKKwkJICogVGhlIHRyYW5zYWN0aW9uIGlzIGVpdGhlciBub24tZW1wdHkg b3Igc2tpcHBlZCwgc28gd2UgY2xlYXIgdGhlCisJCSAqIHN1YnNraXBsc24uCisJCSAqLworCQlj bGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJfQor CWVsc2UgaWYgKGFwcGx5X2FjdGlvbiA9PSBUQV9TRVJJQUxJWkVfVE9fRklMRSkKKwl7CisJCS8q CisJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJl cGxheSBhbGwgdGhlCisJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJICovCisJCWFwcGx5X3Nw b29sZWRfbWVzc2FnZXMoeGlkLCBjb21taXRfZGF0YS5jb21taXRfbHNuKTsKKworCQlhcHBseV9o YW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CisKKwkJLyogVW5saW5rIHRoZSBm aWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLworCQlzdHJl YW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCX0KKwll bHNlCisJCUFzc2VydChmYWxzZSk7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUg YmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJs ZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7CkBAIC0xNTMwLDYgKzE5MTQsMTMgQEAgYXBwbHlfaGFu ZGxlX2NvbW1pdF9pbnRlcm5hbChMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEpCiAJ CXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gY29tbWl0X2RhdGEtPmNvbW1p dHRpbWU7CiAKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJaWYgKElzVHJhbnNh Y3Rpb25CbG9jaygpKQorCQl7CisJCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQl9CisKIAkJcGdzdGF0X3JlcG9ydF9zdGF0KGZh bHNlKTsKIAogCQlzdG9yZV9mbHVzaF9wb3NpdGlvbihjb21taXRfZGF0YS0+ZW5kX2xzbik7CkBA IC0yNDY3LDcgKzI4NTgsNyBAQCBhcHBseV9oYW5kbGVfdHJ1bmNhdGUoU3RyaW5nSW5mbyBzKQog LyoKICAqIExvZ2ljYWwgcmVwbGljYXRpb24gcHJvdG9jb2wgbWVzc2FnZSBkaXNwYXRjaGVyLgog ICovCi1zdGF0aWMgdm9pZAordm9pZAogYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKQogewog CUxvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiA9IHBxX2dldG1zZ2J5dGUocyk7CkBAIC0yNjM2LDYg KzMwMjcsMTAgQEAgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVfbHNuKQog ewogCUZsdXNoUG9zaXRpb24gKmZsdXNocG9zOwogCisJLyogU2tpcCBpZiBub3QgdGhlIGxlYWRl ciBhcHBseSB3b3JrZXIgKi8KKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCXJl dHVybjsKKwogCS8qIE5lZWQgdG8gZG8gdGhpcyBpbiBwZXJtYW5lbnQgY29udGV4dCAqLwogCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwogCkBAIC0yNjUwLDcgKzMwNDUsNyBA QCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiAKIAogLyogVXBk YXRlIHN0YXRpc3RpY3Mgb2YgdGhlIHdvcmtlci4gKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBVcGRh dGVXb3JrZXJTdGF0cyhYTG9nUmVjUHRyIGxhc3RfbHNuLCBUaW1lc3RhbXBUeiBzZW5kX3RpbWUs IGJvb2wgcmVwbHkpCiB7CiAJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X2xzbiA9IGxhc3RfbHNu OwpAQCAtMjcwMCw2ICszMDk1LDcgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxh c3RfcmVjZWl2ZWQpCiAJZXJyY2FsbGJhY2suY2FsbGJhY2sgPSBhcHBseV9lcnJvcl9jYWxsYmFj azsKIAllcnJjYWxsYmFjay5wcmV2aW91cyA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAJZXJyb3Jf Y29udGV4dF9zdGFjayA9ICZlcnJjYWxsYmFjazsKKwlhcHBseV9lcnJvcl9jb250ZXh0X3N0YWNr ID0gZXJyb3JfY29udGV4dF9zdGFjazsKIAogCS8qIFRoaXMgb3V0ZXIgbG9vcCBpdGVyYXRlcyBv bmNlIHBlciB3YWl0LiAqLwogCWZvciAoOzspCkBAIC0yOTE0LDYgKzMzMTAsNyBAQCBMb2dpY2Fs UmVwQXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAogCS8qIFBvcCB0aGUgZXJy b3IgY29udGV4dCBzdGFjayAqLwogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBlcnJjYWxsYmFjay5w cmV2aW91czsKKwlhcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyb3JfY29udGV4dF9zdGFj azsKIAogCS8qIEFsbCBkb25lICovCiAJd2FscmN2X2VuZHN0cmVhbWluZyhMb2dSZXBXb3JrZXJX YWxSY3ZDb25uLCAmdGxpKTsKQEAgLTMxMTQsNyArMzUxMSw3IEBAIG1heWJlX3JlcmVhZF9zdWJz Y3JpcHRpb24odm9pZCkKIC8qCiAgKiBDYWxsYmFjayBmcm9tIHN1YnNjcmlwdGlvbiBzeXNjYWNo ZSBpbnZhbGlkYXRpb24uCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBzdWJzY3JpcHRpb25fY2hh bmdlX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCiB7CiAJTXlT dWJzY3JpcHRpb25WYWxpZCA9IGZhbHNlOwpAQCAtMzU2OSwzNyArMzk2NiwxNCBAQCBzdGFydF9h cHBseShYTG9nUmVjUHRyIG9yaWdpbl9zdGFydHBvcykKIAlQR19FTkRfVFJZKCk7CiB9CiAKLS8q IExvZ2ljYWwgUmVwbGljYXRpb24gQXBwbHkgd29ya2VyIGVudHJ5IHBvaW50ICovCisvKgorICog SW5pdGlhbGl6ZSB0aGUgZGF0YWJhc2UgY29ubmVjdGlvbiwgaW4tbWVtb3J5IHN1YnNjcmlwdGlv biBhbmQgbmVjZXNzYXJ5CisgKiBjb25maWcgb3B0aW9ucy4KKyAqLwogdm9pZAotQXBwbHlXb3Jr ZXJNYWluKERhdHVtIG1haW5fYXJnKQorSW5pdGlhbGl6ZUFwcGx5V29ya2VyKHZvaWQpCiB7Ci0J aW50CQkJd29ya2VyX3Nsb3QgPSBEYXR1bUdldEludDMyKG1haW5fYXJnKTsKIAlNZW1vcnlDb250 ZXh0IG9sZGN0eDsKLQljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKLQlYTG9nUmVjUHRy CW9yaWdpbl9zdGFydHBvcyA9IEludmFsaWRYTG9nUmVjUHRyOwotCWNoYXIJICAgKm15c2xvdG5h bWUgPSBOVUxMOwotCVdhbFJjdlN0cmVhbU9wdGlvbnMgb3B0aW9uczsKLQlpbnQJCQlzZXJ2ZXJf dmVyc2lvbjsKLQotCS8qIEF0dGFjaCB0byBzbG90ICovCi0JbG9naWNhbHJlcF93b3JrZXJfYXR0 YWNoKHdvcmtlcl9zbG90KTsKLQotCS8qIFNldHVwIHNpZ25hbCBoYW5kbGluZyAqLwotCXBxc2ln bmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7Ci0JcHFzaWduYWwoU0lH VEVSTSwgZGllKTsKLQlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKLQotCS8qCi0J ICogV2UgZG9uJ3QgY3VycmVudGx5IG5lZWQgYW55IFJlc291cmNlT3duZXIgaW4gYSB3YWxyZWNl aXZlciBwcm9jZXNzLCBidXQKLQkgKiBpZiB3ZSBkaWQsIHdlIGNvdWxkIGNhbGwgQ3JlYXRlQXV4 UHJvY2Vzc1Jlc291cmNlT3duZXIgaGVyZS4KLQkgKi8KLQotCS8qIEluaXRpYWxpc2Ugc3RhdHMg dG8gYSBzYW5pc2ggdmFsdWUgKi8KLQlNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3Rfc2VuZF90aW1l ID0gTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3JlY3ZfdGltZSA9Ci0JCU15TG9naWNhbFJlcFdv cmtlci0+cmVwbHlfdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKLQotCS8qIExvYWQgdGhl IGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9ucyAqLwotCWxvYWRfZmlsZSgibGlicHF3YWxyZWNlaXZl ciIsIGZhbHNlKTsKIAogCS8qIFJ1biBhcyByZXBsaWNhIHNlc3Npb24gcmVwbGljYXRpb24gcm9s ZS4gKi8KIAlTZXRDb25maWdPcHRpb24oInNlc3Npb25fcmVwbGljYXRpb25fcm9sZSIsICJyZXBs aWNhIiwKQEAgLTM2NTksMTIgKzQwMzMsNTAgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5f YXJnKQogCQllcmVwb3J0KExPRywKIAkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHRh YmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIsIHRhYmxl IFwiJXNcIiBoYXMgc3RhcnRlZCIsCiAJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwgZ2V0X3Jl bF9uYW1lKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpKSkpOworCWVsc2UgaWYgKGFtX3BhcmFs bGVsX2FwcGx5X3dvcmtlcigpKQorCQllcmVwb3J0KExPRywKKwkJCQkoZXJybXNnKCJsb2dpY2Fs IHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNc IiBoYXMgc3RhcnRlZCIsCisJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAllbHNlCiAJ CWVyZXBvcnQoTE9HLAogCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29y a2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKIAkJCQkJCU15U3Vic2Ny aXB0aW9uLT5uYW1lKSkpOwogCiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9CisKKy8q IExvZ2ljYWwgUmVwbGljYXRpb24gQXBwbHkgd29ya2VyIGVudHJ5IHBvaW50ICovCit2b2lkCitB cHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCit7CisJaW50CQkJd29ya2VyX3Nsb3QgPSBE YXR1bUdldEludDMyKG1haW5fYXJnKTsKKwljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsK KwlYTG9nUmVjUHRyCW9yaWdpbl9zdGFydHBvcyA9IEludmFsaWRYTG9nUmVjUHRyOworCWNoYXIJ ICAgKm15c2xvdG5hbWUgPSBOVUxMOworCVdhbFJjdlN0cmVhbU9wdGlvbnMgb3B0aW9uczsKKwlp bnQJCQlzZXJ2ZXJfdmVyc2lvbjsKKworCS8qIEF0dGFjaCB0byBzbG90ICovCisJbG9naWNhbHJl cF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKKworCS8qIFNldHVwIHNpZ25hbCBoYW5kbGlu ZyAqLworCXBxc2lnbmFsKFNJR0hVUCwgU2lnbmFsSGFuZGxlckZvckNvbmZpZ1JlbG9hZCk7CisJ cHFzaWduYWwoU0lHVEVSTSwgZGllKTsKKwlCYWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMo KTsKKworCS8qCisJICogV2UgZG9uJ3QgY3VycmVudGx5IG5lZWQgYW55IFJlc291cmNlT3duZXIg aW4gYSB3YWxyZWNlaXZlciBwcm9jZXNzLCBidXQKKwkgKiBpZiB3ZSBkaWQsIHdlIGNvdWxkIGNh bGwgQ3JlYXRlQXV4UHJvY2Vzc1Jlc291cmNlT3duZXIgaGVyZS4KKwkgKi8KKworCS8qIEluaXRp YWxpc2Ugc3RhdHMgdG8gYSBzYW5pc2ggdmFsdWUgKi8KKwlNeUxvZ2ljYWxSZXBXb3JrZXItPmxh c3Rfc2VuZF90aW1lID0gTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3JlY3ZfdGltZSA9CisJCU15 TG9naWNhbFJlcFdvcmtlci0+cmVwbHlfdGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKwor CS8qIExvYWQgdGhlIGxpYnBxLXNwZWNpZmljIGZ1bmN0aW9ucyAqLworCWxvYWRfZmlsZSgibGli cHF3YWxyZWNlaXZlciIsIGZhbHNlKTsKKworCUluaXRpYWxpemVBcHBseVdvcmtlcigpOwogCiAJ LyogQ29ubmVjdCB0byB0aGUgb3JpZ2luIGFuZCBzdGFydCB0aGUgcmVwbGljYXRpb24uICovCiAJ ZWxvZyhERUJVRzEsICJjb25uZWN0aW5nIHRvIHB1Ymxpc2hlciB1c2luZyBjb25uZWN0aW9uIHN0 cmluZyBcIiVzXCIiLApAQCAtMzY4Nyw3ICs0MDk5LDcgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVt IG1haW5fYXJnKQogCX0KIAllbHNlCiAJewotCQkvKiBUaGlzIGlzIG1haW4gYXBwbHkgd29ya2Vy ICovCisJCS8qIFRoaXMgaXMgbGVhZGVyIGFwcGx5IHdvcmtlciAqLwogCQlSZXBPcmlnaW5JZCBv cmlnaW5pZDsKIAkJVGltZUxpbmVJRAlzdGFydHBvaW50VExJOwogCQljaGFyCSAgICplcnI7CkBA IC0zNzUxLDEzICs0MTYzLDE0IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAog CXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJj dkNvbm4pOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5wcm90b192ZXJzaW9uID0KKwkJc2VydmVy X3ZlcnNpb24gPj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVS U0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BST1RP X1RXT1BIQVNFX1ZFUlNJT05fTlVNIDoKIAkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8gTE9H SUNBTFJFUF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgogCQlMT0dJQ0FMUkVQX1BST1RPX1ZF UlNJT05fTlVNOwogCiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVzID0g TXlTdWJzY3JpcHRpb24tPnB1YmxpY2F0aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwuYmlu YXJ5ID0gTXlTdWJzY3JpcHRpb24tPmJpbmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3Ry ZWFtaW5nID0gTXlTdWJzY3JpcHRpb24tPnN0cmVhbTsKKwlvcHRpb25zLnByb3RvLmxvZ2ljYWwu c3RyZWFtaW5nID0gKE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX09GRik7CiAJ b3B0aW9ucy5wcm90by5sb2dpY2FsLnR3b3BoYXNlID0gZmFsc2U7CiAJb3B0aW9ucy5wcm90by5s b2dpY2FsLm9yaWdpbiA9IHBzdHJkdXAoTXlTdWJzY3JpcHRpb24tPm9yaWdpbik7CiAKQEAgLTM4 NTUsNiArNDI2OCwxNSBAQCBJc0xvZ2ljYWxXb3JrZXIodm9pZCkKIH0KIAogLyoKKyAqIElzIGN1 cnJlbnQgcHJvY2VzcyBhIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2Vy PworICovCitib29sCitJc0xvZ2ljYWxQYXJhbGxlbEFwcGx5V29ya2VyKHZvaWQpCit7CisJcmV0 dXJuIGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpOworfQorCisvKgogICogU3RhcnQgc2tpcHBp bmcgY2hhbmdlcyBvZiB0aGUgdHJhbnNhY3Rpb24gaWYgdGhlIGdpdmVuIExTTiBtYXRjaGVzIHRo ZQogICogTFNOIHNwZWNpZmllZCBieSBzdWJzY3JpcHRpb24ncyBza2lwbHNuLgogICovCkBAIC0z OTE2LDcgKzQzMzgsOCBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBm aW5pc2hfbHNuKQogCVhMb2dSZWNQdHIJbXlza2lwbHNuID0gTXlTdWJzY3JpcHRpb24tPnNraXBs c247CiAJYm9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOwogCi0JaWYgKGxpa2VseShYTG9nUmVjUHRy SXNJbnZhbGlkKG15c2tpcGxzbikpKQorCWlmIChsaWtlbHkoWExvZ1JlY1B0cklzSW52YWxpZCht eXNraXBsc24pKSB8fAorCQlhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKIAkJcmV0dXJuOwog CiAJaWYgKCFJc1RyYW5zYWN0aW9uU3RhdGUoKSkKQEAgLTM5ODgsNyArNDQxMSw3IEBAIGNsZWFy X3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pCiB9CiAKIC8qIEVy cm9yIGNhbGxiYWNrIHRvIGdpdmUgbW9yZSBjb250ZXh0IGluZm8gYWJvdXQgdGhlIGNoYW5nZSBi ZWluZyBhcHBsaWVkICovCi1zdGF0aWMgdm9pZAordm9pZAogYXBwbHlfZXJyb3JfY2FsbGJhY2so dm9pZCAqYXJnKQogewogCUFwcGx5RXJyb3JDYWxsYmFja0FyZyAqZXJyYXJnID0gJmFwcGx5X2Vy cm9yX2NhbGxiYWNrX2FyZzsKQEAgLTQwMTYsMjMgKzQ0MzksNDcgQEAgYXBwbHlfZXJyb3JfY2Fs bGJhY2sodm9pZCAqYXJnKQogCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCiAJCQkJCSAgIExT Tl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKIAl9Ci0JZWxzZSBpZiAoZXJyYXJn LT5yZW1vdGVfYXR0bnVtIDwgMCkKLQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0 YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNh dGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IGZpbmlzaGVk IGF0ICVYLyVYIiwKLQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxy ZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJl bW90ZXJlbC5uc3BuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwK LQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCi0JCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFy Zy0+ZmluaXNoX2xzbikpOwogCWVsc2UKLQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUg ZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBs aWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNh Y3Rpb24gJXUgZmluaXNoZWQgYXQgJVgvJVgiLAotCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUs Ci0JCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKLQkJCQkg ICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJl bW90ZXJlbC5yZWxuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwuYXR0bmFtZXNb ZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKLQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCi0JCQkJ ICAgTFNOX0ZPUk1BVF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOworCXsKKwkJaWYgKGVycmFy Zy0+cmVtb3RlX2F0dG51bSA8IDApCisJCXsKKwkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKGVy cmFyZy0+ZmluaXNoX2xzbikpCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0 YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNh dGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJ CSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlw ZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3Bu YW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAg ZXJyYXJnLT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5n IHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVzXCIg Zm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24g JXUgZmluaXNoZWQgYXQgJVgvJVgiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJ CQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkg ICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+ cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCisJCQkJCQkg ICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJCX0KKwkJZWxzZQorCQl7 CisJCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChlcnJhcmctPmZpbmlzaF9sc24pKQorCQkJCWVy cmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBc IiVzXCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMu JXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCSAgIGVycmFyZy0+ b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNv bW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJ ICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwt PnJlbW90ZXJlbC5hdHRuYW1lc1tlcnJhcmctPnJlbW90ZV9hdHRudW1dLAorCQkJCQkJICAgZXJy YXJnLT5yZW1vdGVfeGlkKTsKKwkJCWVsc2UKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJl bW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVzXCIgZm9y IHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29sdW1uIFwiJXNcIiBpbiB0 cmFuc2FjdGlvbiAldSBmaW5pc2hlZCBhdCAlWC8lWCIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdp bl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5k KSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVy cmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1v dGVyZWwuYXR0bmFtZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKKwkJCQkJCSAgIGVycmFyZy0+ cmVtb3RlX3hpZCwKKwkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24p KTsKKwkJfQorCX0KIH0KIAogLyogU2V0IHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uIG9mIGFwcGx5 IGVycm9yIGNhbGxiYWNrICovCkBAIC00MDUyLDMgKzQ0OTksMjYgQEAgcmVzZXRfYXBwbHlfZXJy b3JfY29udGV4dF9pbmZvKHZvaWQpCiAJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLnJlbW90ZV9h dHRudW0gPSAtMTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KEludmFsaWRUcmFuc2Fj dGlvbklkLCBJbnZhbGlkWExvZ1JlY1B0cik7CiB9CisKKy8qCisgKiBSZXR1cm4gdGhlIGFjdGlv biB0byB0YWtlIGZvciB0aGUgZ2l2ZW4gdHJhbnNhY3Rpb24uIEFsc28gcmV0dXJuIHRoZQorICog cGFyYWxsZWwgYXBwbHkgd29ya2VyIGluZm9ybWF0aW9uIGlmIHRoZSBhY3Rpb24gaXMKKyAqIFRB X1NFTkRfVE9fUEFSQUxMRUxfV09SS0VSLgorICovCitzdGF0aWMgVHJhbnNhY3Rpb25BcHBseUFj dGlvbgorZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwgUGFy YWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5mbykKK3sKKwlpZiAoYW1fcGFyYWxsZWxfYXBwbHlf d29ya2VyKCkpCisJCXJldHVybiBUQV9BUFBMWV9JTl9QQVJBTExFTF9XT1JLRVI7CisJZWxzZSBp ZiAoaW5fcmVtb3RlX3RyYW5zYWN0aW9uKQorCQlyZXR1cm4gVEFfQVBQTFlfSU5fTEVBREVSX1dP UktFUjsKKworCS8qCisJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2Fj dGlvbiB1c2luZyBhbiBwYXJhbGxlbCBhcHBseQorCSAqIHdvcmtlciBhbmQgaWYgc28sIHNlbmQg dGhlIGNoYW5nZXMgdG8gdGhhdCB3b3JrZXIuCisJICovCisJZWxzZSBpZiAoKCp3aW5mbyA9IHBh cmFsbGVsX2FwcGx5X2ZpbmRfd29ya2VyKHhpZCkpKQorCQlyZXR1cm4gVEFfU0VORF9UT19QQVJB TExFTF9XT1JLRVI7CisJZWxzZQorCQlyZXR1cm4gVEFfU0VSSUFMSVpFX1RPX0ZJTEU7Cit9CmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYwppbmRleCA2MmUwZmZl Li5kM2YxOWI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9w Z291dHB1dC5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0 LmMKQEAgLTE4NDMsNiArMTg0Myw5IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1Y3QgTG9n aWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkgIFhMb2dSZWNQdHIgYWJvcnRfbHNuKQog ewogCVJlb3JkZXJCdWZmZXJUWE4gKnRvcHR4bjsKKwlQR091dHB1dERhdGEgKmRhdGEgPSAoUEdP dXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCWJvb2wgd3JpdGVfYWJv cnRfbHNuID0gKGRhdGEtPnByb3RvY29sX3ZlcnNpb24gPj0KKwkJCQkJCQlMT0dJQ0FMUkVQX1BS T1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSk7CiAKIAkvKgogCSAqIFRoZSBhYm9ydCBz aG91bGQgaGFwcGVuIG91dHNpZGUgc3RyZWFtaW5nIGJsb2NrLCBldmVuIGZvciBzdHJlYW1lZApA QCAtMTg1Niw3ICsxODU5LDggQEAgcGdvdXRwdXRfc3RyZWFtX2Fib3J0KHN0cnVjdCBMb2dpY2Fs RGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJQXNzZXJ0KHJidHhuX2lzX3N0cmVhbWVkKHRvcHR4bikp OwogCiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0eCwgdHJ1ZSk7Ci0JbG9naWNhbHJlcF93 cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4tPnhpZCk7CisJbG9n aWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4bi0+eGlkLCB0eG4sIGFi b3J0X2xzbiwKKwkJCQkJCQkJICB3cml0ZV9hYm9ydF9sc24pOwogCU91dHB1dFBsdWdpbldyaXRl KGN0eCwgdHJ1ZSk7CiAKIAljbGVhbnVwX3JlbF9zeW5jX2NhY2hlKHRvcHR4bi0+eGlkLCBmYWxz ZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKaW5kZXggMjFhOWZjMC4uOWNkNTQy OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwpAQCAtMjIsNiArMjIsNyBAQAog I2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5j bHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgog I2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29u ZGl0aW9uX3ZhcmlhYmxlLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKQEAgLTY1Nyw2ICs2 NTgsOSBAQCBwcm9jc2lnbmFsX3NpZ3VzcjFfaGFuZGxlcihTSUdOQUxfQVJHUykKIAlpZiAoQ2hl Y2tQcm9jU2lnbmFsKFBST0NTSUdfTE9HX01FTU9SWV9DT05URVhUKSkKIAkJSGFuZGxlTG9nTWVt b3J5Q29udGV4dEludGVycnVwdCgpOwogCisJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1BB UkFMTEVMX0FQUExZX01FU1NBR0UpKQorCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZUludGVy cnVwdCgpOworCiAJaWYgKENoZWNrUHJvY1NpZ25hbChQUk9DU0lHX1JFQ09WRVJZX0NPTkZMSUNU X0RBVEFCQVNFKSkKIAkJUmVjb3ZlcnlDb25mbGljdEludGVycnVwdChQUk9DU0lHX1JFQ09WRVJZ X0NPTkZMSUNUX0RBVEFCQVNFKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDdiZWM0ZTQuLmZiN2Jk OTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9zcmMvYmFj a2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMzNzcsNiArMzM3Nyw5IEBAIFByb2Nlc3NJbnRlcnJ1 cHRzKHZvaWQpCiAKIAlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCiAJCVByb2Nlc3NMb2dN ZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CisKKwlpZiAoUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5k aW5nKQorCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKTsKIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCA5MmYyNGE2Li5jOTY2NDdjIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBAIC0zODgsNiArMzg4LDkgQEAg cGdzdGF0X2dldF93YWl0X2lwYyhXYWl0RXZlbnRJUEMgdykKIAkJY2FzZSBXQUlUX0VWRU5UX0hB U0hfR1JPV19CVUNLRVRTX1JFSU5TRVJUOgogCQkJZXZlbnRfbmFtZSA9ICJIYXNoR3Jvd0J1Y2tl dHNSZWluc2VydCI7CiAJCQlicmVhazsKKwkJY2FzZSBXQUlUX0VWRU5UX0xPR0lDQUxfUEFSQUxM RUxfQVBQTFlfU1RBVEVfQ0hBTkdFOgorCQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsUGFyYWxsZWxB cHBseVN0YXRlQ2hhbmdlIjsKKwkJCWJyZWFrOwogCQljYXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9T WU5DX0RBVEE6CiAJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxTeW5jRGF0YSI7CiAJCQlicmVhazsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Yy5jCmluZGV4IDlmYmJmYjEuLmZhZjk1YmYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMu YwpAQCAtMzIyMyw2ICszMjIzLDE4IEBAIHN0YXRpYyBzdHJ1Y3QgY29uZmlnX2ludCBDb25maWd1 cmVOYW1lc0ludFtdID0KIAl9LAogCiAJeworCQl7Im1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJz X3Blcl9zdWJzY3JpcHRpb24iLAorCQkJUEdDX1NJR0hVUCwKKwkJCVJFUExJQ0FUSU9OX1NVQlND UklCRVJTLAorCQkJZ2V0dGV4dF9ub29wKCJNYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBhcHBs eSB3b3JrZXJzIHBlciBzdWJzY3JpcHRpb24uIiksCisJCQlOVUxMLAorCQl9LAorCQkmbWF4X3Bh cmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiwKKwkJMiwgMCwgTUFYX0JBQ0tF TkRTLAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwKKworCXsKIAkJeyJsb2dfcm90YXRpb25fYWdl IiwgUEdDX1NJR0hVUCwgTE9HR0lOR19XSEVSRSwKIAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUg YW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2luZyAiCiAJCQkJCQkgImxvZyBmaWxl IHJvdGF0aW9uLiIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jl c3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYu c2FtcGxlCmluZGV4IDkwYmVjMDUuLjBmNTM0ZjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTM2MCw2ICszNjAsNyBAQAogI21heF9sb2dp Y2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0CSMgdGFrZW4gZnJvbSBtYXhfd29ya2VyX3Byb2Nl c3NlcwogCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKICNtYXhfc3luY193b3JrZXJz X3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlv bl93b3JrZXJzCisjbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9 IDIJIyB0YWtlbiBmcm9tIG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMKIAogCiAjLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCBkMjU3MDlhLi4xM2M4ZTEwIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKQEAgLTQ0ODAsNyArNDQ4MCw3IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAq Zm91dCkKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNDAwMDApCiAJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LCAiIHMuc3Vic3RyZWFtLFxuIik7CiAJZWxzZQotCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwgIiBmYWxzZSBBUyBzdWJzdHJlYW0sXG4iKTsKKwkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIgJ2YnIEFTIHN1YnN0cmVhbSxcbiIpOwogCiAJaWYgKGZvdXQt PnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwK QEAgLTQ2MTcsOCArNDYxNywxMCBAQCBkdW1wU3Vic2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNv bnN0IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8pCiAJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJi aW5hcnksICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIGJpbmFy eSA9IHRydWUiKTsKIAotCWlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAiZiIpICE9IDAp CisJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJlYW0sICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIsIHN0cmVhbWluZyA9IG9uIik7CisJZWxzZSBpZiAoc3RyY21w KHN1YmluZm8tPnN1YnN0cmVhbSwgInAiKSA9PSAwKQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihx dWVyeSwgIiwgc3RyZWFtaW5nID0gcGFyYWxsZWwiKTsKIAogCWlmIChzdHJjbXAoc3ViaW5mby0+ c3VidHdvcGhhc2VzdGF0ZSwgdHdvX3BoYXNlX2Rpc2FibGVkKSAhPSAwKQogCQlhcHBlbmRQUUV4 cEJ1ZmZlclN0cihxdWVyeSwgIiwgdHdvX3BoYXNlID0gb24iKTsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5oCmluZGV4IDdiOTg3MTQuLjc5ZmY3NDUgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uaApAQCAtODAsNyArODAsOCBAQCBDQVRBTE9HKHBnX3N1YnNjcmlw dGlvbiw2MTAwLFN1YnNjcmlwdGlvblJlbGF0aW9uSWQpIEJLSV9TSEFSRURfUkVMQVRJT04gQktJ X1JPVwogCWJvb2wJCXN1YmJpbmFyeTsJCS8qIFRydWUgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50 cyB0aGUKIAkJCQkJCQkJICogcHVibGlzaGVyIHRvIHNlbmQgZGF0YSBpbiBiaW5hcnkgKi8KIAot CWJvb2wJCXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICov CisJY2hhcgkJc3Vic3RyZWFtOwkJLyogU3RyZWFtIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4K KwkJCQkJCQkJICogU2VlIFNVQlNUUkVBTV94eHggY29uc3RhbnRzLiAqLwogCiAJY2hhcgkJc3Vi dHdvcGhhc2VzdGF0ZTsJLyogU3RyZWFtIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgKi8KIApAQCAt MTI0LDcgKzEyNSw4IEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCWJvb2wJCWVuYWJs ZWQ7CQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBpcyBlbmFibGVkICovCiAJYm9v bAkJYmluYXJ5OwkJCS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHdhbnRzIGRhdGEg aW4KIAkJCQkJCQkJICogYmluYXJ5IGZvcm1hdCAqLwotCWJvb2wJCXN0cmVhbTsJCQkvKiBBbGxv dyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworCWNoYXIJCXN0cmVhbTsJ CQkvKiBBbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLgorCQkJCQkJCQkg KiBTZWUgU1VCU1RSRUFNX3h4eCBjb25zdGFudHMuICovCiAJY2hhcgkJdHdvcGhhc2VzdGF0ZTsJ LyogQWxsb3cgc3RyZWFtaW5nIHR3by1waGFzZSB0cmFuc2FjdGlvbnMgKi8KIAlib29sCQlkaXNh Ymxlb25lcnI7CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0aW9uIHNob3VsZCBiZQogCQkJ CQkJCQkgKiBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGlmIGEgd29ya2VyIGVycm9yCkBAIC0xMzcs NiArMTM5LDIxIEBAIHR5cGVkZWYgc3RydWN0IFN1YnNjcmlwdGlvbgogCQkJCQkJCQkgKiBzcGVj aWZpZWQgb3JpZ2luICovCiB9IFN1YnNjcmlwdGlvbjsKIAorLyogRGlzYWxsb3cgc3RyZWFtaW5n IGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKyNkZWZpbmUgU1VCU1RSRUFNX09GRiAnZicK KworLyoKKyAqIFN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIHdyaXR0ZW4g dG8gYSB0ZW1wb3JhcnkgZmlsZSBhbmQKKyAqIGFwcGxpZWQgb25seSBhZnRlciB0aGUgdHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHVwc3RyZWFtLgorICovCisjZGVmaW5lIFNVQlNUUkVBTV9P TiAndCcKKworLyoKKyAqIFN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgYXJlIGFw cGxpZWQgaW1tZWRpYXRlbHkgdmlhIGFuIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIuCisgKi8K KyNkZWZpbmUgU1VCU1RSRUFNX1BBUkFMTEVMICdwJworCiBleHRlcm4gU3Vic2NyaXB0aW9uICpH ZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIHZvaWQg RnJlZVN1YnNjcmlwdGlvbihTdWJzY3JpcHRpb24gKnN1Yik7CiBleHRlcm4gdm9pZCBEaXNhYmxl U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w Z19saXN0LmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wZ19saXN0LmgKaW5kZXggYTZlMDRkMC4uYzQy NTNhNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGdfbGlzdC5oCisrKyBiL3NyYy9p bmNsdWRlL25vZGVzL3BnX2xpc3QuaApAQCAtMzIyLDYgKzMyMiwxNyBAQCBsaXN0X250aF9vaWQo Y29uc3QgTGlzdCAqbGlzdCwgaW50IG4pCiAJcmV0dXJuIGxmaXJzdF9vaWQobGlzdF9udGhfY2Vs bChsaXN0LCBuKSk7CiB9CiAKKy8qCisgKiBSZXR1cm4gdGhlIFRyYW5zYWN0aW9uSWQgdmFsdWUg Y29udGFpbmVkIGluIHRoZSBuJ3RoIGVsZW1lbnQgb2YgdGhlCisgKiBzcGVjaWZpZWQgbGlzdC4K KyAqLworc3RhdGljIGlubGluZSBUcmFuc2FjdGlvbklkCitsaXN0X250aF94aWQoY29uc3QgTGlz dCAqbGlzdCwgaW50IG4pCit7CisJQXNzZXJ0KElzQShsaXN0LCBYaWRMaXN0KSk7CisJcmV0dXJu IGxmaXJzdF94aWQobGlzdF9udGhfY2VsbChsaXN0LCBuKSk7Cit9CisKICNkZWZpbmUgbGlzdF9u dGhfbm9kZSh0eXBlLGxpc3QsbikJY2FzdE5vZGUodHlwZSwgbGlzdF9udGgobGlzdCwgbikpCiAK IC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIu aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCmluZGV4IGYxZTI4 MjEuLmQ1MTNlZjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxs YXVuY2hlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5o CkBAIC0xNCw2ICsxNCw3IEBACiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X2xvZ2ljYWxf cmVwbGljYXRpb25fd29ya2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3N5bmNfd29y a2Vyc19wZXJfc3Vic2NyaXB0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfcGFyYWxs ZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uOwogCiBleHRlcm4gdm9pZCBBcHBseUxh dW5jaGVyUmVnaXN0ZXIodm9pZCk7CiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyTWFpbihEYXR1 bSBtYWluX2FyZyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs cHJvdG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCmluZGV4IGE3 NzFhYjguLjY0YWRmMjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxwcm90by5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCkBA IC0zMiwxMiArMzIsMTcgQEAKICAqCiAgKiBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJ T05fTlVNIGlzIHRoZSBtaW5pbXVtIHByb3RvY29sIHZlcnNpb24gd2l0aAogICogc3VwcG9ydCBm b3IgdHdvLXBoYXNlIGNvbW1pdCBkZWNvZGluZyAoYXQgcHJlcGFyZSB0aW1lKS4gSW50cm9kdWNl ZCBpbiBQRzE1LgorICoKKyAqIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJ T05fTlVNIGlzIHRoZSBtaW5pbXVtIHByb3RvY29sIHZlcnNpb24KKyAqIHdpdGggc3VwcG9ydCBm b3Igc3RyZWFtaW5nIGxhcmdlIHRyYW5zYWN0aW9ucyB1c2luZyBwYXJhbGxlbCBhcHBseQorICog d29ya2Vycy4gSW50cm9kdWNlZCBpbiBQRzE2LgogICovCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJP VE9fTUlOX1ZFUlNJT05fTlVNIDEKICNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19WRVJTSU9OX05V TSAxCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNIDIKICNkZWZp bmUgTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSAzCi0jZGVmaW5lIExPR0lD QUxSRVBfUFJPVE9fTUFYX1ZFUlNJT05fTlVNIExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVS U0lPTl9OVU0KKyNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lP Tl9OVU0gNAorI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01BWF9WRVJTSU9OX05VTSBMT0dJQ0FM UkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTQogCiAvKgogICogTG9naWNhbCBt ZXNzYWdlIHR5cGVzCkBAIC0xNzUsNiArMTgwLDE3IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxS ZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YQogCWNoYXIJCWdpZFtHSURTSVpFXTsKIH0gTG9naWNh bFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhOwogCisvKgorICogVHJhbnNhY3Rpb24gcHJvdG9j b2wgaW5mb3JtYXRpb24gZm9yIHN0cmVhbSBhYm9ydC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgTG9n aWNhbFJlcFN0cmVhbUFib3J0RGF0YQoreworCVRyYW5zYWN0aW9uSWQgeGlkOworCVRyYW5zYWN0 aW9uSWQgc3VieGlkOworCVhMb2dSZWNQdHIJYWJvcnRfbHNuOworCVRpbWVzdGFtcFR6IGFib3J0 X3RpbWU7Cit9IExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGE7CisKIGV4dGVybiB2b2lkIGxvZ2lj YWxyZXBfd3JpdGVfYmVnaW4oU3RyaW5nSW5mbyBvdXQsIFJlb3JkZXJCdWZmZXJUWE4gKnR4bik7 CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfYmVnaW4oU3RyaW5nSW5mbyBpbiwKIAkJCQkJ CQkJICBMb2dpY2FsUmVwQmVnaW5EYXRhICpiZWdpbl9kYXRhKTsKQEAgLTI0Niw5ICsyNjIsMTIg QEAgZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8g b3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4KIGV4dGVybiBUcmFuc2FjdGlvbklkIGxvZ2ljYWxy ZXBfcmVhZF9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gb3V0LAogCQkJCQkJCQkJCQkJICAgTG9n aWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBf d3JpdGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKLQkJ CQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkKTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBf cmVhZF9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJ CQkJCQkJCSBUcmFuc2FjdGlvbklkICpzdWJ4aWQpOworCQkJCQkJCQkJCSAgUmVvcmRlckJ1ZmZl clRYTiAqdHhuLAorCQkJCQkJCQkJCSAgWExvZ1JlY1B0ciBhYm9ydF9sc24sCisJCQkJCQkJCQkJ ICBib29sIHdyaXRlX2Fib3J0X2xzbik7CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3Ry ZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sCisJCQkJCQkJCQkJIExvZ2ljYWxSZXBTdHJlYW1BYm9y dERhdGEgKmFib3J0X2RhdGEsCisJCQkJCQkJCQkJIGJvb2wgcmVhZF9hYm9ydF9sc24pOwogZXh0 ZXJuIGNoYXIgKmxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlv bik7CiAKICNlbmRpZgkJCQkJCQkvKiBMT0dJQ0FMX1BST1RPX0ggKi8KZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2xvZ2ljYWx3b3JrZXIuaAppbmRleCBjZDFiNmU4Li45NmQ3ZTgxIDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCkBAIC0xMiw4ICsxMiwxNCBAQAogI2lmbmRl ZiBMT0dJQ0FMV09SS0VSX0gKICNkZWZpbmUgTE9HSUNBTFdPUktFUl9ICiAKK2V4dGVybiBQR0RM TElNUE9SVCB2b2xhdGlsZSBib29sIFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZzsKKwogZXh0 ZXJuIHZvaWQgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKK2V4dGVybiB2b2lkIFBh cmFsbGVsQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIAogZXh0ZXJuIGJvb2wgSXNM b2dpY2FsV29ya2VyKHZvaWQpOworZXh0ZXJuIGJvb2wgSXNMb2dpY2FsUGFyYWxsZWxBcHBseVdv cmtlcih2b2lkKTsKK2V4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50ZXJy dXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKHZvaWQp OwogCiAjZW5kaWYJCQkJCQkJLyogTE9HSUNBTFdPUktFUl9IICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9yZW9yZGVyYnVmZmVyLmgKaW5kZXggODY5NTkwMS4uYTc0YjYxNiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCisrKyBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaApAQCAtMzAxLDYgKzMwMSw3IEBAIHR5cGVkZWYg c3RydWN0IFJlb3JkZXJCdWZmZXJUWE4KIAl7CiAJCVRpbWVzdGFtcFR6IGNvbW1pdF90aW1lOwog CQlUaW1lc3RhbXBUeiBwcmVwYXJlX3RpbWU7CisJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWU7CiAJ fQkJCXhhY3RfdGltZTsKIAogCS8qCkBAIC02NTgsOSArNjU5LDExIEBAIGV4dGVybiB2b2lkIFJl b3JkZXJCdWZmZXJGaW5pc2hQcmVwYXJlZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25J ZCB4aWQsCiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQXNzaWduQ2hpbGQoUmVvcmRlckJ1ZmZl ciAqLCBUcmFuc2FjdGlvbklkLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGNvbW1pdF9sc24p OwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckNvbW1pdENoaWxkKFJlb3JkZXJCdWZmZXIgKiwg VHJhbnNhY3Rpb25JZCwgVHJhbnNhY3Rpb25JZCwKIAkJCQkJCQkJCSBYTG9nUmVjUHRyIGNvbW1p dF9sc24sIFhMb2dSZWNQdHIgZW5kX2xzbik7Ci1leHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJv cnQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbik7CitleHRl cm4gdm9pZCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklk LCBYTG9nUmVjUHRyIGxzbiwKKwkJCQkJCQkgICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lKTsKIGV4 dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydE9sZChSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0 aW9uSWQgeGlkKTsKLWV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZl ciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbik7CitleHRlcm4gdm9pZCBSZW9yZGVy QnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKiwgVHJhbnNhY3Rpb25JZCwgWExvZ1JlY1B0ciBs c24sCisJCQkJCQkJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWUpOwogZXh0ZXJuIHZvaWQgUmVvcmRl ckJ1ZmZlckludmFsaWRhdGUoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVj UHRyIGxzbik7CiAKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJTZXRCYXNlU25hcHNob3QoUmVv cmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9nUmVjUHRyIGxzbiwgc3RydWN0IFNuYXBz aG90RGF0YSAqc25hcCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5o CmluZGV4IDkwMTg0NWEuLmZlODQyN2IgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtl cl9pbnRlcm5hbC5oCkBAIC0xNyw4ICsxNywxMiBAQAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVm cy5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiZGF0 YXR5cGUvdGltZXN0YW1wLmgiCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAicmVw bGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9maWxlc2V0Lmgi CiAjaW5jbHVkZSAic3RvcmFnZS9sb2NrLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1fbXEuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3NobV90b2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIK IAogCkBAIC02MCw2ICs2NCwxMiBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJ ICovCiAJRmlsZVNldCAgICAqc3RyZWFtX2ZpbGVzZXQ7CiAKKwkvKgorCSAqIFBJRCBvZiBsZWFk ZXIgYXBwbHkgd29ya2VyIGlmIHRoaXMgc2xvdCBpcyB1c2VkIGZvciBhbiBwYXJhbGxlbCBhcHBs eQorCSAqIHdvcmtlciwgSW52YWxpZFBpZCBvdGhlcndpc2UuCisJICovCisJcGlkX3QJCQlhcHBs eV9sZWFkZXJfcGlkOworCiAJLyogU3RhdHMuICovCiAJWExvZ1JlY1B0cglsYXN0X2xzbjsKIAlU aW1lc3RhbXBUeiBsYXN0X3NlbmRfdGltZTsKQEAgLTY4LDggKzc4LDc0IEBAIHR5cGVkZWYgc3Ry dWN0IExvZ2ljYWxSZXBXb3JrZXIKIAlUaW1lc3RhbXBUeiByZXBseV90aW1lOwogfSBMb2dpY2Fs UmVwV29ya2VyOwogCisvKiBTdHJ1Y3QgZm9yIHNhdmluZyBhbmQgcmVzdG9yaW5nIGFwcGx5IGVy cmNvbnRleHQgaW5mb3JtYXRpb24gKi8KK3R5cGVkZWYgc3RydWN0IEFwcGx5RXJyb3JDYWxsYmFj a0FyZworeworCUxvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQ7CS8qIDAgaWYgaW52YWxpZCAqLwor CUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsOworCisJLyogUmVtb3RlIG5vZGUgaW5mb3JtYXRp b24gKi8KKwlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAtMSBpZiBpbnZhbGlkICovCisJVHJhbnNh Y3Rpb25JZCByZW1vdGVfeGlkOworCVhMb2dSZWNQdHIJZmluaXNoX2xzbjsKKwljaGFyCSAgICpv cmlnaW5fbmFtZTsKK30gQXBwbHlFcnJvckNhbGxiYWNrQXJnOworCisvKgorICogU3RydWN0IGZv ciBzaGFyaW5nIGluZm9ybWF0aW9uIGJldHdlZW4gYXBwbHkgbGVhZGVyIGFwcGx5IHdvcmtlciBh bmQKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKi8KK3R5cGVkZWYgc3RydWN0IFBhcmFs bGVsQXBwbHlXb3JrZXJTaGFyZWQKK3sKKwlzbG9ja190CW11dGV4OworCisJYm9vbAlpbl91c2U7 CisKKwkvKiBMb2dpY2FsIHByb3RvY29sIHZlcnNpb24uICovCisJdWludDMyCXByb3RvX3ZlcnNp b247CisKKwkvKiBJRCBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgKi8KKwl1aW50MzIJd29ya2Vy X2lkOworCisJLyogSW5mb3JtYXRpb24gZnJvbSB0aGUgY29ycmVzcG9uZGluZyBMb2dpY2FsUmVw V29ya2VyIHNsb3QgKi8KKwl1aW50MTYJCQkJCWxvZ2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247 CisKKwlpbnQJCQkJCQlsb2dpY2FscmVwX3dvcmtlcl9zbG90X25vOworfSBQYXJhbGxlbEFwcGx5 V29ya2VyU2hhcmVkOworCisvKgorICogSW5mb3JtYXRpb24gd2hpY2ggaXMgdXNlZCB0byBtYW5h Z2UgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFyYWxs ZWxBcHBseVdvcmtlckluZm8KK3sKKwlzaG1fbXFfaGFuZGxlCQkJKm1xX2hhbmRsZTsKKworCS8q CisJICogVGhlIHF1ZXVlIHVzZWQgdG8gdHJhbnNmZXIgbWVzc2FnZXMgZnJvbSB0aGUgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIHRvCisJICogdGhlIGxlYWRlciBhcHBseSB3b3JrZXIuIE5VTEwgaWYg dGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBleGl0ZWQKKwkgKiBjbGVhbmx5LgorCSAqLworCXNo bV9tcV9oYW5kbGUJCQkqZXJyb3JfbXFfaGFuZGxlOworCisJZHNtX3NlZ21lbnQJCQkJKmRzbV9z ZWc7CisKKwlib29sCQkJCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb247CisKKwlQYXJhbGxlbEFwcGx5 V29ya2VyU2hhcmVkIHZvbGF0aWxlCSpzaGFyZWQ7Cit9IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZv OworCiAvKiBNYWluIG1lbW9yeSBjb250ZXh0IGZvciBhcHBseSB3b3JrZXIuIFBlcm1hbmVudCBk dXJpbmcgd29ya2VyIGxpZmV0aW1lLiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRl eHQgQXBwbHlDb250ZXh0OworZXh0ZXJuIFBHRExMSU1QT1JUIE1lbW9yeUNvbnRleHQgQXBwbHlN ZXNzYWdlQ29udGV4dDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIEVycm9yQ29udGV4dENhbGxiYWNr CSphcHBseV9lcnJvcl9jb250ZXh0X3N0YWNrOworZXh0ZXJuIFBHRExMSU1QT1JUIEFwcGx5RXJy b3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmc7CisKK2V4dGVybiBQR0RMTElN UE9SVCBib29sIE15U3Vic2NyaXB0aW9uVmFsaWQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCB2b2xh dGlsZSBQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICpNeVBhcmFsbGVsU2hhcmVkOworCitleHRl cm4gUEdETExJTVBPUlQgTGlzdCAqc3VieGFjdGxpc3Q7CiAKIC8qIGxpYnBxcmVjZWl2ZXIgY29u bmVjdGlvbiAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIHN0cnVjdCBXYWxSZWNlaXZlckNvbm4gKkxv Z1JlcFdvcmtlcldhbFJjdkNvbm47CkBAIC03OSwxOCArMTU1LDI0IEBAIGV4dGVybiBQR0RMTElN UE9SVCBTdWJzY3JpcHRpb24gKk15U3Vic2NyaXB0aW9uOwogZXh0ZXJuIFBHRExMSU1QT1JUIExv Z2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtlcjsKIAogZXh0ZXJuIFBHRExMSU1QT1JU IGJvb2wgaW5fcmVtb3RlX3RyYW5zYWN0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgaW5f c3RyZWFtZWRfdHJhbnNhY3Rpb247CitleHRlcm4gUEdETExJTVBPUlQgVHJhbnNhY3Rpb25JZCBz dHJlYW1feGlkOworZXh0ZXJuIFBHRExMSU1QT1JUIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICpz dHJlYW1fYXBwbHlfd29ya2VyOwogCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9hdHRh Y2goaW50IHNsb3QpOwogZXh0ZXJuIExvZ2ljYWxSZXBXb3JrZXIgKmxvZ2ljYWxyZXBfd29ya2Vy X2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsCiAJCQkJCQkJCQkJCQlib29sIG9ubHlfcnVubmlu Zyk7CiBleHRlcm4gTGlzdCAqbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoT2lkIHN1YmlkLCBib29s IG9ubHlfcnVubmluZyk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goT2lk IGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKLQkJCQkJCQkJCSBPaWQgdXNl cmlkLCBPaWQgcmVsaWQpOworZXh0ZXJuIGJvb2wgbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE9p ZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsCisJCQkJCQkJCQkgT2lkIHVz ZXJpZCwgT2lkIHJlbGlkLAorCQkJCQkJCQkJIGRzbV9oYW5kbGUgc3Vid29ya2VyX2RzbSk7CiBl eHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsK K2V4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfYnlfc2xvdChpbnQgc2xvdF9ubywg dWludDE2IGdlbmVyYXRpb24pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVw KE9pZCBzdWJpZCwgT2lkIHJlbGlkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dh a2V1cF9wdHIoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKTsKIAogZXh0ZXJuIGludAlsb2dpY2Fs cmVwX3N5bmNfd29ya2VyX2NvdW50KE9pZCBzdWJpZCk7CitleHRlcm4gaW50CWxvZ2ljYWxyZXBf cGFyYWxsZWxfYXBwbHlfd29ya2VyX2NvdW50KE9pZCBzdWJpZCk7CiAKIGV4dGVybiB2b2lkIFJl cGxpY2F0aW9uT3JpZ2luTmFtZUZvclRhYmxlc3luYyhPaWQgc3Vib2lkLCBPaWQgcmVsaWQsCiAJ CQkJCQkJCQkJCSAgY2hhciAqb3JpZ2lubmFtZSwgaW50IHN6b3JnbmFtZSk7CkBAIC0xMDMsMTAg KzE4NSw0OCBAQCBleHRlcm4gdm9pZCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIg Y3VycmVudF9sc24pOwogZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRl cyhEYXR1bSBhcmcsIGludCBjYWNoZWlkLAogCQkJCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKTsK IAorZXh0ZXJuIHZvaWQgVXBkYXRlV29ya2VyU3RhdHMoWExvZ1JlY1B0ciBsYXN0X2xzbiwgVGlt ZXN0YW1wVHogc2VuZF90aW1lLAorCQkJCQkJCSAgYm9vbCByZXBseSk7CisKK2V4dGVybiB2b2lk IGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcyk7CisKK2V4dGVybiB2b2lkIEluaXRpYWxpemVB cHBseVdvcmtlcih2b2lkKTsKKworLyogRnVuY3Rpb24gZm9yIGFwcGx5IGVycm9yIGNhbGxiYWNr ICovCitleHRlcm4gdm9pZCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOworCitleHRl cm4gdm9pZCBzdWJzY3JpcHRpb25fY2hhbmdlX2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVp bnQzMiBoYXNodmFsdWUpOworCisvKiBQYXJhbGxlbCBhcHBseSB3b3JrZXIgc2V0dXAgYW5kIGlu dGVyYWN0aW9ucyAqLworZXh0ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlfc3RhcnRfd29ya2VyKFRy YW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqcGFyYWxs ZWxfYXBwbHlfZmluZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJuIHZvaWQgcGFy YWxsZWxfYXBwbHlfc2V0X2lkbGUodm9pZCk7CitleHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV9m cmVlX3dvcmtlcihQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sCisJCQkJCQkJCQkgICBU cmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gdm9pZCBwYXJhbGxlbF9hcHBseV93YWl0X2Zvcl9m cmVlKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CitleHRlcm4gdm9pZCBwYXJhbGxl bF9hcHBseV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5i eXRlcywKKwkJCQkJCQkJCSBjb25zdCB2b2lkICpkYXRhKTsKKworZXh0ZXJuIHZvaWQgcGFyYWxs ZWxfYXBwbHlfc3VieGFjdF9pbmZvX2FkZChUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkKTsKK2V4 dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJv cnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJCQkJCWJvb2wgcmVhZF9hYm9ydF9sc24pOworZXh0 ZXJuIHZvaWQgcGFyYWxsZWxfYXBwbHlfc2F2ZXBvaW50X25hbWUoT2lkIHN1Ym9pZCwgT2lkIHJl bGlkLAorCQkJCQkJCQkJCSAgY2hhciAqc3BuYW1lLCBpbnQgc3pzcCk7CitleHRlcm4gdm9pZCBw YXJhbGxlbF9hcHBseV9yZXBsb3JpZ2luX3NldHVwKHZvaWQpOworZXh0ZXJuIHZvaWQgcGFyYWxs ZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCh2b2lkKTsKKworI2RlZmluZSBpc1BhcmFsbGVsQXBw bHlXb3JrZXIod29ya2VyKSAod29ya2VyLT5hcHBseV9sZWFkZXJfcGlkICE9IEludmFsaWRQaWQp CisKIHN0YXRpYyBpbmxpbmUgYm9vbAogYW1fdGFibGVzeW5jX3dvcmtlcih2b2lkKQogewogCXJl dHVybiBPaWRJc1ZhbGlkKE15TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpOwogfQogCitzdGF0aWMg aW5saW5lIGJvb2wKK2FtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcih2b2lkKQoreworCXJldHVybiBp c1BhcmFsbGVsQXBwbHlXb3JrZXIoTXlMb2dpY2FsUmVwV29ya2VyKTsKK30KKwogI2VuZGlmCQkJ CQkJCS8qIFdPUktFUl9JTlRFUk5BTF9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2NzaWduYWwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4 IGVlNjM2OTAuLjUyOGVmNzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3Np Z25hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBAIC0zNSw2ICsz NSw3IEBAIHR5cGVkZWYgZW51bQogCVBST0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJTkcsCS8qIGFz ayB3YWxzZW5kZXJzIHRvIHByZXBhcmUgZm9yIHNodXRkb3duICAqLwogCVBST0NTSUdfQkFSUklF UiwJCQkvKiBnbG9iYWwgYmFycmllciBpbnRlcnJ1cHQgICovCiAJUFJPQ1NJR19MT0dfTUVNT1JZ X0NPTlRFWFQsIC8qIGFzayBiYWNrZW5kIHRvIGxvZyB0aGUgbWVtb3J5IGNvbnRleHRzICovCisJ UFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLAkvKiBNZXNzYWdlIGZyb20gcGFyYWxsZWwg YXBwbHkgd29ya2VycyAqLwogCiAJLyogUmVjb3ZlcnkgY29uZmxpY3QgcmVhc29ucyAqLwogCVBS T0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS91dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKaW5k ZXggNmYyZDU2MS4uYjJjZGQ1NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9l dmVudC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaApAQCAtMTA1LDYgKzEw NSw3IEBAIHR5cGVkZWYgZW51bQogCVdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfQUxMT0NB VEUsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19FTEVDVCwKIAlXQUlUX0VWRU5UX0hB U0hfR1JPV19CVUNLRVRTX1JFSU5TRVJULAorCVdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9B UFBMWV9TVEFURV9DSEFOR0UsCiAJV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfREFUQSwKIAlXQUlU X0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9DSEFOR0UsCiAJV0FJVF9FVkVOVF9NUV9JTlRFUk5B TCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dAppbmRleCBlZjBl YmY5Li45OWI5ZTg2IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNj cmlwdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24u b3V0CkBAIC0yMTcsOSArMjE3LDkgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1 YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWI7Ci0tLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbgorLS0g ZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4gb3IgJ3BhcmFsbGVsJwogQ1JFQVRFIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9l c25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3Ry ZWFtaW5nID0gZm9vKTsKLUVSUk9SOiAgc3RyZWFtaW5nIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1 ZQorRVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlIG9yICJwYXJhbGxl bCIKIC0tIG5vdyBpdCB3b3JrcwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIg Q09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0 cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gdHJ1ZSk7CiBXQVJOSU5HOiAg dGFibGVzIHdlcmUgbm90IHN1YnNjcmliZWQsIHlvdSB3aWxsIGhhdmUgdG8gcnVuIEFMVEVSIFNV QlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTiB0byBzdWJzY3JpYmUgdGhlIHRhYmxl cwpAQCAtMjMwLDYgKzIzMCwxNCBAQCBXQVJOSU5HOiAgdGFibGVzIHdlcmUgbm90IHN1YnNjcmli ZWQsIHlvdSB3aWxsIGhhdmUgdG8gcnVuIEFMVEVSIFNVQlNDUklQVElPTiAuLgogIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAogKDEgcm93KQogCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0 c3ViIFNFVCAoc3RyZWFtaW5nID0gcGFyYWxsZWwpOworXGRScysKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwg ICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFy eSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3Jp Z2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwg U2tpcCBMU04gCistLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3Vi IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYg ICAgICB8IHAgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwg YW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0 IHwgMC8wCisoMSByb3cpCisKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VU IChzdHJlYW1pbmcgPSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi IFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiBcZFJzKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlw dGlvbi5zcWwKaW5kZXggNDQyNWZhZi4uZWQxNDhlNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvc3Vic2NyaXB0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJz Y3JpcHRpb24uc3FsCkBAIC0xNTYsNyArMTU2LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jl c3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5PTkUpOwogCiBEUk9QIFNVQlNDUklQVElPTiBy ZWdyZXNzX3Rlc3RzdWI7CiAKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCist LSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBDUkVBVEUg U1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19k b2Vzbm90ZXhpc3QnIFBVQkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBz dHJlYW1pbmcgPSBmb28pOwogCiAtLSBub3cgaXQgd29ya3MKQEAgLTE2NCw2ICsxNjQsMTAgQEAg Q1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0JyBQVUIKIAogXGRScysKIAorQUxURVIgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKKworXGRScysKKwogQUxU RVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IGZhbHNlKTsK IEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05F KTsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAppbmRleCA4YWQxMTJjLi5iNWE0ZmRlIDEwMDY0 NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMTQ4NSw2ICsxNDg1LDcgQEAgTG9naWNhbFJlcFJl bElkCiBMb2dpY2FsUmVwUmVsTWFwRW50cnkKIExvZ2ljYWxSZXBSZWxhdGlvbgogTG9naWNhbFJl cFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhCitMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCiBMb2dp Y2FsUmVwVHVwbGVEYXRhCiBMb2dpY2FsUmVwVHlwCiBMb2dpY2FsUmVwV29ya2VyCkBAIC0xNjc2 LDYgKzE2NzcsOSBAQCBPdmVycmlkZVN0YWNrRW50cnkKIE92ZXJyaWRpbmdLaW5kCiBQQUNFX0hF QURFUgogUEFDTAorUGFyYWxsZWxBcHBseVdvcmtlckVudHJ5CitQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbworUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZAogUEFUSAogUEJPT0wKIFBDdHh0SGFuZGxl Ci0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_006_OS0PR01MB5716546863340CA19EC5F8C394789OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v26-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v26-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v26-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=76990; creation-date="Wed, 31 Aug 2022 09:46:00 GMT"; modification-date="Wed, 31 Aug 2022 09:55:43 GMT" Content-Transfer-Encoding: base64 RnJvbSA3MTJmYjM0N2YxYmI2ZjE1YWI0OTEzZGEwZTQyMWNjYTY1MjU1N2I1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MjYg Mi81XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAyMzMg KysrKysrLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwg ICAgICB8IDE0NCArKysrLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRs LnBsICAgICAgICAgIHwgMjIyICsrKysrKy0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAxOF9zdHJl YW1fc3VieGFjdF9hYm9ydC5wbCAgICAgfCAyMzQgKysrKysrLS0tCiAuLi4vc3Vic2NyaXB0aW9u L3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCB8IDEzNSArKysrLQogc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAgfCAzOTUgKysrKysrKysr LS0tLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsICAg ICB8IDU0MSArKysrKysrKysrKystLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwgMTI1OSBpbnNl cnRpb25zKCspLCA2NDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJl YW0ucGwKaW5kZXggY2JhYTMyNy4uNjg0NGNjOSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVf c3RyZWFtLnBsCkBAIC04LDYgKzgsMTUwIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hl Y2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1 Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hl Y2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCwgJGFjdGlvbik9IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdlID0gJyc7CisKKwlp ZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJHBhcmFsbGVsX21lc3NhZ2UgPSBqb2luKCIiLCAnc3Ry ZWFtZWQgdHJhbnNhY3Rpb24gXGQrIHdhcyAnLCAkYWN0aW9uLCAnIHVzaW5nIGFuIHBhcmFsbGVs IGFwcGx5IHdvcmtlcicpOworCisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8k cGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwg dGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisj IHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVh bWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFt aW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs ICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rp b25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KKwlteSAkaW4gID0gJyc7CisJbXkg JG91dCA9ICcnOworCisJbXkgJG9mZnNldCA9IDA7CisKKwlteSAkdGltZXIgPSBJUEM6OlJ1bjo6 dGltZW91dCgkUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7CisKKwlt eSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4s IFwkb3V0LCAkdGltZXIsCisJCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKwkjIElmICJzdHJlYW1p bmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVj aworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhbiBwYXJh bGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9n IG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5Lgor CWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRu b2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsK KworCSRpbiAuPSBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwlVUERBVEUg dGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwl9OworCSRoLT5wdW1wX25iOworCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcyg1MDAxLCA5OTk5KSBzKGkpOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiA1 MDAwOworCUNPTU1JVDsKKwl9KTsKKworCSRpbiAuPSBxeworCUNPTU1JVDsKKwlccQorCX07CisJ JGgtPmZpbmlzaDsgICAgIyBlcnJvcnMgbWFrZSB0aGUgbmV4dCB0ZXN0IGZhaWwsIHNvIGlnbm9y ZSB0aGVtIGhlcmUKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlz X3BhcmFsbGVsLCAiY29tbWl0dGVkIik7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8 MzMzNHwzMzM0KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0 cycpOworCisJIyBUZXN0IHRoZSBzdHJlYW1pbmcgaW4gYmluYXJ5IG1vZGUKKwkkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBf c3ViIFNFVCAoYmluYXJ5ID0gb24pIik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBm cm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKwor CSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0 a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7 CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIg U0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgImNvbW1pdHRlZCIpOworCisJJHJl c3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK KwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5z IGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKworCSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMg b2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1YnNjcmliZXIsCisJIyB1cGRhdGUgcHVibGlz aGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVjdGVkCisJIyB2 YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMg YmVoYXZlCisJIyBwcm9wZXJseSBhZnRlciBhIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4KKwkkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBT RVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIK KwkpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGE6OnRl eHQpIik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJh bGxlbCwgImNvbW1pdHRlZCIpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChleHRyYWN0KGVwb2No IGZyb20gYykgPSA5ODc2NTQzMjEpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIgorCSk7 CisJaXMoJHJlc3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLAorCQknY2hlY2sgZXh0cmEgY29sdW1u cyBjb250YWluIGxvY2FsbHkgY2hhbmdlZCBkYXRhJyk7CisKKwkjIENsZWFudXAgdGhlIHRlc3Qg ZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYg KCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2Rl X3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBt eSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxp c2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2lj YWwnKTsKQEAgLTM3LDYgKzE4MSwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIi KTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hl cl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIg V0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDgyICsxOTcsMjUgQEAgbXkgJHJlc3Vs dCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMg Y29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBJbnRlcmxlYXZlIGEgcGFpciBvZiB0cmFuc2Fj dGlvbnMsIGVhY2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgotbXkgJGluICA9ICcnOwotbXkg JG91dCA9ICcnOwotCi1teSAkdGltZXIgPSBJUEM6OlJ1bjo6dGltZW91dCgkUG9zdGdyZVNRTDo6 VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdCk7Ci0KLW15ICRoID0gJG5vZGVfcHVibGlzaGVy LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0aW1lciwKLQlvbl9l cnJvcl9zdG9wID0+IDApOwotCi0kaW4gLj0gcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBz KGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsK LURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLX07Ci0kaC0+cHVtcF9u YjsKLQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lO OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg1MDAxLCA5OTk5KSBzKGkpOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg YSA+IDUwMDA7Ci1DT01NSVQ7Ci19KTsKLQotJGluIC49IHF7Ci1DT01NSVQ7Ci1ccQotfTsKLSRo LT5maW5pc2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5leHQgdGVzdCBmYWlsLCBzbyBpZ25vcmUg dGhlbSBoZXJlCi0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3Rh YiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLCAnY2hlY2sgZXh0cmEgY29sdW1u cyBjb250YWluIGxvY2FsIGRlZmF1bHRzJyk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNo ZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKIAotIyBUZXN0IHRoZSBzdHJlYW1p bmcgaW4gYmluYXJ5IG1vZGUKLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQgKGJpbmFyeSA9IG9uKSIpOwotCi0j IEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtC IGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJF R0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksICdj aGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUg J3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRv bGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1Qg cGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRh cHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCispOwogCi0jIENoYW5nZSB0aGUgbG9j YWwgdmFsdWVzIG9mIHRoZSBleHRyYSBjb2x1bW5zIG9uIHRoZSBzdWJzY3JpYmVyLAotIyB1cGRh dGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVyIHJldGFpbnMgdGhlIGV4cGVj dGVkCi0jIHZhbHVlcy4gVGhpcyBpcyB0byBlbnN1cmUgdGhhdCBub24tc3RyZWFtaW5nIHRyYW5z YWN0aW9ucyBiZWhhdmUKLSMgcHJvcGVybHkgYWZ0ZXIgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24u CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiVVBEQVRFIHRlc3Rf dGFiIFNFVCBjID0gJ2Vwb2NoJzo6dGltZXN0YW1wdHogKyA5ODc2NTQzMjEgKiBpbnRlcnZhbCAn MXMnIgotKTsKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShhOjp0ZXh0KSIpOworCSJBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGJpbmFyeSA9IG9mZikiKTsKIAotJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKyRub2RlX3B1Ymxpc2hl ci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQg RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91 dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlND UklQVElPTiI7CiAKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChleHRyYWN0KGVwb2NoIGZyb20gYykgPSA5 ODc2NTQzMjEpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIgotKTsKLWlzKCRyZXN1bHQs IHFxKDY2Njd8NjY2N3w2NjY3KSwKLQknY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2Fs bHkgY2hhbmdlZCBkYXRhJyk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2Rl X3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRu b2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxNl9zdHJlYW1fc3VieGFjdC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJl YW1fc3VieGFjdC5wbAppbmRleCBiYzBhOWNkLi5jNWExMGRjIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCkBAIC04LDYgKzgsOTUgQEAgdXNlIFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1 c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5z YWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVs IGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vi c2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkYWN0aW9uKT0gQF87CisJbXkgJHBhcmFs bGVsX21lc3NhZ2UgPSAnJzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkcGFyYWxsZWxf bWVzc2FnZSA9IGpvaW4oIiIsICdzdHJlYW1lZCB0cmFuc2FjdGlvbiBcZCsgd2FzICcsICRhY3Rp b24sICcgdXNpbmcgYW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyJyk7CisKKwkJJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7CisJfQor fQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJl bGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJl IHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwg Y2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9k ZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJbXkgJG9mZnNl dCA9IDA7CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBh cmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3 YXMgYXBwbGllZCB1c2luZyBhbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRv IGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAg dGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9z dWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21l c3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkj IENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5v ZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBl bm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKCAgICAzLCAgNTAwKSBz KGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBz MTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDUwMSwgIDEwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgIDE1MDApIHMoaSk7 CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMzOwor CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1 KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2Qo YSwzKSA9IDA7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwgMjUwMCkgcyhpKTsKKwlV UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisKKwkk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFy YWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgImNvbW1p dHRlZCIpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2NyksCisJCSdj aGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQg ZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAg dGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3Np dHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7 CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hl ciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5u ZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcg PT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzEyNiwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUg dGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAn JHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9O IHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDQxICsxNDIsMjYgQEAg bXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwg ZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBJbnNlcnQsIHVwZGF0ZSBhbmQg ZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcyggICAgMywgIDUw MCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQg czE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDUwMSwgIDEwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAgMTUwMCkgcyhpKTsKLVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDE1MDEsICAyMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK LVNBVkVQT0lOVCBzNDsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwgMjUwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8 MTY2NyksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGluIHN0cmVhbWlu ZyBtb2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCit0ZXN0X3N0 cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsK KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBz dHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0 aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJ T04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hl ci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQg RlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91 dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlND UklQVElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2Ny aWJlciwgJGFwcG5hbWUsIDEpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVi bGlzaGVyLT5zdG9wOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdf c3RyZWFtX2RkbC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBs CmluZGV4IDg2NmYxNTEuLjBiZWNhMTEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxN19zdHJlYW1fZGRsLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19z dHJlYW1fZGRsLnBsCkBAIC04LDYgKzgsMTM5IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMg Q2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVk IHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIg Y2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRp c19wYXJhbGxlbCwgJGFjdGlvbik9IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdlID0gJyc7CisK KwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJHBhcmFsbGVsX21lc3NhZ2UgPSBqb2luKCIiLCAn c3RyZWFtZWQgdHJhbnNhY3Rpb24gXGQrIHdhcyAnLCAkYWN0aW9uLCAnIHVzaW5nIGFuIHBhcmFs bGVsIGFwcGx5IHdvcmtlcicpOworCisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhx ci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBh bGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmci CisjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0 cmVhbWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3Ry ZWFtaW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5h bWUsICRpc19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBhIHNtYWxs IChub24tc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBWQUxVRVMgKDMsIG1kNSgzOjp0ZXh0KSk7CisJQUxURVIgVEFCTEUgdGVzdF90 YWIgQUREIENPTFVNTiBjIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgVkFMVUVTICg0LCBtZDUoNDo6dGV4dCksIC00KTsKKwlDT01NSVQ7CisJfSk7CisKKwkjIElm ICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVl ZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2lu ZyBhbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBE RUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVy Ym9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBl bmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcx Iik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJz Y3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+ bG9nZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQg RE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVH SU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoNSwgMTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBB REQgQ09MVU1OIGQgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEs IDIwMDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJIyBhIHNtYWxsIChub24tc3RyZWFtZWQp IHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxV RVMgKDIwMDEsIG1kNSgyMDAxOjp0ZXh0KSwgLTIwMDEsIDIqMjAwMSk7CisJQUxURVIgVEFCTEUg dGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8g dGVzdF90YWIgVkFMVUVTICgyMDAyLCBtZDUoMjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0z KjIwMDIpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwg JG9mZnNldCwgJGlzX3BhcmFsbGVsLCAiY29tbWl0dGVkIik7CisKKwlteSAkcmVzdWx0ID0KKwkg ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpIEZST00gdGVzdF90YWIiKTsKKwlpcygk cmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAwMnwxKSwKKwkJJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0 byBzdWJzY3JpYmVyIGluIHN0cmVhbWluZyBtb2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4g bG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20g bm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBB IGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTC4gT25lIG9mIHRo ZSBEREwgaXMgcGVyZm9ybWVkCisJIyBhZnRlciBETUwgdG8gZW5zdXJlIHRoYXQgd2UgaW52YWxp ZGF0ZSB0aGUgc2NoZW1hIHNlbnQgZm9yIHRlc3RfdGFiIHNvIHRoYXQKKwkjIHRoZSBuZXh0IHRy YW5zYWN0aW9uIGhhcyB0byBzZW5kIHRoZSBzY2hlbWEgYWdhaW4uCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRl X3NlcmllcygyMDAzLDUwMDApIHMoaSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVN TiBmIElOVDsKKwlDT01NSVQ7CisJfSk7CisKKwkjIEEgc21hbGwgdHJhbnNhY3Rpb24gdGhhdCB3 b24ndCBnZXQgc3RyZWFtZWQuIFRoaXMgaXMganVzdCB0byBlbnN1cmUgdGhhdCB3ZQorCSMgc2Vu ZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJlZmxlY3QgdGhlIGxhc3QgY29sdW1uIGFkZGVkIGluIHRo ZSBwcmV2aW91cyB0ZXN0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdy ZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCksIC1pLCAyKmksIC0zKmksIDQqaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUp IHMoaSk7CisJQ09NTUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAk b2Zmc2V0LCAkaXNfcGFyYWxsZWwsICJjb21taXR0ZWQiKTsKKworCSRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJPTSB0ZXN0X3RhYiIKKwkpOwor CWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSksCisJCSdjaGVjayBkYXRhIHdh cyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90aCBzdHJlYW1pbmcgYW5kIG5vbi1zdHJlYW1p bmcgdHJhbnNhY3Rpb25zJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT0xVTU4g YywgRFJPUCBDT0xVTU4gZCwgRFJPUCBDT0xVTU4gZSwgRFJPUCBDT0xVTU4gZjsKKwl9KTsKKwkk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNldCB0 aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2Ny aWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdl cyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KK30KKwogIyBD cmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxs b3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiArMTcwLDEwIEBAICRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBf cHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcg bW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1 YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFt ZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDks NzcgKzE4NiwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwfDApLCAn Y2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi0jIGEgc21h bGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8g dGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIg QUREIENPTFVNTiBjIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7Ci1DT01NSVQ7Ci19KTsKLQotIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUsIDEwMDApIHMo aSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOwotU0FWRVBPSU5UIHMx OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAyMDAwKSBzKGkpOwotQ09NTUlUOwotfSk7Ci0KLSMg YSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0kbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDEsIG1kNSgyMDAxOjp0ZXh0KSwgLTIwMDEsIDIqMjAw MSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOwotU0FWRVBPSU5UIHMx OwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAyLCBtZDUoMjAwMjo6dGV4dCksIC0y MDAyLCAyKjIwMDIsIC0zKjIwMDIpOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCksIGNvdW50KGUpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDIwMDJ8 MTk5OXwxMDAyfDEpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBz dHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwot KTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFw cG5hbWUsIDApOwogCi0jIEEgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBh bmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJmb3JtZWQKLSMgYWZ0ZXIgRE1MIHRvIGVuc3Vy ZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIHNjaGVtYSBzZW50IGZvciB0ZXN0X3RhYiBzbyB0aGF0 Ci0jIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRoZSBzY2hlbWEgYWdhaW4uCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFi IEFERCBDT0xVTU4gZiBJTlQ7Ci1DT01NSVQ7Ci19KTsKLQotIyBBIHNtYWxsIHRyYW5zYWN0aW9u IHRoYXQgd29uJ3QgZ2V0IHN0cmVhbWVkLiBUaGlzIGlzIGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UK LSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJlZmxlY3QgdGhlIGxhc3QgY29sdW1uIGFkZGVk IGluIHRoZSBwcmV2aW91cyB0ZXN0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSwgLWksIDIqaSwgLTMqaSwgNCppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTAw NSkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3Vu dChlKSwgY291bnQoZikgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoNTAwNXw1MDAy fDQwMDV8MzAwNHw1KSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgZm9y IGJvdGggc3RyZWFtaW5nIGFuZCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucycKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1v ZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215 ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxF Q1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0g JyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCiskbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIg U0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVl cnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3Rh dF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3Rh dGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2Fp dGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwor Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBu YW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3Rv cDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4 YWN0X2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0 X2Fib3J0LnBsCmluZGV4IDU1MWYxNmQuLjEyZjY5M2IgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKQEAgLTgsNiArOCwxNDYg QEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVh bWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5 IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAo JG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkYWN0aW9uKT0gQF87CisJ bXkgJHBhcmFsbGVsX21lc3NhZ2UgPSAnJzsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkk cGFyYWxsZWxfbWVzc2FnZSA9IGpvaW4oIiIsICdzdHJlYW1lZCB0cmFuc2FjdGlvbiBcZCsgd2Fz ICcsICRhY3Rpb24sICcgdXNpbmcgYW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyJyk7CisKKwkJJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNl dCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hp Y2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNv ZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9 cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJ bXkgJG9mZnNldCA9IDA7CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZp ZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0cmFu c2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJIyBX ZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNv IGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJewor CQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJs b2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsK Kwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBz KGkpOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOworCVNBVkVQT0lO VCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxNTAxLDIwMDApIHMoaSk7CisJUk9MTEJBQ0sgVE8gczI7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLDI1MDAp IHMoaSk7CisJUk9MTEJBQ0sgVE8gczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyNTAxLDMwMDApIHMoaSk7CisJU0FW RVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzNTsKKwlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDM1MDEsNDAwMCkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRu b2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgImNvbW1pdHRlZCIpOworCisJ bXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1 bHQsIHFxKDIwMDB8MCksCisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxl Y3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVs dHMnCisJKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3RyZWFt ZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyCisJ IyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK KwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDQwMDEsNDUwMCkgcyhpKTsKKwlT QVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDU1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMyOwor CUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDcwMDEs NzUwMCkgcyhpKTsKKwlSRUxFQVNFIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODAwMSw4NTAwKSBzKGkpOworCVJP TExCQUNLIFRPIHMxOworCUNPTU1JVDsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2Ny aWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAiY29tbWl0dGVkIik7CisKKwkkcmVzdWx0ID0K KwkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjUwMHww KSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNj cmliZXInKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3RyZWFt ZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9sbGJhY2sKKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDg1MDEsOTAwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5MDAxLDk1MDAp IHMoaSk7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkgcyhpKTsKKwlST0xM QkFDSzsKKwl9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlz X3BhcmFsbGVsLCAiYWJvcnRlZCIpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJP TSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksICdjaGVjayByb2xsYmFjayB3 YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRh CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIChhID4gMikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlz X3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVz cWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+cmVsb2FkOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRu b2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVy Jyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcp OwpAQCAtMzYsNiArMTc2LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwog CiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nv bm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRI IChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDgsODEgKzE5MiwyNSBAQCBteSAkcmVzdWx0ID0K IAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0 LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicp OwogCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9M TEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotQkVH SU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVz dF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAw MCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOwotU0FWRVBP SU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMjAwMSwyNTAwKSBzKGkpOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAwMCkg cyhpKTsKLVNBVkVQT0lOVCBzNDsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAwKSBzKGkpOwotU0FWRVBPSU5U IHM1OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygzNTAxLDQwMDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDIwMDB8MCksCi0JJ2NoZWNr IHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4 dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2Rl ICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAk b2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNU IHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICck YXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotIyBsYXJnZSAoc3RyZWFt ZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgb3V0IG9mIG9yZGVyCi0j IHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0J J3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7Ci1TQVZFUE9J TlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo NjAwMSw2NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDApIHMoaSk7 Ci1SRUxFQVNFIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDApIHMoaSk7Ci1ST0xMQkFDSyBUTyBzMTsK LUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoMjUwMHwwKSwKLQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZs ZWN0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24g d2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjawotJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4NTAxLDkwMDApIHMoaSk7 Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsK LUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoOTUwMSwxMDAwMCkgcyhpKTsKLVJPTExCQUNLOwotfSk7Ci0KLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyNTAwfDApLCAnY2hlY2sgcm9s bGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7Ciskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0 cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50 aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBs aWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBm b3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0 X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAx KTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxf YWJvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRs X2Fib3J0LnBsCmluZGV4IDRkN2RhODIuLjkwYTc3ZTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKKysrIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbApAQCAtOSw2 ICs5LDkyIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6 OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRo ZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBv cnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7 CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJGFjdGlvbik9 IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdlID0gJyc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQor CXsKKwkJJHBhcmFsbGVsX21lc3NhZ2UgPSBqb2luKCIiLCAnc3RyZWFtZWQgdHJhbnNhY3Rpb24g XGQrIHdhcyAnLCAkYWN0aW9uLCAnIHVzaW5nIGFuIHBhcmFsbGVsIGFwcGx5IHdvcmtlcicpOwor CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8s ICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0 ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0aGUg c2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMgc3Ry ZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBA XzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMg c3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFt ZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYW4gcGFyYWxsZWwgYXBwbHkgd29ya2Vy LgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0 aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVs KQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics CisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5y ZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJ JG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGxhcmdlIChzdHJl YW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LDUwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOworCVNB VkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp LCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0 ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEwMDEsMTUwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUg SU5UOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkg cyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOworCVJPTExCQUNLIFRP IHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQ09NTUlUOworCX0pOworCisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFs bGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICJjb21taXR0 ZWQiKTsKKworCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsK KwlpcygkcmVzdWx0LCBxcSgxMDAwfDUwMCksCisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9p bnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4g bG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBj OworCX0pOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisK KwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkk bm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2df bWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJ fQorfQorCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hl ci0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxMjMsMTAg QEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJ Q0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3Rh cF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5n IHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQ VElPTiB0YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9u YW1lPSRhcHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIK ICk7CkBAIC00OSwzNSArMTM5LDI2IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MCksICdjaGVjayBp bml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMgbGFyZ2UgKHN0cmVh bWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKLSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMyw1MDAp IHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGMgSU5UOwotU0FWRVBPSU5U IHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBB REQgQ09MVU1OIGQgSU5UOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLDE1 MDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUgSU5UOwotU0FWRVBP SU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWks IDIqaSwgLTMqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7Ci1BTFRFUiBU QUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCBpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDUwMSwxMDAwKSBzKGkpOwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRl c3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgxMDAwfDUwMCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRv IHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBn X3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcg PSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24g V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5 IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1p bmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisKICRu b2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKaW5kZXggN2E3OTdm My4uOTcwZmQ4NSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3Bo YXNlX2Nhc2NhZGUucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNl X2Nhc2NhZGUucGwKQEAgLTExLDYgKzExLDI0MCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisj IENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRl ZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3Vi IGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk c3RyZWFtaW5nX21vZGUsICRhY3Rpb24pPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9ICcn OworCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxsZWwnKQorCXsKKwkJJHBhcmFsbGVs X21lc3NhZ2UgPSBqb2luKCIiLCAnc3RyZWFtZWQgdHJhbnNhY3Rpb24gXGQrIHdhcyAnLCAkYWN0 aW9uLCAnIHVzaW5nIGFuIHBhcmFsbGVsIGFwcGx5IHdvcmtlcicpOworCisJCSRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0K K30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSBy ZWxhdGVkIHRvICJzdHJlYW1pbmciIHBhcmFtZXRlcgorIyBzbyB0aGUgc2FtZSBjb2RlIGNhbiBi ZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQgc3RyZWFtaW5nPXBhcmFsbGVsCisj IGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRub2RlX0EsICRub2RlX0IsICRu b2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICRzdHJlYW1pbmdfbW9kZSkgPQorCSAgQF87 CisKKwlteSAkb2Zmc2V0X0IgPSAwOworCW15ICRvZmZzZXRfQyA9IDA7CisKKwlteSAkb2xkcGlk X0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBw bmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKwlteSAkb2xkcGlkX0MgPSAkbm9k ZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0 YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBB TkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKKworCSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlv biBzdHJlYW1pbmcgbW9kZQorCisJJG5vZGVfQi0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAi CisJCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3Ry ZWFtaW5nX21vZGUpOyIpOworCSRub2RlX0MtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgor CQlBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1Yl9DCisJCVNFVCAoc3RyZWFtaW5nID0gJHN0cmVh bWluZ19tb2RlKSIpOworCisJIyBXYWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlh bGl6YXRpb24KKworCSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsICIK KwkJU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCisJCVdI RVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgorCSkgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVz dGFydCI7CisJJG5vZGVfQi0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlT RUxFQ1QgcGlkICE9ICRvbGRwaWRfQyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0 IjsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBB UkUgLyBDT01NSVQgUFJFUEFSRUQuCisJIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRy YW5zYWN0aW9uLgorCSMgMi4gVGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0 IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0 LgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgSWYgInN0cmVhbWluZyIg cGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCisJ IyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCB1c2luZyBhbiBwYXJhbGxl bCBhcHBseSB3b3JrZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1l c3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlm ICgkc3RyZWFtaW5nX21vZGUgZXEgJ3BhcmFsbGVsJykKKwl7CisJCSRub2RlX0ItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkk bm9kZV9CLT5yZWxvYWQ7CisKKwkJJG5vZGVfQy0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX0MtPnJlbG9hZDsKKwl9 CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0X0Ig PSAtcyAkbm9kZV9CLT5sb2dmaWxlOworCSRvZmZzZXRfQyA9IC1zICRub2RlX0MtPmxvZ2ZpbGU7 CisKKwkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRo ZSA2NGtCIGxpbWl0LgorCSMgVGhlbiAyUEMgUFJFUEFSRQorCSRub2RlX0EtPnNhZmVfcHNxbCgK KwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJ VVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVM RVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNU SU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisK KwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfQiwgJG9mZnNldF9CLCAkc3RyZWFtaW5nX21vZGUs ICJwcmVwYXJlZCIpOworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9DLCAkb2Zmc2V0X0MsICRz dHJlYW1pbmdfbW9kZSwgInByZXBhcmVkIik7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBz dGF0ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCisJbXkgJHJlc3VsdCA9CisJICAkbm9k ZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJl cGFyZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vi c2NyaWJlciBDJyk7CisKKwkjIDJQQyBDT01NSVQKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVf QS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0 ZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00g dGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGlu c2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBj b2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQp LAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBD LCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIGNoZWNr IHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3Vs dCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5v ZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZF UE9JTlQuCisJIyAwLiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiBy b3dzLgorCSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJvdy4KKwkjIDIuIFJlY29yZCBhIFNBVkVQT0lO VC4KKwkjIDMuIERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgNC4gRG8gcm9sbGJhY2sg dG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJlYW1lZCBpbnNlcnRzLgorCSMgNS4gVGhlbiBD T01NSVQgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBp cyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3MgKD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVw IDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0 ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkK Kwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIGEgPiAyOyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24u CisJJG9mZnNldF9CID0gLXMgJG5vZGVfQi0+bG9nZmlsZTsKKwkkb2Zmc2V0X0MgPSAtcyAkbm9k ZV9DLT5sb2dmaWxlOworCisJIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRP IFNBVkVQT0lOVAorCSRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlCRUdJ TjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7CisJCVNB VkVQT0lOVCBzcF9pbm5lcjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVz dF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9p bm5lcjsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAnb3V0ZXInOworCQkiKTsKKworCSRub2RlX0Et PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZV9DKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9CLCAkb2Zmc2V0X0Is ICRzdHJlYW1pbmdfbW9kZSwgInByZXBhcmVkIik7CisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2Rl X0MsICRvZmZzZXRfQywgJHN0cmVhbWluZ19tb2RlLCAicHJlcGFyZWQiKTsKKworCSMgY2hlY2sg dGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0 ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2Fj dGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2Rl X0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAorCSRub2RlX0EtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICdvdXRlcic7Iik7CisKKwkkbm9kZV9B LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBlbmRl ZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlz KCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBCJyk7 CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDAp LCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIGNoZWNrIGlu c2VydHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJlcihzKS4KKwkjIEFsbCB0aGUgc3RyZWFtZWQg ZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNrLgorCSMg KDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0dGVkLgorCSRyZXN1bHQgPSAkbm9kZV9C LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi IHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0 dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVf Qi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsi KTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1 YnNjcmliZXIgQicpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsK KwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNj cmliZXIgQycpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwg J1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworCisJIyBDbGVh bnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVU RSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsK KworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAn cGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfQi0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZics ICJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9CLT5yZWxvYWQ7CisKKwkJ JG5vZGVfQy0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2Vz ID0gd2FybmluZyIpOworCQkkbm9kZV9DLT5yZWxvYWQ7CisJfQorfQorCiAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNldHVwIGEgY2FzY2FkZSBvZiBwdWIvc3ViIG5vZGVzLgog IyBub2RlX0EgLT4gbm9kZV9CIC0+IG5vZGVfQwpAQCAtMjYwLDE2MCArNDk0LDE1IEBAIGlzKCRy ZXN1bHQsIHFxKDIxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIg QycpOwogIyAyUEMgKyBTVFJFQU1JTkcgVEVTVFMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK LW15ICRvbGRwaWRfQiA9ICRub2RlX0EtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VM RUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1l ID0gJyRhcHBuYW1lX0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOwotbXkgJG9sZHBpZF9D ID0gJG5vZGVfQi0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlTRUxFQ1QgcGlkIEZST00g cGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVf QycgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Iik7Ci0KLSMgU2V0dXAgbG9naWNhbCByZXBsaWNh dGlvbiAoc3RyZWFtaW5nID0gb24pCi0KLSRub2RlX0ItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMn LCAiCi0JQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQgotCVNFVCAoc3RyZWFtaW5nID0gb24p OyIpOwotJG5vZGVfQy0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlBTFRFUiBTVUJTQ1JJ UFRJT04gdGFwX3N1Yl9DCi0JU0VUIChzdHJlYW1pbmcgPSBvbikiKTsKLQotIyBXYWl0IGZvciBz dWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KLQotJG5vZGVfQS0+cG9sbF9xdWVy eV91bnRpbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0IgRlJPTSBw Z19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9C JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCi0pIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdh aXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQiOwotJG5vZGVfQi0+cG9sbF9xdWVyeV91bnRpbCgK LQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCAhPSAkb2xkcGlkX0MgRlJPTSBwZ19zdGF0X3Jl cGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3Rh dGUgPSAnc3RyZWFtaW5nJzsiCi0pIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9y IGFwcGx5IHRvIHJlc3RhcnQiOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0j IFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERhdGEgaXMgc3RyZWFt ZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgot IwotIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyKHMpIGFmdGVy IHRoZSBjb21taXQuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgSW5zZXJ0 LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQu Ci0jIFRoZW4gMlBDIFBSRVBBUkUKLSRub2RlX0EtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx ewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3Rh Yic7fSk7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9C LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwordGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5v ZGVfQywgJGFwcG5hbWVfQiwgJGFwcG5hbWVfQywgJ29uJyk7CiAKLSMgY2hlY2sgdGhlIHRyYW5z YWN0aW9uIHN0YXRlIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAk bm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwot aXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVy IEMnKTsKLQotIyAyUEMgQ09NTUlUCi0kbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNP TU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9BLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZV9DKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0ZWQgb24gc3Vic2Ny aWJlcihzKQotJHJlc3VsdCA9ICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1p cygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhh dmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQiwgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2Nh bCBkZWZhdWx0cycKLSk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBi eSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBhbmQgZXh0cmEgY29sdW1ucyBo YXZlIGxvY2FsIGRlZmF1bHRzJwotKTsKLQotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUg aXMgZW5kZWQgb24gc3Vic2NyaWJlcihzKQotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3Jp YmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEo MCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSB3aXRoIGEgbmVz dGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVC4KLSMgMC4gQ2xlYW51cCBmcm9tIHByZXZpb3VzIHRl c3QgbGVhdmluZyBvbmx5IDIgcm93cy4KLSMgMS4gSW5zZXJ0IG9uZSBtb3JlIHJvdy4KLSMgMi4g UmVjb3JkIGEgU0FWRVBPSU5ULgotIyAzLiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KLSMg NC4gRG8gcm9sbGJhY2sgdG8gU0FWRVBPSU5UIHByaW9yIHRvIHRoZSBzdHJlYW1lZCBpbnNlcnRz LgotIyA1LiBUaGVuIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IGRhdGEgYWZ0ZXIgdGhl IFNBVkVQT0lOVCBpcyBhYm9ydGVkIGxlYXZpbmcgb25seSAzIHJvd3MgKD0gMiBvcmlnaW5hbCAr IDEgZnJvbSBzdGVwIDEpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZp cnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKGRlbGV0ZSB3aWxsIGJlIHJl cGxpY2F0ZWQpCi0kbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIGEgPiAyOyIpOwotCi0jIDJQQyBQUkVQQVJFIHdpdGggYSBuZXN0ZWQgUk9M TEJBQ0sgVE8gU0FWRVBPSU5UCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgot CUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OSwgJ2Zvb2JhcicpOwot CVNBVkVQT0lOVCBzcF9pbm5lcjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUk9MTEJBQ0sgVE8gU0FWRVBPSU5UIHNwX2lu bmVyOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ291dGVyJzsKLQkiKTsKLQotJG5vZGVfQS0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVkIG9uIHN1 YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1 bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlv biBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyAyUEMgQ09NTUlUCi0kbm9kZV9B LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAnb3V0ZXInOyIpOwotCi0k bm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZV9DKTsKLQotIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMg ZW5kZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9Ci0gICRub2RlX0ItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygk cmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIgQicpOwot JHJlc3VsdCA9Ci0gICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5z YWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIGNoZWNrIGluc2VydHMgYXJl IHZpc2libGUgYXQgc3Vic2NyaWJlcihzKS4KLSMgQWxsIHRoZSBzdHJlYW1lZCBkYXRhIChwcmlv ciB0byB0aGUgU0FWRVBPSU5UKSBzaG91bGQgYmUgcm9sbGVkIGJhY2suCi0jICg5OTk5LCAnZm9v YmFyJykgc2hvdWxkIGJlIGNvbW1pdHRlZC4KLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIgd2hlcmUgYiA9ICdm b29iYXInOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2Vu dCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiOyIpOwotaXMoJHJlc3VsdCwgcXEo MyksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1 bHQgPSAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZS T00gdGVzdF90YWIgd2hlcmUgYiA9ICdmb29iYXInOyIpOwotaXMoJHJlc3VsdCwgcXEoMSksICdS b3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKLSRyZXN1bHQgPSAk bm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiOyIpOwotaXMoJHJlc3VsdCwgcXEoMyksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBv biBzdWJzY3JpYmVyIEMnKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0Is ICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdwYXJhbGxlbCcpOwogCiAjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cApkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbCBiL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKaW5kZXggOWI0NTQx MC4uYTQ1Nzk1NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3Bo YXNlX3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vf c3RyZWFtLnBsCkBAIC04LDYgKzgsMzA5IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hl Y2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1 Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hl Y2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCwgJGFjdGlvbik9IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdlID0gJyc7CisKKwlp ZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJHBhcmFsbGVsX21lc3NhZ2UgPSBqb2luKCIiLCAnc3Ry ZWFtZWQgdHJhbnNhY3Rpb24gXGQrIHdhcyAnLCAkYWN0aW9uLCAnIHVzaW5nIGFuIHBhcmFsbGVs IGFwcGx5IHdvcmtlcicpOworCisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8k cGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwg dGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisj IHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVh bWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFt aW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs ICRpc19wYXJhbGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJF RC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCisJIyAyLiBU aGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGlj YXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVj aWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJlYW1lZCB0 cmFuc2FjdGlvbiB3YXMgcHJlcGFyZWQgdXNpbmcgYW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgor CSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0 LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQor CXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ CQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxv YWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9m ZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGNoZWNrIHRoYXQgMlBD IGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVs ZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywg NTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQ UkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9n KCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgInByZXBhcmVkIik7CisK KwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2Ny aWJlcgorCW15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwor CisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3Rh Yic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJ JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VM RUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwor CWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBD IGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4g bG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0 czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyJyk7CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0 IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVk IGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAy LiBEYXRhIGlzIHN0cmVhbWVkIHVzaW5nIDJQQy4KKwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVk LgorCSMKKwkjIEV4cGVjdCBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5h bCAyIHJvd3MuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwg ZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJv bSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkj IFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhl IDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3Jlcycs IHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3Rh YiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVw YXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk aXNfcGFyYWxsZWwsICJwcmVwYXJlZCIpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlz IGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHBy ZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRl ZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJST0xMQkFDSyBQ UkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBh Ym9ydGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMnwyfDIpLAorCQknUm93cyBp bnNlcnRlZCBieSAyUEMgYXJlIHJvbGxlZCBiYWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFs IDIgcm93cycKKwkpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmli ZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIENoZWNrIHRoYXQg MlBDIENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQu CisJIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0 aGUgNjRrQiBsaW1pdC4KKwkjIDIuIFRoZW4gc2VydmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMg dHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFy dGVkIHRoZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KKwkjCisJIyBFeHBlY3Qg YWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1p dC4KKwkjIE5vdGU6IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3Rh cnQuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBDaGVjayB0aGUgc3Vi c2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXIt PmxvZ2ZpbGU7CisKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywg cXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFi IFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBh cmVkX3RhYic7fSk7CisKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKwkk bm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOworCisJJG5vZGVfcHVibGlzaGVyLT5z dGFydDsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICJwcmVwYXJlZCIpOworCisJ IyBjb21taXQgcG9zdCB0aGUgcmVzdGFydAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKwkk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayBp bnNlcnRzIGFyZSB2aXNpYmxlCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJ J1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBl eHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQg YmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRv IDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBp cyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUg d2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgUk9MTEJBQ0sgUFJF UEFSRUQuCisJIworCSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25s eSAzIHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKKwkjICh0aGUgb3JpZ2luYWwgMiArIGluc2VydGVk IDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0 ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQorCSRub2Rl X3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93 IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBUaGVu IGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtC IGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxewor CQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3Bh cmFsbGVsLCAicHJlcGFyZWQiKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBw cmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFy ZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5vdyB3 ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQQyB0 cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0 IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTksICdm b29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0 X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vi c2NyaWJlciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQQyBzdGls bCB3YXMgcmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8MyksCisJCSdjaGVjayB0aGUg b3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKwkkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5z YWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUg Q09NTUlUIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3 aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJlYW1l ZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMg YWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgorCSMK KwkjIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3JpYmVy CisJIyAodGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiBy b3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJIyBD aGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0 ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUw MDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICJwcmVwYXJlZCIpOworCisJ IyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmli ZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMg SW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMg dHJhbnNhY3Rpb24pCisJIyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJv dyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFy eSBrZXkKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJU IElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7CisKKwkjIDJQQyB0cmFu c2FjdGlvbiBnZXRzIGNvbW1pdHRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiks IGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwg cXEoMzMzNXwzMzM1fDMzMzUpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMg b3V0c2lkZSBpbnNlcnQpIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBj b2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9N IHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24g aXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRh CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9N IHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNf cGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNx bC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJz Y3JpYmVyLT5yZWxvYWQ7CisJfQorfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAjIFNldHVwCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00OCw2ICszNTEs MTAgQEAgJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBV QkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0g J3RhcF9zdWInOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVz aW5nIHN0cmVhbWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj CiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgIgogCUNSRUFURSBT VUJTQ1JJUFRJT04gdGFwX3N1YgpAQCAtNjQsMjM2ICszNzEsMzAgQEAgbXkgJHR3b3BoYXNlX3F1 ZXJ5ID0KICRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHR3 b3BoYXNlX3F1ZXJ5KQogICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJz Y3JpYmVyIHRvIGVuYWJsZSB0d29waGFzZSI7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKICMgQ2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcgotIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBj b3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdj aGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQ QVJFRC4KLSMgMS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4g VGhlbiBkbyBjb21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNh dGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9z dWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CiAKLSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93 cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERB VEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0 ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBz dGF0ZSBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIp OwotaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3Jp YmVyJyk7Ci0KLSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFy ZWRfdGFiJzsiKTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVy Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK LWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMg aGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj IFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBX SEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5n JzsiCiApOwotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1 bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKLQot IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9M TEJBQ0sgUFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hp Y2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1 c2luZyAyUEMuCi0jIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgotIwotIyBFeHBlY3QgZGF0YSBy b2xscyBiYWNrIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgotIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZv ciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBU aGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2 NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsK LQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBi ID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWIn O30pOwogCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0j IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJl cgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFx KDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0 cmFuc2FjdGlvbiBnZXRzIGFib3J0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCi0JIlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhh dCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMnwy fDIpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25s eSB0aGUgb3JpZ2luYWwgMiByb3dzJyk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRf eGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24g c3Vic2NyaWJlcicpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENoZWNr IHRoYXQgMlBDIENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJl c3RhcnQuCi0jIDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhj ZWVkIHRoZSA2NGtCIGxpbWl0LgotIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUg MlBDIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVz dGFydGVkIHRoZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMKLSMgRXhwZWN0 IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21t aXQuCi0jIE5vdGU6IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3Rh cnQuCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBz KGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJB TlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfc3Vic2NyaWJlci0+c3Rv cCgnaW1tZWRpYXRlJyk7Ci0kbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotCi0k bm9kZV9wdWJsaXNoZXItPnN0YXJ0OwotJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7Ci0KLSMgY29t bWl0IHBvc3QgdGhlIHJlc3RhcnQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayBpbnNlcnRzIGFy ZSB2aXNpYmxlCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRl ZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMg Y29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJBQ0sg UFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJl IHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAy UEMuCi0jIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUg UFJFUEFSRS4KLSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgotIwotIyBFeHBlY3Qg dGhlIDJQQyBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0aGUgc3Vic2Ny aWJlcgotIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiBy b3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBp bnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBs aW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVH SU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1k NShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9k KGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsK LQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVj ayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwg J3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBk aWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlv bikKLSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28g bWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5Ci0kbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBh Ym9ydGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFD SyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMg YWJvcnRlZCBvbiBzdWJzY3JpYmVyLAotIyBidXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9m IHRoZSAyUEMgc3RpbGwgd2FzIHJlcGxpY2F0ZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoM3wzfDMpLCAnY2hl Y2sgdGhlIG91dHNpZGUgaW5zZXJ0IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwotCi0kcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0 cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwotIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9y ZSBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mg d2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1l ZCB1c2luZyAyUEMuCi0jIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBh ZnRlciB0aGUgUFJFUEFSRS4KLSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMg RXhwZWN0IDJQQyBkYXRhICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKLSMg KHRoZSAzMzM0ICsgaW5zZXJ0ZWQgMSA9IDMzMzUpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdp bGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwg dXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0Lgot JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdI RVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9 IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9k ZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQg dHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9 ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNh Y3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIEluc2VydCBhIGRpZmZlcmVu dCByZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQotIyBO b3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1 cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKLSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVF UyAoOTk5OTksICdmb29iYXInKSIpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRl ZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBB UkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVs KSIpOwogCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmli ZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIp OwotaXMoJHJlc3VsdCwgcXEoMzMzNXwzMzM1fDMzMzUpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQ QyAoYXMgd2VsbCBhcyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJl ciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Ciskbm9kZV9w dWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAk b2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0g JyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJU aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2lu ZyBTVUJTQ1JJUFRJT04iOwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIp OwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2Ny aWJlcicpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgMSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hl Y2sgYWxsIHRoZSBjbGVhbnVwCi0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_006_OS0PR01MB5716546863340CA19EC5F8C394789OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v26-0003-Add-some-checks-before-using-parallel-apply-work.patch" Content-Description: v26-0003-Add-some-checks-before-using-parallel-apply-work.patch Content-Disposition: attachment; filename="v26-0003-Add-some-checks-before-using-parallel-apply-work.patch"; size=52502; creation-date="Wed, 31 Aug 2022 09:46:00 GMT"; modification-date="Wed, 31 Aug 2022 09:55:43 GMT" Content-Transfer-Encoding: base64 RnJvbSAyMTM1OTBhNjY0ZTM0YTM0OTY1NDY1NjYyZDU1ZTY3MzdhZjkwZDM3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMTAgQXVnIDIwMjIgMjA6Mzc6MjIgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyNiAzLzVdIEFkZCBzb21lIGNoZWNrcyBiZWZvcmUgdXNpbmcgcGFyYWxsZWwgYXBwbHkgd29y a2VyIHRvCiBhcHBseSBjaGFuZ2VzCgpzdHJlYW1pbmc9cGFyYWxsZWwgbW9kZSBoYXMgdGhyZWUg cmVxdWlyZW1lbnRzOgoxKSBUaGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgcmVsYXRpb24gb24gdGhl IHN1YnNjcmliZXItc2lkZSBzaG91bGQgYWxzbyBiZSB0aGUKdW5pcXVlIGNvbHVtbiBvbiB0aGUg cHVibGlzaGVyLXNpZGU7CjIpIFRoZXJlIGNhbm5vdCBiZSBhbnkgbm9uLWltbXV0YWJsZSBmdW5j dGlvbnMgdXNlZCBieSB0aGUgc3Vic2NyaWJlci1zaWRlCnJlcGxpY2F0ZWQgdGFibGUuIExvb2sg Zm9yIGZ1bmN0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHBsYWNlczoKKiBhLiBUcmlnZ2VyIGZ1bmN0 aW9ucwoqIGIuIENvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb25zIGFuZCBkb21haW4gY29u c3RyYWludHMKKiBjLiBDb25zdHJhaW50IGV4cHJlc3Npb25zCjMpIFRoZSBmb3JlaWduIGtleXMg YXJlIG5vdCBhbGxvd2VkLgpJdCBpcyBiZXR0ZXIgdG8gb25seSBjaGVjayB0aGUgZm9yZWlnbiBr ZXkgd2hlbiBpdCBpcyBkZXRlY3RlZCB0aGF0IHRoZQpwdWJsaXNoZXIgZG9lcyBub3QgaGF2ZSB0 aGUgZm9yZWlnbiBrZXkgYW5kIHRoZSBzdWJzY3JpYmVyIGRvZXMuIEJ1dCB0aGlzCnJlcXVpcmVz IHRoZSBwdWJsaXNoZXIgdG8gc2VuZCBtb3JlIGluZm9ybWF0aW9uLiBJbiBhZGRpdGlvbiwgc2lu Y2UgZm9yZWlnbiBrZXkKZG9lcyBub3QgdGFrZSBlZmZlY3QgaW4gdGhlIHN1YnNjcmliZXIncyBh cHBseSB3b3JrZXIgYnkgZGVmYXVsdCwgaXQgc2VlbXMgdGhhdApmb3JlaWduIGtleSBkb2VzIG5v dCBoaXQgdGhpcyBFUlJPUiBmcmVxdWVudGx5LiBTbywgb25seSBwZXJmb3JtIGEgc2ltcGxlIGNo ZWNrCmJhc2VkIG9uIHRoZSBzdWJzY3JpYmVyIHNjaGVtYS4KCldpdGhvdXQgdGhlc2Ugc2FmZXR5 IGNoZWNrcywgdGhlIGZvbGxvd2luZyBzY2VuYXJpbyBtYXkgb2NjdXI6ClRoZSBwYXJhbGxlbCBh cHBseSB3b3JrZXIgbG9ja3MgYSByb3cgd2hlbiBwcm9jZXNzaW5nIGEgc3RyZWFtaW5nIHRyYW5z YWN0aW9uLAphZnRlciB0aGF0IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRyaWVzIHRvIGxvY2sg dGhlIHNhbWUgcm93IHdoZW4gcHJvY2Vzc2luZwphbm90aGVyIG5vbi1zdHJlYW1lZCB0cmFuc2Fj dGlvbi4gQXQgdGhpcyB0aW1lLCB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciB3YWl0cwpmb3IgdGhl IHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBjb21wbGV0ZSBhbmQgdGhlIGxvY2sgdG8gYmUgcmVs ZWFzZWQsIGl0IHdvbid0CnNlbmQgc3Vic2VxdWVudCBkYXRhIG9mIHRoZSBzdHJlYW1pbmcgdHJh bnNhY3Rpb24gdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcjsKdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciB3YWl0cyB0byByZWNlaXZlIHRoZSByZXN0IG9mIHN0cmVhbWluZyB0cmFuc2FjdGlv bgphbmQgY2FuJ3QgZmluaXNoIHRoaXMgdHJhbnNhY3Rpb24uIE5vdyBhIGRlYWRsb2NrIGhhcyBv Y2N1cnJlZCwgc28gYm90aCB3b3JrZXJzCndpbGwgd2FpdCBpbmRlZmluaXRlbHkuCi0tLQogZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgICAgICAgICAgfCAgIDYgKwog Li4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jICAgICAgfCAgNzUg KysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgICAgICB8 ICA4NiArKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYyAgICAg ICAgIHwgMjE1ICsrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxl c3luYy5jICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jICAgICAgICAgICB8ICAyMyArLQogc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2Fj aGUuYyAgICAgICAgICAgICAgICAgfCAgMTcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbHByb3RvLmggICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v bG9naWNhbHJlbGF0aW9uLmggICAgICAgICAgfCAgMTUgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd29ya2VyX2ludGVybmFsLmggICAgICAgICAgfCAgIDMgKwogc3JjL2luY2x1ZGUvdXRpbHMv dHlwY2FjaGUuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKwogc3JjL3Rlc3Qvc3Vic2Ny aXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAgIDkgKy0KIHNyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCAgICAgIHwgICA5ICstCiBzcmMvdGVz dC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCAgICB8ICAgOCArCiBzcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsICAgICB8ICAgOSArLQog Li4uL3QvMDMyX3N0cmVhbWluZ19wYXJhbGxlbF9zYWZldHkucGwgICAgICAgICAgICAgfCA2MDgg KysrKysrKysrKysrKysrKysrKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAg ICAgICAgICAgICAgICAgICB8ICAgMSArCiAxNyBmaWxlcyBjaGFuZ2VkLCAxMDczIGluc2VydGlv bnMoKyksIDE1IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5LnBsCgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRleCBjYmNkMDJiLi4zMjVlZWU4IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9k b2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjQwLDYgKzI0MCwx MiBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5z dWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAgICAgICAgIHRyYW5zYWN0aW9uIGlzIGNv bW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhhcHBlbnMgd2hlbgogICAgICAgICAgIGFw cGx5aW5nIGNoYW5nZXMgaW4gYSBwYXJhbGxlbCB3b3JrZXIsIHRoZSBmaW5pc2ggTFNOIG9mIHRo ZQogICAgICAgICAgIHJlbW90ZSB0cmFuc2FjdGlvbiBtaWdodCBub3QgYmUgcmVwb3J0ZWQgaW4g dGhlIHNlcnZlciBsb2cuCisgICAgICAgICAgVGhlcmUgYXJlIHRocmVlIHByZXJlcXVpc2l0ZXMg Zm9yIHVzaW5nIDxsaXRlcmFsPnBhcmFsbGVsPC9saXRlcmFsPgorICAgICAgICAgIG1vZGU6IDEp IHRoZSB1bmlxdWUgY29sdW1uIGluIHRoZSB0YWJsZSBvbiB0aGUgc3Vic2NyaWJlci1zaWRlIG11 c3QKKyAgICAgICAgICBhbHNvIGJlIHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNoZXIt c2lkZTsgMikgdGhlcmUgY2Fubm90IGJlCisgICAgICAgICAgYW55IG5vbi1pbW11dGFibGUgZnVu Y3Rpb25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZSByZXBsaWNhdGVkCisgICAgICAgICAg dGFibGUuIDMpIHRoZXJlIGNhbm5vdCBiZSBhbnkgZm9yZWlnbiBrZXlzIHVzZWQgYnkgdGhlCisg ICAgICAgICAgc3Vic2NyaWJlci1zaWRlIHJlcGxpY2F0ZWQgdGFibGUuCiAgICAgICAgICA8L3Bh cmE+CiAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5j CmluZGV4IGY1OTJjMmIuLmRlYTE5YmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCkBAIC0xMDg3LDMgKzEwODcsNzgg QEAgcGFyYWxsZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCh2b2lkKQogCWlmIChzdGFydGVkX3R4 KQogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIH0KKworLyoKKyAqIENoZWNrIGlmIGFu eSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFyZSBpbiB1c2UuCisgKi8KK2Jvb2wKK3BhcmFsbGVs X2FwcGx5X3VzaW5nX3dvcmtlcih2b2lkKQoreworCUxpc3RDZWxsICAgKmxjOworCisJLyogUmV0 dXJuIHRydWUgZm9yIHBhcmFsbGVsIGFwcGx5IHdvcmtlciAqLworCWlmIChhbV9wYXJhbGxlbF9h cHBseV93b3JrZXIoKSkKKwkJcmV0dXJuIHRydWU7CisKKwlmb3JlYWNoKGxjLCBQYXJhbGxlbEFw cGx5V29ya2Vyc0xpc3QpCisJeworCQlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqdG1wX3dpbmZv OworCisJCXRtcF93aW5mbyA9IChQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKSBsZmlyc3QobGMp OworCisJCWlmICh0bXBfd2luZm8tPmluX3JlbW90ZV90cmFuc2FjdGlvbikKKwkJCXJldHVybiB0 cnVlOworCX0KKworCXJldHVybiBmYWxzZTsKK30KKworLyoKKyAqIENoZWNrIGlmIGNoYW5nZXMg b24gdGhpcyByZWxhdGlvbiBjYW4gYmUgYXBwbGllZCB1c2luZyBhbiBwYXJhbGxlbCBhcHBseQor ICogd29ya2VyLgorICoKKyAqIEFsdGhvdWdoIHRoZSBjb21taXQgb3JkZXIgaXMgbWFpbnRhaW5l ZCBieSBvbmx5IGFsbG93aW5nIG9uZSBwcm9jZXNzIHRvCisgKiBjb21taXQgYXQgYSB0aW1lLCB0 aGUgYWNjZXNzIG9yZGVyIHRvIHRoZSByZWxhdGlvbiBoYXMgY2hhbmdlZC4gVGhpcyBjb3VsZAor ICogY2F1c2UgdW5leHBlY3RlZCBwcm9ibGVtcyB3aGVuIGFwcGx5aW5nIHRyYW5zYWN0aW9ucyB1 c2luZyBhbiBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyIGlmIHRoZSB1bmlxdWUgY29sdW1uIG9u IHRoZSByZXBsaWNhdGVkIHRhYmxlIGlzCisgKiBpbmNvbnNpc3RlbnQgd2l0aCB0aGUgcHVibGlz aGVyLXNpZGUsIG9yIGlmIHRoZSByZWxhdGlvbiBjb250YWlucworICogbm9uLWltbXV0YWJsZSBm dW5jdGlvbnMuCisgKi8KK3ZvaWQKK3BhcmFsbGVsX2FwcGx5X3JlbGF0aW9uX2NoZWNrKExvZ2lj YWxSZXBSZWxNYXBFbnRyeSAqcmVsKQoreworCS8qCisJICogU2tpcCBjaGVjayBpZiBub3QgdXNp bmcgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4KKwkgKgorCSAqIElmIGFueSB3b3JrZXIgaXMgaGFu ZGxpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiwgdGhpcyBjaGVjayBub3Qgb25seQorCSAq IG5lZWRzIHRvIGJlIHBlcmZvcm1lZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIGJ1dCBhbHNv IGJ5IHRoZSBsZWFkZXIKKwkgKiBhcHBseSB3b3JrZXIuIFRoaXMgaXMgYmVjYXVzZSB3aXRob3V0 IHRoZXNlIHNhZmV0eSBjaGVja3MsIGxlYWRlciBhcHBseQorCSAqIHdvcmtlciBtYXkgYmxvY2sg cGFyYWxsZWwgYXBwbHkgd29ya2VyLCB3aGljaCB3aWxsIGNhdXNlIGluZmluaXRlCisJICogd2Fp dHMuCisJICovCisJaWYgKCFwYXJhbGxlbF9hcHBseV91c2luZ193b3JrZXIoKSkKKwkJcmV0dXJu OworCisJLyoKKwkgKiBQYXJ0aXRpb24gdGFibGUgY2hlY2tzIGFyZSBkb25lIGxhdGVyIGluIGZ1 bmN0aW9uCisJICogYXBwbHlfaGFuZGxlX3R1cGxlX3JvdXRpbmcuCisJICovCisJaWYgKHJlbC0+ bG9jYWxyZWwtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFKQor CQlyZXR1cm47CisKKwlpZiAocmVsLT5wYXJhbGxlbF9hcHBseV9zYWZlID09IFBBUkFMTEVMX0FQ UExZX1NBRkVUWV9VTktOT1dOKQorCQlsb2dpY2FscmVwX3JlbF9tYXJrX3BhcmFsbGVsX2FwcGx5 KHJlbCk7CisKKwlpZiAocmVsLT5wYXJhbGxlbF9hcHBseV9zYWZlID09IFBBUkFMTEVMX0FQUExZ X1VOU0FGRSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJjYW5ub3QgcmVwbGljYXRl IHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgdXNpbmcgIgorCQkJCQkJInN1YnNjcmlwdGlvbiBw YXJhbWV0ZXIgJXMiLAorCQkJCQkJcmVsLT5yZW1vdGVyZWwubnNwbmFtZSwgcmVsLT5yZW1vdGVy ZWwucmVsbmFtZSwKKwkJCQkJCSJzdHJlYW1pbmcgPSBwYXJhbGxlbCIpLAorCQkJCSBlcnJkZXRh aWwoIlRoZSB1bmlxdWUgY29sdW1uIG9uIHN1YnNjcmliZXIgaXMgbm90IHRoZSB1bmlxdWUgIgor CQkJCQkJICAgImNvbHVtbiBvbiBwdWJsaXNoZXIgb3IgdGhlcmUgaXMgYXQgbGVhc3Qgb25lICIK KwkJCQkJCSAgICJub24taW1tdXRhYmxlIGZ1bmN0aW9uLiIpLAorCQkJCSBlcnJoaW50KCJQbGVh c2UgY2hhbmdlIHRvIHVzZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyICVzLiIsCisJCQkJCQkic3Ry ZWFtaW5nID0gb24iKSkpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5j CmluZGV4IDQ3YmQ4MTEuLjczYjI4MDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcHJvdG8uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L3Byb3RvLmMKQEAgLTIzLDcgKzIzLDggQEAKIC8qCiAgKiBQcm90b2NvbCBtZXNzYWdlIGZsYWdz LgogICovCi0jZGVmaW5lIExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElUWSAxCisjZGVmaW5l IEFUVFJfSVNfUkVQTElDQV9JREVOVElUWQkoMSA8PCAwKQorI2RlZmluZSBBVFRSX0lTX1VOSVFV RQkJCQkoMSA8PCAxKQogCiAjZGVmaW5lIE1FU1NBR0VfVFJBTlNBQ1RJT05BTCAoMTw8MCkKICNk ZWZpbmUgVFJVTkNBVEVfQ0FTQ0FERQkJKDE8PDApCkBAIC00MSw2ICs0Miw2NiBAQCBzdGF0aWMg dm9pZCBsb2dpY2FscmVwX3dyaXRlX25hbWVzcGFjZShTdHJpbmdJbmZvIG91dCwgT2lkIG5zcGlk KTsKIHN0YXRpYyBjb25zdCBjaGFyICpsb2dpY2FscmVwX3JlYWRfbmFtZXNwYWNlKFN0cmluZ0lu Zm8gaW4pOwogCiAvKgorICogUmVsYXRpb25HZXRVbmlxdWVLZXlCaXRtYXAgLS0gZ2V0IGEgYml0 bWFwIG9mIHVuaXF1ZSBhdHRyaWJ1dGUgbnVtYmVycworICoKKyAqIFRoaXMgaXMgc2ltaWxhciB0 byBSZWxhdGlvbkdldElkZW50aXR5S2V5Qml0bWFwKCksIGJ1dCByZXR1cm5zIGEgYml0bWFwIG9m CisgKiBpbmRleCBhdHRyaWJ1dGUgbnVtYmVycyBmb3IgYWxsIHVuaXF1ZSBpbmRleGVzLgorICov CitzdGF0aWMgQml0bWFwc2V0ICoKK1JlbGF0aW9uR2V0VW5pcXVlS2V5Qml0bWFwKFJlbGF0aW9u IHJlbCkKK3sKKwlMaXN0CQkgICAqaW5kZXhvaWRsaXN0ID0gTklMOworCUxpc3RDZWxsCSAgICpp bmRleG9pZHNjYW47CisJQml0bWFwc2V0CSAgICphdHR1bmlxdWUgPSBOVUxMOworCisJaWYgKCFy ZWwtPnJkX3JlbC0+cmVsaGFzaW5kZXgpCisJCXJldHVybiBOVUxMOworCisJaW5kZXhvaWRsaXN0 ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsKTsKKworCWZvcmVhY2goaW5kZXhvaWRzY2FuLCBp bmRleG9pZGxpc3QpCisJeworCQlPaWQJCQlpbmRleG9pZCA9IGxmaXJzdF9vaWQoaW5kZXhvaWRz Y2FuKTsKKwkJUmVsYXRpb24JaW5kZXhSZWw7CisJCWludAkJCWk7CisKKwkJLyogTG9vayB1cCB0 aGUgZGVzY3JpcHRpb24gZm9yIGluZGV4ICovCisJCWluZGV4UmVsID0gUmVsYXRpb25JZEdldFJl bGF0aW9uKGluZGV4b2lkKTsKKworCQlpZiAoIVJlbGF0aW9uSXNWYWxpZChpbmRleFJlbCkpCisJ CQllbG9nKEVSUk9SLCAiY291bGQgbm90IG9wZW4gcmVsYXRpb24gd2l0aCBPSUQgJXUiLCBpbmRl eG9pZCk7CisKKwkJaWYgKCFpbmRleFJlbC0+cmRfaW5kZXgtPmluZGlzdW5pcXVlKQorCQl7CisJ CQlSZWxhdGlvbkNsb3NlKGluZGV4UmVsKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyogQWRk IHJlZmVyZW5jZWQgYXR0cmlidXRlcyB0byBhdHR1bmlxdWUgKi8KKwkJZm9yIChpID0gMDsgaSA8 IGluZGV4UmVsLT5yZF9pbmRleC0+aW5kbmF0dHM7IGkrKykKKwkJeworCQkJaW50IGF0dHJudW0g PSBpbmRleFJlbC0+cmRfaW5kZXgtPmluZGtleS52YWx1ZXNbaV07CisKKwkJCS8qCisJCQkgKiBX ZSBkb24ndCBpbmNsdWRlIG5vbi1rZXkgY29sdW1ucyBpbnRvIGF0dHVuaXF1ZQorCQkJICogYml0 bWFwcy4gU2VlIFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwLgorCQkJICovCisJCQlpZiAoYXR0 cm51bSAhPSAwKQorCQkJeworCQkJCWlmIChpIDwgaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRua2V5 YXR0cyAmJgorCQkJCQkhYm1zX2lzX21lbWJlcihhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVh cEF0dHJpYnV0ZU51bWJlciwgYXR0dW5pcXVlKSkKKwkJCQkJYXR0dW5pcXVlID0gYm1zX2FkZF9t ZW1iZXIoYXR0dW5pcXVlLAorCQkJCQkJCQkJCQkgICBhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlk SGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCQl9CisJCX0KKwkJUmVsYXRpb25DbG9zZShpbmRleFJl bCk7CisJfQorCWxpc3RfZnJlZShpbmRleG9pZGxpc3QpOworCisJcmV0dXJuIGF0dHVuaXF1ZTsK K30KKworLyoKICAqIENoZWNrIGlmIGEgY29sdW1uIGlzIGNvdmVyZWQgYnkgYSBjb2x1bW4gbGlz dC4KICAqCiAgKiBOZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgTlVMTCwgd2hpY2ggaXMgdHJlYXRl ZCBhcyBhIGNvbHVtbiBsaXN0IGNvdmVyaW5nCkBAIC05MzMsNyArOTk0LDggQEAgbG9naWNhbHJl cF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLCBCaXRtYXBzZXQgKmNv bHVtbnMpCiAJVHVwbGVEZXNjCWRlc2M7CiAJaW50CQkJaTsKIAl1aW50MTYJCW5saXZlYXR0cyA9 IDA7Ci0JQml0bWFwc2V0ICAqaWRhdHRycyA9IE5VTEw7CisJQml0bWFwc2V0ICAqaWRhdHRycyA9 IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAlib29sCQlyZXBsaWRlbnRmdWxsOwog CiAJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKQEAgLTk1OCw2ICsxMDIwLDkgQEAgbG9n aWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLCBCaXRtYXBz ZXQgKmNvbHVtbnMpCiAJaWYgKCFyZXBsaWRlbnRmdWxsKQogCQlpZGF0dHJzID0gUmVsYXRpb25H ZXRJZGVudGl0eUtleUJpdG1hcChyZWwpOwogCisJLyogZmV0Y2ggYml0bWFwIG9mIFVOSVFVRSBh dHRyaWJ1dGVzICovCisJYXR0dW5pcXVlID0gUmVsYXRpb25HZXRVbmlxdWVLZXlCaXRtYXAocmVs KTsKKwogCS8qIHNlbmQgdGhlIGF0dHJpYnV0ZXMgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZGVzYy0+ bmF0dHM7IGkrKykKIAl7CkBAIC05NzQsNyArMTAzOSwxMSBAQCBsb2dpY2FscmVwX3dyaXRlX2F0 dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqY29sdW1ucykKIAkJ aWYgKHJlcGxpZGVudGZ1bGwgfHwKIAkJCWJtc19pc19tZW1iZXIoYXR0LT5hdHRudW0gLSBGaXJz dExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAogCQkJCQkJICBpZGF0dHJzKSkKLQkJCWZs YWdzIHw9IExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElUWTsKKwkJCWZsYWdzIHw9IEFUVFJf SVNfUkVQTElDQV9JREVOVElUWTsKKworCQlpZiAoYm1zX2lzX21lbWJlcihhdHQtPmF0dG51bSAt IEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJCQkgIGF0dHVuaXF1ZSkp CisJCQlmbGFncyB8PSBBVFRSX0lTX1VOSVFVRTsKIAogCQlwcV9zZW5kYnl0ZShvdXQsIGZsYWdz KTsKIApAQCAtOTg5LDYgKzEwNTgsNyBAQCBsb2dpY2FscmVwX3dyaXRlX2F0dHJzKFN0cmluZ0lu Zm8gb3V0LCBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqY29sdW1ucykKIAl9CiAKIAlibXNfZnJl ZShpZGF0dHJzKTsKKwlibXNfZnJlZShhdHR1bmlxdWUpOwogfQogCiAvKgpAQCAtMTAwMSw3ICsx MDcxLDggQEAgbG9naWNhbHJlcF9yZWFkX2F0dHJzKFN0cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBS ZWxhdGlvbiAqcmVsKQogCWludAkJCW5hdHRzOwogCWNoYXIJICAqKmF0dG5hbWVzOwogCU9pZAkJ ICAgKmF0dHR5cHM7Ci0JQml0bWFwc2V0ICAqYXR0a2V5cyA9IE5VTEw7CisJQml0bWFwc2V0ICAq YXR0a2V5cyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAogCW5hdHRzID0gcHFf Z2V0bXNnaW50KGluLCAyKTsKIAlhdHRuYW1lcyA9IHBhbGxvYyhuYXR0cyAqIHNpemVvZihjaGFy ICopKTsKQEAgLTEwMTQsOSArMTA4NSwxMyBAQCBsb2dpY2FscmVwX3JlYWRfYXR0cnMoU3RyaW5n SW5mbyBpbiwgTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpCiAKIAkJLyogQ2hlY2sgZm9yIHJlcGxp Y2EgaWRlbnRpdHkgY29sdW1uICovCiAJCWZsYWdzID0gcHFfZ2V0bXNnYnl0ZShpbik7Ci0JCWlm IChmbGFncyAmIExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElUWSkKKwkJaWYgKGZsYWdzICYg QVRUUl9JU19SRVBMSUNBX0lERU5USVRZKQogCQkJYXR0a2V5cyA9IGJtc19hZGRfbWVtYmVyKGF0 dGtleXMsIGkpOwogCisJCS8qIENoZWNrIGZvciB1bmlxdWUgY29sdW1uICovCisJCWlmIChmbGFn cyAmIEFUVFJfSVNfVU5JUVVFKQorCQkJYXR0dW5pcXVlID0gYm1zX2FkZF9tZW1iZXIoYXR0dW5p cXVlLCBpKTsKKwogCQkvKiBhdHRyaWJ1dGUgbmFtZSAqLwogCQlhdHRuYW1lc1tpXSA9IHBzdHJk dXAocHFfZ2V0bXNnc3RyaW5nKGluKSk7CiAKQEAgLTEwMzAsNiArMTEwNSw3IEBAIGxvZ2ljYWxy ZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwUmVsYXRpb24gKnJlbCkKIAly ZWwtPmF0dG5hbWVzID0gYXR0bmFtZXM7CiAJcmVsLT5hdHR0eXBzID0gYXR0dHlwczsKIAlyZWwt PmF0dGtleXMgPSBhdHRrZXlzOworCXJlbC0+YXR0dW5pcXVlID0gYXR0dW5pcXVlOwogCXJlbC0+ bmF0dHMgPSBuYXR0czsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxh dGlvbi5jCmluZGV4IGU5ODkwNDcuLmZjMTc1YTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTE5LDEyICsxOSwxOSBAQAogCiAjaW5jbHVkZSAiYWNj ZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJj YXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwu aCIKKyNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhl Y3V0b3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNpbmNsdWRlICJvcHRpbWl6 ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmgi CiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCisjaW5jbHVkZSAicmV3 cml0ZS9yZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInV0aWxzL2ludmFsLmgiCisjaW5jbHVk ZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKKyNpbmNs dWRlICJ1dGlscy90eXBjYWNoZS5oIgogCiAKIHN0YXRpYyBNZW1vcnlDb250ZXh0IExvZ2ljYWxS ZXBSZWxNYXBDb250ZXh0ID0gTlVMTDsKQEAgLTkyLDYgKzk5LDIzIEBAIGxvZ2ljYWxyZXBfcmVs bWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQogfQogCiAvKgorICogU3lz Y2FjaGUgaW52YWxpZGF0aW9uIGNhbGxiYWNrIHRvIHJlc2V0IHBhcmFsbGVsX2FwcGx5X3NhZmUg ZmxhZy4KKyAqLworc3RhdGljIHZvaWQKK2xvZ2ljYWxyZXBfcmVsbWFwX3Jlc2V0X3BhcmFsbGVs X2NiKERhdHVtIGFyZywgaW50IGNhY2hlaWQsIHVpbnQzMiBoYXNodmFsdWUpCit7CisJSEFTSF9T RVFfU1RBVFVTIGhhc2hfc2VxOworCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqZW50cnk7CisKKwlp ZiAoTG9naWNhbFJlcFJlbE1hcCA9PSBOVUxMKQorCQlyZXR1cm47CisKKwloYXNoX3NlcV9pbml0 KCZoYXNoX3NlcSwgTG9naWNhbFJlcFJlbE1hcCk7CisJd2hpbGUgKChlbnRyeSA9IGhhc2hfc2Vx X3NlYXJjaCgmaGFzaF9zZXEpKSAhPSBOVUxMKQorCQllbnRyeS0+cGFyYWxsZWxfYXBwbHlfc2Fm ZSA9IFBBUkFMTEVMX0FQUExZX1NBRkVUWV9VTktOT1dOOworfQorCisvKgogICogSW5pdGlhbGl6 ZSB0aGUgcmVsYXRpb24gbWFwIGNhY2hlLgogICovCiBzdGF0aWMgdm9pZApAQCAtMTE2LDYgKzE0 MCwxMiBAQCBsb2dpY2FscmVwX3JlbG1hcF9pbml0KHZvaWQpCiAJLyogV2F0Y2ggZm9yIGludmFs aWRhdGlvbiBldmVudHMuICovCiAJQ2FjaGVSZWdpc3RlclJlbGNhY2hlQ2FsbGJhY2sobG9naWNh bHJlcF9yZWxtYXBfaW52YWxpZGF0ZV9jYiwKIAkJCQkJCQkJICAoRGF0dW0pIDApOworCUNhY2hl UmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFBST0NPSUQsCisJCQkJCQkJCSAgbG9naWNhbHJlcF9y ZWxtYXBfcmVzZXRfcGFyYWxsZWxfY2IsCisJCQkJCQkJCSAgKERhdHVtKSAwKTsKKwlDYWNoZVJl Z2lzdGVyU3lzY2FjaGVDYWxsYmFjayhUWVBFT0lELAorCQkJCQkJCQkgIGxvZ2ljYWxyZXBfcmVs bWFwX3Jlc2V0X3BhcmFsbGVsX2NiLAorCQkJCQkJCQkgIChEYXR1bSkgMCk7CiB9CiAKIC8qCkBA IC0xNDIsNiArMTcyLDcgQEAgbG9naWNhbHJlcF9yZWxtYXBfZnJlZV9lbnRyeShMb2dpY2FsUmVw UmVsTWFwRW50cnkgKmVudHJ5KQogCQlwZnJlZShyZW1vdGVyZWwtPmF0dHR5cHMpOwogCX0KIAli bXNfZnJlZShyZW1vdGVyZWwtPmF0dGtleXMpOworCWJtc19mcmVlKHJlbW90ZXJlbC0+YXR0dW5p cXVlKTsKIAogCWlmIChlbnRyeS0+YXR0cm1hcCkKIAkJZnJlZV9hdHRybWFwKGVudHJ5LT5hdHRy bWFwKTsKQEAgLTE5MCw2ICsyMjEsNyBAQCBsb2dpY2FscmVwX3JlbG1hcF91cGRhdGUoTG9naWNh bFJlcFJlbGF0aW9uICpyZW1vdGVyZWwpCiAJfQogCWVudHJ5LT5yZW1vdGVyZWwucmVwbGlkZW50 ID0gcmVtb3RlcmVsLT5yZXBsaWRlbnQ7CiAJZW50cnktPnJlbW90ZXJlbC5hdHRrZXlzID0gYm1z X2NvcHkocmVtb3RlcmVsLT5hdHRrZXlzKTsKKwllbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSA9 IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0dW5pcXVlKTsKIAlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3R4KTsKIH0KIApAQCAtMzExLDYgKzM0MywxODIgQEAgbG9naWNhbHJlcF9yZWxfbWFya191 cGRhdGFibGUoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIH0KIAogLyoKKyAqIENoZWNr IGlmIGNoYW5nZXMgb24gb25lIHJlbGF0aW9uIGNhbiBiZSBhcHBsaWVkIHVzaW5nIGFuIHBhcmFs bGVsIGFwcGx5CisgKiB3b3JrZXIgYW5kIGFzc2lnbiB0aGUgJ3BhcmFsbGVsX2FwcGx5X3NhZmUn IGZsYWcuCisgKgorICogVGhlcmUgYXJlIHRocmVlIHJlcXVpcmVtZW50cyBmb3IgYXBwbHlpbmcg Y2hhbmdlcyB1c2luZyBhbiBwYXJhbGxlbCBhcHBseQorICogd29ya2VyOiAxKSB0aGUgdW5pcXVl IGNvbHVtbiBpbiB0aGUgdGFibGUgb24gdGhlIHN1YnNjcmliZXItc2lkZSBzaG91bGQgYWxzbwor ICogYmUgdGhlIHVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlOyAyKSB0aGVyZSBj YW5ub3QgYmUgYW55CisgKiBub24taW1tdXRhYmxlIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBzdWJz Y3JpYmVyLXNpZGUgcmVwbGljYXRlZCB0YWJsZS4gMykKKyAqIHRoZXJlIGNhbm5vdCBiZSBhbnkg Zm9yZWlnbiBrZXlzIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZSByZXBsaWNhdGVkCisgKiB0 YWJsZS4KKyAqCisgKiBXaXRob3V0IHRoZXNlIHNhZmV0eSBjaGVja3MsIHRoZSBmb2xsb3dpbmcg c2NlbmFyaW8gbWF5IG9jY3VyOiBUaGUgcGFyYWxsZWwKKyAqIGFwcGx5IHdvcmtlciBsb2NrcyBh IHJvdyB3aGVuIHByb2Nlc3NpbmcgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIGFmdGVyCisgKiB0 aGF0IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHRyaWVzIHRvIGxvY2sgdGhlIHNhbWUgcm93IHdo ZW4gcHJvY2Vzc2luZworICogYW5vdGhlciBub24tc3RyZWFtZWQgdHJhbnNhY3Rpb24uIEF0IHRo aXMgdGltZSwgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIKKyAqIHdhaXRzIGZvciB0aGUgc3RyZWFt aW5nIHRyYW5zYWN0aW9uIHRvIGNvbXBsZXRlIGFuZCB0aGUgbG9jayB0byBiZSByZWxlYXNlZCwK KyAqIGl0IHdvbid0IHNlbmQgc3Vic2VxdWVudCBkYXRhIG9mIHRoZSBzdHJlYW1pbmcgdHJhbnNh Y3Rpb24gdG8gdGhlIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXI7IHRoZSBwYXJhbGxlbCBhcHBs eSB3b3JrZXIgd2FpdHMgdG8gcmVjZWl2ZSB0aGUgcmVzdCBvZgorICogc3RyZWFtaW5nIHRyYW5z YWN0aW9uIGFuZCBjYW4ndCBmaW5pc2ggdGhpcyB0cmFuc2FjdGlvbi4gTm93IGEgZGVhZGxvY2sg aGFzCisgKiBvY2N1cnJlZCwgc28gYm90aCB3b3JrZXJzIHdpbGwgd2FpdCBpbmRlZmluaXRlbHku CisgKgorICogV2UganVzdCBtYXJrIHRoZSByZWxhdGlvbiBlbnRyeSBhcyAnUEFSQUxMRUxfQVBQ TFlfVU5TQUZFJyBoZXJlIGlmIGNoYW5nZXMKKyAqIG9uIG9uZSByZWxhdGlvbiBjYW4gbm90IGJl IGFwcGxpZWQgdXNpbmcgYW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGFuZCBsZWF2ZQorICogaXQg dG8gcGFyYWxsZWxfYXBwbHlfcmVsYXRpb25fY2hlY2soKSB0byB0aHJvdyB0aGUgYWN0dWFsIGVy cm9yIGlmIG5lZWRlZC4KKyAqLwordm9pZAorbG9naWNhbHJlcF9yZWxfbWFya19wYXJhbGxlbF9h cHBseShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KQoreworCUJpdG1hcHNldCAgICp1a2V5 OworCWludAkJCWk7CisJVHVwbGVEZXNjCXR1cGRlc2M7CisJaW50CQkJYXR0bnVtOworCUxpc3QJ ICAgKmZrZXlzID0gTklMOworCisJLyogU2tpcCBpZiBubyBwYXJhbGxlbCBhcHBseSB3b3JrZXIg aXMgaW4gdXNlICovCisJaWYgKCFwYXJhbGxlbF9hcHBseV91c2luZ193b3JrZXIoKSkKKwkJcmV0 dXJuOworCisJLyogSW5pdGlhbGl6ZSB0aGUgZmxhZy4gKi8KKwllbnRyeS0+cGFyYWxsZWxfYXBw bHlfc2FmZSA9IFBBUkFMTEVMX0FQUExZX1NBRkVUWV9VTktOT1dOOworCisJLyoKKwkgKiBGaXJz dCwgY2hlY2sgaWYgdGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRoZSBzdWJz Y3JpYmVyLXNpZGUKKwkgKiBpcyBhbHNvIHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNo ZXItc2lkZS4KKwkgKi8KKwl1a2V5ID0gUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoZW50cnkt PmxvY2FscmVsLAorCQkJCQkJCQkJICBJTkRFWF9BVFRSX0JJVE1BUF9LRVkpOworCisJaWYgKHVr ZXkpCisJeworCQlpID0gLTE7CisJCXdoaWxlICgoaSA9IGJtc19uZXh0X21lbWJlcih1a2V5LCBp KSkgPj0gMCkKKwkJeworCQkJYXR0bnVtID0gQXR0ck51bWJlckdldEF0dHJPZmZzZXQoaSArIEZp cnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIpOworCisJCQlpZiAoZW50cnktPmF0dHJt YXAtPmF0dG51bXNbYXR0bnVtXSA8IDAgfHwKKwkJCQkhYm1zX2lzX21lbWJlcihlbnRyeS0+YXR0 cm1hcC0+YXR0bnVtc1thdHRudW1dLCBlbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSkpCisJCQl7 CisJCQkJZW50cnktPnBhcmFsbGVsX2FwcGx5X3NhZmUgPSBQQVJBTExFTF9BUFBMWV9VTlNBRkU7 CisJCQkJYm1zX2ZyZWUodWtleSk7CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisKKwkJYm1zX2Zy ZWUodWtleSk7CisJfQorCisJLyoKKwkgKiBUaGVuLCBjaGVjayBpZiB0aGVyZSBpcyBhbnkgbm9u LWltbXV0YWJsZSBmdW5jdGlvbiB1c2VkIGJ5IHRoZQorCSAqIHN1YnNjcmliZXItc2lkZSByZWxh dGlvbi4gTG9vayBmb3IgZnVuY3Rpb25zIGluIHRoZSBmb2xsb3dpbmcgcGxhY2VzOgorCSAqIGEu IHRyaWdnZXIgZnVuY3Rpb25zOworCSAqIGIuIENvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Np b25zIGFuZCBkb21haW4gY29uc3RyYWludHM7CisJICogYy4gQ29uc3RyYWludCBleHByZXNzaW9u czsKKwkgKi8KKwkvKiBDaGVjayB0aGUgdHJpZ2dlciBmdW5jdGlvbnMuICovCisJaWYgKGVudHJ5 LT5sb2NhbHJlbC0+dHJpZ2Rlc2MgIT0gTlVMTCkKKwl7CisJCWZvciAoaSA9IDA7IGkgPCBlbnRy eS0+bG9jYWxyZWwtPnRyaWdkZXNjLT5udW10cmlnZ2VyczsgaSsrKQorCQl7CisJCQlUcmlnZ2Vy ICAgICp0cmlnID0gZW50cnktPmxvY2FscmVsLT50cmlnZGVzYy0+dHJpZ2dlcnMgKyBpOworCisJ CQlpZiAodHJpZy0+dGdlbmFibGVkICE9IFRSSUdHRVJfRklSRVNfQUxXQVlTICYmCisJCQkJdHJp Zy0+dGdlbmFibGVkICE9IFRSSUdHRVJfRklSRVNfT05fUkVQTElDQSkKKwkJCQljb250aW51ZTsK KworCQkJaWYgKGZ1bmNfdm9sYXRpbGUodHJpZy0+dGdmb2lkKSAhPSBQUk9WT0xBVElMRV9JTU1V VEFCTEUpCisJCQl7CisJCQkJZW50cnktPnBhcmFsbGVsX2FwcGx5X3NhZmUgPSBQQVJBTExFTF9B UFBMWV9VTlNBRkU7CisJCQkJcmV0dXJuOworCQkJfQorCQl9CisJfQorCisJLyogQ2hlY2sgdGhl IGNvbHVtbnMuICovCisJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IoZW50cnktPmxvY2FscmVs KTsKKwlmb3IgKGF0dG51bSA9IDA7IGF0dG51bSA8IHR1cGRlc2MtPm5hdHRzOyBhdHRudW0rKykK Kwl7CisJCUZvcm1fcGdfYXR0cmlidXRlIGF0dCA9IFR1cGxlRGVzY0F0dHIodHVwZGVzYywgYXR0 bnVtKTsKKwkJTm9kZSAqZGVmYXVsdGV4cHIgPSBOVUxMOworCisJCS8qIFdlIGRvbid0IGNoZWNr IGRyb3BwZWQgb3IgZ2VuZXJhdGVkIGF0dHJpYnV0ZXMgKi8KKwkJaWYgKGF0dC0+YXR0aXNkcm9w cGVkIHx8IGF0dC0+YXR0Z2VuZXJhdGVkKQorCQkJY29udGludWU7CisKKwkJZGVmYXVsdGV4cHIg PSBidWlsZF9jb2x1bW5fZGVmYXVsdChlbnRyeS0+bG9jYWxyZWwsIGF0dG51bSArIDEpOworCQlp ZiAoZGVmYXVsdGV4cHIgJiYgY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9ucyhkZWZhdWx0ZXhwcikp CisJCXsKKwkJCWVudHJ5LT5wYXJhbGxlbF9hcHBseV9zYWZlID0gUEFSQUxMRUxfQVBQTFlfVU5T QUZFOworCQkJcmV0dXJuOworCQl9CisKKwkJLyoKKwkJICogSWYgdGhlIGNvbHVtbiBpcyBvZiBh IERPTUFJTiB0eXBlLCBkZXRlcm1pbmUgd2hldGhlciB0aGF0IGRvbWFpbiBoYXMKKwkJICogYW55 IENIRUNLIGV4cHJlc3Npb25zIHRoYXQgYXJlIG5vdCBpbW11dGFibGUuCisJCSAqLworCQlpZiAo Z2V0X3R5cHR5cGUoYXR0LT5hdHR0eXBpZCkgPT0gVFlQVFlQRV9ET01BSU4pCisJCXsKKwkJCUxp c3QJICAgKmRvbWFpbl9jb25zdHJhaW50czsKKwkJCUxpc3RDZWxsICAgKmxjOworCisJCQlkb21h aW5fY29uc3RyYWludHMgPSBHZXREb21haW5Db25zdHJhaW50cyhhdHQtPmF0dHR5cGlkKTsKKwor CQkJZm9yZWFjaChsYywgZG9tYWluX2NvbnN0cmFpbnRzKQorCQkJeworCQkJCURvbWFpbkNvbnN0 cmFpbnRTdGF0ZSAqY29uID0gKERvbWFpbkNvbnN0cmFpbnRTdGF0ZSAqKSBsZmlyc3QobGMpOwor CisJCQkJaWYgKGNvbi0+Y2hlY2tfZXhwciAmJiBjb250YWluX211dGFibGVfZnVuY3Rpb25zKChO b2RlICopIGNvbi0+Y2hlY2tfZXhwcikpCisJCQkJeworCQkJCQllbnRyeS0+cGFyYWxsZWxfYXBw bHlfc2FmZSA9IFBBUkFMTEVMX0FQUExZX1VOU0FGRTsKKwkJCQkJcmV0dXJuOworCQkJCX0KKwkJ CX0KKwkJfQorCX0KKworCS8qIENoZWNrIHRoZSBjb25zdHJhaW50cy4gKi8KKwlpZiAodHVwZGVz Yy0+Y29uc3RyKQorCXsKKwkJQ29uc3RyQ2hlY2sgKmNoZWNrID0gdHVwZGVzYy0+Y29uc3RyLT5j aGVjazsKKworCQkvKgorCQkgKiBEZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBDSEVDSyBjb25z dHJhaW50cyB3aGljaAorCQkgKiBjb250YWlucyBub24taW1tdXRhYmxlIGZ1bmN0aW9uLgorCQkg Ki8KKwkJZm9yIChpID0gMDsgaSA8IHR1cGRlc2MtPmNvbnN0ci0+bnVtX2NoZWNrOyBpKyspCisJ CXsKKwkJCUV4cHIJICAgKmNoZWNrX2V4cHIgPSBzdHJpbmdUb05vZGUoY2hlY2tbaV0uY2NiaW4p OworCisJCQlpZiAoY29udGFpbl9tdXRhYmxlX2Z1bmN0aW9ucygoTm9kZSAqKSBjaGVja19leHBy KSkKKwkJCXsKKwkJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHlfc2FmZSA9IFBBUkFMTEVMX0FQUExZ X1VOU0FGRTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKwl9CisKKwkvKgorCSAqIEZpbmFsbHks IGNoZWNrIHRoZSBmb3JlaWduIGtleXMuCisJICoKKwkgKiBYWFggSXQgaXMgYmV0dGVyIHRvIG9u bHkgY2hlY2sgdGhlIGZvcmVpZ24ga2V5IHdoZW4gaXQgaXMgZGV0ZWN0ZWQgdGhhdAorCSAqIHRo ZSBwdWJsaXNoZXIgZG9lcyBub3QgaGF2ZSB0aGUgZm9yZWlnbiBrZXkgYW5kIHRoZSBzdWJzY3Jp YmVyIGRvZXMuIEJ1dAorCSAqIHRoaXMgcmVxdWlyZXMgdGhlIHB1Ymxpc2hlciB0byBzZW5kIG1v cmUgaW5mb3JtYXRpb24uIEluIGFkZGl0aW9uLCBzaW5jZQorCSAqIGZvcmVpZ24ga2V5IGRvZXMg bm90IHRha2UgZWZmZWN0IGluIHRoZSBzdWJzY3JpYmVyJ3MgYXBwbHkgd29ya2VyIGJ5CisJICog ZGVmYXVsdCwgaXQgc2VlbXMgdGhhdCBmb3JlaWduIGtleSBkb2VzIG5vdCBoaXQgdGhpcyBFUlJP UiBmcmVxdWVudGx5LgorCSAqIFNvLCBvbmx5IGEgc2ltcGxlIGNoZWNrIGJhc2VkIG9uIHRoZSBz dWJzY3JpYmVyIHNjaGVtYSBpcyBrZXB0IGhlcmUuCisJICovCisJZmtleXMgPSBSZWxhdGlvbkdl dEZLZXlMaXN0KGVudHJ5LT5sb2NhbHJlbCk7CisJaWYgKGZrZXlzKQorCXsKKwkJZW50cnktPnBh cmFsbGVsX2FwcGx5X3NhZmUgPSBQQVJBTExFTF9BUFBMWV9VTlNBRkU7CisJCXJldHVybjsKKwl9 CisKKwllbnRyeS0+cGFyYWxsZWxfYXBwbHlfc2FmZSA9IFBBUkFMTEVMX0FQUExZX1NBRkU7Cit9 CisKKy8qCiAgKiBPcGVuIHRoZSBsb2NhbCByZWxhdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIHJl bW90ZSBvbmUuCiAgKgogICogUmVidWlsZHMgdGhlIFJlbGNhY2hlIG1hcHBpbmcgaWYgaXQgd2Fz IGludmFsaWRhdGVkIGJ5IGxvY2FsIERETC4KQEAgLTQzOCw2ICs2NDYsOSBAQCBsb2dpY2FscmVw X3JlbF9vcGVuKExvZ2ljYWxSZXBSZWxJZCByZW1vdGVpZCwgTE9DS01PREUgbG9ja21vZGUpCiAJ CSAqLwogCQlsb2dpY2FscmVwX3JlbF9tYXJrX3VwZGF0YWJsZShlbnRyeSk7CiAKKwkJLyogU2V0 IGlmIGNoYW5nZXMgY291bGQgYmUgYXBwbGllZCB1c2luZyBhbiBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIgKi8KKwkJbG9naWNhbHJlcF9yZWxfbWFya19wYXJhbGxlbF9hcHBseShlbnRyeSk7CisKIAkJ ZW50cnktPmxvY2FscmVsdmFsaWQgPSB0cnVlOwogCX0KIApAQCAtNjUzLDYgKzg2NCw3IEBAIGxv Z2ljYWxyZXBfcGFydGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyb290LAogCQl9 CiAJCWVudHJ5LT5yZW1vdGVyZWwucmVwbGlkZW50ID0gcmVtb3RlcmVsLT5yZXBsaWRlbnQ7CiAJ CWVudHJ5LT5yZW1vdGVyZWwuYXR0a2V5cyA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0a2V5cyk7 CisJCWVudHJ5LT5yZW1vdGVyZWwuYXR0dW5pcXVlID0gYm1zX2NvcHkocmVtb3RlcmVsLT5hdHR1 bmlxdWUpOwogCX0KIAogCWVudHJ5LT5sb2NhbHJlbCA9IHBhcnRyZWw7CkBAIC02OTYsNiArOTA4 LDkgQEAgbG9naWNhbHJlcF9wYXJ0aXRpb25fb3BlbihMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJv b3QsCiAJLyogU2V0IGlmIHRoZSB0YWJsZSdzIHJlcGxpY2EgaWRlbnRpdHkgaXMgZW5vdWdoIHRv IGFwcGx5IHVwZGF0ZS9kZWxldGUuICovCiAJbG9naWNhbHJlcF9yZWxfbWFya191cGRhdGFibGUo ZW50cnkpOwogCisJLyogU2V0IGlmIGNoYW5nZXMgY291bGQgYmUgYXBwbGllZCB1c2luZyBhbiBw YXJhbGxlbCBhcHBseSB3b3JrZXIgKi8KKwlsb2dpY2FscmVwX3JlbF9tYXJrX3BhcmFsbGVsX2Fw cGx5KGVudHJ5KTsKKwogCWVudHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIAogCS8qIHN0YXRl IGFuZCBzdGF0ZWxzbiBhcmUgbGVmdCBzZXQgdG8gMC4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDYwZGZiODYuLjE3MDk5N2EgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKKysrIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtODgwLDYgKzg4MCw3 IEBAIGZldGNoX3JlbW90ZV90YWJsZV9pbmZvKGNoYXIgKm5zcG5hbWUsIGNoYXIgKnJlbG5hbWUs CiAJbHJlbC0+YXR0bmFtZXMgPSBwYWxsb2MwKE1heFR1cGxlQXR0cmlidXRlTnVtYmVyICogc2l6 ZW9mKGNoYXIgKikpOwogCWxyZWwtPmF0dHR5cHMgPSBwYWxsb2MwKE1heFR1cGxlQXR0cmlidXRl TnVtYmVyICogc2l6ZW9mKE9pZCkpOwogCWxyZWwtPmF0dGtleXMgPSBOVUxMOworCWxyZWwtPmF0 dHVuaXF1ZSA9IE5VTEw7CiAKIAkvKgogCSAqIFN0b3JlIHRoZSBjb2x1bW5zIGFzIGEgbGlzdCBv ZiBuYW1lcy4gIElnbm9yZSB0aG9zZSB0aGF0IGFyZSBub3QKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGMxOTE3OTcuLmE3ZTFlYTIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMTQ3MSw2ICsxNDcxLDE0IEBAIGFwcGx5 X2hhbmRsZV9zdHJlYW1fc3RvcChTdHJpbmdJbmZvIHMpCiAJewogCQlBc3NlcnQod2luZm8pOwog CisJCS8qCisJCSAqIFVubGlrZSBzdHJlYW1fY29tbWl0LCB3ZSBkb24ndCBuZWVkIHRvIHdhaXQg aGVyZSBmb3Igc3RyZWFtX3N0b3AgdG8KKwkJICogZmluaXNoLiBBbGxvd2luZyB0aGUgb3RoZXIg dHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBiZWZvcmUKKwkJICogc3RyZWFtX3N0b3AgaXMgZmlu aXNoZWQgY2FuIGxlYWQgdG8gZmFpbHVyZXMgaWYgdGhlIHVuaXF1ZQorCQkgKiBpbmRleC9jb25z dHJhaW50IGlzIGRpZmZlcmVudCBiZXR3ZWVuIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlci4gQnV0 CisJCSAqIGZvciBzdWNoIGNhc2VzLCB3ZSBkb24ndCBhbGxvdyBzdHJlYW1lZCB0cmFuc2FjdGlv bnMgdG8gYmUgYXBwbGllZAorCQkgKiBpbiBwYXJhbGxlbC4gU2VlIHBhcmFsbGVsX2FwcGx5X3Jl bGF0aW9uX2NoZWNrLgorCQkgKi8KIAkJcGFyYWxsZWxfYXBwbHlfc2VuZF9kYXRhKHdpbmZvLCBz LT5sZW4sIHMtPmRhdGEpOwogCiAJCWVsb2coREVCVUcxLCAic3RvcHBlZCBzdHJlYW1pbmcgb2Yg eGlkICV1LCAldSBjaGFuZ2VzIHN0cmVhbWVkIiwKQEAgLTIwNjgsNiArMjA3Niw4IEBAIGFwcGx5 X2hhbmRsZV9pbnNlcnQoU3RyaW5nSW5mbyBzKQogCS8qIFNldCByZWxhdGlvbiBmb3IgZXJyb3Ig Y2FsbGJhY2sgKi8KIAlhcHBseV9lcnJvcl9jYWxsYmFja19hcmcucmVsID0gcmVsOwogCisJcGFy YWxsZWxfYXBwbHlfcmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8qIEluaXRpYWxpemUgdGhlIGV4 ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9yZWxhdGlvbihyZWwp OwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBAIC0yMjExLDYgKzIyMjEsOCBAQCBhcHBseV9o YW5kbGVfdXBkYXRlKFN0cmluZ0luZm8gcykKIAkvKiBDaGVjayBpZiB3ZSBjYW4gZG8gdGhlIHVw ZGF0ZS4gKi8KIAljaGVja19yZWxhdGlvbl91cGRhdGFibGUocmVsKTsKIAorCXBhcmFsbGVsX2Fw cGx5X3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkvKiBJbml0aWFsaXplIHRoZSBleGVjdXRvciBz dGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0YV9mb3JfcmVsYXRpb24ocmVsKTsKIAllc3Rh dGUgPSBlZGF0YS0+ZXN0YXRlOwpAQCAtMjM3OSw2ICsyMzkxLDggQEAgYXBwbHlfaGFuZGxlX2Rl bGV0ZShTdHJpbmdJbmZvIHMpCiAJLyogQ2hlY2sgaWYgd2UgY2FuIGRvIHRoZSBkZWxldGUuICov CiAJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHJlbCk7CiAKKwlwYXJhbGxlbF9hcHBseV9yZWxh dGlvbl9jaGVjayhyZWwpOworCiAJLyogSW5pdGlhbGl6ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICov CiAJZWRhdGEgPSBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9uKHJlbCk7CiAJZXN0YXRlID0gZWRh dGEtPmVzdGF0ZTsKQEAgLTI1NjQsMTMgKzI1NzgsMTQgQEAgYXBwbHlfaGFuZGxlX3R1cGxlX3Jv dXRpbmcoQXBwbHlFeGVjdXRpb25EYXRhICplZGF0YSwKIAl9CiAJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN0eCk7CiAKKwlwYXJ0X2VudHJ5ID0gbG9naWNhbHJlcF9wYXJ0aXRpb25fb3Blbihy ZWxtYXBlbnRyeSwgcGFydHJlbCwKKwkJCQkJCQkJCQkgICBhdHRybWFwKTsKKwogCS8qIENoZWNr IGlmIHdlIGNhbiBkbyB0aGUgdXBkYXRlIG9yIGRlbGV0ZSBvbiB0aGUgbGVhZiBwYXJ0aXRpb24u ICovCiAJaWYgKG9wZXJhdGlvbiA9PSBDTURfVVBEQVRFIHx8IG9wZXJhdGlvbiA9PSBDTURfREVM RVRFKQotCXsKLQkJcGFydF9lbnRyeSA9IGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4ocmVsbWFw ZW50cnksIHBhcnRyZWwsCi0JCQkJCQkJCQkJCSAgIGF0dHJtYXApOwogCQljaGVja19yZWxhdGlv bl91cGRhdGFibGUocGFydF9lbnRyeSk7Ci0JfQorCisJcGFyYWxsZWxfYXBwbHlfcmVsYXRpb25f Y2hlY2socGFydF9lbnRyeSk7CiAKIAlzd2l0Y2ggKG9wZXJhdGlvbikKIAl7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv Y2FjaGUvdHlwY2FjaGUuYwppbmRleCA4MDhmOWViLi5iMjQ4ODk5IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3R5cGNhY2hlLmMKQEAgLTI1NDEsNiArMjU0MSwyMyBAQCBjb21wYXJlX3ZhbHVlc19vZl9l bnVtKFR5cGVDYWNoZUVudHJ5ICp0Y2FjaGUsIE9pZCBhcmcxLCBPaWQgYXJnMikKIH0KIAogLyoK KyAqIEdldERvbWFpbkNvbnN0cmFpbnRzIC0tLSBnZXQgRG9tYWluQ29uc3RyYWludFN0YXRlIGxp c3Qgb2Ygc3BlY2lmaWVkIGRvbWFpbiB0eXBlCisgKi8KK0xpc3QgKgorR2V0RG9tYWluQ29uc3Ry YWludHMoT2lkIHR5cGVfaWQpCit7CisJVHlwZUNhY2hlRW50cnkgKnR5cGVudHJ5OworCUxpc3QJ CSAgICpjb25zdHJhaW50cyA9IE5JTDsKKworCXR5cGVudHJ5ID0gbG9va3VwX3R5cGVfY2FjaGUo dHlwZV9pZCwgVFlQRUNBQ0hFX0RPTUFJTl9DT05TVFJfSU5GTyk7CisKKwlpZih0eXBlbnRyeS0+ ZG9tYWluRGF0YSAhPSBOVUxMKQorCQljb25zdHJhaW50cyA9IHR5cGVudHJ5LT5kb21haW5EYXRh LT5jb25zdHJhaW50czsKKworCXJldHVybiBjb25zdHJhaW50czsKK30KKworLyoKICAqIExvYWQg KG9yIHJlLWxvYWQpIHRoZSBlbnVtRGF0YSBtZW1iZXIgb2YgdGhlIHR5cGNhY2hlIGVudHJ5Lgog ICovCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbHByb3RvLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaAppbmRl eCA2NGFkZjI5Li40ZDJiNzRiIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2FscHJvdG8uaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8u aApAQCAtMTEzLDYgKzExMyw3IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSZWxhdGlvbgog CWNoYXIJCXJlcGxpZGVudDsJCS8qIHJlcGxpY2EgaWRlbnRpdHkgKi8KIAljaGFyCQlyZWxraW5k OwkJLyogcmVtb3RlIHJlbGF0aW9uIGtpbmQgKi8KIAlCaXRtYXBzZXQgICphdHRrZXlzOwkJLyog Qml0bWFwIG9mIGtleSBjb2x1bW5zICovCisJQml0bWFwc2V0ICAqYXR0dW5pcXVlOwkJLyogQml0 bWFwIG9mIHVuaXF1ZSBjb2x1bW5zICovCiB9IExvZ2ljYWxSZXBSZWxhdGlvbjsKIAogLyogVHlw ZSBtYXBwaW5nIGluZm8gKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWxyZWxhdGlvbi5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9u LmgKaW5kZXggNzhjZDdlNy4uYzc3OGU3ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbHJlbGF0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9n aWNhbHJlbGF0aW9uLmgKQEAgLTE1LDYgKzE1LDE3IEBACiAjaW5jbHVkZSAiYWNjZXNzL2F0dG1h cC5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIgogCisvKgorICoJU3Rh dGVzIHRvIGRldGVybWluZSBpZiBjaGFuZ2VzIG9uIG9uZSByZWxhdGlvbiBjYW4gYmUgYXBwbGll ZCB1c2luZyBhbgorICoJcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorICovCit0eXBlZGVmIGVudW0g UGFyYWxsZWxBcHBseVNhZmV0eQoreworCVBBUkFMTEVMX0FQUExZX1NBRkVUWV9VTktOT1dOLAor CVBBUkFMTEVMX0FQUExZX1NBRkUsCisJUEFSQUxMRUxfQVBQTFlfVU5TQUZFCit9IFBhcmFsbGVs QXBwbHlTYWZldHk7CisKIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBSZWxNYXBFbnRyeQogewog CUxvZ2ljYWxSZXBSZWxhdGlvbiByZW1vdGVyZWw7CS8qIGtleSBpcyByZW1vdGVyZWwucmVtb3Rl aWQgKi8KQEAgLTMxLDYgKzQyLDggQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbE1hcEVu dHJ5CiAJUmVsYXRpb24JbG9jYWxyZWw7CQkvKiByZWxjYWNoZSBlbnRyeSAoTlVMTCB3aGVuIGNs b3NlZCkgKi8KIAlBdHRyTWFwICAgICphdHRybWFwOwkJLyogbWFwIG9mIGxvY2FsIGF0dHJpYnV0 ZXMgdG8gcmVtb3RlIG9uZXMgKi8KIAlib29sCQl1cGRhdGFibGU7CQkvKiBDYW4gYXBwbHkgdXBk YXRlcy9kZWxldGVzPyAqLworCVBhcmFsbGVsQXBwbHlTYWZldHkJcGFyYWxsZWxfYXBwbHlfc2Fm ZTsJLyogQ2FuIGFwcGx5IGNoYW5nZXMgaW4gYW4KKwkJCQkJCQkJCQkJCSAgIHBhcmFsbGVsIGFw cGx5IHdvcmtlcj8gKi8KIAogCS8qIFN5bmMgc3RhdGUuICovCiAJY2hhcgkJc3RhdGU7CkBAIC00 Nyw0ICs2MCw2IEBAIGV4dGVybiBMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmxvZ2ljYWxyZXBfcGFy dGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyCiBleHRlcm4gdm9pZCBsb2dpY2Fs cmVwX3JlbF9jbG9zZShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbCwKIAkJCQkJCQkJIExPQ0tN T0RFIGxvY2ttb2RlKTsKIAorZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWxfbWFya19wYXJhbGxl bF9hcHBseShMb2dpY2FsUmVwUmVsTWFwRW50cnkgKmVudHJ5KTsKKwogI2VuZGlmCQkJCQkJCS8q IExPR0lDQUxSRUxBVElPTl9IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi93b3JrZXJfaW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRl cm5hbC5oCmluZGV4IGZlODQyN2IuLjE5MWEzYWUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oCkBAIC0yMTcsNiArMjE3LDkgQEAgZXh0ZXJuIHZvaWQgcGFyYWxs ZWxfYXBwbHlfcmVwbG9yaWdpbl9yZXNldCh2b2lkKTsKIAogI2RlZmluZSBpc1BhcmFsbGVsQXBw bHlXb3JrZXIod29ya2VyKSAod29ya2VyLT5hcHBseV9sZWFkZXJfcGlkICE9IEludmFsaWRQaWQp CiAKK2V4dGVybiB2b2lkIHBhcmFsbGVsX2FwcGx5X3JlbGF0aW9uX2NoZWNrKExvZ2ljYWxSZXBS ZWxNYXBFbnRyeSAqcmVsKTsKK2V4dGVybiBib29sIHBhcmFsbGVsX2FwcGx5X3VzaW5nX3dvcmtl cih2b2lkKTsKKwogc3RhdGljIGlubGluZSBib29sCiBhbV90YWJsZXN5bmNfd29ya2VyKHZvaWQp CiB7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oIGIvc3JjL2luY2x1 ZGUvdXRpbHMvdHlwY2FjaGUuaAppbmRleCA0MzFhZDdmLi5lZDdjMmU3IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNh Y2hlLmgKQEAgLTE5OSw2ICsxOTksOCBAQCBleHRlcm4gdWludDY0IGFzc2lnbl9yZWNvcmRfdHlw ZV9pZGVudGlmaWVyKE9pZCB0eXBlX2lkLCBpbnQzMiB0eXBtb2QpOwogCiBleHRlcm4gaW50CWNv bXBhcmVfdmFsdWVzX29mX2VudW0oVHlwZUNhY2hlRW50cnkgKnRjYWNoZSwgT2lkIGFyZzEsIE9p ZCBhcmcyKTsKIAorZXh0ZXJuIExpc3QgKkdldERvbWFpbkNvbnN0cmFpbnRzKE9pZCB0eXBlX2lk KTsKKwogZXh0ZXJuIHNpemVfdCBTaGFyZWRSZWNvcmRUeXBtb2RSZWdpc3RyeUVzdGltYXRlKHZv aWQpOwogCiBleHRlcm4gdm9pZCBTaGFyZWRSZWNvcmRUeXBtb2RSZWdpc3RyeUluaXQoU2hhcmVk UmVjb3JkVHlwbW9kUmVnaXN0cnkgKiwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxNV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBs CmluZGV4IDY4NDRjYzkuLjY4ZWRkY2UgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAxNV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVh bS5wbApAQCAtMjA2LDggKzIwNiwxMyBAQCBteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgogKTsKIAotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgYmlu YXJ5ID0gb2ZmKSIpOworIyAic3RyZWFtaW5nID0gcGFyYWxsZWwiIGRvZXMgbm90IHN1cHBvcnQg bm9uLWltbXV0YWJsZSBmdW5jdGlvbnMsIHNvIGNoYW5nZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhl IGRlZmF1bHQgZXhwcmVzc2lvbiBvZiBjb2x1bW4gImMiLgorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09M VU1OIGMgU0VUIERFRkFVTFQgdG9fdGltZXN0YW1wKDApOworQUxURVIgU1VCU0NSSVBUSU9OIHRh cF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsLCBiaW5hcnkgPSBvZmYpOworfSk7CiAKICRu b2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGlk ICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25h bWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCBiL3NyYy90ZXN0L3N1 YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAppbmRleCBjNWExMGRjLi41ZWM2NTZl IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3Qu cGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCkBA IC0xNTEsOCArMTUxLDEzIEBAIG15ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CiApOwogCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIg U1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworIyAic3Ry ZWFtaW5nID0gcGFyYWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlv bnMsIHNvIGNoYW5nZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBv ZiBjb2x1bW4gImMiLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9f dGltZXN0YW1wKDApOworQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9 IHBhcmFsbGVsKTsKK30pOwogCiAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bv c3RncmVzJywKIAkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlv biBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFt aW5nJzsiCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2Vf Y2FzY2FkZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRl LnBsCmluZGV4IDk3MGZkODUuLmI5NmUyNzQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCkBAIC01MDIsNiArNTAyLDE0IEBAIHRlc3Rfc3Ry ZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0Ms ICdvbicpOwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdCB1 c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisjICJzdHJlYW1pbmcgPSBwYXJhbGxlbCIgZG9lcyBub3Qgc3VwcG9y dCBub24taW1tdXRhYmxlIGZ1bmN0aW9ucywgc28gY2hhbmdlCisjIHRoZSBmdW5jdGlvbiBpbiB0 aGUgZGVmYXVsdCBleHByZXNzaW9uIG9mIGNvbHVtbiAiYyIuCiskbm9kZV9CLT5zYWZlX3BzcWwo CisJJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBjIFNFVCBE RUZBVUxUIHRvX3RpbWVzdGFtcCgwKTsiKTsKKyRub2RlX0MtPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9f dGltZXN0YW1wKDApOyIpOworCiB0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9k ZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAncGFyYWxsZWwnKTsKIAogIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDIzX3R3b3BoYXNlX3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29w aGFzZV9zdHJlYW0ucGwKaW5kZXggYTQ1Nzk1Ny4uMWZiYzFjNCAxMDA2NDQKLS0tIGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCkBAIC0zODUsOCArMzg1LDEzIEBA IG15ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJT RUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1l ID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0kbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9z dWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworIyAic3RyZWFtaW5nID0gcGFyYWxsZWwi IGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMsIHNvIGNoYW5nZQorIyB0 aGUgZnVuY3Rpb24gaW4gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBvZiBjb2x1bW4gImMiLgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUg dGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGltZXN0YW1wKDApOworQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKK30pOwog CiAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNU IHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlv bl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCmRpZmYgLS1naXQg YS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5w bCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfcGFyYWxsZWxfc2FmZXR5 LnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0YmQ1NGYKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVs X3NhZmV0eS5wbApAQCAtMCwwICsxLDYwOCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjIsIFBvc3Rn cmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCB0aGUgc2FmZXR5IGNoZWNr cyBvZiBzdHJlYW1pbmcgbW9kZSAicGFyYWxsZWwiIGluIGxvZ2ljYWwgcmVwbGljYXRpb24uCisj IFdpdGhvdXQgdGhlc2Ugc2FmZXR5IGNoZWNrcywgdGhlIHN1YnNjcmliZXIncyBhcHBseSB3b3Jr ZXIgbWF5IGZhbGwgaW50byBhbgorIyBpbmZpbml0ZSB3YWl0IHdpdGhvdXQgdGhlIHVzZXIga25v d2luZy4KKyMKKyMgRm9yIG5vcm1hbCB0YWJsZXMsIHdlIHVzZSBkZWFkbG9jay1wcm9kdWNpbmcg dGVzdCBjYXNlcyB0byBlbnN1cmUgdGhhdCBmdXR1cmUKKyMgbW9kaWZpY2F0aW9ucyBkbyBub3Qg aW52YWxpZGF0ZSBjb25zdHJhaW50IGNoZWNrcy4KKyMKKyMgRm9yIHBhcnRpdGlvbmVkIHRhYmxl cywgd2UganVzdCB1c2UgdGVzdCBjYXNlcyB0byBjb25maXJtIHRoYXQgdGhlIGNvbnN0cmFpbnQK KyMgY2hlY2tzIGFyZSBhcyBleHBlY3RlZC4KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsK K3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwordXNlIFRlc3Q6Ok1vcmU7CisKK215ICRvZmZzZXQgPSAwOworCisjIENyZWF0ZSBwdWJs aXNoZXIgbm9kZQorbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rl ci0+bmV3KCdwdWJsaXNoZXInKTsKKyRub2RlX3B1Ymxpc2hlci0+aW5pdChhbGxvd3Nfc3RyZWFt aW5nID0+ICdsb2dpY2FsJyk7Ciskbm9kZV9wdWJsaXNoZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jl c3FsLmNvbmYnLAorCSdsb2dpY2FsX2RlY29kaW5nX3dvcmtfbWVtID0gNjRrQicpOworJG5vZGVf cHVibGlzaGVyLT5zdGFydDsKKworIyBDcmVhdGUgc3Vic2NyaWJlciBub2RlCitteSAkbm9kZV9z dWJzY3JpYmVyID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdWJzY3JpYmVyJyk7 Ciskbm9kZV9zdWJzY3JpYmVyLT5pbml0OworJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7CisKKyMg U2V0dXAgc3RydWN0dXJlIG9uIHB1Ymxpc2hlcgorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiMSAoYSBpbnQpIik7Ciskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGVzdF90YWIy IChhIGludCkiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNS RUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCAoYSBpbnQgcHJpbWFyeSBrZXksIGIgdmFy Y2hhcikiKTsKKworIyBTZXR1cCBzdHJ1Y3R1cmUgb24gc3Vic2NyaWJlcgorIyBXZSBuZWVkIHRv IHRlc3Qgbm9ybWFsIHRhYmxlIGFuZCBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiMSAoYSBpbnQp Iik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRB QkxFIHRlc3RfdGFiMiAoYSBpbnQpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbmVkIChhIGludCBwcmlt YXJ5IGtleSwgYiB2YXJjaGFyKSBQQVJUSVRJT04gQlkgUkFOR0UoYSkiKTsKKyRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGVzdF90YWJfcGFy dGl0aW9uIChMSUtFIHRlc3RfdGFiX3BhcnRpdGlvbmVkKSIpOworJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbmVk IEFUVEFDSCBQQVJUSVRJT04gdGVzdF90YWJfcGFydGl0aW9uIERFRkFVTFQiCispOworCisjIFNl dHVwIGxvZ2ljYWwgcmVwbGljYXRpb24KK215ICRwdWJsaXNoZXJfY29ubnN0ciA9ICRub2RlX3B1 Ymxpc2hlci0+Y29ubnN0ciAuICcgZGJuYW1lPXBvc3RncmVzJzsKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX25vcm1h bCBGT1IgVEFCTEUgdGVzdF90YWIxLCB0ZXN0X3RhYjIiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViX3BhcnRpdGlv bmVkIEZPUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworCitteSAkYXBwbmFtZSA9ICd0 YXBfc3ViJzsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCAiCisJ Q1JFQVRFIFNVQlNDUklQVElPTiB0YXBfc3ViCisJQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25u c3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnCisJUFVCTElDQVRJT04gdGFwX3B1Yl9ub3Jt YWwsIHRhcF9wdWJfcGFydGl0aW9uZWQKKwlXSVRIIChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgY29w eV9kYXRhID0gZmFsc2UpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKyMgSW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4 Y2VlZGluZyB0aGUgNjRrQiBsaW1pdC4KK215ICRpbiAgPSAnJzsKK215ICRvdXQgPSAnJzsKKwor bXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0 aW1lb3V0X2RlZmF1bHQpOworCitteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9w c3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCisJb25fZXJyb3Jfc3RvcCA9PiAw KTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgdGhl IHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRoZQorIyBzdWJzY3JpYmVyLXNpZGUg aXMgbm90IHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNoZXItc2lkZS4gQ2hlY2sgdGhl CisjIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKworIyBGaXJzdCB3ZSBjaGVjayB0aGUgdW5pcXVlIGluZGV4IG9u IG5vcm1hbCB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CSJDUkVBVEUgVU5JUVVFIElOREVYIGlkeF90YWIxIG9uIHRlc3RfdGFiMShhKSIpOworCiskaW4g Lj0gcXsKK0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWIxIFNFTEVDVCBpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEgdmFsdWVz KDEpIik7CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNh bm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBz dWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsK KworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jr cy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBp ZHhfdGFiMSIpOworCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJl IGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKK215ICRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOwor aXMoJHJlc3VsdCwgcXEoNTAwMSksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRl ciBkcm9wcGluZyBpbmRleCcpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZp cm9ubWVudC4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FU RSBUQUJMRSB0ZXN0X3RhYjEiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKyMgVGhlbiB3ZSBjaGVjayB0aGUgdW5pcXVlIGluZGV4IG9uIHBhcnRpdGlv biB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVB VEUgVU5JUVVFIElOREVYIHRlc3RfdGFiX2JfcGFydGl0aW9uX2lkeCBPTiB0ZXN0X3RhYl9wYXJ0 aXRpb24gKGIpIik7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgor JG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGFiX3BhcnRpdGlv bmVkIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkg cyhpKSIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjog KCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50 ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1p bmcgPSBwYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggdGVzdF90YWJfYl9wYXJ0aXRpb25faWR4Iik7CisK KyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0 aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRy ZXN1bHQsIHFxKDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJv cHBpbmcgaW5kZXgnKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFRyaWdnZXJzIHdoaWNo IGV4ZWN1dGUgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBhcmUgbm90IGFsbG93ZWQgb24gdGhlCisj IHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIHdv cmtlciBpbiB0aGlzIGNhc2UuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBGaXJzdCB3ZSBj aGVjayB0aGUgdHJpZ2dlciBmdW5jdGlvbiBvbiBub3JtYWwgdGFibGUuCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVFIElOREVYIGlkeF90YWIy IG9uIHRlc3RfdGFiMihhKSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggaWR4X3RhYjIgb24gdGVzdF90YWIyKGEpIik7CisK KyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBG VU5DVElPTiB0cmlnZ2VyX2Z1bmNfdGFiMV91bnNhZmUoKSBSRVRVUk5TIFRSSUdHRVIgQVMgXCRc JAorICBCRUdJTgorICAgIElOU0VSVCBJTlRPIHB1YmxpYy50ZXN0X3RhYjIgVkFMVUVTIChORVcu Kik7CisgICAgUkVUVVJOIE5FVzsKKyAgRU5ECitcJFwkIGxhbmd1YWdlIHBscGdzcWw7CitDUkVB VEUgVFJJR0dFUiB0cmlfdGFiMV91bnNhZmUKK0JFRk9SRSBJTlNFUlQgT04gcHVibGljLnRlc3Rf dGFiMQorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJfZnVuY190YWIxX3Vu c2FmZSgpOworQUxURVIgVEFCTEUgdGVzdF90YWIxIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgdHJp X3RhYjFfdW5zYWZlOworCitDUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSgp IFJFVFVSTlMgVFJJR0dFUiBBUyBcJFwkCisgIEJFR0lOCisgICAgUkFJU0UgTk9USUNFICd0ZXN0 IGZvciBzYWZlIHRyaWdnZXIgZnVuY3Rpb24nOworCVJFVFVSTiBORVc7CisgIEVORAorXCRcJCBs YW5ndWFnZSBwbHBnc3FsOworQUxURVIgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSBJ TU1VVEFCTEU7CitDUkVBVEUgVFJJR0dFUiB0cmlfdGFiMV9zYWZlCitCRUZPUkUgSU5TRVJUIE9O IHB1YmxpYy50ZXN0X3RhYjEKK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2Vy X2Z1bmNfdGFiMV9zYWZlKCk7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJv bSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJGlu IC49IHF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMSBWQUxVRVMoNTAwMSk7CitJTlNF UlQgSU5UTyB0ZXN0X3RhYjIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkg cyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMSBWQUxVRVMoNTAwMSkiKTsKKworJGluIC49 IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0 YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJh bWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIFVzaW5nIHRyaWdn ZXIgd2l0aCBpbW11dGFibGUgZnVuY3Rpb24sIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBF TkFCTEUgUkVQTElDQSBUUklHR0VSIHRyaV90YWIxX3NhZmU7CitEUk9QIFRSSUdHRVIgdHJpX3Rh YjFfdW5zYWZlIE9OIHB1YmxpYy50ZXN0X3RhYjE7Cit9KTsKKworIyBXYWl0IGZvciB0aGlzIHN0 cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCisk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0K KyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDIpLCAnZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgdXNpbmcgaW1tdXRhYmxlIGV4cHJlc3Npb24nKTsKKworIyBD bGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitEUk9QIElOREVYIGlkeF90YWIyOworRFJP UCBUUklHR0VSIHRyaV90YWIxX3NhZmUgT04gcHVibGljLnRlc3RfdGFiMTsKK0RST1AgZnVuY3Rp b24gdHJpZ2dlcl9mdW5jX3RhYjFfdW5zYWZlOworRFJPUCBmdW5jdGlvbiB0cmlnZ2VyX2Z1bmNf dGFiMV9zYWZlOworfSk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcXsKK0RST1AgSU5ERVggaWR4X3RhYjI7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CitU UlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjI7Cit9KTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgVGhlbiB3ZSBjaGVjayB0aGUgdHJpZ2dlciBmdW5jdGlv biBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bv c3RncmVzJywgcXF7CitDUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9mdW5jKCkgUkVUVVJOUyBUUklH R0VSIEFTIFwkXCQKKyAgQkVHSU4KKyAgICBSRVRVUk4gTlVMTDsKKyAgRU5ECitcJFwkIGxhbmd1 YWdlIHBscGdzcWw7CitDUkVBVEUgVFJJR0dFUiBpbnNlcnRfdHJpZworQkVGT1JFIElOU0VSVCBP TiB0ZXN0X3RhYl9wYXJ0aXRpb24KK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmln Z2VyX2Z1bmMoKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBFTkFCTEUgUkVQTElD QSBUUklHR0VSIGluc2VydF90cmlnOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9n IGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisK KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0 X3RhYl9wYXJ0aXRpb25lZCIpOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJ cXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9u ICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0 ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHRyaWdn ZXIgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCSJEUk9QIFRSSUdHRVIgaW5zZXJ0X3RyaWcgT04gdGVzdF90 YWJfcGFydGl0aW9uIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24g dG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFy dGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNj cmliZXIgYWZ0ZXIgZHJvcHBpbmcgdHJpZ2dlcicpOworCisjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9u IGNvbnRhaW5zIGEKKyMgbm9uLWltbXV0YWJsZSBmdW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBz aWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkKKyMgcGFyYWxsZWwgd29ya2VyIGluIHRo aXMgY2FzZS4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIEZpcnN0IHdlIGNoZWNrIHRoZSBj b2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgVkFM VUVTKDEpIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBx cXsKK0NSRUFURSBGVU5DVElPTiBmdW5jX2NvdW50X3RhYjIoKSBSRVRVUk5TIElOVCBBUyBcJFwk CisgIEJFR0lOCisgICAgUkVUVVJOIChTRUxFQ1QgY291bnQoKikgRlJPTSBwdWJsaWMudGVzdF90 YWIyKTsKKyAgRU5ECitcJFwkIGxhbmd1YWdlIHBscGdzcWw7CitBTFRFUiBUQUJMRSB0ZXN0X3Rh YjEgQUREIENPTFVNTiBiIGludCBERUZBVUxUIGZ1bmNfY291bnRfdGFiMigpOworfSk7CisKKyMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAuPSBxeworQkVHSU47CitUUlVOQ0FURSB0ZXN0 X3RhYjI7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjEgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMShhKSBWQUxVRVMoMSki KTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1 YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90 IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNj cmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisj IEFsdGVyIGRlZmF1bHQgdmFsdWVzIHRvIGltbXV0YWJsZSBleHByZXNzaW9uLCBub3cgaXQgd29y a3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFC TEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBiIFNFVCBERUZBVUxUIDEiKTsKKworIyBXYWl0IGZv ciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3 b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisk cmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLAorCSdk YXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVz c2lvbicpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90 YWIxIERST1AgQ09MVU1OIGIiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0 Z3JlcycsIHFxeworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxOworVFJVTkNBVEUgVEFCTEUgdGVz dF90YWIyOworfSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisjIFRoZW4gd2UgY2hlY2sgdGhlIGNvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24g b24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBTFRFUiBDT0xVTU4gYiBTRVQg REVGQVVMVCByYW5kb20oKSIpOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5v dyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYl9w YXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIv RVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJw dWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIg c3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgZGVmYXVsdCB2YWx1 ZSBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBTFRF UiBDT0xVTU4gYiBEUk9QIERFRkFVTFQiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0 cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGRlZmF1bHQgdmFsdWUgZXhwcmVz c2lvbicpOworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgSXQgaXMgbm90IGFsbG93ZWQgdGhh dCBkb21haW4gY29uc3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZQor IyBmdW5jdGlvbiBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0 ZWQgYnkgcGFyYWxsZWwKKyMgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorCisjIEJlY2F1c2UgdGhlIGNvbHVtbiB0eXBlIG9mIHRoZSBwYXJ0aXRpb24gdGFibGUg bXVzdCBiZSB0aGUgc2FtZSBhcyBpdHMgcGFyZW50CisjIHRhYmxlLCBvbmx5IHRlc3Qgbm9ybWFs IHRhYmxlIGhlcmUuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5T RVJUIElOVE8gdGVzdF90YWIyIFZBTFVFUygxKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBET01BSU4gdG1wX2RvbWFpbiBBUyBpbnQg Q0hFQ0sgKFZBTFVFID4gLTEpOworQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBh IFRZUEUgdG1wX2RvbWFpbjsKK30pOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRE9NQUlOIHRtcF9kb21haW4gQVMgSU5UIENPTlNUUkFJ TlQgZG9tYWluX2NoZWNrIENIRUNLIChWQUxVRSA+PSBmdW5jX2NvdW50X3RhYjIoKSk7CitBTFRF UiBUQUJMRSB0ZXN0X3RhYjEgQUxURVIgQ09MVU1OIGEgVFlQRSB0bXBfZG9tYWluOworfSk7CisK KyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAuPSBxeworQkVHSU47CitUUlVOQ0FURSB0 ZXN0X3RhYjI7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjEgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMShhKSBWQUxVRVMo MSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2Rl X3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fu bm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1 YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOwor CisjIERyb3AgZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiwgbm93IGl0IHdvcmtzLgorJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIERPTUFJTiB0bXBf ZG9tYWluIERST1AgQ09OU1RSQUlOVCBkb21haW5fY2hlY2siKTsKKworIyBXYWl0IGZvciB0aGlz IHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIu Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0 ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLAorCSdkYXRhIHJl cGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicK Kyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFi MSBBTFRFUiBDT0xVTU4gYSBUWVBFIGludCIpOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo CisJJ3Bvc3RncmVzJywgcXF7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CitUUlVOQ0FURSBU QUJMRSB0ZXN0X3RhYjI7Cit9KTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBJdCBpcyBub3QgYWxsb3dlZCB0 aGF0IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUgZnVuY3Rp b24KKyMgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5 IHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzCisjIGNhc2UuCisjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KworIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29uc3RyYWludCBleHByZXNzaW9uIG9uIG5vcm1hbCB0 YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5U TyB0ZXN0X3RhYjIgVkFMVUVTKDEpIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgK KwkncG9zdGdyZXMnLCBxcXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBBREQgQ09OU1RSQUlOVCBj b25zdF90YWIxX3Vuc2FmZSBDSEVDSyhhID49IGZ1bmNfY291bnRfdGFiMigpKTsKK30pOworCisj IENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9k ZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lOOworVFJVTkNBVEUgdGVz dF90YWIyOworSU5TRVJUIElOVE8gdGVzdF90YWIxIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwMDApIHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEoYSkgVkFMVUVTKDEp Iik7CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5v dCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJz Y3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKwor IyBBbHRlciBjb25zdHJhaW50IGV4cHJlc3Npb24gdG8gaW1tdXRhYmxlIGV4cHJlc3Npb24sIG5v dyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBx cXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29uc3RfdGFiMV91bnNh ZmU7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTlNUUkFJTlQgY29uc3RfdGFiMV9zYWZl IENIRUNLKGEgPj0gMCk7Cit9KTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2Fj dGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3Rh YjEiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2Ny aWJlciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicpOworCisjIENsZWFuIHVwIHRl c3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCBjb25z dF90YWIxX3NhZmUiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jlcycs IHFxeworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxOworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIy OworfSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisj IFRoZW4gd2UgY2hlY2sgdGhlIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBvbiBwYXJ0aXRpb24gdGFi bGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitBTFRF UiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUREIENPTlNUUkFJTlQgdGVzdF90YWJfY29uIGNo ZWNrIChhID4gcmFuZG9tKCkpOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZy b20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3Rh Yl9wYXJ0aXRpb25lZCIpOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIv RVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJw dWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIg c3RyZWFtaW5nID0gcGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgY29uc3RyYWludCBv biB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENP TlNUUkFJTlQgdGVzdF90YWJfY29uIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJh bnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVz dF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdkYXRhIHJlcGxpY2F0 ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBjb25zdHJhaW50IGV4cHJlc3Npb24nKTsK KworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgZm9yZWln biBrZXkgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yCisjIHJlcG9ydGVk IGJ5IHBhcmFsbGVsIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KworIyBGaXJzdCB3ZSBjaGVjayB0aGUgZm9yZWlnbiBrZXkgb24gbm9ybWFsIHRhYmxlLgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgVEFCTEUg dGFiX25vcHVibGljKGEgaW50KTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMiBBREQgUFJJTUFSWSBL RVkgKGEpOworQUxURVIgVEFCTEUgdGVzdF90YWIyIFJFUExJQ0EgSURFTlRJVFkgRlVMTDsKK0lO U0VSVCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSk7Cit9KTsKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIyIEFERCBQUklNQVJZIEtF WSAoYSk7Iik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBx cXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMSBBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYjFmayBGT1JF SUdOIEtFWShhKSBSRUZFUkVOQ0VTIHRlc3RfdGFiMihhKTsKK1NFTEVDVCAnQUxURVIgVEFCTEUg dGVzdF90YWIxIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgIicgfHwgdGduYW1lIHx8ICciJyBGUk9N IHBnX3RyaWdnZXIgV0hFUkUgdGdyZWxpZCA9ICd0ZXN0X3RhYjEnOjpyZWdjbGFzczo6b2lkIFxc Z2V4ZWMKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKyRv ZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCiskaW4gLj0gcXsKK0JFR0lO OworSU5TRVJUIElOVE8gdGVzdF90YWIxKGEpIFZBTFVFUygxKTsKK0lOU0VSVCBJTlRPIHRhYl9u b3B1YmxpYyBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworfTsK KyRoLT5wdW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi REVMRVRFIEZST00gdGVzdF90YWIyIik7CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307Cisk aC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6 ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMu dGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFs bGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgdGVz dF90YWIxZmsiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBi ZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lz KCRyZXN1bHQsIHFxKDEpLAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBk cm9wcGluZyB0aGUgZm9yZWlnbiBrZXknKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0 aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcXsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFi MjsKK30pOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKwor IyBUaGVuIHdlIGNoZWNrIHRoZSBmb3JlaWduIGtleSBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitDUkVBVEUgVEFCTEUg dGVzdF90YWJfcGFydGl0aW9uX2YgKGEgaW50IHByaW1hcnkga2V5KTsKK0FMVEVSIFRBQkxFIHRl c3RfdGFiX3BhcnRpdGlvbiBBREQgQ09OU1RSQUlOVCB0ZXN0X3RhYl9wYXRpdGlvbl9mayBGT1JF SUdOIEtFWShhKSBSRUZFUkVOQ0VTIHRlc3RfdGFiX3BhcnRpdGlvbl9mKGEpOworfSk7CisKKyMg Q2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2Rl X3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIklOU0VSVCBJTlRPIHRlc3RfdGFiX3BhcnRpdGlvbmVkIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKSIKKyk7CisKKyRub2Rl X3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fu bm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25l ZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCisJ JG9mZnNldCk7CisKKyMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vi c2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQg dGVzdF90YWJfcGF0aXRpb25fZmsiKTsKKworIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFu c2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiskbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0 X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksCisJJ2RhdGEgcmVwbGlj YXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRoZSBmb3JlaWduIGtleScpOworCisk bm9kZV9zdWJzY3JpYmVyLT5zdG9wOworJG5vZGVfcHVibGlzaGVyLT5zdG9wOworCitkb25lX3Rl c3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYjVhNGZkZS4uOTk0OTFmYiAx MDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rv b2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE4OTIsNiArMTg5Miw3IEBAIFBhZ2VYTG9n UmVjUHRyCiBQYWdldGFibGVFbnRyeQogUGFpcnMKIFBhcmFsbGVsQXBwZW5kU3RhdGUKK1BhcmFs bGVsQXBwbHlTYWZldHkKIFBhcmFsbGVsQml0bWFwSGVhcFN0YXRlCiBQYXJhbGxlbEJsb2NrVGFi bGVTY2FuRGVzYwogUGFyYWxsZWxCbG9ja1RhYmxlU2NhbldvcmtlcgotLSAKMi43LjIud2luZG93 cy4xCgo= --_006_OS0PR01MB5716546863340CA19EC5F8C394789OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v26-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v26-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v26-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=61501; creation-date="Wed, 31 Aug 2022 09:46:00 GMT"; modification-date="Wed, 31 Aug 2022 09:55:44 GMT" Content-Transfer-Encoding: base64 RnJvbSBkNzFiOGI2MWRkYzM5OTM3OWIwNDE5OTdhY2Q0Y2NiM2NmZmY5M2Y0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjQgQXVnIDIwMjIgMjE6MDc6NDQgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyNiA0LzVdIFJldHJ5IHRvIGFwcGx5IHN0cmVhbWluZyB4YWN0IG9ubHkgaW4gYXBwbHkgd29y a2VyCgpXaGVuIHRoZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIGlzIHNldCBzdHJlYW1pbmc9cGFy YWxsZWwsIHRoZSBsb2dpYyB0cmllcyB0bwphcHBseSB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u IHVzaW5nIGFuIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSWYgdGhpcwpmYWlscyB0aGUgcGFyYWxs ZWwgd29ya2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5 aW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9 b24gbW9kZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBv ZiB0aGUgc2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFz IGJlZW4gaW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGUgc3Vi c2NyaWJlciBleGl0cyB3aXRoIGFuIGVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwg YW5kCndoZW5ldmVyIHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkIHN1Y2Nlc3NmdWxseSwgdGhp cyBmbGFnIGlzIHJlc2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEg c3RyZWFtaW5nIHRyYW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2Fj dGlvbiBoYXMgcHJldmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJl dHJ5IgpmaWVsZCkuCgpJbiBhZGRpdGlvbiwgd2hlbiBpbnRyb2R1Y2VkIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciwgd2UgYWRkZWQgc29tZSBsb2cgY2hlY2tzIHRvCmVuc3VyZSB0aGF0IHN0cmVhbWVk IHRyYW5zYWN0aW9ucyBhcmUgYXBwbGllZCBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCkJ1dCBz aW5jZSB3ZSBpbnRyb2R1Y2VkICJyZXRyeSIgbm93LCB3ZSB3aWxsIG5vdCBiZSBhYmxlIHRvIGNv bmZpcm0gd2hldGhlcgpzdHJlYW1lZCB0cmFuc2FjdGlvbnMgd2lsbCBiZSBhcHBsaWVkIGluIHBh cmFsbGVsIGFwcGx5IHdvcmtlci4gU28gcmVtb3ZlZAp0aGVzZSBsb2cgY2hlY2tzLgotLS0KIGRv Yy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA5ICsK IGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICAgICAgIHwgICA1 ICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgICAgICAgICAgICAgIHwg ICAxICsKIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCAgICAgICAgICAgICAg IHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAg ICAgICB8ICAgMSArCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2Vy LmMgICAgICB8ICAxNiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIu YyAgICAgICAgICAgfCAxODcgKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmluL3BnX2R1bXAv cGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQogc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAgICAgICAgfCAgIDQgKwogc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAgNTcgKy0tLS0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsICAgICAgfCAgNDYg Ky0tLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsICAgICAgICAg IHwgIDUyICstLS0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9y dC5wbCAgICAgfCAgNTcgKy0tLS0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3Vi eGFjdF9kZGxfYWJvcnQucGwgfCAgNDcgKy0tLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MjJfdHdvcGhhc2VfY2FzY2FkZS5wbCAgICB8ICA1NSAtLS0tLS0KIHNyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgICAgIHwgIDY3ICstLS0tLS0tCiAuLi4vdC8w MzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5wbCAgICAgICAgICAgICB8IDEzNCArKysrKysr LS0tLS0tLS0KIDE3IGZpbGVzIGNoYW5nZWQsIDI1NCBpbnNlcnRpb25zKCspLCA0OTEgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCBlNWU4YjRkLi45Nzg4OWU4IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bApAQCAtNzkyOSw2ICs3OTI5LDE1IEBAIFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtp dGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAKICAgICAg PHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnN1YnJldHJ5PC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgor ICAgICAgIFRydWUgaWYgdGhlIHByZXZpb3VzIGFwcGx5IGNoYW5nZSBmYWlsZWQsIG5lY2Vzc2l0 YXRpbmcgYSByZXRyeQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAg IDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJjb25uaW5mbzwv c3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFy YT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwKaW5kZXggMzI1ZWVl OC4uMTdjMmY1OCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0 aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNnbWwK QEAgLTI0Niw2ICsyNDYsMTEgQEAgQ1JFQVRFIFNVQlNDUklQVElPTiA8cmVwbGFjZWFibGUgY2xh c3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8L3JlcGxhY2VhYmwKICAgICAgICAgICBh bnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMgdXNlZCBieSB0aGUgc3Vic2NyaWJlci1zaWRlIHJl cGxpY2F0ZWQKICAgICAgICAgICB0YWJsZS4gMykgdGhlcmUgY2Fubm90IGJlIGFueSBmb3JlaWdu IGtleXMgdXNlZCBieSB0aGUKICAgICAgICAgICBzdWJzY3JpYmVyLXNpZGUgcmVwbGljYXRlZCB0 YWJsZS4KKyAgICAgICAgICBXaGVuIGFwcGx5aW5nIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLCBp ZiBlaXRoZXIgcmVxdWlyZW1lbnQgaXMgbm90CisgICAgICAgICAgbWV0LCB0aGUgcGFyYWxsZWwg YXBwbHkgd29ya2VyIHdpbGwgZXhpdCB3aXRoIGFuIGVycm9yLgorICAgICAgICAgIFRoZSA8bGl0 ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4gbW9kZSBpcyBkaXNyZWdhcmRlZCB3aGVuIHJldHJ5aW5n OworICAgICAgICAgIGluc3RlYWQgdGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUgYXBwbGllZCB1c2lu ZyA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4KKyAgICAgICAgICBtb2RlLgogICAgICAgICAgPC9wYXJh PgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYyBiL3NyYy9iYWNrZW5kL2Nh dGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKaW5kZXggYTUwNmZjMy4uNzIzYjE0MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYworKysgYi9zcmMvYmFja2Vu ZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCkBAIC03MSw2ICs3MSw3IEBAIEdldFN1YnNjcmlw dGlvbihPaWQgc3ViaWQsIGJvb2wgbWlzc2luZ19vaykKIAlzdWItPnN0cmVhbSA9IHN1YmZvcm0t PnN1YnN0cmVhbTsKIAlzdWItPnR3b3BoYXNlc3RhdGUgPSBzdWJmb3JtLT5zdWJ0d29waGFzZXN0 YXRlOwogCXN1Yi0+ZGlzYWJsZW9uZXJyID0gc3ViZm9ybS0+c3ViZGlzYWJsZW9uZXJyOworCXN1 Yi0+cmV0cnkgPSBzdWJmb3JtLT5zdWJyZXRyeTsKIAogCS8qIEdldCBjb25uaW5mbyAqLwogCWRh dHVtID0gU3lzQ2FjaGVHZXRBdHRyKFNVQlNDUklQVElPTk9JRCwKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lz dGVtX3ZpZXdzLnNxbAppbmRleCA1YTg0NGI2Li42NTJkNzZmIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9z eXN0ZW1fdmlld3Muc3FsCkBAIC0xMjk5LDcgKzEyOTksNyBAQCBSRVZPS0UgQUxMIE9OIHBnX3Jl cGxpY2F0aW9uX29yaWdpbl9zdGF0dXMgRlJPTSBwdWJsaWM7CiBSRVZPS0UgQUxMIE9OIHBnX3N1 YnNjcmlwdGlvbiBGUk9NIHB1YmxpYzsKIEdSQU5UIFNFTEVDVCAob2lkLCBzdWJkYmlkLCBzdWJz a2lwbHNuLCBzdWJuYW1lLCBzdWJvd25lciwgc3ViZW5hYmxlZCwKICAgICAgICAgICAgICAgc3Vi YmluYXJ5LCBzdWJzdHJlYW0sIHN1YnR3b3BoYXNlc3RhdGUsIHN1YmRpc2FibGVvbmVyciwKLSAg ICAgICAgICAgICAgc3Vic2xvdG5hbWUsIHN1YnN5bmNjb21taXQsIHN1YnB1YmxpY2F0aW9ucywg c3Vib3JpZ2luKQorICAgICAgICAgICAgICBzdWJyZXRyeSwgc3Vic2xvdG5hbWUsIHN1YnN5bmNj b21taXQsIHN1YnB1YmxpY2F0aW9ucywgc3Vib3JpZ2luKQogICAgIE9OIHBnX3N1YnNjcmlwdGlv biBUTyBwdWJsaWM7CiAKIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uX3N0YXRzIEFT CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKaW5kZXggM2RjMDNkYy4uYWM5 MmNiYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwpAQCAtNjg5LDYg KzY4OSw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1 YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJCQkJCSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX1BF TkRJTkcgOgogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9ESVNBQkxFRCk7CiAJdmFs dWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmRpc2FibGVvbmVyciAtIDFdID0gQm9vbEdldERh dHVtKG9wdHMuZGlzYWJsZW9uZXJyKTsKKwl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vi cmV0cnkgLSAxXSA9IEJvb2xHZXREYXR1bShmYWxzZSk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2Ny aXB0aW9uX3N1YmNvbm5pbmZvIC0gMV0gPQogCQlDU3RyaW5nR2V0VGV4dERhdHVtKGNvbm5pbmZv KTsKIAlpZiAob3B0cy5zbG90X25hbWUpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jCmluZGV4IGRlYTE5YmIuLjBhNjc1ZTUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxl bHdvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJh bGxlbHdvcmtlci5jCkBAIC0xMzgsNiArMTM4LDE4IEBAIHBhcmFsbGVsX2FwcGx5X2Nhbl9zdGFy dChUcmFuc2FjdGlvbklkIHhpZCkKIAkJcmV0dXJuIGZhbHNlOwogCiAJLyoKKwkgKiBEb24ndCB1 c2UgYXBwbHkgYXBwbHkgd29ya2VycyBmb3IgcmV0cmllcywgYmVjYXVzZSBpdCBpcyBwb3NzaWJs ZQorCSAqIHRoYXQgdGhlIGxhc3QgdGltZSB3ZSB0cmllZCB0byBhcHBseSBhIHRyYW5zYWN0aW9u IHVzaW5nIGFuIGFwcGx5CisJICogYXBwbHkgd29ya2VyIHRoZSBjaGVja3MgZmFpbGVkIChzZWUg ZnVuY3Rpb24KKwkgKiBwYXJhbGxlbF9hcHBseV9yZWxhdGlvbl9jaGVjaykuCisJICovCisJaWYg KE15U3Vic2NyaXB0aW9uLT5yZXRyeSkKKwl7CisJCWVsb2coREVCVUcxLCAicGFyYWxsZWwgYXBw bHkgd29ya2VycyBhcmUgbm90IHVzZWQgZm9yIHJldHJpZXMiKTsKKwkJcmV0dXJuIGZhbHNlOwor CX0KKworCS8qCiAJICogRm9yIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcg YXBwbGllZCB1c2luZyBwYXJhbGxlbCBhcHBseQogCSAqIHdvcmtlciwgd2UgY2Fubm90IGRlY2lk ZSB3aGV0aGVyIHRvIGFwcGx5IHRoZSBjaGFuZ2UgZm9yIGEgcmVsYXRpb24gdGhhdAogCSAqIGlz IG5vdCBpbiB0aGUgUkVBRFkgc3RhdGUgKHNlZSBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVs KSBhcyB3ZSB3b24ndApAQCAtMTE1OCw3ICsxMTcwLDUgQEAgcGFyYWxsZWxfYXBwbHlfcmVsYXRp b25fY2hlY2soTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpCiAJCQkJCQkic3RyZWFtaW5nID0g cGFyYWxsZWwiKSwKIAkJCQkgZXJyZGV0YWlsKCJUaGUgdW5pcXVlIGNvbHVtbiBvbiBzdWJzY3Jp YmVyIGlzIG5vdCB0aGUgdW5pcXVlICIKIAkJCQkJCSAgICJjb2x1bW4gb24gcHVibGlzaGVyIG9y IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSAiCi0JCQkJCQkgICAibm9uLWltbXV0YWJsZSBmdW5jdGlv bi4iKSwKLQkJCQkgZXJyaGludCgiUGxlYXNlIGNoYW5nZSB0byB1c2Ugc3Vic2NyaXB0aW9uIHBh cmFtZXRlciAlcy4iLAotCQkJCQkJInN0cmVhbWluZyA9IG9uIikpKTsKKwkJCQkJCSAgICJub24t aW1tdXRhYmxlIGZ1bmN0aW9uLiIpKSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYwppbmRleCBhN2UxZWEyLi41ZWRiMGZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTM4OCw3ICszODgsNyBAQCBzdGF0aWMgdm9pZCBzdG9y ZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24pOwogCiBzdGF0aWMgdm9pZCBt YXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpOwogCi1zdGF0aWMgdm9pZCBEaXNhYmxlU3Vi c2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsKK3N0YXRpYyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25P bkVycm9yKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFs KExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9o YW5kbGVfaW5zZXJ0X2ludGVybmFsKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCkBAIC00Mjgs NiArNDI4LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRf aW5mbyh2b2lkKTsKIHN0YXRpYyBUcmFuc2FjdGlvbkFwcGx5QWN0aW9uIGdldF90cmFuc2FjdGlv bl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCQkJCQkJCSAgIFBhcmFs bGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8pOwogCitzdGF0aWMgdm9pZCBzZXRfc3Vic2NyaXB0 aW9uX3JldHJ5KGJvb2wgcmV0cnkpOworCiAvKgogICogU2hvdWxkIHRoaXMgd29ya2VyIGFwcGx5 IGNoYW5nZXMgZm9yIGdpdmVuIHJlbGF0aW9uLgogICoKQEAgLTk4MCw2ICs5ODIsOSBAQCBhcHBs eV9oYW5kbGVfY29tbWl0KFN0cmluZ0luZm8gcykKIAogCWFwcGx5X2hhbmRsZV9jb21taXRfaW50 ZXJuYWwoJmNvbW1pdF9kYXRhKTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNl dF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRo YXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNp bmdfdGFibGVzKGNvbW1pdF9kYXRhLmVuZF9sc24pOwogCkBAIC0xMDg5LDYgKzEwOTQsOSBAQCBh cHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAKIAlpbl9yZW1vdGVfdHJhbnNhY3Rp b24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3Jp cHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJl aW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVz KHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApAQCAtMTE0NSw2ICsxMTUzLDkgQEAgYXBwbHlfaGFu ZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJc3RvcmVfZmx1c2hfcG9zaXRpb24o cHJlcGFyZV9kYXRhLmVuZF9sc24pOwogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwog CisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShm YWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25p emVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRh LmVuZF9sc24pOwogCkBAIC0xMjA2LDYgKzEyMTcsOSBAQCBhcHBseV9oYW5kbGVfcm9sbGJhY2tf cHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHJvbGxiYWNrX2Rh dGEucm9sbGJhY2tfZW5kX2xzbik7CiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAK KwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZh bHNlKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6 ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhyb2xsYmFja19kYXRh LnJvbGxiYWNrX2VuZF9sc24pOwogCkBAIC0xMjc4LDYgKzEyOTIsOSBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCQkJIHByZXBhcmVfZGF0YS54aWQpOwogCiAJ CXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKKworCQkvKiBSZXNl dCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJ fQogCWVsc2UgaWYgKGFwcGx5X2FjdGlvbiA9PSBUQV9TRVJJQUxJWkVfVE9fRklMRSkKIAl7CkBA IC0xMjk2LDYgKzEzMTMsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5m byBzKQogCiAJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5k IHN1YnhhY3QgaW5mby4gKi8KIAkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29y a2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisKKwkJLyogUmVzZXQgdGhlIHJldHJ5IGZs YWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOwogCX0KIAllbHNlCiAJCUFz c2VydChmYWxzZSk7CkBAIC0xNjYyLDYgKzE2ODIsOSBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fi b3J0KFN0cmluZ0luZm8gcykKIAogCQkJZWxvZyhERUJVRzEsICJzdHJlYW1lZCB0cmFuc2FjdGlv biAldSB3YXMgYWJvcnRlZCB1c2luZyBhbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiLAogCQkJCSB4 aWQpOworCisJCQkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJCXNldF9zdWJzY3JpcHRp b25fcmV0cnkoZmFsc2UpOwogCQl9CiAJfQogCWVsc2UgaWYgKGFwcGx5X2FjdGlvbiA9PSBUQV9T RVJJQUxJWkVfVE9fRklMRSkKQEAgLTE2NzEsNiArMTY5NCwxMCBAQCBhcHBseV9oYW5kbGVfc3Ry ZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJICogc2VyaWFsaXplZCB0byBmaWxlLgogCQkgKi8K IAkJc2VyaWFsaXplX3N0cmVhbV9hYm9ydCh4aWQsIHN1YnhpZCk7CisKKwkJLyogUmVzZXQgdGhl IHJldHJ5IGZsYWcuICovCisJCWlmIChzdWJ4aWQgPT0geGlkKQorCQkJc2V0X3N1YnNjcmlwdGlv bl9yZXRyeShmYWxzZSk7CiAJfQogCWVsc2UKIAkJQXNzZXJ0KGZhbHNlKTsKQEAgLTE4NjMsNiAr MTg5MCw5IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0luZm8gcykKIAkJICog c3Vic2tpcGxzbi4KIAkJICovCiAJCWNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihjb21taXRf ZGF0YS5jb21taXRfbHNuKTsKKworCQkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJc2V0 X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CiAJfQogCWVsc2UgaWYgKGFwcGx5X2FjdGlvbiA9 PSBUQV9TRVJJQUxJWkVfVE9fRklMRSkKIAl7CkBAIC0xODc2LDYgKzE5MDYsOSBAQCBhcHBseV9o YW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAKIAkJLyogVW5saW5rIHRoZSBmaWxl cyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLwogCQlzdHJlYW1f Y2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCisJCS8qIFJl c2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsK IAl9CiAJZWxzZQogCQlBc3NlcnQoZmFsc2UpOwpAQCAtMzkyNSwyMCArMzk1OCwyOCBAQCBzdGFy dF90YWJsZV9zeW5jKFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcywgY2hhciAqKm15c2xvdG5h bWUpCiAJfQogCVBHX0NBVENIKCk7CiAJeworCQkvKgorCQkgKiBFbWl0IHRoZSBlcnJvciBtZXNz YWdlLCBhbmQgcmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCisJCSAqIHN0 YXRlCisJCSAqLworCQlIT0xEX0lOVEVSUlVQVFMoKTsKKworCQlFbWl0RXJyb3JSZXBvcnQoKTsK KwkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7CisJCUZsdXNoRXJyb3JTdGF0ZSgpOworCisJ CVJFU1VNRV9JTlRFUlJVUFRTKCk7CisKKwkJLyogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIGR1 cmluZyB0YWJsZSBzeW5jaHJvbml6YXRpb24gKi8KKwkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRp b25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwgZmFsc2UpOworCiAJCWlmIChNeVN1YnNjcmlw dGlvbi0+ZGlzYWJsZW9uZXJyKQotCQkJRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQoKTsKLQkJ ZWxzZQotCQl7Ci0JCQkvKgotCQkJICogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIGR1cmluZyB0 YWJsZSBzeW5jaHJvbml6YXRpb24uIEFib3J0Ci0JCQkgKiB0aGUgY3VycmVudCB0cmFuc2FjdGlv biBzbyB0aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNlbnQgaW4gYW4KLQkJCSAqIGlkbGUgc3Rh dGUuCi0JCQkgKi8KLQkJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCQkJcGdzdGF0X3Jl cG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwgZmFsc2UpOworCQkJ RGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3IoKTsKIAotCQkJUEdfUkVfVEhST1coKTsKLQkJfQor CQkvKiBTZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkodHJ1 ZSk7CisKKwkJcHJvY19leGl0KDApOwogCX0KIAlQR19FTkRfVFJZKCk7CiAKQEAgLTM5NjMsMjAg KzQwMDQsMjcgQEAgc3RhcnRfYXBwbHkoWExvZ1JlY1B0ciBvcmlnaW5fc3RhcnRwb3MpCiAJfQog CVBHX0NBVENIKCk7CiAJeworCQkvKgorCQkgKiBFbWl0IHRoZSBlcnJvciBtZXNzYWdlLCBhbmQg cmVjb3ZlciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCisJCSAqIHN0YXRlCisJCSAq LworCQlIT0xEX0lOVEVSUlVQVFMoKTsKKworCQlFbWl0RXJyb3JSZXBvcnQoKTsKKwkJQWJvcnRP dXRPZkFueVRyYW5zYWN0aW9uKCk7CisJCUZsdXNoRXJyb3JTdGF0ZSgpOworCisJCVJFU1VNRV9J TlRFUlJVUFRTKCk7CisKKwkJLyogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5 aW5nIGNoYW5nZXMgKi8KKwkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJz Y3JpcHRpb24tPm9pZCwKKwkJCQkJCQkJCQkgIWFtX3RhYmxlc3luY193b3JrZXIoKSk7CisKIAkJ aWYgKE15U3Vic2NyaXB0aW9uLT5kaXNhYmxlb25lcnIpCi0JCQlEaXNhYmxlU3Vic2NyaXB0aW9u QW5kRXhpdCgpOwotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBSZXBvcnQgdGhlIHdvcmtlciBm YWlsZWQgd2hpbGUgYXBwbHlpbmcgY2hhbmdlcy4gQWJvcnQgdGhlCi0JCQkgKiBjdXJyZW50IHRy YW5zYWN0aW9uIHNvIHRoYXQgdGhlIHN0YXRzIG1lc3NhZ2UgaXMgc2VudCBpbiBhbgotCQkJICog aWRsZSBzdGF0ZS4KLQkJCSAqLwotCQkJQWJvcnRPdXRPZkFueVRyYW5zYWN0aW9uKCk7Ci0JCQlw Z3N0YXRfcmVwb3J0X3N1YnNjcmlwdGlvbl9lcnJvcihNeVN1YnNjcmlwdGlvbi0+b2lkLCAhYW1f dGFibGVzeW5jX3dvcmtlcigpKTsKKwkJCURpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKCk7CiAK LQkJCVBHX1JFX1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlz ZXRfc3Vic2NyaXB0aW9uX3JldHJ5KHRydWUpOwogCX0KIAlQR19FTkRfVFJZKCk7CiB9CkBAIC00 MjM4LDM5ICs0Mjg2LDIwIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIH0KIAog LyoKLSAqIEFmdGVyIGVycm9yIHJlY292ZXJ5LCBkaXNhYmxlIHRoZSBzdWJzY3JpcHRpb24gaW4g YSBuZXcgdHJhbnNhY3Rpb24KLSAqIGFuZCBleGl0IGNsZWFubHkuCisgKiBEaXNhYmxlIHRoZSBz dWJzY3JpcHRpb24gaW4gYSBuZXcgdHJhbnNhY3Rpb24uCiAgKi8KIHN0YXRpYyB2b2lkCi1EaXNh YmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKQorRGlzYWJsZVN1YnNjcmlwdGlvbk9uRXJyb3Io dm9pZCkKIHsKLQkvKgotCSAqIEVtaXQgdGhlIGVycm9yIG1lc3NhZ2UsIGFuZCByZWNvdmVyIGZy b20gdGhlIGVycm9yIHN0YXRlIHRvIGFuIGlkbGUKLQkgKiBzdGF0ZQotCSAqLwotCUhPTERfSU5U RVJSVVBUUygpOwotCi0JRW1pdEVycm9yUmVwb3J0KCk7Ci0JQWJvcnRPdXRPZkFueVRyYW5zYWN0 aW9uKCk7Ci0JRmx1c2hFcnJvclN0YXRlKCk7Ci0KLQlSRVNVTUVfSU5URVJSVVBUUygpOwotCi0J LyogUmVwb3J0IHRoZSB3b3JrZXIgZmFpbGVkIGR1cmluZyBlaXRoZXIgdGFibGUgc3luY2hyb25p emF0aW9uIG9yIGFwcGx5ICovCi0JcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlM b2dpY2FsUmVwV29ya2VyLT5zdWJpZCwKLQkJCQkJCQkJCSAhYW1fdGFibGVzeW5jX3dvcmtlcigp KTsKLQogCS8qIERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiAqLwogCVN0YXJ0VHJhbnNhY3Rpb25D b21tYW5kKCk7CiAJRGlzYWJsZVN1YnNjcmlwdGlvbihNeVN1YnNjcmlwdGlvbi0+b2lkKTsKIAlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIE5vdGlmeSB0aGUgc3Vic2NyaXB0aW9u IGhhcyBiZWVuIGRpc2FibGVkIGFuZCBleGl0ICovCisJLyogTm90aWZ5IHRoZSBzdWJzY3JpcHRp b24gaGFzIGJlZW4gZGlzYWJsZWQgKi8KIAllcmVwb3J0KExPRywKIAkJCWVycm1zZygibG9naWNh bCByZXBsaWNhdGlvbiBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBiZWVuIGRpc2FibGVkIGR1ZSB0 byBhbiBlcnJvciIsCiAJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUpKTsKLQotCXByb2NfZXhp dCgwKTsKIH0KIAogLyoKQEAgLTQ1MzcsMyArNDU2Niw2NyBAQCBnZXRfdHJhbnNhY3Rpb25fYXBw bHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndp bmZvKQogCWVsc2UKIAkJcmV0dXJuIFRBX1NFUklBTElaRV9UT19GSUxFOwogfQorCisvKgorICog U2V0IHN1YnJldHJ5IG9mIHBnX3N1YnNjcmlwdGlvbiBjYXRhbG9nLgorICoKKyAqIElmIHJldHJ5 IGlzIHRydWUsIHN1YnNjcmliZXIgaXMgYWJvdXQgdG8gZXhpdCB3aXRoIGFuIGVycm9yLiBPdGhl cndpc2UsIGl0CisgKiBtZWFucyB0aGF0IHRoZSB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCBzdWNj ZXNzZnVsbHkuCisgKi8KK3N0YXRpYyB2b2lkCitzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wg cmV0cnkpCit7CisJUmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0dXA7CisJYm9vbAkJc3RhcnRl ZF90eCA9IGZhbHNlOworCWJvb2wJCW51bGxzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisJYm9v bAkJcmVwbGFjZXNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKwlEYXR1bQkJdmFsdWVzW05hdHRz X3BnX3N1YnNjcmlwdGlvbl07CisKKwkvKiBGYXN0IHBhdGggLSBpZiBubyBzdGF0ZSBjaGFuZ2Ug dGhlbiBub3RoaW5nIHRvIGRvICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5yZXRyeSA9PSByZXRy eSkKKwkJcmV0dXJuOworCisJLyogRmFzdCBwYXRoIC0gc2tpcCBmb3IgcGFyYWxsZWwgYXBwbHkg d29ya2VycyAqLworCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuOwor CisJaWYgKCFJc1RyYW5zYWN0aW9uU3RhdGUoKSkKKwl7CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21t YW5kKCk7CisJCXN0YXJ0ZWRfdHggPSB0cnVlOworCX0KKworCS8qIExvb2sgdXAgdGhlIHN1YnNj cmlwdGlvbiBpbiB0aGUgY2F0YWxvZyAqLworCXJlbCA9IHRhYmxlX29wZW4oU3Vic2NyaXB0aW9u UmVsYXRpb25JZCwgUm93RXhjbHVzaXZlTG9jayk7CisJdHVwID0gU2VhcmNoU3lzQ2FjaGVDb3B5 MShTVUJTQ1JJUFRJT05PSUQsCisJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKE15U3Vic2NyaXB0 aW9uLT5vaWQpKTsKKworCWlmICghSGVhcFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9S LCAic3Vic2NyaXB0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsIE15U3Vic2NyaXB0aW9uLT5u YW1lKTsKKworCUxvY2tTaGFyZWRPYmplY3QoU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgTXlTdWJz Y3JpcHRpb24tPm9pZCwgMCwKKwkJCQkJIEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKiBGb3JtIGEg bmV3IHR1cGxlLiAqLworCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKwltZW1z ZXQobnVsbHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsKKwltZW1zZXQocmVwbGFjZXMsIGZhbHNl LCBzaXplb2YocmVwbGFjZXMpKTsKKworCS8qIFJlc2V0IHN1YnJldHJ5ICovCisJdmFsdWVzW0Fu dW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ocmV0cnkpOwor CXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSB0cnVlOworCisJ dHVwID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdldERlc2NyKHJlbCksIHZhbHVl cywgbnVsbHMsCisJCQkJCQkJcmVwbGFjZXMpOworCisJLyogVXBkYXRlIHRoZSBjYXRhbG9nLiAq LworCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAtPnRfc2VsZiwgdHVwKTsKKworCS8qIENs ZWFudXAuICovCisJaGVhcF9mcmVldHVwbGUodHVwKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9j ayk7CisKKwlpZiAoc3RhcnRlZF90eCkKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9 ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuYyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKaW5kZXggMTNjOGUxMC4uODFk NTY2ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYworKysgYi9zcmMvYmlu L3BnX2R1bXAvcGdfZHVtcC5jCkBAIC00NTA3LDggKzQ1MDcsOSBAQCBnZXRTdWJzY3JpcHRpb25z KEFyY2hpdmUgKmZvdXQpCiAJbnR1cHMgPSBQUW50dXBsZXMocmVzKTsKIAogCS8qCi0JICogR2V0 IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0IGluY2x1ZGUgc3Vic2tpcGxzbiBpbiB0aGUg ZHVtcCBhcwotCSAqIGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBs b25nZXIgYmUgcmVsZXZhbnQuCisJICogR2V0IHN1YnNjcmlwdGlvbiBmaWVsZHMuIFdlIGRvbid0 IGluY2x1ZGUgc3Vic2tpcGxzbiBhbmQgc3VicmV0cnkgaW4KKwkgKiB0aGUgZHVtcCBhcyBhZnRl ciByZXN0b3JpbmcgdGhlIGR1bXAgdGhpcyB2YWx1ZSBtYXkgbm8gbG9uZ2VyIGJlCisJICogcmVs ZXZhbnQuCiAJICovCiAJaV90YWJsZW9pZCA9IFBRZm51bWJlcihyZXMsICJ0YWJsZW9pZCIpOwog CWlfb2lkID0gUFFmbnVtYmVyKHJlcywgIm9pZCIpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2Ny aXB0aW9uLmgKaW5kZXggNzlmZjc0NS4uZTI1MTZiNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbi5oCkBAIC04OCw2ICs4OCw4IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYx MDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJ Ym9vbAkJc3ViZGlzYWJsZW9uZXJyOwkvKiBUcnVlIGlmIGEgd29ya2VyIGVycm9yIHNob3VsZCBj YXVzZSB0aGUKIAkJCQkJCQkJCSAqIHN1YnNjcmlwdGlvbiB0byBiZSBkaXNhYmxlZCAqLwogCisJ Ym9vbAkJc3VicmV0cnkgQktJX0RFRkFVTFQoZik7CS8qIFRydWUgaWYgdGhlIHByZXZpb3VzIGFw cGx5IGNoYW5nZSBmYWlsZWQuICovCisKICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlh YmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQgaGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRv IHRoZSBwdWJsaXNoZXIgKi8KIAl0ZXh0CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7 CkBAIC0xMzEsNiArMTMzLDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJ ZGlzYWJsZW9uZXJyOwkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUK IAkJCQkJCQkJICogYXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgogCQkJ CQkJCQkgKiBvY2N1cnMgKi8KKwlib29sCQlyZXRyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHBy ZXZpb3VzIGFwcGx5IGNoYW5nZQorCQkJCQkJCQkgKiBmYWlsZWQuICovCiAJY2hhcgkgICAqY29u bmluZm87CQkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVibGlzaGVyICovCiAJY2hhcgkg ICAqc2xvdG5hbWU7CQkvKiBOYW1lIG9mIHRoZSByZXBsaWNhdGlvbiBzbG90ICovCiAJY2hhcgkg ICAqc3luY2NvbW1pdDsJCS8qIFN5bmNocm9ub3VzIGNvbW1pdCBzZXR0aW5nIGZvciB3b3JrZXIg Ki8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCmluZGV4IDY4ZWRkY2UuLjc0MmJj ZTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysr IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtOCw1MyArOCwyMiBA QCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCi0jIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFt ZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKLSMgcmVwb3J0ZWQgYnkg cGFyYWxsZWwgYXBwbHkgd29ya2VyLgotc3ViIGNoZWNrX3BhcmFsbGVsX2xvZwotewotCW15ICgk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICRhY3Rpb24pPSBAXzsKLQlt eSAkcGFyYWxsZWxfbWVzc2FnZSA9ICcnOwotCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRw YXJhbGxlbF9tZXNzYWdlID0gam9pbigiIiwgJ3N0cmVhbWVkIHRyYW5zYWN0aW9uIFxkKyB3YXMg JywgJGFjdGlvbiwgJyB1c2luZyBhbiBwYXJhbGxlbCBhcHBseSB3b3JrZXInKTsKLQotCQkkbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0 KTsKLQl9Ci19Ci0KICMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGlj aCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgogIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29k ZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCiAjIHN0cmVhbWluZz1w YXJhbGxlbCBjYXNlcy4KIHN1YiB0ZXN0X3N0cmVhbWluZwogewotCW15ICgkbm9kZV9wdWJsaXNo ZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisJbXkg KCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpID0gQF87CiAKIAkj IEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0 a0IgbGltaXQuCiAJbXkgJGluICA9ICcnOwogCW15ICRvdXQgPSAnJzsKIAotCW15ICRvZmZzZXQg PSAwOwotCiAJbXkgJHRpbWVyID0gSVBDOjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6 OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQpOwogCiAJbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJh Y2tncm91bmRfcHNxbCgncG9zdGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVyLAogCQlvbl9lcnJv cl9zdG9wID0+IDApOwogCi0JIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVk IGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKLQkjIHRoYXQgc3RyZWFtZWQgdHJhbnNh Y3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgotCSMgV2Ug aGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBi dW1wIHVwIHRoZQotCSMgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJ JG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9n X21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7Ci0J fQotCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9 IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkkaW4gLj0gcXsKIAlCRUdJTjsKIAlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUwMDApIHMoaSk7CkBAIC03OSw4ICs0OCw2IEBAIHN1YiB0ZXN0X3N0cmVhbWlu ZwogCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNo ZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWws ICJjb21taXR0ZWQiKTsKLQogCW15ICRyZXN1bHQgPQogCSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CkBAIC05MSw5ICs1OCw2IEBAIHN1YiB0ZXN0X3N0cmVh bWluZwogCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiQUxURVIg U1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKIAotCSMgQ2hlY2sgdGhl IHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOwotCiAJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dz IHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK IAkJJ3Bvc3RncmVzJywgcXsKQEAgLTEwNiw4ICs3MCw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwog CiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNr X3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICJj b21taXR0ZWQiKTsKLQogCSRyZXN1bHQgPQogCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5 KSBGUk9NIHRlc3RfdGFiIik7CkBAIC0xMjIsMTYgKzg0LDExIEBAIHN1YiB0ZXN0X3N0cmVhbWlu ZwogCQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBjID0gJ2Vwb2NoJzo6dGltZXN0YW1wdHogKyA5ODc2 NTQzMjEgKiBpbnRlcnZhbCAnMXMnIgogCSk7CiAKLQkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxv ZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsK LQogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJVUERBVEUgdGVz dF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKIAogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2Ny aWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAiY29tbWl0dGVkIik7Ci0KIAkkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291bnQo KiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNvdW50KGQgPSA5 OTkpIEZST00gdGVzdF90YWIiCiAJKTsKQEAgLTE0MiwxNCArOTksNiBAQCBzdWIgdGVzdF9zdHJl YW1pbmcKIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKSIpOwogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLQkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlm ICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9z dGdyZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOwotCQkkbm9k ZV9zdWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQogfQogCiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQpA QCAtMTk3LDcgKzE0Niw3IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8 MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLXRl c3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs IDApOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAk YXBwbmFtZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRl c3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwpAQCAtMjIwLDcgKzE2OSw3IEBAICRu b2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAogICBvciBkaWUKICAg IlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5n aW5nIFNVQlNDUklQVElPTiI7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0 b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MTZfc3RyZWFtX3N1YnhhY3QucGwKaW5kZXggNWVjNjU2ZS4uYWIyMmY5MiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbApAQCAtOCw0MyArOCwxMiBA QCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpV dGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCi0jIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFt ZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKLSMgcmVwb3J0ZWQgYnkg cGFyYWxsZWwgYXBwbHkgd29ya2VyLgotc3ViIGNoZWNrX3BhcmFsbGVsX2xvZwotewotCW15ICgk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICRhY3Rpb24pPSBAXzsKLQlt eSAkcGFyYWxsZWxfbWVzc2FnZSA9ICcnOwotCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRw YXJhbGxlbF9tZXNzYWdlID0gam9pbigiIiwgJ3N0cmVhbWVkIHRyYW5zYWN0aW9uIFxkKyB3YXMg JywgJGFjdGlvbiwgJyB1c2luZyBhbiBwYXJhbGxlbCBhcHBseSB3b3JrZXInKTsKLQotCQkkbm9k ZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0 KTsKLQl9Ci19Ci0KICMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGlj aCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgogIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29k ZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCiAjIHN0cmVhbWluZz1w YXJhbGxlbCBjYXNlcy4KIHN1YiB0ZXN0X3N0cmVhbWluZwogewotCW15ICgkbm9kZV9wdWJsaXNo ZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87Ci0KLQlt eSAkb2Zmc2V0ID0gMDsKLQotCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmll ZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCi0JIyB0aGF0IHN0cmVhbWVkIHRyYW5z YWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGFuIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLQkjIFdl IGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28g YnVtcCB1cCB0aGUKLQkjIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0J CSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxv Z19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwot CX0KLQotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQg PSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRu b2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKSA9IEBfOwogCiAJIyBJbnNlcnQsIHVwZGF0ZSBhbmQg ZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCA2NGtCIGxpbWl0LgogCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKApAQCAtNzQsOCArNDMsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAogCSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVja19wYXJh bGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAiY29tbWl0 dGVkIik7Ci0KIAlteSAkcmVzdWx0ID0KIAkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkg RlJPTSB0ZXN0X3RhYiIpOwpAQCAtODgsMTMgKzU1LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJ CSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CiAJJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3Np dHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7 Ci0JCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKLQl9CiB9CiAKICMgQ3JlYXRlIHB1Ymxpc2hl ciBub2RlCkBAIC0xNDIsNyArMTAyLDcgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQs IHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIn KTsKIAotdGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAk YXBwbmFtZSwgMCk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKICMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCkBAIC0xNjUsNyArMTI1 LDcgQEAgJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAgIG9y IGRpZQogICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0 ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotdGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7Cit0ZXN0X3N0cmVhbWluZygkbm9k ZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKTsKIAogJG5vZGVfc3Vic2Ny aWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE3X3N0cmVhbV9kZGwucGwKaW5kZXggMGJlY2ExMS4uNDNmOWNhMyAxMDA2NDQKLS0tIGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKKysrIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKQEAgLTgsMjkgKzgsMTIgQEAgdXNlIFBv c3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1 c2UgVGVzdDo6TW9yZTsKIAotIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5z YWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Ci0jIHJlcG9ydGVkIGJ5IHBhcmFsbGVs IGFwcGx5IHdvcmtlci4KLXN1YiBjaGVja19wYXJhbGxlbF9sb2cKLXsKLQlteSAoJG5vZGVfc3Vi c2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkYWN0aW9uKT0gQF87Ci0JbXkgJHBhcmFs bGVsX21lc3NhZ2UgPSAnJzsKLQotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkcGFyYWxsZWxf bWVzc2FnZSA9IGpvaW4oIiIsICdzdHJlYW1lZCB0cmFuc2FjdGlvbiBcZCsgd2FzICcsICRhY3Rp b24sICcgdXNpbmcgYW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyJyk7Ci0KLQkJJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7Ci0JfQot fQotCiAjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJl bGF0ZWQgdG8gInN0cmVhbWluZyIKICMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJl IHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAogIyBzdHJlYW1pbmc9cGFyYWxsZWwg Y2FzZXMuCiBzdWIgdGVzdF9zdHJlYW1pbmcKIHsKLQlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9k ZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOwotCi0JbXkgJG9mZnNl dCA9IDA7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUp ID0gQF87CiAKIAkjIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwg YW5kIERNTAogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKApAQCAtNDMsMjAgKzI2LDYgQEAg c3ViIHRlc3Rfc3RyZWFtaW5nCiAJQ09NTUlUOwogCX0pOwogCi0JIyBJZiAic3RyZWFtaW5nIiBw YXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKLQkj IHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYW4gcGFyYWxsZWwg YXBwbHkgd29ya2VyLgotCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNz YWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQotCSMgbG9nIHZlcmJvc2l0eS4KLQlpZiAo JGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3Rn cmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9z dWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQotCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJv bSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0KIAkj IGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAogCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxewpAQCAtODEsOCArNTAsNiBAQCBz dWIgdGVzdF9zdHJlYW1pbmcKIAogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CiAKLQljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNl dCwgJGlzX3BhcmFsbGVsLCAiY29tbWl0dGVkIik7Ci0KIAlteSAkcmVzdWx0ID0KIAkgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSwgY291bnQoZCksIGNvdW50KGUpIEZST00gdGVzdF90YWIiKTsKQEAgLTkwLDkgKzU3 LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vi c2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2Fs IGRlZmF1bHRzJwogCSk7CiAKLQkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBv bi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKLQogCSMgQSBsYXJn ZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwuIE9uZSBvZiB0aGUgRERM IGlzIHBlcmZvcm1lZAogCSMgYWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUg dGhlIHNjaGVtYSBzZW50IGZvciB0ZXN0X3RhYiBzbyB0aGF0CiAJIyB0aGUgbmV4dCB0cmFuc2Fj dGlvbiBoYXMgdG8gc2VuZCB0aGUgc2NoZW1hIGFnYWluLgpAQCAtMTE1LDggKzc5LDYgQEAgc3Vi IHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQs ICRpc19wYXJhbGxlbCwgImNvbW1pdHRlZCIpOwotCiAJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCksIGNvdW50KGUpLCBjb3VudChmKSBGUk9NIHRlc3RfdGFiIgogCSk7CkBAIC0xMzEs MTQgKzkzLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJQUxURVIgVEFCTEUgdGVzdF90YWIgRFJP UCBDT0xVTU4gYywgRFJPUCBDT0xVTU4gZCwgRFJPUCBDT0xVTU4gZSwgRFJPUCBDT0xVTU4gZjsK IAl9KTsKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0J IyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5v ZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21p bl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0K IH0KIAogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKQEAgLTE4Niw3ICsxNDAsNyBAQCBteSAkcmVz dWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0 ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdh cyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNo ZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2Rl X3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdw YXJhbGxlbCcKQEAgLTIwNCw3ICsxNTgsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlf dW50aWwoJ3Bvc3RncmVzJywKICAgb3IgZGllCiAgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBm b3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi10ZXN0 X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAx KTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFw cG5hbWUpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9w OwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0 X2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fi b3J0LnBsCmluZGV4IDEyZjY5M2IuLjY3Yzc3OGQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKQEAgLTgsNDMgKzgsMTIgQEAg dXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRp bHM7CiB1c2UgVGVzdDo6TW9yZTsKIAotIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVk IHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Ci0jIHJlcG9ydGVkIGJ5IHBh cmFsbGVsIGFwcGx5IHdvcmtlci4KLXN1YiBjaGVja19wYXJhbGxlbF9sb2cKLXsKLQlteSAoJG5v ZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAkYWN0aW9uKT0gQF87Ci0JbXkg JHBhcmFsbGVsX21lc3NhZ2UgPSAnJzsKLQotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkcGFy YWxsZWxfbWVzc2FnZSA9IGpvaW4oIiIsICdzdHJlYW1lZCB0cmFuc2FjdGlvbiBcZCsgd2FzICcs ICRhY3Rpb24sICcgdXNpbmcgYW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyJyk7Ci0KLQkJJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7 Ci0JfQotfQotCiAjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2gg YXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKICMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUg Y2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAogIyBzdHJlYW1pbmc9cGFy YWxsZWwgY2FzZXMuCiBzdWIgdGVzdF9zdHJlYW1pbmcKIHsKLQlteSAoJG5vZGVfcHVibGlzaGVy LCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOwotCi0JbXkg JG9mZnNldCA9IDA7Ci0KLQkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcyBzcGVjaWZpZWQg YXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawotCSMgdGhhdCBzdHJlYW1lZCB0cmFuc2Fj dGlvbiB3YXMgYXBwbGllZCB1c2luZyBhbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi0JIyBXZSBo YXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1 bXAgdXAgdGhlCi0JIyBsb2cgdmVyYm9zaXR5LgotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkk bm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKLQkJCSJsb2df bWluX21lc3NhZ2VzID0gZGVidWcxIik7Ci0JCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKLQl9 Ci0KLQkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0g LXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9k ZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSkgPSBAXzsKIAogCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFu c2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKIAkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKQEAgLTcwLDggKzM5LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAKIAkkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0JY2hlY2tfcGFyYWxsZWxf bG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgImNvbW1pdHRlZCIp OwotCiAJbXkgJHJlc3VsdCA9CiAJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKIAkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwpAQCAt NzksOSArNDYsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNh dmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycKIAkpOwogCi0JIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cg ZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7Ci0K IAkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2Vpdmlu ZyBvdXQgb2Ygb3JkZXIKIAkjIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcwogCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKApAQCAtMTAyLDE3ICs2NiwxMiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcK IAogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVj a19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAi Y29tbWl0dGVkIik7Ci0KIAkkcmVzdWx0ID0KIAkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFi Iik7CiAJaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKIAkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVw b2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNj cmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5s b2dmaWxlOwotCiAJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJl ciByZWNlaXZpbmcgcm9sbGJhY2sKIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkJJ3Bv c3RncmVzJywgcXsKQEAgLTEyNyw4ICs4Niw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFs bGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICJhYm9ydGVk Iik7Ci0KIAkkcmVzdWx0ID0KIAkgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAogCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CkBAIC0x MzgsMTQgKzk1LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMiki KTsKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0JIyBS ZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9t ZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KIH0K IAogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKQEAgLTE5Miw3ICsxNDEsNyBAQCBteSAkcmVzdWx0 ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVz dWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl cicpOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAwKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKQEAgLTIxMCw3ICsx NTksNyBAQCAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKICAg b3IgZGllCiAgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBh ZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rfc3RyZWFtaW5nKCRu b2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAkbm9kZV9zdWJz Y3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCBiL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxfYWJvcnQucGwKaW5kZXgg OTBhNzdlNS4uNDFlYzFlOCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5 X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCkBAIC05LDQzICs5LDEyIEBAIHVzZSBQ b3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwog dXNlIFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFu c2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBieSBwYXJhbGxl bCBhcHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkgKCRub2RlX3N1 YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJGFjdGlvbik9IEBfOwotCW15ICRwYXJh bGxlbF9tZXNzYWdlID0gJyc7Ci0KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJHBhcmFsbGVs X21lc3NhZ2UgPSBqb2luKCIiLCAnc3RyZWFtZWQgdHJhbnNhY3Rpb24gXGQrIHdhcyAnLCAkYWN0 aW9uLCAnIHVzaW5nIGFuIHBhcmFsbGVsIGFwcGx5IHdvcmtlcicpOwotCi0JCSRub2RlX3N1YnNj cmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOwotCX0K LX0KLQogIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSBy ZWxhdGVkIHRvICJzdHJlYW1pbmciCiAjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBi ZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKICMgc3RyZWFtaW5nPXBhcmFsbGVs IGNhc2VzLgogc3ViIHRlc3Rfc3RyZWFtaW5nCiB7Ci0JbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKLQotCW15ICRvZmZz ZXQgPSAwOwotCi0JIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJw YXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKLQkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24g d2FzIGFwcGxpZWQgdXNpbmcgYW4gcGFyYWxsZWwgYXBwbHkgd29ya2VyLgotCSMgV2UgaGF2ZSB0 byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVw IHRoZQotCSMgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9t ZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQotCi0J IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCi0JJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUpID0gQF87CiAKIAkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rp b24gd2l0aCBEREwsIERNTCBhbmQgUk9MTEJBQ0tzCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3Bz cWwoCkBAIC02OSw4ICszOCw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygk bm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICJjb21taXR0ZWQiKTsKLQog CW15ICRyZXN1bHQgPQogCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKQEAgLTg1LDE0 ICs1Miw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1Ag Q09MVU1OIGM7CiAJfSk7CiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKLQotCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkK LQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAot CQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7Ci0JCSRub2RlX3N1YnNjcmliZXItPnJl bG9hZDsKLQl9CiB9CiAKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCkBAIC0xMzksNyArOTgsNyBA QCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFi Iik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQg dG8gc3Vic2NyaWJlcicpOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2Rl X3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcK QEAgLTE1Nyw3ICsxMTYsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bv c3RncmVzJywKICAgb3IgZGllCiAgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkg dG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi10ZXN0X3N0cmVhbWlu Zygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKK3Rlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwog CiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgYi9z cmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAppbmRleCBiOTZl Mjc0Li5lOGYyMDczIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdv cGhhc2VfY2FzY2FkZS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhh c2VfY2FzY2FkZS5wbApAQCAtMTEsMjEgKzExLDYgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNs dXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAot IyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0 ZWQgc3VjY2Vzc2Z1bGx5Ci0jIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLXN1 YiBjaGVja19wYXJhbGxlbF9sb2cKLXsKLQlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwg JHN0cmVhbWluZ19tb2RlLCAkYWN0aW9uKT0gQF87Ci0JbXkgJHBhcmFsbGVsX21lc3NhZ2UgPSAn JzsKLQotCWlmICgkc3RyZWFtaW5nX21vZGUgZXEgJ3BhcmFsbGVsJykKLQl7Ci0JCSRwYXJhbGxl bF9tZXNzYWdlID0gam9pbigiIiwgJ3N0cmVhbWVkIHRyYW5zYWN0aW9uIFxkKyB3YXMgJywgJGFj dGlvbiwgJyB1c2luZyBhbiBwYXJhbGxlbCBhcHBseSB3b3JrZXInKTsKLQotCQkkbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKLQl9 Ci19Ci0KICMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUg cmVsYXRlZCB0byAic3RyZWFtaW5nIiBwYXJhbWV0ZXIKICMgc28gdGhlIHNhbWUgY29kZSBjYW4g YmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kIHN0cmVhbWluZz1wYXJhbGxlbAog IyBjYXNlcy4KQEAgLTM0LDkgKzE5LDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJbXkgKCRub2Rl X0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICRzdHJlYW1pbmdf bW9kZSkgPQogCSAgQF87CiAKLQlteSAkb2Zmc2V0X0IgPSAwOwotCW15ICRvZmZzZXRfQyA9IDA7 Ci0KIAlteSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsICIK IAkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KQEAgLTc4LDIzICs2MCw2IEBA IHN1YiB0ZXN0X3N0cmVhbWluZwogCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24g c3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgogCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKIAotCSMgSWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAi cGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNoZWNrCi0JIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9u IHdhcyBwcmVwYXJlZCB1c2luZyBhbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCi0JIyBXZSBoYXZl IHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRoYXQsIHNvIGJ1bXAg dXAgdGhlCi0JIyBsb2cgdmVyYm9zaXR5LgotCWlmICgkc3RyZWFtaW5nX21vZGUgZXEgJ3BhcmFs bGVsJykKLQl7Ci0JCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9n X21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9CLT5yZWxvYWQ7Ci0KLQkJJG5vZGVf Qy0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVi dWcxIik7Ci0JCSRub2RlX0MtPnJlbG9hZDsKLQl9Ci0KLQkjIENoZWNrIHRoZSBzdWJzY3JpYmVy IGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0X0IgPSAtcyAkbm9kZV9CLT5sb2dmaWxlOwotCSRv ZmZzZXRfQyA9IC1zICRub2RlX0MtPmxvZ2ZpbGU7Ci0KIAkjIEluc2VydCwgdXBkYXRlIGFuZCBk ZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgogCSMgVGhlbiAyUEMg UFJFUEFSRQogCSRub2RlX0EtPnNhZmVfcHNxbCgKQEAgLTEwOCw5ICs3Myw2IEBAIHN1YiB0ZXN0 X3N0cmVhbWluZwogCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CiAJJG5v ZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xv Zygkbm9kZV9CLCAkb2Zmc2V0X0IsICRzdHJlYW1pbmdfbW9kZSwgInByZXBhcmVkIik7Ci0JY2hl Y2tfcGFyYWxsZWxfbG9nKCRub2RlX0MsICRvZmZzZXRfQywgJHN0cmVhbWluZ19tb2RlLCAicHJl cGFyZWQiKTsKLQogCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIHByZXBhcmVkIG9u IHN1YnNjcmliZXIocykKIAlteSAkcmVzdWx0ID0KIAkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9z dGdyZXMnLApAQCAtMTY0LDEwICsxMjYsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkjIEZpcnN0 LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKGRlbGV0ZSB3aWxsIGJlIHJlcGxp Y2F0ZWQpCiAJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBhID4gMjsiKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20g bm93IG9uLgotCSRvZmZzZXRfQiA9IC1zICRub2RlX0ItPmxvZ2ZpbGU7Ci0JJG9mZnNldF9DID0g LXMgJG5vZGVfQy0+bG9nZmlsZTsKLQogCSMgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xM QkFDSyBUTyBTQVZFUE9JTlQKIAkkbm9kZV9BLT5zYWZlX3BzcWwoCiAJCSdwb3N0Z3JlcycsICIK QEAgLTE4NCw5ICsxNDIsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkkbm9kZV9BLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lX0IpOwogCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWVfQyk7CiAKLQljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfQiwgJG9mZnNldF9CLCAkc3RyZWFt aW5nX21vZGUsICJwcmVwYXJlZCIpOwotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9DLCAkb2Zm c2V0X0MsICRzdHJlYW1pbmdfbW9kZSwgInByZXBhcmVkIik7Ci0KIAkjIGNoZWNrIHRoZSB0cmFu c2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCiAJJHJlc3VsdCA9CiAJICAk bm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKQEAgLTIzMywxNiArMTg4LDYgQEAgc3ViIHRl c3Rfc3RyZWFtaW5nCiAJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKIAkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lX0IpOwogCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLQkj IFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgkc3RyZWFtaW5nX21vZGUgZXEgJ3BhcmFs bGVsJykKLQl7Ci0JCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9n X21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfQi0+cmVsb2FkOwotCi0JCSRub2Rl X0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdh cm5pbmciKTsKLQkJJG5vZGVfQy0+cmVsb2FkOwotCX0KIH0KIAogIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3 b3BoYXNlX3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9z dHJlYW0ucGwKaW5kZXggMWZiYzFjNC4uYzQ5Y2IxMCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCkBAIC04LDI5ICs4LDEyIEBAIHVzZSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNl IFRlc3Q6Ok1vcmU7CiAKLSMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2Fj dGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseQotIyByZXBvcnRlZCBieSBwYXJhbGxlbCBh cHBseSB3b3JrZXIuCi1zdWIgY2hlY2tfcGFyYWxsZWxfbG9nCi17Ci0JbXkgKCRub2RlX3N1YnNj cmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgJGFjdGlvbik9IEBfOwotCW15ICRwYXJhbGxl bF9tZXNzYWdlID0gJyc7Ci0KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJHBhcmFsbGVsX21l c3NhZ2UgPSBqb2luKCIiLCAnc3RyZWFtZWQgdHJhbnNhY3Rpb24gXGQrIHdhcyAnLCAkYWN0aW9u LCAnIHVzaW5nIGFuIHBhcmFsbGVsIGFwcGx5IHdvcmtlcicpOwotCi0JCSRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2FnZS8sICRvZmZzZXQpOwotCX0KLX0K LQogIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxh dGVkIHRvICJzdHJlYW1pbmciCiAjIHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBy dW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKICMgc3RyZWFtaW5nPXBhcmFsbGVsIGNh c2VzLgogc3ViIHRlc3Rfc3RyZWFtaW5nCiB7Ci0JbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVf c3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkgPSBAXzsKLQotCW15ICRvZmZzZXQg PSAwOworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKSA9 IEBfOwogCiAJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCSMgVGVzdCAyUEMgUFJF UEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KQEAgLTQwLDIwICsyMyw2IEBAIHN1YiB0ZXN0X3N0cmVh bWluZwogCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRl IGFmdGVyIHRoZSBjb21taXQuCiAJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi0J IyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdl IG5lZWQgdG8gY2hlY2sKLQkjIHRoYXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIHByZXBhcmVk IHVzaW5nIGFuIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KLQkjIFdlIGhhdmUgdG8gbG9vayBmb3Ig dGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKLQkjIGxv ZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXIt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVzc2FnZXMgPSBk ZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQotCSMgQ2hlY2sgdGhl IHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOwotCiAJIyBjaGVjayB0aGF0IDJQQyBnZXRzIHJlcGxpY2F0ZWQgdG8gc3Vi c2NyaWJlcgogCSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNl ZWQgdGhlIDY0a0IgbGltaXQuCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCkBAIC02Niw4 ICszNSw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3Jp YmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICJwcmVwYXJlZCIpOwotCiAJIyBjaGVjayB0aGF0 IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKIAlteSAkcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKQEAgLTEwMiw5ICs2OSw2IEBAIHN1 YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CiAJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKIAotCSMgQ2hlY2sgdGhl IHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3Jp YmVyLT5sb2dmaWxlOwotCiAJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdo IHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAogCQkncG9zdGdyZXMnLCBxewpAQCAtMTE2LDggKzgwLDYgQEAgc3ViIHRlc3Rfc3RyZWFt aW5nCiAKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCi0J Y2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxl bCwgInByZXBhcmVkIik7Ci0KIAkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFy ZWQgc3RhdGUgb24gc3Vic2NyaWJlcgogCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKIAkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOwpAQCAtMTUwLDkgKzExMiw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSMgTm90ZTog Ym90aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4KIAkjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLQkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBm cm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKLQog CSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxewogCQlCRUdJTjsK QEAgLTE2Nyw4ICsxMjYsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAkkbm9kZV9wdWJsaXNoZXIt PnN0YXJ0OwogCSRub2RlX3N1YnNjcmliZXItPnN0YXJ0OwogCi0JY2hlY2tfcGFyYWxsZWxfbG9n KCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCwgInByZXBhcmVkIik7Ci0K IAkjIGNvbW1pdCBwb3N0IHRoZSByZXN0YXJ0CiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKIAkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwpA QCAtMTk2LDkgKzE1Myw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4g MjsiKTsKIAotCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgotCSRvZmZz ZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOwotCiAJIyBUaGVuIGluc2VydCwgdXBk YXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgogCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxewpAQCAtMjEwLDggKzE2 NCw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCiAJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKIAotCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVy LCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwsICJwcmVwYXJlZCIpOwotCiAJIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKIAkkcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKQEAgLTI1NCw5ICsyMDYsNiBAQCBzdWIgdGVz dF9zdHJlYW1pbmcKIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCQki REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CiAKLQkjIENoZWNrIHRoZSBzdWJz Y3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KLQkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+ bG9nZmlsZTsKLQogCSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dz IHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KIAkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK IAkJJ3Bvc3RncmVzJywgcXsKQEAgLTI2OCw4ICsyMTcsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcK IAogCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKLQljaGVj a19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsLCAi cHJlcGFyZWQiKTsKLQogCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBz dGF0ZSBvbiBzdWJzY3JpYmVyCiAJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7 Iik7CkBAIC0zMDEsMTQgKzI0OCw2IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCSRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBhID4gMjsiKTsKIAkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwotCi0JIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFsbGVsKQotCXsK LQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQki bG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2Fk OwotCX0KIH0KIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMzc2LDcgKzMx NSw3IEBAIG15ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0 X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBj b3BpZWQgdG8gc3Vic2NyaWJlcicpOwogCi10ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIs ICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpOwogCiAjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJh bGxlbCcKQEAgLTM5OSw3ICszMzgsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50 aWwoJ3Bvc3RncmVzJywKICAgb3IgZGllCiAgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Ig YXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi10ZXN0X3N0 cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsK K3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5h bWUpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUg Y2xlYW51cApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWlu Z19wYXJhbGxlbF9zYWZldHkucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFt aW5nX3BhcmFsbGVsX3NhZmV0eS5wbAppbmRleCAyNGJkNTRmLi43N2ZlYzRlIDEwMDY0NAotLS0g YS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3NhZmV0eS5w bAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX3BhcmFsbGVsX3Nh ZmV0eS5wbApAQCAtODEsNyArODEsOCBAQCBteSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dy b3VuZF9wc3FsKCdwb3N0Z3JlcycsIFwkaW4sIFwkb3V0LCAkdGltZXIsCiAjID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KICMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCB0aGUgdW5pcXVlIGNvbHVtbiBpbiB0 aGUgcmVsYXRpb24gb24gdGhlCiAjIHN1YnNjcmliZXItc2lkZSBpcyBub3QgdGhlIHVuaXF1ZSBj b2x1bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlLiBDaGVjayB0aGUKLSMgZXJyb3IgcmVwb3J0ZWQg YnkgcGFyYWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgZXJyb3IgcmVwb3J0ZWQgYnkgcGFy YWxsZWwgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluCisjIGFwcGx5 IHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHku CiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KIAogIyBGaXJzdCB3ZSBjaGVjayB0aGUgdW5pcXVlIGlu ZGV4IG9uIG5vcm1hbCB0YWJsZS4KQEAgLTEwNiw2ICsxMDcsMTAgQEAgJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGlj YXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9u IHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKKyRub2RlX3N1 YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gZHVwbGlj YXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUgY29uc3RyYWludCAiaWR4X3RhYjEiLywKKwkk b2Zmc2V0KTsKKwogIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5v dyBpdCB3b3Jrcy4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJP UCBJTkRFWCBpZHhfdGFiMSIpOwogCkBAIC0xMTQsNyArMTE5LDcgQEAgJG5vZGVfcHVibGlzaGVy LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogbXkgJHJlc3VsdCA9CiAgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVz dF90YWIxIik7Ci1pcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2Rh dGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHVuaXF1ZSBpbmRleCB0 byByZXRyeSBhcHBseScpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9u bWVudC4KICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBU QUJMRSB0ZXN0X3RhYjEiKTsKQEAgLTEzNSwxOSArMTQwLDIxIEBAICRub2RlX3N1YnNjcmliZXIt PndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0 ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vi c2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAK LSMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3Mu Ci0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggdGVz dF90YWJfYl9wYXJ0aXRpb25faWR4Iik7Ci0KICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJh bnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVz dF90YWJfcGFydGl0aW9uZWQiKTsKLWlzKCRyZXN1bHQsIHFxKDUwMDApLCAnZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKK2lzKCRyZXN1bHQsIHFx KDUwMDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVj YXVzZSBvZiB1bmlxdWUgaW5kZXgnKTsKKworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhl IHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRS T1AgSU5ERVggdGVzdF90YWJfYl9wYXJ0aXRpb25faWR4Iik7CiAKICMgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQogIyBUcmlnZ2VycyB3aGljaCBleGVjdXRlIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gYXJl IG5vdCBhbGxvd2VkIG9uIHRoZQogIyBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciBy ZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBBbmQgYWZ0ZXIgcmV0 cnlpbmcgaW4gYXBwbHkgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVk CisjIHN1Y2Nlc3NmdWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAjIEZpcnN0IHdlIGNo ZWNrIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIG9uIG5vcm1hbCB0YWJsZS4KQEAgLTE2OCwxNyArMTc1 LDYgQEAgQ1JFQVRFIFRSSUdHRVIgdHJpX3RhYjFfdW5zYWZlCiBCRUZPUkUgSU5TRVJUIE9OIHB1 YmxpYy50ZXN0X3RhYjEKIEZPUiBFQUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1 bmNfdGFiMV91bnNhZmUoKTsKIEFMVEVSIFRBQkxFIHRlc3RfdGFiMSBFTkFCTEUgUkVQTElDQSBU UklHR0VSIHRyaV90YWIxX3Vuc2FmZTsKLQotQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY190 YWIxX3NhZmUoKSBSRVRVUk5TIFRSSUdHRVIgQVMgXCRcJAotICBCRUdJTgotICAgIFJBSVNFIE5P VElDRSAndGVzdCBmb3Igc2FmZSB0cmlnZ2VyIGZ1bmN0aW9uJzsKLQlSRVRVUk4gTkVXOwotICBF TkQKLVwkXCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKLUFMVEVSIEZVTkNUSU9OIHRyaWdnZXJfZnVuY190 YWIxX3NhZmUgSU1NVVRBQkxFOwotQ1JFQVRFIFRSSUdHRVIgdHJpX3RhYjFfc2FmZQotQkVGT1JF IElOU0VSVCBPTiBwdWJsaWMudGVzdF90YWIxCi1GT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURV UkUgdHJpZ2dlcl9mdW5jX3RhYjFfc2FmZSgpOwogfSk7CiAKICMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgpAQCAtMjAzLDI3ICsxOTksMjUgQEAgJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGlj YXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9u IHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMgVXNpbmcg dHJpZ2dlciB3aXRoIGltbXV0YWJsZSBmdW5jdGlvbiwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxewotQUxURVIgVEFCTEUgdGVzdF90 YWIxIEVOQUJMRSBSRVBMSUNBIFRSSUdHRVIgdHJpX3RhYjFfc2FmZTsKLURST1AgVFJJR0dFUiB0 cmlfdGFiMV91bnNhZmUgT04gcHVibGljLnRlc3RfdGFiMTsKLX0pOworJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkdXBsaWNhdGUga2V5 IHZhbHVlIHZpb2xhdGVzIHVuaXF1ZSBjb25zdHJhaW50ICJpZHhfdGFiMiIvLAorCSRvZmZzZXQp OworCisjIERyb3AgdGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdv cmtzLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVY IGlkeF90YWIyIik7CiAKICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8g YmUgYXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zv cl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7Ci1p cygkcmVzdWx0LCBxcSgyKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHVz aW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7CitpcygkcmVzdWx0LCBxcSgyKSwgJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgdHJpZ2dlcicp OwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcXsKLURST1AgSU5ERVggaWR4X3Rh YjI7Ci1EUk9QIFRSSUdHRVIgdHJpX3RhYjFfc2FmZSBPTiBwdWJsaWMudGVzdF90YWIxOworRFJP UCBUUklHR0VSIHRyaV90YWIxX3Vuc2FmZSBPTiBwdWJsaWMudGVzdF90YWIxOwogRFJPUCBmdW5j dGlvbiB0cmlnZ2VyX2Z1bmNfdGFiMV91bnNhZmU7Ci1EUk9QIGZ1bmN0aW9uIHRyaWdnZXJfZnVu Y190YWIxX3NhZmU7CiB9KTsKICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3Jl cycsIHFxewpAQCAtMjU2LDIxICsyNTAsMjIgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jf bG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCBy ZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24g cGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRo ZSB0cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiRFJPUCBUUklHR0VSIGluc2VydF90cmlnIE9O IHRlc3RfdGFiX3BhcnRpdGlvbiIpOwotCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hl ci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3Rf dGFiX3BhcnRpdGlvbmVkIik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0 byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRyaWdnZXInKTsKK2lzKCRyZXN1bHQsIHFxKDAp LCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBv ZiB0cmlnZ2VyJyk7CisKKyMgRHJvcCB0aGUgdHJpZ2dlciBvbiB0aGUgc3Vic2NyaWJlci4KKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJEUk9QIFRSSUdHRVIgaW5z ZXJ0X3RyaWcgT04gdGVzdF90YWJfcGFydGl0aW9uIik7CiAKICMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbHVtbiBkZWZhdWx0IHZhbHVlIGV4cHJlc3Np b24gY29udGFpbnMgYQogIyBub24taW1tdXRhYmxlIGZ1bmN0aW9uIG9uIHRoZSBzdWJzY3JpYmVy IHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieQotIyBwYXJhbGxlbCB3b3JrZXIgaW4g dGhpcyBjYXNlLgorIyBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0 cnlpbmcgaW4gYXBwbHkgd29ya2VyLCB3ZSBjaGVjaworIyBpZiB0aGUgZGF0YSBpcyByZXBsaWNh dGVkIHN1Y2Nlc3NmdWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAjIEZpcnN0IHdlIGNo ZWNrIHRoZSBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4K QEAgLTMwOCwxNyArMzAzLDEzIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlx ci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24g InB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5n ID0gcGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIEFsdGVyIGRlZmF1bHQgdmFsdWVzIHRvIGlt bXV0YWJsZSBleHByZXNzaW9uLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBi IFNFVCBERUZBVUxUIDEiKTsKLQogIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlv biB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEi KTsKIGlzKCRyZXN1bHQsIHFxKDUwMDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl ciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicpOworCSdkYXRhIHJlcGxpY2F0ZWQg dG8gc3Vic2NyaWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGNvbHVtbiBkZWZhdWx0IHZh bHVlJyk7CiAKICMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgogJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0X3Rh YjEgRFJPUCBDT0xVTU4gYiIpOwpAQCAtMzQ0LDIyICszMzUsMjMgQEAgJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGlj YXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBz dWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsK IAotIyBEcm9wIGRlZmF1bHQgdmFsdWUgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4K LSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJBTFRFUiBUQUJMRSB0 ZXN0X3RhYl9wYXJ0aXRpb24gQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7Ci0KICMgV2Fp dCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUgYXBw bHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK IAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi U0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKIGlzKCRyZXN1bHQs IHFxKDUwMDApLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGlu ZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNj cmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBjb2x1bW4gZGVmYXVsdCB2YWx1ZScpOwor CisjIERyb3AgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRp b24gQUxURVIgQ09MVU1OIGIgRFJPUCBERUZBVUxUIik7CiAKICMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24g Y29udGFpbnMgYSBub24taW1tdXRhYmxlCiAjIGZ1bmN0aW9uIG9uIHRoZSBzdWJzY3JpYmVyIHNp ZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBieSBwYXJhbGxlbAotIyB3b3JrZXIgaW4gdGhp cyBjYXNlLgorIyB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBw bHkgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUKKyMgZGF0YSBpcyByZXBsaWNhdGVkIHN1Y2Nlc3Nm dWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAjIEJlY2F1c2UgdGhlIGNvbHVtbiB0eXBl IG9mIHRoZSBwYXJ0aXRpb24gdGFibGUgbXVzdCBiZSB0aGUgc2FtZSBhcyBpdHMgcGFyZW50CkBA IC00MDAsMTcgKzM5MiwxMyBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIv RVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJw dWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZyA9 IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIGRvbWFpbiBjb25zdHJhaW50IGV4cHJl c3Npb24sIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJBTFRFUiBET01BSU4gdG1wX2RvbWFpbiBEUk9QIENPTlNUUkFJTlQgZG9tYWluX2No ZWNrIik7Ci0KICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBw bGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CiBpcygkcmVz dWx0LCBxcSg1MDAxKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgdXNp bmcgaW1tdXRhYmxlIGV4cHJlc3Npb24nCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVy IGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgZG9tYWluJwogKTsKIAogIyBDbGVhbiB1cCB0ZXN0 IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCkBAIC00MjQsOSArNDEyLDEwIEBAIFRSVU5DQVRF IFRBQkxFIHRlc3RfdGFiMjsKICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CiAKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0 IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUgZnVuY3Rpb24K LSMgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IHBh cmFsbGVsIHdvcmtlciBpbiB0aGlzCi0jIGNhc2UuCisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQg Y29uc3RyYWludCBleHByZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZQorIyBmdW5jdGlv biBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgcGFy YWxsZWwKKyMgd29ya2VyIGluIHRoaXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5 IHdvcmtlciwgd2UgY2hlY2sgaWYgdGhlCisjIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVs bHkuCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29uc3Ry YWludCBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KQEAgLTQ1OSwyMyArNDQ4LDE2IEBAICRu b2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8g Y2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5n IHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFyYWxsZWwvLAogCSRvZmZzZXQp OwogCi0jIEFsdGVyIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiB0byBpbW11dGFibGUgZXhwcmVzc2lv biwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jl cycsIHFxewotQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCBjb25zdF90YWIx X3Vuc2FmZTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiMSBBREQgQ09OU1RSQUlOVCBjb25zdF90YWIx X3NhZmUgQ0hFQ0soYSA+PSAwKTsKLX0pOwotCiAjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRy YW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRl c3RfdGFiMSIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMSksCi0JJ2RhdGEgcmVwbGljYXRlZCB0byBz dWJzY3JpYmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJyk7CisJJ2RhdGEgcmVw bGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgY29uc3RyYWlu dCcpOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KLSRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIx IERST1AgQ09OU1RSQUlOVCBjb25zdF90YWIxX3NhZmUiKTsKKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlO VCBjb25zdF90YWIxX3Vuc2FmZSIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bv c3RncmVzJywgcXF7CiBUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CkBAIC00OTgsMjEgKzQ4MCwy MiBAQCAkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAt OV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJf cGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nID0gcGFy YWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJl ciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBEUk9QIENPTlNUUkFJTlQgdGVzdF90 YWJfY29uIik7Ci0KICMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUg YXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9u ZWQiKTsKIGlzKCRyZXN1bHQsIHFxKDApLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJl ciBhZnRlciBkcm9wcGluZyBjb25zdHJhaW50IGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBjb25zdHJhaW50Jyk7 CisKKyMgRHJvcCBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlv biBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWJfY29uIik7CiAKICMgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGZvcmVpZ24ga2V5IG9uIHRoZSBzdWJzY3JpYmVy IHNpZGUuIENoZWNrIHRoZSBlcnJvcgotIyByZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4g dGhpcyBjYXNlLgorIyByZXBvcnRlZCBieSBwYXJhbGxlbCB3b3JrZXIgaW4gdGhpcyBjYXNlLiBB bmQgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBwbHkKKyMgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUgZGF0 YSBpcyByZXBsaWNhdGVkIHN1Y2Nlc3NmdWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAj IEZpcnN0IHdlIGNoZWNrIHRoZSBmb3JlaWduIGtleSBvbiBub3JtYWwgdGFibGUuCkBAIC01NTMs OCArNTM2LDggQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAo IFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRl c3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmcgPSBwYXJhbGxl bC8sCiAJJG9mZnNldCk7CiAKLSMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0 aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT05TVFJBSU5UIHRlc3Rf dGFiMWZrIik7CisjIEluc2VydCBkZXBlbmRlbnQgZGF0YSBvbiB0aGUgcHVibGlzaGVyLCBub3cg aXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VS VCBJTlRPIHRlc3RfdGFiMiBWQUxVRVMoMSkiKTsKIAogIyBXYWl0IGZvciB0aGlzIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwpAQCAtNTYyLDkgKzU0NSwxMCBA QCAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogJHJlc3VsdCA9 CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50 KCopIEZST00gdGVzdF90YWIxIik7CiBpcygkcmVzdWx0LCBxcSgxKSwKLQknZGF0YSByZXBsaWNh dGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisJJ2Rh dGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgZm9y ZWlnbiBrZXknKTsKIAogIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQu Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRl c3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgdGVzdF90YWIxZmsiKTsKICRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxewogVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxOwpA QCAtNTkwLDE3ICs1NzQsMTcgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFy L0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAi cHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVy IHN0cmVhbWluZyA9IHBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBEcm9wIHRoZSBmb3JlaWdu IGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWJf cGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9wYXRpdGlvbl9mayIpOwotCiAjIFdh aXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFw cGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CiBpcygkcmVzdWx0 LCBxcSg1MDAwKSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBp bmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBh ZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGZvcmVpZ24ga2V5Jyk7CisKKyMgRHJvcCB0aGUgZm9y ZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24g RFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0aW9uX2ZrIik7CiAKICRub2RlX3N1YnNjcmli ZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7Ci0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_006_OS0PR01MB5716546863340CA19EC5F8C394789OS0PR01MB5716jpnp_--