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 1oNr5n-0005g8-Ig for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Aug 2022 07:34:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1oNr4n-00015P-Ke for pgsql-hackers@arkaria.postgresql.org; Tue, 16 Aug 2022 07:33:25 +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 1oNr4m-00011A-77 for pgsql-hackers@lists.postgresql.org; Tue, 16 Aug 2022 07:33:25 +0000 Received: from esa1.fujitsucc.c3s2.iphmx.com ([68.232.152.245]) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oNr4d-00078j-Ch for pgsql-hackers@lists.postgresql.org; Tue, 16 Aug 2022 07:33:23 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=fujitsu.com; i=@fujitsu.com; q=dns/txt; s=fj1; t=1660635196; x=1692171196; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=ZI3dHTUj4pNrZR82Qn/7p9gsbXQudNPM6hutTgWIYJw=; b=bTsSbmGF56fWqtZUkzFC7rtnvuMsYi2J+soiXQbsUJ+aBUAwbq2Yqz9j u9OQjrjcxcARvK4lV7a1od0FxXcOBJBeGblSA3PD138+wRPY5yCVyr1bW QzFFnSSD9ui1+Z59LUJPbudrgiC5YzAtUDBLk9FvSJcWitvTxSuiZjomN U8ly7ymnwZC2qdFCTjEDIyJC7BycGB58z3KGabv5aep3pMsf2RTamGIeK R4z22e1QlUi9L7/0v18DyGp3cq4vtTwX1Gfaeayy27aM73KpXxqm8ijHc nBA+qVAbPLc/FoHcGjZX5D5uRiuZ7xltCFsAp8DJ66/q8p8Gd1X2PX217 w==; X-IronPort-AV: E=McAfee;i="6400,9594,10440"; a="70991529" X-IronPort-AV: E=Sophos;i="5.93,240,1654527600"; d="scan'208,223";a="70991529" Received: from mail-tycjpn01lp2171.outbound.protection.outlook.com (HELO JPN01-TYC-obe.outbound.protection.outlook.com) ([104.47.23.171]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Aug 2022 16:33:10 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZUOWrtHbJKlW0RCAx2HAyQHZxF1Iy1gNnBMlKL0DsSr56npoOIlUgdkBCAOxpB/czgdqXNCYQmqpCn6aK+56uEj19lGxxPbVx/d+ypoDxesM87zd9EIYK37E2mKGpqTz/FjA+giE9ChZYCKf5usdV4kzLza1XlwIOmIGf4RpxUVABhdQarCh1EoYQe6xzT740qeVItjau3fWgAnM1wvSQwf+8GMc4aAtZnApxj3Htx3NIKuqcA1gDCzHSU1C0KV949Kdsp1ubv0LY0aaT24Ulf99nvEtwtLxwdMcA6a9lltsvKT01XdwJN34KhiAHSF2HNfqq4w0gIsZ4nXopHNRbQ== 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=BRlaaCJ4QS3rQQ5hBOJ3EPPGp4wmfdfMPW1aoCqlWHY=; b=STMeZb/XM0UkSQOM0NxbUhDgGxN9j2OFj0pmT3XGe+KEGar4z6x7LP3ma5ZWr/chPdD5uuwp4hzrQEQtt1bRKAx3/AX06XDjb5ZxH5BEr6JXH6rOHejQqSI6DtTmmXHQX548rIiDvSh6DJMzFOjSFx0bSsC3mdr7FAEELtl/TJQ75f2I9S/0iha/6paxiiFsjkJ02SxBf5FUBH347OW6faXyK1qu8CMjXKCQbNt6lGIzhfP8UYo5MtYVysnEtOAn4VKgsGCIUVsDRwj1yU/cZu+T0AlHOjx2oopTHS9xaKZxWP1DjHQsNphoG9FKyDZnFCy0n33ytXOPDYfbN5QrOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com (2603:1096:604:f1::8) by OSAPR01MB5139.jpnprd01.prod.outlook.com (2603:1096:604:67::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.10; Tue, 16 Aug 2022 07:33:04 +0000 Received: from OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::b7:3975:8c62:f5d1]) by OS3PR01MB6275.jpnprd01.prod.outlook.com ([fe80::b7:3975:8c62:f5d1%4]) with mapi id 15.20.5525.011; Tue, 16 Aug 2022 07:33:04 +0000 From: "wangw.fnst@fujitsu.com" To: Peter Smith CC: Amit Kapila , "houzj.fnst@fujitsu.com" , Dilip Kumar , Masahiko Sawada , "shiy.fnst@fujitsu.com" , PostgreSQL Hackers Subject: RE: Perform streaming logical transactions by background workers and parallel apply Thread-Topic: Perform streaming logical transactions by background workers and parallel apply Thread-Index: AQHYSXX4/KZEbPJKjUy7J1pJS8eGYazlvxQAgAkRYICACBI2gIABs50AgAA5UwCAApvIgIAFAGuAgAXc1wCAADa7gIALO/aAgAsRZICAB606AIAS9tXQgAAv04CAAWQLgIABHxKAgAA3o4CAAd7v0IAJQDLggAkyO+CAAiLMAIAC0M5ggARwU4CABP8UAIAAGBkAgAd/49CABPEVgIAJO7xggABuopCACQ1GAIAJSjQggAS+3MCABq/QgIABSJUAgAAOtoCAACmRgIAB78qAgAqLjwCADJX8gIAGVWBQ Date: Tue, 16 Aug 2022 07:33:04 +0000 Message-ID: References: In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: =?utf-8?B?TVNJUF9MYWJlbF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2Uw?= =?utf-8?B?NTBfQWN0aW9uSWQ9MTU0MzMzYzMtYzQ1Ny00YTljLTk0MjctYjNkZDQ3Y2Fm?= =?utf-8?B?OThjO01TSVBfTGFiZWxfYTcyOTVjYzEtZDI3OS00MmFjLWFiNGQtM2IwZjRm?= =?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?ZWNlMDUwX1NldERhdGU9MjAyMi0wOC0xNlQwNzoyOToxOFo7TVNJUF9MYWJl?= =?utf-8?B?bF9hNzI5NWNjMS1kMjc5LTQyYWMtYWI0ZC0zYjBmNGZlY2UwNTBfU2l0ZUlk?= =?utf-8?Q?=3Da19f121d-81e1-4858-a9d8-736e267fd4c7;?= authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=fujitsu.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a258fee0-51af-44c8-49be-08da7f598e69 x-ms-traffictypediagnostic: OSAPR01MB5139:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: igRc1lJEMm6NGRN+o5+Lx6trgumHw4A1XyYGJ500W+9z2JJJZ3I+/FEAAgLuN7LHAWomMfm5JkxHo4L2tZmkSKlinFfmyxESAlid9p3qICdXH0V6R6ySrJ739vbPJxjvT6dBmdzzrPgZ5OGoc0TmrS28rQvEdM6ySGHdQAGBfvh+4GxNFStn6SYhePgOn9x4vefCkesabHWTyZS4cFwdUV05YbJ92Bn8AnR8Fhsy2Vuw8nw5JhL8w2wR+i3z/yTjtdd/rBhPxoHOPqK5wvFgCUlN5pR1fKk++p1pmIgB0JvW7j5RSXvA1wWqdG031cWHtUWbnPX7/436O7N4qbE0x/15qTH7z0THd2Ff2+sRhrgZRM63d3QhGgn2OVnOcd7mXjzjW0GBwr/tDHl4nyj55SHXG0uqvoun33P7V1d//bHo0O8xOoRG3cjef/YnU0CRleZtup67xMwp7xskIFAmTrXRtGj4RdPE14MFRuZgePdGkvKtmdP6CpV/Q3nvOiWb/1GgWGHFYMB3CMOZqLxJpXj6ENMV4v711flfQepx6imO1sfakYouqPqMj3bgz1z06/Q8z8OtuxkmETWZSM46qJIZhJr+FrtBUcMLxIqk+0qvd9hN/eqTSY0dP3xFtPrU4BtPdE0uQMHycnhYHSNehq44JA0I77jdTWJF8AaPNlnk+KFXBTdlEfFqXFyw+4sQEbKR8o75OIq9jcI/UDICxwabkAFiXDf0vvP4dsWOlfv3bsLrVWLpwlg7+L32InSS/8DFm0tS+wmbf2OlDo8WX4Sq1wwG+blo40A37stweFCHnCEwBdVwTYJczKD3prK55qFDJKHhk22A/2L3d4Nk8Q== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS3PR01MB6275.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(366004)(136003)(376002)(39860400002)(396003)(346002)(85182001)(76116006)(2906002)(38100700002)(55016003)(186003)(83380400001)(122000001)(4326008)(33656002)(26005)(9686003)(41300700001)(86362001)(8936002)(82960400001)(5660300002)(54906003)(7696005)(6506007)(53546011)(52536014)(6916009)(8676002)(478600001)(66476007)(66556008)(1580799003)(316002)(64756008)(66446008)(66946007)(71200400001)(38070700005)(99936003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VzBLVTI1b0VxSFI5Lzh2WXFxSElPbmJwQXo4N2kvZUtuL2NPZ1dLNHpjWXJy?= =?utf-8?B?WTZuM09idjhmbjlZd3kyYnVtb3hONEc3R1pvWUwvY2hJSDBBem9UV0JMU0RF?= =?utf-8?B?Y3c1SzdYbnUyeEZGckczMDIrQ2JoYjNnQmxtV28ydGNQTFd3cDhkdk1xeEZY?= =?utf-8?B?ODJjaWVMVWVXeitxQjdPM0VrbGE0MGdNcGxzTmk1TndRTE9zQXNjMk56WWFi?= =?utf-8?B?VVowZlQ5V3l0VTFnWC9tQnFiM1YwNGYxN3dYNTMvQUhGdHdhbFJYdEVCbk00?= =?utf-8?B?bDZUY3lObmdsMWcrc3UyMVBtSU93VHB4dlRCTUFTMFVTWXQ1d1JoaHFnNDN2?= =?utf-8?B?d2QxYTZzZWtsUXlhaXh5b0hNWlovRTRETGpMQ2s1cVZQYWVJZGhwUlpRKzUr?= =?utf-8?B?QmQvV0NaZG5RaitabkRkaFZLNWVGMDlQNlZEbFlXdGJyWXZUL2JqaFJuYnhh?= =?utf-8?B?cFYzK0hOQXVWZVRObkEycnVjWU0xOUh2OGQ3QlhhL2Eyd0I0alhUVXNlUzUv?= =?utf-8?B?RU9KbWNMQUl4M3JjMldlYXV3a0F6T2RtRjlYclNsbit5bVZCamgyTXY5aU82?= =?utf-8?B?Y2FpT0xVQWs4MmRkcUxlSjVqa1BJSzNPT2dDSkJPck9oQnNWTTJCSXYzbnhw?= =?utf-8?B?bk5sK29qN0FMUnlKUVJSRDk1Szc0cURkWDIvZG16Y01mSUg4YXBGNFAxUy9E?= =?utf-8?B?RVkvM25yNlhNZ2U2cERSZlU2WGwwUSs3dkFmT1dhRmRmQnZqRW9kRGF4YXV2?= =?utf-8?B?OWtobmh0S1N4SWh1ZVZCaXprMTNYbXE5NUtpbTg0SmEvSERDaUhEZFhQTVZ6?= =?utf-8?B?Y3N1ZTVoS2JVcXkzemUxZGhmSC9PbTBoQVlEdG1TRERMdHNqSEtjQUhYcTE3?= =?utf-8?B?MTA4MlRFRHEvMERtY2NITDRPMkJCUktJQzhGZXBnY1RTQ3l1NytnMVV3Mks0?= =?utf-8?B?K0c5UXB4SENLYitzZDJBL05TcmJLWDVocFVEWjhqbUJxKzk3ZzhuQlg2MUlT?= =?utf-8?B?Q0JCbm54RzVtU3FCQmtnN0JWdThuekIxdjJUSXJaTDNNcEtManBvOVdpaHky?= =?utf-8?B?TElKTzNPTThzMmpaVFBPemVwTlFvaWJQSFpXVWQ5c0NFbFZLL0JtcXhZRGZq?= =?utf-8?B?ZWpYSzJNN1FOWUZuSXFCS0FnMk9GSTZRSUN6MUFVN01zS2R3MUtya0J2QnRk?= =?utf-8?B?ZmdMUXprV3k5QUZobGk1U25uTzQyK0dNL1hUVkJURkN1eHQwWDFMVTIwV05x?= =?utf-8?B?bm9ORWd4eEpCWi9jUnRoZUdsZC9JWGpLeHBHditWbEY5d3VjbC9lWlAvSVVW?= =?utf-8?B?M0pOTFdGTGsxQTlVeWlYR3VvMDI5VTBiMGM1UnY0S0lvalVPdmVDNXQwazB3?= =?utf-8?B?a1h6d0J3QkJhcjNPUUZKZHgvekJtVUI3QVFmT21jODJJOWJaY3lCTFlVK3pn?= =?utf-8?B?TGwwUmhNa0tLMlcvRks5ZFZySDc3WGpFaGszL2I1dk1uL3ZpeGxES2xGdlB6?= =?utf-8?B?QmI5Z3JLN1oxWlA4WDVDSXBWbjYzNWc3Q0Q5VCtVUUxzeUhxVUd5SW1OTGtn?= =?utf-8?B?d08zRjBpV2YxRXhjZTdxWS9FbElWRUw4UW5wZE5STStUYWw2eHdFOERIVmMw?= =?utf-8?B?WDR1alRSRE8yTlFoYk4vbEhrVWVaYWl6UitqTEcrL1VJSXIrTHVkbDBkbzBo?= =?utf-8?B?MjVmR1dpZXRYZVNtYk00TXdHMy83UVArVXc3NDRBMFJ5RTdoUzFmK0hGNnh2?= =?utf-8?B?a0wzSVM0UHVTOFlzdDNPa1NNN245TkJJSnYwNzNXb0VSN2o3aC9TbkNjWDdk?= =?utf-8?B?M3cyaTc5ZjhtR1JWditFYThvQzVRcnRDejYwTUNReXV3N2ZSeFFWejFwem4w?= =?utf-8?B?Z1FMMVg5UHdLWmdDVHFORlkwMHNBRzZNTkU1eEVWSTh6WW5XWTZPcm85K1NE?= =?utf-8?B?Qy9JQngyblFyRzl2YUplUUdHZ0NjNUdyK0o2T0dodDFDY1dkc0paaU1SRGhk?= =?utf-8?B?QkQza2s3Sm9tQXlFV3h3LzhzMFkzSm9rVndnNEJONW5mTTRxc3pJU1d3bGwr?= =?utf-8?B?dUtVWnU4T3AxUnkwU2lXUGtFYzdGWXM4NGpTclJobjhPSjVOWWV6ZGptSXlK?= =?utf-8?Q?p4FCw2vmzTedAqxkaNMjgh05Q?= Content-Type: multipart/mixed; boundary="_006_OS3PR01MB6275739E73E8BEC5D13FB6739E6B9OS3PR01MB6275jpnp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: =?utf-8?B?SjR4NHh2Nmc4M1MyeTZENTlmVHNkSnNldkFtcHJVem1ONU1na1ZXYlY5UmN6?= =?utf-8?B?OERob28yRFBKSWMveWxyNHgxWExYbEdQSXk4Uk5qeC9NT3JncDdkU2xIc1lV?= =?utf-8?B?cHp3di9oVmpTQmxEWVlybUJhb0hJdnVJZHFZaVkrMHUzSnU2Q3IrVHlYY3JP?= =?utf-8?B?a21tdE52UVRkYytrSHJicnVUZ0crdlBwZE1qcitSekttdXN1OGt1WG0rSEtL?= =?utf-8?B?TzZhZUJrSDdxQ3hHMVBtRy9NUm9HWnFFdkYzcm5KQlhlTlh2ZzdleWNYTWRZ?= =?utf-8?B?dm5lMHgwMnFUMmJVSFlRVXdPQlJQT3BWQ2RDY1JIdy83amwwRDBoOUFLSzFO?= =?utf-8?B?M05NT2tPUDM1dlRiSWJiYmhWNVFRcW1FeWVuMkZiUTQzMWxScEw0VnQwTjF5?= =?utf-8?B?ZlFtL2lPd1JJQWJFM3Iwa0dYYWVWVTRVemxSZ2cyaFFEaHVKcThLNHNSd1Ax?= =?utf-8?B?bnNuV0FrM3dTUGRYYXdZTkJFb3lsV2JGQTFEa0RBdkFXWFIrdzFlMEsraGFH?= =?utf-8?B?cGZSTVYyRUh1dUwxTVI1VS9Na0hXN0N0S0Naemh3ZjJCZjh0R05Jdm5TTFE5?= =?utf-8?B?VWo4bzdmUnoyQlhEUDMzSUFOS015d3pZeTFNeGp0ZTdnRDFJZnFFYlpNalpM?= =?utf-8?B?NnExWm1PQnQwSjBNWFRwYjA0U3pxZXVDNEpLZGIzbjFWRDJHc1hDSHpDRTBj?= =?utf-8?B?NzJHYnVnRk9OTFZBdDBmb0FaNFZvbjVhZFFnOGVQNkUxVC96TFNGc0xnWkRt?= =?utf-8?B?dG9qd25JOHIxNDZFODIxekRQbC9vNlNnWDhqN1BvRGF2NHM4K0VOaWhlZnhK?= =?utf-8?B?dW1pU2NEUHE5VE16WTM0MW96d1hpQVBnZHNnL3c0ODhqMDhtYW1qV3JCdSs2?= =?utf-8?B?NllWN09BNDlCSTk1UkdmOE14VTJrNHEyYUJ6UXg2TUJEVElBdjdOaE13UG1E?= =?utf-8?B?dUxBbEdXT1JSQmhOeEhSUkdYMlVRLzd0NkROcmI4QVY4OHc3bDgzNDNWYmNt?= =?utf-8?B?SkJuZFRIWkxrczhFS3RTVTJBM3VhM1JLQk5SZEVvUmNadFl6bElCd2dlSXp6?= =?utf-8?B?YzJad2lNMEtnSEg4U2szUUdwT3AwcndPZVM0QWlwZURIcDJjVXVlYlpsT2Va?= =?utf-8?B?VSsrbFRkSWw0S2wrS0Z5ZEhKTldOYXNPekZuT1JuSlp2dUE0UWlXZm1pMUN5?= =?utf-8?B?RUkxYWVFNTRVeHFZR3pIQ1B4ZXNZZk1JdDhFczRhQk1aaVEwUlhuOVNTemY0?= =?utf-8?B?Mk1iNE5TN1dqajRDWmdVNDFzcXJ5R3RKRzM5T3VjQ1FxT2M1aWtDc01YdWpn?= =?utf-8?Q?J+1qCfmK00kcM=3D?= X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OS3PR01MB6275.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a258fee0-51af-44c8-49be-08da7f598e69 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Aug 2022 07:33:04.4272 (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: QUqylZ3pKz06w6OMaaNbIK5PpcUNYesMu2EtiY9RseSGExeja6KyBwxBcuqZWIRe1MjtJVl+IJSp/OXJ6dK6wA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OSAPR01MB5139 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_006_OS3PR01MB6275739E73E8BEC5D13FB6739E6B9OS3PR01MB6275jpnp_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 T24gRnJpLCBBdWd1c3QgMTIsIDIwMjIgMTI6NDYgUE0gUGV0ZXIgU21pdGggPHNtaXRocGIyMjUw QGdtYWlsLmNvbT4gd3JvdGU6DQo+IEhlcmUgYXJlIHNvbWUgcmV2aWV3IGNvbW1lbnRzIGZvciB2 MjAtMDAwMzoNCj4gDQo+IChTb3JyeSAtIHRoZSByZXZpZXdzIGFyZSB0aW1lIGNvbnN1bWluZywg c28gSSBhbSBsYWdnaW5nIHNsaWdodGx5DQo+IGJlaGluZCB0aGUgbGF0ZXN0IHBvc3RlZCB2ZXJz aW9uKQ0KDQpUaGFua3MgZm9yIHlvdXIgY29tbWVudHMuDQoNCj4gMS4gPEdlbmVyYWw+DQo+IA0K PiAxYS4NCj4gVGhlcmUgYXJlIGEgZmV3IGNvbW1lbnQgbW9kaWZpY2F0aW9ucyBpbiB0aGlzIHBh dGNoIChlLmcuIGNoYW5naW5nDQo+IEZST00gImluIGFuIGFwcGx5IGJhY2tncm91bmQgd29ya2Vy IiBUTyAidXNpbmcgYW4gYXBwbHkgYmFja2dyb3VuZA0KPiB3b3JrZXIiKS4gZS5nLiBJIG5vdGlj ZWQgbG90cyBvZiB0aGVzZSBpbiB3b3JrZXIuYyBidXQgdGhleSBtaWdodCBiZQ0KPiBpbiBvdGhl ciBmaWxlcyB0b28uDQo+IA0KPiBBbHRob3VnaCB0aGVzZSBhcmUgZ29vZCBjaGFuZ2VzLCB0aGVz ZSBhcmUganVzdCB0d2Vha3MgdG8gbmV3IGNvbW1lbnRzDQo+IGludHJvZHVjZWQgYnkgcGF0Y2gg MDAwMSwgc28gSU1PIHN1Y2ggY2hhbmdlcyBiZWxvbmcgaW4gdGhhdCBwYXRjaCwNCj4gbm90IGlu IHRoaXMgb25lLg0KPiANCj4gMWIuDQo+IEFjdHVhbGx5LCB0aGVyZSBhcmUgc3RpbGwgc29tZSBj b21tZW50cyBzYXlzICJieSBhbiBhcHBseSBiYWNrZ3JvdW5kDQo+IHdvcmtlci8vLyIgYW5kIHNv bWUgc2F5aW5nICJ1c2luZyBhbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4uLiIgYW5kDQo+IHNv bWUgc2F5aW5nICJpbiB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuLi4iLiBNYXliZSB0aGV5 IGFyZSBhbGwNCj4gT0ssIGJ1dCBpdCB3aWxsIGJlIGJldHRlciBpZiBhbGwgc3VjaCBjYW4gYmUg c2VhcmNoZWQgYW5kIG1hZGUgdG8gaGF2ZQ0KPiBjb25zaXN0ZW50IHdvcmRpbmcNCg0KSW1wcm92 ZWQuDQoNCj4gMi4gQ29tbWl0IG1lc3NhZ2UNCj4gDQo+IDJhLg0KPiANCj4gV2l0aG91dCB0aGVz ZSByZXN0cmljdGlvbnMsIHRoZSBmb2xsb3dpbmcgc2NlbmFyaW8gbWF5IG9jY3VyOg0KPiBUaGUg YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgbG9jayBhIHJvdyB3aGVuIHByb2Nlc3NpbmcgYSBzdHJl YW1pbmcNCj4gdHJhbnNhY3Rpb24sDQo+IGFmdGVyIHRoYXQgdGhlIG1haW4gYXBwbHkgd29ya2Vy IHRyaWVzIHRvIGxvY2sgdGhlIHNhbWUgcm93IHdoZW4gcHJvY2Vzc2luZw0KPiBhbm90aGVyIHRy YW5zYWN0aW9uLiBBdCB0aGlzIHRpbWUsIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3YWl0cyBmb3Ig dGhlDQo+IHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBjb21wbGV0ZSBhbmQgdGhlIGxvY2sgdG8g YmUgcmVsZWFzZWQsIGl0IHdvbid0IHNlbmQNCj4gc3Vic2VxdWVudCBkYXRhIG9mIHRoZSBzdHJl YW1pbmcgdHJhbnNhY3Rpb24gdG8gdGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VyOw0KPiB0aGUg YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgd2FpdHMgdG8gcmVjZWl2ZSB0aGUgcmVzdCBvZiBzdHJl YW1pbmcgdHJhbnNhY3Rpb24NCj4gYW5kIGNhbid0IGZpbmlzaCB0aGlzIHRyYW5zYWN0aW9uLiBU aGVuIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3aWxsIHdhaXQNCj4gaW5kZWZpbml0ZWx5Lg0KPiAN Cj4gImJhY2tncm91bmQgd29ya2VyIGxvY2sgYSByb3ciIC0+ICJiYWNrZ3JvdW5kIHdvcmtlciBs b2NrcyBhIHJvdyINCj4gDQo+ICJUaGVuIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3aWxsIHdhaXQg aW5kZWZpbml0ZWx5LiIgLT4gcmVhbGx5LCB5b3UNCj4gYWxyZWFkeSBzYWlkIHRoZSBtYWluIGFw cGx5IHdvcmtlciBpcyB3YWl0aW5nLCBzbyBJIHRoaW5rIHRoaXMNCj4gc2VudGVuY2Ugb25seSBu ZWVkcyB0byBzYXk6ICJOb3cgYSBkZWFkbG9jayBoYXMgb2NjdXJyZWQsIHNvIGJvdGgNCj4gd29y a2VycyB3aWxsIHdhaXQgaW5kZWZpbml0ZWx5LiINCj4gDQo+IDJiLg0KPiANCj4gVGV4dCBmcmFn bWVudHMgYXJlIGFsbCBjb21tb24gYmV0d2VlbjoNCj4gDQo+IGkuICAgVGhpcyBjb21taXQgbWVz c2FnZQ0KPiBpaS4gIFRleHQgaW4gcGdkb2NzIENSRUFURSBTVUJTQ1JJUFRJT04NCj4gaWlpLiBG dW5jdGlvbiBjb21tZW50IGZvciAnbG9naWNhbHJlcF9yZWxfbWFya19wYXJhbGxlbF9hcHBseScg aW4gcmVsYXRpb24uYw0KPiANCj4gQWZ0ZXIgYWRkcmVzc2luZyBvdGhlciByZXZpZXcgY29tbWVu dHMgcGxlYXNlIG1ha2Ugc3VyZSBhbGwgdGhvc2UgMw0KPiBwYXJ0cyBhcmUgd29yZGVkIHNhbWUu DQoNCkltcHJvdmVkLg0KDQo+IDMuIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlv bi5zZ21sDQo+IA0KPiArICAgICAgICAgIFRoZXJlIGFyZSB0d28gcmVxdWlyZW1lbnRzIGZvciB1 c2luZyA8bGl0ZXJhbD5wYXJhbGxlbDwvbGl0ZXJhbD4NCj4gKyAgICAgICAgICBtb2RlOiAxKSB0 aGUgdW5pcXVlIGNvbHVtbiBpbiB0aGUgdGFibGUgb24gdGhlIHN1YnNjcmliZXItc2lkZSBzaG91 bGQNCj4gKyAgICAgICAgICBhbHNvIGJlIHRoZSB1bmlxdWUgY29sdW1uIG9uIHRoZSBwdWJsaXNo ZXItc2lkZTsgMikgdGhlcmUgY2Fubm90IGJlDQo+ICsgICAgICAgICAgYW55IG5vbi1pbW11dGFi bGUgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZSByZXBsaWNhdGVkDQo+ICsg ICAgICAgICAgdGFibGUuDQo+IA0KPiAzYS4NCj4gSSBhbSBub3Qgc3VyZSDigJMgaXMgInJlcXVp cmVtZW50cyIgdGhlIGNvcnJlY3Qgd29yZCBoZXJlLCBvciBtYXliZSBpdA0KPiBzaG91bGQgYmUg InByZXJlcXVpc2l0ZXMiLg0KPiANCj4gM2IuDQo+IElzIGl0IGNvcnJlY3QgdG8gc2F5ICJzaG91 bGQgYWxzbyBiZSIsIG9yIHNob3VsZCB0aGF0IHNheSAibXVzdCBhbHNvIGJlIj8NCg0KSW1wcm92 ZWQuDQoNCj4gNC4gc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd29ya2Vy LmMgLQ0KPiBhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjaw0KPiANCj4gKyAvKg0KPiArICog U2tpcCBjaGVjayBpZiBub3QgdXNpbmcgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzLg0KPiArICoN Cj4gKyAqIElmIGFueSB3b3JrZXIgaXMgaGFuZGxpbmcgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlv biwgdGhpcyBjaGVjayBuZWVkcyB0bw0KPiArICogYmUgcGVyZm9ybWVkIG5vdCBvbmx5IGluIHRo ZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgYnV0IGFsc28gaW4gdGhlDQo+ICsgKiBtYWluIGFw cGx5IHdvcmtlci4gVGhpcyBpcyBiZWNhdXNlIHdpdGhvdXQgdGhlc2UgcmVzdHJpY3Rpb25zLCBt YWluDQo+ICsgKiBhcHBseSB3b3JrZXIgbWF5IGJsb2NrIGFwcGx5IGJhY2tncm91bmQgd29ya2Vy LCB3aGljaCB3aWxsIGNhdXNlDQo+ICsgKiBpbmZpbml0ZSB3YWl0cy4NCj4gKyAqLw0KPiArIGlm ICghYW1fYXBwbHlfYmd3b3JrZXIoKSAmJg0KPiArIChsaXN0X2xlbmd0aChBcHBseUJnd29ya2Vy c0ZyZWVMaXN0KSA9PSBsaXN0X2xlbmd0aChBcHBseUJnd29ya2Vyc0xpc3QpKSkNCj4gKyByZXR1 cm47DQo+IA0KPiBJIHN0cnVnZ2xlZCBhIGJpdCB0byByZWNvbmNpbGUgdGhlIGNvbW1lbnQgd2l0 aCB0aGUgY29uZGl0aW9uLiBJcyB0aGUNCj4gIWFtX2FwcGx5X2Jnd29ya2VyKCkgcGFydCBvZiB0 aGlzIGV2ZW4gbmVlZGVkIOKAkyBpc24ndCB0aGUNCj4gbGlzdF9sZW5ndGgoKSBjaGVjayBlbm91 Z2g/DQoNCldlIG5lZWQgdG8gY2hlY2sgdGhpcyBmb3IgYXBwbHkgYmd3b3JrZXIuIChCb3RoIGxp c3RzIGFyZSAiTklMIiBpbiBhcHBseQ0KYmd3b3JrZXIuKQ0KDQo+IDUuDQo+IA0KPiArIC8qIFdl IGFyZSBpbiBlcnJvciBtb2RlIGFuZCBzaG91bGQgZ2l2ZSB1c2VyIGNvcnJlY3QgZXJyb3IuICov DQo+IA0KPiBJIHN0aWxsIFsxLCAjMy40YV0gZG9uJ3Qgc2VlIHRoZSB2YWx1ZSBpbiBzYXlpbmcg InNob3VsZCBnaXZlIGNvcnJlY3QNCj4gZXJyb3IiIChlLmcuIHdoYXQncyB0aGUgYWx0ZXJuYXRp dmU/KS4NCj4gDQo+IE1heWJlIGluc3RlYWQgb2YgdGhhdCBjb21tZW50IGl0IGNhbiBqdXN0IHNh eToNCj4gcmVsLT5wYXJhbGxlbF9hcHBseSA9IFBBUkFMTEVMX0FQUExZX1VOU0FGRTsNCg0KSSBj aGFuZ2VkIGlmLXN0YXRlbWVudCB0byByZXBvcnQgdGhlIGVycm9yOg0KSWYgJ3BhcmFsbGVsX2Fw cGx5JyBpc24ndCAnUEFSQUxMRUxfQVBQTFlfU0FGRScsIHRoZW4gcmVwb3J0IHRoZSBlcnJvci4N Cg0KPiA2LiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgLSBSZWxhdGlv bkdldFVuaXF1ZUtleUJpdG1hcA0KPiANCj4gKyAvKiBBZGQgcmVmZXJlbmNlZCBhdHRyaWJ1dGVz IHRvIGlkaW5kZXhhdHRycyAqLw0KPiArIGZvciAoaSA9IDA7IGkgPCBpbmRleFJlbC0+cmRfaW5k ZXgtPmluZG5hdHRzOyBpKyspDQo+ICsgew0KPiArIGludCBhdHRybnVtID0gaW5kZXhSZWwtPnJk X2luZGV4LT5pbmRrZXkudmFsdWVzW2ldOw0KPiArDQo+ICsgLyoNCj4gKyAqIFdlIGRvbid0IGlu Y2x1ZGUgbm9uLWtleSBjb2x1bW5zIGludG8gaWRpbmRleGF0dHJzDQo+ICsgKiBiaXRtYXBzLiBT ZWUgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAuDQo+ICsgKi8NCj4gKyBpZiAoYXR0cm51bSAh PSAwKQ0KPiArIHsNCj4gKyBpZiAoaSA8IGluZGV4UmVsLT5yZF9pbmRleC0+aW5kbmtleWF0dHMg JiYNCj4gKyAhYm1zX2lzX21lbWJlcihhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJp YnV0ZU51bWJlciwgYXR0dW5pcXVlKSkNCj4gKyBhdHR1bmlxdWUgPSBibXNfYWRkX21lbWJlcihh dHR1bmlxdWUsDQo+ICsgICAgYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVO dW1iZXIpOw0KPiArIH0NCj4gKyB9DQo+IA0KPiBUaGVyZSBhcmUgMnggY29tbWVudHMgaW4gdGhh dCBjb2RlIHRoYXQgYXJlIHJlZmVycmluZyB0bw0KPiAnaWRpbmRleGF0dHJzJyBidXQgSSB0aGlu ayBpdCBpcyBhIGN1dC9wYXN0ZSBwcm9ibGVtIGJlY2F1c2UgdGhhdA0KPiB2YXJpYWJsZSBuYW1l IGRvZXMgbm90IGV2ZW4gZXhpc3QgaW4gdGhpcyBjb3BpZWQgZnVuY3Rpb24uDQoNCkZpeGVkIHRo ZSBjb21tZW50cy4NCg0KPiA3LiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0 aW9uLmMgLQ0KPiBsb2dpY2FscmVwX3JlbF9tYXJrX3BhcmFsbGVsX2FwcGx5DQo+IA0KPiArIC8q IEluaXRpYWxpemUgdGhlIGZsYWcuICovDQo+ICsgZW50cnktPnBhcmFsbGVsX2FwcGx5ID0gUEFS QUxMRUxfQVBQTFlfU0FGRTsNCj4gDQo+IEkgaGF2ZSB1bnN1Y2Nlc3NmdWxseSByZXBlYXRlZCB0 aGUgc2FtZSByZXZpZXcgY29tbWVudCBzZXZlcmFsIHRpbWVzDQo+IFsxICMzLjhdIHN1Z2dlc3Rp bmcgdGhhdCB0aGlzIGZsYWcgc2hvdWxkIG5vdCBiZSBpbml0aWFsaXplZCB0byBTQUZFLg0KPiBJ TU8gdGhlIHN0YXRlIHNob3VsZCByZW1haW4gYXMgVU5LTk9XTiB1bnRpbCB5b3UgYXJlIGVpdGhl ciBzdXJlIGl0IGlzDQo+IFNBRkUsIG9yIHN1cmUgaXQgaXMgVU5TQUZFLiBBbnl3YXksIEknbGwg Z2l2ZSB1cCBvbiB0aGlzIHBvaW50IG5vdzsNCj4gbGV0J3Mgc2VlIHdoYXQgb3RoZXIgcGVvcGxl IHRoaW5rLg0KDQpPa2F5LCBJIHdpbGwgZm9sbG93IHRoZSByZWxldmFudCBjb21tZW50cyBsYXRl ci4NCg0KPiA4LiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaA0KPiAN Cj4gKy8qDQo+ICsgKiBTdGF0ZXMgdG8gZGV0ZXJtaW5lIGlmIGNoYW5nZXMgb24gb25lIHJlbGF0 aW9uIGNhbiBiZSBhcHBsaWVkIHVzaW5nIGFuDQo+ICsgKiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl ci4NCj4gKyAqLw0KPiArdHlwZWRlZiBlbnVtIFBhcmFsbGVsQXBwbHlTYWZldHkNCj4gK3sNCj4g KyBQQVJBTExFTF9BUFBMWV9VTktOT1dOID0gMCwgLyogdW5rbm93biAgKi8NCj4gKyBQQVJBTExF TF9BUFBMWV9TQUZFLCAvKiBDYW4gYXBwbHkgY2hhbmdlcyB1c2luZyBhbiBhcHBseSBiYWNrZ3Jv dW5kDQo+ICsgICAgd29ya2VyICovDQo+ICsgUEFSQUxMRUxfQVBQTFlfVU5TQUZFIC8qIENhbiBu b3QgYXBwbHkgY2hhbmdlcyB1c2luZyBhbiBhcHBseQ0KPiArICAgIGJhY2tncm91bmQgd29ya2Vy ICovDQo+ICt9IFBhcmFsbGVsQXBwbHlTYWZldHk7DQo+ICsNCj4gDQo+IEkgdGhpbmsgdGhlIHZh bHVlcyBhcmUgc2VsZi1leHBsYW5hdG9yeSBzbyB0aGUgY29tbWVudHMgZm9yIGV2ZXJ5DQo+IHZh bHVlIGFkZCBub3RoaW5nIGhlcmUsIHBhcnRpY3VsYXJseSBzaW5jZSB0aGUgZW51bSBpdHNlbGYg aGFzIGENCj4gY29tbWVudCBzYXlpbmcgdGhlIHNhbWUgdGhpbmcuIEknbSBub3Qgc3VyZSBpZiB5 b3UgYWNjaWRlbnRhbGx5IG1pc3NlZA0KPiBteSBwcmV2aW91cyBjb21tZW50IFsxLCAjMy4xMmJd IGFib3V0IHRoaXMsIG9yIGp1c3QgZGlkIG5vdCBhZ3JlZSB3aXRoDQo+IGl0Lg0KDQpDaGFuZ2Vk Lg0KDQo+IDkuIC4uLi9zdWJzY3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsDQo+IA0KPiArIyAic3Ry ZWFtaW5nID0gcGFyYWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlv bnMsIHNvIGNoYW5nZQ0KPiArIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZnVsdCBleHByZXNzaW9u IG9mIGNvbHVtbiAiYyIuDQo+ICskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoDQo+ICsgJ3Bv c3RncmVzJywgcXF7DQo+ICtBTFRFUiBUQUJMRSB0ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYyBTRVQg REVGQVVMVA0KPiB0b190aW1lc3RhbXAoMTI4NDM1MjMyMyk7DQo+ICtBTFRFUiBTVUJTQ1JJUFRJ T04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGJpbmFyeSA9IG9mZik7DQo+ICt9 KTsNCj4gDQo+IDlhLg0KPiB0eXBvICJkZWZ1bHQiDQo+IA0KPiA5Yi4NCj4gVGhlIHByb2JsZW0g d2l0aCB0b190aW1lc3RhbXAoMTI4NDM1MjMyMykgaXMgdGhhdCBpdCBsb29rcyBsaWtlIGl0DQo+ IG11c3QgYmUgc29tZSBzcGVjaWFsIHZhbHVlLCBidXQgaW4gZmFjdCBBRkFJSyB5b3UgZG9uJ3Qg Y2FyZSBhdCBhbGwNCj4gd2hhdCB2YWx1ZSB0aW1lc3RhbXAgdGhpcyBpcy4gSSB0aGluayBpdCB3 b3VsZCBiZSBiZXR0ZXIgaGVyZSB0byBqdXN0DQo+IHVzZSB0b190aW1lc3RhbXAoMCkgb3IgdG9f dGltZXN0YW1wKDk5OSkgb3Igc2ltaWxhciBzbyB0aGUgbnVtYmVyIGlzDQo+IG9idmlvdXNseSBu b3Qgc29tZXRoaW5nIG9mIGltcG9ydGFuY2UuDQo+IA0KPiA9PT09PT0NCj4gDQo+IDEwLiAuLi4v c3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbS5wbA0KPiANCj4gKyMgInN0cmVhbWluZyA9IHBhcmFs bGVsIiBkb2VzIG5vdCBzdXBwb3J0IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLCBzbyBjaGFuZ2UN Cj4gKyMgdGhlIGZ1bmN0aW9uIGluIHRoZSBkZWZ1bHQgZXhwcmVzc2lvbiBvZiBjb2x1bW4gImMi Lg0KPiArJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKA0KPiArICdwb3N0Z3JlcycsIHFxew0K PiArQUxURVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQNCj4gdG9f dGltZXN0YW1wKDEyODQzNTIzMjMpOw0KPiArQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VU KHN0cmVhbWluZyA9IHBhcmFsbGVsKTsNCj4gK30pOw0KPiANCj4gMTBhLiBEaXR0byA5YS4NCj4g MTBiLiBEaXR0byA5Yi4NCj4gDQo+ID09PT09PQ0KPiANCj4gMTEuIC4uLi9zdWJzY3JpcHRpb24v dC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbA0KPiANCj4gKyMgInN0cmVhbWluZyA9IHBhcmFsbGVs IiBkb2VzIG5vdCBzdXBwb3J0IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLCBzbyBjaGFuZ2UNCj4g KyMgdGhlIGZ1bmN0aW9uIGluIHRoZSBkZWZ1bHQgZXhwcmVzc2lvbiBvZiBjb2x1bW4gImMiLg0K PiArJG5vZGVfQi0+c2FmZV9wc3FsKA0KPiArICdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0 X3RhYiBBTFRFUiBDT0xVTU4gYyBTRVQgREVGQVVMVA0KPiB0b190aW1lc3RhbXAoMTI4NDM1MjMy Myk7Iik7DQo+ICskbm9kZV9DLT5zYWZlX3BzcWwoDQo+ICsgJ3Bvc3RncmVzJywgIkFMVEVSIFRB QkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBjIFNFVCBERUZBVUxUDQo+IHRvX3RpbWVzdGFtcCgx Mjg0MzUyMzIzKTsiKTsNCj4gKw0KPiANCj4gMTFhLiBEaXR0byA5YS4NCj4gMTFiLiBEaXR0byA5 Yi4NCj4gDQo+ID09PT09PQ0KPiANCj4gMTIuIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhh c2Vfc3RyZWFtLnBsDQo+IA0KPiArIyAic3RyZWFtaW5nID0gcGFyYWxsZWwiIGRvZXMgbm90IHN1 cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMsIHNvIGNoYW5nZQ0KPiArIyB0aGUgZnVuY3Rp b24gaW4gdGhlIGRlZnVsdCBleHByZXNzaW9uIG9mIGNvbHVtbiAiYyIuDQo+ICskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoDQo+ICsgJ3Bvc3RncmVzJywgcXF7DQo+ICtBTFRFUiBUQUJMRSB0 ZXN0X3RhYiBBTFRFUiBDT0xVTU4gYyBTRVQgREVGQVVMVA0KPiB0b190aW1lc3RhbXAoMTI4NDM1 MjMyMyk7DQo+ICtBTFRFUiBTVUJTQ1JJUFRJT04gdGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFy YWxsZWwpOw0KPiArfSk7DQo+IA0KPiAxMmEuIERpdHRvIDlhLg0KPiAxMmIuIERpdHRvIDliLg0K DQpJbXByb3ZlZC4NCg0KPiAxMy4gLi4uL3N1YnNjcmlwdGlvbi90LzAzMl9zdHJlYW1pbmdfYXBw bHkucGwNCj4gDQo+ICsjIERyb3AgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlciwgbm93 IGl0IHdvcmtzLg0KPiArJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsDQo+ ICsgIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4gYiBEUk9QIERFRkFVTFQiKTsN Cj4gDQo+IE1heWJlIGZvciB0aGVzZSB0ZXN0cyBsaWtlIHRoaXMgaXQgd291bGQgYmUgYmV0dGVy IHRvIHRlc3QgaWYgaXQgd29ya3MNCj4gT0sgdXNpbmcgYW4gaW1tdXRhYmxlIERFRkFVTFQgZnVu Y3Rpb24gaW5zdGVhZCBvZiBqdXN0IGNvbXBsZXRlbHkNCj4gcmVtb3ZpbmcgdGhlIGJhZCBmdW5j dGlvbiB0byBtYWtlIGl0IHdvcmsuDQo+IA0KPiBJIHRoaW5rIG1heWJlIHRoZSBzYW1lIHdhcyBk b25lIGZvciBUUklHR0VSIHRlc3RzLiBUaGVyZSB3YXMgYSB0ZXN0DQo+IGZvciBhIHRyaWdnZXIg d2l0aCBhIGJhZCBmdW5jdGlvbiwgYW5kIHRoZW4gdGhlIHRyaWdnZXIgd2FzIHJlbW92ZWQuDQo+ IFdoYXQgYWJvdXQgaW5jbHVkaW5nIGEgdGVzdCBmb3IgdGhlIHRyaWdnZXIgd2l0aCBhIGdvb2Qg ZnVuY3Rpb24/DQoNCkltcHJvdmVkLg0KDQpBdHRhY2ggdGhlIG5ldyBwYXRjaGVzLg0KDQpSZWdh cmRzLA0KV2FuZyB3ZWkNCg== --_006_OS3PR01MB6275739E73E8BEC5D13FB6739E6B9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v22-0001-Perform-streaming-logical-transactions-by-backgr.patch" Content-Description: v22-0001-Perform-streaming-logical-transactions-by-backgr.patch Content-Disposition: attachment; filename="v22-0001-Perform-streaming-logical-transactions-by-backgr.patch"; size=117065; creation-date="Tue, 16 Aug 2022 07:29:00 GMT"; modification-date="Tue, 16 Aug 2022 07:33:00 GMT" Content-Transfer-Encoding: base64 RnJvbSA5YWE5YmQyOWJiNzU0YmFkMTUxMDFiMTJjYTc1NDFhNDk0ODY1M2FlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMjAgQXByIDIwMjIgMTY6NDU6MDcgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyMiAxLzVdIFBlcmZvcm0gc3RyZWFtaW5nIGxvZ2ljYWwgdHJhbnNhY3Rpb25zIGJ5IGJhY2tn cm91bmQKIHdvcmtlcnMKCkN1cnJlbnRseSwgZm9yIGxhcmdlIHRyYW5zYWN0aW9ucywgdGhlIHB1 Ymxpc2hlciBzZW5kcyB0aGUgZGF0YSBpbiBtdWx0aXBsZQpzdHJlYW1zIChjaGFuZ2VzIGRpdmlk ZWQgaW50byBjaHVua3MgZGVwZW5kaW5nIHVwb24gbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSks CmFuZCB0aGVuIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUsIHRoZSBhcHBseSB3b3JrZXIgd3JpdGVz IHRoZSBjaGFuZ2VzIGludG8KdGVtcG9yYXJ5IGZpbGVzIGFuZCBvbmNlIGl0IHJlY2VpdmVzIHRo ZSBjb21taXQsIGl0IHJlYWRzIGZyb20gdGhlIGZpbGUgYW5kCmFwcGxpZXMgdGhlIGVudGlyZSB0 cmFuc2FjdGlvbi4gVG8gaW1wcm92ZSB0aGUgcGVyZm9ybWFuY2Ugb2Ygc3VjaAp0cmFuc2FjdGlv bnMsIHdlIGNhbiBpbnN0ZWFkIGFsbG93IHRoZW0gdG8gYmUgYXBwbGllZCB2aWEgYmFja2dyb3Vu ZCB3b3JrZXJzLgoKSW4gdGhpcyBhcHByb2FjaCwgd2UgYXNzaWduIGEgbmV3IGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIChpZiBhdmFpbGFibGUpIGFzCnNvb24gYXMgdGhlIHhhY3QncyBmaXJzdCBz dHJlYW0gaXMgcmVjZWl2ZWQgYW5kIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3aWxsIHNlbmQKY2hh bmdlcyB0byB0aGlzIG5ldyB3b3JrZXIgdmlhIHNoYXJlZCBtZW1vcnkuIFRoZSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlciB3aWxsCmRpcmVjdGx5IGFwcGx5IHRoZSBjaGFuZ2UgaW5zdGVhZCBvZiB3 cml0aW5nIGl0IHRvIHRlbXBvcmFyeSBmaWxlcy4gV2Uga2VlcAp0aGlzIHdvcmtlciBhc3NpZ25l ZCB0aWxsIHRoZSB0cmFuc2FjdGlvbiBjb21taXQgaXMgcmVjZWl2ZWQgYW5kIGFsc28gd2FpdCBm b3IKdGhlIHdvcmtlciB0byBmaW5pc2ggYXQgY29tbWl0LiBUaGlzIHByZXNlcnZlcyBjb21taXQg b3JkZXJpbmcgYW5kIGF2b2lkcwp3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gZmlsZSBpbiBt b3N0IGNhc2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIGlmIHRoZXJlCmlzIG5vIHdvcmtlciBh dmFpbGFibGUuCgpUaGlzIHBhdGNoIGFsc28gZXh0ZW5kcyB0aGUgU1VCU0NSSVBUSU9OICdzdHJl YW1pbmcnIHBhcmFtZXRlciBzbyB0aGF0IHRoZSB1c2VyCmNhbiBjb250cm9sIHdoZXRoZXIgdG8g YXBwbHkgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiBpbiBhbiBhcHBseSBiYWNrZ3JvdW5kCndv cmtlciBvciBzcGlsbCB0aGUgY2hhbmdlIHRvIGRpc2suIFRoZSB1c2VyIGNhbiBzZXQgdGhlIHN0 cmVhbWluZyBwYXJhbWV0ZXIgdG8KJ29uL29mZicsICdwYXJhbGxlbCcuIFRoZSBwYXJhbWV0ZXIg dmFsdWUgJ3BhcmFsbGVsJyBtZWFucyB0aGUgc3RyZWFtaW5nIHdpbGwKYmUgYXBwbGllZCB2aWEg YW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIGlmIGF2YWlsYWJsZS4gVGhlIHBhcmFtZXRlciB2 YWx1ZQonb24nIG1lYW5zIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gd2lsbCBiZSBzcGlsbGVk IHRvIGRpc2suIFRoZSBkZWZhdWx0IHZhbHVlCmlzICdvZmYnIChzYW1lIGFzIGN1cnJlbnQgYmVo YXZpb3VyKS4KCkluIGFkZGl0aW9uLCB0aGUgcGF0Y2ggZXh0ZW5kcyB0aGUgbG9naWNhbCByZXBs aWNhdGlvbiBTVFJFQU1fQUJPUlQgbWVzc2FnZSBzbwp0aGF0IGFib3J0X3RpbWUgYW5kIGFib3J0 X2xzbiBjYW4gYWxzbyBiZSBzZW50IHdoaWNoIGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSB0aGUKcmVw bGljYXRpb24gb3JpZ2luIGluIGFwcGx5IGJhY2tncm91bmQgd29ya2VyIHdoZW4gdGhlIHN0cmVh bWluZyB0cmFuc2FjdGlvbiBpcwphYm9ydGVkLgotLS0KIGRvYy9zcmMvc2dtbC9jYXRhbG9ncy5z Z21sICAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21s ICAgICAgICAgICAgICAgICAgICAgIHwgIDI4ICstCiBkb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBs aWNhdGlvbi5zZ21sICAgICAgICAgfCAgMTMgKy0KIGRvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21s ICAgICAgICAgICAgICAgICAgICB8ICAyOCArLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vi c2NyaXB0aW9uLnNnbWwgICAgIHwgIDI0ICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 YWN0LmMgICAgICAgICAgICAgfCAgMTMgKwogc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5jICAgICAgIHwgIDY2ICstCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2Vy LmMgICAgICAgICAgICAgfCAgIDMgKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9N YWtlZmlsZSAgICAgIHwgICAxICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3Jr ZXIuYyAgICAgICB8IDc2NCArKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9kZWNvZGUuYyAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xhdW5jaGVyLmMgICAgfCAxMzEgKystCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL29yaWdpbi5jICAgICAgfCAgMjMgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcHJvdG8uYyAgICAgICB8ICA0MSArLQogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwv cmVvcmRlcmJ1ZmZlci5jICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9s b2dpY2FsL3RhYmxlc3luYy5jICAgfCAgMTAgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMgICAgICB8IDc5NCArKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMgICB8ICAgNiArLQogc3JjL2JhY2tlbmQv dXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jICAgICAgIHwgICAzICsKIHNyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjLmMgICAgICAgICAgICAgICAgICB8ICAxMiArCiBzcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3Bn X2R1bXAuYyAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3N1YnNjcmlwdGlvbi5oICAgICAgICAgfCAgMjEgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL2xvZ2ljYWxsYXVuY2hlci5oICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlv bi9sb2dpY2FscHJvdG8uaCAgICAgICAgfCAgMjcgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L2xvZ2ljYWx3b3JrZXIuaCAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9v cmlnaW4uaCAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jl b3JkZXJidWZmZXIuaCAgICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29y a2VyX2ludGVybmFsLmggICAgIHwgMTExICsrLQogc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVu dC5oICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvc3Vi c2NyaXB0aW9uLm91dCAgICB8ICAxMiArLQogc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0 aW9uLnNxbCAgICAgICAgIHwgICA2ICstCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlz dCAgICAgICAgICAgICAgfCAgIDUgKwogMzMgZmlsZXMgY2hhbmdlZCwgMTkzOCBpbnNlcnRpb25z KCspLCAyNTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9hcHBseWJnd29ya2VyLmMKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3Nn bWwvY2F0YWxvZ3Muc2dtbCBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCmluZGV4IGZmMGVk NjU3NzIuLmM1MjU1MmU4NDAgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9jYXRhbG9ncy5zZ21sCkBAIC03ODczLDExICs3ODczLDE2IEBA IFNDUkFNLVNIQS0yNTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBs YWNlYWJsZT46PHJlcGxhY2VhYmxlPiZsCiAKICAgICAgPHJvdz4KICAgICAgIDxlbnRyeSByb2xl PSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+Ci0g ICAgICAgPHN0cnVjdGZpZWxkPnN1YnN0cmVhbTwvc3RydWN0ZmllbGQ+IDx0eXBlPmJvb2w8L3R5 cGU+CisgICAgICAgPHN0cnVjdGZpZWxkPnN1YnN0cmVhbTwvc3RydWN0ZmllbGQ+IDx0eXBlPmNo YXI8L3R5cGU+CiAgICAgICA8L3BhcmE+CiAgICAgICA8cGFyYT4KLSAgICAgICBJZiB0cnVlLCB0 aGUgc3Vic2NyaXB0aW9uIHdpbGwgYWxsb3cgc3RyZWFtaW5nIG9mIGluLXByb2dyZXNzCi0gICAg ICAgdHJhbnNhY3Rpb25zCisgICAgICAgQ29udHJvbHMgaG93IHRvIGhhbmRsZSB0aGUgc3RyZWFt aW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9uczoKKyAgICAgICA8bGl0ZXJhbD5mPC9saXRl cmFsPiA9IGRpc2FsbG93IHN0cmVhbWluZyBvZiBpbi1wcm9ncmVzcyB0cmFuc2FjdGlvbnMsCisg ICAgICAgPGxpdGVyYWw+dDwvbGl0ZXJhbD4gPSBzcGlsbCB0aGUgY2hhbmdlcyBvZiBpbi1wcm9n cmVzcyB0cmFuc2FjdGlvbnMgdG8KKyAgICAgICBkaXNrIGFuZCBhcHBseSBhdCBvbmNlIGFmdGVy IHRoZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gdGhlCisgICAgICAgcHVibGlzaGVyLAor ICAgICAgIDxsaXRlcmFsPnA8L2xpdGVyYWw+ID0gYXBwbHkgY2hhbmdlcyBkaXJlY3RseSB1c2lu ZyBhIGJhY2tncm91bmQKKyAgICAgICB3b3JrZXIgaWYgYXZhaWxhYmxlKHNhbWUgYXMgJ3QnIGlm IG5vIHdvcmtlciBpcyBhdmFpbGFibGUpCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9y b3c+CiAKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9zcmMvc2dt bC9jb25maWcuc2dtbAppbmRleCBhNWNkNGU0NGM3Li5lMzllOTViM2E4IDEwMDY0NAotLS0gYS9k b2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBA IC00OTQwLDcgKzQ5NDAsOCBAQCBBTlkgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm51 bV9zeW5jPC9yZXBsYWNlYWJsZT4gKCA8cmVwbGFjZWFibGUgY2xhc3M9IgogICAgICAgPGxpc3Rp dGVtPgogICAgICAgIDxwYXJhPgogICAgICAgICBTcGVjaWZpZXMgbWF4aW11bSBudW1iZXIgb2Yg bG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXJzLiBUaGlzIGluY2x1ZGVzCi0gICAgICAgIGJvdGgg YXBwbHkgd29ya2VycyBhbmQgdGFibGUgc3luY2hyb25pemF0aW9uIHdvcmtlcnMuCisgICAgICAg IGFwcGx5IG1haW4gd29ya2VycywgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzLCBhbmQgdGFibGUg c3luY2hyb25pemF0aW9uCisgICAgICAgIHdvcmtlcnMuCiAgICAgICAgPC9wYXJhPgogICAgICAg IDxwYXJhPgogICAgICAgICBMb2dpY2FsIHJlcGxpY2F0aW9uIHdvcmtlcnMgYXJlIHRha2VuIGZy b20gdGhlIHBvb2wgZGVmaW5lZCBieQpAQCAtNDk4MCw2ICs0OTgxLDMxIEBAIEFOWSA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtX3N5bmM8L3JlcGxhY2VhYmxlPiAoIDxyZXBsYWNl YWJsZSBjbGFzcz0iCiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIAor ICAgICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbWF4LWFwcGx5LWJnd29ya2Vycy1wZXItc3Vic2Ny aXB0aW9uIiB4cmVmbGFiZWw9Im1heF9hcHBseV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiI+ CisgICAgICA8dGVybT48dmFybmFtZT5tYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRp b248L3Zhcm5hbWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICAgIDxpbmRleHRlcm0+Cisg ICAgICAgPHByaW1hcnk+PHZhcm5hbWU+bWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vic2NyaXB0 aW9uPC92YXJuYW1lPiBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICAgIDwv aW5kZXh0ZXJtPgorICAgICAgPC90ZXJtPgorICAgICAgPGxpc3RpdGVtPgorICAgICAgIDxwYXJh PgorICAgICAgICBNYXhpbXVtIG51bWJlciBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgcGVy IHN1YnNjcmlwdGlvbi4gVGhpcworICAgICAgICBwYXJhbWV0ZXIgY29udHJvbHMgdGhlIGFtb3Vu dCBvZiBwYXJhbGxlbGlzbSBmb3Igc3RyZWFtaW5nIG9mCisgICAgICAgIGluLXByb2dyZXNzIHRy YW5zYWN0aW9ucyB3aXRoIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIKKyAgICAgICAgPGxpdGVyYWw+ c3RyZWFtaW5nID0gcGFyYWxsZWw8L2xpdGVyYWw+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8 cGFyYT4KKyAgICAgICAgVGhlIGFwcGx5IGJhY2tncm91bmQgd29ya2VycyBhcmUgdGFrZW4gZnJv bSB0aGUgcG9vbCBkZWZpbmVkIGJ5CisgICAgICAgIDx2YXJuYW1lPm1heF9sb2dpY2FsX3JlcGxp Y2F0aW9uX3dvcmtlcnM8L3Zhcm5hbWU+LgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4K KyAgICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgMi4gVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkg YmUgc2V0IGluIHRoZQorICAgICAgICA8ZmlsZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFt ZT4gZmlsZSBvciBvbiB0aGUgc2VydmVyIGNvbW1hbmQKKyAgICAgICAgbGluZS4KKyAgICAgICA8 L3BhcmE+CisgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICA8 L3ZhcmlhYmxlbGlzdD4KICAgICA8L3NlY3QyPgogCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv bG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRp b24uc2dtbAppbmRleCBiZGYxZTdiNzI3Li4zZWU5YTU0NmFkIDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2Fs LXJlcGxpY2F0aW9uLnNnbWwKQEAgLTExNTMsNiArMTE1MywxNiBAQCBDT05URVhUOiAgcHJvY2Vz c2luZyByZW1vdGUgZGF0YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5n ICJJTlNFUgogICAgbWlnaHQgbm90IHZpb2xhdGUgYW55IGNvbnN0cmFpbnQuICBUaGlzIGNhbiBl YXNpbHkgbWFrZSB0aGUgc3Vic2NyaWJlcgogICAgaW5jb25zaXN0ZW50LgogICA8L3BhcmE+CisK KyAgPHBhcmE+CisgICBXaGVuIHRoZSBzdHJlYW1pbmcgbW9kZSBpcyA8bGl0ZXJhbD5wYXJhbGxl bDwvbGl0ZXJhbD4sIHRoZSBmaW5pc2ggTFNOIG9mCisgICBmYWlsZWQgdHJhbnNhY3Rpb25zIG1h eSBub3QgYmUgbG9nZ2VkLiBJbiB0aGF0IGNhc2UsIGl0IG1heSBiZSBuZWNlc3NhcnkgdG8KKyAg IGNoYW5nZSB0aGUgc3RyZWFtaW5nIG1vZGUgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+IGFuZCBj YXVzZSB0aGUgc2FtZQorICAgY29uZmxpY3RzIGFnYWluIHNvIHRoZSBmaW5pc2ggTFNOIG9mIHRo ZSBmYWlsZWQgdHJhbnNhY3Rpb24gd2lsbCBiZSB3cml0dGVuCisgICB0byB0aGUgc2VydmVyIGxv Zy4gRm9yIHRoZSB1c2FnZSBvZiBmaW5pc2ggTFNOLCBwbGVhc2UgcmVmZXIgdG8gPGxpbmsKKyAg IGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbiI+PGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBU SU9OIC4uLgorICAgU0tJUDwvY29tbWFuZD48L2xpbms+LgorICA8L3BhcmE+CiAgPC9zZWN0MT4K IAogIDxzZWN0MSBpZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1yZXN0cmljdGlvbnMiPgpAQCAtMTMz NCw3ICsxMzQ0LDggQEAgQ09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxp Y2F0aW9uIG9yaWdpbiAicGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgIHN1YnNjcmlwdGlvbi4g IEEgZGlzYWJsZWQgc3Vic2NyaXB0aW9uIG9yIGEgY3Jhc2hlZCBzdWJzY3JpcHRpb24gd2lsbCBo YXZlCiAgICB6ZXJvIHJvd3MgaW4gdGhpcyB2aWV3LiAgSWYgdGhlIGluaXRpYWwgZGF0YSBzeW5j aHJvbml6YXRpb24gb2YgYW55CiAgICB0YWJsZSBpcyBpbiBwcm9ncmVzcywgdGhlcmUgd2lsbCBi ZSBhZGRpdGlvbmFsIHdvcmtlcnMgZm9yIHRoZSB0YWJsZXMKLSAgIGJlaW5nIHN5bmNocm9uaXpl ZC4KKyAgIGJlaW5nIHN5bmNocm9uaXplZC4gTW9yZW92ZXIsIGlmIHRoZSBzdHJlYW1pbmcgdHJh bnNhY3Rpb24gaXMgYXBwbGllZAorICAgcGFyYWxsZWxseSwgdGhlcmUgd2lsbCBiZSBhZGRpdGlv bmFsIHdvcmtlcnMuCiAgIDwvcGFyYT4KICA8L3NlY3QxPgogCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcHJvdG9jb2wuc2dtbCBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCmluZGV4IDg3 ODcwYzViMTAuLjNiMDhlMTQ2NTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5z Z21sCisrKyBiL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sCkBAIC0zMDk2LDcgKzMwOTYsNyBA QCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0YWJhc2UiIC1jICJJREVOVElG WV9TWVNURU07IgogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KICAgICAgICBQcm90b2Nv bCB2ZXJzaW9uLiBDdXJyZW50bHkgdmVyc2lvbnMgPGxpdGVyYWw+MTwvbGl0ZXJhbD4sIDxsaXRl cmFsPjI8L2xpdGVyYWw+LAotICAgICAgIGFuZCA8bGl0ZXJhbD4zPC9saXRlcmFsPiBhcmUgc3Vw cG9ydGVkLgorICAgICAgIDxsaXRlcmFsPjM8L2xpdGVyYWw+LCBhbmQgPGxpdGVyYWw+NDwvbGl0 ZXJhbD4gYXJlIHN1cHBvcnRlZC4KICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAg IFZlcnNpb24gPGxpdGVyYWw+MjwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkIG9ubHkgZm9yIHNlcnZl ciB2ZXJzaW9uIDE0CkBAIC0zMTA2LDYgKzMxMDYsMTEgQEAgcHNxbCAiZGJuYW1lPXBvc3RncmVz IHJlcGxpY2F0aW9uPWRhdGFiYXNlIiAtYyAiSURFTlRJRllfU1lTVEVNOyIKICAgICAgICBWZXJz aW9uIDxsaXRlcmFsPjM8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIgdmVy c2lvbiAxNQogICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBzdHJlYW1pbmcgb2YgdHdv LXBoYXNlIGNvbW1pdHMuCiAgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBWZXJz aW9uIDxsaXRlcmFsPjQ8L2xpdGVyYWw+IGlzIHN1cHBvcnRlZCBvbmx5IGZvciBzZXJ2ZXIgdmVy c2lvbiAxNgorICAgICAgIGFuZCBhYm92ZSwgYW5kIGl0IGFsbG93cyBhcHBseWluZyBzdHJlYW0g b2YgbGFyZ2UgaW4tcHJvZ3Jlc3MKKyAgICAgICB0cmFuc2FjdGlvbnMgaW4gcGFyYWxsZWwuCisg ICAgICA8L3BhcmE+CiAgICAgIDwvbGlzdGl0ZW0+CiAgICAgPC92YXJsaXN0ZW50cnk+CiAKQEAg LTY3OTYsNiArNjgwMSwyNyBAQCBwc3FsICJkYm5hbWU9cG9zdGdyZXMgcmVwbGljYXRpb249ZGF0 YWJhc2UiIC1jICJJREVOVElGWV9TWVNURU07IgogICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICA8 L3Zhcmxpc3RlbnRyeT4KIAorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgICA8dGVybT5JbnQ2 NCAoWExvZ1JlY1B0cik8L3Rlcm0+CisgICAgICAgPGxpc3RpdGVtPgorICAgICAgICA8cGFyYT4K KyAgICAgICAgIFRoZSBMU04gb2YgdGhlIGFib3J0LiBUaGlzIGZpZWxkIGlzIGF2YWlsYWJsZSBz aW5jZSBwcm90b2NvbCB2ZXJzaW9uCisgICAgICAgICA0LgorICAgICAgICA8L3BhcmE+CisgICAg ICAgPC9saXN0aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgICA8dmFybGlzdGVu dHJ5PgorICAgICAgIDx0ZXJtPkludDY0IChUaW1lc3RhbXBUeik8L3Rlcm0+CisgICAgICAgPGxp c3RpdGVtPgorICAgICAgICA8cGFyYT4KKyAgICAgICAgIEFib3J0IHRpbWVzdGFtcCBvZiB0aGUg dHJhbnNhY3Rpb24uIFRoZSB2YWx1ZSBpcyBpbiBudW1iZXIKKyAgICAgICAgIG9mIG1pY3Jvc2Vj b25kcyBzaW5jZSBQb3N0Z3JlU1FMIGVwb2NoICgyMDAwLTAxLTAxKS4gVGhpcyBmaWVsZCBpcwor ICAgICAgICAgYXZhaWxhYmxlIHNpbmNlIHByb3RvY29sIHZlcnNpb24gNC4KKyAgICAgICAgPC9w YXJhPgorICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgICAg PHZhcmxpc3RlbnRyeT4KICAgICAgICA8dGVybT5JbnQzMiAoVHJhbnNhY3Rpb25JZCk8L3Rlcm0+ CiAgICAgICAgPGxpc3RpdGVtPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVf c3Vic2NyaXB0aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24u c2dtbAppbmRleCA3MzkwYzcxNWJjLi5lY2UyN2M1YTM0IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3Nn bWwvcmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL2Ny ZWF0ZV9zdWJzY3JpcHRpb24uc2dtbApAQCAtMjE3LDEzICsyMTcsMjkgQEAgQ1JFQVRFIFNVQlND UklQVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+c3Vic2NyaXB0aW9uX25hbWU8 L3JlcGxhY2VhYmwKICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KIAogICAgICAgIDx2YXJsaXN0ZW50 cnk+Ci0gICAgICAgIDx0ZXJtPjxsaXRlcmFsPnN0cmVhbWluZzwvbGl0ZXJhbD4gKDx0eXBlPmJv b2xlYW48L3R5cGU+KTwvdGVybT4KKyAgICAgICAgPHRlcm0+PGxpdGVyYWw+c3RyZWFtaW5nPC9s aXRlcmFsPiAoPHR5cGU+ZW51bTwvdHlwZT4pPC90ZXJtPgogICAgICAgICA8bGlzdGl0ZW0+CiAg ICAgICAgICA8cGFyYT4KICAgICAgICAgICBTcGVjaWZpZXMgd2hldGhlciB0byBlbmFibGUgc3Ry ZWFtaW5nIG9mIGluLXByb2dyZXNzIHRyYW5zYWN0aW9ucwotICAgICAgICAgIGZvciB0aGlzIHN1 YnNjcmlwdGlvbi4gIEJ5IGRlZmF1bHQsIGFsbCB0cmFuc2FjdGlvbnMKLSAgICAgICAgICBhcmUg ZnVsbHkgZGVjb2RlZCBvbiB0aGUgcHVibGlzaGVyIGFuZCBvbmx5IHRoZW4gc2VudCB0byB0aGUK LSAgICAgICAgICBzdWJzY3JpYmVyIGFzIGEgd2hvbGUuCisgICAgICAgICAgZm9yIHRoaXMgc3Vi c2NyaXB0aW9uLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+b2ZmPC9saXRlcmFsPiwK KyAgICAgICAgICBtZWFuaW5nIGFsbCB0cmFuc2FjdGlvbnMgYXJlIGZ1bGx5IGRlY29kZWQgb24g dGhlIHB1Ymxpc2hlciBhbmQgb25seQorICAgICAgICAgIHRoZW4gc2VudCB0byB0aGUgc3Vic2Ny aWJlciBhcyBhIHdob2xlLgorICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAg ICAgICAgICBJZiBzZXQgdG8gPGxpdGVyYWw+b248L2xpdGVyYWw+LCB0aGUgaW5jb21pbmcgY2hh bmdlcyBhcmUgd3JpdHRlbiB0bworICAgICAgICAgIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhlbiBh cHBsaWVkIG9ubHkgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzCisgICAgICAgICAgY29tbWl0dGVk IG9uIHRoZSBwdWJsaXNoZXIgYW5kIHJlY2VpdmVkIGJ5IHRoZSBzdWJzY3JpYmVyLgorICAgICAg ICAgPC9wYXJhPgorCisgICAgICAgICA8cGFyYT4KKyAgICAgICAgICBJZiBzZXQgdG8gPGxpdGVy YWw+cGFyYWxsZWw8L2xpdGVyYWw+LCBpbmNvbWluZyBjaGFuZ2VzIGFyZSBkaXJlY3RseQorICAg ICAgICAgIGFwcGxpZWQgdmlhIG9uZSBvZiB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzLCBp ZiBhdmFpbGFibGUuIElmIG5vCisgICAgICAgICAgYmFja2dyb3VuZCB3b3JrZXIgaXMgZnJlZSB0 byBoYW5kbGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRoZW4gdGhlCisgICAgICAgICAgY2hhbmdl cyBhcmUgd3JpdHRlbiB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGxpZWQgYWZ0ZXIgdGhlCisg ICAgICAgICAgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLiBOb3RlIHRoYXQgaWYgYW4gZXJyb3Ig aGFwcGVucyB3aGVuCisgICAgICAgICAgYXBwbHlpbmcgY2hhbmdlcyBpbiBhIGJhY2tncm91bmQg d29ya2VyLCB0aGUgZmluaXNoIExTTiBvZiB0aGUKKyAgICAgICAgICByZW1vdGUgdHJhbnNhY3Rp b24gbWlnaHQgbm90IGJlIHJlcG9ydGVkIGluIHRoZSBzZXJ2ZXIgbG9nLgogICAgICAgICAgPC9w YXJhPgogICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgIDwvdmFybGlzdGVudHJ5PgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGFjdC5jCmluZGV4IDUwZjA5MmQ3ZWIuLjVhNzZkOWMxYTEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hhY3QuYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS94YWN0LmMKQEAgLTE3MTEsNiArMTcxMSw3IEBAIFJlY29yZFRyYW5zYWN0 aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJaW50CQkJbmNoaWxkcmVuOwogCVRyYW5zYWN0aW9u SWQgKmNoaWxkcmVuOwogCVRpbWVzdGFtcFR6IHhhY3RfdGltZTsKKwlib29sCQlyZXBsb3JpZ2lu OwogCiAJLyoKIAkgKiBJZiB3ZSBoYXZlbid0IGJlZW4gYXNzaWduZWQgYW4gWElELCBub2JvZHkg d2lsbCBjYXJlIHdoZXRoZXIgd2UgYWJvcnRlZApAQCAtMTc0MSw2ICsxNzQyLDEzIEBAIFJlY29y ZFRyYW5zYWN0aW9uQWJvcnQoYm9vbCBpc1N1YlhhY3QpCiAJCWVsb2coUEFOSUMsICJjYW5ub3Qg YWJvcnQgdHJhbnNhY3Rpb24gJXUsIGl0IHdhcyBhbHJlYWR5IGNvbW1pdHRlZCIsCiAJCQkgeGlk KTsKIAorCS8qCisJICogQXJlIHdlIHVzaW5nIHRoZSByZXBsaWNhdGlvbiBvcmlnaW5zIGZlYXR1 cmU/ICBPciwgaW4gb3RoZXIgd29yZHMsCisJICogYXJlIHdlIHJlcGxheWluZyByZW1vdGUgYWN0 aW9ucz8KKwkgKi8KKwlyZXBsb3JpZ2luID0gKHJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gIT0g SW52YWxpZFJlcE9yaWdpbklkICYmCisJCQkJICByZXBsb3JpZ2luX3Nlc3Npb25fb3JpZ2luICE9 IERvTm90UmVwbGljYXRlSWQpOworCiAJLyogRmV0Y2ggdGhlIGRhdGEgd2UgbmVlZCBmb3IgdGhl IGFib3J0IHJlY29yZCAqLwogCW5yZWxzID0gc21nckdldFBlbmRpbmdEZWxldGVzKGZhbHNlLCAm cmVscyk7CiAJbmNoaWxkcmVuID0geGFjdEdldENvbW1pdHRlZENoaWxkcmVuKCZjaGlsZHJlbik7 CkBAIC0xNzY1LDYgKzE3NzMsMTEgQEAgUmVjb3JkVHJhbnNhY3Rpb25BYm9ydChib29sIGlzU3Vi WGFjdCkKIAkJCQkJICAgTXlYYWN0RmxhZ3MsIEludmFsaWRUcmFuc2FjdGlvbklkLAogCQkJCQkg ICBOVUxMKTsKIAorCWlmIChyZXBsb3JpZ2luKQorCQkvKiBNb3ZlIExTTnMgZm9yd2FyZCBmb3Ig dGhpcyByZXBsaWNhdGlvbiBvcmlnaW4gKi8KKwkJcmVwbG9yaWdpbl9zZXNzaW9uX2FkdmFuY2Uo cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24sCisJCQkJCQkJCSAgIFhhY3RMYXN0UmVjRW5k KTsKKwogCS8qCiAJICogUmVwb3J0IHRoZSBsYXRlc3QgYXN5bmMgYWJvcnQgTFNOLCBzbyB0aGF0 IHRoZSBXQUwgd3JpdGVyIGtub3dzIHRvCiAJICogZmx1c2ggdGhpcyBhYm9ydC4gVGhlcmUncyBu b3RoaW5nIHRvIGJlIGdhaW5lZCBieSBkZWxheWluZyB0aGlzLCBzaW5jZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jCmluZGV4IGY3M2RmYjYwNjcuLjc4YjdlZTc1NDMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTg0LDcgKzg0LDcgQEAg dHlwZWRlZiBzdHJ1Y3QgU3ViT3B0cwogCWJvb2wJCWNvcHlfZGF0YTsKIAlib29sCQlyZWZyZXNo OwogCWJvb2wJCWJpbmFyeTsKLQlib29sCQlzdHJlYW1pbmc7CisJY2hhcgkJc3RyZWFtaW5nOwog CWJvb2wJCXR3b3BoYXNlOwogCWJvb2wJCWRpc2FibGVvbmVycjsKIAljaGFyCSAgICpvcmlnaW47 CkBAIC05Nyw2ICs5Nyw2MiBAQCBzdGF0aWMgTGlzdCAqbWVyZ2VfcHVibGljYXRpb25zKExpc3Qg Km9sZHB1Ymxpc3QsIExpc3QgKm5ld3B1Ymxpc3QsIGJvb2wgYWRkcHViLAogc3RhdGljIHZvaWQg UmVwb3J0U2xvdENvbm5lY3Rpb25FcnJvcihMaXN0ICpyc3RhdGVzLCBPaWQgc3ViaWQsIGNoYXIg KnNsb3RuYW1lLCBjaGFyICplcnIpOwogCiAKKy8qCisgKiBFeHRyYWN0IHRoZSBzdHJlYW1pbmcg bW9kZSB2YWx1ZSBmcm9tIGEgRGVmRWxlbS4gIFRoaXMgaXMgbGlrZQorICogZGVmR2V0Qm9vbGVh bigpIGJ1dCBhbHNvIGFjY2VwdHMgdGhlIHNwZWNpYWwgdmFsdWUgb2YgInBhcmFsbGVsIi4KKyAq Lworc3RhdGljIGNoYXIKK2RlZkdldFN0cmVhbWluZ01vZGUoRGVmRWxlbSAqZGVmKQoreworCS8q CisJICogSWYgbm8gcGFyYW1ldGVyIHZhbHVlIGdpdmVuLCBhc3N1bWUgInRydWUiIGlzIG1lYW50 LgorCSAqLworCWlmIChkZWYtPmFyZyA9PSBOVUxMKQorCQlyZXR1cm4gU1VCU1RSRUFNX09OOwor CisJLyoKKwkgKiBBbGxvdyAwLCAxLCAiZmFsc2UiLCAidHJ1ZSIsICJvZmYiLCAib24iIG9yICJw YXJhbGxlbCIuCisJICovCisJc3dpdGNoIChub2RlVGFnKGRlZi0+YXJnKSkKKwl7CisJCWNhc2Ug VF9JbnRlZ2VyOgorCQkJc3dpdGNoIChpbnRWYWwoZGVmLT5hcmcpKQorCQkJeworCQkJCWNhc2Ug MDoKKwkJCQkJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CisJCQkJY2FzZSAxOgorCQkJCQlyZXR1cm4g U1VCU1RSRUFNX09OOworCQkJCWRlZmF1bHQ6CisJCQkJCS8qIG90aGVyd2lzZSwgZXJyb3Igb3V0 IGJlbG93ICovCisJCQkJCWJyZWFrOworCQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQl7 CisJCQkJY2hhcgkgICAqc3ZhbCA9IGRlZkdldFN0cmluZyhkZWYpOworCisJCQkJLyoKKwkJCQkg KiBUaGUgc2V0IG9mIHN0cmluZ3MgYWNjZXB0ZWQgaGVyZSBzaG91bGQgbWF0Y2ggdXAgd2l0aCB0 aGUKKwkJCQkgKiBncmFtbWFyJ3Mgb3B0X2Jvb2xlYW5fb3Jfc3RyaW5nIHByb2R1Y3Rpb24uCisJ CQkJICovCisJCQkJaWYgKHBnX3N0cmNhc2VjbXAoc3ZhbCwgImZhbHNlIikgPT0gMCB8fAorCQkJ CQlwZ19zdHJjYXNlY21wKHN2YWwsICJvZmYiKSA9PSAwKQorCQkJCQlyZXR1cm4gU1VCU1RSRUFN X09GRjsKKwkJCQlpZiAocGdfc3RyY2FzZWNtcChzdmFsLCAidHJ1ZSIpID09IDAgfHwKKwkJCQkJ cGdfc3RyY2FzZWNtcChzdmFsLCAib24iKSA9PSAwKQorCQkJCQlyZXR1cm4gU1VCU1RSRUFNX09O OworCQkJCWlmIChwZ19zdHJjYXNlY21wKHN2YWwsICJwYXJhbGxlbCIpID09IDApCisJCQkJCXJl dHVybiBTVUJTVFJFQU1fUEFSQUxMRUw7CisJCQl9CisJCQlicmVhazsKKwl9CisJZXJlcG9ydChF UlJPUiwKKwkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCSBlcnJtc2coIiVz IHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZSBvciBcInBhcmFsbGVsXCIiLAorCQkJCQlkZWYtPmRl Zm5hbWUpKSk7CisJcmV0dXJuIFNVQlNUUkVBTV9PRkY7CQkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0 ICovCit9CisKIC8qCiAgKiBDb21tb24gb3B0aW9uIHBhcnNpbmcgZnVuY3Rpb24gZm9yIENSRUFU RSBhbmQgQUxURVIgU1VCU0NSSVBUSU9OIGNvbW1hbmRzLgogICoKQEAgLTEzNCw3ICsxOTAsNyBA QCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0 bXRfb3B0aW9ucywKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9CSU5BUlkpKQog CQlvcHRzLT5iaW5hcnkgPSBmYWxzZTsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9Q VF9TVFJFQU1JTkcpKQotCQlvcHRzLT5zdHJlYW1pbmcgPSBmYWxzZTsKKwkJb3B0cy0+c3RyZWFt aW5nID0gU1VCU1RSRUFNX09GRjsKIAlpZiAoSXNTZXQoc3VwcG9ydGVkX29wdHMsIFNVQk9QVF9U V09QSEFTRV9DT01NSVQpKQogCQlvcHRzLT50d29waGFzZSA9IGZhbHNlOwogCWlmIChJc1NldChz dXBwb3J0ZWRfb3B0cywgU1VCT1BUX0RJU0FCTEVfT05fRVJSKSkKQEAgLTIzNyw3ICsyOTMsNyBA QCBwYXJzZV9zdWJzY3JpcHRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKnN0 bXRfb3B0aW9ucywKIAkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShkZWZlbCwgcHN0YXRlKTsK IAogCQkJb3B0cy0+c3BlY2lmaWVkX29wdHMgfD0gU1VCT1BUX1NUUkVBTUlORzsKLQkJCW9wdHMt PnN0cmVhbWluZyA9IGRlZkdldEJvb2xlYW4oZGVmZWwpOworCQkJb3B0cy0+c3RyZWFtaW5nID0g ZGVmR2V0U3RyZWFtaW5nTW9kZShkZWZlbCk7CiAJCX0KIAkJZWxzZSBpZiAoc3RyY21wKGRlZmVs LT5kZWZuYW1lLCAidHdvX3BoYXNlIikgPT0gMCkKIAkJewpAQCAtNjI3LDcgKzY4Myw3IEBAIENy ZWF0ZVN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIENyZWF0ZVN1YnNjcmlwdGlvblN0 bXQgKnN0bXQsCiAJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1Ym93bmVyIC0gMV0gPSBP YmplY3RJZEdldERhdHVtKG93bmVyKTsKIAl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vi ZW5hYmxlZCAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuZW5hYmxlZCk7CiAJdmFsdWVzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3N1YmJpbmFyeSAtIDFdID0gQm9vbEdldERhdHVtKG9wdHMuYmluYXJ5 KTsKLQl2YWx1ZXNbQW51bV9wZ19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPSBCb29sR2V0 RGF0dW0ob3B0cy5zdHJlYW1pbmcpOworCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJz dHJlYW0gLSAxXSA9IENoYXJHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CiAJdmFsdWVzW0FudW1f cGdfc3Vic2NyaXB0aW9uX3N1YnR3b3BoYXNlc3RhdGUgLSAxXSA9CiAJCUNoYXJHZXREYXR1bShv cHRzLnR3b3BoYXNlID8KIAkJCQkJIExPR0lDQUxSRVBfVFdPUEhBU0VfU1RBVEVfUEVORElORyA6 CkBAIC0xMDg5LDcgKzExNDUsNyBAQCBBbHRlclN1YnNjcmlwdGlvbihQYXJzZVN0YXRlICpwc3Rh dGUsIEFsdGVyU3Vic2NyaXB0aW9uU3RtdCAqc3RtdCwKIAkJCQlpZiAoSXNTZXQob3B0cy5zcGVj aWZpZWRfb3B0cywgU1VCT1BUX1NUUkVBTUlORykpCiAJCQkJewogCQkJCQl2YWx1ZXNbQW51bV9w Z19zdWJzY3JpcHRpb25fc3Vic3RyZWFtIC0gMV0gPQotCQkJCQkJQm9vbEdldERhdHVtKG9wdHMu c3RyZWFtaW5nKTsKKwkJCQkJCUNoYXJHZXREYXR1bShvcHRzLnN0cmVhbWluZyk7CiAJCQkJCXJl cGxhY2VzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnN0cmVhbSAtIDFdID0gdHJ1ZTsKIAkJCQl9 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyBiL3NyYy9i YWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYwppbmRleCA0MDYwMWFlZmQ5Li40MGNjYjg5OTNj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKKysrIGIvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9iZ3dvcmtlci5jCkBAIC0xMjgsNiArMTI4LDkgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdAogCX0sCiAJewogCQkiQXBwbHlXb3JrZXJNYWluIiwgQXBwbHlXb3JrZXJN YWluCisJfSwKKwl7CisJCSJBcHBseUJnd29ya2VyTWFpbiIsIEFwcGx5Qmd3b3JrZXJNYWluCiAJ fQogfTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9NYWtl ZmlsZSBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvTWFrZWZpbGUKaW5kZXggYzRl MmZkZWI3MS4uY2JmYjVkNzk0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL01h a2VmaWxlCkBAIC0xNSw2ICsxNSw3IEBAIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtl ZmlsZS5nbG9iYWwKIG92ZXJyaWRlIENQUEZMQUdTIDo9IC1JJChzcmNkaXIpICQoQ1BQRkxBR1Mp CiAKIE9CSlMgPSBcCisJYXBwbHliZ3dvcmtlci5vIFwKIAlkZWNvZGUubyBcCiAJbGF1bmNoZXIu byBcCiAJbG9naWNhbC5vIFwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvYXBwbHliZ3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9h cHBseWJnd29ya2VyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZDVi NjFjY2Q1MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvYXBwbHliZ3dvcmtlci5jCkBAIC0wLDAgKzEsNzY0IEBACisvKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqIGFwcGx5Ymd3b3JrZXIuYworICogICAgIFN1cHBvcnQgcm91dGluZXMgZm9yIGFwcGx5aW5n IHhhY3QgYnkgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIw MTYtMjAyMiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisgKiBJREVO VElGSUNBVElPTgorICoJICBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3 b3JrZXIuYworICoKKyAqIFRoaXMgZmlsZSBjb250YWlucyByb3V0aW5lcyB0aGF0IGFyZSBpbnRl bmRlZCB0byBzdXBwb3J0IHNldHRpbmcgdXAsIHVzaW5nLAorICogYW5kIHRlYXJpbmcgZG93biBh IEFwcGx5Qmd3b3JrZXJJbmZvLgorICoKKyAqIFJlZmVyIHRvIHRoZSBjb21tZW50cyBpbiBmaWxl IGhlYWRlciBvZiBsb2dpY2FsL3dvcmtlci5jIHRvIHNlZSBtb3JlCisgKiBpbmZvcm1hdGlvbiBh Ym91dCBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAq LworCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImxpYnBxL3BxZm9ybWF0Lmgi CisjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKKyNpbmNsdWRlICJwZ3N0YXQuaCIKKyNpbmNsdWRl ICJwb3N0bWFzdGVyL2ludGVycnVwdC5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWxs YXVuY2hlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaCIKKyNpbmNs dWRlICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNl aXZlci5oIgorI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oIgorI2luY2x1 ZGUgInN0b3JhZ2UvaXBjLmgiCisjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNs dWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRl ICJ1dGlscy9tZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCisjaW5jbHVk ZSAidXRpbHMvc3lzY2FjaGUuaCIKKworI2RlZmluZSBQR19MT0dJQ0FMX0FQUExZX1NITV9NQUdJ QyAweDc4N2NhMDY3CisKKy8qCisgKiBEU00ga2V5cyBmb3IgYXBwbHkgYmFja2dyb3VuZCB3b3Jr ZXIuICBVbmxpa2Ugb3RoZXIgcGFyYWxsZWwgZXhlY3V0aW9uIGNvZGUsCisgKiBzaW5jZSB3ZSBk b24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IERTTSBrZXlzIGNvbmZsaWN0aW5nIHdpdGggcGxhbl9u b2RlX2lkIHdlCisgKiBjYW4gdXNlIHNtYWxsIGludGVnZXJzLgorICovCisjZGVmaW5lIEFQUExZ X0JHV09SS0VSX0tFWV9TSEFSRUQJMQorI2RlZmluZSBBUFBMWV9CR1dPUktFUl9LRVlfTVEJCTIK KworLyogUXVldWUgc2l6ZSBvZiBEU00sIDE2IE1CIGZvciBub3cuICovCisjZGVmaW5lIERTTV9R VUVVRV9TSVpFCSgxNioxMDI0KjEwMjQpCisKKy8qCisgKiBUaGVyZSBhcmUgdGhyZWUgZmllbGRz IGluIG1lc3NhZ2U6IHN0YXJ0X2xzbiwgZW5kX2xzbiBhbmQgc2VuZF90aW1lLiBCZWNhdXNlCisg KiB3ZSBoYXZlIHVwZGF0ZWQgdGhlc2Ugc3RhdGlzdGljcyBpbiBhcHBseSB3b3JrZXIsIHdlIGNv dWxkIGlnbm9yZSB0aGVzZQorICogZmllbGRzIGluIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLiAo c2VlIGZ1bmN0aW9uIExvZ2ljYWxSZXBBcHBseUxvb3ApLgorICovCisjZGVmaW5lIFNJWkVfU1RB VFNfTUVTU0FHRSAoMipzaXplb2YoWExvZ1JlY1B0cikrc2l6ZW9mKFRpbWVzdGFtcFR6KSkKKwor LyoKKyAqIEVudHJ5IGZvciBhIGhhc2ggdGFibGUgd2UgdXNlIHRvIG1hcCBmcm9tIHhpZCB0byBv dXIgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIKKyAqIHN0YXRlLgorICovCit0eXBlZGVmIHN0cnVj dCBBcHBseUJnd29ya2VyRW50cnkKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsJLyogSGFzaCBrZXkg LS0gbXVzdCBiZSBmaXJzdCAqLworCUFwcGx5Qmd3b3JrZXJJbmZvICp3c3RhdGU7Cit9IEFwcGx5 Qmd3b3JrZXJFbnRyeTsKKworLyogQXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIGhhc2ggdGFibGUg KGluaXRpYWxpemVkIG9uIGZpcnN0IHVzZSkuICovCitzdGF0aWMgSFRBQiAqQXBwbHlCZ3dvcmtl cnNIYXNoID0gTlVMTDsKK3N0YXRpYyBMaXN0ICpBcHBseUJnd29ya2Vyc0ZyZWVMaXN0ID0gTklM Oworc3RhdGljIExpc3QgKkFwcGx5Qmd3b3JrZXJzTGlzdCA9IE5JTDsKKworLyoKKyAqIEluZm9y bWF0aW9uIHNoYXJlZCBiZXR3ZWVuIG1haW4gYXBwbHkgd29ya2VyIGFuZCBhcHBseSBiYWNrZ3Jv dW5kIHdvcmtlci4KKyAqLwordm9sYXRpbGUgQXBwbHlCZ3dvcmtlclNoYXJlZCAqTXlQYXJhbGxl bFNoYXJlZCA9IE5VTEw7CisKK0xpc3QJICAgKnN1YnhhY3RsaXN0ID0gTklMOworCitzdGF0aWMg Ym9vbCBhcHBseV9iZ3dvcmtlcl9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpOworc3RhdGlj IEFwcGx5Qmd3b3JrZXJJbmZvICphcHBseV9iZ3dvcmtlcl9zZXR1cCh2b2lkKTsKK3N0YXRpYyBi b29sIGFwcGx5X2Jnd29ya2VyX3NldHVwX2RzbShBcHBseUJnd29ya2VySW5mbyAqd3N0YXRlKTsK KworLyoKKyAqIENoZWNrIGlmIHN0YXJ0aW5nIGEgbmV3IGFwcGx5IGJhY2tncm91bmQgd29ya2Vy IGlzIGFsbG93ZWQuCisgKi8KK3N0YXRpYyBib29sCithcHBseV9iZ3dvcmtlcl9jYW5fc3RhcnQo VHJhbnNhY3Rpb25JZCB4aWQpCit7CisJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZCh4aWQpKQor CQlyZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIERvbid0IHN0YXJ0IGEgbmV3IGJhY2tncm91bmQg d29ya2VyIGlmIG5vdCBpbiBzdHJlYW1pbmcgcGFyYWxsZWwgbW9kZS4KKwkgKi8KKwlpZiAoTXlT dWJzY3JpcHRpb24tPnN0cmVhbSAhPSBTVUJTVFJFQU1fUEFSQUxMRUwpCisJCXJldHVybiBmYWxz ZTsKKworCS8qCisJICogRG9uJ3Qgc3RhcnQgYSBuZXcgYmFja2dyb3VuZCB3b3JrZXIgaWYgdXNl ciBoYXMgc2V0IHNraXBsc24gYXMgaXQncworCSAqIHBvc3NpYmxlIHRoYXQgdXNlciB3YW50IHRv IHNraXAgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbi4gRm9yCisJICogc3RyZWFtaW5nIHRyYW5z YWN0aW9uLCB3ZSBuZWVkIHRvIHNwaWxsIHRoZSB0cmFuc2FjdGlvbiB0byBkaXNrIHNvIHRoYXQK KwkgKiB3ZSBjYW4gZ2V0IHRoZSBsYXN0IExTTiBvZiB0aGUgdHJhbnNhY3Rpb24gdG8ganVkZ2Ug d2hldGhlciB0byBza2lwCisJICogYmVmb3JlIHN0YXJ0aW5nIHRvIGFwcGx5IHRoZSBjaGFuZ2Uu CisJICovCisJaWYgKCFYTG9nUmVjUHRySXNJbnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lwbHNu KSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBGb3Igc3RyZWFtaW5nIHRyYW5zYWN0aW9u cyB0aGF0IGFyZSBiZWluZyBhcHBsaWVkIGluIGFwcGx5IGJhY2tncm91bmQKKwkgKiB3b3JrZXIs IHdlIGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGZvciBhIHJlbGF0 aW9uCisJICogdGhhdCBpcyBub3QgaW4gdGhlIFJFQURZIHN0YXRlIChzZWUgc2hvdWxkX2FwcGx5 X2NoYW5nZXNfZm9yX3JlbCkgYXMgd2UKKwkgKiB3b24ndCBrbm93IHJlbW90ZV9maW5hbF9sc24g YnkgdGhhdCB0aW1lLiBTbywgd2UgZG9uJ3Qgc3RhcnQgbmV3IGFwcGx5CisJICogYmFja2dyb3Vu ZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorCSAqLworCWlmICghQWxsVGFibGVzeW5jc1JlYWR5KCkp CisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICogUmV0dXJuIHRo ZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciB0aGF0IHdpbGwgYmUgdXNlZCBmb3IgdGhlIHNwZWNp ZmllZCB4aWQuCisgKgorICogSWYgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaXMgZm91bmQg aW4gdGhlIGZyZWUgbGlzdCB0aGVuIHJlLXVzZSBpdCwKKyAqIG90aGVyd2lzZSBzdGFydCBhIGZy ZXNoIG9uZS4gQ2FjaGUgdGhlIHdvcmtlciBBcHBseUJnd29ya2Vyc0hhc2gga2V5ZWQgYnkKKyAq IHRoZSBzcGVjaWZpZWQgeGlkLgorICovCitBcHBseUJnd29ya2VySW5mbyAqCithcHBseV9iZ3dv cmtlcl9zdGFydChUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlpbnQJCQlz ZXJ2ZXJfdmVyc2lvbjsKKwlBcHBseUJnd29ya2VySW5mbyAqd3N0YXRlOworCUFwcGx5Qmd3b3Jr ZXJFbnRyeSAqZW50cnkgPSBOVUxMOworCisJaWYgKCFhcHBseV9iZ3dvcmtlcl9jYW5fc3RhcnQo eGlkKSkKKwkJcmV0dXJuIE5VTEw7CisKKwkvKiBGaXJzdCB0aW1lIHRocm91Z2gsIGluaXRpYWxp emUgYXBwbHkgd29ya2VycyBoYXNodGFibGUuICovCisJaWYgKEFwcGx5Qmd3b3JrZXJzSGFzaCA9 PSBOVUxMKQorCXsKKwkJSEFTSENUTAkJY3RsOworCisJCU1lbVNldCgmY3RsLCAwLCBzaXplb2Yo Y3RsKSk7CisJCWN0bC5rZXlzaXplID0gc2l6ZW9mKFRyYW5zYWN0aW9uSWQpOworCQljdGwuZW50 cnlzaXplID0gc2l6ZW9mKEFwcGx5Qmd3b3JrZXJFbnRyeSk7CisJCWN0bC5oY3h0ID0gQXBwbHlD b250ZXh0OworCisJCUFwcGx5Qmd3b3JrZXJzSGFzaCA9IGhhc2hfY3JlYXRlKCJsb2dpY2FsIGFw cGx5IHdvcmtlcnMgaGFzaCIsIDE2LCAmY3RsLAorCQkJCQkJCQkJICAgSEFTSF9FTEVNIHwgSEFT SF9CTE9CUyB8IEhBU0hfQ09OVEVYVCk7CisJfQorCisJLyogVHJ5IHRvIGdldCBhIGZyZWUgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJaWYgKGxpc3RfbGVuZ3RoKEFwcGx5Qmd3b3JrZXJz RnJlZUxpc3QpID4gMCkKKwl7CisJCXdzdGF0ZSA9IChBcHBseUJnd29ya2VySW5mbyAqKSBsbGFz dChBcHBseUJnd29ya2Vyc0ZyZWVMaXN0KTsKKwkJQXNzZXJ0KHdzdGF0ZS0+c2hhcmVkLT5zdGF0 dXMgPT0gQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCQlBcHBseUJnd29ya2Vyc0ZyZWVMaXN0 ID0gbGlzdF9kZWxldGVfbGFzdChBcHBseUJnd29ya2Vyc0ZyZWVMaXN0KTsKKwl9CisJZWxzZQor CXsKKwkJd3N0YXRlID0gYXBwbHlfYmd3b3JrZXJfc2V0dXAoKTsKKworCQlpZiAod3N0YXRlID09 IE5VTEwpCisJCQlyZXR1cm4gTlVMTDsKKwl9CisKKwkvKiBDcmVhdGUgZW50cnkgZm9yIHJlcXVl c3RlZCB0cmFuc2FjdGlvbi4gKi8KKwllbnRyeSA9IGhhc2hfc2VhcmNoKEFwcGx5Qmd3b3JrZXJz SGFzaCwgJnhpZCwgSEFTSF9FTlRFUiwgJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJCWVsb2coRVJS T1IsICJoYXNoIHRhYmxlIGNvcnJ1cHRlZCIpOworCisJLyogRmlsbCB1cCB0aGUgaGFzaCBlbnRy eS4gKi8KKwl3c3RhdGUtPnNoYXJlZC0+c3RhdHVzID0gQVBQTFlfQkdXT1JLRVJfQlVTWTsKKwor CXNlcnZlcl92ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJj dkNvbm4pOworCXdzdGF0ZS0+c2hhcmVkLT5wcm90b192ZXJzaW9uID0KKwkJc2VydmVyX3ZlcnNp b24gPj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9O VU0gOgorCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1RXT1BI QVNFX1ZFUlNJT05fTlVNIDoKKwkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8gTE9HSUNBTFJF UF9QUk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgorCQlMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05f TlVNOworCisJd3N0YXRlLT5zaGFyZWQtPnN0cmVhbV94aWQgPSB4aWQ7CisJZW50cnktPndzdGF0 ZSA9IHdzdGF0ZTsKKwllbnRyeS0+eGlkID0geGlkOworCisJcmV0dXJuIHdzdGF0ZTsKK30KKwor LyoKKyAqIEZpbmQgdGhlIHByZXZpb3VzbHkgYXNzaWduZWQgd29ya2VyIGZvciB0aGUgZ2l2ZW4g dHJhbnNhY3Rpb24sIGlmIGFueS4KKyAqLworQXBwbHlCZ3dvcmtlckluZm8gKgorYXBwbHlfYmd3 b3JrZXJfZmluZChUcmFuc2FjdGlvbklkIHhpZCkKK3sKKwlib29sCQlmb3VuZDsKKwlBcHBseUJn d29ya2VyRW50cnkgKmVudHJ5ID0gTlVMTDsKKworCWlmICghVHJhbnNhY3Rpb25JZElzVmFsaWQo eGlkKSkKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAoQXBwbHlCZ3dvcmtlcnNIYXNoID09IE5VTEwp CisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBGaW5kIGVudHJ5IGZvciByZXF1ZXN0ZWQgdHJh bnNhY3Rpb24uCisJICovCisJZW50cnkgPSBoYXNoX3NlYXJjaChBcHBseUJnd29ya2Vyc0hhc2gs ICZ4aWQsIEhBU0hfRklORCwgJmZvdW5kKTsKKwlpZiAoZm91bmQpCisJeworCQljaGFyIHN0YXR1 cyA9IGVudHJ5LT53c3RhdGUtPnNoYXJlZC0+c3RhdHVzOworCisJCS8qIElmIGFueSB3b3JrZXJz IChvciB0aGUgcG9zdG1hc3RlcikgaGF2ZSBkaWVkLCB3ZSBoYXZlIGZhaWxlZC4gKi8KKwkJaWYg KHN0YXR1cyA9PSBBUFBMWV9CR1dPUktFUl9FWElUKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJ CSBlcnJtc2coImJhY2tncm91bmQgd29ya2VyICV1IGZhaWxlZCB0byBhcHBseSB0cmFuc2FjdGlv biAldSIsCisJCQkJCQkJZW50cnktPndzdGF0ZS0+c2hhcmVkLT53b3JrZXJfaWQsCisJCQkJCQkJ ZW50cnktPndzdGF0ZS0+c2hhcmVkLT5zdHJlYW1feGlkKSkpOworCisJCUFzc2VydChzdGF0dXMg PT0gQVBQTFlfQkdXT1JLRVJfQlVTWSk7CisKKwkJcmV0dXJuIGVudHJ5LT53c3RhdGU7CisJfQor CisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBBZGQgdGhlIHdvcmtlciB0byB0aGUgZnJlZSBs aXN0IGFuZCByZW1vdmUgdGhlIGVudHJ5IGZyb20gdGhlIGhhc2ggdGFibGUuCisgKi8KK3ZvaWQK K2FwcGx5X2Jnd29ya2VyX2ZyZWUoQXBwbHlCZ3dvcmtlckluZm8gKndzdGF0ZSkKK3sKKwlNZW1v cnlDb250ZXh0IG9sZGN0eDsKKwlUcmFuc2FjdGlvbklkIHhpZCA9IHdzdGF0ZS0+c2hhcmVkLT5z dHJlYW1feGlkOworCisJQXNzZXJ0KHdzdGF0ZS0+c2hhcmVkLT5zdGF0dXMgPT0gQVBQTFlfQkdX T1JLRVJfRklOSVNIRUQpOworCisJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5 Q29udGV4dCk7CisKKwloYXNoX3NlYXJjaChBcHBseUJnd29ya2Vyc0hhc2gsICZ4aWQsIEhBU0hf UkVNT1ZFLCBOVUxMKTsKKworCWVsb2coREVCVUcxLCAiYWRkaW5nIGZpbmlzaGVkIGFwcGx5IHdv cmtlciAjJXUgZm9yIHhpZCAldSB0byB0aGUgZnJlZSBsaXN0IiwKKwkJIHdzdGF0ZS0+c2hhcmVk LT53b3JrZXJfaWQsIHdzdGF0ZS0+c2hhcmVkLT5zdHJlYW1feGlkKTsKKworCUFwcGx5Qmd3b3Jr ZXJzRnJlZUxpc3QgPSBsYXBwZW5kKEFwcGx5Qmd3b3JrZXJzRnJlZUxpc3QsIHdzdGF0ZSk7CisK KwlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKK30KKworLyogQXBwbHkgQmFja2dyb3Vu ZCBXb3JrZXIgbWFpbiBsb29wLiAqLworc3RhdGljIHZvaWQKK0xvZ2ljYWxBcHBseUJnd0xvb3Ao c2htX21xX2hhbmRsZSAqbXFoLCB2b2xhdGlsZSBBcHBseUJnd29ya2VyU2hhcmVkICpzaGFyZWQp Cit7CisJc2htX21xX3Jlc3VsdCBzaG1xX3JlczsKKwlQR1BST0MJICAgKnJlZ2lzdHJhbnQ7CisJ RXJyb3JDb250ZXh0Q2FsbGJhY2sgZXJyY2FsbGJhY2s7CisKKwlyZWdpc3RyYW50ID0gQmFja2Vu ZFBpZEdldFByb2MoTXlCZ3dvcmtlckVudHJ5LT5iZ3dfbm90aWZ5X3BpZCk7CisJU2V0TGF0Y2go JnJlZ2lzdHJhbnQtPnByb2NMYXRjaCk7CisKKwkvKgorCSAqIEluaXQgdGhlIEFwcGx5TWVzc2Fn ZUNvbnRleHQgd2hpY2ggd2UgY2xlYW4gdXAgYWZ0ZXIgZWFjaCByZXBsaWNhdGlvbgorCSAqIHBy b3RvY29sIG1lc3NhZ2UuCisJICovCisJQXBwbHlNZXNzYWdlQ29udGV4dCA9IEFsbG9jU2V0Q29u dGV4dENyZWF0ZShBcHBseUNvbnRleHQsCisJCQkJCQkJCQkJCQkiQXBwbHlNZXNzYWdlQ29udGV4 dCIsCisJCQkJCQkJCQkJCQlBTExPQ1NFVF9ERUZBVUxUX1NJWkVTKTsKKworCS8qCisJICogUHVz aCBhcHBseSBlcnJvciBjb250ZXh0IGNhbGxiYWNrLiBGaWVsZHMgd2lsbCBiZSBmaWxsZWQgd2hp bGUgYXBwbHlpbmcKKwkgKiBhIGNoYW5nZS4KKwkgKi8KKwllcnJjYWxsYmFjay5jYWxsYmFjayA9 IGFwcGx5X2Vycm9yX2NhbGxiYWNrOworCWVycmNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29u dGV4dF9zdGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0gJmVycmNhbGxiYWNrOworCisJZm9y ICg7OykKKwl7CisJCXZvaWQJICAgKmRhdGE7CisJCVNpemUJCWxlbjsKKwkJaW50CQkJYzsKKwkJ U3RyaW5nSW5mb0RhdGEgczsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisKKwkJQ0hFQ0tfRk9S X0lOVEVSUlVQVFMoKTsKKworCQkvKiBFbnN1cmUgd2UgYXJlIHJlYWRpbmcgdGhlIGRhdGEgaW50 byBvdXIgbWVtb3J5IGNvbnRleHQuICovCisJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hU byhBcHBseU1lc3NhZ2VDb250ZXh0KTsKKworCQlzaG1xX3JlcyA9IHNobV9tcV9yZWNlaXZlKG1x aCwgJmxlbiwgJmRhdGEsIGZhbHNlKTsKKworCQlpZiAoc2htcV9yZXMgIT0gU0hNX01RX1NVQ0NF U1MpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1Rf SU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygibG9zdCBjb25uZWN0aW9uIHRv IHRoZSBtYWluIGFwcGx5IHdvcmtlciIpKSk7CisKKwkJaWYgKGxlbiA9PSAwKQorCQkJYnJlYWs7 CisKKwkJcy5jdXJzb3IgPSAwOworCQlzLm1heGxlbiA9IC0xOworCQlzLmRhdGEgPSAoY2hhciAq KSBkYXRhOworCQlzLmxlbiA9IGxlbjsKKworCQkvKgorCQkgKiBXZSB1c2UgZmlyc3QgYnl0ZSBv ZiBtZXNzYWdlIGZvciBhZGRpdGlvbmFsIGNvbW11bmljYXRpb24gYmV0d2VlbgorCQkgKiBtYWlu IExvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGFuZCBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMs IHNvIGlmCisJCSAqIGl0IGRpZmZlcnMgZnJvbSAndycsIHRoZW4gcHJvY2VzcyBpdCBmaXJzdC4K KwkJICovCisJCWMgPSBwcV9nZXRtc2dieXRlKCZzKTsKKwkJc3dpdGNoIChjKQorCQl7CisJCQkv KiBFbmQgbWVzc2FnZSBvZiBzdHJlYW1pbmcgY2h1bmsgKi8KKwkJCWNhc2UgTE9HSUNBTF9SRVBf TVNHX1NUUkVBTV9TVE9QOgorCQkJCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIGVuZGVk IHByb2Nlc3Npbmcgc3RyZWFtaW5nIGNodW5rLCAiCisJCQkJCSAid2FpdGluZyBvbiBzaG1fbXFf cmVjZWl2ZSIsIHNoYXJlZC0+d29ya2VyX2lkKTsKKworCQkJCWluX3N0cmVhbWVkX3RyYW5zYWN0 aW9uID0gZmFsc2U7CisJCQkJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFSU5UUkFO U0FDVElPTiwgTlVMTCk7CisJCQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJCQkJ Y29udGludWU7CisJCQljYXNlICd3JzoKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJZWxv ZyhFUlJPUiwgIltBcHBseSBCR1cgIyV1XSB1bmV4cGVjdGVkIG1lc3NhZ2UgXCIlY1wiIiwKKwkJ CQkJIHNoYXJlZC0+d29ya2VyX2lkLCBjKTsKKwkJCQlicmVhazsKKwkJfQorCisJCS8qCisJCSAq IElnbm9yZSBzdGF0aXN0aWNzIGZpZWxkcyB0aGF0IGhhdmUgYmVlbiB1cGRhdGVkIGJ5IHRoZSBt YWluIGFwcGx5CisJCSAqIHdvcmtlci4KKwkJICovCisJCXMuY3Vyc29yICs9IFNJWkVfU1RBVFNf TUVTU0FHRTsKKworCQlhcHBseV9kaXNwYXRjaCgmcyk7CisKKwkJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN0eCk7CisJCU1lbW9yeUNvbnRleHRSZXNldChBcHBseU1lc3NhZ2VDb250ZXh0KTsK KworCQlpZiAoQ29uZmlnUmVsb2FkUGVuZGluZykKKwkJeworCQkJQ29uZmlnUmVsb2FkUGVuZGlu ZyA9IGZhbHNlOworCQkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdDX1NJR0hVUCk7CisJCX0KKwl9CisK KwlNZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9wTWVtb3J5Q29udGV4dCk7CisKKwkvKiBQb3AgdGhl IGVycm9yIGNvbnRleHQgc3RhY2suICovCisJZXJyb3JfY29udGV4dF9zdGFjayA9IGVycmNhbGxi YWNrLnByZXZpb3VzOworCisJZWxvZyhERUJVRzEsICJbQXBwbHkgQkdXICMldV0gZXhpdGluZyIs IHNoYXJlZC0+d29ya2VyX2lkKTsKKworCS8qIFNpZ25hbCBtYWluIHByb2Nlc3MgdGhhdCB3ZSBh cmUgZG9uZS4gKi8KKwlTZXRMYXRjaCgmcmVnaXN0cmFudC0+cHJvY0xhdGNoKTsKK30KKworLyoK KyAqIFNldCB0aGUgZXhpdCBzdGF0dXMgc28gdGhhdCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgY2Fu IHJlYWxpemUgd2UgaGF2ZQorICogc2h1dGRvd24uCisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9i Z3dvcmtlcl9zaHV0ZG93bihpbnQgY29kZSwgRGF0dW0gYXJnKQoreworCWFwcGx5X2Jnd29ya2Vy X3NldF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfRVhJVCk7CisKKwlkc21fZGV0YWNoKChkc21fc2Vn bWVudCAqKSBEYXR1bUdldFBvaW50ZXIoYXJnKSk7Cit9CisKKy8qCisgKiBBcHBseSBCYWNrZ3Jv dW5kIFdvcmtlciBlbnRyeSBwb2ludC4KKyAqLwordm9pZAorQXBwbHlCZ3dvcmtlck1haW4oRGF0 dW0gbWFpbl9hcmcpCit7CisJdm9sYXRpbGUgQXBwbHlCZ3dvcmtlclNoYXJlZCAqc2hhcmVkOwor CisJZHNtX2hhbmRsZQloYW5kbGU7CisJZHNtX3NlZ21lbnQgKnNlZzsKKwlzaG1fdG9jICAgICp0 b2M7CisJc2htX21xCSAgICptcTsKKwlzaG1fbXFfaGFuZGxlICptcWg7CisJUmVwT3JpZ2luSWQg b3JpZ2luaWQ7CisJaW50CQkJd29ya2VyX3Nsb3QgPSBEYXR1bUdldEludDMyKG1haW5fYXJnKTsK KwljaGFyCQlvcmlnaW5uYW1lW05BTUVEQVRBTEVOXTsKKworCS8qIFNldHVwIHNpZ25hbCBoYW5k bGluZy4gKi8KKwlwcXNpZ25hbChTSUdIVVAsIFNpZ25hbEhhbmRsZXJGb3JDb25maWdSZWxvYWQp OworCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7CisJQmFja2dyb3VuZFdvcmtlclVuYmxvY2tTaWdu YWxzKCk7CisKKwkvKgorCSAqIEF0dGFjaCB0byB0aGUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNl Z21lbnQgZm9yIHRoZSBwYXJhbGxlbCBxdWVyeSwgYW5kCisJICogZmluZCBpdHMgdGFibGUgb2Yg Y29udGVudHMuCisJICoKKwkgKiBOb3RlOiBhdCB0aGlzIHBvaW50LCB3ZSBoYXZlIG5vdCBjcmVh dGVkIGFueSBSZXNvdXJjZU93bmVyIGluIHRoaXMKKwkgKiBwcm9jZXNzLiAgVGhpcyB3aWxsIHJl c3VsdCBpbiBvdXIgRFNNIG1hcHBpbmcgc3Vydml2aW5nIHVudGlsIHByb2Nlc3MKKwkgKiBleGl0 LCB3aGljaCBpcyBmaW5lLiAgSWYgdGhlcmUgd2VyZSBhIFJlc291cmNlT3duZXIsIGl0IHdvdWxk IGFjcXVpcmUKKwkgKiBvd25lcnNoaXAgb2YgdGhlIG1hcHBpbmcsIGJ1dCB3ZSBoYXZlIG5vIG5l ZWQgZm9yIHRoYXQuCisJICovCisJbWVtY3B5KCZoYW5kbGUsIE15Qmd3b3JrZXJFbnRyeS0+Ymd3 X2V4dHJhLCBzaXplb2YoZHNtX2hhbmRsZSkpOworCXNlZyA9IGRzbV9hdHRhY2goaGFuZGxlKTsK KwlpZiAoc2VnID09IE5VTEwpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09E RV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygidW5hYmxl IHRvIG1hcCBkeW5hbWljIHNoYXJlZCBtZW1vcnkgc2VnbWVudCIpKSk7CisJdG9jID0gc2htX3Rv Y19hdHRhY2goUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMsIGRzbV9zZWdtZW50X2FkZHJlc3Mo c2VnKSk7CisJaWYgKHRvYyA9PSBOVUxMKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2Rl KEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCSBlcnJtc2co ImJhZCBtYWdpYyBudW1iZXIgaW4gZHluYW1pYyBzaGFyZWQgbWVtb3J5IHNlZ21lbnQiKSkpOwor CisJYmVmb3JlX3NobWVtX2V4aXQoYXBwbHlfYmd3b3JrZXJfc2h1dGRvd24sIFBvaW50ZXJHZXRE YXR1bShzZWcpKTsKKworCS8qIExvb2sgdXAgdGhlIHNoYXJlZCBpbmZvcm1hdGlvbi4gKi8KKwlz aGFyZWQgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIEFQUExZX0JHV09SS0VSX0tFWV9TSEFSRUQsIGZh bHNlKTsKKwlNeVBhcmFsbGVsU2hhcmVkID0gc2hhcmVkOworCisJLyoKKwkgKiBBdHRhY2ggdG8g dGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJbXEgPSBzaG1fdG9jX2xvb2t1cCh0b2MsIEFQUExZ X0JHV09SS0VSX0tFWV9NUSwgZmFsc2UpOworCXNobV9tcV9zZXRfcmVjZWl2ZXIobXEsIE15UHJv Yyk7CisJbXFoID0gc2htX21xX2F0dGFjaChtcSwgc2VnLCBOVUxMKTsKKworCS8qCisJICogTm93 LCB3ZSBoYXZlIGluaXRpYWxpemVkIERTTS4gQXR0YWNoIHRvIHNsb3QuCisJICovCisJbG9naWNh bHJlcF93b3JrZXJfYXR0YWNoKHdvcmtlcl9zbG90KTsKKworCU15TG9naWNhbFJlcFdvcmtlci0+ bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KKwkJ TXlMb2dpY2FsUmVwV29ya2VyLT5yZXBseV90aW1lID0gMDsKKworCUluaXRpYWxpemVBcHBseVdv cmtlcigpOworCisJLyogU2V0dXAgcmVwbGljYXRpb24gb3JpZ2luIHRyYWNraW5nLiAqLworCVN0 YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJc25wcmludGYob3JpZ2lubmFtZSwgc2l6ZW9mKG9y aWdpbm5hbWUpLCAicGdfJXUiLCBNeVN1YnNjcmlwdGlvbi0+b2lkKTsKKwlvcmlnaW5pZCA9IHJl cGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCB0cnVlKTsKKwlpZiAoIU9pZElzVmFsaWQob3Jp Z2luaWQpKQorCQlvcmlnaW5pZCA9IHJlcGxvcmlnaW5fY3JlYXRlKG9yaWdpbm5hbWUpOworCisJ LyoKKwkgKiBUaGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgZG9lc24ndCBuZWVkIHRvIG1vbm9w b2xpemUgdGhpcyByZXBsaWNhdGlvbgorCSAqIG9yaWdpbiB3aGljaCB3YXMgYWxyZWFkeSBhY3F1 aXJlZCBieSBpdHMgbGVhZGVyIHByb2Nlc3MuCisJICovCisJcmVwbG9yaWdpbl9zZXNzaW9uX3Nl dHVwKG9yaWdpbmlkLCBNeUxvZ2ljYWxSZXBXb3JrZXItPm1haW5fd29ya2VyX3BpZCk7CisJcmVw bG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9IG9yaWdpbmlkOworCUNvbW1pdFRyYW5zYWN0aW9uQ29t bWFuZCgpOworCisJLyoKKwkgKiBTZXR1cCBjYWxsYmFjayBmb3Igc3lzY2FjaGUgc28gdGhhdCB3 ZSBrbm93IHdoZW4gc29tZXRoaW5nIGNoYW5nZXMgaW4KKwkgKiB0aGUgc3Vic2NyaXB0aW9uIHJl bGF0aW9uIHN0YXRlLgorCSAqLworCUNhY2hlUmVnaXN0ZXJTeXNjYWNoZUNhbGxiYWNrKFNVQlND UklQVElPTlJFTE1BUCwKKwkJCQkJCQkJICBpbnZhbGlkYXRlX3N5bmNpbmdfdGFibGVfc3RhdGVz LAorCQkJCQkJCQkgIChEYXR1bSkgMCk7CisKKwkvKgorCSAqIEFsbG9jYXRlIHRoZSBvcmlnaW4g bmFtZSBpbiBsb25nLWxpdmVkIGNvbnRleHQgZm9yIGVycm9yIGNvbnRleHQKKwkgKiBtZXNzYWdl LgorCSAqLworCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5vcmlnaW5fbmFtZSA9IE1lbW9yeUNv bnRleHRTdHJkdXAoQXBwbHlDb250ZXh0LAorCQkJCQkJCQkJCQkJCQkJICAgb3JpZ2lubmFtZSk7 CisKKwllbG9nKERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBzdGFydGVkIiwgc2hhcmVkLT53b3Jr ZXJfaWQpOworCisJTG9naWNhbEFwcGx5Qmd3TG9vcChtcWgsIHNoYXJlZCk7CisKKwkvKgorCSAq IFdlJ3JlIGRvbmUuICBFeHBsaWNpdGx5IGRldGFjaCB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50 IHNvIHRoYXQgd2UKKwkgKiBkb24ndCBnZXQgYSByZXNvdXJjZSBsZWFrIHdhcm5pbmcgYXQgY29t bWl0IHRpbWUuICBUaGlzIHdpbGwgZmlyZSBhbnkKKwkgKiBvbl9kc21fZGV0YWNoIGNhbGxiYWNr cyB3ZSd2ZSByZWdpc3RlcmVkLCBhcyB3ZWxsLiAgT25jZSB0aGF0J3MgZG9uZSwKKwkgKiB3ZSBj YW4gZ28gYWhlYWQgYW5kIGV4aXQuCisJICovCisJZHNtX2RldGFjaChzZWcpOworCXByb2NfZXhp dCgwKTsKK30KKworLyoKKyAqIFNldCB1cCBhIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50 LgorICoKKyAqIFdlIHNldCB1cCBhIGNvbnRyb2wgcmVnaW9uIHRoYXQgY29udGFpbnMgYSBBcHBs eUJnd29ya2VyU2hhcmVkLAorICogcGx1cyBvbmUgcmVnaW9uIHBlciBtZXNzYWdlIHF1ZXVlLiBU aGVyZSBhcmUgYXMgbWFueSBtZXNzYWdlIHF1ZXVlcyBhcworICogdGhlIG51bWJlciBvZiB3b3Jr ZXJzLgorICovCitzdGF0aWMgYm9vbAorYXBwbHlfYmd3b3JrZXJfc2V0dXBfZHNtKEFwcGx5Qmd3 b3JrZXJJbmZvICp3c3RhdGUpCit7CisJc2htX3RvY19lc3RpbWF0b3IgZTsKKwlTaXplCQlzZWdz aXplOworCWRzbV9zZWdtZW50ICpzZWc7CisJc2htX3RvYyAgICAqdG9jOworCUFwcGx5Qmd3b3Jr ZXJTaGFyZWQgKnNoYXJlZDsKKwlzaG1fbXEJICAgKm1xOworCWludDY0CQlxdWV1ZV9zaXplID0g RFNNX1FVRVVFX1NJWkU7CisJaW50CQkJc2VydmVyX3ZlcnNpb247CisKKwkvKgorCSAqIEVzdGlt YXRlIGhvdyBtdWNoIHNoYXJlZCBtZW1vcnkgd2UgbmVlZC4KKwkgKgorCSAqIEJlY2F1c2UgdGhl IFRPQyBtYWNoaW5lcnkgbWF5IGNob29zZSB0byBpbnNlcnQgcGFkZGluZyBvZiBvZGRseS1zaXpl ZAorCSAqIHJlcXVlc3RzLCB3ZSBtdXN0IGVzdGltYXRlIGVhY2ggY2h1bmsgc2VwYXJhdGVseS4K KwkgKgorCSAqIFdlIG5lZWQgb25lIGtleSB0byByZWdpc3RlciB0aGUgbG9jYXRpb24gb2YgdGhl IGhlYWRlciwgYW5kIHdlIG5lZWQKKwkgKiBhbm90aGVyIGtleSB0byB0cmFjayB0aGUgbG9jYXRp b24gb2YgdGhlIG1lc3NhZ2UgcXVldWUuCisJICovCisJc2htX3RvY19pbml0aWFsaXplX2VzdGlt YXRvcigmZSk7CisJc2htX3RvY19lc3RpbWF0ZV9jaHVuaygmZSwgc2l6ZW9mKEFwcGx5Qmd3b3Jr ZXJTaGFyZWQpKTsKKwlzaG1fdG9jX2VzdGltYXRlX2NodW5rKCZlLCAoU2l6ZSkgcXVldWVfc2l6 ZSk7CisKKwlzaG1fdG9jX2VzdGltYXRlX2tleXMoJmUsIDIpOworCXNlZ3NpemUgPSBzaG1fdG9j X2VzdGltYXRlKCZlKTsKKworCS8qIENyZWF0ZSB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGFu ZCBlc3RhYmxpc2ggYSB0YWJsZSBvZiBjb250ZW50cy4gKi8KKwlzZWcgPSBkc21fY3JlYXRlKHNo bV90b2NfZXN0aW1hdGUoJmUpLCAwKTsKKworCWlmIChzZWcgPT0gTlVMTCkKKwkJcmV0dXJuIGZh bHNlOworCisJdG9jID0gc2htX3RvY19jcmVhdGUoUEdfTE9HSUNBTF9BUFBMWV9TSE1fTUFHSUMs IGRzbV9zZWdtZW50X2FkZHJlc3Moc2VnKSwKKwkJCQkJCSBzZWdzaXplKTsKKworCS8qIFNldCB1 cCB0aGUgaGVhZGVyIHJlZ2lvbi4gKi8KKwlzaGFyZWQgPSBzaG1fdG9jX2FsbG9jYXRlKHRvYywg c2l6ZW9mKEFwcGx5Qmd3b3JrZXJTaGFyZWQpKTsKKwlTcGluTG9ja0luaXQoJnNoYXJlZC0+bXV0 ZXgpOworCXNoYXJlZC0+c3RhdHVzID0gQVBQTFlfQkdXT1JLRVJfQlVTWTsKKworCXNlcnZlcl92 ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOwor CXNoYXJlZC0+cHJvdG9fdmVyc2lvbiA9CisJCXNlcnZlcl92ZXJzaW9uID49IDE2MDAwMCA/IExP R0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDoKKwkJc2VydmVyX3Zl cnNpb24gPj0gMTUwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19UV09QSEFTRV9WRVJTSU9OX05VTSA6 CisJCXNlcnZlcl92ZXJzaW9uID49IDE0MDAwMCA/IExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1ZF UlNJT05fTlVNIDoKKwkJTE9HSUNBTFJFUF9QUk9UT19WRVJTSU9OX05VTTsKKworCXNoYXJlZC0+ c3RyZWFtX3hpZCA9IHN0cmVhbV94aWQ7CisJc2hhcmVkLT53b3JrZXJfaWQgPSBsaXN0X2xlbmd0 aChBcHBseUJnd29ya2Vyc0xpc3QpICsgMTsKKworCXNobV90b2NfaW5zZXJ0KHRvYywgQVBQTFlf QkdXT1JLRVJfS0VZX1NIQVJFRCwgc2hhcmVkKTsKKworCS8qIFNldCB1cCBtZXNzYWdlIHF1ZXVl IGZvciB0aGUgd29ya2VyLiAqLworCW1xID0gc2htX21xX2NyZWF0ZShzaG1fdG9jX2FsbG9jYXRl KHRvYywgKFNpemUpIHF1ZXVlX3NpemUpLAorCQkJCQkgICAoU2l6ZSkgcXVldWVfc2l6ZSk7CisJ c2htX3RvY19pbnNlcnQodG9jLCBBUFBMWV9CR1dPUktFUl9LRVlfTVEsIG1xKTsKKwlzaG1fbXFf c2V0X3NlbmRlcihtcSwgTXlQcm9jKTsKKworCS8qIEF0dGFjaCB0aGUgcXVldWUuICovCisJd3N0 YXRlLT5tcV9oYW5kbGUgPSBzaG1fbXFfYXR0YWNoKG1xLCBzZWcsIE5VTEwpOworCisJLyogUmV0 dXJuIHJlc3VsdHMgdG8gY2FsbGVyLiAqLworCXdzdGF0ZS0+ZHNtX3NlZyA9IHNlZzsKKwl3c3Rh dGUtPnNoYXJlZCA9IHNoYXJlZDsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICogU3RhcnQg YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgcHJvY2VzcyBhbmQgYWxsb2NhdGUgc2hhcmVkIG1lbW9y eSBmb3IgaXQuCisgKi8KK3N0YXRpYyBBcHBseUJnd29ya2VySW5mbyAqCithcHBseV9iZ3dvcmtl cl9zZXR1cCh2b2lkKQoreworCU1lbW9yeUNvbnRleHQgb2xkY29udGV4dDsKKwlib29sCQlsYXVu Y2hlZDsKKwlBcHBseUJnd29ya2VySW5mbyAqd3N0YXRlOworCWludAkJCW5hcHBseXdvcmtlcnM7 CisKKwllbG9nKERFQlVHMSwgInNldHRpbmcgdXAgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgIyV1 IiwKKwkJIGxpc3RfbGVuZ3RoKEFwcGx5Qmd3b3JrZXJzTGlzdCkgKyAxKTsKKworCS8qIENoZWNr IGlmIHRoZXJlIGFyZSBmcmVlIHdvcmtlciBzbG90KHMpLiAqLworCUxXTG9ja0FjcXVpcmUoTG9n aWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CisJbmFwcGx5d29ya2VycyA9IGxvZ2ljYWxy ZXBfYXBwbHlfYmd3b3JrZXJfY291bnQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCk7CisJTFdM b2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisKKwlpZiAobmFwcGx5d29ya2VycyA+ PSBtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24pCisJCXJldHVybiBOVUxMOwor CisJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCisJ d3N0YXRlID0gKEFwcGx5Qmd3b3JrZXJJbmZvICopIHBhbGxvYzAoc2l6ZW9mKEFwcGx5Qmd3b3Jr ZXJJbmZvKSk7CisKKwkvKiBTZXR1cCBzaGFyZWQgbWVtb3J5LiAqLworCWlmICghYXBwbHlfYmd3 b3JrZXJfc2V0dXBfZHNtKHdzdGF0ZSkpCisJeworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xk Y29udGV4dCk7CisJCXBmcmVlKHdzdGF0ZSk7CisKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJbGF1 bmNoZWQgPSBsb2dpY2FscmVwX3dvcmtlcl9sYXVuY2goTXlMb2dpY2FsUmVwV29ya2VyLT5kYmlk LAorCQkJCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJTXlTdWJzY3JpcHRp b24tPm5hbWUsCisJCQkJCQkJCQkJTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCisJCQkJCQkJ CQkJSW52YWxpZE9pZCwKKwkJCQkJCQkJCQlkc21fc2VnbWVudF9oYW5kbGUod3N0YXRlLT5kc21f c2VnKSk7CisKKwlpZiAobGF1bmNoZWQpCisJCUFwcGx5Qmd3b3JrZXJzTGlzdCA9IGxhcHBlbmQo QXBwbHlCZ3dvcmtlcnNMaXN0LCB3c3RhdGUpOworCWVsc2UKKwl7CisJCWRzbV9kZXRhY2god3N0 YXRlLT5kc21fc2VnKTsKKwkJd3N0YXRlLT5kc21fc2VnID0gTlVMTDsKKworCQlwZnJlZSh3c3Rh dGUpOworCQl3c3RhdGUgPSBOVUxMOworCX0KKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRj b250ZXh0KTsKKworCXJldHVybiB3c3RhdGU7Cit9CisKKy8qCisgKiBTZW5kIHRoZSBkYXRhIHRv IHRoZSBzcGVjaWZpZWQgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgdmlhIHNoYXJlZC1tZW1vcnkg cXVldWUuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YShBcHBseUJnd29ya2Vy SW5mbyAqd3N0YXRlLCBTaXplIG5ieXRlcywgY29uc3Qgdm9pZCAqZGF0YSkKK3sKKwlzaG1fbXFf cmVzdWx0IHJlc3VsdDsKKworCXJlc3VsdCA9IHNobV9tcV9zZW5kKHdzdGF0ZS0+bXFfaGFuZGxl LCBuYnl0ZXMsIGRhdGEsIGZhbHNlLCB0cnVlKTsKKworCWlmIChyZXN1bHQgIT0gU0hNX01RX1NV Q0NFU1MpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9U X0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJIGVycm1zZygiY291bGQgbm90IHNlbmQgZGF0 YSB0byBzaGFyZWQtbWVtb3J5IHF1ZXVlIikpKTsKK30KKworLyoKKyAqIFdhaXQgdW50aWwgdGhl IHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciByZWFjaGVzIHRoZQorICogJ3dhaXRf Zm9yX3N0YXR1cycuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3dhaXRfZm9yKEFwcGx5Qmd3 b3JrZXJJbmZvICp3c3RhdGUsCisJCQkJCQlBcHBseUJnd29ya2VyU3RhdHVzIHdhaXRfZm9yX3N0 YXR1cykKK3sKKwlmb3IgKDs7KQorCXsKKwkJY2hhcgkJc3RhdHVzOworCisJCVNwaW5Mb2NrQWNx dWlyZSgmd3N0YXRlLT5zaGFyZWQtPm11dGV4KTsKKwkJc3RhdHVzID0gd3N0YXRlLT5zaGFyZWQt PnN0YXR1czsKKwkJU3BpbkxvY2tSZWxlYXNlKCZ3c3RhdGUtPnNoYXJlZC0+bXV0ZXgpOworCisJ CS8qIERvbmUgaWYgYWxyZWFkeSBpbiBjb3JyZWN0IHN0YXR1cy4gKi8KKwkJaWYgKHN0YXR1cyA9 PSB3YWl0X2Zvcl9zdGF0dXMpCisJCQlicmVhazsKKworCQkvKiBJZiBhbnkgd29ya2VycyBoYXZl IGRpZWQsIHdlIGhhdmUgZmFpbGVkLiAqLworCQlpZiAoc3RhdHVzID09IEFQUExZX0JHV09SS0VS X0VYSVQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9O T1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygiYXBwbHkgYmFja2dyb3Vu ZCB3b3JrZXIgJXUgZmFpbGVkIHRvIGFwcGx5IHRyYW5zYWN0aW9uICV1IiwKKwkJCQkJCQl3c3Rh dGUtPnNoYXJlZC0+d29ya2VyX2lkLCB3c3RhdGUtPnNoYXJlZC0+c3RyZWFtX3hpZCkpKTsKKwor CQkvKiBXYWl0IHRvIGJlIHNpZ25hbGxlZC4gKi8KKwkJKHZvaWQpIFdhaXRMYXRjaChNeUxhdGNo LCBXTF9MQVRDSF9TRVQgfCBXTF9FWElUX09OX1BNX0RFQVRILCAwLAorCQkJCQkJIFdBSVRfRVZF TlRfTE9HSUNBTF9BUFBMWV9CR1dPUktFUl9TVEFURV9DSEFOR0UpOworCisJCS8qIFJlc2V0IHRo ZSBsYXRjaCBzbyB3ZSBkb24ndCBzcGluLiAqLworCQlSZXNldExhdGNoKE15TGF0Y2gpOworCisJ CS8qIEFuIGludGVycnVwdCBtYXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlIHdhaXRpbmcu ICovCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisJfQorfQorCisvKgorICogQ2hlY2sgdGhl IHN0YXR1cyBvZiB3b3JrZXJzIGFuZCByZXBvcnQgYW4gZXJyb3IgaWYgYW55IGFwcGx5IGJhY2tn cm91bmQKKyAqIHdvcmtlciBoYXMgZXhpdGVkIHVuZXhwZWN0ZWRseS4KKyAqLwordm9pZAorYXBw bHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlp ZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSB8fCBNeVN1YnNjcmlwdGlvbi0+c3RyZWFtICE9IFNVQlNU UkVBTV9QQVJBTExFTCkKKwkJcmV0dXJuOworCisJZm9yZWFjaChsYywgQXBwbHlCZ3dvcmtlcnNM aXN0KQorCXsKKwkJQXBwbHlCZ3dvcmtlckluZm8gKndzdGF0ZSA9IChBcHBseUJnd29ya2VySW5m byAqKSBsZmlyc3QobGMpOworCisJCS8qCisJCSAqIFdlIGRvbid0IGxvY2sgaGVyZSBhcyBpbiB0 aGUgd29yc3QgY2FzZSB3ZSB3aWxsIGp1c3QgZGV0ZWN0IHRoZQorCQkgKiBmYWlsdXJlIG9mIHdv cmtlciBhIGJpdCBsYXRlci4KKwkJICovCisJCWlmICh3c3RhdGUtPnNoYXJlZC0+c3RhdHVzID09 IEFQUExZX0JHV09SS0VSX0VYSVQpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShF UlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJIGVycm1zZygi YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgJXUgZXhpdGVkIHVuZXhwZWN0ZWRseSIsCisJCQkJCQkJ d3N0YXRlLT5zaGFyZWQtPndvcmtlcl9pZCkpKTsKKwl9Cit9CisKKy8qIFNldCB0aGUgYXBwbHkg YmFja2dyb3VuZCB3b3JrZXIgc3RhdHVzLiAqLwordm9pZAorYXBwbHlfYmd3b3JrZXJfc2V0X3N0 YXR1cyhBcHBseUJnd29ya2VyU3RhdHVzIHN0YXR1cykKK3sKKwlpZiAoIWFtX2FwcGx5X2Jnd29y a2VyKCkpCisJCXJldHVybjsKKworCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIHNldCBz dGF0dXMgdG8gJWQiLCBNeVBhcmFsbGVsU2hhcmVkLT53b3JrZXJfaWQsIHN0YXR1cyk7CisKKwlT cGluTG9ja0FjcXVpcmUoJk15UGFyYWxsZWxTaGFyZWQtPm11dGV4KTsKKwlNeVBhcmFsbGVsU2hh cmVkLT5zdGF0dXMgPSBzdGF0dXM7CisJU3BpbkxvY2tSZWxlYXNlKCZNeVBhcmFsbGVsU2hhcmVk LT5tdXRleCk7Cit9CisKKy8qCisgKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEgc3VieGFjdCBp biBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBuZWVkZWQuCisgKgorICogVGhlIGFwcGx5IGJh Y2tncm91bmQgd29ya2VyIGNhbiBmaWd1cmUgb3V0IGlmIGEgbmV3IHN1YnRyYW5zYWN0aW9uIHdh cworICogc3RhcnRlZCBieSBjaGVja2luZyBpZiB0aGUgbmV3IGNoYW5nZSBhcnJpdmVkIHdpdGgg ZGlmZmVyZW50IHhpZC4gSW4gdGhhdAorICogY2FzZSBkZWZpbmUgYSBuYW1lZCBzYXZlcG9pbnQs IHNvIHRoYXQgd2UgYXJlIGFibGUgdG8gY29tbWl0L3JvbGxiYWNrIGl0CisgKiBzZXBhcmF0ZWx5 IGxhdGVyLgorICovCit2b2lkCithcHBseV9iZ3dvcmtlcl9zdWJ4YWN0X2luZm9fYWRkKFRyYW5z YWN0aW9uSWQgY3VycmVudF94aWQpCit7CisJaWYgKGN1cnJlbnRfeGlkICE9IHN0cmVhbV94aWQg JiYKKwkJIWxpc3RfbWVtYmVyX2ludChzdWJ4YWN0bGlzdCwgKGludCkgY3VycmVudF94aWQpKQor CXsKKwkJTWVtb3J5Q29udGV4dCBvbGRjdHg7CisJCWNoYXIJCXNwbmFtZVtNQVhQR1BBVEhdOwor CisJCWFwcGx5X2Jnd29ya2VyX3NhdmVwb2ludF9uYW1lKE15U3Vic2NyaXB0aW9uLT5vaWQsIGN1 cnJlbnRfeGlkLAorCQkJCQkJCQkJICBzcG5hbWUsIHNpemVvZihzcG5hbWUpKTsKKworCQllbG9n KERFQlVHMSwgIltBcHBseSBCR1cgIyV1XSBkZWZpbmluZyBzYXZlcG9pbnQgJXMiLAorCQkJIE15 UGFyYWxsZWxTaGFyZWQtPndvcmtlcl9pZCwgc3BuYW1lKTsKKworCQlEZWZpbmVTYXZlcG9pbnQo c3BuYW1lKTsKKworCQkvKgorCQkgKiBDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQgaXMgbmVlZGVk IHRvIHN0YXJ0IGEgc3VidHJhbnNhY3Rpb24gYWZ0ZXIKKwkJICogaXNzdWluZyBhIFNBVkVQT0lO VCBpbnNpZGUgYSB0cmFuc2FjdGlvbiBibG9jayhzZWUKKwkJICogU3RhcnRTdWJUcmFuc2FjdGlv bigpKS4KKwkJICovCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCisJCW9sZGN0eCA9 IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQlzdWJ4YWN0bGlzdCA9IGxh cHBlbmRfaW50KHN1YnhhY3RsaXN0LCAoaW50KSBjdXJyZW50X3hpZCk7CisJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhvbGRjdHgpOworCX0KK30KKworLyoKKyAqIEZvcm0gdGhlIHNhdmVwb2ludCBu YW1lIGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb24uCisgKgorICogUmV0dXJuIHRoZSBuYW1lIGlu IHRoZSBzdXBwbGllZCBidWZmZXIuCisgKi8KK3ZvaWQKK2FwcGx5X2Jnd29ya2VyX3NhdmVwb2lu dF9uYW1lKE9pZCBzdWJvaWQsIFRyYW5zYWN0aW9uSWQgeGlkLAorCQkJCQkJCSAgY2hhciAqc3Bu YW1lLCBpbnQgc3pzcCkKK3sKKwlzbnByaW50ZihzcG5hbWUsIHN6c3AsICJwZ19zcF8ldV8ldSIs IHN1Ym9pZCwgeGlkKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5j CmluZGV4IDE2NjdkNzIwYjEuLmE0Mzc2ODM3ZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9kZWNvZGUuYwpAQCAtNjUyLDkgKzY1MiwxMCBAQCBEZWNvZGVDb21taXQoTG9naWNh bERlY29kaW5nQ29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYsCiAJewogCQlmb3Ig KGkgPSAwOyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewotCQkJUmVvcmRlckJ1ZmZl ckZvcmdldChjdHgtPnJlb3JkZXIsIHBhcnNlZC0+c3VieGFjdHNbaV0sIGJ1Zi0+b3JpZ3B0cik7 CisJCQlSZW9yZGVyQnVmZmVyRm9yZ2V0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tp XSwgYnVmLT5vcmlncHRyLAorCQkJCQkJCQljb21taXRfdGltZSk7CiAJCX0KLQkJUmVvcmRlckJ1 ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyKTsKKwkJUmVvcmRlckJ1 ZmZlckZvcmdldChjdHgtPnJlb3JkZXIsIHhpZCwgYnVmLT5vcmlncHRyLCBjb21taXRfdGltZSk7 CiAKIAkJcmV0dXJuOwogCX0KQEAgLTgyMiwxMCArODIzLDExIEBAIERlY29kZUFib3J0KExvZ2lj YWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmLAogCQlmb3IgKGkg PSAwOyBpIDwgcGFyc2VkLT5uc3VieGFjdHM7IGkrKykKIAkJewogCQkJUmVvcmRlckJ1ZmZlckFi b3J0KGN0eC0+cmVvcmRlciwgcGFyc2VkLT5zdWJ4YWN0c1tpXSwKLQkJCQkJCQkgICBidWYtPnJl Y29yZC0+RW5kUmVjUHRyKTsKKwkJCQkJCQkgICBidWYtPnJlY29yZC0+RW5kUmVjUHRyLCBhYm9y dF90aW1lKTsKIAkJfQogCi0JCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3JkZXIsIHhpZCwg YnVmLT5yZWNvcmQtPkVuZFJlY1B0cik7CisJCVJlb3JkZXJCdWZmZXJBYm9ydChjdHgtPnJlb3Jk ZXIsIHhpZCwgYnVmLT5yZWNvcmQtPkVuZFJlY1B0ciwKKwkJCQkJCSAgIGFib3J0X3RpbWUpOwog CX0KIAogCS8qIHVwZGF0ZSB0aGUgZGVjb2Rpbmcgc3RhdHMgKi8KZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRleCAzYmJkNTIyNzI0Li44MjVlNzU2M2Y2IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKKysr IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jCkBAIC01NCw2ICs1 NCw3IEBACiAKIGludAkJCW1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0OwogaW50 CQkJbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vic2NyaXB0aW9uID0gMjsKK2ludAkJCW1heF9hcHBs eV9iZ3dvcmtlcnNfcGVyX3N1YnNjcmlwdGlvbiA9IDI7CiAKIExvZ2ljYWxSZXBXb3JrZXIgKk15 TG9naWNhbFJlcFdvcmtlciA9IE5VTEw7CiAKQEAgLTczLDYgKzc0LDcgQEAgc3RhdGljIHZvaWQg bG9naWNhbHJlcF9sYXVuY2hlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMg dm9pZCBsb2dpY2FscmVwX3dvcmtlcl9vbmV4aXQoaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0 aWMgdm9pZCBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2godm9pZCk7CiBzdGF0aWMgdm9pZCBsb2dp Y2FscmVwX3dvcmtlcl9jbGVhbnVwKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlcik7CitzdGF0aWMg dm9pZCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wX2ludGVybmFsKExvZ2ljYWxSZXBXb3JrZXIgKndv cmtlcik7CiAKIHN0YXRpYyBib29sIG9uX2NvbW1pdF9sYXVuY2hlcl93YWtldXAgPSBmYWxzZTsK IApAQCAtMTUxLDggKzE1MywxMCBAQCBnZXRfc3Vic2NyaXB0aW9uX2xpc3Qodm9pZCkKICAqCiAg KiBUaGlzIGlzIG9ubHkgbmVlZGVkIGZvciBjbGVhbmluZyB1cCB0aGUgc2hhcmVkIG1lbW9yeSBp biBjYXNlIHRoZSB3b3JrZXIKICAqIGZhaWxzIHRvIGF0dGFjaC4KKyAqCisgKiBSZXR1cm4gd2hl dGhlciB0aGUgYXR0YWNoIHdhcyBzdWNjZXNzZnVsLgogICovCi1zdGF0aWMgdm9pZAorc3RhdGlj IGJvb2wKIFdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaChMb2dpY2FsUmVwV29ya2VyICp3 b3JrZXIsCiAJCQkJCQkJICAgdWludDE2IGdlbmVyYXRpb24sCiAJCQkJCQkJICAgQmFja2dyb3Vu ZFdvcmtlckhhbmRsZSAqaGFuZGxlKQpAQCAtMTY4LDExICsxNzIsMTEgQEAgV2FpdEZvclJlcGxp Y2F0aW9uV29ya2VyQXR0YWNoKExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAogCQlMV0xvY2tB Y3F1aXJlKExvZ2ljYWxSZXBXb3JrZXJMb2NrLCBMV19TSEFSRUQpOwogCi0JCS8qIFdvcmtlciBl aXRoZXIgZGllZCBvciBoYXMgc3RhcnRlZDsgbm8gbmVlZCB0byBkbyBhbnl0aGluZy4gKi8KKwkJ LyogV29ya2VyIGVpdGhlciBkaWVkIG9yIGhhcyBzdGFydGVkLiBSZXR1cm4gZmFsc2UgaWYgZGll ZC4gKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3b3JrZXItPnByb2MpCiAJCXsKIAkJCUxX TG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOwotCQkJcmV0dXJuOworCQkJcmV0dXJu IHdvcmtlci0+aW5fdXNlOwogCQl9CiAKIAkJTFdMb2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2Vy TG9jayk7CkBAIC0xODcsNyArMTkxLDcgQEAgV2FpdEZvclJlcGxpY2F0aW9uV29ya2VyQXR0YWNo KExvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciwKIAkJCWlmIChnZW5lcmF0aW9uID09IHdvcmtlci0+ Z2VuZXJhdGlvbikKIAkJCQlsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKHdvcmtlcik7CiAJCQlM V0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJCXJldHVybjsKKwkJCXJldHVy biBmYWxzZTsKIAkJfQogCiAJCS8qCkBAIC0yMjMsNiArMjI3LDEzIEBAIGxvZ2ljYWxyZXBfd29y a2VyX2ZpbmQoT2lkIHN1YmlkLCBPaWQgcmVsaWQsIGJvb2wgb25seV9ydW5uaW5nKQogCXsKIAkJ TG9naWNhbFJlcFdvcmtlciAqdyA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW2ldOwogCisJCS8q CisJCSAqIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIG1haW4gYXBwbHkgd29ya2VyIG9y IHRhYmxlIHN5bmMgd29ya2VyCisJCSAqIGhlcmUuCisJCSAqLworCQlpZiAody0+bWFpbl93b3Jr ZXJfcGlkICE9IDApCisJCQljb250aW51ZTsKKwogCQlpZiAody0+aW5fdXNlICYmIHctPnN1Ymlk ID09IHN1YmlkICYmIHctPnJlbGlkID09IHJlbGlkICYmCiAJCQkoIW9ubHlfcnVubmluZyB8fCB3 LT5wcm9jKSkKIAkJewpAQCAtMjU5LDExICsyNzAsMTEgQEAgbG9naWNhbHJlcF93b3JrZXJzX2Zp bmQoT2lkIHN1YmlkLCBib29sIG9ubHlfcnVubmluZykKIH0KIAogLyoKLSAqIFN0YXJ0IG5ldyBh cHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgaWYgcG9zc2libGUuCisgKiBTdGFydCBuZXcgYmFja2dy b3VuZCB3b3JrZXIsIGlmIHBvc3NpYmxlLgogICovCi12b2lkCitib29sCiBsb2dpY2FscmVwX3dv cmtlcl9sYXVuY2goT2lkIGRiaWQsIE9pZCBzdWJpZCwgY29uc3QgY2hhciAqc3VibmFtZSwgT2lk IHVzZXJpZCwKLQkJCQkJCSBPaWQgcmVsaWQpCisJCQkJCQkgT2lkIHJlbGlkLCBkc21faGFuZGxl IHN1Yndvcmtlcl9kc20pCiB7CiAJQmFja2dyb3VuZFdvcmtlciBiZ3c7CiAJQmFja2dyb3VuZFdv cmtlckhhbmRsZSAqYmd3X2hhbmRsZTsKQEAgLTI3Myw2ICsyODQsMTAgQEAgbG9naWNhbHJlcF93 b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1Ym5hbWUsIE9p ZCB1c2VyaWQsCiAJTG9naWNhbFJlcFdvcmtlciAqd29ya2VyID0gTlVMTDsKIAlpbnQJCQluc3lu Y3dvcmtlcnM7CiAJVGltZXN0YW1wVHogbm93OworCWJvb2wJCWlzX3N1YndvcmtlciA9IChzdWJ3 b3JrZXJfZHNtICE9IERTTV9IQU5ETEVfSU5WQUxJRCk7CisKKwkvKiBTYW5pdHkgY2hlY2s6IHdl IGRvbid0IHN1cHBvcnQgdGFibGUgc3luYyBpbiBzdWJ3b3JrZXIuICovCisJQXNzZXJ0KCEoaXNf c3Vid29ya2VyICYmIE9pZElzVmFsaWQocmVsaWQpKSk7CiAKIAllcmVwb3J0KERFQlVHMSwKIAkJ CShlcnJtc2dfaW50ZXJuYWwoInN0YXJ0aW5nIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZv ciBzdWJzY3JpcHRpb24gXCIlc1wiIiwKQEAgLTM1MCw3ICszNjUsNyBAQCByZXRyeToKIAlpZiAo T2lkSXNWYWxpZChyZWxpZCkgJiYgbnN5bmN3b3JrZXJzID49IG1heF9zeW5jX3dvcmtlcnNfcGVy X3N1YnNjcmlwdGlvbikKIAl7CiAJCUxXTG9ja1JlbGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2sp OwotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAl9CiAKIAkvKgpAQCAtMzY0LDcgKzM3OSw3 IEBAIHJldHJ5OgogCQkJCShlcnJjb2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENF RURFRCksCiAJCQkJIGVycm1zZygib3V0IG9mIGxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIHNs b3RzIiksCiAJCQkJIGVycmhpbnQoIllvdSBtaWdodCBuZWVkIHRvIGluY3JlYXNlIG1heF9sb2dp Y2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMuIikpKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gZmFsc2U7 CiAJfQogCiAJLyogUHJlcGFyZSB0aGUgd29ya2VyIHNsb3QuICovCkBAIC0zNzksNiArMzk0LDcg QEAgcmV0cnk6CiAJd29ya2VyLT5yZWxzdGF0ZSA9IFNVQlJFTF9TVEFURV9VTktOT1dOOwogCXdv cmtlci0+cmVsc3RhdGVfbHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJd29ya2VyLT5zdHJlYW1f ZmlsZXNldCA9IE5VTEw7CisJd29ya2VyLT5tYWluX3dvcmtlcl9waWQgPSBpc19zdWJ3b3JrZXIg PyBNeVByb2NQaWQgOiAwOwogCXdvcmtlci0+bGFzdF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsK IAlUSU1FU1RBTVBfTk9CRUdJTih3b3JrZXItPmxhc3Rfc2VuZF90aW1lKTsKIAlUSU1FU1RBTVBf Tk9CRUdJTih3b3JrZXItPmxhc3RfcmVjdl90aW1lKTsKQEAgLTM5NiwxMCArNDEyLDE4IEBAIHJl dHJ5OgogCQlCR1dPUktFUl9CQUNLRU5EX0RBVEFCQVNFX0NPTk5FQ1RJT047CiAJYmd3LmJnd19z dGFydF90aW1lID0gQmdXb3JrZXJTdGFydF9SZWNvdmVyeUZpbmlzaGVkOwogCXNucHJpbnRmKGJn dy5iZ3dfbGlicmFyeV9uYW1lLCBCR1dfTUFYTEVOLCAicG9zdGdyZXMiKTsKLQlzbnByaW50Zihi Z3cuYmd3X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKwor CWlmIChpc19zdWJ3b3JrZXIpCisJCXNucHJpbnRmKGJndy5iZ3dfZnVuY3Rpb25fbmFtZSwgQkdX X01BWExFTiwgIkFwcGx5Qmd3b3JrZXJNYWluIik7CisJZWxzZQorCQlzbnByaW50ZihiZ3cuYmd3 X2Z1bmN0aW9uX25hbWUsIEJHV19NQVhMRU4sICJBcHBseVdvcmtlck1haW4iKTsKKwogCWlmIChP aWRJc1ZhbGlkKHJlbGlkKSkKIAkJc25wcmludGYoYmd3LmJnd19uYW1lLCBCR1dfTUFYTEVOLAog CQkJCSAibG9naWNhbCByZXBsaWNhdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSBzeW5j ICV1Iiwgc3ViaWQsIHJlbGlkKTsKKwllbHNlIGlmIChpc19zdWJ3b3JrZXIpCisJCXNucHJpbnRm KGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKKwkJCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiAldSIsIHN1YmlkKTsKIAllbHNl CiAJCXNucHJpbnRmKGJndy5iZ3dfbmFtZSwgQkdXX01BWExFTiwKIAkJCQkgImxvZ2ljYWwgcmVw bGljYXRpb24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gJXUiLCBzdWJpZCk7CkBAIC00MDksNiAr NDMzLDkgQEAgcmV0cnk6CiAJYmd3LmJnd19ub3RpZnlfcGlkID0gTXlQcm9jUGlkOwogCWJndy5i Z3dfbWFpbl9hcmcgPSBJbnQzMkdldERhdHVtKHNsb3QpOwogCisJaWYgKGlzX3N1YndvcmtlcikK KwkJbWVtY3B5KGJndy5iZ3dfZXh0cmEsICZzdWJ3b3JrZXJfZHNtLCBzaXplb2YoZHNtX2hhbmRs ZSkpOworCiAJaWYgKCFSZWdpc3RlckR5bmFtaWNCYWNrZ3JvdW5kV29ya2VyKCZiZ3csICZiZ3df aGFuZGxlKSkKIAl7CiAJCS8qIEZhaWxlZCB0byBzdGFydCB3b3JrZXIsIHNvIGNsZWFuIHVwIHRo ZSB3b3JrZXIgc2xvdC4gKi8KQEAgLTQyMSwxMSArNDQ4LDExIEBAIHJldHJ5OgogCQkJCShlcnJj b2RlKEVSUkNPREVfQ09ORklHVVJBVElPTl9MSU1JVF9FWENFRURFRCksCiAJCQkJIGVycm1zZygi b3V0IG9mIGJhY2tncm91bmQgd29ya2VyIHNsb3RzIiksCiAJCQkJIGVycmhpbnQoIllvdSBtaWdo dCBuZWVkIHRvIGluY3JlYXNlIG1heF93b3JrZXJfcHJvY2Vzc2VzLiIpKSk7Ci0JCXJldHVybjsK KwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8qIE5vdyB3YWl0IHVudGlsIGl0IGF0dGFjaGVzLiAq LwotCVdhaXRGb3JSZXBsaWNhdGlvbldvcmtlckF0dGFjaCh3b3JrZXIsIGdlbmVyYXRpb24sIGJn d19oYW5kbGUpOworCXJldHVybiBXYWl0Rm9yUmVwbGljYXRpb25Xb3JrZXJBdHRhY2god29ya2Vy LCBnZW5lcmF0aW9uLCBiZ3dfaGFuZGxlKTsKIH0KIAogLyoKQEAgLTQzNiwxOSArNDYzLDMxIEBA IHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBPaWQgcmVsaWQpCiB7CiAJ TG9naWNhbFJlcFdvcmtlciAqd29ya2VyOwotCXVpbnQxNgkJZ2VuZXJhdGlvbjsKIAogCUxXTG9j a0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7CiAKIAl3b3JrZXIgPSBs b2dpY2FscmVwX3dvcmtlcl9maW5kKHN1YmlkLCByZWxpZCwgZmFsc2UpOwogCi0JLyogTm8gd29y a2VyLCBub3RoaW5nIHRvIGRvLiAqLwotCWlmICghd29ya2VyKQorCWlmICh3b3JrZXIpCiAJewot CQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKLQkJcmV0dXJuOworCQlBc3Nl cnQod29ya2VyLT5tYWluX3dvcmtlcl9waWQgPT0gMCk7CisJCWxvZ2ljYWxyZXBfd29ya2VyX3N0 b3BfaW50ZXJuYWwod29ya2VyKTsKIAl9CiAKKwlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3Jr ZXJMb2NrKTsKK30KKworLyoKKyAqIFdvcmtob3JzZSBmb3IgbG9naWNhbHJlcF93b3JrZXJfc3Rv cCgpIGFuZCBsb2dpY2FscmVwX3dvcmtlcl9kZXRhY2goKS4gU3RvcAorICogdGhlIHdvcmtlciBh bmQgd2FpdCBmb3IgaXQgdG8gZGllLgorICovCitzdGF0aWMgdm9pZAorbG9naWNhbHJlcF93b3Jr ZXJfc3RvcF9pbnRlcm5hbChMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpCit7CisJdWludDE2CQln ZW5lcmF0aW9uOworCisJQXNzZXJ0KExXTG9ja0hlbGRCeU1lKExvZ2ljYWxSZXBXb3JrZXJMb2Nr KSk7CisKIAkvKgogCSAqIFJlbWVtYmVyIHdoaWNoIGdlbmVyYXRpb24gd2FzIG91ciB3b3JrZXIg c28gd2UgY2FuIGNoZWNrIGlmIHdoYXQgd2Ugc2VlCiAJICogaXMgc3RpbGwgdGhlIHNhbWUgb25l LgpAQCAtNDg1LDEwICs1MjQsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9zdG9wKE9pZCBzdWJpZCwg T2lkIHJlbGlkKQogCQkgKiBkaWZmZXJlbnQsIG1lYW5pbmcgdGhhdCBhIGRpZmZlcmVudCB3b3Jr ZXIgaGFzIHRha2VuIHRoZSBzbG90LgogCQkgKi8KIAkJaWYgKCF3b3JrZXItPmluX3VzZSB8fCB3 b3JrZXItPmdlbmVyYXRpb24gIT0gZ2VuZXJhdGlvbikKLQkJewotCQkJTFdMb2NrUmVsZWFzZShM b2dpY2FsUmVwV29ya2VyTG9jayk7CiAJCQlyZXR1cm47Ci0JCX0KIAogCQkvKiBXb3JrZXIgaGFz IGFzc2lnbmVkIHByb2MsIHNvIGl0IGhhcyBzdGFydGVkLiAqLwogCQlpZiAod29ya2VyLT5wcm9j KQpAQCAtNTIyLDggKzU1OCw2IEBAIGxvZ2ljYWxyZXBfd29ya2VyX3N0b3AoT2lkIHN1YmlkLCBP aWQgcmVsaWQpCiAKIAkJTFdMb2NrQWNxdWlyZShMb2dpY2FsUmVwV29ya2VyTG9jaywgTFdfU0hB UkVEKTsKIAl9Ci0KLQlMV0xvY2tSZWxlYXNlKExvZ2ljYWxSZXBXb3JrZXJMb2NrKTsKIH0KIAog LyoKQEAgLTU5OSw2ICs2MzMsMjkgQEAgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90 KQogc3RhdGljIHZvaWQKIGxvZ2ljYWxyZXBfd29ya2VyX2RldGFjaCh2b2lkKQogeworCS8qCisJ ICogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIsIHN0b3AgYWxsIHRoZSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlcnMKKwkgKiBwcmV2aW91c2x5IHN0YXJ0ZWQgZnJvbSBoZXJlLgorCSAqLwor CWlmIChNeUxvZ2ljYWxSZXBXb3JrZXItPm1haW5fd29ya2VyX3BpZCA9PSAwKQorCXsKKwkJTGlz dAkgICAqd29ya2VyczsKKwkJTGlzdENlbGwgICAqbGM7CisKKwkJTFdMb2NrQWNxdWlyZShMb2dp Y2FsUmVwV29ya2VyTG9jaywgTFdfU0hBUkVEKTsKKworCQl3b3JrZXJzID0gbG9naWNhbHJlcF93 b3JrZXJzX2ZpbmQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgdHJ1ZSk7CisJCWZvcmVhY2go bGMsIHdvcmtlcnMpCisJCXsKKwkJCUxvZ2ljYWxSZXBXb3JrZXIgKncgPSAoTG9naWNhbFJlcFdv cmtlciAqKSBsZmlyc3QobGMpOworCisJCQlpZiAody0+bWFpbl93b3JrZXJfcGlkICE9IDApCisJ CQkJbG9naWNhbHJlcF93b3JrZXJfc3RvcF9pbnRlcm5hbCh3KTsKKwkJfQorCisJCUxXTG9ja1Jl bGVhc2UoTG9naWNhbFJlcFdvcmtlckxvY2spOworCX0KKwogCS8qIEJsb2NrIGNvbmN1cnJlbnQg YWNjZXNzLiAqLwogCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX0VYQ0xV U0lWRSk7CiAKQEAgLTYyMSw2ICs2NzgsNyBAQCBsb2dpY2FscmVwX3dvcmtlcl9jbGVhbnVwKExv Z2ljYWxSZXBXb3JrZXIgKndvcmtlcikKIAl3b3JrZXItPnVzZXJpZCA9IEludmFsaWRPaWQ7CiAJ d29ya2VyLT5zdWJpZCA9IEludmFsaWRPaWQ7CiAJd29ya2VyLT5yZWxpZCA9IEludmFsaWRPaWQ7 CisJd29ya2VyLT5tYWluX3dvcmtlcl9waWQgPSAwOwogfQogCiAvKgpAQCAtNjc5LDYgKzczNywz MyBAQCBsb2dpY2FscmVwX3N5bmNfd29ya2VyX2NvdW50KE9pZCBzdWJpZCkKIAlyZXR1cm4gcmVz OwogfQogCisvKgorICogQ291bnQgdGhlIG51bWJlciBvZiByZWdpc3RlcmVkIChidXQgbm90IG5l Y2Vzc2FyaWx5IHJ1bm5pbmcpIGFwcGx5CisgKiBiYWNrZ3JvdW5kIHdvcmtlcnMgZm9yIGEgc3Vi c2NyaXB0aW9uLgorICovCitpbnQKK2xvZ2ljYWxyZXBfYXBwbHlfYmd3b3JrZXJfY291bnQoT2lk IHN1YmlkKQoreworCWludAkJCWk7CisJaW50CQkJcmVzID0gMDsKKworCUFzc2VydChMV0xvY2tI ZWxkQnlNZShMb2dpY2FsUmVwV29ya2VyTG9jaykpOworCisJLyoKKwkgKiBTY2FuIGFsbCBhdHRh Y2hlZCBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMsIG9ubHkgY291bnRpbmcgdGhvc2Ugd2hpY2gK KwkgKiBoYXZlIHRoZSBnaXZlbiBzdWJzY3JpcHRpb24gaWQuCisJICovCisJZm9yIChpID0gMDsg aSA8IG1heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnM7IGkrKykKKwl7CisJCUxvZ2ljYWxS ZXBXb3JrZXIgKncgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tpXTsKKworCQlpZiAody0+c3Vi aWQgPT0gc3ViaWQgJiYgdy0+bWFpbl93b3JrZXJfcGlkICE9IDApCisJCQlyZXMrKzsKKwl9CisK KwlyZXR1cm4gcmVzOworfQorCiAvKgogICogQXBwbHlMYXVuY2hlclNobWVtU2l6ZQogICoJCUNv bXB1dGUgc3BhY2UgbmVlZGVkIGZvciByZXBsaWNhdGlvbiBsYXVuY2hlciBzaGFyZWQgbWVtb3J5 CkBAIC04NjgsNyArOTUzLDcgQEAgQXBwbHlMYXVuY2hlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJ CQkJCXdhaXRfdGltZSA9IHdhbF9yZXRyaWV2ZV9yZXRyeV9pbnRlcnZhbDsKIAogCQkJCQlsb2dp Y2FscmVwX3dvcmtlcl9sYXVuY2goc3ViLT5kYmlkLCBzdWItPm9pZCwgc3ViLT5uYW1lLAotCQkJ CQkJCQkJCQkgc3ViLT5vd25lciwgSW52YWxpZE9pZCk7CisJCQkJCQkJCQkJCSBzdWItPm93bmVy LCBJbnZhbGlkT2lkLCBEU01fSEFORExFX0lOVkFMSUQpOwogCQkJCX0KIAkJCX0KIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKaW5kZXggYzcyYWQ2YjkzZC4uNjdmMmQ0 NDJhYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4u YworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL29yaWdpbi5jCkBAIC0xMDc1 LDEyICsxMDc1LDIxIEBAIFJlcGxpY2F0aW9uT3JpZ2luRXhpdENsZWFudXAoaW50IGNvZGUsIERh dHVtIGFyZykKICAqIGFycmF5IGRvZXNuJ3QgaGF2ZSB0byBiZSBzZWFyY2hlZCB3aGVuIGNhbGxp bmcKICAqIHJlcGxvcmlnaW5fc2Vzc2lvbl9hZHZhbmNlKCkuCiAgKgotICogT2J2aW91c2x5IG9u bHkgb25lIHN1Y2ggY2FjaGVkIG9yaWdpbiBjYW4gZXhpc3QgcGVyIHByb2Nlc3MgYW5kIHRoZSBj dXJyZW50CisgKiBOb3JtYWxseSBvbmx5IG9uZSBzdWNoIGNhY2hlZCBvcmlnaW4gY2FuIGV4aXN0 IHBlciBwcm9jZXNzIGFuZCB0aGUgY3VycmVudAogICogY2FjaGVkIHZhbHVlIGNhbiBvbmx5IGJl IHNldCBhZ2FpbiBhZnRlciB0aGUgcHJldmlvdXMgdmFsdWUgaXMgdG9ybiBkb3duCiAgKiB3aXRo IHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCgpLgorICoKKyAqIEhvd2V2ZXIsIGlmIHRoZSBmdW5j dGlvbiBwYXJhbWV0ZXIgJ2FjcXVpcmVkX2J5JyBpcyBub3QgMCwgd2UgYWxsb3cgdGhlCisgKiBw cm9jZXNzIHRvIHVzZSB0aGUgc2FtZSBzbG90IGFscmVhZHkgYWNxdWlyZWQgYnkgYW5vdGhlciBw cm9jZXNzLiBJdCdzIHNhZmUKKyAqIGJlY2F1c2UgMSkgVGhlIG9ubHkgY2FsbGVyIChhcHBseSBi YWNrZ3JvdW5kIHdvcmtlcnMpIHdpbGwgbWFpbnRhaW4gdGhlCisgKiBjb21taXQgb3JkZXIgYnkg YWxsb3dpbmcgb25seSBvbmUgcHJvY2VzcyB0byBjb21taXQgYXQgYSB0aW1lLCBzbyBubyB0d28K KyAqIHdvcmtlcnMgd2lsbCBiZSBvcGVyYXRpbmcgb24gdGhlIHNhbWUgb3JpZ2luIGF0IHRoZSBz YW1lIHRpbWUgKHNlZSBjb21tZW50cworICogaW4gbG9naWNhbC93b3JrZXIuYykuIDIpIEV2ZW4g dGhvdWdoIHdlIHRyeSB0byBhZHZhbmNlIHRoZSBzZXNzaW9uJ3Mgb3JpZ2luCisgKiBjb25jdXJy ZW50bHksIGl0J3Mgc2FmZSB0byBkbyBzbyBhcyB3ZSBjaGFuZ2UvYWR2YW5jZSB0aGUgc2Vzc2lv bl9vcmlnaW4KKyAqIExTTnMgdW5kZXIgcmVwbGljYXRlX3N0YXRlIExXTG9jay4KICAqLwogdm9p ZAotcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCityZXBsb3JpZ2lu X3Nlc3Npb25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSwgaW50IGFjcXVpcmVkX2J5KQogewogCXN0 YXRpYyBib29sIHJlZ2lzdGVyZWRfY2xlYW51cDsKIAlpbnQJCQlpOwpAQCAtMTEyMiw3ICsxMTMx LDcgQEAgcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCiAJCWlmIChj dXJzdGF0ZS0+cm9pZGVudCAhPSBub2RlKQogCQkJY29udGludWU7CiAKLQkJZWxzZSBpZiAoY3Vy c3RhdGUtPmFjcXVpcmVkX2J5ICE9IDApCisJCWVsc2UgaWYgKGN1cnN0YXRlLT5hY3F1aXJlZF9i eSAhPSAwICYmIGFjcXVpcmVkX2J5ID09IDApCiAJCXsKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJ CShlcnJjb2RlKEVSUkNPREVfT0JKRUNUX0lOX1VTRSksCkBAIC0xMTUzLDcgKzExNjIsMTEgQEAg cmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKFJlcE9yaWdpbklkIG5vZGUpCiAKIAlBc3NlcnQoc2Vz c2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+cm9pZGVudCAhPSBJbnZhbGlkUmVwT3JpZ2luSWQpOwog Ci0Jc2Vzc2lvbl9yZXBsaWNhdGlvbl9zdGF0ZS0+YWNxdWlyZWRfYnkgPSBNeVByb2NQaWQ7CisJ aWYgKGFjcXVpcmVkX2J5ID09IDApCisJCXNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUtPmFjcXVp cmVkX2J5ID0gTXlQcm9jUGlkOworCWVsc2UgaWYgKHNlc3Npb25fcmVwbGljYXRpb25fc3RhdGUt PmFjcXVpcmVkX2J5ID09IDApCisJCSBlbG9nKEVSUk9SLCAiY291bGQgbm90IGZpbmQgcmVwbGlj YXRpb24gc3RhdGUgc2xvdCBmb3IgcmVwbGljYXRpb24iCisJCQkgICJvcmlnaW4gd2l0aCBPSUQg JXUgd2hpY2ggd2FzIGFjcXVpcmVkIGJ5ICVkIiwgbm9kZSwgYWNxdWlyZWRfYnkpOwogCiAJTFdM b2NrUmVsZWFzZShSZXBsaWNhdGlvbk9yaWdpbkxvY2spOwogCkBAIC0xMzM3LDcgKzEzNTAsNyBA QCBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc2Vzc2lvbl9zZXR1cChQR19GVU5DVElPTl9BUkdTKQog CiAJbmFtZSA9IHRleHRfdG9fY3N0cmluZygodGV4dCAqKSBEYXR1bUdldFBvaW50ZXIoUEdfR0VU QVJHX0RBVFVNKDApKSk7CiAJb3JpZ2luID0gcmVwbG9yaWdpbl9ieV9uYW1lKG5hbWUsIGZhbHNl KTsKLQlyZXBsb3JpZ2luX3Nlc3Npb25fc2V0dXAob3JpZ2luKTsKKwlyZXBsb3JpZ2luX3Nlc3Np b25fc2V0dXAob3JpZ2luLCAwKTsKIAogCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmln aW47CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8u YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcHJvdG8uYwppbmRleCBmZjg1MTNl MmQyLi40N2JkODExZmI3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Byb3RvLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5j CkBAIC0xMTYzLDMxICsxMTYzLDU2IEBAIGxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fY29tbWl0KFN0 cmluZ0luZm8gaW4sIExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSkKIC8qCiAgKiBX cml0ZSBTVFJFQU0gQUJPUlQgdG8gdGhlIG91dHB1dCBzdHJlYW0uIE5vdGUgdGhhdCB4aWQgYW5k IHN1YnhpZCB3aWxsIGJlCiAgKiBzYW1lIGZvciB0aGUgdG9wLWxldmVsIHRyYW5zYWN0aW9uIGFi b3J0LgorICoKKyAqIElmIHdyaXRlX2Fib3J0X2xzbiBpcyB0cnVlLCBzZW5kIHRoZSBhYm9ydF9s c24gYW5kIGFib3J0X3RpbWUgZmllbGRzLAorICogb3RoZXJ3aXNlIGRvbid0LgogICovCiB2b2lk CiBsb2dpY2FscmVwX3dyaXRlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rp b25JZCB4aWQsCi0JCQkJCQkJICBUcmFuc2FjdGlvbklkIHN1YnhpZCkKKwkJCQkJCQkgIFJlb3Jk ZXJCdWZmZXJUWE4gKnR4biwgWExvZ1JlY1B0ciBhYm9ydF9sc24sCisJCQkJCQkJICBib29sIHdy aXRlX2Fib3J0X2xzbikKIHsKIAlwcV9zZW5kYnl0ZShvdXQsIExPR0lDQUxfUkVQX01TR19TVFJF QU1fQUJPUlQpOwogCi0JQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkgJiYgVHJhbnNh Y3Rpb25JZElzVmFsaWQoc3VieGlkKSk7CisJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhp ZCkgJiYgVHJhbnNhY3Rpb25JZElzVmFsaWQodHhuLT54aWQpKTsKIAogCS8qIHRyYW5zYWN0aW9u IElEICovCiAJcHFfc2VuZGludDMyKG91dCwgeGlkKTsKLQlwcV9zZW5kaW50MzIob3V0LCBzdWJ4 aWQpOworCXBxX3NlbmRpbnQzMihvdXQsIHR4bi0+eGlkKTsKKworCWlmICh3cml0ZV9hYm9ydF9s c24pCisJeworCQlwcV9zZW5kaW50NjQob3V0LCBhYm9ydF9sc24pOworCQlwcV9zZW5kaW50NjQo b3V0LCB0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lKTsKKwl9CiB9CiAKIC8qCiAgKiBSZWFkIFNU UkVBTSBBQk9SVCBmcm9tIHRoZSBvdXRwdXQgc3RyZWFtLgorICoKKyAqIElmIHJlYWRfYWJvcnRf bHNuIGlzIHRydWUsIHRyeSB0byByZWFkIHRoZSBhYm9ydF9sc24gYW5kIGFib3J0X3RpbWUgZmll bGRzLAorICogb3RoZXJ3aXNlIGRvbid0LgogICovCiB2b2lkCi1sb2dpY2FscmVwX3JlYWRfc3Ry ZWFtX2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkgVHJh bnNhY3Rpb25JZCAqc3VieGlkKQorbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChTdHJpbmdJ bmZvIGluLAorCQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9ydF9kYXRhLAor CQkJCQkJCSBib29sIHJlYWRfYWJvcnRfbHNuKQogewotCUFzc2VydCh4aWQgJiYgc3VieGlkKTsK KwlBc3NlcnQoYWJvcnRfZGF0YSk7CiAKLQkqeGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKLQkq c3VieGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKwlhYm9ydF9kYXRhLT54aWQgPSBwcV9nZXRt c2dpbnQoaW4sIDQpOworCWFib3J0X2RhdGEtPnN1YnhpZCA9IHBxX2dldG1zZ2ludChpbiwgNCk7 CisKKwlpZiAocmVhZF9hYm9ydF9sc24pCisJeworCQlhYm9ydF9kYXRhLT5hYm9ydF9sc24gPSBw cV9nZXRtc2dpbnQ2NChpbik7CisJCWFib3J0X2RhdGEtPmFib3J0X3RpbWUgPSBwcV9nZXRtc2dp bnQ2NChpbik7CisJfQorCWVsc2UKKwl7CisJCWFib3J0X2RhdGEtPmFib3J0X2xzbiA9IEludmFs aWRYTG9nUmVjUHRyOworCQlhYm9ydF9kYXRhLT5hYm9ydF90aW1lID0gMDsKKwl9CiB9CiAKIC8q CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Jlb3JkZXJidWZm ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCmlu ZGV4IDFjMjFhMWQxNGIuLmJjYTdkYTA5ZGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvcmVvcmRlcmJ1ZmZlci5jCkBAIC0yODM3LDcgKzI4MzcsOCBAQCBSZW9yZGVy QnVmZmVyRmluaXNoUHJlcGFyZWQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlk LAogICogZGlzay4KICAqLwogdm9pZAotUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZmZXIg KnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCitSZW9yZGVyQnVmZmVyQWJv cnQoUmVvcmRlckJ1ZmZlciAqcmIsIFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbiwK KwkJCQkgICBUaW1lc3RhbXBUeiBhYm9ydF90aW1lKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnR4 bjsKIApAQCAtMjg0OCw2ICsyODQ5LDggQEAgUmVvcmRlckJ1ZmZlckFib3J0KFJlb3JkZXJCdWZm ZXIgKnJiLCBUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1JlY1B0ciBsc24pCiAJaWYgKHR4biA9PSBO VUxMKQogCQlyZXR1cm47CiAKKwl0eG4tPnhhY3RfdGltZS5hYm9ydF90aW1lID0gYWJvcnRfdGlt ZTsKKwogCS8qIEZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgbm90aWZ5IHRoZSByZW1vdGUgbm9k ZSBhYm91dCB0aGUgYWJvcnQuICovCiAJaWYgKHJidHhuX2lzX3N0cmVhbWVkKHR4bikpCiAJewpA QCAtMjkyMiw3ICsyOTI1LDggQEAgUmVvcmRlckJ1ZmZlckFib3J0T2xkKFJlb3JkZXJCdWZmZXIg KnJiLCBUcmFuc2FjdGlvbklkIG9sZGVzdFJ1bm5pbmdYaWQpCiAgKiB0byB0aGlzIHhpZCBtaWdo dCByZS1jcmVhdGUgdGhlIHRyYW5zYWN0aW9uIGluY29tcGxldGVseS4KICAqLwogdm9pZAotUmVv cmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQsIFhM b2dSZWNQdHIgbHNuKQorUmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICpyYiwgVHJh bnNhY3Rpb25JZCB4aWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCQlUaW1lc3RhbXBUeiBhYm9ydF90 aW1lKQogewogCVJlb3JkZXJCdWZmZXJUWE4gKnR4bjsKIApAQCAtMjkzMyw2ICsyOTM3LDggQEAg UmVvcmRlckJ1ZmZlckZvcmdldChSZW9yZGVyQnVmZmVyICpyYiwgVHJhbnNhY3Rpb25JZCB4aWQs IFhMb2dSZWNQdHIgbHNuKQogCWlmICh0eG4gPT0gTlVMTCkKIAkJcmV0dXJuOwogCisJdHhuLT54 YWN0X3RpbWUuYWJvcnRfdGltZSA9IGFib3J0X3RpbWU7CisKIAkvKiBGb3Igc3RyZWFtZWQgdHJh bnNhY3Rpb25zIG5vdGlmeSB0aGUgcmVtb3RlIG5vZGUgYWJvdXQgdGhlIGFib3J0LiAqLwogCWlm IChyYnR4bl9pc19zdHJlYW1lZCh0eG4pKQogCQlyYi0+c3RyZWFtX2Fib3J0KHJiLCB0eG4sIGxz bik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3lu Yy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCA2 YTAxZmZkMjczLi4yOTliZGM2MzI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3RhYmxlc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvdGFibGVzeW5jLmMKQEAgLTU2OCw3ICs1NjgsOCBAQCBwcm9jZXNzX3N5bmNpbmdfdGFibGVz X2Zvcl9hcHBseShYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogCQkJCQkJCQkJCQkJIE15U3Vic2Ny aXB0aW9uLT5vaWQsCiAJCQkJCQkJCQkJCQkgTXlTdWJzY3JpcHRpb24tPm5hbWUsCiAJCQkJCQkJ CQkJCQkgTXlMb2dpY2FsUmVwV29ya2VyLT51c2VyaWQsCi0JCQkJCQkJCQkJCQkgcnN0YXRlLT5y ZWxpZCk7CisJCQkJCQkJCQkJCQkgcnN0YXRlLT5yZWxpZCwKKwkJCQkJCQkJCQkJCSBEU01fSEFO RExFX0lOVkFMSUQpOwogCQkJCQkJaGVudHJ5LT5sYXN0X3N0YXJ0X3RpbWUgPSBub3c7CiAJCQkJ CX0KIAkJCQl9CkBAIC01ODksNiArNTkwLDkgQEAgcHJvY2Vzc19zeW5jaW5nX3RhYmxlc19mb3Jf YXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHZvaWQKIHByb2Nlc3Nfc3luY2luZ190YWJs ZXMoWExvZ1JlY1B0ciBjdXJyZW50X2xzbikKIHsKKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkK KwkJcmV0dXJuOworCiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJcHJvY2Vzc19zeW5j aW5nX3RhYmxlc19mb3Jfc3luYyhjdXJyZW50X2xzbik7CiAJZWxzZQpAQCAtMTI3Myw3ICsxMjc3 LDcgQEAgTG9naWNhbFJlcFN5bmNUYWJsZVN0YXJ0KFhMb2dSZWNQdHIgKm9yaWdpbl9zdGFydHBv cykKIAkJICogdGltZSB0aGlzIHRhYmxlc3luYyB3YXMgbGF1bmNoZWQuCiAJCSAqLwogCQlvcmln aW5pZCA9IHJlcGxvcmlnaW5fYnlfbmFtZShvcmlnaW5uYW1lLCBmYWxzZSk7Ci0JCXJlcGxvcmln aW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChv cmlnaW5pZCwgMCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAkJ Km9yaWdpbl9zdGFydHBvcyA9IHJlcGxvcmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoZmFsc2Up OwogCkBAIC0xMzg0LDcgKzEzODgsNyBAQCBMb2dpY2FsUmVwU3luY1RhYmxlU3RhcnQoWExvZ1Jl Y1B0ciAqb3JpZ2luX3N0YXJ0cG9zKQogCQkJCQkJICAgdHJ1ZSAvKiBnbyBiYWNrd2FyZCAqLyAs IHRydWUgLyogV0FMIGxvZyAqLyApOwogCQlVbmxvY2tSZWxhdGlvbk9pZChSZXBsaWNhdGlvbk9y aWdpblJlbGF0aW9uSWQsIFJvd0V4Y2x1c2l2ZUxvY2spOwogCi0JCXJlcGxvcmlnaW5fc2Vzc2lv bl9zZXR1cChvcmlnaW5pZCk7CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9zZXR1cChvcmlnaW5pZCwg MCk7CiAJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW4gPSBvcmlnaW5pZDsKIAl9CiAJZWxzZQpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggNWY4YzU0MTc2My4u MTBjYTJjNTVhZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93 b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBA IC0yMiw4ICsyMiwyOCBAQAogICogU1RSRUFNRUQgVFJBTlNBQ1RJT05TCiAgKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0KICAqIFN0cmVhbWVkIHRyYW5zYWN0aW9ucyAobGFyZ2UgdHJhbnNhY3Rpb25z IGV4Y2VlZGluZyBhIG1lbW9yeSBsaW1pdCBvbiB0aGUKLSAqIHVwc3RyZWFtKSBhcmUgbm90IGFw cGxpZWQgaW1tZWRpYXRlbHksIGJ1dCBpbnN0ZWFkLCB0aGUgZGF0YSBpcyB3cml0dGVuCi0gKiB0 byB0ZW1wb3JhcnkgZmlsZXMgYW5kIHRoZW4gYXBwbGllZCBhdCBvbmNlIHdoZW4gdGhlIGZpbmFs IGNvbW1pdCBhcnJpdmVzLgorICogdXBzdHJlYW0pIGFyZSBhcHBsaWVkIHVzaW5nIG9uZSBvZiB0 d28gYXBwcm9hY2hlczoKKyAqCisgKiAxKSBTZXBhcmF0ZSBiYWNrZ3JvdW5kIHdvcmtlcnMKKyAq CisgKiBJZiBzdHJlYW1pbmcgPSBwYXJhbGxlbCwgd2UgYXNzaWduIGEgbmV3IGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIChpZgorICogYXZhaWxhYmxlKSBhcyBzb29uIGFzIHRoZSB4YWN0J3MgZmly c3Qgc3RyZWFtIGlzIHJlY2VpdmVkLiBUaGUgbWFpbiBhcHBseQorICogd29ya2VyIHdpbGwgc2Vu ZCBjaGFuZ2VzIHRvIHRoaXMgbmV3IHdvcmtlciB2aWEgc2hhcmVkIG1lbW9yeS4gV2Uga2VlcCB0 aGlzCisgKiB3b3JrZXIgYXNzaWduZWQgdGlsbCB0aGUgdHJhbnNhY3Rpb24gY29tbWl0IGlzIHJl Y2VpdmVkIGFuZCBhbHNvIHdhaXQgZm9yCisgKiB0aGUgd29ya2VyIHRvIGZpbmlzaCBhdCBjb21t aXQuIFRoaXMgcHJlc2VydmVzIGNvbW1pdCBvcmRlcmluZyBhbmQgYXZvaWRzCisgKiBmaWxlIEkv TyBpbiBtb3N0IGNhc2VzLiBXZSBzdGlsbCBuZWVkIHRvIHNwaWxsIHRvIGEgZmlsZSBpZiB0aGVy ZSBpcyBubworICogd29ya2VyIGF2YWlsYWJsZS4gSXQgaXMgaW1wb3J0YW50IHRvIG1haW50YWlu IGNvbW1pdCBvcmRlciB0byBhdm9pZCBmYWlsdXJlcworICogZHVlIHRvIChhKSB0cmFuc2FjdGlv biBkZXBlbmRlbmNpZXMsIHNheSBpZiB3ZSBpbnNlcnQgYSByb3cgaW4gdGhlIGZpcnN0CisgKiB0 cmFuc2FjdGlvbiBhbmQgdXBkYXRlIGl0IGluIHRoZSBzZWNvbmQgdHJhbnNhY3Rpb24gdGhlbiBh bGxvd2luZyB0byBhcHBseQorICogYm90aCBpbiBwYXJhbGxlbCBjYW4gbGVhZCB0byBmYWlsdXJl IGluIHRoZSB1cGRhdGUuIChiKSBkZWFkbG9ja3MsIGFsbG93aW5nCisgKiB0cmFuc2FjdGlvbnMg dGhhdCB1cGRhdGUgdGhlIHNhbWUgc2V0IG9mIHJvd3MvdGFibGVzIGluIG9wcG9zaXRlIG9yZGVy IHRvIGJlCisgKiBhcHBsaWVkIGluIHBhcmFsbGVsIGNhbiBsZWFkIHRvIGRlYWRsb2Nrcy4KKyAq CisgKiAyKSBXcml0ZSB0byB0ZW1wb3JhcnkgZmlsZXMgYW5kIGFwcGx5IHdoZW4gdGhlIGZpbmFs IGNvbW1pdCBhcnJpdmVzCisgKgorICogSWYgbm8gd29ya2VyIGlzIGF2YWlsYWJsZSB0byBoYW5k bGUgc3RyZWFtZWQgdHJhbnNhY3Rpb24sIHRoZSBkYXRhIGlzCisgKiB3cml0dGVuIHRvIHRlbXBv cmFyeSBmaWxlcyBhbmQgdGhlbiBhcHBsaWVkIGF0IG9uY2Ugd2hlbiB0aGUgZmluYWwgY29tbWl0 CisgKiBhcnJpdmVzLgogICoKICAqIFVubGlrZSB0aGUgcmVndWxhciAobm9uLXN0cmVhbWVkKSBj YXNlLCBoYW5kbGluZyBzdHJlYW1lZCB0cmFuc2FjdGlvbnMgaGFzCiAgKiB0byBoYW5kbGUgYWJv cnRzIG9mIGJvdGggdGhlIHRvcGxldmVsIHRyYW5zYWN0aW9uIGFuZCBzdWJ0cmFuc2FjdGlvbnMu IFRoaXMKQEAgLTIxOSwyMCArMjM5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwbHlFeGVjdXRpb25E YXRhCiAJUGFydGl0aW9uVHVwbGVSb3V0aW5nICpwcm91dGU7CS8qIHBhcnRpdGlvbiByb3V0aW5n IGluZm8gKi8KIH0gQXBwbHlFeGVjdXRpb25EYXRhOwogCi0vKiBTdHJ1Y3QgZm9yIHNhdmluZyBh bmQgcmVzdG9yaW5nIGFwcGx5IGVycmNvbnRleHQgaW5mb3JtYXRpb24gKi8KLXR5cGVkZWYgc3Ry dWN0IEFwcGx5RXJyb3JDYWxsYmFja0FyZwotewotCUxvZ2ljYWxSZXBNc2dUeXBlIGNvbW1hbmQ7 CS8qIDAgaWYgaW52YWxpZCAqLwotCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsOwotCi0JLyog UmVtb3RlIG5vZGUgaW5mb3JtYXRpb24gKi8KLQlpbnQJCQlyZW1vdGVfYXR0bnVtOwkvKiAtMSBp ZiBpbnZhbGlkICovCi0JVHJhbnNhY3Rpb25JZCByZW1vdGVfeGlkOwotCVhMb2dSZWNQdHIJZmlu aXNoX2xzbjsKLQljaGFyCSAgICpvcmlnaW5fbmFtZTsKLX0gQXBwbHlFcnJvckNhbGxiYWNrQXJn OwotCi1zdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vycm9yX2NhbGxiYWNrX2Fy ZyA9CisvKiBlcnJjb250ZXh0IHRyYWNrZXIgKi8KK0FwcGx5RXJyb3JDYWxsYmFja0FyZyBhcHBs eV9lcnJvcl9jYWxsYmFja19hcmcgPQogewogCS5jb21tYW5kID0gMCwKIAkucmVsID0gTlVMTCwK QEAgLTI0Miw3ICsyNTAsNyBAQCBzdGF0aWMgQXBwbHlFcnJvckNhbGxiYWNrQXJnIGFwcGx5X2Vy cm9yX2NhbGxiYWNrX2FyZyA9CiAJLm9yaWdpbl9uYW1lID0gTlVMTCwKIH07CiAKLXN0YXRpYyBN ZW1vcnlDb250ZXh0IEFwcGx5TWVzc2FnZUNvbnRleHQgPSBOVUxMOworTWVtb3J5Q29udGV4dCBB cHBseU1lc3NhZ2VDb250ZXh0ID0gTlVMTDsKIE1lbW9yeUNvbnRleHQgQXBwbHlDb250ZXh0ID0g TlVMTDsKIAogLyogcGVyIHN0cmVhbSBjb250ZXh0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25z ICovCkBAIC0yNTEsMjcgKzI1OSwzOSBAQCBzdGF0aWMgTWVtb3J5Q29udGV4dCBMb2dpY2FsU3Ry ZWFtaW5nQ29udGV4dCA9IE5VTEw7CiBXYWxSZWNlaXZlckNvbm4gKkxvZ1JlcFdvcmtlcldhbFJj dkNvbm4gPSBOVUxMOwogCiBTdWJzY3JpcHRpb24gKk15U3Vic2NyaXB0aW9uID0gTlVMTDsKLXN0 YXRpYyBib29sIE15U3Vic2NyaXB0aW9uVmFsaWQgPSBmYWxzZTsKK2Jvb2wgTXlTdWJzY3JpcHRp b25WYWxpZCA9IGZhbHNlOwogCiBib29sCQlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsK IHN0YXRpYyBYTG9nUmVjUHRyIHJlbW90ZV9maW5hbF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsK IAogLyogZmllbGRzIHZhbGlkIG9ubHkgd2hlbiBwcm9jZXNzaW5nIHN0cmVhbWVkIHRyYW5zYWN0 aW9uICovCi1zdGF0aWMgYm9vbCBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworYm9v bCBpbl9zdHJlYW1lZF90cmFuc2FjdGlvbiA9IGZhbHNlOworCitUcmFuc2FjdGlvbklkIHN0cmVh bV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKK3N0YXRpYyBBcHBseUJnd29ya2VySW5mbyAq c3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CiAKLXN0YXRpYyBUcmFuc2FjdGlvbklkIHN0cmVh bV94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKy8qIENoZWNrIGlmIHdlIGFyZSBhcHBseWlu ZyB0aGUgdHJhbnNhY3Rpb24gdXNpbmcgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgKi8KKyNk ZWZpbmUgYXBwbHlfYmd3b3JrZXJfYWN0aXZlKCkgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uICYm IHN0cmVhbV9hcHBseV93b3JrZXIgIT0gTlVMTCkKKworLyoKKyAqIFRoZSBudW1iZXIgb2YgY2hh bmdlcyBkdXJpbmcgb25lIHN0cmVhbWluZyBibG9jayAob25seSBmb3IgYXBwbHkgYmFja2dyb3Vu ZAorICogd29ya2VycykKKyAqLworc3RhdGljIHVpbnQzMiBuY2hhbmdlcyA9IDA7CiAKIC8qCiAg KiBXZSBlbmFibGUgc2tpcHBpbmcgYWxsIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5nZXMgKElOU0VS VCwgVVBEQVRFLCBldGMuKSBmb3IKICAqIHRoZSBzdWJzY3JpcHRpb24gaWYgdGhlIHJlbW90ZSB0 cmFuc2FjdGlvbidzIGZpbmlzaCBMU04gbWF0Y2hlcyB0aGUgc3Vic2tpcGxzbi4KICAqIE9uY2Ug d2Ugc3RhcnQgc2tpcHBpbmcgY2hhbmdlcywgd2UgZG9uJ3Qgc3RvcCBpdCB1bnRpbCB3ZSBza2lw IGFsbCBjaGFuZ2VzIG9mCiAgKiB0aGUgdHJhbnNhY3Rpb24gZXZlbiBpZiBwZ19zdWJzY3JpcHRp b24gaXMgdXBkYXRlZCBhbmQgTXlTdWJzY3JpcHRpb24tPnNraXBsc24KLSAqIGdldHMgY2hhbmdl ZCBvciByZXNldCBkdXJpbmcgdGhhdC4gQWxzbywgaW4gc3RyZWFtaW5nIHRyYW5zYWN0aW9uIGNh c2VzLCB3ZQotICogZG9uJ3Qgc2tpcCByZWNlaXZpbmcgYW5kIHNwb29saW5nIHRoZSBjaGFuZ2Vz IHNpbmNlIHdlIGRlY2lkZSB3aGV0aGVyIG9yIG5vdAorICogZ2V0cyBjaGFuZ2VkIG9yIHJlc2V0 IGR1cmluZyB0aGF0LiBBbHNvLCBpbiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gY2FzZXMgKHN0cmVh bWluZyA9IG9uKSwKKyAqIHdlIGRvbid0IHNraXAgcmVjZWl2aW5nIGFuZCBzcG9vbGluZyB0aGUg Y2hhbmdlcyBzaW5jZSB3ZSBkZWNpZGUgd2hldGhlciBvciBub3QKICAqIHRvIHNraXAgYXBwbHlp bmcgdGhlIGNoYW5nZXMgd2hlbiBzdGFydGluZyB0byBhcHBseSBjaGFuZ2VzLiBUaGUgc3Vic2tp cGxzbiBpcwogICogY2xlYXJlZCBhZnRlciBzdWNjZXNzZnVsbHkgc2tpcHBpbmcgdGhlIHRyYW5z YWN0aW9uIG9yIGFwcGx5aW5nIG5vbi1lbXB0eQogICogdHJhbnNhY3Rpb24uIFRoZSBsYXR0ZXIg cHJldmVudHMgdGhlIG1pc3Rha2VubHkgc3BlY2lmaWVkIHN1YnNraXBsc24gZnJvbQotICogYmVp bmcgbGVmdC4KKyAqIGJlaW5nIGxlZnQuIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc2tpcCB0aGUgc3Ry ZWFtaW5nIHRyYW5zYWN0aW9ucyB3aGVuIHVzaW5nCisgKiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl cnMgYmVjYXVzZSB3ZSBjYW5ub3QgZ2V0IHRoZSBmaW5pc2ggTFNOIGJlZm9yZQorICogYXBwbHlp bmcgdGhlIGNoYW5nZXMuCiAgKi8KIHN0YXRpYyBYTG9nUmVjUHRyIHNraXBfeGFjdF9maW5pc2hf bHNuID0gSW52YWxpZFhMb2dSZWNQdHI7CiAjZGVmaW5lIGlzX3NraXBwaW5nX2NoYW5nZXMoKSAo dW5saWtlbHkoIVhMb2dSZWNQdHJJc0ludmFsaWQoc2tpcF94YWN0X2ZpbmlzaF9sc24pKSkKQEAg LTMyNCw5ICszNDQsNiBAQCBzdGF0aWMgdm9pZCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZv aWQpOwogCiBzdGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsKIAot LyogcHJvdG90eXBlIG5lZWRlZCBiZWNhdXNlIG9mIHN0cmVhbV9jb21taXQgKi8KLXN0YXRpYyB2 b2lkIGFwcGx5X2Rpc3BhdGNoKFN0cmluZ0luZm8gcyk7Ci0KIHN0YXRpYyB2b2lkIGFwcGx5X2hh bmRsZV9jb21taXRfaW50ZXJuYWwoTG9naWNhbFJlcENvbW1pdERhdGEgKmNvbW1pdF9kYXRhKTsK IHN0YXRpYyB2b2lkIGFwcGx5X2hhbmRsZV9pbnNlcnRfaW50ZXJuYWwoQXBwbHlFeGVjdXRpb25E YXRhICplZGF0YSwKIAkJCQkJCQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKQEAgLTM1OSw3 ICszNzYsNiBAQCBzdGF0aWMgdm9pZCBzdG9wX3NraXBwaW5nX2NoYW5nZXModm9pZCk7CiBzdGF0 aWMgdm9pZCBjbGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNu KTsKIAogLyogRnVuY3Rpb25zIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAqLwotc3RhdGljIHZv aWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyBpbmxpbmUgdm9pZCBz ZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRy IGxzbik7CiBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZv KHZvaWQpOwogCkBAIC0zNzUsMTIgKzM5MSwzNCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVzZXRf YXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpOwogICogcmVjb3JkICsgMSAoaWUgc3RhcnQg b2YgbmV4dCByZWNvcmQpIGFuZCBuZXh0IHJlY29yZCBjYW4gYmUgQ09NTUlUIG9mCiAgKiB0cmFu c2FjdGlvbiB3ZSBhcmUgbm93IHByb2Nlc3NpbmcgKHdoaWNoIGlzIHdoYXQgd2Ugc2V0IHJlbW90 ZV9maW5hbF9sc24KICAqIHRvIGluIGFwcGx5X2hhbmRsZV9iZWdpbikuCisgKgorICogTm90ZSB0 aGF0IGZvciBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIHRoYXQgaXMgYmVpbmcgYXBwbGllZCBpbiBh cHBseQorICogYmFja2dyb3VuZCB3b3JrZXIsIHdlIGRpc2FsbG93IGFwcGx5aW5nIGNoYW5nZXMg b24gYSB0YWJsZSB0aGF0IGlzIG5vdCBpbgorICogdGhlIFJFQURZIHN0YXRlLCBiZWNhdXNlIHdl IGNhbm5vdCBkZWNpZGUgd2hldGhlciB0byBhcHBseSB0aGUgY2hhbmdlIGFzIHdlCisgKiB3b24n dCBrbm93IHJlbW90ZV9maW5hbF9sc24gYnkgdGhhdCB0aW1lLgorICoKKyAqIFdlIGFscmVhZHkg Y2hlY2tlZCB0aGlzIGluIGFwcGx5X2Jnd29ya2VyX2Nhbl9zdGFydCgpIGJlZm9yZSBhc3NpZ25p bmcgdGhlCisgKiBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gdGhlIGJhY2tncm91bmQgd29ya2Vy LCBidXQgaXQgYWxzbyBuZWVkcyB0byBiZQorICogY2hlY2tlZCBoZXJlIGJlY2F1c2UgaWYgdGhl IHVzZXIgZXhlY3V0ZXMgQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZSRVNICisgKiBQVUJMSUNB VElPTiBpbiBwYXJhbGxlbCwgdGhlIG5ldyB0YWJsZSBjYW4gYmUgYWRkZWQgdG8gcGdfc3Vic2Ny aXB0aW9uX3JlbAorICogaW4gcGFyYWxsZWwgdG8gdGhpcyB0cmFuc2FjdGlvbi4KICAqLwogc3Rh dGljIGJvb2wKIHNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwoTG9naWNhbFJlcFJlbE1hcEVu dHJ5ICpyZWwpCiB7CiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJcmV0dXJuIE15TG9n aWNhbFJlcFdvcmtlci0+cmVsaWQgPT0gcmVsLT5sb2NhbHJlbG9pZDsKKwllbHNlIGlmIChhbV9h cHBseV9iZ3dvcmtlcigpKQorCXsKKwkJaWYgKHJlbC0+c3RhdGUgIT0gU1VCUkVMX1NUQVRFX1JF QURZKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlv biBhcHBseSB3b3JrZXJzIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgcmVzdGFydCIsCisJ CQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpLAorCQkJCQkgZXJyZGV0YWlsKCJDYW5ub3QgaGFu ZGxlIHN0cmVhbWVkIHJlcGxpY2F0aW9uIHRyYW5zYWN0aW9uIGJ5IGFwcGx5ICIKKwkJCQkJCQkg ICAiYmFja2dyb3VuZCB3b3JrZXJzIHVudGlsIGFsbCB0YWJsZXMgYXJlIHN5bmNocm9uaXplZCIp KSk7CisKKwkJcmV0dXJuIHRydWU7CisJfQogCWVsc2UKIAkJcmV0dXJuIChyZWwtPnN0YXRlID09 IFNVQlJFTF9TVEFURV9SRUFEWSB8fAogCQkJCShyZWwtPnN0YXRlID09IFNVQlJFTF9TVEFURV9T WU5DRE9ORSAmJgpAQCAtNDI2LDQzICs0NjQsOTAgQEAgZW5kX3JlcGxpY2F0aW9uX3N0ZXAodm9p ZCkKIH0KIAogLyoKLSAqIEhhbmRsZSBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCisgKiBIYW5kbGUg c3RyZWFtZWQgdHJhbnNhY3Rpb25zIGZvciBib3RoIHRoZSBtYWluIGFwcGx5IHdvcmtlciBhbmQg dGhlIGFwcGx5CisgKiBiYWNrZ3JvdW5kIHdvcmtlcnMuCisgKgorICogSW4gc3RyZWFtaW5nIGNh c2UgKHJlY2VpdmluZyBhIGJsb2NrIG9mIHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgZm9yCisgKiBT VUJTVFJFQU1fT04gbW9kZSwgc2ltcGx5IHJlZGlyZWN0IGl0IHRvIGEgZmlsZSBmb3IgdGhlIHBy b3BlciB0b3BsZXZlbAorICogdHJhbnNhY3Rpb24sIGFuZCBmb3IgU1VCU1RSRUFNX1BBUkFMTEVM IG1vZGUsIHNlbmQgdGhlIGNoYW5nZXMgdG8gYXBwbHkKKyAqIGJhY2tncm91bmQgd29ya2VycyAo TE9HSUNBTF9SRVBfTVNHX1JFTEFUSU9OIG9yIExPR0lDQUxfUkVQX01TR19UWVBFIGNoYW5nZXMK KyAqIHdpbGwgYmUgYXBwbGllZCBieSBib3RoIG1haW4gYW5kIGFwcGx5IGJhY2tncm91bmQgd29y a2VycykuCiAgKgotICogSWYgaW4gc3RyZWFtaW5nIG1vZGUgKHJlY2VpdmluZyBhIGJsb2NrIG9m IHN0cmVhbWVkIHRyYW5zYWN0aW9uKSwgd2UKLSAqIHNpbXBseSByZWRpcmVjdCBpdCB0byBhIGZp bGUgZm9yIHRoZSBwcm9wZXIgdG9wbGV2ZWwgdHJhbnNhY3Rpb24uCisgKiBGb3Igbm9uLXN0cmVh bWVkIHRyYW5zYWN0aW9ucywgcmV0dXJucyBmYWxzZTsKKyAqIEZvciBzdHJlYW1lZCB0cmFuc2Fj dGlvbnMsIHJldHVybnMgdHJ1ZSBpZiBpbiBtYWluIGFwcGx5IHdvcmtlciwgZmFsc2UKKyAqIG90 aGVyd2lzZS4KICAqCi0gKiBSZXR1cm5zIHRydWUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9ucywg ZmFsc2Ugb3RoZXJ3aXNlIChyZWd1bGFyIG1vZGUpLgorICogRXhjZXB0aW9uOiBXaGVuIHRoZSBt YWluIGFwcGx5IHdvcmtlciBpcyBhcHBseWluZyBzdHJlYW1pbmcgdHJhbnNhY3Rpb25zIGluCisg KiBwYXJhbGxlbCBtb2RlIChlLmcuIHdoZW4gYWRkcmVzc2luZyBMT0dJQ0FMX1JFUF9NU0dfUkVM QVRJT04gb3IKKyAqIExPR0lDQUxfUkVQX01TR19UWVBFIGNoYW5nZXMpLCB0aGVuIHJldHVybiBm YWxzZS4KICAqLwogc3RhdGljIGJvb2wKIGhhbmRsZV9zdHJlYW1lZF90cmFuc2FjdGlvbihMb2dp Y2FsUmVwTXNnVHlwZSBhY3Rpb24sIFN0cmluZ0luZm8gcykKIHsKLQlUcmFuc2FjdGlvbklkIHhp ZDsKKwlUcmFuc2FjdGlvbklkIGN1cnJlbnRfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJ Ym9vbAlyZXMgPSB0cnVlOwogCi0JLyogbm90IGluIHN0cmVhbWluZyBtb2RlICovCi0JaWYgKCFp bl9zdHJlYW1lZF90cmFuc2FjdGlvbikKKwkvKiBOb3QgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIG5v dCBpbiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gKi8KKwlpZiAoIShpbl9zdHJlYW1lZF90cmFu c2FjdGlvbiB8fCBhbV9hcHBseV9iZ3dvcmtlcigpKSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JQXNz ZXJ0KHN0cmVhbV9mZCAhPSBOVUxMKTsKIAlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoc3Ry ZWFtX3hpZCkpOwogCiAJLyoKIAkgKiBXZSBzaG91bGQgaGF2ZSByZWNlaXZlZCBYSUQgb2YgdGhl IHN1YnhhY3QgYXMgdGhlIGZpcnN0IHBhcnQgb2YgdGhlCiAJICogbWVzc2FnZSwgc28gZXh0cmFj dCBpdC4KIAkgKi8KLQl4aWQgPSBwcV9nZXRtc2dpbnQocywgNCk7CisJY3VycmVudF94aWQgPSBw cV9nZXRtc2dpbnQocywgNCk7CiAKLQlpZiAoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHhpZCkpCisJ aWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChjdXJyZW50X3hpZCkpCiAJCWVyZXBvcnQoRVJST1Is CiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAogCQkJCSBlcnJtc2df aW50ZXJuYWwoImludmFsaWQgdHJhbnNhY3Rpb24gSUQgaW4gc3RyZWFtZWQgcmVwbGljYXRpb24g dHJhbnNhY3Rpb24iKSkpOwogCi0JLyogQWRkIHRoZSBuZXcgc3VieGFjdCB0byB0aGUgYXJyYXkg KHVubGVzcyBhbHJlYWR5IHRoZXJlKS4gKi8KLQlzdWJ4YWN0X2luZm9fYWRkKHhpZCk7CisJaWYg KGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJeworCQkvKiBEZWZpbmUgYSBzYXZlcG9pbnQgZm9yIGEg c3VieGFjdCBpZiBuZWVkZWQuICovCisJCWFwcGx5X2Jnd29ya2VyX3N1YnhhY3RfaW5mb19hZGQo Y3VycmVudF94aWQpOworCisJCXJlcyA9IGZhbHNlOworCX0KKwllbHNlIGlmIChhcHBseV9iZ3dv cmtlcl9hY3RpdmUoKSkKKwl7CisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIG1haW4gYXBwbHkgd29y a2VyLCBidXQgdGhlcmUgaXMgYW4gYXBwbHkgYmFja2dyb3VuZAorCQkgKiB3b3JrZXIsIHNvIGFw cGx5IHRoZSBjaGFuZ2VzIG9mIHRoaXMgdHJhbnNhY3Rpb24gaW4gdGhhdCBiYWNrZ3JvdW5kCisJ CSAqIHdvcmtlci4gUGFzcyB0aGUgZGF0YSB0byB0aGUgd29ya2VyLgorCQkgKi8KKwkJYXBwbHlf Ymd3b3JrZXJfc2VuZF9kYXRhKHN0cmVhbV9hcHBseV93b3JrZXIsIHMtPmxlbiwgcy0+ZGF0YSk7 CisJCW5jaGFuZ2VzICs9IDE7CisKKwkJLyoKKwkJICogWFhYIFRoZSBwdWJsaXNoZXIgc2lkZSBk b2Vzbid0IGFsd2F5cyBzZW5kIHJlbGF0aW9uL3R5cGUgdXBkYXRlCisJCSAqIG1lc3NhZ2VzIGFm dGVyIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHNvIGFsc28gdXBkYXRlIHRoZQorCQkgKiBy ZWxhdGlvbi90eXBlIGluIG1haW4gYXBwbHkgd29ya2VyIGhlcmUuIFNlZSBmdW5jdGlvbgorCQkg KiBjbGVhbnVwX3JlbF9zeW5jX2NhY2hlLgorCQkgKi8KKwkJaWYgKGFjdGlvbiA9PSBMT0dJQ0FM X1JFUF9NU0dfUkVMQVRJT04gfHwKKwkJCWFjdGlvbiA9PSBMT0dJQ0FMX1JFUF9NU0dfVFlQRSkK KwkJCXJlcyA9IGZhbHNlOworCX0KKwllbHNlCisJeworCQlBc3NlcnQoc3RyZWFtX2ZkICE9IE5V TEwpOworCisJCS8qCisJCSAqIFRoaXMgaXMgdGhlIG1haW4gYXBwbHkgd29ya2VyLCBidXQgdGhl cmUgaXMgbm8gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsCisJCSAqIHNvIHdyaXRlIHRvIHRlbXBv cmFyeSBmaWxlcyBhbmQgYXBwbHkgd2hlbiB0aGUgZmluYWwgY29tbWl0IGFycml2ZXMuCisJCSAq CisJCSAqIEFkZCB0aGUgbmV3IHN1YnhhY3QgdG8gdGhlIGFycmF5ICh1bmxlc3MgYWxyZWFkeSB0 aGVyZSkuCisJCSAqLworCQlzdWJ4YWN0X2luZm9fYWRkKGN1cnJlbnRfeGlkKTsKIAotCS8qIHdy aXRlIHRoZSBjaGFuZ2UgdG8gdGhlIGN1cnJlbnQgZmlsZSAqLwotCXN0cmVhbV93cml0ZV9jaGFu Z2UoYWN0aW9uLCBzKTsKKwkJLyogd3JpdGUgdGhlIGNoYW5nZSB0byB0aGUgY3VycmVudCBmaWxl ICovCisJCXN0cmVhbV93cml0ZV9jaGFuZ2UoYWN0aW9uLCBzKTsKKwl9CiAKLQlyZXR1cm4gdHJ1 ZTsKKwlyZXR1cm4gcmVzOwogfQogCiAvKgpAQCAtODQ0LDYgKzkyOSw5IEBAIGFwcGx5X2hhbmRs ZV9jb21taXQoU3RyaW5nSW5mbyBzKQogCiAJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgm Y29tbWl0X2RhdGEpOwogCisJLyogQ2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5k IHdvcmtlciBpZiBhbnkuICovCisJYXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7CisKIAkv KiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFs bGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMoY29tbWl0X2RhdGEuZW5kX2xzbik7CiAK QEAgLTg5NSwxMCArOTgzLDEyIEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlX2ludGVybmFsKExvZ2lj YWxSZXBQcmVwYXJlZFR4bkRhdGEgKnByZXBhcmVfZGF0YSkKIAkJCQkJCSAgIGdpZCwgc2l6ZW9m KGdpZCkpOwogCiAJLyoKLQkgKiBCZWdpblRyYW5zYWN0aW9uQmxvY2sgaXMgbmVjZXNzYXJ5IHRv IGJhbGFuY2UgdGhlIEVuZFRyYW5zYWN0aW9uQmxvY2sKKwkgKiBXZSBtdXN0IGJlIGluIHRyYW5z YWN0aW9uIGJsb2NrIHRvIGJhbGFuY2UgdGhlIEVuZFRyYW5zYWN0aW9uQmxvY2sKIAkgKiBjYWxs ZWQgd2l0aGluIHRoZSBQcmVwYXJlVHJhbnNhY3Rpb25CbG9jayBiZWxvdy4KIAkgKi8KLQlCZWdp blRyYW5zYWN0aW9uQmxvY2soKTsKKwlpZiAoIUlzVHJhbnNhY3Rpb25CbG9jaygpKQorCQlCZWdp blRyYW5zYWN0aW9uQmxvY2soKTsKKwogCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOyAvKiBD b21wbGV0ZXMgdGhlIHByZWNlZGluZyBCZWdpbiBjb21tYW5kLiAqLwogCiAJLyoKQEAgLTk1MCw2 ICsxMDQwLDkgQEAgYXBwbHlfaGFuZGxlX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCiAJaW5fcmVt b3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CiAKKwkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5 IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dvcmtlcl9jaGVja19zdGF0 dXMoKTsKKwogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJvbml6 ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhwcmVwYXJlX2RhdGEu ZW5kX2xzbik7CiAKQEAgLTEwNjQsMTAgKzExNTcsNiBAQCBhcHBseV9oYW5kbGVfcm9sbGJhY2tf cHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCiAvKgogICogSGFuZGxlIFNUUkVBTSBQUkVQQVJFLgot ICoKLSAqIExvZ2ljIGlzIGluIHR3byBwYXJ0czoKLSAqIDEuIFJlcGxheSBhbGwgdGhlIHNwb29s ZWQgb3BlcmF0aW9ucwotICogMi4gTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQKICAq Lwogc3RhdGljIHZvaWQKIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMp CkBAIC0xMDg4LDI0ICsxMTc3LDc4IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJp bmdJbmZvIHMpCiAJbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9wcmVwYXJlKHMsICZwcmVwYXJlX2Rh dGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QocHJlcGFyZV9kYXRhLnhpZCwgcHJl cGFyZV9kYXRhLnByZXBhcmVfbHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgcHJlcGFy ZSBmb3Igc3RyZWFtZWQgdHJhbnNhY3Rpb24gJXUiLCBwcmVwYXJlX2RhdGEueGlkKTsKKwlpZiAo YW1fYXBwbHlfYmd3b3JrZXIoKSkKKwl7CisJCS8qIE1hcmsgdGhlIHRyYW5zYWN0aW9uIGFzIHBy ZXBhcmVkLiAqLworCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRh KTsKIAotCS8qIFJlcGxheSBhbGwgdGhlIHNwb29sZWQgb3BlcmF0aW9ucy4gKi8KLQlhcHBseV9z cG9vbGVkX21lc3NhZ2VzKHByZXBhcmVfZGF0YS54aWQsIHByZXBhcmVfZGF0YS5wcmVwYXJlX2xz bik7CisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCi0JLyogTWFyayB0aGUgdHJhbnNh Y3Rpb24gYXMgcHJlcGFyZWQuICovCi0JYXBwbHlfaGFuZGxlX3ByZXBhcmVfaW50ZXJuYWwoJnBy ZXBhcmVfZGF0YSk7CisJCXBnc3RhdF9yZXBvcnRfc3RhdChmYWxzZSk7CiAKLQlDb21taXRUcmFu c2FjdGlvbkNvbW1hbmQoKTsKKwkJbGlzdF9mcmVlKHN1YnhhY3RsaXN0KTsKKwkJc3VieGFjdGxp c3QgPSBOSUw7CiAKLQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQlhcHBseV9iZ3dvcmtl cl9zZXRfc3RhdHVzKEFQUExZX0JHV09SS0VSX0ZJTklTSEVEKTsKKwl9CisJZWxzZQorCXsKKwkJ LyogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIuICovCisJCUFwcGx5Qmd3b3JrZXJJbmZv ICp3c3RhdGUgPSBhcHBseV9iZ3dvcmtlcl9maW5kKHByZXBhcmVfZGF0YS54aWQpOwogCi0Jc3Rv cmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQllbG9nKERFQlVHMSwg InJlY2VpdmVkIHByZXBhcmUgZm9yIHN0cmVhbWVkIHRyYW5zYWN0aW9uICV1IiwKKwkJCSBwcmVw YXJlX2RhdGEueGlkKTsKKworCQkvKgorCQkgKiBDaGVjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyB0 aGlzIHRyYW5zYWN0aW9uIHVzaW5nIGFuIGFwcGx5CisJCSAqIGJhY2tncm91bmQgd29ya2VyIGFu ZCBpZiBzbywgc2VuZCB0aGUgY2hhbmdlcyB0byB0aGF0IHdvcmtlci4KKwkJICovCisJCWlmICh3 c3RhdGUpCisJCXsKKwkJCS8qIFNlbmQgU1RSRUFNIFBSRVBBUkUgbWVzc2FnZSB0byB0aGUgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEod3N0 YXRlLCBzLT5sZW4sIHMtPmRhdGEpOworCisJCQkvKgorCQkJICogQWZ0ZXIgc2VuZGluZyB0aGUg ZGF0YSB0byB0aGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIsIHdhaXQgZm9yCisJCQkgKiB0aGF0 IHdvcmtlciB0byBmaW5pc2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAor CQkJICogb3JkZXIgd2hpY2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBl bmRlbmNpZXMgYW5kCisJCQkgKiBkZWFkbG9ja3MuCisJCQkgKi8KKwkJCWFwcGx5X2Jnd29ya2Vy X3dhaXRfZm9yKHdzdGF0ZSwgQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCQkJYXBwbHlfYmd3 b3JrZXJfZnJlZSh3c3RhdGUpOworCisJCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCQkJ c3RvcmVfZmx1c2hfcG9zaXRpb24ocHJlcGFyZV9kYXRhLmVuZF9sc24pOworCQl9CisJCWVsc2UK KwkJeworCQkJLyoKKwkJCSAqIFRoZSB0cmFuc2FjdGlvbiBoYXMgYmVlbiBzZXJpYWxpemVkIHRv IGZpbGUsIHNvIHJlcGxheSBhbGwgdGhlCisJCQkgKiBzcG9vbGVkIG9wZXJhdGlvbnMuCisJCQkg Ki8KKwkJCWFwcGx5X3Nwb29sZWRfbWVzc2FnZXMocHJlcGFyZV9kYXRhLnhpZCwgcHJlcGFyZV9k YXRhLnByZXBhcmVfbHNuKTsKKworCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFy ZWQuICovCisJCQlhcHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsK KworCQkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisKKwkJCXBnc3RhdF9yZXBvcnRfc3Rh dChmYWxzZSk7CisKKwkJCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBhcmVfZGF0YS5lbmRfbHNu KTsKKworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisKKwkJCS8qIFVubGluayB0 aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KKwkJ CXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVf ZGF0YS54aWQpOworCQl9CisJfQogCiAJaW5fcmVtb3RlX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJ c3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CiAKLQkvKiB1bmxpbmsgdGhlIGZpbGVzIHdpdGgg c2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGluZm8uICovCi0Jc3RyZWFtX2NsZWFudXBf ZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgcHJlcGFyZV9kYXRhLnhpZCk7CisJLyog Q2hlY2sgdGhlIHN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhbnkuICovCisJ YXBwbHlfYmd3b3JrZXJfY2hlY2tfc3RhdHVzKCk7CiAKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMg dGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGluIHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3lu Y2luZ190YWJsZXMocHJlcGFyZV9kYXRhLmVuZF9sc24pOwpAQCAtMTE1NSwxNSArMTI5OCw2IEBA IGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogCQkJCShlcnJjb2RlKEVS UkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwKIAkJCQkgZXJybXNnX2ludGVybmFsKCJkdXBsaWNh dGUgU1RSRUFNIFNUQVJUIG1lc3NhZ2UiKSkpOwogCi0JLyoKLQkgKiBTdGFydCBhIHRyYW5zYWN0 aW9uIG9uIHN0cmVhbSBzdGFydCwgdGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlIGNvbW1pdHRlZAot CSAqIG9uIHRoZSBzdHJlYW0gc3RvcCB1bmxlc3MgaXQgaXMgYSB0YWJsZXN5bmMgd29ya2VyIGlu IHdoaWNoIGNhc2UgaXQKLQkgKiB3aWxsIGJlIGNvbW1pdHRlZCBhZnRlciBwcm9jZXNzaW5nIGFs bCB0aGUgbWVzc2FnZXMuIFdlIG5lZWQgdGhlCi0JICogdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5n IHRoZSBidWZmaWxlLCB1c2VkIGZvciBzZXJpYWxpemluZyB0aGUKLQkgKiBzdHJlYW1pbmcgZGF0 YSBhbmQgc3VieGFjdCBpbmZvLgotCSAqLwotCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKLQog CS8qIG5vdGlmeSBoYW5kbGUgbWV0aG9kcyB3ZSdyZSBwcm9jZXNzaW5nIGEgcmVtb3RlIHRyYW5z YWN0aW9uICovCiAJaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24gPSB0cnVlOwogCkBAIC0xMTc3LDM2 ICsxMzExLDkzIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fc3RhcnQoU3RyaW5nSW5mbyBzKQogCiAJ c2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChzdHJlYW1feGlkLCBJbnZhbGlkWExvZ1JlY1B0 cik7CiAKLQkvKgotCSAqIEluaXRpYWxpemUgdGhlIHdvcmtlcidzIHN0cmVhbV9maWxlc2V0IGlm IHdlIGhhdmVuJ3QgeWV0LiBUaGlzIHdpbGwgYmUKLQkgKiB1c2VkIGZvciB0aGUgZW50aXJlIGR1 cmF0aW9uIG9mIHRoZSB3b3JrZXIgc28gY3JlYXRlIGl0IGluIGEgcGVybWFuZW50Ci0JICogY29u dGV4dC4gV2UgY3JlYXRlIHRoaXMgb24gdGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5nIG1lc3NhZ2Ug ZnJvbSBhbnkKLQkgKiB0cmFuc2FjdGlvbiBhbmQgdGhlbiB1c2UgaXQgZm9yIHRoaXMgYW5kIG90 aGVyIHN0cmVhbWluZyB0cmFuc2FjdGlvbnMuCi0JICogTm93LCB3ZSBjb3VsZCBjcmVhdGUgYSBm aWxlc2V0IGF0IHRoZSBzdGFydCBvZiB0aGUgd29ya2VyIGFzIHdlbGwgYnV0Ci0JICogdGhlbiB3 ZSB3b24ndCBiZSBzdXJlIHRoYXQgaXQgd2lsbCBldmVyIGJlIHVzZWQuCi0JICovCi0JaWYgKE15 TG9naWNhbFJlcFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPT0gTlVMTCkKKwlpZiAoYW1fYXBwbHlf Ymd3b3JrZXIoKSkKIAl7Ci0JCU1lbW9yeUNvbnRleHQgb2xkY3R4OwotCi0JCW9sZGN0eCA9IE1l bW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQkvKgorCQkgKiBNYWtlIHN1cmUg dGhlIGhhbmRsZSBhcHBseV9kaXNwYXRjaCBtZXRob2RzIGFyZSBhd2FyZSB3ZSdyZSBpbiBhCisJ CSAqIHJlbW90ZSB0cmFuc2FjdGlvbi4KKwkJICovCisJCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9 IHRydWU7CiAKLQkJTXlMb2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9IHBhbGxvYyhz aXplb2YoRmlsZVNldCkpOwotCQlGaWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVh bV9maWxlc2V0KTsKKwkJLyogQmVnaW4gdGhlIHRyYW5zYWN0aW9uLiAqLworCQlBY2NlcHRJbnZh bGlkYXRpb25NZXNzYWdlcygpOworCQltYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKCk7CiAKLQkJ TWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5k KCk7CisJCUJlZ2luVHJhbnNhY3Rpb25CbG9jaygpOworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1h bmQoKTsKIAl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3 b3JrZXIuIENoZWNrIGlmIHRoZXJlIGlzIGFueSBmcmVlIGFwcGx5CisJCSAqIGJhY2tncm91bmQg d29ya2VyIHdlIGNhbiB1c2UgdG8gcHJvY2VzcyB0aGlzIHRyYW5zYWN0aW9uLgorCQkgKi8KKwkJ aWYgKGZpcnN0X3NlZ21lbnQpCisJCQlzdHJlYW1fYXBwbHlfd29ya2VyID0gYXBwbHlfYmd3b3Jr ZXJfc3RhcnQoc3RyZWFtX3hpZCk7CisJCWVsc2UKKwkJCXN0cmVhbV9hcHBseV93b3JrZXIgPSBh cHBseV9iZ3dvcmtlcl9maW5kKHN0cmVhbV94aWQpOwogCi0JLyogb3BlbiB0aGUgc3Bvb2wgZmls ZSBmb3IgdGhpcyB0cmFuc2FjdGlvbiAqLwotCXN0cmVhbV9vcGVuX2ZpbGUoTXlMb2dpY2FsUmVw V29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCwgZmlyc3Rfc2VnbWVudCk7CisJCWlmIChzdHJlYW1f YXBwbHlfd29ya2VyKQorCQl7CisJCQkvKgorCQkJICogSWYgd2UgaGF2ZSBmb3VuZCBhIGZyZWUg d29ya2VyIG9yIGlmIHdlIGFyZSBhbHJlYWR5IGFwcGx5aW5nCisJCQkgKiB0aGlzIHRyYW5zYWN0 aW9uIHVzaW5nIGFuIGFwcGx5IGJhY2tncm91bmQgd29ya2VyLCB0aGVuIHdlIHBhc3MKKwkJCSAq IHRoZSBkYXRhIHRvIHRoYXQgd29ya2VyLgorCQkJICovCisJCQlpZiAoZmlyc3Rfc2VnbWVudCkK KwkJCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5X3dvcmtlciwgcy0+bGVu LCBzLT5kYXRhKTsKIAotCS8qIGlmIHRoaXMgaXMgbm90IHRoZSBmaXJzdCBzZWdtZW50LCBvcGVu IGV4aXN0aW5nIHN1YnhhY3QgZmlsZSAqLwotCWlmICghZmlyc3Rfc2VnbWVudCkKLQkJc3VieGFj dF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7CisJCQlu Y2hhbmdlcyA9IDA7CisJCQllbG9nKERFQlVHMSwgInN0YXJ0aW5nIHN0cmVhbWluZyBvZiB4aWQg JXUiLCBzdHJlYW1feGlkKTsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qCisJCQkgKiBTaW5jZSBu byBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpcyBhdmFpbGFibGUgZm9yIHRoZSBmaXJzdAorCQkJ ICogc3RyZWFtIHN0YXJ0LCBzZXJpYWxpemUgYWxsIHRoZSBjaGFuZ2VzIG9mIHRoZSB0cmFuc2Fj dGlvbi4KKwkJCSAqCisJCQkgKiBTdGFydCBhIHRyYW5zYWN0aW9uIG9uIHN0cmVhbSBzdGFydCwg dGhpcyB0cmFuc2FjdGlvbiB3aWxsIGJlCisJCQkgKiBjb21taXR0ZWQgb24gdGhlIHN0cmVhbSBz dG9wIHVubGVzcyBpdCBpcyBhIHRhYmxlc3luYyB3b3JrZXIgaW4KKwkJCSAqIHdoaWNoIGNhc2Ug aXQgd2lsbCBiZSBjb21taXR0ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlCisJCQkgKiBtZXNz YWdlcy4gV2UgbmVlZCB0aGUgdHJhbnNhY3Rpb24gZm9yIGhhbmRsaW5nIHRoZSBidWZmaWxlLAor CQkJICogdXNlZCBmb3Igc2VyaWFsaXppbmcgdGhlIHN0cmVhbWluZyBkYXRhIGFuZCBzdWJ4YWN0 IGluZm8uCisJCQkgKi8KKwkJCWJlZ2luX3JlcGxpY2F0aW9uX3N0ZXAoKTsKIAotCXBnc3RhdF9y ZXBvcnRfYWN0aXZpdHkoU1RBVEVfUlVOTklORywgTlVMTCk7CisJCQkvKgorCQkJICogSW5pdGlh bGl6ZSB0aGUgd29ya2VyJ3Mgc3RyZWFtX2ZpbGVzZXQgaWYgd2UgaGF2ZW4ndCB5ZXQuIFRoaXMg d2lsbAorCQkJICogYmUgdXNlZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiB0aGUgd29ya2Vy IHNvIGNyZWF0ZSBpdCBpbiBhCisJCQkgKiBwZXJtYW5lbnQgY29udGV4dC4gV2UgY3JlYXRlIHRo aXMgb24gdGhlIHZlcnkgZmlyc3Qgc3RyZWFtaW5nCisJCQkgKiBtZXNzYWdlIGZyb20gYW55IHRy YW5zYWN0aW9uIGFuZCB0aGVuIHVzZSBpdCBmb3IgdGhpcyBhbmQgb3RoZXIKKwkJCSAqIHN0cmVh bWluZyB0cmFuc2FjdGlvbnMuIE5vdywgd2UgY291bGQgY3JlYXRlIGEgZmlsZXNldCBhdCB0aGUg c3RhcnQKKwkJCSAqIG9mIHRoZSB3b3JrZXIgYXMgd2VsbCBidXQgdGhlbiB3ZSB3b24ndCBiZSBz dXJlIHRoYXQgaXQgd2lsbCBldmVyCisJCQkgKiBiZSB1c2VkLgorCQkJICovCisJCQlpZiAoTXlM b2dpY2FsUmVwV29ya2VyLT5zdHJlYW1fZmlsZXNldCA9PSBOVUxMKQorCQkJeworCQkJCU1lbW9y eUNvbnRleHQgb2xkY3R4OwogCi0JZW5kX3JlcGxpY2F0aW9uX3N0ZXAoKTsKKwkJCQlvbGRjdHgg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oQXBwbHlDb250ZXh0KTsKKworCQkJCU15TG9naWNhbFJl cFdvcmtlci0+c3RyZWFtX2ZpbGVzZXQgPSBwYWxsb2Moc2l6ZW9mKEZpbGVTZXQpKTsKKwkJCQlG aWxlU2V0SW5pdChNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0KTsKKworCQkJCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOworCQkJfQorCisJCQkvKiBPcGVuIHRoZSBzcG9v bCBmaWxlIGZvciB0aGlzIHRyYW5zYWN0aW9uLiAqLworCQkJc3RyZWFtX29wZW5fZmlsZShNeUxv Z2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkLCBmaXJzdF9zZWdtZW50KTsKKworCQkJ LyogSWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHNlZ21lbnQsIG9wZW4gZXhpc3Rpbmcgc3VieGFj dCBmaWxlLiAqLworCQkJaWYgKCFmaXJzdF9zZWdtZW50KQorCQkJCXN1YnhhY3RfaW5mb19yZWFk KE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHN0cmVhbV94aWQpOworCisJCQllbmRfcmVwbGlj YXRpb25fc3RlcCgpOworCQl9CisJfQorCisJcGdzdGF0X3JlcG9ydF9hY3Rpdml0eShTVEFURV9S VU5OSU5HLCBOVUxMKTsKIH0KIAogLyoKQEAgLTEyMjAsNTMgKzE0MTEsNTIgQEAgYXBwbHlfaGFu ZGxlX3N0cmVhbV9zdG9wKFN0cmluZ0luZm8gcykKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RP Q09MX1ZJT0xBVElPTiksCiAJCQkJIGVycm1zZ19pbnRlcm5hbCgiU1RSRUFNIFNUT1AgbWVzc2Fn ZSB3aXRob3V0IFNUUkVBTSBTVEFSVCIpKSk7CiAKLQkvKgotCSAqIENsb3NlIHRoZSBmaWxlIHdp dGggc2VyaWFsaXplZCBjaGFuZ2VzLCBhbmQgc2VyaWFsaXplIGluZm9ybWF0aW9uIGFib3V0Ci0J ICogc3VieGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KLQkgKi8KLQlzdWJ4YWN0 X2luZm9fd3JpdGUoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwgc3RyZWFtX3hpZCk7Ci0Jc3Ry ZWFtX2Nsb3NlX2ZpbGUoKTsKKwlpZiAoYXBwbHlfYmd3b3JrZXJfYWN0aXZlKCkpCisJeworCQlj aGFyIGFjdGlvbiA9IExPR0lDQUxfUkVQX01TR19TVFJFQU1fU1RPUDsKIAotCS8qIFdlIG11c3Qg YmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLwotCUFzc2VydChJc1RyYW5zYWN0aW9u U3RhdGUoKSk7CisJCWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YShzdHJlYW1fYXBwbHlfd29ya2Vy LCAxLCAmYWN0aW9uKTsKIAotCS8qIENvbW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFuc2FjdGlvbiAq LwotCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQllbG9nKERFQlVHMSwgInN0b3BwZWQg c3RyZWFtaW5nIG9mIHhpZCAldSwgJXUgY2hhbmdlcyBzdHJlYW1lZCIsIHN0cmVhbV94aWQsIG5j aGFuZ2VzKTsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogQ2xvc2UgdGhlIGZpbGUgd2l0aCBz ZXJpYWxpemVkIGNoYW5nZXMsIGFuZCBzZXJpYWxpemUgaW5mb3JtYXRpb24KKwkJICogYWJvdXQg c3VieGFjdHMgZm9yIHRoZSB0b3BsZXZlbCB0cmFuc2FjdGlvbi4KKwkJICovCisJCXN1YnhhY3Rf aW5mb193cml0ZShNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkLCBzdHJlYW1feGlkKTsKKwkJc3Ry ZWFtX2Nsb3NlX2ZpbGUoKTsKIAotCWluX3N0cmVhbWVkX3RyYW5zYWN0aW9uID0gZmFsc2U7CisJ CS8qIFdlIG11c3QgYmUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBzdGF0ZSAqLworCQlBc3NlcnQo SXNUcmFuc2FjdGlvblN0YXRlKCkpOworCisJCS8qIENvbW1pdCB0aGUgcGVyLXN0cmVhbSB0cmFu c2FjdGlvbiAqLworCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKIAotCS8qIFJlc2V0IHBl ci1zdHJlYW0gY29udGV4dCAqLwotCU1lbW9yeUNvbnRleHRSZXNldChMb2dpY2FsU3RyZWFtaW5n Q29udGV4dCk7CisJCS8qIFJlc2V0IHBlci1zdHJlYW0gY29udGV4dCAqLworCQlNZW1vcnlDb250 ZXh0UmVzZXQoTG9naWNhbFN0cmVhbWluZ0NvbnRleHQpOworCX0KKworCWluX3N0cmVhbWVkX3Ry YW5zYWN0aW9uID0gZmFsc2U7CisJc3RyZWFtX2FwcGx5X3dvcmtlciA9IE5VTEw7CiAKIAlwZ3N0 YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwogCXJlc2V0X2FwcGx5X2Vycm9y X2NvbnRleHRfaW5mbygpOwogfQogCiAvKgotICogSGFuZGxlIFNUUkVBTSBhYm9ydCBtZXNzYWdl LgorICogSGFuZGxlIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHdoZW4gdGhlIHRyYW5zYWN0aW9uIHdh cyBzcGlsbGVkIHRvIGRpc2suCiAgKi8KIHN0YXRpYyB2b2lkCi1hcHBseV9oYW5kbGVfc3RyZWFt X2Fib3J0KFN0cmluZ0luZm8gcykKK3NlcmlhbGl6ZV9zdHJlYW1fYWJvcnQoVHJhbnNhY3Rpb25J ZCB4aWQsIFRyYW5zYWN0aW9uSWQgc3VieGlkKQogewotCVRyYW5zYWN0aW9uSWQgeGlkOwotCVRy YW5zYWN0aW9uSWQgc3VieGlkOwotCi0JaWYgKGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uKQotCQll cmVwb3J0KEVSUk9SLAotCQkJCShlcnJjb2RlKEVSUkNPREVfUFJPVE9DT0xfVklPTEFUSU9OKSwK LQkJCQkgZXJybXNnX2ludGVybmFsKCJTVFJFQU0gQUJPUlQgbWVzc2FnZSB3aXRob3V0IFNUUkVB TSBTVE9QIikpKTsKLQotCWxvZ2ljYWxyZXBfcmVhZF9zdHJlYW1fYWJvcnQocywgJnhpZCwgJnN1 YnhpZCk7Ci0KIAkvKgogCSAqIElmIHRoZSB0d28gWElEcyBhcmUgdGhlIHNhbWUsIGl0J3MgaW4g ZmFjdCBhYm9ydCBvZiB0b3BsZXZlbCB4YWN0LCBzbwogCSAqIGp1c3QgZGVsZXRlIHRoZSBmaWxl cyB3aXRoIHNlcmlhbGl6ZWQgaW5mby4KIAkgKi8KIAlpZiAoeGlkID09IHN1YnhpZCkKLQl7Ci0J CXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoeGlkLCBJbnZhbGlkWExvZ1JlY1B0cik7CiAJ CXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7Ci0J fQogCWVsc2UKIAl7CiAJCS8qCkBAIC0xMjkwLDggKzE0ODAsNiBAQCBhcHBseV9oYW5kbGVfc3Ry ZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAkJYm9vbAkJZm91bmQgPSBmYWxzZTsKIAkJY2hhcgkJ cGF0aFtNQVhQR1BBVEhdOwogCi0JCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qoc3VieGlk LCBJbnZhbGlkWExvZ1JlY1B0cik7Ci0KIAkJc3ViaWR4ID0gLTE7CiAJCWJlZ2luX3JlcGxpY2F0 aW9uX3N0ZXAoKTsKIAkJc3VieGFjdF9pbmZvX3JlYWQoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJp ZCwgeGlkKTsKQEAgLTEzMTYsNyArMTUwNCw2IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQo U3RyaW5nSW5mbyBzKQogCQkJY2xlYW51cF9zdWJ4YWN0X2luZm8oKTsKIAkJCWVuZF9yZXBsaWNh dGlvbl9zdGVwKCk7CiAJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKLQkJCXJlc2V0X2Fw cGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwogCQkJcmV0dXJuOwogCQl9CiAKQEAgLTEzMzksNiAr MTUyNiwxNDQgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCWVu ZF9yZXBsaWNhdGlvbl9zdGVwKCk7CiAJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOwogCX0K K30KKworLyoKKyAqIEhhbmRsZSBTVFJFQU0gQUJPUlQgbWVzc2FnZS4KKyAqLworc3RhdGljIHZv aWQKK2FwcGx5X2hhbmRsZV9zdHJlYW1fYWJvcnQoU3RyaW5nSW5mbyBzKQoreworCVRyYW5zYWN0 aW9uSWQgeGlkOworCVRyYW5zYWN0aW9uSWQgc3VieGlkOworCUxvZ2ljYWxSZXBTdHJlYW1BYm9y dERhdGEgYWJvcnRfZGF0YTsKKwlib29sIHJlYWRfYWJvcnRfbHNuID0gZmFsc2U7CisKKwlpZiAo aW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLAorCQkJCSBlcnJtc2dfaW50ZXJuYWwoIlNUUkVB TSBBQk9SVCBtZXNzYWdlIHdpdGhvdXQgU1RSRUFNIFNUT1AiKSkpOworCisJLyogQ2hlY2sgd2hl dGhlciB0aGUgcHVibGlzaGVyIHNlbmRzIGFib3J0X2xzbiBhbmQgYWJvcnRfdGltZS4gKi8KKwlp ZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkKKwkJcmVhZF9hYm9ydF9sc24gPSBNeVBhcmFsbGVsU2hh cmVkLT5wcm90b192ZXJzaW9uID49CisJCQkJCQkgTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFS QUxMRUxfVkVSU0lPTl9OVU07CisKKwlsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2Fib3J0KHMsICZh Ym9ydF9kYXRhLCByZWFkX2Fib3J0X2xzbik7CisKKwl4aWQgPSBhYm9ydF9kYXRhLnhpZDsKKwlz dWJ4aWQgPSBhYm9ydF9kYXRhLnN1YnhpZDsKKworCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hh Y3Qoc3VieGlkLCBhYm9ydF9kYXRhLmFib3J0X2xzbik7CisKKwlpZiAoYW1fYXBwbHlfYmd3b3Jr ZXIoKSkKKwl7CisJCWVsb2coREVCVUcxLCAiW0FwcGx5IEJHVyAjJXVdIGFib3J0aW5nIGN1cnJl bnQgdHJhbnNhY3Rpb24geGlkPSV1LCBzdWJ4aWQ9JXUiLAorCQkJIE15UGFyYWxsZWxTaGFyZWQt Pndvcmtlcl9pZCAsIEdldEN1cnJlbnRUcmFuc2FjdGlvbklkSWZBbnkoKSwKKwkJCSBHZXRDdXJy ZW50U3ViVHJhbnNhY3Rpb25JZCgpKTsKKworCQkvKgorCQkgKiBVcGRhdGUgb3JpZ2luIHN0YXRl IHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVhbWluZyBmcm9tIGNvcnJlY3QKKwkJICogcG9zaXRpb24g aW4gY2FzZSBvZiBjcmFzaC4KKwkJICovCisJCWlmIChyZWFkX2Fib3J0X2xzbikKKwkJeworCQkJ cmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl9sc24gPSBhYm9ydF9kYXRhLmFib3J0X2xzbjsKKwkJ CXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fdGltZXN0YW1wID0gYWJvcnRfZGF0YS5hYm9ydF90 aW1lOworCQl9CisKKwkJLyoKKwkJICogSWYgdGhlIHR3byBYSURzIGFyZSB0aGUgc2FtZSwgaXQn cyBpbiBmYWN0IGFib3J0IG9mIHRvcGxldmVsIHhhY3QsCisJCSAqIHNvIGp1c3QgZnJlZSB0aGUg c3VieGFjdGxpc3QuCisJCSAqLworCQlpZiAoc3VieGlkID09IHhpZCkKKwkJeworCQkJQWJvcnRD dXJyZW50VHJhbnNhY3Rpb24oKTsKKworCQkJRW5kVHJhbnNhY3Rpb25CbG9jayhmYWxzZSk7CisJ CQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKworCQkJaW5fcmVtb3RlX3RyYW5zYWN0aW9u ID0gZmFsc2U7CisJCQlwZ3N0YXRfcmVwb3J0X2FjdGl2aXR5KFNUQVRFX0lETEUsIE5VTEwpOwor CisJCQlsaXN0X2ZyZWUoc3VieGFjdGxpc3QpOworCQkJc3VieGFjdGxpc3QgPSBOSUw7CisKKwkJ CWFwcGx5X2Jnd29ya2VyX3NldF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCQl9 CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIE9LLCBzbyBpdCdzIGEgc3VieGFjdC4gUm9sbGJh Y2sgdG8gdGhlIHNhdmVwb2ludC4KKwkJCSAqCisJCQkgKiBXZSBhbHNvIG5lZWQgdG8gcmVhZCB0 aGUgc3VieGFjdGxpc3QsIGRldGVybWluZSB0aGUgb2Zmc2V0CisJCQkgKiB0cmFja2VkIGZvciB0 aGUgc3VieGFjdCwgYW5kIHRydW5jYXRlIHRoZSBsaXN0LgorCQkJICovCisJCQlpbnQJCQlpOwor CQkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKwkJCWNoYXIJCXNwbmFtZVtNQVhQR1BBVEhdOworCisJ CQlhcHBseV9iZ3dvcmtlcl9zYXZlcG9pbnRfbmFtZShNeVN1YnNjcmlwdGlvbi0+b2lkLCBzdWJ4 aWQsIHNwbmFtZSwKKwkJCQkJCQkJCQkgIHNpemVvZihzcG5hbWUpKTsKKworCQkJZWxvZyhERUJV RzEsICJbQXBwbHkgQkdXICMldV0gcm9sbGluZyBiYWNrIHRvIHNhdmVwb2ludCAlcyIsCisJCQkJ IE15UGFyYWxsZWxTaGFyZWQtPndvcmtlcl9pZCwgc3BuYW1lKTsKKworCQkJZm9yIChpID0gbGlz dF9sZW5ndGgoc3VieGFjdGxpc3QpIC0gMTsgaSA+PSAwOyBpLS0pCisJCQl7CisJCQkJeGlkID0g KFRyYW5zYWN0aW9uSWQpIGxpc3RfbnRoX2ludChzdWJ4YWN0bGlzdCwgaSk7CisJCQkJaWYgKHhp ZCA9PSBzdWJ4aWQpCisJCQkJeworCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJCWJyZWFrOworCQkJ CX0KKwkJCX0KKworCQkJaWYgKGZvdW5kKQorCQkJeworCQkJCVJvbGxiYWNrVG9TYXZlcG9pbnQo c3BuYW1lKTsKKwkJCQlDb21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKKwkJCQlzdWJ4YWN0bGlz dCA9IGxpc3RfdHJ1bmNhdGUoc3VieGFjdGxpc3QsIGkgKyAxKTsKKwkJCX0KKworCQkJcGdzdGF0 X3JlcG9ydF9hY3Rpdml0eShTVEFURV9JRExFSU5UUkFOU0FDVElPTiwgTlVMTCk7CisJCX0KKwl9 CisJZWxzZQorCXsKKwkJLyogVGhpcyBpcyB0aGUgbWFpbiBhcHBseSB3b3JrZXIuICovCisJCUFw cGx5Qmd3b3JrZXJJbmZvICp3c3RhdGUgPSBhcHBseV9iZ3dvcmtlcl9maW5kKHhpZCk7CisKKwkJ LyoKKwkJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlvbiB1c2lu ZyBhbiBhcHBseQorCQkgKiBiYWNrZ3JvdW5kIHdvcmtlciBhbmQgaWYgc28sIHNlbmQgdGhlIGNo YW5nZXMgdG8gdGhhdCB3b3JrZXIuCisJCSAqLworCQlpZiAod3N0YXRlKQorCQl7CisJCQkvKiBT ZW5kIFNUUkVBTSBBQk9SVCBtZXNzYWdlIHRvIHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4g Ki8KKwkJCWFwcGx5X2Jnd29ya2VyX3NlbmRfZGF0YSh3c3RhdGUsIHMtPmxlbiwgcy0+ZGF0YSk7 CisKKwkJCS8qCisJCQkgKiBBZnRlciBzZW5kaW5nIHRoZSBkYXRhIHRvIHRoZSBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlciwgd2FpdCBmb3IKKwkJCSAqIHRoYXQgd29ya2VyIHRvIGZpbmlzaC4gVGhp cyBpcyBuZWNlc3NhcnkgdG8gbWFpbnRhaW4gY29tbWl0CisJCQkgKiBvcmRlciB3aGljaCBhdm9p ZHMgZmFpbHVyZXMgZHVlIHRvIHRyYW5zYWN0aW9uIGRlcGVuZGVuY2llcyBhbmQKKwkJCSAqIGRl YWRsb2Nrcy4KKwkJCSAqLworCQkJaWYgKHN1YnhpZCA9PSB4aWQpCisJCQl7CisJCQkJYXBwbHlf Ymd3b3JrZXJfd2FpdF9mb3Iod3N0YXRlLCBBUFBMWV9CR1dPUktFUl9GSU5JU0hFRCk7CisJCQkJ YXBwbHlfYmd3b3JrZXJfZnJlZSh3c3RhdGUpOworCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJ LyoKKwkJCSAqIFdlIGFyZSBpbiBtYWluIGFwcGx5IHdvcmtlciBhbmQgdGhlIHRyYW5zYWN0aW9u IGhhcyBiZWVuCisJCQkgKiBzZXJpYWxpemVkIHRvIGZpbGUuCisJCQkgKi8KKwkJCXNlcmlhbGl6 ZV9zdHJlYW1fYWJvcnQoeGlkLCBzdWJ4aWQpOworCQl9CisJfQogCiAJcmVzZXRfYXBwbHlfZXJy b3JfY29udGV4dF9pbmZvKCk7CiB9CkBAIC0xNDY4LDggKzE3OTMsOCBAQCBhcHBseV9zcG9vbGVk X21lc3NhZ2VzKFRyYW5zYWN0aW9uSWQgeGlkLCBYTG9nUmVjUHRyIGxzbikKIHN0YXRpYyB2b2lk CiBhcHBseV9oYW5kbGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIHMpCiB7Ci0JVHJhbnNhY3Rp b25JZCB4aWQ7CiAJTG9naWNhbFJlcENvbW1pdERhdGEgY29tbWl0X2RhdGE7CisJVHJhbnNhY3Rp b25JZCB4aWQ7CiAKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJS T1IsCkBAIC0xNDc5LDE0ICsxODA0LDgxIEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fY29tbWl0KFN0 cmluZ0luZm8gcykKIAl4aWQgPSBsb2dpY2FscmVwX3JlYWRfc3RyZWFtX2NvbW1pdChzLCAmY29t bWl0X2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3QoeGlkLCBjb21taXRfZGF0 YS5jb21taXRfbHNuKTsKIAotCWVsb2coREVCVUcxLCAicmVjZWl2ZWQgY29tbWl0IGZvciBzdHJl YW1lZCB0cmFuc2FjdGlvbiAldSIsIHhpZCk7CisJaWYgKGFtX2FwcGx5X2Jnd29ya2VyKCkpCisJ eworCQkvKgorCQkgKiBVcGRhdGUgb3JpZ2luIHN0YXRlIHNvIHdlIGNhbiByZXN0YXJ0IHN0cmVh bWluZyBmcm9tIGNvcnJlY3QKKwkJICogcG9zaXRpb24gaW4gY2FzZSBvZiBjcmFzaC4KKwkJICov CisJCXJlcGxvcmlnaW5fc2Vzc2lvbl9vcmlnaW5fbHNuID0gY29tbWl0X2RhdGEuZW5kX2xzbjsK KwkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbl90aW1lc3RhbXAgPSBjb21taXRfZGF0YS5jb21t aXR0aW1lOworCisJCUNvbW1pdFRyYW5zYWN0aW9uQ29tbWFuZCgpOworCQlFbmRUcmFuc2FjdGlv bkJsb2NrKGZhbHNlKTsKKwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQlhcHBseV9z cG9vbGVkX21lc3NhZ2VzKHhpZCwgY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJCWluX3JlbW90 ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCi0JYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgm Y29tbWl0X2RhdGEpOworCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFsc2UpOworCisJCWxpc3RfZnJl ZShzdWJ4YWN0bGlzdCk7CisJCXN1YnhhY3RsaXN0ID0gTklMOworCisJCWFwcGx5X2Jnd29ya2Vy X3NldF9zdGF0dXMoQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCX0KKwllbHNlCisJeworCQkv KiBUaGlzIGlzIHRoZSBtYWluIGFwcGx5IHdvcmtlci4gKi8KKwkJQXBwbHlCZ3dvcmtlckluZm8g KndzdGF0ZSA9IGFwcGx5X2Jnd29ya2VyX2ZpbmQoeGlkKTsKIAotCS8qIHVubGluayB0aGUgZmls ZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mbyAqLwotCXN0cmVhbV9j bGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHhpZCk7CisJCWVsb2coREVC VUcxLCAicmVjZWl2ZWQgY29tbWl0IGZvciBzdHJlYW1lZCB0cmFuc2FjdGlvbiAldSIsIHhpZCk7 CisKKwkJLyoKKwkJICogQ2hlY2sgaWYgd2UgYXJlIHByb2Nlc3NpbmcgdGhpcyB0cmFuc2FjdGlv biB1c2luZyBhbiBhcHBseQorCQkgKiBiYWNrZ3JvdW5kIHdvcmtlciBhbmQgaWYgc28sIHNlbmQg dGhlIGNoYW5nZXMgdG8gdGhhdCB3b3JrZXIuCisJCSAqLworCQlpZiAod3N0YXRlKQorCQl7CisJ CQkvKiBTZW5kIFNUUkVBTSBDT01NSVQgbWVzc2FnZSB0byB0aGUgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIuICovCisJCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEod3N0YXRlLCBzLT5sZW4sIHMt PmRhdGEpOworCisJCQkvKgorCQkJICogQWZ0ZXIgc2VuZGluZyB0aGUgZGF0YSB0byB0aGUgYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIsIHdhaXQgZm9yCisJCQkgKiB0aGF0IHdvcmtlciB0byBmaW5p c2guIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIG1haW50YWluIGNvbW1pdAorCQkJICogb3JkZXIgd2hp Y2ggYXZvaWRzIGZhaWx1cmVzIGR1ZSB0byB0cmFuc2FjdGlvbiBkZXBlbmRlbmNpZXMgYW5kCisJ CQkgKiBkZWFkbG9ja3MuCisJCQkgKi8KKwkJCWFwcGx5X2Jnd29ya2VyX3dhaXRfZm9yKHdzdGF0 ZSwgQVBQTFlfQkdXT1JLRVJfRklOSVNIRUQpOworCisJCQlwZ3N0YXRfcmVwb3J0X3N0YXQoZmFs c2UpOworCQkJc3RvcmVfZmx1c2hfcG9zaXRpb24oY29tbWl0X2RhdGEuZW5kX2xzbik7CisJCQlz dG9wX3NraXBwaW5nX2NoYW5nZXMoKTsKKworCQkJYXBwbHlfYmd3b3JrZXJfZnJlZSh3c3RhdGUp OworCisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGlzIGVpdGhlciBub24tZW1wdHkgb3Ig c2tpcHBlZCwgc28gd2UgY2xlYXIgdGhlCisJCQkgKiBzdWJza2lwbHNuLgorCQkJICovCisJCQlj bGVhcl9zdWJzY3JpcHRpb25fc2tpcF9sc24oY29tbWl0X2RhdGEuY29tbWl0X2xzbik7CisJCX0K KwkJZWxzZQorCQl7CisJCQkvKgorCQkJICogVGhlIHRyYW5zYWN0aW9uIGhhcyBiZWVuIHNlcmlh bGl6ZWQgdG8gZmlsZSwgc28gcmVwbGF5IGFsbCB0aGUKKwkJCSAqIHNwb29sZWQgb3BlcmF0aW9u cy4KKwkJCSAqLworCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyh4aWQsIGNvbW1pdF9kYXRhLmNv bW1pdF9sc24pOworCisJCQlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0 YSk7CisKKwkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJpYWxpemVkIGNoYW5nZXMgYW5k IHN1YnhhY3QgaW5mby4gKi8KKwkJCXN0cmVhbV9jbGVhbnVwX2ZpbGVzKE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQsIHhpZCk7CisJCX0KKwl9CisKKwkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFw cGx5IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KKwlhcHBseV9iZ3dvcmtlcl9jaGVja19z dGF0dXMoKTsKIAogCS8qIFByb2Nlc3MgYW55IHRhYmxlcyB0aGF0IGFyZSBiZWluZyBzeW5jaHJv bml6ZWQgaW4gcGFyYWxsZWwuICovCiAJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhjb21taXRfZGF0 YS5lbmRfbHNuKTsKQEAgLTI0NjcsNyArMjg1OSw3IEBAIGFwcGx5X2hhbmRsZV90cnVuY2F0ZShT dHJpbmdJbmZvIHMpCiAvKgogICogTG9naWNhbCByZXBsaWNhdGlvbiBwcm90b2NvbCBtZXNzYWdl IGRpc3BhdGNoZXIuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lkCiBhcHBseV9kaXNwYXRjaChTdHJp bmdJbmZvIHMpCiB7CiAJTG9naWNhbFJlcE1zZ1R5cGUgYWN0aW9uID0gcHFfZ2V0bXNnYnl0ZShz KTsKQEAgLTI2MzYsNiArMzAyOCwxMCBAQCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRy IHJlbW90ZV9sc24pCiB7CiAJRmx1c2hQb3NpdGlvbiAqZmx1c2hwb3M7CiAKKwkvKiBTa2lwIGlm IG5vdCB0aGUgbWFpbiBhcHBseSB3b3JrZXIgKi8KKwlpZiAoYW1fYXBwbHlfYmd3b3JrZXIoKSkK KwkJcmV0dXJuOworCiAJLyogTmVlZCB0byBkbyB0aGlzIGluIHBlcm1hbmVudCBjb250ZXh0ICov CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CiAKQEAgLTI2NTAsNyArMzA0 Niw3IEBAIHN0b3JlX2ZsdXNoX3Bvc2l0aW9uKFhMb2dSZWNQdHIgcmVtb3RlX2xzbikKIAogCiAv KiBVcGRhdGUgc3RhdGlzdGljcyBvZiB0aGUgd29ya2VyLiAqLwotc3RhdGljIHZvaWQKK3ZvaWQK IFVwZGF0ZVdvcmtlclN0YXRzKFhMb2dSZWNQdHIgbGFzdF9sc24sIFRpbWVzdGFtcFR6IHNlbmRf dGltZSwgYm9vbCByZXBseSkKIHsKIAlNeUxvZ2ljYWxSZXBXb3JrZXItPmxhc3RfbHNuID0gbGFz dF9sc247CkBAIC0yODEyLDYgKzMyMDgsOSBAQCBMb2dpY2FsUmVwQXBwbHlMb29wKFhMb2dSZWNQ dHIgbGFzdF9yZWNlaXZlZCkKIAkJCUFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7CiAJCQlt YXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKCk7CiAKKwkJCS8qIENoZWNrIHRoZSBzdGF0dXMgb2Yg YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgaWYgYW55LiAqLworCQkJYXBwbHlfYmd3b3JrZXJfY2hl Y2tfc3RhdHVzKCk7CisKIAkJCS8qIFByb2Nlc3MgYW55IHRhYmxlIHN5bmNocm9uaXphdGlvbiBj aGFuZ2VzLiAqLwogCQkJcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhsYXN0X3JlY2VpdmVkKTsKIAkJ fQpAQCAtMzExNCw3ICszNTEzLDcgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQog LyoKICAqIENhbGxiYWNrIGZyb20gc3Vic2NyaXB0aW9uIHN5c2NhY2hlIGludmFsaWRhdGlvbi4K ICAqLwotc3RhdGljIHZvaWQKK3ZvaWQKIHN1YnNjcmlwdGlvbl9jaGFuZ2VfY2IoRGF0dW0gYXJn LCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1ZSkKIHsKIAlNeVN1YnNjcmlwdGlvblZhbGlk ID0gZmFsc2U7CkBAIC0zNTY5LDM3ICszOTY4LDE0IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIg b3JpZ2luX3N0YXJ0cG9zKQogCVBHX0VORF9UUlkoKTsKIH0KIAotLyogTG9naWNhbCBSZXBsaWNh dGlvbiBBcHBseSB3b3JrZXIgZW50cnkgcG9pbnQgKi8KKy8qCisgKiBJbml0aWFsaXplIHRoZSBk YXRhYnNlIGNvbm5lY3Rpb24sIGluLW1lbW9yeSBzdWJzY3JpcHRpb24gYW5kIG5lY2Vzc2FyeQor ICogY29uZmlnIG9wdGlvbnMuCisgKi8KIHZvaWQKLUFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWlu X2FyZykKK0luaXRpYWxpemVBcHBseVdvcmtlcih2b2lkKQogewotCWludAkJCXdvcmtlcl9zbG90 ID0gRGF0dW1HZXRJbnQzMihtYWluX2FyZyk7CiAJTWVtb3J5Q29udGV4dCBvbGRjdHg7Ci0JY2hh cgkJb3JpZ2lubmFtZVtOQU1FREFUQUxFTl07Ci0JWExvZ1JlY1B0cglvcmlnaW5fc3RhcnRwb3Mg PSBJbnZhbGlkWExvZ1JlY1B0cjsKLQljaGFyCSAgICpteXNsb3RuYW1lID0gTlVMTDsKLQlXYWxS Y3ZTdHJlYW1PcHRpb25zIG9wdGlvbnM7Ci0JaW50CQkJc2VydmVyX3ZlcnNpb247Ci0KLQkvKiBB dHRhY2ggdG8gc2xvdCAqLwotCWxvZ2ljYWxyZXBfd29ya2VyX2F0dGFjaCh3b3JrZXJfc2xvdCk7 Ci0KLQkvKiBTZXR1cCBzaWduYWwgaGFuZGxpbmcgKi8KLQlwcXNpZ25hbChTSUdIVVAsIFNpZ25h bEhhbmRsZXJGb3JDb25maWdSZWxvYWQpOwotCXBxc2lnbmFsKFNJR1RFUk0sIGRpZSk7Ci0JQmFj a2dyb3VuZFdvcmtlclVuYmxvY2tTaWduYWxzKCk7Ci0KLQkvKgotCSAqIFdlIGRvbid0IGN1cnJl bnRseSBuZWVkIGFueSBSZXNvdXJjZU93bmVyIGluIGEgd2FscmVjZWl2ZXIgcHJvY2VzcywgYnV0 Ci0JICogaWYgd2UgZGlkLCB3ZSBjb3VsZCBjYWxsIENyZWF0ZUF1eFByb2Nlc3NSZXNvdXJjZU93 bmVyIGhlcmUuCi0JICovCi0KLQkvKiBJbml0aWFsaXNlIHN0YXRzIHRvIGEgc2FuaXNoIHZhbHVl ICovCi0JTXlMb2dpY2FsUmVwV29ya2VyLT5sYXN0X3NlbmRfdGltZSA9IE15TG9naWNhbFJlcFdv cmtlci0+bGFzdF9yZWN2X3RpbWUgPQotCQlNeUxvZ2ljYWxSZXBXb3JrZXItPnJlcGx5X3RpbWUg PSBHZXRDdXJyZW50VGltZXN0YW1wKCk7Ci0KLQkvKiBMb2FkIHRoZSBsaWJwcS1zcGVjaWZpYyBm dW5jdGlvbnMgKi8KLQlsb2FkX2ZpbGUoImxpYnBxd2FscmVjZWl2ZXIiLCBmYWxzZSk7CiAKIAkv KiBSdW4gYXMgcmVwbGljYSBzZXNzaW9uIHJlcGxpY2F0aW9uIHJvbGUuICovCiAJU2V0Q29uZmln T3B0aW9uKCJzZXNzaW9uX3JlcGxpY2F0aW9uX3JvbGUiLCAicmVwbGljYSIsCkBAIC0zNjU5LDEy ICs0MDM1LDUwIEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAkJZXJlcG9ydChM T0csCiAJCQkJKGVycm1zZygibG9naWNhbCByZXBsaWNhdGlvbiB0YWJsZSBzeW5jaHJvbml6YXRp b24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiLCB0YWJsZSBcIiVzXCIgaGFzIHN0YXJ0 ZWQiLAogCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUsIGdldF9yZWxfbmFtZShNeUxvZ2ljYWxS ZXBXb3JrZXItPnJlbGlkKSkpKTsKKwllbHNlIGlmIChhbV9hcHBseV9iZ3dvcmtlcigpKQorCQll cmVwb3J0KExPRywKKwkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIGFwcGx5IGJhY2tn cm91bmQgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIGhhcyBzdGFydGVkIiwKKwkJCQkJ CU15U3Vic2NyaXB0aW9uLT5uYW1lKSkpOwogCWVsc2UKIAkJZXJlcG9ydChMT0csCiAJCQkJKGVy cm1zZygibG9naWNhbCByZXBsaWNhdGlvbiBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBc IiVzXCIgaGFzIHN0YXJ0ZWQiLAogCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5hbWUpKSk7CiAKIAlD b21taXRUcmFuc2FjdGlvbkNvbW1hbmQoKTsKK30KKworLyogTG9naWNhbCBSZXBsaWNhdGlvbiBB cHBseSB3b3JrZXIgZW50cnkgcG9pbnQgKi8KK3ZvaWQKK0FwcGx5V29ya2VyTWFpbihEYXR1bSBt YWluX2FyZykKK3sKKwlpbnQJCQl3b3JrZXJfc2xvdCA9IERhdHVtR2V0SW50MzIobWFpbl9hcmcp OworCWNoYXIJCW9yaWdpbm5hbWVbTkFNRURBVEFMRU5dOworCVhMb2dSZWNQdHIJb3JpZ2luX3N0 YXJ0cG9zID0gSW52YWxpZFhMb2dSZWNQdHI7CisJY2hhcgkgICAqbXlzbG90bmFtZSA9IE5VTEw7 CisJV2FsUmN2U3RyZWFtT3B0aW9ucyBvcHRpb25zOworCWludAkJCXNlcnZlcl92ZXJzaW9uOwor CisJLyogQXR0YWNoIHRvIHNsb3QgKi8KKwlsb2dpY2FscmVwX3dvcmtlcl9hdHRhY2god29ya2Vy X3Nsb3QpOworCisJLyogU2V0dXAgc2lnbmFsIGhhbmRsaW5nICovCisJcHFzaWduYWwoU0lHSFVQ LCBTaWduYWxIYW5kbGVyRm9yQ29uZmlnUmVsb2FkKTsKKwlwcXNpZ25hbChTSUdURVJNLCBkaWUp OworCUJhY2tncm91bmRXb3JrZXJVbmJsb2NrU2lnbmFscygpOworCisJLyoKKwkgKiBXZSBkb24n dCBjdXJyZW50bHkgbmVlZCBhbnkgUmVzb3VyY2VPd25lciBpbiBhIHdhbHJlY2VpdmVyIHByb2Nl c3MsIGJ1dAorCSAqIGlmIHdlIGRpZCwgd2UgY291bGQgY2FsbCBDcmVhdGVBdXhQcm9jZXNzUmVz b3VyY2VPd25lciBoZXJlLgorCSAqLworCisJLyogSW5pdGlhbGlzZSBzdGF0cyB0byBhIHNhbmlz aCB2YWx1ZSAqLworCU15TG9naWNhbFJlcFdvcmtlci0+bGFzdF9zZW5kX3RpbWUgPSBNeUxvZ2lj YWxSZXBXb3JrZXItPmxhc3RfcmVjdl90aW1lID0KKwkJTXlMb2dpY2FsUmVwV29ya2VyLT5yZXBs eV90aW1lID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOworCisJLyogTG9hZCB0aGUgbGlicHEtc3Bl Y2lmaWMgZnVuY3Rpb25zICovCisJbG9hZF9maWxlKCJsaWJwcXdhbHJlY2VpdmVyIiwgZmFsc2Up OworCisJSW5pdGlhbGl6ZUFwcGx5V29ya2VyKCk7CiAKIAkvKiBDb25uZWN0IHRvIHRoZSBvcmln aW4gYW5kIHN0YXJ0IHRoZSByZXBsaWNhdGlvbi4gKi8KIAllbG9nKERFQlVHMSwgImNvbm5lY3Rp bmcgdG8gcHVibGlzaGVyIHVzaW5nIGNvbm5lY3Rpb24gc3RyaW5nIFwiJXNcIiIsCkBAIC0zNzEw LDcgKzQxMjQsNyBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiAJCW9yaWdpbmlk ID0gcmVwbG9yaWdpbl9ieV9uYW1lKG9yaWdpbm5hbWUsIHRydWUpOwogCQlpZiAoIU9pZElzVmFs aWQob3JpZ2luaWQpKQogCQkJb3JpZ2luaWQgPSByZXBsb3JpZ2luX2NyZWF0ZShvcmlnaW5uYW1l KTsKLQkJcmVwbG9yaWdpbl9zZXNzaW9uX3NldHVwKG9yaWdpbmlkKTsKKwkJcmVwbG9yaWdpbl9z ZXNzaW9uX3NldHVwKG9yaWdpbmlkLCAwKTsKIAkJcmVwbG9yaWdpbl9zZXNzaW9uX29yaWdpbiA9 IG9yaWdpbmlkOwogCQlvcmlnaW5fc3RhcnRwb3MgPSByZXBsb3JpZ2luX3Nlc3Npb25fZ2V0X3By b2dyZXNzKGZhbHNlKTsKIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CkBAIC0zNzUxLDEz ICs0MTY1LDE0IEBAIEFwcGx5V29ya2VyTWFpbihEYXR1bSBtYWluX2FyZykKIAogCXNlcnZlcl92 ZXJzaW9uID0gd2FscmN2X3NlcnZlcl92ZXJzaW9uKExvZ1JlcFdvcmtlcldhbFJjdkNvbm4pOwog CW9wdGlvbnMucHJvdG8ubG9naWNhbC5wcm90b192ZXJzaW9uID0KKwkJc2VydmVyX3ZlcnNpb24g Pj0gMTYwMDAwID8gTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0g OgogCQlzZXJ2ZXJfdmVyc2lvbiA+PSAxNTAwMDAgPyBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNF X1ZFUlNJT05fTlVNIDoKIAkJc2VydmVyX3ZlcnNpb24gPj0gMTQwMDAwID8gTE9HSUNBTFJFUF9Q Uk9UT19TVFJFQU1fVkVSU0lPTl9OVU0gOgogCQlMT0dJQ0FMUkVQX1BST1RPX1ZFUlNJT05fTlVN OwogCiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLnB1YmxpY2F0aW9uX25hbWVzID0gTXlTdWJzY3Jp cHRpb24tPnB1YmxpY2F0aW9uczsKIAlvcHRpb25zLnByb3RvLmxvZ2ljYWwuYmluYXJ5ID0gTXlT dWJzY3JpcHRpb24tPmJpbmFyeTsKLQlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5nID0g TXlTdWJzY3JpcHRpb24tPnN0cmVhbTsKKwlvcHRpb25zLnByb3RvLmxvZ2ljYWwuc3RyZWFtaW5n ID0gKE15U3Vic2NyaXB0aW9uLT5zdHJlYW0gIT0gU1VCU1RSRUFNX09GRik7CiAJb3B0aW9ucy5w cm90by5sb2dpY2FsLnR3b3BoYXNlID0gZmFsc2U7CiAJb3B0aW9ucy5wcm90by5sb2dpY2FsLm9y aWdpbiA9IHBzdHJkdXAoTXlTdWJzY3JpcHRpb24tPm9yaWdpbik7CiAKQEAgLTM5MTYsNyArNDMz MSw4IEBAIGNsZWFyX3N1YnNjcmlwdGlvbl9za2lwX2xzbihYTG9nUmVjUHRyIGZpbmlzaF9sc24p CiAJWExvZ1JlY1B0cglteXNraXBsc24gPSBNeVN1YnNjcmlwdGlvbi0+c2tpcGxzbjsKIAlib29s CQlzdGFydGVkX3R4ID0gZmFsc2U7CiAKLQlpZiAobGlrZWx5KFhMb2dSZWNQdHJJc0ludmFsaWQo bXlza2lwbHNuKSkpCisJaWYgKGxpa2VseShYTG9nUmVjUHRySXNJbnZhbGlkKG15c2tpcGxzbikp IHx8CisJCWFtX2FwcGx5X2Jnd29ya2VyKCkpCiAJCXJldHVybjsKIAogCWlmICghSXNUcmFuc2Fj dGlvblN0YXRlKCkpCkBAIC0zOTg4LDcgKzQ0MDQsNyBAQCBjbGVhcl9zdWJzY3JpcHRpb25fc2tp cF9sc24oWExvZ1JlY1B0ciBmaW5pc2hfbHNuKQogfQogCiAvKiBFcnJvciBjYWxsYmFjayB0byBn aXZlIG1vcmUgY29udGV4dCBpbmZvIGFib3V0IHRoZSBjaGFuZ2UgYmVpbmcgYXBwbGllZCAqLwot c3RhdGljIHZvaWQKK3ZvaWQKIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykKIHsKIAlB cHBseUVycm9yQ2FsbGJhY2tBcmcgKmVycmFyZyA9ICZhcHBseV9lcnJvcl9jYWxsYmFja19hcmc7 CkBAIC00MDE2LDIzICs0NDMyLDQ3IEBAIGFwcGx5X2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZykK IAkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAogCQkJCQkgICBMU05fRk9STUFUX0FSR1MoZXJy YXJnLT5maW5pc2hfbHNuKSk7CiAJfQotCWVsc2UgaWYgKGVycmFyZy0+cmVtb3RlX2F0dG51bSA8 IDApCi0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9u IG9yaWdpbiBcIiVzXCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0 aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSBmaW5pc2hlZCBhdCAlWC8lWCIsCi0JCQkJ ICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKLQkJCQkgICBsb2dpY2FscmVwX21lc3NhZ2VfdHlwZShl cnJhcmctPmNvbW1hbmQpLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwK LQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLnJlbG5hbWUsCi0JCQkJICAgZXJyYXJnLT5y ZW1vdGVfeGlkLAotCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhlcnJhcmctPmZpbmlzaF9sc24pKTsK IAllbHNlCi0JCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0 aW9uIG9yaWdpbiBcIiVzXCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJl bGF0aW9uIFwiJXMuJXNcIiBjb2x1bW4gXCIlc1wiIGluIHRyYW5zYWN0aW9uICV1IGZpbmlzaGVk IGF0ICVYLyVYIiwKLQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAotCQkJCSAgIGxvZ2ljYWxy ZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCi0JCQkJICAgZXJyYXJnLT5yZWwtPnJl bW90ZXJlbC5uc3BuYW1lLAotCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwK LQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLmF0dG5hbWVzW2VycmFyZy0+cmVtb3RlX2F0 dG51bV0sCi0JCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAotCQkJCSAgIExTTl9GT1JNQVRfQVJH UyhlcnJhcmctPmZpbmlzaF9sc24pKTsKKwl7CisJCWlmIChlcnJhcmctPnJlbW90ZV9hdHRudW0g PCAwKQorCQl7CisJCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChlcnJhcmctPmZpbmlzaF9sc24p KQorCQkJCWVycmNvbnRleHQoInByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9u IG9yaWdpbiBcIiVzXCIgZHVyaW5nIFwiJXNcIiBmb3IgcmVwbGljYXRpb24gdGFyZ2V0IHJlbGF0 aW9uIFwiJXMuJXNcIiBpbiB0cmFuc2FjdGlvbiAldSIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdp bl9uYW1lLAorCQkJCQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5k KSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVy cmFyZy0+cmVsLT5yZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hp ZCk7CisJCQllbHNlCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3Ig cmVwbGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0 YXJnZXQgcmVsYXRpb24gXCIlcy4lc1wiIGluIHRyYW5zYWN0aW9uICV1IGZpbmlzaGVkIGF0ICVY LyVYIiwKKwkJCQkJCSAgIGVycmFyZy0+b3JpZ2luX25hbWUsCisJCQkJCQkgICBsb2dpY2FscmVw X21lc3NhZ2VfdHlwZShlcnJhcmctPmNvbW1hbmQpLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJl bW90ZXJlbC5uc3BuYW1lLAorCQkJCQkJICAgZXJyYXJnLT5yZWwtPnJlbW90ZXJlbC5yZWxuYW1l LAorCQkJCQkJICAgZXJyYXJnLT5yZW1vdGVfeGlkLAorCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdT KGVycmFyZy0+ZmluaXNoX2xzbikpOworCQl9CisJCWVsc2UKKwkJeworCQkJaWYgKFhMb2dSZWNQ dHJJc0ludmFsaWQoZXJyYXJnLT5maW5pc2hfbHNuKSkKKwkJCQllcnJjb250ZXh0KCJwcm9jZXNz aW5nIHJlbW90ZSBkYXRhIGZvciByZXBsaWNhdGlvbiBvcmlnaW4gXCIlc1wiIGR1cmluZyBcIiVz XCIgZm9yIHJlcGxpY2F0aW9uIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgY29sdW1uIFwiJXNc IiBpbiB0cmFuc2FjdGlvbiAldSIsCisJCQkJCQkgICBlcnJhcmctPm9yaWdpbl9uYW1lLAorCQkJ CQkJICAgbG9naWNhbHJlcF9tZXNzYWdlX3R5cGUoZXJyYXJnLT5jb21tYW5kKSwKKwkJCQkJCSAg IGVycmFyZy0+cmVsLT5yZW1vdGVyZWwubnNwbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5y ZW1vdGVyZWwucmVsbmFtZSwKKwkJCQkJCSAgIGVycmFyZy0+cmVsLT5yZW1vdGVyZWwuYXR0bmFt ZXNbZXJyYXJnLT5yZW1vdGVfYXR0bnVtXSwKKwkJCQkJCSAgIGVycmFyZy0+cmVtb3RlX3hpZCk7 CisJCQllbHNlCisJCQkJZXJyY29udGV4dCgicHJvY2Vzc2luZyByZW1vdGUgZGF0YSBmb3IgcmVw bGljYXRpb24gb3JpZ2luIFwiJXNcIiBkdXJpbmcgXCIlc1wiIGZvciByZXBsaWNhdGlvbiB0YXJn ZXQgcmVsYXRpb24gXCIlcy4lc1wiIGNvbHVtbiBcIiVzXCIgaW4gdHJhbnNhY3Rpb24gJXUgZmlu aXNoZWQgYXQgJVgvJVgiLAorCQkJCQkJICAgZXJyYXJnLT5vcmlnaW5fbmFtZSwKKwkJCQkJCSAg IGxvZ2ljYWxyZXBfbWVzc2FnZV90eXBlKGVycmFyZy0+Y29tbWFuZCksCisJCQkJCQkgICBlcnJh cmctPnJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3Rl cmVsLnJlbG5hbWUsCisJCQkJCQkgICBlcnJhcmctPnJlbC0+cmVtb3RlcmVsLmF0dG5hbWVzW2Vy cmFyZy0+cmVtb3RlX2F0dG51bV0sCisJCQkJCQkgICBlcnJhcmctPnJlbW90ZV94aWQsCisJCQkJ CQkgICBMU05fRk9STUFUX0FSR1MoZXJyYXJnLT5maW5pc2hfbHNuKSk7CisJCX0KKwl9CiB9CiAK IC8qIFNldCB0cmFuc2FjdGlvbiBpbmZvcm1hdGlvbiBvZiBhcHBseSBlcnJvciBjYWxsYmFjayAq LwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQu YyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggYTNj MWJhOGE0MC4uZjllMzg4YWRhMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v cGdvdXRwdXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1 dC9wZ291dHB1dC5jCkBAIC0xODQzLDYgKzE4NDMsOSBAQCBwZ291dHB1dF9zdHJlYW1fYWJvcnQo c3RydWN0IExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwKIAkJCQkJICBYTG9nUmVjUHRyIGFi b3J0X2xzbikKIHsKIAlSZW9yZGVyQnVmZmVyVFhOICp0b3B0eG47CisJUEdPdXRwdXREYXRhICpk YXRhID0gKFBHT3V0cHV0RGF0YSAqKSBjdHgtPm91dHB1dF9wbHVnaW5fcHJpdmF0ZTsKKwlib29s IHdyaXRlX2Fib3J0X2xzbiA9IChkYXRhLT5wcm90b2NvbF92ZXJzaW9uID49CisJCQkJCQkJTE9H SUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0pOwogCiAJLyoKIAkgKiBU aGUgYWJvcnQgc2hvdWxkIGhhcHBlbiBvdXRzaWRlIHN0cmVhbWluZyBibG9jaywgZXZlbiBmb3Ig c3RyZWFtZWQKQEAgLTE4NTYsNyArMTg1OSw4IEBAIHBnb3V0cHV0X3N0cmVhbV9hYm9ydChzdHJ1 Y3QgTG9naWNhbERlY29kaW5nQ29udGV4dCAqY3R4LAogCUFzc2VydChyYnR4bl9pc19zdHJlYW1l ZCh0b3B0eG4pKTsKIAogCU91dHB1dFBsdWdpblByZXBhcmVXcml0ZShjdHgsIHRydWUpOwotCWxv Z2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhpZCwgdHhuLT54 aWQpOworCWxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2Fib3J0KGN0eC0+b3V0LCB0b3B0eG4tPnhp ZCwgdHhuLCBhYm9ydF9sc24sCisJCQkJCQkJCSAgd3JpdGVfYWJvcnRfbHNuKTsKIAlPdXRwdXRQ bHVnaW5Xcml0ZShjdHgsIHRydWUpOwogCiAJY2xlYW51cF9yZWxfc3luY19jYWNoZSh0b3B0eG4t PnhpZCwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2Fp dF9ldmVudC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvd2FpdF9ldmVudC5jCmluZGV4 IDkyZjI0YTZjOWIuLjdiNjY3NjY5ZmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2Fj dGl2aXR5L3dhaXRfZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50LmMKQEAgLTM4OCw2ICszODgsOSBAQCBwZ3N0YXRfZ2V0X3dhaXRfaXBjKFdhaXRFdmVu dElQQyB3KQogCQljYXNlIFdBSVRfRVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfUkVJTlNFUlQ6CiAJ CQlldmVudF9uYW1lID0gIkhhc2hHcm93QnVja2V0c1JlaW5zZXJ0IjsKIAkJCWJyZWFrOworCQlj YXNlIFdBSVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9CR1dPUktFUl9TVEFURV9DSEFOR0U6CisJCQll dmVudF9uYW1lID0gIkxvZ2ljYWxBcHBseUJnd29ya2VyU3RhdGVDaGFuZ2UiOworCQkJYnJlYWs7 CiAJCWNhc2UgV0FJVF9FVkVOVF9MT0dJQ0FMX1NZTkNfREFUQToKIAkJCWV2ZW50X25hbWUgPSAi TG9naWNhbFN5bmNEYXRhIjsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRp bHMvbWlzYy9ndWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3VjLmMKaW5kZXggOWZiYmZi MWJlNS4uODE2YjEwMjgzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jCkBAIC0zMjIyLDYgKzMyMjIsMTgg QEAgc3RhdGljIHN0cnVjdCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxM LCBOVUxMLCBOVUxMCiAJfSwKIAorCXsKKwkJeyJtYXhfYXBwbHlfYmd3b3JrZXJzX3Blcl9zdWJz Y3JpcHRpb24iLAorCQkJUEdDX1NJR0hVUCwKKwkJCVJFUExJQ0FUSU9OX1NVQlNDUklCRVJTLAor CQkJZ2V0dGV4dF9ub29wKCJNYXhpbXVtIG51bWJlciBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtl cnMgcGVyIHN1YnNjcmlwdGlvbi4iKSwKKwkJCU5VTEwsCisJCX0sCisJCSZtYXhfYXBwbHlfYmd3 b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24sCisJCTIsIDAsIE1BWF9CQUNLRU5EUywKKwkJTlVMTCwg TlVMTCwgTlVMTAorCX0sCisKIAl7CiAJCXsibG9nX3JvdGF0aW9uX2FnZSIsIFBHQ19TSUdIVVAs IExPR0dJTkdfV0hFUkUsCiAJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIGFtb3VudCBvZiB0aW1l IHRvIHdhaXQgYmVmb3JlIGZvcmNpbmcgIgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0 Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IDkwYmVjMDUwMmMuLjczNGQwN2JiMDEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9z cmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTM2MCw2ICsz NjAsNyBAQAogI21heF9sb2dpY2FsX3JlcGxpY2F0aW9uX3dvcmtlcnMgPSA0CSMgdGFrZW4gZnJv bSBtYXhfd29ya2VyX3Byb2Nlc3NlcwogCQkJCQkjIChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkK ICNtYXhfc3luY193b3JrZXJzX3Blcl9zdWJzY3JpcHRpb24gPSAyCSMgdGFrZW4gZnJvbSBtYXhf bG9naWNhbF9yZXBsaWNhdGlvbl93b3JrZXJzCisjbWF4X2FwcGx5X2Jnd29ya2Vyc19wZXJfc3Vi c2NyaXB0aW9uID0gMgkjIHRha2VuIGZyb20gbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2Vy cwogCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVt cC9wZ19kdW1wLmMgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCmluZGV4IGRhNjYwNTE3NWEu LjJhOGRhMjY4NDQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKKysrIGIv c3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDQ4MCw3ICs0NDgwLDcgQEAgZ2V0U3Vic2Ny aXB0aW9ucyhBcmNoaXZlICpmb3V0KQogCWlmIChmb3V0LT5yZW1vdGVWZXJzaW9uID49IDE0MDAw MCkKIAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIgcy5zdWJzdHJlYW0sXG4iKTsKIAll bHNlCi0JCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiIGZhbHNlIEFTIHN1YnN0cmVhbSxc biIpOworCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiAnZicgQVMgc3Vic3RyZWFtLFxu Iik7CiAKIAlpZiAoZm91dC0+cmVtb3RlVmVyc2lvbiA+PSAxNTAwMDApCiAJCWFwcGVuZFBRRXhw QnVmZmVyU3RyKHF1ZXJ5LApAQCAtNDYxNyw4ICs0NjE3LDEwIEBAIGR1bXBTdWJzY3JpcHRpb24o QXJjaGl2ZSAqZm91dCwgY29uc3QgU3Vic2NyaXB0aW9uSW5mbyAqc3ViaW5mbykKIAlpZiAoc3Ry Y21wKHN1YmluZm8tPnN1YmJpbmFyeSwgInQiKSA9PSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0 cihxdWVyeSwgIiwgYmluYXJ5ID0gdHJ1ZSIpOwogCi0JaWYgKHN0cmNtcChzdWJpbmZvLT5zdWJz dHJlYW0sICJmIikgIT0gMCkKKwlpZiAoc3RyY21wKHN1YmluZm8tPnN1YnN0cmVhbSwgInQiKSA9 PSAwKQogCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cihxdWVyeSwgIiwgc3RyZWFtaW5nID0gb24iKTsK KwllbHNlIGlmIChzdHJjbXAoc3ViaW5mby0+c3Vic3RyZWFtLCAicCIpID09IDApCisJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCBzdHJlYW1pbmcgPSBwYXJhbGxlbCIpOwogCiAJaWYg KHN0cmNtcChzdWJpbmZvLT5zdWJ0d29waGFzZXN0YXRlLCB0d29fcGhhc2VfZGlzYWJsZWQpICE9 IDApCiAJCWFwcGVuZFBRRXhwQnVmZmVyU3RyKHF1ZXJ5LCAiLCB0d29fcGhhc2UgPSBvbiIpOwpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKaW5kZXggN2I5ODcxNGYzMC4uZjRlMWU5 NDBlNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaAor KysgYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCkBAIC04MCw3ICs4MCw4 IEBAIENBVEFMT0cocGdfc3Vic2NyaXB0aW9uLDYxMDAsU3Vic2NyaXB0aW9uUmVsYXRpb25JZCkg QktJX1NIQVJFRF9SRUxBVElPTiBCS0lfUk9XCiAJYm9vbAkJc3ViYmluYXJ5OwkJLyogVHJ1ZSBp ZiB0aGUgc3Vic2NyaXB0aW9uIHdhbnRzIHRoZQogCQkJCQkJCQkgKiBwdWJsaXNoZXIgdG8gc2Vu ZCBkYXRhIGluIGJpbmFyeSAqLwogCi0JYm9vbAkJc3Vic3RyZWFtOwkJLyogU3RyZWFtIGluLXBy b2dyZXNzIHRyYW5zYWN0aW9ucy4gKi8KKwljaGFyCQlzdWJzdHJlYW07CQkvKiBTdHJlYW0gaW4t cHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLgorCQkJCQkJCQkgKiBTZWUgU1VCU1RSRUFNX3h4eCBjb25z dGFudHMuICovCiAKIAljaGFyCQlzdWJ0d29waGFzZXN0YXRlOwkvKiBTdHJlYW0gdHdvLXBoYXNl IHRyYW5zYWN0aW9ucyAqLwogCkBAIC0xMjQsNyArMTI1LDggQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vi c2NyaXB0aW9uCiAJYm9vbAkJZW5hYmxlZDsJCS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2NyaXB0 aW9uIGlzIGVuYWJsZWQgKi8KIAlib29sCQliaW5hcnk7CQkJLyogSW5kaWNhdGVzIGlmIHRoZSBz dWJzY3JpcHRpb24gd2FudHMgZGF0YSBpbgogCQkJCQkJCQkgKiBiaW5hcnkgZm9ybWF0ICovCi0J Ym9vbAkJc3RyZWFtOwkJCS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0cmFuc2FjdGlv bnMuICovCisJY2hhcgkJc3RyZWFtOwkJCS8qIEFsbG93IHN0cmVhbWluZyBpbi1wcm9ncmVzcyB0 cmFuc2FjdGlvbnMuCisJCQkJCQkJCSAqIFNlZSBTVUJTVFJFQU1feHh4IGNvbnN0YW50cy4gKi8K IAljaGFyCQl0d29waGFzZXN0YXRlOwkvKiBBbGxvdyBzdHJlYW1pbmcgdHdvLXBoYXNlIHRyYW5z YWN0aW9ucyAqLwogCWJvb2wJCWRpc2FibGVvbmVycjsJLyogSW5kaWNhdGVzIGlmIHRoZSBzdWJz Y3JpcHRpb24gc2hvdWxkIGJlCiAJCQkJCQkJCSAqIGF1dG9tYXRpY2FsbHkgZGlzYWJsZWQgaWYg YSB3b3JrZXIgZXJyb3IKQEAgLTEzNyw2ICsxMzksMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgU3Vic2Ny aXB0aW9uCiAJCQkJCQkJCSAqIHNwZWNpZmllZCBvcmlnaW4gKi8KIH0gU3Vic2NyaXB0aW9uOwog CisvKiBEaXNhbGxvdyBzdHJlYW1pbmcgaW4tcHJvZ3Jlc3MgdHJhbnNhY3Rpb25zLiAqLworI2Rl ZmluZSBTVUJTVFJFQU1fT0ZGICdmJworCisvKgorICogU3RyZWFtaW5nIGluLXByb2dyZXNzIHRy YW5zYWN0aW9ucyBhcmUgd3JpdHRlbiB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZAorICogYXBwbGll ZCBvbmx5IGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gdXBzdHJlYW0uCisg Ki8KKyNkZWZpbmUgU1VCU1RSRUFNX09OICd0JworCisvKgorICogU3RyZWFtaW5nIGluLXByb2dy ZXNzIHRyYW5zYWN0aW9ucyBhcmUgYXBwbGllZCBpbW1lZGlhdGVseSB2aWEgYSBiYWNrZ3JvdW5k CisgKiB3b3JrZXIuCisgKi8KKyNkZWZpbmUgU1VCU1RSRUFNX1BBUkFMTEVMICdwJworCiBleHRl cm4gU3Vic2NyaXB0aW9uICpHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdf b2spOwogZXh0ZXJuIHZvaWQgRnJlZVN1YnNjcmlwdGlvbihTdWJzY3JpcHRpb24gKnN1Yik7CiBl eHRlcm4gdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uKE9pZCBzdWJpZCk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCmluZGV4IGYxZTI4MjFlMjUuLmFjOGVmOTQzODEg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCisr KyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCkBAIC0xNCw2ICsx NCw3IEBACiAKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X2xvZ2ljYWxfcmVwbGljYXRpb25f d29ya2VyczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3N5bmNfd29ya2Vyc19wZXJfc3Vi c2NyaXB0aW9uOworZXh0ZXJuIFBHRExMSU1QT1JUIGludCBtYXhfYXBwbHlfYmd3b3JrZXJzX3Bl cl9zdWJzY3JpcHRpb247CiAKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJSZWdpc3Rlcih2b2lk KTsKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJnKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKaW5kZXggYTc3MWFiOGZmMy4uZWIwZmQyNGZk OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTMyLDEyICszMiwx NyBAQAogICoKICAqIExPR0lDQUxSRVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gaXMgdGhl IG1pbmltdW0gcHJvdG9jb2wgdmVyc2lvbiB3aXRoCiAgKiBzdXBwb3J0IGZvciB0d28tcGhhc2Ug Y29tbWl0IGRlY29kaW5nIChhdCBwcmVwYXJlIHRpbWUpLiBJbnRyb2R1Y2VkIGluIFBHMTUuCisg KgorICogTE9HSUNBTFJFUF9QUk9UT19TVFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0gaXMgdGhl IG1pbmltdW0gcHJvdG9jb2wgdmVyc2lvbgorICogd2l0aCBzdXBwb3J0IGZvciBzdHJlYW1pbmcg bGFyZ2UgdHJhbnNhY3Rpb25zIHVzaW5nIGFwcGx5IGJhY2tncm91bmQKKyAqIHdvcmtlcnMuIElu dHJvZHVjZWQgaW4gUEcxNi4KICAqLwogI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RPX01JTl9WRVJT SU9OX05VTSAxCiAjZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fVkVSU0lPTl9OVU0gMQogI2RlZmlu ZSBMT0dJQ0FMUkVQX1BST1RPX1NUUkVBTV9WRVJTSU9OX05VTSAyCiAjZGVmaW5lIExPR0lDQUxS RVBfUFJPVE9fVFdPUEhBU0VfVkVSU0lPTl9OVU0gMwotI2RlZmluZSBMT0dJQ0FMUkVQX1BST1RP X01BWF9WRVJTSU9OX05VTSBMT0dJQ0FMUkVQX1BST1RPX1RXT1BIQVNFX1ZFUlNJT05fTlVNCisj ZGVmaW5lIExPR0lDQUxSRVBfUFJPVE9fU1RSRUFNX1BBUkFMTEVMX1ZFUlNJT05fTlVNIDQKKyNk ZWZpbmUgTE9HSUNBTFJFUF9QUk9UT19NQVhfVkVSU0lPTl9OVU0gTE9HSUNBTFJFUF9QUk9UT19T VFJFQU1fUEFSQUxMRUxfVkVSU0lPTl9OVU0KIAogLyoKICAqIExvZ2ljYWwgbWVzc2FnZSB0eXBl cwpAQCAtMTc1LDYgKzE4MCwxNyBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwUm9sbGJhY2tQ cmVwYXJlZFR4bkRhdGEKIAljaGFyCQlnaWRbR0lEU0laRV07CiB9IExvZ2ljYWxSZXBSb2xsYmFj a1ByZXBhcmVkVHhuRGF0YTsKIAorLyoKKyAqIFRyYW5zYWN0aW9uIHByb3RvY29sIGluZm9ybWF0 aW9uIGZvciBzdHJlYW0gYWJvcnQuCisgKi8KK3R5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBTdHJl YW1BYm9ydERhdGEKK3sKKwlUcmFuc2FjdGlvbklkIHhpZDsKKwlUcmFuc2FjdGlvbklkIHN1Ynhp ZDsKKwlYTG9nUmVjUHRyCWFib3J0X2xzbjsKKwlUaW1lc3RhbXBUeiBhYm9ydF90aW1lOworfSBM b2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhOworCiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRl X2JlZ2luKFN0cmluZ0luZm8gb3V0LCBSZW9yZGVyQnVmZmVyVFhOICp0eG4pOwogZXh0ZXJuIHZv aWQgbG9naWNhbHJlcF9yZWFkX2JlZ2luKFN0cmluZ0luZm8gaW4sCiAJCQkJCQkJCSAgTG9naWNh bFJlcEJlZ2luRGF0YSAqYmVnaW5fZGF0YSk7CkBAIC0yNDYsOSArMjYyLDEyIEBAIGV4dGVybiB2 b2lkIGxvZ2ljYWxyZXBfd3JpdGVfc3RyZWFtX2NvbW1pdChTdHJpbmdJbmZvIG91dCwgUmVvcmRl ckJ1ZmZlclRYTiAqdHhuCiBleHRlcm4gVHJhbnNhY3Rpb25JZCBsb2dpY2FscmVwX3JlYWRfc3Ry ZWFtX2NvbW1pdChTdHJpbmdJbmZvIG91dCwKIAkJCQkJCQkJCQkJCSAgIExvZ2ljYWxSZXBDb21t aXREYXRhICpjb21taXRfZGF0YSk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dyaXRlX3N0cmVh bV9hYm9ydChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25JZCB4aWQsCi0JCQkJCQkJCQkJICBU cmFuc2FjdGlvbklkIHN1YnhpZCk7Ci1leHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfc3RyZWFt X2Fib3J0KFN0cmluZ0luZm8gaW4sIFRyYW5zYWN0aW9uSWQgKnhpZCwKLQkJCQkJCQkJCQkgVHJh bnNhY3Rpb25JZCAqc3VieGlkKTsKKwkJCQkJCQkJCQkgIFJlb3JkZXJCdWZmZXJUWE4gKnR4biwK KwkJCQkJCQkJCQkgIFhMb2dSZWNQdHIgYWJvcnRfbHNuLAorCQkJCQkJCQkJCSAgYm9vbCB3cml0 ZV9hYm9ydF9sc24pOworZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF9yZWFkX3N0cmVhbV9hYm9ydChT dHJpbmdJbmZvIGluLAorCQkJCQkJCQkJCSBMb2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhICphYm9y dF9kYXRhLAorCQkJCQkJCQkJCSBib29sIHJlYWRfYWJvcnRfbHNuKTsKIGV4dGVybiBjaGFyICps b2dpY2FscmVwX21lc3NhZ2VfdHlwZShMb2dpY2FsUmVwTXNnVHlwZSBhY3Rpb24pOwogCiAjZW5k aWYJCQkJCQkJLyogTE9HSUNBTF9QUk9UT19IICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi9sb2dpY2Fsd29ya2VyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dp Y2Fsd29ya2VyLmgKaW5kZXggY2QxYjZlOGFmYy4uNmExYWY3ZjEzYyAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHdvcmtlci5oCisrKyBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL2xvZ2ljYWx3b3JrZXIuaApAQCAtMTMsNiArMTMsNyBAQAogI2RlZmluZSBMT0dJ Q0FMV09SS0VSX0gKIAogZXh0ZXJuIHZvaWQgQXBwbHlXb3JrZXJNYWluKERhdHVtIG1haW5fYXJn KTsKK2V4dGVybiB2b2lkIEFwcGx5Qmd3b3JrZXJNYWluKERhdHVtIG1haW5fYXJnKTsKIAogZXh0 ZXJuIGJvb2wgSXNMb2dpY2FsV29ya2VyKHZvaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9vcmlnaW4uaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5o CmluZGV4IDJkMWI1ZTVjMjguLjQwZWJhZDBjMGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL29yaWdpbi5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5o CkBAIC01Myw3ICs1Myw3IEBAIGV4dGVybiBYTG9nUmVjUHRyIHJlcGxvcmlnaW5fZ2V0X3Byb2dy ZXNzKFJlcE9yaWdpbklkIG5vZGUsIGJvb2wgZmx1c2gpOwogCiBleHRlcm4gdm9pZCByZXBsb3Jp Z2luX3Nlc3Npb25fYWR2YW5jZShYTG9nUmVjUHRyIHJlbW90ZV9jb21taXQsCiAJCQkJCQkJCQkg ICBYTG9nUmVjUHRyIGxvY2FsX2NvbW1pdCk7Ci1leHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Np b25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSk7CitleHRlcm4gdm9pZCByZXBsb3JpZ2luX3Nlc3Np b25fc2V0dXAoUmVwT3JpZ2luSWQgbm9kZSwgaW50IGFjcXVpcmVkX2J5KTsKIGV4dGVybiB2b2lk IHJlcGxvcmlnaW5fc2Vzc2lvbl9yZXNldCh2b2lkKTsKIGV4dGVybiBYTG9nUmVjUHRyIHJlcGxv cmlnaW5fc2Vzc2lvbl9nZXRfcHJvZ3Jlc3MoYm9vbCBmbHVzaCk7CiAKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Jlb3JkZXJidWZmZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3Jlb3JkZXJidWZmZXIuaAppbmRleCA4Njk1OTAxYmE3Li5hNzRiNjE2ZWZmIDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9yZW9yZGVyYnVmZmVyLmgKKysrIGIvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vcmVvcmRlcmJ1ZmZlci5oCkBAIC0zMDEsNiArMzAxLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgUmVvcmRlckJ1ZmZlclRYTgogCXsKIAkJVGltZXN0YW1wVHogY29tbWl0 X3RpbWU7CiAJCVRpbWVzdGFtcFR6IHByZXBhcmVfdGltZTsKKwkJVGltZXN0YW1wVHogYWJvcnRf dGltZTsKIAl9CQkJeGFjdF90aW1lOwogCiAJLyoKQEAgLTY1OCw5ICs2NTksMTEgQEAgZXh0ZXJu IHZvaWQgUmVvcmRlckJ1ZmZlckZpbmlzaFByZXBhcmVkKFJlb3JkZXJCdWZmZXIgKnJiLCBUcmFu c2FjdGlvbklkIHhpZCwKIGV4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBc3NpZ25DaGlsZChSZW9y ZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFRyYW5zYWN0aW9uSWQsIFhMb2dSZWNQdHIgY29t bWl0X2xzbik7CiBleHRlcm4gdm9pZCBSZW9yZGVyQnVmZmVyQ29tbWl0Q2hpbGQoUmVvcmRlckJ1 ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBUcmFuc2FjdGlvbklkLAogCQkJCQkJCQkJIFhMb2dSZWNQ dHIgY29tbWl0X2xzbiwgWExvZ1JlY1B0ciBlbmRfbHNuKTsKLWV4dGVybiB2b2lkIFJlb3JkZXJC dWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFhMb2dSZWNQdHIgbHNu KTsKK2V4dGVybiB2b2lkIFJlb3JkZXJCdWZmZXJBYm9ydChSZW9yZGVyQnVmZmVyICosIFRyYW5z YWN0aW9uSWQsIFhMb2dSZWNQdHIgbHNuLAorCQkJCQkJCSAgIFRpbWVzdGFtcFR6IGFib3J0X3Rp bWUpOwogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckFib3J0T2xkKFJlb3JkZXJCdWZmZXIgKiwg VHJhbnNhY3Rpb25JZCB4aWQpOwotZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlckZvcmdldChSZW9y ZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFhMb2dSZWNQdHIgbHNuKTsKK2V4dGVybiB2b2lk IFJlb3JkZXJCdWZmZXJGb3JnZXQoUmVvcmRlckJ1ZmZlciAqLCBUcmFuc2FjdGlvbklkLCBYTG9n UmVjUHRyIGxzbiwKKwkJCQkJCQkJVGltZXN0YW1wVHogYWJvcnRfdGltZSk7CiBleHRlcm4gdm9p ZCBSZW9yZGVyQnVmZmVySW52YWxpZGF0ZShSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQs IFhMb2dSZWNQdHIgbHNuKTsKIAogZXh0ZXJuIHZvaWQgUmVvcmRlckJ1ZmZlclNldEJhc2VTbmFw c2hvdChSZW9yZGVyQnVmZmVyICosIFRyYW5zYWN0aW9uSWQsIFhMb2dSZWNQdHIgbHNuLCBzdHJ1 Y3QgU25hcHNob3REYXRhICpzbmFwKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0 aW9uL3dvcmtlcl9pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2lu dGVybmFsLmgKaW5kZXggOTAxODQ1YWJjMi4uOGYwM2FkNGE2NSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vd29ya2VyX2ludGVybmFsLmgKQEAgLTE3LDggKzE3LDExIEBACiAjaW5jbHVkZSAi YWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uaCIK ICNpbmNsdWRlICJkYXRhdHlwZS90aW1lc3RhbXAuaCIKKyNpbmNsdWRlICJyZXBsaWNhdGlvbi9s b2dpY2FscmVsYXRpb24uaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZpbGVzZXQuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2xvY2suaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobV9tcS5oIgorI2luY2x1ZGUg InN0b3JhZ2Uvc2htX3RvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogCiAKQEAgLTYw LDYgKzYzLDEyIEBAIHR5cGVkZWYgc3RydWN0IExvZ2ljYWxSZXBXb3JrZXIKIAkgKi8KIAlGaWxl U2V0ICAgICpzdHJlYW1fZmlsZXNldDsKIAorCS8qCisJICogUElEIG9mIG1haW4gYXBwbHkgd29y a2VyIGlmIHRoaXMgc2xvdCBpcyB1c2VkIGZvciBhbiBhcHBseSBiYWNrZ3JvdW5kCisJICogd29y a2VyLgorCSAqLworCWludAkJCW1haW5fd29ya2VyX3BpZDsKKwogCS8qIFN0YXRzLiAqLwogCVhM b2dSZWNQdHIJbGFzdF9sc247CiAJVGltZXN0YW1wVHogbGFzdF9zZW5kX3RpbWU7CkBAIC02OCw4 ICs3Nyw3MCBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsUmVwV29ya2VyCiAJVGltZXN0YW1wVHog cmVwbHlfdGltZTsKIH0gTG9naWNhbFJlcFdvcmtlcjsKIAorLyogU3RydWN0IGZvciBzYXZpbmcg YW5kIHJlc3RvcmluZyBhcHBseSBlcnJjb250ZXh0IGluZm9ybWF0aW9uICovCit0eXBlZGVmIHN0 cnVjdCBBcHBseUVycm9yQ2FsbGJhY2tBcmcKK3sKKwlMb2dpY2FsUmVwTXNnVHlwZSBjb21tYW5k OwkvKiAwIGlmIGludmFsaWQgKi8KKwlMb2dpY2FsUmVwUmVsTWFwRW50cnkgKnJlbDsKKworCS8q IFJlbW90ZSBub2RlIGluZm9ybWF0aW9uICovCisJaW50CQkJcmVtb3RlX2F0dG51bTsJLyogLTEg aWYgaW52YWxpZCAqLworCVRyYW5zYWN0aW9uSWQgcmVtb3RlX3hpZDsKKwlYTG9nUmVjUHRyCWZp bmlzaF9sc247CisJY2hhcgkgICAqb3JpZ2luX25hbWU7Cit9IEFwcGx5RXJyb3JDYWxsYmFja0Fy ZzsKKworLyoKKyAqIFN0YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4KKyAqLwordHlw ZWRlZiBlbnVtIEFwcGx5Qmd3b3JrZXJTdGF0dXMKK3sKKwlBUFBMWV9CR1dPUktFUl9CVVNZID0g MCwJCS8qIGFzc2lnbmVkIHRvIGEgdHJhbnNhY3Rpb24gKi8KKwlBUFBMWV9CR1dPUktFUl9GSU5J U0hFRCwJCS8qIHRyYW5zYWN0aW9uIGlzIGNvbXBsZXRlZCAqLworCUFQUExZX0JHV09SS0VSX0VY SVQJCQkJLyogZXhpdCAqLworfSBBcHBseUJnd29ya2VyU3RhdHVzOworCisvKgorICogU3RydWN0 IGZvciBzaGFyaW5nIGluZm9ybWF0aW9uIGJldHdlZW4gYXBwbHkgbWFpbiBhbmQgYXBwbHkgYmFj a2dyb3VuZAorICogd29ya2Vycy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgQXBwbHlCZ3dvcmtlclNo YXJlZAoreworCXNsb2NrX3QJbXV0ZXg7CisKKwkvKiBTdGF0dXMgb2YgYXBwbHkgYmFja2dyb3Vu ZCB3b3JrZXIuICovCisJQXBwbHlCZ3dvcmtlclN0YXR1cwlzdGF0dXM7CisKKwkvKiBMb2dpY2Fs IHByb3RvY29sIHZlcnNpb24uICovCisJdWludDMyCXByb3RvX3ZlcnNpb247CisKKwlUcmFuc2Fj dGlvbklkCXN0cmVhbV94aWQ7CisKKwkvKiBJZCBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciAq LworCXVpbnQzMgl3b3JrZXJfaWQ7Cit9IEFwcGx5Qmd3b3JrZXJTaGFyZWQ7CisKKy8qCisgKiBJ bmZvcm1hdGlvbiB3aGljaCBpcyB1c2VkIHRvIG1hbmFnZSB0aGUgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIuCisgKi8KK3R5cGVkZWYgc3RydWN0IEFwcGx5Qmd3b3JrZXJJbmZvCit7CisJc2htX21x X2hhbmRsZQkJCSptcV9oYW5kbGU7CisJZHNtX3NlZ21lbnQJCQkJKmRzbV9zZWc7CisJQXBwbHlC Z3dvcmtlclNoYXJlZCB2b2xhdGlsZQkqc2hhcmVkOworfSBBcHBseUJnd29ya2VySW5mbzsKKwog LyogTWFpbiBtZW1vcnkgY29udGV4dCBmb3IgYXBwbHkgd29ya2VyLiBQZXJtYW5lbnQgZHVyaW5n IHdvcmtlciBsaWZldGltZS4gKi8KIGV4dGVybiBQR0RMTElNUE9SVCBNZW1vcnlDb250ZXh0IEFw cGx5Q29udGV4dDsKK2V4dGVybiBQR0RMTElNUE9SVCBNZW1vcnlDb250ZXh0IEFwcGx5TWVzc2Fn ZUNvbnRleHQ7CisKK2V4dGVybiBQR0RMTElNUE9SVCBBcHBseUVycm9yQ2FsbGJhY2tBcmcgYXBw bHlfZXJyb3JfY2FsbGJhY2tfYXJnOworCitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBNeVN1YnNj cmlwdGlvblZhbGlkOworCitleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgQXBwbHlCZ3dvcmtl clNoYXJlZCAqTXlQYXJhbGxlbFNoYXJlZDsKKworZXh0ZXJuIFBHRExMSU1QT1JUIExpc3QgKnN1 YnhhY3RsaXN0OwogCiAvKiBsaWJwcXJlY2VpdmVyIGNvbm5lY3Rpb24gKi8KIGV4dGVybiBQR0RM TElNUE9SVCBzdHJ1Y3QgV2FsUmVjZWl2ZXJDb25uICpMb2dSZXBXb3JrZXJXYWxSY3ZDb25uOwpA QCAtNzksMTggKzE1MCwyMiBAQCBleHRlcm4gUEdETExJTVBPUlQgU3Vic2NyaXB0aW9uICpNeVN1 YnNjcmlwdGlvbjsKIGV4dGVybiBQR0RMTElNUE9SVCBMb2dpY2FsUmVwV29ya2VyICpNeUxvZ2lj YWxSZXBXb3JrZXI7CiAKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIGluX3JlbW90ZV90cmFuc2Fj dGlvbjsKK2V4dGVybiBQR0RMTElNUE9SVCBib29sIGluX3N0cmVhbWVkX3RyYW5zYWN0aW9uOwor ZXh0ZXJuIFBHRExMSU1QT1JUIFRyYW5zYWN0aW9uSWQgc3RyZWFtX3hpZDsKIAogZXh0ZXJuIHZv aWQgbG9naWNhbHJlcF93b3JrZXJfYXR0YWNoKGludCBzbG90KTsKIGV4dGVybiBMb2dpY2FsUmVw V29ya2VyICpsb2dpY2FscmVwX3dvcmtlcl9maW5kKE9pZCBzdWJpZCwgT2lkIHJlbGlkLAogCQkJ CQkJCQkJCQkJYm9vbCBvbmx5X3J1bm5pbmcpOwogZXh0ZXJuIExpc3QgKmxvZ2ljYWxyZXBfd29y a2Vyc19maW5kKE9pZCBzdWJpZCwgYm9vbCBvbmx5X3J1bm5pbmcpOwotZXh0ZXJuIHZvaWQgbG9n aWNhbHJlcF93b3JrZXJfbGF1bmNoKE9pZCBkYmlkLCBPaWQgc3ViaWQsIGNvbnN0IGNoYXIgKnN1 Ym5hbWUsCi0JCQkJCQkJCQkgT2lkIHVzZXJpZCwgT2lkIHJlbGlkKTsKK2V4dGVybiBib29sIGxv Z2ljYWxyZXBfd29ya2VyX2xhdW5jaChPaWQgZGJpZCwgT2lkIHN1YmlkLCBjb25zdCBjaGFyICpz dWJuYW1lLAorCQkJCQkJCQkJIE9pZCB1c2VyaWQsIE9pZCByZWxpZCwKKwkJCQkJCQkJCSBkc21f aGFuZGxlIHN1Yndvcmtlcl9kc20pOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3JrZXJfc3Rv cChPaWQgc3ViaWQsIE9pZCByZWxpZCk7CiBleHRlcm4gdm9pZCBsb2dpY2FscmVwX3dvcmtlcl93 YWtldXAoT2lkIHN1YmlkLCBPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgbG9naWNhbHJlcF93b3Jr ZXJfd2FrZXVwX3B0cihMb2dpY2FsUmVwV29ya2VyICp3b3JrZXIpOwogCiBleHRlcm4gaW50CWxv Z2ljYWxyZXBfc3luY193b3JrZXJfY291bnQoT2lkIHN1YmlkKTsKK2V4dGVybiBpbnQJbG9naWNh bHJlcF9hcHBseV9iZ3dvcmtlcl9jb3VudChPaWQgc3ViaWQpOwogCiBleHRlcm4gdm9pZCBSZXBs aWNhdGlvbk9yaWdpbk5hbWVGb3JUYWJsZXN5bmMoT2lkIHN1Ym9pZCwgT2lkIHJlbGlkLAogCQkJ CQkJCQkJCQkgIGNoYXIgKm9yaWdpbm5hbWUsIGludCBzem9yZ25hbWUpOwpAQCAtMTAzLDEwICsx NzgsNDIgQEAgZXh0ZXJuIHZvaWQgcHJvY2Vzc19zeW5jaW5nX3RhYmxlcyhYTG9nUmVjUHRyIGN1 cnJlbnRfbHNuKTsKIGV4dGVybiB2b2lkIGludmFsaWRhdGVfc3luY2luZ190YWJsZV9zdGF0ZXMo RGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwKIAkJCQkJCQkJCQkJdWludDMyIGhhc2h2YWx1ZSk7CiAK K2V4dGVybiB2b2lkIFVwZGF0ZVdvcmtlclN0YXRzKFhMb2dSZWNQdHIgbGFzdF9sc24sIFRpbWVz dGFtcFR6IHNlbmRfdGltZSwKKwkJCQkJCQkgIGJvb2wgcmVwbHkpOworCitleHRlcm4gdm9pZCBh cHBseV9kaXNwYXRjaChTdHJpbmdJbmZvIHMpOworCitleHRlcm4gdm9pZCBJbml0aWFsaXplQXBw bHlXb3JrZXIodm9pZCk7CisKKy8qIEZ1bmN0aW9uIGZvciBhcHBseSBlcnJvciBjYWxsYmFjayAq LworZXh0ZXJuIHZvaWQgYXBwbHlfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKKworZXh0ZXJu IHZvaWQgc3Vic2NyaXB0aW9uX2NoYW5nZV9jYihEYXR1bSBhcmcsIGludCBjYWNoZWlkLCB1aW50 MzIgaGFzaHZhbHVlKTsKKworLyogQXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgc2V0dXAgYW5kIGlu dGVyYWN0aW9ucyAqLworZXh0ZXJuIEFwcGx5Qmd3b3JrZXJJbmZvICphcHBseV9iZ3dvcmtlcl9z dGFydChUcmFuc2FjdGlvbklkIHhpZCk7CitleHRlcm4gQXBwbHlCZ3dvcmtlckluZm8gKmFwcGx5 X2Jnd29ya2VyX2ZpbmQoVHJhbnNhY3Rpb25JZCB4aWQpOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3 b3JrZXJfd2FpdF9mb3IoQXBwbHlCZ3dvcmtlckluZm8gKndzdGF0ZSwKKwkJCQkJCQkJCUFwcGx5 Qmd3b3JrZXJTdGF0dXMgd2FpdF9mb3Jfc3RhdHVzKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29y a2VyX3NlbmRfZGF0YShBcHBseUJnd29ya2VySW5mbyAqd3N0YXRlLCBTaXplIG5ieXRlcywKKwkJ CQkJCQkJCSBjb25zdCB2b2lkICpkYXRhKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX2Zy ZWUoQXBwbHlCZ3dvcmtlckluZm8gKndzdGF0ZSk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtl cl9jaGVja19zdGF0dXModm9pZCk7CitleHRlcm4gdm9pZCBhcHBseV9iZ3dvcmtlcl9zZXRfc3Rh dHVzKEFwcGx5Qmd3b3JrZXJTdGF0dXMgc3RhdHVzKTsKK2V4dGVybiB2b2lkIGFwcGx5X2Jnd29y a2VyX3N1YnhhY3RfaW5mb19hZGQoVHJhbnNhY3Rpb25JZCBjdXJyZW50X3hpZCk7CitleHRlcm4g dm9pZCBhcHBseV9iZ3dvcmtlcl9zYXZlcG9pbnRfbmFtZShPaWQgc3Vib2lkLCBPaWQgcmVsaWQs CisJCQkJCQkJCQkJICBjaGFyICpzcG5hbWUsIGludCBzenNwKTsKKwogc3RhdGljIGlubGluZSBi b29sCiBhbV90YWJsZXN5bmNfd29ya2VyKHZvaWQpCiB7CiAJcmV0dXJuIE9pZElzVmFsaWQoTXlM b2dpY2FsUmVwV29ya2VyLT5yZWxpZCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbAorYW1fYXBw bHlfYmd3b3JrZXIodm9pZCkKK3sKKwlyZXR1cm4gTXlMb2dpY2FsUmVwV29ya2VyLT5tYWluX3dv cmtlcl9waWQgIT0gMDsKK30KKwogI2VuZGlmCQkJCQkJCS8qIFdPUktFUl9JTlRFUk5BTF9IICov CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVk ZS91dGlscy93YWl0X2V2ZW50LmgKaW5kZXggNmYyZDU2MTJlMC4uOGFjZWU2M2JlMCAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvd2FpdF9ldmVudC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0 aWxzL3dhaXRfZXZlbnQuaApAQCAtMTA1LDYgKzEwNSw3IEBAIHR5cGVkZWYgZW51bQogCVdBSVRf RVZFTlRfSEFTSF9HUk9XX0JVQ0tFVFNfQUxMT0NBVEUsCiAJV0FJVF9FVkVOVF9IQVNIX0dST1df QlVDS0VUU19FTEVDVCwKIAlXQUlUX0VWRU5UX0hBU0hfR1JPV19CVUNLRVRTX1JFSU5TRVJULAor CVdBSVRfRVZFTlRfTE9HSUNBTF9BUFBMWV9CR1dPUktFUl9TVEFURV9DSEFOR0UsCiAJV0FJVF9F VkVOVF9MT0dJQ0FMX1NZTkNfREFUQSwKIAlXQUlUX0VWRU5UX0xPR0lDQUxfU1lOQ19TVEFURV9D SEFOR0UsCiAJV0FJVF9FVkVOVF9NUV9JTlRFUk5BTCwKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Jl Z3Jlc3MvZXhwZWN0ZWQvc3Vic2NyaXB0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0 ZWQvc3Vic2NyaXB0aW9uLm91dAppbmRleCBlZjBlYmY5NmI5Li45OWI5ZTg2N2U0IDEwMDY0NAot LS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3N1YnNjcmlwdGlvbi5vdXQKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9zdWJzY3JpcHRpb24ub3V0CkBAIC0yMTcsOSArMjE3LDkg QEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHNsb3RfbmFtZSA9IE5P TkUpOwogKDEgcm93KQogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7Ci0tLSBm YWlsIC0gc3RyZWFtaW5nIG11c3QgYmUgYm9vbGVhbgorLS0gZmFpbCAtIHN0cmVhbWluZyBtdXN0 IGJlIGJvb2xlYW4gb3IgJ3BhcmFsbGVsJwogQ1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rl c3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElP TiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBmYWxzZSwgc3RyZWFtaW5nID0gZm9vKTsKLUVSUk9S OiAgc3RyZWFtaW5nIHJlcXVpcmVzIGEgQm9vbGVhbiB2YWx1ZQorRVJST1I6ICBzdHJlYW1pbmcg cmVxdWlyZXMgYSBCb29sZWFuIHZhbHVlIG9yICJwYXJhbGxlbCIKIC0tIG5vdyBpdCB3b3Jrcwog Q1JFQVRFIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJl Z3Jlc3NfZG9lc25vdGV4aXN0JyBQVUJMSUNBVElPTiB0ZXN0cHViIFdJVEggKGNvbm5lY3QgPSBm YWxzZSwgc3RyZWFtaW5nID0gdHJ1ZSk7CiBXQVJOSU5HOiAgdGFibGVzIHdlcmUgbm90IHN1YnNj cmliZWQsIHlvdSB3aWxsIGhhdmUgdG8gcnVuIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVT SCBQVUJMSUNBVElPTiB0byBzdWJzY3JpYmUgdGhlIHRhYmxlcwpAQCAtMjMwLDYgKzIzMCwxNCBA QCBXQVJOSU5HOiAgdGFibGVzIHdlcmUgbm90IHN1YnNjcmliZWQsIHlvdSB3aWxsIGhhdmUgdG8g cnVuIEFMVEVSIFNVQlNDUklQVElPTiAuLgogIHJlZ3Jlc3NfdGVzdHN1YiB8IHJlZ3Jlc3Nfc3Vi c2NyaXB0aW9uX3VzZXIgfCBmICAgICAgIHwge3Rlc3RwdWJ9ICAgfCBmICAgICAgfCB0ICAgICAg ICAgfCBkICAgICAgICAgICAgICAgIHwgZiAgICAgICAgICAgICAgICB8IGFueSAgICB8IG9mZiAg ICAgICAgICAgICAgICB8IGRibmFtZT1yZWdyZXNzX2RvZXNub3RleGlzdCB8IDAvMAogKDEgcm93 KQogCitBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc3RyZWFtaW5nID0g cGFyYWxsZWwpOworXGRScysKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdCBv ZiBzdWJzY3JpcHRpb25zCisgICAgICBOYW1lICAgICAgIHwgICAgICAgICAgIE93bmVyICAgICAg ICAgICB8IEVuYWJsZWQgfCBQdWJsaWNhdGlvbiB8IEJpbmFyeSB8IFN0cmVhbWluZyB8IFR3by1w aGFzZSBjb21taXQgfCBEaXNhYmxlIG9uIGVycm9yIHwgT3JpZ2luIHwgU3luY2hyb25vdXMgY29t bWl0IHwgICAgICAgICAgQ29ubmluZm8gICAgICAgICAgIHwgU2tpcCBMU04gCistLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tCisgcmVncmVzc190ZXN0c3ViIHwgcmVncmVzc19zdWJzY3JpcHRp b25fdXNlciB8IGYgICAgICAgfCB7dGVzdHB1Yn0gICB8IGYgICAgICB8IHAgICAgICAgICB8IGQg ICAgICAgICAgICAgICAgfCBmICAgICAgICAgICAgICAgIHwgYW55ICAgIHwgb2ZmICAgICAgICAg ICAgICAgIHwgZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4aXN0IHwgMC8wCisoMSByb3cpCisKIEFM VEVSIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzdHJlYW1pbmcgPSBmYWxzZSk7 CiBBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc190ZXN0c3ViIFNFVCAoc2xvdF9uYW1lID0gTk9O RSk7CiBcZFJzKwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2NyaXB0aW9u LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3N1YnNjcmlwdGlvbi5zcWwKaW5kZXggNDQyNWZh ZmM0Ni4uZWQxNDhlNGJkNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3Vic2Ny aXB0aW9uLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zdWJzY3JpcHRpb24uc3FsCkBA IC0xNTYsNyArMTU2LDcgQEAgQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBTRVQg KHNsb3RfbmFtZSA9IE5PTkUpOwogCiBEUk9QIFNVQlNDUklQVElPTiByZWdyZXNzX3Rlc3RzdWI7 CiAKLS0tIGZhaWwgLSBzdHJlYW1pbmcgbXVzdCBiZSBib29sZWFuCistLSBmYWlsIC0gc3RyZWFt aW5nIG11c3QgYmUgYm9vbGVhbiBvciAncGFyYWxsZWwnCiBDUkVBVEUgU1VCU0NSSVBUSU9OIHJl Z3Jlc3NfdGVzdHN1YiBDT05ORUNUSU9OICdkYm5hbWU9cmVncmVzc19kb2Vzbm90ZXhpc3QnIFBV QkxJQ0FUSU9OIHRlc3RwdWIgV0lUSCAoY29ubmVjdCA9IGZhbHNlLCBzdHJlYW1pbmcgPSBmb28p OwogCiAtLSBub3cgaXQgd29ya3MKQEAgLTE2NCw2ICsxNjQsMTAgQEAgQ1JFQVRFIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgQ09OTkVDVElPTiAnZGJuYW1lPXJlZ3Jlc3NfZG9lc25vdGV4 aXN0JyBQVUIKIAogXGRScysKIAorQUxURVIgU1VCU0NSSVBUSU9OIHJlZ3Jlc3NfdGVzdHN1YiBT RVQgKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKKworXGRScysKKwogQUxURVIgU1VCU0NSSVBUSU9O IHJlZ3Jlc3NfdGVzdHN1YiBTRVQgKHN0cmVhbWluZyA9IGZhbHNlKTsKIEFMVEVSIFNVQlNDUklQ VElPTiByZWdyZXNzX3Rlc3RzdWIgU0VUIChzbG90X25hbWUgPSBOT05FKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdAppbmRleCAzNWM5ZjFlZmNlLi45ZWY3YmMxNWY0IDEwMDY0NAotLS0gYS9z cmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdApAQCAtMTE2LDYgKzExNiwxMCBAQCBBcHBlbmQKIEFwcGVuZFBhdGgKIEFw cGVuZFJlbEluZm8KIEFwcGVuZFN0YXRlCitBcHBseUJnd29ya2VyRW50cnkKK0FwcGx5Qmd3b3Jr ZXJTaGFyZWQKK0FwcGx5Qmd3b3JrZXJJbmZvCitBcHBseUJnd29ya2VyU3RhdHVzCiBBcHBseUVy cm9yQ2FsbGJhY2tBcmcKIEFwcGx5RXhlY3V0aW9uRGF0YQogQXBwbHlTdWJYYWN0RGF0YQpAQCAt MTQ4NSw2ICsxNDg5LDcgQEAgTG9naWNhbFJlcFJlbElkCiBMb2dpY2FsUmVwUmVsTWFwRW50cnkK IExvZ2ljYWxSZXBSZWxhdGlvbgogTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5EYXRhCitM b2dpY2FsUmVwU3RyZWFtQWJvcnREYXRhCiBMb2dpY2FsUmVwVHVwbGVEYXRhCiBMb2dpY2FsUmVw VHlwCiBMb2dpY2FsUmVwV29ya2VyCi0tIAoyLjIzLjAud2luZG93cy4xCgo= --_006_OS3PR01MB6275739E73E8BEC5D13FB6739E6B9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v22-0002-Test-streaming-parallel-option-in-tap-test.patch" Content-Description: v22-0002-Test-streaming-parallel-option-in-tap-test.patch Content-Disposition: attachment; filename="v22-0002-Test-streaming-parallel-option-in-tap-test.patch"; size=70794; creation-date="Tue, 16 Aug 2022 07:29:00 GMT"; modification-date="Tue, 16 Aug 2022 07:33:00 GMT" Content-Transfer-Encoding: base64 RnJvbSA1YTk0M2I5MGE1MWIzNjgzYzU0YmYxN2NiZGI3YjhjMDBhZTI5MTY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAic2hpeS5mbnN0IiA8c2hpeS5mbnN0QGZ1aml0c3UuY29tPgpE YXRlOiBGcmksIDEzIE1heSAyMDIyIDE0OjUwOjMwICswODAwClN1YmplY3Q6IFtQQVRDSCB2MjIg Mi81XSBUZXN0IHN0cmVhbWluZyBwYXJhbGxlbCBvcHRpb24gaW4gdGFwIHRlc3QKCkNoYW5nZSBh bGwgVEFQIHRlc3RzIHVzaW5nIHRoZSBTVUJTQ1JJUFRJT04gInN0cmVhbWluZyIgcGFyYW1ldGVy LCBzbyB0aGV5Cm5vdyB0ZXN0IGJvdGggJ29uJyBhbmQgJ3BhcmFsbGVsJyB2YWx1ZXMuCi0tLQog c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgMTk5ICsrKyst LS0KIHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbCB8IDEyMSAr KystLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwgICAgIHwgMTk0 ICsrKystLS0KIC4uLi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5wbCAgICAgICAgICAgICB8 IDIwMSArKysrLS0tCiAuLi4vdC8wMTlfc3RyZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsICAgICAg ICAgfCAxMTIgKysrLQogLi4uL3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBs ICAgIHwgMzYzICsrKysrKystLS0tLS0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vf c3RyZWFtLnBsICAgICB8IDQ5OCArKysrKysrKysrLS0tLS0tLS0KIDcgZmlsZXMgY2hhbmdlZCwg MTA0MyBpbnNlcnRpb25zKCspLCA2NDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxNV9zdHJlYW0ucGwKaW5kZXggY2JhYTMyN2U0NC4uOWY0OTQ2ZDdkNiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC04LDYgKzgsMTE2IEBAIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6 Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBh cmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBj YW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJh bGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIs ICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIElu dGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcgdGhlIDY0a0Ig bGltaXQuCisJbXkgJGluICA9ICcnOworCW15ICRvdXQgPSAnJzsKKworCW15ICR0aW1lciA9IElQ Qzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9kZWZhdWx0 KTsKKworCW15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz JywgXCRpbiwgXCRvdXQsICR0aW1lciwKKwkJb25fZXJyb3Jfc3RvcCA9PiAwKTsKKworCSMgQ2hl Y2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAic3RyZWFtaW5nIiBwYXJhbWV0 ZXIgaXMKKwkjIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0 aGUgREVCVUcxIGxvZyBtZXNzYWdlcworCSMgYWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVt cCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVf c3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9t ZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7CisJfQorCisJ JGluIC49IHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCVVQREFURSB0ZXN0 X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCX07CisJJGgtPnB1bXBfbmI7CisKKwlpZiAoJGlz X3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBw bHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9j b25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7 CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3Rh YiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsIDk5OTkp IHMoaSk7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDUwMDA7CisJQ09NTUlUOwor CX0pOworCisJJGluIC49IHF7CisJQ09NTUlUOworCVxxCisJfTsKKwkkaC0+ZmluaXNoOyAgICAj IGVycm9ycyBtYWtlIHRoZSBuZXh0IHRlc3QgZmFpbCwgc28gaWdub3JlIHRoZW0gaGVyZQorCisJ JG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCW15ICRyZXN1 bHQgPQorCSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CisJ aXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknY2hlY2sgZXh0cmEgY29sdW1ucyBj b250YWluIGxvY2FsIGRlZmF1bHRzJyk7CisKKwkjIFRlc3QgdGhlIHN0cmVhbWluZyBpbiBiaW5h cnkgbW9kZQorCSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiQUxU RVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUIChiaW5hcnkgPSBvbikiKTsKKworCSMgSW5zZXJ0 LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQu CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg1MDAxLCAxMDAwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBt ZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisJJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50 KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2Njd8NjY2 NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnKTsKKwor CSMgQ2hhbmdlIHRoZSBsb2NhbCB2YWx1ZXMgb2YgdGhlIGV4dHJhIGNvbHVtbnMgb24gdGhlIHN1 YnNjcmliZXIsCisJIyB1cGRhdGUgcHVibGlzaGVyLCBhbmQgY2hlY2sgdGhhdCBzdWJzY3JpYmVy IHJldGFpbnMgdGhlIGV4cGVjdGVkCisJIyB2YWx1ZXMuIFRoaXMgaXMgdG8gZW5zdXJlIHRoYXQg bm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMgYmVoYXZlCisJIyBwcm9wZXJseSBhZnRlciBhIHN0 cmVhbWluZyB0cmFuc2FjdGlvbi4KKwkkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlVQREFURSB0ZXN0X3RhYiBTRVQgYyA9ICdlcG9jaCc6OnRpbWVzdGFtcHR6ICsg OTg3NjU0MzIxICogaW50ZXJ2YWwgJzFzJyIKKwkpOworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYTo6dGV4dCki KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkk cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGV4dHJhY3QoZXBvY2ggZnJvbSBjKSA9IDk4NzY1NDMyMSksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiCisJKTsKKwlpcygkcmVzdWx0LCBxcSg2NjY3fDY2 Njd8NjY2NyksCisJCSdjaGVjayBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWxseSBjaGFuZ2Vk IGRhdGEnKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIChhID4g MikiKTsKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworfQor CiAjIENyZWF0ZSBwdWJsaXNoZXIgbm9kZQogbXkgJG5vZGVfcHVibGlzaGVyID0gUG9zdGdyZVNR TDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwdWJsaXNoZXInKTsKICRub2RlX3B1Ymxpc2hlci0+aW5p dChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CkBAIC0zNyw2ICsxNDcsMTAgQEAgJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFBVQkxJQ0FUSU9O IHRhcF9wdWIgRk9SIFRBQkxFIHRlc3RfdGFiIik7CiAKIG15ICRhcHBuYW1lID0gJ3RhcF9zdWIn OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVh bWluZyBtb2RlICdvbicKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAkbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiQ1JFQVRFIFNVQlNDUklQVElPTiB0 YXBfc3ViIENPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBsaWNhdGlvbl9uYW1lPSRh cHBuYW1lJyBQVUJMSUNBVElPTiB0YXBfcHViIFdJVEggKHN0cmVhbWluZyA9IG9uKSIKICk7CkBA IC00OSw4MiArMTYzLDI1IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50 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 dGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKaW5kZXggYmMwYTljZDA1 My4uMTA0YTE2OTE5NyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0 cmVhbV9zdWJ4YWN0LnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxNl9zdHJlYW1f c3VieGFjdC5wbApAQCAtOCw2ICs4LDcyIEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVy OwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5j YXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAi c3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGgg Zm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1 YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIENoZWNrIHRoYXQgYSBiYWNr Z3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCisJIyBzcGVj aWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cg bWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2 ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1 ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgSW5zZXJ0LCB1cGRh dGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgNjRrQiBsaW1pdC4KKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KCAgICAzLCAgNTAwKSBzKGkpOworCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVS RSBtb2QoYSwyKSA9IDA7CisJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAw OworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwgIDEwMDApIHMoaSk7CisJVVBEQVRFIHRl c3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0 ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAw MSwgIDE1MDApIHMoaSk7CisJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1v ZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJ U0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7CisJVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKKwlERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJTlRPIHRl c3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwg MjUwMCkgcyhpKTsKKwlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEs MikgPSAwOworCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwlDT01N SVQ7CisJfSk7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2Rl X3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5f bWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisK Kwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJl c3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK KwlpcygkcmVzdWx0LCBxcSgxNjY3fDE2Njd8MTY2NyksCisJCSdjaGVjayBkYXRhIHdhcyBjb3Bp ZWQgdG8gc3Vic2NyaWJlciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250 YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIENsZWFudXAgdGhlIHRlc3QgZGF0YQorCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJERUxFVEUgRlJPTSB0ZXN0 X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15ICRub2RlX3B1Ymxp c2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlzaGVyJyk7CiAkbm9k ZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNhbCcpOwpAQCAtMzcs NiArMTAzLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNS RUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwogCiBteSAkYXBw bmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg VGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFU RSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVyX2Nvbm5zdHIgYXBw bGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBXSVRIIChzdHJlYW1p bmcgPSBvbikiCiApOwpAQCAtNDksNDEgKzExOSwyNiBAQCBteSAkcmVzdWx0ID0KIAkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMo JHJlc3VsdCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vi c2NyaWJlcicpOwogCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8g ZXhjZWVkIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdy ZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRl eHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKCAgICAzLCAgNTAwKSBzKGkpOwotVVBEQVRFIHRlc3Rf dGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3Rf dGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAxLCAgMTAw MCkgcyhpKTsKLVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9 IDA7Ci1ERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci1TQVZFUE9JTlQg czI7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEwMDEsICAxNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0g bWQ1KGIpIFdIRVJFIG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1v ZChhLDMpID0gMDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwgIDIwMDApIHMoaSk7Ci1V UERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotREVMRVRF IEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotU0FWRVBPSU5UIHM0OwotSU5TRVJU IElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmll cygyMDAxLCAyNTAwKSBzKGkpOwotVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJF IG1vZChhLDIpID0gMDsKLURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK LUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVz dF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDE2Njd8MTY2N3wxNjY3KSwKLQknY2hlY2sgZGF0YSB3 YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5nIG1vZGUgYW5kIGV4dHJhIGNvbHVt bnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hl ciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOworCisjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxl bCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0g JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9N IHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScg QU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1p bmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdw b3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVh bWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFw cGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9zdHJl YW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7CisK ICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxN19zdHJlYW1fZGRsLnBsIGIvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKaW5kZXggODY2ZjE1MTJlNC4uZWNh YzNhMzkxNSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9k ZGwucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE3X3N0cmVhbV9kZGwucGwKQEAg LTgsNiArOCwxMTEgQEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdy ZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwg dGhlIGNvbW1vbiB0ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciCisj IHBhcmFtZXRlciBzbyB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVh bWluZz1vbiBhbmQKKyMgc3RyZWFtaW5nPXBhcmFsbGVsIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFt aW5nCit7CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUs ICRpc19wYXJhbGxlbCkgPSBAXzsKKworCSMgYSBzbWFsbCAobm9uLXN0cmVhbWVkKSB0cmFuc2Fj dGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICgzLCBt ZDUoMzo6dGV4dCkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7CisJ U0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoNCwgbWQ1KDQ6OnRl eHQpLCAtNCk7CisJQ09NTUlUOworCX0pOworCisJIyBDaGVjayB0aGF0IGEgYmFja2dyb3VuZCB3 b3JrZXIgc3RhcnRzIGlmICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcworCSMgc3BlY2lmaWVkIGFz ICJwYXJhbGxlbCIuICBXZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2Vz CisJIyBhYm91dCB0aGF0LCBzbyB0ZW1wb3JhcmlseSBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5 LgorCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29u ZigncG9zdGdyZXNxbC5jb25mJywKKwkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7CisJ CSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJh bnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAor CQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUsIDEwMDApIHMoaSk7CisJ QUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKKwlTQVZFUE9JTlQgczE7CisJ SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSBGUk9N IGdlbmVyYXRlX3NlcmllcygxMDAxLCAyMDAwKSBzKGkpOworCUNPTU1JVDsKKwl9KTsKKworCWlm ICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2cocXIv XFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+YXBw ZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5p bmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgYSBzbWFsbCAobm9u LXN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6dGV4dCksIC0yMDAxLCAyKjIwMDEpOworCUFM VEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gZSBJTlQ7CisJU0FWRVBPSU5UIHMxOworCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwg MioyMDAyLCAtMyoyMDAyKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQo YyksIGNvdW50KGQpLCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEo MjAwMnwxOTk5fDEwMDJ8MSksCisJCSdjaGVjayBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl ciBpbiBzdHJlYW1pbmcgbW9kZSBhbmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1 bHRzJworCSk7CisKKwkjIEEgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCBh bmQgRE1MLiBPbmUgb2YgdGhlIERETCBpcyBwZXJmb3JtZWQKKwkjIGFmdGVyIERNTCB0byBlbnN1 cmUgdGhhdCB3ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhh dAorCSMgdGhlIG5leHQgdHJhbnNhY3Rpb24gaGFzIHRvIHNlbmQgdGhlIHNjaGVtYSBhZ2Fpbi4K Kwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpLCAtaSwgMippLCAt MyppIEZST00gZ2VuZXJhdGVfc2VyaWVzKDIwMDMsNTAwMCkgcyhpKTsKKwlBTFRFUiBUQUJMRSB0 ZXN0X3RhYiBBREQgQ09MVU1OIGYgSU5UOworCUNPTU1JVDsKKwl9KTsKKworCSMgQSBzbWFsbCB0 cmFuc2FjdGlvbiB0aGF0IHdvbid0IGdldCBzdHJlYW1lZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3Vy ZSB0aGF0IHdlCisJIyBzZW5kIHRoZSBzY2hlbWEgYWdhaW4gdG8gcmVmbGVjdCB0aGUgbGFzdCBj b2x1bW4gYWRkZWQgaW4gdGhlIHByZXZpb3VzIHRlc3QuCisJJG5vZGVfcHVibGlzaGVyLT5zYWZl X3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47CisJSU5TRVJUIElOVE8gdGVzdF90YWIg U0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSwgNCppIEZST00gZ2VuZXJhdGVf c2VyaWVzKDUwMDEsNTAwNSkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisKKwkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChj KSwgY291bnQoZCksIGNvdW50KGUpLCBjb3VudChmKSBGUk9NIHRlc3RfdGFiIgorCSk7CisJaXMo JHJlc3VsdCwgcXEoNTAwNXw1MDAyfDQwMDV8MzAwNHw1KSwKKwkJJ2NoZWNrIGRhdGEgd2FzIGNv cGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0 cmFuc2FjdGlvbnMnCisJKTsKKworCSMgQ2xlYW51cCB0aGUgdGVzdCBkYXRhCisJJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJREVMRVRFIEZST00gdGVzdF90 YWIgV0hFUkUgKGEgPiAyKTsKKwlBTFRFUiBUQUJMRSB0ZXN0X3RhYiBEUk9QIENPTFVNTiBjLCBE Uk9QIENPTFVNTiBkLCBEUk9QIENPTFVNTiBlLCBEUk9QIENPTFVNTiBmOworCX0pOworCSRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Cit9CisKICMgQ3JlYXRlIHB1 Ymxpc2hlciBub2RlCiBteSAkbm9kZV9wdWJsaXNoZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyLT5uZXcoJ3B1Ymxpc2hlcicpOwogJG5vZGVfcHVibGlzaGVyLT5pbml0KGFsbG93c19zdHJl YW1pbmcgPT4gJ2xvZ2ljYWwnKTsKQEAgLTM3LDYgKzE0MiwxMCBAQCAkbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1YiBGT1Ig VEFCTEUgdGVzdF90YWIiKTsKIAogbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7CisKKyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ29u JworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAogCSJDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIgQ09OTkVD VElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyIGFwcGxpY2F0aW9uX25hbWU9JGFwcG5hbWUnIFBVQkxJ Q0FUSU9OIHRhcF9wdWIgV0lUSCAoc3RyZWFtaW5nID0gb24pIgogKTsKQEAgLTQ5LDc3ICsxNTgs MjYgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MHwwKSwgJ2NoZWNrIGlu aXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotIyBhIHNtYWxsIChub24t c3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggRERMIGFuZCBETUwKLSRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFZBTFVFUyAoMywgbWQ1KDM6OnRleHQpKTsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xV TU4gYyBJTlQ7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDQs IG1kNSg0Ojp0ZXh0KSwgLTQpOwotQ09NTUlUOwotfSk7Ci0KLSMgbGFyZ2UgKHN0cmVhbWVkKSB0 cmFuc2FjdGlvbiB3aXRoIERETCBhbmQgRE1MCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwg bWQ1KGk6OnRleHQpLCAtaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1LCAxMDAwKSBzKGkpOwotQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMTAwMSwgMjAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0jIGEgc21hbGwg KG5vbi1zdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTAotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVz dF90YWIgVkFMVUVTICgyMDAxLCBtZDUoMjAwMTo6dGV4dCksIC0yMDAxLCAyKjIwMDEpOwotQUxU RVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBlIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VS VCBJTlRPIHRlc3RfdGFiIFZBTFVFUyAoMjAwMiwgbWQ1KDIwMDI6OnRleHQpLCAtMjAwMiwgMioy MDAyLCAtMyoyMDAyKTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQp LCBjb3VudChlKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyMDAyfDE5OTl8MTAw MnwxKSwKLQknY2hlY2sgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXIgaW4gc3RyZWFtaW5n IG1vZGUgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKLSk7Cit0ZXN0 X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAw KTsKIAotIyBBIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwgYW5kIERNTC4g T25lIG9mIHRoZSBEREwgaXMgcGVyZm9ybWVkCi0jIGFmdGVyIERNTCB0byBlbnN1cmUgdGhhdCB3 ZSBpbnZhbGlkYXRlIHRoZSBzY2hlbWEgc2VudCBmb3IgdGVzdF90YWIgc28gdGhhdAotIyB0aGUg bmV4dCB0cmFuc2FjdGlvbiBoYXMgdG8gc2VuZCB0aGUgc2NoZW1hIGFnYWluLgotJG5vZGVfcHVi bGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8g dGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgLWksIDIqaSwgLTMqaSBGUk9NIGdlbmVy YXRlX3NlcmllcygyMDAzLDUwMDApIHMoaSk7Ci1BTFRFUiBUQUJMRSB0ZXN0X3RhYiBBREQgQ09M VU1OIGYgSU5UOwotQ09NTUlUOwotfSk7Ci0KLSMgQSBzbWFsbCB0cmFuc2FjdGlvbiB0aGF0IHdv bid0IGdldCBzdHJlYW1lZC4gVGhpcyBpcyBqdXN0IHRvIGVuc3VyZSB0aGF0IHdlCi0jIHNlbmQg dGhlIHNjaGVtYSBhZ2FpbiB0byByZWZsZWN0IHRoZSBsYXN0IGNvbHVtbiBhZGRlZCBpbiB0aGUg cHJldmlvdXMgdGVzdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci1CRUdJTjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCks IC1pLCAyKmksIC0zKmksIDQqaSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDAxLDUwMDUpIHMoaSk7 Ci1DT01NSVQ7Ci19KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKLQotJHJlc3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkKSwgY291bnQoZSksIGNv dW50KGYpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDUwMDV8NTAwMnw0MDA1fDMw MDR8NSksCi0JJ2NoZWNrIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyIGZvciBib3RoIHN0 cmVhbWluZyBhbmQgbm9uLXN0cmVhbWluZyB0cmFuc2FjdGlvbnMnCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJh bGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlk ID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBG Uk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFt ZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAorJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJl YW1pbmcgPSBwYXJhbGxlbCkiKTsKKworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGls KCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGlj YXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0 cmVhbWluZyc7IgorICApCisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9y IGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKKwordGVzdF9z dHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7 CisKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0b3A7CiAKZGlm ZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9y dC5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOF9zdHJlYW1fc3VieGFjdF9hYm9ydC5w bAppbmRleCA1NTFmMTZkZjZkLi4wNDE1ZWY3ZDk4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMThfc3RyZWFtX3N1YnhhY3RfYWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDE4X3N0cmVhbV9zdWJ4YWN0X2Fib3J0LnBsCkBAIC04LDYgKzgsMTEzIEBA IHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMgRW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVz dCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28g dGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJvdGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisj IHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4KK3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgk bm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwp ID0gQF87CisKKwkjIENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0 cmVhbWluZyIgcGFyYW1ldGVyIGlzCisJIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhh dmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNv IHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxl bCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYn LAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+ cmVsb2FkOworCX0KKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwg RE1MIGFuZCBST0xMQkFDS3MKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMTsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEwMDEs MTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7CisJ Uk9MTEJBQ0sgVE8gczI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygyMDAxLDI1MDApIHMoaSk7CisJUk9MTEJBQ0sgVE8g czE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3NlcmllcygyNTAxLDMwMDApIHMoaSk7CisJU0FWRVBPSU5UIHM0OworCUlOU0VSVCBJ TlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MzAwMSwzNTAwKSBzKGkpOworCVNBVkVQT0lOVCBzNTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBT RUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDM1MDEsNDAwMCkgcyhp KTsKKwlDT01NSVQ7CisJfSk7CisKKwlpZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7 CisJCSRub2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJ ImxvZ19taW5fbWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9h ZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwor CisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRy ZXN1bHQsIHFxKDIwMDB8MCksCisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJl ZmxlY3RlZCBvbiBzdWJzY3JpYmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVm YXVsdHMnCisJKTsKKworCSMgbGFyZ2UgKHN0cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIHN1YnNj cmliZXIgcmVjZWl2aW5nIG91dCBvZiBvcmRlcgorCSMgc3VidHJhbnNhY3Rpb24gUk9MTEJBQ0tz CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJQkVHSU47 CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVy YXRlX3Nlcmllcyg0MDAxLDQ1MDApIHMoaSk7CisJU0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoNTAw MSw1NTAwKSBzKGkpOworCVNBVkVQT0lOVCBzMjsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDYwMDEsNjUwMCkgcyhpKTsK KwlTQVZFUE9JTlQgczM7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0 ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3MDAxLDc1MDApIHMoaSk7CisJUkVMRUFTRSBzMjsK KwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJh dGVfc2VyaWVzKDgwMDEsODUwMCkgcyhpKTsKKwlST0xMQkFDSyBUTyBzMTsKKwlDT01NSVQ7CisJ fSk7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJ JHJlc3VsdCA9CisJICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJ IlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQs IHFxKDI1MDB8MCksCisJCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3Rl ZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0 aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjaworCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9w c3FsKAorCQkncG9zdGdyZXMnLCBxeworCUJFR0lOOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNF TEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoODUwMSw5MDAwKSBzKGkp OworCVNBVkVQT0lOVCBzMTsKKwlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUwMCkgcyhpKTsKKwlTQVZFUE9JTlQg czI7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdl bmVyYXRlX3Nlcmllcyg5NTAxLDEwMDAwKSBzKGkpOworCVJPTExCQUNLOworCX0pOworCisJJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSRyZXN1bHQgPQor CSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291 bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyNTAwfDAp LCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIENs ZWFudXAgdGhlIHRlc3QgZGF0YQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpIik7CisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyBDcmVhdGUgcHVibGlz aGVyIG5vZGUKIG15ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIt Pm5ldygncHVibGlzaGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWlu ZyA9PiAnbG9naWNhbCcpOwpAQCAtMzYsNiArMTQzLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJM RSB0ZXN0X3RhYiIpOwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9O ICckcHVibGlzaGVyX2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJ T04gdGFwX3B1YiBXSVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDgsODEgKzE1OSwyNSBA QCBteSAkcmVzdWx0ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFi Iik7CiBpcygkcmVzdWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQg dG8gc3Vic2NyaWJlcicpOwogCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBE REwsIERNTCBhbmQgUk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotQkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6 OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOwotU0FWRVBPSU5UIHMxOwot SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAw KSBzKGkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1k NShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxNTAxLDIwMDApIHMoaSk7Ci1ST0xMQkFD SyBUTyBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMjAwMSwyNTAwKSBzKGkpOwotUk9MTEJBQ0sgVE8gczE7Ci1JTlNF UlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDI1MDEsMzAwMCkgcyhpKTsKLVNBVkVQT0lOVCBzNDsKLUlOU0VSVCBJTlRPIHRlc3RfdGFi IFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMzAwMSwzNTAwKSBz KGkpOwotU0FWRVBPSU5UIHM1OwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShp Ojp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzNTAxLDQwMDApIHMoaSk7Ci1DT01NSVQ7Ci19 KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotJHJl c3VsdCA9Ci0gICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDIw MDB8MCksCi0JJ2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1 YnNjcmliZXIgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKK3Rlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDAp OworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5n IHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGlj YXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAot IyBsYXJnZSAoc3RyZWFtZWQpIHRyYW5zYWN0aW9uIHdpdGggc3Vic2NyaWJlciByZWNlaXZpbmcg b3V0IG9mIG9yZGVyCi0jIHN1YnRyYW5zYWN0aW9uIFJPTExCQUNLcwotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg0MDAxLDQ1MDAp IHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1 KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMDEsNTUwMCkgcyhpKTsKLVNBVkVQT0lO VCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoNjAwMSw2NTAwKSBzKGkpOwotU0FWRVBPSU5UIHMzOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg3 MDAxLDc1MDApIHMoaSk7Ci1SRUxFQVNFIHMyOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNU IGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4MDAxLDg1MDApIHMoaSk7Ci1S T0xMQkFDSyBUTyBzMTsKLUNPTU1JVDsKLX0pOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0KLSAgJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYykgRlJPTSB0ZXN0 X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMjUwMHwwKSwKLQknY2hlY2sgcm9sbGJhY2sgdG8gc2F2 ZXBvaW50IHdhcyByZWZsZWN0ZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIGxhcmdlIChzdHJlYW1l ZCkgdHJhbnNhY3Rpb24gd2l0aCBzdWJzY3JpYmVyIHJlY2VpdmluZyByb2xsYmFjawotJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLUJFR0lOOwotSU5TRVJUIElO VE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg4 NTAxLDkwMDApIHMoaSk7Ci1TQVZFUE9JTlQgczE7Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDkwMDEsOTUwMCkgcyhpKTsK LVNBVkVQT0lOVCBzMjsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoOTUwMSwxMDAwMCkgcyhpKTsKLVJPTExCQUNLOwotfSk7 Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSRyZXN1 bHQgPQotICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNU IGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgyNTAw fDApLCAnY2hlY2sgcm9sbGJhY2sgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3JpYmVyJyk7Ciskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgU1VCU0NSSVBUSU9O IHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKSIpOworCiskbm9kZV9wdWJsaXNoZXIt PnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCAhPSAkb2xkcGlkIEZS T00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1l JyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisgICkKKyAgb3IgZGllCisgICJUaW1lZCBvdXQg d2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJ UFRJT04iOworCit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmli ZXIsICRhcHBuYW1lLCAxKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+c3RvcDsKICRub2RlX3B1Ymxp c2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJl YW1fc3VieGFjdF9kZGxfYWJvcnQucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTlfc3Ry ZWFtX3N1YnhhY3RfZGRsX2Fib3J0LnBsCmluZGV4IDRkN2RhODJiN2EuLmNlZWJkMDM5NTIgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAxOV9zdHJlYW1fc3VieGFjdF9kZGxf YWJvcnQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE5X3N0cmVhbV9zdWJ4YWN0 X2RkbF9hYm9ydC5wbApAQCAtOSw2ICs5LDY5IEBAIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7CiAKKyMg RW5jYXBzdWxhdGUgYWxsIHRoZSBjb21tb24gdGVzdCBzdGVwcyB3aGljaCBhcmUgcmVsYXRlZCB0 byAic3RyZWFtaW5nIgorIyBwYXJhbWV0ZXIgc28gdGhlIHNhbWUgY29kZSBjYW4gYmUgcnVuIGJv dGggZm9yIHRoZSBzdHJlYW1pbmc9b24gYW5kCisjIHN0cmVhbWluZz1wYXJhbGxlbCBjYXNlcy4K K3N1YiB0ZXN0X3N0cmVhbWluZworeworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNj cmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87CisKKwkjIENoZWNrIHRoYXQgYSBi YWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFyYW1ldGVyIGlzCisJIyBz cGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBmb3IgdGhlIERFQlVHMSBs b2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1bXAgdXAgdGhlIGxv ZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRub2RlX3N1YnNjcmliZXIt PmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSBk ZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSMgbGFyZ2UgKHN0 cmVhbWVkKSB0cmFuc2FjdGlvbiB3aXRoIERETCwgRE1MIGFuZCBST0xMQkFDS3MKKwkkbm9kZV9w dWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwlCRUdJTjsKKwlJTlNFUlQg SU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVz KDMsNTAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4gYyBJTlQ7CisJ U0FWRVBPSU5UIHMxOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4 dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOworCUFMVEVSIFRBQkxF IHRlc3RfdGFiIEFERCBDT0xVTU4gZCBJTlQ7CisJU0FWRVBPSU5UIHMyOworCUlOU0VSVCBJTlRP IHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMTAwMSwxNTAwKSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIEFERCBDT0xVTU4g ZSBJTlQ7CisJU0FWRVBPSU5UIHMzOworCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBt ZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUwMSwyMDAw KSBzKGkpOworCUFMVEVSIFRBQkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7CisJUk9MTEJBQ0sg VE8gczE7CisJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwgaSBG Uk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKKwlDT01NSVQ7CisJfSk7CisKKwlp ZiAoJGlzX3BhcmFsbGVsKQorCXsKKwkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFy L1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJu aW5nIik7CisJCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJbXkgJHJlc3VsdCA9CisJICAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwg Y291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQsIHFxKDEwMDB8NTAwKSwKKwkJ J2NoZWNrIHJvbGxiYWNrIHRvIHNhdmVwb2ludCB3YXMgcmVmbGVjdGVkIG9uIHN1YnNjcmliZXIg YW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOworCisJIyBDbGVh bnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkJJ3Bvc3Rn cmVzJywgcXsKKwlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSAoYSA+IDIpOworCUFMVEVSIFRB QkxFIHRlc3RfdGFiIERST1AgQ09MVU1OIGM7CisJfSk7CisJJG5vZGVfcHVibGlzaGVyLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyBDcmVhdGUgcHVibGlzaGVyIG5vZGUKIG15 ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHVibGlz aGVyJyk7CiAkbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAnbG9naWNh bCcpOwpAQCAtMzcsNiArMTAwLDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIp OwogCiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIkNSRUFURSBTVUJTQ1JJUFRJT04gdGFwX3N1YiBDT05ORUNUSU9OICckcHVibGlzaGVy X2Nvbm5zdHIgYXBwbGljYXRpb25fbmFtZT0kYXBwbmFtZScgUFVCTElDQVRJT04gdGFwX3B1YiBX SVRIIChzdHJlYW1pbmcgPSBvbikiCiApOwpAQCAtNDksMzUgKzExNiwyNiBAQCBteSAkcmVzdWx0 ID0KIAkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVz dWx0LCBxcSgyfDApLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl cicpOwogCi0jIGxhcmdlIChzdHJlYW1lZCkgdHJhbnNhY3Rpb24gd2l0aCBEREwsIERNTCBhbmQg Uk9MTEJBQ0tzCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewot QkVHSU47Ci1JTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00g Z2VuZXJhdGVfc2VyaWVzKDMsNTAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENP TFVNTiBjIElOVDsKLVNBVkVQT0lOVCBzMTsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBp LCBtZDUoaTo6dGV4dCksIC1pIEZST00gZ2VuZXJhdGVfc2VyaWVzKDUwMSwxMDAwKSBzKGkpOwot QUxURVIgVEFCTEUgdGVzdF90YWIgQUREIENPTFVNTiBkIElOVDsKLVNBVkVQT0lOVCBzMjsKLUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMTAwMSwxNTAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgQURE IENPTFVNTiBlIElOVDsKLVNBVkVQT0lOVCBzMzsKLUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVD VCBpLCBtZDUoaTo6dGV4dCksIC1pLCAyKmksIC0zKmkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMTUw MSwyMDAwKSBzKGkpOwotQUxURVIgVEFCTEUgdGVzdF90YWIgRFJPUCBDT0xVTU4gYzsKLVJPTExC QUNLIFRPIHMxOwotSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSwg aSBGUk9NIGdlbmVyYXRlX3Nlcmllcyg1MDEsMTAwMCkgcyhpKTsKLUNPTU1JVDsKLX0pOwotCi0k bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0kcmVzdWx0ID0K LSAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3Vu dCgqKSwgY291bnQoYykgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMTAwMHw1MDAp LAotCSdjaGVjayByb2xsYmFjayB0byBzYXZlcG9pbnQgd2FzIHJlZmxlY3RlZCBvbiBzdWJzY3Jp YmVyIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCit0ZXN0X3N0cmVh bWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAwKTsKKwor IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgVGVzdCB1c2luZyBzdHJl YW1pbmcgbW9kZSAncGFyYWxsZWwnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIworbXkgJG9sZHBpZCA9ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIlNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9u X25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKICk7CiAKKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1YiBTRVQoc3RyZWFtaW5nID0gcGFyYWxsZWwpIik7CisKKyRub2RlX3B1Ymxpc2hlci0+ cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJP TSBwZ19zdGF0X3JlcGxpY2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUn IEFORCBzdGF0ZSA9ICdzdHJlYW1pbmcnOyIKKyAgKQorICBvciBkaWUKKyAgIlRpbWVkIG91dCB3 aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQ VElPTiI7CisKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJl ciwgJGFwcG5hbWUsIDEpOworCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlz aGVyLT5zdG9wOwogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjJfdHdv cGhhc2VfY2FzY2FkZS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9j YXNjYWRlLnBsCmluZGV4IDdhNzk3ZjM3YmEuLjBhNDE1MmQzYmUgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCisrKyBiL3NyYy90ZXN0 L3N1YnNjcmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsCkBAIC0xMSw2ICsxMSwyMDgg QEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBFbmNhcHN1bGF0ZSBhbGwgdGhlIGNvbW1vbiB0 ZXN0IHN0ZXBzIHdoaWNoIGFyZSByZWxhdGVkIHRvICJzdHJlYW1pbmciIHBhcmFtZXRlcgorIyBz byB0aGUgc2FtZSBjb2RlIGNhbiBiZSBydW4gYm90aCBmb3IgdGhlIHN0cmVhbWluZz1vbiBhbmQg c3RyZWFtaW5nPXBhcmFsbGVsCisjIGNhc2VzLgorc3ViIHRlc3Rfc3RyZWFtaW5nCit7CisJbXkg KCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0MsICRzdHJl YW1pbmdfbW9kZSkgPQorCSAgQF87CisKKwlteSAkb2xkcGlkX0IgPSAkbm9kZV9BLT5zYWZlX3Bz cWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRp b24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3RhdGUgPSAn c3RyZWFtaW5nJzsiKTsKKwlteSAkb2xkcGlkX0MgPSAkbm9kZV9CLT5zYWZlX3BzcWwoCisJCSdw b3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hF UkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5n JzsiKTsKKworCSMgU2V0dXAgbG9naWNhbCByZXBsaWNhdGlvbiBzdHJlYW1pbmcgbW9kZQorCisJ JG5vZGVfQi0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCAiCisJCUFMVEVSIFNVQlNDUklQVElP TiB0YXBfc3ViX0IKKwkJU0VUIChzdHJlYW1pbmcgPSAkc3RyZWFtaW5nX21vZGUpOyIpOworCSRu b2RlX0MtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlBTFRFUiBTVUJTQ1JJUFRJT04g dGFwX3N1Yl9DCisJCVNFVCAoc3RyZWFtaW5nID0gJHN0cmVhbWluZ19tb2RlKSIpOworCisJIyBX YWl0IGZvciBzdWJzY3JpYmVycyB0byBmaW5pc2ggaW5pdGlhbGl6YXRpb24KKworCSRub2RlX0Et PnBvbGxfcXVlcnlfdW50aWwoCisJCSdwb3N0Z3JlcycsICIKKwkJU0VMRUNUIHBpZCAhPSAkb2xk cGlkX0IgRlJPTSBwZ19zdGF0X3JlcGxpY2F0aW9uCisJCVdIRVJFIGFwcGxpY2F0aW9uX25hbWUg PSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorCSkgb3IgZGllICJUaW1l ZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgYXBwbHkgdG8gcmVzdGFydCI7CisJJG5vZGVfQi0+cG9s bF9xdWVyeV91bnRpbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlTRUxFQ1QgcGlkICE9ICRvbGRwaWRf QyBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KKwkJV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICck YXBwbmFtZV9DJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCisJKSBvciBkaWUgIlRpbWVkIG91 dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKKworCSMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRlc3QgMlBDIFBSRVBBUkUgLyBDT01NSVQgUFJFUEFSRUQu CisJIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9uLgorCSMgMi4gVGhl biBkbyBjb21taXQgcHJlcGFyZWQuCisJIworCSMgRXhwZWN0IGFsbCBkYXRhIGlzIHJlcGxpY2F0 ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgorCSMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMKKworCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0 cyBpZiAic3RyZWFtaW5nIiBvcHRwYXJhbWV0ZXJpb24gaXMKKwkjIHNwZWNpZmllZCBhcyAicGFy YWxsZWwiLiAgV2UgaGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcworCSMg YWJvdXQgdGhhdCwgc28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KKwlp ZiAoJHN0cmVhbWluZ19tb2RlIGVxICdwYXJhbGxlbCcpCisJeworCQkkbm9kZV9CLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJ JG5vZGVfQi0+cmVsb2FkOworCisJCSRub2RlX0MtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOworCQkkbm9kZV9DLT5yZWxvYWQ7CisJ fQorCisJIyBJbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0 aGUgNjRrQiBsaW1pdC4KKwkjIFRoZW4gMlBDIFBSRVBBUkUKKwkkbm9kZV9BLT5zYWZlX3BzcWwo CisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0ZXN0X3RhYiBTRUxF Q1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUwMDApIHMoaSk7CisJ CVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7CisJCURF TEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJFUEFSRSBUUkFOU0FD VElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJaWYgKCRzdHJlYW1pbmdfbW9kZSBlcSAn cGFyYWxsZWwnKQorCXsKKwkJJG5vZGVfQi0+d2FpdF9mb3JfbG9nKHFyL1xbQXBwbHkgQkdXICNc ZCtcXSBzdGFydGVkLywgMCk7CisJCSRub2RlX0ItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNv bmYnLCAibG9nX21pbl9tZXNzYWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfQi0+cmVsb2FkOwor CisJCSRub2RlX0MtPndhaXRfZm9yX2xvZyhxci9cW0FwcGx5IEJHVyAjXGQrXF0gc3RhcnRlZC8s IDApOworCQkkbm9kZV9DLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgImxvZ19taW5f bWVzc2FnZXMgPSB3YXJuaW5nIik7CisJCSRub2RlX0MtPnJlbG9hZDsKKwl9CisKKwkkbm9kZV9B LT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0ItPndhaXRfZm9yX2NhdGNo dXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBwcmVw YXJlZCBvbiBzdWJzY3JpYmVyKHMpCisJbXkgJHJlc3VsdCA9CisJICAkbm9kZV9CLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3Rz OyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vi c2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRy ZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7 CisKKwkjIDJQQyBDT01NSVQKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNPTU1J VCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOworCisJJG5vZGVfQS0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZV9CKTsKKwkkbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l X0MpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIHdhcyBjb21taXR0ZWQgb24gc3Vic2Ny aWJlcihzKQorCSRyZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNF TEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsK KwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCisJCSdSb3dzIGluc2VydGVkIGJ5IDJQ QyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUg bG9jYWwgZGVmYXVsdHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9N IHRlc3RfdGFiIik7CisJaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0fDMzMzQpLAorCQknUm93cyBp bnNlcnRlZCBieSAyUEMgaGF2ZSBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBDLCBhbmQgZXh0cmEg Y29sdW1ucyBoYXZlIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2Fj dGlvbiBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyKHMpCisJJHJlc3VsdCA9CisJICAkbm9k ZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3By ZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0 czsiKTsKKwlpcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyIEMnKTsKKworCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkjIFRl c3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9JTlQuCisJIyAw LiBDbGVhbnVwIGZyb20gcHJldmlvdXMgdGVzdCBsZWF2aW5nIG9ubHkgMiByb3dzLgorCSMgMS4g SW5zZXJ0IG9uZSBtb3JlIHJvdy4KKwkjIDIuIFJlY29yZCBhIFNBVkVQT0lOVC4KKwkjIDMuIERh dGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgNC4gRG8gcm9sbGJhY2sgdG8gU0FWRVBPSU5U IHByaW9yIHRvIHRoZSBzdHJlYW1lZCBpbnNlcnRzLgorCSMgNS4gVGhlbiBDT01NSVQgUFJFUEFS RUQuCisJIworCSMgRXhwZWN0IGRhdGEgYWZ0ZXIgdGhlIFNBVkVQT0lOVCBpcyBhYm9ydGVkIGxl YXZpbmcgb25seSAzIHJvd3MgKD0gMiBvcmlnaW5hbCArIDEgZnJvbSBzdGVwIDEpLgorCSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0YSBl eGNlcHQgZm9yIDIgcm93cyAoZGVsZXRlIHdpbGwgYmUgcmVwbGljYXRlZCkKKwkkbm9kZV9BLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIp OworCisJIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVAor CSRub2RlX0EtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgIgorCQlCRUdJTjsKKwkJSU5TRVJU IElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5LCAnZm9vYmFyJyk7CisJCVNBVkVQT0lOVCBzcF9p bm5lcjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIg PSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7CisJCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKKwkJUFJF UEFSRSBUUkFOU0FDVElPTiAnb3V0ZXInOworCQkiKTsKKworCSRub2RlX0EtPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9D KTsKKworCSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIHByZXBhcmVkIG9uIHN1YnNjcmli ZXIocykKKwkkcmVzdWx0ID0KKwkgICRub2RlX0ItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwg cXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEInKTsKKwkkcmVz dWx0ID0KKwkgICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50 KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFu c2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyIEMnKTsKKworCSMgMlBDIENPTU1JVAor CSRub2RlX0EtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQ09NTUlUIFBSRVBBUkVEICdvdXRlcic7 Iik7CisKKwkkbm9kZV9BLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOworCSRub2RlX0It PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7CisKKwkjIGNoZWNrIHRoZSB0cmFuc2FjdGlv biBzdGF0ZSBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9CisJICAkbm9kZV9CLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVk X3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24g c3Vic2NyaWJlciBCJyk7CisJJHJlc3VsdCA9CisJICAkbm9kZV9DLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlz KCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgZW5kZWQgb24gc3Vic2NyaWJlciBDJyk7 CisKKwkjIGNoZWNrIGluc2VydHMgYXJlIHZpc2libGUgYXQgc3Vic2NyaWJlcihzKS4KKwkjIEFs bCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hvdWxkIGJlIHJv bGxlZCBiYWNrLgorCSMgKDk5OTksICdmb29iYXInKSBzaG91bGQgYmUgY29tbWl0dGVkLgorCSRy ZXN1bHQgPSAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgx KSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1 bHQgPQorCSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygkcmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFy ZSBwcmVzZW50IG9uIHN1YnNjcmliZXIgQicpOworCSRyZXN1bHQgPSAkbm9kZV9DLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIg PSAnZm9vYmFyJzsiKTsKKwlpcygkcmVzdWx0LCBxcSgxKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBw cmVzZW50IG9uIHN1YnNjcmliZXIgQycpOworCSRyZXN1bHQgPQorCSAgJG5vZGVfQy0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKKwlpcygk cmVzdWx0LCBxcSgzKSwgJ1Jvd3MgY29tbWl0dGVkIGFyZSBwcmVzZW50IG9uIHN1YnNjcmliZXIg QycpOworCisJIyBDbGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9BLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAyOyIpOworCSRub2RlX0Et PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQik7CisJJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZV9DKTsKK30KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBT ZXR1cCBhIGNhc2NhZGUgb2YgcHViL3N1YiBub2Rlcy4KICMgbm9kZV9BIC0+IG5vZGVfQiAtPiBu b2RlX0MKQEAgLTI2MCwxNjAgKzQ2MiwxNSBAQCBpcygkcmVzdWx0LCBxcSgyMSksICdSb3dzIGNv bW1pdHRlZCBhcmUgcHJlc2VudCBvbiBzdWJzY3JpYmVyIEMnKTsKICMgMlBDICsgU1RSRUFNSU5H IFRFU1RTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1teSAkb2xkcGlkX0IgPSAkbm9kZV9B LT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVDVCBwaWQgRlJPTSBwZ19zdGF0X3Jl cGxpY2F0aW9uCi0JV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZV9CJyBBTkQgc3Rh dGUgPSAnc3RyZWFtaW5nJzsiKTsKLW15ICRvbGRwaWRfQyA9ICRub2RlX0ItPnNhZmVfcHNxbCgK LQkncG9zdGdyZXMnLCAiCi0JU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24KLQlX SEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBuYW1lX0MnIEFORCBzdGF0ZSA9ICdzdHJlYW1p bmcnOyIpOwotCi0jIFNldHVwIGxvZ2ljYWwgcmVwbGljYXRpb24gKHN0cmVhbWluZyA9IG9uKQot Ci0kbm9kZV9CLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgIgotCUFMVEVSIFNVQlNDUklQVElP TiB0YXBfc3ViX0IKLQlTRVQgKHN0cmVhbWluZyA9IG9uKTsiKTsKLSRub2RlX0MtPnNhZmVfcHNx bCgKLQkncG9zdGdyZXMnLCAiCi0JQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWJfQwotCVNFVCAo c3RyZWFtaW5nID0gb24pIik7Ci0KLSMgV2FpdCBmb3Igc3Vic2NyaWJlcnMgdG8gZmluaXNoIGlu aXRpYWxpemF0aW9uCi0KLSRub2RlX0EtPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVzJywg IgotCVNFTEVDVCBwaWQgIT0gJG9sZHBpZF9CIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdI RVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQicgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgotKSBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0 YXJ0IjsKLSRub2RlX0ItPnBvbGxfcXVlcnlfdW50aWwoCi0JJ3Bvc3RncmVzJywgIgotCVNFTEVD VCBwaWQgIT0gJG9sZHBpZF9DIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbgotCVdIRVJFIGFwcGxp Y2F0aW9uX25hbWUgPSAnJGFwcG5hbWVfQycgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgotKSBv ciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBhcHBseSB0byByZXN0YXJ0IjsKLQot IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBUZXN0IDJQQyBQUkVQQVJFIC8gQ09N TUlUIFBSRVBBUkVELgotIyAxLiBEYXRhIGlzIHN0cmVhbWVkIGFzIGEgMlBDIHRyYW5zYWN0aW9u LgotIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4KLSMKLSMgRXhwZWN0IGFsbCBkYXRhIGlz IHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlcihzKSBhZnRlciB0aGUgY29tbWl0LgotIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5v dWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotIyBUaGVuIDJQQyBQUkVQQVJFCi0k bm9kZV9BLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5U TyB0ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMs IDUwMDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChh LDIpID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9BLT53YWl0 X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0IpOwotJG5vZGVfQi0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZV9DKTsKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIFRlc3QgdXNpbmcg c3RyZWFtaW5nIG1vZGUgJ29uJworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rl c3Rfc3RyZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBu YW1lX0MsICdvbicpOwogCi0jIGNoZWNrIHRoZSB0cmFuc2FjdGlvbiBzdGF0ZSBpcyBwcmVwYXJl ZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0KLSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRy ZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7 Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJh bnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAot JG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJl cGFyZWRfdGFiJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZV9CKTsK LSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0KLSMgY2hlY2sgdGhhdCB0 cmFuc2FjdGlvbiB3YXMgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIocykKLSRyZXN1bHQgPSAkbm9k ZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopLCBjb3VudChjKSwg Y291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwotaXMoJHJlc3VsdCwgcXEoMzMzNHwzMzM0 fDMzMzQpLAotCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3Jp YmVyIEIsIGFuZCBleHRyYSBjb2x1bW5zIGhhdmUgbG9jYWwgZGVmYXVsdHMnCi0pOwotJHJlc3Vs dCA9ICRub2RlX0MtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNv dW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgz MzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9u IHN1YnNjcmliZXIgQywgYW5kIGV4dHJhIGNvbHVtbnMgaGF2ZSBsb2NhbCBkZWZhdWx0cycKLSk7 Ci0KLSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIo cykKLSRyZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBj b3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0 cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAg JG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXIgQycpOwotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjCi0jIFRlc3QgMlBDIFBSRVBBUkUgd2l0aCBhIG5lc3RlZCBST0xMQkFDSyBUTyBTQVZFUE9J TlQuCi0jIDAuIENsZWFudXAgZnJvbSBwcmV2aW91cyB0ZXN0IGxlYXZpbmcgb25seSAyIHJvd3Mu Ci0jIDEuIEluc2VydCBvbmUgbW9yZSByb3cuCi0jIDIuIFJlY29yZCBhIFNBVkVQT0lOVC4KLSMg My4gRGF0YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCi0jIDQuIERvIHJvbGxiYWNrIHRvIFNBVkVQ T0lOVCBwcmlvciB0byB0aGUgc3RyZWFtZWQgaW5zZXJ0cy4KLSMgNS4gVGhlbiBDT01NSVQgUFJF UEFSRUQuCi0jCi0jIEV4cGVjdCBkYXRhIGFmdGVyIHRoZSBTQVZFUE9JTlQgaXMgYWJvcnRlZCBs ZWF2aW5nIG9ubHkgMyByb3dzICg9IDIgb3JpZ2luYWwgKyAxIGZyb20gc3RlcCAxKS4KLSMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4 Y2VwdCBmb3IgMiByb3dzIChkZWxldGUgd2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfQS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBhID4gMjsiKTsK LQotIyAyUEMgUFJFUEFSRSB3aXRoIGEgbmVzdGVkIFJPTExCQUNLIFRPIFNBVkVQT0lOVAotJG5v ZGVfQS0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsICIKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBWQUxVRVMgKDk5OTksICdmb29iYXInKTsKLQlTQVZFUE9JTlQgc3BfaW5uZXI7Ci0J SU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRl X3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBX SEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykg PSAwOwotCVJPTExCQUNLIFRPIFNBVkVQT0lOVCBzcF9pbm5lcjsKLQlQUkVQQVJFIFRSQU5TQUNU SU9OICdvdXRlcic7Ci0JIik7Ci0KLSRub2RlX0EtPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVf Qik7Ci0kbm9kZV9CLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lX0MpOwotCi0jIGNoZWNrIHRo ZSB0cmFuc2FjdGlvbiBzdGF0ZSBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyKHMpCi0kcmVzdWx0ID0K LSAgJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMg cHJlcGFyZWQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0KLSAgJG5vZGVfQy0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsi KTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2Ny aWJlciBDJyk7Ci0KLSMgMlBDIENPTU1JVAotJG5vZGVfQS0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJDT01NSVQgUFJFUEFSRUQgJ291dGVyJzsiKTsKLQotJG5vZGVfQS0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZV9CKTsKLSRub2RlX0ItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWVfQyk7Ci0K LSMgY2hlY2sgdGhlIHRyYW5zYWN0aW9uIHN0YXRlIGlzIGVuZGVkIG9uIHN1YnNjcmliZXIKLSRy ZXN1bHQgPQotICAkbm9kZV9CLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2Fj dGlvbiBpcyBlbmRlZCBvbiBzdWJzY3JpYmVyIEInKTsKLSRyZXN1bHQgPQotICAkbm9kZV9DLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlvbiBpcyBlbmRlZCBvbiBzdWJz Y3JpYmVyIEMnKTsKLQotIyBjaGVjayBpbnNlcnRzIGFyZSB2aXNpYmxlIGF0IHN1YnNjcmliZXIo cykuCi0jIEFsbCB0aGUgc3RyZWFtZWQgZGF0YSAocHJpb3IgdG8gdGhlIFNBVkVQT0lOVCkgc2hv dWxkIGJlIHJvbGxlZCBiYWNrLgotIyAoOTk5OSwgJ2Zvb2JhcicpIHNob3VsZCBiZSBjb21taXR0 ZWQuCi0kcmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBj b3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAnZm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQs IHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0k cmVzdWx0ID0gJG5vZGVfQi0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikg RlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFxKDMpLCAnUm93cyBjb21taXR0ZWQgYXJl IHByZXNlbnQgb24gc3Vic2NyaWJlciBCJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiIHdoZXJlIGIgPSAn Zm9vYmFyJzsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNl bnQgb24gc3Vic2NyaWJlciBDJyk7Ci0kcmVzdWx0ID0gJG5vZGVfQy0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjsiKTsKLWlzKCRyZXN1bHQsIHFx KDMpLCAnUm93cyBjb21taXR0ZWQgYXJlIHByZXNlbnQgb24gc3Vic2NyaWJlciBDJyk7CisjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWlu ZyBtb2RlICdwYXJhbGxlbCcKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9BLCAkbm9kZV9CLCAkbm9kZV9DLCAkYXBwbmFtZV9CLCAk YXBwbmFtZV9DLCAncGFyYWxsZWwnKTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwogIyBjaGVjayBhbGwgdGhlIGNsZWFudXAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MjNfdHdvcGhhc2Vfc3RyZWFtLnBsCmluZGV4IDliNDU0MTA2YmQuLmVhMWY0NzYxYzMgMTAwNjQ0 Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29waGFzZV9zdHJlYW0ucGwKKysr IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbApAQCAtOCw2 ICs4LDI2NiBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FM OjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpNb3JlOwogCisjIEVuY2Fwc3VsYXRlIGFsbCB0aGUg Y29tbW9uIHRlc3Qgc3RlcHMgd2hpY2ggYXJlIHJlbGF0ZWQgdG8gInN0cmVhbWluZyIKKyMgcGFy YW1ldGVyIHNvIHRoZSBzYW1lIGNvZGUgY2FuIGJlIHJ1biBib3RoIGZvciB0aGUgc3RyZWFtaW5n PW9uIGFuZAorIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCitzdWIgdGVzdF9zdHJlYW1pbmcK K3sKKwlteSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlz X3BhcmFsbGVsKSA9IEBfOworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMg VGVzdCAyUEMgUFJFUEFSRSAvIENPTU1JVCBQUkVQQVJFRC4KKwkjIDEuIERhdGEgaXMgc3RyZWFt ZWQgYXMgYSAyUEMgdHJhbnNhY3Rpb24uCisJIyAyLiBUaGVuIGRvIGNvbW1pdCBwcmVwYXJlZC4K KwkjCisJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUg YWZ0ZXIgdGhlIGNvbW1pdC4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkj IENoZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFy YW1ldGVyIGlzCisJIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBm b3IgdGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKKwkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5 IGJ1bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCisJaWYgKCRpc19wYXJhbGxlbCkKKwl7CisJCSRu b2RlX3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAorCQkJImxvZ19t aW5fbWVzc2FnZXMgPSBkZWJ1ZzEiKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0K KworCSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKKwkjIElu c2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxp bWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxeworCQlC RUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9N IGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERBVEUgdGVzdF90YWIgU0VUIGIg PSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVS RSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFi Jzt9KTsKKworCWlmICgkaXNfcGFyYWxsZWwpCisJeworCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKKwkJJG5vZGVfc3Vi c2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCisJCQkibG9nX21pbl9tZXNz YWdlcyA9IHdhcm5pbmciKTsKKwkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOworCX0KKworCSRu b2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRo YXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCW15ICRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVD VCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEp LCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJh bnNhY3Rpb24gZ2V0cyBjb21taXR0ZWQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9z dGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0 aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCop LCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOworCWlzKCRyZXN1bHQs IHFxKDMzMzR8MzMzNHwzMzM0KSwKKwkJJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0 dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVs dHMnCisJKTsKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygk cmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyJyk7 CisKKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBUZXN0IDJQQyBQUkVQQVJF IC8gUk9MTEJBQ0sgUFJFUEFSRUQuCisJIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8gMiBy b3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCisJIyAyLiBEYXRhIGlzIHN0 cmVhbWVkIHVzaW5nIDJQQy4KKwkjIDMuIERvIHJvbGxiYWNrIHByZXBhcmVkLgorCSMKKwkjIEV4 cGVjdCBkYXRhIHJvbGxzIGJhY2sgbGVhdmluZyBvbmx5IHRoZSBvcmlnaW5hbCAyIHJvd3MuCisJ IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBk YXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJF IGEgPiAyOyIpOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJv d3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3Fs KAorCQkncG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VM RUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwor CQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlE RUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNB Q1RJT04gJ3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9m b3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4g cHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBh cmVkX3hhY3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFy ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCisJ JG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBSRVBB UkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9y X2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFib3J0 ZWQgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgyfDJ8MiksCisJCSdSb3dzIGluc2Vy dGVkIGJ5IDJQQyBhcmUgcm9sbGVkIGJhY2ssIGxlYXZpbmcgb25seSB0aGUgb3JpZ2luYWwgMiBy b3dzJworCSk7CisKKwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlp cygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicp OworCisJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgQ2hlY2sgdGhhdCAyUEMg Q09NTUlUIFBSRVBBUkVEIGlzIGRlY29kZWQgcHJvcGVybHkgb24gY3Jhc2ggcmVzdGFydC4KKwkj IDEuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2 NGtCIGxpbWl0LgorCSMgMi4gVGhlbiBzZXJ2ZXIgY3Jhc2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFu c2FjdGlvbiBpcyBjb21taXR0ZWQuCisJIyAzLiBBZnRlciBzZXJ2ZXJzIGFyZSByZXN0YXJ0ZWQg dGhlIHBlbmRpbmcgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCSMKKwkjIEV4cGVjdCBhbGwg ZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lkZSBhZnRlciB0aGUgY29tbWl0Lgor CSMgTm90ZTogYm90aCBwdWJsaXNoZXIgYW5kIHN1YnNjcmliZXIgZG8gY3Jhc2gvcmVzdGFydC4K KwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkkbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXsKKwkJQkVHSU47CisJCUlOU0VSVCBJTlRPIHRlc3Rf dGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkg cyhpKTsKKwkJVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIpID0g MDsKKwkJREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOworCQlQUkVQQVJF IFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7CisKKwkkbm9kZV9zdWJzY3JpYmVy LT5zdG9wKCdpbW1lZGlhdGUnKTsKKwkkbm9kZV9wdWJsaXNoZXItPnN0b3AoJ2ltbWVkaWF0ZScp OworCisJJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKKwkkbm9kZV9zdWJzY3JpYmVyLT5zdGFydDsK KworCSMgY29tbWl0IHBvc3QgdGhlIHJlc3RhcnQKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCQkiQ09NTUlUIFBSRVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7 CisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hl Y2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQg PSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks CisJCSdSb3dzIGluc2VydGVkIGJ5IDJQQyBoYXZlIGNvbW1pdHRlZCBvbiBzdWJzY3JpYmVyLCBh bmQgZXh0cmEgY29sdW1ucyBjb250YWluIGxvY2FsIGRlZmF1bHRzJworCSk7CisKKwkjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisJIyBEbyBJTlNFUlQgYWZ0ZXIgdGhlIFBSRVBBUkUg YnV0IGJlZm9yZSBST0xMQkFDSyBQUkVQQVJFRC4KKwkjIDEuIFRhYmxlIGlzIGRlbGV0ZWQgYmFj ayB0byAyIHJvd3Mgd2hpY2ggYXJlIHJlcGxpY2F0ZWQgb24gc3Vic2NyaWJlci4KKwkjIDIuIERh dGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgorCSMgMy4gQSBzaW5nbGUgcm93IElOU0VSVCBpcyBk b25lIHdoaWNoIGlzIGFmdGVyIHRoZSBQUkVQQVJFLgorCSMgNC4gVGhlbiBkbyBhIFJPTExCQUNL IFBSRVBBUkVELgorCSMKKwkjIEV4cGVjdCB0aGUgMlBDIGRhdGEgcm9sbHMgYmFjayBsZWF2aW5n IG9ubHkgMyByb3dzIG9uIHRoZSBzdWJzY3JpYmVyCisJIyAodGhlIG9yaWdpbmFsIDIgKyBpbnNl cnRlZCAxKS4KKwkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKwkjIEZpcnN0LCBk ZWxldGUgdGhlIGRhdGEgZXhjZXB0IGZvciAyIHJvd3MgKHdpbGwgYmUgcmVwbGljYXRlZCkKKwkk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiREVMRVRFIEZST00gdGVz dF90YWIgV0hFUkUgYSA+IDI7Iik7CisKKwkjIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0 ZSBlbm91Z2ggcm93cyB0byBleGNlZWQgdGhlIDY0a0IgbGltaXQuCisJJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoCisJCSdwb3N0Z3JlcycsIHF7CisJCUJFR0lOOworCQlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUw MDApIHMoaSk7CisJCVVQREFURSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwy KSA9IDA7CisJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKKwkJUFJF UEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOworCisJJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2Fj dGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCisJJHJlc3VsdCA9ICRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIGNvdW50KCopIEZS T00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlv biBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7CisKKwkjIEluc2VydCBhIGRpZmZlcmVudCBy ZWNvcmQgKG5vdyB3ZSBhcmUgb3V0c2lkZSBvZiB0aGUgMlBDIHRyYW5zYWN0aW9uKQorCSMgTm90 ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cgbG9ja3Mgc28gbWFrZSBzdXJl IHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXRlIHByaW1hcnkga2V5CisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIklOU0VSVCBJTlRPIHRlc3RfdGFiIFZBTFVF UyAoOTk5OTksICdmb29iYXInKSIpOworCisJIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVk CisJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlJPTExCQUNLIFBS RVBBUkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7CisKKwkkbm9kZV9wdWJsaXNoZXItPndhaXRf Zm9yX2NhdGNodXAoJGFwcG5hbWUpOworCisJIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGFi b3J0ZWQgb24gc3Vic2NyaWJlciwKKwkjIGJ1dCB0aGUgZXh0cmEgSU5TRVJUIG91dHNpZGUgb2Yg dGhlIDJQQyBzdGlsbCB3YXMgcmVwbGljYXRlZAorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzfDN8MyksCisJ CSdjaGVjayB0aGUgb3V0c2lkZSBpbnNlcnQgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CisK KwkkcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJT RUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKKwlpcygkcmVzdWx0LCBx cSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQUkVQQVJF IGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgorCSMgMS4gVGFibGUgaXMgZGVsZXRlZCBiYWNr IHRvIDIgcm93cyB3aGljaCBhcmUgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyLgorCSMgMi4gRGF0 YSBpcyBzdHJlYW1lZCB1c2luZyAyUEMuCisJIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRv bmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCisJIyA0LiBUaGVuIGRvIGEgQ09NTUlUIFBS RVBBUkVELgorCSMKKwkjIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRo ZSBzdWJzY3JpYmVyCisJIyAodGhlIDMzMzQgKyBpbnNlcnRlZCAxID0gMzMzNSkuCisJIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisJIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4 Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCisJJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAy OyIpOworCisJIyBUaGVuIGluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8g ZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCQkn cG9zdGdyZXMnLCBxeworCQlCRUdJTjsKKwkJSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOworCQlVUERB VEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOworCQlERUxFVEUg RlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7CisJCVBSRVBBUkUgVFJBTlNBQ1RJT04g J3Rlc3RfcHJlcGFyZWRfdGFiJzt9KTsKKworCSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0 Y2h1cCgkYXBwbmFtZSk7CisKKwkjIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgaW4gcHJlcGFy ZWQgc3RhdGUgb24gc3Vic2NyaWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkJIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hh Y3RzOyIpOworCWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJlcGFyZWQgb24g c3Vic2NyaWJlcicpOworCisJIyBJbnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJl IG91dHNpZGUgb2YgdGhlIDJQQyB0cmFuc2FjdGlvbikKKwkjIE5vdGU6IHRoZSAyUEMgdHJhbnNh Y3Rpb24gc3RpbGwgaG9sZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBm b3IgYSBzZXBhcmFyZSBwcmltYXJ5IGtleQorCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsCisJCSJJTlNFUlQgSU5UTyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFy JykiKTsKKworCSMgMlBDIHRyYW5zYWN0aW9uIGdldHMgY29tbWl0dGVkCisJJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkJIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVw YXJlZF90YWInOyIpOworCisJJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKKworCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2Ny aWJlcgorCSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90 YWIiKTsKKwlpcygkcmVzdWx0LCBxcSgzMzM1fDMzMzV8MzMzNSksCisJCSdSb3dzIGluc2VydGVk IGJ5IDJQQyAoYXMgd2VsbCBhcyBvdXRzaWRlIGluc2VydCkgaGF2ZSBjb21taXR0ZWQgb24gc3Vi c2NyaWJlciwgYW5kIGV4dHJhIGNvbHVtbnMgY29udGFpbiBsb2NhbCBkZWZhdWx0cycKKwkpOwor CisJJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQki U0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7CisJaXMoJHJlc3VsdCwg cXEoMCksICd0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQgb24gc3Vic2NyaWJlcicpOworCisJIyBD bGVhbnVwIHRoZSB0ZXN0IGRhdGEKKwkkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCQkiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7CisJJG5vZGVfcHVi bGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKK30KKwogIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogIyBTZXR1cAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwpAQCAtNDgsNiArMzA4LDEwIEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCiAJIkNSRUFURSBQVUJMSUNBVElPTiB0YXBfcHViIEZPUiBUQUJMRSB0ZXN0X3RhYiIpOwog CiBteSAkYXBwbmFtZSA9ICd0YXBfc3ViJzsKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKKyMgVGVzdCB1c2luZyBzdHJlYW1pbmcgbW9kZSAnb24nCisjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIwogJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3Jl cycsICIKIAlDUkVBVEUgU1VCU0NSSVBUSU9OIHRhcF9zdWIKQEAgLTY0LDIzNiArMzI4LDMwIEBA IG15ICR0d29waGFzZV9xdWVyeSA9CiAkbm9kZV9zdWJzY3JpYmVyLT5wb2xsX3F1ZXJ5X3VudGls KCdwb3N0Z3JlcycsICR0d29waGFzZV9xdWVyeSkKICAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUg d2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBlbmFibGUgdHdvcGhhc2UiOwogCi0jIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIENoZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRv IHN1YnNjcmliZXIKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG15ICRyZXN1bHQg PSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIGNvdW50 KCopLCBjb3VudChjKSwgY291bnQoZCA9IDk5OSkgRlJPTSB0ZXN0X3RhYiIpOwogaXMoJHJlc3Vs dCwgcXEoMnwyfDIpLCAnY2hlY2sgaW5pdGlhbCBkYXRhIHdhcyBjb3BpZWQgdG8gc3Vic2NyaWJl cicpOwogCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIFRlc3QgMlBDIFBSRVBB UkUgLyBDT01NSVQgUFJFUEFSRUQuCi0jIDEuIERhdGEgaXMgc3RyZWFtZWQgYXMgYSAyUEMgdHJh bnNhY3Rpb24uCi0jIDIuIFRoZW4gZG8gY29tbWl0IHByZXBhcmVkLgotIwotIyBFeHBlY3QgYWxs IGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0ZXIgdGhlIGNvbW1pdC4K LSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1 Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDApOwogCi0jIGNoZWNrIHRoYXQg MlBDIGdldHMgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyCi0jIEluc2VydCwgdXBkYXRlIGFuZCBk ZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0LgotJG5vZGVfcHVibGlz aGVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXsKLQlCRUdJTjsKLQlJTlNFUlQgSU5UTyB0 ZXN0X3RhYiBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDMsIDUw MDApIHMoaSk7Ci0JVVBEQVRFIHRlc3RfdGFiIFNFVCBiID0gbWQ1KGIpIFdIRVJFIG1vZChhLDIp ID0gMDsKLQlERUxFVEUgRlJPTSB0ZXN0X3RhYiBXSEVSRSBtb2QoYSwzKSA9IDA7Ci0JUFJFUEFS RSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwotCi0kbm9kZV9wdWJsaXNoZXIt PndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24g aXMgaW4gcHJlcGFyZWQgc3RhdGUgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDEpLCAndHJhbnNhY3Rpb24gaXMgcHJl cGFyZWQgb24gc3Vic2NyaWJlcicpOwotCi0jIDJQQyB0cmFuc2FjdGlvbiBnZXRzIGNvbW1pdHRl ZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQ09NTUlUIFBSRVBB UkVEICd0ZXN0X3ByZXBhcmVkX3RhYic7Iik7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBjb21taXR0 ZWQgb24gc3Vic2NyaWJlcgotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBG Uk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCksCi0JJ1Jvd3Mg aW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBj b2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxlbCcKKyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitteSAkb2xkcGlkID0gJG5vZGVf cHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0 YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0 YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFj dHM7Iik7Ci1pcygkcmVzdWx0LCBxcSgwKSwgJ3RyYW5zYWN0aW9uIGlzIGNvbW1pdHRlZCBvbiBz dWJzY3JpYmVyJyk7Ci0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgVGVzdCAy UEMgUFJFUEFSRSAvIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJh Y2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERh dGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBEbyByb2xsYmFjayBwcmVwYXJlZC4KLSMK LSMgRXhwZWN0IGRhdGEgcm9sbHMgYmFjayBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93 cy4KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRo ZSBkYXRhIGV4Y2VwdCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUg YSA+IDI7Iik7Ci0KLSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dz IHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAot CSdwb3N0Z3JlcycsIHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGks IG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFU RSB0ZXN0X3RhYiBTRVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZS T00gdGVzdF90YWIgV0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rl c3RfcHJlcGFyZWRfdGFiJzt9KTsKIAotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVw KCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0 YXRlIG9uIHN1YnNjcmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKLQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7 Ci1pcygkcmVzdWx0LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmli ZXInKTsKLQotIyAyUEMgdHJhbnNhY3Rpb24gZ2V0cyBhYm9ydGVkCi0kbm9kZV9wdWJsaXNoZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJST0xMQkFDSyBQUkVQQVJFRCAndGVzdF9wcmVwYXJl ZF90YWInOyIpOwotCi0kbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OwotCi0jIGNoZWNrIHRoYXQgdHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyCi0k cmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVD VCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlz KCRyZXN1bHQsIHFxKDJ8MnwyKSwKLQknUm93cyBpbnNlcnRlZCBieSAyUEMgYXJlIHJvbGxlZCBi YWNrLCBsZWF2aW5nIG9ubHkgdGhlIG9yaWdpbmFsIDIgcm93cycpOwotCi0kcmVzdWx0ID0gJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMoJHJlc3VsdCwgcXEoMCksICd0cmFuc2FjdGlv biBpcyBhYm9ydGVkIG9uIHN1YnNjcmliZXInKTsKLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIwotIyBDaGVjayB0aGF0IDJQQyBDT01NSVQgUFJFUEFSRUQgaXMgZGVjb2RlZCBwcm9w ZXJseSBvbiBjcmFzaCByZXN0YXJ0LgotIyAxLiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVu b3VnaCByb3dzIHRvIGV4Y2VlZCB0aGUgNjRrQiBsaW1pdC4KLSMgMi4gVGhlbiBzZXJ2ZXIgY3Jh c2hlcyBiZWZvcmUgdGhlIDJQQyB0cmFuc2FjdGlvbiBpcyBjb21taXR0ZWQuCi0jIDMuIEFmdGVy IHNlcnZlcnMgYXJlIHJlc3RhcnRlZCB0aGUgcGVuZGluZyB0cmFuc2FjdGlvbiBpcyBjb21taXR0 ZWQuCi0jCi0jIEV4cGVjdCBhbGwgZGF0YSBpcyByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIgc2lk ZSBhZnRlciB0aGUgY29tbWl0LgotIyBOb3RlOiBib3RoIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJl ciBkbyBjcmFzaC9yZXN0YXJ0LgotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0k bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxewotCUJFR0lOOwotCUlO U0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVzdF90YWIgU0VUIGIgPSBtZDUoYikgV0hF UkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0g MDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3ByZXBhcmVkX3RhYic7fSk7Ci0KLSRub2Rl X3N1YnNjcmliZXItPnN0b3AoJ2ltbWVkaWF0ZScpOwotJG5vZGVfcHVibGlzaGVyLT5zdG9wKCdp bW1lZGlhdGUnKTsKLQotJG5vZGVfcHVibGlzaGVyLT5zdGFydDsKLSRub2RlX3N1YnNjcmliZXIt PnN0YXJ0OwotCi0jIGNvbW1pdCBwb3N0IHRoZSByZXN0YXJ0Ci0kbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJDT01NSVQgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFi JzsiKTsKLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7Ci0KLSMg Y2hlY2sgaW5zZXJ0cyBhcmUgdmlzaWJsZQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChk ID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7Ci1pcygkcmVzdWx0LCBxcSgzMzM0fDMzMzR8MzMzNCks Ci0JJ1Jvd3MgaW5zZXJ0ZWQgYnkgMlBDIGhhdmUgY29tbWl0dGVkIG9uIHN1YnNjcmliZXIsIGFu ZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVsdHMnCi0pOwotCi0jIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIERvIElOU0VSVCBhZnRlciB0aGUgUFJFUEFSRSBidXQg YmVmb3JlIFJPTExCQUNLIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVkIGJhY2sgdG8g MiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIuIERhdGEgaXMg c3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlzIGRvbmUgd2hp Y2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBST0xMQkFDSyBQUkVQQVJF RC4KLSMKLSMgRXhwZWN0IHRoZSAyUEMgZGF0YSByb2xscyBiYWNrIGxlYXZpbmcgb25seSAzIHJv d3Mgb24gdGhlIHN1YnNjcmliZXIKLSMgKHRoZSBvcmlnaW5hbCAyICsgaW5zZXJ0ZWQgMSkuCi0j IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRmlyc3QsIGRlbGV0ZSB0aGUgZGF0 YSBleGNlcHQgZm9yIDIgcm93cyAod2lsbCBiZSByZXBsaWNhdGVkKQotJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIGEgPiAy OyIpOwotCi0jIFRoZW4gaW5zZXJ0LCB1cGRhdGUgYW5kIGRlbGV0ZSBlbm91Z2ggcm93cyB0byBl eGNlZWQgdGhlIDY0a0IgbGltaXQuCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9z dGdyZXMnLCBxewotCUJFR0lOOwotCUlOU0VSVCBJTlRPIHRlc3RfdGFiIFNFTEVDVCBpLCBtZDUo aTo6dGV4dCkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMywgNTAwMCkgcyhpKTsKLQlVUERBVEUgdGVz dF90YWIgU0VUIGIgPSBtZDUoYikgV0hFUkUgbW9kKGEsMikgPSAwOwotCURFTEVURSBGUk9NIHRl c3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsKLQlQUkVQQVJFIFRSQU5TQUNUSU9OICd0ZXN0X3By ZXBhcmVkX3RhYic7fSk7Ci0KLSRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBw bmFtZSk7Ci0KLSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBpcyBpbiBwcmVwYXJlZCBzdGF0ZSBv biBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSBGUk9NIHBnX3ByZXBhcmVkX3hhY3RzOyIpOwotaXMo JHJlc3VsdCwgcXEoMSksICd0cmFuc2FjdGlvbiBpcyBwcmVwYXJlZCBvbiBzdWJzY3JpYmVyJyk7 Ci0KLSMgSW5zZXJ0IGEgZGlmZmVyZW50IHJlY29yZCAobm93IHdlIGFyZSBvdXRzaWRlIG9mIHRo ZSAyUEMgdHJhbnNhY3Rpb24pCi0jIE5vdGU6IHRoZSAyUEMgdHJhbnNhY3Rpb24gc3RpbGwgaG9s ZHMgcm93IGxvY2tzIHNvIG1ha2Ugc3VyZSB0aGlzIGluc2VydCBpcyBmb3IgYSBzZXBhcmF0ZSBw cmltYXJ5IGtleQotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiSU5T RVJUIElOVE8gdGVzdF90YWIgVkFMVUVTICg5OTk5OSwgJ2Zvb2JhcicpIik7Ci0KLSMgMlBDIHRy YW5zYWN0aW9uIGdldHMgYWJvcnRlZAotJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3Rn cmVzJywKLQkiUk9MTEJBQ0sgUFJFUEFSRUQgJ3Rlc3RfcHJlcGFyZWRfdGFiJzsiKTsKLQotJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKLQotIyBjaGVjayB0aGF0 IHRyYW5zYWN0aW9uIGlzIGFib3J0ZWQgb24gc3Vic2NyaWJlciwKLSMgYnV0IHRoZSBleHRyYSBJ TlNFUlQgb3V0c2lkZSBvZiB0aGUgMlBDIHN0aWxsIHdhcyByZXBsaWNhdGVkCi0kcmVzdWx0ID0g JG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgq KSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQs IHFxKDN8M3wzKSwgJ2NoZWNrIHRoZSBvdXRzaWRlIGluc2VydCB3YXMgY29waWVkIHRvIHN1YnNj cmliZXInKTsKLQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19wcmVwYXJlZF94YWN0czsiKTsKLWlzKCRy ZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgYWJvcnRlZCBvbiBzdWJzY3JpYmVyJyk7Ci0K LSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgRG8gSU5TRVJUIGFmdGVyIHRoZSBQ UkVQQVJFIGJ1dCBiZWZvcmUgQ09NTUlUIFBSRVBBUkVELgotIyAxLiBUYWJsZSBpcyBkZWxldGVk IGJhY2sgdG8gMiByb3dzIHdoaWNoIGFyZSByZXBsaWNhdGVkIG9uIHN1YnNjcmliZXIuCi0jIDIu IERhdGEgaXMgc3RyZWFtZWQgdXNpbmcgMlBDLgotIyAzLiBBIHNpbmdsZSByb3cgSU5TRVJUIGlz IGRvbmUgd2hpY2ggaXMgYWZ0ZXIgdGhlIFBSRVBBUkUuCi0jIDQuIFRoZW4gZG8gYSBDT01NSVQg UFJFUEFSRUQuCi0jCi0jIEV4cGVjdCAyUEMgZGF0YSArIHRoZSBleHRyYSByb3cgYXJlIG9uIHRo ZSBzdWJzY3JpYmVyCi0jICh0aGUgMzMzNCArIGluc2VydGVkIDEgPSAzMzM1KS4KLSMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotIyBGaXJzdCwgZGVsZXRlIHRoZSBkYXRhIGV4Y2Vw dCBmb3IgMiByb3dzICh3aWxsIGJlIHJlcGxpY2F0ZWQpCi0kbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiREVMRVRFIEZST00gdGVzdF90YWIgV0hFUkUgYSA+IDI7Iik7Ci0K LSMgVGhlbiBpbnNlcnQsIHVwZGF0ZSBhbmQgZGVsZXRlIGVub3VnaCByb3dzIHRvIGV4Y2VlZCB0 aGUgNjRrQiBsaW1pdC4KLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAotCSdwb3N0Z3Jlcycs IHF7Ci0JQkVHSU47Ci0JSU5TRVJUIElOVE8gdGVzdF90YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBzKGkpOwotCVVQREFURSB0ZXN0X3RhYiBT RVQgYiA9IG1kNShiKSBXSEVSRSBtb2QoYSwyKSA9IDA7Ci0JREVMRVRFIEZST00gdGVzdF90YWIg V0hFUkUgbW9kKGEsMykgPSAwOwotCVBSRVBBUkUgVFJBTlNBQ1RJT04gJ3Rlc3RfcHJlcGFyZWRf dGFiJzt9KTsKLQotJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsK LQotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGluIHByZXBhcmVkIHN0YXRlIG9uIHN1YnNj cmliZXIKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK LQkiU0VMRUNUIGNvdW50KCopIEZST00gcGdfcHJlcGFyZWRfeGFjdHM7Iik7Ci1pcygkcmVzdWx0 LCBxcSgxKSwgJ3RyYW5zYWN0aW9uIGlzIHByZXBhcmVkIG9uIHN1YnNjcmliZXInKTsKLQotIyBJ bnNlcnQgYSBkaWZmZXJlbnQgcmVjb3JkIChub3cgd2UgYXJlIG91dHNpZGUgb2YgdGhlIDJQQyB0 cmFuc2FjdGlvbikKLSMgTm90ZTogdGhlIDJQQyB0cmFuc2FjdGlvbiBzdGlsbCBob2xkcyByb3cg bG9ja3Mgc28gbWFrZSBzdXJlIHRoaXMgaW5zZXJ0IGlzIGZvciBhIHNlcGFyYXJlIHByaW1hcnkg a2V5Ci0kbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJJTlNFUlQgSU5U TyB0ZXN0X3RhYiBWQUxVRVMgKDk5OTk5LCAnZm9vYmFyJykiKTsKLQotIyAyUEMgdHJhbnNhY3Rp b24gZ2V0cyBjb21taXR0ZWQKLSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs Ci0JIkNPTU1JVCBQUkVQQVJFRCAndGVzdF9wcmVwYXJlZF90YWInOyIpOwotCi0kbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJl YW1pbmcgPSBwYXJhbGxlbCkiKTsKIAotIyBjaGVjayB0aGF0IHRyYW5zYWN0aW9uIGlzIGNvbW1p dHRlZCBvbiBzdWJzY3JpYmVyCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCi0JIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNvdW50KGQgPSA5OTkp IEZST00gdGVzdF90YWIiKTsKLWlzKCRyZXN1bHQsIHFxKDMzMzV8MzMzNXwzMzM1KSwKLQknUm93 cyBpbnNlcnRlZCBieSAyUEMgKGFzIHdlbGwgYXMgb3V0c2lkZSBpbnNlcnQpIGhhdmUgY29tbWl0 dGVkIG9uIHN1YnNjcmliZXIsIGFuZCBleHRyYSBjb2x1bW5zIGNvbnRhaW4gbG9jYWwgZGVmYXVs dHMnCi0pOworJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJ IlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBw bGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgorICAp CisgIG9yIGRpZQorICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3Rh cnQgYWZ0ZXIgY2hhbmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotJHJlc3VsdCA9ICRub2RlX3N1YnNj cmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAotCSJTRUxFQ1QgY291bnQoKikgRlJPTSBwZ19w cmVwYXJlZF94YWN0czsiKTsKLWlzKCRyZXN1bHQsIHFxKDApLCAndHJhbnNhY3Rpb24gaXMgY29t bWl0dGVkIG9uIHN1YnNjcmliZXInKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwg JG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjCiAjIGNoZWNrIGFsbCB0aGUgY2xlYW51cAotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_006_OS3PR01MB6275739E73E8BEC5D13FB6739E6B9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v22-0003-Add-some-checks-before-using-apply-background-wo.patch" Content-Description: v22-0003-Add-some-checks-before-using-apply-background-wo.patch Content-Disposition: attachment; filename="v22-0003-Add-some-checks-before-using-apply-background-wo.patch"; size=55941; creation-date="Tue, 16 Aug 2022 07:29:00 GMT"; modification-date="Tue, 16 Aug 2022 07:33:01 GMT" Content-Transfer-Encoding: base64 RnJvbSA5ODAzM2MxOGY2NWQ5YjA3YzViOTQ3YjAwOWRlMTliYWE1ZGVmNzAxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFdlZCwgMTAgQXVnIDIwMjIgMjA6Mzc6MjIgKzA4MDAKU3ViamVjdDogW1BBVENI IHYyMiAzLzVdIEFkZCBzb21lIGNoZWNrcyBiZWZvcmUgdXNpbmcgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIKIHRvIGFwcGx5IGNoYW5nZXMuCgpzdHJlYW1pbmc9cGFyYWxsZWwgbW9kZSBoYXMgdHdv IHJlcXVpcmVtZW50czoKMSkgVGhlIHVuaXF1ZSBjb2x1bW4gaW4gdGhlIHJlbGF0aW9uIG9uIHRo ZSBzdWJzY3JpYmVyLXNpZGUgc2hvdWxkIGFsc28gYmUgdGhlCnVuaXF1ZSBjb2x1bW4gb24gdGhl IHB1Ymxpc2hlci1zaWRlOwoyKSBUaGVyZSBjYW5ub3QgYmUgYW55IG5vbi1pbW11dGFibGUgZnVu Y3Rpb25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZQpyZXBsaWNhdGVkIHRhYmxlLiBMb29r IGZvciBmdW5jdGlvbnMgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CiogYS4gVHJpZ2dlciBmdW5j dGlvbnMKKiBiLiBDb2x1bW4gZGVmYXVsdCB2YWx1ZSBleHByZXNzaW9ucyBhbmQgZG9tYWluIGNv bnN0cmFpbnRzCiogYy4gQ29uc3RyYWludCBleHByZXNzaW9ucwoqIGQuIEZvcmVpZ24ga2V5cwoK V2l0aG91dCB0aGVzZSByZXN0cmljdGlvbnMsIHRoZSBmb2xsb3dpbmcgc2NlbmFyaW8gbWF5IG9j Y3VyOgpUaGUgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgbG9ja3MgYSByb3cgd2hlbiBwcm9jZXNz aW5nIGEgc3RyZWFtaW5nCnRyYW5zYWN0aW9uLCBhZnRlciB0aGF0IHRoZSBtYWluIGFwcGx5IHdv cmtlciB0cmllcyB0byBsb2NrIHRoZSBzYW1lIHJvdyB3aGVuCnByb2Nlc3NpbmcgYW5vdGhlciBu b24tc3RyZWFtZWQgdHJhbnNhY3Rpb24uIEF0IHRoaXMgdGltZSwgdGhlIG1haW4gYXBwbHkKd29y a2VyIHdhaXRzIGZvciB0aGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGNvbXBsZXRlIGFuZCB0 aGUgbG9jayB0byBiZQpyZWxlYXNlZCwgaXQgd29uJ3Qgc2VuZCBzdWJzZXF1ZW50IGRhdGEgb2Yg dGhlIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byB0aGUKYXBwbHkgYmFja2dyb3VuZCB3b3JrZXI7 IHRoZSBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciB3YWl0cyB0byByZWNlaXZlIHRoZSByZXN0Cm9m IHN0cmVhbWluZyB0cmFuc2FjdGlvbiBhbmQgY2FuJ3QgZmluaXNoIHRoaXMgdHJhbnNhY3Rpb24u IE5vdyBhIGRlYWRsb2NrIGhhcwpvY2N1cnJlZCwgc28gYm90aCB3b3JrZXJzIHdpbGwgd2FpdCBp bmRlZmluaXRlbHkuCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfc3Vic2NyaXB0aW9uLnNn bWwgICAgIHwgICA1ICsKIC4uLi9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYyAg ICAgICB8ICA0NiArKwogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jICAg ICAgIHwgIDg2ICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5j ICAgIHwgMjE0ICsrKysrKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVz eW5jLmMgICB8ICAgMSArCiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j ICAgICAgfCAgMjMgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMgICAgICAg ICAgICB8ICAxNyArCiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscHJvdG8uaCAgICAg ICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHJlbGF0aW9uLmggICAg IHwgIDEzICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5oICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oICAgICAgICAgICAgICAgICAgfCAg IDIgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCAgICAgICAgIHwgIDMz ICstCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMTZfc3RyZWFtX3N1YnhhY3QucGwgfCAgMzMg Ky0KIC4uLi9zdWJzY3JpcHRpb24vdC8wMjJfdHdvcGhhc2VfY2FzY2FkZS5wbCAgICB8ICAgOCAr CiAuLi4vc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbCAgICAgfCAgMzMgKy0K IC4uLi9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsICAgICB8IDU5OCArKysr KysrKysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAg ICAgICB8ICAgMSArCiAxNyBmaWxlcyBjaGFuZ2VkLCAxMDM3IGluc2VydGlvbnMoKyksIDc4IGRl bGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAz Ml9zdHJlYW1pbmdfYXBwbHkucGwKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0 ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlv bi5zZ21sCmluZGV4IGVjZTI3YzVhMzQuLjU2YmNiZjQzZTEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYv Y3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yNDAsNiArMjQwLDExIEBAIENSRUFURSBTVUJT Q1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlwdGlvbl9uYW1l PC9yZXBsYWNlYWJsCiAgICAgICAgICAgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLiBOb3RlIHRo YXQgaWYgYW4gZXJyb3IgaGFwcGVucyB3aGVuCiAgICAgICAgICAgYXBwbHlpbmcgY2hhbmdlcyBp biBhIGJhY2tncm91bmQgd29ya2VyLCB0aGUgZmluaXNoIExTTiBvZiB0aGUKICAgICAgICAgICBy ZW1vdGUgdHJhbnNhY3Rpb24gbWlnaHQgbm90IGJlIHJlcG9ydGVkIGluIHRoZSBzZXJ2ZXIgbG9n LgorICAgICAgICAgIFRoZXJlIGFyZSB0d28gcHJlcmVxdWlzaXRlcyBmb3IgdXNpbmcgPGxpdGVy YWw+cGFyYWxsZWw8L2xpdGVyYWw+CisgICAgICAgICAgbW9kZTogMSkgdGhlIHVuaXF1ZSBjb2x1 bW4gaW4gdGhlIHRhYmxlIG9uIHRoZSBzdWJzY3JpYmVyLXNpZGUgbXVzdAorICAgICAgICAgIGFs c28gYmUgdGhlIHVuaXF1ZSBjb2x1bW4gb24gdGhlIHB1Ymxpc2hlci1zaWRlOyAyKSB0aGVyZSBj YW5ub3QgYmUKKyAgICAgICAgICBhbnkgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMgdXNlZCBieSB0 aGUgc3Vic2NyaWJlci1zaWRlIHJlcGxpY2F0ZWQKKyAgICAgICAgICB0YWJsZS4KICAgICAgICAg IDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5j IGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd29ya2VyLmMKaW5kZXgg ZDViNjFjY2Q1Mi4uMzcxNDA4ZDQ4NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9hcHBseWJnd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9hcHBseWJnd29ya2VyLmMKQEAgLTc2MiwzICs3NjIsNDkgQEAgYXBwbHlfYmd3b3Jr ZXJfc2F2ZXBvaW50X25hbWUoT2lkIHN1Ym9pZCwgVHJhbnNhY3Rpb25JZCB4aWQsCiB7CiAJc25w cmludGYoc3BuYW1lLCBzenNwLCAicGdfc3BfJXVfJXUiLCBzdWJvaWQsIHhpZCk7CiB9CisKKy8q CisgKiBDaGVjayBpZiBjaGFuZ2VzIG9uIHRoaXMgcmVsYXRpb24gY2FuIGJlIGFwcGxpZWQgdXNp bmcgYW4gYXBwbHkgYmFja2dyb3VuZAorICogd29ya2VyLgorICoKKyAqIEFsdGhvdWdoIHRoZSBj b21taXQgb3JkZXIgaXMgbWFpbnRhaW5lZCBieSBvbmx5IGFsbG93aW5nIG9uZSBwcm9jZXNzIHRv CisgKiBjb21taXQgYXQgYSB0aW1lLCB0aGUgYWNjZXNzIG9yZGVyIHRvIHRoZSByZWxhdGlvbiBo YXMgY2hhbmdlZC4gVGhpcyBjb3VsZAorICogY2F1c2UgdW5leHBlY3RlZCBwcm9ibGVtcyBpZiB0 aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcmVwbGljYXRlZCB0YWJsZSBpcworICogaW5jb25zaXN0 ZW50IHdpdGggdGhlIHB1Ymxpc2hlci1zaWRlIG9yIGNvbnRhaW5zIG5vbi1pbW11dGFibGUgZnVu Y3Rpb25zCisgKiB3aGVuIGFwcGx5aW5nIHRyYW5zYWN0aW9ucyB1c2luZyBhbiBhcHBseSBiYWNr Z3JvdW5kIHdvcmtlci4KKyAqLwordm9pZAorYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2so TG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyZWwpCit7CisJLyoKKwkgKiBTa2lwIGNoZWNrIGlmIG5v dCB1c2luZyBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMuCisJICoKKwkgKiBJZiBhbnkgd29ya2Vy IGlzIGhhbmRsaW5nIHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIHRoaXMgY2hlY2sgbmVlZHMg dG8KKwkgKiBiZSBwZXJmb3JtZWQgbm90IG9ubHkgdXNpbmcgdGhlIGFwcGx5IGJhY2tncm91bmQg d29ya2VyLCBidXQgYWxzbyBpbiB0aGUKKwkgKiBtYWluIGFwcGx5IHdvcmtlci4gVGhpcyBpcyBi ZWNhdXNlIHdpdGhvdXQgdGhlc2UgcmVzdHJpY3Rpb25zLCBtYWluCisJICogYXBwbHkgd29ya2Vy IG1heSBibG9jayBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciwgd2hpY2ggd2lsbCBjYXVzZQorCSAq IGluZmluaXRlIHdhaXRzLgorCSAqLworCWlmICghYW1fYXBwbHlfYmd3b3JrZXIoKSAmJgorCQko bGlzdF9sZW5ndGgoQXBwbHlCZ3dvcmtlcnNGcmVlTGlzdCkgPT0gbGlzdF9sZW5ndGgoQXBwbHlC Z3dvcmtlcnNMaXN0KSkpCisJCXJldHVybjsKKworCS8qCisJICogUGFydGl0aW9uIHRhYmxlIGNo ZWNrcyBhcmUgZG9uZSBsYXRlciBpbiBmdW5jdGlvbgorCSAqIGFwcGx5X2hhbmRsZV90dXBsZV9y b3V0aW5nLgorCSAqLworCWlmIChyZWwtPmxvY2FscmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVM S0lORF9QQVJUSVRJT05FRF9UQUJMRSkKKwkJcmV0dXJuOworCisJaWYgKHJlbC0+cGFyYWxsZWxf YXBwbHkgIT0gUEFSQUxMRUxfQVBQTFlfU0FGRSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJy Y29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkgZXJy bXNnKCJjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiBcIiVzLiVzXCIgdXNpbmcgIgor CQkJCQkJInN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsIiwKKwkJCQkJ CXJlbC0+cmVtb3RlcmVsLm5zcG5hbWUsIHJlbC0+cmVtb3RlcmVsLnJlbG5hbWUpLAorCQkJCSBl cnJkZXRhaWwoIlRoZSB1bmlxdWUgY29sdW1uIG9uIHN1YnNjcmliZXIgaXMgbm90IHRoZSB1bmlx dWUgIgorCQkJCQkJICAgImNvbHVtbiBvbiBwdWJsaXNoZXIgb3IgdGhlcmUgaXMgYXQgbGVhc3Qg b25lICIKKwkJCQkJCSAgICJub24taW1tdXRhYmxlIGZ1bmN0aW9uLiIpLAorCQkJCSBlcnJoaW50 KCJQbGVhc2UgY2hhbmdlIHRvIHVzZSBzdWJzY3JpcHRpb24gcGFyYW1ldGVyICIKKwkJCQkJCSAi c3RyZWFtaW5nPW9uLiIpKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL3Byb3RvLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3Rv LmMKaW5kZXggNDdiZDgxMWZiNy4uNzNiMjgwNzkzOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L2xvZ2ljYWwvcHJvdG8uYwpAQCAtMjMsNyArMjMsOCBAQAogLyoKICAqIFByb3RvY29sIG1lc3Nh Z2UgZmxhZ3MuCiAgKi8KLSNkZWZpbmUgTE9HSUNBTFJFUF9JU19SRVBMSUNBX0lERU5USVRZIDEK KyNkZWZpbmUgQVRUUl9JU19SRVBMSUNBX0lERU5USVRZCSgxIDw8IDApCisjZGVmaW5lIEFUVFJf SVNfVU5JUVVFCQkJCSgxIDw8IDEpCiAKICNkZWZpbmUgTUVTU0FHRV9UUkFOU0FDVElPTkFMICgx PDwwKQogI2RlZmluZSBUUlVOQ0FURV9DQVNDQURFCQkoMTw8MCkKQEAgLTQwLDYgKzQxLDY2IEBA IHN0YXRpYyB2b2lkIGxvZ2ljYWxyZXBfcmVhZF90dXBsZShTdHJpbmdJbmZvIGluLCBMb2dpY2Fs UmVwVHVwbGVEYXRhICp0dXBsZSk7CiBzdGF0aWMgdm9pZCBsb2dpY2FscmVwX3dyaXRlX25hbWVz cGFjZShTdHJpbmdJbmZvIG91dCwgT2lkIG5zcGlkKTsKIHN0YXRpYyBjb25zdCBjaGFyICpsb2dp Y2FscmVwX3JlYWRfbmFtZXNwYWNlKFN0cmluZ0luZm8gaW4pOwogCisvKgorICogUmVsYXRpb25H ZXRVbmlxdWVLZXlCaXRtYXAgLS0gZ2V0IGEgYml0bWFwIG9mIHVuaXF1ZSBhdHRyaWJ1dGUgbnVt YmVycworICoKKyAqIFRoaXMgaXMgc2ltaWxhciB0byBSZWxhdGlvbkdldElkZW50aXR5S2V5Qml0 bWFwKCksIGJ1dCByZXR1cm5zIGEgYml0bWFwIG9mCisgKiBpbmRleCBhdHRyaWJ1dGUgbnVtYmVy cyBmb3IgYWxsIHVuaXF1ZSBpbmRleGVzLgorICovCitzdGF0aWMgQml0bWFwc2V0ICoKK1JlbGF0 aW9uR2V0VW5pcXVlS2V5Qml0bWFwKFJlbGF0aW9uIHJlbCkKK3sKKwlMaXN0CQkgICAqaW5kZXhv aWRsaXN0ID0gTklMOworCUxpc3RDZWxsCSAgICppbmRleG9pZHNjYW47CisJQml0bWFwc2V0CSAg ICphdHR1bmlxdWUgPSBOVUxMOworCisJaWYgKCFyZWwtPnJkX3JlbC0+cmVsaGFzaW5kZXgpCisJ CXJldHVybiBOVUxMOworCisJaW5kZXhvaWRsaXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVs KTsKKworCWZvcmVhY2goaW5kZXhvaWRzY2FuLCBpbmRleG9pZGxpc3QpCisJeworCQlPaWQJCQlp bmRleG9pZCA9IGxmaXJzdF9vaWQoaW5kZXhvaWRzY2FuKTsKKwkJUmVsYXRpb24JaW5kZXhSZWw7 CisJCWludAkJCWk7CisKKwkJLyogTG9vayB1cCB0aGUgZGVzY3JpcHRpb24gZm9yIGluZGV4ICov CisJCWluZGV4UmVsID0gUmVsYXRpb25JZEdldFJlbGF0aW9uKGluZGV4b2lkKTsKKworCQlpZiAo IVJlbGF0aW9uSXNWYWxpZChpbmRleFJlbCkpCisJCQllbG9nKEVSUk9SLCAiY291bGQgbm90IG9w ZW4gcmVsYXRpb24gd2l0aCBPSUQgJXUiLCBpbmRleG9pZCk7CisKKwkJaWYgKCFpbmRleFJlbC0+ cmRfaW5kZXgtPmluZGlzdW5pcXVlKQorCQl7CisJCQlSZWxhdGlvbkNsb3NlKGluZGV4UmVsKTsK KwkJCWNvbnRpbnVlOworCQl9CisKKwkJLyogQWRkIHJlZmVyZW5jZWQgYXR0cmlidXRlcyB0byBh dHR1bmlxdWUgKi8KKwkJZm9yIChpID0gMDsgaSA8IGluZGV4UmVsLT5yZF9pbmRleC0+aW5kbmF0 dHM7IGkrKykKKwkJeworCQkJaW50IGF0dHJudW0gPSBpbmRleFJlbC0+cmRfaW5kZXgtPmluZGtl eS52YWx1ZXNbaV07CisKKwkJCS8qCisJCQkgKiBXZSBkb24ndCBpbmNsdWRlIG5vbi1rZXkgY29s dW1ucyBpbnRvIGF0dHVuaXF1ZQorCQkJICogYml0bWFwcy4gU2VlIFJlbGF0aW9uR2V0SW5kZXhB dHRyQml0bWFwLgorCQkJICovCisJCQlpZiAoYXR0cm51bSAhPSAwKQorCQkJeworCQkJCWlmIChp IDwgaW5kZXhSZWwtPnJkX2luZGV4LT5pbmRua2V5YXR0cyAmJgorCQkJCQkhYm1zX2lzX21lbWJl cihhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlciwgYXR0dW5pcXVl KSkKKwkJCQkJYXR0dW5pcXVlID0gYm1zX2FkZF9tZW1iZXIoYXR0dW5pcXVlLAorCQkJCQkJCQkJ CQkgICBhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0dHJpYnV0ZU51bWJlcik7CisJCQl9 CisJCX0KKwkJUmVsYXRpb25DbG9zZShpbmRleFJlbCk7CisJfQorCWxpc3RfZnJlZShpbmRleG9p ZGxpc3QpOworCisJcmV0dXJuIGF0dHVuaXF1ZTsKK30KKwogLyoKICAqIENoZWNrIGlmIGEgY29s dW1uIGlzIGNvdmVyZWQgYnkgYSBjb2x1bW4gbGlzdC4KICAqCkBAIC05MzMsNyArOTk0LDggQEAg bG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVsLCBCaXRt YXBzZXQgKmNvbHVtbnMpCiAJVHVwbGVEZXNjCWRlc2M7CiAJaW50CQkJaTsKIAl1aW50MTYJCW5s aXZlYXR0cyA9IDA7Ci0JQml0bWFwc2V0ICAqaWRhdHRycyA9IE5VTEw7CisJQml0bWFwc2V0ICAq aWRhdHRycyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAlib29sCQlyZXBsaWRl bnRmdWxsOwogCiAJZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKQEAgLTk1OCw2ICsxMDIw LDkgQEAgbG9naWNhbHJlcF93cml0ZV9hdHRycyhTdHJpbmdJbmZvIG91dCwgUmVsYXRpb24gcmVs LCBCaXRtYXBzZXQgKmNvbHVtbnMpCiAJaWYgKCFyZXBsaWRlbnRmdWxsKQogCQlpZGF0dHJzID0g UmVsYXRpb25HZXRJZGVudGl0eUtleUJpdG1hcChyZWwpOwogCisJLyogZmV0Y2ggYml0bWFwIG9m IFVOSVFVRSBhdHRyaWJ1dGVzICovCisJYXR0dW5pcXVlID0gUmVsYXRpb25HZXRVbmlxdWVLZXlC aXRtYXAocmVsKTsKKwogCS8qIHNlbmQgdGhlIGF0dHJpYnV0ZXMgKi8KIAlmb3IgKGkgPSAwOyBp IDwgZGVzYy0+bmF0dHM7IGkrKykKIAl7CkBAIC05NzQsNyArMTAzOSwxMSBAQCBsb2dpY2FscmVw X3dyaXRlX2F0dHJzKFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqY29s dW1ucykKIAkJaWYgKHJlcGxpZGVudGZ1bGwgfHwKIAkJCWJtc19pc19tZW1iZXIoYXR0LT5hdHRu dW0gLSBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyLAogCQkJCQkJICBpZGF0dHJz KSkKLQkJCWZsYWdzIHw9IExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElUWTsKKwkJCWZsYWdz IHw9IEFUVFJfSVNfUkVQTElDQV9JREVOVElUWTsKKworCQlpZiAoYm1zX2lzX21lbWJlcihhdHQt PmF0dG51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIsCisJCQkJCQkgIGF0 dHVuaXF1ZSkpCisJCQlmbGFncyB8PSBBVFRSX0lTX1VOSVFVRTsKIAogCQlwcV9zZW5kYnl0ZShv dXQsIGZsYWdzKTsKIApAQCAtOTg5LDYgKzEwNTgsNyBAQCBsb2dpY2FscmVwX3dyaXRlX2F0dHJz KFN0cmluZ0luZm8gb3V0LCBSZWxhdGlvbiByZWwsIEJpdG1hcHNldCAqY29sdW1ucykKIAl9CiAK IAlibXNfZnJlZShpZGF0dHJzKTsKKwlibXNfZnJlZShhdHR1bmlxdWUpOwogfQogCiAvKgpAQCAt MTAwMSw3ICsxMDcxLDggQEAgbG9naWNhbHJlcF9yZWFkX2F0dHJzKFN0cmluZ0luZm8gaW4sIExv Z2ljYWxSZXBSZWxhdGlvbiAqcmVsKQogCWludAkJCW5hdHRzOwogCWNoYXIJICAqKmF0dG5hbWVz OwogCU9pZAkJICAgKmF0dHR5cHM7Ci0JQml0bWFwc2V0ICAqYXR0a2V5cyA9IE5VTEw7CisJQml0 bWFwc2V0ICAqYXR0a2V5cyA9IE5VTEwsCisJCQkgICAqYXR0dW5pcXVlID0gTlVMTDsKIAogCW5h dHRzID0gcHFfZ2V0bXNnaW50KGluLCAyKTsKIAlhdHRuYW1lcyA9IHBhbGxvYyhuYXR0cyAqIHNp emVvZihjaGFyICopKTsKQEAgLTEwMTQsOSArMTA4NSwxMyBAQCBsb2dpY2FscmVwX3JlYWRfYXR0 cnMoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFJlbGF0aW9uICpyZWwpCiAKIAkJLyogQ2hlY2sg Zm9yIHJlcGxpY2EgaWRlbnRpdHkgY29sdW1uICovCiAJCWZsYWdzID0gcHFfZ2V0bXNnYnl0ZShp bik7Ci0JCWlmIChmbGFncyAmIExPR0lDQUxSRVBfSVNfUkVQTElDQV9JREVOVElUWSkKKwkJaWYg KGZsYWdzICYgQVRUUl9JU19SRVBMSUNBX0lERU5USVRZKQogCQkJYXR0a2V5cyA9IGJtc19hZGRf bWVtYmVyKGF0dGtleXMsIGkpOwogCisJCS8qIENoZWNrIGZvciB1bmlxdWUgY29sdW1uICovCisJ CWlmIChmbGFncyAmIEFUVFJfSVNfVU5JUVVFKQorCQkJYXR0dW5pcXVlID0gYm1zX2FkZF9tZW1i ZXIoYXR0dW5pcXVlLCBpKTsKKwogCQkvKiBhdHRyaWJ1dGUgbmFtZSAqLwogCQlhdHRuYW1lc1tp XSA9IHBzdHJkdXAocHFfZ2V0bXNnc3RyaW5nKGluKSk7CiAKQEAgLTEwMzAsNiArMTEwNSw3IEBA IGxvZ2ljYWxyZXBfcmVhZF9hdHRycyhTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVwUmVsYXRpb24g KnJlbCkKIAlyZWwtPmF0dG5hbWVzID0gYXR0bmFtZXM7CiAJcmVsLT5hdHR0eXBzID0gYXR0dHlw czsKIAlyZWwtPmF0dGtleXMgPSBhdHRrZXlzOworCXJlbC0+YXR0dW5pcXVlID0gYXR0dW5pcXVl OwogCXJlbC0+bmF0dHMgPSBuYXR0czsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9yZWxhdGlvbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9yZWxhdGlvbi5jCmluZGV4IGU5ODkwNDc2ODEuLjIxNTkyMDc3YmIgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvcmVsYXRpb24uYworKysgYi9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3JlbGF0aW9uLmMKQEAgLTE5LDEyICsxOSwxOSBAQAog CiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2Uu aCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3N1 YnNjcmlwdGlvbl9yZWwuaCIKKyNpbmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVk ZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rlcy9tYWtlZnVuY3MuaCIKKyNp bmNsdWRlICJvcHRpbWl6ZXIvb3B0aW1pemVyLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vbG9n aWNhbHJlbGF0aW9uLmgiCiAjaW5jbHVkZSAicmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmgi CisjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgogI2luY2x1ZGUgInV0aWxzL2lu dmFsLmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCisjaW5jbHVkZSAidXRpbHMvc3lz Y2FjaGUuaCIKKyNpbmNsdWRlICJ1dGlscy90eXBjYWNoZS5oIgogCiAKIHN0YXRpYyBNZW1vcnlD b250ZXh0IExvZ2ljYWxSZXBSZWxNYXBDb250ZXh0ID0gTlVMTDsKQEAgLTkxLDYgKzk4LDI2IEBA IGxvZ2ljYWxyZXBfcmVsbWFwX2ludmFsaWRhdGVfY2IoRGF0dW0gYXJnLCBPaWQgcmVsb2lkKQog CX0KIH0KIAorLyoKKyAqIFJlbGNhY2hlIGludmFsaWRhdGlvbiBjYWxsYmFjayB0byByZXNldCBw YXJhbGxlbF9hcHBseSBmbGFnLgorICovCitzdGF0aWMgdm9pZAorbG9naWNhbHJlcF9yZWxtYXBf cmVzZXRfcGFyYWxsZWxfY2IoRGF0dW0gYXJnLCBpbnQgY2FjaGVpZCwgdWludDMyIGhhc2h2YWx1 ZSkKK3sKKwlIQVNIX1NFUV9TVEFUVVMgaGFzaF9zZXE7CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5 ICplbnRyeTsKKworCWlmIChMb2dpY2FsUmVwUmVsTWFwID09IE5VTEwpCisJCXJldHVybjsKKwor CWhhc2hfc2VxX2luaXQoJmhhc2hfc2VxLCBMb2dpY2FsUmVwUmVsTWFwKTsKKwl3aGlsZSAoKGVu dHJ5ID0gaGFzaF9zZXFfc2VhcmNoKCZoYXNoX3NlcSkpICE9IE5VTEwpCisJeworCQllbnRyeS0+ cGFyYWxsZWxfYXBwbHkgPSBQQVJBTExFTF9BUFBMWV9VTktOT1dOOworCQllbnRyeS0+bG9jYWxy ZWx2YWxpZCA9IGZhbHNlOworCX0KK30KKwogLyoKICAqIEluaXRpYWxpemUgdGhlIHJlbGF0aW9u IG1hcCBjYWNoZS4KICAqLwpAQCAtMTE2LDYgKzE0Myw5IEBAIGxvZ2ljYWxyZXBfcmVsbWFwX2lu aXQodm9pZCkKIAkvKiBXYXRjaCBmb3IgaW52YWxpZGF0aW9uIGV2ZW50cy4gKi8KIAlDYWNoZVJl Z2lzdGVyUmVsY2FjaGVDYWxsYmFjayhsb2dpY2FscmVwX3JlbG1hcF9pbnZhbGlkYXRlX2NiLAog CQkJCQkJCQkgIChEYXR1bSkgMCk7CisJQ2FjaGVSZWdpc3RlclN5c2NhY2hlQ2FsbGJhY2soUFJP Q09JRCwKKwkJCQkJCQkJICBsb2dpY2FscmVwX3JlbG1hcF9yZXNldF9wYXJhbGxlbF9jYiwKKwkJ CQkJCQkJICAoRGF0dW0pIDApOwogfQogCiAvKgpAQCAtMTQyLDYgKzE3Miw3IEBAIGxvZ2ljYWxy ZXBfcmVsbWFwX2ZyZWVfZW50cnkoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKIAkJcGZy ZWUocmVtb3RlcmVsLT5hdHR0eXBzKTsKIAl9CiAJYm1zX2ZyZWUocmVtb3RlcmVsLT5hdHRrZXlz KTsKKwlibXNfZnJlZShyZW1vdGVyZWwtPmF0dHVuaXF1ZSk7CiAKIAlpZiAoZW50cnktPmF0dHJt YXApCiAJCWZyZWVfYXR0cm1hcChlbnRyeS0+YXR0cm1hcCk7CkBAIC0xOTAsNiArMjIxLDcgQEAg bG9naWNhbHJlcF9yZWxtYXBfdXBkYXRlKExvZ2ljYWxSZXBSZWxhdGlvbiAqcmVtb3RlcmVsKQog CX0KIAllbnRyeS0+cmVtb3RlcmVsLnJlcGxpZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlkZW50Owog CWVudHJ5LT5yZW1vdGVyZWwuYXR0a2V5cyA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0a2V5cyk7 CisJZW50cnktPnJlbW90ZXJlbC5hdHR1bmlxdWUgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dHVu aXF1ZSk7CiAJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN0eCk7CiB9CiAKQEAgLTMxMCw2ICsz NDIsMTgxIEBAIGxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKExvZ2ljYWxSZXBSZWxNYXBF bnRyeSAqZW50cnkpCiAJfQogfQogCisvKgorICogQ2hlY2sgaWYgY2hhbmdlcyBvbiBvbmUgcmVs YXRpb24gY2FuIGJlIGFwcGxpZWQgdXNpbmcgYW4gYXBwbHkgYmFja2dyb3VuZAorICogd29ya2Vy IGFuZCBhc3NpZ24gdGhlICdwYXJhbGxlbF9hcHBseScgZmxhZy4KKyAqCisgKiBUaGVyZSBhcmUg dHdvIHJlcXVpcmVtZW50cyBmb3IgYXBwbHlpbmcgY2hhbmdlcyB1c2luZyBhbiBhcHBseSBiYWNr Z3JvdW5kCisgKiB3b3JrZXI6IDEpIHRoZSB1bmlxdWUgY29sdW1uIGluIHRoZSB0YWJsZSBvbiB0 aGUgc3Vic2NyaWJlci1zaWRlIHNob3VsZCBhbHNvCisgKiBiZSB0aGUgdW5pcXVlIGNvbHVtbiBv biB0aGUgcHVibGlzaGVyLXNpZGU7IDIpIHRoZXJlIGNhbm5vdCBiZSBhbnkKKyAqIG5vbi1pbW11 dGFibGUgZnVuY3Rpb25zIHVzZWQgYnkgdGhlIHN1YnNjcmliZXItc2lkZSByZXBsaWNhdGVkIHRh YmxlLgorICoKKyAqIFdpdGhvdXQgdGhlc2UgcmVzdHJpY3Rpb25zLCB0aGUgZm9sbG93aW5nIHNj ZW5hcmlvIG1heSBvY2N1cjogVGhlIGFwcGx5CisgKiBiYWNrZ3JvdW5kIHdvcmtlciBsb2NrcyBh IHJvdyB3aGVuIHByb2Nlc3NpbmcgYSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24sIGFmdGVyCisgKiB0 aGF0IHRoZSBtYWluIGFwcGx5IHdvcmtlciB0cmllcyB0byBsb2NrIHRoZSBzYW1lIHJvdyB3aGVu IHByb2Nlc3NpbmcKKyAqIGFub3RoZXIgbm9uLXN0cmVhbWVkIHRyYW5zYWN0aW9uLiBBdCB0aGlz IHRpbWUsIHRoZSBtYWluIGFwcGx5IHdvcmtlciB3YWl0cworICogZm9yIHRoZSBzdHJlYW1pbmcg dHJhbnNhY3Rpb24gdG8gY29tcGxldGUgYW5kIHRoZSBsb2NrIHRvIGJlIHJlbGVhc2VkLCBpdAor ICogd29uJ3Qgc2VuZCBzdWJzZXF1ZW50IGRhdGEgb2YgdGhlIHN0cmVhbWluZyB0cmFuc2FjdGlv biB0byB0aGUgYXBwbHkKKyAqIGJhY2tncm91bmQgd29ya2VyOyB0aGUgYXBwbHkgYmFja2dyb3Vu ZCB3b3JrZXIgd2FpdHMgdG8gcmVjZWl2ZSB0aGUgcmVzdCBvZgorICogc3RyZWFtaW5nIHRyYW5z YWN0aW9uIGFuZCBjYW4ndCBmaW5pc2ggdGhpcyB0cmFuc2FjdGlvbi4gTm93IGEgZGVhZGxvY2sg aGFzCisgKiBvY2N1cnJlZCwgc28gYm90aCB3b3JrZXJzIHdpbGwgd2FpdCBpbmRlZmluaXRlbHku CisgKgorICogV2UganVzdCBtYXJrIHRoZSByZWxhdGlvbiBlbnRyeSBhcyAnUEFSQUxMRUxfQVBQ TFlfVU5TQUZFJyBoZXJlIGlmIGNoYW5nZXMKKyAqIG9uIG9uZSByZWxhdGlvbiBjYW4gbm90IGJl IGFwcGxpZWQgdXNpbmcgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIgYW5kCisgKiBsZWF2ZSBp dCB0byBhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjaygpIHRvIHRocm93IHRoZSBhY3R1YWwg ZXJyb3IgaWYKKyAqIG5lZWRlZC4KKyAqLworc3RhdGljIHZvaWQKK2xvZ2ljYWxyZXBfcmVsX21h cmtfcGFyYWxsZWxfYXBwbHkoTG9naWNhbFJlcFJlbE1hcEVudHJ5ICplbnRyeSkKK3sKKwlCaXRt YXBzZXQgICAqdWtleTsKKwlpbnQJCQlpOworCVR1cGxlRGVzYwl0dXBkZXNjOworCWludAkJCWF0 dG51bTsKKwlMaXN0CSAgICpma2V5cyA9IE5JTDsKKworCS8qIEZhc3QgcGF0aCBpZiAncGFyYWxs ZWxfYXBwbHknIGZsYWcgaXMgYWxyZWFkeSBrbm93bi4gKi8KKwlpZiAoZW50cnktPnBhcmFsbGVs X2FwcGx5ICE9IFBBUkFMTEVMX0FQUExZX1VOS05PV04pCisJCXJldHVybjsKKworCS8qIEluaXRp YWxpemUgdGhlIGZsYWcuICovCisJZW50cnktPnBhcmFsbGVsX2FwcGx5ID0gUEFSQUxMRUxfQVBQ TFlfU0FGRTsKKworCS8qCisJICogRmlyc3QsIGNoZWNrIGlmIHRoZSB1bmlxdWUgY29sdW1uIGlu IHRoZSByZWxhdGlvbiBvbiB0aGUgc3Vic2NyaWJlci1zaWRlCisJICogaXMgYWxzbyB0aGUgdW5p cXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGUuCisJICovCisJdWtleSA9IFJlbGF0aW9u R2V0SW5kZXhBdHRyQml0bWFwKGVudHJ5LT5sb2NhbHJlbCwKKwkJCQkJCQkJCSAgSU5ERVhfQVRU Ul9CSVRNQVBfS0VZKTsKKworCWlmICh1a2V5KQorCXsKKwkJaSA9IC0xOworCQl3aGlsZSAoKGkg PSBibXNfbmV4dF9tZW1iZXIodWtleSwgaSkpID49IDApCisJCXsKKwkJCWF0dG51bSA9IEF0dHJO dW1iZXJHZXRBdHRyT2Zmc2V0KGkgKyBGaXJzdExvd0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVy KTsKKworCQkJaWYgKGVudHJ5LT5hdHRybWFwLT5hdHRudW1zW2F0dG51bV0gPCAwIHx8CisJCQkJ IWJtc19pc19tZW1iZXIoZW50cnktPmF0dHJtYXAtPmF0dG51bXNbYXR0bnVtXSwgZW50cnktPnJl bW90ZXJlbC5hdHR1bmlxdWUpKQorCQkJeworCQkJCWVudHJ5LT5wYXJhbGxlbF9hcHBseSA9IFBB UkFMTEVMX0FQUExZX1VOU0FGRTsKKwkJCQlyZXR1cm47CisJCQl9CisJCX0KKworCQlibXNfZnJl ZSh1a2V5KTsKKwl9CisKKwkvKgorCSAqIFRoZW4sIGNoZWNrIGlmIHRoZXJlIGlzIGFueSBub24t aW1tdXRhYmxlIGZ1bmN0aW9uIHVzZWQgYnkgdGhlCisJICogc3Vic2NyaWJlci1zaWRlIHJlbGF0 aW9uLiBMb29rIGZvciBmdW5jdGlvbnMgaW4gdGhlIGZvbGxvd2luZyBwbGFjZXM6CisJICogYS4g dHJpZ2dlciBmdW5jdGlvbnM7CisJICogYi4gQ29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lv bnMgYW5kIGRvbWFpbiBjb25zdHJhaW50czsKKwkgKiBjLiBDb25zdHJhaW50IGV4cHJlc3Npb25z OworCSAqIGQuIEZvcmVpZ24ga2V5cy4KKwkgKi8KKwkvKiBDaGVjayB0aGUgdHJpZ2dlciBmdW5j dGlvbnMuICovCisJaWYgKGVudHJ5LT5sb2NhbHJlbC0+dHJpZ2Rlc2MgIT0gTlVMTCkKKwl7CisJ CWZvciAoaSA9IDA7IGkgPCBlbnRyeS0+bG9jYWxyZWwtPnRyaWdkZXNjLT5udW10cmlnZ2Vyczsg aSsrKQorCQl7CisJCQlUcmlnZ2VyICAgICp0cmlnID0gZW50cnktPmxvY2FscmVsLT50cmlnZGVz Yy0+dHJpZ2dlcnMgKyBpOworCisJCQlpZiAodHJpZy0+dGdlbmFibGVkICE9IFRSSUdHRVJfRklS RVNfQUxXQVlTICYmCisJCQkJdHJpZy0+dGdlbmFibGVkICE9IFRSSUdHRVJfRklSRVNfT05fUkVQ TElDQSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKGZ1bmNfdm9sYXRpbGUodHJpZy0+dGdmb2lk KSAhPSBQUk9WT0xBVElMRV9JTU1VVEFCTEUpCisJCQl7CisJCQkJZW50cnktPnBhcmFsbGVsX2Fw cGx5ID0gUEFSQUxMRUxfQVBQTFlfVU5TQUZFOworCQkJCXJldHVybjsKKwkJCX0KKwkJfQorCX0K KworCS8qIENoZWNrIHRoZSBjb2x1bW5zLiAqLworCXR1cGRlc2MgPSBSZWxhdGlvbkdldERlc2Ny KGVudHJ5LT5sb2NhbHJlbCk7CisJZm9yIChhdHRudW0gPSAwOyBhdHRudW0gPCB0dXBkZXNjLT5u YXR0czsgYXR0bnVtKyspCisJeworCQlGb3JtX3BnX2F0dHJpYnV0ZSBhdHQgPSBUdXBsZURlc2NB dHRyKHR1cGRlc2MsIGF0dG51bSk7CisKKwkJLyogV2UgZG9uJ3QgbmVlZCBpbmZvIGZvciBkcm9w cGVkIG9yIGdlbmVyYXRlZCBhdHRyaWJ1dGVzICovCisJCWlmIChhdHQtPmF0dGlzZHJvcHBlZCB8 fCBhdHQtPmF0dGdlbmVyYXRlZCkKKwkJCWNvbnRpbnVlOworCisJCWlmIChhdHQtPmF0dGhhc2Rl ZikKKwkJeworCQkJTm9kZQkgICAqZGVmYXVsdGV4cHI7CisKKwkJCWRlZmF1bHRleHByID0gYnVp bGRfY29sdW1uX2RlZmF1bHQoZW50cnktPmxvY2FscmVsLCBhdHRudW0gKyAxKTsKKwkJCWlmIChj b250YWluX211dGFibGVfZnVuY3Rpb25zKGRlZmF1bHRleHByKSkKKwkJCXsKKwkJCQllbnRyeS0+ cGFyYWxsZWxfYXBwbHkgPSBQQVJBTExFTF9BUFBMWV9VTlNBRkU7CisJCQkJcmV0dXJuOworCQkJ fQorCQl9CisKKwkJLyoKKwkJICogSWYgdGhlIGNvbHVtbiBpcyBvZiBhIERPTUFJTiB0eXBlLCBk ZXRlcm1pbmUgd2hldGhlcgorCQkgKiB0aGF0IGRvbWFpbiBoYXMgYW55IENIRUNLIGV4cHJlc3Np b25zIHRoYXQgYXJlIG5vdAorCQkgKiBpbW11dGFibGUuCisJCSAqLworCQlpZiAoZ2V0X3R5cHR5 cGUoYXR0LT5hdHR0eXBpZCkgPT0gVFlQVFlQRV9ET01BSU4pCisJCXsKKwkJCUxpc3QJICAgKmRv bWFpbl9jb25zdHJhaW50czsKKwkJCUxpc3RDZWxsICAgKmxjOworCisJCQlkb21haW5fY29uc3Ry YWludHMgPSBHZXREb21haW5Db25zdHJhaW50cyhhdHQtPmF0dHR5cGlkKTsKKworCQkJZm9yZWFj aChsYywgZG9tYWluX2NvbnN0cmFpbnRzKQorCQkJeworCQkJCURvbWFpbkNvbnN0cmFpbnRTdGF0 ZSAqY29uID0gKERvbWFpbkNvbnN0cmFpbnRTdGF0ZSAqKSBsZmlyc3QobGMpOworCisJCQkJaWYg KGNvbi0+Y2hlY2tfZXhwciAmJiBjb250YWluX211dGFibGVfZnVuY3Rpb25zKChOb2RlICopIGNv bi0+Y2hlY2tfZXhwcikpCisJCQkJeworCQkJCQllbnRyeS0+cGFyYWxsZWxfYXBwbHkgPSBQQVJB TExFTF9BUFBMWV9VTlNBRkU7CisJCQkJCXJldHVybjsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisK KwkvKiBDaGVjayB0aGUgY29uc3RyYWludHMuICovCisJaWYgKHR1cGRlc2MtPmNvbnN0cikKKwl7 CisJCUNvbnN0ckNoZWNrICpjaGVjayA9IHR1cGRlc2MtPmNvbnN0ci0+Y2hlY2s7CisKKwkJLyoK KwkJICogRGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBhbnkgQ0hFQ0sgY29uc3RyYWludHMgd2hpY2gK KwkJICogY29udGFpbnMgbm9uLWltbXV0YWJsZSBmdW5jdGlvbi4KKwkJICovCisJCWZvciAoaSA9 IDA7IGkgPCB0dXBkZXNjLT5jb25zdHItPm51bV9jaGVjazsgaSsrKQorCQl7CisJCQlFeHByCSAg ICpjaGVja19leHByID0gc3RyaW5nVG9Ob2RlKGNoZWNrW2ldLmNjYmluKTsKKworCQkJaWYgKGNv bnRhaW5fbXV0YWJsZV9mdW5jdGlvbnMoKE5vZGUgKikgY2hlY2tfZXhwcikpCisJCQl7CisJCQkJ ZW50cnktPnBhcmFsbGVsX2FwcGx5ID0gUEFSQUxMRUxfQVBQTFlfVU5TQUZFOworCQkJCXJldHVy bjsKKwkJCX0KKwkJfQorCX0KKworCS8qCisJICogQ2hlY2sgdGhlIGZvcmVpZ24ga2V5cy4KKwkg KgorCSAqIFhYWCBJdCBpcyBiZXR0ZXIgdG8gb25seSBjaGVjayB0aGUgZm9yZWlnbiBrZXkgd2hl biBpdCBpcyBkZXRlY3RlZCB0aGF0CisJICogdGhlIHB1Ymxpc2hlciBkb2VzIG5vdCBoYXZlIHRo ZSBmb3JlaWduIGtleSBhbmQgdGhlIHN1YnNjcmliZXIgZG9lcy4gQnV0CisJICogdGhpcyByZXF1 aXJlcyB0aGUgcHVibGlzaGVyIHRvIHNlbmQgbW9yZSBpbmZvcm1hdGlvbi4gSW4gYWRkaXRpb24s IHNpbmNlCisJICogZm9yZWlnbiBrZXkgZG9lcyBub3QgdGFrZSBlZmZlY3QgaW4gdGhlIHN1YnNj cmliZXIncyBhcHBseSB3b3JrZXIgYnkKKwkgKiBkZWZhdWx0LCBpdCBzZWVtcyB0aGF0IGZvcmVp Z24ga2V5IGRvZXMgbm90IGhpdCB0aGlzIEVSUk9SIGZyZXF1ZW50bHkuCisJICogU28sIG9ubHkg YSBzaW1wbGUgY2hlY2sgYmFzZWQgb24gdGhlIHN1YnNjcmliZXIgc2NoZW1hIGlzIGtlcHQgaGVy ZS4KKwkgKi8KKwlma2V5cyA9IFJlbGF0aW9uR2V0RktleUxpc3QoZW50cnktPmxvY2FscmVsKTsK KwlpZiAoZmtleXMpCisJCWVudHJ5LT5wYXJhbGxlbF9hcHBseSA9IFBBUkFMTEVMX0FQUExZX1VO U0FGRTsKK30KKwogLyoKICAqIE9wZW4gdGhlIGxvY2FsIHJlbGF0aW9uIGFzc29jaWF0ZWQgd2l0 aCB0aGUgcmVtb3RlIG9uZS4KICAqCkBAIC00MzgsNiArNjQ1LDkgQEAgbG9naWNhbHJlcF9yZWxf b3BlbihMb2dpY2FsUmVwUmVsSWQgcmVtb3RlaWQsIExPQ0tNT0RFIGxvY2ttb2RlKQogCQkgKi8K IAkJbG9naWNhbHJlcF9yZWxfbWFya191cGRhdGFibGUoZW50cnkpOwogCisJCS8qIFNldCBpZiBj aGFuZ2VzIGNvdWxkIGJlIGFwcGxpZWQgdXNpbmcgYW4gYXBwbHkgYmFja2dyb3VuZCB3b3JrZXIu ICovCisJCWxvZ2ljYWxyZXBfcmVsX21hcmtfcGFyYWxsZWxfYXBwbHkoZW50cnkpOworCiAJCWVu dHJ5LT5sb2NhbHJlbHZhbGlkID0gdHJ1ZTsKIAl9CiAKQEAgLTY1Myw2ICs4NjMsNyBAQCBsb2dp Y2FscmVwX3BhcnRpdGlvbl9vcGVuKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcm9vdCwKIAkJfQog CQllbnRyeS0+cmVtb3RlcmVsLnJlcGxpZGVudCA9IHJlbW90ZXJlbC0+cmVwbGlkZW50OwogCQll bnRyeS0+cmVtb3RlcmVsLmF0dGtleXMgPSBibXNfY29weShyZW1vdGVyZWwtPmF0dGtleXMpOwor CQllbnRyeS0+cmVtb3RlcmVsLmF0dHVuaXF1ZSA9IGJtc19jb3B5KHJlbW90ZXJlbC0+YXR0dW5p cXVlKTsKIAl9CiAKIAllbnRyeS0+bG9jYWxyZWwgPSBwYXJ0cmVsOwpAQCAtNjk2LDYgKzkwNyw5 IEBAIGxvZ2ljYWxyZXBfcGFydGl0aW9uX29wZW4oTG9naWNhbFJlcFJlbE1hcEVudHJ5ICpyb290 LAogCS8qIFNldCBpZiB0aGUgdGFibGUncyByZXBsaWNhIGlkZW50aXR5IGlzIGVub3VnaCB0byBh cHBseSB1cGRhdGUvZGVsZXRlLiAqLwogCWxvZ2ljYWxyZXBfcmVsX21hcmtfdXBkYXRhYmxlKGVu dHJ5KTsKIAorCS8qIFNldCBpZiBjaGFuZ2VzIGNvdWxkIGJlIGFwcGxpZWQgdXNpbmcgYW4gYXBw bHkgYmFja2dyb3VuZCB3b3JrZXIuICovCisJbG9naWNhbHJlcF9yZWxfbWFya19wYXJhbGxlbF9h cHBseShlbnRyeSk7CisKIAllbnRyeS0+bG9jYWxyZWx2YWxpZCA9IHRydWU7CiAKIAkvKiBzdGF0 ZSBhbmQgc3RhdGVsc24gYXJlIGxlZnQgc2V0IHRvIDAuICovCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC90YWJsZXN5bmMuYwppbmRleCAyOTliZGM2MzI0Li4wZTFkMGMwYzMwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3RhYmxlc3luYy5jCisr KyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvdGFibGVzeW5jLmMKQEAgLTg4NCw2 ICs4ODQsNyBAQCBmZXRjaF9yZW1vdGVfdGFibGVfaW5mbyhjaGFyICpuc3BuYW1lLCBjaGFyICpy ZWxuYW1lLAogCWxyZWwtPmF0dG5hbWVzID0gcGFsbG9jMChNYXhUdXBsZUF0dHJpYnV0ZU51bWJl ciAqIHNpemVvZihjaGFyICopKTsKIAlscmVsLT5hdHR0eXBzID0gcGFsbG9jMChNYXhUdXBsZUF0 dHJpYnV0ZU51bWJlciAqIHNpemVvZihPaWQpKTsKIAlscmVsLT5hdHRrZXlzID0gTlVMTDsKKwls cmVsLT5hdHR1bmlxdWUgPSBOVUxMOwogCiAJLyoKIAkgKiBTdG9yZSB0aGUgY29sdW1ucyBhcyBh IGxpc3Qgb2YgbmFtZXMuICBJZ25vcmUgdGhvc2UgdGhhdCBhcmUgbm90CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCAxMGNhMmM1NWFkLi5jNTI2NjllOTZjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTE0MTUsNiArMTQx NSwxNCBAQCBhcHBseV9oYW5kbGVfc3RyZWFtX3N0b3AoU3RyaW5nSW5mbyBzKQogCXsKIAkJY2hh ciBhY3Rpb24gPSBMT0dJQ0FMX1JFUF9NU0dfU1RSRUFNX1NUT1A7CiAKKwkJLyoKKwkJICogVW5s aWtlIHN0cmVhbV9jb21taXQsIHdlIGRvbid0IG5lZWQgdG8gd2FpdCBoZXJlIGZvciBzdHJlYW1f c3RvcCB0bworCQkgKiBmaW5pc2guIEFsbG93aW5nIHRoZSBvdGhlciB0cmFuc2FjdGlvbiB0byBi ZSBhcHBsaWVkIGJlZm9yZQorCQkgKiBzdHJlYW1fc3RvcCBpcyBmaW5pc2hlZCBjYW4gbGVhZCB0 byBmYWlsdXJlcyBpZiB0aGUgdW5pcXVlCisJCSAqIGluZGV4L2NvbnN0cmFpbnQgaXMgZGlmZmVy ZW50IGJldHdlZW4gcHVibGlzaGVyIGFuZCBzdWJzY3JpYmVyLiBCdXQKKwkJICogZm9yIHN1Y2gg Y2FzZXMsIHdlIGRvbid0IGFsbG93IHN0cmVhbWVkIHRyYW5zYWN0aW9ucyB0byBiZSBhcHBsaWVk CisJCSAqIGluIHBhcmFsbGVsLiBTZWUgYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2suCisJ CSAqLwogCQlhcHBseV9iZ3dvcmtlcl9zZW5kX2RhdGEoc3RyZWFtX2FwcGx5X3dvcmtlciwgMSwg JmFjdGlvbik7CiAKIAkJZWxvZyhERUJVRzEsICJzdG9wcGVkIHN0cmVhbWluZyBvZiB4aWQgJXUs ICV1IGNoYW5nZXMgc3RyZWFtZWQiLCBzdHJlYW1feGlkLCBuY2hhbmdlcyk7CkBAIC0yMDY5LDYg KzIwNzcsOCBAQCBhcHBseV9oYW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8gcykKIAkvKiBTZXQgcmVs YXRpb24gZm9yIGVycm9yIGNhbGxiYWNrICovCiAJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLnJl bCA9IHJlbDsKIAorCWFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2NoZWNrKHJlbCk7CisKIAkvKiBJ bml0aWFsaXplIHRoZSBleGVjdXRvciBzdGF0ZS4gKi8KIAllZGF0YSA9IGNyZWF0ZV9lZGF0YV9m b3JfcmVsYXRpb24ocmVsKTsKIAllc3RhdGUgPSBlZGF0YS0+ZXN0YXRlOwpAQCAtMjIxMiw2ICsy MjIyLDggQEAgYXBwbHlfaGFuZGxlX3VwZGF0ZShTdHJpbmdJbmZvIHMpCiAJLyogQ2hlY2sgaWYg d2UgY2FuIGRvIHRoZSB1cGRhdGUuICovCiAJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHJlbCk7 CiAKKwlhcHBseV9iZ3dvcmtlcl9yZWxhdGlvbl9jaGVjayhyZWwpOworCiAJLyogSW5pdGlhbGl6 ZSB0aGUgZXhlY3V0b3Igc3RhdGUuICovCiAJZWRhdGEgPSBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0 aW9uKHJlbCk7CiAJZXN0YXRlID0gZWRhdGEtPmVzdGF0ZTsKQEAgLTIzODAsNiArMjM5Miw4IEBA IGFwcGx5X2hhbmRsZV9kZWxldGUoU3RyaW5nSW5mbyBzKQogCS8qIENoZWNrIGlmIHdlIGNhbiBk byB0aGUgZGVsZXRlLiAqLwogCWNoZWNrX3JlbGF0aW9uX3VwZGF0YWJsZShyZWwpOwogCisJYXBw bHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2socmVsKTsKKwogCS8qIEluaXRpYWxpemUgdGhlIGV4 ZWN1dG9yIHN0YXRlLiAqLwogCWVkYXRhID0gY3JlYXRlX2VkYXRhX2Zvcl9yZWxhdGlvbihyZWwp OwogCWVzdGF0ZSA9IGVkYXRhLT5lc3RhdGU7CkBAIC0yNTY1LDEzICsyNTc5LDE0IEBAIGFwcGx5 X2hhbmRsZV90dXBsZV9yb3V0aW5nKEFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGEsCiAJfQogCU1l bW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCisJcGFydF9lbnRyeSA9IGxvZ2ljYWxyZXBf cGFydGl0aW9uX29wZW4ocmVsbWFwZW50cnksIHBhcnRyZWwsCisJCQkJCQkJCQkJICAgYXR0cm1h cCk7CisKIAkvKiBDaGVjayBpZiB3ZSBjYW4gZG8gdGhlIHVwZGF0ZSBvciBkZWxldGUgb24gdGhl IGxlYWYgcGFydGl0aW9uLiAqLwogCWlmIChvcGVyYXRpb24gPT0gQ01EX1VQREFURSB8fCBvcGVy YXRpb24gPT0gQ01EX0RFTEVURSkKLQl7Ci0JCXBhcnRfZW50cnkgPSBsb2dpY2FscmVwX3BhcnRp dGlvbl9vcGVuKHJlbG1hcGVudHJ5LCBwYXJ0cmVsLAotCQkJCQkJCQkJCQkgICBhdHRybWFwKTsK IAkJY2hlY2tfcmVsYXRpb25fdXBkYXRhYmxlKHBhcnRfZW50cnkpOwotCX0KKworCWFwcGx5X2Jn d29ya2VyX3JlbGF0aW9uX2NoZWNrKHBhcnRfZW50cnkpOwogCiAJc3dpdGNoIChvcGVyYXRpb24p CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYyBiL3Ny Yy9iYWNrZW5kL3V0aWxzL2NhY2hlL3R5cGNhY2hlLmMKaW5kZXggODA4ZjllYmQwZC4uYjI0ODg5 OWQ4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvdHlwY2FjaGUuYworKysg Yi9zcmMvYmFja2VuZC91dGlscy9jYWNoZS90eXBjYWNoZS5jCkBAIC0yNTQwLDYgKzI1NDAsMjMg QEAgY29tcGFyZV92YWx1ZXNfb2ZfZW51bShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hlLCBPaWQgYXJn MSwgT2lkIGFyZzIpCiAJCXJldHVybiAwOwogfQogCisvKgorICogR2V0RG9tYWluQ29uc3RyYWlu dHMgLS0tIGdldCBEb21haW5Db25zdHJhaW50U3RhdGUgbGlzdCBvZiBzcGVjaWZpZWQgZG9tYWlu IHR5cGUKKyAqLworTGlzdCAqCitHZXREb21haW5Db25zdHJhaW50cyhPaWQgdHlwZV9pZCkKK3sK KwlUeXBlQ2FjaGVFbnRyeSAqdHlwZW50cnk7CisJTGlzdAkJICAgKmNvbnN0cmFpbnRzID0gTklM OworCisJdHlwZW50cnkgPSBsb29rdXBfdHlwZV9jYWNoZSh0eXBlX2lkLCBUWVBFQ0FDSEVfRE9N QUlOX0NPTlNUUl9JTkZPKTsKKworCWlmKHR5cGVudHJ5LT5kb21haW5EYXRhICE9IE5VTEwpCisJ CWNvbnN0cmFpbnRzID0gdHlwZW50cnktPmRvbWFpbkRhdGEtPmNvbnN0cmFpbnRzOworCisJcmV0 dXJuIGNvbnN0cmFpbnRzOworfQorCiAvKgogICogTG9hZCAob3IgcmUtbG9hZCkgdGhlIGVudW1E YXRhIG1lbWJlciBvZiB0aGUgdHlwY2FjaGUgZW50cnkuCiAgKi8KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbHByb3RvLmgKaW5kZXggZWIwZmQyNGZkOC4uNDM5NWMxMWY3NSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTExMyw2ICsxMTMsNyBAQCB0eXBlZGVm IHN0cnVjdCBMb2dpY2FsUmVwUmVsYXRpb24KIAljaGFyCQlyZXBsaWRlbnQ7CQkvKiByZXBsaWNh IGlkZW50aXR5ICovCiAJY2hhcgkJcmVsa2luZDsJCS8qIHJlbW90ZSByZWxhdGlvbiBraW5kICov CiAJQml0bWFwc2V0ICAqYXR0a2V5czsJCS8qIEJpdG1hcCBvZiBrZXkgY29sdW1ucyAqLworCUJp dG1hcHNldCAgKmF0dHVuaXF1ZTsJCS8qIEJpdG1hcCBvZiB1bmlxdWUgY29sdW1ucyAqLwogfSBM b2dpY2FsUmVwUmVsYXRpb247CiAKIC8qIFR5cGUgbWFwcGluZyBpbmZvICovCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FscmVsYXRpb24uaCBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCmluZGV4IDc4Y2Q3ZTc3ZjUuLmNkNmMxOWI1 YzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5o CisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxyZWxhdGlvbi5oCkBAIC0xNSw2 ICsxNSwxNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9hdHRtYXAuaCIKICNpbmNsdWRlICJyZXBsaWNh dGlvbi9sb2dpY2FscHJvdG8uaCIKIAorLyoKKyAqCVN0YXRlcyB0byBkZXRlcm1pbmUgaWYgY2hh bmdlcyBvbiBvbmUgcmVsYXRpb24gY2FuIGJlIGFwcGxpZWQgdXNpbmcgYW4KKyAqCWFwcGx5IGJh Y2tncm91bmQgd29ya2VyLgorICovCit0eXBlZGVmIGVudW0gUGFyYWxsZWxBcHBseVNhZmV0eQor eworCVBBUkFMTEVMX0FQUExZX1VOS05PV04gPSAwLAorCVBBUkFMTEVMX0FQUExZX1NBRkUsCisJ UEFSQUxMRUxfQVBQTFlfVU5TQUZFCit9IFBhcmFsbGVsQXBwbHlTYWZldHk7CisKIHR5cGVkZWYg c3RydWN0IExvZ2ljYWxSZXBSZWxNYXBFbnRyeQogewogCUxvZ2ljYWxSZXBSZWxhdGlvbiByZW1v dGVyZWw7CS8qIGtleSBpcyByZW1vdGVyZWwucmVtb3RlaWQgKi8KQEAgLTMxLDYgKzQyLDggQEAg dHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFJlbE1hcEVudHJ5CiAJUmVsYXRpb24JbG9jYWxyZWw7 CQkvKiByZWxjYWNoZSBlbnRyeSAoTlVMTCB3aGVuIGNsb3NlZCkgKi8KIAlBdHRyTWFwICAgICph dHRybWFwOwkJLyogbWFwIG9mIGxvY2FsIGF0dHJpYnV0ZXMgdG8gcmVtb3RlIG9uZXMgKi8KIAli b29sCQl1cGRhdGFibGU7CQkvKiBDYW4gYXBwbHkgdXBkYXRlcy9kZWxldGVzPyAqLworCVBhcmFs bGVsQXBwbHlTYWZldHkJcGFyYWxsZWxfYXBwbHk7CS8qIENhbiBhcHBseSBjaGFuZ2VzIGluIGFu IGFwcGx5CisJCQkJCQkJCQkJICAgYmFja2dyb3VuZCB3b3JrZXI/ICovCiAKIAkvKiBTeW5jIHN0 YXRlLiAqLwogCWNoYXIJCXN0YXRlOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vd29ya2VyX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50 ZXJuYWwuaAppbmRleCA4ZjAzYWQ0YTY1Li5iYTg2OTAxNWQ5IDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaApAQCAtMjAzLDYgKzIwMyw3IEBAIGV4dGVybiB2b2lk IGFwcGx5X2Jnd29ya2VyX3NldF9zdGF0dXMoQXBwbHlCZ3dvcmtlclN0YXR1cyBzdGF0dXMpOwog ZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfc3VieGFjdF9pbmZvX2FkZChUcmFuc2FjdGlvbklk IGN1cnJlbnRfeGlkKTsKIGV4dGVybiB2b2lkIGFwcGx5X2Jnd29ya2VyX3NhdmVwb2ludF9uYW1l KE9pZCBzdWJvaWQsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQkgIGNoYXIgKnNwbmFtZSwgaW50IHN6 c3ApOworZXh0ZXJuIHZvaWQgYXBwbHlfYmd3b3JrZXJfcmVsYXRpb25fY2hlY2soTG9naWNhbFJl cFJlbE1hcEVudHJ5ICpyZWwpOwogCiBzdGF0aWMgaW5saW5lIGJvb2wKIGFtX3RhYmxlc3luY193 b3JrZXIodm9pZCkKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmggYi9z cmMvaW5jbHVkZS91dGlscy90eXBjYWNoZS5oCmluZGV4IDQzMWFkN2YxYjMuLmVkN2MyZTdmNDgg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3R5cGNhY2hlLmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvdHlwY2FjaGUuaApAQCAtMTk5LDYgKzE5OSw4IEBAIGV4dGVybiB1aW50NjQgYXNz aWduX3JlY29yZF90eXBlX2lkZW50aWZpZXIoT2lkIHR5cGVfaWQsIGludDMyIHR5cG1vZCk7CiAK IGV4dGVybiBpbnQJY29tcGFyZV92YWx1ZXNfb2ZfZW51bShUeXBlQ2FjaGVFbnRyeSAqdGNhY2hl LCBPaWQgYXJnMSwgT2lkIGFyZzIpOwogCitleHRlcm4gTGlzdCAqR2V0RG9tYWluQ29uc3RyYWlu dHMoT2lkIHR5cGVfaWQpOworCiBleHRlcm4gc2l6ZV90IFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lz dHJ5RXN0aW1hdGUodm9pZCk7CiAKIGV4dGVybiB2b2lkIFNoYXJlZFJlY29yZFR5cG1vZFJlZ2lz dHJ5SW5pdChTaGFyZWRSZWNvcmRUeXBtb2RSZWdpc3RyeSAqLApkaWZmIC0tZ2l0IGEvc3JjL3Rl c3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90 LzAxNV9zdHJlYW0ucGwKaW5kZXggOWY0OTQ2ZDdkNi4uN2E2Y2VlNjA2ZSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE1X3N0cmVhbS5wbAorKysgYi9zcmMvdGVzdC9zdWJz Y3JpcHRpb24vdC8wMTVfc3RyZWFtLnBsCkBAIC0xMyw3ICsxMyw3IEBAIHVzZSBUZXN0OjpNb3Jl OwogIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCiBzdWIgdGVzdF9zdHJlYW1pbmcKIHsKLQlt eSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFs bGVsKSA9IEBfOworCW15ICgkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBu YW1lKSA9IEBfOwogCiAJIyBJbnRlcmxlYXZlIGEgcGFpciBvZiB0cmFuc2FjdGlvbnMsIGVhY2gg ZXhjZWVkaW5nIHRoZSA2NGtCIGxpbWl0LgogCW15ICRpbiAgPSAnJzsKQEAgLTI0LDE2ICsyNCw2 IEBAIHN1YiB0ZXN0X3N0cmVhbWluZwogCW15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3Jv dW5kX3BzcWwoJ3Bvc3RncmVzJywgXCRpbiwgXCRvdXQsICR0aW1lciwKIAkJb25fZXJyb3Jfc3Rv cCA9PiAwKTsKIAotCSMgQ2hlY2sgdGhhdCBhIGJhY2tncm91bmQgd29ya2VyIHN0YXJ0cyBpZiAi c3RyZWFtaW5nIiBwYXJhbWV0ZXIgaXMKLQkjIHNwZWNpZmllZCBhcyAicGFyYWxsZWwiLiAgV2Ug aGF2ZSB0byBsb29rIGZvciB0aGUgREVCVUcxIGxvZyBtZXNzYWdlcwotCSMgYWJvdXQgdGhhdCwg c28gdGVtcG9yYXJpbHkgYnVtcCB1cCB0aGUgbG9nIHZlcmJvc2l0eS4KLQlpZiAoJGlzX3BhcmFs bGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29u ZicsCi0JCQkibG9nX21pbl9tZXNzYWdlcyA9IGRlYnVnMSIpOwotCQkkbm9kZV9zdWJzY3JpYmVy LT5yZWxvYWQ7Ci0JfQotCiAJJGluIC49IHF7CiAJQkVHSU47CiAJSU5TRVJUIElOVE8gdGVzdF90 YWIgU0VMRUNUIGksIG1kNShpOjp0ZXh0KSBGUk9NIGdlbmVyYXRlX3NlcmllcygzLCA1MDAwKSBz KGkpOwpAQCAtNDIsMTQgKzMyLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5nCiAJfTsKIAkkaC0+cHVt cF9uYjsKIAotCWlmICgkaXNfcGFyYWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT53YWl0 X2Zvcl9sb2cocXIvXFtBcHBseSBCR1cgI1xkK1xdIHN0YXJ0ZWQvLCAwKTsKLQkJJG5vZGVfc3Vi c2NyaWJlci0+YXBwZW5kX2NvbmYoJ3Bvc3RncmVzcWwuY29uZicsCi0JCQkibG9nX21pbl9tZXNz YWdlcyA9IHdhcm5pbmciKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQogCSRu b2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCQkncG9zdGdyZXMnLCBxewogCUJFR0lOOwpAQCAt MTYzLDcgKzE0NSw3IEBAIG15ICRyZXN1bHQgPQogCSJTRUxFQ1QgY291bnQoKiksIGNvdW50KGMp LCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBpcygkcmVzdWx0LCBxcSgyfDJ8Miks ICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBzdWJzY3JpYmVyJyk7CiAKLXRlc3Rf c3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDAp OwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBw bmFtZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIFRlc3Qg dXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwpAQCAtMTcyLDggKzE1NCwxMyBAQCBteSAk b2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNU IHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICck YXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7IgogKTsKIAotJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNF VChzdHJlYW1pbmcgPSBwYXJhbGxlbCwgYmluYXJ5ID0gb2ZmKSIpOworIyAic3RyZWFtaW5nID0g cGFyYWxsZWwiIGRvZXMgbm90IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMsIHNvIGNo YW5nZQorIyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBvZiBjb2x1bW4g ImMiLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxU RVIgVEFCTEUgdGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGltZXN0YW1w KDApOworQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVs LCBiaW5hcnkgPSBvZmYpOworfSk7CiAKICRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRp bCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGlkICE9ICRvbGRwaWQgRlJPTSBwZ19zdGF0X3JlcGxp Y2F0aW9uIFdIRVJFIGFwcGxpY2F0aW9uX25hbWUgPSAnJGFwcG5hbWUnIEFORCBzdGF0ZSA9ICdz dHJlYW1pbmcnOyIKQEAgLTE4MSw3ICsxNjgsNyBAQCAkbm9kZV9wdWJsaXNoZXItPnBvbGxfcXVl cnlfdW50aWwoJ3Bvc3RncmVzJywKICAgb3IgZGllCiAgICJUaW1lZCBvdXQgd2hpbGUgd2FpdGlu ZyBmb3IgYXBwbHkgdG8gcmVzdGFydCBhZnRlciBjaGFuZ2luZyBTVUJTQ1JJUFRJT04iOwogCi10 ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l LCAxKTsKK3Rlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwg JGFwcG5hbWUpOwogCiAkbm9kZV9zdWJzY3JpYmVyLT5zdG9wOwogJG5vZGVfcHVibGlzaGVyLT5z dG9wOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4 YWN0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDE2X3N0cmVhbV9zdWJ4YWN0LnBsCmlu ZGV4IDEwNGExNjkxOTcuLjg1ZmM1N2YwMGIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAxNl9zdHJlYW1fc3VieGFjdC5wbAorKysgYi9zcmMvdGVzdC9zdWJzY3JpcHRpb24v dC8wMTZfc3RyZWFtX3N1YnhhY3QucGwKQEAgLTEzLDE3ICsxMyw3IEBAIHVzZSBUZXN0OjpNb3Jl OwogIyBzdHJlYW1pbmc9cGFyYWxsZWwgY2FzZXMuCiBzdWIgdGVzdF9zdHJlYW1pbmcKIHsKLQlt eSAoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgJGlzX3BhcmFs bGVsKSA9IEBfOwotCi0JIyBDaGVjayB0aGF0IGEgYmFja2dyb3VuZCB3b3JrZXIgc3RhcnRzIGlm ICJzdHJlYW1pbmciIHBhcmFtZXRlciBpcwotCSMgc3BlY2lmaWVkIGFzICJwYXJhbGxlbCIuICBX ZSBoYXZlIHRvIGxvb2sgZm9yIHRoZSBERUJVRzEgbG9nIG1lc3NhZ2VzCi0JIyBhYm91dCB0aGF0 LCBzbyB0ZW1wb3JhcmlseSBidW1wIHVwIHRoZSBsb2cgdmVyYm9zaXR5LgotCWlmICgkaXNfcGFy YWxsZWwpCi0JewotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5j b25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gZGVidWcxIik7Ci0JCSRub2RlX3N1YnNjcmli ZXItPnJlbG9hZDsKLQl9CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwg JGFwcG5hbWUpID0gQF87CiAKIAkjIEluc2VydCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJv d3MgdG8gZXhjZWVkIDY0a0IgbGltaXQuCiAJJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCkBA IC01MSwxNCArNDEsNiBAQCBzdWIgdGVzdF9zdHJlYW1pbmcKIAlDT01NSVQ7CiAJfSk7CiAKLQlp ZiAoJGlzX3BhcmFsbGVsKQotCXsKLQkJJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKHFy L1xbQXBwbHkgQkdXICNcZCtcXSBzdGFydGVkLywgMCk7Ci0JCSRub2RlX3N1YnNjcmliZXItPmFw cGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5fbWVzc2FnZXMgPSB3YXJu aW5nIik7Ci0JCSRub2RlX3N1YnNjcmliZXItPnJlbG9hZDsKLQl9Ci0KIAkkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAJbXkgJHJlc3VsdCA9CkBAIC0xMTks NyArMTAxLDcgQEAgbXkgJHJlc3VsdCA9CiAJIlNFTEVDVCBjb3VudCgqKSwgY291bnQoYyksIGNv dW50KGQgPSA5OTkpIEZST00gdGVzdF90YWIiKTsKIGlzKCRyZXN1bHQsIHFxKDJ8MnwyKSwgJ2No ZWNrIGluaXRpYWwgZGF0YSB3YXMgY29waWVkIHRvIHN1YnNjcmliZXInKTsKIAotdGVzdF9zdHJl YW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMCk7Cit0 ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1l KTsKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgVGVzdCB1c2lu ZyBzdHJlYW1pbmcgbW9kZSAncGFyYWxsZWwnCkBAIC0xMjgsOCArMTEwLDEzIEBAIG15ICRvbGRw aWQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxFQ1QgcGlk IEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0gJyRhcHBu YW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCiApOwogCi0kbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgU0VUKHN0 cmVhbWluZyA9IHBhcmFsbGVsKSIpOworIyAic3RyZWFtaW5nID0gcGFyYWxsZWwiIGRvZXMgbm90 IHN1cHBvcnQgbm9uLWltbXV0YWJsZSBmdW5jdGlvbnMsIHNvIGNoYW5nZQorIyB0aGUgZnVuY3Rp b24gaW4gdGhlIGRlZmF1bHQgZXhwcmVzc2lvbiBvZiBjb2x1bW4gImMiLgorJG5vZGVfc3Vic2Ny aWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVzdF90YWIg QUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGltZXN0YW1wKDApOworQUxURVIgU1VCU0NS SVBUSU9OIHRhcF9zdWIgU0VUKHN0cmVhbWluZyA9IHBhcmFsbGVsKTsKK30pOwogCiAkbm9kZV9w dWJsaXNoZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKIAkiU0VMRUNUIHBpZCAhPSAk b2xkcGlkIEZST00gcGdfc3RhdF9yZXBsaWNhdGlvbiBXSEVSRSBhcHBsaWNhdGlvbl9uYW1lID0g JyRhcHBuYW1lJyBBTkQgc3RhdGUgPSAnc3RyZWFtaW5nJzsiCkBAIC0xMzcsNyArMTI0LDcgQEAg JG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCiAgIG9yIGRpZQog ICAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIGFwcGx5IHRvIHJlc3RhcnQgYWZ0ZXIgY2hh bmdpbmcgU1VCU0NSSVBUSU9OIjsKIAotdGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSwgMSk7Cit0ZXN0X3N0cmVhbWluZygkbm9kZV9wdWJs aXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lKTsKIAogJG5vZGVfc3Vic2NyaWJlci0+ c3RvcDsKICRub2RlX3B1Ymxpc2hlci0+c3RvcDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3N1YnNj cmlwdGlvbi90LzAyMl90d29waGFzZV9jYXNjYWRlLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9u L3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwKaW5kZXggMGE0MTUyZDNiZS4uM2RmMTYyMWUxYyAx MDA2NDQKLS0tIGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUu cGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIyX3R3b3BoYXNlX2Nhc2NhZGUucGwK QEAgLTQ3MCw2ICs0NzAsMTQgQEAgdGVzdF9zdHJlYW1pbmcoJG5vZGVfQSwgJG5vZGVfQiwgJG5v ZGVfQywgJGFwcG5hbWVfQiwgJGFwcG5hbWVfQywgJ29uJyk7CiAjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwogIyBUZXN0IHVzaW5nIHN0cmVhbWluZyBtb2RlICdwYXJhbGxl bCcKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgInN0cmVhbWlu ZyA9IHBhcmFsbGVsIiBkb2VzIG5vdCBzdXBwb3J0IG5vbi1pbW11dGFibGUgZnVuY3Rpb25zLCBz byBjaGFuZ2UKKyMgdGhlIGZ1bmN0aW9uIGluIHRoZSBkZWZhdWx0IGV4cHJlc3Npb24gb2YgY29s dW1uICJjIi4KKyRub2RlX0ItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUg dGVzdF90YWIgQUxURVIgQ09MVU1OIGMgU0VUIERFRkFVTFQgdG9fdGltZXN0YW1wKDApOyIpOwor JG5vZGVfQy0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsICJBTFRFUiBUQUJMRSB0ZXN0X3RhYiBB TFRFUiBDT0xVTU4gYyBTRVQgREVGQVVMVCB0b190aW1lc3RhbXAoMCk7Iik7CisKIHRlc3Rfc3Ry ZWFtaW5nKCRub2RlX0EsICRub2RlX0IsICRub2RlX0MsICRhcHBuYW1lX0IsICRhcHBuYW1lX0Ms ICdwYXJhbGxlbCcpOwogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNfdHdvcGhhc2Vfc3RyZWFtLnBsIGIvc3Jj L3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDIzX3R3b3BoYXNlX3N0cmVhbS5wbAppbmRleCBlYTFmNDc2 MWMzLi5jNDljYjEwNjExIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjNf dHdvcGhhc2Vfc3RyZWFtLnBsCisrKyBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyM190d29w aGFzZV9zdHJlYW0ucGwKQEAgLTEzLDcgKzEzLDcgQEAgdXNlIFRlc3Q6Ok1vcmU7CiAjIHN0cmVh bWluZz1wYXJhbGxlbCBjYXNlcy4KIHN1YiB0ZXN0X3N0cmVhbWluZwogewotCW15ICgkbm9kZV9w dWJsaXNoZXIsICRub2RlX3N1YnNjcmliZXIsICRhcHBuYW1lLCAkaXNfcGFyYWxsZWwpID0gQF87 CisJbXkgKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUpID0gQF87 CiAKIAkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAJIyBUZXN0IDJQQyBQUkVQQVJF IC8gQ09NTUlUIFBSRVBBUkVELgpAQCAtMjMsMTYgKzIzLDYgQEAgc3ViIHRlc3Rfc3RyZWFtaW5n CiAJIyBFeHBlY3QgYWxsIGRhdGEgaXMgcmVwbGljYXRlZCBvbiBzdWJzY3JpYmVyIHNpZGUgYWZ0 ZXIgdGhlIGNvbW1pdC4KIAkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLQkjIENo ZWNrIHRoYXQgYSBiYWNrZ3JvdW5kIHdvcmtlciBzdGFydHMgaWYgInN0cmVhbWluZyIgcGFyYW1l dGVyIGlzCi0JIyBzcGVjaWZpZWQgYXMgInBhcmFsbGVsIi4gIFdlIGhhdmUgdG8gbG9vayBmb3Ig dGhlIERFQlVHMSBsb2cgbWVzc2FnZXMKLQkjIGFib3V0IHRoYXQsIHNvIHRlbXBvcmFyaWx5IGJ1 bXAgdXAgdGhlIGxvZyB2ZXJib3NpdHkuCi0JaWYgKCRpc19wYXJhbGxlbCkKLQl7Ci0JCSRub2Rl X3N1YnNjcmliZXItPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLAotCQkJImxvZ19taW5f bWVzc2FnZXMgPSBkZWJ1ZzEiKTsKLQkJJG5vZGVfc3Vic2NyaWJlci0+cmVsb2FkOwotCX0KLQog CSMgY2hlY2sgdGhhdCAyUEMgZ2V0cyByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIKIAkjIEluc2Vy dCwgdXBkYXRlIGFuZCBkZWxldGUgZW5vdWdoIHJvd3MgdG8gZXhjZWVkIHRoZSA2NGtCIGxpbWl0 LgogCSRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKApAQCAtNDMsMTQgKzMzLDYgQEAgc3ViIHRl c3Rfc3RyZWFtaW5nCiAJCURFTEVURSBGUk9NIHRlc3RfdGFiIFdIRVJFIG1vZChhLDMpID0gMDsK IAkJUFJFUEFSRSBUUkFOU0FDVElPTiAndGVzdF9wcmVwYXJlZF90YWInO30pOwogCi0JaWYgKCRp c19wYXJhbGxlbCkKLQl7Ci0JCSRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZyhxci9cW0Fw cGx5IEJHVyAjXGQrXF0gc3RhcnRlZC8sIDApOwotCQkkbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRf Y29uZigncG9zdGdyZXNxbC5jb25mJywKLQkJCSJsb2dfbWluX21lc3NhZ2VzID0gd2FybmluZyIp OwotCQkkbm9kZV9zdWJzY3JpYmVyLT5yZWxvYWQ7Ci0JfQotCiAJJG5vZGVfcHVibGlzaGVyLT53 YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogCSMgY2hlY2sgdGhhdCB0cmFuc2FjdGlvbiBp cyBpbiBwcmVwYXJlZCBzdGF0ZSBvbiBzdWJzY3JpYmVyCkBAIC0zMzMsNyArMzE1LDcgQEAgbXkg JHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCSJTRUxF Q1QgY291bnQoKiksIGNvdW50KGMpLCBjb3VudChkID0gOTk5KSBGUk9NIHRlc3RfdGFiIik7CiBp cygkcmVzdWx0LCBxcSgyfDJ8MiksICdjaGVjayBpbml0aWFsIGRhdGEgd2FzIGNvcGllZCB0byBz dWJzY3JpYmVyJyk7CiAKLXRlc3Rfc3RyZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vi c2NyaWJlciwgJGFwcG5hbWUsIDApOwordGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAk bm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFtZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjCiAjIFRlc3QgdXNpbmcgc3RyZWFtaW5nIG1vZGUgJ3BhcmFsbGVsJwpAQCAt MzQyLDggKzMyNCwxMyBAQCBteSAkb2xkcGlkID0gJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKIAkiU0VMRUNUIHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24gV0hFUkUg YXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWluZyc7Igog KTsKIAotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFNV QlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBwYXJhbGxlbCkiKTsKKyMgInN0cmVh bWluZyA9IHBhcmFsbGVsIiBkb2VzIG5vdCBzdXBwb3J0IG5vbi1pbW11dGFibGUgZnVuY3Rpb25z LCBzbyBjaGFuZ2UKKyMgdGhlIGZ1bmN0aW9uIGluIHRoZSBkZWZhdWx0IGV4cHJlc3Npb24gb2Yg Y29sdW1uICJjIi4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBx cXsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiIEFMVEVSIENPTFVNTiBjIFNFVCBERUZBVUxUIHRvX3Rp bWVzdGFtcCgwKTsKK0FMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVChzdHJlYW1pbmcgPSBw YXJhbGxlbCk7Cit9KTsKIAogJG5vZGVfcHVibGlzaGVyLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0 Z3JlcycsCiAJIlNFTEVDVCBwaWQgIT0gJG9sZHBpZCBGUk9NIHBnX3N0YXRfcmVwbGljYXRpb24g V0hFUkUgYXBwbGljYXRpb25fbmFtZSA9ICckYXBwbmFtZScgQU5EIHN0YXRlID0gJ3N0cmVhbWlu Zyc7IgpAQCAtMzUxLDcgKzMzOCw3IEBAICRub2RlX3B1Ymxpc2hlci0+cG9sbF9xdWVyeV91bnRp bCgncG9zdGdyZXMnLAogICBvciBkaWUKICAgIlRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciBh cHBseSB0byByZXN0YXJ0IGFmdGVyIGNoYW5naW5nIFNVQlNDUklQVElPTiI7CiAKLXRlc3Rfc3Ry ZWFtaW5nKCRub2RlX3B1Ymxpc2hlciwgJG5vZGVfc3Vic2NyaWJlciwgJGFwcG5hbWUsIDEpOwor dGVzdF9zdHJlYW1pbmcoJG5vZGVfcHVibGlzaGVyLCAkbm9kZV9zdWJzY3JpYmVyLCAkYXBwbmFt ZSk7CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgY2hlY2sgYWxsIHRoZSBj bGVhbnVwCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5n X2FwcGx5LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5w bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5hYmI4MjE5MzAzCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBs eS5wbApAQCAtMCwwICsxLDU5OCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMjIsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCB0aGUgcmVzdHJpY3Rpb25zIG9mIHN0 cmVhbWluZyBtb2RlICJwYXJhbGxlbCIgaW4gbG9naWNhbCByZXBsaWNhdGlvbi4KKyMgV2l0aG91 dCB0aGVzZSByZXN0cmljdGlvbnMsIHRoZSBzdWJzY3JpYmVyJ3MgYXBwbHkgd29ya2VyIG1heSBm YWxsIGludG8gYW4KKyMgaW5maW5pdGUgd2FpdCB3aXRob3V0IHRoZSB1c2VyIGtub3dpbmcuCisj CisjIEZvciBub3JtYWwgdGFibGVzLCB3ZSB1c2UgZGVhZGxvY2stcHJvZHVjaW5nIHRlc3QgY2Fz ZXMgdG8gZW5zdXJlIHRoYXQgZnV0dXJlCisjIG1vZGlmaWNhdGlvbnMgZG8gbm90IGludmFsaWRh dGUgY29uc3RyYWludCBjaGVja3MuCisjCisjIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMsIHdlIGp1 c3QgdXNlIHRlc3QgY2FzZXMgdG8gY29uZmlybSB0aGF0IHRoZSBjb25zdHJhaW50CisjIGNoZWNr cyBhcmUgYXMgZXhwZWN0ZWQuCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgUG9z dGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3Vz ZSBUZXN0OjpNb3JlOworCitteSAkb2Zmc2V0ID0gMDsKKworIyBDcmVhdGUgcHVibGlzaGVyIG5v ZGUKK215ICRub2RlX3B1Ymxpc2hlciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygn cHVibGlzaGVyJyk7Ciskbm9kZV9wdWJsaXNoZXItPmluaXQoYWxsb3dzX3N0cmVhbWluZyA9PiAn bG9naWNhbCcpOworJG5vZGVfcHVibGlzaGVyLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25m JywKKwknbG9naWNhbF9kZWNvZGluZ193b3JrX21lbSA9IDY0a0InKTsKKyRub2RlX3B1Ymxpc2hl ci0+c3RhcnQ7CisKKyMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZQorbXkgJG5vZGVfc3Vic2NyaWJl ciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnc3Vic2NyaWJlcicpOworJG5vZGVf c3Vic2NyaWJlci0+aW5pdDsKKyRub2RlX3N1YnNjcmliZXItPnN0YXJ0OworCisjIFNldHVwIHN0 cnVjdHVyZSBvbiBwdWJsaXNoZXIKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYjEgKGEgaW50KSIpOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiMiAoYSBpbnQp Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFC TEUgdGVzdF90YWJfcGFydGl0aW9uZWQgKGEgaW50IHByaW1hcnkga2V5LCBiIHZhcmNoYXIpIik7 CisKKyMgU2V0dXAgc3RydWN0dXJlIG9uIHN1YnNjcmliZXIKKyMgV2UgbmVlZCB0byB0ZXN0IG5v cm1hbCB0YWJsZSBhbmQgcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYjEgKGEgaW50KSIpOworJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBUQUJMRSB0ZXN0 X3RhYjIgKGEgaW50KSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkNSRUFURSBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCAoYSBpbnQgcHJpbWFyeSBrZXks IGIgdmFyY2hhcikgUEFSVElUSU9OIEJZIFJBTkdFKGEpIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiAo TElLRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCkiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCBBVFRBQ0gg UEFSVElUSU9OIHRlc3RfdGFiX3BhcnRpdGlvbiBERUZBVUxUIgorKTsKKworIyBTZXR1cCBsb2dp Y2FsIHJlcGxpY2F0aW9uCitteSAkcHVibGlzaGVyX2Nvbm5zdHIgPSAkbm9kZV9wdWJsaXNoZXIt PmNvbm5zdHIgLiAnIGRibmFtZT1wb3N0Z3Jlcyc7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9ub3JtYWwgRk9SIFRB QkxFIHRlc3RfdGFiMSwgdGVzdF90YWIyIik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLAorCSJDUkVBVEUgUFVCTElDQVRJT04gdGFwX3B1Yl9wYXJ0aXRpb25lZCBGT1Ig VEFCTEUgdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKKworbXkgJGFwcG5hbWUgPSAndGFwX3N1Yic7 Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgIgorCUNSRUFURSBT VUJTQ1JJUFRJT04gdGFwX3N1YgorCUNPTk5FQ1RJT04gJyRwdWJsaXNoZXJfY29ubnN0ciBhcHBs aWNhdGlvbl9uYW1lPSRhcHBuYW1lJworCVBVQkxJQ0FUSU9OIHRhcF9wdWJfbm9ybWFsLCB0YXBf cHViX3BhcnRpdGlvbmVkCisJV0lUSCAoc3RyZWFtaW5nID0gcGFyYWxsZWwsIGNvcHlfZGF0YSA9 IGZhbHNlKSIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUp OworCisjIEludGVybGVhdmUgYSBwYWlyIG9mIHRyYW5zYWN0aW9ucywgZWFjaCBleGNlZWRpbmcg dGhlIDY0a0IgbGltaXQuCitteSAkaW4gID0gJyc7CitteSAkb3V0ID0gJyc7CisKK215ICR0aW1l ciA9IElQQzo6UnVuOjp0aW1lb3V0KCRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGltZW91dF9k ZWZhdWx0KTsKKworbXkgJGggPSAkbm9kZV9wdWJsaXNoZXItPmJhY2tncm91bmRfcHNxbCgncG9z dGdyZXMnLCBcJGluLCBcJG91dCwgJHRpbWVyLAorCW9uX2Vycm9yX3N0b3AgPT4gMCk7CisKKyMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IHRoZSB1bmlxdWUg Y29sdW1uIGluIHRoZSByZWxhdGlvbiBvbiB0aGUKKyMgc3Vic2NyaWJlci1zaWRlIGlzIG5vdCB0 aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVyLXNpZGUuIENoZWNrIHRoZQorIyBlcnJv ciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKworIyBGaXJzdCB3ZSBjaGVjayB0aGUgdW5pcXVlIGluZGV4IG9uIG5vcm1h bCB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVB VEUgVU5JUVVFIElOREVYIGlkeF90YWIxIG9uIHRlc3RfdGFiMShhKSIpOworCiskaW4gLj0gcXsK K0JFR0lOOworSU5TRVJUIElOVE8gdGVzdF90YWIxIFNFTEVDVCBpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwMDApIHMoaSk7Cit9OworJGgtPnB1bXBfbmI7CisKKyRub2RlX3B1Ymxpc2hlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjEgdmFsdWVzKDEpIik7 CisKKyRpbiAuPSBxeworQ09NTUlUOworXHEKK307CiskaC0+ZmluaXNoOworCiskbm9kZV9zdWJz Y3JpYmVyLT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCBy ZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJzY3Jp cHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCisJJG9mZnNldCk7CisKKyMgRHJv cCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVggaWR4X3RhYjEi KTsKKworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworbXkg JHJlc3VsdCA9CisgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2Rh dGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CisKKyMg Q2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhlIGVudmlyb25tZW50LgorJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlRSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMSIpOworJG5v ZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBUaGVuIHdlIGNo ZWNrIHRoZSB1bmlxdWUgaW5kZXggb24gcGFydGl0aW9uIHRhYmxlLgorJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggdGVzdF90YWJf Yl9wYXJ0aXRpb25faWR4IE9OIHRlc3RfdGFiX3BhcnRpdGlvbiAoYikiKTsKKworIyBDaGVjayB0 aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2Ny aWJlci0+bG9nZmlsZTsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiSU5TRVJUIElOVE8gdGVzdF90YWJfcGFydGl0aW9uZWQgU0VMRUNUIGksIG1kNShpOjp0ZXh0 KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkpIgorKTsKKworJG5vZGVfc3Vic2Ny aWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVw bGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2lu ZyBzdWJzY3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCisJJG9mZnNldCk7 CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29y a3MuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRST1AgSU5ERVgg dGVzdF90YWJfYl9wYXJ0aXRpb25faWR4Iik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlv bmVkIik7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3Jp YmVyIGFmdGVyIGRyb3BwaW5nIGluZGV4Jyk7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBU cmlnZ2VycyB3aGljaCBleGVjdXRlIG5vbi1pbW11dGFibGUgZnVuY3Rpb24gYXJlIG5vdCBhbGxv d2VkIG9uIHRoZQorIyBzdWJzY3JpYmVyIHNpZGUuIENoZWNrIHRoZSBlcnJvciByZXBvcnRlZCBi eSBiYWNrZ3JvdW5kIHdvcmtlciBpbiB0aGlzIGNhc2UuCisjID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KworIyBGaXJzdCB3ZSBjaGVjayB0aGUgdHJpZ2dlciBmdW5jdGlvbiBvbiBub3JtYWwgdGFibGUu Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVU5JUVVF IElOREVYIGlkeF90YWIyIG9uIHRlc3RfdGFiMihhKSIpOworJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIkNSRUFURSBVTklRVUUgSU5ERVggaWR4X3RhYjIgb24gdGVz dF90YWIyKGEpIik7CisKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMn LCBxcXsKK0NSRUFURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmNfdGFiMV91bnNhZmUoKSBSRVRVUk5T IFRSSUdHRVIgQVMgXCRcJAorICBCRUdJTgorICAgIElOU0VSVCBJTlRPIHB1YmxpYy50ZXN0X3Rh YjIgVkFMVUVTIChORVcuKik7CisgICAgUkVUVVJOIE5FVzsKKyAgRU5ECitcJFwkIGxhbmd1YWdl IHBscGdzcWw7CitDUkVBVEUgVFJJR0dFUiB0cmlfdGFiMV91bnNhZmUKK0JFRk9SRSBJTlNFUlQg T04gcHVibGljLnRlc3RfdGFiMQorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdn ZXJfZnVuY190YWIxX3Vuc2FmZSgpOworQUxURVIgVEFCTEUgdGVzdF90YWIxIEVOQUJMRSBSRVBM SUNBIFRSSUdHRVIgdHJpX3RhYjFfdW5zYWZlOworCitDUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9m dW5jX3RhYjFfc2FmZSgpIFJFVFVSTlMgVFJJR0dFUiBBUyBcJFwkCisgIEJFR0lOCisgICAgUkFJ U0UgTk9USUNFICd0ZXN0IGZvciBzYWZlIHRyaWdnZXIgZnVuY3Rpb24nOworCVJFVFVSTiBORVc7 CisgIEVORAorXCRcJCBsYW5ndWFnZSBwbHBnc3FsOworQUxURVIgRlVOQ1RJT04gdHJpZ2dlcl9m dW5jX3RhYjFfc2FmZSBJTU1VVEFCTEU7CitDUkVBVEUgVFJJR0dFUiB0cmlfdGFiMV9zYWZlCitC RUZPUkUgSU5TRVJUIE9OIHB1YmxpYy50ZXN0X3RhYjEKK0ZPUiBFQUNIIFJPVyBFWEVDVVRFIFBS T0NFRFVSRSB0cmlnZ2VyX2Z1bmNfdGFiMV9zYWZlKCk7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vi c2NyaWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+ bG9nZmlsZTsKKworJGluIC49IHF7CitCRUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMSBWQUxV RVMoNTAwMSk7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMSBWQUxVRVMoNTAw MSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2Rl X3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fu bm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1 YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKwor IyBVc2luZyB0cmlnZ2VyIHdpdGggaW1tdXRhYmxlIGZ1bmN0aW9uLCBub3cgaXQgd29ya3MuCisk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitBTFRFUiBUQUJM RSB0ZXN0X3RhYjEgRU5BQkxFIFJFUExJQ0EgVFJJR0dFUiB0cmlfdGFiMV9zYWZlOworRFJPUCBU UklHR0VSIHRyaV90YWIxX3Vuc2FmZSBPTiBwdWJsaWMudGVzdF90YWIxOworfSk7CisKKyRub2Rl X3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAk bm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBG Uk9NIHRlc3RfdGFiMSIpOworaXMoJHJlc3VsdCwgcXEoMiksICdkYXRhIHJlcGxpY2F0ZWQgdG8g c3Vic2NyaWJlciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicpOworCisjIENsZWFu IHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3N1YnNjcmliZXItPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0RST1AgSU5ERVggaWR4X3RhYjI7CitEUk9QIFRS SUdHRVIgdHJpX3RhYjFfc2FmZSBPTiBwdWJsaWMudGVzdF90YWIxOworRFJPUCBmdW5jdGlvbiB0 cmlnZ2VyX2Z1bmNfdGFiMV91bnNhZmU7CitEUk9QIGZ1bmN0aW9uIHRyaWdnZXJfZnVuY190YWIx X3NhZmU7Cit9KTsKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFx eworRFJPUCBJTkRFWCBpZHhfdGFiMjsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKK1RSVU5D QVRFIFRBQkxFIHRlc3RfdGFiMjsKK30pOworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRj aHVwKCRhcHBuYW1lKTsKKworIyBUaGVuIHdlIGNoZWNrIHRoZSB0cmlnZ2VyIGZ1bmN0aW9uIG9u IHBhcnRpdGlvbiB0YWJsZS4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdy ZXMnLCBxcXsKK0NSRUFURSBGVU5DVElPTiB0cmlnZ2VyX2Z1bmMoKSBSRVRVUk5TIFRSSUdHRVIg QVMgXCRcJAorICBCRUdJTgorICAgIFJFVFVSTiBOVUxMOworICBFTkQKK1wkXCQgbGFuZ3VhZ2Ug cGxwZ3NxbDsKK0NSRUFURSBUUklHR0VSIGluc2VydF90cmlnCitCRUZPUkUgSU5TRVJUIE9OIHRl c3RfdGFiX3BhcnRpdGlvbgorRk9SIEVBQ0ggUk9XIEVYRUNVVEUgUFJPQ0VEVVJFIHRyaWdnZXJf ZnVuYygpOworQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEVOQUJMRSBSRVBMSUNBIFRS SUdHRVIgaW5zZXJ0X3RyaWc7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJv bSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkRFTEVURSBGUk9NIHRlc3RfdGFi X3BhcnRpdGlvbmVkIik7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9F UlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1 YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBz dHJlYW1pbmc9cGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIHRyaWdnZXIgb24g dGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorCSJEUk9QIFRSSUdHRVIgaW5zZXJ0X3RyaWcgT04gdGVzdF90YWJfcGFy dGl0aW9uIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7 CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7CitpcygkcmVzdWx0 LCBxcSgwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRy aWdnZXInKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRo YXQgY29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBjb250YWlucyBhCisjIG5vbi1pbW11 dGFibGUgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJl cG9ydGVkIGJ5CisjIGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorCisjIEZpcnN0IHdlIGNoZWNrIHRoZSBjb2x1bW4gZGVmYXVsdCB2YWx1ZSBl eHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgVkFMVUVTKDEpIik7CisKKyRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBGVU5DVElPTiBm dW5jX2NvdW50X3RhYjIoKSBSRVRVUk5TIElOVCBBUyBcJFwkCisgIEJFR0lOCisgICAgUkVUVVJO IChTRUxFQ1QgY291bnQoKikgRlJPTSBwdWJsaWMudGVzdF90YWIyKTsKKyAgRU5ECitcJFwkIGxh bmd1YWdlIHBscGdzcWw7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTFVNTiBiIGludCBE RUZBVUxUIGZ1bmNfY291bnRfdGFiMigpOworfSk7CisKKyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIg bG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7 CisKKyRpbiAuPSBxeworQkVHSU47CitUUlVOQ0FURSB0ZXN0X3RhYjI7CitJTlNFUlQgSU5UTyB0 ZXN0X3RhYjEgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307 CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IklOU0VSVCBJTlRPIHRlc3RfdGFiMShhKSBWQUxVRVMoMSkiKTsKKworJGluIC49IHF7CitDT01N SVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xv ZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVs YXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3Ry ZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBBbHRlciBkZWZhdWx0IHZhbHVlcyB0 byBpbW11dGFibGUgZXhwcmVzc2lvbiwgbm93IGl0IHdvcmtzLgorJG5vZGVfc3Vic2NyaWJlci0+ c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xV TU4gYiBTRVQgREVGQVVMVCAxIik7CisKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1 cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOworaXMoJHJlc3Vs dCwgcXEoNTAwMSksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIHVzaW5n IGltbXV0YWJsZSBleHByZXNzaW9uJyk7CisKKyMgQ2xlYW4gdXAgdGVzdCBkYXRhIGZyb20gdGhl IGVudmlyb25tZW50LgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJB TFRFUiBUQUJMRSB0ZXN0X3RhYjEgRFJPUCBDT0xVTU4gYiIpOworJG5vZGVfcHVibGlzaGVyLT5z YWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7CitUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CitU UlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjI7Cit9KTsKKyRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3Jf Y2F0Y2h1cCgkYXBwbmFtZSk7CisKKyMgVGhlbiB3ZSBjaGVjayB0aGUgY29sdW1uIGRlZmF1bHQg dmFsdWUgZXhwcmVzc2lvbiBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5z YWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIEFM VEVSIENPTFVNTiBiIFNFVCBERUZBVUxUIHJhbmRvbSgpIik7CisKKyMgQ2hlY2sgdGhlIHN1YnNj cmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNjcmliZXItPmxv Z2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VS VCBJTlRPIHRlc3RfdGFiX3BhcnRpdGlvbmVkIFNFTEVDVCBpLCBtZDUoaTo6dGV4dCkgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKSIKKyk7CisKKyRub2RlX3N1YnNjcmliZXItPndh aXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0 YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2Ny aXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9cGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIERy b3AgZGVmYXVsdCB2YWx1ZSBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIkFMVEVSIFRBQkxFIHRlc3RfdGFi X3BhcnRpdGlvbiBBTFRFUiBDT0xVTU4gYiBEUk9QIERFRkFVTFQiKTsKKworJG5vZGVfcHVibGlz aGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworJHJlc3VsdCA9CisgICRub2RlX3N1 YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVz dF90YWJfcGFydGl0aW9uZWQiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDApLAorCSdkYXRhIHJlcGxp Y2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyBkZWZhdWx0IHZhbHVlIGV4cHJlc3Np b24nKTsKKworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQg ZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUKKyMg ZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVk IGJ5IGJhY2tncm91bmQKKyMgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorCisjIEJlY2F1c2UgdGhlIGNvbHVtbiB0eXBlIG9mIHRoZSBwYXJ0aXRpb24gdGFibGUg bXVzdCBiZSB0aGUgc2FtZSBhcyBpdHMgcGFyZW50CisjIHRhYmxlLCBvbmx5IHRlc3Qgbm9ybWFs IHRhYmxlIGhlcmUuCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5T RVJUIElOVE8gdGVzdF90YWIyIFZBTFVFUygxKSIpOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVf cHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK0NSRUFURSBET01BSU4gdG1wX2RvbWFpbiBBUyBpbnQg Q0hFQ0sgKFZBTFVFID4gLTEpOworQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBh IFRZUEUgdG1wX2RvbWFpbjsKK30pOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXF7CitDUkVBVEUgRE9NQUlOIHRtcF9kb21haW4gQVMgSU5UIENPTlNUUkFJ TlQgZG9tYWluX2NoZWNrIENIRUNLIChWQUxVRSA+PSBmdW5jX2NvdW50X3RhYjIoKSk7CitBTFRF UiBUQUJMRSB0ZXN0X3RhYjEgQUxURVIgQ09MVU1OIGEgVFlQRSB0bXBfZG9tYWluOworfSk7CisK KyMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRu b2RlX3N1YnNjcmliZXItPmxvZ2ZpbGU7CisKKyRpbiAuPSBxeworQkVHSU47CitUUlVOQ0FURSB0 ZXN0X3RhYjI7CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjEgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTAwMCkgcyhpKTsKK307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMShhKSBWQUxVRVMo MSkiKTsKKworJGluIC49IHF7CitDT01NSVQ7CitccQorfTsKKyRoLT5maW5pc2g7CisKKyRub2Rl X3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fu bm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1 YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKwor IyBEcm9wIGRvbWFpbiBjb25zdHJhaW50IGV4cHJlc3Npb24sIG5vdyBpdCB3b3Jrcy4KKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBET01BSU4gdG1wX2Rv bWFpbiBEUk9QIENPTlNUUkFJTlQgZG9tYWluX2NoZWNrIik7CisKKyRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CisKKyRyZXN1bHQgPQorICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi MSIpOworaXMoJHJlc3VsdCwgcXEoNTAwMSksCisJJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3Jp YmVyIGFmdGVyIHVzaW5nIGltbXV0YWJsZSBleHByZXNzaW9uJworKTsKKworIyBDbGVhbiB1cCB0 ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90YWIxIEFMVEVSIENPTFVNTiBhIFRZ UEUgaW50Iik7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsK K1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMTsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMjsKK30p OworJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CisjIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29uc3RyYWludCBleHBy ZXNzaW9uIGNvbnRhaW5zIGEgbm9uLWltbXV0YWJsZSBmdW5jdGlvbgorIyBvbiB0aGUgc3Vic2Ny aWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIg aW4gdGhpcworIyBjYXNlLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyMgRmlyc3Qgd2UgY2hl Y2sgdGhlIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBvbiBub3JtYWwgdGFibGUuCiskbm9kZV9wdWJs aXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIyIFZBTFVF UygxKSIpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXF7 CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTlNUUkFJTlQgY29uc3RfdGFiMV91bnNhZmUg Q0hFQ0soYSA+PSBmdW5jX2NvdW50X3RhYjIoKSk7Cit9KTsKKworIyBDaGVjayB0aGUgc3Vic2Ny aWJlciBsb2cgZnJvbSBub3cgb24uCiskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9n ZmlsZTsKKworJGluIC49IHF7CitCRUdJTjsKK1RSVU5DQVRFIHRlc3RfdGFiMjsKK0lOU0VSVCBJ TlRPIHRlc3RfdGFiMSBTRUxFQ1QgaSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSBzKGkp OworfTsKKyRoLT5wdW1wX25iOworCiskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiSU5TRVJUIElOVE8gdGVzdF90YWIxKGEpIFZBTFVFUygxKSIpOworCiskaW4gLj0gcXsK K0NPTU1JVDsKK1xxCit9OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9m b3JfbG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdl dCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRl ciBzdHJlYW1pbmc9cGFyYWxsZWwvLAorCSRvZmZzZXQpOworCisjIEFsdGVyIGNvbnN0cmFpbnQg ZXhwcmVzc2lvbiB0byBpbW11dGFibGUgZXhwcmVzc2lvbiwgbm93IGl0IHdvcmtzLgorJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQUxURVIgVEFCTEUgdGVz dF90YWIxIERST1AgQ09OU1RSQUlOVCBjb25zdF90YWIxX3Vuc2FmZTsKK0FMVEVSIFRBQkxFIHRl c3RfdGFiMSBBREQgQ09OU1RSQUlOVCBjb25zdF90YWIxX3NhZmUgQ0hFQ0soYSA+PSAwKTsKK30p OworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVz dWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDUwMDEpLAorCSdkYXRh IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lv bicpOworCisjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIx IERST1AgQ09OU1RSQUlOVCBjb25zdF90YWIxX3NhZmUiKTsKKyRub2RlX3B1Ymxpc2hlci0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIxOworVFJV TkNBVEUgVEFCTEUgdGVzdF90YWIyOworfSk7Ciskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOworCisjIFRoZW4gd2UgY2hlY2sgdGhlIGNvbnN0cmFpbnQgZXhwcmVz c2lvbiBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJ J3Bvc3RncmVzJywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUREIENPTlNU UkFJTlQgdGVzdF90YWJfY29uIGNoZWNrIChhID4gcmFuZG9tKCkpOworfSk7CisKKyMgQ2hlY2sg dGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgorJG9mZnNldCA9IC1zICRub2RlX3N1YnNj cmliZXItPmxvZ2ZpbGU7CisKKyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs ICJERUxFVEUgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworCiskbm9kZV9zdWJzY3JpYmVy LT53YWl0X2Zvcl9sb2coCisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNh dGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1 YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKwor IyBEcm9wIGNvbnN0cmFpbnQgb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRFUiBUQUJMRSB0ZXN0X3Rh Yl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX2NvbiIpOworCiskbm9kZV9wdWJs aXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEoMCksCisJJ2RhdGEgcmVwbGlj YXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGNvbnN0cmFpbnQgZXhwcmVzc2lvbicp OworCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgSXQgaXMgbm90IGFsbG93ZWQgdGhhdCBmb3Jl aWduIGtleSBvbiB0aGUgc3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IKKyMgcmVwb3J0 ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLgorIyA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CisKKyMgRmlyc3Qgd2UgY2hlY2sgdGhlIGZvcmVpZ24ga2V5IG9uIG5vcm1hbCB0YWJsZS4K KyRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIFRB QkxFIHRhYl9ub3B1YmxpYyhhIGludCk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjIgQUREIFBSSU1B UlkgS0VZIChhKTsKK0FMVEVSIFRBQkxFIHRlc3RfdGFiMiBSRVBMSUNBIElERU5USVRZIEZVTEw7 CitJTlNFUlQgSU5UTyB0ZXN0X3RhYjIgVkFMVUVTKDEpOworfSk7Ciskbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiMiBBREQgUFJJTUFS WSBLRVkgKGEpOyIpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVz JywgcXF7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYjEgQUREIENPTlNUUkFJTlQgdGVzdF90YWIxZmsg Rk9SRUlHTiBLRVkoYSkgUkVGRVJFTkNFUyB0ZXN0X3RhYjIoYSk7CitTRUxFQ1QgJ0FMVEVSIFRB QkxFIHRlc3RfdGFiMSBFTkFCTEUgUkVQTElDQSBUUklHR0VSICInIHx8IHRnbmFtZSB8fCAnIicg RlJPTSBwZ190cmlnZ2VyIFdIRVJFIHRncmVsaWQgPSAndGVzdF90YWIxJzo6cmVnY2xhc3M6Om9p ZCBcXGdleGVjCit9KTsKKworIyBDaGVjayB0aGUgc3Vic2NyaWJlciBsb2cgZnJvbSBub3cgb24u Ciskb2Zmc2V0ID0gLXMgJG5vZGVfc3Vic2NyaWJlci0+bG9nZmlsZTsKKworJGluIC49IHF7CitC RUdJTjsKK0lOU0VSVCBJTlRPIHRlc3RfdGFiMShhKSBWQUxVRVMoMSk7CitJTlNFUlQgSU5UTyB0 YWJfbm9wdWJsaWMgU0VMRUNUIGkgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwMCkgcyhpKTsK K307CiskaC0+cHVtcF9uYjsKKworJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIkRFTEVURSBGUk9NIHRlc3RfdGFiMiIpOworCiskaW4gLj0gcXsKK0NPTU1JVDsKK1xxCit9 OworJGgtPmZpbmlzaDsKKworJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAorCXFyL0VS Uk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVi bGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9cGFy YWxsZWwvLAorCSRvZmZzZXQpOworCisjIERyb3AgdGhlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQg b24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCB0 ZXN0X3RhYjFmayIpOworCiskbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5h bWUpOworCiskcmVzdWx0ID0KKyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jl cycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKK2lzKCRyZXN1bHQsIHFxKDEp LAorCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9wcGluZyB0aGUgZm9y ZWlnbiBrZXknKTsKKworIyBDbGVhbiB1cCB0ZXN0IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQu Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcXsKK1RSVU5DQVRF IFRBQkxFIHRlc3RfdGFiMTsKK1RSVU5DQVRFIFRBQkxFIHRlc3RfdGFiMjsKK30pOworJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKKworIyBUaGVuIHdlIGNoZWNr IHRoZSBmb3JlaWduIGtleSBvbiBwYXJ0aXRpb24gdGFibGUuCiskbm9kZV9wdWJsaXNoZXItPndh aXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAor CSdwb3N0Z3JlcycsIHFxeworQ1JFQVRFIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbl9mIChhIGlu dCBwcmltYXJ5IGtleSk7CitBTFRFUiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gQUREIENPTlNU UkFJTlQgdGVzdF90YWJfcGF0aXRpb25fZmsgRk9SRUlHTiBLRVkoYSkgUkVGRVJFTkNFUyB0ZXN0 X3RhYl9wYXJ0aXRpb25fZihhKTsKK30pOworCisjIENoZWNrIHRoZSBzdWJzY3JpYmVyIGxvZyBm cm9tIG5vdyBvbi4KKyRvZmZzZXQgPSAtcyAkbm9kZV9zdWJzY3JpYmVyLT5sb2dmaWxlOworCisk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJJTlNFUlQgSU5UTyB0ZXN0 X3RhYl9wYXJ0aXRpb25lZCBTRUxFQ1QgaSwgbWQ1KGk6OnRleHQpIEZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwMDApIHMoaSkiCispOworCiskbm9kZV9zdWJzY3JpYmVyLT53YWl0X2Zvcl9sb2co CisJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5vdCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0 aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJh bWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKKwkkb2Zmc2V0KTsKKworIyBEcm9wIHRoZSBmb3Jl aWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCiskbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgVEFCTEUgdGVzdF90 YWJfcGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9wYXRpdGlvbl9mayIpOworCisk bm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOworCiskcmVzdWx0ID0K KyAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQo KikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOworaXMoJHJlc3VsdCwgcXEoNTAwMCksCisJ J2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIHRoZSBmb3JlaWdu IGtleScpOworCiskbm9kZV9zdWJzY3JpYmVyLT5zdG9wOworJG5vZGVfcHVibGlzaGVyLT5zdG9w OworCitkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggOWVmN2Jj MTVmNC4uMTJmNDEwM2YyMyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE4OTEsNiAr MTg5MSw3IEBAIFBhZ2VYTG9nUmVjUHRyCiBQYWdldGFibGVFbnRyeQogUGFpcnMKIFBhcmFsbGVs QXBwZW5kU3RhdGUKK1BhcmFsbGVsQXBwbHlTYWZldHkKIFBhcmFsbGVsQml0bWFwSGVhcFN0YXRl CiBQYXJhbGxlbEJsb2NrVGFibGVTY2FuRGVzYwogUGFyYWxsZWxCbG9ja1RhYmxlU2Nhbldvcmtl cgotLSAKMi4yMy4wLndpbmRvd3MuMQoK --_006_OS3PR01MB6275739E73E8BEC5D13FB6739E6B9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v22-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch" Content-Description: v22-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch Content-Disposition: attachment; filename="v22-0004-Retry-to-apply-streaming-xact-only-in-apply-work.patch"; size=31319; creation-date="Tue, 16 Aug 2022 07:29:00 GMT"; modification-date="Tue, 16 Aug 2022 07:33:02 GMT" Content-Transfer-Encoding: base64 RnJvbSAwOTNiZmZlYjg5MGU4MDVmNmFjMjI0NzE5MzFjZGM2MDc3MmMyM2JlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB3YW5ndyA8d2FuZ3cuZm5zdEBmdWppdHN1LmNvbT4KRGF0ZTog V2VkLCAxNSBKdW4gMjAyMiAxMTowMjowOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjIyIDQvNV0g UmV0cnkgdG8gYXBwbHkgc3RyZWFtaW5nIHhhY3Qgb25seSBpbiBhcHBseSB3b3JrZXIKCldoZW4g dGhlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgaXMgc2V0IHN0cmVhbWluZz1wYXJhbGxlbCwgdGhl IGxvZ2ljIHRyaWVzIHRvCmFwcGx5IHRoZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgYW4g YXBwbHkgYmFja2dyb3VuZCB3b3JrZXIuIElmIHRoaXMKZmFpbHMgdGhlIGJhY2tncm91bmQgd29y a2VyIGV4aXRzIHdpdGggYW4gZXJyb3IuCgpJbiB0aGlzIGNhc2UsIHJldHJ5IGFwcGx5aW5nIHRo ZSBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdXNpbmcgdGhlIG5vcm1hbApzdHJlYW1pbmc9b24gbW9k ZS4gVGhpcyBpcyBkb25lIHRvIGF2b2lkIGdldHRpbmcgY2F1Z2h0IGluIGEgbG9vcCBvZiB0aGUg c2FtZQpyZXRyeSBlcnJvcnMuCgpBIG5ldyBmbGFnIGZpZWxkICJzdWJyZXRyeSIgaGFzIGJlZW4g aW50cm9kdWNlZCB0byBjYXRhbG9nICJwZ19zdWJzY3JpcHRpb24iLgpJZiB0aGUgc3Vic2NyaWJl ciBleGl0cyB3aXRoIGFuIGVycm9yLCB0aGlzIGZsYWcgd2lsbCBiZSBzZXQgdHJ1ZSwgYW5kCndo ZW5ldmVyIHRoZSB0cmFuc2FjdGlvbiBpcyBhcHBsaWVkIHN1Y2Nlc3NmdWxseSwgdGhpcyBmbGFn IGlzIHJlc2V0IGZhbHNlLgpOb3csIHdoZW4gZGVjaWRpbmcgaG93IHRvIGFwcGx5IGEgc3RyZWFt aW5nIHRyYW5zYWN0aW9uLCB0aGUgbG9naWMgY2FuIGtub3cgaWYKdGhpcyB0cmFuc2FjdGlvbiBo YXMgcHJldmlvdXNseSBmYWlsZWQgb3Igbm90IChieSBjaGVja2luZyB0aGUgInN1YnJldHJ5Igpm aWVsZCkuCi0tLQogZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwgICAgICAgICAgICAgICAgICAg IHwgICA5ICsKIGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sICAgICB8 ICAgNSArCiBzcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jICAgICAgICAgfCAg IDEgKwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgICAgIHwgICAy ICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9zdWJzY3JpcHRpb25jbWRzLmMgICAgICAgfCAgIDEg KwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvYXBwbHliZ3dvcmtlci5jICAgICAgIHwgIDE2ICst CiBzcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jICAgICAgfCAxNzcgKysr KysrKysrKysrKy0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jICAgICAgICAgICAgICAg ICAgICAgfCAgIDUgKy0KIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmggICAg ICAgICB8ICAgNCArCiAuLi4vc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbCAg ICAgfCAxNDUgKysrKysrKy0tLS0tLS0KIDEwIGZpbGVzIGNoYW5nZWQsIDIzNyBpbnNlcnRpb25z KCspLCAxMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2NhdGFsb2dz LnNnbWwgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAppbmRleCBjNTI1NTJlODQwLi44Nzc4 N2E5MGU2IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNzkwOCw2ICs3OTA4LDE1IEBAIFNDUkFNLVNIQS0y NTYkPHJlcGxhY2VhYmxlPiZsdDtpdGVyYXRpb24gY291bnQmZ3Q7PC9yZXBsYWNlYWJsZT46PHJl cGxhY2VhYmxlPiZsCiAgICAgICA8L3BhcmE+PC9lbnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAg PHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xl PSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPnN1YnJldHJ5PC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgor ICAgICAgIFRydWUgaWYgdGhlIHByZXZpb3VzIGFwcGx5IGNoYW5nZSBmYWlsZWQsIG5lY2Vzc2l0 YXRpbmcgYSByZXRyeQorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCiAgICAg IDxyb3c+CiAgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9s ZT0iY29sdW1uX2RlZmluaXRpb24iPgogICAgICAgIDxzdHJ1Y3RmaWVsZD5zdWJjb25uaW5mbzwv c3RydWN0ZmllbGQ+IDx0eXBlPnRleHQ8L3R5cGU+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv cmVmL2NyZWF0ZV9zdWJzY3JpcHRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1 YnNjcmlwdGlvbi5zZ21sCmluZGV4IDU2YmNiZjQzZTEuLjg5ZjNlZTM5YWMgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3N1YnNjcmlwdGlvbi5zZ21sCkBAIC0yNDUsNiArMjQ1LDExIEBAIENS RUFURSBTVUJTQ1JJUFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnN1YnNjcmlw dGlvbl9uYW1lPC9yZXBsYWNlYWJsCiAgICAgICAgICAgYWxzbyBiZSB0aGUgdW5pcXVlIGNvbHVt biBvbiB0aGUgcHVibGlzaGVyLXNpZGU7IDIpIHRoZXJlIGNhbm5vdCBiZQogICAgICAgICAgIGFu eSBub24taW1tdXRhYmxlIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSBzdWJzY3JpYmVyLXNpZGUgcmVw bGljYXRlZAogICAgICAgICAgIHRhYmxlLgorICAgICAgICAgIFdoZW4gYXBwbHlpbmcgYSBzdHJl YW1pbmcgdHJhbnNhY3Rpb24sIGlmIGVpdGhlciByZXF1aXJlbWVudCBpcyBub3QKKyAgICAgICAg ICBtZXQsIHRoZSBiYWNrZ3JvdW5kIHdvcmtlciB3aWxsIGV4aXQgd2l0aCBhbiBlcnJvci4KKyAg ICAgICAgICBUaGUgPGxpdGVyYWw+cGFyYWxsZWw8L2xpdGVyYWw+IG1vZGUgaXMgZGlzcmVnYXJk ZWQgd2hlbiByZXRyeWluZzsKKyAgICAgICAgICBpbnN0ZWFkIHRoZSB0cmFuc2FjdGlvbiB3aWxs IGJlIGFwcGxpZWQgdXNpbmcgPGxpdGVyYWw+b248L2xpdGVyYWw+CisgICAgICAgICAgbW9kZS4K ICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICA8L3Zhcmxpc3Rl bnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmMg Yi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5jCmluZGV4IGE1MDZmYzNlYzgu LjcyM2IxNDFjNzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfc3Vic2NyaXB0 aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb24uYwpAQCAtNzEs NiArNzEsNyBAQCBHZXRTdWJzY3JpcHRpb24oT2lkIHN1YmlkLCBib29sIG1pc3Npbmdfb2spCiAJ c3ViLT5zdHJlYW0gPSBzdWJmb3JtLT5zdWJzdHJlYW07CiAJc3ViLT50d29waGFzZXN0YXRlID0g c3ViZm9ybS0+c3VidHdvcGhhc2VzdGF0ZTsKIAlzdWItPmRpc2FibGVvbmVyciA9IHN1YmZvcm0t PnN1YmRpc2FibGVvbmVycjsKKwlzdWItPnJldHJ5ID0gc3ViZm9ybS0+c3VicmV0cnk7CiAKIAkv KiBHZXQgY29ubmluZm8gKi8KIAlkYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihTVUJTQ1JJUFRJT05P SUQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwgYi9z cmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKaW5kZXggZjM2OWIxZmMxNC4uODI4 NGNkZDAwYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3Fs CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApAQCAtMTI5OSw3ICsx Mjk5LDcgQEAgUkVWT0tFIEFMTCBPTiBwZ19yZXBsaWNhdGlvbl9vcmlnaW5fc3RhdHVzIEZST00g cHVibGljOwogUkVWT0tFIEFMTCBPTiBwZ19zdWJzY3JpcHRpb24gRlJPTSBwdWJsaWM7CiBHUkFO VCBTRUxFQ1QgKG9pZCwgc3ViZGJpZCwgc3Vic2tpcGxzbiwgc3VibmFtZSwgc3Vib3duZXIsIHN1 YmVuYWJsZWQsCiAgICAgICAgICAgICAgIHN1YmJpbmFyeSwgc3Vic3RyZWFtLCBzdWJ0d29waGFz ZXN0YXRlLCBzdWJkaXNhYmxlb25lcnIsCi0gICAgICAgICAgICAgIHN1YnNsb3RuYW1lLCBzdWJz eW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9yaWdpbikKKyAgICAgICAgICAgICAgc3Vi cmV0cnksIHN1YnNsb3RuYW1lLCBzdWJzeW5jY29tbWl0LCBzdWJwdWJsaWNhdGlvbnMsIHN1Ym9y aWdpbikKICAgICBPTiBwZ19zdWJzY3JpcHRpb24gVE8gcHVibGljOwogCiBDUkVBVEUgVklFVyBw Z19zdGF0X3N1YnNjcmlwdGlvbl9zdGF0cyBBUwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvc3Vic2NyaXB0aW9uY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc3Vic2NyaXB0 aW9uY21kcy5jCmluZGV4IDc4YjdlZTc1NDMuLmEwMjM3NTI0MmQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3N1YnNjcmlwdGlvbmNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9zdWJzY3JpcHRpb25jbWRzLmMKQEAgLTY4OSw2ICs2ODksNyBAQCBDcmVhdGVTdWJzY3Jp cHRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVTdWJzY3JpcHRpb25TdG10ICpzdG10LAog CQkJCQkgTE9HSUNBTFJFUF9UV09QSEFTRV9TVEFURV9QRU5ESU5HIDoKIAkJCQkJIExPR0lDQUxS RVBfVFdPUEhBU0VfU1RBVEVfRElTQUJMRUQpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlv bl9zdWJkaXNhYmxlb25lcnIgLSAxXSA9IEJvb2xHZXREYXR1bShvcHRzLmRpc2FibGVvbmVycik7 CisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJldHJ5IC0gMV0gPSBCb29sR2V0RGF0 dW0oZmFsc2UpOwogCXZhbHVlc1tBbnVtX3BnX3N1YnNjcmlwdGlvbl9zdWJjb25uaW5mbyAtIDFd ID0KIAkJQ1N0cmluZ0dldFRleHREYXR1bShjb25uaW5mbyk7CiAJaWYgKG9wdHMuc2xvdF9uYW1l KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9hcHBseWJnd29y a2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYwpp bmRleCAzNzE0MDhkNDg1Li44YjU3MDg1NzI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2FwcGx5Ymd3b3JrZXIuYwpAQCAtMTA2LDYgKzEwNiwxOCBAQCBhcHBseV9i Z3dvcmtlcl9jYW5fc3RhcnQoVHJhbnNhY3Rpb25JZCB4aWQpCiAJaWYgKCFYTG9nUmVjUHRySXNJ bnZhbGlkKE15U3Vic2NyaXB0aW9uLT5za2lwbHNuKSkKIAkJcmV0dXJuIGZhbHNlOwogCisJLyoK KwkgKiBEb24ndCB1c2UgYXBwbHkgYmFja2dyb3VuZCB3b3JrZXJzIGZvciByZXRyaWVzLCBiZWNh dXNlIGl0IGlzIHBvc3NpYmxlCisJICogdGhhdCB0aGUgbGFzdCB0aW1lIHdlIHRyaWVkIHRvIGFw cGx5IGEgdHJhbnNhY3Rpb24gdXNpbmcgYW4gYXBwbHkKKwkgKiBiYWNrZ3JvdW5kIHdvcmtlciB0 aGUgY2hlY2tzIGZhaWxlZCAoc2VlIGZ1bmN0aW9uCisJICogYXBwbHlfYmd3b3JrZXJfcmVsYXRp b25fY2hlY2spLgorCSAqLworCWlmIChNeVN1YnNjcmlwdGlvbi0+cmV0cnkpCisJeworCQllbG9n KERFQlVHMSwgImFwcGx5IGJhY2tncm91bmQgd29ya2VycyBhcmUgbm90IHVzZWQgZm9yIHJldHJp ZXMiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKwogCS8qCiAJICogRm9yIHN0cmVhbWluZyB0cmFu c2FjdGlvbnMgdGhhdCBhcmUgYmVpbmcgYXBwbGllZCBpbiBhcHBseSBiYWNrZ3JvdW5kCiAJICog d29ya2VyLCB3ZSBjYW5ub3QgZGVjaWRlIHdoZXRoZXIgdG8gYXBwbHkgdGhlIGNoYW5nZSBmb3Ig YSByZWxhdGlvbgpAQCAtODA0LDcgKzgxNiw1IEBAIGFwcGx5X2Jnd29ya2VyX3JlbGF0aW9uX2No ZWNrKExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsKQogCQkJCQkJcmVsLT5yZW1vdGVyZWwubnNw bmFtZSwgcmVsLT5yZW1vdGVyZWwucmVsbmFtZSksCiAJCQkJIGVycmRldGFpbCgiVGhlIHVuaXF1 ZSBjb2x1bW4gb24gc3Vic2NyaWJlciBpcyBub3QgdGhlIHVuaXF1ZSAiCiAJCQkJCQkgICAiY29s dW1uIG9uIHB1Ymxpc2hlciBvciB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgIgotCQkJCQkJICAgIm5v bi1pbW11dGFibGUgZnVuY3Rpb24uIiksCi0JCQkJIGVycmhpbnQoIlBsZWFzZSBjaGFuZ2UgdG8g dXNlIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgIgotCQkJCQkJICJzdHJlYW1pbmc9b24uIikpKTsK KwkJCQkJCSAgICJub24taW1tdXRhYmxlIGZ1bmN0aW9uLiIpKSk7CiB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC93b3JrZXIuYwppbmRleCBjNTI2NjllOTZjLi4xMzZjOTVjNmZiIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCisrKyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKQEAgLTM0Miw3ICszNDIs NyBAQCBzdGF0aWMgdm9pZCBzdG9yZV9mbHVzaF9wb3NpdGlvbihYTG9nUmVjUHRyIHJlbW90ZV9s c24pOwogCiBzdGF0aWMgdm9pZCBtYXliZV9yZXJlYWRfc3Vic2NyaXB0aW9uKHZvaWQpOwogCi1z dGF0aWMgdm9pZCBEaXNhYmxlU3Vic2NyaXB0aW9uQW5kRXhpdCh2b2lkKTsKK3N0YXRpYyB2b2lk IERpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKHZvaWQpOwogCiBzdGF0aWMgdm9pZCBhcHBseV9o YW5kbGVfY29tbWl0X2ludGVybmFsKExvZ2ljYWxSZXBDb21taXREYXRhICpjb21taXRfZGF0YSk7 CiBzdGF0aWMgdm9pZCBhcHBseV9oYW5kbGVfaW5zZXJ0X2ludGVybmFsKEFwcGx5RXhlY3V0aW9u RGF0YSAqZWRhdGEsCkBAIC0zNzksNiArMzc5LDggQEAgc3RhdGljIHZvaWQgY2xlYXJfc3Vic2Ny aXB0aW9uX3NraXBfbHNuKFhMb2dSZWNQdHIgZmluaXNoX2xzbik7CiBzdGF0aWMgaW5saW5lIHZv aWQgc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChUcmFuc2FjdGlvbklkIHhpZCwgWExvZ1Jl Y1B0ciBsc24pOwogc3RhdGljIGlubGluZSB2b2lkIHJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRf aW5mbyh2b2lkKTsKIAorc3RhdGljIHZvaWQgc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShib29sIHJl dHJ5KTsKKwogLyoKICAqIFNob3VsZCB0aGlzIHdvcmtlciBhcHBseSBjaGFuZ2VzIGZvciBnaXZl biByZWxhdGlvbi4KICAqCkBAIC05MjksNiArOTMxLDkgQEAgYXBwbHlfaGFuZGxlX2NvbW1pdChT dHJpbmdJbmZvIHMpCiAKIAlhcHBseV9oYW5kbGVfY29tbWl0X2ludGVybmFsKCZjb21taXRfZGF0 YSk7CiAKKwkvKiBSZXNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwlzZXRfc3Vic2NyaXB0aW9uX3Jl dHJ5KGZhbHNlKTsKKwogCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgYXBwbHkgYmFja2dyb3VuZCB3 b3JrZXIgaWYgYW55LiAqLwogCWFwcGx5X2Jnd29ya2VyX2NoZWNrX3N0YXR1cygpOwogCkBAIC0x MDQwLDYgKzEwNDUsOSBAQCBhcHBseV9oYW5kbGVfcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAKIAlp bl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFn LiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2UpOworCiAJLyogQ2hlY2sgdGhlIHN0 YXR1cyBvZiBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlciBpZiBhbnkuICovCiAJYXBwbHlfYmd3b3Jr ZXJfY2hlY2tfc3RhdHVzKCk7CiAKQEAgLTEwOTMsNiArMTEwMSw5IEBAIGFwcGx5X2hhbmRsZV9j b21taXRfcHJlcGFyZWQoU3RyaW5nSW5mbyBzKQogCXN0b3JlX2ZsdXNoX3Bvc2l0aW9uKHByZXBh cmVfZGF0YS5lbmRfbHNuKTsKIAlpbl9yZW1vdGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsKIAorCS8q IFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2Up OworCiAJLyogUHJvY2VzcyBhbnkgdGFibGVzIHRoYXQgYXJlIGJlaW5nIHN5bmNocm9uaXplZCBp biBwYXJhbGxlbC4gKi8KIAlwcm9jZXNzX3N5bmNpbmdfdGFibGVzKHByZXBhcmVfZGF0YS5lbmRf bHNuKTsKIApAQCAtMTE0OCw2ICsxMTU5LDkgQEAgYXBwbHlfaGFuZGxlX3JvbGxiYWNrX3ByZXBh cmVkKFN0cmluZ0luZm8gcykKIAlzdG9yZV9mbHVzaF9wb3NpdGlvbihyb2xsYmFja19kYXRhLnJv bGxiYWNrX2VuZF9sc24pOwogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwogCisJLyog UmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJc2V0X3N1YnNjcmlwdGlvbl9yZXRyeShmYWxzZSk7 CisKIAkvKiBQcm9jZXNzIGFueSB0YWJsZXMgdGhhdCBhcmUgYmVpbmcgc3luY2hyb25pemVkIGlu IHBhcmFsbGVsLiAqLwogCXByb2Nlc3Nfc3luY2luZ190YWJsZXMocm9sbGJhY2tfZGF0YS5yb2xs YmFja19lbmRfbHNuKTsKIApAQCAtMTI0Miw2ICsxMjU2LDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVh bV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIAkJCS8qIFVubGluayB0aGUgZmlsZXMgd2l0aCBzZXJp YWxpemVkIGNoYW5nZXMgYW5kIHN1YnhhY3QgaW5mby4gKi8KIAkJCXN0cmVhbV9jbGVhbnVwX2Zp bGVzKE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsIHByZXBhcmVfZGF0YS54aWQpOwogCQl9CisK KwkJLyogUmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnko ZmFsc2UpOwogCX0KIAogCWluX3JlbW90ZV90cmFuc2FjdGlvbiA9IGZhbHNlOwpAQCAtMTY3MSw2 ICsxNjg4LDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9hYm9ydChTdHJpbmdJbmZvIHMpCiAJCQkg Ki8KIAkJCXNlcmlhbGl6ZV9zdHJlYW1fYWJvcnQoeGlkLCBzdWJ4aWQpOwogCQl9CisKKwkJLyog UmVzZXQgdGhlIHJldHJ5IGZsYWcuICovCisJCXNldF9zdWJzY3JpcHRpb25fcmV0cnkoZmFsc2Up OwogCX0KIAogCXJlc2V0X2FwcGx5X2Vycm9yX2NvbnRleHRfaW5mbygpOwpAQCAtMTg4Myw2ICsx OTAzLDkgQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkJLyog VW5saW5rIHRoZSBmaWxlcyB3aXRoIHNlcmlhbGl6ZWQgY2hhbmdlcyBhbmQgc3VieGFjdCBpbmZv LiAqLwogCQkJc3RyZWFtX2NsZWFudXBfZmlsZXMoTXlMb2dpY2FsUmVwV29ya2VyLT5zdWJpZCwg eGlkKTsKIAkJfQorCisJCS8qIFJlc2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2Ny aXB0aW9uX3JldHJ5KGZhbHNlKTsKIAl9CiAKIAkvKiBDaGVjayB0aGUgc3RhdHVzIG9mIGFwcGx5 IGJhY2tncm91bmQgd29ya2VyIGlmIGFueS4gKi8KQEAgLTM5MjcsMjAgKzM5NTAsMjggQEAgc3Rh cnRfdGFibGVfc3luYyhYTG9nUmVjUHRyICpvcmlnaW5fc3RhcnRwb3MsIGNoYXIgKipteXNsb3Ru YW1lKQogCX0KIAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJyb3IgbWVz c2FnZSwgYW5kIHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQorCQkgKiBz dGF0ZQorCQkgKi8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVwb3J0KCk7 CisJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUoKTsKKwor CQlSRVNVTUVfSU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBk dXJpbmcgdGFibGUgc3luY2hyb25pemF0aW9uICovCisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0 aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKwogCQlpZiAoTXlTdWJzY3Jp cHRpb24tPmRpc2FibGVvbmVycikKLQkJCURpc2FibGVTdWJzY3JpcHRpb25BbmRFeGl0KCk7Ci0J CWVsc2UKLQkJewotCQkJLyoKLQkJCSAqIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcg dGFibGUgc3luY2hyb25pemF0aW9uLiBBYm9ydAotCQkJICogdGhlIGN1cnJlbnQgdHJhbnNhY3Rp b24gc28gdGhhdCB0aGUgc3RhdHMgbWVzc2FnZSBpcyBzZW50IGluIGFuCi0JCQkgKiBpZGxlIHN0 YXRlLgotCQkJICovCi0JCQlBYm9ydE91dE9mQW55VHJhbnNhY3Rpb24oKTsKLQkJCXBnc3RhdF9y ZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vic2NyaXB0aW9uLT5vaWQsIGZhbHNlKTsKKwkJ CURpc2FibGVTdWJzY3JpcHRpb25PbkVycm9yKCk7CiAKLQkJCVBHX1JFX1RIUk9XKCk7Ci0JCX0K KwkJLyogU2V0IHRoZSByZXRyeSBmbGFnLiAqLworCQlzZXRfc3Vic2NyaXB0aW9uX3JldHJ5KHRy dWUpOworCisJCXByb2NfZXhpdCgwKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogCkBAIC0zOTY1LDIw ICszOTk2LDI3IEBAIHN0YXJ0X2FwcGx5KFhMb2dSZWNQdHIgb3JpZ2luX3N0YXJ0cG9zKQogCX0K IAlQR19DQVRDSCgpOwogCXsKKwkJLyoKKwkJICogRW1pdCB0aGUgZXJyb3IgbWVzc2FnZSwgYW5k IHJlY292ZXIgZnJvbSB0aGUgZXJyb3Igc3RhdGUgdG8gYW4gaWRsZQorCQkgKiBzdGF0ZQorCQkg Ki8KKwkJSE9MRF9JTlRFUlJVUFRTKCk7CisKKwkJRW1pdEVycm9yUmVwb3J0KCk7CisJCUFib3J0 T3V0T2ZBbnlUcmFuc2FjdGlvbigpOworCQlGbHVzaEVycm9yU3RhdGUoKTsKKworCQlSRVNVTUVf SU5URVJSVVBUUygpOworCisJCS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCB3aGlsZSBhcHBs eWluZyBjaGFuZ2VzICovCisJCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15U3Vi c2NyaXB0aW9uLT5vaWQsCisJCQkJCQkJCQkJICFhbV90YWJsZXN5bmNfd29ya2VyKCkpOworCiAJ CWlmIChNeVN1YnNjcmlwdGlvbi0+ZGlzYWJsZW9uZXJyKQotCQkJRGlzYWJsZVN1YnNjcmlwdGlv bkFuZEV4aXQoKTsKLQkJZWxzZQotCQl7Ci0JCQkvKgotCQkJICogUmVwb3J0IHRoZSB3b3JrZXIg ZmFpbGVkIHdoaWxlIGFwcGx5aW5nIGNoYW5nZXMuIEFib3J0IHRoZQotCQkJICogY3VycmVudCB0 cmFuc2FjdGlvbiBzbyB0aGF0IHRoZSBzdGF0cyBtZXNzYWdlIGlzIHNlbnQgaW4gYW4KLQkJCSAq IGlkbGUgc3RhdGUuCi0JCQkgKi8KLQkJCUFib3J0T3V0T2ZBbnlUcmFuc2FjdGlvbigpOwotCQkJ cGdzdGF0X3JlcG9ydF9zdWJzY3JpcHRpb25fZXJyb3IoTXlTdWJzY3JpcHRpb24tPm9pZCwgIWFt X3RhYmxlc3luY193b3JrZXIoKSk7CisJCQlEaXNhYmxlU3Vic2NyaXB0aW9uT25FcnJvcigpOwog Ci0JCQlQR19SRV9USFJPVygpOwotCQl9CisJCS8qIFNldCB0aGUgcmV0cnkgZmxhZy4gKi8KKwkJ c2V0X3N1YnNjcmlwdGlvbl9yZXRyeSh0cnVlKTsKIAl9CiAJUEdfRU5EX1RSWSgpOwogfQpAQCAt NDI0MCwzOSArNDI3OCwyMCBAQCBBcHBseVdvcmtlck1haW4oRGF0dW0gbWFpbl9hcmcpCiB9CiAK IC8qCi0gKiBBZnRlciBlcnJvciByZWNvdmVyeSwgZGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uIGlu IGEgbmV3IHRyYW5zYWN0aW9uCi0gKiBhbmQgZXhpdCBjbGVhbmx5LgorICogRGlzYWJsZSB0aGUg c3Vic2NyaXB0aW9uIGluIGEgbmV3IHRyYW5zYWN0aW9uLgogICovCiBzdGF0aWMgdm9pZAotRGlz YWJsZVN1YnNjcmlwdGlvbkFuZEV4aXQodm9pZCkKK0Rpc2FibGVTdWJzY3JpcHRpb25PbkVycm9y KHZvaWQpCiB7Ci0JLyoKLQkgKiBFbWl0IHRoZSBlcnJvciBtZXNzYWdlLCBhbmQgcmVjb3ZlciBm cm9tIHRoZSBlcnJvciBzdGF0ZSB0byBhbiBpZGxlCi0JICogc3RhdGUKLQkgKi8KLQlIT0xEX0lO VEVSUlVQVFMoKTsKLQotCUVtaXRFcnJvclJlcG9ydCgpOwotCUFib3J0T3V0T2ZBbnlUcmFuc2Fj dGlvbigpOwotCUZsdXNoRXJyb3JTdGF0ZSgpOwotCi0JUkVTVU1FX0lOVEVSUlVQVFMoKTsKLQot CS8qIFJlcG9ydCB0aGUgd29ya2VyIGZhaWxlZCBkdXJpbmcgZWl0aGVyIHRhYmxlIHN5bmNocm9u aXphdGlvbiBvciBhcHBseSAqLwotCXBnc3RhdF9yZXBvcnRfc3Vic2NyaXB0aW9uX2Vycm9yKE15 TG9naWNhbFJlcFdvcmtlci0+c3ViaWQsCi0JCQkJCQkJCQkgIWFtX3RhYmxlc3luY193b3JrZXIo KSk7Ci0KIAkvKiBEaXNhYmxlIHRoZSBzdWJzY3JpcHRpb24gKi8KIAlTdGFydFRyYW5zYWN0aW9u Q29tbWFuZCgpOwogCURpc2FibGVTdWJzY3JpcHRpb24oTXlTdWJzY3JpcHRpb24tPm9pZCk7CiAJ Q29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7CiAKLQkvKiBOb3RpZnkgdGhlIHN1YnNjcmlwdGlv biBoYXMgYmVlbiBkaXNhYmxlZCBhbmQgZXhpdCAqLworCS8qIE5vdGlmeSB0aGUgc3Vic2NyaXB0 aW9uIGhhcyBiZWVuIGRpc2FibGVkICovCiAJZXJlcG9ydChMT0csCiAJCQllcnJtc2coImxvZ2lj YWwgcmVwbGljYXRpb24gc3Vic2NyaXB0aW9uIFwiJXNcIiBoYXMgYmVlbiBkaXNhYmxlZCBkdWUg dG8gYW4gZXJyb3IiLAogCQkJCSAgIE15U3Vic2NyaXB0aW9uLT5uYW1lKSk7Ci0KLQlwcm9jX2V4 aXQoMCk7CiB9CiAKIC8qCkBAIC00NTA3LDMgKzQ1MjYsNjcgQEAgcmVzZXRfYXBwbHlfZXJyb3Jf Y29udGV4dF9pbmZvKHZvaWQpCiAJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLnJlbW90ZV9hdHRu dW0gPSAtMTsKIAlzZXRfYXBwbHlfZXJyb3JfY29udGV4dF94YWN0KEludmFsaWRUcmFuc2FjdGlv bklkLCBJbnZhbGlkWExvZ1JlY1B0cik7CiB9CisKKy8qCisgKiBTZXQgc3VicmV0cnkgb2YgcGdf c3Vic2NyaXB0aW9uIGNhdGFsb2cuCisgKgorICogSWYgcmV0cnkgaXMgdHJ1ZSwgc3Vic2NyaWJl ciBpcyBhYm91dCB0byBleGl0IHdpdGggYW4gZXJyb3IuIE90aGVyd2lzZSwgaXQKKyAqIG1lYW5z IHRoYXQgdGhlIHRyYW5zYWN0aW9uIHdhcyBhcHBsaWVkIHN1Y2Nlc3NmdWxseS4KKyAqLworc3Rh dGljIHZvaWQKK3NldF9zdWJzY3JpcHRpb25fcmV0cnkoYm9vbCByZXRyeSkKK3sKKwlSZWxhdGlv bglyZWw7CisJSGVhcFR1cGxlCXR1cDsKKwlib29sCQlzdGFydGVkX3R4ID0gZmFsc2U7CisJYm9v bAkJbnVsbHNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsKKwlib29sCQlyZXBsYWNlc1tOYXR0c19w Z19zdWJzY3JpcHRpb25dOworCURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfc3Vic2NyaXB0aW9uXTsK KworCS8qIEZhc3QgcGF0aCAtIGlmIG5vIHN0YXRlIGNoYW5nZSB0aGVuIG5vdGhpbmcgdG8gZG8g Ki8KKwlpZiAoTXlTdWJzY3JpcHRpb24tPnJldHJ5ID09IHJldHJ5KQorCQlyZXR1cm47CisKKwkv KiBGYXN0IHBhdGggLSBza2lwIGZvciBhcHBseSBiYWNrZ3JvdW5kIHdvcmtlcnMgKi8KKwlpZiAo YW1fYXBwbHlfYmd3b3JrZXIoKSkKKwkJcmV0dXJuOworCisJaWYgKCFJc1RyYW5zYWN0aW9uU3Rh dGUoKSkKKwl7CisJCVN0YXJ0VHJhbnNhY3Rpb25Db21tYW5kKCk7CisJCXN0YXJ0ZWRfdHggPSB0 cnVlOworCX0KKworCS8qIExvb2sgdXAgdGhlIHN1YnNjcmlwdGlvbiBpbiB0aGUgY2F0YWxvZyAq LworCXJlbCA9IHRhYmxlX29wZW4oU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgUm93RXhjbHVzaXZl TG9jayk7CisJdHVwID0gU2VhcmNoU3lzQ2FjaGVDb3B5MShTVUJTQ1JJUFRJT05PSUQsCisJCQkJ CQkJICBPYmplY3RJZEdldERhdHVtKE15U3Vic2NyaXB0aW9uLT5vaWQpKTsKKworCWlmICghSGVh cFR1cGxlSXNWYWxpZCh0dXApKQorCQllbG9nKEVSUk9SLCAic3Vic2NyaXB0aW9uIFwiJXNcIiBk b2VzIG5vdCBleGlzdCIsIE15U3Vic2NyaXB0aW9uLT5uYW1lKTsKKworCUxvY2tTaGFyZWRPYmpl Y3QoU3Vic2NyaXB0aW9uUmVsYXRpb25JZCwgTXlTdWJzY3JpcHRpb24tPm9pZCwgMCwKKwkJCQkJ IEFjY2Vzc1NoYXJlTG9jayk7CisKKwkvKiBGb3JtIGEgbmV3IHR1cGxlLiAqLworCW1lbXNldCh2 YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKwltZW1zZXQobnVsbHMsIGZhbHNlLCBzaXplb2Yo bnVsbHMpKTsKKwltZW1zZXQocmVwbGFjZXMsIGZhbHNlLCBzaXplb2YocmVwbGFjZXMpKTsKKwor CS8qIFJlc2V0IHN1YnJldHJ5ICovCisJdmFsdWVzW0FudW1fcGdfc3Vic2NyaXB0aW9uX3N1YnJl dHJ5IC0gMV0gPSBCb29sR2V0RGF0dW0ocmV0cnkpOworCXJlcGxhY2VzW0FudW1fcGdfc3Vic2Ny aXB0aW9uX3N1YnJldHJ5IC0gMV0gPSB0cnVlOworCisJdHVwID0gaGVhcF9tb2RpZnlfdHVwbGUo dHVwLCBSZWxhdGlvbkdldERlc2NyKHJlbCksIHZhbHVlcywgbnVsbHMsCisJCQkJCQkJcmVwbGFj ZXMpOworCisJLyogVXBkYXRlIHRoZSBjYXRhbG9nLiAqLworCUNhdGFsb2dUdXBsZVVwZGF0ZShy ZWwsICZ0dXAtPnRfc2VsZiwgdHVwKTsKKworCS8qIENsZWFudXAuICovCisJaGVhcF9mcmVldHVw bGUodHVwKTsKKwl0YWJsZV9jbG9zZShyZWwsIE5vTG9jayk7CisKKwlpZiAoc3RhcnRlZF90eCkK KwkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwppbmRleCAyYThkYTI2 ODQ0Li5lYjNjYmM5OWUwIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jCisr KyBiL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmMKQEAgLTQ1MDcsOCArNDUwNyw5IEBAIGdldFN1 YnNjcmlwdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAludHVwcyA9IFBRbnR1cGxlcyhyZXMpOwogCiAJ LyoKLQkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxkcy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lw bHNuIGluIHRoZSBkdW1wIGFzCi0JICogYWZ0ZXIgcmVzdG9yaW5nIHRoZSBkdW1wIHRoaXMgdmFs dWUgbWF5IG5vIGxvbmdlciBiZSByZWxldmFudC4KKwkgKiBHZXQgc3Vic2NyaXB0aW9uIGZpZWxk cy4gV2UgZG9uJ3QgaW5jbHVkZSBzdWJza2lwbHNuIGFuZCBzdWJyZXRyeSBpbgorCSAqIHRoZSBk dW1wIGFzIGFmdGVyIHJlc3RvcmluZyB0aGUgZHVtcCB0aGlzIHZhbHVlIG1heSBubyBsb25nZXIg YmUKKwkgKiByZWxldmFudC4KIAkgKi8KIAlpX3RhYmxlb2lkID0gUFFmbnVtYmVyKHJlcywgInRh Ymxlb2lkIik7CiAJaV9vaWQgPSBQUWZudW1iZXIocmVzLCAib2lkIik7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oIGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19zdWJzY3JpcHRpb24uaAppbmRleCBmNGUxZTk0MGU2Li4wOTY5YjlmZGY2IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbi5oCisrKyBiL3NyYy9pbmNs dWRlL2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uLmgKQEAgLTg4LDYgKzg4LDggQEAgQ0FUQUxPRyhw Z19zdWJzY3JpcHRpb24sNjEwMCxTdWJzY3JpcHRpb25SZWxhdGlvbklkKSBCS0lfU0hBUkVEX1JF TEFUSU9OIEJLSV9ST1cKIAlib29sCQlzdWJkaXNhYmxlb25lcnI7CS8qIFRydWUgaWYgYSB3b3Jr ZXIgZXJyb3Igc2hvdWxkIGNhdXNlIHRoZQogCQkJCQkJCQkJICogc3Vic2NyaXB0aW9uIHRvIGJl IGRpc2FibGVkICovCiAKKwlib29sCQlzdWJyZXRyeSBCS0lfREVGQVVMVChmKTsJLyogVHJ1ZSBp ZiB0aGUgcHJldmlvdXMgYXBwbHkgY2hhbmdlIGZhaWxlZC4gKi8KKwogI2lmZGVmIENBVEFMT0df VkFSTEVOCQkJLyogdmFyaWFibGUtbGVuZ3RoIGZpZWxkcyBzdGFydCBoZXJlICovCiAJLyogQ29u bmVjdGlvbiBzdHJpbmcgdG8gdGhlIHB1Ymxpc2hlciAqLwogCXRleHQJCXN1YmNvbm5pbmZvIEJL SV9GT1JDRV9OT1RfTlVMTDsKQEAgLTEzMSw2ICsxMzMsOCBAQCB0eXBlZGVmIHN0cnVjdCBTdWJz Y3JpcHRpb24KIAlib29sCQlkaXNhYmxlb25lcnI7CS8qIEluZGljYXRlcyBpZiB0aGUgc3Vic2Ny aXB0aW9uIHNob3VsZCBiZQogCQkJCQkJCQkgKiBhdXRvbWF0aWNhbGx5IGRpc2FibGVkIGlmIGEg d29ya2VyIGVycm9yCiAJCQkJCQkJCSAqIG9jY3VycyAqLworCWJvb2wJCXJldHJ5OwkJCS8qIElu ZGljYXRlcyBpZiB0aGUgcHJldmlvdXMgYXBwbHkgY2hhbmdlCisJCQkJCQkJCSAqIGZhaWxlZC4g Ki8KIAljaGFyCSAgICpjb25uaW5mbzsJCS8qIENvbm5lY3Rpb24gc3RyaW5nIHRvIHRoZSBwdWJs aXNoZXIgKi8KIAljaGFyCSAgICpzbG90bmFtZTsJCS8qIE5hbWUgb2YgdGhlIHJlcGxpY2F0aW9u IHNsb3QgKi8KIAljaGFyCSAgICpzeW5jY29tbWl0OwkJLyogU3luY2hyb25vdXMgY29tbWl0IHNl dHRpbmcgZm9yIHdvcmtlciAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDMyX3N0cmVhbWluZ19hcHBseS5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzMl9zdHJl YW1pbmdfYXBwbHkucGwKaW5kZXggYWJiODIxOTMwMy4uMGFkMTY2YTMwNCAxMDA2NDQKLS0tIGEv c3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDMyX3N0cmVhbWluZ19hcHBseS5wbAorKysgYi9zcmMv dGVzdC9zdWJzY3JpcHRpb24vdC8wMzJfc3RyZWFtaW5nX2FwcGx5LnBsCkBAIC04MSw3ICs4MSw4 IEBAIG15ICRoID0gJG5vZGVfcHVibGlzaGVyLT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVzJywg XCRpbiwgXCRvdXQsICR0aW1lciwKICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIyBJdCBpcyBub3Qg YWxsb3dlZCB0aGF0IHRoZSB1bmlxdWUgY29sdW1uIGluIHRoZSByZWxhdGlvbiBvbiB0aGUKICMg c3Vic2NyaWJlci1zaWRlIGlzIG5vdCB0aGUgdW5pcXVlIGNvbHVtbiBvbiB0aGUgcHVibGlzaGVy LXNpZGUuIENoZWNrIHRoZQotIyBlcnJvciByZXBvcnRlZCBieSBiYWNrZ3JvdW5kIHdvcmtlciBp biB0aGlzIGNhc2UuCisjIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRo aXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluCisjIGFwcGx5IHdvcmtlciwgd2UgY2hlY2sg aWYgdGhlIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCiAjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KIAogIyBGaXJzdCB3ZSBjaGVjayB0aGUgdW5pcXVlIGluZGV4IG9uIG5vcm1hbCB0YWJs ZS4KQEAgLTEwNiwxNCArMTA3LDE5IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygK IAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRp b24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFt aW5nPXBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAorJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3Jf bG9nKAorCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBkdXBsaWNhdGUga2V5IHZhbHVlIHZpb2xh dGVzIHVuaXF1ZSBjb25zdHJhaW50ICJpZHhfdGFiMSIvLAorCSRvZmZzZXQpOworCiAjIERyb3Ag dGhlIHVuaXF1ZSBpbmRleCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgogJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIGlkeF90YWIxIik7 CiAKKyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBp biB0aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRh cHBuYW1lKTsKIAogbXkgJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7Ci1pcygkcmVzdWx0 LCBxcSg1MDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5n IGluZGV4Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAxKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJz Y3JpYmVyIGFmdGVyIGRyb3BwaW5nIHVuaXF1ZSBpbmRleCB0byByZXRyeSBhcHBseScpOwogCiAj IENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjEiKTsKQEAg LTEzNCwxOCArMTQwLDIxIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9F UlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1 YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBz dHJlYW1pbmc9cGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgdGhlIHVuaXF1ZSBpbmRl eCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIHRlc3RfdGFiX2JfcGFydGl0aW9uX2lkeCIp OwotCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQg aW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgk YXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bv c3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiX3BhcnRpdGlvbmVkIik7Ci1p cygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVy IGRyb3BwaW5nIGluZGV4Jyk7CitpcygkcmVzdWx0LCBxcSg1MDAwKSwgJ2RhdGEgcmVwbGljYXRl ZCB0byBzdWJzY3JpYmVyIGFmdGVyIHJldHJ5aW5nIGJlY2F1c2Ugb2YgdW5pcXVlIGluZGV4Jyk7 CisKKyMgRHJvcCB0aGUgdW5pcXVlIGluZGV4IG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJEUk9QIElOREVYIHRlc3RfdGFiX2JfcGFy dGl0aW9uX2lkeCIpOwogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICMgVHJpZ2dlcnMgd2hpY2gg ZXhlY3V0ZSBub24taW1tdXRhYmxlIGZ1bmN0aW9uIGFyZSBub3QgYWxsb3dlZCBvbiB0aGUKICMg c3Vic2NyaWJlciBzaWRlLiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3 b3JrZXIgaW4gdGhpcyBjYXNlLgorIyBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBwbHkgd29ya2Vy LCB3ZSBjaGVjayBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVkCisjIHN1Y2Nlc3NmdWxseS4KICMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQogCiAjIEZpcnN0IHdlIGNoZWNrIHRoZSB0cmlnZ2VyIGZ1bmN0 aW9uIG9uIG5vcm1hbCB0YWJsZS4KQEAgLTE2NiwxNyArMTc1LDYgQEAgQ1JFQVRFIFRSSUdHRVIg dHJpX3RhYjFfdW5zYWZlCiBCRUZPUkUgSU5TRVJUIE9OIHB1YmxpYy50ZXN0X3RhYjEKIEZPUiBF QUNIIFJPVyBFWEVDVVRFIFBST0NFRFVSRSB0cmlnZ2VyX2Z1bmNfdGFiMV91bnNhZmUoKTsKIEFM VEVSIFRBQkxFIHRlc3RfdGFiMSBFTkFCTEUgUkVQTElDQSBUUklHR0VSIHRyaV90YWIxX3Vuc2Fm ZTsKLQotQ1JFQVRFIEZVTkNUSU9OIHRyaWdnZXJfZnVuY190YWIxX3NhZmUoKSBSRVRVUk5TIFRS SUdHRVIgQVMgXCRcJAotICBCRUdJTgotICAgIFJBSVNFIE5PVElDRSAndGVzdCBmb3Igc2FmZSB0 cmlnZ2VyIGZ1bmN0aW9uJzsKLQlSRVRVUk4gTkVXOwotICBFTkQKLVwkXCQgbGFuZ3VhZ2UgcGxw Z3NxbDsKLUFMVEVSIEZVTkNUSU9OIHRyaWdnZXJfZnVuY190YWIxX3NhZmUgSU1NVVRBQkxFOwot Q1JFQVRFIFRSSUdHRVIgdHJpX3RhYjFfc2FmZQotQkVGT1JFIElOU0VSVCBPTiBwdWJsaWMudGVz dF90YWIxCi1GT1IgRUFDSCBST1cgRVhFQ1VURSBQUk9DRURVUkUgdHJpZ2dlcl9mdW5jX3RhYjFf c2FmZSgpOwogfSk7CiAKICMgQ2hlY2sgdGhlIHN1YnNjcmliZXIgbG9nIGZyb20gbm93IG9uLgpA QCAtMjAxLDI2ICsxOTksMjUgQEAgJG5vZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFy L0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAi cHVibGljLnRlc3RfdGFiMSIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9 cGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIFVzaW5nIHRyaWdnZXIgd2l0aCBpbW11dGFibGUg ZnVuY3Rpb24sIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKLQkn cG9zdGdyZXMnLCBxcXsKLUFMVEVSIFRBQkxFIHRlc3RfdGFiMSBFTkFCTEUgUkVQTElDQSBUUklH R0VSIHRyaV90YWIxX3NhZmU7Ci1EUk9QIFRSSUdHRVIgdHJpX3RhYjFfdW5zYWZlIE9OIHB1Ymxp Yy50ZXN0X3RhYjE7Ci19KTsKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKKwlxci9F UlJPUjogKCBbQS1aMC05XSs6KT8gZHVwbGljYXRlIGtleSB2YWx1ZSB2aW9sYXRlcyB1bmlxdWUg Y29uc3RyYWludCAiaWR4X3RhYjIiLywKKwkkb2Zmc2V0KTsKIAorIyBEcm9wIHRoZSB1bmlxdWUg aW5kZXggb24gdGhlIHN1YnNjcmliZXIsIG5vdyBpdCB3b3Jrcy4KKyRub2RlX3N1YnNjcmliZXIt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiRFJPUCBJTkRFWCBpZHhfdGFiMiIpOworCisjIFdhaXQg Zm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5 IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAK ICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNF TEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFiMSIpOwotaXMoJHJlc3VsdCwgcXEoMiksICdkYXRh IHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lv bicpOworaXMoJHJlc3VsdCwgcXEoMiksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBh ZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIHRyaWdnZXInKTsKIAogIyBDbGVhbiB1cCB0ZXN0IGRh dGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJ J3Bvc3RncmVzJywgcXF7Ci1EUk9QIElOREVYIGlkeF90YWIyOwotRFJPUCBUUklHR0VSIHRyaV90 YWIxX3NhZmUgT04gcHVibGljLnRlc3RfdGFiMTsKK0RST1AgVFJJR0dFUiB0cmlfdGFiMV91bnNh ZmUgT04gcHVibGljLnRlc3RfdGFiMTsKIERST1AgZnVuY3Rpb24gdHJpZ2dlcl9mdW5jX3RhYjFf dW5zYWZlOwotRFJPUCBmdW5jdGlvbiB0cmlnZ2VyX2Z1bmNfdGFiMV9zYWZlOwogfSk7CiAkbm9k ZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcXsKQEAgLTI1MywyMCArMjUw LDIyIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1a MC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3Rh Yl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9cGFy YWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgdGhlIHRyaWdnZXIgb24gdGhlIHN1YnNjcmli ZXIsIG5vdyBpdCB3b3Jrcy4KLSRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LAotCSJEUk9QIFRSSUdHRVIgaW5zZXJ0X3RyaWcgT04gdGVzdF90YWJfcGFydGl0aW9uIik7Ci0K KyMgV2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0 aGUgYXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBu YW1lKTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWJfcGFydGl0aW9uZWQiKTsKLWlzKCRy ZXN1bHQsIHFxKDApLCAnZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBp bmcgdHJpZ2dlcicpOworaXMoJHJlc3VsdCwgcXEoMCksICdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vi c2NyaWJlciBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIHRyaWdnZXInKTsKKworIyBEcm9wIHRo ZSB0cmlnZ2VyIG9uIHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3Fs KCdwb3N0Z3JlcycsCisJIkRST1AgVFJJR0dFUiBpbnNlcnRfdHJpZyBPTiB0ZXN0X3RhYl9wYXJ0 aXRpb24iKTsKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIEl0IGlzIG5vdCBhbGxvd2VkIHRo YXQgY29sdW1uIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lvbiBjb250YWlucyBhCiAjIG5vbi1pbW11 dGFibGUgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJl cG9ydGVkIGJ5Ci0jIGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgYmFja2dyb3Vu ZCB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4gYXBwbHkgd29ya2Vy LCB3ZSBjaGVjaworIyBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVkIHN1Y2Nlc3NmdWxseS4KICMg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQogCiAjIEZpcnN0IHdlIGNoZWNrIHRoZSBjb2x1bW4gZGVmYXVs dCB2YWx1ZSBleHByZXNzaW9uIG9uIG5vcm1hbCB0YWJsZS4KQEAgLTMwNCwxNiArMzAzLDEzIEBA ICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6 KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVz aW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKIAkkb2Zmc2V0 KTsKIAotIyBBbHRlciBkZWZhdWx0IHZhbHVlcyB0byBpbW11dGFibGUgZXhwcmVzc2lvbiwgbm93 IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFM VEVSIFRBQkxFIHRlc3RfdGFiMSBBTFRFUiBDT0xVTU4gYiBTRVQgREVGQVVMVCAxIik7Ci0KKyMg V2FpdCBmb3IgdGhpcyBzdHJlYW1pbmcgdHJhbnNhY3Rpb24gdG8gYmUgYXBwbGllZCBpbiB0aGUg YXBwbHkgd29ya2VyLgogJG5vZGVfcHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1l KTsKIAogJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gdGVzdF90YWIxIik7CiBpcygkcmVzdWx0LCBxcSg1MDAx KSwKLQknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgdXNpbmcgaW1tdXRhYmxl IGV4cHJlc3Npb24nKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0 cnlpbmcgYmVjYXVzZSBvZiBjb2x1bW4gZGVmYXVsdCB2YWx1ZScpOwogCiAjIENsZWFuIHVwIHRl c3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09MVU1OIGIiKTsKQEAg LTMzOSwyMSArMzM1LDIzIEBAICRub2RlX3N1YnNjcmliZXItPndhaXRfZm9yX2xvZygKIAlxci9F UlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJnZXQgcmVsYXRpb24gInB1 YmxpYy50ZXN0X3RhYl9wYXJ0aXRpb25lZCIgdXNpbmcgc3Vic2NyaXB0aW9uIHBhcmFtZXRlciBz dHJlYW1pbmc9cGFyYWxsZWwvLAogCSRvZmZzZXQpOwogCi0jIERyb3AgZGVmYXVsdCB2YWx1ZSBv biB0aGUgc3Vic2NyaWJlciwgbm93IGl0IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBTFRFUiBD T0xVTU4gYiBEUk9QIERFRkFVTFQiKTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFu c2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNo ZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vi c2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0 X3RhYl9wYXJ0aXRpb25lZCIpOwogaXMoJHJlc3VsdCwgcXEoNTAwMCksCi0JJ2RhdGEgcmVwbGlj YXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGRlZmF1bHQgdmFsdWUgZXhwcmVzc2lv bicpOworCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciByZXRyeWluZyBiZWNh dXNlIG9mIGNvbHVtbiBkZWZhdWx0IHZhbHVlJyk7CisKKyMgRHJvcCBkZWZhdWx0IHZhbHVlIG9u IHRoZSBzdWJzY3JpYmVyLgorJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3Jlcycs CisJIkFMVEVSIFRBQkxFIHRlc3RfdGFiX3BhcnRpdGlvbiBBTFRFUiBDT0xVTU4gYiBEUk9QIERF RkFVTFQiKTsKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIEl0IGlzIG5vdCBhbGxvd2VkIHRo YXQgZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBjb250YWlucyBhIG5vbi1pbW11dGFibGUK ICMgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9y dGVkIGJ5IGJhY2tncm91bmQKLSMgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgd29ya2VyIGluIHRo aXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2UgY2hlY2sgaWYg dGhlCisjIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCiAjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KIAogIyBCZWNhdXNlIHRoZSBjb2x1bW4gdHlwZSBvZiB0aGUgcGFydGl0aW9uIHRhYmxl IG11c3QgYmUgdGhlIHNhbWUgYXMgaXRzIHBhcmVudApAQCAtMzk0LDE2ICszOTIsMTMgQEAgJG5v ZGVfc3Vic2NyaWJlci0+d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBj YW5ub3QgcmVwbGljYXRlIHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiMSIgdXNpbmcg c3Vic2NyaXB0aW9uIHBhcmFtZXRlciBzdHJlYW1pbmc9cGFyYWxsZWwvLAogCSRvZmZzZXQpOwog Ci0jIERyb3AgZG9tYWluIGNvbnN0cmFpbnQgZXhwcmVzc2lvbiwgbm93IGl0IHdvcmtzLgotJG5v ZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCi0JIkFMVEVSIERPTUFJTiB0bXBf ZG9tYWluIERST1AgQ09OU1RSQUlOVCBkb21haW5fY2hlY2siKTsKLQorIyBXYWl0IGZvciB0aGlz IHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIu CiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0 ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291 bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKIGlzKCRyZXN1bHQsIHFxKDUwMDEpLAotCSdkYXRhIHJl cGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciB1c2luZyBpbW11dGFibGUgZXhwcmVzc2lvbicK KwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIgYWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBv ZiBkb21haW4nCiApOwogCiAjIENsZWFuIHVwIHRlc3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVu dC4KQEAgLTQxNyw5ICs0MTIsMTAgQEAgVFJVTkNBVEUgVEFCTEUgdGVzdF90YWIyOwogJG5vZGVf cHVibGlzaGVyLT53YWl0X2Zvcl9jYXRjaHVwKCRhcHBuYW1lKTsKIAogIyA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0jIEl0IGlzIG5vdCBhbGxvd2VkIHRoYXQgY29uc3RyYWludCBleHByZXNzaW9uIGNv bnRhaW5zIGEgbm9uLWltbXV0YWJsZSBmdW5jdGlvbgotIyBvbiB0aGUgc3Vic2NyaWJlciBzaWRl LiBDaGVjayB0aGUgZXJyb3IgcmVwb3J0ZWQgYnkgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcwot IyBjYXNlLgorIyBJdCBpcyBub3QgYWxsb3dlZCB0aGF0IGNvbnN0cmFpbnQgZXhwcmVzc2lvbiBj b250YWlucyBhIG5vbi1pbW11dGFibGUKKyMgZnVuY3Rpb24gb24gdGhlIHN1YnNjcmliZXIgc2lk ZS4gQ2hlY2sgdGhlIGVycm9yIHJlcG9ydGVkIGJ5IGJhY2tncm91bmQKKyMgd29ya2VyIGluIHRo aXMgY2FzZS4gQW5kIGFmdGVyIHJldHJ5aW5nIGluIGFwcGx5IHdvcmtlciwgd2UgY2hlY2sgaWYg dGhlCisjIGRhdGEgaXMgcmVwbGljYXRlZCBzdWNjZXNzZnVsbHkuCiAjID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KIAogIyBGaXJzdCB3ZSBjaGVjayB0aGUgY29uc3RyYWludCBleHByZXNzaW9uIG9uIG5v cm1hbCB0YWJsZS4KQEAgLTQ1MiwyMiArNDQ4LDE2IEBAICRub2RlX3N1YnNjcmliZXItPndhaXRf Zm9yX2xvZygKIAlxci9FUlJPUjogKCBbQS1aMC05XSs6KT8gY2Fubm90IHJlcGxpY2F0ZSB0YXJn ZXQgcmVsYXRpb24gInB1YmxpYy50ZXN0X3RhYjEiIHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0 ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKIAkkb2Zmc2V0KTsKIAotIyBBbHRlciBjb25zdHJhaW50 IGV4cHJlc3Npb24gdG8gaW1tdXRhYmxlIGV4cHJlc3Npb24sIG5vdyBpdCB3b3Jrcy4KLSRub2Rl X3N1YnNjcmliZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMnLCBxcXsKLUFMVEVSIFRBQkxFIHRl c3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29uc3RfdGFiMV91bnNhZmU7Ci1BTFRFUiBUQUJMRSB0 ZXN0X3RhYjEgQUREIENPTlNUUkFJTlQgY29uc3RfdGFiMV9zYWZlIENIRUNLKGEgPj0gMCk7Ci19 KTsKLQorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVk IGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAo JGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdw b3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKIGlzKCRyZXN1bHQs IHFxKDUwMDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciB1c2luZyBp bW11dGFibGUgZXhwcmVzc2lvbicpOworCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBh ZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGNvbnN0cmFpbnQnKTsKIAogIyBDbGVhbiB1cCB0ZXN0 IGRhdGEgZnJvbSB0aGUgZW52aXJvbm1lbnQuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgIkFMVEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29uc3Rf dGFiMV9zYWZlIik7Ciskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkFM VEVSIFRBQkxFIHRlc3RfdGFiMSBEUk9QIENPTlNUUkFJTlQgY29uc3RfdGFiMV91bnNhZmUiKTsK ICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxewogVFJVTkNBVEUg VEFCTEUgdGVzdF90YWIxOwpAQCAtNDkwLDIwICs0ODAsMjIgQEAgJG5vZGVfc3Vic2NyaWJlci0+ d2FpdF9mb3JfbG9nKAogCXFyL0VSUk9SOiAoIFtBLVowLTldKzopPyBjYW5ub3QgcmVwbGljYXRl IHRhcmdldCByZWxhdGlvbiAicHVibGljLnRlc3RfdGFiX3BhcnRpdGlvbmVkIiB1c2luZyBzdWJz Y3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMg RHJvcCBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3JpYmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9z dWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWJf cGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0X3RhYl9jb24iKTsKLQorIyBXYWl0IGZvciB0 aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBhcHBseSB3b3Jr ZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2NhdGNodXAoJGFwcG5hbWUpOwogCiAkcmVz dWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1Qg Y291bnQoKikgRlJPTSB0ZXN0X3RhYl9wYXJ0aXRpb25lZCIpOwogaXMoJHJlc3VsdCwgcXEoMCks Ci0JJ2RhdGEgcmVwbGljYXRlZCB0byBzdWJzY3JpYmVyIGFmdGVyIGRyb3BwaW5nIGNvbnN0cmFp bnQgZXhwcmVzc2lvbicpOworCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBy ZXRyeWluZyBiZWNhdXNlIG9mIGNvbnN0cmFpbnQnKTsKKworIyBEcm9wIGNvbnN0cmFpbnQgb24g dGhlIHN1YnNjcmliZXIuCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywK KwkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0X3Rh Yl9jb24iKTsKIAogIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjIEl0IGlzIG5vdCBhbGxvd2VkIHRo YXQgZm9yZWlnbiBrZXkgb24gdGhlIHN1YnNjcmliZXIgc2lkZS4gQ2hlY2sgdGhlIGVycm9yCi0j IHJlcG9ydGVkIGJ5IGJhY2tncm91bmQgd29ya2VyIGluIHRoaXMgY2FzZS4KKyMgcmVwb3J0ZWQg YnkgYmFja2dyb3VuZCB3b3JrZXIgaW4gdGhpcyBjYXNlLiBBbmQgYWZ0ZXIgcmV0cnlpbmcgaW4g YXBwbHkKKyMgd29ya2VyLCB3ZSBjaGVjayBpZiB0aGUgZGF0YSBpcyByZXBsaWNhdGVkIHN1Y2Nl c3NmdWxseS4KICMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAjIEZpcnN0IHdlIGNoZWNrIHRoZSBm b3JlaWduIGtleSBvbiBub3JtYWwgdGFibGUuCkBAIC01NDQsMTcgKzUzNiwxOSBAQCAkbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5v dCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWIxIiB1c2luZyBzdWJz Y3JpcHRpb24gcGFyYW1ldGVyIHN0cmVhbWluZz1wYXJhbGxlbC8sCiAJJG9mZnNldCk7CiAKLSMg RHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vic2NyaWJlciwgbm93IGl0 IHdvcmtzLgotJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJBTFRFUiBU QUJMRSB0ZXN0X3RhYjEgRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiMWZrIik7CisjIEluc2VydCBk ZXBlbmRlbnQgZGF0YSBvbiB0aGUgcHVibGlzaGVyLCBub3cgaXQgd29ya3MuCiskbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIklOU0VSVCBJTlRPIHRlc3RfdGFiMiBWQUxV RVMoMSkiKTsKIAorIyBXYWl0IGZvciB0aGlzIHN0cmVhbWluZyB0cmFuc2FjdGlvbiB0byBiZSBh cHBsaWVkIGluIHRoZSBhcHBseSB3b3JrZXIuCiAkbm9kZV9wdWJsaXNoZXItPndhaXRfZm9yX2Nh dGNodXAoJGFwcG5hbWUpOwogCiAkcmVzdWx0ID0KICAgJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0ZXN0X3RhYjEiKTsKIGlzKCRy ZXN1bHQsIHFxKDEpLAotCSdkYXRhIHJlcGxpY2F0ZWQgdG8gc3Vic2NyaWJlciBhZnRlciBkcm9w cGluZyB0aGUgZm9yZWlnbiBrZXknKTsKKwknZGF0YSByZXBsaWNhdGVkIHRvIHN1YnNjcmliZXIg YWZ0ZXIgcmV0cnlpbmcgYmVjYXVzZSBvZiBmb3JlaWduIGtleScpOwogCiAjIENsZWFuIHVwIHRl c3QgZGF0YSBmcm9tIHRoZSBlbnZpcm9ubWVudC4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiQUxURVIgVEFCTEUgdGVzdF90YWIxIERST1AgQ09OU1RSQUlOVCB0ZXN0 X3RhYjFmayIpOwogJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXF7 CiBUUlVOQ0FURSBUQUJMRSB0ZXN0X3RhYjE7CkBAIC01ODEsMTYgKzU3NSwxNyBAQCAkbm9kZV9z dWJzY3JpYmVyLT53YWl0X2Zvcl9sb2coCiAJcXIvRVJST1I6ICggW0EtWjAtOV0rOik/IGNhbm5v dCByZXBsaWNhdGUgdGFyZ2V0IHJlbGF0aW9uICJwdWJsaWMudGVzdF90YWJfcGFydGl0aW9uZWQi IHVzaW5nIHN1YnNjcmlwdGlvbiBwYXJhbWV0ZXIgc3RyZWFtaW5nPXBhcmFsbGVsLywKIAkkb2Zm c2V0KTsKIAotIyBEcm9wIHRoZSBmb3JlaWduIGtleSBjb25zdHJhaW50IG9uIHRoZSBzdWJzY3Jp YmVyLCBub3cgaXQgd29ya3MuCi0kbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKLQkiQUxURVIgVEFCTEUgdGVzdF90YWJfcGFydGl0aW9uIERST1AgQ09OU1RSQUlOVCB0ZXN0 X3RhYl9wYXRpdGlvbl9mayIpOwotCisjIFdhaXQgZm9yIHRoaXMgc3RyZWFtaW5nIHRyYW5zYWN0 aW9uIHRvIGJlIGFwcGxpZWQgaW4gdGhlIGFwcGx5IHdvcmtlci4KICRub2RlX3B1Ymxpc2hlci0+ d2FpdF9mb3JfY2F0Y2h1cCgkYXBwbmFtZSk7CiAKICRyZXN1bHQgPQogICAkbm9kZV9zdWJzY3Jp YmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgqKSBGUk9NIHRlc3RfdGFi X3BhcnRpdGlvbmVkIik7CiBpcygkcmVzdWx0LCBxcSg1MDAwKSwKLQknZGF0YSByZXBsaWNhdGVk IHRvIHN1YnNjcmliZXIgYWZ0ZXIgZHJvcHBpbmcgdGhlIGZvcmVpZ24ga2V5Jyk7CisJJ2RhdGEg cmVwbGljYXRlZCB0byBzdWJzY3JpYmVycyBhZnRlciByZXRyeWluZyBiZWNhdXNlIG9mIGZvcmVp Z24ga2V5Jyk7CisKKyMgRHJvcCB0aGUgZm9yZWlnbiBrZXkgY29uc3RyYWludCBvbiB0aGUgc3Vi c2NyaWJlci4KKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJBTFRF UiBUQUJMRSB0ZXN0X3RhYl9wYXJ0aXRpb24gRFJPUCBDT05TVFJBSU5UIHRlc3RfdGFiX3BhdGl0 aW9uX2ZrIik7CiAKICRub2RlX3N1YnNjcmliZXItPnN0b3A7CiAkbm9kZV9wdWJsaXNoZXItPnN0 b3A7Ci0tIAoyLjIzLjAud2luZG93cy4xCgo= --_006_OS3PR01MB6275739E73E8BEC5D13FB6739E6B9OS3PR01MB6275jpnp_ Content-Type: application/octet-stream; name="v22-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch" Content-Description: v22-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch Content-Disposition: attachment; filename="v22-0005-Add-a-main_worker_pid-to-pg_stat_subscription.patch"; size=6361; creation-date="Tue, 16 Aug 2022 07:29:00 GMT"; modification-date="Tue, 16 Aug 2022 07:33:03 GMT" Content-Transfer-Encoding: base64 RnJvbSAyNzk5NmY5NjVmY2ZhOWYzM2I2MmJiN2Y4NGI2ZGM4NzMzZDE4OWExIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiaG91emouZm5zdCIgPGhvdXpqLmZuc3RAY24uZnVqaXRzdS5j b20+CkRhdGU6IFRodSwgMTEgQXVnIDIwMjIgMTE6NDk6MDggKzA4MDAKU3ViamVjdDogW1BBVENI IHYyMiA1LzVdIEFkZCBhIG1haW5fd29ya2VyX3BpZCB0byBwZ19zdGF0X3N1YnNjcmlwdGlvbgoK bWFpbl93b3JrZXJfcGlkIGlzIFByb2Nlc3MgSUQgb2YgdGhlIG1haW4gYXBwbHkgd29ya2VyLCBp ZiB0aGlzIHByb2Nlc3MgaXMgYQphcHBseSBiYWNrZ3JvdW5kIHdvcmtlci4gTlVMTCBpZiB0aGlz IHByb2Nlc3MgaXMgYSBtYWluIGFwcGx5IHdvcmtlciBvciBhCnN5bmNocm9uaXphdGlvbiB3b3Jr ZXIuCgpUaGUgbmV3IGNvbHVtbiBjYW4gbWFrZSBpdCBlYXNpZXIgdG8gZGlzdGluZ3Vpc2ggbWFp biBhcHBseSB3b3JrZXIgYW5kIGFwcGx5CmJhY2tncm91bmQgd29ya2VyLgotLS0KIGRvYy9zcmMv c2dtbC9tb25pdG9yaW5nLnNnbWwgICAgICAgICAgICAgICB8IDExICsrKysrKysrKwogc3JjL2Jh Y2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsICAgICAgIHwgIDEgKwogc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5jIHwgMjggKysrKysrKysrKysrKy0tLS0tLS0t LQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCAgICAgICAgICAgIHwgIDYgKystLS0K IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgICB8ICAzICsrLQogNSBm aWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sIGIvZG9jL3NyYy9zZ21sL21vbml0b3Jp bmcuc2dtbAppbmRleCAxZDk1MDlhMmY2Li42ODVmZTA2MWU3IDEwMDY0NAotLS0gYS9kb2Mvc3Jj L3NnbWwvbW9uaXRvcmluZy5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwK QEAgLTMxNzgsNiArMzE3OCwxNyBAQCBTRUxFQ1QgcGlkLCB3YWl0X2V2ZW50X3R5cGUsIHdhaXRf ZXZlbnQgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQgaQogICAgICAgPC9w YXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5tYWluX3dvcmtlcl9waWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5p bnRlZ2VyPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUHJvY2Vz cyBJRCBvZiB0aGUgbWFpbiBhcHBseSB3b3JrZXIsIGlmIHRoaXMgcHJvY2VzcyBpcyBhIGFwcGx5 CisgICAgICAgYmFja2dyb3VuZCB3b3JrZXIuIE5VTEwgaWYgdGhpcyBwcm9jZXNzIGlzIGEgbWFp biBhcHBseSB3b3JrZXIgb3IgYQorICAgICAgIHN5bmNocm9uaXphdGlvbiB3b3JrZXIuCisgICAg ICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAgIDxlbnRy eSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlv biI+CiAgICAgICAgPHN0cnVjdGZpZWxkPnJlbGlkPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+b2lkPC90 eXBlPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IDgyODRjZGQwMGMuLmVj ZDA4ZGQ5MjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNx bAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5c3RlbV92aWV3cy5zcWwKQEAgLTk0Nyw2ICs5 NDcsNyBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3N1YnNjcmlwdGlvbiBBUwogICAgICAgICAgICAg c3Uub2lkIEFTIHN1YmlkLAogICAgICAgICAgICAgc3Uuc3VibmFtZSwKICAgICAgICAgICAgIHN0 LnBpZCwKKyAgICAgICAgICAgIHN0Lm1haW5fd29ya2VyX3BpZCwKICAgICAgICAgICAgIHN0LnJl bGlkLAogICAgICAgICAgICAgc3QucmVjZWl2ZWRfbHNuLAogICAgICAgICAgICAgc3QubGFzdF9t c2dfc2VuZF90aW1lLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC9sYXVuY2hlci5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sYXVuY2hlci5j CmluZGV4IDgyNWU3NTYzZjYuLjVhOTI3MDFjNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAgLTEwMTAsNyArMTAxMCw3IEBAIElzTG9naWNhbExhdW5j aGVyKHZvaWQpCiBEYXR1bQogcGdfc3RhdF9nZXRfc3Vic2NyaXB0aW9uKFBHX0ZVTkNUSU9OX0FS R1MpCiB7Ci0jZGVmaW5lIFBHX1NUQVRfR0VUX1NVQlNDUklQVElPTl9DT0xTCTgKKyNkZWZpbmUg UEdfU1RBVF9HRVRfU1VCU0NSSVBUSU9OX0NPTFMJOQogCU9pZAkJCXN1YmlkID0gUEdfQVJHSVNO VUxMKDApID8gSW52YWxpZE9pZCA6IFBHX0dFVEFSR19PSUQoMCk7CiAJaW50CQkJaTsKIAlSZXR1 cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAqKSBmY2luZm8tPnJlc3VsdGluZm87 CkBAIC0xMDQ0LDI2ICsxMDQ0LDMyIEBAIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihQR19GVU5D VElPTl9BUkdTKQogCQllbHNlCiAJCQludWxsc1sxXSA9IHRydWU7CiAJCXZhbHVlc1syXSA9IElu dDMyR2V0RGF0dW0od29ya2VyX3BpZCk7Ci0JCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtl ci5sYXN0X2xzbikpCisKKwkJaWYgKHdvcmtlci5tYWluX3dvcmtlcl9waWQgPT0gMCkKIAkJCW51 bGxzWzNdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzNdID0gTFNOR2V0RGF0dW0od29ya2Vy Lmxhc3RfbHNuKTsKLQkJaWYgKHdvcmtlci5sYXN0X3NlbmRfdGltZSA9PSAwKQorCQkJdmFsdWVz WzNdID0gSW50MzJHZXREYXR1bSh3b3JrZXIubWFpbl93b3JrZXJfcGlkKTsKKworCQlpZiAoWExv Z1JlY1B0cklzSW52YWxpZCh3b3JrZXIubGFzdF9sc24pKQogCQkJbnVsbHNbNF0gPSB0cnVlOwog CQllbHNlCi0JCQl2YWx1ZXNbNF0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5sYXN0X3Nl bmRfdGltZSk7Ci0JCWlmICh3b3JrZXIubGFzdF9yZWN2X3RpbWUgPT0gMCkKKwkJCXZhbHVlc1s0 XSA9IExTTkdldERhdHVtKHdvcmtlci5sYXN0X2xzbik7CisJCWlmICh3b3JrZXIubGFzdF9zZW5k X3RpbWUgPT0gMCkKIAkJCW51bGxzWzVdID0gdHJ1ZTsKIAkJZWxzZQotCQkJdmFsdWVzWzVdID0g VGltZXN0YW1wVHpHZXREYXR1bSh3b3JrZXIubGFzdF9yZWN2X3RpbWUpOwotCQlpZiAoWExvZ1Jl Y1B0cklzSW52YWxpZCh3b3JrZXIucmVwbHlfbHNuKSkKKwkJCXZhbHVlc1s1XSA9IFRpbWVzdGFt cFR6R2V0RGF0dW0od29ya2VyLmxhc3Rfc2VuZF90aW1lKTsKKwkJaWYgKHdvcmtlci5sYXN0X3Jl Y3ZfdGltZSA9PSAwKQogCQkJbnVsbHNbNl0gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbNl0g PSBMU05HZXREYXR1bSh3b3JrZXIucmVwbHlfbHNuKTsKLQkJaWYgKHdvcmtlci5yZXBseV90aW1l ID09IDApCisJCQl2YWx1ZXNbNl0gPSBUaW1lc3RhbXBUekdldERhdHVtKHdvcmtlci5sYXN0X3Jl Y3ZfdGltZSk7CisJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHdvcmtlci5yZXBseV9sc24pKQog CQkJbnVsbHNbN10gPSB0cnVlOwogCQllbHNlCi0JCQl2YWx1ZXNbN10gPSBUaW1lc3RhbXBUekdl dERhdHVtKHdvcmtlci5yZXBseV90aW1lKTsKKwkJCXZhbHVlc1s3XSA9IExTTkdldERhdHVtKHdv cmtlci5yZXBseV9sc24pOworCQlpZiAod29ya2VyLnJlcGx5X3RpbWUgPT0gMCkKKwkJCW51bGxz WzhdID0gdHJ1ZTsKKwkJZWxzZQorCQkJdmFsdWVzWzhdID0gVGltZXN0YW1wVHpHZXREYXR1bSh3 b3JrZXIucmVwbHlfdGltZSk7CiAKIAkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRS ZXN1bHQsIHJzaW5mby0+c2V0RGVzYywKIAkJCQkJCQkgdmFsdWVzLCBudWxscyk7CmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUvY2F0YWxv Zy9wZ19wcm9jLmRhdAppbmRleCBiZTQ3NTgzMTIyLi5iN2ZhMmMxMGI2IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHJvYy5kYXQKQEAgLTUzOTMsOSArNTM5Myw5IEBACiAgIHByb25hbWUgPT4gJ3BnX3N0YXRf Z2V0X3N1YnNjcmlwdGlvbicsIHByb3Jvd3MgPT4gJzEwJywgcHJvaXNzdHJpY3QgPT4gJ2YnLAog ICBwcm9yZXRzZXQgPT4gJ3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdy JywKICAgcHJvcmV0dHlwZSA9PiAncmVjb3JkJywgcHJvYXJndHlwZXMgPT4gJ29pZCcsCi0gIHBy b2FsbGFyZ3R5cGVzID0+ICd7b2lkLG9pZCxvaWQsaW50NCxwZ19sc24sdGltZXN0YW1wdHosdGlt ZXN0YW1wdHoscGdfbHNuLHRpbWVzdGFtcHR6fScsCi0gIHByb2FyZ21vZGVzID0+ICd7aSxvLG8s byxvLG8sbyxvLG99JywKLSAgcHJvYXJnbmFtZXMgPT4gJ3tzdWJpZCxzdWJpZCxyZWxpZCxwaWQs cmVjZWl2ZWRfbHNuLGxhc3RfbXNnX3NlbmRfdGltZSxsYXN0X21zZ19yZWNlaXB0X3RpbWUsbGF0 ZXN0X2VuZF9sc24sbGF0ZXN0X2VuZF90aW1lfScsCisgIHByb2FsbGFyZ3R5cGVzID0+ICd7b2lk LG9pZCxvaWQsaW50NCxpbnQ0LHBnX2xzbix0aW1lc3RhbXB0eix0aW1lc3RhbXB0eixwZ19sc24s dGltZXN0YW1wdHp9JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tpLG8sbyxvLG8sbyxvLG8sbyxvfScs CisgIHByb2FyZ25hbWVzID0+ICd7c3ViaWQsc3ViaWQscmVsaWQscGlkLG1haW5fd29ya2VyX3Bp ZCxyZWNlaXZlZF9sc24sbGFzdF9tc2dfc2VuZF90aW1lLGxhc3RfbXNnX3JlY2VpcHRfdGltZSxs YXRlc3RfZW5kX2xzbixsYXRlc3RfZW5kX3RpbWV9JywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dl dF9zdWJzY3JpcHRpb24nIH0sCiB7IG9pZCA9PiAnMjAyNicsIGRlc2NyID0+ICdzdGF0aXN0aWNz OiBjdXJyZW50IGJhY2tlbmQgUElEJywKICAgcHJvbmFtZSA9PiAncGdfYmFja2VuZF9waWQnLCBw cm92b2xhdGlsZSA9PiAncycsIHByb3BhcmFsbGVsID0+ICdyJywKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQKaW5kZXggN2VjM2QyNjg4Zi4uYmUxMmM2MmU0NyAxMDA2NDQKLS0tIGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ydWxlcy5vdXQKQEAgLTIwOTEsNiArMjA5MSw3IEBAIHBnX3N0YXRfc3NsfCBTRUxF Q1Qgcy5waWQsCiBwZ19zdGF0X3N1YnNjcmlwdGlvbnwgU0VMRUNUIHN1Lm9pZCBBUyBzdWJpZCwK ICAgICBzdS5zdWJuYW1lLAogICAgIHN0LnBpZCwKKyAgICBzdC5tYWluX3dvcmtlcl9waWQsCiAg ICAgc3QucmVsaWQsCiAgICAgc3QucmVjZWl2ZWRfbHNuLAogICAgIHN0Lmxhc3RfbXNnX3NlbmRf dGltZSwKQEAgLTIwOTgsNyArMjA5OSw3IEBAIHBnX3N0YXRfc3Vic2NyaXB0aW9ufCBTRUxFQ1Qg c3Uub2lkIEFTIHN1YmlkLAogICAgIHN0LmxhdGVzdF9lbmRfbHNuLAogICAgIHN0LmxhdGVzdF9l bmRfdGltZQogICAgRlJPTSAocGdfc3Vic2NyaXB0aW9uIHN1Ci0gICAgIExFRlQgSk9JTiBwZ19z dGF0X2dldF9zdWJzY3JpcHRpb24oTlVMTDo6b2lkKSBzdChzdWJpZCwgcmVsaWQsIHBpZCwgcmVj ZWl2ZWRfbHNuLCBsYXN0X21zZ19zZW5kX3RpbWUsIGxhc3RfbXNnX3JlY2VpcHRfdGltZSwgbGF0 ZXN0X2VuZF9sc24sIGxhdGVzdF9lbmRfdGltZSkgT04gKChzdC5zdWJpZCA9IHN1Lm9pZCkpKTsK KyAgICAgTEVGVCBKT0lOIHBnX3N0YXRfZ2V0X3N1YnNjcmlwdGlvbihOVUxMOjpvaWQpIHN0KHN1 YmlkLCByZWxpZCwgcGlkLCBtYWluX3dvcmtlcl9waWQsIHJlY2VpdmVkX2xzbiwgbGFzdF9tc2df c2VuZF90aW1lLCBsYXN0X21zZ19yZWNlaXB0X3RpbWUsIGxhdGVzdF9lbmRfbHNuLCBsYXRlc3Rf ZW5kX3RpbWUpIE9OICgoc3Quc3ViaWQgPSBzdS5vaWQpKSk7CiBwZ19zdGF0X3N1YnNjcmlwdGlv bl9zdGF0c3wgU0VMRUNUIHNzLnN1YmlkLAogICAgIHMuc3VibmFtZSwKICAgICBzcy5hcHBseV9l cnJvcl9jb3VudCwKLS0gCjIuMjMuMC53aW5kb3dzLjEKCg== --_006_OS3PR01MB6275739E73E8BEC5D13FB6739E6B9OS3PR01MB6275jpnp_--