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 1oz94C-0006WV-K1 for pgsql-hackers@arkaria.postgresql.org; Sun, 27 Nov 2022 04:14:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oz93B-00036M-DV for pgsql-hackers@arkaria.postgresql.org; Sun, 27 Nov 2022 04:13:53 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oz93A-000318-2U for pgsql-hackers@lists.postgresql.org; Sun, 27 Nov 2022 04:13:52 +0000 Received: from esa15.fujitsucc.c3s2.iphmx.com ([68.232.156.107]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oz933-0007NG-CA for pgsql-hackers@lists.postgresql.org; Sun, 27 Nov 2022 04:13:50 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1669522425; x=1701058425; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=GAsjLSUT5Vfl4klQXlaGEgMcZW1mSEmgaeZcEt4OyYU=; b=OPhGs5iDOplUwmqjtCYmGYem30Au3lBiEnOmt0+emRPuTmu98RH542cE B/CpRFA2eEB7rq66Rwing53bJO/16bh0+VL9AtYXlssscH5OG4iAFjgb7 QTTfTrqVLlimGgLr9YbSYmvrG4CHaE9I1yuXZpFWSVoxhRPrGsnvJnAt1 ymt6RQY6+YUYWhPOhWfJb5hfb62qexBIKtpELIm/F3W38fkTaNL/X8S/o WJFFlGhTrbpmpFlBqWd++F4ixFSl43nW1bWKc+p7zhJqUN03Gh+cC9Yug LQYaD0kP0sC1IESufc4wMgSxXNoM+U5ACdAia/2x4gZET832hv3LqGYgJ Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10543"; a="70977519" X-IronPort-AV: E=Sophos;i="5.96,197,1665414000"; d="scan'208,223";a="70977519" Received: from mail-os0jpn01lp2105.outbound.protection.outlook.com (HELO JPN01-OS0-obe.outbound.protection.outlook.com) ([104.47.23.105]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Nov 2022 13:13:39 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PWXOemr46VvFTDO4FWXrkbzRdX8/x0Vxro7t+Y2oiQEU20pSpt+7tySjbOy97O40JoNq5jZr7V/Pqt3WZog3Xe6bkcP1dixkMkYjMGv1tLd60cBbl8uKrz8qaWOhgIwuPSWdBHaF26ROmvfSGh6FkiD4XHSVDFoCDYBepphyc8jwovL20SJZKmJFuKulGlVWeFc8ByS4ciUCXjCZAAmUB0W6QzplaB5sjF2HQcQf/uJ+chOziNXZxp9E+o9nocezjBhff34F3pyhwJUaigcZec4YCaKDOx7sUANaJOJu6OASOA24d3tZU6uxtIuZC8Ip8OukHj2egeEjGVwdP6abrQ== 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=/a2hIcr8QENtRSF1lsSV0HKOIjqRYu8kKFxsIEBRTpM=; b=IuMx0/zLaY8+S609u0qk/N9Xxk0E5eQH8Gk3t7bFQTNsonMi6eB6uodzrMhrjIiM5+1qQpGEwIUK4J+fk8JQ/XMLxuJRngcaF7w98QU7RX75aKXyaBYn6AfMxdK+6nHo9AaxX9Hw9VsW3XniHY5gVsRBfBwO0735OA0KuUvVGv/Wh8bdLYgCiJXoRN2RaFDeOWwzC5glSzfqA2WBSnGjzS2kLLJy9wMzW7jCM+hjF8jH4XyyEbjXY4bOpN0mMXUAVtxfPCt4Ml/S+G16lXkRiw6Cz0qLt/xWBcIT66T+c+2RUWta6rIrxDlRsKMqQ9Yll1ac1odCxTq7XS/yItXTSw== 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 TYWPR01MB9853.jpnprd01.prod.outlook.com (2603:1096:400:234::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.21; Sun, 27 Nov 2022 04:13:34 +0000 Received: from OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::89a3:459e:492:7bcc]) by OS0PR01MB5716.jpnprd01.prod.outlook.com ([fe80::89a3:459e:492:7bcc%8]) with mapi id 15.20.5857.022; Sun, 27 Nov 2022 04:13:34 +0000 From: "houzj.fnst@fujitsu.com" To: Amit Kapila CC: Masahiko Sawada , "wangw.fnst@fujitsu.com" , Peter Smith , Dilip Kumar , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX5ZKpBKXxeUU2FhEhnmXQum6zlu9SQgAkSooCACBQ0gIABsTcwgAA1vECAAqHFgIAE/jVwgAXct9CAADkRgIALO/aAgAsRZICAB606AIAS+CyAgAAufICAAWQLgIABHxKAgAA3o4CAAeE3gIAJPr0AgAkxzACAAiJoAIAC0hUAgARvDICABQA2gIAAFvcAgAeBmICABO9ggIAJO+YAgABu1YCACQzpAIAJSy6AgAS+zICABq7mgIABSJUAgAAOtoCAACghoIAB8TqAgAqL+oCADJWRgIAGVm0AgAGAQICAAerMgIABYRWAgAgnZ+CAAXRdgIAGBUSQgAGFeoCAAFYagIABb5aggAGsWiCAATu3gIAEyyEAgABeLHCABFBngIAK5WIAgABrY4CABb89gIADiS0AgAEu2oCAAHBpgIADPWcAgAS/1gCADeB2AIAAPUnQgAEERACAABzggIAF+30AgAHyDYCAEzpGgIANkEmAgAI7xKCABhztAIAFv4zggABYqoCAABRMQIABvKAAgAS+5UCAAVlmEIACxK+AgAIepYCAAy1b4IAA8x6ggAJYuYCABaCt0A== Date: Sun, 27 Nov 2022 04:13:34 +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?NTBfQWN0aW9uSWQ9YmQyZjRjMjgtNGNiNS00M2Y0LWFlY2ItMzMxYjEyMmQy?= =?utf-8?B?NjBhO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0xMS0yN1QwMzozNjozOVo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OS0PR01MB5716:EE_|TYWPR01MB9853:EE_ x-ms-office365-filtering-correlation-id: 0132432c-edf3-4216-2cec-08dad02dc074 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 9wDOOTJL5zYCkANpSXPWM1LJmOOVhLSsMCjB4cleov7IZ1nwect45tSf9hXihPg2CpRBN0Oyz9mU9V/+lqgdIdSYEgm2Mz3m/VvelUD+qwawl4sfEIgBUZmuZCFrxm64xDZkieykg6W023RZn7kJDH0XLN09C2suQ6dbPTptWjrsdRTtVJsNOKXWT6xAxLwHcYd2bxTWKTjnFunI/pAZAjt63Haq3HuXq124499zZL895Wh4VTHd+tx9A/kwi0yCCsz4KKtYylQCrPYGcUAqFSqZ770H8qFXUuHqqtvJe6GZmMJWinZTszUVdtvag1ME5p95D1PS6BJ89bI20YMczvcVQuJJg3FOhtqJT9ccBbqf1ooAzzT0s5hdrEk4czfqWftKwzLBxBZFNUtL3dVaxQsJR02PLAumkir8M1oEQkUCB/Z0r66CeRntbEDGTJBarUhuHe6EvGI0kQ5EV1G+LvGysfgEzaxfQ6GPSNVofdodCQgQwdWiKnptPNcflsCX+Dh9j7IZBXZbv7xWbCxJ6lONj9TqMwTyDwawNW1ComPq1yKskiRM6KGVjJ0Wm8/4WdwGDOGL0uNQF5a4ZVR33hJh9ZFCUWxLjcayNaR2OgzVaYdwjvBxAz0OX1bxKATOx/zd4fax8R10zd36sNqhm8tGtdzuc4z8VgDolDYDEdKpiHkL1InBgAG4udX9BBSihNN9wuKg1NwGmToT28S/9pHdvXqbsIDGTCdY/sUKC6E= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS0PR01MB5716.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(136003)(396003)(376002)(346002)(366004)(39860400002)(1590799012)(451199015)(6916009)(54906003)(71200400001)(33656002)(4326008)(8676002)(8936002)(52536014)(41300700001)(85182001)(316002)(66946007)(66476007)(64756008)(66556008)(66446008)(5660300002)(83380400001)(55016003)(38100700002)(82960400001)(122000001)(99936003)(38070700005)(86362001)(478600001)(9686003)(26005)(53546011)(186003)(76116006)(7696005)(6506007)(1580799009)(2906002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Y2tuMkhCV09mdXhtRVoraUZ5T21mWkJTQzJjTTVINGtkM2JFZXAzclVUWFFN?= =?utf-8?B?TnRyNVMwK2dLSUJFYmQwZXBQazNXYjVrOFZudEhadWhocG4zRlhzZVg4NVJS?= =?utf-8?B?QUxQd0Vuai9RcVpzM0pyUGU5OEd4cHRmTlFiYlFzU0NPdVdMRm5GWW9yTDVT?= =?utf-8?B?NlhRVlFYVXFONWgwdzlpZ29wb1lyblFiUmJScGgvRUtzVEpCWGJzN1hhNEtT?= =?utf-8?B?TnNCSXc4Wmw1TmhBbnM4TDNrMlJhREJ0SVRWMXFLd09RQWVZSFdwd3doL1RZ?= =?utf-8?B?MVB5Y2RZNGxHdXdlMC9Dc1ptQ2l0ZWF6bFN3NE0vSEk3TDliUWxrQ2trVzVP?= =?utf-8?B?cW84Y1FNK3J2MXlHZ3R0RG4xc1RWaTQ3aEVabkFKN3dMeFR4QzhHcXNGeEFn?= =?utf-8?B?eUgybmZSY25pNDRwU2hhd2Zpd1RORGNBSHBVTldUU2tCeFNpazRwcGZRT2lQ?= =?utf-8?B?dzZnSlZmT2ovYk9RU0lEc1FYWjVRVndxcTF2Q1FDS3FPTm5jRWVmSVoxNVRN?= =?utf-8?B?VWE1dUZ0T1hXdlNwamg4eFM3dHAvSEZNL3FlZUFvSGNvSzEwM0J6dEVEM29t?= =?utf-8?B?aFJaWGFDMlh0dTdiSEJucVBBRFEyZWd2eVlUYS9XQXlRRFEycEIyK1dwUjlj?= =?utf-8?B?bjFkdWEyZFlSMEFVTWh2VjZudS9xdFg4VWNmQVJsYmpKanRiVHBPRzIrWllD?= =?utf-8?B?RFM4MUYzU3Noc2RHd0hpMlFYUEtlTFhqd3hmZGVadTY4ak8wTkgrRDNBTUdu?= =?utf-8?B?cys1cWxKQjVOR2dRWVpQYlRacTB3VUMvNUZzc1pweWd1elE4K2tPcGxxL2Zi?= =?utf-8?B?cmdnUmVQay9xeDZHanAzc2RFTFVuRzFlMDRKYk80bjJFTU11K3NwWitzcGty?= =?utf-8?B?M2tEcUJEZDFnL05oSWVNVFErYVpPejZjN3drRk9vQ3pQdDN2Q2tta1NxWkFi?= =?utf-8?B?SnlIelFLenVMeVUzNzM0akRoMDVzSHA4aW1Lb0VFV3FobUhSMEtBYVRCSFdr?= =?utf-8?B?cThzUCs3bno1STJ5MXF2R2JRd2lQOWlJTlA0c2pvWVhITzRQYlhpT29sYzdQ?= =?utf-8?B?RFFPTDVmWlhwTjdJRUJJSzlVVHFoYkFhcXcyMHp4R0M3UXpLeURabWJyK0Vt?= =?utf-8?B?c2xHb0dHUFJqRkFHdStERlRxZTZmVE5XT3hjOGJFbHVpZm5SaU12TmR6dStz?= =?utf-8?B?YmU2Vy8zSVc5QTRpTC9rS3UyNGFvWTNEQ25GNWNYMjU5OHE1cmlFaVYzcFJR?= =?utf-8?B?RXdxTTYyek5zdEk4Wit5VkJjTTZjcTZCbVcySEIzZEhKTHZ2dHFjcXpsN3JV?= =?utf-8?B?Z3hZZEZhS1NiVVUzV21ib1d3MWNGVG9CYkRIMDVrTHRiaTgzRS9UdUp2RTNX?= =?utf-8?B?ZWZ3WjZrTVl4OU02dGxvNFB0Y2ZIckZlMUpVMnlZZlhyYkhac0E1R0hodXZC?= =?utf-8?B?WnM0cnBnbWFYdTcvcEdaZm9RQk9GN3NBb0hWbGRzb3ZVVktmZXNPYzU5Ri9R?= =?utf-8?B?TE5WWFgxSTRWdFBtWE1IaFRHbTc4Q2p1Q3lsQnFIQnJ3Wk5oSU1sVnZ0TjBS?= =?utf-8?B?OE5WWHhBa2loaDVabC9vVXpwSHZQNjM1MkNGM2M5a1FZV2JRSkNyU2pydUN3?= =?utf-8?B?TWZWbStaUCtPS2NGMDJPTHJnczFRSG50Z0w1SFpGSXhxekN1M1BlRjVweis4?= =?utf-8?B?d1hnK3BpMmRHREFGSTZzWHZ4MVd3a0huQ3hWM3ExL3hCZ0RpMFhxS1hqWWcv?= =?utf-8?B?eERaam1pZ1hSS1VBb3RZSHJwaURYNUVBY2pVTUliQmFtMW8xektObUVoSUgx?= =?utf-8?B?ZlVjczBRTVR5QXNGRldjZEVNby9pa0FPSFFvUUJQVGpnZVJuOWpsUlgzS25R?= =?utf-8?B?ZGhiS1NrWXY2YVBzQWMzOEhNVDJMOWgvK29wYVZNWkp6RXllcXRydWcxQ016?= =?utf-8?B?TUZzZnpLbzl1RlFGTjlhMlBtQ1F1ZmFyaDVkTy8yVlFPWGx1dEo4UFE2TFdk?= =?utf-8?B?TFcvdGdkWVFHVVNTMzJVUXg1Q2JEbGE2STNqNHFGRk8yNVp3SEpDZ3lEYndz?= =?utf-8?B?WnU0OEE2djFIOHlKc0pEWkJJTkJ1Snp1NE9OYUlPdWd2TEdrZElCcnNZZERU?= =?utf-8?Q?AovUAA4dvzF1e68P3djbq4Cnh?= Content-Type: multipart/mixed; boundary="_006_OS0PR01MB571663F65904D00895AD159994109OS0PR01MB5716jpnp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Yfy1XifJtArPr6V/AVeCetdzS7IdRwctUM2OHK+M3JlBwbPwYRDenkfAdZhzJ0CuvmoDYcU62TrDqBAz2dNo/bJzfCgLaDAEtOnCc8Ru1J784gQYROCTAQeou5PVwFOpOmfXOaPruVeyGa8VFn1SbuBc0K+mbWjnQMJnGm0xkoHujPBRdM2RULzxwrzjYpf/UjGLfMrUUaWCEh8VD2/UcuKO9Htq+cyRW/SYKlQs1CI2aFnaZ4nPhqLmgEUO5Jud6guodPSA8ArD6cW4/rpjf5QJi+4Q4FU6xwH9sNvFYxz18vViuoSZDXRqnDbCkc0X1gP2htnqmAMD9JREAOjv7FokW+9fgz7ZDN8rXj2Ir0Sw7xhRyRm83lgA5sZ4ReFO2S1W2Ku3Chm8NlOHRU4Nyl5ev9Zk1JrrtpgBQ+iJ3B4kqHVIjvV2k5fDReXSjId5WwkXwC2DFctfBecaQYByJ5HgTJNg3F1Fb2hqukapiLPgcQQB/84eTQq8sTlpg7ixxRZ4U9Uh3P/Wak+jd69zBVehzobmotR8fEdT3EZWZIAR1KVdZZJGFjcQBljIzIMEXJ0bSumXkR6yIEksceihpSBWO3D+DetgyQhKYRLnyA/DBjqnl7aE2A+9YdR6hGToSntb5ArHwuqRSVsfQPR/pnhar/JUl1NiSsu3EzFBYM6NWnV0jVWhFQYkAj7TTI16vUoclfda2FIUp1SHHFEJIX3gyKGVBf4X0FClJnGd/jvzMEXO9kEl4oEqmVWZ4e+STC0hxI2k/4q5k4aFW+kljgKQfjAHz/rO1IRWzGc5Vgmwb6Ec1z53GYYkH+X8E+bR1qicY++ZVLwkkk0QxbH7tC9HEFIr+dxMHX583/I5M6Jei+gpW3nm62NXOnBk0CTkNbKjkmRFmewmsDjrXYaf0Q== 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: 0132432c-edf3-4216-2cec-08dad02dc074 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Nov 2022 04:13:34.7135 (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: Ep75ynfmRR5fZ/SYi+Xb2wimvATJp0Cu91s2zYXCCJEc3mwqB96B+Ior6NbpTSamli+sMHhTBtpY2t1XgBRVsw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWPR01MB9853 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS0PR01MB571663F65904D00895AD159994109OS0PR01MB5716jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gV2VkbmVzZGF5LCBOb3ZlbWJlciAyMywgMjAyMiA5OjQwIFBNIEFtaXQgS2FwaWxhIDxhbWl0 LmthcGlsYTE2QGdtYWlsLmNvbT4NCj4gDQo+IE9uIFR1ZSwgTm92IDIyLCAyMDIyIGF0IDc6MzAg QU0gaG91emouZm5zdEBmdWppdHN1LmNvbQ0KPiA8aG91emouZm5zdEBmdWppdHN1LmNvbT4gd3Jv dGU6DQo+ID4NCj4gDQo+IEZldyBtaW5vciBjb21tZW50cyBhbmQgcXVlc3Rpb25zOg0KPiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQo+IDEuDQo+ICtzdGF0aWMgdm9pZA0KPiArTG9naWNh bFBhcmFsbGVsQXBwbHlMb29wKHNobV9tcV9oYW5kbGUgKm1xaCkNCj4gew0KPiArIGZvciAoOzsp DQo+ICsgew0KPiArIHZvaWQgICAgKmRhdGE7DQo+ICsgU2l6ZSBsZW47DQo+ICsNCj4gKyBQcm9j ZXNzUGFyYWxsZWxBcHBseUludGVycnVwdHMoKTsNCj4gLi4uDQo+IC4uLg0KPiArIGlmIChyYyAm IFdMX0xBVENIX1NFVCkNCj4gKyB7DQo+ICsgUmVzZXRMYXRjaChNeUxhdGNoKTsNCj4gKyBQcm9j ZXNzUGFyYWxsZWxBcHBseUludGVycnVwdHMoKTsNCj4gKyB9DQo+IC4uLg0KPiB9DQo+IA0KPiBX aHkgUHJvY2Vzc1BhcmFsbGVsQXBwbHlJbnRlcnJ1cHRzKCkgaXMgY2FsbGVkIHR3aWNlIGluDQo+ IExvZ2ljYWxQYXJhbGxlbEFwcGx5TG9vcCgpPw0KDQpJIHRoaW5rIHRoZSBzZWNvbmQgY2FsbCBp cyB1bm5lY2Vzc2FyeSwgc28gcmVtb3ZlZCBpdC4NCg0KPiAyLg0KPiArICogVGhpcyBzY2VuYXJp byBpcyBzaW1pbGFyIHRvIHRoZSBmaXJzdCBjYXNlIGJ1dCBUWC0xIGFuZCBUWC0yIGFyZQ0KPiAr IGV4ZWN1dGVkIGJ5DQo+ICsgKiB0d28gcGFyYWxsZWwgYXBwbHkgd29ya2VycyAoUEEtMSBhbmQg UEEtMiByZXNwZWN0aXZlbHkpLiBJbiB0aGlzDQo+ICsgc2NlbmFyaW8sDQo+ICsgKiBQQS0yIGlz IHdhaXRpbmcgZm9yIFBBLTEgdG8gY29tcGxldGUgaXRzIHRyYW5zYWN0aW9uIHdoaWxlIFBBLTEg aXMNCj4gKyB3YWl0aW5nDQo+ICsgKiBmb3Igc3Vic2VxdWVudCBpbnB1dCBmcm9tIExBLiBBbHNv LCBMQSBpcyB3YWl0aW5nIGZvciBQQS0yIHRvDQo+ICsgY29tcGxldGUgaXRzDQo+ICsgKiB0cmFu c2FjdGlvbiBpbiBvcmRlciB0byBwcmVzZXJ2ZSB0aGUgY29tbWl0IG9yZGVyLiBUaGVyZSBpcyBh DQo+ICsgZGVhZGxvY2sgYW1vbmcNCj4gKyAqIHRocmVlIHByb2Nlc3Nlcy4NCj4gKyAqDQo+IC4u Lg0KPiAuLi4NCj4gKyAqDQo+ICsgKiBMQSAod2FpdGluZyB0byBhY3F1aXJlIHRoZSBsb2NhbCB0 cmFuc2FjdGlvbiBsb2NrKSAtPiBQQS0xICh3YWl0aW5nDQo+ICsgdG8NCj4gKyAqIGFjcXVpcmUg dGhlIGxvY2sgb24gdGhlIHVuaXF1ZSBpbmRleCkgLT4gUEEtMiAod2FpdGluZyB0byBhY3F1aXJl DQo+ICsgdGhlIGxvY2sNCj4gKyAqIG9uIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24pIC0+IExBDQo+ ICsgKg0KPiANCj4gSXNuJ3QgdGhlIG9yZGVyIG9mIFBBLTEgYW5kIFBBLTIgZGlmZmVyZW50IGlu IHRoZSBzZWNvbmQgcGFyYWdyYXBoIGFzIGNvbXBhcmVkDQo+IHRvIHRoZSBmaXJzdCBvbmUuDQoN CkZpeGVkLg0KDQo+IDMuDQo+ICsgKiBEZWFkbG9jay1kZXRlY3Rpb24NCj4gKyAqIC0tLS0tLS0t LS0tLS0tLS0tLQ0KPiANCj4gSXQgbWF5IGJlIGJldHRlciB0byBrZWVwIHRoZSB0aXRsZSBvZiB0 aGlzIHNlY3Rpb24gYXMgTG9ja2luZyBDb25zaWRlcmF0aW9ucy4NCj4gDQo+IDQuIEluIHRoZSBz ZWN0aW9uIG1lbnRpb25lZCBpbiBQb2ludCAzLCBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gc2VwYXJh dGVseSBleHBsYWluDQo+IHdoeSB3ZSBuZWVkIHNlc3Npb24tbGV2ZWwgbG9ja3MgaW5zdGVhZCBv ZiB0cmFuc2FjdGlvbiBsZXZlbC4NCg0KQWRkZWQuDQoNCj4gNS4gQWRkIHRoZSBiZWxvdyBjb21t ZW50cyBpbiB0aGUgY29kZToNCj4gZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jDQo+IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMNCj4gaW5kZXggOTM4NWFmYjZkMi4uNTZm MDBkZWZjZiAxMDA2NDQNCj4gLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9h cHBseXBhcmFsbGVsd29ya2VyLmMNCj4gKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMNCj4gQEAgLTQzMSw2ICs0MzEsOSBAQCBwYV9mcmVl X3dvcmtlcl9pbmZvKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbykNCj4gICAgICAgICBp ZiAod2luZm8tPmRzbV9zZWcgIT0gTlVMTCkNCj4gICAgICAgICAgICAgICAgIGRzbV9kZXRhY2go d2luZm8tPmRzbV9zZWcpOw0KPiANCj4gKyAgICAgICAvKg0KPiArICAgICAgICAqIEVuc3VyZSB0 aGlzIHdvcmtlciBpbmZvcm1hdGlvbiB3b24ndCBiZSByZXVzZWQgZHVyaW5nDQo+IHdvcmtlciBh bGxvY2F0aW9uLg0KPiArICAgICAgICAqLw0KPiAgICAgICAgICwNCj4gDQo+ICAgICAgICAgICAg ICAgICAgICAgd2luZm8pOw0KPiANCj4gQEAgLTc2Miw2ICs3NjUsMTAgQEANCj4gSGFuZGxlUGFy YWxsZWxBcHBseU1lc3NhZ2UoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTdHJpbmdJ bmZvDQo+IG1zZykNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb250ZXh0X3N0YWNrID0NCj4gYXBw bHlfZXJyb3JfY29udGV4dF9zdGFjazsNCj4gDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGUgYWN0dWFs IGVycm9yIG11c3QgYmUgYWxyZWFkeQ0KPiByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseQ0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHdvcmtlci4NCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKi8NCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlcmVwb3J0KEVSUk9SLA0KPiANCj4gKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BS RVJFUVVJU0lURV9TVEFURSksDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlcnJtc2coInBhcmFsbGVsIGFwcGx5IHdvcmtlcg0KPiBleGl0ZWQgYWJu b3JtYWxseSIpLA0KDQpBZGRlZC4NCg0KQXR0YWNoIHRoZSBuZXcgdmVyc2lvbiBwYXRjaCB3aGlj aCBhZGRyZXNzZWQgYWxsIGNvbW1lbnRzIHNvIGZhci4NCg0KQmVzaWRlcywgSSBsZXQgdGhlIFBB IHNlbmQgYSBkaWZmZXJlbnQgbWVzc2FnZSB0byBMQSB3aGVuIGl0IGV4aXRzIGR1ZSB0bw0Kc3Vi c2NyaXB0aW9uIGluZm9ybWF0aW9uIGNoYW5nZS4gVGhlIExBIHdpbGwgcmVwb3J0IGEgbW9yZSBt ZWFuaW5nZnVsIG1lc3NhZ2UNCmFuZCByZXN0YXJ0IHJlcGxpY2F0aW9uIGFmdGVyIGNhdGNoaW5n IG5ldyBtZXNzYWdlIHRvIHByZXZlbnQgdGhlIExBIGZyb20NCnNlbmRpbmcgbWVzc2FnZSB0byBl eGl0ZWQgUEEuDQoNCkJlc3QgcmVnYXJkcywNCkhvdSB6ag0K --_006_OS0PR01MB571663F65904D00895AD159994109OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v52-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v52-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v52-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=8902; creation-date="Sun, 27 Nov 2022 04:10:48 GMT"; modification-date="Sun, 27 Nov 2022 04:13:28 GMT" Content-Transfer-Encoding: base64 RnJvbSBmOWE3NDk1YmIxNDAzYzhlZTllNzg1M2Y3ODI2ZmZiMGFkOGRmNzgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgNiBPY3QgMjAyMiAxNDo0MjoyNCArMDgwMApTdWJqZWN0OiBbUEFUQ0gg djUyIDUvNV0gQWRkIGEgbWFpbl93b3JrZXJfcGlkIHRvIHBnX3N0YXRfc3Vic2NyaXB0aW9uCgpt YWluX3dvcmtlcl9waWQgaXMgUHJvY2VzcyBJRCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwg aWYgdGhpcyBwcm9jZXNzIGlzIGEKYXBwbHkgcGFyYWxsZWwgd29ya2VyLiBOVUxMIGlmIHRoaXMg cHJvY2VzcyBpcyBhIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgYQpzeW5jaHJvbml6YXRpb24gd29y a2VyLgoKVGhlIG5ldyBjb2x1bW4gY2FuIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGxl YWRlciBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CnBhcmFsbGVsIHdvcmtlciB3aGljaCBpcyBhbHNv IHNpbWlsYXIgdG8gdGhlICdsZWFkZXJfcGlkJyBjb2x1bW4gaW4KcGdfc3RhdF9hY3Rpdml0eS4K LS0tCiBkb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sICAgICAgICAgICAgICAgfCAyNiArKysr KysrKysrKysrKysrKystLS0tLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bCAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIu YyB8IDMyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdCAgICAgICAgICAgIHwgIDYgKysrLS0tCiBzcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3J1bGVzLm91dCAgICAgICAgfCAgMyArKy0KIDUgZmlsZXMgY2hhbmdlZCwgNDMgaW5z ZXJ0aW9ucygrKSwgMjUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL21v bml0b3Jpbmcuc2dtbCBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwKaW5kZXggNzQ4NzQz NC4uM2JjMmJhNiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysg Yi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC0zMTg5LDExICszMTg5LDIyIEBAIFNF TEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9ldmVudCBGUk9NIHBnX3N0YXRfYWN0aXZp dHkgV0hFUkUgd2FpdF9ldmVudCBpCiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xlPSJj YXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAg ICAgPHN0cnVjdGZpZWxkPmFwcGx5X2xlYWRlcl9waWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5pbnRl Z2VyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUHJvY2VzcyBJ RCBvZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciwgaWYgdGhpcyBwcm9jZXNzIGlzIGEgYXBwbHkK KyAgICAgICBwYXJhbGxlbCB3b3JrZXIuIE5VTEwgaWYgdGhpcyBwcm9jZXNzIGlzIGEgbGVhZGVy IGFwcGx5IHdvcmtlciBvciBhCisgICAgICAgc3luY2hyb25pemF0aW9uIHdvcmtlci4KKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KICAgICAgICA8c3RydWN0ZmllbGQ+cmVsaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5 cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAgICBPSUQgb2YgdGhlIHJlbGF0 aW9uIHRoYXQgdGhlIHdvcmtlciBpcyBzeW5jaHJvbml6aW5nOyBudWxsIGZvciB0aGUKLSAgICAg ICBtYWluIGFwcGx5IHdvcmtlcgorICAgICAgIG1haW4gYXBwbHkgd29ya2VyIGFuZCB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAK QEAgLTMyMDMsNyArMzIxNCw3IEBAIFNFTEVDVCBwaWQsIHdhaXRfZXZlbnRfdHlwZSwgd2FpdF9l dmVudCBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVudCBpCiAgICAgICA8L3Bh cmE+CiAgICAgICA8cGFyYT4KICAgICAgICBMYXN0IHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiBy ZWNlaXZlZCwgdGhlIGluaXRpYWwgdmFsdWUgb2YKLSAgICAgICB0aGlzIGZpZWxkIGJlaW5nIDAK KyAgICAgICB0aGlzIGZpZWxkIGJlaW5nIDA7IG51bGwgZm9yIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzIxMiw3ICsz MjIzLDggQEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdf c3RhdF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGFz dF9tc2dfc2VuZF90aW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6 b25lPC90eXBlPgogICAgICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgU2VuZCB0aW1l IG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyCisgICAgICAg U2VuZCB0aW1lIG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVy OyBudWxsIGZvciB0aGUKKyAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFy YT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzIyMSw3ICszMjMzLDggQEAgU0VMRUNUIHBp ZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVS RSB3YWl0X2V2ZW50IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGFzdF9tc2dfcmVjZWlwdF90aW1l PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGltZXN0YW1wIHdpdGggdGltZSB6b25lPC90eXBlPgogICAg ICAgPC9wYXJhPgogICAgICAgPHBhcmE+Ci0gICAgICAgUmVjZWlwdCB0aW1lIG9mIGxhc3QgbWVz c2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyCisgICAgICAgUmVjZWlwdCB0aW1l IG9mIGxhc3QgbWVzc2FnZSByZWNlaXZlZCBmcm9tIG9yaWdpbiBXQUwgc2VuZGVyOyBudWxsIGZv cgorICAgICAgIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIKICAgICAgIDwvcGFyYT48L2VudHJ5 PgogICAgICA8L3Jvdz4KIApAQCAtMzIzMCw3ICszMjQzLDggQEAgU0VMRUNUIHBpZCwgd2FpdF9l dmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9hY3Rpdml0eSBXSEVSRSB3YWl0X2V2 ZW50IGkKICAgICAgICA8c3RydWN0ZmllbGQ+bGF0ZXN0X2VuZF9sc248L3N0cnVjdGZpZWxkPiA8 dHlwZT5wZ19sc248L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgICBM YXN0IHdyaXRlLWFoZWFkIGxvZyBsb2NhdGlvbiByZXBvcnRlZCB0byBvcmlnaW4gV0FMIHNlbmRl cgorICAgICAgIExhc3Qgd3JpdGUtYWhlYWQgbG9nIGxvY2F0aW9uIHJlcG9ydGVkIHRvIG9yaWdp biBXQUwgc2VuZGVyOyBudWxsIGZvcgorICAgICAgIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIK ICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApAQCAtMzI0MCw3ICszMjU0LDcg QEAgU0VMRUNUIHBpZCwgd2FpdF9ldmVudF90eXBlLCB3YWl0X2V2ZW50IEZST00gcGdfc3RhdF9h Y3Rpdml0eSBXSEVSRSB3YWl0X2V2ZW50IGkKICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgog ICAgICAgIFRpbWUgb2YgbGFzdCB3cml0ZS1haGVhZCBsb2cgbG9jYXRpb24gcmVwb3J0ZWQgdG8g b3JpZ2luIFdBTAotICAgICAgIHNlbmRlcgorICAgICAgIHNlbmRlcjsgbnVsbCBmb3IgdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlcgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93Pgog ICAgIDwvdGJvZHk+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3 cy5zcWwgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggYzJjN2Q4 YS4uZjI4MjU3MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Mu c3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtOTQ5LDYg Kzk0OSw3IEBAIENSRUFURSBWSUVXIHBnX3N0YXRfc3Vic2NyaXB0aW9uIEFTCiAgICAgICAgICAg ICBzdS5vaWQgQVMgc3ViaWQsCiAgICAgICAgICAgICBzdS5zdWJuYW1lLAogICAgICAgICAgICAg c3QucGlkLAorICAgICAgICAgICAgc3QuYXBwbHlfbGVhZGVyX3BpZCwKICAgICAgICAgICAgIHN0 LnJlbGlkLAogICAgICAgICAgICAgc3QucmVjZWl2ZWRfbHNuLAogICAgICAgICAgICAgc3QubGFz dF9tc2dfc2VuZF90aW1lLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hl ci5jCmluZGV4IDFmOGVhMDEuLjAzNDVjNjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL2xhdW5jaGVyLmMKQEAgLTEwNjksNyArMTA2OSw3IEBAIElzTG9naWNhbExhdW5jaGVy KHZvaWQpCiBEYXR1bQogcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FSR1Mp CiB7Ci0jZGVmaW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElPTl9DT0xTCTgKKyNkZWZpbmUgUEdf U1RBVF9HRVRfU1VCU0NSSVBUSU9OX0NPTFMJOQogCU9pZAkJCXN1YmlkID0gUEdfQVJHSVNOVUxM KDApID8gSW52YWxpZE9pZCA6IFBHX0dFVEFSR19PSUQoMCk7CiAJaW50CQkJaTsKIAlSZXR1cm5T ZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87CkBA IC0xMDk1LDEwICsxMDk1LDYgQEAgcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9O X0FSR1MpCiAJCWlmIChPaWRJc1ZhbGlkKHN1YmlkKSAmJiB3b3JrZXIuc3ViaWQgIT0gc3ViaWQp CiAJCQljb250aW51ZTsKIAotCQkvKiBTa2lwIGlmIHRoaXMgaXMgYSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgKi8KLQkJaWYgKGlzUGFyYWxsZWxBcHBseVdvcmtlcigmd29ya2VyKSkKLQkJCWNvbnRp bnVlOwotCiAJCXdvcmtlcl9waWQgPSB3b3JrZXIucHJvYy0+cGlkOwogCiAJCXZhbHVlc1swXSA9 IE9iamVjdElkR2V0RGF0dW0od29ya2VyLnN1YmlkKTsKQEAgLTExMDcsMjYgKzExMDMsMzIgQEAg cGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCWVsc2UKIAkJCW51 bGxzWzFdID0gdHJ1ZTsKIAkJdmFsdWVzWzJdID0gSW50MzJHZXREYXR1bSh3b3JrZXJfcGlkKTsK LQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQod29ya2VyLmxhc3RfbHNuKSkKKworCQlpZiAod29y a2VyLmFwcGx5X2xlYWRlcl9waWQgPT0gSW52YWxpZFBpZCkKIAkJCW51bGxzWzNdID0gdHJ1ZTsK IAkJZWxzZQotCQkJdmFsdWVzWzNdID0gTFNOR2V0RGF0dW0od29ya2VyLmxhc3RfbHNuKTsKLQkJ aWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9PSAwKQorCQkJdmFsdWVzWzNdID0gSW50MzJHZXRE YXR1bSh3b3JrZXIuYXBwbHlfbGVhZGVyX3BpZCk7CisKKwkJaWYgKFhMb2dSZWNQdHJJc0ludmFs aWQod29ya2VyLmxhc3RfbHNuKSkKIAkJCW51bGxzWzRdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFs dWVzWzRdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9zZW5kX3RpbWUpOwotCQlp ZiAod29ya2VyLmxhc3RfcmVjdl90aW1lID09IDApCisJCQl2YWx1ZXNbNF0gPSBMU05HZXREYXR1 bSh3b3JrZXIubGFzdF9sc24pOworCQlpZiAod29ya2VyLmxhc3Rfc2VuZF90aW1lID09IDApCiAJ CQludWxsc1s1XSA9IHRydWU7CiAJCWVsc2UKLQkJCXZhbHVlc1s1XSA9IFRpbWVzdGFtcFR6R2V0 RGF0dW0od29ya2VyLmxhc3RfcmVjdl90aW1lKTsKLQkJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQo d29ya2VyLnJlcGx5X2xzbikpCisJCQl2YWx1ZXNbNV0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdv cmtlci5sYXN0X3NlbmRfdGltZSk7CisJCWlmICh3b3JrZXIubGFzdF9yZWN2X3RpbWUgPT0gMCkK IAkJCW51bGxzWzZdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzZdID0gTFNOR2V0RGF0dW0o d29ya2VyLnJlcGx5X2xzbik7Ci0JCWlmICh3b3JrZXIucmVwbHlfdGltZSA9PSAwKQorCQkJdmFs dWVzWzZdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9yZWN2X3RpbWUpOworCQlp ZiAoWExvZ1JlY1B0cklzSW52YWxpZCh3b3JrZXIucmVwbHlfbHNuKSkKIAkJCW51bGxzWzddID0g dHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzddID0gVGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIu cmVwbHlfdGltZSk7CisJCQl2YWx1ZXNbN10gPSBMU05HZXREYXR1bSh3b3JrZXIucmVwbHlfbHNu KTsKKwkJaWYgKHdvcmtlci5yZXBseV90aW1lID09IDApCisJCQludWxsc1s4XSA9IHRydWU7CisJ CWVsc2UKKwkJCXZhbHVlc1s4XSA9IFRpbWVzdGFtcFR6R2V0RGF0dW0od29ya2VyLnJlcGx5X3Rp bWUpOwogCiAJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCByc2luZm8t PnNldERlc2MsCiAJCQkJCQkJIHZhbHVlcywgbnVsbHMpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQK aW5kZXggZjkzMDFiMi4uNmQxNzA1MCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19wcm9jLmRhdAorKysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC01NDI2 LDkgKzU0MjYsOSBAQAogICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24nLCBw cm9yb3dzID0+ICcxMCcsIHByb2lzc3RyaWN0ID0+ICdmJywKICAgcHJvcmV0c2V0ID0+ICd0Jywg cHJvdm9sYXRpbGUgPT4gJ3MnLCBwcm9wYXJhbGxlbCA9PiAncicsCiAgIHByb3JldHR5cGUgPT4g J3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICdvaWQnLAotICBwcm9hbGxhcmd0eXBlcyA9PiAne29p ZCxvaWQsb2lkLGludDQscGdfbHNuLHRpbWVzdGFtcHR6LHRpbWVzdGFtcHR6LHBnX2xzbix0aW1l c3RhbXB0en0nLAotICBwcm9hcmdtb2RlcyA9PiAne2ksbyxvLG8sbyxvLG8sbyxvfScsCi0gIHBy b2FyZ25hbWVzID0+ICd7c3ViaWQsc3ViaWQscmVsaWQscGlkLHJlY2VpdmVkX2xzbixsYXN0X21z Z19zZW5kX3RpbWUsbGFzdF9tc2dfcmVjZWlwdF90aW1lLGxhdGVzdF9lbmRfbHNuLGxhdGVzdF9l bmRfdGltZX0nLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCxvaWQsb2lkLGludDQsaW50NCxw Z19sc24sdGltZXN0YW1wdHosdGltZXN0YW1wdHoscGdfbHNuLHRpbWVzdGFtcHR6fScsCisgIHBy b2FyZ21vZGVzID0+ICd7aSxvLG8sbyxvLG8sbyxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAn e3N1YmlkLHN1YmlkLHJlbGlkLHBpZCxhcHBseV9sZWFkZXJfcGlkLHJlY2VpdmVkX2xzbixsYXN0 X21zZ19zZW5kX3RpbWUsbGFzdF9tc2dfcmVjZWlwdF90aW1lLGxhdGVzdF9lbmRfbHNuLGxhdGVz dF9lbmRfdGltZX0nLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbicgfSwK IHsgb2lkID0+ICcyMDI2JywgZGVzY3IgPT4gJ3N0YXRpc3RpY3M6IGN1cnJlbnQgYmFja2VuZCBQ SUQnLAogICBwcm9uYW1lID0+ICdwZ19iYWNrZW5kX3BpZCcsIHByb3ZvbGF0aWxlID0+ICdzJywg cHJvcGFyYWxsZWwgPT4gJ3InLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dAppbmRleCAz N2MxYzg2Li4wZTBiNWIyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMjA5 NCw2ICsyMDk0LDcgQEAgcGdfc3RhdF9zc2x8IFNFTEVDVCBzLnBpZCwKIHBnX3N0YXRfc3Vic2Ny aXB0aW9ufCBTRUxFQ1Qgc3Uub2lkIEFTIHN1YmlkLAogICAgIHN1LnN1Ym5hbWUsCiAgICAgc3Qu cGlkLAorICAgIHN0LmFwcGx5X2xlYWRlcl9waWQsCiAgICAgc3QucmVsaWQsCiAgICAgc3QucmVj ZWl2ZWRfbHNuLAogICAgIHN0Lmxhc3RfbXNnX3NlbmRfdGltZSwKQEAgLTIxMDEsNyArMjEwMiw3 IEBAIHBnX3N0YXRfc3Vic2NyaXB0aW9ufCBTRUxFQ1Qgc3Uub2lkIEFTIHN1YmlkLAogICAgIHN0 LmxhdGVzdF9lbmRfbHNuLAogICAgIHN0LmxhdGVzdF9lbmRfdGltZQogICAgRlJPTSAocGdfc3Vi c2NyaXB0aW9uIHN1Ci0gICAgIExFRlQgSk9JTiBwZ19zdGF0X2dldF9zdWJzY3JpcHRpb24oTlVM TDo6b2lkKSBzdChzdWJpZCwgcmVsaWQsIHBpZCwgcmVjZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5k X3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGltZSwgbGF0ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRf dGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9pZCkpKTsKKyAgICAgTEVGVCBKT0lOIHBnX3N0YXRf Z2V0X3N1YnNjcmlwdGlvbihOVUxMOjpvaWQpIHN0KHN1YmlkLCByZWxpZCwgcGlkLCBhcHBseV9s ZWFkZXJfcGlkLCByZWNlaXZlZF9sc24sIGxhc3RfbXNnX3NlbmRfdGltZSwgbGFzdF9tc2dfcmVj ZWlwdF90aW1lLCBsYXRlc3RfZW5kX2xzbiwgbGF0ZXN0X2VuZF90aW1lKSBPTiAoKHN0LnN1Ymlk ID0gc3Uub2lkKSkpOwogcGdfc3RhdF9zdWJzY3JpcHRpb25fc3RhdHN8IFNFTEVDVCBzcy5zdWJp ZCwKICAgICBzLnN1Ym5hbWUsCiAgICAgc3MuYXBwbHlfZXJyb3JfY291bnQsCi0tIAoyLjcuMi53 aW5kb3dzLjEKCg== --_006_OS0PR01MB571663F65904D00895AD159994109OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v52-0002-Serialize-partial-changes-to-disk-if-the-shm_mq-.patch" Content-Description: v52-0002-Serialize-partial-changes-to-disk-if-the-shm_mq-.patch Content-Disposition: attachment; filename="v52-0002-Serialize-partial-changes-to-disk-if-the-shm_mq-.patch"; size=37080; creation-date="Sun, 27 Nov 2022 04:10:48 GMT"; modification-date="Sun, 27 Nov 2022 04:13:29 GMT" Content-Transfer-Encoding: base64 RnJvbSBlNWE1ZDhiMGViYTFhNDkyMzlhYWJmYWU3MDI2ZjViMDgwNjc2MDBiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBTdW4sIDI3IE5vdiAyMDIyIDExOjAyOjI5ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NTIgMi81XSBTZXJpYWxpemUgcGFydGlhbCBjaGFuZ2VzIHRvIGRpc2sgaWYgdGhlIHNobV9tcQog YnVmZmVyIGlzIGZ1bGwKCldoZW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgdGltZXMgb3V0IHdo aWxlIHNlbmRpbmcgYSBtZXNzYWdlIHRvIHRoZSBwYXJhbGxlbAphcHBseSB3b3JrZXIuIEluc3Rl YWQgb2YgZXJyb3Jpbmcgb3V0LCBzd2l0Y2ggdG8gcGFydGlhbCBzZXJpYWxpemUgbW9kZSBhbmQg bGV0CnRoZSBsZWFkZXIgc2VyaWFsaXplIGFsbCByZW1haW5pbmcgY2hhbmdlcyB0byB0aGUgZmls ZSBhbmQgbm90aWZ5IHRoZSBwYXJhbGxlbAphcHBseSB3b3JrZXJzIHRvIHJlYWQgYW5kIGFwcGx5 IHRoZW0gYXQgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24uCi0tLQogLi4uL3JlcGxpY2F0aW9u L2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jICAgICAgfCAxODYgKysrKysrKysrKy0KIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgICAgICAgICAgIHwgMzQ4ICsr KysrKysrKysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmggICAgICAgICAgfCAgNDQgKysrCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dCAgICAgICAgICAgICAgICAgICB8ICAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDQ3MiBpbnNlcnRp b25zKCspLCAxMDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCA4NWJiOTA5Li5iY2VlZjA5 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxs ZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFy YWxsZWx3b3JrZXIuYwpAQCAtNzQsOCArNzQsMTAgQEAKICAqIG1lc3NhZ2VzLCBhbmQgdGhpcyB3 YWl0IGRvZXNuJ3QgYXBwZWFyIGluIGxtZ3IuCiAgKgogICogVG8gcmVzb2x2ZSB0aGlzIGlzc3Vl LCB3ZSB1c2Ugbm9uLWJsb2NraW5nIHdyaXRlIGFuZCB3YWl0IHdpdGggYSB0aW1lb3V0LiBJZgot ICogdGltZW91dCBpcyBleGNlZWRlZCwgdGhlIExBIHJlcG9ydHMgYW4gZXJyb3IgYW5kIHJlc3Rh cnRzIGxvZ2ljYWwKLSAqIHJlcGxpY2F0aW9uLgorICogdGltZW91dCBpcyBleGNlZWRlZCwgdGhl IExBIHdpbGwgd3JpdGUgdG8gZmlsZSBhbmQgaW5kaWNhdGUgUEEtMiB0aGF0IGl0CisgKiBuZWVk cyB0byByZWFkIGZpbGUgZm9yIHJlbWFpbmluZyBtZXNzYWdlcy4gVGhlbiBMQSB3aWxsIHN0YXJ0 IHdhaXRpbmcgZm9yCisgKiBjb21taXQgd2hpY2ggd2lsbCBkZXRlY3QgZGVhZGxvY2sgaWYgYW55 LiAoU2VlIHBhX3NlbmRfZGF0YSgpIGFuZCB0eXBlZGVmCisgKiBlbnVtIFRyYW5zQXBwbHlBY3Rp b24pCiAgKgogICogNCkgTG9jayB0eXBlCiAgKgpAQCAtMzE4LDkgKzMyMCwxMSBAQCBwYV9hbGxv Y2F0ZV93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpCiAJU3BpbkxvY2tBY3F1aXJlKCZ3aW5mby0+ c2hhcmVkLT5tdXRleCk7CiAJd2luZm8tPnNoYXJlZC0+eGFjdF9zdGF0ZSA9IFBBUkFMTEVMX1RS QU5TX1VOS05PV047CiAJd2luZm8tPnNoYXJlZC0+eGlkID0geGlkOworCXdpbmZvLT5zaGFyZWQt PmZpbGVzZXRfc3RhdGUgPSBMRUFERVJfRklMRVNFVF9VTktOT1dOOwogCVNwaW5Mb2NrUmVsZWFz ZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOwogCiAJd2luZm8tPmluX3VzZSA9IHRydWU7CisJd2lu Zm8tPnNlcmlhbGl6ZV9jaGFuZ2VzID0gZmFsc2U7CiAJZW50cnktPndpbmZvID0gd2luZm87CiAJ ZW50cnktPnhpZCA9IHhpZDsKIH0KQEAgLTQwNiw4ICs0MTAsMTggQEAgcGFfZnJlZV93b3JrZXIo UGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBUcmFuc2FjdGlvbklkIHhpZCkKIAluYXBw bHl3b3JrZXJzID0gbG9naWNhbHJlcF9wYV93b3JrZXJfY291bnQoTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCk7CiAJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiAKLQkvKiBT dG9wIHRoZSB3b3JrZXIgaWYgdGhlcmUgYXJlIGVub3VnaCB3b3JrZXJzIGluIHRoZSBwb29sLiAq LwotCWlmIChuYXBwbHl3b3JrZXJzID4gKG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9z dWJzY3JpcHRpb24gLyAyKSkKKwkvKgorCSAqIFN0b3AgdGhlIHdvcmtlciBpZiB0aGVyZSBhcmUg ZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wuCisJICoKKwkgKiBYWFggd2UgYWxzbyBuZWVkIHRv IHN0b3AgdGhlIHdvcmtlciBpZiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlcgorCSAqIHNlcmlhbGl6 ZWQgcGFydCBvZiB0aGUgdHJhbnNhY3Rpb24gZGF0YSB0byBhIGZpbGUgZHVlIHRvIHNlbmQgdGlt ZW91dC4KKwkgKiBUaGlzIGlzIGJlY2F1c2UgdGhlIG1lc3NhZ2UgY291bGQgYmUgcGFydGlhbGx5 IHdyaXR0ZW4gdG8gdGhlIHF1ZXVlIGR1ZQorCSAqIHRvIHNlbmQgdGltZW91dCBhbmQgdGhlcmUg aXMgbm8gd2F5IHRvIGNsZWFuIHRoZSBxdWV1ZSBvdGhlciB0aGFuCisJICogcmVzZW5kaW5nIHRo ZSBtZXNzYWdlIHVudGlsIGl0IHN1Y2NlZWRzLiBUbyBhdm9pZCBjb21wbGV4aXR5LCB3ZQorCSAq IGRpcmVjdGx5IHN0b3AgdGhlIHdvcmtlciBpbiB0aGlzIGNhc2UuCisJICovCisJaWYgKHdpbmZv LT5zZXJpYWxpemVfY2hhbmdlcyB8fAorCQluYXBwbHl3b3JrZXJzID4gKG1heF9wYXJhbGxlbF9h cHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gLyAyKSkKIAl7CiAJCWludAkJCXNsb3Rfbm87 CiAJCXVpbnQxNgkJZ2VuZXJhdGlvbjsKQEAgLTQyNCwxMiArNDM4LDIwIEBAIHBhX2ZyZWVfd29y a2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgVHJhbnNhY3Rpb25JZCB4aWQpCiAJ CXJldHVybiB0cnVlOwogCX0KIAorCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVk IGNoYW5nZXMuICovCisJaWYgKHdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcykKKwkJc3RyZWFtX2Ns ZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgd2luZm8tPnNoYXJlZC0+eGlk KTsKKwogCXdpbmZvLT5pbl91c2UgPSBmYWxzZTsKKwl3aW5mby0+c2VyaWFsaXplX2NoYW5nZXMg PSBmYWxzZTsKIAogCXJldHVybiBmYWxzZTsKIH0KIAotLyogRnJlZSB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIGluZm9ybWF0aW9uLiAqLworLyoKKyAqIEZyZWUgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBpbmZvcm1hdGlvbiBhbmQgdW5saW5rIHRoZSBmaWxlcyB3aXRoCisgKiBzZXJpYWxp emVkIGNoYW5nZXMgaWYgYW55LgorICovCiBzdGF0aWMgdm9pZAogcGFfZnJlZV93b3JrZXJfaW5m byhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCiB7CkBAIC00NDEsNiArNDYzLDEwIEBA IHBhX2ZyZWVfd29ya2VyX2luZm8oUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvKQogCWlm ICh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlKQogCQlzaG1fbXFfZGV0YWNoKHdpbmZvLT5lcnJvcl9t cV9oYW5kbGUpOwogCisJLyogVW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdl cy4gKi8KKwlpZiAod2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKQorCQlzdHJlYW1fY2xlYW51cF9m aWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB3aW5mby0+c2hhcmVkLT54aWQpOworCiAJ aWYgKHdpbmZvLT5kc21fc2VnKQogCQlkc21fZGV0YWNoKHdpbmZvLT5kc21fc2VnKTsKIApAQCAt NDU0LDYgKzQ4MCw0MyBAQCBwYV9mcmVlX3dvcmtlcl9pbmZvKFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICp3aW5mbykKIH0KIAogLyoKKyAqIFJlcGxheSB0aGUgc3Bvb2xlZCBtZXNzYWdlcyBpbiB0 aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlmIGxlYWRlciBhcHBseQorICogd29ya2VyIGhhcyBm aW5pc2hlZCBzZXJpYWxpemluZyBjaGFuZ2VzIHRvIHRoZSBmaWxlLgorICovCitzdGF0aWMgdm9p ZAorcGFfc3Bvb2xlZF9tZXNzYWdlcyh2b2lkKQoreworCUxlYWRlckZpbGVTZXRTdGF0ZSBmaWxl c2V0X3N0YXRlOworCisJLyoKKwkgKiBDaGVjayBpZiBjaGFuZ2VzIGhhdmUgYmVlbiBzZXJpYWxp emVkIHRvIGRpc2suIGlmIHNvLCByZWFkIGFuZCBhcHBseQorCSAqIHRoZW0uCisJICovCisJU3Bp bkxvY2tBY3F1aXJlKCZNeVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7CisJZmlsZXNldF9zdGF0ZSA9 IE15UGFyYWxsZWxTaGFyZWQtPmZpbGVzZXRfc3RhdGU7CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBh cmFsbGVsU2hhcmVkLT5tdXRleCk7CisKKwkvKgorCSAqIEFjcXVpcmUgdGhlIHN0cmVhbSBsb2Nr IGlmIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGlzIHNlcmlhbGl6aW5nCisJICogY2hhbmdlcyB0 byB0aGUgZmlsZSwgYmVjYXVzZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgbm8gbG9u Z2VyCisJICogaGF2ZSBhIGNoYW5jZSB0byByZWNlaXZlIGEgU1RSRUFNX1NUT1AgYW5kIGFjcXVp cmUgdGhlIGxvY2sgdW50aWwgdGhlCisJICogbGVhZGVyIHNlcmlhbGl6ZSBhbGwgY2hhbmdlcyB0 byB0aGUgZmlsZS4KKwkgKi8KKwlpZiAoZmlsZXNldF9zdGF0ZSA9PSBMRUFERVJfRklMRVNFVF9C VVNZKQorCXsKKwkJcGFfbG9ja19zdHJlYW0oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NT aGFyZUxvY2spOworCQlwYV91bmxvY2tfc3RyZWFtKE15UGFyYWxsZWxTaGFyZWQtPnhpZCwgQWNj ZXNzU2hhcmVMb2NrKTsKKwl9CisJZWxzZSBpZiAoZmlsZXNldF9zdGF0ZSA9PSBMRUFERVJfRklM RVNFVF9BQ0NFU1NJQkxFKQorCXsKKwkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcygmTXlQYXJhbGxl bFNoYXJlZC0+ZmlsZXNldCwKKwkJCQkJCQkgICBNeVBhcmFsbGVsU2hhcmVkLT54aWQsCisJCQkJ CQkJICAgSW52YWxpZFhMb2dSZWNQdHIpOworCQlwYV9zZXRfZmlsZXNldF9zdGF0ZShNeVBhcmFs bGVsU2hhcmVkLCBMRUFERVJfRklMRVNFVF9VTktOT1dOKTsKKwl9Cit9CisKKy8qCiAgKiBJbnRl cnJ1cHQgaGFuZGxlciBmb3IgbWFpbiBsb29wcyBvZiBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCiAg Ki8KIHN0YXRpYyB2b2lkCkBAIC01NDgsNiArNjExLDggQEAgTG9naWNhbFBhcmFsbGVsQXBwbHlM b29wKHNobV9tcV9oYW5kbGUgKm1xaCkKIAkJewogCQkJaW50CQkJcmM7CiAKKwkJCXBhX3Nwb29s ZWRfbWVzc2FnZXMoKTsKKwogCQkJaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJCXsK IAkJCQkvKgpAQCAtMTAxNyw2ICsxMDgyLDEwIEBAIHBhX2luaXRfYW5kX2xhdW5jaF93b3JrZXIo dm9pZCkKIC8qCiAgKiBTZW5kIHRoZSBkYXRhIHRvIHRoZSBzcGVjaWZpZWQgcGFyYWxsZWwgYXBw bHkgd29ya2VyIHZpYSBzaGFyZWQtbWVtb3J5CiAgKiBxdWV1ZS4KKyAqCisgKiBXaGVuIHNlbmRp bmcgZGF0YSB0aW1lcyBvdXQsIGRhdGEgd2lsbCBiZSBzZXJpYWxpemVkIHRvIGRpc2suIEFuZCB0 aGUKKyAqIGN1cnJlbnQgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHdpbGwgZW50ZXIgUEFSVElBTF9T RVJJQUxJWkUgbW9kZSwgd2hpY2ggbWVhbnMKKyAqIHRoYXQgc3Vic2VxdWVudCBkYXRhIHdpbGwg YWxzbyBiZSBzZXJpYWxpemVkIHRvIGRpc2suCiAgKi8KIHZvaWQKIHBhX3NlbmRfZGF0YShQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFNpemUgbmJ5dGVzLCBjb25zdCB2b2lkICpkYXRh KQpAQCAtMTAyNiw2ICsxMDk1LDcgQEAgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICp3aW5mbywgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEpCiAJVGltZXN0YW1wVHog c3RhcnRUaW1lID0gMDsKIAogCUFzc2VydCghSXNUcmFuc2FjdGlvblN0YXRlKCkpOworCUFzc2Vy dCghd2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzKTsKIAogI2RlZmluZSBTSE1fU0VORF9SRVRSWV9J TlRFUlZBTF9NUyAxMDAwCiAjZGVmaW5lIFNITV9TRU5EX1RJTUVPVVRfTVMJCTEwMDAwCkBAIC0x MDYwLDkgKzExMzAsNTYgQEAgcGFfc2VuZF9kYXRhKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3 aW5mbywgU2l6ZSBuYnl0ZXMsIGNvbnN0IHZvaWQgKmRhdGEpCiAKIAkJaWYgKFRpbWVzdGFtcERp ZmZlcmVuY2VFeGNlZWRzKHN0YXJ0VGltZSwgR2V0Q3VycmVudFRpbWVzdGFtcCgpLAogCQkJCQkJ CQkJICAgU0hNX1NFTkRfVElNRU9VVF9NUykpCi0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQkoZXJy Y29kZShFUlJDT0RFX0NPTk5FQ1RJT05fRkFJTFVSRSksCi0JCQkJCSBlcnJtc2coInRlcm1pbmF0 aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGR1ZSB0byB0aW1l b3V0IikpKTsKKwkJeworCQkJU3RyaW5nSW5mb0RhdGEgbXNnOworCQkJTG9naWNhbFJlcE1zZ1R5 cGUgYWN0aW9uOworCisJCQkvKgorCQkJICogVGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBtaWdo dCBiZSBzdHVjayBmb3Igc29tZSByZWFzb24sIHNvCisJCQkgKiBzdG9wIHNlbmRpbmcgZGF0YSB0 byBwYXJhbGxlbCB3b3JrZXIgYW5kIHN0YXJ0IHRvIHNlcmlhbGl6ZQorCQkJICogZGF0YSB0byBm aWxlcy4KKwkJCSAqLworCQkJd2luZm8tPnNlcmlhbGl6ZV9jaGFuZ2VzID0gdHJ1ZTsKKworCQkJ aW5pdFN0cmluZ0luZm8oJm1zZyk7CisJCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKCZtc2csIGRh dGEsIG5ieXRlcyk7CisKKwkJCS8qIFNraXAgZmlyc3QgYnl0ZSBhbmQgc3RhdGlzdGljcyBmaWVs ZHMuICovCisJCQltc2cuY3Vyc29yICs9IFNJWkVfU1RBVFNfTUVTU0FHRSArIDE7CisKKwkJCS8q IEluaXRpYWxpemUgdGhlIHN0cmVhbSBmaWxlc2V0LiAqLworCQkJc2VyaWFsaXplX3N0cmVhbV9z dGFydCh3aW5mby0+c2hhcmVkLT54aWQsIHRydWUpOworCisJCQkvKiBXcml0ZSB0aGlzIG1lc3Nh Z2UgdG8gYSBmaWxlLiAqLworCQkJYWN0aW9uID0gcHFfZ2V0bXNnYnl0ZSgmbXNnKTsKKwkJCXN0 cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCAmbXNnKTsKKworCQkJLyoKKwkJCSAqIFRoZSBzdHJl YW0gbG9jayBpcyByZWxlYXNlZCB3aGVuIHByb2Nlc3NpbmcgY2hhbmdlcyBpbiBhCisJCQkgKiBz dHJlYW1pbmcgYmxvY2ssIHNvIHRoZSBsZWFkZXIgbmVlZHMgdG8gYWNxdWlyZSB0aGUgbG9jayBo ZXJlCisJCQkgKiBiZWZvcmUgZW50ZXJpbmcgUEFSVElBTF9TRVJJQUxJWkUgbW9kZSB0byBlbnN1 cmUgdGhhdCB0aGUKKwkJCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIHdhaXQgZm9yIHRo ZSBsZWFkZXIgdG8gcmVsZWFzZSB0aGUKKwkJCSAqIHN0cmVhbSBsb2NrLgorCQkJICovCisJCQlp ZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gJiYKKwkJCQlhY3Rpb24gIT0gTE9HSUNBTF9SRVBf TVNHX1NUUkVBTV9TVE9QKQorCQkJeworCQkJCXBhX2xvY2tfc3RyZWFtKHdpbmZvLT5zaGFyZWQt PnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CisJCQl9CisKKwkJCS8qCisJCQkgKiBDbG9zZSB0 aGUgc3RyZWFtIGZpbGUgaWYgbm90IGluIGEgc3RyZWFtaW5nIGJsb2NrIG9yIHRoZQorCQkJICog bWVzc2FnZSBiZWluZyBwcm9jZXNzZWQgaXMgdGhlIGxhc3QgbWVzc2FnZSBvZiBhIHN0cmVhbWlu ZworCQkJICogYmxvY2suCisJCQkgKi8KKwkJCWVsc2UKKwkJCXsKKwkJCQlzZXJpYWxpemVfc3Ry ZWFtX3N0b3Aod2luZm8tPnNoYXJlZC0+eGlkKTsKKwkJCX0KKworCQkJcGFfc2V0X2ZpbGVzZXRf c3RhdGUod2luZm8tPnNoYXJlZCwgTEVBREVSX0ZJTEVTRVRfQlVTWSk7CisJCQlicmVhazsKKwkJ fQogCX0KIH0KIApAQCAtMTI5Myw5ICsxNDEwLDQwIEBAIHBhX3N0cmVhbV9hYm9ydChMb2dpY2Fs UmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhKQogCiAJCQlpZiAoeGlkX3RtcCA9PSBzdWJ4 aWQpCiAJCQl7CisJCQkJYm9vbAkJcmVvcGVuX3N0cmVhbV9mZCA9IGZhbHNlOworCQkJCWludAkJ CWZpbGVubzsKKwkJCQlvZmZfdAkJb2Zmc2V0OworCisJCQkJLyoKKwkJCQkgKiBJZiB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyIGlzIGFwcGx5aW5nIHRoZSBzcG9vbGVkCisJCQkJICogbWVzc2Fn ZXMsIHdlIHNhdmUgdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBhbmQgY2xvc2UgdGhlCisJCQkJ ICogZmlsZSB0byBwcmV2ZW50IHRoZSBmaWxlIGZyb20gYmVpbmcgYWNjaWRlbnRhbGx5IGNsb3Nl ZCBvbgorCQkJCSAqIHJvbGxiYWNrLgorCQkJCSAqLworCQkJCWlmIChzdHJlYW1fZmQpCisJCQkJ eworCQkJCQlCdWZGaWxlVGVsbChzdHJlYW1fZmQsICZmaWxlbm8sICZvZmZzZXQpOworCQkJCQlC dWZGaWxlQ2xvc2Uoc3RyZWFtX2ZkKTsKKwkJCQkJcmVvcGVuX3N0cmVhbV9mZCA9IHRydWU7CisJ CQkJfQorCiAJCQkJUm9sbGJhY2tUb1NhdmVwb2ludChzcG5hbWUpOwogCQkJCUNvbW1pdFRyYW5z YWN0aW9uQ29tbWFuZCgpOwogCQkJCXN1YnhhY3RsaXN0ID0gbGlzdF90cnVuY2F0ZShzdWJ4YWN0 bGlzdCwgaSArIDEpOworCisJCQkJLyoKKwkJCQkgKiBSZW9wZW4gdGhlIGZpbGUgYW5kIHNldCB0 aGUgZmlsZSBwb3NpdGlvbiB0byB0aGUgc2F2ZWQKKwkJCQkgKiBwb3NpdGlvbi4KKwkJCQkgKi8K KwkJCQlpZiAocmVvcGVuX3N0cmVhbV9mZCkKKwkJCQl7CisJCQkJCWNoYXIJCXBhdGhbTUFYUEdQ QVRIXTsKKworCQkJCQljaGFuZ2VzX2ZpbGVuYW1lKHBhdGgsIE15TG9naWNhbFJlcFdvcmtlci0+ c3ViaWQsIHhpZCk7CisJCQkJCXN0cmVhbV9mZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldCgmTXlQYXJh bGxlbFNoYXJlZC0+ZmlsZXNldCwKKwkJCQkJCQkJCQkJCSAgIHBhdGgsIE9fUkRPTkxZLCBmYWxz ZSk7CisJCQkJCUJ1ZkZpbGVTZWVrKHN0cmVhbV9mZCwgZmlsZW5vLCBvZmZzZXQsIFNFRUtfU0VU KTsKKwkJCQl9CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTEzMDUsNiArMTQ1MywyOCBAQCBw YV9zdHJlYW1fYWJvcnQoTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSAqYWJvcnRfZGF0YSkKIH0K IAogLyoKKyAqIFNldCB0aGUgZmlsZXNldF9zdGF0ZSBmbGFnIGZvciB0aGUgZ2l2ZW4gcGFyYWxs ZWwgYXBwbHkgd29ya2VyLiBUaGUKKyAqIHN0cmVhbV9maWxlc2V0IG9mIHRoZSBsZWFkZXIgYXBw bHkgd29ya2VyIHdpbGwgYmUgd3JpdHRlbiBpbnRvIHRoZSBzaGFyZWQKKyAqIG1lbW9yeSBpZiB0 aGUgZmlsZXNldF9zdGF0ZSBpcyBMRUFERVJfRklMRVNFVF9BQ0NFU1NJQkxFLgorICovCit2b2lk CitwYV9zZXRfZmlsZXNldF9zdGF0ZShQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkICp3c2hhcmVk LAorCQkJCQkgTGVhZGVyRmlsZVNldFN0YXRlIGZpbGVzZXRfc3RhdGUpCit7CisJU3BpbkxvY2tB Y3F1aXJlKCZ3c2hhcmVkLT5tdXRleCk7CisJd3NoYXJlZC0+ZmlsZXNldF9zdGF0ZSA9IGZpbGVz ZXRfc3RhdGU7CisKKwlpZiAoZmlsZXNldF9zdGF0ZSA9PSBMRUFERVJfRklMRVNFVF9BQ0NFU1NJ QkxFKQorCXsKKwkJQXNzZXJ0KGFtX2xlYWRlcl9hcHBseV93b3JrZXIoKSk7CisJCUFzc2VydChN eUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKwkJd3NoYXJlZC0+ZmlsZXNldCA9 ICpNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0OworCX0KKworCVNwaW5Mb2NrUmVs ZWFzZSgmd3NoYXJlZC0+bXV0ZXgpOworfQorCisvKgogICogSGVscGVyIGZ1bmN0aW9ucyB0byBh Y3F1aXJlIGFuZCByZWxlYXNlIGEgbG9jayBmb3IgZWFjaCBzdHJlYW0gYmxvY2suCiAgKgogICog U2V0IGxvY2t0YWdfZmllbGQ0IHRvIFBBUkFMTEVMX0FQUExZX0xPQ0tfU1RSRUFNIHRvIGluZGlj YXRlIHRoYXQgaXQncyBhCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpp bmRleCAzMjA4MWVmLi5jYzUyZDdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv d29ya2VyLmMKQEAgLTIxOSw3ICsyMTksNiBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dhbHJl Y2VpdmVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgiCiAjaW5j bHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgotI2luY2x1ZGUgInN0b3JhZ2UvYnVmZmls ZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9mZC5o IgogI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCkBAIC0yNzgsNiArMjc3LDE5IEBAIHR5cGVkZWYg c3RydWN0IEFwcGx5RXhlY3V0aW9uRGF0YQogICogQ2hhbmdlcyBhcmUgd3JpdHRlbiB0byB0ZW1w b3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCB3aGVuIHRoZSBmaW5hbAogICogY29tbWl0IGFy cml2ZXMuCiAgKgorICogVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFOgorICogVGhlIGFj dGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFwcGx5IHdvcmtlciBhbmQgaGF2 ZSBzZW50IHNvbWUKKyAqIGNoYW5nZXMgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgYnV0 IHRoZSByZW1haW5pbmcgY2hhbmdlcyBuZWVkIHRvIGJlCisgKiBzZXJpYWxpemVkIHRvIGRpc2sg ZHVlIHRvIHRpbWVvdXQgd2hpbGUgc2VuZGluZyBkYXRhLCBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5 CisgKiB3b3JrZXIgd2lsbCBhcHBseSB0aGVzZSBjaGFuZ2VzIHdoZW4gdGhlIGZpbmFsIGNvbW1p dCBhcnJpdmVzLgorICoKKyAqIE9uZSBtaWdodCB0aGluayB3ZSBjYW4gdXNlIExFQURFUl9TRVJJ QUxJWkUgZGlyZWN0bHkuIEJ1dCBpbiBwYXJ0aWFsCisgKiBzZXJpYWxpemUgbW9kZSwgaW4gYWRk aXRpb24gdG8gc2VyaWFsaXppbmcgY2hhbmdlcyB0byBmaWxlLCB0aGUgbGVhZGVyCisgKiB3b3Jr ZXIgbmVlZHMgdG8gd3JpdGUgdGhlIFNUUkVBTV9YWFggbWVzc2FnZSB0byBkaXNrLCBhbmQgbmVl ZHMgdG8gd2FpdCBmb3IKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB0byBmaW5pc2ggdGhlIHRy YW5zYWN0aW9uIHdoZW4gcHJvY2Vzc2luZyB0aGUKKyAqIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21t YW5kLiBTbyBhIG5ldyBhY3Rpb24gd2FzIGludHJvZHVjZWQgdG8gbWFrZSB0aGUgbG9naWMKKyAq IGNsZWFyZXIuCisgKgogICogVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CiAgKiBUaGUg YWN0aW9uIG1lYW5zIHRoYXQgd2UgYXJlIGluIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBu ZWVkIHRvIHNlbmQgdGhlCiAgKiBjaGFuZ2VzIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CkBAIC0yOTMsNiArMzA1LDcgQEAgdHlwZWRlZiBlbnVtCiAKIAkvKiBBY3Rpb25zIGZvciBzdHJl YW1pbmcgdHJhbnNhY3Rpb25zLiAqLwogCVRSQU5TX0xFQURFUl9TRVJJQUxJWkUsCisJVFJBTlNf TEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFLAogCVRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVM LAogCVRSQU5TX1BBUkFMTEVMX0FQUExZCiB9IFRyYW5zQXBwbHlBY3Rpb247CkBAIC0zNTQsNyAr MzY3LDcgQEAgc3RhdGljIFhMb2dSZWNQdHIgc2tpcF94YWN0X2ZpbmlzaF9sc24gPSBJbnZhbGlk WExvZ1JlY1B0cjsKICNkZWZpbmUgaXNfc2tpcHBpbmdfY2hhbmdlcygpICh1bmxpa2VseSghWExv Z1JlY1B0cklzSW52YWxpZChza2lwX3hhY3RfZmluaXNoX2xzbikpKQogCiAvKiBCdWZGaWxlIGhh bmRsZSBvZiB0aGUgY3VycmVudCBzdHJlYW1pbmcgZmlsZSAqLwotc3RhdGljIEJ1ZkZpbGUgKnN0 cmVhbV9mZCA9IE5VTEw7CitCdWZGaWxlICAgICpzdHJlYW1fZmQgPSBOVUxMOwogCiB0eXBlZGVm IHN0cnVjdCBTdWJYYWN0SW5mbwogewpAQCAtMzc1LDcgKzM4OCw3IEBAIHR5cGVkZWYgc3RydWN0 IEFwcGx5U3ViWGFjdERhdGEKIHN0YXRpYyBBcHBseVN1YlhhY3REYXRhIHN1YnhhY3RfZGF0YSA9 IHswLCAwLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwgTlVMTH07CiAKIHN0YXRpYyBpbmxpbmUgdm9p ZCBzdWJ4YWN0X2ZpbGVuYW1lKGNoYXIgKnBhdGgsIE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4 aWQpOwotc3RhdGljIGlubGluZSB2b2lkIGNoYW5nZXNfZmlsZW5hbWUoY2hhciAqcGF0aCwgT2lk IHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCk7CitpbmxpbmUgdm9pZCBjaGFuZ2VzX2ZpbGVuYW1l KGNoYXIgKnBhdGgsIE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpOwogCiAvKgogICogSW5m b3JtYXRpb24gYWJvdXQgc3VidHJhbnNhY3Rpb25zIG9mIGEgZ2l2ZW4gdG9wbGV2ZWwgdHJhbnNh Y3Rpb24uCkBAIC0zODgsMTAgKzQwMSw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjbGVhbnVwX3N1 YnhhY3RfaW5mbyh2b2lkKTsKIC8qCiAgKiBTZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIGNoYW5n ZXMgZm9yIGEgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCiAgKi8KLXN0YXRpYyB2b2lkIHN0cmVhbV9j bGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpOwogc3RhdGljIHZvaWQg c3RyZWFtX29wZW5fZmlsZShPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkLAogCQkJCQkJCSBi b29sIGZpcnN0X3NlZ21lbnQpOwotc3RhdGljIHZvaWQgc3RyZWFtX3dyaXRlX2NoYW5nZShjaGFy IGFjdGlvbiwgU3RyaW5nSW5mbyBzKTsKK3N0YXRpYyB2b2lkIHN0cmVhbV93cml0ZV9tZXNzYWdl KFRyYW5zYWN0aW9uSWQgeGlkLCBjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKTsKIHN0YXRpYyB2 b2lkIHN0cmVhbV9jbG9zZV9maWxlKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBzZW5kX2ZlZWRiYWNr KFhMb2dSZWNQdHIgcmVjdnBvcywgYm9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkpOwpAQCAt NDIzLDkgKzQzNSw2IEBAIHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFw cGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAvKiBDb21wdXRlIEdJRCBmb3IgdHdvX3BoYXNlIHRy YW5zYWN0aW9ucyAqLwogc3RhdGljIHZvaWQgVHdvUGhhc2VUcmFuc2FjdGlvbkdpZChPaWQgc3Vi aWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBjaGFyICpnaWQsIGludCBzemdpZCk7CiAKLS8qIENvbW1v biBzdHJlYW1pbmcgZnVuY3Rpb24gdG8gYXBwbHkgYWxsIHRoZSBzcG9vbGVkIG1lc3NhZ2VzICov Ci1zdGF0aWMgdm9pZCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBY TG9nUmVjUHRyIGxzbik7Ci0KIC8qIEZ1bmN0aW9ucyBmb3Igc2tpcHBpbmcgY2hhbmdlcyAqLwog c3RhdGljIHZvaWQgbWF5YmVfc3RhcnRfc2tpcHBpbmdfY2hhbmdlcyhYTG9nUmVjUHRyIGZpbmlz aF9sc24pOwogc3RhdGljIHZvaWQgc3RvcF9za2lwcGluZ19jaGFuZ2VzKHZvaWQpOwpAQCAtNTg1 LDYgKzU5NCw3IEBAIGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlw ZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKIAlUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkOwogCVBh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKIAlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2Fj dGlvbjsKKwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2c7CiAKIAlhcHBseV9hY3Rpb24gPSBn ZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHN0cmVhbV94aWQsICZ3aW5mbyk7CiAKQEAgLTU5 NCw2ICs2MDQsOCBAQCBoYW5kbGVfc3RyZWFtZWRfdHJhbnNhY3Rpb24oTG9naWNhbFJlcE1zZ1R5 cGUgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiAKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQo c3RyZWFtX3hpZCkpOwogCisJb3JpZ2luYWxfbXNnID0gKnM7CisKIAkvKgogCSAqIFdlIHNob3Vs ZCBoYXZlIHJlY2VpdmVkIFhJRCBvZiB0aGUgc3VieGFjdCBhcyB0aGUgZmlyc3QgcGFydCBvZiB0 aGUKIAkgKiBtZXNzYWdlLCBzbyBleHRyYWN0IGl0LgpAQCAtNjE3LDEwICs2MjksMTQgQEAgaGFu ZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExvZ2ljYWxSZXBNc2dUeXBlIGFjdGlvbiwgU3RyaW5n SW5mbyBzKQogCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShhY3Rpb24sIHMpOwogCQkJcmV0dXJuIHRy dWU7CiAKKwkJY2FzZSBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CiAJCWNhc2UgVFJB TlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CiAJCQlBc3NlcnQod2luZm8pOwogCi0JCQlwYV9z ZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisJCQlpZiAoYXBwbHlfYWN0aW9uID09 IFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMKQorCQkJCXBhX3NlbmRfZGF0YSh3aW5mbywg cy0+bGVuLCBzLT5kYXRhKTsKKwkJCWVsc2UKKwkJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlv biwgJm9yaWdpbmFsX21zZyk7CiAKIAkJCS8qCiAJCQkgKiBYWFggVGhlIHB1Ymxpc2hlciBzaWRl IGRvZXNuJ3QgYWx3YXlzIHNlbmQgcmVsYXRpb24vdHlwZSB1cGRhdGUKQEAgLTEyNjUsNiArMTI4 MSw3IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJTG9naWNh bFJlcFByZXBhcmVkVHhuRGF0YSBwcmVwYXJlX2RhdGE7CiAJUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvOwogCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCVN0cmluZ0luZm9E YXRhIG9yaWdpbmFsX21zZyA9ICpzOwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQog CQllcmVwb3J0KEVSUk9SLApAQCAtMTI5MCw3ICsxMzA3LDggQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBz ZXJpYWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCiAJCQkgKiBzcG9vbGVkIG9wZXJh dGlvbnMuCiAJCQkgKi8KLQkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJlcGFyZV9kYXRhLnhp ZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMo TXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCwKKwkJCQkJCQkJICAgcHJlcGFyZV9k YXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAogCQkJLyogTWFyayB0aGUgdHJh bnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCiAJCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5h bCgmcHJlcGFyZV9kYXRhKTsKQEAgLTEzMDYsNiArMTMyNCw3IEBAIGFwcGx5X2hhbmRsZV9zdHJl YW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX0xFQURF Ul9TRU5EX1RPX1BBUkFMTEVMOgorCQljYXNlIFRSQU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTEla RToKIAkJCUFzc2VydCh3aW5mbyk7CiAKIAkJCS8qCkBAIC0xMzE1LDEzICsxMzM0LDIxIEBAIGFw cGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJCQlwYV91bmxvY2tfc3Ry ZWFtKHdpbmZvLT5zaGFyZWQtPnhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7CiAKIAkJCS8qIFNl bmQgU1RSRUFNIFBSRVBBUkUgbWVzc2FnZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAq LwotCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCQkJaWYgKGFwcGx5 X2FjdGlvbiA9PSBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTCkKKwkJCQlwYV9zZW5kX2Rh dGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisJCQllbHNlCisJCQkJc3RyZWFtX3dyaXRlX21l c3NhZ2UocHJlcGFyZV9kYXRhLnhpZCwKKwkJCQkJCQkJCSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFN X1BSRVBBUkUsCisJCQkJCQkJCQkgJm9yaWdpbmFsX21zZyk7CisKKwkJCWlmICh3aW5mby0+c2Vy aWFsaXplX2NoYW5nZXMpCisJCQkJcGFfc2V0X2ZpbGVzZXRfc3RhdGUod2luZm8tPnNoYXJlZCwg TEVBREVSX0ZJTEVTRVRfQUNDRVNTSUJMRSk7CiAKIAkJCS8qCi0JCQkgKiBBZnRlciBzZW5kaW5n IHRoZSBkYXRhIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHdhaXQgZm9yCi0JCQkgKiB0 aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1p dAotCQkJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBk ZXBlbmRlbmNpZXMgYW5kCi0JCQkgKiBkZWFkbG9ja3MuCisJCQkgKiBBZnRlciBzZW5kaW5nIHRo ZSBkYXRhIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgb3IKKwkJCSAqIHNlcmlhbGl6aW5n IGRhdGEgdG8gZmlsZSwgd2FpdCBmb3IgdGhhdCB3b3JrZXIgdG8gZmluaXNoLiBUaGlzCisJCQkg KiBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0IG9yZGVyIHdoaWNoIGF2b2lkcyBmYWls dXJlcyBkdWUKKwkJCSAqIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQgZGVhZGxvY2tz LgogCQkJICovCiAJCQlwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5mbyk7CiAJCQkodm9pZCkg cGFfZnJlZV93b3JrZXIod2luZm8sIHByZXBhcmVfZGF0YS54aWQpOwpAQCAtMTMzMiw2ICsxMzU5 LDE0IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJCQlicmVh azsKIAogCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgorCisJCQkvKgorCQkJICogQ2xvc2Ug dGhlIGZpbGUgYmVmb3JlIGNvbW1pdHRpbmcgaWYgdGhlIHBhcmFsbGVsIGFwcGx5IGlzCisJCQkg KiBhcHBseWluZyBzcG9vbGVkIGNoYW5nZXMuCisJCQkgKi8KKwkJCWlmIChzdHJlYW1fZmQpCisJ CQkJQnVmRmlsZUNsb3NlKHN0cmVhbV9mZCk7CisKIAkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAo KTsKIAogCQkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0KTsKQEAgLTEzOTIsNyArMTQyNyw0NiBAQCBh cHBseV9oYW5kbGVfb3JpZ2luKFN0cmluZ0luZm8gcykKIAkJCQkgZXJybXNnX2ludGVybmFsKCJP UklHSU4gbWVzc2FnZSBzZW50IG91dCBvZiBvcmRlciIpKSk7CiB9CiAKKy8qCisgKiBJbml0aWFs aXplIGZpbGVzZXQgKGlmIG5vdCBhbHJlYWR5IGRvbmUpLgorICoKKyAqIENyZWF0ZSBhIG5ldyBm aWxlIHdoZW4gZmlyc3Rfc2VnbWVudCBpcyB0cnVlLCBvdGhlcndpc2Ugb3BlbiB0aGUgZXhpc3Rp bmcKKyAqIGZpbGUuCisgKi8KK3ZvaWQKK3NlcmlhbGl6ZV9zdHJlYW1fc3RhcnQoVHJhbnNhY3Rp b25JZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkKK3sKKwliZWdpbl9yZXBsaWNhdGlvbl9zdGVw KCk7CisKKwkvKgorCSAqIEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxlc2V0IGlm IHdlIGhhdmVuJ3QgeWV0LiBUaGlzIHdpbGwgYmUKKwkgKiB1c2VkIGZvciB0aGUgZW50aXJlIGR1 cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0IGluIGEgcGVybWFuZW50CisJICogY29u dGV4dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5nIG1lc3NhZ2Ug ZnJvbSBhbnkKKwkgKiB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMgYW5kIG90 aGVyIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuCisJICogTm93LCB3ZSBjb3VsZCBjcmVhdGUgYSBm aWxlc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0CisJICogdGhlbiB3 ZSB3b24ndCBiZSBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCisJICovCisJaWYgKCFN eUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KQorCXsKKwkJTWVtb3J5Q29udGV4dCBv bGRjdHg7CisKKwkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7 CisKKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2Yo RmlsZVNldCkpOworCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxl c2V0KTsKIAorCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwl9CisKKwkvKiBPcGVu IHRoZSBzcG9vbCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCXN0cmVhbV9vcGVuX2Zp bGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgeGlkLCBmaXJzdF9zZWdtZW50KTsKKworCS8q IElmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVuIGV4aXN0aW5nIHN1YnhhY3Qg ZmlsZS4gKi8KKwlpZiAoIWZpcnN0X3NlZ21lbnQpCisJCXN1YnhhY3RfaW5mb19yZWFkKE15TG9n aWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisKKwllbmRfcmVwbGljYXRpb25fc3RlcCgpOwor fQogCiAvKgogICogSGFuZGxlIFNUUkVBTSBTVEFSVCBtZXNzYWdlLgpAQCAtMTQwMyw2ICsxNDc3 LDcgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAJYm9vbAkJZmly c3Rfc2VnbWVudDsKIAlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CiAJVHJhbnNBcHBs eUFjdGlvbiBhcHBseV9hY3Rpb247CisJU3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7 CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0x NDMzLDQzICsxNTA4LDI2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBz KQogCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CiAKIAkJCS8qCi0JCQkgKiBTdGFydCBh IHRyYW5zYWN0aW9uIG9uIHN0cmVhbSBzdGFydCwgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlCi0J CQkgKiBjb21taXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhIHRhYmxlc3lu YyB3b3JrZXIgaW4KLQkJCSAqIHdoaWNoIGNhc2UgaXQgd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIg cHJvY2Vzc2luZyBhbGwgdGhlCi0JCQkgKiBtZXNzYWdlcy4gV2UgbmVlZCB0aGUgdHJhbnNhY3Rp b24gZm9yIGhhbmRsaW5nIHRoZSBidWZmaWxlLAotCQkJICogdXNlZCBmb3Igc2VyaWFsaXppbmcg dGhlIHN0cmVhbWluZyBkYXRhIGFuZCBzdWJ4YWN0IGluZm8uCisJCQkgKiBzZXJpYWxpemVfc3Ry ZWFtX3N0YXJ0IHdpbGwgc3RhcnQgYSB0cmFuc2FjdGlvbiwgdGhpcworCQkJICogdHJhbnNhY3Rp b24gd2lsbCBiZSBjb21taXR0ZWQgb24gdGhlIHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhCisJ CQkgKiB0YWJsZXN5bmMgd29ya2VyIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBiZSBjb21taXR0ZWQg YWZ0ZXIKKwkJCSAqIHByb2Nlc3NpbmcgYWxsIHRoZSBtZXNzYWdlcy4gV2UgbmVlZCB0aGUgdHJh bnNhY3Rpb24gZm9yCisJCQkgKiBoYW5kbGluZyB0aGUgYnVmZmlsZSwgdXNlZCBmb3Igc2VyaWFs aXppbmcgdGhlIHN0cmVhbWluZyBkYXRhCisJCQkgKiBhbmQgc3VieGFjdCBpbmZvLgogCQkJICov Ci0JCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCQlzZXJpYWxpemVfc3RyZWFtX3N0YXJ0 KHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCQkJYnJlYWs7CiAKKwkJY2FzZSBUUkFOU19M RUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CiAJCQkvKgotCQkJICogSW5pdGlhbGl6ZSB0aGUgd29y a2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5ZXQuIFRoaXMKLQkJCSAqIHdpbGwg YmUgdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvIGNyZWF0ZSBp dAotCQkJICogaW4gYSBwZXJtYW5lbnQgY29udGV4dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZl cnkgZmlyc3QKLQkJCSAqIHN0cmVhbWluZyBtZXNzYWdlIGZyb20gYW55IHRyYW5zYWN0aW9uIGFu ZCB0aGVuIHVzZSBpdCBmb3IgdGhpcwotCQkJICogYW5kIG90aGVyIHN0cmVhbWluZyB0cmFuc2Fj dGlvbnMuIE5vdywgd2UgY291bGQgY3JlYXRlIGEKLQkJCSAqIGZpbGVzZXQgYXQgdGhlIHN0YXJ0 IG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQgdGhlbiB3ZSB3b24ndCBiZQotCQkJICogc3VyZSB0 aGF0IGl0IHdpbGwgZXZlciBiZSB1c2VkLgorCQkJICogVGhlIGZpbGUgc2hvdWxkIGhhdmUgYmVl biBjcmVhdGVkIHdoZW4gZW50ZXJpbmcKKwkJCSAqIFBBUlRJQUxfU0VSSUFMSVpFIG1vZGUgc28g bm8gbmVlZCB0byBjcmVhdGUgaXQgYWdhaW4uIFRoZQorCQkJICogdHJhbnNhY3Rpb24gc3RhcnRl ZCBpbiBzZXJpYWxpemVfc3RyZWFtX3N0YXJ0IHdpbGwgYmUgY29tbWl0dGVkCisJCQkgKiBvbiB0 aGUgc3RyZWFtIHN0b3AuCiAJCQkgKi8KLQkJCWlmICghTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJl YW1fZmlsZXNldCkKLQkJCXsKLQkJCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKLQotCQkJCW9sZGN0 eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOwotCi0JCQkJTXlMb2dpY2Fs UmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOwotCQkJ CUZpbGVTZXRJbml0KE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQpOwotCi0JCQkJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7Ci0JCQl9Ci0KLQkJCS8qIE9wZW4gdGhlIHNw b29sIGZpbGUgZm9yIHRoaXMgdHJhbnNhY3Rpb24uICovCi0JCQlzdHJlYW1fb3Blbl9maWxlKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQsIGZpcnN0X3NlZ21lbnQpOworCQkJ c2VyaWFsaXplX3N0cmVhbV9zdGFydChzdHJlYW1feGlkLCBmYWxzZSk7CisJCQlzdHJlYW1fd3Jp dGVfY2hhbmdlKExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RBUlQsICZvcmlnaW5hbF9tc2cpOwog Ci0JCQkvKiBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVudCwgb3BlbiBleGlzdGluZyBz dWJ4YWN0IGZpbGUuICovCi0JCQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0JCQkJc3VieGFjdF9pbmZv X3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7Ci0KLQkJCWVuZF9y ZXBsaWNhdGlvbl9zdGVwKCk7CiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5E X1RPX1BBUkFMTEVMOgpAQCAtMTUxNCw2ICsxNTcyLDM0IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1f c3RhcnQoU3RyaW5nSW5mbyBzKQogfQogCiAvKgorICogVXBkYXRlIHRoZSBpbmZvcm1hdGlvbiBh Ym91dCBzdWJ4YWN0cyBhbmQgY2xvc2UgdGhlIGZpbGUuCisgKgorICogVGhpcyBmdW5jdGlvbiBz aG91bGQgYmUgY2FsbGVkIHdoZW4gdGhlIHNlcmlhbGl6ZV9zdHJlYW1fc3RhcnQgZnVuY3Rpb24g aGFzCisgKiBiZWVuIGNhbGxlZC4KKyAqLwordm9pZAorc2VyaWFsaXplX3N0cmVhbV9zdG9wKFRy YW5zYWN0aW9uSWQgeGlkKQoreworCS8qCisJICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxp emVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUgaW5mb3JtYXRpb24gYWJvdXQKKwkgKiBzdWJ4YWN0 cyBmb3IgdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uLgorCSAqLworCXN1YnhhY3RfaW5mb193cml0 ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQpOworCXN0cmVhbV9jbG9zZV9maWxlKCk7 CisKKwkvKiBXZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJhbnNhY3Rpb24gc3RhdGUgKi8KKwlBc3Nl cnQoSXNUcmFuc2FjdGlvblN0YXRlKCkpOworCisJLyogQ29tbWl0IHRoZSBwZXItc3RyZWFtIHRy YW5zYWN0aW9uICovCisJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkvKiBSZXNldCBw ZXItc3RyZWFtIGNvbnRleHQgKi8KKwlNZW1vcnlDb250ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWlu Z0NvbnRleHQpOworCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxMKTsK K30KKworLyoKICAqIEhhbmRsZSBTVFJFQU0gU1RPUCBtZXNzYWdlLgogICovCiBzdGF0aWMgdm9p ZApAQCAtMTUzMiwyNCArMTYxOCwxMyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5n SW5mbyBzKQogCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQogCXsKIAkJY2FzZSBUUkFOU19MRUFERVJf U0VSSUFMSVpFOgorCQkJc2VyaWFsaXplX3N0cmVhbV9zdG9wKHN0cmVhbV94aWQpOworCQkJYnJl YWs7CiAKLQkJCS8qCi0JCQkgKiBDbG9zZSB0aGUgZmlsZSB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdl cywgYW5kIHNlcmlhbGl6ZQotCQkJICogaW5mb3JtYXRpb24gYWJvdXQgc3VieGFjdHMgZm9yIHRo ZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KLQkJCSAqLwotCQkJc3VieGFjdF9pbmZvX3dyaXRlKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOwotCQkJc3RyZWFtX2Nsb3NlX2Zp bGUoKTsKLQotCQkJLyogV2UgbXVzdCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9uIHN0YXRlICov Ci0JCQlBc3NlcnQoSXNUcmFuc2FjdGlvblN0YXRlKCkpOwotCi0JCQkvKiBDb21taXQgdGhlIHBl ci1zdHJlYW0gdHJhbnNhY3Rpb24gKi8KLQkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwot Ci0JCQkvKiBSZXNldCBwZXItc3RyZWFtIGNvbnRleHQgKi8KLQkJCU1lbW9yeUNvbnRleHRSZXNl dChMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCk7Ci0KLQkJCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHko U1RBVEVfSURMRSwgTlVMTCk7CisJCWNhc2UgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpF OgorCQkJc3RyZWFtX3dyaXRlX2NoYW5nZShMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUT1AsIHMp OworCQkJc2VyaWFsaXplX3N0cmVhbV9zdG9wKHN0cmVhbV94aWQpOworCQkJc3RyZWFtX2FwcGx5 X3dvcmtlciA9IE5VTEw7CiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RP X1BBUkFMTEVMOgpAQCAtMTY5Miw2ICsxNzY3LDcgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9y dChTdHJpbmdJbmZvIHMpCiAJTG9naWNhbFJlcFN0cmVhbUFib3J0RGF0YSBhYm9ydF9kYXRhOwog CVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKIAlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5 X2FjdGlvbjsKKwlTdHJpbmdJbmZvRGF0YSBvcmlnaW5hbF9tc2cgPSAqczsKIAlib29sCQl0b3Bs ZXZlbF94YWN0OwogCiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQpAQCAtMTcyMiw2ICsx Nzk4LDI2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQkJc2Vy aWFsaXplX3N0cmVhbV9hYm9ydCh4aWQsIHN1YnhpZCk7CiAJCQlicmVhazsKIAorCQljYXNlIFRS QU5TX0xFQURFUl9QQVJUSUFMX1NFUklBTElaRToKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8q CisJCQkgKiBQYXJhbGxlbCBhcHBseSB3b3JrZXIgbWlnaHQgaGF2ZSBhcHBsaWVkIHNvbWUgY2hh bmdlcywgc28gd3JpdGUKKwkJCSAqIHRoZSBTVFJFQU1fQUJPUlQgbWVzc2FnZSBzbyB0aGF0IHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgY2FuCisJCQkgKiByb2xsYmFjayB0aGUgc3VidHJhbnNh Y3Rpb24gaWYgbmVlZGVkLgorCQkJICovCisJCQlzdHJlYW1fd3JpdGVfbWVzc2FnZSh4aWQsIExP R0lDQUxfUkVQX01TR19TVFJFQU1fQUJPUlQsCisJCQkJCQkJCSAmb3JpZ2luYWxfbXNnKTsKKwor CQkJaWYgKHRvcGxldmVsX3hhY3QpCisJCQl7CisJCQkJcGFfdW5sb2NrX3N0cmVhbSh4aWQsIEFj Y2Vzc0V4Y2x1c2l2ZUxvY2spOworCQkJCXBhX3NldF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFy ZWQsIExFQURFUl9GSUxFU0VUX0FDQ0VTU0lCTEUpOworCQkJCSh2b2lkKSBwYV9mcmVlX3dvcmtl cih3aW5mbywgeGlkKTsKKwkJCX0KKworCQkJYnJlYWs7CisKIAkJY2FzZSBUUkFOU19MRUFERVJf U0VORF9UT19QQVJBTExFTDoKIAkJCUFzc2VydCh3aW5mbyk7CiAKQEAgLTE3NDYsNyArMTg0Miwx MyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJCXBhX3NlbmRf ZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKIAogCQkJaWYgKHRvcGxldmVsX3hhY3QpCisJ CQl7CisJCQkJaWYgKHdpbmZvLT5zZXJpYWxpemVfY2hhbmdlcykKKwkJCQkJcGFfc2V0X2ZpbGVz ZXRfc3RhdGUod2luZm8tPnNoYXJlZCwKKwkJCQkJCQkJCQkgTEVBREVSX0ZJTEVTRVRfQUNDRVNT SUJMRSk7CisKIAkJCQkodm9pZCkgcGFfZnJlZV93b3JrZXIod2luZm8sIHhpZCk7CisJCQl9CiAK IAkJCWJyZWFrOwogCkBAIC0xNzgzLDE3ICsxODg1LDE4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1f YWJvcnQoU3RyaW5nSW5mbyBzKQogLyoKICAqIENvbW1vbiBzcG9vbGZpbGUgcHJvY2Vzc2luZy4K ICAqLwotc3RhdGljIHZvaWQKLWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rpb25JZCB4 aWQsIFhMb2dSZWNQdHIgbHNuKQordm9pZAorYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhGaWxlU2V0 ICpzdHJlYW1fZmlsZXNldCwgVHJhbnNhY3Rpb25JZCB4aWQsCisJCQkJCSAgIFhMb2dSZWNQdHIg bHNuKQogewogCVN0cmluZ0luZm9EYXRhIHMyOwogCWludAkJCW5jaGFuZ2VzOwogCWNoYXIJCXBh dGhbTUFYUEdQQVRIXTsKIAljaGFyCSAgICpidWZmZXIgPSBOVUxMOwogCU1lbW9yeUNvbnRleHQg b2xkY3h0OwotCUJ1ZkZpbGUgICAgKmZkOwogCi0JbWF5YmVfc3RhcnRfc2tpcHBpbmdfY2hhbmdl cyhsc24pOworCWlmICghYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCW1heWJlX3N0YXJ0 X3NraXBwaW5nX2NoYW5nZXMobHNuKTsKIAogCS8qIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIG9wZW4g dHJhbnNhY3Rpb24gKi8KIAliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CkBAIC0xODA5LDggKzE5 MTIsOCBAQCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVj UHRyIGxzbikKIAljaGFuZ2VzX2ZpbGVuYW1lKHBhdGgsIE15TG9naWNhbFJlcFdvcmtlci0+c3Vi aWQsIHhpZCk7CiAJZWxvZyhERUJVRzEsICJyZXBsYXlpbmcgY2hhbmdlcyBmcm9tIGZpbGUgXCIl c1wiIiwgcGF0aCk7CiAKLQlmZCA9IEJ1ZkZpbGVPcGVuRmlsZVNldChNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN0cmVhbV9maWxlc2V0LCBwYXRoLCBPX1JET05MWSwKLQkJCQkJCQlmYWxzZSk7CisJc3Ry ZWFtX2ZkID0gQnVmRmlsZU9wZW5GaWxlU2V0KHN0cmVhbV9maWxlc2V0LCBwYXRoLCBPX1JET05M WSwgZmFsc2UpOworCXN0cmVhbV94aWQgPSB4aWQ7CiAKIAlidWZmZXIgPSBwYWxsb2MoQkxDS1Na KTsKIAlpbml0U3RyaW5nSW5mbygmczIpOwpAQCAtMTg0MSw3ICsxOTQ0LDcgQEAgYXBwbHlfc3Bv b2xlZF9tZXNzYWdlcyhUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CiAKIAkJLyogcmVhZCBsZW5ndGggb2YgdGhlIG9uLWRpc2sgcmVj b3JkICovCi0JCW5ieXRlcyA9IEJ1ZkZpbGVSZWFkKGZkLCAmbGVuLCBzaXplb2YobGVuKSk7CisJ CW5ieXRlcyA9IEJ1ZkZpbGVSZWFkKHN0cmVhbV9mZCwgJmxlbiwgc2l6ZW9mKGxlbikpOwogCiAJ CS8qIGhhdmUgd2UgcmVhY2hlZCBlbmQgb2YgdGhlIGZpbGU/ICovCiAJCWlmIChuYnl0ZXMgPT0g MCkKQEAgLTE4NjIsNyArMTk2NSw3IEBAIGFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoVHJhbnNhY3Rp b25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuKQogCQlidWZmZXIgPSByZXBhbGxvYyhidWZmZXIsIGxl bik7CiAKIAkJLyogYW5kIGZpbmFsbHkgcmVhZCB0aGUgZGF0YSBpbnRvIHRoZSBidWZmZXIgKi8K LQkJaWYgKEJ1ZkZpbGVSZWFkKGZkLCBidWZmZXIsIGxlbikgIT0gbGVuKQorCQlpZiAoQnVmRmls ZVJlYWQoc3RyZWFtX2ZkLCBidWZmZXIsIGxlbikgIT0gbGVuKQogCQkJZXJlcG9ydChFUlJPUiwK IAkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCiAJCQkJCSBlcnJtc2coImNvdWxkIG5v dCByZWFkIGZyb20gc3RyZWFtaW5nIHRyYW5zYWN0aW9uJ3MgY2hhbmdlcyBmaWxlIFwiJXNcIjog JW0iLApAQCAtMTg4MSwxOCArMTk4NCwzNSBAQCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKFRyYW5z YWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY3h0KTsKIAorCQkvKgorCQkgKiBCcmVhayB0aGUgbG9vcCBpZiB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIGhhcyBmaW5pc2hlZCBhcHBseWluZworCQkgKiB0aGUgdHJhbnNhY3Rpb24uIFRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgc2hvdWxkIGhhdmUgY2xvc2VkIHRoZQorCQkgKiBmaWxl IGJlZm9yZSBjb21taXR0aW5nLgorCQkgKi8KKwkJaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtl cigpICYmCisJCQlNeVBhcmFsbGVsU2hhcmVkLT54YWN0X3N0YXRlID09IFBBUkFMTEVMX1RSQU5T X0ZJTklTSEVEKQorCQkJZ290byBkb25lOworCiAJCW5jaGFuZ2VzKys7CiAKLQkJaWYgKG5jaGFu Z2VzICUgMTAwMCA9PSAwKQorCQkvKgorCQkgKiBObyBuZWVkIHRvIG91dHB1dCB0aGUgREVCVUcg bWVzc2FnZSBoZXJlIGluIHRoZSBwYXJhbGxlbCBhcHBseQorCQkgKiB3b3JrZXIgYXMgc2ltaWxh ciBtZXNzYWdlcyB3aWxsIGJlIG91dHB1dCB3aGVuIGhhbmRsaW5nIFNUUkVBTV9TVE9QCisJCSAq IG1lc3NhZ2UuCisJCSAqLworCQlpZiAoIWFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpICYmIG5j aGFuZ2VzICUgMTAwMCA9PSAwKQogCQkJZWxvZyhERUJVRzEsICJyZXBsYXllZCAlZCBjaGFuZ2Vz IGZyb20gZmlsZSBcIiVzXCIiLAogCQkJCSBuY2hhbmdlcywgcGF0aCk7CiAJfQogCi0JQnVmRmls ZUNsb3NlKGZkKTsKLQorCUJ1ZkZpbGVDbG9zZShzdHJlYW1fZmQpOwogCXBmcmVlKGJ1ZmZlcik7 CiAJcGZyZWUoczIuZGF0YSk7CiAKK2RvbmU6CisJc3RyZWFtX2ZkID0gTlVMTDsKKwlzdHJlYW1f eGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisKIAllbG9nKERFQlVHMSwgInJlcGxheWVkICVk IChhbGwpIGNoYW5nZXMgZnJvbSBmaWxlIFwiJXNcIiIsCiAJCSBuY2hhbmdlcywgcGF0aCk7CiAK QEAgLTE5MDksNiArMjAyOSw3IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0cmluZ0lu Zm8gcykKIAlMb2dpY2FsUmVwQ29tbWl0RGF0YSBjb21taXRfZGF0YTsKIAlQYXJhbGxlbEFwcGx5 V29ya2VySW5mbyAqd2luZm87CiAJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CisJU3Ry aW5nSW5mb0RhdGEgb3JpZ2luYWxfbXNnID0gKnM7CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNh Y3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xOTI4LDcgKzIwNDksOCBAQCBhcHBseV9oYW5k bGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJCQkgKiBUaGUgdHJhbnNhY3Rpb24gaGFz IGJlZW4gc2VyaWFsaXplZCB0byBmaWxlLCBzbyByZXBsYXkgYWxsIHRoZQogCQkJICogc3Bvb2xl ZCBvcGVyYXRpb25zLgogCQkJICovCi0JCQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKHhpZCwgY29t bWl0X2RhdGEuY29tbWl0X2xzbik7CisJCQlhcHBseV9zcG9vbGVkX21lc3NhZ2VzKE15TG9naWNh bFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQsIHhpZCwKKwkJCQkJCQkJICAgY29tbWl0X2RhdGEu Y29tbWl0X2xzbik7CiAKIAkJCWFwcGx5X2hhbmRsZV9jb21taXRfaW50ZXJuYWwoJmNvbW1pdF9k YXRhKTsKIApAQCAtMTkzNyw2ICsyMDU5LDcgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQo U3RyaW5nSW5mbyBzKQogCQkJYnJlYWs7CiAKIAkJY2FzZSBUUkFOU19MRUFERVJfU0VORF9UT19Q QVJBTExFTDoKKwkJY2FzZSBUUkFOU19MRUFERVJfUEFSVElBTF9TRVJJQUxJWkU6CiAJCQlBc3Nl cnQod2luZm8pOwogCiAJCQkvKgpAQCAtMTk0NiwxMyArMjA2OSwyMSBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAJCQlwYV91bmxvY2tfc3RyZWFtKHhpZCwgQWNj ZXNzRXhjbHVzaXZlTG9jayk7CiAKIAkJCS8qIFNlbmQgU1RSRUFNIENPTU1JVCBtZXNzYWdlIHRv IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICovCi0JCQlwYV9zZW5kX2RhdGEod2luZm8sIHMt Pmxlbiwgcy0+ZGF0YSk7CisJCQlpZiAoYXBwbHlfYWN0aW9uID09IFRSQU5TX0xFQURFUl9TRU5E X1RPX1BBUkFMTEVMKQorCQkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsK KwkJCWVsc2UKKwkJCQlzdHJlYW1fd3JpdGVfbWVzc2FnZSh4aWQsIExPR0lDQUxfUkVQX01TR19T VFJFQU1fQ09NTUlULAorCQkJCQkJCQkJICZvcmlnaW5hbF9tc2cpOworCisJCQlpZiAod2luZm8t PnNlcmlhbGl6ZV9jaGFuZ2VzKQorCQkJCXBhX3NldF9maWxlc2V0X3N0YXRlKHdpbmZvLT5zaGFy ZWQsCisJCQkJCQkJCQkgTEVBREVSX0ZJTEVTRVRfQUNDRVNTSUJMRSk7CiAKIAkJCS8qCi0JCQkg KiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHdh aXQgZm9yCi0JCQkgKiB0aGF0IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRv IG1haW50YWluIGNvbW1pdAotCQkJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0 byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCi0JCQkgKiBkZWFkbG9ja3MuCisJCQkgKiBB ZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgb3IKKwkJ CSAqIHNlcmlhbGl6aW5nIGRhdGEgdG8gZmlsZSwgd2FpdCBmb3IgdGhhdCB3b3JrZXIgdG8gZmlu aXNoLiBUaGlzCisJCQkgKiBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0IG9yZGVyIHdo aWNoIGF2b2lkcyBmYWlsdXJlcyBkdWUKKwkJCSAqIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2ll cyBhbmQgZGVhZGxvY2tzLgogCQkJICovCiAJCQlwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaCh3aW5m byk7CiAKQEAgLTE5NzEsNiArMjEwMiwxNCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChT dHJpbmdJbmZvIHMpCiAJCQlicmVhazsKIAogCQljYXNlIFRSQU5TX1BBUkFMTEVMX0FQUExZOgor CisJCQkvKgorCQkJICogQ2xvc2UgdGhlIGZpbGUgYmVmb3JlIGNvbW1pdHRpbmcgaWYgdGhlIHBh cmFsbGVsIGFwcGx5IGlzCisJCQkgKiBhcHBseWluZyBzcG9vbGVkIGNoYW5nZXMuCisJCQkgKi8K KwkJCWlmIChzdHJlYW1fZmQpCisJCQkJQnVmRmlsZUNsb3NlKHN0cmVhbV9mZCk7CisKIAkJCWxp c3RfZnJlZShzdWJ4YWN0bGlzdCk7CiAJCQlzdWJ4YWN0bGlzdCA9IE5JTDsKIApAQCAtMzg1OCw3 ICszOTk3LDcgQEAgc3VieGFjdF9maWxlbmFtZShjaGFyICpwYXRoLCBPaWQgc3ViaWQsIFRyYW5z YWN0aW9uSWQgeGlkKQogfQogCiAvKiBmb3JtYXQgZmlsZW5hbWUgZm9yIGZpbGUgY29udGFpbmlu ZyBzZXJpYWxpemVkIGNoYW5nZXMgKi8KLXN0YXRpYyBpbmxpbmUgdm9pZAordm9pZAogY2hhbmdl c19maWxlbmFtZShjaGFyICpwYXRoLCBPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQogewog CXNucHJpbnRmKHBhdGgsIE1BWFBHUEFUSCwgIiV1LSV1LmNoYW5nZXMiLCBzdWJpZCwgeGlkKTsK QEAgLTM4NzIsNyArNDAxMSw3IEBAIGNoYW5nZXNfZmlsZW5hbWUoY2hhciAqcGF0aCwgT2lkIHN1 YmlkLCBUcmFuc2FjdGlvbklkIHhpZCkKICAqIHRvcGxldmVsIHRyYW5zYWN0aW9uLiBFYWNoIHN1 YnNjcmlwdGlvbiBoYXMgYSBzZXBhcmF0ZSBzZXQgb2YgZmlsZXMKICAqIGZvciBhbnkgdG9wbGV2 ZWwgdHJhbnNhY3Rpb24uCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBzdHJlYW1fY2xlYW51cF9m aWxlcyhPaWQgc3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkKQogewogCWNoYXIJCXBhdGhbTUFYUEdQ QVRIXTsKQEAgLTM4OTUsOSArNDAzNCw2IEBAIHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJp ZCwgVHJhbnNhY3Rpb25JZCB4aWQpCiAgKiBieSBzdHJlYW1feGlkIChnbG9iYWwgdmFyaWFibGUp LiBJZiBpdCdzIHRoZSBmaXJzdCBjaHVuayBvZiBzdHJlYW1lZAogICogY2hhbmdlcyBmb3IgdGhp cyB0cmFuc2FjdGlvbiwgY3JlYXRlIHRoZSBidWZmaWxlLCBvdGhlcndpc2Ugb3BlbiB0aGUKICAq IHByZXZpb3VzbHkgY3JlYXRlZCBmaWxlLgotICoKLSAqIFRoaXMgY2FuIG9ubHkgYmUgY2FsbGVk IGF0IHRoZSBiZWdpbm5pbmcgb2YgYSAic3RyZWFtaW5nIiBibG9jaywgaS5lLgotICogYmV0d2Vl biBzdHJlYW1fc3RhcnQvc3RyZWFtX3N0b3AgbWVzc2FnZXMgZnJvbSB0aGUgdXBzdHJlYW0uCiAg Ki8KIHN0YXRpYyB2b2lkCiBzdHJlYW1fb3Blbl9maWxlKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25J ZCB4aWQsIGJvb2wgZmlyc3Rfc2VnbWVudCkKQEAgLTM5MDUsNyArNDA0MSw2IEBAIHN0cmVhbV9v cGVuX2ZpbGUoT2lkIHN1YmlkLCBUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50 KQogCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAlNZW1vcnlDb250ZXh0IG9sZGN4dDsKIAotCUFz c2VydChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbik7CiAJQXNzZXJ0KE9pZElzVmFsaWQoc3ViaWQp KTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoeGlkKSk7CiAJQXNzZXJ0KHN0cmVhbV9m ZCA9PSBOVUxMKTsKQEAgLTM5NDQsMTUgKzQwNzksMTAgQEAgc3RyZWFtX29wZW5fZmlsZShPaWQg c3ViaWQsIFRyYW5zYWN0aW9uSWQgeGlkLCBib29sIGZpcnN0X3NlZ21lbnQpCiAvKgogICogc3Ry ZWFtX2Nsb3NlX2ZpbGUKICAqCSAgQ2xvc2UgdGhlIGN1cnJlbnRseSBvcGVuIGZpbGUgd2l0aCBz dHJlYW1lZCBjaGFuZ2VzLgotICoKLSAqIFRoaXMgY2FuIG9ubHkgYmUgY2FsbGVkIGF0IHRoZSBl bmQgb2YgYSBzdHJlYW1pbmcgYmxvY2ssIGkuZS4gYXQgc3RyZWFtX3N0b3AKLSAqIG1lc3NhZ2Ug ZnJvbSB0aGUgdXBzdHJlYW0uCiAgKi8KIHN0YXRpYyB2b2lkCiBzdHJlYW1fY2xvc2VfZmlsZSh2 b2lkKQogewotCUFzc2VydChpbl9zdHJlYW1lZF90cmFuc2FjdGlvbik7Ci0JQXNzZXJ0KFRyYW5z YWN0aW9uSWRJc1ZhbGlkKHN0cmVhbV94aWQpKTsKIAlBc3NlcnQoc3RyZWFtX2ZkICE9IE5VTEwp OwogCiAJQnVmRmlsZUNsb3NlKHN0cmVhbV9mZCk7CkBAIC0zOTY5LDEzICs0MDk5LDExIEBAIHN0 cmVhbV9jbG9zZV9maWxlKHZvaWQpCiAgKiB0aGUgbGVuZ3RoKSwgYWN0aW9uIGNvZGUgKGlkZW50 aWZ5aW5nIHRoZSBtZXNzYWdlIHR5cGUpIGFuZCBtZXNzYWdlCiAgKiBjb250ZW50cyAod2l0aG91 dCB0aGUgc3VieGFjdCBUcmFuc2FjdGlvbklkIHZhbHVlKS4KICAqLwotc3RhdGljIHZvaWQKK3Zv aWQKIHN0cmVhbV93cml0ZV9jaGFuZ2UoY2hhciBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsKIAlp bnQJCQlsZW47CiAKLQlBc3NlcnQoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pOwotCUFzc2VydChU cmFuc2FjdGlvbklkSXNWYWxpZChzdHJlYW1feGlkKSk7CiAJQXNzZXJ0KHN0cmVhbV9mZCAhPSBO VUxMKTsKIAogCS8qIHRvdGFsIG9uLWRpc2sgc2l6ZSwgaW5jbHVkaW5nIHRoZSBhY3Rpb24gdHlw ZSBjaGFyYWN0ZXIgKi8KQEAgLTM5OTQsNiArNDEyMiwyMyBAQCBzdHJlYW1fd3JpdGVfY2hhbmdl KGNoYXIgYWN0aW9uLCBTdHJpbmdJbmZvIHMpCiB9CiAKIC8qCisgKiBzdHJlYW1fd3JpdGVfbWVz c2FnZQorICoJICBTZXJpYWxpemUgYSBtZXNzYWdlIHRvIGEgZmlsZSBmb3IgdGhlIGdpdmVuIHRy YW5zYWN0aW9uLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBzdHJlYW1fd3Jp dGVfY2hhbmdlIGV4Y2VwdCB0aGF0IGl0IHdpbGwgb3BlbiB0aGUKKyAqIHRhcmdldCBmaWxlIGJl Zm9yZSB3cml0aW5nIHRoZSBtZXNzYWdlIGFuZCBjbG9zZSBmaWxlIGF0IHRoZSBlbmQuCisgKi8K K3N0YXRpYyB2b2lkCitzdHJlYW1fd3JpdGVfbWVzc2FnZShUcmFuc2FjdGlvbklkIHhpZCwgY2hh ciBhY3Rpb24sIFN0cmluZ0luZm8gcykKK3sKKwlBc3NlcnQoIWluX3N0cmVhbWVkX3RyYW5zYWN0 aW9uKTsKKworCXNlcmlhbGl6ZV9zdHJlYW1fc3RhcnQoeGlkLCBmYWxzZSk7CisJc3RyZWFtX3dy aXRlX2NoYW5nZShhY3Rpb24sIHMpOworCXNlcmlhbGl6ZV9zdHJlYW1fc3RvcCh4aWQpOworfQor CisvKgogICogQ2xlYW51cCB0aGUgbWVtb3J5IGZvciBzdWJ4YWN0cyBhbmQgcmVzZXQgdGhlIHJl bGF0ZWQgdmFyaWFibGVzLgogICovCiBzdGF0aWMgaW5saW5lIHZvaWQKQEAgLTQ2NjQsNyArNDgw OSw4IEBAIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKQogLyoKICAqIFJldHVy biB0aGUgYWN0aW9uIHRvIHRha2UgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbi4gKndpbmZvIGlz IGFzc2lnbmVkIHRvCiAgKiB0aGUgZGVzdGluYXRpb24gcGFyYWxsZWwgd29ya2VyIGluZm8gKGlm IHRoZSBhY3Rpb24gaXMKLSAqIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMKSwgb3RoZXJ3 aXNlICp3aW5mbyBpcyBhc3NpZ25lZCBOVUxMLgorICogVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFS QUxMRUwgb3IgVFJBTlNfTEVBREVSX1BBUlRJQUxfU0VSSUFMSVpFKSwgb3RoZXJ3aXNlCisgKiAq d2luZm8gaXMgYXNzaWduZWQgTlVMTC4KICAqLwogc3RhdGljIFRyYW5zQXBwbHlBY3Rpb24KIGdl dF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIFBhcmFsbGVsQXBw bHlXb3JrZXJJbmZvICoqd2luZm8pCkBAIC00Njg2LDEzICs0ODMyLDE3IEBAIGdldF90cmFuc2Fj dGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICoqd2luZm8pCiAJICovCiAJKndpbmZvID0gcGFfZmluZF93b3JrZXIoeGlkKTsKIAotCWlm ICgqd2luZm8pCisJaWYgKCEqd2luZm8pCiAJewotCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFTkRf VE9fUEFSQUxMRUw7CisJCXJldHVybiBUUkFOU19MRUFERVJfU0VSSUFMSVpFOworCX0KKwllbHNl IGlmICgoKndpbmZvKS0+c2VyaWFsaXplX2NoYW5nZXMpCisJeworCQlyZXR1cm4gVFJBTlNfTEVB REVSX1BBUlRJQUxfU0VSSUFMSVpFOwogCX0KIAllbHNlCiAJewotCQlyZXR1cm4gVFJBTlNfTEVB REVSX1NFUklBTElaRTsKKwkJcmV0dXJuIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOwog CX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCA4 ODg0MDU4Li40OWM2NjQ2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3Jr ZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJu YWwuaApAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImRhdGF0eXBlL3RpbWVzdGFtcC5oIgog I2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxyZWxh dGlvbi5oIgorI2luY2x1ZGUgInN0b3JhZ2UvYnVmZmlsZS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv ZmlsZXNldC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv c2htX21xLmgiCkBAIC0xMDcsNiArMTA4LDE0IEBAIHR5cGVkZWYgZW51bSBQYXJhbGxlbFRyYW5z U3RhdGUKIAlQQVJBTExFTF9UUkFOU19GSU5JU0hFRAogfSBQYXJhbGxlbFRyYW5zU3RhdGU7CiAK Ky8qIFN0YXRlIG9mIGZpbGVzZXQgaW4gbGVhZGVyIGFwcGx5IHdvcmtlci4gKi8KK3R5cGVkZWYg ZW51bSBMZWFkZXJGaWxlU2V0U3RhdGUKK3sKKwlMRUFERVJfRklMRVNFVF9VTktOT1dOLAorCUxF QURFUl9GSUxFU0VUX0JVU1ksCisJTEVBREVSX0ZJTEVTRVRfQUNDRVNTSUJMRQorfSBMZWFkZXJG aWxlU2V0U3RhdGU7CisKIC8qCiAgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcgaW5mb3JtYXRpb24gYmV0 d2VlbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbAogICogYXBwbHkgd29ya2Vycy4K QEAgLTEzNiw2ICsxNDUsMTkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtlclNo YXJlZAogCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIGNoZWNrIGl0IGJlZm9yZSBzdGFy dGluZyB0byB3YWl0LgogCSAqLwogCXBnX2F0b21pY191aW50MzIJcGVuZGluZ19zdHJlYW1fY291 bnQ7CisKKwkvKgorCSAqIFRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgc2VyaWFsaXplIGNo YW5nZXMgdG8gdGhlIGZpbGUgYWZ0ZXIKKwkgKiBlbnRlcmluZyBQQVJUSUFMX1NFUklBTElaRSBt b2RlIGFuZCBzaGFyZSB0aGUgZmlsZXNldCB3aXRoIHRoZSBwYXJhbGxlbAorCSAqIGFwcGx5IHdv cmtlciB3aGVuIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kLiBBbmQg dGhlbgorCSAqIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCBhcHBseSBhbGwgdGhlIHNw b29sZWQgbWVzc2FnZXMuCisJICoKKwkgKiBEb24ndCB1c2UgU2hhcmVkRmlsZVNldCBoZXJlIGFz IHdlIG5lZWQgdGhlIGZpbGVzZXQgdG8gc3Vydml2ZSBhZnRlcgorCSAqIHJlbGVhc2luZyB0aGUg c2hhcmVkIG1lbW9yeSBzbyB0aGF0IHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGNhbiByZS11c2UK KwkgKiB0aGUgZmlsZXNldCBmb3IgbmV4dCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisJICovCisJ TGVhZGVyRmlsZVNldFN0YXRlCQlmaWxlc2V0X3N0YXRlOworCUZpbGVTZXQJCWZpbGVzZXQ7CiB9 IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQ7CiAKIC8qCkBAIC0xNTUsNiArMTc3LDEzIEBAIHR5 cGVkZWYgc3RydWN0IFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvCiAJZHNtX3NlZ21lbnQgKmRzbV9z ZWc7CiAKIAkvKgorCSAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IG5lZWRzIHRvIHNlcmlhbGl6ZSB0aGUKKwkgKiByZW1haW5pbmcgY2hhbmdlcyB0byBkaXNrIGR1 ZSB0byB0aW1lb3V0IHdoZW4gc2VuZGluZyBkYXRhIHRvIHRoZQorCSAqIHBhcmFsbGVsIGFwcGx5 IHdvcmtlci4KKwkgKi8KKwlib29sCQlzZXJpYWxpemVfY2hhbmdlczsKKworCS8qCiAJICogVHJ1 ZSBpZiB0aGUgd29ya2VyIGlzIGJlaW5nIHVzZWQgdG8gcHJvY2VzcyBhIHBhcmFsbGVsIGFwcGx5 CiAJICogdHJhbnNhY3Rpb24uIEZhbHNlIGluZGljYXRlcyB0aGlzIHdvcmtlciBpcyBhdmFpbGFi bGUgZm9yIHJlLXVzZS4KIAkgKi8KQEAgLTE3Nyw2ICsyMDYsOCBAQCBleHRlcm4gUEdETExJTVBP UlQgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAqTXlQYXJhbGxlbFNoYXJlZDsKIAogZXh0ZXJu IFBHRExMSU1QT1JUIExpc3QgKnN1YnhhY3RsaXN0OwogCitleHRlcm4gUEdETExJTVBPUlQgQnVm RmlsZSAqc3RyZWFtX2ZkOworCiAvKiBsaWJwcXJlY2VpdmVyIGNvbm5lY3Rpb24gKi8KIGV4dGVy biBQR0RMTElNUE9SVCBzdHJ1Y3QgV2FsUmVjZWl2ZXJDb25uICpMb2dSZXBXb3JrZXJXYWxSY3ZD b25uOwogCkBAIC0yMTQsMTAgKzI0NSwyMSBAQCBleHRlcm4gdm9pZCBwcm9jZXNzX3N5bmNpbmdf dGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9sc24pOwogZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9z eW5jaW5nX3RhYmxlX3N0YXRlcyhEYXR1bSBhcmcsIGludCBjYWNoZWlkLAogCQkJCQkJCQkJCQl1 aW50MzIgaGFzaHZhbHVlKTsKIAorZXh0ZXJuIHZvaWQgc2VyaWFsaXplX3N0cmVhbV9zdGFydChU cmFuc2FjdGlvbklkIHhpZCwgYm9vbCBmaXJzdF9zZWdtZW50KTsKK2V4dGVybiB2b2lkIHNlcmlh bGl6ZV9zdHJlYW1fc3RvcChUcmFuc2FjdGlvbklkIHhpZCk7CisKKy8qIENvbW1vbiBzdHJlYW1p bmcgZnVuY3Rpb24gdG8gYXBwbHkgYWxsIHRoZSBzcG9vbGVkIG1lc3NhZ2VzICovCitleHRlcm4g dm9pZCBhcHBseV9zcG9vbGVkX21lc3NhZ2VzKEZpbGVTZXQgKnN0cmVhbV9maWxlc2V0LCBUcmFu c2FjdGlvbklkIHhpZCwKKwkJCQkJCQkJICAgWExvZ1JlY1B0ciBsc24pOworCiBleHRlcm4gdm9p ZCBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOwogCiBleHRlcm4gdm9pZCBtYXliZV9yZXJl YWRfc3Vic2NyaXB0aW9uKHZvaWQpOwogCitleHRlcm4gdm9pZCBjaGFuZ2VzX2ZpbGVuYW1lKGNo YXIgKnBhdGgsIE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJuIHZvaWQgc3Ry ZWFtX3dyaXRlX2NoYW5nZShjaGFyIGFjdGlvbiwgU3RyaW5nSW5mbyBzKTsKK2V4dGVybiB2b2lk IHN0cmVhbV9jbGVhbnVwX2ZpbGVzKE9pZCBzdWJpZCwgVHJhbnNhY3Rpb25JZCB4aWQpOworCiBl eHRlcm4gdm9pZCBJbml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCk7CiAKIGV4dGVybiB2b2lkIGFw cGx5X3dvcmtlcl9jbGVhbl9leGl0KGJvb2wgb25fc3ViaW5mb19jaGFuZ2UpOwpAQCAtMjM4LDYg KzI4MCw4IEBAIGV4dGVybiB2b2lkIHBhX3NlbmRfZGF0YShQYXJhbGxlbEFwcGx5V29ya2VySW5m byAqd2luZm8sIFNpemUgbmJ5dGVzLAogCiBleHRlcm4gdm9pZCBwYV9zdGFydF9zdWJ0cmFucyhU cmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkLCBUcmFuc2FjdGlvbklkIHRvcF94aWQpOwogZXh0ZXJu IHZvaWQgcGFfc3RyZWFtX2Fib3J0KExvZ2ljYWxSZXBTdHJlYW1BYm9ydERhdGEgKmFib3J0X2Rh dGEpOworZXh0ZXJuIHZvaWQgcGFfc2V0X2ZpbGVzZXRfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtl clNoYXJlZCAqd3NoYXJlZCwKKwkJCQkJCQkJCSAgIExlYWRlckZpbGVTZXRTdGF0ZSBmaWxlc2V0 X3N0YXRlKTsKIAogZXh0ZXJuIHZvaWQgcGFfbG9ja19zdHJlYW0oVHJhbnNhY3Rpb25JZCB4aWQs IExPQ0tNT0RFIGxvY2ttb2RlKTsKIGV4dGVybiB2b2lkIHBhX2xvY2tfdHJhbnNhY3Rpb24oVHJh bnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKZGlmZiAtLWdpdCBhL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QKaW5kZXggMGUxMWNiNS4uMThjNzFkYyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAg LTEzODksNiArMTM4OSw3IEBAIExhZ1RyYWNrZXIKIExhcmdlT2JqZWN0RGVzYwogTGFzdEF0dG51 bUluZm8KIExhdGNoCitMZWFkZXJGaWxlU2V0U3RhdGUKIExlcnBGdW5jCiBMZXhEZXNjcgogTGV4 ZW1lRW50cnkKLS0gCjIuNy4yLndpbmRvd3MuMQoK --_006_OS0PR01MB571663F65904D00895AD159994109OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v52-0001-Perform-streaming-logical-transactions-by-parall.patch" Content-Description: v52-0001-Perform-streaming-logical-transactions-by-parall.patch Content-Disposition: attachment; filename="v52-0001-Perform-streaming-logical-transactions-by-parall.patch"; size=193053; creation-date="Sun, 27 Nov 2022 04:10:48 GMT"; modification-date="Sun, 27 Nov 2022 04:13:31 GMT" Content-Transfer-Encoding: base64 RnJvbSA4NTQzOTNhZTU2NTU0YWJkOTg4NGY2ODhiNjY5YzFiZTkxYjcxYWE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHY1MiAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IHBhcmFs bGVsCiB3b3JrZXJzCgpDdXJyZW50bHksIGZvciBsYXJnZSB0cmFuc2FjdGlvbnMsIHRoZSBwdWJs aXNoZXIgc2VuZHMgdGhlIGRhdGEgaW4gbXVsdGlwbGUKc3RyZWFtcyAoY2hhbmdlcyBkaXZpZGVk IGludG8gY2h1bmtzIGRlcGVuZGluZyB1cG9uIGxvZ2ljYWxfZGVjb2Rpbmdfd29ya19tZW0pLAph bmQgdGhlbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlLCB0aGUgYXBwbHkgd29ya2VyIHdyaXRlcyB0 aGUgY2hhbmdlcyBpbnRvCnRlbXBvcmFyeSBmaWxlcyBhbmQgb25jZSBpdCByZWNlaXZlcyB0aGUg Y29tbWl0LCBpdCByZWFkcyBmcm9tIHRob3NlIGZpbGVzIGFuZAphcHBsaWVzIHRoZSBlbnRpcmUg dHJhbnNhY3Rpb24uIFRvIGltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIHN1Y2gKdHJhbnNhY3Rp b25zLCB3ZSBjYW4gaW5zdGVhZCBhbGxvdyB0aGVtIHRvIGJlIGFwcGxpZWQgdmlhIHBhcmFsbGVs IHdvcmtlcnMuCgpJbiB0aGlzIGFwcHJvYWNoLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBw bHkgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBzdHJl YW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwKc2VuZCBjaGFu Z2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gVGhlIHBhcmFsbGVsIGFw cGx5IHdvcmtlcgp3aWxsIGRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3cml0 aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2UKa2VlcCB0aGlzIHdvcmtlciBhc3NpZ25lZCB0 aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdApmb3Ig dGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQgb3Jk ZXJpbmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZXMgaW4gbW9z dCBjYXNlcy4gV2Ugc3RpbGwgbmVlZCB0byBzcGlsbCBpZgp0aGVyZSBpcyBubyB3b3JrZXIgYXZh aWxhYmxlLgoKVGhpcyBwYXRjaCBhbHNvIGV4dGVuZHMgdGhlIFNVQlNDUklQVElPTiAnc3RyZWFt aW5nJyBwYXJhbWV0ZXIgc28gdGhhdCB0aGUgdXNlcgpjYW4gY29udHJvbCB3aGV0aGVyIHRvIGFw cGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gaW4gYSBwYXJhbGxlbCBhcHBseQp3b3JrZXIg b3Igc3BpbGwgdGhlIGNoYW5nZSB0byBkaXNrLiBUaGUgdXNlciBjYW4gc2V0IHRoZSBzdHJlYW1p bmcgcGFyYW1ldGVyIHRvCidvbi9vZmYnLCAncGFyYWxsZWwnLiBUaGUgcGFyYW1ldGVyIHZhbHVl ICdwYXJhbGxlbCcgbWVhbnMgdGhlIHN0cmVhbWluZyB3aWxsCmJlIGFwcGxpZWQgdmlhIGEgcGFy YWxsZWwgYXBwbHkgd29ya2VyLCBpZiBhdmFpbGFibGUuIFRoZSBwYXJhbWV0ZXIgdmFsdWUKJ29u JyBtZWFucyB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHdpbGwgYmUgc3BpbGxlZCB0byBkaXNr LiBUaGUgZGVmYXVsdCB2YWx1ZQppcyAnb2ZmJyAoc2FtZSBhcyBjdXJyZW50IGJlaGF2aW91ciku CgpJbiBhZGRpdGlvbiwgdGhlIHBhdGNoIGV4dGVuZHMgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24g U1RSRUFNX0FCT1JUIG1lc3NhZ2Ugc28KdGhhdCBhYm9ydF90aW1lIGFuZCBhYm9ydF9sc24gY2Fu IGFsc28gYmUgc2VudCB3aGljaCBjYW4gYmUgdXNlZCB0byB1cGRhdGUgdGhlCnJlcGxpY2F0aW9u IG9yaWdpbiBpbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2hlbiB0aGUgc3RyZWFtaW5nIHRyYW5z YWN0aW9uIGlzCmFib3J0ZWQuIEJlY2F1c2UgdGhpcyBtZXNzYWdlIGV4dGVuc2lvbiBpcyBuZWVk ZWQgdG8gc3VwcG9ydCBwYXJhbGxlbApzdHJlYW1pbmcsIHBhcmFsbGVsIHN0cmVhbWluZyBpcyBu b3Qgc3VwcG9ydGVkIGZvciBwdWJsaWNhdGlvbnMgb24gc2VydmVycyA8ClBHMTYuCi0tLQogZG9j L3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDExICst CiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg MjggKy0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICAgICAg IHwgICAyMSArLQogZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbCAgICAgICAgICAgICAgICAg ICAgICAgfCAgICA1ICsKIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAyOSArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9u LnNnbWwgICAgICAgICAgfCAgIDI0ICstCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwg ICAgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hhY3QuYyAgICAgICAgICAgICAgICAgIHwgICAxMyArCiBzcmMvYmFja2VuZC9jb21tYW5kcy9z dWJzY3JpcHRpb25jbWRzLmMgICAgICAgICAgICB8ICAgNjYgKy0KIHNyYy9iYWNrZW5kL2xpYnBx L3BxbXEuYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxOCArLQogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9iZ3dvcmtlci5jICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMgICAgICAgICAgICAgICAgIHwgICAgNSArLQogLi4u L2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jICAgICAgICAgICAgfCAgICA2ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlICAgICAgICAgICB8ICAg IDEgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlwYXJhbGxlbHdvcmtlci5jICAgICAg fCAxMzYxICsrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL2RlY29kZS5jICAgICAgICAgICB8ICAgMTAgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvbGF1bmNoZXIuYyAgICAgICAgIHwgIDIxNyArKystCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkICAgICAgICB8ICAgIDEgKwogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyAgICAgICAgICAgfCAgIDI2ICstCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgICAgICAgICAgICB8ICAgMzcgKy0KIHNy Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jICAgIHwgICAxMCAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYyAgICAgICAgfCAg IDI1ICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgICAg ICB8IDEwMzkgKysrKysrKysrKysrLS0tCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jICAgICAgICB8ICAgMjIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3By b2NzaWduYWwuYyAgICAgICAgICAgICAgIHwgICAgNCArCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbG1nci5jICAgICAgICAgICAgICAgICAgICB8ICAgNDYgKwogc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAzICsKIHNyYy9iYWNrZW5kL3V0 aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyAgICAgICAgICAgIHwgICAgNiArCiBzcmMvYmFja2Vu ZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMgICAgICAgICAgICAgICAgICB8ICAgIDUgKy0KIHNyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jICAgICAgICAgICAgICAgIHwgICAxMiArCiBz cmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgICAgICB8ICAgIDEg Kwogc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg ICA2ICstCiBzcmMvYmluL3BzcWwvZGVzY3JpYmUuYyAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMjEgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAgICAg ICAgICAgIHwgICAyMSArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5o ICAgICAgICAgICAgfCAgICAyICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVu Y2hlci5oICAgICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs cHJvdG8uaCAgICAgICAgICAgICB8ICAgMjggKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWx3b3JrZXIuaCAgICAgICAgICAgIHwgICAgOCArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9vcmlnaW4uaCAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3Bnb3V0cHV0LmggICAgICAgICAgICAgICAgIHwgICAgMiArLQogc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oICAgICAgICAgICAgfCAgICA3ICstCiBzcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oICAgICAgICAgICAgICB8ICAgIDIgKy0KIHNy Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICAgICAgIHwgIDE2MSAr Ky0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgNSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMTcgKy0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAgICAgICAgICAg ICAgICAgIHwgICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAgICAg ICAgICAgICAgICB8ICAgIDIgKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRp b24ub3V0ICAgICAgICAgfCAgIDQ2ICstCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRp b24uc3FsICAgICAgICAgICAgICB8ICAgIDYgKy0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVm cy5saXN0ICAgICAgICAgICAgICAgICAgIHwgICAgNiArCiA1MCBmaWxlcyBjaGFuZ2VkLCAzMDYw IGluc2VydGlvbnMoKyksIDM0NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwoKZGlmZiAt LWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwKaW5kZXggOWVkMmIwMi4uMTMwMzYxZiAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKQEAgLTc5MDMsMTEg Kzc5MDMsMTYgQEAgU0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3Vu dCZndDs8L3JlcGxhY2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKIAogICAgICA8cm93PgogICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KLSAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVsZD4gPHR5 cGU+Ym9vbDwvdHlwZT4KKyAgICAgICA8c3RydWN0ZmllbGQ+c3Vic3RyZWFtPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+Y2hhcjwvdHlwZT4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgotICAgICAg IElmIHRydWUsIHRoZSBzdWJzY3JpcHRpb24gd2lsbCBhbGxvdyBzdHJlYW1pbmcgb2YgaW4tcHJv Z3Jlc3MKLSAgICAgICB0cmFuc2FjdGlvbnMKKyAgICAgICBDb250cm9scyBob3cgdG8gaGFuZGxl IHRoZSBzdHJlYW1pbmcgb2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zOgorICAgICAgIDxsaXRl cmFsPmY8L2xpdGVyYWw+ID0gZGlzYWxsb3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5z YWN0aW9ucywKKyAgICAgICA8bGl0ZXJhbD50PC9saXRlcmFsPiA9IHNwaWxsIHRoZSBjaGFuZ2Vz IG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB0bworICAgICAgIGRpc2sgYW5kIGFwcGx5IGF0 IG9uY2UgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB0aGUKKyAgICAgICBw dWJsaXNoZXIsCisgICAgICAgPGxpdGVyYWw+cDwvbGl0ZXJhbD4gPSBhcHBseSBjaGFuZ2VzIGRp cmVjdGx5IHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKyAgICAgICB3b3JrZXIgaWYgYXZhaWxhYmxl IChzYW1lIGFzICd0JyBpZiBubyB3b3JrZXIgaXMgYXZhaWxhYmxlKQogICAgICAgPC9wYXJhPjwv ZW50cnk+CiAgICAgIDwvcm93PgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggMjRiMTYyNC4uMjUzYTFlYSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9jb25m aWcuc2dtbApAQCAtNDk1Miw3ICs0OTUyLDggQEAgQU5ZIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5udW1fc3luYzwvcmVwbGFjZWFibGU+ICggPHJlcGxhY2VhYmxlIGNsYXNzPSIKICAg ICAgIDxsaXN0aXRlbT4KICAgICAgICA8cGFyYT4KICAgICAgICAgU3BlY2lmaWVzIG1heGltdW0g bnVtYmVyIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2Vycy4gVGhpcyBpbmNsdWRlcwotICAg ICAgICBib3RoIGFwcGx5IHdvcmtlcnMgYW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXJz LgorICAgICAgICBsZWFkZXIgYXBwbHkgd29ya2VycywgcGFyYWxsZWwgYXBwbHkgd29ya2Vycywg YW5kIHRhYmxlIHN5bmNocm9uaXphdGlvbgorICAgICAgICB3b3JrZXJzLgogICAgICAgIDwvcGFy YT4KICAgICAgICA8cGFyYT4KICAgICAgICAgTG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzIGFy ZSB0YWtlbiBmcm9tIHRoZSBwb29sIGRlZmluZWQgYnkKQEAgLTQ5OTIsNiArNDk5MywzMSBAQCBB TlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51bV9zeW5jPC9yZXBsYWNlYWJsZT4g KCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0 ZW50cnk+CiAKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLW1heC1wYXJhbGxlbC1hcHBseS13 b3JrZXJzLXBlci1zdWJzY3JpcHRpb24iIHhyZWZsYWJlbD0ibWF4X3BhcmFsbGVsX2FwcGx5X3dv cmtlcnNfcGVyX3N1YnNjcmlwdGlvbiI+CisgICAgICA8dGVybT48dmFybmFtZT5tYXhfcGFyYWxs ZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uPC92YXJuYW1lPiAoPHR5cGU+aW50ZWdl cjwvdHlwZT4pCisgICAgICA8aW5kZXh0ZXJtPgorICAgICAgIDxwcmltYXJ5Pjx2YXJuYW1lPm1h eF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb248L3Zhcm5hbWU+IGNvbmZp Z3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgICAgPC9pbmRleHRlcm0+CisgICAgICA8 L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIE1heGltdW0g bnVtYmVyIG9mIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4gVGhpcwor ICAgICAgICBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIGFtb3VudCBvZiBwYXJhbGxlbGlzbSBmb3Ig c3RyZWFtaW5nIG9mCisgICAgICAgIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucyB3aXRoIHN1YnNj cmlwdGlvbiBwYXJhbWV0ZXIKKyAgICAgICAgPGxpdGVyYWw+c3RyZWFtaW5nID0gcGFyYWxsZWw8 L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgVGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMgYXJlIHRha2VuIGZyb20gdGhlIHBvb2wgZGVmaW5lZCBieQor ICAgICAgICA8dmFybmFtZT5tYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzPC92YXJuYW1l Pi4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoZSBkZWZhdWx0IHZh bHVlIGlzIDIuIFRoaXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBpbiB0aGUKKyAgICAgICAg PGZpbGVuYW1lPnBvc3RncmVzcWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgb3Igb24gdGhlIHNlcnZl ciBjb21tYW5kCisgICAgICAgIGxpbmUuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRl bT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICAgPC9z ZWN0Mj4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggZjg3NTYzOC4u ZjM2NjcxMCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0xNDk3LDYg KzE0OTcsMTYgQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0 aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIG1pZ2h0IG5vdCB2aW9sYXRl IGFueSBjb25zdHJhaW50LiAgVGhpcyBjYW4gZWFzaWx5IG1ha2UgdGhlIHN1YnNjcmliZXIKICAg IGluY29uc2lzdGVudC4KICAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgV2hlbiB0aGUgc3RyZWFt aW5nIG1vZGUgaXMgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+LCB0aGUgZmluaXNoIExTTiBv ZgorICAgZmFpbGVkIHRyYW5zYWN0aW9ucyBtYXkgbm90IGJlIGxvZ2dlZC4gSW4gdGhhdCBjYXNl LCBpdCBtYXkgYmUgbmVjZXNzYXJ5IHRvCisgICBjaGFuZ2UgdGhlIHN0cmVhbWluZyBtb2RlIHRv IDxsaXRlcmFsPm9uPC9saXRlcmFsPiBvciA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+IGFuZAorICAg Y2F1c2UgdGhlIHNhbWUgY29uZmxpY3RzIGFnYWluIHNvIHRoZSBmaW5pc2ggTFNOIG9mIHRoZSBm YWlsZWQgdHJhbnNhY3Rpb24gd2lsbAorICAgYmUgd3JpdHRlbiB0byB0aGUgc2VydmVyIGxvZy4g Rm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8gPGxpbmsKKyAgIGxp bmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9O IC4uLgorICAgU0tJUDwvY29tbWFuZD48L2xpbms+LgorICA8L3BhcmE+CiAgPC9zZWN0MT4KIAog IDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1yZXN0cmljdGlvbnMiPgpAQCAtMTY3OCw3 ICsxNjg4LDggQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0 aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIHN1YnNjcmlwdGlvbi4gIEEg ZGlzYWJsZWQgc3Vic2NyaXB0aW9uIG9yIGEgY3Jhc2hlZCBzdWJzY3JpcHRpb24gd2lsbCBoYXZl CiAgICB6ZXJvIHJvd3MgaW4gdGhpcyB2aWV3LiAgSWYgdGhlIGluaXRpYWwgZGF0YSBzeW5jaHJv bml6YXRpb24gb2YgYW55CiAgICB0YWJsZSBpcyBpbiBwcm9ncmVzcywgdGhlcmUgd2lsbCBiZSBh ZGRpdGlvbmFsIHdvcmtlcnMgZm9yIHRoZSB0YWJsZXMKLSAgIGJlaW5nIHN5bmNocm9uaXplZC4K KyAgIGJlaW5nIHN5bmNocm9uaXplZC4gTW9yZW92ZXIsIGlmIHRoZSBzdHJlYW1pbmcgdHJhbnNh Y3Rpb24gaXMgYXBwbGllZCBpbgorICAgcGFyYWxsZWwsIHRoZXJlIHdpbGwgYmUgYWRkaXRpb25h bCB3b3JrZXJzLgogICA8L3BhcmE+CiAgPC9zZWN0MT4KIApAQCAtMTc4NCw4ICsxNzk1LDEyIEBA IENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4g InBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAgICB0byB0aGUgc3Vic2NyaWJlciwgcGx1cyBzb21l IHJlc2VydmUgZm9yIHRhYmxlIHN5bmNocm9uaXphdGlvbi4KICAgIDx2YXJuYW1lPm1heF9sb2dp Y2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L3Zhcm5hbWU+IG11c3QgYmUgc2V0IHRvIGF0IGxlYXN0 CiAgICB0aGUgbnVtYmVyIG9mIHN1YnNjcmlwdGlvbnMsIGFnYWluIHBsdXMgc29tZSByZXNlcnZl IGZvciB0aGUgdGFibGUKLSAgIHN5bmNocm9uaXphdGlvbi4gIEFkZGl0aW9uYWxseSB0aGUgPHZh cm5hbWU+bWF4X3dvcmtlcl9wcm9jZXNzZXM8L3Zhcm5hbWU+Ci0gICBtYXkgbmVlZCB0byBiZSBh ZGp1c3RlZCB0byBhY2NvbW1vZGF0ZSBmb3IgcmVwbGljYXRpb24gd29ya2VycywgYXQgbGVhc3QK KyAgIHN5bmNocm9uaXphdGlvbi4gSWYgdGhlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgPGxpdGVy YWw+c3RyZWFtaW5nPC9saXRlcmFsPgorICAgaXMgc2V0IHRvIDxsaXRlcmFsPnBhcmFsbGVsPC9s aXRlcmFsPiwKKyAgIDxsaXRlcmFsPm1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM8L2xp dGVyYWw+IHNob3VsZCBiZSBpbmNyZWFzZWQKKyAgIGFjY29yZGluZyB0byB0aGUgZGVzaXJlZCBu dW1iZXIgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gIEFkZGl0aW9uYWxseSB0aGUKKyAgIDx2 YXJuYW1lPm1heF93b3JrZXJfcHJvY2Vzc2VzPC92YXJuYW1lPiBtYXkgbmVlZCB0byBiZSBhZGp1 c3RlZCB0bworICAgYWNjb21tb2RhdGUgZm9yIHJlcGxpY2F0aW9uIHdvcmtlcnMsIGF0IGxlYXN0 CiAgICAoPHZhcm5hbWU+bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczwvdmFybmFtZT4K ICAgICsgPGxpdGVyYWw+MTwvbGl0ZXJhbD4pLiAgTm90ZSB0aGF0IHNvbWUgZXh0ZW5zaW9ucyBh bmQgcGFyYWxsZWwgcXVlcmllcwogICAgYWxzbyB0YWtlIHdvcmtlciBzbG90cyBmcm9tIDx2YXJu YW1lPm1heF93b3JrZXJfcHJvY2Vzc2VzPC92YXJuYW1lPi4KZGlmZiAtLWdpdCBhL2RvYy9zcmMv c2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4 IDU1NzliOGIuLjc0ODc0MzQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbApAQCAtMTg1MSw2ICsxODUxLDEx IEBAIHBvc3RncmVzICAgMjcwOTMgIDAuMCAgMC4wICAzMDA5NiAgMjc1MiA/ICAgICAgICBTcyAg IDExOjM0ICAgMDowMCBwb3N0Z3Jlczogc2VyCiAgICAgICA8ZW50cnk+V2FpdGluZyB0byBhY3F1 aXJlIGFuIGFkdmlzb3J5IHVzZXIgbG9jay48L2VudHJ5PgogICAgICA8L3Jvdz4KICAgICAgPHJv dz4KKyAgICAgIDxlbnRyeT48bGl0ZXJhbD5hcHBseXRyYW5zYWN0aW9uPC9saXRlcmFsPjwvZW50 cnk+CisgICAgICA8ZW50cnk+V2FpdGluZyB0byBhY3F1aXJlIGEgbG9jayBvbiBhIHJlbW90ZSB0 cmFuc2FjdGlvbiBiZWluZyBhcHBsaWVkCisgICAgICBieSBhIGxvZ2ljYWwgcmVwbGljYXRpb24g c3Vic2NyaWJlci48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICAgPHJvdz4KICAgICAgIDxlbnRy eT48bGl0ZXJhbD5leHRlbmQ8L2xpdGVyYWw+PC9lbnRyeT4KICAgICAgIDxlbnRyeT5XYWl0aW5n IHRvIGV4dGVuZCBhIHJlbGF0aW9uLjwvZW50cnk+CiAgICAgIDwvcm93PgpkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApp bmRleCA1ZmRkNDI5Li5jNmEwZTgwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wu c2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcHJvdG9jb2wuc2dtbApAQCAtMzEwMiw3ICszMTAyLDcg QEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJ RllfU1lTVEVNOyIKICAgICAgPGxpc3RpdGVtPgogICAgICAgPHBhcmE+CiAgICAgICAgUHJvdG9j b2wgdmVyc2lvbi4gQ3VycmVudGx5IHZlcnNpb25zIDxsaXRlcmFsPjE8L2xpdGVyYWw+LCA8bGl0 ZXJhbD4yPC9saXRlcmFsPiwKLSAgICAgICBhbmQgPGxpdGVyYWw+MzwvbGl0ZXJhbD4gYXJlIHN1 cHBvcnRlZC4KKyAgICAgICA8bGl0ZXJhbD4zPC9saXRlcmFsPiwgYW5kIDxsaXRlcmFsPjQ8L2xp dGVyYWw+IGFyZSBzdXBwb3J0ZWQuCiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KICAgICAg ICBWZXJzaW9uIDxsaXRlcmFsPjI8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2 ZXIgdmVyc2lvbiAxNApAQCAtMzExMiw2ICszMTEyLDExIEBAIHBzcWwgImRibmFtZT1wb3N0Z3Jl cyByZXBsaWNhdGlvbj1kYXRhYmFzZSIgLWMgIklERU5USUZZX1NZU1RFTTsiCiAgICAgICAgVmVy c2lvbiA8bGl0ZXJhbD4zPC9saXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25seSBmb3Igc2VydmVyIHZl cnNpb24gMTUKICAgICAgICBhbmQgYWJvdmUsIGFuZCBpdCBhbGxvd3Mgc3RyZWFtaW5nIG9mIHR3 by1waGFzZSBjb21taXRzLgogICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgVmVy c2lvbiA8bGl0ZXJhbD40PC9saXRlcmFsPiBpcyBzdXBwb3J0ZWQgb25seSBmb3Igc2VydmVyIHZl cnNpb24gMTYKKyAgICAgICBhbmQgYWJvdmUsIGFuZCBpdCBhbGxvd3Mgc3RyZWFtcyBvZiBsYXJn ZSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMgdG8KKyAgICAgICBiZSBhcHBsaWVkIGluIHBhcmFs bGVsLgorICAgICAgPC9wYXJhPgogICAgICA8L2xpc3RpdGVtPgogICAgIDwvdmFybGlzdGVudHJ5 PgogCkBAIC02ODgyLDYgKzY4ODcsMjggQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVzIHJlcGxpY2F0 aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgICAgPC9wYXJhPgogICAg ICAgIDwvbGlzdGl0ZW0+CiAgICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICAgPHZhcmxpc3Rl bnRyeT4KKyAgICAgICA8dGVybT5JbnQ2NCAoWExvZ1JlY1B0cik8L3Rlcm0+CisgICAgICAgPGxp c3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIFRoZSBMU04gb2YgdGhlIGFib3J0LiBU aGlzIGZpZWxkIGlzIGF2YWlsYWJsZSBzaW5jZSBwcm90b2NvbCB2ZXJzaW9uCisgICAgICAgICA0 LgorICAgICAgICA8L3BhcmE+CisgICAgICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVu dHJ5PgorCisgICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChUaW1lc3Rh bXBUeik8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAg IEFib3J0IHRpbWVzdGFtcCBvZiB0aGUgdHJhbnNhY3Rpb24uIFRoZSB2YWx1ZSBpcyBpbiBudW1i ZXIKKyAgICAgICAgIG9mIG1pY3Jvc2Vjb25kcyBzaW5jZSBQb3N0Z3JlU1FMIGVwb2NoICgyMDAw LTAxLTAxKS4gVGhpcyBmaWVsZCBpcworICAgICAgICAgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29s IHZlcnNpb24gNC4KKyAgICAgICAgPC9wYXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8 L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L2xpc3RpdGVtPgog ICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9z dWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5z Z21sCmluZGV4IGY5YTE3NzYuLmYxNzNhMDkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1 YnNjcmlwdGlvbi5zZ21sCkBAIC0yMjgsMTMgKzIyOCwyOSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9O IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFj ZWFibAogICAgICAgIDwvdmFybGlzdGVudHJ5PgogCiAgICAgICAgPHZhcmxpc3RlbnRyeT4KLSAg ICAgICAgPHRlcm0+PGxpdGVyYWw+c3RyZWFtaW5nPC9saXRlcmFsPiAoPHR5cGU+Ym9vbGVhbjwv dHlwZT4pPC90ZXJtPgorICAgICAgICA8dGVybT48bGl0ZXJhbD5zdHJlYW1pbmc8L2xpdGVyYWw+ ICg8dHlwZT5lbnVtPC90eXBlPik8L3Rlcm0+CiAgICAgICAgIDxsaXN0aXRlbT4KICAgICAgICAg IDxwYXJhPgogICAgICAgICAgIFNwZWNpZmllcyB3aGV0aGVyIHRvIGVuYWJsZSBzdHJlYW1pbmcg b2YgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zCi0gICAgICAgICAgZm9yIHRoaXMgc3Vic2NyaXB0 aW9uLiAgQnkgZGVmYXVsdCwgYWxsIHRyYW5zYWN0aW9ucwotICAgICAgICAgIGFyZSBmdWxseSBk ZWNvZGVkIG9uIHRoZSBwdWJsaXNoZXIgYW5kIG9ubHkgdGhlbiBzZW50IHRvIHRoZQotICAgICAg ICAgIHN1YnNjcmliZXIgYXMgYSB3aG9sZS4KKyAgICAgICAgICBmb3IgdGhpcyBzdWJzY3JpcHRp b24uICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8bGl0ZXJhbD5vZmY8L2xpdGVyYWw+LAorICAgICAg ICAgIG1lYW5pbmcgYWxsIHRyYW5zYWN0aW9ucyBhcmUgZnVsbHkgZGVjb2RlZCBvbiB0aGUgcHVi bGlzaGVyIGFuZCBvbmx5CisgICAgICAgICAgdGhlbiBzZW50IHRvIHRoZSBzdWJzY3JpYmVyIGFz IGEgd2hvbGUuCisgICAgICAgICA8L3BhcmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAg IElmIHNldCB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4sIHRoZSBpbmNvbWluZyBjaGFuZ2VzIGFy ZSB3cml0dGVuIHRvCisgICAgICAgICAgdGVtcG9yYXJ5IGZpbGVzIGFuZCB0aGVuIGFwcGxpZWQg b25seSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMKKyAgICAgICAgICBjb21taXR0ZWQgb24gdGhl IHB1Ymxpc2hlciBhbmQgcmVjZWl2ZWQgYnkgdGhlIHN1YnNjcmliZXIuCisgICAgICAgICA8L3Bh cmE+CisKKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIElmIHNldCB0byA8bGl0ZXJhbD5wYXJh bGxlbDwvbGl0ZXJhbD4sIGluY29taW5nIGNoYW5nZXMgYXJlIGRpcmVjdGx5CisgICAgICAgICAg YXBwbGllZCB2aWEgb25lIG9mIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLCBpZiBhdmFpbGFi bGUuIElmIG5vCisgICAgICAgICAgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIGZyZWUgdG8gaGFu ZGxlIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMgdGhlbgorICAgICAgICAgIHRoZSBjaGFuZ2VzIGFy ZSB3cml0dGVuIHRvIHRlbXBvcmFyeSBmaWxlcyBhbmQgYXBwbGllZCBhZnRlciB0aGUKKyAgICAg ICAgICB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuIE5vdGUgdGhhdCBpZiBhbiBlcnJvciBoYXBw ZW5zIGluIGEKKyAgICAgICAgICBwYXJhbGxlbCBhcHBseSB3b3JrZXIsIHRoZSBmaW5pc2ggTFNO IG9mIHRoZSByZW1vdGUgdHJhbnNhY3Rpb24KKyAgICAgICAgICBtaWdodCBub3QgYmUgcmVwb3J0 ZWQgaW4gdGhlIHNlcnZlciBsb2cuCiAgICAgICAgICA8L3BhcmE+CiAgICAgICAgIDwvbGlzdGl0 ZW0+CiAgICAgICAgPC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvc3lz dGVtLXZpZXdzLnNnbWwgYi9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKaW5kZXggZDM4 YjQyYy4uM2E1NjEwZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbApAQCAtMTM3OSw4ICsxMzc5LDkg QEAKICAgICAgICA8bGl0ZXJhbD52aXJ0dWFseGlkPC9saXRlcmFsPiwKICAgICAgICA8bGl0ZXJh bD5zcGVjdG9rZW48L2xpdGVyYWw+LAogICAgICAgIDxsaXRlcmFsPm9iamVjdDwvbGl0ZXJhbD4s Ci0gICAgICAgPGxpdGVyYWw+dXNlcmxvY2s8L2xpdGVyYWw+LCBvcgotICAgICAgIDxsaXRlcmFs PmFkdmlzb3J5PC9saXRlcmFsPi4KKyAgICAgICA8bGl0ZXJhbD51c2VybG9jazwvbGl0ZXJhbD4s CisgICAgICAgPGxpdGVyYWw+YWR2aXNvcnk8L2xpdGVyYWw+LCBvcgorICAgICAgIDxsaXRlcmFs PmFwcGx5dHJhbnNhY3Rpb248L2xpdGVyYWw+LgogICAgICAgIChTZWUgYWxzbyA8eHJlZiBsaW5r ZW5kPSJ3YWl0LWV2ZW50LWxvY2stdGFibGUiLz4uKQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAg ICAgIDwvcm93PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4IDgwODZiODUuLjAzMGM2 M2EgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKQEAgLTE3MTIsNiArMTcxMiw3IEBAIFJl Y29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJaW50CQkJbmNoaWxkcmVuOwog CVRyYW5zYWN0aW9uSWQgKmNoaWxkcmVuOwogCVRpbWVzdGFtcFR6IHhhY3RfdGltZTsKKwlib29s CQlyZXBsb3JpZ2luOwogCiAJLyoKIAkgKiBJZiB3ZSBoYXZlbid0IGJlZW4gYXNzaWduZWQgYW4g WElELCBub2JvZHkgd2lsbCBjYXJlIHdoZXRoZXIgd2UgYWJvcnRlZApAQCAtMTc0Miw2ICsxNzQz LDEzIEBAIFJlY29yZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJCWVsb2coUEFO SUMsICJjYW5ub3QgYWJvcnQgdHJhbnNhY3Rpb24gJXUsIGl0IHdhcyBhbHJlYWR5IGNvbW1pdHRl ZCIsCiAJCQkgeGlkKTsKIAorCS8qCisJICogQXJlIHdlIHVzaW5nIHRoZSByZXBsaWNhdGlvbiBv cmlnaW5zIGZlYXR1cmU/ICBPciwgaW4gb3RoZXIgd29yZHMsIGFyZQorCSAqIHdlIHJlcGxheWlu ZyByZW1vdGUgYWN0aW9ucz8KKwkgKi8KKwlyZXBsb3JpZ2luID0gKHJlcGxvcmlnaW5fc2Vzc2lv bl9vcmlnaW4gIT0gSW52YWxpZFJlcE9yaWdpbklkICYmCisJCQkJICByZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luICE9IERvTm90UmVwbGljYXRlSWQpOworCiAJLyogRmV0Y2ggdGhlIGRhdGEgd2Ug bmVlZCBmb3IgdGhlIGFib3J0IHJlY29yZCAqLwogCW5yZWxzID0gc21nckdldFBlbmRpbmdEZWxl dGVzKGZhbHNlLCAmcmVscyk7CiAJbmNoaWxkcmVuID0geGFjdEdldENvbW1pdHRlZENoaWxkcmVu KCZjaGlsZHJlbik7CkBAIC0xNzY1LDYgKzE3NzMsMTEgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9y dChib29sIGlzU3ViWGFjdCkKIAkJCQkJICAgTXlYYWN0RmxhZ3MsIEludmFsaWRUcmFuc2FjdGlv bklkLAogCQkJCQkgICBOVUxMKTsKIAorCWlmIChyZXBsb3JpZ2luKQorCQkvKiBNb3ZlIExTTnMg Zm9yd2FyZCBmb3IgdGhpcyByZXBsaWNhdGlvbiBvcmlnaW4gKi8KKwkJcmVwbG9yaWdpbl9zZXNz aW9uX2FkdmFuY2UocmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24sCisJCQkJCQkJCSAgIFhh Y3RMYXN0UmVjRW5kKTsKKwogCS8qCiAJICogUmVwb3J0IHRoZSBsYXRlc3QgYXN5bmMgYWJvcnQg TFNOLCBzbyB0aGF0IHRoZSBXQUwgd3JpdGVyIGtub3dzIHRvCiAJICogZmx1c2ggdGhpcyBhYm9y dC4gVGhlcmUncyBub3RoaW5nIHRvIGJlIGdhaW5lZCBieSBkZWxheWluZyB0aGlzLCBzaW5jZQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IGQ2NzM1NTcuLjllNGI2 NzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYwor KysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTg0LDcgKzg0 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU3ViT3B0cwogCWJvb2wJCWNvcHlfZGF0YTsKIAlib29sCQly ZWZyZXNoOwogCWJvb2wJCWJpbmFyeTsKLQlib29sCQlzdHJlYW1pbmc7CisJY2hhcgkJc3RyZWFt aW5nOwogCWJvb2wJCXR3b3BoYXNlOwogCWJvb2wJCWRpc2FibGVvbmVycjsKIAljaGFyCSAgICpv cmlnaW47CkBAIC0xMDAsNiArMTAwLDYyIEBAIHN0YXRpYyB2b2lkIGNoZWNrX2R1cGxpY2F0ZXNf aW5fcHVibGlzdChMaXN0ICpwdWJsaXN0LCBEYXR1bSAqZGF0dW1zKTsKIHN0YXRpYyBMaXN0ICpt ZXJnZV9wdWJsaWNhdGlvbnMoTGlzdCAqb2xkcHVibGlzdCwgTGlzdCAqbmV3cHVibGlzdCwgYm9v bCBhZGRwdWIsIGNvbnN0IGNoYXIgKnN1Ym5hbWUpOwogc3RhdGljIHZvaWQgUmVwb3J0U2xvdENv bm5lY3Rpb25FcnJvcihMaXN0ICpyc3RhdGVzLCBPaWQgc3ViaWQsIGNoYXIgKnNsb3RuYW1lLCBj aGFyICplcnIpOwogCisvKgorICogRXh0cmFjdCB0aGUgc3RyZWFtaW5nIG1vZGUgdmFsdWUgZnJv bSBhIERlZkVsZW0uICBUaGlzIGlzIGxpa2UKKyAqIGRlZkdldEJvb2xlYW4oKSBidXQgYWxzbyBh Y2NlcHRzIHRoZSBzcGVjaWFsIHZhbHVlIG9mICJwYXJhbGxlbCIuCisgKi8KK2NoYXIKK2RlZkdl dFN0cmVhbWluZ01vZGUoRGVmRWxlbSAqZGVmKQoreworCS8qCisJICogSWYgbm8gcGFyYW1ldGVy IHZhbHVlIGdpdmVuLCBhc3N1bWUgInRydWUiIGlzIG1lYW50LgorCSAqLworCWlmICghZGVmLT5h cmcpCisJCXJldHVybiBTVUJTVFJFQU1fT047CisKKwkvKgorCSAqIEFsbG93IDAsIDEsICJmYWxz ZSIsICJ0cnVlIiwgIm9mZiIsICJvbiIgb3IgInBhcmFsbGVsIi4KKwkgKi8KKwlzd2l0Y2ggKG5v ZGVUYWcoZGVmLT5hcmcpKQorCXsKKwkJY2FzZSBUX0ludGVnZXI6CisJCQlzd2l0Y2ggKGludFZh bChkZWYtPmFyZykpCisJCQl7CisJCQkJY2FzZSAwOgorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09G RjsKKwkJCQljYXNlIDE6CisJCQkJCXJldHVybiBTVUJTVFJFQU1fT047CisJCQkJZGVmYXVsdDoK KwkJCQkJLyogb3RoZXJ3aXNlLCBlcnJvciBvdXQgYmVsb3cgKi8KKwkJCQkJYnJlYWs7CisJCQl9 CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXsKKwkJCQljaGFyCSAgICpzdmFsID0gZGVmR2V0 U3RyaW5nKGRlZik7CisKKwkJCQkvKgorCQkJCSAqIFRoZSBzZXQgb2Ygc3RyaW5ncyBhY2NlcHRl ZCBoZXJlIHNob3VsZCBtYXRjaCB1cCB3aXRoIHRoZQorCQkJCSAqIGdyYW1tYXIncyBvcHRfYm9v bGVhbl9vcl9zdHJpbmcgcHJvZHVjdGlvbi4KKwkJCQkgKi8KKwkJCQlpZiAocGdfc3RyY2FzZWNt cChzdmFsLCAiZmFsc2UiKSA9PSAwIHx8CisJCQkJCXBnX3N0cmNhc2VjbXAoc3ZhbCwgIm9mZiIp ID09IDApCisJCQkJCXJldHVybiBTVUJTVFJFQU1fT0ZGOworCQkJCWlmIChwZ19zdHJjYXNlY21w KHN2YWwsICJ0cnVlIikgPT0gMCB8fAorCQkJCQlwZ19zdHJjYXNlY21wKHN2YWwsICJvbiIpID09 IDApCisJCQkJCXJldHVybiBTVUJTVFJFQU1fT047CisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3Zh bCwgInBhcmFsbGVsIikgPT0gMCkKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9QQVJBTExFTDsKKwkJ CX0KKwkJCWJyZWFrOworCX0KKworCWVyZXBvcnQoRVJST1IsCisJCQkoZXJyY29kZShFUlJDT0RF X1NZTlRBWF9FUlJPUiksCisJCQkgZXJybXNnKCIlcyByZXF1aXJlcyBhIEJvb2xlYW4gdmFsdWUg b3IgXCJwYXJhbGxlbFwiIiwKKwkJCQkJZGVmLT5kZWZuYW1lKSkpOworCXJldHVybiBTVUJTVFJF QU1fT0ZGOwkJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworfQogCiAvKgogICogQ29tbW9uIG9w dGlvbiBwYXJzaW5nIGZ1bmN0aW9uIGZvciBDUkVBVEUgYW5kIEFMVEVSIFNVQlNDUklQVElPTiBj b21tYW5kcy4KQEAgLTEzOCw3ICsxOTQsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQ YXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAlpZiAoSXNTZXQoc3VwcG9y dGVkX29wdHMsIFNVQk9QVF9CSU5BUlkpKQogCQlvcHRzLT5iaW5hcnkgPSBmYWxzZTsKIAlpZiAo SXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9TVFJFQU1JTkcpKQotCQlvcHRzLT5zdHJlYW1p bmcgPSBmYWxzZTsKKwkJb3B0cy0+c3RyZWFtaW5nID0gU1VCU1RSRUFNX09GRjsKIAlpZiAoSXNT ZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9UV09QSEFTRV9DT01NSVQpKQogCQlvcHRzLT50d29w aGFzZSA9IGZhbHNlOwogCWlmIChJc1NldChzdXBwb3J0ZWRfb3B0cywgU1VCT1BUX0RJU0FCTEVf T05fRVJSKSkKQEAgLTI0MSw3ICsyOTcsNyBAQCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQ YXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0bXRfb3B0aW9ucywKIAkJCQllcnJvckNvbmZsaWN0 aW5nRGVmRWxlbShkZWZlbCwgcHN0YXRlKTsKIAogCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0g U1VCT1BUX1NUUkVBTUlORzsKLQkJCW9wdHMtPnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVm ZWwpOworCQkJb3B0cy0+c3RyZWFtaW5nID0gZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJ CX0KIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkK IAkJewpAQCAtNjI5LDcgKzY4NSw3IEBAIENyZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpw c3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0bXQgKnN0bXQsCiAJdmFsdWVzW0FudW1fcGdfc3Vi c2NyaXB0aW9uX3N1Ym93bmVyIC0gMV0gPSBPYmplY3RJZEdldERhdHVtKG93bmVyKTsKIAl2YWx1 ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3ViZW5hYmxlZCAtIDFdID0gQm9vbEdldERhdHVtKG9w dHMuZW5hYmxlZCk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YmJpbmFyeSAtIDFd ID0gQm9vbEdldERhdHVtKG9wdHMuYmluYXJ5KTsKLQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRp b25fc3Vic3RyZWFtIC0gMV0gPSBCb29sR2V0RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCXZhbHVl c1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJzdHJlYW0gLSAxXSA9IENoYXJHZXREYXR1bShvcHRz LnN0cmVhbWluZyk7CiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3Rh dGUgLSAxXSA9CiAJCUNoYXJHZXREYXR1bShvcHRzLnR3b3BoYXNlID8KIAkJCQkJIExPR0lDQUxS RVBfVFdPUEhBU0VfU1RBVEVfUEVORElORyA6CkBAIC0xMDk4LDcgKzExNTQsNyBAQCBBbHRlclN1 YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3Rt dCwKIAkJCQlpZiAoSXNTZXQob3B0cy5zcGVjaWZpZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykp CiAJCQkJewogCQkJCQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0g PQotCQkJCQkJQm9vbEdldERhdHVtKG9wdHMuc3RyZWFtaW5nKTsKKwkJCQkJCUNoYXJHZXREYXR1 bShvcHRzLnN0cmVhbWluZyk7CiAJCQkJCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1 YnN0cmVhbSAtIDFdID0gdHJ1ZTsKIAkJCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2xp YnBxL3BxbXEuYyBiL3NyYy9iYWNrZW5kL2xpYnBxL3BxbXEuYwppbmRleCA0ZDA0MTVlLi42Mzk4 NDVmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9saWJwcS9wcW1xLmMKKysrIGIvc3JjL2JhY2tl bmQvbGlicHEvcHFtcS5jCkBAIC0xMywxMSArMTMsMTMgQEAKIAogI2luY2x1ZGUgInBvc3RncmVz LmgiCiAKKyNpbmNsdWRlICJhY2Nlc3MvcGFyYWxsZWwuaCIKICNpbmNsdWRlICJsaWJwcS9saWJw cS5oIgogI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFtcS5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1ZGUg InJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90Lmgi CiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKIApAQCAtMTYyLDkgKzE2NCwxOSBAQCBtcV9w dXRtZXNzYWdlKGNoYXIgbXNndHlwZSwgY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbikKIAkJcmVz dWx0ID0gc2htX21xX3NlbmR2KHBxX21xX2hhbmRsZSwgaW92LCAyLCB0cnVlLCB0cnVlKTsKIAog CQlpZiAocHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCAhPSAwKQotCQkJU2VuZFByb2NTaWduYWwo cHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCwKLQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxfTUVT U0FHRSwKLQkJCQkJCSAgIHBxX21xX3BhcmFsbGVsX2xlYWRlcl9iYWNrZW5kX2lkKTsKKwkJewor CQkJaWYgKElzTG9naWNhbFBhcmFsbGVsQXBwbHlXb3JrZXIoKSkKKwkJCQlTZW5kUHJvY1NpZ25h bChwcV9tcV9wYXJhbGxlbF9sZWFkZXJfcGlkLAorCQkJCQkJCSAgIFBST0NTSUdfUEFSQUxMRUxf QVBQTFlfTUVTU0FHRSwKKwkJCQkJCQkgICBwcV9tcV9wYXJhbGxlbF9sZWFkZXJfYmFja2VuZF9p ZCk7CisJCQllbHNlCisJCQl7CisJCQkJQXNzZXJ0KElzUGFyYWxsZWxXb3JrZXIoKSk7CisJCQkJ U2VuZFByb2NTaWduYWwocHFfbXFfcGFyYWxsZWxfbGVhZGVyX3BpZCwKKwkJCQkJCQkgICBQUk9D U0lHX1BBUkFMTEVMX01FU1NBR0UsCisJCQkJCQkJICAgcHFfbXFfcGFyYWxsZWxfbGVhZGVyX2Jh Y2tlbmRfaWQpOworCQkJfQorCQl9CiAKIAkJaWYgKHJlc3VsdCAhPSBTSE1fTVFfV09VTERfQkxP Q0spCiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3Jr ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwppbmRleCAwZDcyZGUyLi4y ZGZhOWFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKKysr IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCkBAIC0xMjgsNiArMTI4LDkgQEAg c3RhdGljIGNvbnN0IHN0cnVjdAogCX0sCiAJewogCQkiQXBwbHlXb3JrZXJNYWluIiwgQXBwbHlX b3JrZXJNYWluCisJfSwKKwl7CisJCSJQYXJhbGxlbEFwcGx5V29ya2VyTWFpbiIsIFBhcmFsbGVs QXBwbHlXb3JrZXJNYWluCiAJfQogfTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci9pbnRlcnJ1cHQuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvaW50ZXJydXB0LmMKaW5k ZXggMWFlZDJlMi4uZTJlNWExMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9p bnRlcnJ1cHQuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2ludGVycnVwdC5jCkBAIC05 OCw4ICs5OCw5IEBAIFNpZ25hbEhhbmRsZXJGb3JDcmFzaEV4aXQoU0lHTkFMX0FSR1MpCiAgKiBz aHV0IGRvd24gYW5kIGV4aXQuCiAgKgogICogVHlwaWNhbGx5LCB0aGlzIGhhbmRsZXIgd291bGQg YmUgdXNlZCBmb3IgU0lHVEVSTSwgYnV0IHNvbWUgcHJvY2Vzc2VzIHVzZQotICogb3RoZXIgc2ln bmFscy4gSW4gcGFydGljdWxhciwgdGhlIGNoZWNrcG9pbnRlciBleGl0cyBvbiBTSUdVU1IyLCBh bmQgdGhlCi0gKiBXQUwgd3JpdGVyIGV4aXRzIG9uIGVpdGhlciBTSUdJTlQgb3IgU0lHVEVSTS4K KyAqIG90aGVyIHNpZ25hbHMuIEluIHBhcnRpY3VsYXIsIHRoZSBjaGVja3BvaW50ZXIgZXhpdHMg b24gU0lHVVNSMiwgYW5kIHRoZSBXQUwKKyAqIHdyaXRlciBhbmQgdGhlIGxvZ2ljYWwgcmVwbGlj YXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGV4aXQgb24gZWl0aGVyCisgKiBTSUdJTlQgb3Ig U0lHVEVSTS4KICAqCiAgKiBTaHV0ZG93blJlcXVlc3RQZW5kaW5nIHNob3VsZCBiZSBjaGVja2Vk IGF0IGEgY29udmVuaWVudCBwbGFjZSB3aXRoaW4gdGhlCiAgKiBtYWluIGxvb3AsIG9yIGVsc2Ug dGhlIG1haW4gbG9vcCBzaG91bGQgY2FsbCBIYW5kbGVNYWluTG9vcEludGVycnVwdHMuCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9saWJwcXdhbHJlY2VpdmVyL2xpYnBxd2Fs cmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGli cHF3YWxyZWNlaXZlci5jCmluZGV4IDdmNjk3YjAuLjIyNWRhODEgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNlaXZlci5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xpYnBxd2FscmVjZWl2ZXIvbGlicHF3YWxyZWNl aXZlci5jCkBAIC00NDMsOSArNDQzLDkgQEAgbGlicHFyY3Zfc3RhcnRzdHJlYW1pbmcoV2FsUmVj ZWl2ZXJDb25uICpjb25uLAogCQlhcHBlbmRTdHJpbmdJbmZvKCZjbWQsICJwcm90b192ZXJzaW9u ICcldSciLAogCQkJCQkJIG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwucHJvdG9fdmVyc2lvbik7CiAK LQkJaWYgKG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nICYmCi0JCQlQUXNlcnZlclZl cnNpb24oY29ubi0+c3RyZWFtQ29ubikgPj0gMTQwMDAwKQotCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZygmY21kLCAiLCBzdHJlYW1pbmcgJ29uJyIpOworCQlpZiAob3B0aW9ucy0+cHJvdG8ubG9n aWNhbC5zdHJlYW1pbmdfc3RyKQorCQkJYXBwZW5kU3RyaW5nSW5mbygmY21kLCAiLCBzdHJlYW1p bmcgJyVzJyIsCisJCQkJCQkJIG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0cik7 CiAKIAkJaWYgKG9wdGlvbnMtPnByb3RvLmxvZ2ljYWwudHdvcGhhc2UgJiYKIAkJCVBRc2VydmVy VmVyc2lvbihjb25uLT5zdHJlYW1Db25uKSA+PSAxNTAwMDApCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9NYWtlZmlsZQppbmRleCBjNGUyZmRlLi4yZGMyNWUzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKQEAgLTE1LDYgKzE1LDcgQEAgaW5jbHVkZSAk KHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAogb3ZlcnJpZGUgQ1BQRkxBR1MgOj0g LUkkKHNyY2RpcikgJChDUFBGTEFHUykKIAogT0JKUyA9IFwKKwlhcHBseXBhcmFsbGVsd29ya2Vy Lm8gXAogCWRlY29kZS5vIFwKIAlsYXVuY2hlci5vIFwKIAlsb2dpY2FsLm8gXApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWJiOTA5Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2Vy LmMKQEAgLTAsMCArMSwxMzYxIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGFwcGx5cGFyYWxs ZWx3b3JrZXIuYworICoJICAgU3VwcG9ydCByb3V0aW5lcyBmb3IgYXBwbHlpbmcgeGFjdCBieSBw YXJhbGxlbCBhcHBseSB3b3JrZXIKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjIsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCSAg c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMKKyAq CisgKiBUaGlzIGZpbGUgY29udGFpbnMgcm91dGluZXMgdGhhdCBhcmUgaW50ZW5kZWQgdG8gc3Vw cG9ydCBzZXR0aW5nIHVwLCB1c2luZywKKyAqIGFuZCB0ZWFyaW5nIGRvd24gYSBQYXJhbGxlbEFw cGx5V29ya2VySW5mby4KKyAqCisgKiBSZWZlciB0byB0aGUgY29tbWVudHMgaW4gdGhlIGZpbGUg aGVhZGVyIG9mIGxvZ2ljYWwvd29ya2VyLmMgdG8gc2VlIG1vcmUKKyAqIGluZm9ybWF0aW9uIGFi b3V0IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKgorICogTG9ja2luZyBDb25zaWRlcmF0aW9u cworICogLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBTaW5jZSB0aGUgZGF0YWJhc2Ugc3RydWN0dXJl IChzY2hlbWEgb2Ygc3Vic2NyaXB0aW9uIHRhYmxlcywgZXRjLikgb2YKKyAqIHB1Ymxpc2hlciBh bmQgc3Vic2NyaWJlciBtYXkgYmUgZGlmZmVyZW50LCBhcHBseWluZyB0cmFuc2FjdGlvbnMgaW4g cGFyYWxsZWwKKyAqIG1vZGUgb24gdGhlIHN1YnNjcmliZXIgc2lkZSBtYXkgY2F1c2Ugc29tZSBk ZWFkbG9jayBwcm9ibGVtcyB0aGF0IGRvIG5vdAorICogb2NjdXIgb24gdGhlIHB1Ymxpc2hlciBz aWRlLgorICoKKyAqIFN1cHBvc2UgYSBzdWJzY3JpYmVkIHRhYmxlIGRvZXMgbm90IGhhdmUgYSB1 bmlxdWUga2V5IG9uIHRoZSBwdWJsaXNoZXIgYW5kCisgKiBoYXMgYSB1bmlxdWUga2V5IG9uIHRo ZSBzdWJzY3JpYmVyLgorICoKKyAqIDEpIERlYWRsb2NrIGJldHdlZW4gdGhlIGxlYWRlciBhcHBs eSB3b3JrZXIgYW5kIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyCisgKgorICogVGhlIHBhcmFsbGVs IGFwcGx5IHdvcmtlciAoUEEpIGlzIGV4ZWN1dGluZyBUWC0xIGFuZCB0aGUgbGVhZGVyIGFwcGx5 IHdvcmtlcgorICogKExBKSBpcyBleGVjdXRpbmcgVFgtMiBjb25jdXJyZW50bHkgb24gdGhlIHN1 YnNjcmliZXIuIE5vdywgTEEgaXMgd2FpdGluZworICogZm9yIFBBIGJlY2F1c2Ugb2YgdGhlIHVu aXF1ZSBrZXkgb2YgdGhlIHN1YnNjcmliZWQgdGFibGUgd2hpbGUgUEEgaXMgd2FpdGluZworICog Zm9yIExBIHRvIHNlbmQgZnVydGhlciBtZXNzYWdlcy4KKyAqCisgKiBJbiBvcmRlciBmb3IgbG1n ciB0byBkZXRlY3QgdGhpcywgd2UgaGF2ZSBMQSBhY3F1aXJlIGEgc2Vzc2lvbiBsb2NrIG9uIHRo ZQorICogcmVtb3RlIHRyYW5zYWN0aW9uIChieSBwYV9sb2NrX3N0cmVhbSgpKSBhbmQgaGF2ZSBQ QSB3YWl0IG9uIHRoZSBsb2NrIGJlZm9yZQorICogdHJ5aW5nIHRvIHJlY2VpdmUgbWVzc2FnZXMu IEluIG90aGVyIHdvcmRzLCBMQSBhY3F1aXJlcyB0aGUgbG9jayBiZWZvcmUKKyAqIHNlbmRpbmcg U1RSRUFNX1NUT1AgYW5kIHJlbGVhc2VzIGl0IGlmIGFscmVhZHkgYWNxdWlyZWQgYmVmb3JlIHNl bmRpbmcKKyAqIFNUUkVBTV9TVEFSVCwgU1RSRUFNX0FCT1JUIChmb3IgdG9wbGV2ZWwgdHJhbnNh Y3Rpb24pLCBTVFJFQU1fUFJFUEFSRSBhbmQKKyAqIFNUUkVBTV9DT01NSVQuIEZvciBQQSwgaXQg YWx3YXlzIG5lZWRzIHRvIGFjcXVpcmUgdGhlIGxvY2sgYWZ0ZXIgcHJvY2Vzc2luZworICogU1RS RUFNX1NUT1AgYW5kIFNUUkVBTV9BQk9SVCAoZm9yIHN1YnRyYW5zYWN0aW9uKSBhbmQgdGhlbiBy ZWxlYXNlCisgKiBpbW1lZGlhdGVseSBhZnRlciBhY3F1aXJpbmcgaXQuIFRoYXQgd2F5LCB3aGVu IFBBIGlzIHdhaXRpbmcgZm9yIExBLCB3ZSBjYW4KKyAqIGhhdmUgYSB3YWl0LWVkZ2UgZnJvbSBQ QSB0byBMQSBpbiBsbWdyLCB3aGljaCB3aWxsIG1ha2UgYSBkZWFkbG9jayBpbiBsbWdyCisgKiBs aWtlOgorICoKKyAqIExBICh3YWl0aW5nIHRvIGFjcXVpcmUgdGhlIGxvY2sgb24gdGhlIHVuaXF1 ZSBpbmRleCkgLT4gUEEgKHdhaXRpbmcgdG8KKyAqIGFjcXVpcmUgdGhlIGxvY2sgb24gdGhlIHJl bW90ZSB0cmFuc2FjdGlvbikgLT4gTEEKKyAqCisgKiAyKSBEZWFkbG9jayBiZXR3ZWVuIHRoZSBs ZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzCisgKgorICogVGhp cyBzY2VuYXJpbyBpcyBzaW1pbGFyIHRvIHRoZSBmaXJzdCBjYXNlIGJ1dCBUWC0xIGFuZCBUWC0y IGFyZSBleGVjdXRlZCBieQorICogdHdvIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgKFBBLTEgYW5k IFBBLTIgcmVzcGVjdGl2ZWx5KS4gSW4gdGhpcyBzY2VuYXJpbywKKyAqIFBBLTIgaXMgd2FpdGlu ZyBmb3IgUEEtMSB0byBjb21wbGV0ZSBpdHMgdHJhbnNhY3Rpb24gd2hpbGUgUEEtMSBpcyB3YWl0 aW5nCisgKiBmb3Igc3Vic2VxdWVudCBpbnB1dCBmcm9tIExBLiBBbHNvLCBMQSBpcyB3YWl0aW5n IGZvciBQQS0yIHRvIGNvbXBsZXRlIGl0cworICogdHJhbnNhY3Rpb24gaW4gb3JkZXIgdG8gcHJl c2VydmUgdGhlIGNvbW1pdCBvcmRlci4gVGhlcmUgaXMgYSBkZWFkbG9jayBhbW9uZworICogdGhy ZWUgcHJvY2Vzc2VzLgorICoKKyAqIEluIG9yZGVyIGZvciBsbWdyIHRvIGRldGVjdCB0aGlzLCB3 ZSBoYXZlIFBBIGFjcXVpcmUgYSBzZXNzaW9uIGxvY2sgb24gdGhlCisgKiB0cmFuc2FjdGlvbiBi ZWluZyBhcHBsaWVkIGFuZCBoYXZlIExBIHdhaXQgb24gdGhlIGxvY2sgYmVmb3JlIHByb2NlZWRp bmcgaW4KKyAqIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kcy4gVGhhdCB3YXksIHdlIGNhbiBo YXZlIGEgd2FpdC1lZGdlIGZyb20gTEEgdG8gUEEKKyAqIGluIGxtZ3IsIHdoaWNoIHdpbGwgbWFr ZSBhIGRlYWRsb2NrIGluIGxtZ3IgbGlrZToKKyAqCisgKiBMQSAod2FpdGluZyB0byBhY3F1aXJl IHRoZSBsb2NhbCB0cmFuc2FjdGlvbiBsb2NrKSAtPiBQQS0yICh3YWl0aW5nIHRvCisgKiBhY3F1 aXJlIHRoZSBsb2NrIG9uIHRoZSB1bmlxdWUgaW5kZXgpIC0+IFBBLTEgKHdhaXRpbmcgdG8gYWNx dWlyZSB0aGUgbG9jaworICogb24gdGhlIHJlbW90ZSB0cmFuc2FjdGlvbikgLT4gTEEKKyAqCisg KiBPbmUgbWlnaHQgdGhpbmsgd2UgY2FuIHVzZSBYYWN0TG9ja1RhYmxlV2FpdCgpLCBidXQgWGFj dExvY2tUYWJsZVdhaXQoKQorICogY29uc2lkZXJzIFBSRVBBUkVEIFRSQU5TQUNUSU9OIGFzIHN0 aWxsIGluIHByb2dyZXNzIHdoaWNoIG1lYW5zIHRoZSBsb2NrCisgKiB3b24ndCBiZSByZWxlYXNl ZCBldmVuIGlmIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgcHJlcGFyZWQgdGhlIHRyYW5zYWN0 aW9uLgorICoKKyAqIDMpIERlYWRsb2NrIHdoZW4gdGhlIHNobV9tcSBidWZmZXIgaXMgZnVsbAor ICoKKyAqIFRoZSBzY2VuYXJpbyB3aGVyZSBMQSBoYXMgdG8gd2FpdCBpcyB3aGVuIHRoZSBzaG1f bXEgYnVmZmVyIGlzIGZ1bGwuIEluIHRoZQorICogYWJvdmUgc2NlbmFyaW8gKGllLiBQQS0xIGFu ZCBQQS0yIGFyZSBleGVjdXRpbmcgdHJhbnNhY3Rpb25zIGNvbmN1cnJlbnRseSksCisgKiBpZiB0 aGUgc2htX21xIGJ1ZmZlciBiZXR3ZWVuIExBIGFuZCBQQS0yIGlzIGZ1bGwsIExBIGhhcyB0byB3 YWl0IHRvIHNlbmQKKyAqIG1lc3NhZ2VzLCBhbmQgdGhpcyB3YWl0IGRvZXNuJ3QgYXBwZWFyIGlu IGxtZ3IuCisgKgorICogVG8gcmVzb2x2ZSB0aGlzIGlzc3VlLCB3ZSB1c2Ugbm9uLWJsb2NraW5n IHdyaXRlIGFuZCB3YWl0IHdpdGggYSB0aW1lb3V0LiBJZgorICogdGltZW91dCBpcyBleGNlZWRl ZCwgdGhlIExBIHJlcG9ydHMgYW4gZXJyb3IgYW5kIHJlc3RhcnRzIGxvZ2ljYWwKKyAqIHJlcGxp Y2F0aW9uLgorICoKKyAqIDQpIExvY2sgdHlwZQorICoKKyAqIEJvdGggdGhlIHN0cmVhbSBsb2Nr IGFuZCB0aGUgdHJhbnNhY3Rpb24gbG9jayBtZW50aW9uZWQgYWJvdmUgYXJlCisgKiBzZXNzaW9u LWxldmVsIGxvY2tzLCBiZWNhdXNlIGJvdGggbG9ja3MgY291bGQgYmUgYWNxdWlyZWQgb3V0c2lk ZSB0aGUKKyAqIHRyYW5zYWN0aW9uLCBhbmQgdGhlIHN0cmVhbSBsb2NrIGluIHRoZSBsZWFkZXIg bmVlZCB0byBwZXJzaXN0IGFjcm9zcworICogdHJhbnNhY3Rpb24gYm91bmRhcmllcyB1bnRpbCB0 aGUgZW5kIG9mIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqLworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0 LmgiCisjaW5jbHVkZSAibGlicHEvcHFtcS5oIgorI2luY2x1ZGUgInBnc3RhdC5oIgorI2luY2x1 ZGUgInBvc3RtYXN0ZXIvaW50ZXJydXB0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNh bGxhdW5jaGVyLmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oIgorI2lu Y2x1ZGUgInJlcGxpY2F0aW9uL29yaWdpbi5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtl cl9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9sbWdyLmgiCisjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2luY2x1ZGUgInV0aWxzL2lu dmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNj YWNoZS5oIgorCisjZGVmaW5lIFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDIDB4Nzg3Y2EwNjcK KworLyoKKyAqIERTTSBrZXlzIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXIuICBVbmxpa2Ugb3Ro ZXIgcGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBzaW5jZSB3ZSBkb24ndCBuZWVkIHRvIHdv cnJ5IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdpdGggcGxhbl9ub2RlX2lkIHdlCisgKiBj YW4gdXNlIHNtYWxsIGludGVnZXJzLgorICovCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0tFWV9T SEFSRUQJCTEKKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfS0VZX01RCQkJMgorI2RlZmluZSBQQVJB TExFTF9BUFBMWV9LRVlfRVJST1JfUVVFVUUJMworCisvKiBRdWV1ZSBzaXplIG9mIERTTSwgMTYg TUIgZm9yIG5vdy4gKi8KKyNkZWZpbmUgRFNNX1FVRVVFX1NJWkUJKDE2ICogMTAyNCAqIDEwMjQp CisKKy8qCisgKiBFcnJvciBxdWV1ZSBzaXplIG9mIERTTS4gSXQgaXMgZGVzaXJhYmxlIHRvIG1h a2UgaXQgbGFyZ2UgZW5vdWdoIHRoYXQgYQorICogdHlwaWNhbCBFcnJvclJlc3BvbnNlIGNhbiBi ZSBzZW50IHdpdGhvdXQgYmxvY2tpbmcuICBUaGF0IHdheSwgYSB3b3JrZXIgdGhhdAorICogZXJy b3JzIG91dCBjYW4gd3JpdGUgdGhlIHdob2xlIG1lc3NhZ2UgaW50byB0aGUgcXVldWUgYW5kIHRl cm1pbmF0ZSB3aXRob3V0CisgKiB3YWl0aW5nIGZvciB0aGUgdXNlciBiYWNrZW5kLgorICovCisj ZGVmaW5lIERTTV9FUlJPUl9RVUVVRV9TSVpFCQkJKDE2ICogMTAyNCkKKworLyoKKyAqIFRoZXJl IGFyZSB0aHJlZSBmaWVsZHMgaW4gZWFjaCBtZXNzYWdlIHJlY2VpdmVkIGJ5IHRoZSBwYXJhbGxl bCBhcHBseQorICogd29ya2VyOiBzdGFydF9sc24sIGVuZF9sc24gYW5kIHNlbmRfdGltZS4gQmVj YXVzZSB3ZSBoYXZlIHVwZGF0ZWQgdGhlc2UKKyAqIHN0YXRpc3RpY3MgaW4gdGhlIGxlYWRlciBh cHBseSB3b3JrZXIsIHdlIGNhbiBpZ25vcmUgdGhlc2UgZmllbGRzIGluIHRoZQorICogcGFyYWxs ZWwgYXBwbHkgd29ya2VyIChzZWUgZnVuY3Rpb24gTG9naWNhbFJlcEFwcGx5TG9vcCkuCisgKi8K KyNkZWZpbmUgU0laRV9TVEFUU19NRVNTQUdFICgyICogc2l6ZW9mKFhMb2dSZWNQdHIpICsgc2l6 ZW9mKFRpbWVzdGFtcFR6KSkKKworLyoKKyAqIFRoZSB0eXBlIG9mIHNlc3Npb24tbGV2ZWwgbG9j ayBvbiBhIHRyYW5zYWN0aW9uIGJlaW5nIGFwcGxpZWQgb24gYSBsb2dpY2FsCisgKiByZXBsaWNh dGlvbiBzdWJzY3JpYmVyLgorICovCisjZGVmaW5lIFBBUkFMTEVMX0FQUExZX0xPQ0tfU1RSRUFN CTAKKyNkZWZpbmUgUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNUCTEKKworLyoKKyAqIEhhc2ggdGFi bGUgZW50cnkgdG8gbWFwIHhpZCB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHN0YXRlLgor ICovCit0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkKK3sKKwlUcmFuc2Fj dGlvbklkIHhpZDsJCQkvKiBIYXNoIGtleSAtLSBtdXN0IGJlIGZpcnN0ICovCisJUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvOworfSBQYXJhbGxlbEFwcGx5V29ya2VyRW50cnk7CisKKy8q IFBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgaGFzaCB0YWJsZSAoaW5pdGlhbGl6ZWQgb24gZmlyc3Qg dXNlKS4gKi8KK3N0YXRpYyBIVEFCICpQYXJhbGxlbEFwcGx5V29ya2Vyc0hhc2ggPSBOVUxMOwor CisvKgorICogQSBsaXN0IHRvIG1haW50YWluIHRoZSBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29y a2Vycy4gVGhlIGluZm9ybWF0aW9uIGZvcgorICogdGhlIG5ldyB3b3JrZXIgaXMgYWRkZWQgdG8g dGhlIGxpc3QgYWZ0ZXIgc3VjY2Vzc2Z1bGx5IGxhdW5jaGluZyBpdC4gVGhlCisgKiBsaXN0IGVu dHJ5IGlzIHJlbW92ZWQgYXQgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rpb24gaWYgdGhlcmUgYXJl IGFscmVhZHkKKyAqIGVub3VnaCB3b3JrZXJzIGluIHRoZSB3b3JrZXIgcG9vbC4gRm9yIG1vcmUg aW5mb3JtYXRpb24gYWJvdXQgdGhlIHdvcmtlcgorICogcG9vbCwgc2VlIGNvbW1lbnRzIGF0b3Ag d29ya2VyLmMuCisgKi8KK3N0YXRpYyBMaXN0ICpQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QgPSBO SUw7CisKKy8qCisgKiBJbmZvcm1hdGlvbiBzaGFyZWQgYmV0d2VlbiBsZWFkZXIgYXBwbHkgd29y a2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisgKi8KK1BhcmFsbGVsQXBwbHlXb3JrZXJT aGFyZWQgKk15UGFyYWxsZWxTaGFyZWQgPSBOVUxMOworCisvKgorICogSXMgdGhlcmUgYSBtZXNz YWdlIHNlbnQgYnkgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgdGhhdCB0aGUgbGVhZGVyIGFwcGx5 CisgKiB3b3JrZXIgbmVlZHMgdG8gcmVjZWl2ZT8KKyAqLwordm9sYXRpbGUgc2lnX2F0b21pY190 IFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IGZhbHNlOworCisvKgorICogQ2FjaGUgdGhl IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpbmZvcm1hdGlvbiByZXF1aXJlZCBmb3IgYXBwbHlpbmcg dGhlCisgKiBjdXJyZW50IHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gSXQgaXMgdXNlZCB0byBzYXZl IHRoZSBjb3N0IG9mIHNlYXJjaGluZyB0aGUKKyAqIGhhc2ggdGFibGUgd2hlbiBhcHBseWluZyB0 aGUgY2hhbmdlcyBiZXR3ZWVuIFNUUkVBTV9TVEFSVCBhbmQgU1RSRUFNX1NUT1AuCisgKi8KK1Bh cmFsbGVsQXBwbHlXb3JrZXJJbmZvICpzdHJlYW1fYXBwbHlfd29ya2VyID0gTlVMTDsKKworLyog QSBsaXN0IHRvIG1haW50YWluIHN1YnRyYW5zYWN0aW9ucywgaWYgYW55LiAqLworTGlzdAkgICAq c3VieGFjdGxpc3QgPSBOSUw7CisKK3N0YXRpYyBib29sIHBhX2Nhbl9zdGFydChUcmFuc2FjdGlv bklkIHhpZCk7CitzdGF0aWMgYm9vbCBwYV9zZXR1cF9kc20oUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKndpbmZvKTsKK3N0YXRpYyBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqcGFfaW5pdF9hbmRf bGF1bmNoX3dvcmtlcih2b2lkKTsKK3N0YXRpYyBQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqcGFf Z2V0X2F2YWlsYWJsZV93b3JrZXIodm9pZCk7CitzdGF0aWMgdm9pZCBwYV9mcmVlX3dvcmtlcl9p bmZvKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyk7CitzdGF0aWMgUGFyYWxsZWxUcmFu c1N0YXRlIHBhX2dldF94YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKndzaGFy ZWQpOworCisvKgorICogUmV0dXJucyB0cnVlIGlmIGl0IGlzIE9LIHRvIHN0YXJ0IGEgcGFyYWxs ZWwgYXBwbHkgd29ya2VyLCBmYWxzZSBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBib29sCitwYV9j YW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCit7CisJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1Zh bGlkKHhpZCkpOworCisJLyoKKwkgKiBEb24ndCBzdGFydCBhIG5ldyBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgaWYgdGhlIHN1YnNjcmlwdGlvbiBpcyBub3QKKwkgKiB1c2luZyBwYXJhbGxlbCBzdHJl YW1pbmcgbW9kZSwgb3IgaWYgdGhlIHB1Ymxpc2hlciBkb2VzIG5vdCBzdXBwb3J0CisJICogcGFy YWxsZWwgYXBwbHkuCisJICovCisJaWYgKCFNeUxvZ2ljYWxSZXBXb3JrZXItPnBhcmFsbGVsX2Fw cGx5KQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBPbmx5IGxlYWRlciBhcHBseSB3b3JrZXJzIGNh biBzdGFydCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzLiAqLworCWlmICghYW1fbGVhZGVyX2FwcGx5 X3dvcmtlcigpKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIERvbid0IHN0YXJ0IGEgbmV3 IHBhcmFsbGVsIHdvcmtlciBpZiB1c2VyIGhhcyBzZXQgc2tpcGxzbiBhcyBpdCdzCisJICogcG9z c2libGUgdGhhdCB1c2VyIHdhbnQgdG8gc2tpcCB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLiBG b3IKKwkgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHdlIG5lZWQgdG8gc3BpbGwgdGhlIHRyYW5z YWN0aW9uIHRvIGRpc2sgc28gdGhhdAorCSAqIHdlIGNhbiBnZXQgdGhlIGxhc3QgTFNOIG9mIHRo ZSB0cmFuc2FjdGlvbiB0byBqdWRnZSB3aGV0aGVyIHRvIHNraXAKKwkgKiBiZWZvcmUgc3RhcnRp bmcgdG8gYXBwbHkgdGhlIGNoYW5nZS4KKwkgKi8KKwlpZiAoIVhMb2dSZWNQdHJJc0ludmFsaWQo TXlTdWJzY3JpcHRpb24tPnNraXBsc24pKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIEZv ciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgYXJlIGJlaW5nIGFwcGxpZWQgdXNpbmcgYSBw YXJhbGxlbAorCSAqIGFwcGx5IHdvcmtlciwgd2UgY2Fubm90IGRlY2lkZSB3aGV0aGVyIHRvIGFw cGx5IHRoZSBjaGFuZ2UgZm9yIGEKKwkgKiByZWxhdGlvbiB0aGF0IGlzIG5vdCBpbiB0aGUgUkVB RFkgc3RhdGUgKHNlZQorCSAqIHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwpIGFzIHdlIHdv bid0IGtub3cgcmVtb3RlX2ZpbmFsX2xzbiBieSB0aGF0CisJICogdGltZS4gU28sIHdlIGRvbid0 IHN0YXJ0IHRoZSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGluIHRoaXMgY2FzZS4KKwkgKi8K KwlpZiAoIUFsbFRhYmxlc3luY3NSZWFkeSgpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlyZXR1cm4g dHJ1ZTsKK30KKworLyoKKyAqIEdldCBhbiBhdmFpbGFibGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy IGZyb20gdGhlIHdvcmtlciBwb29sLgorICovCitzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKgorcGFfZ2V0X2F2YWlsYWJsZV93b3JrZXIodm9pZCkKK3sKKwlMaXN0CSAgICphY3RpdmVf d29ya2VycyA9IGxpc3RfY29weShQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QpOworCUxpc3RDZWxs ICAgKmxjOworCisJZm9yZWFjaChsYywgYWN0aXZlX3dvcmtlcnMpCisJeworCQlQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqd2luZm87CisKKwkJd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKikgbGZpcnN0KGxjKTsKKworCQkvKgorCQkgKiBXZSBmaXJzdCB0cnkgdG8gZnJlZSB0aGUg d29ya2VyIHRvIGltcHJvdmUgb3VyIGNoYW5jZXMgb2YgZmluZGluZworCQkgKiBvbmUgdGhhdCBp cyBub3QgaW4gdXNlLiBOb3JtYWxseSwgd2UgZnJlZSB0aGUgd29ya2VyIGFmdGVyIGVuc3VyaW5n CisJCSAqIHRoYXQgdGhlIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBieSB0aGUgcGFyYWxsZWwg d29ya2VyIGJ1dCBmb3IKKwkJICogcm9sbGJhY2tzLCB3ZSBkb24ndCB3YWl0IGZvciB0aGUgdHJh bnNhY3Rpb24gdG8gZmluaXNoIHNvIGNhbid0IGZyZWUKKwkJICogdGhlIHdvcmtlciBpbmZvcm1h dGlvbiBpbW1lZGlhdGVseS4KKwkJICovCisJCWlmIChwYV9mcmVlX3dvcmtlcih3aW5mbywgd2lu Zm8tPnNoYXJlZC0+eGlkKSkKKwkJCWNvbnRpbnVlOworCisJCWlmICghd2luZm8tPmluX3VzZSkK KwkJCXJldHVybiB3aW5mbzsKKwl9CisKKwlyZXR1cm4gTlVMTDsKK30KKworLyoKKyAqIEFsbG9j YXRlIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHRoYXQgd2lsbCBiZSB1c2VkIGZvciB0aGUgc3Bl Y2lmaWVkIHhpZC4KKyAqCisgKiBXZSBmaXJzdCB0cnkgdG8gZ2V0IGFuIGF2YWlsYWJsZSB3b3Jr ZXIgZnJvbSB0aGUgcG9vbCwgaWYgYW55IGFuZCB0aGVuIHRyeQorICogdG8gbGF1bmNoIGEgbmV3 IHdvcmtlci4gT24gc3VjY2Vzc2Z1bCBhbGxvY2F0aW9uLCByZW1lbWJlciB0aGUgd29ya2VyCisg KiBpbmZvcm1hdGlvbiBpbiB0aGUgaGFzaCB0YWJsZSBzbyB0aGF0IHdlIGNhbiBnZXQgaXQgbGF0 ZXIgZm9yIHByb2Nlc3NpbmcgdGhlCisgKiBzdHJlYW1pbmcgY2hhbmdlcy4KKyAqLwordm9pZAor cGFfYWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWJvb2wJCWZvdW5kOwor CVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbyA9IE5VTEw7CisJUGFyYWxsZWxBcHBseVdv cmtlckVudHJ5ICplbnRyeTsKKworCWlmICghcGFfY2FuX3N0YXJ0KHhpZCkpCisJCXJldHVybjsK KworCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZSBhcHBseSB3b3JrZXJzIGhhc2h0 YWJsZS4gKi8KKwlpZiAoIVBhcmFsbGVsQXBwbHlXb3JrZXJzSGFzaCkKKwl7CisJCUhBU0hDVEwJ CWN0bDsKKworCQlNZW1TZXQoJmN0bCwgMCwgc2l6ZW9mKGN0bCkpOworCQljdGwua2V5c2l6ZSA9 IHNpemVvZihUcmFuc2FjdGlvbklkKTsKKwkJY3RsLmVudHJ5c2l6ZSA9IHNpemVvZihQYXJhbGxl bEFwcGx5V29ya2VyRW50cnkpOworCQljdGwuaGN4dCA9IEFwcGx5Q29udGV4dDsKKworCQlQYXJh bGxlbEFwcGx5V29ya2Vyc0hhc2ggPSBoYXNoX2NyZWF0ZSgibG9naWNhbCByZXBsaWNhdGlvbiBw YXJhbGxlbCBhcHBseSB3b3JrZXJzIGhhc2giLAorCQkJCQkJCQkJCQkgICAxNiwgJmN0bCwKKwkJ CQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJfQor CisJLyogRmlyc3QsIHRyeSB0byBnZXQgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZnJvbSB0aGUg cG9vbC4gKi8KKwl3aW5mbyA9IHBhX2dldF9hdmFpbGFibGVfd29ya2VyKCk7CisKKwlpZiAoIXdp bmZvKQorCXsKKwkJLyogVHJ5IHRvIHN0YXJ0IGEgbmV3IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4g Ki8KKwkJd2luZm8gPSBwYV9pbml0X2FuZF9sYXVuY2hfd29ya2VyKCk7CisKKwkJaWYgKCF3aW5m bykKKwkJCXJldHVybjsKKwl9CisKKwkvKiBDcmVhdGUgYW4gZW50cnkgZm9yIHRoZSByZXF1ZXN0 ZWQgdHJhbnNhY3Rpb24uICovCisJZW50cnkgPSBoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5V29y a2Vyc0hhc2gsICZ4aWQsIEhBU0hfRU5URVIsICZmb3VuZCk7CisJaWYgKGZvdW5kKQorCQllbG9n KEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKworCS8qIEluaXRpYWxpemUgc2hhcmVk IG1lbW9yeSBhcmVhLiAqLworCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgp OworCXdpbmZvLT5zaGFyZWQtPnhhY3Rfc3RhdGUgPSBQQVJBTExFTF9UUkFOU19VTktOT1dOOwor CXdpbmZvLT5zaGFyZWQtPnhpZCA9IHhpZDsKKwlTcGluTG9ja1JlbGVhc2UoJndpbmZvLT5zaGFy ZWQtPm11dGV4KTsKKworCXdpbmZvLT5pbl91c2UgPSB0cnVlOworCWVudHJ5LT53aW5mbyA9IHdp bmZvOworCWVudHJ5LT54aWQgPSB4aWQ7Cit9CisKKy8qCisgKiBGaW5kIHRoZSBhc3NpZ25lZCB3 b3JrZXIgZm9yIHRoZSBnaXZlbiB0cmFuc2FjdGlvbiwgaWYgYW55LgorICovCitQYXJhbGxlbEFw cGx5V29ya2VySW5mbyAqCitwYV9maW5kX3dvcmtlcihUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwli b29sCQlmb3VuZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VyRW50cnkgKmVudHJ5OworCisJaWYgKCFU cmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCQlyZXR1cm4gTlVMTDsKKworCWlmICghUGFyYWxs ZWxBcHBseVdvcmtlcnNIYXNoKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIFJldHVybiB0aGUgY2Fj aGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpZiB2YWxpZC4gKi8KKwlpZiAoc3RyZWFtX2FwcGx5 X3dvcmtlcikKKwkJcmV0dXJuIHN0cmVhbV9hcHBseV93b3JrZXI7CisKKwkvKiBGaW5kIGFuIGVu dHJ5IGZvciB0aGUgcmVxdWVzdGVkIHRyYW5zYWN0aW9uLiAqLworCWVudHJ5ID0gaGFzaF9zZWFy Y2goUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX0ZJTkQsICZmb3VuZCk7CisJ aWYgKGZvdW5kKQorCXsKKwkJLyogVGhlIHdvcmtlciBtdXN0IG5vdCBoYXZlIGV4aXRlZC4gICov CisJCUFzc2VydChlbnRyeS0+d2luZm8tPmluX3VzZSk7CisJCXJldHVybiBlbnRyeS0+d2luZm87 CisJfQorCisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBNYWtlcyB0aGUgd29ya2VyIGF2YWls YWJsZSBmb3IgcmV1c2UuCisgKgorICogVGhpcyByZW1vdmVzIHRoZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXIgZW50cnkgZnJvbSB0aGUgaGFzaCB0YWJsZSBzbyB0aGF0IGl0CisgKiBjYW4ndCBiZSB1 c2VkLiBJZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMgaW4gdGhlIHBvb2wsIGl0IHN0b3BzIHRo ZSB3b3JrZXIKKyAqIGFuZCBmcmVlcyB0aGUgY29ycmVzcG9uZGluZyBpbmZvLiBPdGhlcndpc2Ug aXQganVzdCBtYXJrcyB0aGUgd29ya2VyIGFzCisgKiBhdmFpbGFibGUgZm9yIHJldXNlLgorICoK KyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3b3JrZXIgcG9vbCwgc2VlIGNvbW1l bnRzIGF0b3Agd29ya2VyLmMuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHRoZSB3b3JrZXIgaXMg c3RvcHBlZCwgZmFsc2Ugb3RoZXJ3aXNlLgorICovCitib29sCitwYV9mcmVlX3dvcmtlcihQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8sIFRyYW5zYWN0aW9uSWQgeGlkKQoreworCWludAkJ CW5hcHBseXdvcmtlcnM7CisKKwlBc3NlcnQoIWFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKTsK KworCS8qIEZyZWUgdGhlIHdvcmtlciBpbmZvcm1hdGlvbiBpZiB0aGUgd29ya2VyIGV4aXRlZCBj bGVhbmx5LiAqLworCWlmICghd2luZm8tPmVycm9yX21xX2hhbmRsZSkKKwl7CisJCXBhX2ZyZWVf d29ya2VyX2luZm8od2luZm8pOworCisJCWlmICh3aW5mby0+aW5fdXNlICYmCisJCQkhaGFzaF9z ZWFyY2goUGFyYWxsZWxBcHBseVdvcmtlcnNIYXNoLCAmeGlkLCBIQVNIX1JFTU9WRSwgTlVMTCkp CisJCQllbG9nKEVSUk9SLCAiaGFzaCB0YWJsZSBjb3JydXB0ZWQiKTsKKworCQlyZXR1cm4gdHJ1 ZTsKKwl9CisKKwkvKiBXb3JrZXIgaXMgYWxyZWFkeSBhdmFpbGFibGUgZm9yIHJldXNlLiAqLwor CWlmICghd2luZm8tPmluX3VzZSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBEb24ndCBm cmVlIHRoZSB3b3JrZXIgaWYgdGhlIHRyYW5zYWN0aW9uIGluIHRoZSB3b3JrZXIgaXMgc3RpbGwg aW4KKwkgKiBwcm9ncmVzcy4gVGhpcyBjb3VsZCBoYXBwZW4gYXMgd2UgZG9uJ3Qgd2FpdCBmb3Ig dGhlIGFwcGx5IG9mIHJvbGxiYWNrCisJICogdG8gZmluaXNoLgorCSAqLworCWlmIChwYV9nZXRf eGFjdF9zdGF0ZSh3aW5mby0+c2hhcmVkKSAhPSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCkKKwkJ cmV0dXJuIGZhbHNlOworCisJaWYgKCFoYXNoX3NlYXJjaChQYXJhbGxlbEFwcGx5V29ya2Vyc0hh c2gsICZ4aWQsIEhBU0hfUkVNT1ZFLCBOVUxMKSkKKwkJZWxvZyhFUlJPUiwgImhhc2ggdGFibGUg Y29ycnVwdGVkIik7CisKKwlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19T SEFSRUQpOworCW5hcHBseXdvcmtlcnMgPSBsb2dpY2FscmVwX3BhX3dvcmtlcl9jb3VudChNeUxv Z2ljYWxSZXBXb3JrZXItPnN1YmlkKTsKKwlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJM b2NrKTsKKworCS8qIFN0b3AgdGhlIHdvcmtlciBpZiB0aGVyZSBhcmUgZW5vdWdoIHdvcmtlcnMg aW4gdGhlIHBvb2wuICovCisJaWYgKG5hcHBseXdvcmtlcnMgPiAobWF4X3BhcmFsbGVsX2FwcGx5 X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiAvIDIpKQorCXsKKwkJaW50CQkJc2xvdF9ubzsKKwkJ dWludDE2CQlnZW5lcmF0aW9uOworCisJCVNwaW5Mb2NrQWNxdWlyZSgmd2luZm8tPnNoYXJlZC0+ bXV0ZXgpOworCQlnZW5lcmF0aW9uID0gd2luZm8tPnNoYXJlZC0+bG9naWNhbHJlcF93b3JrZXJf Z2VuZXJhdGlvbjsKKwkJc2xvdF9ubyA9IHdpbmZvLT5zaGFyZWQtPmxvZ2ljYWxyZXBfd29ya2Vy X3Nsb3Rfbm87CisJCVNwaW5Mb2NrUmVsZWFzZSgmd2luZm8tPnNoYXJlZC0+bXV0ZXgpOworCisJ CWxvZ2ljYWxyZXBfcGFfd29ya2VyX3N0b3Aoc2xvdF9ubywgZ2VuZXJhdGlvbik7CisKKwkJcGFf ZnJlZV93b3JrZXJfaW5mbyh3aW5mbyk7CisKKwkJcmV0dXJuIHRydWU7CisJfQorCisJd2luZm8t PmluX3VzZSA9IGZhbHNlOworCisJcmV0dXJuIGZhbHNlOworfQorCisvKiBGcmVlIHRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgaW5mb3JtYXRpb24uICovCitzdGF0aWMgdm9pZAorcGFfZnJlZV93 b3JrZXJfaW5mbyhQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8pCit7CisJQXNzZXJ0KHdp bmZvKTsKKworCWlmICh3aW5mby0+bXFfaGFuZGxlKQorCQlzaG1fbXFfZGV0YWNoKHdpbmZvLT5t cV9oYW5kbGUpOworCisJaWYgKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUpCisJCXNobV9tcV9kZXRh Y2god2luZm8tPmVycm9yX21xX2hhbmRsZSk7CisKKwlpZiAod2luZm8tPmRzbV9zZWcpCisJCWRz bV9kZXRhY2god2luZm8tPmRzbV9zZWcpOworCisJLyoKKwkgKiBFbnN1cmUgdGhpcyB3b3JrZXIg aW5mb3JtYXRpb24gd29uJ3QgYmUgcmV1c2VkIGR1cmluZyB3b3JrZXIgYWxsb2NhdGlvbi4KKwkg Ki8KKwlQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QgPSBsaXN0X2RlbGV0ZV9wdHIoUGFyYWxsZWxB cHBseVdvcmtlcnNMaXN0LAorCQkJCQkJCQkJCQkgICB3aW5mbyk7CisKKwlwZnJlZSh3aW5mbyk7 Cit9CisKKy8qCisgKiBJbnRlcnJ1cHQgaGFuZGxlciBmb3IgbWFpbiBsb29wcyBvZiBwYXJhbGxl bCBhcHBseSB3b3JrZXIuCisgKi8KK3N0YXRpYyB2b2lkCitQcm9jZXNzUGFyYWxsZWxBcHBseUlu dGVycnVwdHModm9pZCkKK3sKKwlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJaWYgKFNodXRk b3duUmVxdWVzdFBlbmRpbmcpCisJeworCQllcmVwb3J0KExPRywKKwkJCQkoZXJybXNnKCJsb2dp Y2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwi JXNcIiBoYXMgZmluaXNoZWQiLAorCQkJCSBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKworCQlh cHBseV93b3JrZXJfY2xlYW5fZXhpdChmYWxzZSk7CisJfQorCisJaWYgKENvbmZpZ1JlbG9hZFBl bmRpbmcpCisJeworCQlDb25maWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CisJCVByb2Nlc3NDb25m aWdGaWxlKFBHQ19TSUdIVVApOworCX0KK30KKworLyogUGFyYWxsZWwgYXBwbHkgd29ya2VyIG1h aW4gbG9vcC4gKi8KK3N0YXRpYyB2b2lkCitMb2dpY2FsUGFyYWxsZWxBcHBseUxvb3Aoc2htX21x X2hhbmRsZSAqbXFoKQoreworCXNobV9tcV9yZXN1bHQgc2htcV9yZXM7CisJRXJyb3JDb250ZXh0 Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQgPSBDdXJyZW50TWVt b3J5Q29udGV4dDsKKworCS8qCisJICogSW5pdCB0aGUgQXBwbHlNZXNzYWdlQ29udGV4dCB3aGlj aCB3ZSBjbGVhbiB1cCBhZnRlciBlYWNoIHJlcGxpY2F0aW9uCisJICogcHJvdG9jb2wgbWVzc2Fn ZS4KKwkgKi8KKwlBcHBseU1lc3NhZ2VDb250ZXh0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRlKEFw cGx5Q29udGV4dCwKKwkJCQkJCQkJCQkJCSJBcHBseU1lc3NhZ2VDb250ZXh0IiwKKwkJCQkJCQkJ CQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJLyoKKwkgKiBQdXNoIGFwcGx5IGVycm9y IGNvbnRleHQgY2FsbGJhY2suIEZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aGlsZSBhcHBseWluZwor CSAqIGEgY2hhbmdlLgorCSAqLworCWVycmNhbGxiYWNrLmNhbGxiYWNrID0gYXBwbHlfZXJyb3Jf Y2FsbGJhY2s7CisJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9jb250ZXh0X3N0YWNrOwor CWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisKKwlmb3IgKDs7KQorCXsKKwkJ dm9pZAkgICAqZGF0YTsKKwkJU2l6ZQkJbGVuOworCisJCVByb2Nlc3NQYXJhbGxlbEFwcGx5SW50 ZXJydXB0cygpOworCisJCS8qIEVuc3VyZSB3ZSBhcmUgcmVhZGluZyB0aGUgZGF0YSBpbnRvIG91 ciBtZW1vcnkgY29udGV4dC4gKi8KKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5TWVzc2Fn ZUNvbnRleHQpOworCisJCXNobXFfcmVzID0gc2htX21xX3JlY2VpdmUobXFoLCAmbGVuLCAmZGF0 YSwgdHJ1ZSk7CisKKwkJaWYgKHNobXFfcmVzID09IFNITV9NUV9TVUNDRVNTKQorCQl7CisJCQlT dHJpbmdJbmZvRGF0YSBzOworCQkJaW50CQkJYzsKKworCQkJaWYgKGxlbiA9PSAwKQorCQkJCWJy ZWFrOworCisJCQlzLmN1cnNvciA9IDA7CisJCQlzLm1heGxlbiA9IC0xOworCQkJcy5kYXRhID0g KGNoYXIgKikgZGF0YTsKKwkJCXMubGVuID0gbGVuOworCisJCQkvKgorCQkJICogVGhlIGZpcnN0 IGJ5dGUgb2YgbWVzc2FnZXMgc2VudCBmcm9tIGxlYWRlciBhcHBseSB3b3JrZXIgdG8KKwkJCSAq IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgY2FuIG9ubHkgYmUgJ3cnLgorCQkJICovCisJCQljID0g cHFfZ2V0bXNnYnl0ZSgmcyk7CisJCQlpZiAoYyAhPSAndycpCisJCQkJZWxvZyhFUlJPUiwgInVu ZXhwZWN0ZWQgbWVzc2FnZSBcIiVjXCIiLCBjKTsKKworCQkJLyoKKwkJCSAqIElnbm9yZSBzdGF0 aXN0aWNzIGZpZWxkcyB0aGF0IGhhdmUgYmVlbiB1cGRhdGVkIGJ5IHRoZSBsZWFkZXIKKwkJCSAq IGFwcGx5IHdvcmtlci4KKwkJCSAqLworCQkJcy5jdXJzb3IgKz0gU0laRV9TVEFUU19NRVNTQUdF OworCisJCQlhcHBseV9kaXNwYXRjaCgmcyk7CisKKwkJCU1lbW9yeUNvbnRleHRSZXNldChBcHBs eU1lc3NhZ2VDb250ZXh0KTsKKwkJfQorCQllbHNlIGlmIChzaG1xX3JlcyA9PSBTSE1fTVFfV09V TERfQkxPQ0spCisJCXsKKwkJCWludAkJCXJjOworCisJCQlpZiAoIWluX3N0cmVhbWVkX3RyYW5z YWN0aW9uKQorCQkJeworCQkJCS8qCisJCQkJICogSWYgd2UgZGlkbid0IGdldCBhbnkgdHJhbnNh Y3Rpb25zIGZvciBhIHdoaWxlIHRoZXJlIG1pZ2h0CisJCQkJICogYmUgdW5jb25zdW1lZCBpbnZh bGlkYXRpb24gbWVzc2FnZXMgaW4gdGhlIHF1ZXVlLCBjb25zdW1lCisJCQkJICogdGhlbSBub3cu CisJCQkJICovCisJCQkJQWNjZXB0SW52YWxpZGF0aW9uTWVzc2FnZXMoKTsKKwkJCQltYXliZV9y ZXJlYWRfc3Vic2NyaXB0aW9uKCk7CisJCQl9CisKKwkJCU1lbW9yeUNvbnRleHRSZXNldChBcHBs eU1lc3NhZ2VDb250ZXh0KTsKKwkJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCisJ CQkvKiBXYWl0IGZvciBtb3JlIHdvcmsuICovCisJCQlyYyA9IFdhaXRMYXRjaChNeUxhdGNoLAor CQkJCQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgs CisJCQkJCQkgICAxMDAwTCwKKwkJCQkJCSAgIFdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9B UFBMWV9NQUlOKTsKKworCQkJaWYgKHJjICYgV0xfTEFUQ0hfU0VUKQorCQkJCVJlc2V0TGF0Y2go TXlMYXRjaCk7CisJCX0KKwkJZWxzZQorCQl7CisJCQlBc3NlcnQoc2htcV9yZXMgPT0gU0hNX01R X0RFVEFDSEVEKTsKKworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9P QkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2coImxvc3QgY29u bmVjdGlvbiB0byB0aGUgbG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIiKSkpOworCQl9 CisJfQorCisJLyogUG9wIHRoZSBlcnJvciBjb250ZXh0IHN0YWNrLiAqLworCWVycm9yX2NvbnRl eHRfc3RhY2sgPSBlcnJjYWxsYmFjay5wcmV2aW91czsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRjeHQpOworfQorCisvKgorICogTWFrZSBzdXJlIHRoZSBsZWFkZXIgYXBwbHkgd29ya2Vy IHRyaWVzIHRvIHJlYWQgZnJvbSBvdXIgZXJyb3IgcXVldWUgb25lIG1vcmUKKyAqIHRpbWUuIFRo aXMgZ3VhcmRzIGFnYWluc3QgdGhlIGNhc2Ugd2hlcmUgd2UgZXhpdCB1bmNsZWFubHkgd2l0aG91 dCBzZW5kaW5nCisgKiBhbiBFcnJvclJlc3BvbnNlLCBmb3IgZXhhbXBsZSBiZWNhdXNlIHNvbWUg Y29kZSBjYWxscyBwcm9jX2V4aXQgZGlyZWN0bHkuCisgKi8KK3N0YXRpYyB2b2lkCitwYV9zaHV0 ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQoreworCVNlbmRQcm9jU2lnbmFsKE15TG9naWNhbFJl cFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCwKKwkJCQkgICBQUk9DU0lHX1BBUkFMTEVMX0FQUExZ X01FU1NBR0UsCisJCQkJICAgSW52YWxpZEJhY2tlbmRJZCk7CisKKwlkc21fZGV0YWNoKChkc21f c2VnbWVudCAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKSk7Cit9CisKKy8qCisgKiBQYXJhbGxlbCBh cHBseSB3b3JrZXIgZW50cnkgcG9pbnQuCisgKi8KK3ZvaWQKK1BhcmFsbGVsQXBwbHlXb3JrZXJN YWluKERhdHVtIG1haW5fYXJnKQoreworCVBhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJl ZDsKKwlkc21faGFuZGxlCWhhbmRsZTsKKwlkc21fc2VnbWVudCAqc2VnOworCXNobV90b2MgICAg KnRvYzsKKwlzaG1fbXEJICAgKm1xOworCXNobV9tcV9oYW5kbGUgKm1xaDsKKwlzaG1fbXFfaGFu ZGxlICplcnJvcl9tcWg7CisJUmVwT3JpZ2luSWQgb3JpZ2luaWQ7CisJaW50CQkJd29ya2VyX3Ns b3QgPSBEYXR1bUdldEludDMyKG1haW5fYXJnKTsKKwljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRB TEVOXTsKKworCS8qIFNldHVwIHNpZ25hbCBoYW5kbGluZy4gKi8KKwlwcXNpZ25hbChTSUdIVVAs IFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOworCXBxc2lnbmFsKFNJR0lOVCwgU2lnbmFs SGFuZGxlckZvclNodXRkb3duUmVxdWVzdCk7CisJcHFzaWduYWwoU0lHVEVSTSwgZGllKTsKKwlC YWNrZ3JvdW5kV29ya2VyVW5ibG9ja1NpZ25hbHMoKTsKKworCS8qCisJICogQXR0YWNoIHRvIHRo ZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBmb3IgdGhlIHBhcmFsbGVsIGFwcGx5LCBh bmQKKwkgKiBmaW5kIGl0cyB0YWJsZSBvZiBjb250ZW50cy4KKwkgKgorCSAqIExpa2UgcGFyYWxs ZWwgcXVlcnksIHdlIGRvbid0IG5lZWQgcmVzb3VyY2Ugb3duZXIgYnkgdGhpcyB0aW1lLiBTZWUK KwkgKiBQYXJhbGxlbFdvcmtlck1haW4uCisJICovCisJbWVtY3B5KCZoYW5kbGUsIE15Qmd3b3Jr ZXJFbnRyeS0+Ymd3X2V4dHJhLCBzaXplb2YoZHNtX2hhbmRsZSkpOworCXNlZyA9IGRzbV9hdHRh Y2goaGFuZGxlKTsKKwlpZiAoIXNlZykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShF UlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJybXNnKCJ1 bmFibGUgdG8gbWFwIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50IikpKTsKKworCXRvYyA9 IHNobV90b2NfYXR0YWNoKFBHX0xPR0lDQUxfQVBQTFlfU0hNX01BR0lDLCBkc21fc2VnbWVudF9h ZGRyZXNzKHNlZykpOworCWlmICghdG9jKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2co ImJhZCBtYWdpYyBudW1iZXIgaW4gZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQiKSkpOwor CisJYmVmb3JlX3NobWVtX2V4aXQocGFfc2h1dGRvd24sIFBvaW50ZXJHZXREYXR1bShzZWcpKTsK KworCS8qIExvb2sgdXAgdGhlIHNoYXJlZCBpbmZvcm1hdGlvbi4gKi8KKwlzaGFyZWQgPSBzaG1f dG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9TSEFSRUQsIGZhbHNlKTsKKwlNeVBh cmFsbGVsU2hhcmVkID0gc2hhcmVkOworCisJLyoKKwkgKiBBdHRhY2ggdG8gdGhlIG1lc3NhZ2Ug cXVldWUuCisJICovCisJbXEgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIFBBUkFMTEVMX0FQUExZX0tF WV9NUSwgZmFsc2UpOworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEsIE15UHJvYyk7CisJbXFoID0g c2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qCisJICogUHJpbWFyeSBpbml0aWFs aXphdGlvbiBpcyBjb21wbGV0ZS4gTm93LCB3ZSBjYW4gYXR0YWNoIHRvIG91ciBzbG90LgorCSAq IFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgZG9lcyBub3Qg d3JpdGUgZGF0YSB0bworCSAqIHRoZSB1bmluaXRpYWxpemVkIG1lbW9yeSBxdWV1ZS4KKwkgKi8K Kwlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2VyX3Nsb3QpOworCisJU3BpbkxvY2tBY3F1 aXJlKCZNeVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7CisJTXlQYXJhbGxlbFNoYXJlZC0+bG9naWNh bHJlcF93b3JrZXJfZ2VuZXJhdGlvbiA9IE15TG9naWNhbFJlcFdvcmtlci0+Z2VuZXJhdGlvbjsK KwlNeVBhcmFsbGVsU2hhcmVkLT5sb2dpY2FscmVwX3dvcmtlcl9zbG90X25vID0gd29ya2VyX3Ns b3Q7CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBhcmFsbGVsU2hhcmVkLT5tdXRleCk7CisKKwkvKgor CSAqIEF0dGFjaCB0byB0aGUgZXJyb3IgcXVldWUuCisJICovCisJbXEgPSBzaG1fdG9jX2xvb2t1 cCh0b2MsIFBBUkFMTEVMX0FQUExZX0tFWV9FUlJPUl9RVUVVRSwgZmFsc2UpOworCXNobV9tcV9z ZXRfc2VuZGVyKG1xLCBNeVByb2MpOworCWVycm9yX21xaCA9IHNobV9tcV9hdHRhY2gobXEsIHNl ZywgTlVMTCk7CisKKwlwcV9yZWRpcmVjdF90b19zaG1fbXEoc2VnLCBlcnJvcl9tcWgpOworCXBx X3NldF9wYXJhbGxlbF9sZWFkZXIoTXlMb2dpY2FsUmVwV29ya2VyLT5hcHBseV9sZWFkZXJfcGlk LAorCQkJCQkJICAgSW52YWxpZEJhY2tlbmRJZCk7CisKKwlNeUxvZ2ljYWxSZXBXb3JrZXItPmxh c3Rfc2VuZF90aW1lID0gTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3JlY3ZfdGltZSA9CisJCU15 TG9naWNhbFJlcFdvcmtlci0+cmVwbHlfdGltZSA9IDA7CisKKwlJbml0aWFsaXplQXBwbHlXb3Jr ZXIoKTsKKworCS8qIFNldHVwIHJlcGxpY2F0aW9uIG9yaWdpbiB0cmFja2luZy4gKi8KKwlTdGFy dFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCVJlcGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxS ZXAoTXlTdWJzY3JpcHRpb24tPm9pZCwgSW52YWxpZE9pZCwKKwkJCQkJCQkJCSAgIG9yaWdpbm5h bWUsIHNpemVvZihvcmlnaW5uYW1lKSk7CisJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2J5X25hbWUo b3JpZ2lubmFtZSwgdHJ1ZSk7CisJaWYgKCFPaWRJc1ZhbGlkKG9yaWdpbmlkKSkKKwkJb3JpZ2lu aWQgPSByZXBsb3JpZ2luX2NyZWF0ZShvcmlnaW5uYW1lKTsKKworCS8qCisJICogVGhlIHBhcmFs bGVsIGFwcGx5IHdvcmtlciBkb2Vzbid0IG5lZWQgdG8gbW9ub3BvbGl6ZSB0aGlzIHJlcGxpY2F0 aW9uCisJICogb3JpZ2luIHdoaWNoIHdhcyBhbHJlYWR5IGFjcXVpcmVkIGJ5IGl0cyBsZWFkZXIg cHJvY2Vzcy4KKwkgKi8KKwlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIE15TG9n aWNhbFJlcFdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCk7CisJcmVwbG9yaWdpbl9zZXNzaW9uX29y aWdpbiA9IG9yaWdpbmlkOworCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJLyoKKwkg KiBTZXR1cCBjYWxsYmFjayBmb3Igc3lzY2FjaGUgc28gdGhhdCB3ZSBrbm93IHdoZW4gc29tZXRo aW5nIGNoYW5nZXMgaW4KKwkgKiB0aGUgc3Vic2NyaXB0aW9uIHJlbGF0aW9uIHN0YXRlLgorCSAq LworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFNVQlNDUklQVElPTlJFTE1BUCwKKwkJ CQkJCQkJICBpbnZhbGlkYXRlX3N5bmNpbmdfdGFibGVfc3RhdGVzLAorCQkJCQkJCQkgIChEYXR1 bSkgMCk7CisKKwkvKgorCSAqIEFsbG9jYXRlIHRoZSBvcmlnaW4gbmFtZSBpbiBhIGxvbmctbGl2 ZWQgY29udGV4dCBmb3IgZXJyb3IgY29udGV4dAorCSAqIG1lc3NhZ2UuCisJICovCisJYXBwbHlf ZXJyb3JfY2FsbGJhY2tfYXJnLm9yaWdpbl9uYW1lID0gTWVtb3J5Q29udGV4dFN0cmR1cChBcHBs eUNvbnRleHQsCisJCQkJCQkJCQkJCQkJCQkgICBvcmlnaW5uYW1lKTsKKworCUxvZ2ljYWxQYXJh bGxlbEFwcGx5TG9vcChtcWgpOworCisJYXBwbHlfd29ya2VyX2NsZWFuX2V4aXQoZmFsc2UpOwor fQorCisvKgorICogSGFuZGxlIHJlY2VpcHQgb2YgYW4gaW50ZXJydXB0IGluZGljYXRpbmcgYSBw YXJhbGxlbCBhcHBseSB3b3JrZXIgbWVzc2FnZS4KKyAqCisgKiBOb3RlOiB0aGlzIGlzIGNhbGxl ZCB3aXRoaW4gYSBzaWduYWwgaGFuZGxlciEgQWxsIHdlIGNhbiBkbyBpcyBzZXQgYSBmbGFnCisg KiB0aGF0IHdpbGwgY2F1c2UgdGhlIG5leHQgQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKSB0byBpbnZv a2UKKyAqIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcygpLgorICovCit2b2lkCitIYW5kbGVQ YXJhbGxlbEFwcGx5TWVzc2FnZUludGVycnVwdCh2b2lkKQoreworCUludGVycnVwdFBlbmRpbmcg PSB0cnVlOworCVBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZyA9IHRydWU7CisJU2V0TGF0Y2go TXlMYXRjaCk7Cit9CisKKy8qCisgKiBIYW5kbGUgYSBzaW5nbGUgcHJvdG9jb2wgbWVzc2FnZSBy ZWNlaXZlZCBmcm9tIGEgc2luZ2xlIHBhcmFsbGVsIGFwcGx5CisgKiB3b3JrZXIuCisgKi8KK3N0 YXRpYyB2b2lkCitIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZShQYXJhbGxlbEFwcGx5V29ya2Vy SW5mbyAqd2luZm8sIFN0cmluZ0luZm8gbXNnKQoreworCWNoYXIJCW1zZ3R5cGU7CisKKwltc2d0 eXBlID0gcHFfZ2V0bXNnYnl0ZShtc2cpOworCisJc3dpdGNoIChtc2d0eXBlKQorCXsKKwkJY2Fz ZSAnRSc6CQkJCS8qIEVycm9yUmVzcG9uc2UgKi8KKwkJCXsKKwkJCQlFcnJvckRhdGEJZWRhdGE7 CisKKwkJCQkvKiBQYXJzZSBFcnJvclJlc3BvbnNlLiAqLworCQkJCXBxX3BhcnNlX2Vycm9ybm90 aWNlKG1zZywgJmVkYXRhKTsKKworCQkJCS8qCisJCQkJICogSWYgZGVzaXJlZCwgYWRkIGEgY29u dGV4dCBsaW5lIHRvIHNob3cgdGhhdCB0aGlzIGlzIGEKKwkJCQkgKiBtZXNzYWdlIHByb3BhZ2F0 ZWQgZnJvbSBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gT3RoZXJ3aXNlLAorCQkJCSAqIGl0IGNh biBzb21ldGltZXMgYmUgY29uZnVzaW5nIHRvIHVuZGVyc3RhbmQgd2hhdCBhY3R1YWxseQorCQkJ CSAqIGhhcHBlbmVkLgorCQkJCSAqLworCQkJCWlmIChlZGF0YS5jb250ZXh0KQorCQkJCQllZGF0 YS5jb250ZXh0ID0gcHNwcmludGYoIiVzXG4lcyIsIGVkYXRhLmNvbnRleHQsCisJCQkJCQkJCQkJ CSBfKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5IHdvcmtlciIpKTsKKwkJCQll bHNlCisJCQkJCWVkYXRhLmNvbnRleHQgPSBwc3RyZHVwKF8oImxvZ2ljYWwgcmVwbGljYXRpb24g cGFyYWxsZWwgYXBwbHkgd29ya2VyIikpOworCisJCQkJLyoKKwkJCQkgKiBDb250ZXh0IGJleW9u ZCB0aGF0IHNob3VsZCB1c2UgdGhlIGVycm9yIGNvbnRleHQgY2FsbGJhY2tzCisJCQkJICogdGhh dCB3ZXJlIGluIGVmZmVjdCBpbiBMb2dpY2FsUmVwQXBwbHlMb29wKCkuCisJCQkJICovCisJCQkJ ZXJyb3JfY29udGV4dF9zdGFjayA9IGFwcGx5X2Vycm9yX2NvbnRleHRfc3RhY2s7CisKKwkJCQkv KgorCQkJCSAqIFRoZSBhY3R1YWwgZXJyb3IgbXVzdCBoYXZlIGJlZW4gcmVwb3J0ZWQgYnkgdGhl IHBhcmFsbGVsCisJCQkJICogYXBwbHkgd29ya2VyLgorCQkJCSAqLworCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NU QVRFKSwKKwkJCQkJCSBlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkg d29ya2VyIGV4aXRlZCBhYm5vcm1hbGx5IiksCisJCQkJCQkgZXJyY29udGV4dCgiJXMiLCBlZGF0 YS5jb250ZXh0KSkpOworCQkJfQorCisJCQkvKgorCQkJICogRG9uJ3QgbmVlZCB0byBkbyBhbnl0 aGluZyBhYm91dCBOb3RpY2VSZXNwb25zZSBhbmQKKwkJCSAqIE5vdGlmeVJlc3BvbnNlIGFzIHRo ZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBkb2Vzbid0IG5lZWQKKwkJCSAqIHRvIHNlbmQg bWVzc2FnZXMgdG8gdGhlIGNsaWVudC4KKwkJCSAqLworCQljYXNlICdOJzoKKwkJY2FzZSAnQSc6 CisJCQlicmVhazsKKworCQljYXNlICdYJzoJCQkJLyogVGVybWluYXRlLCBpbmRpY2F0aW5nIGNs ZWFuIGV4aXQuICovCisJCQlzaG1fbXFfZGV0YWNoKHdpbmZvLT5lcnJvcl9tcV9oYW5kbGUpOwor CQkJd2luZm8tPmVycm9yX21xX2hhbmRsZSA9IE5VTEw7CisJCQlicmVhazsKKworCQkJLyoKKwkJ CSAqIFJlc3RhcnQgcmVwbGljYXRpb24gaWYgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZXhpdGVk IGJlY2F1c2Ugb2YKKwkJCSAqIHN1YnNjcmlwdGlvbiBpbmZvcm1hdGlvbiBjaGFuZ2UuCisJCQkg Ki8KKwkJY2FzZSAnQyc6CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9naWNh bCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZXhpdGVkIGJlY2F1c2Ugb2Ygc3Vi c2NyaXB0aW9uIGluZm9ybWF0aW9uIGNoYW5nZSIpKSk7CisJCQlicmVhazsgLyogU2lsZW5jZSBj b21waWxlciB3YXJuaW5nLiAqLworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVucmVjb2du aXplZCBtZXNzYWdlIHR5cGUgcmVjZWl2ZWQgZnJvbSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFs bGVsIGFwcGx5IHdvcmtlcjogJWMgKG1lc3NhZ2UgbGVuZ3RoICVkIGJ5dGVzKSIsCisJCQkJIG1z Z3R5cGUsIG1zZy0+bGVuKTsKKwl9Cit9CisKKy8qCisgKiBIYW5kbGUgYW55IHF1ZXVlZCBwcm90 b2NvbCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuCisgKi8K K3ZvaWQKK0hhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyh2b2lkKQoreworCUxpc3RDZWxsICAg KmxjOworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKworCXN0YXRpYyBNZW1vcnlDb250ZXh0 IGhwYW1fY29udGV4dCA9IE5VTEw7CisKKwkvKgorCSAqIFRoaXMgaXMgaW52b2tlZCBmcm9tIFBy b2Nlc3NJbnRlcnJ1cHRzKCksIGFuZCBzaW5jZSBzb21lIG9mIHRoZQorCSAqIGZ1bmN0aW9ucyBp dCBjYWxscyBjb250YWluIENIRUNLX0ZPUl9JTlRFUlJVUFRTKCksIHRoZXJlIGlzIGEgcG90ZW50 aWFsCisJICogZm9yIHJlY3Vyc2l2ZSBjYWxscyBpZiBtb3JlIHNpZ25hbHMgYXJlIHJlY2VpdmVk IHdoaWxlIHRoaXMgcnVucy4gSXQncworCSAqIHVuY2xlYXIgdGhhdCByZWN1cnNpdmUgZW50cnkg d291bGQgYmUgc2FmZSwgYW5kIGl0IGRvZXNuJ3Qgc2VlbSB1c2VmdWwKKwkgKiBldmVuIGlmIGl0 IGlzIHNhZmUsIHNvIGxldCdzIGJsb2NrIGludGVycnVwdHMgdW50aWwgZG9uZS4KKwkgKi8KKwlI T0xEX0lOVEVSUlVQVFMoKTsKKworCS8qCisJICogTW9yZW92ZXIsIEN1cnJlbnRNZW1vcnlDb250 ZXh0IG1pZ2h0IGJlIHBvaW50aW5nIGFsbW9zdCBhbnl3aGVyZS4gV2UKKwkgKiBkb24ndCB3YW50 IHRvIHJpc2sgbGVha2luZyBkYXRhIGludG8gbG9uZy1saXZlZCBjb250ZXh0cywgc28gbGV0J3Mg ZG8KKwkgKiBvdXIgd29yayBoZXJlIGluIGEgcHJpdmF0ZSBjb250ZXh0IHRoYXQgd2UgY2FuIHJl c2V0IG9uIGVhY2ggdXNlLgorCSAqLworCWlmICghaHBhbV9jb250ZXh0KQkvKiBmaXJzdCB0aW1l IHRocm91Z2g/ICovCisJCWhwYW1fY29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShUb3BN ZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkgIkhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlcyIs CisJCQkJCQkJCQkJCSBBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKwllbHNlCisJCU1lbW9yeUNv bnRleHRSZXNldChocGFtX2NvbnRleHQpOworCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRT d2l0Y2hUbyhocGFtX2NvbnRleHQpOworCisJUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nID0g ZmFsc2U7CisKKwlmb3JlYWNoKGxjLCBQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QpCisJeworCQlz aG1fbXFfcmVzdWx0IHJlczsKKwkJU2l6ZQkJbmJ5dGVzOworCQl2b2lkCSAgICpkYXRhOworCQlQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KikgbGZpcnN0KGxjKTsKKworCQlpZiAoIXdpbmZvLT5lcnJvcl9tcV9oYW5kbGUpCisJCQljb250 aW51ZTsKKworCQlyZXMgPSBzaG1fbXFfcmVjZWl2ZSh3aW5mby0+ZXJyb3JfbXFfaGFuZGxlLCAm bmJ5dGVzLCAmZGF0YSwgdHJ1ZSk7CisKKwkJaWYgKHJlcyA9PSBTSE1fTVFfV09VTERfQkxPQ0sp CisJCQljb250aW51ZTsKKwkJZWxzZSBpZiAocmVzID09IFNITV9NUV9TVUNDRVNTKQorCQl7CisJ CQlTdHJpbmdJbmZvRGF0YSBtc2c7CisKKwkJCWluaXRTdHJpbmdJbmZvKCZtc2cpOworCQkJYXBw ZW5kQmluYXJ5U3RyaW5nSW5mbygmbXNnLCBkYXRhLCBuYnl0ZXMpOworCQkJSGFuZGxlUGFyYWxs ZWxBcHBseU1lc3NhZ2Uod2luZm8sICZtc2cpOworCQkJcGZyZWUobXNnLmRhdGEpOworCQl9CisJ CWVsc2UKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24g dG8gdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpKTsKKwl9 CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwkvKiBNaWdodCBhcyB3 ZWxsIGNsZWFyIHRoZSBjb250ZXh0IG9uIG91ciB3YXkgb3V0ICovCisJTWVtb3J5Q29udGV4dFJl c2V0KGhwYW1fY29udGV4dCk7CisKKwlSRVNVTUVfSU5URVJSVVBUUygpOworfQorCisvKgorICog U2V0IHVwIGEgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQuCisgKgorICogV2Ugc2V0IHVw IGEgY29udHJvbCByZWdpb24gdGhhdCBjb250YWlucyBhIGZpeGVkLXNpemUgd29ya2VyIGluZm8K KyAqIChQYXJhbGxlbEFwcGx5V29ya2VyU2hhcmVkKSwgYSBtZXNzYWdlIHF1ZXVlLCBhbmQgYW4g ZXJyb3IgcXVldWUuCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG9uIGZh aWx1cmUuCisgKi8KK3N0YXRpYyBib29sCitwYV9zZXR1cF9kc20oUGFyYWxsZWxBcHBseVdvcmtl ckluZm8gKndpbmZvKQoreworCXNobV90b2NfZXN0aW1hdG9yIGU7CisJU2l6ZQkJc2Vnc2l6ZTsK Kwlkc21fc2VnbWVudCAqc2VnOworCXNobV90b2MgICAgKnRvYzsKKwlQYXJhbGxlbEFwcGx5V29y a2VyU2hhcmVkICpzaGFyZWQ7CisJc2htX21xCSAgICptcTsKKwlTaXplCQlxdWV1ZV9zaXplID0g RFNNX1FVRVVFX1NJWkU7CisJU2l6ZQkJZXJyb3JfcXVldWVfc2l6ZSA9IERTTV9FUlJPUl9RVUVV RV9TSVpFOworCisJLyoKKwkgKiBFc3RpbWF0ZSBob3cgbXVjaCBzaGFyZWQgbWVtb3J5IHdlIG5l ZWQuCisJICoKKwkgKiBCZWNhdXNlIHRoZSBUT0MgbWFjaGluZXJ5IG1heSBjaG9vc2UgdG8gaW5z ZXJ0IHBhZGRpbmcgb2Ygb2RkbHktc2l6ZWQKKwkgKiByZXF1ZXN0cywgd2UgbXVzdCBlc3RpbWF0 ZSBlYWNoIGNodW5rIHNlcGFyYXRlbHkuCisJICoKKwkgKiBXZSBuZWVkIG9uZSBrZXkgdG8gcmVn aXN0ZXIgdGhlIGxvY2F0aW9uIG9mIHRoZSBoZWFkZXIsIGFuZCB0d28gb3RoZXIKKwkgKiBrZXlz IHRvIHRyYWNrIHRoZSBsb2NhdGlvbnMgb2YgdGhlIG1lc3NhZ2UgcXVldWUgYW5kIHRoZSBlcnJv ciBtZXNzYWdlCisJICogcXVldWUuCisJICovCisJc2htX3RvY19pbml0aWFsaXplX2VzdGltYXRv cigmZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgc2l6ZW9mKFBhcmFsbGVsQXBwbHlX b3JrZXJTaGFyZWQpKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCBxdWV1ZV9zaXplKTsK KwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCBlcnJvcl9xdWV1ZV9zaXplKTsKKworCXNobV90 b2NfZXN0aW1hdGVfa2V5cygmZSwgMyk7CisJc2Vnc2l6ZSA9IHNobV90b2NfZXN0aW1hdGUoJmUp OworCisJLyogQ3JlYXRlIHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgYW5kIGVzdGFibGlzaCBh IHRhYmxlIG9mIGNvbnRlbnRzLiAqLworCXNlZyA9IGRzbV9jcmVhdGUoc2htX3RvY19lc3RpbWF0 ZSgmZSksIDApOworCWlmICghc2VnKQorCQlyZXR1cm4gZmFsc2U7CisKKwl0b2MgPSBzaG1fdG9j X2NyZWF0ZShQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJQywgZHNtX3NlZ21lbnRfYWRkcmVzcyhz ZWcpLAorCQkJCQkJIHNlZ3NpemUpOworCisJLyogU2V0IHVwIHRoZSBoZWFkZXIgcmVnaW9uLiAq LworCXNoYXJlZCA9IHNobV90b2NfYWxsb2NhdGUodG9jLCBzaXplb2YoUGFyYWxsZWxBcHBseVdv cmtlclNoYXJlZCkpOworCVNwaW5Mb2NrSW5pdCgmc2hhcmVkLT5tdXRleCk7CisKKwlzaGFyZWQt PnhhY3Rfc3RhdGUgPSBQQVJBTExFTF9UUkFOU19VTktOT1dOOworCXBnX2F0b21pY19pbml0X3Uz MigmKHNoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQpLCAwKTsKKworCXNobV90b2NfaW5zZXJ0 KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX1NIQVJFRCwgc2hhcmVkKTsKKworCS8qIFNldCB1cCBt ZXNzYWdlIHF1ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21xX2NyZWF0ZShzaG1f dG9jX2FsbG9jYXRlKHRvYywgcXVldWVfc2l6ZSksIHF1ZXVlX3NpemUpOworCXNobV90b2NfaW5z ZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX01RLCBtcSk7CisJc2htX21xX3NldF9zZW5kZXIo bXEsIE15UHJvYyk7CisKKwkvKiBBdHRhY2ggdGhlIHF1ZXVlLiAqLworCXdpbmZvLT5tcV9oYW5k bGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyogU2V0IHVwIGVycm9yIHF1 ZXVlIGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21xX2NyZWF0ZShzaG1fdG9jX2FsbG9j YXRlKHRvYywgZXJyb3JfcXVldWVfc2l6ZSksCisJCQkJCSAgIGVycm9yX3F1ZXVlX3NpemUpOwor CXNobV90b2NfaW5zZXJ0KHRvYywgUEFSQUxMRUxfQVBQTFlfS0VZX0VSUk9SX1FVRVVFLCBtcSk7 CisJc2htX21xX3NldF9yZWNlaXZlcihtcSwgTXlQcm9jKTsKKworCS8qIEF0dGFjaCB0aGUgcXVl dWUuICovCisJd2luZm8tPmVycm9yX21xX2hhbmRsZSA9IHNobV9tcV9hdHRhY2gobXEsIHNlZywg TlVMTCk7CisKKwkvKiBSZXR1cm4gcmVzdWx0cyB0byBjYWxsZXIuICovCisJd2luZm8tPmRzbV9z ZWcgPSBzZWc7CisJd2luZm8tPnNoYXJlZCA9IHNoYXJlZDsKKworCXJldHVybiB0cnVlOworfQor CisvKgorICogU3RhcnQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHByb2Nlc3MgYW5kIGFsbG9jYXRl IHNoYXJlZCBtZW1vcnkgZm9yIGl0LgorICovCitzdGF0aWMgUGFyYWxsZWxBcHBseVdvcmtlcklu Zm8gKgorcGFfaW5pdF9hbmRfbGF1bmNoX3dvcmtlcih2b2lkKQoreworCU1lbW9yeUNvbnRleHQg b2xkY29udGV4dDsKKwlib29sCQlsYXVuY2hlZDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm87CisKKwkvKgorCSAqIFRoZSB3b3JrZXIgaW5mbyBjYW4gYmUgdXNlZCBmb3IgdGhlIGVu dGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvCisJICogY3JlYXRlIGl0IGluIGEgcGVybWFu ZW50IGNvbnRleHQuCisJICovCisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhB cHBseUNvbnRleHQpOworCisJd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgcGFs bG9jMChzaXplb2YoUGFyYWxsZWxBcHBseVdvcmtlckluZm8pKTsKKworCS8qIFNldHVwIHNoYXJl ZCBtZW1vcnkuICovCisJaWYgKCFwYV9zZXR1cF9kc20od2luZm8pKQorCXsKKwkJTWVtb3J5Q29u dGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCQlwZnJlZSh3aW5mbyk7CisJCXJldHVybiBOVUxM OworCX0KKworCWxhdW5jaGVkID0gbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKE15TG9naWNhbFJl cFdvcmtlci0+ZGJpZCwKKwkJCQkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+b2lkLAorCQkJCQkJCQkJ CU15U3Vic2NyaXB0aW9uLT5uYW1lLAorCQkJCQkJCQkJCU15TG9naWNhbFJlcFdvcmtlci0+dXNl cmlkLAorCQkJCQkJCQkJCUludmFsaWRPaWQsCisJCQkJCQkJCQkJZHNtX3NlZ21lbnRfaGFuZGxl KHdpbmZvLT5kc21fc2VnKSk7CisKKwlpZiAobGF1bmNoZWQpCisJeworCQlQYXJhbGxlbEFwcGx5 V29ya2Vyc0xpc3QgPSBsYXBwZW5kKFBhcmFsbGVsQXBwbHlXb3JrZXJzTGlzdCwgd2luZm8pOwor CX0KKwllbHNlCisJeworCQlwYV9mcmVlX3dvcmtlcl9pbmZvKHdpbmZvKTsKKwkJd2luZm8gPSBO VUxMOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKworCXJldHVy biB3aW5mbzsKK30KKworLyoKKyAqIFNlbmQgdGhlIGRhdGEgdG8gdGhlIHNwZWNpZmllZCBwYXJh bGxlbCBhcHBseSB3b3JrZXIgdmlhIHNoYXJlZC1tZW1vcnkKKyAqIHF1ZXVlLgorICovCit2b2lk CitwYV9zZW5kX2RhdGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRl cywgY29uc3Qgdm9pZCAqZGF0YSkKK3sKKwlpbnQJCQlyYzsKKwlzaG1fbXFfcmVzdWx0IHJlc3Vs dDsKKwlUaW1lc3RhbXBUeiBzdGFydFRpbWUgPSAwOworCisJQXNzZXJ0KCFJc1RyYW5zYWN0aW9u U3RhdGUoKSk7CisKKyNkZWZpbmUgU0hNX1NFTkRfUkVUUllfSU5URVJWQUxfTVMgMTAwMAorI2Rl ZmluZSBTSE1fU0VORF9USU1FT1VUX01TCQkxMDAwMAorCisJZm9yICg7OykKKwl7CisJCXJlc3Vs dCA9IHNobV9tcV9zZW5kKHdpbmZvLT5tcV9oYW5kbGUsIG5ieXRlcywgZGF0YSwgdHJ1ZSwgdHJ1 ZSk7CisKKwkJaWYgKHJlc3VsdCA9PSBTSE1fTVFfU1VDQ0VTUykKKwkJCWJyZWFrOworCQllbHNl IGlmIChyZXN1bHQgPT0gU0hNX01RX0RFVEFDSEVEKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJ CSBlcnJtc2coImNvdWxkIG5vdCBzZW5kIGRhdGEgdG8gc2hhcmVkLW1lbW9yeSBxdWV1ZSIpKSk7 CisKKwkJQXNzZXJ0KHJlc3VsdCA9PSBTSE1fTVFfV09VTERfQkxPQ0spOworCisJCWlmIChzdGFy dFRpbWUgPT0gMCkKKwkJCXN0YXJ0VGltZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKworCQkv KiBXYWl0IGJlZm9yZSByZXRyeWluZy4gKi8KKwkJcmMgPSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJ CQkJICAgV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05fUE1fREVBVEgsCisJ CQkJCSAgIFNITV9TRU5EX1JFVFJZX0lOVEVSVkFMX01TLAorCQkJCQkgICBXQUlUX0VWRU5UX0xP R0lDQUxfUEFSQUxMRUxfQVBQTFlfU1RBVEVfQ0hBTkdFKTsKKworCQlpZiAocmMgJiBXTF9MQVRD SF9TRVQpCisJCXsKKwkJCVJlc2V0TGF0Y2goTXlMYXRjaCk7CisJCQlDSEVDS19GT1JfSU5URVJS VVBUUygpOworCQl9CisKKwkJaWYgKFRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzKHN0YXJ0VGlt ZSwgR2V0Q3VycmVudFRpbWVzdGFtcCgpLAorCQkJCQkJCQkJICAgU0hNX1NFTkRfVElNRU9VVF9N UykpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0NPTk5FQ1RJT05f RkFJTFVSRSksCisJCQkJCSBlcnJtc2coInRlcm1pbmF0aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24g cGFyYWxsZWwgYXBwbHkgd29ya2VyIGR1ZSB0byB0aW1lb3V0IikpKTsKKwl9Cit9CisKKy8qCisg KiBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIncyB0cmFuc2FjdGlvbiBzdGF0 ZSBoYXMgcmVhY2hlZCBvcgorICogZXhjZWVkZWQgdGhlIGdpdmVuIHhhY3Rfc3RhdGUuCisgKi8K K3N0YXRpYyB2b2lkCitwYV93YWl0X2Zvcl94YWN0X3N0YXRlKFBhcmFsbGVsQXBwbHlXb3JrZXJJ bmZvICp3aW5mbywKKwkJCQkJICAgUGFyYWxsZWxUcmFuc1N0YXRlIHhhY3Rfc3RhdGUpCit7CisJ Zm9yICg7OykKKwl7CisJCWlmICghd2luZm8tPmVycm9yX21xX2hhbmRsZSkKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVf U1RBVEUpLAorCQkJCQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8gdGhlIGxvZ2ljYWwgcmVw bGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpKTsKKworCQkvKgorCQkgKiBTdG9wIGlm IHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBoYXMgcmVhY2hlZCBvciBleGNlZWRlZCB0aGUgZ2l2ZW4K KwkJICogeGFjdF9zdGF0ZS4KKwkJICovCisJCWlmIChwYV9nZXRfeGFjdF9zdGF0ZSh3aW5mby0+ c2hhcmVkKSA+PSB4YWN0X3N0YXRlKQorCQkJYnJlYWs7CisKKwkJLyogV2FpdCB0byBiZSBzaWdu YWxsZWQuICovCisJCSh2b2lkKSBXYWl0TGF0Y2goTXlMYXRjaCwKKwkJCQkJCSBXTF9MQVRDSF9T RVQgfCBXTF9USU1FT1VUIHwgV0xfRVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCSAxMEwsCisJCQkJ CQkgV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRSk7CisKKwkJ LyogUmVzZXQgdGhlIGxhdGNoIHNvIHdlIGRvbid0IHNwaW4uICovCisJCVJlc2V0TGF0Y2goTXlM YXRjaCk7CisKKwkJLyogQW4gaW50ZXJydXB0IG1heSBoYXZlIG9jY3VycmVkIHdoaWxlIHdlIHdl cmUgd2FpdGluZy4gKi8KKwkJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwl9Cit9CisKKy8qCisg KiBXYWl0IHVudGlsIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIncyB0cmFuc2FjdGlvbiBmaW5p c2hlcy4KKyAqLwordm9pZAorcGFfd2FpdF9mb3JfeGFjdF9maW5pc2goUGFyYWxsZWxBcHBseVdv cmtlckluZm8gKndpbmZvKQoreworCS8qCisJICogV2FpdCB1bnRpbCB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyIHNldCB0aGUgc3RhdGUgdG8KKwkgKiBQQVJBTExFTF9UUkFOU19TVEFSVEVEIHdo aWNoIG1lYW5zIGl0IGhhcyBhY3F1aXJlZCB0aGUgdHJhbnNhY3Rpb24KKwkgKiBsb2NrLiBUaGlz IGlzIHRvIHByZXZlbnQgbGVhZGVyIGFwcGx5IHdvcmtlciBmcm9tIGFjcXVpcmluZyB0aGUKKwkg KiB0cmFuc2FjdGlvbiBsb2NrIGVhcmxpZXIgdGhhbiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LgorCSAqLworCXBhX3dhaXRfZm9yX3hhY3Rfc3RhdGUod2luZm8sIFBBUkFMTEVMX1RSQU5TX1NU QVJURUQpOworCisJLyoKKwkgKiBXYWl0IGZvciB0aGUgdHJhbnNhY3Rpb24gbG9jayB0byBiZSBy ZWxlYXNlZC4gVGhpcyBpcyByZXF1aXJlZCB0byBkZXRlY3QKKwkgKiBkZWFkbG9jayBhbW9uZyBs ZWFkZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMuIFNlZSBjb21tZW50cyBhdG9wIHRoaXMK KwkgKiBmaWxlLgorCSAqLworCXBhX2xvY2tfdHJhbnNhY3Rpb24od2luZm8tPnNoYXJlZC0+eGlk LCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwlwYV91bmxvY2tfdHJhbnNhY3Rpb24od2luZm8tPnNo YXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCS8qCisJICogQ2hlY2sgaWYgdGhl IHN0YXRlIGJlY29tZXMgUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQgaW4gY2FzZSB0aGUgcGFyYWxs ZWwKKwkgKiBhcHBseSB3b3JrZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMgY2F1c2lu ZyB0aGUgbG9jayB0byBiZQorCSAqIHJlbGVhc2VkLgorCSAqLworCWlmIChwYV9nZXRfeGFjdF9z dGF0ZSh3aW5mby0+c2hhcmVkKSAhPSBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCkKKwkJZXJlcG9y dChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRF X1NUQVRFKSwKKwkJCQkgZXJybXNnKCJsb3N0IGNvbm5lY3Rpb24gdG8gdGhlIGxvZ2ljYWwgcmVw bGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIikpKTsKK30KKworLyoKKyAqIFNldCBhbiBl bnVtIGluZGljYXRpbmcgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGZvciB0aGUgZ2l2ZW4gcGFyYWxs ZWwgYXBwbHkKKyAqIHdvcmtlci4KKyAqLwordm9pZAorcGFfc2V0X3hhY3Rfc3RhdGUoUGFyYWxs ZWxBcHBseVdvcmtlclNoYXJlZCAqd3NoYXJlZCwKKwkJCQkgIFBhcmFsbGVsVHJhbnNTdGF0ZSB4 YWN0X3N0YXRlKQoreworCVNwaW5Mb2NrQWNxdWlyZSgmd3NoYXJlZC0+bXV0ZXgpOworCXdzaGFy ZWQtPnhhY3Rfc3RhdGUgPSB4YWN0X3N0YXRlOworCVNwaW5Mb2NrUmVsZWFzZSgmd3NoYXJlZC0+ bXV0ZXgpOworfQorCisvKgorICogR2V0IGFuIGVudW0gaW5kaWNhdGluZyB0aGUgdHJhbnNhY3Rp b24gc3RhdGUgZm9yIHRoZSBnaXZlbiBwYXJhbGxlbCBhcHBseQorICogd29ya2VyLgorICovCitz dGF0aWMgUGFyYWxsZWxUcmFuc1N0YXRlCitwYV9nZXRfeGFjdF9zdGF0ZShQYXJhbGxlbEFwcGx5 V29ya2VyU2hhcmVkICp3c2hhcmVkKQoreworCVBhcmFsbGVsVHJhbnNTdGF0ZSB4YWN0X3N0YXRl OworCisJU3BpbkxvY2tBY3F1aXJlKCZ3c2hhcmVkLT5tdXRleCk7CisJeGFjdF9zdGF0ZSA9IHdz aGFyZWQtPnhhY3Rfc3RhdGU7CisJU3BpbkxvY2tSZWxlYXNlKCZ3c2hhcmVkLT5tdXRleCk7CisK KwlyZXR1cm4geGFjdF9zdGF0ZTsKK30KKworLyoKKyAqIEZvcm0gYSB1bmlxdWUgc2F2ZXBvaW50 IG5hbWUgZm9yIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKgorICogTm90ZSB0aGF0IGRp ZmZlcmVudCBzdWJzY3JpcHRpb25zIGZvciBwdWJsaWNhdGlvbnMgb24gZGlmZmVyZW50IG5vZGVz IGNhbgorICogcmVjZWl2ZSBzYW1lIHJlbW90ZSB4aWQsIHNvIHdlIG5lZWQgdG8gdXNlIHN1YnNj cmlwdGlvbiBpZCBhbG9uZyB3aXRoIGl0LgorICoKKyAqIFJldHVybiB0aGUgbmFtZSBpbiB0aGUg c3VwcGxpZWQgYnVmZmVyLgorICovCitzdGF0aWMgdm9pZAorcGFfc2F2ZXBvaW50X25hbWUoT2lk IHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIGNoYXIgKnNwbmFtZSwgU2l6ZSBzenNwKQorewor CXNucHJpbnRmKHNwbmFtZSwgc3pzcCwgInBnX3NwXyV1XyV1Iiwgc3Vib2lkLCB4aWQpOworfQor CisvKgorICogRGVmaW5lIGEgc2F2ZXBvaW50IGZvciBhIHN1YnhhY3QgaW4gcGFyYWxsZWwgYXBw bHkgd29ya2VyIGlmIG5lZWRlZC4KKyAqCisgKiBUaGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNh biBmaWd1cmUgb3V0IGlmIGEgbmV3IHN1YnRyYW5zYWN0aW9uIHdhcworICogc3RhcnRlZCBieSBj aGVja2luZyBpZiB0aGUgbmV3IGNoYW5nZSBhcnJpdmVkIHdpdGggYSBkaWZmZXJlbnQgeGlkLiBJ biB0aGF0CisgKiBjYXNlIGRlZmluZSBhIG5hbWVkIHNhdmVwb2ludCwgc28gdGhhdCB3ZSBhcmUg YWJsZSB0byByb2xsYmFjayB0byBpdAorICogaWYgcmVxdWlyZWQuCisgKi8KK3ZvaWQKK3BhX3N0 YXJ0X3N1YnRyYW5zKFRyYW5zYWN0aW9uSWQgY3VycmVudF94aWQsIFRyYW5zYWN0aW9uSWQgdG9w X3hpZCkKK3sKKwlpZiAoY3VycmVudF94aWQgIT0gdG9wX3hpZCAmJgorCQkhbGlzdF9tZW1iZXJf eGlkKHN1YnhhY3RsaXN0LCBjdXJyZW50X3hpZCkpCisJeworCQlNZW1vcnlDb250ZXh0IG9sZGN0 eDsKKwkJY2hhcgkJc3BuYW1lW05BTUVEQVRBTEVOXTsKKworCQlwYV9zYXZlcG9pbnRfbmFtZShN eVN1YnNjcmlwdGlvbi0+b2lkLCBjdXJyZW50X3hpZCwKKwkJCQkJCSAgc3BuYW1lLCBzaXplb2Yo c3BuYW1lKSk7CisKKwkJZWxvZyhERUJVRzEsICJkZWZpbmluZyBzYXZlcG9pbnQgJXMgaW4gbG9n aWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIiLCBzcG5hbWUpOworCisJCS8q IFdlIG11c3QgYmUgaW4gdHJhbnNhY3Rpb24gYmxvY2sgdG8gZGVmaW5lIHRoZSBTQVZFUE9JTlQu ICovCisJCWlmICghSXNUcmFuc2FjdGlvbkJsb2NrKCkpCisJCXsKKwkJCWlmICghSXNUcmFuc2Fj dGlvblN0YXRlKCkpCisJCQkJU3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJQmVnaW5U cmFuc2FjdGlvbkJsb2NrKCk7CisJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJfQor CisJCURlZmluZVNhdmVwb2ludChzcG5hbWUpOworCisJCS8qCisJCSAqIENvbW1pdFRyYW5zYWN0 aW9uQ29tbWFuZCBpcyBuZWVkZWQgdG8gc3RhcnQgYSBzdWJ0cmFuc2FjdGlvbiBhZnRlcgorCQkg KiBpc3N1aW5nIGEgU0FWRVBPSU5UIGluc2lkZSBhIHRyYW5zYWN0aW9uIGJsb2NrIChzZWUKKwkJ ICogU3RhcnRTdWJUcmFuc2FjdGlvbigpKS4KKwkJICovCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhUb3BUcmFuc2FjdGlv bkNvbnRleHQpOworCQlzdWJ4YWN0bGlzdCA9IGxhcHBlbmRfeGlkKHN1YnhhY3RsaXN0LCBjdXJy ZW50X3hpZCk7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KK30KKworLyoK KyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aGVuIHRoZSB0cmFuc2FjdGlvbiB3YXMg YXBwbGllZCBpbiBhIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIuCisgKi8KK3ZvaWQKK3BhX3N0 cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhKQoreworCVRy YW5zYWN0aW9uSWQgeGlkID0gYWJvcnRfZGF0YS0+eGlkOworCVRyYW5zYWN0aW9uSWQgc3VieGlk ID0gYWJvcnRfZGF0YS0+c3VieGlkOworCisJLyoKKwkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNv IHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QgcG9zaXRpb24KKwkgKiBpbiBj YXNlIG9mIGNyYXNoLgorCSAqLworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gYWJv cnRfZGF0YS0+YWJvcnRfbHNuOworCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1w ID0gYWJvcnRfZGF0YS0+YWJvcnRfdGltZTsKKworCS8qCisJICogSWYgdGhlIHR3byBYSURzIGFy ZSB0aGUgc2FtZSwgaXQncyBpbiBmYWN0IGFib3J0IG9mIHRvcGxldmVsIHhhY3QsIHNvCisJICog anVzdCBmcmVlIHRoZSBzdWJ4YWN0bGlzdC4KKwkgKi8KKwlpZiAoc3VieGlkID09IHhpZCkKKwl7 CisJCS8qCisJCSAqIFJlbGVhc2UgdGhlIGxvY2sgYXMgd2UgbWlnaHQgYmUgcHJvY2Vzc2luZyBh biBlbXB0eSBzdHJlYW1pbmcKKwkJICogdHJhbnNhY3Rpb24gaW4gd2hpY2ggY2FzZSB0aGUgbG9j ayB3b24ndCBiZSByZWxlYXNlZCBkdXJpbmcKKwkJICogdHJhbnNhY3Rpb24gcm9sbGJhY2suCisJ CSAqLworCQlwYV91bmxvY2tfdHJhbnNhY3Rpb24oeGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJ CWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCXN1YnhhY3RsaXN0ID0gTklMOworCisJCUFib3J0 Q3VycmVudFRyYW5zYWN0aW9uKCk7CisKKwkJaWYgKElzVHJhbnNhY3Rpb25CbG9jaygpKQorCQl7 CisJCQlFbmRUcmFuc2FjdGlvbkJsb2NrKGZhbHNlKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCQl9CisKKwkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFLCBOVUxM KTsKKworCQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFO U19GSU5JU0hFRCk7CisJfQorCWVsc2UKKwl7CisJCS8qIE9LLCBzbyBpdCdzIGEgc3VieGFjdC4g Um9sbGJhY2sgdG8gdGhlIHNhdmVwb2ludC4gKi8KKwkJaW50CQkJaTsKKwkJY2hhcgkJc3BuYW1l W05BTUVEQVRBTEVOXTsKKworCQlwYV9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+b2lk LCBzdWJ4aWQsIHNwbmFtZSwgc2l6ZW9mKHNwbmFtZSkpOworCisJCWVsb2coREVCVUcxLCAicm9s bGluZyBiYWNrIHRvIHNhdmVwb2ludCAlcyBpbiBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVs IGFwcGx5IHdvcmtlciIsIHNwbmFtZSk7CisKKwkJLyoKKwkJICogU2VhcmNoIHRoZSBzdWJ4YWN0 bGlzdCwgZGV0ZXJtaW5lIHRoZSBvZmZzZXQgdHJhY2tlZCBmb3IgdGhlCisJCSAqIHN1YnhhY3Qs IGFuZCB0cnVuY2F0ZSB0aGUgbGlzdC4KKwkJICoKKwkJICogTm90ZSB0aGF0IElmIGl0J3MgYW4g ZW1wdHkgc3ViLXRyYW5zYWN0aW9uIHRoZW4gd2Ugd2lsbCBub3QgZmluZCB0aGUKKwkJICogc3Vi eGlkIGhlcmUuCisJCSAqLworCQlmb3IgKGkgPSBsaXN0X2xlbmd0aChzdWJ4YWN0bGlzdCkgLSAx OyBpID49IDA7IGktLSkKKwkJeworCQkJVHJhbnNhY3Rpb25JZCB4aWRfdG1wID0gbGZpcnN0X3hp ZChsaXN0X250aF9jZWxsKHN1YnhhY3RsaXN0LCBpKSk7CisKKwkJCWlmICh4aWRfdG1wID09IHN1 YnhpZCkKKwkJCXsKKwkJCQlSb2xsYmFja1RvU2F2ZXBvaW50KHNwbmFtZSk7CisJCQkJQ29tbWl0 VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQkJc3VieGFjdGxpc3QgPSBsaXN0X3RydW5jYXRlKHN1 YnhhY3RsaXN0LCBpICsgMSk7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKworCQlwZ3N0YXRfcmVw b3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJTlRSQU5TQUNUSU9OLCBOVUxMKTsKKwl9Cit9CisKKy8q CisgKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGFjcXVpcmUgYW5kIHJlbGVhc2UgYSBsb2NrIGZvciBl YWNoIHN0cmVhbSBibG9jay4KKyAqCisgKiBTZXQgbG9ja3RhZ19maWVsZDQgdG8gUEFSQUxMRUxf QVBQTFlfTE9DS19TVFJFQU0gdG8gaW5kaWNhdGUgdGhhdCBpdCdzIGEKKyAqIHN0cmVhbSBsb2Nr LgorICoKKyAqIFJlZmVyIHRvIHRoZSBjb21tZW50cyBhdG9wIGFwcGx5cGFyYWxsZWx3b3JrZXIu YyB0byBzZWUgaG93IHRoZSBzdHJlYW0gbG9jaworICogaXMgdXNlZC4KKyAqLwordm9pZAorcGFf bG9ja19zdHJlYW0oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKQoreworCUxv Y2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4 aWQsCisJCQkJCQkJCSAgIFBBUkFMTEVMX0FQUExZX0xPQ0tfU1RSRUFNLCBsb2NrbW9kZSk7Cit9 CisKK3ZvaWQKK3BhX3VubG9ja19zdHJlYW0oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tNT0RFIGxv Y2ttb2RlKQoreworCVVubG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQsIHhpZCwKKwkJCQkJCQkJCSBQQVJBTExFTF9BUFBMWV9MT0NLX1NUUkVB TSwgbG9ja21vZGUpOworfQorCisvKgorICogSGVscGVyIGZ1bmN0aW9ucyB0byBhY3F1aXJlIGFu ZCByZWxlYXNlIGEgbG9jayBmb3IgZWFjaCBsb2NhbCB0cmFuc2FjdGlvbgorICogYXBwbHkuCisg KgorICogU2V0IGxvY2t0YWdfZmllbGQ0IHRvIFBBUkFMTEVMX0FQUExZX0xPQ0tfWEFDVCB0byBp bmRpY2F0ZSB0aGF0IGl0J3MgYQorICogdHJhbnNhY3Rpb24gbG9jay4KKyAqCisgKiBOb3RlIHRo YXQgYWxsIHRoZSBjYWxsZXJzIG11c3QgcGFzcyBhIHJlbW90ZSB0cmFuc2FjdGlvbiBJRCBpbnN0 ZWFkIG9mIGEKKyAqIGxvY2FsIHRyYW5zYWN0aW9uIElEIGFzIHhpZC4gVGhpcyBpcyBiZWNhdXNl IHRoZSBsb2NhbCB0cmFuc2FjdGlvbiBJRCB3aWxsCisgKiBvbmx5IGJlIGFzc2lnbmVkIHdoaWxl IGFwcGx5aW5nIHRoZSBmaXJzdCBjaGFuZ2UgaW4gdGhlIHBhcmFsbGVsIGFwcGx5IGJ1dAorICog aXQncyBwb3NzaWJsZSB0aGF0IHRoZSBmaXJzdCBjaGFuZ2UgaW4gdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBpcyBibG9ja2VkCisgKiBieSBhIGNvbmN1cnJlbnRseSBleGVjdXRpbmcgdHJhbnNh Y3Rpb24gaW4gYW5vdGhlciBwYXJhbGxlbCBhcHBseSB3b3JrZXIuIFdlCisgKiBjYW4gb25seSBj b21tdW5pY2F0ZSB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gaWQgdG8gdGhlIGxlYWRlciBhZnRlciBh cHBseWluZworICogdGhlIGZpcnN0IGNoYW5nZSBzbyBpdCB3b24ndCBiZSBhYmxlIHRvIHdhaXQg YWZ0ZXIgc2VuZGluZyB0aGUgeGFjdCBmaW5pc2gKKyAqIGNvbW1hbmQgdXNpbmcgdGhpcyBsb2Nr LgorICoKKyAqIFJlZmVyIHRvIHRoZSBjb21tZW50cyBhdG9wIGFwcGx5cGFyYWxsZWx3b3JrZXIu YyB0byBzZWUgaG93IHRoZSB0cmFuc2FjdGlvbgorICogbG9jayBpcyB1c2VkLgorICovCit2b2lk CitwYV9sb2NrX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9k ZSkKK3sKKwlMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oTXlMb2dpY2FsUmVwV29ya2Vy LT5zdWJpZCwgeGlkLAorCQkJCQkJCQkgICBQQVJBTExFTF9BUFBMWV9MT0NLX1hBQ1QsIGxvY2tt b2RlKTsKK30KKwordm9pZAorcGFfdW5sb2NrX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlk LCBMT0NLTU9ERSBsb2NrbW9kZSkKK3sKKwlVbmxvY2tBcHBseVRyYW5zYWN0aW9uRm9yU2Vzc2lv bihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQsCisJCQkJCQkJCQkgUEFSQUxMRUxfQVBQ TFlfTE9DS19YQUNULCBsb2NrbW9kZSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9kZWNvZGUuYwppbmRleCAyY2MwYWM5Li4zMDM1NTdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvZGVjb2RlLmMKQEAgLTY1Miw5ICs2NTIsMTAgQEAgRGVjb2RlQ29tbWl0KExv Z2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCXsKIAkJ Zm9yIChpID0gMDsgaSA8IHBhcnNlZC0+bnN1YnhhY3RzOyBpKyspCiAJCXsKLQkJCVJlb3JkZXJC dWZmZXJGb3JnZXQoY3R4LT5yZW9yZGVyLCBwYXJzZWQtPnN1YnhhY3RzW2ldLCBidWYtPm9yaWdw dHIpOworCQkJUmVvcmRlckJ1ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFj dHNbaV0sIGJ1Zi0+b3JpZ3B0ciwKKwkJCQkJCQkJY29tbWl0X3RpbWUpOwogCQl9Ci0JCVJlb3Jk ZXJCdWZmZXJGb3JnZXQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+b3JpZ3B0cik7CisJCVJlb3Jk ZXJCdWZmZXJGb3JnZXQoY3R4LT5yZW9yZGVyLCB4aWQsIGJ1Zi0+b3JpZ3B0ciwgY29tbWl0X3Rp bWUpOwogCiAJCXJldHVybjsKIAl9CkBAIC04MjIsMTAgKzgyMywxMSBAQCBEZWNvZGVBYm9ydChM b2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsIFhMb2dSZWNvcmRCdWZmZXIgKmJ1ZiwKIAkJZm9y IChpID0gMDsgaSA8IHBhcnNlZC0+bnN1YnhhY3RzOyBpKyspCiAJCXsKIAkJCVJlb3JkZXJCdWZm ZXJBYm9ydChjdHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sCi0JCQkJCQkJICAgYnVm LT5yZWNvcmQtPkVuZFJlY1B0cik7CisJCQkJCQkJICAgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwg YWJvcnRfdGltZSk7CiAJCX0KIAotCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5yZW9yZGVyLCB4 aWQsIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIpOworCQlSZW9yZGVyQnVmZmVyQWJvcnQoY3R4LT5y ZW9yZGVyLCB4aWQsIGJ1Zi0+cmVjb3JkLT5FbmRSZWNQdHIsCisJCQkJCQkgICBhYm9ydF90aW1l KTsKIAl9CiAKIAkvKiB1cGRhdGUgdGhlIGRlY29kaW5nIHN0YXRzICovCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKaW5kZXggNzM1OTRjNi4uMWY4ZWEwMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwpAQCAtNTUsNiArNTUs NyBAQAogLyogR1VDIHZhcmlhYmxlcyAqLwogaW50CQkJbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25f d29ya2VycyA9IDQ7CiBpbnQJCQltYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAy OworaW50CQkJbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7 CiAKIExvZ2ljYWxSZXBXb3JrZXIgKk15TG9naWNhbFJlcFdvcmtlciA9IE5VTEw7CiAKQEAgLTE1 Miw4ICsxNTMsMTAgQEAgZ2V0X3N1YnNjcmlwdGlvbl9saXN0KHZvaWQpCiAgKgogICogVGhpcyBp cyBvbmx5IG5lZWRlZCBmb3IgY2xlYW5pbmcgdXAgdGhlIHNoYXJlZCBtZW1vcnkgaW4gY2FzZSB0 aGUgd29ya2VyCiAgKiBmYWlscyB0byBhdHRhY2guCisgKgorICogUmV0dXJuIHdoZXRoZXIgdGhl IGF0dGFjaCB3YXMgc3VjY2Vzc2Z1bC4KICAqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBib29sCiBX YWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2goTG9naWNhbFJlcFdvcmtlciAqd29ya2VyLAog CQkJCQkJCSAgIHVpbnQxNiBnZW5lcmF0aW9uLAogCQkJCQkJCSAgIEJhY2tncm91bmRXb3JrZXJI YW5kbGUgKmhhbmRsZSkKQEAgLTE2OSwxMSArMTcyLDExIEBAIFdhaXRGb3JSZXBsaWNhdGlvbldv cmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAKIAkJTFdMb2NrQWNxdWlyZShM b2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKIAotCQkvKiBXb3JrZXIgZWl0aGVyIGRp ZWQgb3IgaGFzIHN0YXJ0ZWQ7IG5vIG5lZWQgdG8gZG8gYW55dGhpbmcuICovCisJCS8qIFdvcmtl ciBlaXRoZXIgZGllZCBvciBoYXMgc3RhcnRlZC4gUmV0dXJuIGZhbHNlIGlmIGRpZWQuICovCiAJ CWlmICghd29ya2VyLT5pbl91c2UgfHwgd29ya2VyLT5wcm9jKQogCQl7CiAJCQlMV0xvY2tSZWxl YXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJCXJldHVybjsKKwkJCXJldHVybiB3b3JrZXIt PmluX3VzZTsKIAkJfQogCiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwpA QCAtMTg4LDcgKzE5MSw3IEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2Fs UmVwV29ya2VyICp3b3JrZXIsCiAJCQlpZiAoZ2VuZXJhdGlvbiA9PSB3b3JrZXItPmdlbmVyYXRp b24pCiAJCQkJbG9naWNhbHJlcF93b3JrZXJfY2xlYW51cCh3b3JrZXIpOwogCQkJTFdMb2NrUmVs ZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7Ci0JCQlyZXR1cm47CisJCQlyZXR1cm4gZmFsc2U7 CiAJCX0KIAogCQkvKgpAQCAtMjEwLDYgKzIxMyw4IEBAIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtl ckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIsCiAvKgogICogV2Fsa3MgdGhlIHdvcmtl cnMgYXJyYXkgYW5kIHNlYXJjaGVzIGZvciBvbmUgdGhhdCBtYXRjaGVzIGdpdmVuCiAgKiBzdWJz Y3JpcHRpb24gaWQgYW5kIHJlbGlkLgorICoKKyAqIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4g dGhlIGxlYWRlciBhcHBseSB3b3JrZXIgb3IgdGFibGUgc3luYyB3b3JrZXIuCiAgKi8KIExvZ2lj YWxSZXBXb3JrZXIgKgogbG9naWNhbHJlcF93b3JrZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxp ZCwgYm9vbCBvbmx5X3J1bm5pbmcpCkBAIC0yMjQsNiArMjI5LDEwIEBAIGxvZ2ljYWxyZXBfd29y a2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQogCXsKIAkJ TG9naWNhbFJlcFdvcmtlciAqdyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOwogCisJCS8q IFNraXAgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gKi8KKwkJaWYgKGlzUGFyYWxsZWxBcHBseVdv cmtlcih3KSkKKwkJCWNvbnRpbnVlOworCiAJCWlmICh3LT5pbl91c2UgJiYgdy0+c3ViaWQgPT0g c3ViaWQgJiYgdy0+cmVsaWQgPT0gcmVsaWQgJiYKIAkJCSghb25seV9ydW5uaW5nIHx8IHctPnBy b2MpKQogCQl7CkBAIC0yNjAsMTEgKzI2OSwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcnNfZmluZChP aWQgc3ViaWQsIGJvb2wgb25seV9ydW5uaW5nKQogfQogCiAvKgotICogU3RhcnQgbmV3IGFwcGx5 IGJhY2tncm91bmQgd29ya2VyLCBpZiBwb3NzaWJsZS4KKyAqIFN0YXJ0IG5ldyBsb2dpY2FsIHJl cGxpY2F0aW9uIGJhY2tncm91bmQgd29ya2VyLCBpZiBwb3NzaWJsZS4KKyAqCisgKiBSZXR1cm5z IHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZS4KICAqLwotdm9pZAorYm9vbAogbG9n aWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1 Ym5hbWUsIE9pZCB1c2VyaWQsCi0JCQkJCQkgT2lkIHJlbGlkKQorCQkJCQkJIE9pZCByZWxpZCwg ZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKQogewogCUJhY2tncm91bmRXb3JrZXIgYmd3OwogCUJh Y2tncm91bmRXb3JrZXJIYW5kbGUgKmJnd19oYW5kbGU7CkBAIC0yNzMsNyArMjg0LDEyIEBAIGxv Z2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpz dWJuYW1lLCBPaWQgdXNlcmlkLAogCWludAkJCXNsb3QgPSAwOwogCUxvZ2ljYWxSZXBXb3JrZXIg KndvcmtlciA9IE5VTEw7CiAJaW50CQkJbnN5bmN3b3JrZXJzOworCWludAkJCW5wYXJhbGxlbGFw cGx5d29ya2VyczsKIAlUaW1lc3RhbXBUeiBub3c7CisJYm9vbAkJaXNfcGFyYWxsZWxfYXBwbHlf d29ya2VyID0gKHN1Yndvcmtlcl9kc20gIT0gRFNNX0hBTkRMRV9JTlZBTElEKTsKKworCS8qIFNh bml0eSBjaGVjayAtIHRhYmxlc3luYyB3b3JrZXIgY2Fubm90IGJlIGEgc3Vid29ya2VyICovCisJ QXNzZXJ0KCEoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyICYmIE9pZElzVmFsaWQocmVsaWQpKSk7 CiAKIAllcmVwb3J0KERFQlVHMSwKIAkJCShlcnJtc2dfaW50ZXJuYWwoInN0YXJ0aW5nIGxvZ2lj YWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIiwKQEAgLTM1MSw3 ICszNjcsMjYgQEAgcmV0cnk6CiAJaWYgKE9pZElzVmFsaWQocmVsaWQpICYmIG5zeW5jd29ya2Vy cyA+PSBtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pCiAJewogCQlMV0xvY2tSZWxl YXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7CisJ fQorCisJbnBhcmFsbGVsYXBwbHl3b3JrZXJzID0gbG9naWNhbHJlcF9wYV93b3JrZXJfY291bnQo c3ViaWQpOworCisJLyoKKwkgKiBSZXR1cm4gZmFsc2UgaWYgdGhlIG51bWJlciBvZiBwYXJhbGxl bCBhcHBseSB3b3JrZXJzIHJlYWNoZWQgdGhlIGxpbWl0CisJICogcGVyIHN1YnNjcmlwdGlvbi4K KwkgKi8KKwlpZiAoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyICYmCisJCW5wYXJhbGxlbGFwcGx5 d29ya2VycyA+PSBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uKQor CXsKKwkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisKKwkJZXJlcG9ydChM T0csCisJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdVUkFUSU9OX0xJTUlUX0VYQ0VFREVEKSwK KwkJCQkgZXJybXNnKCJvdXQgb2YgcGFyYWxsZWwgYXBwbHkgd29ya2VycyIpLAorCQkJCSBlcnJo aW50KCJZb3UgbWlnaHQgbmVlZCB0byBpbmNyZWFzZSBtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vy c19wZXJfc3Vic2NyaXB0aW9uLiIpKSk7CisKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qCkBA IC0zNjUsNyArNDAwLDcgQEAgcmV0cnk6CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05GSUdVUkFU SU9OX0xJTUlUX0VYQ0VFREVEKSwKIAkJCQkgZXJybXNnKCJvdXQgb2YgbG9naWNhbCByZXBsaWNh dGlvbiB3b3JrZXIgc2xvdHMiKSwKIAkJCQkgZXJyaGludCgiWW91IG1pZ2h0IG5lZWQgdG8gaW5j cmVhc2UgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vycy4iKSkpOwotCQlyZXR1cm47CisJ CXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKiBQcmVwYXJlIHRoZSB3b3JrZXIgc2xvdC4gKi8KQEAg LTM4MCw2ICs0MTUsOCBAQCByZXRyeToKIAl3b3JrZXItPnJlbHN0YXRlID0gU1VCUkVMX1NUQVRF X1VOS05PV047CiAJd29ya2VyLT5yZWxzdGF0ZV9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKIAl3 b3JrZXItPnN0cmVhbV9maWxlc2V0ID0gTlVMTDsKKwl3b3JrZXItPmFwcGx5X2xlYWRlcl9waWQg PSBpc19wYXJhbGxlbF9hcHBseV93b3JrZXIgPyBNeVByb2NQaWQgOiBJbnZhbGlkUGlkOworCXdv cmtlci0+cGFyYWxsZWxfYXBwbHkgPSBpc19wYXJhbGxlbF9hcHBseV93b3JrZXI7CiAJd29ya2Vy LT5sYXN0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCVRJTUVTVEFNUF9OT0JFR0lOKHdvcmtl ci0+bGFzdF9zZW5kX3RpbWUpOwogCVRJTUVTVEFNUF9OT0JFR0lOKHdvcmtlci0+bGFzdF9yZWN2 X3RpbWUpOwpAQCAtMzk3LDE5ICs0MzQsMzQgQEAgcmV0cnk6CiAJCUJHV09SS0VSX0JBQ0tFTkRf REFUQUJBU0VfQ09OTkVDVElPTjsKIAliZ3cuYmd3X3N0YXJ0X3RpbWUgPSBCZ1dvcmtlclN0YXJ0 X1JlY292ZXJ5RmluaXNoZWQ7CiAJc25wcmludGYoYmd3LmJnd19saWJyYXJ5X25hbWUsIEJHV19N QVhMRU4sICJwb3N0Z3JlcyIpOwotCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdX X01BWExFTiwgIkFwcGx5V29ya2VyTWFpbiIpOworCisJaWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dv cmtlcikKKwkJc25wcmludGYoYmd3LmJnd19mdW5jdGlvbl9uYW1lLCBCR1dfTUFYTEVOLCAiUGFy YWxsZWxBcHBseVdvcmtlck1haW4iKTsKKwllbHNlCisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rp b25fbmFtZSwgQkdXX01BWExFTiwgIkFwcGx5V29ya2VyTWFpbiIpOworCiAJaWYgKE9pZElzVmFs aWQocmVsaWQpKQogCQlzbnByaW50ZihiZ3cuYmd3X25hbWUsIEJHV19NQVhMRU4sCiAJCQkJICJs b2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uICV1IHN5bmMgJXUiLCBz dWJpZCwgcmVsaWQpOworCWVsc2UgaWYgKGlzX3BhcmFsbGVsX2FwcGx5X3dvcmtlcikKKwkJc25w cmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAorCQkJCSAibG9naWNhbCByZXBsaWNhdGlv biBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSIsIHN1YmlkKTsKIAll bHNlCiAJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKLQkJCQkgImxvZ2ljYWwg cmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7Ci0Jc25wcmlu dGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVOLCAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIi KTsKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRp b24gJXUiLCBzdWJpZCk7CisKKwlpZiAoaXNfcGFyYWxsZWxfYXBwbHlfd29ya2VyKQorCQlzbnBy aW50ZihiZ3cuYmd3X3R5cGUsIEJHV19NQVhMRU4sICJsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFs bGVsIHdvcmtlciIpOworCWVsc2UKKwkJc25wcmludGYoYmd3LmJnd190eXBlLCBCR1dfTUFYTEVO LCAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIiKTsKIAogCWJndy5iZ3dfcmVzdGFydF90aW1l ID0gQkdXX05FVkVSX1JFU1RBUlQ7CiAJYmd3LmJnd19ub3RpZnlfcGlkID0gTXlQcm9jUGlkOwog CWJndy5iZ3dfbWFpbl9hcmcgPSBJbnQzMkdldERhdHVtKHNsb3QpOwogCisJaWYgKGlzX3BhcmFs bGVsX2FwcGx5X3dvcmtlcikKKwkJbWVtY3B5KGJndy5iZ3dfZXh0cmEsICZzdWJ3b3JrZXJfZHNt LCBzaXplb2YoZHNtX2hhbmRsZSkpOworCiAJaWYgKCFSZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5k V29ya2VyKCZiZ3csICZiZ3dfaGFuZGxlKSkKIAl7CiAJCS8qIEZhaWxlZCB0byBzdGFydCB3b3Jr ZXIsIHNvIGNsZWFuIHVwIHRoZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTQyMiwzMyArNDc0LDIzIEBA IHJldHJ5OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURF RCksCiAJCQkJIGVycm1zZygib3V0IG9mIGJhY2tncm91bmQgd29ya2VyIHNsb3RzIiksCiAJCQkJ IGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF93b3JrZXJfcHJvY2Vzc2Vz LiIpKSk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qIE5vdyB3YWl0IHVu dGlsIGl0IGF0dGFjaGVzLiAqLwotCVdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3Jr ZXIsIGdlbmVyYXRpb24sIGJnd19oYW5kbGUpOworCXJldHVybiBXYWl0Rm9yUmVwbGljYXRpb25X b3JrZXJBdHRhY2god29ya2VyLCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsKIH0KIAogLyoKLSAq IFN0b3AgdGhlIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJpZC9yZWxpZCwgaWYg YW55LCBhbmQgd2FpdCB1bnRpbAotICogaXQgZGV0YWNoZXMgZnJvbSB0aGUgc2xvdC4KKyAqIElu dGVybmFsIGZ1bmN0aW9uIHRvIHN0b3AgdGhlIHdvcmtlciBhbmQgd2FpdCB1bnRpbCBpdCBkZXRh Y2hlcyBmcm9tIHRoZQorICogc2xvdC4KICAqLwotdm9pZAotbG9naWNhbHJlcF93b3JrZXJfc3Rv cChPaWQgc3ViaWQsIE9pZCByZWxpZCkKK3N0YXRpYyB2b2lkCitsb2dpY2FscmVwX3dvcmtlcl9z dG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwgaW50IHNpZ25vKQogewotCUxv Z2ljYWxSZXBXb3JrZXIgKndvcmtlcjsKIAl1aW50MTYJCWdlbmVyYXRpb247CiAKLQlMV0xvY2tB Y3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwotCi0Jd29ya2VyID0gbG9n aWNhbHJlcF93b3JrZXJfZmluZChzdWJpZCwgcmVsaWQsIGZhbHNlKTsKLQotCS8qIE5vIHdvcmtl ciwgbm90aGluZyB0byBkby4gKi8KLQlpZiAoIXdvcmtlcikKLQl7Ci0JCUxXTG9ja1JlbGVhc2Uo TG9naWNhbFJlcFdvcmtlckxvY2spOwotCQlyZXR1cm47Ci0JfQorCUFzc2VydChMV0xvY2tIZWxk QnlNZUluTW9kZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKSk7CiAKIAkvKgogCSAq IFJlbWVtYmVyIHdoaWNoIGdlbmVyYXRpb24gd2FzIG91ciB3b3JrZXIgc28gd2UgY2FuIGNoZWNr IGlmIHdoYXQgd2Ugc2VlCkBAIC00ODYsMTAgKzUyOCw3IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0 b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiAJCSAqIGRpZmZlcmVudCwgbWVhbmluZyB0aGF0IGEg ZGlmZmVyZW50IHdvcmtlciBoYXMgdGFrZW4gdGhlIHNsb3QuCiAJCSAqLwogCQlpZiAoIXdvcmtl ci0+aW5fdXNlIHx8IHdvcmtlci0+Z2VuZXJhdGlvbiAhPSBnZW5lcmF0aW9uKQotCQl7Ci0JCQlM V0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKIAkJCXJldHVybjsKLQkJfQogCiAJ CS8qIFdvcmtlciBoYXMgYXNzaWduZWQgcHJvYywgc28gaXQgaGFzIHN0YXJ0ZWQuICovCiAJCWlm ICh3b3JrZXItPnByb2MpCkBAIC00OTcsNyArNTM2LDcgQEAgbG9naWNhbHJlcF93b3JrZXJfc3Rv cChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAl9CiAKIAkvKiBOb3cgdGVybWluYXRlIHRoZSB3b3Jr ZXIgLi4uICovCi0Ja2lsbCh3b3JrZXItPnByb2MtPnBpZCwgU0lHVEVSTSk7CisJa2lsbCh3b3Jr ZXItPnByb2MtPnBpZCwgc2lnbm8pOwogCiAJLyogLi4uIGFuZCB3YWl0IGZvciBpdCB0byBkaWUu ICovCiAJZm9yICg7OykKQEAgLTUyMyw2ICs1NjIsNTMgQEAgbG9naWNhbHJlcF93b3JrZXJfc3Rv cChPaWQgc3ViaWQsIE9pZCByZWxpZCkKIAogCQlMV0xvY2tBY3F1aXJlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrLCBMV19TSEFSRUQpOwogCX0KK30KKworLyoKKyAqIFN0b3AgdGhlIGxvZ2ljYWwgcmVw bGljYXRpb24gd29ya2VyIGZvciBzdWJpZC9yZWxpZCwgaWYgYW55LgorICovCit2b2lkCitsb2dp Y2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwgT2lkIHJlbGlkKQoreworCUxvZ2ljYWxSZXBX b3JrZXIgKndvcmtlcjsKKworCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExX X1NIQVJFRCk7CisKKwl3b3JrZXIgPSBsb2dpY2FscmVwX3dvcmtlcl9maW5kKHN1YmlkLCByZWxp ZCwgZmFsc2UpOworCisJaWYgKHdvcmtlcikKKwl7CisJCUFzc2VydCghaXNQYXJhbGxlbEFwcGx5 V29ya2VyKHdvcmtlcikpOworCQlsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKHdvcmtl ciwgU0lHVEVSTSk7CisJfQorCisJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7 Cit9CisKKy8qCisgKiBTdG9wIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBjb3JyZXNwb25kaW5nIHRvIHRoZQorICogaW5wdXQgc2xvdCBudW1iZXIuCisgKgor ICogTm9kZSB0aGF0IHRoZSBmdW5jdGlvbiBzZW5kcyBTSUdJTlQgaW5zdGVhZCBvZiBTSUdURVJN IHRvIHRoZSBwYXJhbGxlbCBhcHBseQorICogd29ya2VyIHNvIHRoYXQgdGhlIHdvcmtlciBleGl0 cyBjbGVhbmx5LgorICovCit2b2lkCitsb2dpY2FscmVwX3BhX3dvcmtlcl9zdG9wKGludCBzbG90 X25vLCB1aW50MTYgZ2VuZXJhdGlvbikKK3sKKwlMb2dpY2FsUmVwV29ya2VyICp3b3JrZXI7CisK KwlBc3NlcnQoc2xvdF9ubyA+PSAwICYmIHNsb3Rfbm8gPCBtYXhfbG9naWNhbF9yZXBsaWNhdGlv bl93b3JrZXJzKTsKKworCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NI QVJFRCk7CisKKwl3b3JrZXIgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tzbG90X25vXTsKKwlB c3NlcnQoaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtlcikpOworCisJLyoKKwkgKiBPbmx5IHN0 b3AgdGhlIHdvcmtlciBpZiB0aGUgZ2VuZXJhdGlvbiBtYXRjaGVzIGFuZCB0aGUgd29ya2VyIGlz IGFsaXZlLgorCSAqLworCWlmICh3b3JrZXItPmdlbmVyYXRpb24gPT0gZ2VuZXJhdGlvbiAmJiB3 b3JrZXItPnByb2MpCisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwod29ya2VyLCBT SUdJTlQpOwogCiAJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CiB9CkBAIC01 OTUsMTEgKzY4MSwzMiBAQCBsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2goaW50IHNsb3QpCiB9CiAK IC8qCi0gKiBEZXRhY2ggdGhlIHdvcmtlciAoY2xlYW5zIHVwIHRoZSB3b3JrZXIgaW5mbykuCisg KiBTdG9wIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGlmIGFueSwgYW5kIGRldGFjaCB0aGUg bGVhZGVyIGFwcGx5IHdvcmtlcgorICogKGNsZWFucyB1cCB0aGUgd29ya2VyIGluZm8pLgogICov CiBzdGF0aWMgdm9pZAogbG9naWNhbHJlcF93b3JrZXJfZGV0YWNoKHZvaWQpCiB7CisJLyogU3Rv cCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gKi8KKwlpZiAoYW1fbGVhZGVyX2FwcGx5X3dv cmtlcigpKQorCXsKKwkJTGlzdAkgICAqd29ya2VyczsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJ TFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKworCQl3b3Jr ZXJzID0gbG9naWNhbHJlcF93b3JrZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwg dHJ1ZSk7CisJCWZvcmVhY2gobGMsIHdvcmtlcnMpCisJCXsKKwkJCUxvZ2ljYWxSZXBXb3JrZXIg KncgPSAoTG9naWNhbFJlcFdvcmtlciAqKSBsZmlyc3QobGMpOworCisJCQlpZiAoaXNQYXJhbGxl bEFwcGx5V29ya2VyKHcpKQorCQkJCWxvZ2ljYWxyZXBfd29ya2VyX3N0b3BfaW50ZXJuYWwodywg U0lHVEVSTSk7CisJCX0KKworCQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsK Kwl9CisKIAkvKiBCbG9jayBjb25jdXJyZW50IGFjY2Vzcy4gKi8KIAlMV0xvY2tBY3F1aXJlKExv Z2ljYWxSZXBXb3JrZXJMb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC02MjIsNiArNzI5LDggQEAg bG9naWNhbHJlcF93b3JrZXJfY2xlYW51cChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCiAJd29y a2VyLT51c2VyaWQgPSBJbnZhbGlkT2lkOwogCXdvcmtlci0+c3ViaWQgPSBJbnZhbGlkT2lkOwog CXdvcmtlci0+cmVsaWQgPSBJbnZhbGlkT2lkOworCXdvcmtlci0+YXBwbHlfbGVhZGVyX3BpZCA9 IEludmFsaWRQaWQ7CisJd29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZhbHNlOwogfQogCiAvKgpA QCAtNjUzLDYgKzc2MiwxMyBAQCBsb2dpY2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERh dHVtIGFyZykKIAlpZiAoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCAhPSBOVUxM KQogCQlGaWxlU2V0RGVsZXRlQWxsKE15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQp OwogCisJLyoKKwkgKiBTZXNzaW9uIGxldmVsIGxvY2tzIG1heSBiZSBhY3F1aXJlZCBvdXRzaWRl IG9mIGEgdHJhbnNhY3Rpb24gaW4gcGFyYWxsZWwKKwkgKiBhcHBseSBtb2RlIGFuZCB3aWxsIG5v dCBiZSByZWxlYXNlZCB3aGVuIHRoZSB3b3JrZXIgdGVybWluYXRlcywgc28KKwkgKiBtYW51YWxs eSByZWxlYXNlIGFsbCBsb2NrcyBiZWZvcmUgdGhlIHdvcmtlciBleGl0cy4KKwkgKi8KKwlMb2Nr UmVsZWFzZUFsbChERUZBVUxUX0xPQ0tNRVRIT0QsIHRydWUpOworCiAJQXBwbHlMYXVuY2hlcldh a2V1cCgpOwogfQogCkBAIC02ODEsNiArNzk3LDMzIEBAIGxvZ2ljYWxyZXBfc3luY193b3JrZXJf Y291bnQoT2lkIHN1YmlkKQogfQogCiAvKgorICogQ291bnQgdGhlIG51bWJlciBvZiByZWdpc3Rl cmVkIChidXQgbm90IG5lY2Vzc2FyaWx5IHJ1bm5pbmcpIHBhcmFsbGVsIGFwcGx5CisgKiB3b3Jr ZXJzIGZvciBhIHN1YnNjcmlwdGlvbi4KKyAqLworaW50Citsb2dpY2FscmVwX3BhX3dvcmtlcl9j b3VudChPaWQgc3ViaWQpCit7CisJaW50CQkJaTsKKwlpbnQJCQlyZXMgPSAwOworCisJQXNzZXJ0 KExXTG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2NrKSk7CisKKwkvKgorCSAqIFNjYW4g YWxsIGF0dGFjaGVkIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMsIG9ubHkgY291bnRpbmcgdGhvc2Ug d2hpY2gKKwkgKiBoYXZlIHRoZSBnaXZlbiBzdWJzY3JpcHRpb24gaWQuCisJICovCisJZm9yIChp ID0gMDsgaSA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7IGkrKykKKwl7CisJCUxv Z2ljYWxSZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsKKworCQlpZiAo dy0+c3ViaWQgPT0gc3ViaWQgJiYgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHcpKQorCQkJcmVzKys7 CisJfQorCisJcmV0dXJuIHJlczsKK30KKworLyoKICAqIEFwcGx5TGF1bmNoZXJTaG1lbVNpemUK ICAqCQlDb21wdXRlIHNwYWNlIG5lZWRlZCBmb3IgcmVwbGljYXRpb24gbGF1bmNoZXIgc2hhcmVk IG1lbW9yeQogICovCkBAIC04NjksNyArMTAxMiw3IEBAIEFwcGx5TGF1bmNoZXJNYWluKERhdHVt IG1haW5fYXJnKQogCQkJCQl3YWl0X3RpbWUgPSB3YWxfcmV0cmlldmVfcmV0cnlfaW50ZXJ2YWw7 CiAKIAkJCQkJbG9naWNhbHJlcF93b3JrZXJfbGF1bmNoKHN1Yi0+ZGJpZCwgc3ViLT5vaWQsIHN1 Yi0+bmFtZSwKLQkJCQkJCQkJCQkJIHN1Yi0+b3duZXIsIEludmFsaWRPaWQpOworCQkJCQkJCQkJ CQkgc3ViLT5vd25lciwgSW52YWxpZE9pZCwgRFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJCQl9CiAJ CQl9CiAKQEAgLTk1Miw2ICsxMDk1LDEwIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19G VU5DVElPTl9BUkdTKQogCQlpZiAoT2lkSXNWYWxpZChzdWJpZCkgJiYgd29ya2VyLnN1YmlkICE9 IHN1YmlkKQogCQkJY29udGludWU7CiAKKwkJLyogU2tpcCBpZiB0aGlzIGlzIGEgcGFyYWxsZWwg YXBwbHkgd29ya2VyICovCisJCWlmIChpc1BhcmFsbGVsQXBwbHlXb3JrZXIoJndvcmtlcikpCisJ CQljb250aW51ZTsKKwogCQl3b3JrZXJfcGlkID0gd29ya2VyLnByb2MtPnBpZDsKIAogCQl2YWx1 ZXNbMF0gPSBPYmplY3RJZEdldERhdHVtKHdvcmtlci5zdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9tZXNvbi5idWlsZAppbmRleCA3NzM1ODNhLi4yNmJmYzBlIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL21lc29uLmJ1aWxkCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbWVzb24uYnVpbGQKQEAgLTEsNCArMSw1 IEBACiBiYWNrZW5kX3NvdXJjZXMgKz0gZmlsZXMoCisgICdhcHBseXBhcmFsbGVsd29ya2VyLmMn LAogICAnZGVjb2RlLmMnLAogICAnbGF1bmNoZXIuYycsCiAgICdsb2dpY2FsLmMnLApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKaW5kZXggZjEzNGU0NC4uOGIwODM3OCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCkBAIC0xMDc1LDEyICsx MDc1LDIwIEBAIFJlcGxpY2F0aW9uT3JpZ2luRXhpdENsZWFudXAoaW50IGNvZGUsIERhdHVtIGFy ZykKICAqIGFycmF5IGRvZXNuJ3QgaGF2ZSB0byBiZSBzZWFyY2hlZCB3aGVuIGNhbGxpbmcKICAq IHJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKCkuCiAgKgotICogT2J2aW91c2x5IG9ubHkgb25l IHN1Y2ggY2FjaGVkIG9yaWdpbiBjYW4gZXhpc3QgcGVyIHByb2Nlc3MgYW5kIHRoZSBjdXJyZW50 Ci0gKiBjYWNoZWQgdmFsdWUgY2FuIG9ubHkgYmUgc2V0IGFnYWluIGFmdGVyIHRoZSBwcmV2aW91 cyB2YWx1ZSBpcyB0b3JuIGRvd24KLSAqIHdpdGggcmVwbG9yaWdpbl9zZXNzaW9uX3Jlc2V0KCku CisgKiBOb3JtYWxseSBvbmx5IG9uZSBzdWNoIGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0IHBlciBw cm9jZXNzIHNvIHRoZSBjYWNoZWQKKyAqIHZhbHVlIGNhbiBvbmx5IGJlIHNldCBhZ2FpbiBhZnRl ciB0aGUgcHJldmlvdXMgdmFsdWUgaXMgdG9ybiBkb3duIHdpdGgKKyAqIHJlcGxvcmlnaW5fc2Vz c2lvbl9yZXNldCgpLiBGb3IgdGhpcyBub3JtYWwgY2FzZSBwYXNzIGFjcXVpcmVkX2J5ID0gMAor ICogKG1lYW5pbmcgdGhlIHNsb3QgaXMgbm90IGFsbG93ZWQgdG8gYmUgYWxyZWFkeSBhY3F1aXJl ZCBieSBhbm90aGVyIHByb2Nlc3MpLgorICoKKyAqIEhvd2V2ZXIsIHNvbWV0aW1lcyBtdWx0aXBs ZSBwcm9jZXNzZXMgY2FuIHNhZmVseSByZS11c2UgdGhlIHNhbWUgb3JpZ2luIHNsb3QKKyAqIChm b3IgZXhhbXBsZSwgbXVsdGlwbGUgcGFyYWxsZWwgYXBwbHkgcHJvY2Vzc2VzIGNhbiBzYWZlbHkg dXNlIHRoZSBzYW1lCisgKiBvcmlnaW4sIHByb3ZpZGVkIHRoZXkgbWFpbnRhaW4gY29tbWl0IG9y ZGVyIGJ5IGFsbG93aW5nIG9ubHkgb25lIHByb2Nlc3MgdG8KKyAqIGNvbW1pdCBhdCBhIHRpbWUp LiBGb3IgdGhpcyBjYXNlIHRoZSBmaXJzdCBwcm9jZXNzIG11c3QgcGFzcyBhY3F1aXJlZF9ieSA9 CisgKiAwLCBhbmQgdGhlbiB0aGUgb3RoZXIgcHJvY2Vzc2VzIHNoYXJpbmcgdGhhdCBzYW1lIG9y aWdpbiBjYW4gcGFzcworICogYWNxdWlyZWRfYnkgPSBQSUQgb2YgdGhlIGZpcnN0IHByb2Nlc3Mu CiAgKi8KIHZvaWQKLXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKQor cmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUsIGludCBhY3F1aXJlZF9i eSkKIHsKIAlzdGF0aWMgYm9vbCByZWdpc3RlcmVkX2NsZWFudXA7CiAJaW50CQkJaTsKQEAgLTEx MjIsNyArMTEzMCw3IEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2Rl KQogCQlpZiAoY3Vyc3RhdGUtPnJvaWRlbnQgIT0gbm9kZSkKIAkJCWNvbnRpbnVlOwogCi0JCWVs c2UgaWYgKGN1cnN0YXRlLT5hY3F1aXJlZF9ieSAhPSAwKQorCQllbHNlIGlmIChjdXJzdGF0ZS0+ YWNxdWlyZWRfYnkgIT0gMCAmJiBhY3F1aXJlZF9ieSA9PSAwKQogCQl7CiAJCQllcmVwb3J0KEVS Uk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9JTl9VU0UpLApAQCAtMTE1Myw3ICsx MTYxLDExIEBAIHJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChSZXBPcmlnaW5JZCBub2RlKQogCiAJ QXNzZXJ0KHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPnJvaWRlbnQgIT0gSW52YWxpZFJlcE9y aWdpbklkKTsKIAotCXNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVpcmVkX2J5ID0gTXlQ cm9jUGlkOworCWlmIChhY3F1aXJlZF9ieSA9PSAwKQorCQlzZXNzaW9uX3JlcGxpY2F0aW9uX3N0 YXRlLT5hY3F1aXJlZF9ieSA9IE15UHJvY1BpZDsKKwllbHNlIGlmIChzZXNzaW9uX3JlcGxpY2F0 aW9uX3N0YXRlLT5hY3F1aXJlZF9ieSAhPSBhY3F1aXJlZF9ieSkKKwkJZWxvZyhFUlJPUiwgImNv dWxkIG5vdCBmaW5kIHJlcGxpY2F0aW9uIHN0YXRlIHNsb3QgZm9yIHJlcGxpY2F0aW9uIG9yaWdp biB3aXRoIE9JRCAldSB3aGljaCB3YXMgYWNxdWlyZWQgYnkgJWQiLAorCQkJIG5vZGUsIGFjcXVp cmVkX2J5KTsKIAogCUxXTG9ja1JlbGVhc2UoUmVwbGljYXRpb25PcmlnaW5Mb2NrKTsKIApAQCAt MTMzNyw3ICsxMzQ5LDcgQEAgcGdfcmVwbGljYXRpb25fb3JpZ2luX3Nlc3Npb25fc2V0dXAoUEdf RlVOQ1RJT05fQVJHUykKIAogCW5hbWUgPSB0ZXh0X3RvX2NzdHJpbmcoKHRleHQgKikgRGF0dW1H ZXRQb2ludGVyKFBHX0dFVEFSR19EQVRVTSgwKSkpOwogCW9yaWdpbiA9IHJlcGxvcmlnaW5fYnlf bmFtZShuYW1lLCBmYWxzZSk7Ci0JcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbik7CisJ cmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbiwgMCk7CiAKIAlyZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luID0gb3JpZ2luOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3Rv LmMKaW5kZXggZmY4NTEzZS4uZDYxNjBlNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvcHJvdG8uYwpAQCAtMTE2MywxMCArMTE2MywxNCBAQCBsb2dpY2FscmVwX3JlYWRfc3RyZWFt X2NvbW1pdChTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwQ29tbWl0RGF0YSAqY29tbWl0X2RhdGEp CiAvKgogICogV3JpdGUgU1RSRUFNIEFCT1JUIHRvIHRoZSBvdXRwdXQgc3RyZWFtLiBOb3RlIHRo YXQgeGlkIGFuZCBzdWJ4aWQgd2lsbCBiZQogICogc2FtZSBmb3IgdGhlIHRvcC1sZXZlbCB0cmFu c2FjdGlvbiBhYm9ydC4KKyAqCisgKiBJZiB3cml0ZV9hYm9ydF9pbmZvIGlzIHRydWUsIHNlbmQg dGhlIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZSBmaWVsZHMsCisgKiBvdGhlcndpc2UgZG9uJ3Qu CiAgKi8KIHZvaWQKIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0 LCBUcmFuc2FjdGlvbklkIHhpZCwKLQkJCQkJCQkgIFRyYW5zYWN0aW9uSWQgc3VieGlkKQorCQkJ CQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQsIFhMb2dSZWNQdHIgYWJvcnRfbHNuLAorCQkJCQkJ CSAgVGltZXN0YW1wVHogYWJvcnRfdGltZSwgYm9vbCB3cml0ZV9hYm9ydF9pbmZvKQogewogCXBx X3NlbmRieXRlKG91dCwgTE9HSUNBTF9SRVBfTVNHX1NUUkVBTV9BQk9SVCk7CiAKQEAgLTExNzUs MTkgKzExNzksNDAgQEAgbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBv dXQsIFRyYW5zYWN0aW9uSWQgeGlkLAogCS8qIHRyYW5zYWN0aW9uIElEICovCiAJcHFfc2VuZGlu dDMyKG91dCwgeGlkKTsKIAlwcV9zZW5kaW50MzIob3V0LCBzdWJ4aWQpOworCisJaWYgKHdyaXRl X2Fib3J0X2luZm8pCisJeworCQlwcV9zZW5kaW50NjQob3V0LCBhYm9ydF9sc24pOworCQlwcV9z ZW5kaW50NjQob3V0LCBhYm9ydF90aW1lKTsKKwl9CiB9CiAKIC8qCiAgKiBSZWFkIFNUUkVBTSBB Qk9SVCBmcm9tIHRoZSBvdXRwdXQgc3RyZWFtLgorICoKKyAqIElmIHJlYWRfYWJvcnRfaW5mbyBp cyB0cnVlLCByZWFkIHRoZSBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUgZmllbGRzLAorICogb3Ro ZXJ3aXNlIGRvbid0LgogICovCiB2b2lkCi1sb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KFN0 cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAq c3VieGlkKQorbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLAorCQkJ CQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJCSBib29s IHJlYWRfYWJvcnRfaW5mbykKIHsKLQlBc3NlcnQoeGlkICYmIHN1YnhpZCk7CisJQXNzZXJ0KGFi b3J0X2RhdGEpOworCisJYWJvcnRfZGF0YS0+eGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwlh Ym9ydF9kYXRhLT5zdWJ4aWQgPSBwcV9nZXRtc2dpbnQoaW4sIDQpOwogCi0JKnhpZCA9IHBxX2dl dG1zZ2ludChpbiwgNCk7Ci0JKnN1YnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7CisJaWYgKHJl YWRfYWJvcnRfaW5mbykKKwl7CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9IHBxX2dldG1zZ2lu dDY0KGluKTsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfdGltZSA9IHBxX2dldG1zZ2ludDY0KGluKTsK Kwl9CisJZWxzZQorCXsKKwkJYWJvcnRfZGF0YS0+YWJvcnRfbHNuID0gSW52YWxpZFhMb2dSZWNQ dHI7CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSAwOworCX0KIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jIGIvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9yZGVyYnVmZmVyLmMKaW5kZXggMzFmNzM4 MS4uZGVkNDZhOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9y ZW9yZGVyYnVmZmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZW9y ZGVyYnVmZmVyLmMKQEAgLTI4NDYsNyArMjg0Niw4IEBAIFJlb3JkZXJCdWZmZXJGaW5pc2hQcmVw YXJlZChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAgKiBkaXNrLgogICov CiB2b2lkCi1SZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9u SWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKK1Jlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVy ICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCSAgIFRpbWVzdGFt cFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRlckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yODU3LDYg KzI4NTgsOCBAQCBSZW9yZGVyQnVmZmVyQWJvcnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0 aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIAlpZiAodHhuID09IE5VTEwpCiAJCXJldHVybjsK IAorCXR4bi0+eGFjdF90aW1lLmFib3J0X3RpbWUgPSBhYm9ydF90aW1lOworCiAJLyogRm9yIHN0 cmVhbWVkIHRyYW5zYWN0aW9ucyBub3RpZnkgdGhlIHJlbW90ZSBub2RlIGFib3V0IHRoZSBhYm9y dC4gKi8KIAlpZiAocmJ0eG5faXNfc3RyZWFtZWQodHhuKSkKIAl7CkBAIC0yOTMxLDcgKzI5MzQs OCBAQCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9u SWQgb2xkZXN0UnVubmluZ1hpZCkKICAqIHRvIHRoaXMgeGlkIG1pZ2h0IHJlLWNyZWF0ZSB0aGUg dHJhbnNhY3Rpb24gaW5jb21wbGV0ZWx5LgogICovCiB2b2lkCi1SZW9yZGVyQnVmZmVyRm9yZ2V0 KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCitS ZW9yZGVyQnVmZmVyRm9yZ2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwg WExvZ1JlY1B0ciBsc24sCisJCQkJCVRpbWVzdGFtcFR6IGFib3J0X3RpbWUpCiB7CiAJUmVvcmRl ckJ1ZmZlclRYTiAqdHhuOwogCkBAIC0yOTQyLDYgKzI5NDYsOCBAQCBSZW9yZGVyQnVmZmVyRm9y Z2V0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24p CiAJaWYgKHR4biA9PSBOVUxMKQogCQlyZXR1cm47CiAKKwl0eG4tPnhhY3RfdGltZS5hYm9ydF90 aW1lID0gYWJvcnRfdGltZTsKKwogCS8qIEZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgbm90aWZ5 IHRoZSByZW1vdGUgbm9kZSBhYm91dCB0aGUgYWJvcnQuICovCiAJaWYgKHJidHhuX2lzX3N0cmVh bWVkKHR4bikpCiAJCXJiLT5zdHJlYW1fYWJvcnQocmIsIHR4biwgbHNuKTsKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCmluZGV4IDk0ZTgxM2EuLmRhZWVhNmMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMK KysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwpAQCAtMTQs NyArMTQsNyBAQAogICoJICBUaGUgaW5pdGlhbCBkYXRhIHN5bmNocm9uaXphdGlvbiBpcyBkb25l IHNlcGFyYXRlbHkgZm9yIGVhY2ggdGFibGUsCiAgKgkgIGluIGEgc2VwYXJhdGUgYXBwbHkgd29y a2VyIHRoYXQgb25seSBmZXRjaGVzIHRoZSBpbml0aWFsIHNuYXBzaG90IGRhdGEKICAqCSAgZnJv bSB0aGUgcHVibGlzaGVyIGFuZCB0aGVuIHN5bmNocm9uaXplcyB0aGUgcG9zaXRpb24gaW4gdGhl IHN0cmVhbSB3aXRoCi0gKgkgIHRoZSBtYWluIGFwcGx5IHdvcmtlci4KKyAqCSAgdGhlIGxlYWRl ciBhcHBseSB3b3JrZXIuCiAgKgogICoJICBUaGVyZSBhcmUgc2V2ZXJhbCByZWFzb25zIGZvciBk b2luZyB0aGUgc3luY2hyb25pemF0aW9uIHRoaXMgd2F5OgogICoJICAgLSBJdCBhbGxvd3MgdXMg dG8gcGFyYWxsZWxpemUgdGhlIGluaXRpYWwgZGF0YSBzeW5jaHJvbml6YXRpb24KQEAgLTE1Myw3 ICsxNTMsNyBAQCBmaW5pc2hfc3luY193b3JrZXIodm9pZCkKIAkJCQkJZ2V0X3JlbF9uYW1lKE15 TG9naWNhbFJlcFdvcmtlci0+cmVsaWQpKSkpOwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCi0JLyogRmluZCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgYW5kIHNpZ25hbCBpdC4gKi8KKwkv KiBGaW5kIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBzaWduYWwgaXQuICovCiAJbG9naWNh bHJlcF93b3JrZXJfd2FrZXVwKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIEludmFsaWRPaWQp OwogCiAJLyogU3RvcCBncmFjZWZ1bGx5ICovCkBAIC02MDksNyArNjA5LDggQEAgcHJvY2Vzc19z eW5jaW5nX3RhYmxlc19mb3JfYXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIAkJCQkJCQkJ CQkJCSBNeVN1YnNjcmlwdGlvbi0+b2lkLAogCQkJCQkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT5u YW1lLAogCQkJCQkJCQkJCQkJIE15TG9naWNhbFJlcFdvcmtlci0+dXNlcmlkLAotCQkJCQkJCQkJ CQkJIHJzdGF0ZS0+cmVsaWQpOworCQkJCQkJCQkJCQkJIHJzdGF0ZS0+cmVsaWQsCisJCQkJCQkJ CQkJCQkgRFNNX0hBTkRMRV9JTlZBTElEKTsKIAkJCQkJCWhlbnRyeS0+bGFzdF9zdGFydF90aW1l ID0gbm93OwogCQkJCQl9CiAJCQkJfQpAQCAtNjMwLDYgKzYzMSwxNCBAQCBwcm9jZXNzX3N5bmNp bmdfdGFibGVzX2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogdm9pZAogcHJvY2Vz c19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogeworCS8qCisJICogU2tp cCBmb3IgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBiZWNhdXNlIHRoZXkgb25seSBvcGVyYXRlIG9u IHRhYmxlcyB0aGF0CisJICogYXJlIGluIGEgUkVBRFkgc3RhdGUuIFNlZSBwYV9jYW5fc3RhcnQo KSBhbmQKKwkgKiBzaG91bGRfYXBwbHlfY2hhbmdlc19mb3JfcmVsKCkuCisJICovCisJaWYgKGFt X3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCQlyZXR1cm47CisKIAlpZiAoYW1fdGFibGVzeW5j X3dvcmtlcigpKQogCQlwcm9jZXNzX3N5bmNpbmdfdGFibGVzX2Zvcl9zeW5jKGN1cnJlbnRfbHNu KTsKIAllbHNlCkBAIC0xMjQ3LDcgKzEyNTYsNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQo WExvZ1JlY1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCiAJLyoKIAkgKiBIZXJlIHdlIHVzZSB0aGUg c2xvdCBuYW1lIGluc3RlYWQgb2YgdGhlIHN1YnNjcmlwdGlvbiBuYW1lIGFzIHRoZQotCSAqIGFw cGxpY2F0aW9uX25hbWUsIHNvIHRoYXQgaXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIG1haW4gYXBw bHkgd29ya2VyLAorCSAqIGFwcGxpY2F0aW9uX25hbWUsIHNvIHRoYXQgaXQgaXMgZGlmZmVyZW50 IGZyb20gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIsCiAJICogc28gdGhhdCBzeW5jaHJvbm91cyBy ZXBsaWNhdGlvbiBjYW4gZGlzdGluZ3Vpc2ggdGhlbS4KIAkgKi8KIAlMb2dSZXBXb3JrZXJXYWxS Y3ZDb25uID0KQEAgLTEyOTUsNyArMTMwNCw3IEBAIExvZ2ljYWxSZXBTeW5jVGFibGVTdGFydChY TG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MpCiAJCSAqIHRpbWUgdGhpcyB0YWJsZXN5bmMgd2Fz IGxhdW5jaGVkLgogCQkgKi8KIAkJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2J5X25hbWUob3JpZ2lu bmFtZSwgZmFsc2UpOwotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQpOworCQly ZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIDApOwogCQlyZXBsb3JpZ2luX3Nlc3Np b25fb3JpZ2luID0gb3JpZ2luaWQ7CiAJCSpvcmlnaW5fc3RhcnRwb3MgPSByZXBsb3JpZ2luX3Nl c3Npb25fZ2V0X3Byb2dyZXNzKGZhbHNlKTsKIApAQCAtMTQwNiw3ICsxNDE1LDcgQEAgTG9naWNh bFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBvcykKIAkJCQkJCSAg IHRydWUgLyogZ28gYmFja3dhcmQgKi8gLCB0cnVlIC8qIFdBTCBsb2cgKi8gKTsKIAkJVW5sb2Nr UmVsYXRpb25PaWQoUmVwbGljYXRpb25PcmlnaW5SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2Nr KTsKIAotCQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQpOworCQlyZXBsb3JpZ2lu X3Nlc3Npb25fc2V0dXAob3JpZ2luaWQsIDApOwogCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2lu ID0gb3JpZ2luaWQ7CiAJfQogCWVsc2UKQEAgLTE0NjEsOCArMTQ3MCw4IEBAIGNvcHlfdGFibGVf ZG9uZToKIAlTcGluTG9ja1JlbGVhc2UoJk15TG9naWNhbFJlcFdvcmtlci0+cmVsbXV0ZXgpOwog CiAJLyoKLQkgKiBGaW5hbGx5LCB3YWl0IHVudGlsIHRoZSBtYWluIGFwcGx5IHdvcmtlciB0ZWxs cyB1cyB0byBjYXRjaCB1cCBhbmQgdGhlbgotCSAqIHJldHVybiB0byBsZXQgTG9naWNhbFJlcEFw cGx5TG9vcCBkbyBpdC4KKwkgKiBGaW5hbGx5LCB3YWl0IHVudGlsIHRoZSBsZWFkZXIgYXBwbHkg d29ya2VyIHRlbGxzIHVzIHRvIGNhdGNoIHVwIGFuZAorCSAqIHRoZW4gcmV0dXJuIHRvIGxldCBM b2dpY2FsUmVwQXBwbHlMb29wIGRvIGl0LgogCSAqLwogCXdhaXRfZm9yX3dvcmtlcl9zdGF0ZV9j aGFuZ2UoU1VCUkVMX1NUQVRFX0NBVENIVVApOwogCXJldHVybiBzbG90bmFtZTsKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IGU0OGEzZjUuLjMyMDgxZWYgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKKysrIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYwpAQCAtMjIsOCArMjIsNTQg QEAKICAqIFNUUkVBTUVEIFRSQU5TQUNUSU9OUwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg KiBTdHJlYW1lZCB0cmFuc2FjdGlvbnMgKGxhcmdlIHRyYW5zYWN0aW9ucyBleGNlZWRpbmcgYSBt ZW1vcnkgbGltaXQgb24gdGhlCi0gKiB1cHN0cmVhbSkgYXJlIG5vdCBhcHBsaWVkIGltbWVkaWF0 ZWx5LCBidXQgaW5zdGVhZCwgdGhlIGRhdGEgaXMgd3JpdHRlbgotICogdG8gdGVtcG9yYXJ5IGZp bGVzIGFuZCB0aGVuIGFwcGxpZWQgYXQgb25jZSB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZl cy4KKyAqIHVwc3RyZWFtKSBhcmUgYXBwbGllZCB1c2luZyBvbmUgb2YgdHdvIGFwcHJvYWNoZXM6 CisgKgorICogMSkgUGFyYWxsZWwgYXBwbHkgd29ya2VycworICoKKyAqIElmIHN0cmVhbWluZyA9 IHBhcmFsbGVsLCB3ZSBhc3NpZ24gYSBuZXcgcGFyYWxsZWwgYXBwbHkgd29ya2VyIChpZgorICog YXZhaWxhYmxlKSBhcyBzb29uIGFzIHRoZSB4YWN0J3MgZmlyc3Qgc3RyZWFtIGlzIHJlY2VpdmVk LiBUaGUgbGVhZGVyIGFwcGx5CisgKiB3b3JrZXIgd2lsbCBzZW5kIGNoYW5nZXMgdG8gdGhpcyBu ZXcgd29ya2VyIHZpYSBzaGFyZWQgbWVtb3J5LiBXZSBrZWVwIHRoaXMKKyAqIHdvcmtlciBhc3Np Z25lZCB0aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2Fp dCBmb3IKKyAqIHRoZSB3b3JrZXIgdG8gZmluaXNoIGF0IGNvbW1pdC4gVGhpcyBwcmVzZXJ2ZXMg Y29tbWl0IG9yZGVyaW5nIGFuZCBhdm9pZHMKKyAqIGZpbGUgSS9PIGluIG1vc3QgY2FzZXMsIGFs dGhvdWdoIHdlIHN0aWxsIG5lZWQgdG8gc3BpbGwgdG8gYSBmaWxlIGlmIHRoZXJlCisgKiBpcyBu byB3b3JrZXIgYXZhaWxhYmxlLiBJdCBpcyBpbXBvcnRhbnQgdG8gbWFpbnRhaW4gY29tbWl0IG9y ZGVyIHRvIGF2b2lkCisgKiBmYWlsdXJlcyBkdWUgdG8gKGEpIHRyYW5zYWN0aW9uIGRlcGVuZGVu Y2llcywgc2F5IGlmIHdlIGluc2VydCBhIHJvdyBpbiB0aGUKKyAqIGZpcnN0IHRyYW5zYWN0aW9u IGFuZCB1cGRhdGUgaXQgaW4gdGhlIHNlY29uZCB0cmFuc2FjdGlvbiB0aGVuIGFsbG93aW5nIHRv CisgKiBhcHBseSBib3RoIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvIGZhaWx1cmUgaW4gdGhlIHVw ZGF0ZS4gKGIpIGRlYWRsb2NrcywKKyAqIGFsbG93aW5nIHRyYW5zYWN0aW9ucyB0aGF0IHVwZGF0 ZSB0aGUgc2FtZSBzZXQgb2Ygcm93cy90YWJsZXMgaW4gb3Bwb3NpdGUKKyAqIG9yZGVyIHRvIGJl IGFwcGxpZWQgaW4gcGFyYWxsZWwgY2FuIGxlYWQgdG8gZGVhZGxvY2tzLgorICoKKyAqIFdlIG1h aW50YWluIGEgd29ya2VyIHBvb2wgdG8gYXZvaWQgcmVzdGFydGluZyB3b3JrZXJzIGZvciBlYWNo IHN0cmVhbWluZworICogdHJhbnNhY3Rpb24uIFdlIG1haW50YWluIGVhY2ggd29ya2VyJ3MgaW5m b3JtYXRpb24gaW4gdGhlCisgKiBQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QuIEFmdGVyIHN1Y2Nl c3NmdWxseSBsYXVuY2hpbmcgYSBuZXcgd29ya2VyLCBpdHMKKyAqIGluZm9ybWF0aW9uIGlzIGFk ZGVkIHRvIHRoZSBQYXJhbGxlbEFwcGx5V29ya2Vyc0xpc3QuIE9uY2UgdGhlIHdvcmtlcgorICog ZmluaXNoZXMgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLCB3ZSBtYXJrIGl0IGF2YWlsYWJsZSBm b3IgcmUtdXNlLiBOb3csCisgKiBiZWZvcmUgc3RhcnRpbmcgYSBuZXcgd29ya2VyIHRvIGFwcGx5 IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHdlIGNoZWNrCisgKiB0aGUgbGlzdCBmb3IgYW55 IGF2YWlsYWJsZSB3b3JrZXIuIE5vdGUgdGhhdCB3ZSBtYWludGFpbiBhIG1heGltdW0gb2YgaGFs ZgorICogdGhlIG1heF9wYXJhbGxlbF9hcHBseV93b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gd29y a2VycyBpbiB0aGUgcG9vbCBhbmQKKyAqIGFmdGVyIHRoYXQsIHdlIHNpbXBseSBleGl0IHRoZSB3 b3JrZXIgYWZ0ZXIgYXBwbHlpbmcgdGhlIHRyYW5zYWN0aW9uLgorICoKKyAqIFhYWCBUaGlzIHdv cmtlciBwb29sIHRocmVzaG9sZCBpcyBhIGJpdCBhcmJpdHJhcnkgYW5kIHdlIGNhbiBwcm92aWRl IGEgR1VDCisgKiB2YXJpYWJsZSBmb3IgdGhpcyBpbiB0aGUgZnV0dXJlIGlmIHJlcXVpcmVkLgor ICoKKyAqIFRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIHdpbGwgY3JlYXRlIHNlcGFyYXRlIGR5bmFt aWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50CisgKiB3aGVuIGVhY2ggcGFyYWxsZWwgYXBwbHkgd29y a2VyIHN0YXJ0cy4gVGhlIHJlYXNvbiBmb3IgdGhpcyBkZXNpZ24gaXMgdGhhdAorICogd2UgY2Fu bm90IGNvdW50IGhvdyBtYW55IHdvcmtlcnMgd2lsbCBiZSBzdGFydGVkLiBJdCBtYXkgYmUgcG9z c2libGUgdG8KKyAqIGFsbG9jYXRlIGVub3VnaCBzaGFyZWQgbWVtb3J5IGluIG9uZSBzZWdtZW50 IGJhc2VkIG9uIHRoZSBtYXhpbXVtIG51bWJlciBvZgorICogcGFyYWxsZWwgYXBwbHkgd29ya2Vy cyAobWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiksIGJ1dCB0aGlz CisgKiB3b3VsZCB3YXN0ZSBtZW1vcnkgaWYgbm8gcHJvY2VzcyBpcyBhY3R1YWxseSBzdGFydGVk LgorICoKKyAqIFRoZSBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCB3aWxsIGNvbnRhaW4g KGEpIGEgc2htX21xIHRoYXQgaXMgdXNlZCB0bworICogc2VuZCBjaGFuZ2VzIGluIHRoZSB0cmFu c2FjdGlvbiBmcm9tIGxlYWRlciBhcHBseSB3b3JrZXIgdG8gcGFyYWxsZWwgYXBwbHkKKyAqIHdv cmtlciAoYikgYW5vdGhlciBzaG1fbXEgdGhhdCBpcyB1c2VkIHRvIHNlbmQgZXJyb3JzIChhbmQg b3RoZXIgbWVzc2FnZXMKKyAqIHJlcG9ydGVkIHZpYSBlbG9nL2VyZXBvcnQpIGZyb20gdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlciB0byBsZWFkZXIgYXBwbHkKKyAqIHdvcmtlciAoYykgbmVjZXNz YXJ5IGluZm9ybWF0aW9uIHRvIGJlIHNoYXJlZCBhbW9uZyBwYXJhbGxlbCBhcHBseSB3b3JrZXJz CisgKiBhbmQgbGVhZGVyIGFwcGx5IHdvcmtlciAoaS5lLiBtZW1iZXJzIG9mIFBhcmFsbGVsQXBw bHlXb3JrZXJTaGFyZWQpLgorICoKKyAqIElmIG5vIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBpcyBh dmFpbGFibGUgdG8gaGFuZGxlIHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbgorICogd2UgZm9sbG93 IGFwcHJvYWNoIDIuCisgKgorICogMikgV3JpdGUgdG8gdGVtcG9yYXJ5IGZpbGVzIGFuZCBhcHBs eSB3aGVuIHRoZSBmaW5hbCBjb21taXQgYXJyaXZlcwogICoKICAqIFVubGlrZSB0aGUgcmVndWxh ciAobm9uLXN0cmVhbWVkKSBjYXNlLCBoYW5kbGluZyBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgaGFz CiAgKiB0byBoYW5kbGUgYWJvcnRzIG9mIGJvdGggdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uIGFu ZCBzdWJ0cmFuc2FjdGlvbnMuIFRoaXMKQEAgLTE1MCw2ICsxOTYsNyBAQAogI2luY2x1ZGUgImV4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNsdWRlICJleGVjdXRvci9ub2RlTW9kaWZ5VGFi bGUuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCisjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKICNp bmNsdWRlICJsaWJwcS9wcWZvcm1hdC5oIgogI2luY2x1ZGUgImxpYnBxL3Bxc2lnbmFsLmgiCiAj aW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKQEAgLTIxOSwyMCArMjY2LDM5IEBAIHR5cGVkZWYgc3Ry dWN0IEFwcGx5RXhlY3V0aW9uRGF0YQogCVBhcnRpdGlvblR1cGxlUm91dGluZyAqcHJvdXRlOwkv KiBwYXJ0aXRpb24gcm91dGluZyBpbmZvICovCiB9IEFwcGx5RXhlY3V0aW9uRGF0YTsKIAotLyog U3RydWN0IGZvciBzYXZpbmcgYW5kIHJlc3RvcmluZyBhcHBseSBlcnJjb250ZXh0IGluZm9ybWF0 aW9uICovCi10eXBlZGVmIHN0cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tBcmcKKy8qCisgKiBXaGF0 IGFjdGlvbiB0byB0YWtlIGZvciB0aGUgdHJhbnNhY3Rpb24uCisgKgorICogVFJBTlNfTEVBREVS X0FQUExZOgorICogVGhlIGFjdGlvbiBtZWFucyB0aGF0IHdlIGFyZSBpbiB0aGUgbGVhZGVyIGFw cGx5IHdvcmtlciBhbmQgY2hhbmdlcyBvZiB0aGUKKyAqIHRyYW5zYWN0aW9uIGFyZSBhcHBsaWVk IGRpcmVjdGx5IGJ5IHRoZSB3b3JrZXIuCisgKgorICogVFJBTlNfTEVBREVSX1NFUklBTElaRToK KyAqIFRoZSBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3Jr ZXIgb3IgdGFibGUgc3luYyB3b3JrZXIuCisgKiBDaGFuZ2VzIGFyZSB3cml0dGVuIHRvIHRlbXBv cmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIHdoZW4gdGhlIGZpbmFsCisgKiBjb21taXQgYXJy aXZlcy4KKyAqCisgKiBUUkFOU19MRUFERVJfU0VORF9UT19QQVJBTExFTDoKKyAqIFRoZSBhY3Rp b24gbWVhbnMgdGhhdCB3ZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIG5lZWQg dG8gc2VuZCB0aGUKKyAqIGNoYW5nZXMgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAq CisgKiBUUkFOU19QQVJBTExFTF9BUFBMWToKKyAqIFRoZSBhY3Rpb24gbWVhbnMgdGhhdCB3ZSBh cmUgaW4gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciBhbmQgY2hhbmdlcyBvZiB0aGUKKyAqIHRy YW5zYWN0aW9uIGFyZSBhcHBsaWVkIGRpcmVjdGx5IGJ5IHRoZSB3b3JrZXIuCisgKi8KK3R5cGVk ZWYgZW51bQogewotCUxvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQ7CS8qIDAgaWYgaW52YWxpZCAq LwotCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsOworCS8qIFRoZSBhY3Rpb24gZm9yIG5vbi1z dHJlYW1pbmcgdHJhbnNhY3Rpb25zLiAqLworCVRSQU5TX0xFQURFUl9BUFBMWSwKIAotCS8qIFJl bW90ZSBub2RlIGluZm9ybWF0aW9uICovCi0JaW50CQkJcmVtb3RlX2F0dG51bTsJLyogLTEgaWYg aW52YWxpZCAqLwotCVRyYW5zYWN0aW9uSWQgcmVtb3RlX3hpZDsKLQlYTG9nUmVjUHRyCWZpbmlz aF9sc247Ci0JY2hhcgkgICAqb3JpZ2luX25hbWU7Ci19IEFwcGx5RXJyb3JDYWxsYmFja0FyZzsK KwkvKiBBY3Rpb25zIGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zLiAqLworCVRSQU5TX0xFQURF Ul9TRVJJQUxJWkUsCisJVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwsCisJVFJBTlNfUEFS QUxMRUxfQVBQTFkKK30gVHJhbnNBcHBseUFjdGlvbjsKIAotc3RhdGljIEFwcGx5RXJyb3JDYWxs YmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQorLyogZXJyY29udGV4dCB0cmFja2Vy ICovCitBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnID0KIHsK IAkuY29tbWFuZCA9IDAsCiAJLnJlbCA9IE5VTEwsCkBAIC0yNDIsNyArMzA4LDkgQEAgc3RhdGlj IEFwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBseV9lcnJvcl9jYWxsYmFja19hcmcgPQogCS5vcmln aW5fbmFtZSA9IE5VTEwsCiB9OwogCi1zdGF0aWMgTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VD b250ZXh0ID0gTlVMTDsKK0Vycm9yQ29udGV4dENhbGxiYWNrICphcHBseV9lcnJvcl9jb250ZXh0 X3N0YWNrID0gTlVMTDsKKworTWVtb3J5Q29udGV4dCBBcHBseU1lc3NhZ2VDb250ZXh0ID0gTlVM TDsKIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0ID0gTlVMTDsKIAogLyogcGVyIHN0cmVhbSBj b250ZXh0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zICovCkBAIC0yNTEsMjcgKzMxOSwzNiBA QCBzdGF0aWMgTWVtb3J5Q29udGV4dCBMb2dpY2FsU3RyZWFtaW5nQ29udGV4dCA9IE5VTEw7CiBX YWxSZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJjdkNvbm4gPSBOVUxMOwogCiBTdWJzY3Jp cHRpb24gKk15U3Vic2NyaXB0aW9uID0gTlVMTDsKLXN0YXRpYyBib29sIE15U3Vic2NyaXB0aW9u VmFsaWQgPSBmYWxzZTsKK2Jvb2wJCU15U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsKIAogYm9v bAkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiBzdGF0aWMgWExvZ1JlY1B0ciByZW1v dGVfZmluYWxfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAKIC8qIGZpZWxkcyB2YWxpZCBvbmx5 IHdoZW4gcHJvY2Vzc2luZyBzdHJlYW1lZCB0cmFuc2FjdGlvbiAqLwotc3RhdGljIGJvb2wgaW5f c3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxzZTsKK2Jvb2wJCWluX3N0cmVhbWVkX3RyYW5zYWN0 aW9uID0gZmFsc2U7CiAKIHN0YXRpYyBUcmFuc2FjdGlvbklkIHN0cmVhbV94aWQgPSBJbnZhbGlk VHJhbnNhY3Rpb25JZDsKIAogLyoKKyAqIFRoZSBudW1iZXIgb2YgY2hhbmdlcyBhcHBsaWVkIGJ5 IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBkdXJpbmcgb25lIHN0cmVhbWluZworICogYmxvY2suCisg Ki8KK3N0YXRpYyB1aW50MzIgcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzID0gMDsKKworLyoKICAq IFdlIGVuYWJsZSBza2lwcGluZyBhbGwgZGF0YSBtb2RpZmljYXRpb24gY2hhbmdlcyAoSU5TRVJU LCBVUERBVEUsIGV0Yy4pIGZvcgogICogdGhlIHN1YnNjcmlwdGlvbiBpZiB0aGUgcmVtb3RlIHRy YW5zYWN0aW9uJ3MgZmluaXNoIExTTiBtYXRjaGVzIHRoZSBzdWJza2lwbHNuLgogICogT25jZSB3 ZSBzdGFydCBza2lwcGluZyBjaGFuZ2VzLCB3ZSBkb24ndCBzdG9wIGl0IHVudGlsIHdlIHNraXAg YWxsIGNoYW5nZXMgb2YKICAqIHRoZSB0cmFuc2FjdGlvbiBldmVuIGlmIHBnX3N1YnNjcmlwdGlv biBpcyB1cGRhdGVkIGFuZCBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbgotICogZ2V0cyBjaGFuZ2Vk IG9yIHJlc2V0IGR1cmluZyB0aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2Fz ZXMsIHdlCi0gKiBkb24ndCBza2lwIHJlY2VpdmluZyBhbmQgc3Bvb2xpbmcgdGhlIGNoYW5nZXMg c2luY2Ugd2UgZGVjaWRlIHdoZXRoZXIgb3Igbm90CisgKiBnZXRzIGNoYW5nZWQgb3IgcmVzZXQg ZHVyaW5nIHRoYXQuIEFsc28sIGluIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBjYXNlcyAoc3RyZWFt aW5nID0gb24pLAorICogd2UgZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBj aGFuZ2VzIHNpbmNlIHdlIGRlY2lkZSB3aGV0aGVyIG9yIG5vdAogICogdG8gc2tpcCBhcHBseWlu ZyB0aGUgY2hhbmdlcyB3aGVuIHN0YXJ0aW5nIHRvIGFwcGx5IGNoYW5nZXMuIFRoZSBzdWJza2lw bHNuIGlzCiAgKiBjbGVhcmVkIGFmdGVyIHN1Y2Nlc3NmdWxseSBza2lwcGluZyB0aGUgdHJhbnNh Y3Rpb24gb3IgYXBwbHlpbmcgbm9uLWVtcHR5CiAgKiB0cmFuc2FjdGlvbi4gVGhlIGxhdHRlciBw cmV2ZW50cyB0aGUgbWlzdGFrZW5seSBzcGVjaWZpZWQgc3Vic2tpcGxzbiBmcm9tCi0gKiBiZWlu ZyBsZWZ0LgorICogYmVpbmcgbGVmdC4gTm90ZSB0aGF0IHdlIGNhbm5vdCBza2lwIHRoZSBzdHJl YW1pbmcgdHJhbnNhY3Rpb25zIHdoZW4gdXNpbmcKKyAqIHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMg YmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHRoZSBmaW5pc2ggTFNOIGJlZm9yZSBhcHBseWluZworICog dGhlIGNoYW5nZXMuIFNvLCB3ZSBkb24ndCBzdGFydCBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2hl biBmaW5pc2ggTFNOIGlzIHNldAorICogYnkgdGhlIHVzZXIuCiAgKi8KIHN0YXRpYyBYTG9nUmVj UHRyIHNraXBfeGFjdF9maW5pc2hfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAjZGVmaW5lIGlz X3NraXBwaW5nX2NoYW5nZXMoKSAodW5saWtlbHkoIVhMb2dSZWNQdHJJc0ludmFsaWQoc2tpcF94 YWN0X2ZpbmlzaF9sc24pKSkKQEAgLTMyMSwxMyArMzk4LDggQEAgc3RhdGljIHZvaWQgc2VuZF9m ZWVkYmFjayhYTG9nUmVjUHRyIHJlY3Zwb3MsIGJvb2wgZm9yY2UsIGJvb2wgcmVxdWVzdFJlcGx5 KTsKIAogc3RhdGljIHZvaWQgc3RvcmVfZmx1c2hfcG9zaXRpb24oWExvZ1JlY1B0ciByZW1vdGVf bHNuKTsKIAotc3RhdGljIHZvaWQgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsKLQog c3RhdGljIHZvaWQgRGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCk7CiAKLS8qIHByb3Rv dHlwZSBuZWVkZWQgYmVjYXVzZSBvZiBzdHJlYW1fY29tbWl0ICovCi1zdGF0aWMgdm9pZCBhcHBs eV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOwotCiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfY29t bWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7CiBzdGF0aWMg dm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRh dGEsCiAJCQkJCQkJCQkJIFJlc3VsdFJlbEluZm8gKnJlbGluZm8sCkBAIC0zNjAsMTAgKzQzMiwy NiBAQCBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9pZCk7CiBzdGF0aWMgdm9p ZCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKTsKIAog LyogRnVuY3Rpb25zIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLwotc3RhdGljIHZvaWQgYXBw bHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfYXBw bHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbik7 CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQp OwogCitzdGF0aWMgVHJhbnNBcHBseUFjdGlvbiBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9u KFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCQkJCQkJCSBQYXJhbGxlbEFwcGx5V29ya2VySW5m byAqKndpbmZvKTsKKworLyoKKyAqIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgbG9naWNhbCByZXBs aWNhdGlvbiB3b3JrZXIuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyICoKK2dldF93b3JrZXJfbmFt ZSh2b2lkKQoreworCWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCisJCXJldHVybiBfKCJsb2dp Y2FsIHJlcGxpY2F0aW9uIHRhYmxlIHN5bmNocm9uaXphdGlvbiB3b3JrZXIiKTsKKwllbHNlIGlm IChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuIF8oImxvZ2ljYWwgcmVwbGlj YXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIik7CisJZWxzZQorCQlyZXR1cm4gXygibG9naWNh bCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIiKTsKK30KKwogLyoKICAqIEZvcm0gdGhlIG9yaWdp biBuYW1lIGZvciB0aGUgc3Vic2NyaXB0aW9uLgogICoKQEAgLTM5MywxOSArNDgxLDQxIEBAIFJl cGxpY2F0aW9uT3JpZ2luTmFtZUZvckxvZ2ljYWxSZXAoT2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAog ICoKICAqIFRoaXMgaXMgbWFpbmx5IG5lZWRlZCBmb3IgaW5pdGlhbCByZWxhdGlvbiBkYXRhIHN5 bmMgYXMgdGhhdCBydW5zIGluCiAgKiBzZXBhcmF0ZSB3b3JrZXIgcHJvY2VzcyBydW5uaW5nIGlu IHBhcmFsbGVsIGFuZCB3ZSBuZWVkIHNvbWUgd2F5IHRvIHNraXAKLSAqIGNoYW5nZXMgY29taW5n IHRvIHRoZSBtYWluIGFwcGx5IHdvcmtlciBkdXJpbmcgdGhlIHN5bmMgb2YgYSB0YWJsZS4KKyAq IGNoYW5nZXMgY29taW5nIHRvIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyIGR1cmluZyB0aGUgc3lu YyBvZiBhIHRhYmxlLgogICoKICAqIE5vdGUgd2UgbmVlZCB0byBkbyBzbWFsbGVyIG9yIGVxdWFs cyBjb21wYXJpc29uIGZvciBTWU5DRE9ORSBzdGF0ZSBiZWNhdXNlCiAgKiBpdCBtaWdodCBob2xk IHBvc2l0aW9uIG9mIGVuZCBvZiBpbml0aWFsIHNsb3QgY29uc2lzdGVudCBwb2ludCBXQUwKICAq IHJlY29yZCArIDEgKGllIHN0YXJ0IG9mIG5leHQgcmVjb3JkKSBhbmQgbmV4dCByZWNvcmQgY2Fu IGJlIENPTU1JVCBvZgogICogdHJhbnNhY3Rpb24gd2UgYXJlIG5vdyBwcm9jZXNzaW5nICh3aGlj aCBpcyB3aGF0IHdlIHNldCByZW1vdGVfZmluYWxfbHNuCiAgKiB0byBpbiBhcHBseV9oYW5kbGVf YmVnaW4pLgorICoKKyAqIE5vdGUgdGhhdCBmb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyB0aGF0 IGFyZSBiZWluZyBhcHBsaWVkIGluIHRoZSBwYXJhbGxlbAorICogYXBwbHkgd29ya2VyLCB3ZSBk aXNhbGxvdyBhcHBseWluZyBjaGFuZ2VzIG9uIGEgdGFibGUgdGhhdCBpcyBub3QgaW4KKyAqIHRo ZSBSRUFEWSBzdGF0ZSwgYmVjYXVzZSB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8gYXBwbHkg dGhlIGNoYW5nZSBhcyB3ZQorICogd29uJ3Qga25vdyByZW1vdGVfZmluYWxfbHNuIGJ5IHRoYXQg dGltZS4KKyAqCisgKiBXZSBhbHJlYWR5IGNoZWNrZWQgdGhpcyBpbiBwYV9jYW5fc3RhcnQoKSBi ZWZvcmUgYXNzaWduaW5nIHRoZQorICogc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIHRoZSBwYXJh bGxlbCB3b3JrZXIsIGJ1dCBpdCBhbHNvIG5lZWRzIHRvIGJlCisgKiBjaGVja2VkIGhlcmUgYmVj YXVzZSBpZiB0aGUgdXNlciBleGVjdXRlcyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0gK KyAqIFBVQkxJQ0FUSU9OIGluIHBhcmFsbGVsLCB0aGUgbmV3IHRhYmxlIGNhbiBiZSBhZGRlZCB0 byBwZ19zdWJzY3JpcHRpb25fcmVsCisgKiB3aGlsZSBhcHBseWluZyB0aGlzIHRyYW5zYWN0aW9u LgogICovCiBzdGF0aWMgYm9vbAogc2hvdWxkX2FwcGx5X2NoYW5nZXNfZm9yX3JlbChMb2dpY2Fs UmVwUmVsTWFwRW50cnkgKnJlbCkKIHsKIAlpZiAoYW1fdGFibGVzeW5jX3dvcmtlcigpKQogCQly ZXR1cm4gTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCA9PSByZWwtPmxvY2FscmVsb2lkOworCWVs c2UgaWYgKGFtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpKQorCXsKKwkJaWYgKHJlbC0+c3RhdGUg IT0gU1VCUkVMX1NUQVRFX1JFQURZKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUo RVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCSBlcnJtc2co ImxvZ2ljYWwgcmVwbGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRp b24gXCIlc1wiIHdpbGwgc3RvcCIsCisJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpLAorCQkJ CQkgZXJyZGV0YWlsKCJDYW5ub3QgaGFuZGxlIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0 aW9ucyB1c2luZyBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIHVudGlsIGFsbCB0YWJsZXMgaGF2ZSBi ZWVuIHN5bmNocm9uaXplZC4iKSkpOworCisJCXJldHVybiB0cnVlOworCX0KIAllbHNlCiAJCXJl dHVybiAocmVsLT5zdGF0ZSA9PSBTVUJSRUxfU1RBVEVfUkVBRFkgfHwKIAkJCQkocmVsLT5zdGF0 ZSA9PSBTVUJSRUxfU1RBVEVfU1lOQ0RPTkUgJiYKQEAgLTQ1MSw0MyArNTYxLDg3IEBAIGVuZF9y ZXBsaWNhdGlvbl9zdGVwKHZvaWQpCiB9CiAKIC8qCi0gKiBIYW5kbGUgc3RyZWFtZWQgdHJhbnNh Y3Rpb25zLgorICogSGFuZGxlIHN0cmVhbWVkIHRyYW5zYWN0aW9ucyBmb3IgYm90aCB0aGUgbGVh ZGVyIGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXJzLgogICoK LSAqIElmIGluIHN0cmVhbWluZyBtb2RlIChyZWNlaXZpbmcgYSBibG9jayBvZiBzdHJlYW1lZCB0 cmFuc2FjdGlvbiksIHdlCi0gKiBzaW1wbHkgcmVkaXJlY3QgaXQgdG8gYSBmaWxlIGZvciB0aGUg cHJvcGVyIHRvcGxldmVsIHRyYW5zYWN0aW9uLgorICogSW4gc3RyZWFtaW5nIGNhc2UgKHJlY2Vp dmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgZm9yIHNlcmlhbGl6ZQorICog bW9kZSwgc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHByb3BlciB0b3BsZXZl bCB0cmFuc2FjdGlvbiwgYW5kCisgKiBmb3IgcGFyYWxsZWwgbW9kZSwgdGhlIGxlYWRlciBhcHBs eSB3b3JrZXIgd2lsbCBzZW5kIHRoZSBjaGFuZ2VzIHRvIHBhcmFsbGVsCisgKiBhcHBseSB3b3Jr ZXJzIGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIHdpbGwgZGVmaW5lIHNhdmVwb2ludHMg aWYKKyAqIG5lZWRlZC4gKExPR0lDQUxfUkVQX01TR19SRUxBVElPTiBvciBMT0dJQ0FMX1JFUF9N U0dfVFlQRSBjaGFuZ2VzIHdpbGwgYmUKKyAqIGFwcGxpZWQgYnkgYm90aCBsZWFkZXIgYXBwbHkg d29ya2VyIGFuZCBwYXJhbGxlbCBhcHBseSB3b3JrZXJzKS4KICAqCi0gKiBSZXR1cm5zIHRydWUg Zm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucywgZmFsc2Ugb3RoZXJ3aXNlIChyZWd1bGFyIG1vZGUp LgorICogRm9yIG5vbi1zdHJlYW1lZCB0cmFuc2FjdGlvbnMsIHJldHVybnMgZmFsc2UuCisgKiBG b3Igc3RyZWFtZWQgdHJhbnNhY3Rpb25zLCByZXR1cm5zIHRydWUgaWYgaW4gbGVhZGVyIGFwcGx5 IHdvcmtlciwgZmFsc2UKKyAqIG90aGVyd2lzZS4KKyAqCisgKiBFeGNlcHRpb246IElmIHRoZSBt ZXNzYWdlIGJlaW5nIHByb2Nlc3NlZCBpcyBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04KKyAqIG9y IExPR0lDQUxfUkVQX01TR19UWVBFLCByZXR1cm4gZmFsc2UgZXZlbiBpZiB0aGUgbWVzc2FnZSBu ZWVkcyB0byBiZSBzZW50CisgKiB0byBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KICAqLwogc3Rh dGljIGJvb2wKIGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dpY2FsUmVwTXNnVHlwZSBh Y3Rpb24sIFN0cmluZ0luZm8gcykKIHsKLQlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlv bklkIGN1cnJlbnRfeGlkOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKKwlUcmFu c0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2Fj dGlvbl9hcHBseV9hY3Rpb24oc3RyZWFtX3hpZCwgJndpbmZvKTsKIAogCS8qIG5vdCBpbiBzdHJl YW1pbmcgbW9kZSAqLwotCWlmICghaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJaWYgKGFwcGx5 X2FjdGlvbiA9PSBUUkFOU19MRUFERVJfQVBQTFkpCiAJCXJldHVybiBmYWxzZTsKIAotCUFzc2Vy dChzdHJlYW1fZmQgIT0gTlVMTCk7CiAJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHN0cmVh bV94aWQpKTsKIAogCS8qCiAJICogV2Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgWElEIG9mIHRoZSBz dWJ4YWN0IGFzIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZQogCSAqIG1lc3NhZ2UsIHNvIGV4dHJhY3Qg aXQuCiAJICovCi0JeGlkID0gcHFfZ2V0bXNnaW50KHMsIDQpOworCWN1cnJlbnRfeGlkID0gcHFf Z2V0bXNnaW50KHMsIDQpOwogCi0JaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQorCWlm ICghVHJhbnNhY3Rpb25JZElzVmFsaWQoY3VycmVudF94aWQpKQogCQllcmVwb3J0KEVSUk9SLAog CQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2lu dGVybmFsKCJpbnZhbGlkIHRyYW5zYWN0aW9uIElEIGluIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRy YW5zYWN0aW9uIikpKTsKIAotCS8qIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1 bmxlc3MgYWxyZWFkeSB0aGVyZSkuICovCi0Jc3VieGFjdF9pbmZvX2FkZCh4aWQpOworCXN3aXRj aCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgorCQkJ QXNzZXJ0KHN0cmVhbV9mZCk7CisKKwkJCS8qIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFy cmF5ICh1bmxlc3MgYWxyZWFkeSB0aGVyZSkuICovCisJCQlzdWJ4YWN0X2luZm9fYWRkKGN1cnJl bnRfeGlkKTsKKworCQkJLyogV3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxlICov CisJCQlzdHJlYW1fd3JpdGVfY2hhbmdlKGFjdGlvbiwgcyk7CisJCQlyZXR1cm4gdHJ1ZTsKKwor CQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0KHdpbmZvKTsK KworCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQkvKgorCQkJ ICogWFhYIFRoZSBwdWJsaXNoZXIgc2lkZSBkb2Vzbid0IGFsd2F5cyBzZW5kIHJlbGF0aW9uL3R5 cGUgdXBkYXRlCisJCQkgKiBtZXNzYWdlcyBhZnRlciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9u LCBzbyBhbHNvIHVwZGF0ZSB0aGUKKwkJCSAqIHJlbGF0aW9uL3R5cGUgaW4gbGVhZGVyIGFwcGx5 IHdvcmtlci4gU2VlIGZ1bmN0aW9uCisJCQkgKiBjbGVhbnVwX3JlbF9zeW5jX2NhY2hlLgorCQkJ ICovCisJCQlyZXR1cm4gKGFjdGlvbiAhPSBMT0dJQ0FMX1JFUF9NU0dfUkVMQVRJT04gJiYKKwkJ CQkJYWN0aW9uICE9IExPR0lDQUxfUkVQX01TR19UWVBFKTsKKworCQljYXNlIFRSQU5TX1BBUkFM TEVMX0FQUExZOgorCQkJcGFyYWxsZWxfc3RyZWFtX25jaGFuZ2VzICs9IDE7CiAKLQkvKiB3cml0 ZSB0aGUgY2hhbmdlIHRvIHRoZSBjdXJyZW50IGZpbGUgKi8KLQlzdHJlYW1fd3JpdGVfY2hhbmdl KGFjdGlvbiwgcyk7CisJCQkvKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFjdCBpZiBu ZWVkZWQuICovCisJCQlwYV9zdGFydF9zdWJ0cmFucyhjdXJyZW50X3hpZCwgc3RyZWFtX3hpZCk7 CisJCQlyZXR1cm4gZmFsc2U7CiAKLQlyZXR1cm4gdHJ1ZTsKKwkJZGVmYXVsdDoKKwkJCUFzc2Vy dChmYWxzZSk7CisJCQlyZXR1cm4gZmFsc2U7CQkvKiBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmcg Ki8KKwl9CiB9CiAKIC8qCkBAIC05MjMsOCArMTA3NywxMSBAQCBhcHBseV9oYW5kbGVfcHJlcGFy ZV9pbnRlcm5hbChMb2dpY2FsUmVwUHJlcGFyZWRUeG5EYXRhICpwcmVwYXJlX2RhdGEpCiAJICog QmVnaW5UcmFuc2FjdGlvbkJsb2NrIGlzIG5lY2Vzc2FyeSB0byBiYWxhbmNlIHRoZSBFbmRUcmFu c2FjdGlvbkJsb2NrCiAJICogY2FsbGVkIHdpdGhpbiB0aGUgUHJlcGFyZVRyYW5zYWN0aW9uQmxv Y2sgYmVsb3cuCiAJICovCi0JQmVnaW5UcmFuc2FjdGlvbkJsb2NrKCk7Ci0JQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7IC8qIENvbXBsZXRlcyB0aGUgcHJlY2VkaW5nIEJlZ2luIGNvbW1hbmQu ICovCisJaWYgKCFJc1RyYW5zYWN0aW9uQmxvY2soKSkKKwl7CisJCUJlZ2luVHJhbnNhY3Rpb25C bG9jaygpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsgLyogQ29tcGxldGVzIHRoZSBw cmVjZWRpbmcgQmVnaW4gY29tbWFuZC4gKi8KKwl9CiAKIAkvKgogCSAqIFVwZGF0ZSBvcmlnaW4g c3RhdGUgc28gd2UgY2FuIHJlc3RhcnQgc3RyZWFtaW5nIGZyb20gY29ycmVjdCBwb3NpdGlvbgpA QCAtOTkzLDYgKzExNTAsMTIgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQog CiAvKgogICogSGFuZGxlIGEgQ09NTUlUIFBSRVBBUkVEIG9mIGEgcHJldmlvdXNseSBQUkVQQVJF RCB0cmFuc2FjdGlvbi4KKyAqCisgKiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB3YWl0IGhl cmUgaWYgdGhlIHRyYW5zYWN0aW9uIHdhcyBwcmVwYXJlZCBpbiBhCisgKiBwYXJhbGxlbCBhcHBs eSB3b3JrZXIuIEluIHRoYXQgY2FzZSwgd2UgaGF2ZSBhbHJlYWR5IHdhaXRlZCBmb3IgdGhlIHBy ZXBhcmUKKyAqIHRvIGZpbmlzaCBpbiBhcHBseV9oYW5kbGVfc3RyZWFtX3ByZXBhcmUoKSB3aGlj aCB3aWxsIGVuc3VyZSBhbGwgdGhlCisgKiBvcGVyYXRpb25zIGluIHRoYXQgdHJhbnNhY3Rpb24g aGF2ZSBoYXBwZW5lZCBpbiB0aGUgc3Vic2NyaWJlciwgc28gbm8KKyAqIGNvbmN1cnJlbnQgdHJh bnNhY3Rpb24gY2FuIGNhdXNlIGRlYWRsb2NrIG9yIHRyYW5zYWN0aW9uIGRlcGVuZGVuY3kgaXNz dWVzLgogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVwYXJlZChTdHJp bmdJbmZvIHMpCkBAIC0xMDM2LDYgKzExOTksMTIgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdF9wcmVw YXJlZChTdHJpbmdJbmZvIHMpCiAKIC8qCiAgKiBIYW5kbGUgYSBST0xMQkFDSyBQUkVQQVJFRCBv ZiBhIHByZXZpb3VzbHkgUFJFUEFSRUQgVFJBTlNBQ1RJT04uCisgKgorICogTm90ZSB0aGF0IHdl IGRvbid0IG5lZWQgdG8gd2FpdCBoZXJlIGlmIHRoZSB0cmFuc2FjdGlvbiB3YXMgcHJlcGFyZWQg aW4gYQorICogcGFyYWxsZWwgYXBwbHkgd29ya2VyLiBJbiB0aGF0IGNhc2UsIHdlIGhhdmUgYWxy ZWFkeSB3YWl0ZWQgZm9yIHRoZSBwcmVwYXJlCisgKiB0byBmaW5pc2ggaW4gYXBwbHlfaGFuZGxl X3N0cmVhbV9wcmVwYXJlKCkgd2hpY2ggd2lsbCBlbnN1cmUgYWxsIHRoZQorICogb3BlcmF0aW9u cyBpbiB0aGF0IHRyYW5zYWN0aW9uIGhhdmUgaGFwcGVuZWQgaW4gdGhlIHN1YnNjcmliZXIsIHNv IG5vCisgKiBjb25jdXJyZW50IHRyYW5zYWN0aW9uIGNhbiBjYXVzZSBkZWFkbG9jayBvciB0cmFu c2FjdGlvbiBkZXBlbmRlbmN5IGlzc3Vlcy4KICAqLwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRs ZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCkBAIC0xMDg5LDE1ICsxMjU4LDEzIEBA IGFwcGx5X2hhbmRsZV9yb2xsYmFja19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAKIC8qCiAgKiBI YW5kbGUgU1RSRUFNIFBSRVBBUkUuCi0gKgotICogTG9naWMgaXMgaW4gdHdvIHBhcnRzOgotICog MS4gUmVwbGF5IGFsbCB0aGUgc3Bvb2xlZCBvcGVyYXRpb25zCi0gKiAyLiBNYXJrIHRoZSB0cmFu c2FjdGlvbiBhcyBwcmVwYXJlZAogICovCiBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVh bV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIHsKIAlMb2dpY2FsUmVwUHJlcGFyZWRUeG5EYXRhIHBy ZXBhcmVfZGF0YTsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd2luZm87CisJVHJhbnNBcHBs eUFjdGlvbiBhcHBseV9hY3Rpb247CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJ CWVyZXBvcnQoRVJST1IsCkBAIC0xMTEzLDI0ICsxMjgwLDgyIEBAIGFwcGx5X2hhbmRsZV9zdHJl YW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9wcmVwYXJl KHMsICZwcmVwYXJlX2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QocHJlcGFy ZV9kYXRhLnhpZCwgcHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCWVsb2coREVCVUcxLCAi cmVjZWl2ZWQgcHJlcGFyZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCBwcmVwYXJlX2Rh dGEueGlkKTsKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKHBy ZXBhcmVfZGF0YS54aWQsICZ3aW5mbyk7CiAKLQkvKiBSZXBsYXkgYWxsIHRoZSBzcG9vbGVkIG9w ZXJhdGlvbnMuICovCi0JYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBw cmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJ Y2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgogCi0JLyogTWFyayB0aGUgdHJhbnNhY3Rpb24g YXMgcHJlcGFyZWQuICovCi0JYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnByZXBhcmVf ZGF0YSk7CisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlhbGl6ZWQg dG8gZmlsZSwgc28gcmVwbGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9ucy4KKwkJ CSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJl X2RhdGEucHJlcGFyZV9sc24pOwogCi0JQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCQkv KiBNYXJrIHRoZSB0cmFuc2FjdGlvbiBhcyBwcmVwYXJlZC4gKi8KKwkJCWFwcGx5X2hhbmRsZV9w cmVwYXJlX2ludGVybmFsKCZwcmVwYXJlX2RhdGEpOwogCi0JcGdzdGF0X3JlcG9ydF9zdGF0KGZh bHNlKTsKKwkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0Jc3RvcmVfZmx1c2hfcG9z aXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24ocHJl cGFyZV9kYXRhLmVuZF9sc24pOwogCi0JaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJ CQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKKworCQkJLyogVW5saW5rIHRoZSBmaWxl cyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZvLiAqLworCQkJc3RyZWFt X2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhp ZCk7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgor CQkJQXNzZXJ0KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVj dCBsb2NrIHNvIHRoYXQgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGNhbgorCQkJICogY29udGludWUg dG8gcmVjZWl2ZSBhbmQgYXBwbHkgY2hhbmdlcy4KKwkJCSAqLworCQkJcGFfdW5sb2NrX3N0cmVh bSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1c2l2ZUxvY2spOworCisJCQkvKiBTZW5k IFNUUkVBTSBQUkVQQVJFIG1lc3NhZ2UgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gKi8K KwkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJLyoKKwkJCSAq IEFmdGVyIHNlbmRpbmcgdGhlIGRhdGEgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgd2Fp dCBmb3IKKwkJCSAqIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4gVGhpcyBpcyBuZWNlc3NhcnkgdG8g bWFpbnRhaW4gY29tbWl0CisJCQkgKiBvcmRlciB3aGljaCBhdm9pZHMgZmFpbHVyZXMgZHVlIHRv IHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkJCSAqIGRlYWRsb2Nrcy4KKwkJCSAqLwor CQkJcGFfd2FpdF9mb3JfeGFjdF9maW5pc2god2luZm8pOworCQkJKHZvaWQpIHBhX2ZyZWVfd29y a2VyKHdpbmZvLCBwcmVwYXJlX2RhdGEueGlkKTsKIAotCS8qIHVubGluayB0aGUgZmlsZXMgd2l0 aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KLQlzdHJlYW1fY2xlYW51 cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBwcmVwYXJlX2RhdGEueGlkKTsKKwkJ CWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOworCisJCQlzdG9yZV9mbHVzaF9wb3NpdGlv bihwcmVwYXJlX2RhdGEuZW5kX2xzbik7CisJCQlicmVhazsKKworCQljYXNlIFRSQU5TX1BBUkFM TEVMX0FQUExZOgorCQkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOworCisJCQlsaXN0X2ZyZWUo c3VieGFjdGxpc3QpOworCQkJc3VieGFjdGxpc3QgPSBOSUw7CisKKwkJCS8qIE1hcmsgdGhlIHRy YW5zYWN0aW9uIGFzIHByZXBhcmVkLiAqLworCQkJYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJu YWwoJnByZXBhcmVfZGF0YSk7CisKKwkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisKKwkJCUNv bW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCQlwYV9zZXRfeGFjdF9zdGF0ZShNeVBhcmFs bGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7CisJCQlwYV91bmxvY2tfdHJhbnNh Y3Rpb24oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCQllbG9n KERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21t YW5kIik7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJCWJy ZWFrOworCX0KKworCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKIAkvKiBQcm9jZXNzIGFu eSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXBy b2Nlc3Nfc3luY2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwpAQCAtMTE2Nyw2ICsx MzkyLDggQEAgYXBwbHlfaGFuZGxlX29yaWdpbihTdHJpbmdJbmZvIHMpCiAJCQkJIGVycm1zZ19p bnRlcm5hbCgiT1JJR0lOIG1lc3NhZ2Ugc2VudCBvdXQgb2Ygb3JkZXIiKSkpOwogfQogCisKKwog LyoKICAqIEhhbmRsZSBTVFJFQU0gU1RBUlQgbWVzc2FnZS4KICAqLwpAQCAtMTE3NCwyMSArMTQw MSwxNCBAQCBzdGF0aWMgdm9pZAogYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZv IHMpCiB7CiAJYm9vbAkJZmlyc3Rfc2VnbWVudDsKKwlQYXJhbGxlbEFwcGx5V29ya2VySW5mbyAq d2luZm87CisJVHJhbnNBcHBseUFjdGlvbiBhcHBseV9hY3Rpb247CiAKIAlpZiAoaW5fc3RyZWFt ZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9Q Uk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2dfaW50ZXJuYWwoImR1cGxpY2F0ZSBTVFJF QU0gU1RBUlQgbWVzc2FnZSIpKSk7CiAKLQkvKgotCSAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24g c3RyZWFtIHN0YXJ0LCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUgY29tbWl0dGVkCi0JICogb24g dGhlIHN0cmVhbSBzdG9wIHVubGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4gd2hpY2gg Y2FzZSBpdAotCSAqIHdpbGwgYmUgY29tbWl0dGVkIGFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBt ZXNzYWdlcy4gV2UgbmVlZCB0aGUKLQkgKiB0cmFuc2FjdGlvbiBmb3IgaGFuZGxpbmcgdGhlIGJ1 ZmZpbGUsIHVzZWQgZm9yIHNlcmlhbGl6aW5nIHRoZQotCSAqIHN0cmVhbWluZyBkYXRhIGFuZCBz dWJ4YWN0IGluZm8uCi0JICovCi0JYmVnaW5fcmVwbGljYXRpb25fc3RlcCgpOwotCiAJLyogbm90 aWZ5IGhhbmRsZSBtZXRob2RzIHdlJ3JlIHByb2Nlc3NpbmcgYSByZW1vdGUgdHJhbnNhY3Rpb24g Ki8KIAlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IHRydWU7CiAKQEAgLTEyMDIsMzYgKzE0MjIs OTUgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAKIAlzZXRfYXBw bHlfZXJyb3JfY29udGV4dF94YWN0KHN0cmVhbV94aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKIAot CS8qCi0JICogSW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2 ZW4ndCB5ZXQuIFRoaXMgd2lsbCBiZQotCSAqIHVzZWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24g b2YgdGhlIHdvcmtlciBzbyBjcmVhdGUgaXQgaW4gYSBwZXJtYW5lbnQKLQkgKiBjb250ZXh0LiBX ZSBjcmVhdGUgdGhpcyBvbiB0aGUgdmVyeSBmaXJzdCBzdHJlYW1pbmcgbWVzc2FnZSBmcm9tIGFu eQotCSAqIHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3IgdGhpcyBhbmQgb3RoZXIgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9ucy4KLQkgKiBOb3csIHdlIGNvdWxkIGNyZWF0ZSBhIGZpbGVzZXQg YXQgdGhlIHN0YXJ0IG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQKLQkgKiB0aGVuIHdlIHdvbid0 IGJlIHN1cmUgdGhhdCBpdCB3aWxsIGV2ZXIgYmUgdXNlZC4KLQkgKi8KLQlpZiAoTXlMb2dpY2Fs UmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9PSBOVUxMKQorCS8qIFRyeSB0byBhbGxvY2F0ZSBh IHdvcmtlciBmb3IgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gKi8KKwlpZiAoZmlyc3Rfc2Vn bWVudCkKKwkJcGFfYWxsb2NhdGVfd29ya2VyKHN0cmVhbV94aWQpOworCisJYXBwbHlfYWN0aW9u ID0gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihzdHJlYW1feGlkLCAmd2luZm8pOworCisJ c3dpdGNoIChhcHBseV9hY3Rpb24pCiAJewotCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2Fz ZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgogCi0JCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0 Y2hUbyhBcHBseUNvbnRleHQpOworCQkJLyoKKwkJCSAqIFN0YXJ0IGEgdHJhbnNhY3Rpb24gb24g c3RyZWFtIHN0YXJ0LCB0aGlzIHRyYW5zYWN0aW9uIHdpbGwgYmUKKwkJCSAqIGNvbW1pdHRlZCBv biB0aGUgc3RyZWFtIHN0b3AgdW5sZXNzIGl0IGlzIGEgdGFibGVzeW5jIHdvcmtlciBpbgorCQkJ ICogd2hpY2ggY2FzZSBpdCB3aWxsIGJlIGNvbW1pdHRlZCBhZnRlciBwcm9jZXNzaW5nIGFsbCB0 aGUKKwkJCSAqIG1lc3NhZ2VzLiBXZSBuZWVkIHRoZSB0cmFuc2FjdGlvbiBmb3IgaGFuZGxpbmcg dGhlIGJ1ZmZpbGUsCisJCQkgKiB1c2VkIGZvciBzZXJpYWxpemluZyB0aGUgc3RyZWFtaW5nIGRh dGEgYW5kIHN1YnhhY3QgaW5mby4KKwkJCSAqLworCQkJYmVnaW5fcmVwbGljYXRpb25fc3RlcCgp OwogCi0JCU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9m KEZpbGVTZXQpKTsKLQkJRmlsZVNldEluaXQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmls ZXNldCk7CisJCQkvKgorCQkJICogSW5pdGlhbGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVz ZXQgaWYgd2UgaGF2ZW4ndCB5ZXQuIFRoaXMKKwkJCSAqIHdpbGwgYmUgdXNlZCBmb3IgdGhlIGVu dGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2VyIHNvIGNyZWF0ZSBpdAorCQkJICogaW4gYSBwZXJt YW5lbnQgY29udGV4dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3QKKwkJCSAqIHN0 cmVhbWluZyBtZXNzYWdlIGZyb20gYW55IHRyYW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3Ig dGhpcworCQkJICogYW5kIG90aGVyIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuIE5vdywgd2UgY291 bGQgY3JlYXRlIGEKKwkJCSAqIGZpbGVzZXQgYXQgdGhlIHN0YXJ0IG9mIHRoZSB3b3JrZXIgYXMg d2VsbCBidXQgdGhlbiB3ZSB3b24ndCBiZQorCQkJICogc3VyZSB0aGF0IGl0IHdpbGwgZXZlciBi ZSB1c2VkLgorCQkJICovCisJCQlpZiAoIU15TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVz ZXQpCisJCQl7CisJCQkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAKLQkJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKG9sZGN0eCk7Ci0JfQorCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhB cHBseUNvbnRleHQpOworCisJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9 IHBhbGxvYyhzaXplb2YoRmlsZVNldCkpOworCQkJCUZpbGVTZXRJbml0KE15TG9naWNhbFJlcFdv cmtlci0+c3RyZWFtX2ZpbGVzZXQpOwogCi0JLyogb3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhp cyB0cmFuc2FjdGlvbiAqLwotCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5z dWJpZCwgc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisJCQkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN0eCk7CisJCQl9CiAKLQkvKiBpZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3Qgc2VnbWVu dCwgb3BlbiBleGlzdGluZyBzdWJ4YWN0IGZpbGUgKi8KLQlpZiAoIWZpcnN0X3NlZ21lbnQpCi0J CXN1YnhhY3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQp OworCQkJLyogT3BlbiB0aGUgc3Bvb2wgZmlsZSBmb3IgdGhpcyB0cmFuc2FjdGlvbi4gKi8KKwkJ CXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCwg Zmlyc3Rfc2VnbWVudCk7CiAKLQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX1JVTk5JTkcs IE5VTEwpOworCQkJLyogSWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHNlZ21lbnQsIG9wZW4gZXhp c3Rpbmcgc3VieGFjdCBmaWxlLiAqLworCQkJaWYgKCFmaXJzdF9zZWdtZW50KQorCQkJCXN1Ynhh Y3RfaW5mb19yZWFkKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOwogCi0J ZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwkJCWVuZF9yZXBsaWNhdGlvbl9zdGVwKCk7CisJCQli cmVhazsKKworCQljYXNlIFRSQU5TX0xFQURFUl9TRU5EX1RPX1BBUkFMTEVMOgorCQkJQXNzZXJ0 KHdpbmZvKTsKKworCQkJLyoKKwkJCSAqIFVubG9jayB0aGUgc2hhcmVkIG9iamVjdCBsb2NrIHNv IHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlcgorCQkJICogY2FuIGNvbnRpbnVlIHRvIHJl Y2VpdmUgY2hhbmdlcy4KKwkJCSAqLworCQkJaWYgKCFmaXJzdF9zZWdtZW50KQorCQkJCXBhX3Vu bG9ja19zdHJlYW0od2luZm8tPnNoYXJlZC0+eGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKwor CQkJLyoKKwkJCSAqIEluY3JlbWVudCB0aGUgbnVtYmVyIG9mIHN0cmVhbWluZyBibG9ja3Mgd2Fp dGluZyB0byBiZSBwcm9jZXNzZWQKKwkJCSAqIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKwkJ CSAqLworCQkJcGdfYXRvbWljX2FkZF9mZXRjaF91MzIoJndpbmZvLT5zaGFyZWQtPnBlbmRpbmdf c3RyZWFtX2NvdW50LCAxKTsKKworCQkJcGFfc2VuZF9kYXRhKHdpbmZvLCBzLT5sZW4sIHMtPmRh dGEpOworCisJCQkvKiBDYWNoZSB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciB0aGlzIHRy YW5zYWN0aW9uLiAqLworCQkJc3RyZWFtX2FwcGx5X3dvcmtlciA9IHdpbmZvOworCQkJYnJlYWs7 CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBMWToKKwkJCWlmIChmaXJzdF9zZWdtZW50KQor CQkJeworCQkJCS8qIEhvbGQgdGhlIGxvY2sgdW50aWwgdGhlIGVuZCBvZiB0aGUgdHJhbnNhY3Rp b24uICovCisJCQkJcGFfbG9ja190cmFuc2FjdGlvbihNeVBhcmFsbGVsU2hhcmVkLT54aWQsIEFj Y2Vzc1NoYXJlTG9jayk7CisJCQkJcGFfc2V0X3hhY3Rfc3RhdGUoTXlQYXJhbGxlbFNoYXJlZCwg UEFSQUxMRUxfVFJBTlNfU1RBUlRFRCk7CisJCQl9CisKKwkJCXBhcmFsbGVsX3N0cmVhbV9uY2hh bmdlcyA9IDA7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJ CWJyZWFrOworCX0KKworCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVM TCk7CiB9CiAKIC8qCkBAIC0xMjQwLDU4ICsxNTE5LDk3IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1f c3RhcnQoU3RyaW5nSW5mbyBzKQogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3Rv cChTdHJpbmdJbmZvIHMpCiB7CisJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvOworCVRy YW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOworCiAJaWYgKCFpbl9zdHJlYW1lZF90cmFuc2Fj dGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJ T0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIFNUT1AgbWVzc2FnZSB3aXRo b3V0IFNUUkVBTSBTVEFSVCIpKSk7CiAKLQkvKgotCSAqIENsb3NlIHRoZSBmaWxlIHdpdGggc2Vy aWFsaXplZCBjaGFuZ2VzLCBhbmQgc2VyaWFsaXplIGluZm9ybWF0aW9uIGFib3V0Ci0JICogc3Vi eGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KLQkgKi8KLQlzdWJ4YWN0X2luZm9f d3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7Ci0Jc3RyZWFtX2Ns b3NlX2ZpbGUoKTsKKwlhcHBseV9hY3Rpb24gPSBnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9u KHN0cmVhbV94aWQsICZ3aW5mbyk7CiAKLQkvKiBXZSBtdXN0IGJlIGluIGEgdmFsaWQgdHJhbnNh Y3Rpb24gc3RhdGUgKi8KLQlBc3NlcnQoSXNUcmFuc2FjdGlvblN0YXRlKCkpOworCXN3aXRjaCAo YXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VSSUFMSVpFOgogCi0JLyog Q29tbWl0IHRoZSBwZXItc3RyZWFtIHRyYW5zYWN0aW9uICovCi0JQ29tbWl0VHJhbnNhY3Rpb25D b21tYW5kKCk7CisJCQkvKgorCQkJICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBzZXJpYWxpemVkIGNo YW5nZXMsIGFuZCBzZXJpYWxpemUKKwkJCSAqIGluZm9ybWF0aW9uIGFib3V0IHN1YnhhY3RzIGZv ciB0aGUgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisJCQkgKi8KKwkJCXN1YnhhY3RfaW5mb193cml0 ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKwkJCXN0cmVhbV9jbG9z ZV9maWxlKCk7CiAKLQlpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCQkJLyogV2Ug bXVzdCBiZSBpbiBhIHZhbGlkIHRyYW5zYWN0aW9uIHN0YXRlICovCisJCQlBc3NlcnQoSXNUcmFu c2FjdGlvblN0YXRlKCkpOwogCi0JLyogUmVzZXQgcGVyLXN0cmVhbSBjb250ZXh0ICovCi0JTWVt b3J5Q29udGV4dFJlc2V0KExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0KTsKKwkJCS8qIENvbW1pdCB0 aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAqLworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5k KCk7CisKKwkJCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLworCQkJTWVtb3J5Q29udGV4 dFJlc2V0KExvZ2ljYWxTdHJlYW1pbmdDb250ZXh0KTsKKworCQkJcGdzdGF0X3JlcG9ydF9hY3Rp dml0eShTVEFURV9JRExFLCBOVUxMKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNfTEVBREVS X1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJICogTG9j ayBiZWZvcmUgc2VuZGluZyB0aGUgU1RSRUFNX1NUT1AgbWVzc2FnZSBzbyB0aGF0IHRoZSBsZWFk ZXIKKwkJCSAqIGNhbiBob2xkIHRoZSBsb2NrIGZpcnN0IGFuZCB0aGUgcGFyYWxsZWwgYXBwbHkg d29ya2VyIHdpbGwgd2FpdAorCQkJICogZm9yIGxlYWRlciB0byByZWxlYXNlIHRoZSBsb2NrLgor CQkJICovCisJCQlwYV9sb2NrX3N0cmVhbSh3aW5mby0+c2hhcmVkLT54aWQsIEFjY2Vzc0V4Y2x1 c2l2ZUxvY2spOworCisJCQlwYV9zZW5kX2RhdGEod2luZm8sIHMtPmxlbiwgcy0+ZGF0YSk7CisK KwkJCXN0cmVhbV9hcHBseV93b3JrZXIgPSBOVUxMOworCisJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2 aXR5KFNUQVRFX0lETEUsIE5VTEwpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExF TF9BUFBMWToKKwkJCWVsb2coREVCVUcxLCAiYXBwbGllZCAldSBjaGFuZ2VzIGluIHRoZSBzdHJl YW1pbmcgY2h1bmsiLAorCQkJCSBwYXJhbGxlbF9zdHJlYW1fbmNoYW5nZXMpOworCisJCQkvKgor CQkJICogQnkgdGhlIHRpbWUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIHByb2Nlc3NpbmcgdGhl IGNoYW5nZXMgaW4KKwkJCSAqIHRoZSBjdXJyZW50IHN0cmVhbWluZyBibG9jaywgdGhlIGxlYWRl ciBhcHBseSB3b3JrZXIgbWF5IGhhdmUKKwkJCSAqIHNlbnQgbXVsdGlwbGUgc3RyZWFtaW5nIGJs b2Nrcy4gU28sIHRyeSB0byBsb2NrIG9ubHkgaWYgdGhlcmUKKwkJCSAqIGlzIG5vIG1lc3NhZ2Ug bGVmdCBpbiB0aGUgcXVldWUuCisJCQkgKi8KKwkJCWlmIChwZ19hdG9taWNfc3ViX2ZldGNoX3Uz MigmTXlQYXJhbGxlbFNoYXJlZC0+cGVuZGluZ19zdHJlYW1fY291bnQsIDEpID09IDApCisJCQl7 CisJCQkJcGFfbG9ja19zdHJlYW0oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NTaGFyZUxv Y2spOworCQkJCXBhX3VubG9ja19zdHJlYW0oTXlQYXJhbGxlbFNoYXJlZC0+eGlkLCBBY2Nlc3NT aGFyZUxvY2spOworCQkJfQorCisJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEVJ TlRSQU5TQUNUSU9OLCBOVUxMKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQo ZmFsc2UpOworCQkJYnJlYWs7CisJfQorCisJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSBmYWxz ZTsKIAotCXBnc3RhdF9yZXBvcnRfYWN0aXZpdHkoU1RBVEVfSURMRSwgTlVMTCk7CiAJcmVzZXRf YXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CiAKIC8qCi0gKiBIYW5kbGUgU1RSRUFNIGFi b3J0IG1lc3NhZ2UuCisgKiBIYW5kbGUgU1RSRUFNIEFCT1JUIG1lc3NhZ2Ugd2hlbiB0aGUgdHJh bnNhY3Rpb24gd2FzIHNwaWxsZWQgdG8gZGlzay4KICAqLwogc3RhdGljIHZvaWQKLWFwcGx5X2hh bmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQorc2VyaWFsaXplX3N0cmVhbV9hYm9ydChU cmFuc2FjdGlvbklkIHhpZCwgVHJhbnNhY3Rpb25JZCBzdWJ4aWQpCiB7Ci0JVHJhbnNhY3Rpb25J ZCB4aWQ7Ci0JVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7Ci0KLQlpZiAoaW5fc3RyZWFtZWRfdHJhbnNh Y3Rpb24pCi0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9W SU9MQVRJT04pLAotCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVBTSBBQk9SVCBtZXNzYWdlIHdp dGhvdXQgU1RSRUFNIFNUT1AiKSkpOwotCi0JbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChz LCAmeGlkLCAmc3VieGlkKTsKLQogCS8qCiAJICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2Ft ZSwgaXQncyBpbiBmYWN0IGFib3J0IG9mIHRvcGxldmVsIHhhY3QsIHNvCiAJICoganVzdCBkZWxl dGUgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBpbmZvLgogCSAqLwogCWlmICh4aWQgPT0gc3Vi eGlkKQotCXsKLQkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdCh4aWQsIEludmFsaWRYTG9n UmVjUHRyKTsKIAkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgeGlkKTsKLQl9CiAJZWxzZQogCXsKIAkJLyoKQEAgLTEzMTUsOCArMTYzMyw2IEBAIGFwcGx5 X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQogCQlib29sCQlmb3VuZCA9IGZhbHNl OwogCQljaGFyCQlwYXRoW01BWFBHUEFUSF07CiAKLQkJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRf eGFjdChzdWJ4aWQsIEludmFsaWRYTG9nUmVjUHRyKTsKLQogCQlzdWJpZHggPSAtMTsKIAkJYmVn aW5fcmVwbGljYXRpb25fc3RlcCgpOwogCQlzdWJ4YWN0X2luZm9fcmVhZChNeUxvZ2ljYWxSZXBX b3JrZXItPnN1YmlkLCB4aWQpOwpAQCAtMTM0MSw3ICsxNjU3LDYgQEAgYXBwbHlfaGFuZGxlX3N0 cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCQljbGVhbnVwX3N1YnhhY3RfaW5mbygpOwogCQkJ ZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAkJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwot CQkJcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiAJCQlyZXR1cm47CiAJCX0KIApA QCAtMTM2NCw2ICsxNjc5LDEwMyBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0lu Zm8gcykKIAkJZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21t YW5kKCk7CiAJfQorfQorCisvKgorICogSGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlLgorICov CitzdGF0aWMgdm9pZAorYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCit7 CisJVHJhbnNhY3Rpb25JZCB4aWQ7CisJVHJhbnNhY3Rpb25JZCBzdWJ4aWQ7CisJTG9naWNhbFJl cFN0cmVhbUFib3J0RGF0YSBhYm9ydF9kYXRhOworCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3 aW5mbzsKKwlUcmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKKwlib29sCQl0b3BsZXZlbF94 YWN0OworCisJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQorCQllcmVwb3J0KEVSUk9SLAor CQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkgZXJybXNnX2lu dGVybmFsKCJTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aXRob3V0IFNUUkVBTSBTVE9QIikpKTsKKwor CS8qIFdlIHJlY2VpdmUgYWJvcnQgaW5mb3JtYXRpb24gb25seSB3aGVuIHdlIGNhbiBhcHBseSBp biBwYXJhbGxlbC4gKi8KKwlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZhYm9ydF9k YXRhLAorCQkJCQkJCQkgTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSk7CisKKwl4 aWQgPSBhYm9ydF9kYXRhLnhpZDsKKwlzdWJ4aWQgPSBhYm9ydF9kYXRhLnN1YnhpZDsKKwl0b3Bs ZXZlbF94YWN0ID0gKHhpZCA9PSBzdWJ4aWQpOworCisJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRf eGFjdChzdWJ4aWQsIGFib3J0X2RhdGEuYWJvcnRfbHNuKTsKKworCWFwcGx5X2FjdGlvbiA9IGdl dF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oeGlkLCAmd2luZm8pOworCisJc3dpdGNoIChhcHBs eV9hY3Rpb24pCisJeworCQljYXNlIFRSQU5TX0xFQURFUl9TRVJJQUxJWkU6CisKKwkJCS8qCisJ CQkgKiBXZSBhcmUgaW4gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHRoZSB0cmFuc2FjdGlv biBoYXMgYmVlbgorCQkJICogc2VyaWFsaXplZCB0byBmaWxlLgorCQkJICovCisJCQlzZXJpYWxp emVfc3RyZWFtX2Fib3J0KHhpZCwgc3VieGlkKTsKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNf TEVBREVSX1NFTkRfVE9fUEFSQUxMRUw6CisJCQlBc3NlcnQod2luZm8pOworCisJCQkvKgorCQkJ ICogRm9yIHRoZSBjYXNlIG9mIGFib3J0aW5nIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbiwgdW5s b2NrIHRoZQorCQkJICogc2hhcmVkIG9iamVjdCBsb2NrIHNvIHRoYXQgcGFyYWxsZWwgYXBwbHkg d29ya2VyIGNhbiBjb250aW51ZSB0bworCQkJICogcmVjZWl2ZSBhbmQgYXBwbHkgY2hhbmdlcy4K KwkJCSAqCisJCQkgKiBYWFggRm9yIHRoZSBjYXNlIG9mIGFib3J0aW5nIHRoZSBzdWJ0cmFuc2Fj dGlvbiwgd2Ugb25seQorCQkJICogaW5jcmVtZW50IHRoZSBudW1iZXIgb2Ygc3RyZWFtaW5nIGJs b2NrcyB3aXRob3V0IHJlbGVhc2luZyB0aGUKKwkJCSAqIGxvY2suIFRoaXMgbWF5IHNsaWdodGx5 IGRlbGF5IHRoZSBwcm9jZXNzaW5nIG9mIFNUUkVBTV9BQk9SVAorCQkJICogbWVzc2FnZSBidXQg Y2FuIGVuc3VyZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgd2lsbCB3YWl0CisJCQkg KiBvbiB0aGUgbG9jayBmb3IgdGhlIG5leHQgc2V0IG9mIGNoYW5nZXMgYWZ0ZXIgcHJvY2Vzc2lu ZyB0aGUKKwkJCSAqIFNUUkVBTV9BQk9SVCBtZXNzYWdlLgorCQkJICovCisJCQlpZiAodG9wbGV2 ZWxfeGFjdCkKKwkJCQlwYV91bmxvY2tfc3RyZWFtKHhpZCwgQWNjZXNzRXhjbHVzaXZlTG9jayk7 CisJCQllbHNlCisJCQkJcGdfYXRvbWljX2FkZF9mZXRjaF91MzIoJndpbmZvLT5zaGFyZWQtPnBl bmRpbmdfc3RyZWFtX2NvdW50LCAxKTsKKworCQkJLyogU2VuZCBTVFJFQU0gQUJPUlQgbWVzc2Fn ZSB0byB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLiAqLworCQkJcGFfc2VuZF9kYXRhKHdpbmZv LCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQlpZiAodG9wbGV2ZWxfeGFjdCkKKwkJCQkodm9pZCkg cGFfZnJlZV93b3JrZXIod2luZm8sIHhpZCk7CisKKwkJCWJyZWFrOworCisJCWNhc2UgVFJBTlNf UEFSQUxMRUxfQVBQTFk6CisJCQlwYV9zdHJlYW1fYWJvcnQoJmFib3J0X2RhdGEpOworCisJCQkv KgorCQkJICogV2UgbmVlZCB0byB3YWl0IGFmdGVyIHByb2Nlc3Npbmcgcm9sbGJhY2sgdG8gc2F2 ZXBvaW50IGZvciB0aGUKKwkJCSAqIG5leHQgc2V0IG9mIGNoYW5nZXMuCisJCQkgKgorCQkJICog QnkgdGhlIHRpbWUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGlzIHByb2Nlc3NpbmcgdGhlIGNoYW5n ZXMgaW4KKwkJCSAqIHRoZSBjdXJyZW50IHN0cmVhbWluZyBibG9jaywgdGhlIGxlYWRlciBhcHBs eSB3b3JrZXIgbWF5IGhhdmUKKwkJCSAqIHNlbnQgbXVsdGlwbGUgc3RyZWFtaW5nIGJsb2Nrcy4g U28sIHRyeSB0byBsb2NrIG9ubHkgaWYgdGhlcmUgaXMKKwkJCSAqIG5vIG1lc3NhZ2UgbGVmdCBp biB0aGUgcXVldWUuCisJCQkgKi8KKwkJCWlmICghdG9wbGV2ZWxfeGFjdCAmJgorCQkJCXBnX2F0 b21pY19zdWJfZmV0Y2hfdTMyKCZNeVBhcmFsbGVsU2hhcmVkLT5wZW5kaW5nX3N0cmVhbV9jb3Vu dCwgMSkgPT0gMCkKKwkJCXsKKwkJCQlwYV9sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hhcmVkLT54 aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQkJcGFfdW5sb2NrX3N0cmVhbShNeVBhcmFsbGVsU2hh cmVkLT54aWQsIEFjY2Vzc1NoYXJlTG9jayk7CisJCQl9CisKKwkJCWVsb2coREVCVUcxLCAiZmlu aXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQiKTsKKwkJCWJy ZWFrOworCisJCWRlZmF1bHQ6CisJCQlBc3NlcnQoZmFsc2UpOworCQkJYnJlYWs7CisJfQogCiAJ cmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKCk7CiB9CkBAIC0xNDk1LDYgKzE5MDcsOCBA QCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiB7CiAJVHJhbnNhY3Rp b25JZCB4aWQ7CiAJTG9naWNhbFJlcENvbW1pdERhdGEgY29tbWl0X2RhdGE7CisJUGFyYWxsZWxB cHBseVdvcmtlckluZm8gKndpbmZvOworCVRyYW5zQXBwbHlBY3Rpb24gYXBwbHlfYWN0aW9uOwog CiAJaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQogCQllcmVwb3J0KEVSUk9SLApAQCAtMTUw NCwxNCArMTkxOCw3NCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMp CiAJeGlkID0gbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9jb21taXQocywgJmNvbW1pdF9kYXRhKTsK IAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xz bik7CiAKLQllbG9nKERFQlVHMSwgInJlY2VpdmVkIGNvbW1pdCBmb3Igc3RyZWFtZWQgdHJhbnNh Y3Rpb24gJXUiLCB4aWQpOworCWFwcGx5X2FjdGlvbiA9IGdldF90cmFuc2FjdGlvbl9hcHBseV9h Y3Rpb24oeGlkLCAmd2luZm8pOwogCi0JYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1p dF9kYXRhLmNvbW1pdF9sc24pOworCXN3aXRjaCAoYXBwbHlfYWN0aW9uKQorCXsKKwkJY2FzZSBU UkFOU19MRUFERVJfU0VSSUFMSVpFOgogCi0JYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgm Y29tbWl0X2RhdGEpOworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJp YWxpemVkIHRvIGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVkIG9wZXJhdGlv bnMuCisJCQkgKi8KKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMoeGlkLCBjb21taXRfZGF0YS5j b21taXRfbHNuKTsKKworCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2Rh dGEpOworCisJCQkvKiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFu ZCBzdWJ4YWN0IGluZm8uICovCisJCQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBX b3JrZXItPnN1YmlkLCB4aWQpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19MRUFERVJfU0VO RF9UT19QQVJBTExFTDoKKwkJCUFzc2VydCh3aW5mbyk7CisKKwkJCS8qCisJCQkgKiBVbmxvY2sg dGhlIHNoYXJlZCBvYmplY3QgbG9jayBzbyB0aGF0IHBhcmFsbGVsIGFwcGx5IHdvcmtlciBjYW4K KwkJCSAqIGNvbnRpbnVlIHRvIHJlY2VpdmUgYW5kIGFwcGx5IGNoYW5nZXMuCisJCQkgKi8KKwkJ CXBhX3VubG9ja19zdHJlYW0oeGlkLCBBY2Nlc3NFeGNsdXNpdmVMb2NrKTsKKworCQkJLyogU2Vu ZCBTVFJFQU0gQ09NTUlUIG1lc3NhZ2UgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gKi8K KwkJCXBhX3NlbmRfZGF0YSh3aW5mbywgcy0+bGVuLCBzLT5kYXRhKTsKKworCQkJLyoKKwkJCSAq IEFmdGVyIHNlbmRpbmcgdGhlIGRhdGEgdG8gdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgd2Fp dCBmb3IKKwkJCSAqIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4gVGhpcyBpcyBuZWNlc3NhcnkgdG8g bWFpbnRhaW4gY29tbWl0CisJCQkgKiBvcmRlciB3aGljaCBhdm9pZHMgZmFpbHVyZXMgZHVlIHRv IHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkJCSAqIGRlYWRsb2Nrcy4KKwkJCSAqLwor CQkJcGFfd2FpdF9mb3JfeGFjdF9maW5pc2god2luZm8pOworCisJCQlwZ3N0YXRfcmVwb3J0X3N0 YXQoZmFsc2UpOworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEuZW5kX2xzbik7 CisJCQlzdG9wX3NraXBwaW5nX2NoYW5nZXMoKTsKKworCQkJKHZvaWQpIHBhX2ZyZWVfd29ya2Vy KHdpbmZvLCB4aWQpOworCisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGlzIGVpdGhlciBu b24tZW1wdHkgb3Igc2tpcHBlZCwgc28gd2UgY2xlYXIgdGhlCisJCQkgKiBzdWJza2lwbHNuLgor CQkJICovCisJCQljbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oY29tbWl0X2RhdGEuY29tbWl0 X2xzbik7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFu ZCBzdWJ4YWN0IGluZm8gKi8KLQlzdHJlYW1fY2xlYW51cF9maWxlcyhNeUxvZ2ljYWxSZXBXb3Jr ZXItPnN1YmlkLCB4aWQpOworCQkJYnJlYWs7CisKKwkJY2FzZSBUUkFOU19QQVJBTExFTF9BUFBM WToKKwkJCWxpc3RfZnJlZShzdWJ4YWN0bGlzdCk7CisJCQlzdWJ4YWN0bGlzdCA9IE5JTDsKKwor CQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOworCisJCQlwYV9z ZXRfeGFjdF9zdGF0ZShNeVBhcmFsbGVsU2hhcmVkLCBQQVJBTExFTF9UUkFOU19GSU5JU0hFRCk7 CisJCQlwYV91bmxvY2tfdHJhbnNhY3Rpb24oeGlkLCBBY2Nlc3NTaGFyZUxvY2spOworCisJCQll bG9nKERFQlVHMSwgImZpbmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBj b21tYW5kIik7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJQXNzZXJ0KGZhbHNlKTsKKwkJ CWJyZWFrOworCX0KIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5j aHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRf ZGF0YS5lbmRfbHNuKTsKQEAgLTE1NTUsNiArMjAyOSwxMyBAQCBhcHBseV9oYW5kbGVfY29tbWl0 X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSkKIAkJcmVwbG9yaWdp bl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBjb21taXRfZGF0YS0+Y29tbWl0dGltZTsKIAog CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQlpZiAoSXNUcmFuc2FjdGlvbkJsb2Nr KCkpCisJCXsKKwkJCUVuZFRyYW5zYWN0aW9uQmxvY2soZmFsc2UpOworCQkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7CisJCX0KKwogCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOwogCiAJ CXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKGNvbW1pdF9kYXRhLT5lbmRfbHNuKTsKQEAgLTI1MDYsNyAr Mjk4Nyw3IEBAIGFwcGx5X2hhbmRsZV90cnVuY2F0ZShTdHJpbmdJbmZvIHMpCiAvKgogICogTG9n aWNhbCByZXBsaWNhdGlvbiBwcm90b2NvbCBtZXNzYWdlIGRpc3BhdGNoZXIuCiAgKi8KLXN0YXRp YyB2b2lkCit2b2lkCiBhcHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpCiB7CiAJTG9naWNhbFJl cE1zZ1R5cGUgYWN0aW9uID0gcHFfZ2V0bXNnYnl0ZShzKTsKQEAgLTI2NzUsNiArMzE1NiwxMCBA QCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24pCiB7CiAJRmx1c2hQ b3NpdGlvbiAqZmx1c2hwb3M7CiAKKwkvKiBTa2lwIGZvciBwYXJhbGxlbCBhcHBseSB3b3JrZXJz LiAqLworCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJcmV0dXJuOworCiAJLyog TmVlZCB0byBkbyB0aGlzIGluIHBlcm1hbmVudCBjb250ZXh0ICovCiAJTWVtb3J5Q29udGV4dFN3 aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKQEAgLTI3MzksNiArMzIyNCw3IEBAIExvZ2ljYWxSZXBB cHBseUxvb3AoWExvZ1JlY1B0ciBsYXN0X3JlY2VpdmVkKQogCWVycmNhbGxiYWNrLmNhbGxiYWNr ID0gYXBwbHlfZXJyb3JfY2FsbGJhY2s7CiAJZXJyY2FsbGJhY2sucHJldmlvdXMgPSBlcnJvcl9j b250ZXh0X3N0YWNrOwogCWVycm9yX2NvbnRleHRfc3RhY2sgPSAmZXJyY2FsbGJhY2s7CisJYXBw bHlfZXJyb3JfY29udGV4dF9zdGFjayA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAKIAkvKiBUaGlz IG91dGVyIGxvb3AgaXRlcmF0ZXMgb25jZSBwZXIgd2FpdC4gKi8KIAlmb3IgKDs7KQpAQCAtMjk1 Myw2ICszNDM5LDcgQEAgTG9naWNhbFJlcEFwcGx5TG9vcChYTG9nUmVjUHRyIGxhc3RfcmVjZWl2 ZWQpCiAKIAkvKiBQb3AgdGhlIGVycm9yIGNvbnRleHQgc3RhY2sgKi8KIAllcnJvcl9jb250ZXh0 X3N0YWNrID0gZXJyY2FsbGJhY2sucHJldmlvdXM7CisJYXBwbHlfZXJyb3JfY29udGV4dF9zdGFj ayA9IGVycm9yX2NvbnRleHRfc3RhY2s7CiAKIAkvKiBBbGwgZG9uZSAqLwogCXdhbHJjdl9lbmRz dHJlYW1pbmcoTG9nUmVwV29ya2VyV2FsUmN2Q29ubiwgJnRsaSk7CkBAIC0zMDUzLDcgKzM1NDAs NyBAQCBzZW5kX2ZlZWRiYWNrKFhMb2dSZWNQdHIgcmVjdnBvcywgYm9vbCBmb3JjZSwgYm9vbCBy ZXF1ZXN0UmVwbHkpCiAvKgogICogUmVyZWFkIHN1YnNjcmlwdGlvbiBpbmZvIGlmIG5lZWRlZC4g TW9zdCBjaGFuZ2VzIHdpbGwgYmUgZXhpdC4KICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIG1heWJl X3JlcmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIHsKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKQEAg LTMwODMsMjIgKzM1NzAsMjIgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQogCWlm ICghbmV3c3ViKQogCXsKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBs aWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCAiCi0JCQkJ CQkic3RvcCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92ZWQiLAotCQkJCQkJTXlT dWJzY3JpcHRpb24tPm5hbWUpKSk7CisJCS8qIHRyYW5zbGF0b3I6IGZpcnN0ICVzIGlzIHRoZSBu YW1lIG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJKGVycm1zZygiJXMgZm9y IHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3 YXMgcmVtb3ZlZCIsCisJCQkJCQlnZXRfd29ya2VyX25hbWUoKSwgTXlTdWJzY3JpcHRpb24tPm5h bWUpKSk7CiAKLQkJcHJvY19leGl0KDApOworCQlhcHBseV93b3JrZXJfY2xlYW5fZXhpdCh0cnVl KTsKIAl9CiAKIAkvKiBFeGl0IGlmIHRoZSBzdWJzY3JpcHRpb24gd2FzIGRpc2FibGVkLiAqLwog CWlmICghbmV3c3ViLT5lbmFibGVkKQogCXsKIAkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygi bG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIg d2lsbCAiCi0JCQkJCQkic3RvcCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIGRpc2FibGVk IiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9yOiBmaXJz dCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCShl cnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBiZWNhdXNlIHRoZSBz dWJzY3JpcHRpb24gd2FzIGRpc2FibGVkIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1 YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAotCQlwcm9jX2V4aXQoMCk7CisJCWFwcGx5X3dvcmtlcl9j bGVhbl9leGl0KHRydWUpOwogCX0KIAogCS8qICFzbG90bmFtZSBzaG91bGQgbmV2ZXIgaGFwcGVu IHdoZW4gZW5hYmxlZCBpcyB0cnVlLiAqLwpAQCAtMzEwOSw3ICszNTk2LDEwIEBAIG1heWJlX3Jl cmVhZF9zdWJzY3JpcHRpb24odm9pZCkKIAogCS8qCiAJICogRXhpdCBpZiBhbnkgcGFyYW1ldGVy IHRoYXQgYWZmZWN0cyB0aGUgcmVtb3RlIGNvbm5lY3Rpb24gd2FzIGNoYW5nZWQuCi0JICogVGhl IGxhdW5jaGVyIHdpbGwgc3RhcnQgYSBuZXcgd29ya2VyLgorCSAqIFRoZSBsYXVuY2hlciB3aWxs IHN0YXJ0IGEgbmV3IHdvcmtlciBidXQgbm90ZSB0aGF0IHRoZSBwYXJhbGxlbCBhcHBseQorCSAq IHdvcmtlciB3b24ndCByZXN0YXJ0IGlmIHRoZSBzdHJlYW1pbmcgb3B0aW9uJ3MgdmFsdWUgaXMg Y2hhbmdlZCBmcm9tCisJICogJ3BhcmFsbGVsJyB0byBhbnkgb3RoZXIgdmFsdWUgb3IgdGhlIHNl cnZlciBkZWNpZGVzIG5vdCB0byBzdHJlYW0gdGhlCisJICogaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rp b24uCiAJICovCiAJaWYgKHN0cmNtcChuZXdzdWItPmNvbm5pbmZvLCBNeVN1YnNjcmlwdGlvbi0+ Y29ubmluZm8pICE9IDAgfHwKIAkJc3RyY21wKG5ld3N1Yi0+bmFtZSwgTXlTdWJzY3JpcHRpb24t Pm5hbWUpICE9IDAgfHwKQEAgLTMxMjAsMTEgKzM2MTAsMTcgQEAgbWF5YmVfcmVyZWFkX3N1YnNj cmlwdGlvbih2b2lkKQogCQluZXdzdWItPm93bmVyICE9IE15U3Vic2NyaXB0aW9uLT5vd25lciB8 fAogCQkhZXF1YWwobmV3c3ViLT5wdWJsaWNhdGlvbnMsIE15U3Vic2NyaXB0aW9uLT5wdWJsaWNh dGlvbnMpKQogCXsKLQkJZXJlcG9ydChMT0csCi0JCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNh dGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCByZXN0YXJ0IGJl Y2F1c2Ugb2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1l KSkpOworCQlpZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJCQllcmVwb3J0KExPRywK KwkJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIg Zm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIGJlY2F1c2Ugb2YgYSBwYXJhbWV0ZXIg Y2hhbmdlIiwKKwkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKKwkJZWxzZQorCQkJZXJl cG9ydChMT0csCisJCQkvKiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dp Y2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLworCQkJCQkoZXJybXNnKCIlcyBmb3Igc3Vic2NyaXB0 aW9uIFwiJXNcIiB3aWxsIHJlc3RhcnQgYmVjYXVzZSBvZiBhIHBhcmFtZXRlciBjaGFuZ2UiLAor CQkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsKIAotCQlw cm9jX2V4aXQoMCk7CisJCWFwcGx5X3dvcmtlcl9jbGVhbl9leGl0KHRydWUpOwogCX0KIAogCS8q IENoZWNrIGZvciBvdGhlciBjaGFuZ2VzIHRoYXQgc2hvdWxkIG5ldmVyIGhhcHBlbiB0b28uICov CkBAIC0zNjA4LDM3ICs0MTA0LDE2IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0 YXJ0cG9zKQogCVBHX0VORF9UUlkoKTsKIH0KIAotLyogTG9naWNhbCBSZXBsaWNhdGlvbiBBcHBs eSB3b3JrZXIgZW50cnkgcG9pbnQgKi8KKy8qCisgKiBDb21tb24gaW5pdGlhbGl6YXRpb24gZm9y IGxlYWRlciBhcHBseSB3b3JrZXIgYW5kIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KKyAqCisgKiBJ bml0aWFsaXplIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uLCBpbi1tZW1vcnkgc3Vic2NyaXB0aW9u IGFuZCBuZWNlc3NhcnkKKyAqIGNvbmZpZyBvcHRpb25zLgorICovCiB2b2lkCi1BcHBseVdvcmtl ck1haW4oRGF0dW0gbWFpbl9hcmcpCitJbml0aWFsaXplQXBwbHlXb3JrZXIodm9pZCkKIHsKLQlp bnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcpOwogCU1lbW9yeUNvbnRl eHQgb2xkY3R4OwotCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOwotCVhMb2dSZWNQdHIJ b3JpZ2luX3N0YXJ0cG9zID0gSW52YWxpZFhMb2dSZWNQdHI7Ci0JY2hhcgkgICAqbXlzbG90bmFt ZSA9IE5VTEw7Ci0JV2FsUmN2U3RyZWFtT3B0aW9ucyBvcHRpb25zOwotCWludAkJCXNlcnZlcl92 ZXJzaW9uOwotCi0JLyogQXR0YWNoIHRvIHNsb3QgKi8KLQlsb2dpY2FscmVwX3dvcmtlcl9hdHRh Y2god29ya2VyX3Nsb3QpOwotCi0JLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nICovCi0JcHFzaWdu YWwoU0lHSFVQLCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKLQlwcXNpZ25hbChTSUdU RVJNLCBkaWUpOwotCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOwotCi0JLyoKLQkg KiBXZSBkb24ndCBjdXJyZW50bHkgbmVlZCBhbnkgUmVzb3VyY2VPd25lciBpbiBhIHdhbHJlY2Vp dmVyIHByb2Nlc3MsIGJ1dAotCSAqIGlmIHdlIGRpZCwgd2UgY291bGQgY2FsbCBDcmVhdGVBdXhQ cm9jZXNzUmVzb3VyY2VPd25lciBoZXJlLgotCSAqLwotCi0JLyogSW5pdGlhbGlzZSBzdGF0cyB0 byBhIHNhbmlzaCB2YWx1ZSAqLwotCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUg PSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KLQkJTXlMb2dpY2FsUmVwV29y a2VyLT5yZXBseV90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwotCi0JLyogTG9hZCB0aGUg bGlicHEtc3BlY2lmaWMgZnVuY3Rpb25zICovCi0JbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVy IiwgZmFsc2UpOwogCiAJLyogUnVuIGFzIHJlcGxpY2Egc2Vzc2lvbiByZXBsaWNhdGlvbiByb2xl LiAqLwogCVNldENvbmZpZ09wdGlvbigic2Vzc2lvbl9yZXBsaWNhdGlvbl9yb2xlIiwgInJlcGxp Y2EiLApAQCAtMzY2NiwxMCArNDE0MSwxMSBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9h cmcpCiAJaWYgKCFNeVN1YnNjcmlwdGlvbikKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJt c2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUg d2lsbCBub3QgIgotCQkJCQkJInN0YXJ0IGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgcmVt b3ZlZCBkdXJpbmcgc3RhcnR1cCIsCi0JCQkJCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKSkp OwotCQlwcm9jX2V4aXQoMCk7CisJCS8qIHRyYW5zbGF0b3I6ICVzIGlzIHRoZSBuYW1lIG9mIGxv Z2ljYWwgcmVwbGljYXRpb24gd29ya2VyICovCisJCQkJKGVycm1zZygiJXMgZm9yIHN1YnNjcmlw dGlvbiAldSB3aWxsIG5vdCBzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIHJlbW92 ZWQgZHVyaW5nIHN0YXJ0dXAiLAorCQkJCQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15TG9naWNhbFJl cFdvcmtlci0+c3ViaWQpKSk7CisKKwkJYXBwbHlfd29ya2VyX2NsZWFuX2V4aXQoZmFsc2UpOwog CX0KIAogCU15U3Vic2NyaXB0aW9uVmFsaWQgPSB0cnVlOwpAQCAtMzY3OCwxMSArNDE1NCwxMSBA QCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJaWYgKCFNeVN1YnNjcmlwdGlvbi0+ ZW5hYmxlZCkKIAl7CiAJCWVyZXBvcnQoTE9HLAotCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGlj YXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgbm90ICIKLQkJ CQkJCSJzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gd2FzIGRpc2FibGVkIGR1cmluZyBz dGFydHVwIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkvKiB0cmFuc2xhdG9y OiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlciAqLwor CQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgbm90IHN0YXJ0IGJl Y2F1c2UgdGhlIHN1YnNjcmlwdGlvbiB3YXMgZGlzYWJsZWQgZHVyaW5nIHN0YXJ0dXAiLAorCQkJ CQkJZ2V0X3dvcmtlcl9uYW1lKCksIE15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCi0JCXByb2Nf ZXhpdCgwKTsKKwkJYXBwbHlfd29ya2VyX2NsZWFuX2V4aXQoZmFsc2UpOwogCX0KIAogCS8qIFNl dHVwIHN5bmNocm9ub3VzIGNvbW1pdCBhY2NvcmRpbmcgdG8gdGhlIHVzZXIncyB3aXNoZXMgKi8K QEAgLTM2OTcsMTMgKzQxNzMsNDkgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQog CWlmIChhbV90YWJsZXN5bmNfd29ya2VyKCkpCiAJCWVyZXBvcnQoTE9HLAogCQkJCShlcnJtc2co ImxvZ2ljYWwgcmVwbGljYXRpb24gdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlciBmb3Igc3Vi c2NyaXB0aW9uIFwiJXNcIiwgdGFibGUgXCIlc1wiIGhhcyBzdGFydGVkIiwKLQkJCQkJCU15U3Vi c2NyaXB0aW9uLT5uYW1lLCBnZXRfcmVsX25hbWUoTXlMb2dpY2FsUmVwV29ya2VyLT5yZWxpZCkp KSk7CisJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCQkJCWdldF9yZWxfbmFtZShNeUxv Z2ljYWxSZXBXb3JrZXItPnJlbGlkKSkpKTsKIAllbHNlCiAJCWVyZXBvcnQoTE9HLAotCQkJCShl cnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24g XCIlc1wiIGhhcyBzdGFydGVkIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOworCQkv KiB0cmFuc2xhdG9yOiBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiBsb2dpY2FsIHJlcGxpY2F0aW9u IHdvcmtlciAqLworCQkJCShlcnJtc2coIiVzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBz dGFydGVkIiwKKwkJCQkJCWdldF93b3JrZXJfbmFtZSgpLCBNeVN1YnNjcmlwdGlvbi0+bmFtZSkp KTsKIAogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworfQorCisvKiBMb2dpY2FsIFJlcGxp Y2F0aW9uIEFwcGx5IHdvcmtlciBlbnRyeSBwb2ludCAqLwordm9pZAorQXBwbHlXb3JrZXJNYWlu KERhdHVtIG1haW5fYXJnKQoreworCWludAkJCXdvcmtlcl9zbG90ID0gRGF0dW1HZXRJbnQzMiht YWluX2FyZyk7CisJY2hhcgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07CisJWExvZ1JlY1B0cglv cmlnaW5fc3RhcnRwb3MgPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwljaGFyCSAgICpteXNsb3RuYW1l ID0gTlVMTDsKKwlXYWxSY3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7CisJaW50CQkJc2VydmVyX3Zl cnNpb247CisKKwkvKiBBdHRhY2ggdG8gc2xvdCAqLworCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFj aCh3b3JrZXJfc2xvdCk7CisKKwkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KKwlwcXNpZ25h bChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOworCXBxc2lnbmFsKFNJR1RF Uk0sIGRpZSk7CisJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7CisKKwkvKgorCSAq IFdlIGRvbid0IGN1cnJlbnRseSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEgd2FscmVjZWl2 ZXIgcHJvY2VzcywgYnV0CisJICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0ZUF1eFBy b2Nlc3NSZXNvdXJjZU93bmVyIGhlcmUuCisJICovCisKKwkvKiBJbml0aWFsaXNlIHN0YXRzIHRv IGEgc2FuaXNoIHZhbHVlICovCisJTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9 IE15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9yZWN2X3RpbWUgPQorCQlNeUxvZ2ljYWxSZXBXb3Jr ZXItPnJlcGx5X3RpbWUgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKKwkvKiBMb2FkIHRoZSBs aWJwcS1zcGVjaWZpYyBmdW5jdGlvbnMgKi8KKwlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIi LCBmYWxzZSk7CisKKwlJbml0aWFsaXplQXBwbHlXb3JrZXIoKTsKIAogCS8qIENvbm5lY3QgdG8g dGhlIG9yaWdpbiBhbmQgc3RhcnQgdGhlIHJlcGxpY2F0aW9uLiAqLwogCWVsb2coREVCVUcxLCAi Y29ubmVjdGluZyB0byBwdWJsaXNoZXIgdXNpbmcgY29ubmVjdGlvbiBzdHJpbmcgXCIlc1wiIiwK QEAgLTM3MjYsNyArNDIzOCw3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAl9 CiAJZWxzZQogCXsKLQkJLyogVGhpcyBpcyBtYWluIGFwcGx5IHdvcmtlciAqLworCQkvKiBUaGlz IGlzIHRoZSBsZWFkZXIgYXBwbHkgd29ya2VyICovCiAJCVJlcE9yaWdpbklkIG9yaWdpbmlkOwog CQlUaW1lTGluZUlECXN0YXJ0cG9pbnRUTEk7CiAJCWNoYXIJICAgKmVycjsKQEAgLTM3NTAsNyAr NDI2Miw3IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJb3JpZ2luaWQgPSBy ZXBsb3JpZ2luX2J5X25hbWUob3JpZ2lubmFtZSwgdHJ1ZSk7CiAJCWlmICghT2lkSXNWYWxpZChv cmlnaW5pZCkpCiAJCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fY3JlYXRlKG9yaWdpbm5hbWUpOwot CQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luaWQpOworCQlyZXBsb3JpZ2luX3Nlc3Np b25fc2V0dXAob3JpZ2luaWQsIDApOwogCQlyZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luID0gb3Jp Z2luaWQ7CiAJCW9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jl c3MoZmFsc2UpOwogCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKQEAgLTM3OTEsMTMgKzQz MDMsMzYgQEAgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCiAJc2VydmVyX3ZlcnNp b24gPSB3YWxyY3Zfc2VydmVyX3ZlcnNpb24oTG9nUmVwV29ya2VyV2FsUmN2Q29ubik7CiAJb3B0 aW9ucy5wcm90by5sb2dpY2FsLnByb3RvX3ZlcnNpb24gPQorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAx NjAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9OX05VTSA6CiAJ CXNlcnZlcl92ZXJzaW9uID49IDE1MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVS U0lPTl9OVU0gOgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNDAwMDAgPyBMT0dJQ0FMUkVQX1BST1RP X1NUUkVBTV9WRVJTSU9OX05VTSA6CiAJCUxPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU07CiAK IAlvcHRpb25zLnByb3RvLmxvZ2ljYWwucHVibGljYXRpb25fbmFtZXMgPSBNeVN1YnNjcmlwdGlv bi0+cHVibGljYXRpb25zOwogCW9wdGlvbnMucHJvdG8ubG9naWNhbC5iaW5hcnkgPSBNeVN1YnNj cmlwdGlvbi0+YmluYXJ5OwotCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmcgPSBNeVN1 YnNjcmlwdGlvbi0+c3RyZWFtOworCisJLyoKKwkgKiBBc3NpZ24gdGhlIGFwcHJvcHJpYXRlIG9w dGlvbiB2YWx1ZSBmb3Igc3RyZWFtaW5nIG9wdGlvbiBhY2NvcmRpbmcgdG8KKwkgKiB0aGUgJ3N0 cmVhbWluZycgbW9kZSBhbmQgdGhlIHB1Ymxpc2hlcidzIGFiaWxpdHkgdG8gc3VwcG9ydCB0aGF0 IG1vZGUuCisJICovCisJaWYgKHNlcnZlcl92ZXJzaW9uID49IDE2MDAwMCAmJgorCQlNeVN1YnNj cmlwdGlvbi0+c3RyZWFtID09IFNVQlNUUkVBTV9QQVJBTExFTCkKKwl7CisJCW9wdGlvbnMucHJv dG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyID0gcHN0cmR1cCgicGFyYWxsZWwiKTsKKwkJTXlMb2dp Y2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IHRydWU7CisJfQorCWVsc2UgaWYgKHNlcnZl cl92ZXJzaW9uID49IDE0MDAwMCAmJgorCQkJIE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VC U1RSRUFNX09GRikKKwl7CisJCW9wdGlvbnMucHJvdG8ubG9naWNhbC5zdHJlYW1pbmdfc3RyID0g cHN0cmR1cCgib24iKTsKKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5wYXJhbGxlbF9hcHBseSA9IGZh bHNlOworCX0KKwllbHNlCisJeworCQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nX3N0 ciA9IE5VTEw7CisJCU15TG9naWNhbFJlcFdvcmtlci0+cGFyYWxsZWxfYXBwbHkgPSBmYWxzZTsK Kwl9CisKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwudHdvcGhhc2UgPSBmYWxzZTsKIAlvcHRpb25z LnByb3RvLmxvZ2ljYWwub3JpZ2luID0gcHN0cmR1cChNeVN1YnNjcmlwdGlvbi0+b3JpZ2luKTsK IApAQCAtMzgzMSwxMSArNDM2NiwxMSBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcp CiAKIAkJZXJlcG9ydChERUJVRzEsCiAJCQkJKGVycm1zZ19pbnRlcm5hbCgibG9naWNhbCByZXBs aWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgdHdvX3BoYXNlIGlz ICVzIiwKLQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lLAotCQkJCQkJTXlTdWJzY3JpcHRpb24t PnR3b3BoYXNlc3RhdGUgPT0gTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9ESVNBQkxFRCA/ICJE SVNBQkxFRCIgOgotCQkJCQkJTXlTdWJzY3JpcHRpb24tPnR3b3BoYXNlc3RhdGUgPT0gTE9HSUNB TFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HID8gIlBFTkRJTkciIDoKLQkJCQkJCU15U3Vic2Ny aXB0aW9uLT50d29waGFzZXN0YXRlID09IExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfRU5BQkxF RCA/ICJFTkFCTEVEIiA6Ci0JCQkJCQkiPyIpKSk7CisJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+ bmFtZSwKKwkJCQkJCQkJIE15U3Vic2NyaXB0aW9uLT50d29waGFzZXN0YXRlID09IExPR0lDQUxS RVBfVFdPUEhBU0VfU1RBVEVfRElTQUJMRUQgPyAiRElTQUJMRUQiIDoKKwkJCQkJCQkJIE15U3Vi c2NyaXB0aW9uLT50d29waGFzZXN0YXRlID09IExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfUEVO RElORyA/ICJQRU5ESU5HIiA6CisJCQkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+dHdvcGhhc2VzdGF0 ZSA9PSBMT0dJQ0FMUkVQX1RXT1BIQVNFX1NUQVRFX0VOQUJMRUQgPyAiRU5BQkxFRCIgOgorCQkJ CQkJCQkgIj8iKSkpOwogCX0KIAllbHNlCiAJewpAQCAtMzg0Niw3ICs0MzgxLDcgQEAgQXBwbHlX b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKQogCS8qIFJ1biB0aGUgbWFpbiBsb29wLiAqLwogCXN0 YXJ0X2FwcGx5KG9yaWdpbl9zdGFydHBvcyk7CiAKLQlwcm9jX2V4aXQoMCk7CisJYXBwbHlfd29y a2VyX2NsZWFuX2V4aXQoZmFsc2UpOwogfQogCiAvKgpAQCAtMzg4Miw3ICs0NDE3LDcgQEAgRGlz YWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCkKIAkJCWVycm1zZygic3Vic2NyaXB0aW9uIFwi JXNcIiBoYXMgYmVlbiBkaXNhYmxlZCBiZWNhdXNlIG9mIGFuIGVycm9yIiwKIAkJCQkgICBNeVN1 YnNjcmlwdGlvbi0+bmFtZSkpOwogCi0JcHJvY19leGl0KDApOworCWFwcGx5X3dvcmtlcl9jbGVh bl9leGl0KGZhbHNlKTsKIH0KIAogLyoKQEAgLTM4OTUsNiArNDQzMCwxNSBAQCBJc0xvZ2ljYWxX b3JrZXIodm9pZCkKIH0KIAogLyoKKyAqIElzIGN1cnJlbnQgcHJvY2VzcyBhIGxvZ2ljYWwgcmVw bGljYXRpb24gcGFyYWxsZWwgYXBwbHkgd29ya2VyPworICovCitib29sCitJc0xvZ2ljYWxQYXJh bGxlbEFwcGx5V29ya2VyKHZvaWQpCit7CisJcmV0dXJuIElzTG9naWNhbFdvcmtlcigpICYmIGFt X3BhcmFsbGVsX2FwcGx5X3dvcmtlcigpOworfQorCisvKgogICogU3RhcnQgc2tpcHBpbmcgY2hh bmdlcyBvZiB0aGUgdHJhbnNhY3Rpb24gaWYgdGhlIGdpdmVuIExTTiBtYXRjaGVzIHRoZQogICog TFNOIHNwZWNpZmllZCBieSBzdWJzY3JpcHRpb24ncyBza2lwbHNuLgogICovCkBAIC0zOTU2LDcg KzQ1MDAsNyBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hf bHNuKQogCVhMb2dSZWNQdHIJbXlza2lwbHNuID0gTXlTdWJzY3JpcHRpb24tPnNraXBsc247CiAJ Ym9vbAkJc3RhcnRlZF90eCA9IGZhbHNlOwogCi0JaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZh bGlkKG15c2tpcGxzbikpKQorCWlmIChsaWtlbHkoWExvZ1JlY1B0cklzSW52YWxpZChteXNraXBs c24pKSB8fCBhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKIAkJcmV0dXJuOwogCiAJaWYgKCFJ c1RyYW5zYWN0aW9uU3RhdGUoKSkKQEAgLTQwMjgsNyArNDU3Miw3IEBAIGNsZWFyX3N1YnNjcmlw dGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24pCiB9CiAKIC8qIEVycm9yIGNhbGxi YWNrIHRvIGdpdmUgbW9yZSBjb250ZXh0IGluZm8gYWJvdXQgdGhlIGNoYW5nZSBiZWluZyBhcHBs aWVkICovCi1zdGF0aWMgdm9pZAordm9pZAogYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJn KQogewogCUFwcGx5RXJyb3JDYWxsYmFja0FyZyAqZXJyYXJnID0gJmFwcGx5X2Vycm9yX2NhbGxi YWNrX2FyZzsKQEAgLTQwNTYsMjMgKzQ2MDAsNDcgQEAgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9p ZCAqYXJnKQogCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCiAJCQkJCSAgIExTTl9GT1JNQVRf QVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsKIAl9Ci0JZWxzZSBpZiAoZXJyYXJnLT5yZW1vdGVf YXR0bnVtIDwgMCkKLQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVw bGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgbWVzc2FnZSB0eXBlIFwiJXNcIiBmb3IgcmVw bGljYXRpb24gdGFyZ2V0IHJlbGF0aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSwgZmlu aXNoZWQgYXQgJVgvJVgiLAotCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCi0JCQkJICAgbG9n aWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKLQkJCQkgICBlcnJhcmctPnJl bC0+cmVtb3RlcmVsLm5zcG5hbWUsCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxu YW1lLAotCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCwKLQkJCQkgICBMU05fRk9STUFUX0FSR1Mo ZXJyYXJnLT5maW5pc2hfbHNuKSk7CiAJZWxzZQotCQllcnJjb250ZXh0KCJwcm9jZXNzaW5nIHJl bW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBtZXNzYWdlIHR5 cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVt biBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVkIGF0ICVYLyVYIiwKLQkJCQkgICBl cnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFy Zy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAotCQkJ CSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKLQkJCQkgICBlcnJhcmctPnJlbC0+ cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCi0JCQkJICAgZXJyYXJn LT5yZW1vdGVfeGlkLAotCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24p KTsKKwl7CisJCWlmIChlcnJhcmctPnJlbW90ZV9hdHRudW0gPCAwKQorCQl7CisJCQlpZiAoWExv Z1JlY1B0cklzSW52YWxpZChlcnJhcmctPmZpbmlzaF9sc24pKQorCQkJCWVycmNvbnRleHQoInBy b2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5n IG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVz LiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwK KwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJ CQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJl bC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQpOworCQkJ ZWxzZQorCQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0 aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2UgdHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0 aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUsIGZpbmlzaGVk IGF0ICVYLyVYIiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dp Y2FscmVwX21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5y ZWwtPnJlbW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5y ZWxuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1B VF9BUkdTKGVycmFyZy0+ZmluaXNoX2xzbikpOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKFhM b2dSZWNQdHJJc0ludmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJw cm9jZXNzaW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmlu ZyBtZXNzYWdlIHR5cGUgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJnZXQgcmVsYXRpb24gXCIl cy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUiLAorCQkJCQkJICAgZXJyYXJn LT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+ Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJ CQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJl bC0+cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCisJCQkJCQkgICBl cnJhcmctPnJlbW90ZV94aWQpOworCQkJZWxzZQorCQkJCWVycmNvbnRleHQoInByb2Nlc3Npbmcg cmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIG1lc3NhZ2Ug dHlwZSBcIiVzXCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29s dW1uIFwiJXNcIiBpbiB0cmFuc2FjdGlvbiAldSwgZmluaXNoZWQgYXQgJVgvJVgiLAorCQkJCQkJ ICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAgIGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBl KGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLm5zcG5h bWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCisJCQkJCQkgICBl cnJhcmctPnJlbC0+cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0dG51bV0sCisJ CQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCisJCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJy YXJnLT5maW5pc2hfbHNuKSk7CisJCX0KKwl9CiB9CiAKIC8qIFNldCB0cmFuc2FjdGlvbiBpbmZv cm1hdGlvbiBvZiBhcHBseSBlcnJvciBjYWxsYmFjayAqLwpAQCAtNDA5MiwzICs0NjYwLDYwIEBA IHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKQogCWFwcGx5X2Vycm9yX2NhbGxi YWNrX2FyZy5yZW1vdGVfYXR0bnVtID0gLTE7CiAJc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFj dChJbnZhbGlkVHJhbnNhY3Rpb25JZCwgSW52YWxpZFhMb2dSZWNQdHIpOwogfQorCisvKgorICog UmV0dXJuIHRoZSBhY3Rpb24gdG8gdGFrZSBmb3IgdGhlIGdpdmVuIHRyYW5zYWN0aW9uLiAqd2lu Zm8gaXMgYXNzaWduZWQgdG8KKyAqIHRoZSBkZXN0aW5hdGlvbiBwYXJhbGxlbCB3b3JrZXIgaW5m byAoaWYgdGhlIGFjdGlvbiBpcworICogVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUwpLCBv dGhlcndpc2UgKndpbmZvIGlzIGFzc2lnbmVkIE5VTEwuCisgKi8KK3N0YXRpYyBUcmFuc0FwcGx5 QWN0aW9uCitnZXRfdHJhbnNhY3Rpb25fYXBwbHlfYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqKndpbmZvKQoreworCSp3aW5mbyA9IE5VTEw7CisKKwlp ZiAoYW1fcGFyYWxsZWxfYXBwbHlfd29ya2VyKCkpCisJeworCQlyZXR1cm4gVFJBTlNfUEFSQUxM RUxfQVBQTFk7CisJfQorCWVsc2UgaWYgKGluX3JlbW90ZV90cmFuc2FjdGlvbikKKwl7CisJCXJl dHVybiBUUkFOU19MRUFERVJfQVBQTFk7CisJfQorCisJLyoKKwkgKiBDaGVjayBpZiB3ZSBhcmUg cHJvY2Vzc2luZyB0aGlzIHRyYW5zYWN0aW9uIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkKKwkgKiB3 b3JrZXIuCisJICovCisJKndpbmZvID0gcGFfZmluZF93b3JrZXIoeGlkKTsKKworCWlmICgqd2lu Zm8pCisJeworCQlyZXR1cm4gVFJBTlNfTEVBREVSX1NFTkRfVE9fUEFSQUxMRUw7CisJfQorCWVs c2UKKwl7CisJCXJldHVybiBUUkFOU19MRUFERVJfU0VSSUFMSVpFOworCX0KK30KKworLyoKKyAq IEV4aXQgcm91dGluZSBmb3IgYXBwbHkgd29ya2VyLgorICovCit2b2lkCithcHBseV93b3JrZXJf Y2xlYW5fZXhpdChib29sIG9uX3N1YmluZm9fY2hhbmdlKQoreworCWlmIChhbV9wYXJhbGxlbF9h cHBseV93b3JrZXIoKSkKKwl7CisJCS8qCisJCSAqIE5vdGlmeSB0aGUgbGVhZGVyIGFwcGx5IHdv cmtlciB0aGF0IHdlIGhhdmUgZXhpdGVkIGNsZWFubHkuCisJCSAqCisJCSAqIElmIGEgcGFyYWxs ZWwgYXBwbHkgd29ya2VyIGV4aXRzIGR1ZSB0byB0aGUgc3Vic2NyaXB0aW9uIGluZm9ybWF0aW9u CisJCSAqIGNoYW5nZSwgd2Ugc2VuZCBhIGRpZmZlcmVudCBtZXNzYWdlIHNvIHRoYXQgdGhlIGxl YWRlciBhcHBseSB3b3JrZXIKKwkJICogY2FuIHJlcG9ydCBtb3JlIG1lYW5pbmdmdWwgbWVzc2Fn ZSBpbiB0aW1lIGFuZCByZXN0YXJ0IHRoZSBsb2dpY2FsCisJCSAqIHJlcGxpY2F0aW9uLgorCQkg Ki8KKwkJcHFfcHV0bWVzc2FnZShvbl9zdWJpbmZvX2NoYW5nZSA/ICdDJyA6ICdYJywgTlVMTCwg MCk7CisJfQorCisJcHJvY19leGl0KDApOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bn b3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggMmVjYWE1Yi4uYmVhZjgyNyAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291dHB1dC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5j bHVkZSAiY2F0YWxvZy9wZ19wdWJsaWNhdGlvbl9yZWwuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgorI2luY2x1ZGUg ImNvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuaCIKICNpbmNsdWRlICJleGVjdXRvci9leGVjdXRv ci5oIgogI2luY2x1ZGUgImZtZ3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKQEAg LTI5MCw3ICsyOTEsNyBAQCBwYXJzZV9vdXRwdXRfcGFyYW1ldGVycyhMaXN0ICpvcHRpb25zLCBQ R091dHB1dERhdGEgKmRhdGEpCiAJYm9vbAkJb3JpZ2luX29wdGlvbl9naXZlbiA9IGZhbHNlOwog CiAJZGF0YS0+YmluYXJ5ID0gZmFsc2U7Ci0JZGF0YS0+c3RyZWFtaW5nID0gZmFsc2U7CisJZGF0 YS0+c3RyZWFtaW5nID0gU1VCU1RSRUFNX09GRjsKIAlkYXRhLT5tZXNzYWdlcyA9IGZhbHNlOwog CWRhdGEtPnR3b19waGFzZSA9IGZhbHNlOwogCkBAIC0zNjksNyArMzcwLDcgQEAgcGFyc2Vfb3V0 cHV0X3BhcmFtZXRlcnMoTGlzdCAqb3B0aW9ucywgUEdPdXRwdXREYXRhICpkYXRhKQogCQkJCQkJ IGVycm1zZygiY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMiKSkpOwogCQkJc3RyZWFt aW5nX2dpdmVuID0gdHJ1ZTsKIAotCQkJZGF0YS0+c3RyZWFtaW5nID0gZGVmR2V0Qm9vbGVhbihk ZWZlbCk7CisJCQlkYXRhLT5zdHJlYW1pbmcgPSBkZWZHZXRTdHJlYW1pbmdNb2RlKGRlZmVsKTsK IAkJfQogCQllbHNlIGlmIChzdHJjbXAoZGVmZWwtPmRlZm5hbWUsICJ0d29fcGhhc2UiKSA9PSAw KQogCQl7CkBAIC00NjEsMTMgKzQ2MiwyMCBAQCBwZ291dHB1dF9zdGFydHVwKExvZ2ljYWxEZWNv ZGluZ0NvbnRleHQgKmN0eCwgT3V0cHV0UGx1Z2luT3B0aW9ucyAqb3B0LAogCQkgKiB3ZSBvbmx5 IGFsbG93IGl0IHdpdGggc3VmZmljaWVudCB2ZXJzaW9uIG9mIHRoZSBwcm90b2NvbCwgYW5kIHdo ZW4KIAkJICogdGhlIG91dHB1dCBwbHVnaW4gc3VwcG9ydHMgaXQuCiAJCSAqLwotCQlpZiAoIWRh dGEtPnN0cmVhbWluZykKKwkJaWYgKGRhdGEtPnN0cmVhbWluZyA9PSBTVUJTVFJFQU1fT0ZGKQog CQkJY3R4LT5zdHJlYW1pbmcgPSBmYWxzZTsKLQkJZWxzZSBpZiAoZGF0YS0+cHJvdG9jb2xfdmVy c2lvbiA8IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNKQorCQllbHNlIGlmIChk YXRhLT5zdHJlYW1pbmcgPT0gU1VCU1RSRUFNX09OICYmCisJCQkJIGRhdGEtPnByb3RvY29sX3Zl cnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSkKIAkJCWVyZXBvcnQo RVJST1IsCiAJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAog CQkJCQkgZXJybXNnKCJyZXF1ZXN0ZWQgcHJvdG9fdmVyc2lvbj0lZCBkb2VzIG5vdCBzdXBwb3J0 IHN0cmVhbWluZywgbmVlZCAlZCBvciBoaWdoZXIiLAogCQkJCQkJCWRhdGEtPnByb3RvY29sX3Zl cnNpb24sIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZFUlNJT05fTlVNKSkpOworCQllbHNlIGlm IChkYXRhLT5zdHJlYW1pbmcgPT0gU1VCU1RSRUFNX1BBUkFMTEVMICYmCisJCQkJIGRhdGEtPnBy b3RvY29sX3ZlcnNpb24gPCBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9QQVJBTExFTF9WRVJTSU9O X05VTSkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9Q QVJBTUVURVJfVkFMVUUpLAorCQkJCQkgZXJybXNnKCJyZXF1ZXN0ZWQgcHJvdG9fdmVyc2lvbj0l ZCBkb2VzIG5vdCBzdXBwb3J0IHBhcmFsbGVsIHN0cmVhbWluZywgbmVlZCAlZCBvciBoaWdoZXIi LAorCQkJCQkJCWRhdGEtPnByb3RvY29sX3ZlcnNpb24sIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFN X1BBUkFMTEVMX1ZFUlNJT05fTlVNKSkpOwogCQllbHNlIGlmICghY3R4LT5zdHJlYW1pbmcpCiAJ CQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVS X1ZBTFVFKSwKQEAgLTE4MzksNiArMTg0Nyw4IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1 Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCQkJCQkgIFhMb2dSZWNQdHIgYWJvcnRf bHNuKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnRvcHR4bjsKKwlQR091dHB1dERhdGEgKmRhdGEg PSAoUEdPdXRwdXREYXRhICopIGN0eC0+b3V0cHV0X3BsdWdpbl9wcml2YXRlOworCWJvb2wJCXdy aXRlX2Fib3J0X2luZm8gPSAoZGF0YS0+c3RyZWFtaW5nID09IFNVQlNUUkVBTV9QQVJBTExFTCk7 CiAKIAkvKgogCSAqIFRoZSBhYm9ydCBzaG91bGQgaGFwcGVuIG91dHNpZGUgc3RyZWFtaW5nIGJs b2NrLCBldmVuIGZvciBzdHJlYW1lZApAQCAtMTg1Miw3ICsxODYyLDkgQEAgcGdvdXRwdXRfc3Ry ZWFtX2Fib3J0KHN0cnVjdCBMb2dpY2FsRGVjb2RpbmdDb250ZXh0ICpjdHgsCiAJQXNzZXJ0KHJi dHhuX2lzX3N0cmVhbWVkKHRvcHR4bikpOwogCiAJT3V0cHV0UGx1Z2luUHJlcGFyZVdyaXRlKGN0 eCwgdHJ1ZSk7Ci0JbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5vdXQsIHRvcHR4 bi0+eGlkLCB0eG4tPnhpZCk7CisJbG9naWNhbHJlcF93cml0ZV9zdHJlYW1fYWJvcnQoY3R4LT5v dXQsIHRvcHR4bi0+eGlkLCB0eG4tPnhpZCwgYWJvcnRfbHNuLAorCQkJCQkJCQkgIHR4bi0+eGFj dF90aW1lLmFib3J0X3RpbWUsIHdyaXRlX2Fib3J0X2luZm8pOworCiAJT3V0cHV0UGx1Z2luV3Jp dGUoY3R4LCB0cnVlKTsKIAogCWNsZWFudXBfcmVsX3N5bmNfY2FjaGUodG9wdHhuLT54aWQsIGZh bHNlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCA3NzY3NjU3Li43YzAw OWQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC0yMiw2ICsyMiw3IEBA CiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNp bmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmgi CiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fsc2VuZGVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9j b25kaXRpb25fdmFyaWFibGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgpAQCAtNjU3LDYg KzY1OCw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChD aGVja1Byb2NTaWduYWwoUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQpKQogCQlIYW5kbGVMb2dN ZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdf UEFSQUxMRUxfQVBQTFlfTUVTU0FHRSkpCisJCUhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50 ZXJydXB0KCk7CisKIAlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdfUkVDT1ZFUllfQ09ORkxJ Q1RfREFUQUJBU0UpKQogCQlSZWNvdmVyeUNvbmZsaWN0SW50ZXJydXB0KFBST0NTSUdfUkVDT1ZF UllfQ09ORkxJQ1RfREFUQUJBU0UpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvbG1nci5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xtZ3IuYwppbmRleCAxMDQz MDY4Li4yZjE3MWY1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG1nci5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sbWdyLmMKQEAgLTExMTcsNiArMTExNyw0 NSBAQCBVbmxvY2tTaGFyZWRPYmplY3RGb3JTZXNzaW9uKE9pZCBjbGFzc2lkLCBPaWQgb2JqaWQs IHVpbnQxNiBvYmpzdWJpZCwKIAlMb2NrUmVsZWFzZSgmdGFnLCBsb2NrbW9kZSwgdHJ1ZSk7CiB9 CiAKKy8qCisgKgkJTG9ja0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uCisgKgorICogT2J0YWlu IGEgc2Vzc2lvbi1sZXZlbCBsb2NrIG9uIGEgdHJhbnNhY3Rpb24gYmVpbmcgYXBwbGllZCBvbiBh IGxvZ2ljYWwKKyAqIHJlcGxpY2F0aW9uIHN1YnNjcmliZXIuIFNlZSBMb2NrUmVsYXRpb25JZEZv clNlc3Npb24gZm9yIG5vdGVzIGFib3V0CisgKiBzZXNzaW9uLWxldmVsIGxvY2tzLgorICovCit2 b2lkCitMb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1Ym9pZCwgVHJhbnNhY3Rp b25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkgICBMT0NLTU9ERSBsb2NrbW9kZSkKK3sK KwlMT0NLVEFHCQl0YWc7CisKKwlTRVRfTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTih0YWcsCisJ CQkJCQkJCSAgTXlEYXRhYmFzZUlkLAorCQkJCQkJCQkgIHN1Ym9pZCwKKwkJCQkJCQkJICB4aWQs CisJCQkJCQkJCSAgb2JqaWQpOworCisJKHZvaWQpIExvY2tBY3F1aXJlKCZ0YWcsIGxvY2ttb2Rl LCB0cnVlLCBmYWxzZSk7Cit9CisKKy8qCisgKgkJVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNl c3Npb24KKyAqLwordm9pZAorVW5sb2NrQXBwbHlUcmFuc2FjdGlvbkZvclNlc3Npb24oT2lkIHN1 Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsIHVpbnQxNiBvYmppZCwKKwkJCQkJCQkJIExPQ0tNT0RF IGxvY2ttb2RlKQoreworCUxPQ0tUQUcJCXRhZzsKKworCVNFVF9MT0NLVEFHX0FQUExZX1RSQU5T QUNUSU9OKHRhZywKKwkJCQkJCQkJICBNeURhdGFiYXNlSWQsCisJCQkJCQkJCSAgc3Vib2lkLAor CQkJCQkJCQkgIHhpZCwKKwkJCQkJCQkJICBvYmppZCk7CisKKwlMb2NrUmVsZWFzZSgmdGFnLCBs b2NrbW9kZSwgdHJ1ZSk7Cit9CiAKIC8qCiAgKiBBcHBlbmQgYSBkZXNjcmlwdGlvbiBvZiBhIGxv Y2thYmxlIG9iamVjdCB0byBidWYuCkBAIC0xMjAyLDYgKzEyNDEsMTMgQEAgRGVzY3JpYmVMb2Nr VGFnKFN0cmluZ0luZm8gYnVmLCBjb25zdCBMT0NLVEFHICp0YWcpCiAJCQkJCQkJIHRhZy0+bG9j a3RhZ19maWVsZDMsCiAJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDQpOwogCQkJYnJlYWs7CisJ CWNhc2UgTE9DS1RBR19BUFBMWV9UUkFOU0FDVElPTjoKKwkJCWFwcGVuZFN0cmluZ0luZm8oYnVm LAorCQkJCQkJCSBfKCJyZW1vdGUgdHJhbnNhY3Rpb24gJXUgb2Ygc3Vic2NyaXB0aW9uICV1IG9m IGRhdGFiYXNlICV1IiksCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDMsCisJCQkJCQkJIHRh Zy0+bG9ja3RhZ19maWVsZDIsCisJCQkJCQkJIHRhZy0+bG9ja3RhZ19maWVsZDEpOworCQkJYnJl YWs7CiAJCWRlZmF1bHQ6CiAJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwKIAkJCQkJCQkgXygidW5y ZWNvZ25pemVkIGxvY2t0YWcgdHlwZSAlZCIpLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNv cC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDMwODIwOTMu LmY1MmU1YmEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysgYi9z cmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTMzNzksNiArMzM3OSw5IEBAIFByb2Nlc3NJ bnRlcnJ1cHRzKHZvaWQpCiAKIAlpZiAoTG9nTWVtb3J5Q29udGV4dFBlbmRpbmcpCiAJCVByb2Nl c3NMb2dNZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CisKKwlpZiAoUGFyYWxsZWxBcHBseU1lc3Nh Z2VQZW5kaW5nKQorCQlIYW5kbGVQYXJhbGxlbEFwcGx5TWVzc2FnZXMoKTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9i YWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCBiMmFiZDc1Li4xZmFiNDVl IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCkBAIC0yMzAsNiArMjMw LDkgQEAgcGdzdGF0X2dldF93YWl0X2FjdGl2aXR5KFdhaXRFdmVudEFjdGl2aXR5IHcpCiAJCWNh c2UgV0FJVF9FVkVOVF9MT0dJQ0FMX0xBVU5DSEVSX01BSU46CiAJCQlldmVudF9uYW1lID0gIkxv Z2ljYWxMYXVuY2hlck1haW4iOwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FM X1BBUkFMTEVMX0FQUExZX01BSU46CisJCQlldmVudF9uYW1lID0gIkxvZ2ljYWxQYXJhbGxlbEFw cGx5TWFpbiI7CisJCQlicmVhazsKIAkJY2FzZSBXQUlUX0VWRU5UX1JFQ09WRVJZX1dBTF9TVFJF QU06CiAJCQlldmVudF9uYW1lID0gIlJlY292ZXJ5V2FsU3RyZWFtIjsKIAkJCWJyZWFrOwpAQCAt Mzg4LDYgKzM5MSw5IEBAIHBnc3RhdF9nZXRfd2FpdF9pcGMoV2FpdEV2ZW50SVBDIHcpCiAJCWNh c2UgV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19SRUlOU0VSVDoKIAkJCWV2ZW50X25hbWUg PSAiSGFzaEdyb3dCdWNrZXRzUmVpbnNlcnQiOwogCQkJYnJlYWs7CisJCWNhc2UgV0FJVF9FVkVO VF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NUQVRFX0NIQU5HRToKKwkJCWV2ZW50X25hbWUgPSAi TG9naWNhbFBhcmFsbGVsQXBwbHlTdGF0ZUNoYW5nZSI7CisJCQlicmVhazsKIAkJY2FzZSBXQUlU X0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBOgogCQkJZXZlbnRfbmFtZSA9ICJMb2dpY2FsU3luY0Rh dGEiOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1 bmNzLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvbG9ja2Z1bmNzLmMKaW5kZXggZjliMzI0ZS4u M2JmMDQ4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2xvY2tmdW5jcy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9sb2NrZnVuY3MuYwpAQCAtMzcsMTAgKzM3LDExIEBA IGNvbnN0IGNoYXIgKmNvbnN0IExvY2tUYWdUeXBlTmFtZXNbXSA9IHsKIAkic3BlY3Rva2VuIiwK IAkib2JqZWN0IiwKIAkidXNlcmxvY2siLAotCSJhZHZpc29yeSIKKwkiYWR2aXNvcnkiLAorCSJh cHBseXRyYW5zYWN0aW9uIgogfTsKIAotU3RhdGljQXNzZXJ0RGVjbChsZW5ndGhvZihMb2NrVGFn VHlwZU5hbWVzKSA9PSAoTE9DS1RBR19BRFZJU09SWSArIDEpLAorU3RhdGljQXNzZXJ0RGVjbChs ZW5ndGhvZihMb2NrVGFnVHlwZU5hbWVzKSA9PSAoTE9DS1RBR19MQVNUX1RZUEUgKyAxKSwKIAkJ CQkgImFycmF5IGxlbmd0aCBtaXNtYXRjaCIpOwogCiAvKiBUaGlzIG11c3QgbWF0Y2ggZW51bSBQ cmVkaWNhdGVMb2NrVGFyZ2V0VHlwZSAocHJlZGljYXRlX2ludGVybmFscy5oKSAqLwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYwppbmRleCAzNDlkZDZhLi5hZjY3OWU1IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMjk4Miw2ICsyOTgyLDE4IEBAIHN0cnVjdCBjb25m aWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCX0sCiAKIAl7CisJCXsibWF4X3BhcmFsbGVs X2FwcGx5X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiIsCisJCQlQR0NfU0lHSFVQLAorCQkJUkVQ TElDQVRJT05fU1VCU0NSSUJFUlMsCisJCQlnZXR0ZXh0X25vb3AoIk1heGltdW0gbnVtYmVyIG9m IHBhcmFsbGVsIGFwcGx5IHdvcmtlcnMgcGVyIHN1YnNjcmlwdGlvbi4iKSwKKwkJCU5VTEwsCisJ CX0sCisJCSZtYXhfcGFyYWxsZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uLAorCQky LCAwLCBNQVhfUEFSQUxMRUxfV09SS0VSX0xJTUlULAorCQlOVUxMLCBOVUxMLCBOVUxMCisJfSwK KworCXsKIAkJeyJsb2dfcm90YXRpb25fYWdlIiwgUEdDX1NJR0hVUCwgTE9HR0lOR19XSEVSRSwK IAkJCWdldHRleHRfbm9vcCgiU2V0cyB0aGUgYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUg Zm9yY2luZyAiCiAJCQkJCQkgImxvZyBmaWxlIHJvdGF0aW9uLiIpLApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQv dXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IDg2OGQyMWMuLjRkMDFjYTkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBs ZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAg LTM2MCw2ICszNjAsNyBAQAogI21heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0CSMg dGFrZW4gZnJvbSBtYXhfd29ya2VyX3Byb2Nlc3NlcwogCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMg cmVzdGFydCkKICNtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4g ZnJvbSBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCisjbWF4X3BhcmFsbGVsX2FwcGx5 X3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDIJIyB0YWtlbiBmcm9tIG1heF9sb2dpY2FsX3Jl cGxpY2F0aW9uX3dvcmtlcnMKIAogCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQg YS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpp bmRleCBkYTQyN2Y0Li41MTQxYTY2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ0ODEsNyArNDQ4MSw3IEBA IGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lv biA+PSAxNDAwMDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIHMuc3Vic3RyZWFt LFxuIik7CiAJZWxzZQotCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiBmYWxzZSBBUyBz dWJzdHJlYW0sXG4iKTsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgJ2YnIEFTIHN1 YnN0cmVhbSxcbiIpOwogCiAJaWYgKGZvdXQtPnJlbW90ZVZlcnNpb24gPj0gMTUwMDAwKQogCQlh cHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwKQEAgLTQ2MTgsOCArNDYxOCwxMCBAQCBkdW1wU3Vi c2NyaXB0aW9uKEFyY2hpdmUgKmZvdXQsIGNvbnN0IFN1YnNjcmlwdGlvbkluZm8gKnN1YmluZm8p CiAJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJiaW5hcnksICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFF eHBCdWZmZXJTdHIocXVlcnksICIsIGJpbmFyeSA9IHRydWUiKTsKIAotCWlmIChzdHJjbXAoc3Vi aW5mby0+c3Vic3RyZWFtLCAiZiIpICE9IDApCisJaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJzdHJl YW0sICJ0IikgPT0gMCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIsIHN0cmVhbWlu ZyA9IG9uIik7CisJZWxzZSBpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgInAiKSA9PSAw KQorCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gcGFyYWxsZWwi KTsKIAogCWlmIChzdHJjbXAoc3ViaW5mby0+c3VidHdvcGhhc2VzdGF0ZSwgdHdvX3BoYXNlX2Rp c2FibGVkKSAhPSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgdHdvX3BoYXNl ID0gb24iKTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9w c3FsL2Rlc2NyaWJlLmMKaW5kZXggMmVhZTUxOS4uNzQwYjEzNSAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTY0OTks MTEgKzY0OTksMjQgQEAgZGVzY3JpYmVTdWJzY3JpcHRpb25zKGNvbnN0IGNoYXIgKnBhdHRlcm4s IGJvb2wgdmVyYm9zZSkKIAl7CiAJCS8qIEJpbmFyeSBtb2RlIGFuZCBzdHJlYW1pbmcgYXJlIG9u bHkgc3VwcG9ydGVkIGluIHYxNCBhbmQgaGlnaGVyICovCiAJCWlmIChwc2V0LnN2ZXJzaW9uID49 IDE0MDAwMCkKKwkJewogCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwKLQkJCQkJCQkgICIsIHN1 YmJpbmFyeSBBUyBcIiVzXCJcbiIKLQkJCQkJCQkgICIsIHN1YnN0cmVhbSBBUyBcIiVzXCJcbiIs Ci0JCQkJCQkJICBnZXR0ZXh0X25vb3AoIkJpbmFyeSIpLAotCQkJCQkJCSAgZ2V0dGV4dF9ub29w KCJTdHJlYW1pbmciKSk7CisJCQkJCQkJICAiLCBzdWJiaW5hcnkgQVMgXCIlc1wiXG4iLAorCQkJ CQkJCSAgZ2V0dGV4dF9ub29wKCJCaW5hcnkiKSk7CisKKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49 IDE2MDAwMCkKKwkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkgICIsIChDQVNF IHN1YnN0cmVhbVxuIgorCQkJCQkJCQkgICIgICAgV0hFTiAnZicgVEhFTiAnb2ZmJ1xuIgorCQkJ CQkJCQkgICIgICAgV0hFTiAndCcgVEhFTiAnb24nXG4iCisJCQkJCQkJCSAgIiAgICBXSEVOICdw JyBUSEVOICdwYXJhbGxlbCdcbiIKKwkJCQkJCQkJICAiICAgRU5EKSBBUyBcIiVzXCJcbiIsCisJ CQkJCQkJCSAgZ2V0dGV4dF9ub29wKCJTdHJlYW1pbmciKSk7CisJCQllbHNlCisJCQkJYXBwZW5k UFFFeHBCdWZmZXIoJmJ1ZiwKKwkJCQkJCQkJICAiLCBzdWJzdHJlYW0gQVMgXCIlc1wiXG4iLAor CQkJCQkJCQkgIGdldHRleHRfbm9vcCgiU3RyZWFtaW5nIikpOworCQl9CiAKIAkJLyogVHdvX3Bo YXNlIGFuZCBkaXNhYmxlX29uX2Vycm9yIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiB2MTUgYW5kIGhp Z2hlciAqLwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxNTAwMDApCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9w Z19zdWJzY3JpcHRpb24uaAppbmRleCA3Yjk4NzE0Li4wMTZhZmJjIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFs b2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTgwLDcgKzgwLDggQEAgQ0FUQUxPRyhwZ19zdWJzY3Jp cHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JFTEFUSU9OIEJL SV9ST1cKIAlib29sCQlzdWJiaW5hcnk7CQkvKiBUcnVlIGlmIHRoZSBzdWJzY3JpcHRpb24gd2Fu dHMgdGhlCiAJCQkJCQkJCSAqIHB1Ymxpc2hlciB0byBzZW5kIGRhdGEgaW4gYmluYXJ5ICovCiAK LQlib29sCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAq LworCWNoYXIJCXN1YnN0cmVhbTsJCS8qIFN0cmVhbSBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMu IFNlZQorCQkJCQkJCQkgKiBTVUJTVFJFQU1feHh4IGNvbnN0YW50cy4gKi8KIAogCWNoYXIJCXN1 YnR3b3BoYXNlc3RhdGU7CS8qIFN0cmVhbSB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAKQEAg LTEyNCw3ICsxMjUsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAlib29sCQllbmFi bGVkOwkJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJzY3JpcHRpb24gaXMgZW5hYmxlZCAqLwogCWJv b2wJCWJpbmFyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiB3YW50cyBkYXRh IGluCiAJCQkJCQkJCSAqIGJpbmFyeSBmb3JtYXQgKi8KLQlib29sCQlzdHJlYW07CQkJLyogQWxs b3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdHJlYW07 CQkJLyogQWxsb3cgc3RyZWFtaW5nIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucy4KKwkJCQkJCQkJ ICogU2VlIFNVQlNUUkVBTV94eHggY29uc3RhbnRzLiAqLwogCWNoYXIJCXR3b3BoYXNlc3RhdGU7 CS8qIEFsbG93IHN0cmVhbWluZyB0d28tcGhhc2UgdHJhbnNhY3Rpb25zICovCiAJYm9vbAkJZGlz YWJsZW9uZXJyOwkvKiBJbmRpY2F0ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJ CQkJCQkJICogYXV0b21hdGljYWxseSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgpAQCAtMTM3 LDYgKzEzOSwyMSBAQCB0eXBlZGVmIHN0cnVjdCBTdWJzY3JpcHRpb24KIAkJCQkJCQkJICogc3Bl Y2lmaWVkIG9yaWdpbiAqLwogfSBTdWJzY3JpcHRpb247CiAKKy8qIERpc2FsbG93IHN0cmVhbWlu ZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMuICovCisjZGVmaW5lIFNVQlNUUkVBTV9PRkYgJ2Yn CisKKy8qCisgKiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSB3cml0dGVu IHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kCisgKiBhcHBsaWVkIG9ubHkgYWZ0ZXIgdGhlIHRyYW5z YWN0aW9uIGlzIGNvbW1pdHRlZCBvbiB1cHN0cmVhbS4KKyAqLworI2RlZmluZSBTVUJTVFJFQU1f T04gJ3QnCisKKy8qCisgKiBTdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zIGFyZSBh cHBsaWVkIGltbWVkaWF0ZWx5IHZpYSBhIHBhcmFsbGVsCisgKiBhcHBseSB3b3JrZXIuCisgKi8K KyNkZWZpbmUgU1VCU1RSRUFNX1BBUkFMTEVMICdwJworCiBleHRlcm4gU3Vic2NyaXB0aW9uICpH ZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spOwogZXh0ZXJuIHZvaWQg RnJlZVN1YnNjcmlwdGlvbihTdWJzY3JpcHRpb24gKnN1Yik7CiBleHRlcm4gdm9pZCBEaXNhYmxl U3Vic2NyaXB0aW9uKE9pZCBzdWJpZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5k cy9zdWJzY3JpcHRpb25jbWRzLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9zdWJzY3JpcHRpb25j bWRzLmgKaW5kZXggMmNiZTdkNy4uNzc5NDc0ZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5oCisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3N1YnNj cmlwdGlvbmNtZHMuaApAQCAtMjYsNCArMjYsNiBAQCBleHRlcm4gdm9pZCBEcm9wU3Vic2NyaXB0 aW9uKERyb3BTdWJzY3JpcHRpb25TdG10ICpzdG10LCBib29sIGlzVG9wTGV2ZWwpOwogZXh0ZXJu IE9iamVjdEFkZHJlc3MgQWx0ZXJTdWJzY3JpcHRpb25Pd25lcihjb25zdCBjaGFyICpuYW1lLCBP aWQgbmV3T3duZXJJZCk7CiBleHRlcm4gdm9pZCBBbHRlclN1YnNjcmlwdGlvbk93bmVyX29pZChP aWQgc3ViaWQsIE9pZCBuZXdPd25lcklkKTsKIAorZXh0ZXJuIGNoYXIgZGVmR2V0U3RyZWFtaW5n TW9kZShEZWZFbGVtICpkZWYpOworCiAjZW5kaWYJCQkJCQkJLyogU1VCU0NSSVBUSU9OQ01EU19I ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIu aCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCmluZGV4IGYxZTI4 MjEuLmQ1MTNlZjUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxs YXVuY2hlci5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5o CkBAIC0xNCw2ICsxNCw3IEBACiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X2xvZ2ljYWxf cmVwbGljYXRpb25fd29ya2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3N5bmNfd29y a2Vyc19wZXJfc3Vic2NyaXB0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfcGFyYWxs ZWxfYXBwbHlfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uOwogCiBleHRlcm4gdm9pZCBBcHBseUxh dW5jaGVyUmVnaXN0ZXIodm9pZCk7CiBleHRlcm4gdm9pZCBBcHBseUxhdW5jaGVyTWFpbihEYXR1 bSBtYWluX2FyZyk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fs cHJvdG8uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCmluZGV4IDdl YWE0YzkuLjFkYTdiMDEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2lj YWxwcm90by5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oCkBA IC0zMiwxMiArMzIsMTcgQEAKICAqCiAgKiBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJ T05fTlVNIGlzIHRoZSBtaW5pbXVtIHByb3RvY29sIHZlcnNpb24gd2l0aAogICogc3VwcG9ydCBm b3IgdHdvLXBoYXNlIGNvbW1pdCBkZWNvZGluZyAoYXQgcHJlcGFyZSB0aW1lKS4gSW50cm9kdWNl ZCBpbiBQRzE1LgorICoKKyAqIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJ T05fTlVNIGlzIHRoZSBtaW5pbXVtIHByb3RvY29sIHZlcnNpb24KKyAqIHdoZXJlIHdlIHN1cHBv cnQgYXBwbHlpbmcgbGFyZ2Ugc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBpbiBwYXJhbGxlbC4KKyAq IEludHJvZHVjZWQgaW4gUEcxNi4KICAqLwogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01JTl9W RVJTSU9OX05VTSAxCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU0gMQogI2Rl ZmluZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSAyCiAjZGVmaW5lIExPR0lD QUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gMwotI2RlZmluZSBMT0dJQ0FMUkVQX1BS T1RPX01BWF9WRVJTSU9OX05VTSBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVN CisjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDQK KyNkZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9U T19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0KIAogLyoKICAqIExvZ2ljYWwgbWVzc2FnZSB0 eXBlcwpAQCAtMTc1LDYgKzE4MCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUm9sbGJh Y2tQcmVwYXJlZFR4bkRhdGEKIAljaGFyCQlnaWRbR0lEU0laRV07CiB9IExvZ2ljYWxSZXBSb2xs YmFja1ByZXBhcmVkVHhuRGF0YTsKIAorLyoKKyAqIFRyYW5zYWN0aW9uIHByb3RvY29sIGluZm9y bWF0aW9uIGZvciBzdHJlYW0gYWJvcnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBT dHJlYW1BYm9ydERhdGEKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1 YnhpZDsKKwlYTG9nUmVjUHRyCWFib3J0X2xzbjsKKwlUaW1lc3RhbXBUeiBhYm9ydF90aW1lOwor fSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhOworCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dy aXRlX2JlZ2luKFN0cmluZ0luZm8gb3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pOwogZXh0ZXJu IHZvaWQgbG9naWNhbHJlcF9yZWFkX2JlZ2luKFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJCSAgTG9n aWNhbFJlcEJlZ2luRGF0YSAqYmVnaW5fZGF0YSk7CkBAIC0yNDYsOSArMjYyLDEzIEBAIGV4dGVy biB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIG91dCwgUmVv cmRlckJ1ZmZlclRYTiAqdHhuCiBleHRlcm4gVHJhbnNhY3Rpb25JZCBsb2dpY2FscmVwX3JlYWRf c3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIGluLAogCQkJCQkJCQkJCQkJICAgTG9naWNhbFJlcENv bW1pdERhdGEgKmNvbW1pdF9kYXRhKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfc3Ry ZWFtX2Fib3J0KFN0cmluZ0luZm8gb3V0LCBUcmFuc2FjdGlvbklkIHhpZCwKLQkJCQkJCQkJCQkg IFRyYW5zYWN0aW9uSWQgc3VieGlkKTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfcmVhZF9zdHJl YW1fYWJvcnQoU3RyaW5nSW5mbyBpbiwgVHJhbnNhY3Rpb25JZCAqeGlkLAotCQkJCQkJCQkJCSBU cmFuc2FjdGlvbklkICpzdWJ4aWQpOworCQkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBzdWJ4aWQs CisJCQkJCQkJCQkJICBYTG9nUmVjUHRyIGFib3J0X2xzbiwKKwkJCQkJCQkJCQkgIFRpbWVzdGFt cFR6IGFib3J0X3RpbWUsCisJCQkJCQkJCQkJICBib29sIHdyaXRlX2Fib3J0X2luZm8pOworZXh0 ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIGluLAorCQkJ CQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAorCQkJCQkJCQkJ CSBib29sIHJlYWRfYWJvcnRfaW5mbyk7CiBleHRlcm4gY2hhciAqbG9naWNhbHJlcF9tZXNzYWdl X3R5cGUoTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uKTsKIAogI2VuZGlmCQkJCQkJCS8qIExPR0lD QUxfUFJPVE9fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNh bHdvcmtlci5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCmluZGV4 IGNkMWI2ZTguLmRjNjhjZDggMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xv Z2ljYWx3b3JrZXIuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2Vy LmgKQEAgLTEyLDggKzEyLDE2IEBACiAjaWZuZGVmIExPR0lDQUxXT1JLRVJfSAogI2RlZmluZSBM T0dJQ0FMV09SS0VSX0gKIAorI2luY2x1ZGUgPHNpZ25hbC5oPgorCitleHRlcm4gUEdETExJTVBP UlQgdm9sYXRpbGUgc2lnX2F0b21pY190IFBhcmFsbGVsQXBwbHlNZXNzYWdlUGVuZGluZzsKKwog ZXh0ZXJuIHZvaWQgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKK2V4dGVybiB2b2lk IFBhcmFsbGVsQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIAogZXh0ZXJuIGJvb2wg SXNMb2dpY2FsV29ya2VyKHZvaWQpOworZXh0ZXJuIGJvb2wgSXNMb2dpY2FsUGFyYWxsZWxBcHBs eVdvcmtlcih2b2lkKTsKK2V4dGVybiB2b2lkIEhhbmRsZVBhcmFsbGVsQXBwbHlNZXNzYWdlSW50 ZXJydXB0KHZvaWQpOworZXh0ZXJuIHZvaWQgSGFuZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VzKHZv aWQpOwogCiAjZW5kaWYJCQkJCQkJLyogTE9HSUNBTFdPUktFUl9IICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L29yaWdpbi5oCmluZGV4IDJhNTBkMTAuLmM3YjFhZGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL29yaWdpbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdp bi5oCkBAIC01Myw3ICs1Myw3IEBAIGV4dGVybiBYTG9nUmVjUHRyIHJlcGxvcmlnaW5fZ2V0X3By b2dyZXNzKFJlcE9yaWdpbklkIG5vZGUsIGJvb2wgZmx1c2gpOwogCiBleHRlcm4gdm9pZCByZXBs b3JpZ2luX3Nlc3Npb25fYWR2YW5jZShYTG9nUmVjUHRyIHJlbW90ZV9jb21taXQsCiAJCQkJCQkJ CQkgICBYTG9nUmVjUHRyIGxvY2FsX2NvbW1pdCk7Ci1leHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nl c3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSk7CitleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nl c3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSwgaW50IGFjcXVpcmVkX2J5KTsKIGV4dGVybiB2 b2lkIHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCh2b2lkKTsKIGV4dGVybiBYTG9nUmVjUHRyIHJl cGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoYm9vbCBmbHVzaCk7CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9wZ291dHB1dC5oCmluZGV4IDAyMDI3NTUuLjNjMzBkYTggMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Bnb3V0cHV0LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vcGdvdXRwdXQuaApAQCAtMjYsNyArMjYsNyBAQCB0eXBlZGVmIHN0cnVjdCBQR091dHB1dERh dGEKIAlMaXN0CSAgICpwdWJsaWNhdGlvbl9uYW1lczsKIAlMaXN0CSAgICpwdWJsaWNhdGlvbnM7 CiAJYm9vbAkJYmluYXJ5OwotCWJvb2wJCXN0cmVhbWluZzsKKwljaGFyCQlzdHJlYW1pbmc7CiAJ Ym9vbAkJbWVzc2FnZXM7CiAJYm9vbAkJdHdvX3BoYXNlOwogCWNoYXIJICAgKm9yaWdpbjsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBiL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaAppbmRleCBiMjNkOGNjLi5iMmE3MDI5 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBAIC0zMDEsNiArMzAx LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlclRYTgogCXsKIAkJVGltZXN0YW1wVHog Y29tbWl0X3RpbWU7CiAJCVRpbWVzdGFtcFR6IHByZXBhcmVfdGltZTsKKwkJVGltZXN0YW1wVHog YWJvcnRfdGltZTsKIAl9CQkJeGFjdF90aW1lOwogCiAJLyoKQEAgLTY2Myw5ICs2NjQsMTEgQEAg ZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFzc2lnbkNoaWxkKFJlb3JkZXJCdWZmZXIgKnJiLCBU cmFuc2FjdGlvbklkIHhpZCwKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJDb21taXRDaGlsZChS ZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsCiAJCQkJCQkJCQkgVHJhbnNhY3Rp b25JZCBzdWJ4aWQsIFhMb2dSZWNQdHIgY29tbWl0X2xzbiwKIAkJCQkJCQkJCSBYTG9nUmVjUHRy IGVuZF9sc24pOwotZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIg KnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOworZXh0ZXJuIHZvaWQgUmVv cmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExv Z1JlY1B0ciBsc24sCisJCQkJCQkJICAgVGltZXN0YW1wVHogYWJvcnRfdGltZSk7CiBleHRlcm4g dm9pZCBSZW9yZGVyQnVmZmVyQWJvcnRPbGQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9u SWQgb2xkZXN0UnVubmluZ1hpZCk7Ci1leHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyRm9yZ2V0KFJl b3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOworZXh0 ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rp b25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCQkJCQlUaW1lc3RhbXBUeiBhYm9ydF90aW1l KTsKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJJbnZhbGlkYXRlKFJlb3JkZXJCdWZmZXIgKnJi LCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pOwogCiBleHRlcm4gdm9pZCBSZW9y ZGVyQnVmZmVyU2V0QmFzZVNuYXBzaG90KFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFuc2FjdGlvbklk IHhpZCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgg Yi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCmluZGV4IDkzMzlmMjkuLjBj OGJiZGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmgK KysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaApAQCAtMTgyLDcgKzE4 Miw3IEBAIHR5cGVkZWYgc3RydWN0CiAJCQl1aW50MzIJCXByb3RvX3ZlcnNpb247CS8qIExvZ2lj YWwgcHJvdG9jb2wgdmVyc2lvbiAqLwogCQkJTGlzdAkgICAqcHVibGljYXRpb25fbmFtZXM7CS8q IFN0cmluZyBsaXN0IG9mIHB1YmxpY2F0aW9ucyAqLwogCQkJYm9vbAkJYmluYXJ5OyAvKiBBc2sg cHVibGlzaGVyIHRvIHVzZSBiaW5hcnkgKi8KLQkJCWJvb2wJCXN0cmVhbWluZzsJLyogU3RyZWFt aW5nIG9mIGxhcmdlIHRyYW5zYWN0aW9ucyAqLworCQkJY2hhcgkgICAqc3RyZWFtaW5nX3N0cjsJ LyogU3RyZWFtaW5nIG9mIGxhcmdlIHRyYW5zYWN0aW9ucyAqLwogCQkJYm9vbAkJdHdvcGhhc2U7 CS8qIFN0cmVhbWluZyBvZiB0d28tcGhhc2UgdHJhbnNhY3Rpb25zIGF0CiAJCQkJCQkJCQkgKiBw cmVwYXJlIHRpbWUgKi8KIAkJCWNoYXIJICAgKm9yaWdpbjsgLyogT25seSBwdWJsaXNoIGRhdGEg b3JpZ2luYXRpbmcgZnJvbSB0aGUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVy bmFsLmgKaW5kZXggMmI3MTE0Zi4uODg4NDA1OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmgKQEAgLTE3LDggKzE3LDEyIEBACiAjaW5jbHVkZSAiYWNjZXNzL3hs b2dkZWZzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIKICNpbmNsdWRl ICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRl ICJyZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZpbGVz ZXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xvY2suaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobV9t cS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htX3RvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bp bi5oIgogCiAKQEAgLTYwLDYgKzY0LDE1IEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3Jr ZXIKIAkgKi8KIAlGaWxlU2V0ICAgICpzdHJlYW1fZmlsZXNldDsKIAorCS8qCisJICogUElEIG9m IGxlYWRlciBhcHBseSB3b3JrZXIgaWYgdGhpcyBzbG90IGlzIHVzZWQgZm9yIGEgcGFyYWxsZWwg YXBwbHkKKwkgKiB3b3JrZXIsIEludmFsaWRQaWQgb3RoZXJ3aXNlLgorCSAqLworCXBpZF90CQlh cHBseV9sZWFkZXJfcGlkOworCisJLyogSW5kaWNhdGVzIHdoZXRoZXIgYXBwbHkgY2FuIGJlIHBl cmZvcm1lZCBpbiBwYXJhbGxlbC4gKi8KKwlib29sCQlwYXJhbGxlbF9hcHBseTsKKwogCS8qIFN0 YXRzLiAqLwogCVhMb2dSZWNQdHIJbGFzdF9sc247CiAJVGltZXN0YW1wVHogbGFzdF9zZW5kX3Rp bWU7CkBAIC02OCw5ICs4MSwxMDIgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFdvcmtlcgog CVRpbWVzdGFtcFR6IHJlcGx5X3RpbWU7CiB9IExvZ2ljYWxSZXBXb3JrZXI7CiAKKy8qIFN0cnVj dCBmb3Igc2F2aW5nIGFuZCByZXN0b3JpbmcgYXBwbHkgZXJyY29udGV4dCBpbmZvcm1hdGlvbiAq LwordHlwZWRlZiBzdHJ1Y3QgQXBwbHlFcnJvckNhbGxiYWNrQXJnCit7CisJTG9naWNhbFJlcE1z Z1R5cGUgY29tbWFuZDsJLyogMCBpZiBpbnZhbGlkICovCisJTG9naWNhbFJlcFJlbE1hcEVudHJ5 ICpyZWw7CisKKwkvKiBSZW1vdGUgbm9kZSBpbmZvcm1hdGlvbiAqLworCWludAkJCXJlbW90ZV9h dHRudW07CS8qIC0xIGlmIGludmFsaWQgKi8KKwlUcmFuc2FjdGlvbklkIHJlbW90ZV94aWQ7CisJ WExvZ1JlY1B0cglmaW5pc2hfbHNuOworCWNoYXIJICAgKm9yaWdpbl9uYW1lOworfSBBcHBseUVy cm9yQ2FsbGJhY2tBcmc7CisKKy8qCisgKiBTdGF0ZSBvZiB0aGUgdHJhbnNhY3Rpb24gaW4gcGFy YWxsZWwgYXBwbHkgd29ya2VyLgorICoKKyAqIFRoZSBlbnVtIHZhbHVlcyBtdXN0IGhhdmUgdGhl IHNhbWUgb3JkZXIgYXMgdGhlIHRyYW5zYWN0aW9uIHN0YXRlCisgKiB0cmFuc2l0aW9ucy4KKyAq LwordHlwZWRlZiBlbnVtIFBhcmFsbGVsVHJhbnNTdGF0ZQoreworCVBBUkFMTEVMX1RSQU5TX1VO S05PV04sCisJUEFSQUxMRUxfVFJBTlNfU1RBUlRFRCwKKwlQQVJBTExFTF9UUkFOU19GSU5JU0hF RAorfSBQYXJhbGxlbFRyYW5zU3RhdGU7CisKKy8qCisgKiBTdHJ1Y3QgZm9yIHNoYXJpbmcgaW5m b3JtYXRpb24gYmV0d2VlbiBsZWFkZXIgYXBwbHkgd29ya2VyIGFuZCBwYXJhbGxlbAorICogYXBw bHkgd29ya2Vycy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFyYWxsZWxBcHBseVdvcmtlclNoYXJl ZAoreworCXNsb2NrX3QJCW11dGV4OworCisJVHJhbnNhY3Rpb25JZAl4aWQ7CisKKwkvKgorCSAq IFN0YXRlIHVzZWQgdG8gZW5zdXJlIGNvbW1pdCBvcmRlcmluZy4KKwkgKgorCSAqIFRoZSBwYXJh bGxlbCBhcHBseSB3b3JrZXIgd2lsbCBzZXQgaXQgdG8gUEFSQUxMRUxfVFJBTlNfRklOSVNIRUQg YWZ0ZXIKKwkgKiBoYW5kbGluZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmRzIHdoaWxl IHRoZSBhcHBseSBsZWFkZXIgd2lsbAorCSAqIHdhaXQgZm9yIGl0IHRvIGJlY29tZSBQQVJBTExF TF9UUkFOU19GSU5JU0hFRCBiZWZvcmUgcHJvY2VlZGluZyBpbgorCSAqIHRyYW5zYWN0aW9uIGZp bmlzaCBjb21tYW5kcyAoZS5nLiBTVFJFQU1fQ09NTUlUL1NUUkVBTV9QUkVQQVJFKS4KKwkgKi8K KwlQYXJhbGxlbFRyYW5zU3RhdGUJCXhhY3Rfc3RhdGU7CisKKwkvKiBJbmZvcm1hdGlvbiBmcm9t IHRoZSBjb3JyZXNwb25kaW5nIExvZ2ljYWxSZXBXb3JrZXIgc2xvdC4gKi8KKwl1aW50MTYJCWxv Z2ljYWxyZXBfd29ya2VyX2dlbmVyYXRpb247CisJaW50CQkJbG9naWNhbHJlcF93b3JrZXJfc2xv dF9ubzsKKworCS8qCisJICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlcmUgYXJlIHBlbmRpbmcgc3Ry ZWFtaW5nIGJsb2NrcyBpbiB0aGUgcXVldWUuIFRoZQorCSAqIHBhcmFsbGVsIGFwcGx5IHdvcmtl ciB3aWxsIGNoZWNrIGl0IGJlZm9yZSBzdGFydGluZyB0byB3YWl0LgorCSAqLworCXBnX2F0b21p Y191aW50MzIJcGVuZGluZ19zdHJlYW1fY291bnQ7Cit9IFBhcmFsbGVsQXBwbHlXb3JrZXJTaGFy ZWQ7CisKKy8qCisgKiBJbmZvcm1hdGlvbiB3aGljaCBpcyB1c2VkIHRvIG1hbmFnZSB0aGUgcGFy YWxsZWwgYXBwbHkgd29ya2VyLgorICovCit0eXBlZGVmIHN0cnVjdCBQYXJhbGxlbEFwcGx5V29y a2VySW5mbworeworCXNobV9tcV9oYW5kbGUgKm1xX2hhbmRsZTsKKworCS8qCisJICogVGhlIHF1 ZXVlIHVzZWQgdG8gdHJhbnNmZXIgZXJyb3IgbWVzc2FnZXMgZnJvbSB0aGUgcGFyYWxsZWwgYXBw bHkgd29ya2VyCisJICogdG8gdGhlIGxlYWRlciBhcHBseSB3b3JrZXIuIE5VTEwgaWYgdGhlIHBh cmFsbGVsIGFwcGx5IHdvcmtlciBleGl0ZWQKKwkgKiBjbGVhbmx5LgorCSAqLworCXNobV9tcV9o YW5kbGUgKmVycm9yX21xX2hhbmRsZTsKKworCWRzbV9zZWdtZW50ICpkc21fc2VnOworCisJLyoK KwkgKiBUcnVlIGlmIHRoZSB3b3JrZXIgaXMgYmVpbmcgdXNlZCB0byBwcm9jZXNzIGEgcGFyYWxs ZWwgYXBwbHkKKwkgKiB0cmFuc2FjdGlvbi4gRmFsc2UgaW5kaWNhdGVzIHRoaXMgd29ya2VyIGlz IGF2YWlsYWJsZSBmb3IgcmUtdXNlLgorCSAqLworCWJvb2wJCWluX3VzZTsKKworCVBhcmFsbGVs QXBwbHlXb3JrZXJTaGFyZWQgKnNoYXJlZDsKK30gUGFyYWxsZWxBcHBseVdvcmtlckluZm87CisK IC8qIE1haW4gbWVtb3J5IGNvbnRleHQgZm9yIGFwcGx5IHdvcmtlci4gUGVybWFuZW50IGR1cmlu ZyB3b3JrZXIgbGlmZXRpbWUuICovCiBleHRlcm4gUEdETExJTVBPUlQgTWVtb3J5Q29udGV4dCBB cHBseUNvbnRleHQ7CiAKK2V4dGVybiBQR0RMTElNUE9SVCBNZW1vcnlDb250ZXh0IEFwcGx5TWVz c2FnZUNvbnRleHQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCBFcnJvckNvbnRleHRDYWxsYmFjayAq YXBwbHlfZXJyb3JfY29udGV4dF9zdGFjazsKK2V4dGVybiBQR0RMTElNUE9SVCBBcHBseUVycm9y Q2FsbGJhY2tBcmcgYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnOworCitleHRlcm4gUEdETExJTVBP UlQgYm9vbCBNeVN1YnNjcmlwdGlvblZhbGlkOworCitleHRlcm4gUEdETExJTVBPUlQgUGFyYWxs ZWxBcHBseVdvcmtlclNoYXJlZCAqTXlQYXJhbGxlbFNoYXJlZDsKKworZXh0ZXJuIFBHRExMSU1Q T1JUIExpc3QgKnN1YnhhY3RsaXN0OworCiAvKiBsaWJwcXJlY2VpdmVyIGNvbm5lY3Rpb24gKi8K IGV4dGVybiBQR0RMTElNUE9SVCBzdHJ1Y3QgV2FsUmVjZWl2ZXJDb25uICpMb2dSZXBXb3JrZXJX YWxSY3ZDb25uOwogCkBAIC03OSwxOCArMTg1LDIzIEBAIGV4dGVybiBQR0RMTElNUE9SVCBTdWJz Y3JpcHRpb24gKk15U3Vic2NyaXB0aW9uOwogZXh0ZXJuIFBHRExMSU1QT1JUIExvZ2ljYWxSZXBX b3JrZXIgKk15TG9naWNhbFJlcFdvcmtlcjsKIAogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgaW5f cmVtb3RlX3RyYW5zYWN0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgaW5fc3RyZWFtZWRf dHJhbnNhY3Rpb247CitleHRlcm4gUEdETExJTVBPUlQgUGFyYWxsZWxBcHBseVdvcmtlckluZm8g KnN0cmVhbV9hcHBseV93b3JrZXI7CiAKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2F0 dGFjaChpbnQgc2xvdCk7CiBleHRlcm4gTG9naWNhbFJlcFdvcmtlciAqbG9naWNhbHJlcF93b3Jr ZXJfZmluZChPaWQgc3ViaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkJCWJvb2wgb25seV9ydW5u aW5nKTsKIGV4dGVybiBMaXN0ICpsb2dpY2FscmVwX3dvcmtlcnNfZmluZChPaWQgc3ViaWQsIGJv b2wgb25seV9ydW5uaW5nKTsKLWV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX2xhdW5jaChP aWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpzdWJuYW1lLAotCQkJCQkJCQkJIE9pZCB1 c2VyaWQsIE9pZCByZWxpZCk7CitleHRlcm4gYm9vbCBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2go T2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwKKwkJCQkJCQkJCSBPaWQg dXNlcmlkLCBPaWQgcmVsaWQsCisJCQkJCQkJCQkgZHNtX2hhbmRsZSBzdWJ3b3JrZXJfZHNtKTsK IGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQp OworZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9wYV93b3JrZXJfc3RvcChpbnQgc2xvdF9ubywgdWlu dDE2IGdlbmVyYXRpb24pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfd2FrZXVwKE9p ZCBzdWJpZCwgT2lkIHJlbGlkKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd29ya2VyX3dha2V1 cF9wdHIoTG9naWNhbFJlcFdvcmtlciAqd29ya2VyKTsKIAogZXh0ZXJuIGludAlsb2dpY2FscmVw X3N5bmNfd29ya2VyX2NvdW50KE9pZCBzdWJpZCk7CitleHRlcm4gaW50CWxvZ2ljYWxyZXBfcGFf d29ya2VyX2NvdW50KE9pZCBzdWJpZCk7CiAKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uT3JpZ2lu TmFtZUZvckxvZ2ljYWxSZXAoT2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAogCQkJCQkJCQkJCQkgICBj aGFyICpvcmlnaW5uYW1lLCBTaXplIHN6b3JpZ2lubmFtZSk7CkBAIC0xMDMsMTAgKzIxNCw1NiBA QCBleHRlcm4gdm9pZCBwcm9jZXNzX3N5bmNpbmdfdGFibGVzKFhMb2dSZWNQdHIgY3VycmVudF9s c24pOwogZXh0ZXJuIHZvaWQgaW52YWxpZGF0ZV9zeW5jaW5nX3RhYmxlX3N0YXRlcyhEYXR1bSBh cmcsIGludCBjYWNoZWlkLAogCQkJCQkJCQkJCQl1aW50MzIgaGFzaHZhbHVlKTsKIAorZXh0ZXJu IHZvaWQgYXBwbHlfZGlzcGF0Y2goU3RyaW5nSW5mbyBzKTsKKworZXh0ZXJuIHZvaWQgbWF5YmVf cmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKTsKKworZXh0ZXJuIHZvaWQgSW5pdGlhbGl6ZUFwcGx5 V29ya2VyKHZvaWQpOworCitleHRlcm4gdm9pZCBhcHBseV93b3JrZXJfY2xlYW5fZXhpdChib29s IG9uX3N1YmluZm9fY2hhbmdlKTsKKworLyogRnVuY3Rpb24gZm9yIGFwcGx5IGVycm9yIGNhbGxi YWNrICovCitleHRlcm4gdm9pZCBhcHBseV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOworCisv KiBQYXJhbGxlbCBhcHBseSB3b3JrZXIgc2V0dXAgYW5kIGludGVyYWN0aW9ucyAqLworZXh0ZXJu IHZvaWQgcGFfYWxsb2NhdGVfd29ya2VyKFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBQYXJh bGxlbEFwcGx5V29ya2VySW5mbyAqcGFfZmluZF93b3JrZXIoVHJhbnNhY3Rpb25JZCB4aWQpOwor ZXh0ZXJuIHZvaWQgcGFfc2V0X3hhY3Rfc3RhdGUoUGFyYWxsZWxBcHBseVdvcmtlclNoYXJlZCAq d3NoYXJlZCwKKwkJCQkJCQkJCQkgIFBhcmFsbGVsVHJhbnNTdGF0ZSBpbl94YWN0KTsKK2V4dGVy biBib29sIHBhX2ZyZWVfd29ya2VyKFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbywgVHJh bnNhY3Rpb25JZCB4aWQpOworCitleHRlcm4gdm9pZCBwYV93YWl0X2Zvcl94YWN0X2ZpbmlzaChQ YXJhbGxlbEFwcGx5V29ya2VySW5mbyAqd3NoYXJlZCk7CitleHRlcm4gdm9pZCBwYV9zZW5kX2Rh dGEoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKndpbmZvLCBTaXplIG5ieXRlcywKKwkJCQkJCQkJ CSBjb25zdCB2b2lkICpkYXRhKTsKKworZXh0ZXJuIHZvaWQgcGFfc3RhcnRfc3VidHJhbnMoVHJh bnNhY3Rpb25JZCBjdXJyZW50X3hpZCwgVHJhbnNhY3Rpb25JZCB0b3BfeGlkKTsKK2V4dGVybiB2 b2lkIHBhX3N0cmVhbV9hYm9ydChMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRh KTsKKworZXh0ZXJuIHZvaWQgcGFfbG9ja19zdHJlYW0oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tN T0RFIGxvY2ttb2RlKTsKK2V4dGVybiB2b2lkIHBhX2xvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rp b25JZCB4aWQsIExPQ0tNT0RFIGxvY2ttb2RlKTsKKworZXh0ZXJuIHZvaWQgcGFfdW5sb2NrX3N0 cmVhbShUcmFuc2FjdGlvbklkIHhpZCwgTE9DS01PREUgbG9ja21vZGUpOworZXh0ZXJuIHZvaWQg cGFfdW5sb2NrX3RyYW5zYWN0aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9k ZSk7CisKKyNkZWZpbmUgaXNQYXJhbGxlbEFwcGx5V29ya2VyKHdvcmtlcikgKCh3b3JrZXIpLT5h cHBseV9sZWFkZXJfcGlkICE9IEludmFsaWRQaWQpCisKIHN0YXRpYyBpbmxpbmUgYm9vbAogYW1f dGFibGVzeW5jX3dvcmtlcih2b2lkKQogewogCXJldHVybiBPaWRJc1ZhbGlkKE15TG9naWNhbFJl cFdvcmtlci0+cmVsaWQpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wKK2FtX2xlYWRlcl9hcHBs eV93b3JrZXIodm9pZCkKK3sKKwlyZXR1cm4gKCFPaWRJc1ZhbGlkKE15TG9naWNhbFJlcFdvcmtl ci0+cmVsaWQpICYmCisJCQkhaXNQYXJhbGxlbEFwcGx5V29ya2VyKE15TG9naWNhbFJlcFdvcmtl cikpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wKK2FtX3BhcmFsbGVsX2FwcGx5X3dvcmtlcih2 b2lkKQoreworCXJldHVybiBpc1BhcmFsbGVsQXBwbHlXb3JrZXIoTXlMb2dpY2FsUmVwV29ya2Vy KTsKK30KKwogI2VuZGlmCQkJCQkJCS8qIFdPUktFUl9JTlRFUk5BTF9IICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xtZ3IuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5o CmluZGV4IGJlMWQyYzkuLjVhM2JkMDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv bG1nci5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG1nci5oCkBAIC0xMDcsNiArMTA3LDEx IEBAIGV4dGVybiB2b2lkIExvY2tTaGFyZWRPYmplY3RGb3JTZXNzaW9uKE9pZCBjbGFzc2lkLCBP aWQgb2JqaWQsIHVpbnQxNiBvYmpzdWJpZCwKIGV4dGVybiB2b2lkIFVubG9ja1NoYXJlZE9iamVj dEZvclNlc3Npb24oT2lkIGNsYXNzaWQsIE9pZCBvYmppZCwgdWludDE2IG9ianN1YmlkLAogCQkJ CQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSk7CiAKK2V4dGVybiB2b2lkIExvY2tBcHBseVRyYW5z YWN0aW9uRm9yU2Vzc2lvbihPaWQgc3Vib2lkLCBUcmFuc2FjdGlvbklkIHhpZCwgdWludDE2IG9i amlkLAorCQkJCQkJCQkJCSAgIExPQ0tNT0RFIGxvY2ttb2RlKTsKK2V4dGVybiB2b2lkIFVubG9j a0FwcGx5VHJhbnNhY3Rpb25Gb3JTZXNzaW9uKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlk LCB1aW50MTYgb2JqaWQsCisJCQkJCQkJCQkJCSBMT0NLTU9ERSBsb2NrbW9kZSk7CisKIC8qIERl c2NyaWJlIGEgbG9ja3RhZyBmb3IgZXJyb3IgbWVzc2FnZXMgKi8KIGV4dGVybiB2b2lkIERlc2Ny aWJlTG9ja1RhZyhTdHJpbmdJbmZvIGJ1ZiwgY29uc3QgTE9DS1RBRyAqdGFnKTsKIApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xv Y2suaAppbmRleCBlNGUxNDk1Li43NzY2MTIzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9y YWdlL2xvY2suaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaApAQCAtMTQ5LDEwICsx NDksMTIgQEAgdHlwZWRlZiBlbnVtIExvY2tUYWdUeXBlCiAJTE9DS1RBR19TUEVDVUxBVElWRV9U T0tFTiwJLyogc3BlY3VsYXRpdmUgaW5zZXJ0aW9uIFhpZCBhbmQgdG9rZW4gKi8KIAlMT0NLVEFH X09CSkVDVCwJCQkJLyogbm9uLXJlbGF0aW9uIGRhdGFiYXNlIG9iamVjdCAqLwogCUxPQ0tUQUdf VVNFUkxPQ0ssCQkJLyogcmVzZXJ2ZWQgZm9yIG9sZCBjb250cmliL3VzZXJsb2NrIGNvZGUgKi8K LQlMT0NLVEFHX0FEVklTT1JZCQkJLyogYWR2aXNvcnkgdXNlciBsb2NrcyAqLworCUxPQ0tUQUdf QURWSVNPUlksCQkJLyogYWR2aXNvcnkgdXNlciBsb2NrcyAqLworCUxPQ0tUQUdfQVBQTFlfVFJB TlNBQ1RJT04JLyogdHJhbnNhY3Rpb24gYmVpbmcgYXBwbGllZCBvbiBhIGxvZ2ljYWwKKwkJCQkJ CQkJICogcmVwbGljYXRpb24gc3Vic2NyaWJlciAqLwogfSBMb2NrVGFnVHlwZTsKIAotI2RlZmlu ZSBMT0NLVEFHX0xBU1RfVFlQRQlMT0NLVEFHX0FEVklTT1JZCisjZGVmaW5lIExPQ0tUQUdfTEFT VF9UWVBFCUxPQ0tUQUdfQVBQTFlfVFJBTlNBQ1RJT04KIAogZXh0ZXJuIFBHRExMSU1QT1JUIGNv bnN0IGNoYXIgKmNvbnN0IExvY2tUYWdUeXBlTmFtZXNbXTsKIApAQCAtMjc4LDYgKzI4MCwxNyBA QCB0eXBlZGVmIHN0cnVjdCBMT0NLVEFHCiAJIChsb2NrdGFnKS5sb2NrdGFnX3R5cGUgPSBMT0NL VEFHX0FEVklTT1JZLCBcCiAJIChsb2NrdGFnKS5sb2NrdGFnX2xvY2ttZXRob2RpZCA9IFVTRVJf TE9DS01FVEhPRCkKIAorLyoKKyAqIElEIGluZm8gZm9yIGEgcmVtb3RlIHRyYW5zYWN0aW9uIG9u IGEgbG9naWNhbCByZXBsaWNhdGlvbiBzdWJzY3JpYmVyIGlzOiBEQgorICogT0lEICsgU1VCU0NS SVBUSU9OIE9JRCArIFRSQU5TQUNUSU9OIElEICsgT0JKSUQKKyAqLworI2RlZmluZSBTRVRfTE9D S1RBR19BUFBMWV9UUkFOU0FDVElPTihsb2NrdGFnLGRib2lkLHN1Ym9pZCx4aWQsb2JqaWQpIFwK KwkoKGxvY2t0YWcpLmxvY2t0YWdfZmllbGQxID0gKGRib2lkKSwgXAorCSAobG9ja3RhZykubG9j a3RhZ19maWVsZDIgPSAoc3Vib2lkKSwgXAorCSAobG9ja3RhZykubG9ja3RhZ19maWVsZDMgPSAo eGlkKSwgXAorCSAobG9ja3RhZykubG9ja3RhZ19maWVsZDQgPSAob2JqaWQpLCBcCisJIChsb2Nr dGFnKS5sb2NrdGFnX3R5cGUgPSBMT0NLVEFHX0FQUExZX1RSQU5TQUNUSU9OLCBcCisJIChsb2Nr dGFnKS5sb2NrdGFnX2xvY2ttZXRob2RpZCA9IERFRkFVTFRfTE9DS01FVEhPRCkKIAogLyoKICAq IFBlci1sb2NrZWQtb2JqZWN0IGxvY2sgaW5mb3JtYXRpb246CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25h bC5oCmluZGV4IGVlNjM2OTAuLjkzYTUxZjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvcHJvY3NpZ25hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBA IC0zNSw2ICszNSw3IEBAIHR5cGVkZWYgZW51bQogCVBST0NTSUdfV0FMU05EX0lOSVRfU1RPUFBJ TkcsCS8qIGFzayB3YWxzZW5kZXJzIHRvIHByZXBhcmUgZm9yIHNodXRkb3duICAqLwogCVBST0NT SUdfQkFSUklFUiwJCQkvKiBnbG9iYWwgYmFycmllciBpbnRlcnJ1cHQgICovCiAJUFJPQ1NJR19M T0dfTUVNT1JZX0NPTlRFWFQsIC8qIGFzayBiYWNrZW5kIHRvIGxvZyB0aGUgbWVtb3J5IGNvbnRl eHRzICovCisJUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFLCAvKiBNZXNzYWdlIGZyb20g cGFyYWxsZWwgYXBwbHkgd29ya2VycyAqLwogCiAJLyogUmVjb3ZlcnkgY29uZmxpY3QgcmVhc29u cyAqLwogCVBST0NTSUdfUkVDT1ZFUllfQ09ORkxJQ1RfREFUQUJBU0UsCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2 ZW50LmgKaW5kZXggMGIyMTAwYi4uNzYzZmJlYSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRp bHMvd2FpdF9ldmVudC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3dhaXRfZXZlbnQuaApAQCAt NDIsNiArNDIsNyBAQCB0eXBlZGVmIGVudW0KIAlXQUlUX0VWRU5UX0NIRUNLUE9JTlRFUl9NQUlO LAogCVdBSVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9NQUlOLAogCVdBSVRfRVZFTlRfTE9HSUNBTF9M QVVOQ0hFUl9NQUlOLAorCVdBSVRfRVZFTlRfTE9HSUNBTF9QQVJBTExFTF9BUFBMWV9NQUlOLAog CVdBSVRfRVZFTlRfUkVDT1ZFUllfV0FMX1NUUkVBTSwKIAlXQUlUX0VWRU5UX1NZU0xPR0dFUl9N QUlOLAogCVdBSVRfRVZFTlRfV0FMX1JFQ0VJVkVSX01BSU4sCkBAIC0xMDUsNiArMTA2LDcgQEAg dHlwZWRlZiBlbnVtCiAJV0FJVF9FVkVOVF9IQVNIX0dST1dfQlVDS0VUU19BTExPQ0FURSwKIAlX QUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX0VMRUNULAogCVdBSVRfRVZFTlRfSEFTSF9HUk9X X0JVQ0tFVFNfUkVJTlNFUlQsCisJV0FJVF9FVkVOVF9MT0dJQ0FMX1BBUkFMTEVMX0FQUExZX1NU QVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19EQVRBLAogCVdBSVRfRVZFTlRf TE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSwKIAlXQUlUX0VWRU5UX01RX0lOVEVSTkFMLApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0IGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CmluZGV4IGMxM2QyMTguLjFl ZDZmNGMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9u Lm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKQEAg LTExNyw3ICsxMTcsNyBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0 IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgICBOYW1lICAgICAg IHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJp bmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwg T3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAg IHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVz dHN1YjQgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBub25lICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWI0IHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgbm9uZSAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNV QlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI0IFNFVCAob3JpZ2luID0gYW55KTsKQEAgLTEyNSw3 ICsxMjUsNyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViNCBTRVQgKG9yaWdp biA9IGFueSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2Ny aXB0aW9ucwogICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwg RW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNv bW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAg ICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViNCB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBkICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YjQg fCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAg ICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBh bnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3Qg fCAwLzAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViMzsKQEAg LTEzOCw3ICsxMzgsNyBAQCBFUlJPUjogIGludmFsaWQgY29ubmVjdGlvbiBzdHJpbmcgc3ludGF4 OiBtaXNzaW5nICI9IiBhZnRlciAiZm9vYmFyIiBpbiBjb25uZWN0aQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgZiAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgUFVCTElDQVRJT04gdGVzdHB1YjIsIHRlc3RwdWIz IFdJVEggKHJlZnJlc2ggPSBmYWxzZSk7CkBAIC0xNTgsNyArMTU4LDcgQEAgQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTS0lQIChsc24gPSAnMC8xMjM0NScpOwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVi bGljYXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERp c2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAg Q29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgZiAgICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8xMjM0NQorIHJlZ3Jl c3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3Rw dWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBm ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMTIzNDUKICgxIHJvdykKIAogLS0gb2sgLSB3aXRoIGxz biA9IE5PTkUKQEAgLTE3MCw3ICsxNzAsNyBAQCBFUlJPUjogIGludmFsaWQgV0FMIGxvY2F0aW9u IChMU04pOiAwLzAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Yg c3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAg ICAgfCBFbmFibGVkIHwgICAgIFB1YmxpY2F0aW9uICAgICB8IEJpbmFyeSB8IFN0cmVhbWluZyB8 IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25v dXMgY29tbWl0IHwgICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJl Z3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8 IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAg IHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0MiB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIg fCBmICAgICAgIHwge3Rlc3RwdWIyLHRlc3RwdWIzfSB8IGYgICAgICB8IG9mZiAgICAgICB8IGQg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0MiB8IDAvMAogKDEgcm93KQogCiBC RUdJTjsKQEAgLTIwNSw3ICsyMDUsNyBAQCBISU5UOiAgQXZhaWxhYmxlIHZhbHVlczogbG9jYWws IHJlbW90ZV93cml0ZSwgcmVtb3RlX2FwcGx5LCBvbiwgb2ZmLgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgICAgTmFtZSAg ICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCAgICAgUHVibGlj YXRpb24gICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2Fi bGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICAgQ29u bmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1Yl9mb28gfCByZWdyZXNzX3N1YnNjcmlwdGlv bl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHViMix0ZXN0cHViM30gfCBmICAgICAgfCBmICAgICAg ICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IGxvY2Fs ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdDIgfCAwLzAKKyByZWdy ZXNzX3Rlc3RzdWJfZm9vIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7 dGVzdHB1YjIsdGVzdHB1YjN9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAg ICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBsb2NhbCAgICAgICAgICAgICAgfCBkYm5h bWU9cmVncmVzc19kb2Vzbm90ZXhpc3QyIHwgMC8wCiAoMSByb3cpCiAKIC0tIHJlbmFtZSBiYWNr IHRvIGtlZXAgdGhlIHJlc3Qgc2ltcGxlCkBAIC0yNDIsNyArMjQyLDcgQEAgSElOVDogIFRvIGlu aXRpYXRlIHJlcGxpY2F0aW9uLCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0 aW9uIHNsb3QsIGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJz Y3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8 IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBj b21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwg ICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IHQgICAgICB8IGYgICAgICAgICB8IGQgICAgICAg ICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAg IHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IHQgICAg ICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChi aW5hcnkgPSBmYWxzZSk7CkBAIC0yNTEsMTMgKzI1MSwxMyBAQCBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9ORSk7CiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8 ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24gfCBCaW5h cnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJvciB8IE9y aWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAgICAgICB8 IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3NfdGVzdHN1 YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBm ICAgICAgfCBmICAgICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8 IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlz dCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBm ICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBkICAgICAgICAgICAg ICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRi bmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWI7Ci0tLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVh bgorLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4gb3IgJ3BhcmFsbGVsJwogQ1JF QVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jl c3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxz ZSwgc3RyZWFtaW5nID0gZm9vKTsKLUVSUk9SOiAgc3RyZWFtaW5nIHJlcXVpcmVzIGEgQm9vbGVh biB2YWx1ZQorRVJST1I6ICBzdHJlYW1pbmcgcmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlIG9yICJw YXJhbGxlbCIKIC0tIG5vdyBpdCB3b3JrcwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElP TiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gdHJ1ZSk7CiBXQVJO SU5HOiAgc3Vic2NyaXB0aW9uIHdhcyBjcmVhdGVkLCBidXQgaXMgbm90IGNvbm5lY3RlZApAQCAt MjY2LDcgKzI2NiwxNSBAQCBISU5UOiAgVG8gaW5pdGlhdGUgcmVwbGljYXRpb24sIHlvdSBtdXN0 IG1hbnVhbGx5IGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCwgZQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAg fCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmlu YXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBP cmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAg fCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3Rz dWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwg ZiAgICAgIHwgdCAgICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAg fCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhp c3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgb24gICAgICAgIHwgZCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKygxIHJvdykKKworQUxURVIgU1VCU0NS SVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKK1xkUnMr CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwor ICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAorLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBwYXJhbGxlbCAgfCBkICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04g cmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0gZmFsc2UpOwpAQCAtMjc1LDcgKzI4Myw3 IEBAIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBO T05FKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRp b25zCiAgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJs ZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQg fCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAg ICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYg ICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAg ICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJu YW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVz c19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9m ZiAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwg b2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAo MSByb3cpCiAKIC0tIGZhaWwgLSBwdWJsaWNhdGlvbiBhbHJlYWR5IGV4aXN0cwpAQCAtMjkzLDcg KzMwMSw3IEBAIEVSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWIxIiBpcyBhbHJlYWR5IGluIHN1 YnNjcmlwdGlvbiAicmVncmVzc190ZXN0c3ViIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAgICAgICB8ICAg ICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgICAgICAgICBQdWJsaWNhdGlvbiAg ICAgICAgIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1pdCB8IERpc2FibGUg b24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAgICAgICBDb25uaW5m byAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSst LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNl ciB8IGYgICAgICAgfCB7dGVzdHB1Yix0ZXN0cHViMSx0ZXN0cHViMn0gfCBmICAgICAgfCBmICAg ICAgICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9m ZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJl Z3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rl c3RwdWIsdGVzdHB1YjEsdGVzdHB1YjJ9IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAg ICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAg fCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogLS0gZmFpbCAt IHB1YmxpY2F0aW9uIHVzZWQgbW9yZSB0aGVuIG9uY2UKQEAgLTMxMSw3ICszMTksNyBAQCBBTFRF UiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIERST1AgUFVCTElDQVRJT04gdGVzdHB1YjEs IHRlc3RwdWIyIFdJVEggKHJlZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0 IG9mIHN1YnNjcmlwdGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAg ICAgICAgIHwgRW5hYmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdv LXBoYXNlIGNvbW1pdCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBj b21taXQgfCAgICAgICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlw dGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgZiAgICAgICAgIHwg ZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAg ICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rl c3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAg IHwgZiAgICAgIHwgb2ZmICAgICAgIHwgZCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAg ICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90 ZXhpc3QgfCAwLzAKICgxIHJvdykKIAogRFJPUCBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3Vi OwpAQCAtMzUwLDcgKzM1OCw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBsaWNhdGlvbiwgeW91 IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBlCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwogICAgICAgTmFtZSAg ICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwgUHVibGljYXRpb24g fCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlzYWJsZSBvbiBlcnJv ciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENvbm5pbmZvICAgICAg ICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQotIHJlZ3Jlc3Nf dGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9 ICAgfCBmICAgICAgfCBmICAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAg ICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNu b3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3Vz ZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvZmYgICAgICAgfCBwICAgICAg ICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAg ICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93KQogCiAtLWZhaWwg LSBhbHRlciBvZiB0d29fcGhhc2Ugb3B0aW9uIG5vdCBzdXBwb3J0ZWQuCkBAIC0zNjIsNyArMzcw LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9 IHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IG9mIHN1YnNjcmlw dGlvbnMKICAgICAgIE5hbWUgICAgICAgfCAgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgRW5h YmxlZCB8IFB1YmxpY2F0aW9uIHwgQmluYXJ5IHwgU3RyZWFtaW5nIHwgVHdvLXBoYXNlIGNvbW1p dCB8IERpc2FibGUgb24gZXJyb3IgfCBPcmlnaW4gfCBTeW5jaHJvbm91cyBjb21taXQgfCAgICAg ICAgICBDb25uaW5mbyAgICAgICAgICAgfCBTa2lwIExTTiAKIC0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0KLSByZWdyZXNzX3Rlc3RzdWIgfCByZWdyZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwg ZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwgdCAgICAgICAgIHwgcCAgICAgICAgICAg ICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAgfCBvZmYgICAgICAgICAgICAgICAgfCBk Ym5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAKKyByZWdyZXNzX3Rlc3RzdWIgfCByZWdy ZXNzX3N1YnNjcmlwdGlvbl91c2VyIHwgZiAgICAgICB8IHt0ZXN0cHVifSAgIHwgZiAgICAgIHwg b24gICAgICAgIHwgcCAgICAgICAgICAgICAgICB8IGYgICAgICAgICAgICAgICAgfCBhbnkgICAg fCBvZmYgICAgICAgICAgICAgICAgfCBkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QgfCAwLzAK ICgxIHJvdykKIAogQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3Rf bmFtZSA9IE5PTkUpOwpAQCAtMzc1LDcgKzM4Myw3IEBAIEhJTlQ6ICBUbyBpbml0aWF0ZSByZXBs aWNhdGlvbiwgeW91IG11c3QgbWFudWFsbHkgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90LCBl CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygc3Vic2NyaXB0aW9ucwog ICAgICAgTmFtZSAgICAgICB8ICAgICAgICAgICBPd25lciAgICAgICAgICAgfCBFbmFibGVkIHwg UHVibGljYXRpb24gfCBCaW5hcnkgfCBTdHJlYW1pbmcgfCBUd28tcGhhc2UgY29tbWl0IHwgRGlz YWJsZSBvbiBlcnJvciB8IE9yaWdpbiB8IFN5bmNocm9ub3VzIGNvbW1pdCB8ICAgICAgICAgIENv bm5pbmZvICAgICAgICAgICB8IFNraXAgTFNOIAogLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LQotIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vic2NyaXB0aW9uX3VzZXIgfCBmICAgICAg IHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0ICAgICAgICAgfCBwICAgICAgICAgICAgICAgIHwg ZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAgICAgICAgICAgICAgICB8IGRibmFtZT1y ZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAorIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCBvbiAgICAg ICAgfCBwICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93 KQogCiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0g Tk9ORSk7CkBAIC0zOTEsNyArMzk5LDcgQEAgSElOVDogIFRvIGluaXRpYXRlIHJlcGxpY2F0aW9u LCB5b3UgbXVzdCBtYW51YWxseSBjcmVhdGUgdGhlIHJlcGxpY2F0aW9uIHNsb3QsIGUKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBO YW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNh dGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9u IGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8g ICAgICAgICAgIHwgU2tpcCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVn cmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVz dHB1Yn0gICB8IGYgICAgICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCBmICAgICAg ICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3Nf ZG9lc25vdGV4aXN0IHwgMC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChkaXNhYmxlX29uX2Vycm9yID0g dHJ1ZSk7CkBAIC0zOTksNyArNDA3LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVz dHN1YiBTRVQgKGRpc2FibGVfb25fZXJyb3IgPSB0cnVlKTsKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTGlzdCBvZiBzdWJzY3JpcHRpb25zCiAgICAgICBOYW1lICAgICAgIHwgICAg ICAgICAgIE93bmVyICAgICAgICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8 IFN0cmVhbWluZyB8IFR3by1waGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2lu IHwgU3luY2hyb25vdXMgY29tbWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tp cCBMU04gCiAtLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tCi0gcmVncmVzc190ZXN0c3ViIHwg cmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAg ICB8IGYgICAgICAgICB8IGQgICAgICAgICAgICAgICAgfCB0ICAgICAgICAgICAgICAgIHwgYW55 ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwg MC8wCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRpb25fdXNlciB8IGYgICAg ICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IG9mZiAgICAgICB8IGQgICAgICAgICAgICAgICAg fCB0ICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAgICAgICAgIHwgZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCiAoMSByb3cpCiAKIEFMVEVSIFNVQlNDUklQVElP TiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9zdWJzY3JpcHRpb24uc3FsCmluZGV4IGVhZWFkZTguLjc5OTFhYmYgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9zcWwvc3Vic2NyaXB0aW9uLnNxbApAQCAtMTY3LDcgKzE2Nyw3IEBAIEFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIAogRFJPUCBTVUJT Q1JJUFRJT04gcmVncmVzc190ZXN0c3ViOwogCi0tLSBmYWlsIC0gc3RyZWFtaW5nIG11c3QgYmUg Ym9vbGVhbgorLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0IGJlIGJvb2xlYW4gb3IgJ3BhcmFsbGVs JwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1l PXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3Qg PSBmYWxzZSwgc3RyZWFtaW5nID0gZm9vKTsKIAogLS0gbm93IGl0IHdvcmtzCkBAIC0xNzUsNiAr MTc1LDEwIEBAIENSRUFURSBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIENPTk5FQ1RJT04g J2RibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCcgUFVCCiAKIFxkUnMrCiAKK0FMVEVSIFNVQlND UklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBwYXJhbGxlbCk7CisKK1xk UnMrCisKIEFMVEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcg PSBmYWxzZSk7CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9u YW1lID0gTk9ORSk7CiAKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5s aXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMmY1ODAyMS4uMGUx MWNiNSAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE0NzIsNiArMTQ3Miw3IEBAIExv Z2ljYWxSZXBSZWxJZAogTG9naWNhbFJlcFJlbE1hcEVudHJ5CiBMb2dpY2FsUmVwUmVsYXRpb24K IExvZ2ljYWxSZXBSb2xsYmFja1ByZXBhcmVkVHhuRGF0YQorTG9naWNhbFJlcFN0cmVhbUFib3J0 RGF0YQogTG9naWNhbFJlcFR1cGxlRGF0YQogTG9naWNhbFJlcFR5cAogTG9naWNhbFJlcFdvcmtl cgpAQCAtMTY2Myw2ICsxNjY0LDkgQEAgT3ZlcnJpZGVTdGFja0VudHJ5CiBPdmVycmlkaW5nS2lu ZAogUEFDRV9IRUFERVIKIFBBQ0wKK1BhcmFsbGVsQXBwbHlXb3JrZXJFbnRyeQorUGFyYWxsZWxB cHBseVdvcmtlckluZm8KK1BhcmFsbGVsQXBwbHlXb3JrZXJTaGFyZWQKIFBBVEgKIFBCT09MCiBQ Q3R4dEhhbmRsZQpAQCAtMTg5NCw2ICsxODk4LDcgQEAgUGFyYWxsZWxTbG90UmVzdWx0SGFuZGxl cgogUGFyYWxsZWxTdGF0ZQogUGFyYWxsZWxUYWJsZVNjYW5EZXNjCiBQYXJhbGxlbFRhYmxlU2Nh bkRlc2NEYXRhCitQYXJhbGxlbFRyYW5zU3RhdGUKIFBhcmFsbGVsVmFjdXVtU3RhdGUKIFBhcmFs bGVsV29ya2VyQ29udGV4dAogUGFyYWxsZWxXb3JrZXJJbmZvCkBAIC0yNzgyLDYgKzI3ODcsNyBA QCBUcmFuc2FjdGlvblN0bXRLaW5kCiBUcmFuc2Zvcm1JbmZvCiBUcmFuc2Zvcm1Kc29uU3RyaW5n VmFsdWVzU3RhdGUKIFRyYW5zaXRpb25DYXB0dXJlU3RhdGUKK1RyYW5zQXBwbHlBY3Rpb24KIFRy Z21BcmMKIFRyZ21BcmNJbmZvCiBUcmdtQm91bmQKLS0gCjIuNy4yLndpbmRvd3MuMQoK --_006_OS0PR01MB571663F65904D00895AD159994109OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v52-0003-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v52-0003-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v52-0003-Test-streaming-parallel-option-in-tap-test.patch"; size=81987; creation-date="Sun, 27 Nov 2022 04:10:48 GMT"; modification-date="Sun, 27 Nov 2022 04:13:32 GMT" Content-Transfer-Encoding: base64 RnJvbSAxZDlkZDllNWEyN2FmY2VjY2ZjYWZhYjJiOGI0OGFkNDgyN2ViY2Q4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2NTIg My81XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEg Kwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAgICAgfCAy MzIgKysrKysrLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3Qu cGwgICAgICB8IDE0MyArKysrLS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1f ZGRsLnBsICAgICAgICAgIHwgMjIxICsrKysrKy0tLQogLi4uL3N1YnNjcmlwdGlvbi90LzAxOF9z dHJlYW1fc3VieGFjdF9hYm9ydC5wbCAgICAgfCAyMzMgKysrKysrLS0tCiAuLi4vc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbCB8IDEzNCArKystLQogc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwgICAgfCAzOTQgKysrKysr KysrLS0tLS0tCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBs ICAgICB8IDU0MCArKysrKysrKysrKystLS0tLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMzJf c3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsIHwgMTUyICsrKysrKwogOSBmaWxlcyBjaGFuZ2Vk LCAxNDA1IGluc2VydGlvbnMoKyksIDY0NSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBs CgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL21lc29uLmJ1aWxkCmluZGV4IDg1ZDFkZDkuLmI5NTFkOTcgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vbWVzb24uYnVpbGQKQEAgLTM2LDYgKzM2LDcgQEAgdGVzdHMgKz0gewogICAg ICAgJ3QvMDI5X29uX2Vycm9yLnBsJywKICAgICAgICd0LzAzMF9vcmlnaW4ucGwnLAogICAgICAg J3QvMDMxX2NvbHVtbl9saXN0LnBsJywKKyAgICAgICd0LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29u ZmxpY3QucGwnLAogICAgICAgJ3QvMTAwX2J1Z3MucGwnLAogICAgIF0sCiAgIH0sCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAppbmRleCBjYmFhMzI3Li42NWY0M2YwIDEwMDY0NAot LS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKQEAgLTgsNiArOCwxNDkgQEAgdXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2Ug VGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUgbG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0 aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFw cGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJhbGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2Ny aWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKSA9IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdl ID0KKwkgICdmaW5pc2hlZCBwcm9jZXNzaW5nIHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFu ZCc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fw c3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0 cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZv ciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIg dGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9IEBfOworCisJIyBJbnRlcmxlYXZlIGEgcGFpciBv ZiB0cmFuc2FjdGlvbnMsIGVhY2ggZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgorCW15ICRpbiAg PSAnJzsKKwlteSAkb3V0ID0gJyc7CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCW15ICR0aW1lciA9 IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZh dWx0KTsKKworCW15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3Rn cmVzJywgXCRpbiwgXCRvdXQsICR0aW1lciwKKwkJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworCSMg SWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBu ZWVkIHRvIGNoZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVz aW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUg REVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZl cmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVn MSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vi c2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXIt PmxvZ2ZpbGU7CisKKwkkaW4gLj0gcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7 CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJfTsKKwkkaC0+cHVtcF9u YjsKKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJF R0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBhID4gNTAwMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkaW4gLj0gcXsKKwlDT01NSVQ7CisJ XHEKKwl9OworCSRoLT5maW5pc2g7ICAgICMgZXJyb3JzIG1ha2UgdGhlIG5leHQgdGVzdCBmYWls LCBzbyBpZ25vcmUgdGhlbSBoZXJlCisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIsICRv ZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwlteSAkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMz NHwzMzM0KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycp OworCisJIyBUZXN0IHRoZSBzdHJlYW1pbmcgaW4gYmluYXJ5IG1vZGUKKwkkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3Vi IFNFVCAoYmluYXJ5ID0gb24pIik7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9t IG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMg SW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0Ig bGltaXQuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJ QkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VU IGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdI RVJFIG1vZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1 YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkkcmVzdWx0ID0KKwkgICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBj b3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFx KDY2Njd8NjY2N3w2NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBk ZWZhdWx0cycpOworCisJIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29s dW1ucyBvbiB0aGUgc3Vic2NyaWJlciwKKwkjIHVwZGF0ZSBwdWJsaXNoZXIsIGFuZCBjaGVjayB0 aGF0IHN1YnNjcmliZXIgcmV0YWlucyB0aGUgZXhwZWN0ZWQKKwkjIHZhbHVlcy4gVGhpcyBpcyB0 byBlbnN1cmUgdGhhdCBub24tc3RyZWFtaW5nIHRyYW5zYWN0aW9ucyBiZWhhdmUKKwkjIHByb3Bl cmx5IGFmdGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgorCSRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiVVBEQVRFIHRlc3RfdGFiIFNFVCBjID0gJ2Vwb2NoJzo6 dGltZXN0YW1wdHogKyA5ODc2NTQzMjEgKiBpbnRlcnZhbCAnMXMnIgorCSk7CisKKwkjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vi c2NyaWJlci0+bG9nZmlsZTsKKworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCkiKTsKKworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBj b3VudCgqKSwgY291bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQo ZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFxKDY2Njd8NjY2N3w2 NjY3KSwKKwkJJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0 YScpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgKGEgPiAyKSIp OworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIFJl c2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9z dWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21l c3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorfQor CiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5p dChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxODAsMTAgQEAgJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWIn OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0 YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRh cHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBA IC00OSw4MiArMTk2LDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8 MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMg SW50ZXJsZWF2ZSBhIHBhaXIgb2YgdHJhbnNhY3Rpb25zLCBlYWNoIGV4Y2VlZGluZyB0aGUgNjRr QiBsaW1pdC4KLW15ICRpbiAgPSAnJzsKLW15ICRvdXQgPSAnJzsKLQotbXkgJHRpbWVyID0gSVBD OjpSdW46OnRpbWVvdXQoJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2RlZmF1bHQp OwotCi1teSAkaCA9ICRub2RlX3B1Ymxpc2hlci0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jlcycs IFwkaW4sIFwkb3V0LCAkdGltZXIsCi0Jb25fZXJyb3Jfc3RvcCA9PiAwKTsKLQotJGluIC49IHF7 Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9 IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBt b2QoYSwzKSA9IDA7Ci19OwotJGgtPnB1bXBfbmI7Ci0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgOTk5OSkgcyhpKTsK LURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiA1MDAwOwotQ09NTUlUOwotfSk7Ci0KLSRp biAuPSBxewotQ09NTUlUOwotXHEKLX07Ci0kaC0+ZmluaXNoOyAgICAjIGVycm9ycyBtYWtlIHRo ZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQotCi0kbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyks IGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMz NHwzMzM0KSwgJ2NoZWNrIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycpOwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgMCk7CiAKLSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCi0kbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9z dWIgU0VUIChiaW5hcnkgPSBvbikiKTsKLQotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVu b3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSwgMTAwMDApIHMo aSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwot REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotQ09NTUlUOwotfSk7Ci0K LSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQg PQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoNjY2N3w2NjY3fDY2NjcpLCAnY2hlY2sgZXh0cmEgY29sdW1ucyBjb250YWluIGxv Y2FsIGRlZmF1bHRzJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor IyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24g V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgorKTsKIAotIyBDaGFuZ2UgdGhlIGxvY2FsIHZhbHVlcyBvZiB0aGUgZXh0cmEgY29sdW1u cyBvbiB0aGUgc3Vic2NyaWJlciwKLSMgdXBkYXRlIHB1Ymxpc2hlciwgYW5kIGNoZWNrIHRoYXQg c3Vic2NyaWJlciByZXRhaW5zIHRoZSBleHBlY3RlZAotIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5z dXJlIHRoYXQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCi0jIHByb3Blcmx5IGFm dGVyIGEgc3RyZWFtaW5nIHRyYW5zYWN0aW9uLgogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFt cHR6ICsgOTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKLSk7Ci0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4 dCkiKTsKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFs bGVsLCBiaW5hcnkgPSBvZmYpIik7CiAKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7Ciskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVS RSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8g cmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi0kcmVzdWx0ID0gJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291 bnQoZXh0cmFjdChlcG9jaCBmcm9tIGMpID0gOTg3NjU0MzIxKSwgY291bnQoZCA9IDk5OSkgRlJP TSB0ZXN0X3RhYiIKLSk7Ci1pcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2NyksCi0JJ2NoZWNr IGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbGx5IGNoYW5nZWQgZGF0YScpOwordGVzdF9zdHJl YW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAK ICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKaW5kZXggYmMwYTljZC4u MDIwYWQ5NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9z dWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFj dC5wbApAQCAtOCw2ICs4LDk0IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNl IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hlY2sgdGhl IGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1Y2Nlc3Nm dWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hlY2tfcGFy YWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxl bCkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9CisJICAnZmluaXNoZWQgcHJvY2Vzc2lu ZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOworCisJaWYgKCRpc19wYXJhbGxlbCkK Kwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxfbWVzc2Fn ZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0ZXN0 IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRlciBzbyB0 aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQKKyMg c3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkgKCRu b2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJhbGxlbCkg PSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIg aXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3Ry ZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGFwcGxpZWQgdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3Jr ZXIuCisJIyBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0 IHRoYXQsIHNvIGJ1bXAgdXAgdGhlCisJIyBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxs ZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJCSRub2RlX3N1YnNjcmliZXIt PnJlbG9hZDsKKwl9CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4K Kwkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgSW5zZXJ0LCB1 cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDMsIDUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUg bW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK KwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsIDEwMDApIHMoaSk7CisJVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwg MTUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlTQVZF UE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLCAyMDAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOworCVNBVkVQT0lOVCBzNDsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsIDI1MDAp IHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJQ09NTUlUOwor CX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKwor CWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxs ZWwpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2NyksCisJCSdjaGVj ayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0 cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhl IHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHku CisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25m KCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJ CSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBu b2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4g J2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzEyNSwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVz dF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1 Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRh cF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDQxICsxNDEsMjYgQEAgbXkg JHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZS T00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2NoZWNrIGluaXRpYWwgZGF0 YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVs ZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcyggICAgMywgIDUwMCkg cyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7 Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczE7 Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMSwgIDEwMDApIHMoaSk7Ci1VUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUo YikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEs MykgPSAwOwotU0FWRVBPSU5UIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAgMTUwMCkgcyhpKTsKLVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1 MDEsICAyMDAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNB VkVQT0lOVCBzNDsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwgMjUwMCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBX SEVSRSBtb2QoYSwzKSA9IDA7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3Vu dChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2 NyksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGluIHN0cmVhbWluZyBt b2RlIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCit0ZXN0X3N0cmVh bWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKKwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJl YW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9u X25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+ cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUn IEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3 aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQ VElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJl ciwgJGFwcG5hbWUsIDEpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlz aGVyLT5zdG9wOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTdfc3Ry ZWFtX2RkbC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsCmlu ZGV4IDg2NmYxNTEuLmQyY2M0NmQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxN19zdHJlYW1fZGRsLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJl YW1fZGRsLnBsCkBAIC04LDYgKzgsMTM4IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgQ2hl Y2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29tcGxldGVkIHN1 Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCitzdWIgY2hl Y2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19w YXJhbGxlbCkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9CisJICAnZmluaXNoZWQgcHJv Y2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOworCisJaWYgKCRpc19wYXJh bGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci8kcGFyYWxsZWxf bWVzc2FnZS8sICRvZmZzZXQpOworCX0KK30KKworIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1v biB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisjIHBhcmFtZXRl ciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBh bmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJ bXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsICRpc19wYXJh bGxlbCkgPSBAXzsKKworCW15ICRvZmZzZXQgPSAwOworCisJIyBhIHNtYWxsIChub24tc3RyZWFt ZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBW QUxVRVMgKDMsIG1kNSgzOjp0ZXh0KSk7CisJQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVN TiBjIElOVDsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg0 LCBtZDUoNDo6dGV4dCksIC00KTsKKwlDT01NSVQ7CisJfSk7CisKKwkjIElmICJzdHJlYW1pbmci IHBhcmFtZXRlciBpcyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjawor CSMgdGhhdCBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVs IGFwcGx5IHdvcmtlci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVz c2FnZXMgYWJvdXQgdGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYg KCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0 Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVf c3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZy b20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJ IyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nl cmllcyg1LCAxMDAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJ TlQ7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsK KwlDT01NSVQ7CisJfSk7CisKKwkjIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24g d2l0aCBEREwgYW5kIERNTAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdy ZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMSwgbWQ1 KDIwMDE6OnRleHQpLCAtMjAwMSwgMioyMDAxKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQg Q09MVU1OIGUgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxV RVMgKDIwMDIsIG1kNSgyMDAyOjp0ZXh0KSwgLTIwMDIsIDIqMjAwMiwgLTMqMjAwMik7CisJQ09N TUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNf cGFyYWxsZWwpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBj b3VudChlKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjAwMnwxOTk5fDEwMDJ8 MSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcg bW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkj IENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0ID0gLXMgJG5v ZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgQSBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0 aW9uIHdpdGggRERMIGFuZCBETUwuIE9uZSBvZiB0aGUgRERMIGlzIHBlcmZvcm1lZAorCSMgYWZ0 ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIHNjaGVtYSBzZW50IGZvciB0 ZXN0X3RhYiBzbyB0aGF0CisJIyB0aGUgbmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUg c2NoZW1hIGFnYWluLgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMn LCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMyw1MDAwKSBzKGkpOwor CUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZiBJTlQ7CisJQ09NTUlUOworCX0pOwor CisJIyBBIHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3QgZ2V0IHN0cmVhbWVkLiBUaGlzIGlz IGp1c3QgdG8gZW5zdXJlIHRoYXQgd2UKKwkjIHNlbmQgdGhlIHNjaGVtYSBhZ2FpbiB0byByZWZs ZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUgcHJldmlvdXMgdGVzdC4KKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppLCA0Kmkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1MDA1KSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKwor CSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19w YXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKwor CSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJP TSB0ZXN0X3RhYiIKKwkpOworCWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMwMDR8NSks CisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlciBmb3IgYm90aCBzdHJlYW1p bmcgYW5kIG5vbi1zdHJlYW1pbmcgdHJhbnNhY3Rpb25zJworCSk7CisKKwkjIENsZWFudXAgdGhl IHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBx eworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4gMik7CisJQUxURVIgVEFCTEUgdGVz dF90YWIgRFJPUCBDT0xVTU4gYywgRFJPUCBDT0xVTU4gZCwgRFJPUCBDT0xVTU4gZSwgRFJPUCBD T0xVTU4gZjsKKwl9KTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCisJIyBSZXNldCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQor CXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJ CQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVs b2FkOworCX0KK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hl ciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9w dWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcsNiAr MTY5LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFU RSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFt ZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVz dCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBT VUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGlj YXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcg PSBvbikiCiApOwpAQCAtNDksNzcgKzE4NSwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJl c3VsdCwgcXEoMnwwfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2Ny aWJlcicpOwogCi0jIGEgc21hbGwgKG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwg YW5kIERNTAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJF R0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBtZDUoMzo6dGV4dCkpOwotQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBjIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRleHQpLCAtNCk7Ci1DT01NSVQ7Ci19 KTsKLQotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVf c2VyaWVzKDUsIDEwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQg SU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSwgLWksIDIqaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxMDAxLCAyMDAwKSBzKGkpOwot Q09NTUlUOwotfSk7Ci0KLSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRo IERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBx ewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDIwMDEsIG1kNSgyMDAxOjp0 ZXh0KSwgLTIwMDEsIDIqMjAwMSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGUg SU5UOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgyMDAyLCBt ZDUoMjAwMjo6dGV4dCksIC0yMDAyLCAyKjIwMDIsIC0zKjIwMDIpOwotQ09NTUlUOwotfSk7Ci0K LSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1bHQg PQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCksIGNvdW50KGUpIEZST00gdGVzdF90YWIiKTsKLWlz KCRyZXN1bHQsIHFxKDIwMDJ8MTk5OXwxMDAyfDEpLAotCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQg dG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWlu IGxvY2FsIGRlZmF1bHRzJwotKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5v ZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIEEgbGFyZ2UgKHN0cmVhbWVkKSB0cmFu c2FjdGlvbiB3aXRoIERETCBhbmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJmb3JtZWQKLSMg YWZ0ZXIgRE1MIHRvIGVuc3VyZSB0aGF0IHdlIGludmFsaWRhdGUgdGhlIHNjaGVtYSBzZW50IGZv ciB0ZXN0X3RhYiBzbyB0aGF0Ci0jIHRoZSBuZXh0IHRyYW5zYWN0aW9uIGhhcyB0byBzZW5kIHRo ZSBzY2hlbWEgYWdhaW4uCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMn LCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp LCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAwMCkgcyhpKTsKLUFM VEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZiBJTlQ7Ci1DT01NSVQ7Ci19KTsKLQotIyBB IHNtYWxsIHRyYW5zYWN0aW9uIHRoYXQgd29uJ3QgZ2V0IHN0cmVhbWVkLiBUaGlzIGlzIGp1c3Qg dG8gZW5zdXJlIHRoYXQgd2UKLSMgc2VuZCB0aGUgc2NoZW1hIGFnYWluIHRvIHJlZmxlY3QgdGhl IGxhc3QgY29sdW1uIGFkZGVkIGluIHRoZSBwcmV2aW91cyB0ZXN0LgotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSwgNCppIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YyksIGNvdW50KGQpLCBjb3VudChlKSwgY291bnQoZikgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoNTAwNXw1MDAyfDQwMDV8MzAwNHw1KSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVk IHRvIHN1YnNjcmliZXIgZm9yIGJvdGggc3RyZWFtaW5nIGFuZCBub24tc3RyZWFtaW5nIHRyYW5z YWN0aW9ucycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3Qg dXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBh cHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiAp OwogCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9w dWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAk b2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0g JyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJU aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2lu ZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2Rl X3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsKKwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRu b2RlX3B1Ymxpc2hlci0+c3RvcDsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCmluZGV4IDU1MWYxNmQuLjc1MmU3OWEgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5w bAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQu cGwKQEAgLTgsNiArOCwxNDUgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBDaGVjayB0aGUg bG9nIHRoYXQgdGhlIHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1 bGx5CisjIHJlcG9ydGVkIGJ5IHBhcmFsbGVsIGFwcGx5IHdvcmtlci4KK3N1YiBjaGVja19wYXJh bGxlbF9sb2cKK3sKKwlteSAoJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVs KSA9IEBfOworCW15ICRwYXJhbGxlbF9tZXNzYWdlID0KKwkgICdmaW5pc2hlZCBwcm9jZXNzaW5n IHRoZSB0cmFuc2FjdGlvbiBmaW5pc2ggY29tbWFuZCc7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQor CXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdl LywgJG9mZnNldCk7CisJfQorfQorCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qg c3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFyYW1ldGVyIHNvIHRo ZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZAorIyBz dHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5v ZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFsbGVsKSA9 IEBfOworCisJbXkgJG9mZnNldCA9IDA7CisKKwkjIElmICJzdHJlYW1pbmciIHBhcmFtZXRlciBp cyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIiwgd2UgbmVlZCB0byBjaGVjaworCSMgdGhhdCBzdHJl YW1lZCB0cmFuc2FjdGlvbiB3YXMgYXBwbGllZCB1c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtl ci4KKwkjIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMgYWJvdXQg dGhhdCwgc28gYnVtcCB1cCB0aGUKKwkjIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxl bCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ cmVsb2FkOworCX0KKworCSMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgor CSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3Ry ZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcworCSRub2RlX3B1 Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo Myw1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJ U0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMzsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMjsKKwlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIw MDEsMjUwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDI1MDEsMzAwMCkgcyhp KTsKKwlTQVZFUE9JTlQgczQ7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzMDAxLDM1MDApIHMoaSk7CisJU0FWRVBPSU5U IHM1OworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMzUwMSw0MDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxl bF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCW15ICRy ZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSgyMDAwfDApLAorCQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQg b24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwor CSk7CisKKwkjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KKwkkb2Zmc2V0 ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmliZXIgcmVjZWl2aW5nIG91dCBvZiBvcmRlcgorCSMgc3Vi dHJhbnNhY3Rpb24gUk9MTEJBQ0tzCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7CisJU0FWRVBP SU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoNTAwMSw1NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDYwMDEsNjUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDAp IHMoaSk7CisJUkVMRUFTRSBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDgwMDEsODUwMCkgcyhpKTsKKwlST0xMQkFD SyBUTyBzMTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2RlX3N1YnNjcmliZXIs ICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkkcmVzdWx0ID0KKwkgICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBG Uk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKKwkJJ2NoZWNrIHJvbGxi YWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2hl Y2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9z dWJzY3JpYmVyLT5sb2dmaWxlOworCisJIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdp dGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9sbGJhY2sKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDg1MDEsOTAwMCkgcyhp KTsKKwlTQVZFUE9JTlQgczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5MDAxLDk1MDApIHMoaSk7CisJU0FWRVBPSU5U IHMyOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkgcyhpKTsKKwlST0xMQkFDSzsKKwl9KTsKKworCSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJh bGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwgJG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSRy ZXN1bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBx cSgyNTAwfDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7 CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgUmVzZXQg dGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNj cmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2Fn ZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9Cit9CisKICMg Q3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFs bG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM2LDYgKzE3NSwxMCBAQCAkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFw X3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisK KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5n IG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9z dWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5h bWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ4 LDgxICsxOTEsMjUgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykg RlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2NoZWNrIGluaXRpYWwgZGF0 YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5z YWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLDUwMCkgcyhpKTsKLVNB VkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEwMDEsMTUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwyMDAwKSBz KGkpOwotUk9MTEJBQ0sgVE8gczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDEsMjUwMCkgcyhpKTsKLVJPTExCQUNL IFRPIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygyNTAxLDMwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczQ7Ci1JTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDMwMDEsMzUwMCkgcyhpKTsKLVNBVkVQT0lOVCBzNTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzUwMSw0MDAwKSBzKGkp OwotQ09NTUlUOwotfSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSRyZXN1bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygk cmVzdWx0LCBxcSgyMDAwfDApLAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJl ZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIs ICRhcHBuYW1lLCAwKTsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK KyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9u IFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1p bmcnOyIKICk7CiAKLSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNjcmli ZXIgcmVjZWl2aW5nIG91dCBvZiBvcmRlcgotIyBzdWJ0cmFuc2FjdGlvbiBST0xMQkFDS3MKLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoNDAwMSw0NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDU1MDApIHMo aSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDYwMDEsNjUwMCkgcyhpKTsKLVNBVkVQT0lOVCBz MzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoNzAwMSw3NTAwKSBzKGkpOwotUkVMRUFTRSBzMjsKLUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODAwMSw4 NTAwKSBzKGkpOwotUk9MTEJBQ0sgVE8gczE7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDI1MDB8MCksCi0JJ2NoZWNrIHJv bGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBs YXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcgcm9s bGJhY2sKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJ TjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoODUwMSw5MDAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg5MDAx LDk1MDApIHMoaSk7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1Qg aSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDk1MDEsMTAwMDApIHMoaSk7Ci1S T0xMQkFDSzsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoMjUwMHwwKSwgJ2NoZWNrIHJvbGxiYWNrIHdhcyByZWZsZWN0ZWQgb24gc3Vic2Ny aWJlcicpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVS IFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5v ZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQg IT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFt ZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICApCisgIG9yIGRpZQor ICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hh bmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7 CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRp b24vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0 aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0X2RkbF9hYm9ydC5wbAppbmRleCA0ZDdkYTgyLi45ZDY3 OGIzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3RyZWFtX3N1Ynhh Y3RfZGRsX2Fib3J0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1f c3VieGFjdF9kZGxfYWJvcnQucGwKQEAgLTksNiArOSw5MSBAQCB1c2UgUG9zdGdyZVNRTDo6VGVz dDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3Jl OwogCisjIENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNv bXBsZXRlZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2Vy Lgorc3ViIGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zm c2V0LCAkaXNfcGFyYWxsZWwpID0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2Zp bmlzaGVkIHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlm ICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIv JHBhcmFsbGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxs IHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgor IyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJl YW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVh bWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l LCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMgSWYgInN0cmVh bWluZyIgcGFyYW1ldGVyIGlzIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLCB3ZSBuZWVkIHRvIGNo ZWNrCisJIyB0aGF0IHN0cmVhbWVkIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHVzaW5nIGEgcGFy YWxsZWwgYXBwbHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxv ZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4K KwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYo J3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkk bm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBs b2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7 CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQgUk9M TEJBQ0tzCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJ QkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLDUwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQg Q09MVU1OIGMgSU5UOworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhp KTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09MVU1OIGQgSU5UOworCVNBVkVQT0lOVCBz MjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMipp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEsMTUwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0 X3RhYiBBREQgQ09MVU1OIGUgSU5UOworCVNBVkVQT0lOVCBzMzsKKwlJTlNFUlQgSU5UTyB0ZXN0 X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVf c2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVN TiBjOworCVJPTExCQUNLIFRPIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCksIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLDEwMDApIHMoaSk7CisJQ09N TUlUOworCX0pOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNf cGFyYWxsZWwpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3Rh YiIpOworCWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKKwkJJ2NoZWNrIHJvbGxiYWNrIHRvIHNh dmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29u dGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09M VU1OIGM7CisJfSk7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKKworCSMgUmVzZXQgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7 CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJ ImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9h ZDsKKwl9Cit9CisKICMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIg PSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVi bGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzEy MiwxMCBAQCAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUg UFVCTElDQVRJT04gdGFwX3B1YiBGT1IgVEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUg PSAndGFwX3N1Yic7CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3Qg dXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMKICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VC U0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0 aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJQ0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0g b24pIgogKTsKQEAgLTQ5LDM1ICsxMzgsMjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMnwwKSwgJ2No ZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBsYXJnZSAo c3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMLCBETUwgYW5kIFJPTExCQUNLcwotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcygz LDUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7Ci1TQVZF UE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAt aSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3Rf dGFiIEFERCBDT0xVTU4gZCBJTlQ7Ci1TQVZFUE9JTlQgczI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEw MDEsMTUwMCkgcyhpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7Ci1T QVZFUE9JTlQgczM7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQp LCAtaSwgMippLCAtMyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDE1MDEsMjAwMCkgcyhpKTsKLUFM VEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7Ci1ST0xMQkFDSyBUTyBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIGkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoNTAxLDEwMDApIHMoaSk7Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpIEZS T00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKLQknY2hlY2sgcm9sbGJh Y2sgdG8gc2F2ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlciBhbmQgZXh0cmEgY29s dW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlz aGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7CisKKyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFs bGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK215ICRvbGRwaWQg PSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVh bWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNh dGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3Ry ZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Ig YXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOworCit0ZXN0X3N0 cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAxKTsK KwogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKIApkaWZm IC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbAppbmRleCA3 YTc5N2YzLi40MjY1ZDNiIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJf dHdvcGhhc2VfY2FzY2FkZS5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdv cGhhc2VfY2FzY2FkZS5wbApAQCAtMTEsNiArMTEsMjM5IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7 CiAKKyMgQ2hlY2sgdGhlIGxvZyB0aGF0IHRoZSBzdHJlYW1lZCB0cmFuc2FjdGlvbiB3YXMgY29t cGxldGVkIHN1Y2Nlc3NmdWxseQorIyByZXBvcnRlZCBieSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CitzdWIgY2hlY2tfcGFyYWxsZWxfbG9nCit7CisJbXkgKCRub2RlX3N1YnNjcmliZXIsICRvZmZz ZXQsICRzdHJlYW1pbmdfbW9kZSkgPSBAXzsKKwlteSAkcGFyYWxsZWxfbWVzc2FnZSA9CisJICAn ZmluaXNoZWQgcHJvY2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQnOworCisJ aWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAncGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJl ci0+d2FpdF9mb3JfbG9nKHFyLyRwYXJhbGxlbF9tZXNzYWdlLywgJG9mZnNldCk7CisJfQorfQor CisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUgY29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0 ZWQgdG8gInN0cmVhbWluZyIgcGFyYW1ldGVyCisjIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1 biBib3RoIGZvciB0aGUgc3RyZWFtaW5nPW9uIGFuZCBzdHJlYW1pbmc9cGFyYWxsZWwKKyMgY2Fz ZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcKK3sKKwlteSAoJG5vZGVfQSwgJG5vZGVfQiwgJG5vZGVf QywgJGFwcG5hbWVfQiwgJGFwcG5hbWVfQywgJHN0cmVhbWluZ19tb2RlKSA9CisJICBAXzsKKwor CW15ICRvZmZzZXRfQiA9IDA7CisJbXkgJG9mZnNldF9DID0gMDsKKworCW15ICRvbGRwaWRfQiA9 ICRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkIEZST00g cGdfc3RhdF9yZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l X0InIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOworCW15ICRvbGRwaWRfQyA9ICRub2RlX0It PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9y ZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBz dGF0ZSA9ICdzdHJlYW1pbmcnOyIpOworCisJIyBTZXR1cCBsb2dpY2FsIHJlcGxpY2F0aW9uIHN0 cmVhbWluZyBtb2RlCisKKwkkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsICIKKwkJ QUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQgorCQlTRVQgKHN0cmVhbWluZyA9ICRzdHJlYW1p bmdfbW9kZSk7Iik7CisJJG5vZGVfQy0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFM VEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0MKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5n X21vZGUpIik7CisKKwkjIFdhaXQgZm9yIHN1YnNjcmliZXJzIHRvIGZpbmlzaCBpbml0aWFsaXph dGlvbgorCisJJG5vZGVfQS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlT RUxFQ1QgcGlkICE9ICRvbGRwaWRfQiBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsi CisJKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0 IjsKKwkkbm9kZV9CLT5wb2xsX3F1ZXJ5X3VudGlsKAorCQkncG9zdGdyZXMnLCAiCisJCVNFTEVD VCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgorCQlXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKwkp IG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQiOwor CisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgVGVzdCAyUEMgUFJFUEFSRSAv IENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJhbnNh Y3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KKwkjCisJIyBFeHBlY3QgYWxs IGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyKHMpIGFmdGVyIHRoZSBjb21taXQuCisJ IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJh bWV0ZXIgaXMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRo YXQgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIHByZXBhcmVkIHVzaW5nIGEgcGFyYWxsZWwgYXBw bHkgd29ya2VyLgorCSMgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdl cyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJHN0 cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9CLT5hcHBlbmRfY29uZign cG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVf Qi0+cmVsb2FkOworCisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAi bG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9DLT5yZWxvYWQ7CisJfQorCisJ IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldF9CID0gLXMg JG5vZGVfQi0+bG9nZmlsZTsKKwkkb2Zmc2V0X0MgPSAtcyAkbm9kZV9DLT5sb2dmaWxlOworCisJ IyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRr QiBsaW1pdC4KKwkjIFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9kZV9BLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBG Uk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAn dGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOworCisJY2hl Y2tfcGFyYWxsZWxfbG9nKCRub2RlX0IsICRvZmZzZXRfQiwgJHN0cmVhbWluZ19tb2RlKTsKKwlj aGVja19wYXJhbGxlbF9sb2coJG5vZGVfQywgJG9mZnNldF9DLCAkc3RyZWFtaW5nX21vZGUpOwor CisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJl cihzKQorCW15ICRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQicpOworCSRy ZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ3Ry YW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyAyUEMgQ09NTUlU CisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ3Rlc3Rf cHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVf Qik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKworCSMgY2hlY2sg dGhhdCB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIocykKKwkkcmVzdWx0 ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEo MzMzNHwzMzM0fDMzMzQpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQg b24gc3Vic2NyaWJlciBCLCBhbmQgZXh0cmEgY29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJwor CSk7CisJJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlz KCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhh dmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2Nh bCBkZWZhdWx0cycKKwkpOworCisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMgZW5k ZWQgb24gc3Vic2NyaWJlcihzKQorCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK KwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3Jp YmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAor CQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3Vs dCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDJyk7CisK KwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIHdp dGggYSBuZXN0ZWQgUk9MTEJBQ0sgVE8gU0FWRVBPSU5ULgorCSMgMC4gQ2xlYW51cCBmcm9tIHBy ZXZpb3VzIHRlc3QgbGVhdmluZyBvbmx5IDIgcm93cy4KKwkjIDEuIEluc2VydCBvbmUgbW9yZSBy b3cuCisJIyAyLiBSZWNvcmQgYSBTQVZFUE9JTlQuCisJIyAzLiBEYXRhIGlzIHN0cmVhbWVkIHVz aW5nIDJQQy4KKwkjIDQuIERvIHJvbGxiYWNrIHRvIFNBVkVQT0lOVCBwcmlvciB0byB0aGUgc3Ry ZWFtZWQgaW5zZXJ0cy4KKwkjIDUuIFRoZW4gQ09NTUlUIFBSRVBBUkVELgorCSMKKwkjIEV4cGVj dCBkYXRhIGFmdGVyIHRoZSBTQVZFUE9JTlQgaXMgYWJvcnRlZCBsZWF2aW5nIG9ubHkgMyByb3dz ICg9IDIgb3JpZ2luYWwgKyAxIGZyb20gc3RlcCAxKS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCisKKwkjIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3Mg KGRlbGV0ZSB3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhl IHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXRfQiA9IC1zICRub2RlX0ItPmxv Z2ZpbGU7CisJJG9mZnNldF9DID0gLXMgJG5vZGVfQy0+bG9nZmlsZTsKKworCSMgMlBDIFBSRVBB UkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQKKwkkbm9kZV9BLT5zYWZlX3Bz cWwoCisJCSdwb3N0Z3JlcycsICIKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZB TFVFUyAoOTk5OSwgJ2Zvb2JhcicpOworCQlTQVZFUE9JTlQgc3BfaW5uZXI7CisJCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MywgNTAwMCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwor CQlST0xMQkFDSyBUTyBTQVZFUE9JTlQgc3BfaW5uZXI7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04g J291dGVyJzsKKwkJIik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0Ip OworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwljaGVja19wYXJh bGxlbF9sb2coJG5vZGVfQiwgJG9mZnNldF9CLCAkc3RyZWFtaW5nX21vZGUpOworCWNoZWNrX3Bh cmFsbGVsX2xvZygkbm9kZV9DLCAkb2Zmc2V0X0MsICRzdHJlYW1pbmdfbW9kZSk7CisKKwkjIGNo ZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJl c3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAk bm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBn X3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7CisKKwkjIDJQQyBDT01NSVQKKwkkbm9kZV9BLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1JVCBQUkVQQVJFRCAnb3V0ZXInOyIpOworCisJJG5v ZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lX0MpOworCisJIyBjaGVjayB0aGUgdHJhbnNhY3Rpb24gc3RhdGUgaXMg ZW5kZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsK KwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIg QicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBx cSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIgQycpOworCisJIyBjaGVj ayBpbnNlcnRzIGFyZSB2aXNpYmxlIGF0IHN1YnNjcmliZXIocykuCisJIyBBbGwgdGhlIHN0cmVh bWVkIGRhdGEgKHByaW9yIHRvIHRoZSBTQVZFUE9JTlQpIHNob3VsZCBiZSByb2xsZWQgYmFjay4K KwkjICg5OTk5LCAnZm9vYmFyJykgc2hvdWxkIGJlIGNvbW1pdHRlZC4KKwkkcmVzdWx0ID0gJG5v ZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0 X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNv bW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0KKwkgICRu b2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90 YWI7Iik7CisJaXMoJHJlc3VsdCwgcXEoMyksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBv biBzdWJzY3JpYmVyIEInKTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiB3aGVyZSBiID0gJ2Zvb2Jhcic7 Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBz dWJzY3JpYmVyIEMnKTsKKwkkcmVzdWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWI7Iik7CisJaXMoJHJlc3VsdCwgcXEo MyksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMg Q2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKwkkbm9kZV9BLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVf Qyk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkc3RyZWFtaW5nX21vZGUg ZXEgJ3BhcmFsbGVsJykKKwl7CisJCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfQi0+cmVsb2FkOwor CisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAibG9nX21pbl9tZXNz YWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfQy0+cmVsb2FkOworCX0KK30KKwogIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTZXR1cCBhIGNhc2NhZGUgb2YgcHViL3N1YiBub2Rl cy4KICMgbm9kZV9BIC0+IG5vZGVfQiAtPiBub2RlX0MKQEAgLTI2MCwxNjAgKzQ5MywxNSBAQCBp cygkcmVzdWx0LCBxcSgyMSksICdSb3dzIGNvbW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3Jp YmVyIEMnKTsKICMgMlBDICsgU1RSRUFNSU5HIFRFU1RTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0t LQogCi1teSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgot CVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25f bmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiKTsKLW15ICRvbGRw aWRfQyA9ICRub2RlX0ItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIpOwotCi0jIFNldHVwIGxvZ2ljYWwgcmVw bGljYXRpb24gKHN0cmVhbWluZyA9IG9uKQotCi0kbm9kZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3Rn cmVzJywgIgotCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViX0IKLQlTRVQgKHN0cmVhbWluZyA9 IG9uKTsiKTsKLSRub2RlX0MtPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCAiCi0JQUxURVIgU1VC U0NSSVBUSU9OIHRhcF9zdWJfQwotCVNFVCAoc3RyZWFtaW5nID0gb24pIik7Ci0KLSMgV2FpdCBm b3Igc3Vic2NyaWJlcnMgdG8gZmluaXNoIGluaXRpYWxpemF0aW9uCi0KLSRub2RlX0EtPnBvbGxf cXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9CIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5h bWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGls ZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKLSRub2RlX0ItPnBvbGxfcXVlcnlfdW50 aWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3Rh dF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5E IHN0YXRlID0gJ3N0cmVhbWluZyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5n IGZvciBhcHBseSB0byByZXN0YXJ0IjsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gQ09NTUlUIFBSRVBBUkVELgotIyAxLiBEYXRhIGlzIHN0 cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgotIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJl ZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBh ZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIElu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgotIyBUaGVuIDJQQyBQUkVQQVJFCi0kbm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVz JywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFi IFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3Rh YiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJl ZF90YWInO30pOwotCi0kbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5v ZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9DKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0Is ICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICdvbicpOwogCi0jIGNoZWNrIHRoZSB0 cmFuc2FjdGlvbiBzdGF0ZSBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0K LSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfQS0+d2Fp dF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFw cG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1 YnNjcmliZXIocykKLSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQki U0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIp OwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQ QyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUg bG9jYWwgZGVmYXVsdHMnCi0pOwotJHJlc3VsdCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRl c3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0 ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQywgYW5kIGV4dHJhIGNvbHVt bnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKLSk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0 YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vi c2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQs IHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0j IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBh IG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQuCi0jIDAuIENsZWFudXAgZnJvbSBwcmV2aW91 cyB0ZXN0IGxlYXZpbmcgb25seSAyIHJvd3MuCi0jIDEuIEluc2VydCBvbmUgbW9yZSByb3cuCi0j IDIuIFJlY29yZCBhIFNBVkVQT0lOVC4KLSMgMy4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMu Ci0jIDQuIERvIHJvbGxiYWNrIHRvIFNBVkVQT0lOVCBwcmlvciB0byB0aGUgc3RyZWFtZWQgaW5z ZXJ0cy4KLSMgNS4gVGhlbiBDT01NSVQgUFJFUEFSRUQuCi0jCi0jIEV4cGVjdCBkYXRhIGFmdGVy IHRoZSBTQVZFUE9JTlQgaXMgYWJvcnRlZCBsZWF2aW5nIG9ubHkgMyByb3dzICg9IDIgb3JpZ2lu YWwgKyAxIGZyb20gc3RlcCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQot IyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBi ZSByZXBsaWNhdGVkKQotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJP TSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVk IFJPTExCQUNLIFRPIFNBVkVQT0lOVAotJG5vZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs ICIKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXIn KTsKLQlTQVZFUE9JTlQgc3BfaW5uZXI7Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBz cF9pbm5lcjsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICdvdXRlcic7Ci0JIik7Ci0KLSRub2RlX0Et PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lX0MpOwotCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBv biBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1 bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0k cmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNh Y3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5v ZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsK LQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRl IGlzIGVuZGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwot aXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEIn KTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0 cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEMnKTsKLQotIyBjaGVjayBpbnNlcnRz IGFyZSB2aXNpYmxlIGF0IHN1YnNjcmliZXIocykuCi0jIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAo cHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hvdWxkIGJlIHJvbGxlZCBiYWNrLgotIyAoOTk5OSwg J2Zvb2JhcicpIHNob3VsZCBiZSBjb21taXR0ZWQuCi0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIg PSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHBy ZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQs IHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0k cmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEp LCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7Ci0kcmVzdWx0 ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNl bnQgb24gc3Vic2NyaWJlciBDJyk7CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCit0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9k ZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAkYXBwbmFtZV9DLCAncGFyYWxsZWwnKTsKIAogIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwg Yi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmluZGV4IDli NDU0MTAuLjgyYjVlNmMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190 d29waGFzZV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3Bo YXNlX3N0cmVhbS5wbApAQCAtOCw2ICs4LDMwOCBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1 c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisj IENoZWNrIHRoZSBsb2cgdGhhdCB0aGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24gd2FzIGNvbXBsZXRl ZCBzdWNjZXNzZnVsbHkKKyMgcmVwb3J0ZWQgYnkgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorc3Vi IGNoZWNrX3BhcmFsbGVsX2xvZworeworCW15ICgkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAk aXNfcGFyYWxsZWwpID0gQF87CisJbXkgJHBhcmFsbGVsX21lc3NhZ2UgPQorCSAgJ2ZpbmlzaGVk IHByb2Nlc3NpbmcgdGhlIHRyYW5zYWN0aW9uIGZpbmlzaCBjb21tYW5kJzsKKworCWlmICgkaXNf cGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIvJHBhcmFs bGVsX21lc3NhZ2UvLCAkb2Zmc2V0KTsKKwl9Cit9CisKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBj b21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJh bWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9 b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZwor eworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNf cGFyYWxsZWwpID0gQF87CisKKwlteSAkb2Zmc2V0ID0gMDsKKworCSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQuCisJ IyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhlbiBk byBjb21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0ZWQg b24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCisJIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworCisJIyBJZiAic3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMgc3BlY2lmaWVk IGFzICJwYXJhbGxlbCIsIHdlIG5lZWQgdG8gY2hlY2sKKwkjIHRoYXQgc3RyZWFtZWQgdHJhbnNh Y3Rpb24gd2FzIHByZXBhcmVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorCSMgV2Ug aGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBi dW1wIHVwIHRoZQorCSMgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJ JG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9n X21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJ fQorCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9 IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIGNoZWNrIHRoYXQgMlBDIGdldHMg cmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVu b3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkg cyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJF IFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJY2hlY2tfcGFyYWxsZWxfbG9nKCRub2Rl X3N1YnNjcmliZXIsICRvZmZzZXQsICRpc19wYXJhbGxlbCk7CisKKwkjIGNoZWNrIHRoYXQgdHJh bnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCW15ICRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rp b24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9w dWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3Vu dChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMz MzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9u IHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJ KTsKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9M TEJBQ0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiByb3dzIHdo aWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0cmVhbWVk IHVzaW5nIDJQQy4KKwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkjIEV4cGVjdCBk YXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4 Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAy OyIpOworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNl dCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRh dGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJ TlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDMsIDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBX SEVSRSBtb2QoYSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMp ID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3Bh cmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJ IyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmli ZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0 LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMg MlBDIHRyYW5zYWN0aW9uIGdldHMgYWJvcnRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIp OworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMg Y2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJl c3VsdCwgcXEoMnwyfDIpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxlZCBiYWNr LCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycKKwkpOworCisJJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKwkjIENoZWNrIHRoYXQgMlBDIENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVk IHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCisJIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVs ZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KKwkjIDIuIFRoZW4gc2Vy dmVyIGNyYXNoZXMgYmVmb3JlIHRoZSAyUEMgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCSMg My4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVkIHRoZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlz IGNvbW1pdHRlZC4KKwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJz Y3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIE5vdGU6IGJvdGggcHVibGlzaGVyIGFu ZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQuCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIworCisJIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9m ZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAw MCkgcyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIp ID0gMDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQ QVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9zdWJzY3Jp YmVyLT5zdG9wKCdpbW1lZGlhdGUnKTsKKwkkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0 ZScpOworCisJJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFy dDsKKworCWNoZWNrX3BhcmFsbGVsX2xvZygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNf cGFyYWxsZWwpOworCisJIyBjb21taXQgcG9zdCB0aGUgcmVzdGFydAorCSRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFy ZWRfdGFiJzsiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisJIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlCisJJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDMzMzR8 MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1 YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsK KworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIERvIElOU0VSVCBhZnRlciB0 aGUgUFJFUEFSRSBidXQgYmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMg ZGVsZXRlZCBiYWNrIHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVy LgorCSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cg SU5TRVJUIGlzIGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRv IGEgUk9MTEJBQ0sgUFJFUEFSRUQuCisJIworCSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBi YWNrIGxlYXZpbmcgb25seSAzIHJvd3Mgb24gdGhlIHN1YnNjcmliZXIKKwkjICh0aGUgb3JpZ2lu YWwgMiArIGluc2VydGVkIDEpLgorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor CSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBs aWNhdGVkKQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxF VEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKKworCSMgQ2hlY2sgdGhlIHN1YnNjcmli ZXIgbG9nIGZyb20gbm93IG9uLgorCSRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dm aWxlOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8g ZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERB VEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKwljaGVja19wYXJhbGxlbF9sb2coJG5vZGVfc3Vic2NyaWJlciwg JG9mZnNldCwgJGlzX3BhcmFsbGVsKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBp biBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmli ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJl cGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQgKG5v dyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90ZTogdGhlIDJQ QyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5z ZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTks ICdmb29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBBUkVEICd0 ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24g c3Vic2NyaWJlciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2YgdGhlIDJQQyBz dGlsbCB3YXMgcmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5 OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8MyksCisJCSdjaGVjayB0 aGUgb3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisKKwkkcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3Ry YW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZv cmUgQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNrIHRvIDIgcm93 cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0YSBpcyBzdHJl YW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hpY2gg aXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBSRVBBUkVELgor CSMKKwkjIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRoZSBzdWJzY3Jp YmVyCisJIyAodGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3Ig MiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCisJ IyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCisJJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRl bGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2Qo YSwyKSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJ UFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCWNoZWNrX3BhcmFsbGVsX2xv Zygkbm9kZV9zdWJzY3JpYmVyLCAkb2Zmc2V0LCAkaXNfcGFyYWxsZWwpOworCisJIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKKwkkcmVz dWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1Qg Y291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwg J3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgSW5zZXJ0IGEg ZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRoZSAyUEMgdHJhbnNhY3Rp b24pCisJIyBOb3RlOiB0aGUgMlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBz byBtYWtlIHN1cmUgdGhpcyBpbnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKKwkk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7CisKKwkjIDJQQyB0cmFuc2FjdGlvbiBn ZXRzIGNvbW1pdHRlZAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJ CSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKKworCSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNh Y3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNXwz MzM1fDMzMzUpLAorCQknUm93cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBp bnNlcnQpIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNv bnRhaW4gbG9jYWwgZGVmYXVsdHMnCisJKTsKKworCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29tbWl0 dGVkIG9uIHN1YnNjcmliZXInKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFi IFdIRVJFIGEgPiAyOyIpOworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7CisKKwkjIFJlc2V0IHRoZSBsb2cgdmVyYm9zaXR5LgorCWlmICgkaXNfcGFyYWxsZWwp CisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywK KwkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5y ZWxvYWQ7CisJfQorfQorCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFNldHVw CiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC00OCw2ICszNTAsMTAgQEAgJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWIn OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgIgogCUNSRUFURSBTVUJTQ1JJUFRJ T04gdGFwX3N1YgpAQCAtNjQsMjM2ICszNzAsMzAgQEAgbXkgJHR3b3BoYXNlX3F1ZXJ5ID0KICRu b2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHR3b3BoYXNlX3F1 ZXJ5KQogICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBzdWJzY3JpYmVyIHRv IGVuYWJsZSB0d29waGFzZSI7CiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMg Q2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcgotIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogbXkgJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0g OTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0 aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KLSMg MS4gRGF0YSBpcyBzdHJlYW1lZCBhcyBhIDJQQyB0cmFuc2FjdGlvbi4KLSMgMi4gVGhlbiBkbyBj b21taXQgcHJlcGFyZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1 YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVy LCAkYXBwbmFtZSwgMCk7CiAKLSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1 YnNjcmliZXIKLSMgSW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNl ZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdy ZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6 dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90 YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBh cmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFt ZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBz dWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJl c3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7Ci0K LSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsi KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBj aGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0 ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1 bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgaGF2ZSBjb21t aXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZh dWx0cycKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNp bmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKK215ICRvbGRwaWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCSJTRUxFQ1QgcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBs aWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwot JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDAp LCAndHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gUk9MTEJBQ0sgUFJF UEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJl cGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMu Ci0jIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgotIwotIyBFeHBlY3QgZGF0YSByb2xscyBiYWNr IGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiByb3dzLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIwotCi0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3Mg KHdpbGwgYmUgcmVwbGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0 LgotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsK LQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIp IFdIRVJFIG1vZChhLDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwz KSA9IDA7Ci0JUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwogCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3Vs dCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlv biBnZXRzIGFib3J0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0J IlJPTExCQUNLIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291 bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMnwyfDIpLAotCSdS b3dzIGluc2VydGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3Jp Z2luYWwgMiByb3dzJyk7Ci0KLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJl cicpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIENoZWNrIHRoYXQgMlBD IENPTU1JVCBQUkVQQVJFRCBpcyBkZWNvZGVkIHByb3Blcmx5IG9uIGNyYXNoIHJlc3RhcnQuCi0j IDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2 NGtCIGxpbWl0LgotIyAyLiBUaGVuIHNlcnZlciBjcmFzaGVzIGJlZm9yZSB0aGUgMlBDIHRyYW5z YWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMgMy4gQWZ0ZXIgc2VydmVycyBhcmUgcmVzdGFydGVkIHRo ZSBwZW5kaW5nIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRh IGlzIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlciBzaWRlIGFmdGVyIHRoZSBjb21taXQuCi0jIE5v dGU6IGJvdGggcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyIGRvIGNyYXNoL3Jlc3RhcnQuCi0jIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQ REFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVfc3Vic2NyaWJlci0+c3RvcCgnaW1tZWRp YXRlJyk7Ci0kbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotCi0kbm9kZV9wdWJs aXNoZXItPnN0YXJ0OwotJG5vZGVfc3Vic2NyaWJlci0+c3RhcnQ7Ci0KLSMgY29tbWl0IHBvc3Qg dGhlIHJlc3RhcnQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkNP TU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxl Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK LWlzKCRyZXN1bHQsIHFxKDMzMzR8MzMzNHwzMzM0KSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMg aGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBs b2NhbCBkZWZhdWx0cycKLSk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMg RG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJFIGJ1dCBiZWZvcmUgUk9MTEJBQ0sgUFJFUEFSRUQu Ci0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDMu IEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUgUFJFUEFSRS4K LSMgNC4gVGhlbiBkbyBhIFJPTExCQUNLIFBSRVBBUkVELgotIwotIyBFeHBlY3QgdGhlIDJQQyBk YXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IDMgcm93cyBvbiB0aGUgc3Vic2NyaWJlcgotIyAo dGhlIG9yaWdpbmFsIDIgKyBpbnNlcnRlZCAxKS4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxs IGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi REVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVw ZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5T RVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nl cmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKLQotJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRy YW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCop IEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0 aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJbnNlcnQgYSBkaWZmZXJlbnQg cmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKLSMgTm90 ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJl IHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5Ci0kbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMg KDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJF RCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBv biBzdWJzY3JpYmVyLAotIyBidXQgdGhlIGV4dHJhIElOU0VSVCBvdXRzaWRlIG9mIHRoZSAyUEMg c3RpbGwgd2FzIHJlcGxpY2F0ZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5 OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoM3wzfDMpLCAnY2hlY2sgdGhlIG91 dHNpZGUgaW5zZXJ0IHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJlcicpOwotCi0kcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlv biBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwotIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUgYnV0IGJlZm9yZSBDT01NSVQg UFJFUEFSRUQuCi0jIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFjayB0byAyIHJvd3Mgd2hpY2ggYXJl IHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KLSMgMi4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAy UEMuCi0jIDMuIEEgc2luZ2xlIHJvdyBJTlNFUlQgaXMgZG9uZSB3aGljaCBpcyBhZnRlciB0aGUg UFJFUEFSRS4KLSMgNC4gVGhlbiBkbyBhIENPTU1JVCBQUkVQQVJFRC4KLSMKLSMgRXhwZWN0IDJQ QyBkYXRhICsgdGhlIGV4dHJhIHJvdyBhcmUgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSAzMzM0 ICsgaW5zZXJ0ZWQgMSA9IDMzMzUpLgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwot Ci0jIEZpcnN0LCBkZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVw bGljYXRlZCkKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsKLQotIyBUaGVuIGluc2VydCwgdXBkYXRlIGFu ZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rp b24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIEluc2VydCBhIGRpZmZlcmVudCByZWNvcmQg KG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQotIyBOb3RlOiB0aGUg MlBDIHRyYW5zYWN0aW9uIHN0aWxsIGhvbGRzIHJvdyBsb2NrcyBzbyBtYWtlIHN1cmUgdGhpcyBp bnNlcnQgaXMgZm9yIGEgc2VwYXJhcmUgcHJpbWFyeSBrZXkKLSRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoOTk5OTks ICdmb29iYXInKSIpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRlZAotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0 X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOwogCi0j IGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIKLSRyZXN1 bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNv dW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJl c3VsdCwgcXEoMzMzNXwzMzM1fDMzMzUpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyAoYXMgd2Vs bCBhcyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciwgYW5kIGV4 dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Ciskbm9kZV9wdWJsaXNoZXIt PnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQg d2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJ UFRJT04iOwogCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJl c3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSwgMSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hlY2sgYWxsIHRo ZSBjbGVhbnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFt X3BhcmFsbGVsX2NvbmZsaWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVh bV9wYXJhbGxlbF9jb25mbGljdC5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li4xMGVmZDJkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMy X3N0cmVhbV9wYXJhbGxlbF9jb25mbGljdC5wbApAQCAtMCwwICsxLDE1MiBAQAorIyBDb3B5cmln aHQgKGMpIDIwMjIsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVz dCBmb3IgZGVhZGxvY2sgaW4gc3RyZWFtaW5nIG1vZGUgInBhcmFsbGVsIiBpbiBsb2dpY2FsIHJl cGxpY2F0aW9uLgorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzOwordXNlIFBvc3RncmVTUUw6 OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6 TW9yZTsKKworbXkgJG9mZnNldCA9IDA7CisKKyMgQ3JlYXRlIHB1Ymxpc2hlciBub2RlCitteSAk bm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3B1Ymxpc2hl cicpOworJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJlYW1pbmcgPT4gJ2xvZ2ljYWwn KTsKKyRub2RlX3B1Ymxpc2hlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJJ2xv Z2ljYWxfZGVjb2Rpbmdfd29ya19tZW0gPSA2NGtCJyk7Ciskbm9kZV9wdWJsaXNoZXItPnN0YXJ0 OworCisjIENyZWF0ZSBzdWJzY3JpYmVyIG5vZGUKK215ICRub2RlX3N1YnNjcmliZXIgPSBQb3N0 Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKKyRub2RlX3N1YnNjcmli ZXItPmluaXQ7CisKKyMgQ2hlY2sgaWYgYW55IHN0cmVhbWluZyBjaHVua3MgYXJlIGFwcGxpZWQg dXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gV2UKKyMgaGF2ZSB0byBsb29rIGZvciB0 aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0aGF0LCBzbyBidW1wIHVwIHRoZSBsb2cKKyMg dmVyYm9zaXR5LgorJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisKKyRub2RlX3N1YnNjcmliZXItPnN0 YXJ0OworCisjIFNldHVwIHN0cnVjdHVyZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgVEFCTEUgdGVzdF90YWIgKGEgaW50KSIpOwor CisjIFNldHVwIHN0cnVjdHVyZSBvbiBzdWJzY3JpYmVyCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkNSRUFURSBUQUJMRSB0ZXN0X3RhYiAoYSBpbnQpIik7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRF WCBpZHhfdGFiIG9uIHRlc3RfdGFiKGEpIik7CisKKyMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlv bgorbXkgJHB1Ymxpc2hlcl9jb25uc3RyID0gJG5vZGVfcHVibGlzaGVyLT5jb25uc3RyIC4gJyBk Ym5hbWU9cG9zdGdyZXMnOworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQ1JFQVRFIFBVQkxJQ0FUSU9OIHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CisKK215 ICRhcHBuYW1lID0gJ3RhcF9zdWInOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsICIKKwlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKKwlDT05ORUNUSU9OICck cHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScKKwlQVUJMSUNBVElP TiB0YXBfcHViCisJV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGNvcHlfZGF0YSA9IGZhbHNl KSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisj IEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0 a0IgbGltaXQuCitteSAkaW4gID0gJyc7CitteSAkb3V0ID0gJyc7CisKK215ICR0aW1lciA9IElQ Qzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0 KTsKKworbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMn LCBcJGluLCBcJG91dCwgJHRpbWVyLAorCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKyMgPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2VlbiB0aGUgbGVhZGVy IGFwcGx5IHdvcmtlciBhbmQgdGhlIHBhcmFsbGVsIGFwcGx5CisjIHdvcmtlciBjYW4gYmUgZGV0 ZWN0ZWQuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMo aSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyMgRW5zdXJlIHRoYXQgdGhlIHBhcmFsbGVsIGFwcGx5 IHdvcmtlciBleGVjdXRlcyB0aGUgaW5zZXJ0IGNvbW1hbmQgYmVmb3JlIHRoZQorIyBsZWFkZXIg d29ya2VyLgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtB LVowLTldKzopPyBhcHBsaWVkIFswLTldKyBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsv LAorCSRvZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAi SU5TRVJUIElOVE8gdGVzdF90YWIgdmFsdWVzKDEpIik7CisKKyRpbiAuPSBxeworQ09NTUlUOwor XHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCisJ cXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGRlYWRsb2NrIGRldGVjdGVkLywKKwkkb2Zmc2V0KTsK KworIyBEcm9wIHRoZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jr cy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBp ZHhfdGFiIik7CisKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUg YXBwbGllZCBpbiB0aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9j YXRjaHVwKCRhcHBuYW1lKTsKKworbXkgJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lz KCRyZXN1bHQsIHFxKDUwMDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIg ZHJvcHBpbmcgaW5kZXgnKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJv bm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUg VEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRF IFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRlc3RfdGFiKGEpIik7CisKKyMgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorIyBDb25maXJtIGlmIGEgZGVhZGxvY2sgYmV0d2VlbiB0d28gcGFyYWxsZWwgYXBw bHkgd29ya2VycyBjYW4gYmUgZGV0ZWN0ZWQuCisjID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBD aGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVf c3Vic2NyaWJlci0+bG9nZmlsZTsKKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHMoaSk7Cit9Owor JGgtPnB1bXBfbmI7CisKKyMgRW5zdXJlIHRoYXQgdGhlIGZpcnN0IHBhcmFsbGVsIGFwcGx5IHdv cmtlciBleGVjdXRlcyB0aGUgaW5zZXJ0IGNvbW1hbmQKKyMgYmVmb3JlIHRoZSBzZWNvbmQgb25l LgorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0RFQlVHOiAoIFtBLVowLTld KzopPyBhcHBsaWVkIFswLTldKyBjaGFuZ2VzIGluIHRoZSBzdHJlYW1pbmcgY2h1bmsvLAorCSRv ZmZzZXQpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhp KSIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVf c3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkZWFk bG9jayBkZXRlY3RlZC8sCisJJG9mZnNldCk7CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9u IHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYiIpOworCisjIFdhaXQgZm9yIHRoaXMg c3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4K KyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQg PQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3Vu dCgqKSBGUk9NIHRlc3RfdGFiIik7CitpcygkcmVzdWx0LCBxcSgxMDAwMCksICdkYXRhIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBpbmRleCcpOworCiskbm9kZV9zdWJz Y3JpYmVyLT5zdG9wOworJG5vZGVfcHVibGlzaGVyLT5zdG9wOworCitkb25lX3Rlc3RpbmcoKTsK LS0gCjIuNy4yLndpbmRvd3MuMQoK --_006_OS0PR01MB571663F65904D00895AD159994109OS0PR01MB5716jpnp_ Content-Type: application/octet-stream; name="v52-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v52-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v52-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=22537; creation-date="Sun, 27 Nov 2022 04:10:48 GMT"; modification-date="Sun, 27 Nov 2022 04:13:33 GMT" Content-Transfer-Encoding: base64 RnJvbSA0NDI5ZTUxOGEyYjk0MjE1MzhmMmFjMGVlZGJhYWQ0MmZmMWFlZjViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBIb3UgWmhpamllIDxob3V6ai5mbnN0QGNuLmZ1aml0c3UuY29t PgpEYXRlOiBNb24sIDIxIE5vdiAyMDIyIDIwOjE2OjE3ICswODAwClN1YmplY3Q6IFtQQVRDSCB2 NTIgNC81XSBSZXRyeSB0byBhcHBseSBzdHJlYW1pbmcgeGFjdCBvbmx5IGluIGFwcGx5IHdvcmtl cgoKV2hlbiB0aGUgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBpcyBzZXQgc3RyZWFtaW5nPXBhcmFs bGVsLCB0aGUgbG9naWMgdHJpZXMgdG8KYXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1 c2luZyBhIHBhcmFsbGVsIGFwcGx5IHdvcmtlci4gSWYgdGhpcwpmYWlscyB0aGUgcGFyYWxsZWwg d29ya2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5n IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24g bW9kZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0 aGUgc2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJl ZW4gaW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGVyZSBhcmUg YW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzIGFuZCB0aGUgc3Vic2NyaWJlciBleGl0 cyB3aXRoIGFuCmVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kIHdoZW5ldmVy IHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkCnN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFnIGlzIHJl c2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFtaW5nIHRy YW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBoYXMgcHJl dmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5IgpmaWVsZCku Ci0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAgICAgICAg fCAgMTAgKysKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICAg ICAgIHwgIDExICstCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCAg ICAgICAgICB8ICAgNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwg ICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5jICAgICAgICAgICAgfCAgIDEgKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHlw YXJhbGxlbHdvcmtlci5jICAgICAgfCAgMzAgKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYyAgICAgICAgICAgfCAxODIgKysrKysrKysrKysrKysrLS0tLS0tCiBz cmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSAr LQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCAgICAgICAgICAgICAgfCAg IDcgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggICAgICAgICAg fCAgIDIgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgICAg ICAgfCAgIDggKwogLi4uL3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29uZmxp Y3QucGwgfCAgNTYgKysrKysrLQogMTMgZmlsZXMgY2hhbmdlZCwgMjYxIGluc2VydGlvbnMoKyks IDU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s IGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggMTMwMzYxZi4uNjkxMjU3MSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Nh dGFsb2dzLnNnbWwKQEAgLTc5NDAsNiArNzk0MCwxNiBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNl YWJsZT4mbHQ7aXRlcmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4m bAogCiAgICAgIDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+ PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJy ZXRyeTwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAg ICA8cGFyYT4KKyAgICAgICBUcnVlIGlmIHByZXZpb3VzIGNoYW5nZSBmYWlsZWQgdG8gYmUgYXBw bGllZCB3aGlsZSB0aGVyZSB3ZXJlIGFueQorICAgICAgIGFjdGl2ZSBwYXJhbGxlbCBhcHBseSB3 b3JrZXJzLCBuZWNlc3NpdGF0aW5nIGEgcmV0cnkuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAg ICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxl X2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CiAgICAgICAgPHN0cnVjdGZp ZWxkPnN1YmNvbm5pbmZvPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+dGV4dDwvdHlwZT4KICAgICAgIDwv cGFyYT4KICAgICAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5k ZXggZjM2NjcxMC4uMTMxMWYzMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVw bGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21s CkBAIC0xNTAwLDEyICsxNTAwLDExIEBAIENPTlRFWFQ6ICBwcm9jZXNzaW5nIHJlbW90ZSBkYXRh IGZvciByZXBsaWNhdGlvbiBvcmlnaW4gInBnXzE2Mzk1IiBkdXJpbmcgIklOU0VSCiAKICAgPHBh cmE+CiAgICBXaGVuIHRoZSBzdHJlYW1pbmcgbW9kZSBpcyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0 ZXJhbD4sIHRoZSBmaW5pc2ggTFNOIG9mCi0gICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1heSBub3Qg YmUgbG9nZ2VkLiBJbiB0aGF0IGNhc2UsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8KLSAgIGNoYW5n ZSB0aGUgc3RyZWFtaW5nIG1vZGUgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+IG9yIDxsaXRlcmFs Pm9mZjwvbGl0ZXJhbD4gYW5kCi0gICBjYXVzZSB0aGUgc2FtZSBjb25mbGljdHMgYWdhaW4gc28g dGhlIGZpbmlzaCBMU04gb2YgdGhlIGZhaWxlZCB0cmFuc2FjdGlvbiB3aWxsCi0gICBiZSB3cml0 dGVuIHRvIHRoZSBzZXJ2ZXIgbG9nLiBGb3IgdGhlIHVzYWdlIG9mIGZpbmlzaCBMU04sIHBsZWFz ZSByZWZlciB0byA8bGluawotICAgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uIj48Y29t bWFuZD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uCi0gICBTS0lQPC9jb21tYW5kPjwvbGluaz4uCisg ICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1heSBub3QgYmUgbG9nZ2VkLiBJbiB0aGF0IGNhc2UsIHRo ZSBmYWlsZWQgdHJhbnNhY3Rpb24KKyAgIHdpbGwgYmUgcmV0cmllZCBpbiA8bGl0ZXJhbD5zdHJl YW1pbmcgPSBvbjwvbGl0ZXJhbD4gbW9kZS4gSWYgaXQgZmFpbHMKKyAgIGFnYWluLCB0aGUgZmlu aXNoIExTTiBvZiB0aGUgZmFpbGVkIHRyYW5zYWN0aW9uIHdpbGwgYmUgd3JpdHRlbiB0byB0aGUK KyAgIHNlcnZlciBsb2cuIEZvciB0aGUgdXNhZ2Ugb2YgZmluaXNoIExTTiwgcGxlYXNlIHJlZmVy IHRvCisgICA8bGluayBsaW5rZW5kPSJzcWwtYWx0ZXJzdWJzY3JpcHRpb24iPjxjb21tYW5kPkFM VEVSIFNVQlNDUklQVElPTiAuLi4gU0tJUDwvY29tbWFuZD48L2xpbms+LgogICA8L3BhcmE+CiAg PC9zZWN0MT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0 aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAppbmRl eCBmMTczYTA5Li42NGQ1ODAyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9z dWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRp b24uc2dtbApAQCAtMjUxLDYgKzI1MSwxMSBAQCBDUkVBVEUgU1VCU0NSSVBUSU9OIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5zdWJzY3JpcHRpb25fbmFtZTwvcmVwbGFjZWFibAogICAg ICAgICAgIHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZC4gTm90ZSB0aGF0IGlmIGFuIGVycm9yIGhh cHBlbnMgaW4gYQogICAgICAgICAgIHBhcmFsbGVsIGFwcGx5IHdvcmtlciwgdGhlIGZpbmlzaCBM U04gb2YgdGhlIHJlbW90ZSB0cmFuc2FjdGlvbgogICAgICAgICAgIG1pZ2h0IG5vdCBiZSByZXBv cnRlZCBpbiB0aGUgc2VydmVyIGxvZy4KKyAgICAgICAgICBXaGVuIGFwcGx5aW5nIHN0cmVhbWlu ZyB0cmFuc2FjdGlvbnMsIGlmIGEgZGVhZGxvY2sgaXMgZGV0ZWN0ZWQsIHRoZQorICAgICAgICAg IHBhcmFsbGVsIGFwcGx5IHdvcmtlciB3aWxsIGV4aXQgd2l0aCBhbiBlcnJvci4gVGhlCisgICAg ICAgICAgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+IG1vZGUgaXMgZGlzcmVnYXJkZWQgd2hl biByZXRyeWluZzsKKyAgICAgICAgICBpbnN0ZWFkIHRoZSB0cmFuc2FjdGlvbiB3aWxsIGJlIGFw cGxpZWQgdXNpbmcgPGxpdGVyYWw+b248L2xpdGVyYWw+CisgICAgICAgICAgbW9kZS4KICAgICAg ICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMgYi9zcmMv YmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IGE1MDZmYzMuLjcyM2IxNDEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMKKysrIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpAQCAtNzEsNiArNzEsNyBAQCBH ZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spCiAJc3ViLT5zdHJlYW0g PSBzdWJmb3JtLT5zdWJzdHJlYW07CiAJc3ViLT50d29waGFzZXN0YXRlID0gc3ViZm9ybS0+c3Vi dHdvcGhhc2VzdGF0ZTsKIAlzdWItPmRpc2FibGVvbmVyciA9IHN1YmZvcm0tPnN1YmRpc2FibGVv bmVycjsKKwlzdWItPnJldHJ5ID0gc3ViZm9ybS0+c3VicmV0cnk7CiAKIAkvKiBHZXQgY29ubmlu Zm8gKi8KIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihTVUJTQ1JJUFRJT05PSUQsCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9zcmMvYmFja2VuZC9j YXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggMmQ4MTA0Yi4uYzJjN2Q4YSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5k L2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTMwMSw3ICsxMzAxLDcgQEAgUkVWT0tFIEFM TCBPTiBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc3RhdHVzIEZST00gcHVibGljOwogUkVWT0tFIEFM TCBPTiBwZ19zdWJzY3JpcHRpb24gRlJPTSBwdWJsaWM7CiBHUkFOVCBTRUxFQ1QgKG9pZCwgc3Vi ZGJpZCwgc3Vic2tpcGxzbiwgc3VibmFtZSwgc3Vib3duZXIsIHN1YmVuYWJsZWQsCiAgICAgICAg ICAgICAgIHN1YmJpbmFyeSwgc3Vic3RyZWFtLCBzdWJ0d29waGFzZXN0YXRlLCBzdWJkaXNhYmxl b25lcnIsCi0gICAgICAgICAgICAgIHN1YnNsb3RuYW1lLCBzdWJzeW5jY29tbWl0LCBzdWJwdWJs aWNhdGlvbnMsIHN1Ym9yaWdpbikKKyAgICAgICAgICAgICAgc3VicmV0cnksIHN1YnNsb3RuYW1l LCBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9yaWdpbikKICAgICBPTiBwZ19z dWJzY3JpcHRpb24gVE8gcHVibGljOwogCiBDUkVBVEUgVklFVyBwZ19zdGF0X3N1YnNjcmlwdGlv bl9zdGF0cyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9u Y21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IDll NGI2NzYuLmIwM2UzN2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlw dGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMK QEAgLTY5MSw2ICs2OTEsNyBAQCBDcmVhdGVTdWJzY3JpcHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRl LCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAogCQkJCQkgTE9HSUNBTFJFUF9UV09QSEFT RV9TVEFURV9QRU5ESU5HIDoKIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfRElTQUJM RUQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJkaXNhYmxlb25lcnIgLSAxXSA9 IEJvb2xHZXREYXR1bShvcHRzLmRpc2FibGVvbmVycik7CisJdmFsdWVzW0FudW1fcGdfc3Vic2Ny aXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0RGF0dW0oZmFsc2UpOwogCXZhbHVlc1tBbnVt X3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyAtIDFdID0KIAkJQ1N0cmluZ0dldFRleHREYXR1 bShjb25uaW5mbyk7CiAJaWYgKG9wdHMuc2xvdF9uYW1lKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseXBhcmFsbGVsd29ya2VyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5cGFyYWxsZWx3b3JrZXIuYwppbmRleCBiY2VlZjA5 Li41MGQwNDIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2Fw cGx5cGFyYWxsZWx3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2FwcGx5cGFyYWxsZWx3b3JrZXIuYwpAQCAtMjMxLDYgKzIzMSwxNyBAQCBwYV9jYW5fc3RhcnQo VHJhbnNhY3Rpb25JZCB4aWQpCiAJaWYgKCFBbGxUYWJsZXN5bmNzUmVhZHkoKSkKIAkJcmV0dXJu IGZhbHNlOwogCisJLyoKKwkgKiBEb24ndCB1c2UgcGFyYWxsZWwgYXBwbHkgd29ya2VycyBmb3Ig cmV0cmllcywgYmVjYXVzZSBpdCBpcyBwb3NzaWJsZQorCSAqIHRoYXQgYSBkZWFkbG9jayB3YXMg ZGV0ZWN0ZWQgdGhlIGxhc3QgdGltZSB3ZSB0cmllZCB0byBhcHBseSBhCisJICogdHJhbnNhY3Rp b24gdXNpbmcgYSBwYXJhbGxlbCBhcHBseSB3b3JrZXIuCisJICovCisJaWYgKE15U3Vic2NyaXB0 aW9uLT5yZXRyeSkKKwl7CisJCWVsb2coREVCVUcxLCAicGFyYWxsZWwgYXBwbHkgd29ya2VycyBh cmUgbm90IHVzZWQgZm9yIHJldHJpZXMiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCXJldHVy biB0cnVlOwogfQogCkBAIC0xNTI5LDMgKzE1NDAsMjIgQEAgcGFfdW5sb2NrX3RyYW5zYWN0aW9u KFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSkKIAlVbmxvY2tBcHBseVRyYW5z YWN0aW9uRm9yU2Vzc2lvbihNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCB4aWQsCiAJCQkJCQkJ CQkgUEFSQUxMRUxfQVBQTFlfTE9DS19YQUNULCBsb2NrbW9kZSk7CiB9CisKKy8qIENoZWNrIGlm IGFueSBhY3RpdmUgcGFyYWxsZWwgYXBwbHkgd29ya2Vycy4gKi8KK2Jvb2wKK3BhX2hhdmVfYWN0 aXZlX3dvcmtlcih2b2lkKQoreworCUxpc3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgUGFy YWxsZWxBcHBseVdvcmtlcnNMaXN0KQorCXsKKwkJUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKnRt cF93aW5mbzsKKworCQl0bXBfd2luZm8gPSAoUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKikgbGZp cnN0KGxjKTsKKworCQlpZiAodG1wX3dpbmZvLT5pbl91c2UpCisJCQlyZXR1cm4gdHJ1ZTsKKwl9 CisKKwlyZXR1cm4gZmFsc2U7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYwppbmRleCBjYzUyZDdlLi5kOTA0M2VmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMKQEAgLTQxMCw3ICs0MTAsNyBAQCBzdGF0aWMgdm9pZCBzZW5kX2ZlZWRi YWNrKFhMb2dSZWNQdHIgcmVjdnBvcywgYm9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkpOwog CiBzdGF0aWMgdm9pZCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9sc24p OwogCi1zdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsKK3N0YXRp YyB2b2lkIERpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBh cHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRf ZGF0YSk7CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFwcGx5RXhl Y3V0aW9uRGF0YSAqZWRhdGEsCkBAIC00NDcsNiArNDQ3LDggQEAgc3RhdGljIGlubGluZSB2b2lk IHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbyh2b2lkKTsKIHN0YXRpYyBUcmFuc0FwcGx5 QWN0aW9uIGdldF90cmFuc2FjdGlvbl9hcHBseV9hY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsCiAJ CQkJCQkJCQkJCQkJIFBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICoqd2luZm8pOwogCitzdGF0aWMg dm9pZCBzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGJvb2wgcmV0cnkpOworCiAvKgogICogUmV0dXJu IHRoZSBuYW1lIG9mIHRoZSBsb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlci4KICAqLwpAQCAtMTAz OSw2ICsxMDQxLDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdChTdHJpbmdJbmZvIHMpCiAKIAlhcHBs eV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0YSk7CiAKKwkvKiBSZXNldCB0aGUg cmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFBy b2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwu ICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRfZGF0YS5lbmRfbHNuKTsKIApAQCAt MTE0OCw2ICsxMTUzLDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAJ aW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxh Zy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KGZhbHNlKTsKKwogCS8qIFByb2Nlc3MgYW55 IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJv Y2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEuZW5kX2xzbik7CiAKQEAgLTEyMDQsNiAr MTIxMiw5IEBAIGFwcGx5X2hhbmRsZV9jb21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCXN0 b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIAlpbl9yZW1vdGVfdHJh bnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9z dWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQg YXJlIGJlaW5nIHN5bmNocm9uaXplZCBpbiBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdf dGFibGVzKHByZXBhcmVfZGF0YS5lbmRfbHNuKTsKIApAQCAtMTI2NSw2ICsxMjc2LDkgQEAgYXBw bHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBhcmVkKFN0cmluZ0luZm8gcykKIAlzdG9yZV9mbHVzaF9w b3NpdGlvbihyb2xsYmFja19kYXRhLnJvbGxiYWNrX2VuZF9sc24pOwogCWluX3JlbW90ZV90cmFu c2FjdGlvbiA9IGZhbHNlOwogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1 YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBh cmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190 YWJsZXMocm9sbGJhY2tfZGF0YS5yb2xsYmFja19lbmRfbHNuKTsKIApAQCAtMTM5MCw2ICsxNDA0 LDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJCWJyZWFr OwogCX0KIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25f cmV0cnkoZmFsc2UpOworCiAJcGdzdGF0X3JlcG9ydF9zdGF0KGZhbHNlKTsKIAogCS8qIFByb2Nl c3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6ZWQgaW4gcGFyYWxsZWwuICov CkBAIC0xODc5LDYgKzE4OTYsMTAgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJ bmZvIHMpCiAJCQlicmVhazsKIAl9CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlp ZiAodG9wbGV2ZWxfeGFjdCkKKwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7CisKIAly ZXNldF9hcHBseV9lcnJvcl9jb250ZXh0X2luZm8oKTsKIH0KIApAQCAtMjEyNiw2ICsyMTQ3LDkg QEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkJYnJlYWs7CiAJ fQogCisJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRy eShmYWxzZSk7CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hy b25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2Rh dGEuZW5kX2xzbik7CiAKQEAgLTQxOTMsMjAgKzQyMTcsMjggQEAgc3RhcnRfdGFibGVfc3luYyhY TG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MsIGNoYXIgKipteXNsb3RuYW1lKQogCX0KIAlQR19D QVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5kIHJlY292 ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQorCQkgKiBzdGF0ZQorCQkgKi8KKwkJ SE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVwb3J0KCk7CisJCUFib3J0T3V0T2ZB bnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUoKTsKKworCQlSRVNVTUVfSU5URVJS VVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3lu Y2hyb25pemF0aW9uICovCisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vi c2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKwogCQlpZiAoTXlTdWJzY3JpcHRpb24tPmRpc2FibGVv bmVycikKLQkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7Ci0JCWVsc2UKLQkJewotCQkJ LyoKLQkJCSAqIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgdGFibGUgc3luY2hyb25p emF0aW9uLiBBYm9ydAotCQkJICogdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gdGhhdCB0aGUg c3RhdHMgbWVzc2FnZSBpcyBzZW50IGluIGFuCi0JCQkgKiBpZGxlIHN0YXRlLgotCQkJICovCi0J CQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQkJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0 aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKwkJCURpc2FibGVTdWJzY3Jp cHRpb25PbkVycm9yKCk7CiAKLQkJCVBHX1JFX1RIUk9XKCk7Ci0JCX0KKwkJLyogU2V0IHRoZSBy ZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KHRydWUpOworCisJCWFwcGx5 X3dvcmtlcl9jbGVhbl9leGl0KGZhbHNlKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogCkBAIC00MjMx LDIwICs0MjYzLDI3IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9zKQog CX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwg YW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQorCQkgKiBzdGF0ZQor CQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVwb3J0KCk7CisJCUFi b3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUoKTsKKworCQlSRVNV TUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCB3aGlsZSBh cHBseWluZyBjaGFuZ2VzICovCisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15 U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOwor CiAJCWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQotCQkJRGlzYWJsZVN1YnNjcmlw dGlvbkFuZEV4aXQoKTsKLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogUmVwb3J0IHRoZSB3b3Jr ZXIgZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMuIEFib3J0IHRoZQotCQkJICogY3VycmVu dCB0cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNlbnQgaW4gYW4KLQkJ CSAqIGlkbGUgc3RhdGUuCi0JCQkgKi8KLQkJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwot CQkJcGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwg IWFtX3RhYmxlc3luY193b3JrZXIoKSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcigp OwogCi0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4gKi8K KwkJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogfQpA QCAtNDUzMCwzOSArNDU2OSwyMCBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiB9 CiAKIC8qCi0gKiBBZnRlciBlcnJvciByZWNvdmVyeSwgZGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9u IGluIGEgbmV3IHRyYW5zYWN0aW9uCi0gKiBhbmQgZXhpdCBjbGVhbmx5LgorICogRGlzYWJsZSB0 aGUgc3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uLgogICovCiBzdGF0aWMgdm9pZAot RGlzYWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCkKK0Rpc2FibGVTdWJzY3JpcHRpb25PbkVy cm9yKHZvaWQpCiB7Ci0JLyoKLQkgKiBFbWl0IHRoZSBlcnJvciBtZXNzYWdlLCBhbmQgcmVjb3Zl ciBmcm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCi0JICogc3RhdGUKLQkgKi8KLQlIT0xE X0lOVEVSUlVQVFMoKTsKLQotCUVtaXRFcnJvclJlcG9ydCgpOwotCUFib3J0T3V0T2ZBbnlUcmFu c2FjdGlvbigpOwotCUZsdXNoRXJyb3JTdGF0ZSgpOwotCi0JUkVTVU1FX0lOVEVSUlVQVFMoKTsK LQotCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgZWl0aGVyIHRhYmxlIHN5bmNo cm9uaXphdGlvbiBvciBhcHBseSAqLwotCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9y KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsCi0JCQkJCQkJCQkgIWFtX3RhYmxlc3luY193b3Jr ZXIoKSk7Ci0KIAkvKiBEaXNhYmxlIHRoZSBzdWJzY3JpcHRpb24gKi8KIAlTdGFydFRyYW5zYWN0 aW9uQ29tbWFuZCgpOwogCURpc2FibGVTdWJzY3JpcHRpb24oTXlTdWJzY3JpcHRpb24tPm9pZCk7 CiAJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBOb3RpZnkgdGhlIHN1YnNjcmlw dGlvbiBoYXMgYmVlbiBkaXNhYmxlZCBhbmQgZXhpdCAqLworCS8qIE5vdGlmeSB0aGUgc3Vic2Ny aXB0aW9uIGhhcyBiZWVuIGRpc2FibGVkICovCiAJZXJlcG9ydChMT0csCiAJCQllcnJtc2coInN1 YnNjcmlwdGlvbiBcIiVzXCIgaGFzIGJlZW4gZGlzYWJsZWQgYmVjYXVzZSBvZiBhbiBlcnJvciIs CiAJCQkJICAgTXlTdWJzY3JpcHRpb24tPm5hbWUpKTsKLQotCWFwcGx5X3dvcmtlcl9jbGVhbl9l eGl0KGZhbHNlKTsKIH0KIAogLyoKQEAgLTQ4NjcsMyArNDg4Nyw3MSBAQCBhcHBseV93b3JrZXJf Y2xlYW5fZXhpdChib29sIG9uX3N1YmluZm9fY2hhbmdlKQogCiAJcHJvY19leGl0KDApOwogfQor CisvKgorICogU2V0IHN1YnJldHJ5IG9mIHBnX3N1YnNjcmlwdGlvbiBjYXRhbG9nLgorICoKKyAq IElmIHJldHJ5IGlzIHRydWUsIHN1YnNjcmliZXIgaXMgYWJvdXQgdG8gZXhpdCB3aXRoIGFuIGVy cm9yLiBPdGhlcndpc2UsIGl0CisgKiBtZWFucyB0aGF0IHRoZSB0cmFuc2FjdGlvbiB3YXMgYXBw bGllZCBzdWNjZXNzZnVsbHkuCisgKi8KK3N0YXRpYyB2b2lkCitzZXRfc3Vic2NyaXB0aW9uX3Jl dHJ5KGJvb2wgcmV0cnkpCit7CisJUmVsYXRpb24JcmVsOworCUhlYXBUdXBsZQl0dXA7CisJYm9v bAkJc3RhcnRlZF90eCA9IGZhbHNlOworCWJvb2wJCW51bGxzW05hdHRzX3BnX3N1YnNjcmlwdGlv bl07CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKwlEYXR1bQkJdmFs dWVzW05hdHRzX3BnX3N1YnNjcmlwdGlvbl07CisKKwkvKiBGYXN0IHBhdGggLSBpZiBubyBzdGF0 ZSBjaGFuZ2UgdGhlbiBub3RoaW5nIHRvIGRvICovCisJaWYgKE15U3Vic2NyaXB0aW9uLT5yZXRy eSA9PSByZXRyeSkKKwkJcmV0dXJuOworCisJLyogRmFzdCBwYXRoIC0gc2tpcCBmb3IgcGFyYWxs ZWwgYXBwbHkgd29ya2VycyAqLworCWlmIChhbV9wYXJhbGxlbF9hcHBseV93b3JrZXIoKSkKKwkJ cmV0dXJuOworCisJLyogRmFzdCBwYXRoIC0gc2tpcCBzZXQgcmV0cnkgaWYgbm8gYWN0aXZlIHBh cmFsbGVsIGFwcGx5IHdvcmtlcnMgKi8KKwlpZiAocmV0cnkgJiYgIXBhX2hhdmVfYWN0aXZlX3dv cmtlcigpKQorCQlyZXR1cm47CisKKwlpZiAoIUlzVHJhbnNhY3Rpb25TdGF0ZSgpKQorCXsKKwkJ U3RhcnRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJc3RhcnRlZF90eCA9IHRydWU7CisJfQorCisJ LyogTG9vayB1cCB0aGUgc3Vic2NyaXB0aW9uIGluIHRoZSBjYXRhbG9nICovCisJcmVsID0gdGFi bGVfb3BlbihTdWJzY3JpcHRpb25SZWxhdGlvbklkLCBSb3dFeGNsdXNpdmVMb2NrKTsKKwl0dXAg PSBTZWFyY2hTeXNDYWNoZUNvcHkxKFNVQlNDUklQVElPTk9JRCwKKwkJCQkJCQkgIE9iamVjdElk R2V0RGF0dW0oTXlTdWJzY3JpcHRpb24tPm9pZCkpOworCisJaWYgKCFIZWFwVHVwbGVJc1ZhbGlk KHR1cCkpCisJCWVsb2coRVJST1IsICJzdWJzY3JpcHRpb24gXCIlc1wiIGRvZXMgbm90IGV4aXN0 IiwgTXlTdWJzY3JpcHRpb24tPm5hbWUpOworCisJTG9ja1NoYXJlZE9iamVjdChTdWJzY3JpcHRp b25SZWxhdGlvbklkLCBNeVN1YnNjcmlwdGlvbi0+b2lkLCAwLAorCQkJCQkgQWNjZXNzU2hhcmVM b2NrKTsKKworCS8qIEZvcm0gYSBuZXcgdHVwbGUuICovCisJbWVtc2V0KHZhbHVlcywgMCwgc2l6 ZW9mKHZhbHVlcykpOworCW1lbXNldChudWxscywgZmFsc2UsIHNpemVvZihudWxscykpOworCW1l bXNldChyZXBsYWNlcywgZmFsc2UsIHNpemVvZihyZXBsYWNlcykpOworCisJLyogU2V0IHN1YnJl dHJ5ICovCisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29s R2V0RGF0dW0ocmV0cnkpOworCXJlcGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5 IC0gMV0gPSB0cnVlOworCisJdHVwID0gaGVhcF9tb2RpZnlfdHVwbGUodHVwLCBSZWxhdGlvbkdl dERlc2NyKHJlbCksIHZhbHVlcywgbnVsbHMsCisJCQkJCQkJcmVwbGFjZXMpOworCisJLyogVXBk YXRlIHRoZSBjYXRhbG9nLiAqLworCUNhdGFsb2dUdXBsZVVwZGF0ZShyZWwsICZ0dXAtPnRfc2Vs ZiwgdHVwKTsKKworCS8qIENsZWFudXAuICovCisJaGVhcF9mcmVldHVwbGUodHVwKTsKKwl0YWJs ZV9jbG9zZShyZWwsIE5vTG9jayk7CisKKwlpZiAoc3RhcnRlZF90eCkKKwkJQ29tbWl0VHJhbnNh Y3Rpb25Db21tYW5kKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5j IGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCA1MTQxYTY2Li43NmUxMzVjIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfZHVtcC9w Z19kdW1wLmMKQEAgLTQ1MDgsOCArNDUwOCw5IEBAIGdldFN1YnNjcmlwdGlvbnMoQXJjaGl2ZSAq Zm91dCkKIAludHVwcyA9IFBRbnR1cGxlcyhyZXMpOwogCiAJLyoKLQkgKiBHZXQgc3Vic2NyaXB0 aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGluIHRoZSBkdW1wIGFzCi0J ICogYWZ0ZXIgcmVzdG9yaW5nIHRoZSBkdW1wIHRoaXMgdmFsdWUgbWF5IG5vIGxvbmdlciBiZSBy ZWxldmFudC4KKwkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBz dWJza2lwbHNuIGFuZCBzdWJyZXRyeSBpbgorCSAqIHRoZSBkdW1wIGFzIGFmdGVyIHJlc3Rvcmlu ZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25nZXIgYmUKKwkgKiByZWxldmFudC4KIAkg Ki8KIAlpX3RhYmxlb2lkID0gUFFmbnVtYmVyKHJlcywgInRhYmxlb2lkIik7CiAJaV9vaWQgPSBQ UWZudW1iZXIocmVzLCAib2lkIik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaApp bmRleCAwMTZhZmJjLi5lYjc4YTMyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9u LmgKQEAgLTg4LDYgKzg4LDExIEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYxMDAsU3Vic2Ny aXB0aW9uUmVsYXRpb25JZCkgQktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJYm9vbAkJc3Vi ZGlzYWJsZW9uZXJyOwkvKiBUcnVlIGlmIGEgd29ya2VyIGVycm9yIHNob3VsZCBjYXVzZSB0aGUK IAkJCQkJCQkJCSAqIHN1YnNjcmlwdGlvbiB0byBiZSBkaXNhYmxlZCAqLwogCisJYm9vbAkJc3Vi cmV0cnkgQktJX0RFRkFVTFQoZik7CS8qIFRydWUgaWYgcHJldmlvdXMgY2hhbmdlIGZhaWxlZAor CQkJCQkJCQkJCQkgKiB0byBiZSBhcHBsaWVkIHdoaWxlIHRoZXJlIHdlcmUKKwkJCQkJCQkJCQkJ ICogYW55IGFjdGl2ZSBwYXJhbGxlbCBhcHBseQorCQkJCQkJCQkJCQkgKiB3b3JrZXJzICovCisK ICNpZmRlZiBDQVRBTE9HX1ZBUkxFTgkJCS8qIHZhcmlhYmxlLWxlbmd0aCBmaWVsZHMgc3RhcnQg aGVyZSAqLwogCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJsaXNoZXIgKi8KIAl0ZXh0 CQlzdWJjb25uaW5mbyBCS0lfRk9SQ0VfTk9UX05VTEw7CkBAIC0xMzEsNiArMTM2LDggQEAgdHlw ZWRlZiBzdHJ1Y3QgU3Vic2NyaXB0aW9uCiAJYm9vbAkJZGlzYWJsZW9uZXJyOwkvKiBJbmRpY2F0 ZXMgaWYgdGhlIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUKIAkJCQkJCQkJICogYXV0b21hdGljYWxs eSBkaXNhYmxlZCBpZiBhIHdvcmtlciBlcnJvcgogCQkJCQkJCQkgKiBvY2N1cnMgKi8KKwlib29s CQlyZXRyeTsJCQkvKiBJbmRpY2F0ZXMgaWYgcHJldmlvdXMgY2hhbmdlIGZhaWxlZCB0byBiZQor CQkJCQkJCQkgKiBhcHBsaWVkIHVzaW5nIGEgcGFyYWxsZWwgYXBwbHkgd29ya2VyICovCiAJY2hh cgkgICAqY29ubmluZm87CQkvKiBDb25uZWN0aW9uIHN0cmluZyB0byB0aGUgcHVibGlzaGVyICov CiAJY2hhcgkgICAqc2xvdG5hbWU7CQkvKiBOYW1lIG9mIHRoZSByZXBsaWNhdGlvbiBzbG90ICov CiAJY2hhcgkgICAqc3luY2NvbW1pdDsJCS8qIFN5bmNocm9ub3VzIGNvbW1pdCBzZXR0aW5nIGZv ciB3b3JrZXIgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKaW5k ZXggNDljNjY0Ni4uZTY0MTcyMyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24v d29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2lu dGVybmFsLmgKQEAgLTI4OSw2ICsyODksOCBAQCBleHRlcm4gdm9pZCBwYV9sb2NrX3RyYW5zYWN0 aW9uKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBleHRlcm4gdm9pZCBw YV91bmxvY2tfc3RyZWFtKFRyYW5zYWN0aW9uSWQgeGlkLCBMT0NLTU9ERSBsb2NrbW9kZSk7CiBl eHRlcm4gdm9pZCBwYV91bmxvY2tfdHJhbnNhY3Rpb24oVHJhbnNhY3Rpb25JZCB4aWQsIExPQ0tN T0RFIGxvY2ttb2RlKTsKIAorZXh0ZXJuIGJvb2wgcGFfaGF2ZV9hY3RpdmVfd29ya2VyKHZvaWQp OworCiAjZGVmaW5lIGlzUGFyYWxsZWxBcHBseVdvcmtlcih3b3JrZXIpICgod29ya2VyKS0+YXBw bHlfbGVhZGVyX3BpZCAhPSBJbnZhbGlkUGlkKQogCiBzdGF0aWMgaW5saW5lIGJvb2wKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCmluZGV4IDY1ZjQzZjAuLjY0YjJlZGIgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNV9zdHJlYW0ucGwKKysrIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbApAQCAtODcsOCArODcsMTYgQEAgc3ViIHRl c3Rfc3RyZWFtaW5nCiAJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVs dHMnKTsKIAogCSMgVGVzdCB0aGUgc3RyZWFtaW5nIGluIGJpbmFyeSBtb2RlCisJbXkgJG9sZHBp ZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgcGlk IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKTsKIAkkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCAo YmluYXJ5ID0gb24pIik7CisJJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9u IFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1p bmcnOyIKKwkgICkKKwkgIG9yIGRpZQorCSAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBh cHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CiAKIAkjIENoZWNr IHRoZSBzdWJzY3JpYmVyIGxvZyBmcm9tIG5vdyBvbi4KIAkkb2Zmc2V0ID0gLXMgJG5vZGVfc3Vi c2NyaWJlci0+bG9nZmlsZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz Ml9zdHJlYW1fcGFyYWxsZWxfY29uZmxpY3QucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzJfc3RyZWFtX3BhcmFsbGVsX2NvbmZsaWN0LnBsCmluZGV4IDEwZWZkMmQuLmYyYzM2NjkgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1fcGFyYWxsZWxfY29u ZmxpY3QucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbV9wYXJhbGxl bF9jb25mbGljdC5wbApAQCAtMjEsOSArMjEsOSBAQCAkbm9kZV9wdWJsaXNoZXItPnN0YXJ0Owog bXkgJG5vZGVfc3Vic2NyaWJlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vi c2NyaWJlcicpOwogJG5vZGVfc3Vic2NyaWJlci0+aW5pdDsKIAotIyBDaGVjayBpZiBhbnkgc3Ry ZWFtaW5nIGNodW5rcyBhcmUgYXBwbGllZCB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2Vy LiBXZQotIyBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzIGFib3V0IHRo YXQsIHNvIGJ1bXAgdXAgdGhlIGxvZwotIyB2ZXJib3NpdHkuCisjIENoZWNrIGlmIGFueSBzdHJl YW1pbmcgY2h1bmtzIGFyZSBhcHBsaWVkIHVzaW5nIHRoZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIu CisjIEFuZCBjaGVjayBpZiB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyIGZhaWxlZCB0byBzdGFy dC4gV2UgaGF2ZSB0byBsb29rIGZvcgorIyB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcyBhYm91dCB0 aGF0LCBzbyBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5LgogJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsICJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7 CiAKICRub2RlX3N1YnNjcmliZXItPnN0YXJ0OwpAQCAtMTQ2LDYgKzE0Niw1NiBAQCAkcmVzdWx0 ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3VsdCwgcXEoMTAwMDApLCAnZGF0YSByZXBs aWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgnKTsKIAorIyBDbGVhbiB1 cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIiKTsKKyRub2RlX3B1Ymxp c2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFVOSVFVRSBJTkRFWCBpZHhfdGFiIG9uIHRlc3Rf dGFiKGEpIik7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUZXN0IHJlLWFwcGx5IGEgZmFp bGVkIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgbGVhZGVyIGFwcGx5CisjIHdvcmtl ciBhbmQgYXBwbHkgc3Vic2VxdWVudCBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIHBh cmFsbGVsIGFwcGx5CisjIHdvcmtlciBhZnRlciB0aGlzIHJldHJ5IHN1Y2NlZWRzLgorIyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9u LgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQkVHSU47CitJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpOworSU5T RVJUIElOVE8gdGVzdF90YWIgdmFsdWVzKDEpOworQ09NTUlUO30pOworCisjIENoZWNrIGlmIHRo ZSBwYXJhbGxlbCBhcHBseSB3b3JrZXIgaXMgbm90IHN0YXJ0ZWQgYmVjYXVzZSB0aGUgYWJvdmUK KyMgdHJhbnNhY3Rpb24gZmFpbGVkIHRvIGJlIGFwcGxpZWQuCiskbm9kZV9zdWJzY3JpYmVyLT53 YWl0X2Zvcl9sb2coCisJcXIvREVCVUc6ICggW0EtWjAtOV0rOik/IHBhcmFsbGVsIGFwcGx5IHdv cmtlcnMgYXJlIG5vdCB1c2VkIGZvciByZXRyaWVzLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRo ZSB1bmlxdWUgaW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiIik7CisK KyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0 aGUgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIiKTsKK2lzKCRyZXN1bHQsIHFxKDUw MDEpLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgaW5kZXgn KTsKKworIyBBZnRlciBzdWNjZXNzZnVsbHkgcmV0cnlpbmcgdG8gYXBwbHkgYSBmYWlsZWQgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9uLCBhcHBseQorIyB0aGUgZm9sbG93aW5nIHN0cmVhbWluZyB0cmFu c2FjdGlvbiB1c2luZyB0aGUgcGFyYWxsZWwgYXBwbHkgd29ya2VyLgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDEwMDAwKSBzKGkpIik7CisKKyRub2RlX3N1YnNjcmli ZXItPndhaXRfZm9yX2xvZygKKwlxci9ERUJVRzogKCBbQS1aMC05XSs6KT8gZmluaXNoZWQgcHJv Y2Vzc2luZyB0aGUgdHJhbnNhY3Rpb24gZmluaXNoIGNvbW1hbmQvLAorCSRvZmZzZXQpOworCisk cmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxF Q1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYiIpOworaXMoJHJlc3VsdCwgcXEoMTAwMDEpLCAnZGF0 YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgdXNpbmcgdGhlIHBhcmFsbGVsIGFwcGx5IHdvcmtl cicpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5zdG9wOwog Ci0tIAoyLjcuMi53aW5kb3dzLjEKCg== --_006_OS0PR01MB571663F65904D00895AD159994109OS0PR01MB5716jpnp_--