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 1pErl8-0000uj-4P for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Jan 2023 13:00:15 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pErl6-0001To-52 for pgsql-hackers@arkaria.postgresql.org; Mon, 09 Jan 2023 13:00:12 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pErl5-0001QW-GA for pgsql-hackers@lists.postgresql.org; Mon, 09 Jan 2023 13:00:11 +0000 Received: from mail-vi1eur03on2127.outbound.protection.outlook.com ([40.107.103.127] helo=EUR03-VI1-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pErl1-000136-S2 for pgsql-hackers@postgresql.org; Mon, 09 Jan 2023 13:00:10 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b/QR6Xf+p0ymWvDT0ouoNWcwL88zOKQtKF/T5uTlJt0viRducDPiqyQmLMGIbXwc7D/jg4wev17mIPScaV489of7IC38YUaIuj7Ti0WVwTM7JBXYo5d0pLMiAeZNqo7MQQi+6U4nJ/TLbGamtaEir+7mnBIZPJCoCHQ3mUjKHsT5Aa3KqwseUATxlwwnAhGoEq+DvyBzZFZWVaCCNp+upXdff/T7mlFaXfV1QoUCAfy47kX6elUH0x8cE3BDmMHHCHAGkm4x/2/V3+7o1D1Q6T3hOuf0DZDWJrCx0AY0e552mzKsY8A4Rphy6fF/3uFWGRteJQ1mxIqDmwIYUFr0pw== 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=E+ei5oCGFC//++ydT1pkOfchiZIwqb1Nsy/x0o8K9og=; b=JpCRssul6ubBryDR6RILVzXaYL7fV3PrKGHSUJA4IS60Q3QdYfGcD/Fj9NwdHLMDa/5jc6o/mvlFdyPxXbZPjF+hL/DFhc/keRYlXe+uGi1B4Nxh0QVXB1y9LDxT7JPhietu+TPr5qWsWHGGUFW8758YALNT3G9cfdqRVzha+vVuXReVeOvSnSzAfiI4rGt5qa6/OF79m3N6Klg45aOnQBu9el2BpJToxtRv65T2jNqjkKNyll223nmVMl4L1GBOFqvl3dZ698SRp8YbyPAdawtKC+LffKl307Ja+Fw9vWtTH3j9XvIcGgeUcBAsIjvtrKiFsfcGBFxqEIJMF0wytQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microsoft.com; dmarc=pass action=none header.from=microsoft.com; dkim=pass header.d=microsoft.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=E+ei5oCGFC//++ydT1pkOfchiZIwqb1Nsy/x0o8K9og=; b=AvxK8a4QPDx+iywfu636gOETNTfgVU3jYQmwbayvo77bTldgGwcbD/8kGUsrN9eK7D0PZuzrwCvUp/zawDmzIrXWg8HmC6ESPWmMqR0bK7LuS32SxWx4AnL/lBeobEQdD5vu5+jQiWbOKLe7Vw46sdfO2Byb/wQCqFInpcKfz1A= Received: from DBBPR83MB0507.EURPRD83.prod.outlook.com (2603:10a6:10:209::18) by DBAPR83MB0456.EURPRD83.prod.outlook.com (2603:10a6:10:195::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6023.3; Mon, 9 Jan 2023 13:00:02 +0000 Received: from DBBPR83MB0507.EURPRD83.prod.outlook.com ([fe80::8fe5:5d42:6056:3ed7]) by DBBPR83MB0507.EURPRD83.prod.outlook.com ([fe80::8fe5:5d42:6056:3ed7%8]) with mapi id 15.20.6023.003; Mon, 9 Jan 2023 13:00:02 +0000 From: Jelte Fennema To: Michael Banck CC: Maxim Orlov , Aleksander Alekseev , "pgsql-hackers@postgresql.org" Subject: Re: [EXTERNAL] Re: Support load balancing in libpq Thread-Topic: [EXTERNAL] Re: Support load balancing in libpq Thread-Index: AQHY1yHFtwUlCXDK602BJecaNnseHq5WTrzMgDvpmYCABDx/AQ== Date: Mon, 9 Jan 2023 13:00:01 +0000 Message-ID: References: <631d04f0.7b0a0220.1140d.9a91@mx.google.com> <63261554.df0a0220.44eb3.4f17@mx.google.com> <63b85894.170a0220.304c7.19a6@mx.google.com> In-Reply-To: <63b85894.170a0220.304c7.19a6@mx.google.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=True;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2023-01-09T13:00:01.443Z;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=General;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microsoft.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DBBPR83MB0507:EE_|DBAPR83MB0456:EE_ x-ms-office365-filtering-correlation-id: b324f46f-a382-4fee-f480-08daf2416bbb x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: P6u7DMn3TiR9t2Vbo3JkTMQk4H7wnjntN+E8T2CL9vKs1vMIwY/zFWNuT/lr7+3PCNl6QuuSeswgmOX34m5nVf2rwlJgvSyEE9zqzJeY5guaeJIA31bXyq9LGDjeT/UsigJoqkN+P9Fy9TeIlI3adYZQXC+vYvKHjK5IXSt9vKKFxQPh76B+ZnMau1rNLOhciNQWjtDa4/FslbBpEfjisqug/yVc/i7DlTpCjfYN3sCBwW/wIEhfGt3BSP60rAajcNrQ29aTq5Rj90SlL0gOV81lTMJbnx4/wMqxsdFH/mX5wyjSAicjHBPjxYEVIKojV8UFrVXImQk8tYpoZCdLbSV62cLzI5Ow08aghMFBxxYP/schbQtosMEndPjsEU+3RU01knbo+uZFk8sKLZY1bQSp6bysBfzUvrNz3tx0hjg/0esVYKsbZ+LwD7vFJ+fcVcC5m0r+k+/xqDLUtfT4Yj8iV6mXJmT0d28VDXF8Zzcu9EYHd8UNPQyVUn9NiH/aZJDbYJD1CQdKC17ec5S6LSt+zETrFLDzXMQB78hLtggFhcgWB2HWAP/nTH2aV+XbDYBGcxzRSXZxMpuEUIT9IGGCBmM+LDkhP0lYdnq4jSD43X3NmLotoRQJ7Kzjk+a8/napr6LZ+QOdUm+6LF6CLY6eH1cLH4FiNZTCfQwRl0z7BptIWw4bQ88oQwIEKrZrw67XA5rIYMwx/BHJMlRhC4eSq1mYHnYUuGiCQTBp5Iwnv1BbRRrbxj9/cNxuYVqliQApVU9xYrX/1Yn79c9cRqJC7IOyfBgvTz3q8KzJubo= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DBBPR83MB0507.EURPRD83.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(346002)(376002)(136003)(396003)(366004)(451199015)(86362001)(54906003)(41300700001)(10290500003)(76116006)(66476007)(66946007)(66556008)(4326008)(91956017)(64756008)(83380400001)(8676002)(66446008)(6916009)(99936003)(82960400001)(122000001)(38100700002)(82950400001)(33656002)(38070700005)(6506007)(7696005)(186003)(478600001)(26005)(71200400001)(966005)(52536014)(5660300002)(2906002)(8936002)(316002)(8990500004)(55016003)(9686003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?MUySckjwKgeXkhzPuFV8YEn8WoG/1Stf8mZLjj61Xu9F0rrDa1ozVklYer?= =?iso-8859-1?Q?n9xYPzip9yL7+fxPgOcRMkAy5d5FXYv7ig1lus4f7rAbVYE1ahepxfNCWt?= =?iso-8859-1?Q?syu55W3DxNNGb4MPb2x39oAkph9hcbwJ47/UVy3vSW4jEZe3FMx8CQm2n6?= =?iso-8859-1?Q?gJZ1vlzmL5dYZNAfvqnr5Nu1R7BMDc8Fyw5pdzwnbbabIR31L9OcQMURoT?= =?iso-8859-1?Q?2WdN+Kvc58D3sL8Pv7oeNZT7ifwyDrKLMViSdRTN3Z/GpLRZSbBZFsmfL8?= =?iso-8859-1?Q?2qgv8OY2TYZOaKlGAF4fIolVbiJsJExgz8JWAyHctZpAuzKjayYrHENxPo?= =?iso-8859-1?Q?qaCapom5b9Z5yBaoX8657yl8nTb58oYVy2jTteMer1IBrsZ0mkDN/nOf+x?= =?iso-8859-1?Q?l+8XcZDtpw/adUcPlDV4KoCGlxsIy9fhz6gk2tjwk4Pp7Uh4TNOrLnCXBW?= =?iso-8859-1?Q?cp1ubfV8NFMwnZ26aEccdZSXHEiNDkIoNRoNDdT3ycwJVX2muSD2qSi8T/?= =?iso-8859-1?Q?zbtLnTV0O2D0iwPkNUwq9umpkIKPRmHQ2+gfxml2UB4TOwZ3Bv4/T74ULP?= =?iso-8859-1?Q?rUpXahZSZYO9e9jmmTcJjh6WE6+gigN7kEsz+RT1NB/51CN02Jyy51DfIE?= =?iso-8859-1?Q?nUXxVoXHz3nu/uAv3IHQis0mfm71VwUhXSKhIlvm96I2ZJqBg7Y/NuFA34?= =?iso-8859-1?Q?1UNco3CsEDiCaUEf3l0dAqGwjQY9nXPgH5z0UK9lcWfmZS6lIX21S2sdPJ?= =?iso-8859-1?Q?rRD+dZpxNpugJvLP4joy91z4equDNw4fkGdrJltcWDlUJYMnLMNWyarUyY?= =?iso-8859-1?Q?x/OozC8gLXyVqjcKvn4vR9+Dlx7fMC4F8uVB6p5Z6/iXwD9y9PawLUz5tD?= =?iso-8859-1?Q?UxCuFGw2mAMa07/3xp97OfuzyqMIxJ+51ZE3mIW5KAWNcbxKORFg/LikcX?= =?iso-8859-1?Q?g7CZI8CjFgQo+tN8JhcVmiaQ4OQp4chZAjvkRD7ISA3cOtpcXsrQMPs4uP?= =?iso-8859-1?Q?8CM4XbuBW/ElbC8Z8r1qucy5D6WCoh0K5W1DYwJQ13WCa2tLJNz+ubLD3Z?= =?iso-8859-1?Q?KdbtcvYgCc8ZS0a900anvPiKyCc/7jQL7wMh3sQ54Ca2QJpOmiLpYH6FZU?= =?iso-8859-1?Q?hkiibo5KcO5yBDGtFEjCETZd0YqbrdGPjE/0iMWGUShQ6AofqQdocSz20S?= =?iso-8859-1?Q?NisvWUVM1R0gitRGK7Y7Kv5PrQmIYTzBIF0eslhmmJht5g2gxDtqWZ45VC?= =?iso-8859-1?Q?930AP/6hn9y4lw5UxQHGYJAKHCAT/bpOmyOyZfW7mhLbpWljl9iS8Wixw+?= =?iso-8859-1?Q?nLHndx0PsQ0ZZJjtKfUuXlJ7hy3hA893yB013GANFK8gmwUCPMLVt0mGGn?= =?iso-8859-1?Q?TYJh8IOCsmweo+nXbtaiWDLFFPB/iteYE9ruXwW/eVoFwmyqEX8AAlHUoS?= =?iso-8859-1?Q?Fgvq+m4ttIK4N3qV5/GBqVlph/CFJ4xzzYUz1u+2J2E7B252ZkEXzI//sV?= =?iso-8859-1?Q?2xSX84BfaZk61JyPPCIK1mVOVZuPXYzyoLX3jbJ0+l1paj9unCupzGbpRq?= =?iso-8859-1?Q?azGxIORr5IwwKNa63Cl2BCjH0Pf6E2d5n10a4sgwNivca2zCnsG1Y3PwGt?= =?iso-8859-1?Q?Q99aYCn+YoBOFJ18jNhuAITg1Pr0G3vath?= Content-Type: multipart/mixed; boundary="_003_DBBPR83MB05079A565E6AB609104D3F9DF7FE9DBBPR83MB0507EURP_" MIME-Version: 1.0 X-OriginatorOrg: microsoft.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DBBPR83MB0507.EURPRD83.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b324f46f-a382-4fee-f480-08daf2416bbb X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jan 2023 13:00:02.0153 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 8wZqndzJOk9ZiKvF/k+N92yKoboQLObncsZl8x2SimaQWug9my/0zaYqEnFEmIqBwTcsfPUDnTQsdAg24i+CfA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBAPR83MB0456 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_003_DBBPR83MB05079A565E6AB609104D3F9DF7FE9DBBPR83MB0507EURP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Attached an updated patch which should address your feedback and=0A= I updated the commit message.=0A= =0A= > I wonder whether making the parameter a boolean will paint us into a=0A= > corner=0A= =0A= I made it a string option, just like target_session_attrs. I'm pretty sure = a =0A= round-robin load balancing policy could be implemented in the future=0A= given certain constraints, like connections being made within the same=0A= process. I adjusted the docs accordingly.=0A= =0A= > > +typedef struct=0A= > > +{=0A= > > + int family;=0A= > > + SockAddr addr;=0A= > > +} AddrInfo;=0A= >=0A= > That last line looks weirdly indented compared to SockAddr; in the=0A= > struct above.=0A= =0A= Yes I agree, but for some reason pgindent really badly wants it formatted= =0A= that way. I now undid the changes made by pgindent manually.=0A= =0A= > I wonder whether this needs to be documented if it is mostly a=0A= > development/testing parameter?=0A= =0A= I also wasn't sure whether it should be documented or not. I'm fine with=0A= either, I'll leave it in for now and let a committer decide if it's wanted = or not.=0A= =0A= > A bit unclear why you put the variables at this point in the list, but=0A= > the list doesn't seem to be ordered strictly anyway; still, maybe they=0A= > would fit best at the bottom below target_session_attrs?=0A= =0A= Good point, I added them after target_session_attrs now and also moved=0A= docs/parsing accordingly. This makes conceptually to me as well, since=0A= target_session_attrs and load_balance_hosts have some interesting=0A= sense contextually too.=0A= =0A= P.S. I also attached the same pgindent run patch that I added in=0A= https://www.postgresql.org/message-id/flat/AM5PR83MB0178D3B31CA1B6EC4A8ECC4= 2F7529@AM5PR83MB0178.EURPRD83.prod.outlook.com= --_003_DBBPR83MB05079A565E6AB609104D3F9DF7FE9DBBPR83MB0507EURP_ Content-Type: application/octet-stream; name="v6-0001-libpq-Run-pgindent-after-a9e9a9f32b3.patch" Content-Description: v6-0001-libpq-Run-pgindent-after-a9e9a9f32b3.patch Content-Disposition: attachment; filename="v6-0001-libpq-Run-pgindent-after-a9e9a9f32b3.patch"; size=40288; creation-date="Mon, 09 Jan 2023 12:57:53 GMT"; modification-date="Mon, 09 Jan 2023 12:57:53 GMT" Content-Transfer-Encoding: base64 RnJvbSBiZWIwMDU0NzdjMTZhZjI4NWRmN2ZjMDY4YmZjMmRlZjcwZTVhY2Y4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hIDxqZWx0ZS5mZW5uZW1hQG1pY3Jvc29m dC5jb20+CkRhdGU6IFdlZCwgMzAgTm92IDIwMjIgMTA6MDc6MTkgKzAxMDAKU3ViamVjdDogW1BB VENIIHY2IDEvMl0gbGlicHE6IFJ1biBwZ2luZGVudCBhZnRlciBhOWU5YTlmMzJiMwoKSXQgc2Vl bXMgdGhhdCBwZ2luZGVudCB3YXMgbm90IHJ1biBhZnRlciB0aGUgZXJyb3IgaGFuZGxpbmcgcmVm YWN0b3IgaW4KY29tbWl0IGE5ZTlhOWYzMmIzNWVkZjEyOWM4OGU4YjkyOWVmMjIzZjg1MTFmNTku IFRoaXMgZml4ZXMgdGhhdCBhbmQKYWxzbyBhZGRyZXNzZXMgYSBmZXcgb3RoZXIgdGhpbmdzIHBn aW5kZW50IHdhbnRlZCB0byBjaGFuZ2UgaW4gbGlicHEuCi0tLQogc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtYXV0aC1zY3JhbS5jICAgICB8ICAgMiArLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt YXV0aC5jICAgICAgICAgICB8ICAgOCArLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVj dC5jICAgICAgICB8IDEyNCArKysrKysrKysrKy0tLS0tLS0tLS0tLQogc3JjL2ludGVyZmFjZXMv bGlicHEvZmUtZXhlYy5jICAgICAgICAgICB8ICAxNiArLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWxvYmouYyAgICAgICAgICAgfCAgNDIgKysrKy0tLS0KIHNyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLW1pc2MuYyAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXBy b3RvY29sMy5jICAgICAgfCAgIDIgKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1j b21tb24uYyAgfCAgIDYgKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1nc3NhcGku YyAgfCAgMTIgKy0tCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtb3BlbnNzbC5jIHwg IDY0ICsrKysrKy0tLS0tLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMgICAgICAg ICB8ICAgOCArLQogc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggICAgICAgICB8ICAg NCArLQogMTIgZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMoKyksIDE0OSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLXNjcmFtLmMgYi9z cmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLXNjcmFtLmMKaW5kZXggOWM0MmVhNGY4MS4uMTJj M2QwYmMzMyAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtYXV0aC1zY3JhbS5j CisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGgtc2NyYW0uYwpAQCAtNzE2LDcgKzcx Niw3IEBAIHJlYWRfc2VydmVyX2ZpbmFsX21lc3NhZ2UoZmVfc2NyYW1fc3RhdGUgKnN0YXRlLCBj aGFyICppbnB1dCkKIAkJCXJldHVybiBmYWxzZTsKIAkJfQogCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAiZXJyb3IgcmVjZWl2ZWQgZnJvbSBzZXJ2ZXIgaW4gU0NSQU0gZXhjaGFuZ2U6 ICVzIiwKLQkJCQkJCSAgIGVycm1zZyk7CisJCQkJCQkJCWVycm1zZyk7CiAJCXJldHVybiBmYWxz ZTsKIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGguYyBiL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWF1dGguYwppbmRleCA5YWZjNmYxOWI5Li5hYjQ1NGU2Y2Qw IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1hdXRoLmMKKysrIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtYXV0aC5jCkBAIC03Myw3ICs3Myw3IEBAIHBnX0dTU19jb250aW51 ZShQR2Nvbm4gKmNvbm4sIGludCBwYXlsb2FkbGVuKQogCQlpZiAoIWdpbmJ1Zi52YWx1ZSkKIAkJ ewogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm91dCBvZiBtZW1vcnkgYWxsb2Nh dGluZyBHU1NBUEkgYnVmZmVyICglZCkiLAotCQkJCQkJCSAgcGF5bG9hZGxlbik7CisJCQkJCQkJ CQlwYXlsb2FkbGVuKTsKIAkJCXJldHVybiBTVEFUVVNfRVJST1I7CiAJCX0KIAkJaWYgKHBxR2V0 bmNoYXIoZ2luYnVmLnZhbHVlLCBwYXlsb2FkbGVuLCBjb25uKSkKQEAgLTIyMyw3ICsyMjMsNyBA QCBwZ19TU1BJX2NvbnRpbnVlKFBHY29ubiAqY29ubiwgaW50IHBheWxvYWRsZW4pCiAJCWlmICgh aW5wdXRidWYpCiAJCXsKIAkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJvdXQgb2Yg bWVtb3J5IGFsbG9jYXRpbmcgU1NQSSBidWZmZXIgKCVkKSIsCi0JCQkJCQkJICBwYXlsb2FkbGVu KTsKKwkJCQkJCQkJCXBheWxvYWRsZW4pOwogCQkJcmV0dXJuIFNUQVRVU19FUlJPUjsKIAkJfQog CQlpZiAocHFHZXRuY2hhcihpbnB1dGJ1ZiwgcGF5bG9hZGxlbiwgY29ubikpCkBAIC02MjMsNyAr NjIzLDcgQEAgcGdfU0FTTF9jb250aW51ZShQR2Nvbm4gKmNvbm4sIGludCBwYXlsb2FkbGVuLCBi b29sIGZpbmFsKQogCWlmICghY2hhbGxlbmdlKQogCXsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJy b3IoY29ubiwgIm91dCBvZiBtZW1vcnkgYWxsb2NhdGluZyBTQVNMIGJ1ZmZlciAoJWQpIiwKLQkJ CQkJCSAgcGF5bG9hZGxlbik7CisJCQkJCQkJCXBheWxvYWRsZW4pOwogCQlyZXR1cm4gU1RBVFVT X0VSUk9SOwogCX0KIApAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgUFFlbmNyeXB0UGFzc3dvcmRDb25u KFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcGFzc3dkLCBjb25zdCBjaGFyICp1c2VyLAogCWVs c2UKIAl7CiAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJ1bnJlY29nbml6ZWQgcGFz c3dvcmQgZW5jcnlwdGlvbiBhbGdvcml0aG0gXCIlc1wiIiwKLQkJCQkJCSAgYWxnb3JpdGhtKTsK KwkJCQkJCQkJYWxnb3JpdGhtKTsKIAkJcmV0dXJuIE5VTEw7CiAJfQogCmRpZmYgLS1naXQgYS9z cmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0LmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9m ZS1jb25uZWN0LmMKaW5kZXggNTBiNWRmMzQ5MC4uNzczZTllMWYzYSAxMDA2NDQKLS0tIGEvc3Jj L2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBx L2ZlLWNvbm5lY3QuYwpAQCAtMTA3OSw3ICsxMDc5LDcgQEAgY29ubmVjdE9wdGlvbnMyKFBHY29u biAqY29ubikKIAkJewogCQkJY29ubi0+c3RhdHVzID0gQ09OTkVDVElPTl9CQUQ7CiAJCQlsaWJw cV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IG1hdGNoICVkIGhvc3QgbmFtZXMg dG8gJWQgaG9zdGFkZHIgdmFsdWVzIiwKLQkJCQkJCQkgICBjb3VudF9jb21tYV9zZXBhcmF0ZWRf ZWxlbXMoY29ubi0+cGdob3N0KSwgY29ubi0+bmNvbm5ob3N0KTsKKwkJCQkJCQkJCWNvdW50X2Nv bW1hX3NlcGFyYXRlZF9lbGVtcyhjb25uLT5wZ2hvc3QpLCBjb25uLT5uY29ubmhvc3QpOwogCQkJ cmV0dXJuIGZhbHNlOwogCQl9CiAJfQpAQCAtMTE1OSw3ICsxMTU5LDcgQEAgY29ubmVjdE9wdGlv bnMyKFBHY29ubiAqY29ubikKIAkJewogCQkJY29ubi0+c3RhdHVzID0gQ09OTkVDVElPTl9CQUQ7 CiAJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IG1hdGNoICVkIHBv cnQgbnVtYmVycyB0byAlZCBob3N0cyIsCi0JCQkJCQkJICAgY291bnRfY29tbWFfc2VwYXJhdGVk X2VsZW1zKGNvbm4tPnBncG9ydCksIGNvbm4tPm5jb25uaG9zdCk7CisJCQkJCQkJCQljb3VudF9j b21tYV9zZXBhcmF0ZWRfZWxlbXMoY29ubi0+cGdwb3J0KSwgY29ubi0+bmNvbm5ob3N0KTsKIAkJ CXJldHVybiBmYWxzZTsKIAkJfQogCX0KQEAgLTEyNDgsNyArMTI0OCw3IEBAIGNvbm5lY3RPcHRp b25zMihQR2Nvbm4gKmNvbm4pCiAJCXsKIAkJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05fQkFE OwogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImludmFsaWQgJXMgdmFsdWU6IFwi JXNcIiIsCi0JCQkJCQkJICAgImNoYW5uZWxfYmluZGluZyIsIGNvbm4tPmNoYW5uZWxfYmluZGlu Zyk7CisJCQkJCQkJCQkiY2hhbm5lbF9iaW5kaW5nIiwgY29ubi0+Y2hhbm5lbF9iaW5kaW5nKTsK IAkJCXJldHVybiBmYWxzZTsKIAkJfQogCX0KQEAgLTEyNzMsNyArMTI3Myw3IEBAIGNvbm5lY3RP cHRpb25zMihQR2Nvbm4gKmNvbm4pCiAJCXsKIAkJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05f QkFEOwogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImludmFsaWQgJXMgdmFsdWU6 IFwiJXNcIiIsCi0JCQkJCQkJICAgInNzbG1vZGUiLCBjb25uLT5zc2xtb2RlKTsKKwkJCQkJCQkJ CSJzc2xtb2RlIiwgY29ubi0+c3NsbW9kZSk7CiAJCQlyZXR1cm4gZmFsc2U7CiAJCX0KIApAQCAt MTI5Myw3ICsxMjkzLDcgQEAgY29ubmVjdE9wdGlvbnMyKFBHY29ubiAqY29ubikKIAkJCWNhc2Ug J3YnOgkJCS8qICJ2ZXJpZnktY2EiIG9yICJ2ZXJpZnktZnVsbCIgKi8KIAkJCQljb25uLT5zdGF0 dXMgPSBDT05ORUNUSU9OX0JBRDsKIAkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAi c3NsbW9kZSB2YWx1ZSBcIiVzXCIgaW52YWxpZCB3aGVuIFNTTCBzdXBwb3J0IGlzIG5vdCBjb21w aWxlZCBpbiIsCi0JCQkJCQkJCSAgIGNvbm4tPnNzbG1vZGUpOworCQkJCQkJCQkJCWNvbm4tPnNz bG1vZGUpOwogCQkJCXJldHVybiBmYWxzZTsKIAkJfQogI2VuZGlmCkBAIC0xMzEzLDE2ICsxMzEz LDE2IEBAIGNvbm5lY3RPcHRpb25zMihQR2Nvbm4gKmNvbm4pCiAJewogCQljb25uLT5zdGF0dXMg PSBDT05ORUNUSU9OX0JBRDsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImludmFs aWQgJXMgdmFsdWU6IFwiJXNcIiIsCi0JCQkJCQkgICAic3NsX21pbl9wcm90b2NvbF92ZXJzaW9u IiwKLQkJCQkJCSAgIGNvbm4tPnNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbik7CisJCQkJCQkJCSJz c2xfbWluX3Byb3RvY29sX3ZlcnNpb24iLAorCQkJCQkJCQljb25uLT5zc2xfbWluX3Byb3RvY29s X3ZlcnNpb24pOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCWlmICghc3NsVmVyaWZ5UHJvdG9jb2xW ZXJzaW9uKGNvbm4tPnNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbikpCiAJewogCQljb25uLT5zdGF0 dXMgPSBDT05ORUNUSU9OX0JBRDsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImlu dmFsaWQgJXMgdmFsdWU6IFwiJXNcIiIsCi0JCQkJCQkgICAic3NsX21heF9wcm90b2NvbF92ZXJz aW9uIiwKLQkJCQkJCSAgIGNvbm4tPnNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbik7CisJCQkJCQkJ CSJzc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24iLAorCQkJCQkJCQljb25uLT5zc2xfbWF4X3Byb3Rv Y29sX3ZlcnNpb24pOwogCQlyZXR1cm4gZmFsc2U7CiAJfQogCkBAIC0xMzU5LDcgKzEzNTksNyBA QCBjb25uZWN0T3B0aW9uczIoUEdjb25uICpjb25uKQogCQl7CiAJCQljb25uLT5zdGF0dXMgPSBD T05ORUNUSU9OX0JBRDsKIAkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJnc3NlbmNt b2RlIHZhbHVlIFwiJXNcIiBpbnZhbGlkIHdoZW4gR1NTQVBJIHN1cHBvcnQgaXMgbm90IGNvbXBp bGVkIGluIiwKLQkJCQkJCQkgICBjb25uLT5nc3NlbmNtb2RlKTsKKwkJCQkJCQkJCWNvbm4tPmdz c2VuY21vZGUpOwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAjZW5kaWYKQEAgLTEzOTIsOCArMTM5 Miw4IEBAIGNvbm5lY3RPcHRpb25zMihQR2Nvbm4gKmNvbm4pCiAJCXsKIAkJCWNvbm4tPnN0YXR1 cyA9IENPTk5FQ1RJT05fQkFEOwogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImlu dmFsaWQgJXMgdmFsdWU6IFwiJXNcIiIsCi0JCQkJCQkJICAgInRhcmdldF9zZXNzaW9uX2F0dHJz IiwKLQkJCQkJCQkgICBjb25uLT50YXJnZXRfc2Vzc2lvbl9hdHRycyk7CisJCQkJCQkJCQkidGFy Z2V0X3Nlc3Npb25fYXR0cnMiLAorCQkJCQkJCQkJY29ubi0+dGFyZ2V0X3Nlc3Npb25fYXR0cnMp OwogCQkJcmV0dXJuIGZhbHNlOwogCQl9CiAJfQpAQCAtMTYwOSw3ICsxNjA5LDcgQEAgY29ubmVj dE5vRGVsYXkoUEdjb25uICpjb25uKQogCQljaGFyCQlzZWJ1ZltQR19TVFJFUlJPUl9SX0JVRkxF Tl07CiAKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBzZXQgc29j a2V0IHRvIFRDUCBubyBkZWxheSBtb2RlOiAlcyIsCi0JCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNP Q0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCVNPQ0tfU1RSRVJST1Io U09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJcmV0dXJuIDA7CiAJfQogI2Vu ZGlmCkBAIC0xNzg3LDcgKzE3ODcsNyBAQCBwYXJzZV9pbnRfcGFyYW0oY29uc3QgY2hhciAqdmFs dWUsIGludCAqcmVzdWx0LCBQR2Nvbm4gKmNvbm4sCiAKIGVycm9yOgogCWxpYnBxX2FwcGVuZF9j b25uX2Vycm9yKGNvbm4sICJpbnZhbGlkIGludGVnZXIgdmFsdWUgXCIlc1wiIGZvciBjb25uZWN0 aW9uIG9wdGlvbiBcIiVzXCIiLAotCQkJCQkgICB2YWx1ZSwgY29udGV4dCk7CisJCQkJCQkJdmFs dWUsIGNvbnRleHQpOwogCXJldHVybiBmYWxzZTsKIH0KIApAQCAtMTgxNiw5ICsxODE2LDkgQEAg c2V0S2VlcGFsaXZlc0lkbGUoUEdjb25uICpjb25uKQogCQljaGFyCQlzZWJ1ZltQR19TVFJFUlJP Ul9SX0JVRkxFTl07CiAKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIiVzKCVzKSBm YWlsZWQ6ICVzIiwKLQkJCQkJCSAgICJzZXRzb2Nrb3B0IiwKLQkJCQkJCSAgIFBHX1RDUF9LRUVQ QUxJVkVfSURMRV9TVFIsCi0JCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVm LCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCSJzZXRzb2Nrb3B0IiwKKwkJCQkJCQkJUEdfVENQ X0tFRVBBTElWRV9JRExFX1NUUiwKKwkJCQkJCQkJU09DS19TVFJFUlJPUihTT0NLX0VSUk5PLCBz ZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCQlyZXR1cm4gMDsKIAl9CiAjZW5kaWYKQEAgLTE4NTAs OSArMTg1MCw5IEBAIHNldEtlZXBhbGl2ZXNJbnRlcnZhbChQR2Nvbm4gKmNvbm4pCiAJCWNoYXIJ CXNlYnVmW1BHX1NUUkVSUk9SX1JfQlVGTEVOXTsKIAogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJv cihjb25uLCAiJXMoJXMpIGZhaWxlZDogJXMiLAotCQkJCQkJICAgInNldHNvY2tvcHQiLAotCQkJ CQkJICAgIlRDUF9LRUVQSU5UVkwiLAotCQkJCQkJICAgU09DS19TVFJFUlJPUihTT0NLX0VSUk5P LCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJCQkJCQkic2V0c29ja29wdCIsCisJCQkJCQkJ CSJUQ1BfS0VFUElOVFZMIiwKKwkJCQkJCQkJU09DS19TVFJFUlJPUihTT0NLX0VSUk5PLCBzZWJ1 Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCQlyZXR1cm4gMDsKIAl9CiAjZW5kaWYKQEAgLTE4ODUsOSAr MTg4NSw5IEBAIHNldEtlZXBhbGl2ZXNDb3VudChQR2Nvbm4gKmNvbm4pCiAJCWNoYXIJCXNlYnVm W1BHX1NUUkVSUk9SX1JfQlVGTEVOXTsKIAogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25u LCAiJXMoJXMpIGZhaWxlZDogJXMiLAotCQkJCQkJICAgInNldHNvY2tvcHQiLAotCQkJCQkJICAg IlRDUF9LRUVQQ05UIiwKLQkJCQkJCSAgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYs IHNpemVvZihzZWJ1ZikpKTsKKwkJCQkJCQkJInNldHNvY2tvcHQiLAorCQkJCQkJCQkiVENQX0tF RVBDTlQiLAorCQkJCQkJCQlTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yo c2VidWYpKSk7CiAJCXJldHVybiAwOwogCX0KICNlbmRpZgpAQCAtMTk0OSw4ICsxOTQ5LDggQEAg cHJlcEtlZXBhbGl2ZXNXaW4zMihQR2Nvbm4gKmNvbm4pCiAJaWYgKCFzZXRLZWVwYWxpdmVzV2lu MzIoY29ubi0+c29jaywgaWRsZSwgaW50ZXJ2YWwpKQogCXsKIAkJbGlicHFfYXBwZW5kX2Nvbm5f ZXJyb3IoY29ubiwgIiVzKCVzKSBmYWlsZWQ6IGVycm9yIGNvZGUgJWQiLAotCQkJCQkJICAiV1NB SW9jdGwiLCAiU0lPX0tFRVBBTElWRV9WQUxTIiwKLQkJCQkJCSAgV1NBR2V0TGFzdEVycm9yKCkp OworCQkJCQkJCQkiV1NBSW9jdGwiLCAiU0lPX0tFRVBBTElWRV9WQUxTIiwKKwkJCQkJCQkJV1NB R2V0TGFzdEVycm9yKCkpOwogCQlyZXR1cm4gMDsKIAl9CiAJcmV0dXJuIDE7CkBAIC0xOTgzLDkg KzE5ODMsOSBAQCBzZXRUQ1BVc2VyVGltZW91dChQR2Nvbm4gKmNvbm4pCiAJCWNoYXIJCXNlYnVm WzI1Nl07CiAKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIiVzKCVzKSBmYWlsZWQ6 ICVzIiwKLQkJCQkJCSAgICJzZXRzb2Nrb3B0IiwKLQkJCQkJCSAgICJUQ1BfVVNFUl9USU1FT1VU IiwKLQkJCQkJCSAgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1 ZikpKTsKKwkJCQkJCQkJInNldHNvY2tvcHQiLAorCQkJCQkJCQkiVENQX1VTRVJfVElNRU9VVCIs CisJCQkJCQkJCVNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1Zikp KTsKIAkJcmV0dXJuIDA7CiAJfQogI2VuZGlmCkBAIC0yMzU0LDcgKzIzNTQsNyBAQCBrZWVwX2dv aW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJ CQlpZiAocmV0IHx8ICFjb25uLT5hZGRybGlzdCkKIAkJCQl7CiAJCQkJCWxpYnBxX2FwcGVuZF9j b25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgdHJhbnNsYXRlIGhvc3QgbmFtZSBcIiVzXCIgdG8g YWRkcmVzczogJXMiLAotCQkJCQkJCQkJICAgY2gtPmhvc3QsIGdhaV9zdHJlcnJvcihyZXQpKTsK KwkJCQkJCQkJCQkJY2gtPmhvc3QsIGdhaV9zdHJlcnJvcihyZXQpKTsKIAkJCQkJZ290byBrZWVw X2dvaW5nOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTIzNjYsNyArMjM2Niw3IEBAIGtlZXBfZ29p bmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJ CWlmIChyZXQgfHwgIWNvbm4tPmFkZHJsaXN0KQogCQkJCXsKIAkJCQkJbGlicHFfYXBwZW5kX2Nv bm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBwYXJzZSBuZXR3b3JrIGFkZHJlc3MgXCIlc1wiOiAl cyIsCi0JCQkJCQkJCQkgICBjaC0+aG9zdGFkZHIsIGdhaV9zdHJlcnJvcihyZXQpKTsKKwkJCQkJ CQkJCQkJY2gtPmhvc3RhZGRyLCBnYWlfc3RyZXJyb3IocmV0KSk7CiAJCQkJCWdvdG8ga2VlcF9n b2luZzsKIAkJCQl9CiAJCQkJYnJlYWs7CkBAIC0yMzc3LDggKzIzNzcsOCBAQCBrZWVwX2dvaW5n OgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJCQlp ZiAoc3RybGVuKHBvcnRzdHIpID49IFVOSVhTT0NLX1BBVEhfQlVGTEVOKQogCQkJCXsKIAkJCQkJ bGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIlVuaXgtZG9tYWluIHNvY2tldCBwYXRoIFwi JXNcIiBpcyB0b28gbG9uZyAobWF4aW11bSAlZCBieXRlcykiLAotCQkJCQkJCQkJICAgcG9ydHN0 ciwKLQkJCQkJCQkJCSAgIChpbnQpIChVTklYU09DS19QQVRIX0JVRkxFTiAtIDEpKTsKKwkJCQkJ CQkJCQkJcG9ydHN0ciwKKwkJCQkJCQkJCQkJKGludCkgKFVOSVhTT0NLX1BBVEhfQlVGTEVOIC0g MSkpOwogCQkJCQlnb3RvIGtlZXBfZ29pbmc7CiAJCQkJfQogCkBAIC0yMzkxLDcgKzIzOTEsNyBA QCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhl cmUgaXMKIAkJCQlpZiAocmV0IHx8ICFjb25uLT5hZGRybGlzdCkKIAkJCQl7CiAJCQkJCWxpYnBx X2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgdHJhbnNsYXRlIFVuaXgtZG9tYWlu IHNvY2tldCBwYXRoIFwiJXNcIiB0byBhZGRyZXNzOiAlcyIsCi0JCQkJCQkJCQkgICBwb3J0c3Ry LCBnYWlfc3RyZXJyb3IocmV0KSk7CisJCQkJCQkJCQkJCXBvcnRzdHIsIGdhaV9zdHJlcnJvcihy ZXQpKTsKIAkJCQkJZ290byBrZWVwX2dvaW5nOwogCQkJCX0KIAkJCQlicmVhazsKQEAgLTI1MTMs NyArMjUxMyw3IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVy ZSB1bnRpbCB0aGVyZSBpcwogCQkJCQkJfQogCQkJCQkJZW1pdEhvc3RJZGVudGl0eUluZm8oY29u biwgaG9zdF9hZGRyKTsKIAkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3Vs ZCBub3QgY3JlYXRlIHNvY2tldDogJXMiLAotCQkJCQkJCQkJCSAgIFNPQ0tfU1RSRVJST1IoZXJy b3Jubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJCQkJCQkJCQkJCVNPQ0tfU1RSRVJST1Io ZXJyb3Jubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCQkJCWdvdG8gZXJyb3JfcmV0dXJu OwogCQkJCQl9CiAKQEAgLTI1NDMsNyArMjU0Myw3IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyogV2Ug d2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCQlpZiAoIXBnX3NldF9u b2Jsb2NrKGNvbm4tPnNvY2spKQogCQkJCQl7CiAJCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJv cihjb25uLCAiY291bGQgbm90IHNldCBzb2NrZXQgdG8gbm9uYmxvY2tpbmcgbW9kZTogJXMiLAot CQkJCQkJCQkJCSAgIFNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1 ZikpKTsKKwkJCQkJCQkJCQkJCVNPQ0tfU1RSRVJST1IoU09DS19FUlJOTywgc2VidWYsIHNpemVv ZihzZWJ1ZikpKTsKIAkJCQkJCWNvbm4tPnRyeV9uZXh0X2FkZHIgPSB0cnVlOwogCQkJCQkJZ290 byBrZWVwX2dvaW5nOwogCQkJCQl9CkBAIC0yNTUyLDcgKzI1NTIsNyBAQCBrZWVwX2dvaW5nOgkJ CQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJCQkJaWYg KGZjbnRsKGNvbm4tPnNvY2ssIEZfU0VURkQsIEZEX0NMT0VYRUMpID09IC0xKQogCQkJCQl7CiAJ CQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IHNldCBzb2NrZXQg dG8gY2xvc2Utb24tZXhlYyBtb2RlOiAlcyIsCi0JCQkJCQkJCQkJICAgU09DS19TVFJFUlJPUihT T0NLX0VSUk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJCQkJCQkJCQkJU09DS19TVFJF UlJPUihTT0NLX0VSUk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCQkJCQkJY29ubi0+dHJ5 X25leHRfYWRkciA9IHRydWU7CiAJCQkJCQlnb3RvIGtlZXBfZ29pbmc7CiAJCQkJCX0KQEAgLTI1 ODEsOSArMjU4MSw5IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8g aGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCQkJCQkJCQkoY2hhciAqKSAmb24sIHNpemVvZihvbikp IDwgMCkKIAkJCQkJCXsKIAkJCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiJXMo JXMpIGZhaWxlZDogJXMiLAotCQkJCQkJCQkJCQkgICAic2V0c29ja29wdCIsCi0JCQkJCQkJCQkJ CSAgICJTT19LRUVQQUxJVkUiLAotCQkJCQkJCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJS Tk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCQkJCQkJInNldHNvY2tvcHQiLAor CQkJCQkJCQkJCQkJCSJTT19LRUVQQUxJVkUiLAorCQkJCQkJCQkJCQkJCVNPQ0tfU1RSRVJST1Io U09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCQkJCQllcnIgPSAxOwogCQkJ CQkJfQogCQkJCQkJZWxzZSBpZiAoIXNldEtlZXBhbGl2ZXNJZGxlKGNvbm4pCkBAIC0yNzA4LDcg KzI3MDgsNyBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUg dW50aWwgdGhlcmUgaXMKIAkJCQkJCQkgICAoY2hhciAqKSAmb3B0dmFsLCAmb3B0bGVuKSA9PSAt MSkKIAkJCQl7CiAJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3Qg Z2V0IHNvY2tldCBlcnJvciBzdGF0dXM6ICVzIiwKLQkJCQkJCQkJCSAgIFNPQ0tfU1RSRVJST1Io U09DS19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJCQkJCQkJCQkJU09DS19TVFJF UlJPUihTT0NLX0VSUk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCQkJCQlnb3RvIGVycm9y X3JldHVybjsKIAkJCQl9CiAJCQkJZWxzZSBpZiAob3B0dmFsICE9IDApCkBAIC0yNzM1LDcgKzI3 MzUsNyBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50 aWwgdGhlcmUgaXMKIAkJCQkJCQkJJmNvbm4tPmxhZGRyLnNhbGVuKSA8IDApCiAJCQkJewogCQkJ CQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IGdldCBjbGllbnQgYWRk cmVzcyBmcm9tIHNvY2tldDogJXMiLAotCQkJCQkJCQkJICAgU09DS19TVFJFUlJPUihTT0NLX0VS Uk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJCQkJCQkJCQlTT0NLX1NUUkVSUk9SKFNP Q0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJCQkJCWdvdG8gZXJyb3JfcmV0dXJu OwogCQkJCX0KIApAQCAtMjc3NSw3ICsyNzc1LDcgQEAga2VlcF9nb2luZzoJCQkJCQkvKiBXZSB3 aWxsIGNvbWUgYmFjayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAJCQkJCQkJbGlicHFfYXBwZW5k X2Nvbm5fZXJyb3IoY29ubiwgInJlcXVpcmVwZWVyIHBhcmFtZXRlciBpcyBub3Qgc3VwcG9ydGVk IG9uIHRoaXMgcGxhdGZvcm0iKTsKIAkJCQkJCWVsc2UKIAkJCQkJCQlsaWJwcV9hcHBlbmRfY29u bl9lcnJvcihjb25uLCAiY291bGQgbm90IGdldCBwZWVyIGNyZWRlbnRpYWxzOiAlcyIsCi0JCQkJ CQkJCQkJCSAgIHN0cmVycm9yX3IoZXJybm8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJ CQkJCQkJCQkJc3RyZXJyb3JfcihlcnJubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCQkJ CWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJCQl9CiAKQEAgLTI3ODgsNyArMjc4OCw3IEBAIGtlZXBf Z29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwog CQkJCQlpZiAoc3RyY21wKHJlbW90ZV91c2VybmFtZSwgY29ubi0+cmVxdWlyZXBlZXIpICE9IDAp CiAJCQkJCXsKIAkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJyZXF1aXJlcGVl ciBzcGVjaWZpZXMgXCIlc1wiLCBidXQgYWN0dWFsIHBlZXIgdXNlciBuYW1lIGlzIFwiJXNcIiIs Ci0JCQkJCQkJCQkJICAgY29ubi0+cmVxdWlyZXBlZXIsIHJlbW90ZV91c2VybmFtZSk7CisJCQkJ CQkJCQkJCQljb25uLT5yZXF1aXJlcGVlciwgcmVtb3RlX3VzZXJuYW1lKTsKIAkJCQkJCWZyZWUo cmVtb3RlX3VzZXJuYW1lKTsKIAkJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJCQl9CkBAIC0y ODI5LDcgKzI4MjksNyBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRv IGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJCQkJaWYgKHBxUGFja2V0U2VuZChjb25uLCAwLCAmcHYs IHNpemVvZihwdikpICE9IFNUQVRVU19PSykKIAkJCQkJewogCQkJCQkJbGlicHFfYXBwZW5kX2Nv bm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBzZW5kIEdTU0FQSSBuZWdvdGlhdGlvbiBwYWNrZXQ6 ICVzIiwKLQkJCQkJCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXpl b2Yoc2VidWYpKSk7CisJCQkJCQkJCQkJCQlTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVm LCBzaXplb2Yoc2VidWYpKSk7CiAJCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCQkJfQogCkBA IC0yODQwLDcgKzI4NDAsNyBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNr IHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJCQllbHNlIGlmICghY29ubi0+Z2N0eCAmJiBjb25u LT5nc3NlbmNtb2RlWzBdID09ICdyJykKIAkJCQl7CiAJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vy cm9yKGNvbm4sCi0JCQkJCQkJCQkgICAiR1NTQVBJIGVuY3J5cHRpb24gcmVxdWlyZWQgYnV0IHdh cyBpbXBvc3NpYmxlIChwb3NzaWJseSBubyBjcmVkZW50aWFsIGNhY2hlLCBubyBzZXJ2ZXIgc3Vw cG9ydCwgb3IgdXNpbmcgYSBsb2NhbCBzb2NrZXQpIik7CisJCQkJCQkJCQkJCSJHU1NBUEkgZW5j cnlwdGlvbiByZXF1aXJlZCBidXQgd2FzIGltcG9zc2libGUgKHBvc3NpYmx5IG5vIGNyZWRlbnRp YWwgY2FjaGUsIG5vIHNlcnZlciBzdXBwb3J0LCBvciB1c2luZyBhIGxvY2FsIHNvY2tldCkiKTsK IAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQkJfQogI2VuZGlmCkBAIC0yODgyLDcgKzI4ODIs NyBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwg dGhlcmUgaXMKIAkJCQkJaWYgKHBxUGFja2V0U2VuZChjb25uLCAwLCAmcHYsIHNpemVvZihwdikp ICE9IFNUQVRVU19PSykKIAkJCQkJewogCQkJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29u biwgImNvdWxkIG5vdCBzZW5kIFNTTCBuZWdvdGlhdGlvbiBwYWNrZXQ6ICVzIiwKLQkJCQkJCQkJ CQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJ CQkJCQkJCQkJCQlTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYp KSk7CiAJCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCQkJfQogCQkJCQkvKiBPaywgd2FpdCBm b3IgcmVzcG9uc2UgKi8KQEAgLTI5MTEsNyArMjkxMSw3IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyog V2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCWlmIChwcVBhY2tl dFNlbmQoY29ubiwgMCwgc3RhcnRwYWNrZXQsIHBhY2tldGxlbikgIT0gU1RBVFVTX09LKQogCQkJ CXsKIAkJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBzZW5kIHN0 YXJ0dXAgcGFja2V0OiAlcyIsCi0JCQkJCQkJCQkgICBTT0NLX1NUUkVSUk9SKFNPQ0tfRVJSTk8s IHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCQkJCVNPQ0tfU1RSRVJST1IoU09DS19F UlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCQkJZnJlZShzdGFydHBhY2tldCk7CiAJ CQkJCWdvdG8gZXJyb3JfcmV0dXJuOwogCQkJCX0KQEAgLTMwMTIsNyArMzAxMiw3IEBAIGtlZXBf Z29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwog CQkJCQllbHNlCiAJCQkJCXsKIAkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJy ZWNlaXZlZCBpbnZhbGlkIHJlc3BvbnNlIHRvIFNTTCBuZWdvdGlhdGlvbjogJWMiLAotCQkJCQkJ CQkJCSAgIFNTTG9rKTsKKwkJCQkJCQkJCQkJCVNTTG9rKTsKIAkJCQkJCWdvdG8gZXJyb3JfcmV0 dXJuOwogCQkJCQl9CiAJCQkJfQpAQCAtMzEyMyw3ICszMTIzLDcgQEAga2VlcF9nb2luZzoJCQkJ CQkvKiBXZSB3aWxsIGNvbWUgYmFjayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAJCQkJCWVsc2Ug aWYgKGdzc19vayAhPSAnRycpCiAJCQkJCXsKIAkJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9y KGNvbm4sICJyZWNlaXZlZCBpbnZhbGlkIHJlc3BvbnNlIHRvIEdTU0FQSSBuZWdvdGlhdGlvbjog JWMiLAotCQkJCQkJCQkJCSAgIGdzc19vayk7CisJCQkJCQkJCQkJCQlnc3Nfb2spOwogCQkJCQkJ Z290byBlcnJvcl9yZXR1cm47CiAJCQkJCX0KIAkJCQl9CkBAIC0zMjAxLDcgKzMyMDEsNyBAQCBr ZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUg aXMKIAkJCQlpZiAoIShiZXJlc3AgPT0gJ1InIHx8IGJlcmVzcCA9PSAndicgfHwgYmVyZXNwID09 ICdFJykpCiAJCQkJewogCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiZXhwZWN0 ZWQgYXV0aGVudGljYXRpb24gcmVxdWVzdCBmcm9tIHNlcnZlciwgYnV0IHJlY2VpdmVkICVjIiwK LQkJCQkJCQkJCSAgIGJlcmVzcCk7CisJCQkJCQkJCQkJCWJlcmVzcCk7CiAJCQkJCWdvdG8gZXJy b3JfcmV0dXJuOwogCQkJCX0KIApAQCAtMzIxNiwxNyArMzIxNiwxNyBAQCBrZWVwX2dvaW5nOgkJ CQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJCQkgKiBU cnkgdG8gdmFsaWRhdGUgbWVzc2FnZSBsZW5ndGggYmVmb3JlIHVzaW5nIGl0LgogCQkJCSAqIEF1 dGhlbnRpY2F0aW9uIHJlcXVlc3RzIGNhbid0IGJlIHZlcnkgbGFyZ2UsIGFsdGhvdWdoIEdTUwog CQkJCSAqIGF1dGggcmVxdWVzdHMgbWF5IG5vdCBiZSB0aGF0IHNtYWxsLiAgU2FtZSBmb3IKLQkJ CQkgKiBOZWdvdGlhdGVQcm90b2NvbFZlcnNpb24uICBFcnJvcnMgY2FuIGJlIGEKLQkJCQkgKiBs aXR0bGUgbGFyZ2VyLCBidXQgbm90IGh1Z2UuICBJZiB3ZSBzZWUgYSBsYXJnZSBhcHBhcmVudAot CQkJCSAqIGxlbmd0aCBpbiBhbiBlcnJvciwgaXQgbWVhbnMgd2UncmUgcmVhbGx5IHRhbGtpbmcg dG8gYQotCQkJCSAqIHByZS0zLjAtcHJvdG9jb2wgc2VydmVyOyBjb3BlLiAgKEJlZm9yZSB2ZXJz aW9uIDE0LCB0aGUKLQkJCQkgKiBzZXJ2ZXIgYWxzbyB1c2VkIHRoZSBvbGQgcHJvdG9jb2wgZm9y IGVycm9ycyB0aGF0IGhhcHBlbmVkCi0JCQkJICogYmVmb3JlIHByb2Nlc3NpbmcgdGhlIHN0YXJ0 dXAgcGFja2V0LikKKwkJCQkgKiBOZWdvdGlhdGVQcm90b2NvbFZlcnNpb24uICBFcnJvcnMgY2Fu IGJlIGEgbGl0dGxlIGxhcmdlciwKKwkJCQkgKiBidXQgbm90IGh1Z2UuICBJZiB3ZSBzZWUgYSBs YXJnZSBhcHBhcmVudCBsZW5ndGggaW4gYW4KKwkJCQkgKiBlcnJvciwgaXQgbWVhbnMgd2UncmUg cmVhbGx5IHRhbGtpbmcgdG8gYSBwcmUtMy4wLXByb3RvY29sCisJCQkJICogc2VydmVyOyBjb3Bl LiAgKEJlZm9yZSB2ZXJzaW9uIDE0LCB0aGUgc2VydmVyIGFsc28gdXNlZCB0aGUKKwkJCQkgKiBv bGQgcHJvdG9jb2wgZm9yIGVycm9ycyB0aGF0IGhhcHBlbmVkIGJlZm9yZSBwcm9jZXNzaW5nIHRo ZQorCQkJCSAqIHN0YXJ0dXAgcGFja2V0LikKIAkJCQkgKi8KIAkJCQlpZiAoKGJlcmVzcCA9PSAn UicgfHwgYmVyZXNwID09ICd2JykgJiYgKG1zZ0xlbmd0aCA8IDggfHwgbXNnTGVuZ3RoID4gMjAw MCkpCiAJCQkJewogCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiZXhwZWN0ZWQg YXV0aGVudGljYXRpb24gcmVxdWVzdCBmcm9tIHNlcnZlciwgYnV0IHJlY2VpdmVkICVjIiwKLQkJ CQkJCQkJCSAgIGJlcmVzcCk7CisJCQkJCQkJCQkJCWJlcmVzcCk7CiAJCQkJCWdvdG8gZXJyb3Jf cmV0dXJuOwogCQkJCX0KIApAQCAtMzcwNSw3ICszNzA1LDcgQEAga2VlcF9nb2luZzoJCQkJCQkv KiBXZSB3aWxsIGNvbWUgYmFjayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAKIAkJCQkvKiBBcHBl bmQgZXJyb3IgcmVwb3J0IHRvIGNvbm4tPmVycm9yTWVzc2FnZS4gKi8KIAkJCQlsaWJwcV9hcHBl bmRfY29ubl9lcnJvcihjb25uLCAiXCIlc1wiIGZhaWxlZCIsCi0JCQkJCQkJCSAgIlNIT1cgdHJh bnNhY3Rpb25fcmVhZF9vbmx5Iik7CisJCQkJCQkJCQkJIlNIT1cgdHJhbnNhY3Rpb25fcmVhZF9v bmx5Iik7CiAKIAkJCQkvKiBDbG9zZSBjb25uZWN0aW9uIHBvbGl0ZWx5LiAqLwogCQkJCWNvbm4t PnN0YXR1cyA9IENPTk5FQ1RJT05fT0s7CkBAIC0zNzU1LDcgKzM3NTUsNyBAQCBrZWVwX2dvaW5n OgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAogCQkJ CS8qIEFwcGVuZCBlcnJvciByZXBvcnQgdG8gY29ubi0+ZXJyb3JNZXNzYWdlLiAqLwogCQkJCWxp YnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJcIiVzXCIgZmFpbGVkIiwKLQkJCQkJCQkJICAi U0VMRUNUIHBnX2lzX2luX3JlY292ZXJ5KCkiKTsKKwkJCQkJCQkJCQkiU0VMRUNUIHBnX2lzX2lu X3JlY292ZXJ5KCkiKTsKIAogCQkJCS8qIENsb3NlIGNvbm5lY3Rpb24gcG9saXRlbHkuICovCiAJ CQkJY29ubi0+c3RhdHVzID0gQ09OTkVDVElPTl9PSzsKQEAgLTM3NjgsOCArMzc2OCw4IEBAIGtl ZXBfZ29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBp cwogCiAJCWRlZmF1bHQ6CiAJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLAotCQkJCQkJ CSAgICJpbnZhbGlkIGNvbm5lY3Rpb24gc3RhdGUgJWQsIHByb2JhYmx5IGluZGljYXRpdmUgb2Yg bWVtb3J5IGNvcnJ1cHRpb24iLAotCQkJCQkJCSAgY29ubi0+c3RhdHVzKTsKKwkJCQkJCQkJCSJp bnZhbGlkIGNvbm5lY3Rpb24gc3RhdGUgJWQsIHByb2JhYmx5IGluZGljYXRpdmUgb2YgbWVtb3J5 IGNvcnJ1cHRpb24iLAorCQkJCQkJCQkJY29ubi0+c3RhdHVzKTsKIAkJCWdvdG8gZXJyb3JfcmV0 dXJuOwogCX0KIApAQCAtNzE0OCw3ICs3MTQ4LDcgQEAgcGdwYXNzZmlsZVdhcm5pbmcoUEdjb25u ICpjb25uKQogCiAJCWlmIChzcWxzdGF0ZSAmJiBzdHJjbXAoc3Fsc3RhdGUsIEVSUkNPREVfSU5W QUxJRF9QQVNTV09SRCkgPT0gMCkKIAkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJw YXNzd29yZCByZXRyaWV2ZWQgZnJvbSBmaWxlIFwiJXNcIiIsCi0JCQkJCQkJICBjb25uLT5wZ3Bh c3NmaWxlKTsKKwkJCQkJCQkJCWNvbm4tPnBncGFzc2ZpbGUpOwogCX0KIH0KIApkaWZmIC0tZ2l0 IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtZXhlYy5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEv ZmUtZXhlYy5jCmluZGV4IGVjNjI1NTBlMzguLjBjMmRhZTZlZDkgMTAwNjQ0Ci0tLSBhL3NyYy9p bnRlcmZhY2VzL2xpYnBxL2ZlLWV4ZWMuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1l eGVjLmMKQEAgLTE0NDQsNyArMTQ0NCw3IEBAIFBRc2VuZFF1ZXJ5SW50ZXJuYWwoUEdjb25uICpj b25uLCBjb25zdCBjaGFyICpxdWVyeSwgYm9vbCBuZXdRdWVyeSkKIAlpZiAoY29ubi0+cGlwZWxp bmVTdGF0dXMgIT0gUFFfUElQRUxJTkVfT0ZGKQogCXsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJy b3IoY29ubiwgIiVzIG5vdCBhbGxvd2VkIGluIHBpcGVsaW5lIG1vZGUiLAotCQkJCQkJICAiUFFz ZW5kUXVlcnkiKTsKKwkJCQkJCQkJIlBRc2VuZFF1ZXJ5Iik7CiAJCXJldHVybiAwOwogCX0KIApA QCAtMTUxMiw3ICsxNTEyLDcgQEAgUFFzZW5kUXVlcnlQYXJhbXMoUEdjb25uICpjb25uLAogCWlm IChuUGFyYW1zIDwgMCB8fCBuUGFyYW1zID4gUFFfUVVFUllfUEFSQU1fTUFYX0xJTUlUKQogCXsK IAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm51bWJlciBvZiBwYXJhbWV0ZXJzIG11 c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIsCi0JCQkJCQkgICBQUV9RVUVSWV9QQVJBTV9NQVhfTElN SVQpOworCQkJCQkJCQlQUV9RVUVSWV9QQVJBTV9NQVhfTElNSVQpOwogCQlyZXR1cm4gMDsKIAl9 CiAKQEAgLTE1NTgsNyArMTU1OCw3IEBAIFBRc2VuZFByZXBhcmUoUEdjb25uICpjb25uLAogCWlm IChuUGFyYW1zIDwgMCB8fCBuUGFyYW1zID4gUFFfUVVFUllfUEFSQU1fTUFYX0xJTUlUKQogCXsK IAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm51bWJlciBvZiBwYXJhbWV0ZXJzIG11 c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIsCi0JCQkJCQkgICBQUV9RVUVSWV9QQVJBTV9NQVhfTElN SVQpOworCQkJCQkJCQlQUV9RVUVSWV9QQVJBTV9NQVhfTElNSVQpOwogCQlyZXR1cm4gMDsKIAl9 CiAKQEAgLTE2NTIsNyArMTY1Miw3IEBAIFBRc2VuZFF1ZXJ5UHJlcGFyZWQoUEdjb25uICpjb25u LAogCWlmIChuUGFyYW1zIDwgMCB8fCBuUGFyYW1zID4gUFFfUVVFUllfUEFSQU1fTUFYX0xJTUlU KQogCXsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm51bWJlciBvZiBwYXJhbWV0 ZXJzIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCIsCi0JCQkJCQkgICBQUV9RVUVSWV9QQVJBTV9N QVhfTElNSVQpOworCQkJCQkJCQlQUV9RVUVSWV9QQVJBTV9NQVhfTElNSVQpOwogCQlyZXR1cm4g MDsKIAl9CiAKQEAgLTIwOTksMTAgKzIwOTksOSBAQCBQUWdldFJlc3VsdChQR2Nvbm4gKmNvbm4p CiAKIAkJCS8qCiAJCQkgKiBXZSdyZSBhYm91dCB0byByZXR1cm4gdGhlIE5VTEwgdGhhdCB0ZXJt aW5hdGVzIHRoZSByb3VuZCBvZgotCQkJICogcmVzdWx0cyBmcm9tIHRoZSBjdXJyZW50IHF1ZXJ5 OyBwcmVwYXJlIHRvIHNlbmQgdGhlIHJlc3VsdHMKLQkJCSAqIG9mIHRoZSBuZXh0IHF1ZXJ5LCBp ZiBhbnksIHdoZW4gd2UncmUgY2FsbGVkIG5leHQuICBJZiB0aGVyZSdzCi0JCQkgKiBubyBuZXh0 IGVsZW1lbnQgaW4gdGhlIGNvbW1hbmQgcXVldWUsIHRoaXMgZ2V0cyB1cyBpbiBJRExFCi0JCQkg KiBzdGF0ZS4KKwkJCSAqIHJlc3VsdHMgZnJvbSB0aGUgY3VycmVudCBxdWVyeTsgcHJlcGFyZSB0 byBzZW5kIHRoZSByZXN1bHRzIG9mCisJCQkgKiB0aGUgbmV4dCBxdWVyeSwgaWYgYW55LCB3aGVu IHdlJ3JlIGNhbGxlZCBuZXh0LiAgSWYgdGhlcmUncyBubworCQkJICogbmV4dCBlbGVtZW50IGlu IHRoZSBjb21tYW5kIHF1ZXVlLCB0aGlzIGdldHMgdXMgaW4gSURMRSBzdGF0ZS4KIAkJCSAqLwog CQkJcHFQaXBlbGluZVByb2Nlc3NRdWV1ZShjb25uKTsKIAkJCXJlcyA9IE5VTEw7CQkJLyogcXVl cnkgaXMgY29tcGxldGUgKi8KQEAgLTMwNDcsNiArMzA0Niw3IEBAIHBxUGlwZWxpbmVQcm9jZXNz UXVldWUoUEdjb25uICpjb25uKQogCQkJcmV0dXJuOwogCiAJCWNhc2UgUEdBU1lOQ19JRExFOgor CiAJCQkvKgogCQkJICogSWYgd2UncmUgaW4gSURMRSBtb2RlIGFuZCB0aGVyZSdzIHNvbWUgY29t bWFuZCBpbiB0aGUgcXVldWUsCiAJCQkgKiBnZXQgdXMgaW50byBQSVBFTElORV9JRExFIG1vZGUg YW5kIHByb2Nlc3Mgbm9ybWFsbHkuICBPdGhlcndpc2UKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWxvYmouYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWxvYmouYwppbmRl eCA0Y2I2YTQ2ODU5Li4yMDYyNjZmZDA0IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJw cS9mZS1sb2JqLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtbG9iai5jCkBAIC0xNDIs NyArMTQyLDcgQEAgbG9fdHJ1bmNhdGUoUEdjb25uICpjb25uLCBpbnQgZmQsIHNpemVfdCBsZW4p CiAJaWYgKGNvbm4tPmxvYmpmdW5jcy0+Zm5fbG9fdHJ1bmNhdGUgPT0gMCkKIAl7CiAJCWxpYnBx X2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlv biAlcyIsCi0JCQkJCQkgICJsb190cnVuY2F0ZSIpOworCQkJCQkJCQkibG9fdHJ1bmNhdGUiKTsK IAkJcmV0dXJuIC0xOwogCX0KIApAQCAtMjA1LDcgKzIwNSw3IEBAIGxvX3RydW5jYXRlNjQoUEdj b25uICpjb25uLCBpbnQgZmQsIHBnX2ludDY0IGxlbikKIAlpZiAoY29ubi0+bG9iamZ1bmNzLT5m bl9sb190cnVuY2F0ZTY0ID09IDApCiAJewogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25u LCAiY2Fubm90IGRldGVybWluZSBPSUQgb2YgZnVuY3Rpb24gJXMiLAotCQkJCQkJICAibG9fdHJ1 bmNhdGU2NCIpOworCQkJCQkJCQkibG9fdHJ1bmNhdGU2NCIpOwogCQlyZXR1cm4gLTE7CiAJfQog CkBAIC0zOTUsNyArMzk1LDcgQEAgbG9fbHNlZWs2NChQR2Nvbm4gKmNvbm4sIGludCBmZCwgcGdf aW50NjQgb2Zmc2V0LCBpbnQgd2hlbmNlKQogCWlmIChjb25uLT5sb2JqZnVuY3MtPmZuX2xvX2xz ZWVrNjQgPT0gMCkKIAl7CiAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjYW5ub3Qg ZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAlcyIsCi0JCQkJCQkgICJsb19sc2VlazY0Iik7CisJ CQkJCQkJCSJsb19sc2VlazY0Iik7CiAJCXJldHVybiAtMTsKIAl9CiAKQEAgLTQ4NSw3ICs0ODUs NyBAQCBsb19jcmVhdGUoUEdjb25uICpjb25uLCBPaWQgbG9iaklkKQogCWlmIChjb25uLT5sb2Jq ZnVuY3MtPmZuX2xvX2NyZWF0ZSA9PSAwKQogCXsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3Io Y29ubiwgImNhbm5vdCBkZXRlcm1pbmUgT0lEIG9mIGZ1bmN0aW9uICVzIiwKLQkJCQkJCSAgImxv X2NyZWF0ZSIpOworCQkJCQkJCQkibG9fY3JlYXRlIik7CiAJCXJldHVybiBJbnZhbGlkT2lkOwog CX0KIApAQCAtNTU4LDcgKzU1OCw3IEBAIGxvX3RlbGw2NChQR2Nvbm4gKmNvbm4sIGludCBmZCkK IAlpZiAoY29ubi0+bG9iamZ1bmNzLT5mbl9sb190ZWxsNjQgPT0gMCkKIAl7CiAJCWxpYnBxX2Fw cGVuZF9jb25uX2Vycm9yKGNvbm4sICJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAl cyIsCi0JCQkJCQkgICJsb190ZWxsNjQiKTsKKwkJCQkJCQkJImxvX3RlbGw2NCIpOwogCQlyZXR1 cm4gLTE7CiAJfQogCkBAIC02NjcsNyArNjY3LDcgQEAgbG9faW1wb3J0X2ludGVybmFsKFBHY29u biAqY29ubiwgY29uc3QgY2hhciAqZmlsZW5hbWUsIE9pZCBvaWQpCiAJaWYgKGZkIDwgMCkKIAl7 CQkJCQkJCS8qIGVycm9yICovCiAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3Vs ZCBub3Qgb3BlbiBmaWxlIFwiJXNcIjogJXMiLAotCQkJCQkJICBmaWxlbmFtZSwgc3RyZXJyb3Jf cihlcnJubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJCQkJCQkJZmlsZW5hbWUsIHN0cmVy cm9yX3IoZXJybm8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJCXJldHVybiBJbnZhbGlkT2lk OwogCX0KIApAQCAtNzIzLDggKzcyMyw4IEBAIGxvX2ltcG9ydF9pbnRlcm5hbChQR2Nvbm4gKmNv bm4sIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBPaWQgb2lkKQogCQkvKiBkZWxpYmVyYXRlbHkgb3Zl cndyaXRlIGFueSBlcnJvciBmcm9tIGxvX2Nsb3NlICovCiAJCXBxQ2xlYXJDb25uRXJyb3JTdGF0 ZShjb25uKTsKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCByZWFk IGZyb20gZmlsZSBcIiVzXCI6ICVzIiwKLQkJCQkJCSAgZmlsZW5hbWUsCi0JCQkJCQkgIHN0cmVy cm9yX3Ioc2F2ZV9lcnJubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJCQkJCQkJZmlsZW5h bWUsCisJCQkJCQkJCXN0cmVycm9yX3Ioc2F2ZV9lcnJubywgc2VidWYsIHNpemVvZihzZWJ1Zikp KTsKIAkJcmV0dXJuIEludmFsaWRPaWQ7CiAJfQogCkBAIC03NzgsOCArNzc4LDggQEAgbG9fZXhw b3J0KFBHY29ubiAqY29ubiwgT2lkIGxvYmpJZCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiAJCS8q IGRlbGliZXJhdGVseSBvdmVyd3JpdGUgYW55IGVycm9yIGZyb20gbG9fY2xvc2UgKi8KIAkJcHFD bGVhckNvbm5FcnJvclN0YXRlKGNvbm4pOwogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25u LCAiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCI6ICVzIiwKLQkJCQkJCSAgZmlsZW5hbWUsCi0J CQkJCQkgIHN0cmVycm9yX3Ioc2F2ZV9lcnJubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKKwkJ CQkJCQkJZmlsZW5hbWUsCisJCQkJCQkJCXN0cmVycm9yX3Ioc2F2ZV9lcnJubywgc2VidWYsIHNp emVvZihzZWJ1ZikpKTsKIAkJcmV0dXJuIC0xOwogCX0KIApAQCAtNzk5LDggKzc5OSw4IEBAIGxv X2V4cG9ydChQR2Nvbm4gKmNvbm4sIE9pZCBsb2JqSWQsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQog CQkJLyogZGVsaWJlcmF0ZWx5IG92ZXJ3cml0ZSBhbnkgZXJyb3IgZnJvbSBsb19jbG9zZSAqLwog CQkJcHFDbGVhckNvbm5FcnJvclN0YXRlKGNvbm4pOwogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJy b3IoY29ubiwgImNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNcIjogJXMiLAotCQkJCQkJCSAg ZmlsZW5hbWUsCi0JCQkJCQkJICBzdHJlcnJvcl9yKHNhdmVfZXJybm8sIHNlYnVmLCBzaXplb2Yo c2VidWYpKSk7CisJCQkJCQkJCQlmaWxlbmFtZSwKKwkJCQkJCQkJCXN0cmVycm9yX3Ioc2F2ZV9l cnJubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCXJldHVybiAtMTsKIAkJfQogCX0KQEAg LTgyMiw3ICs4MjIsNyBAQCBsb19leHBvcnQoUEdjb25uICpjb25uLCBPaWQgbG9iaklkLCBjb25z dCBjaGFyICpmaWxlbmFtZSkKIAlpZiAoY2xvc2UoZmQpICE9IDAgJiYgcmVzdWx0ID49IDApCiAJ ewogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IHdyaXRlIHRvIGZp bGUgXCIlc1wiOiAlcyIsCi0JCQkJCQkgIGZpbGVuYW1lLCBzdHJlcnJvcl9yKGVycm5vLCBzZWJ1 Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJCQkJCQlmaWxlbmFtZSwgc3RyZXJyb3JfcihlcnJubywg c2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJcmVzdWx0ID0gLTE7CiAJfQogCkBAIC05NTQsNTYg Kzk1NCw1NiBAQCBsb19pbml0aWFsaXplKFBHY29ubiAqY29ubikKIAlpZiAobG9iamZ1bmNzLT5m bl9sb19vcGVuID09IDApCiAJewogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY2Fu bm90IGRldGVybWluZSBPSUQgb2YgZnVuY3Rpb24gJXMiLAotCQkJCQkJICAibG9fb3BlbiIpOwor CQkJCQkJCQkibG9fb3BlbiIpOwogCQlmcmVlKGxvYmpmdW5jcyk7CiAJCXJldHVybiAtMTsKIAl9 CiAJaWYgKGxvYmpmdW5jcy0+Zm5fbG9fY2xvc2UgPT0gMCkKIAl7CiAJCWxpYnBxX2FwcGVuZF9j b25uX2Vycm9yKGNvbm4sICJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAlcyIsCi0J CQkJCQkgICJsb19jbG9zZSIpOworCQkJCQkJCQkibG9fY2xvc2UiKTsKIAkJZnJlZShsb2JqZnVu Y3MpOwogCQlyZXR1cm4gLTE7CiAJfQogCWlmIChsb2JqZnVuY3MtPmZuX2xvX2NyZWF0ID09IDAp CiAJewogCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY2Fubm90IGRldGVybWluZSBP SUQgb2YgZnVuY3Rpb24gJXMiLAotCQkJCQkJICAibG9fY3JlYXQiKTsKKwkJCQkJCQkJImxvX2Ny ZWF0Iik7CiAJCWZyZWUobG9iamZ1bmNzKTsKIAkJcmV0dXJuIC0xOwogCX0KIAlpZiAobG9iamZ1 bmNzLT5mbl9sb191bmxpbmsgPT0gMCkKIAl7CiAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNv bm4sICJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAlcyIsCi0JCQkJCQkgICJsb191 bmxpbmsiKTsKKwkJCQkJCQkJImxvX3VubGluayIpOwogCQlmcmVlKGxvYmpmdW5jcyk7CiAJCXJl dHVybiAtMTsKIAl9CiAJaWYgKGxvYmpmdW5jcy0+Zm5fbG9fbHNlZWsgPT0gMCkKIAl7CiAJCWxp YnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjYW5ub3QgZGV0ZXJtaW5lIE9JRCBvZiBmdW5j dGlvbiAlcyIsCi0JCQkJCQkgICJsb19sc2VlayIpOworCQkJCQkJCQkibG9fbHNlZWsiKTsKIAkJ ZnJlZShsb2JqZnVuY3MpOwogCQlyZXR1cm4gLTE7CiAJfQogCWlmIChsb2JqZnVuY3MtPmZuX2xv X3RlbGwgPT0gMCkKIAl7CiAJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjYW5ub3Qg ZGV0ZXJtaW5lIE9JRCBvZiBmdW5jdGlvbiAlcyIsCi0JCQkJCQkgICJsb190ZWxsIik7CisJCQkJ CQkJCSJsb190ZWxsIik7CiAJCWZyZWUobG9iamZ1bmNzKTsKIAkJcmV0dXJuIC0xOwogCX0KIAlp ZiAobG9iamZ1bmNzLT5mbl9sb19yZWFkID09IDApCiAJewogCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAiY2Fubm90IGRldGVybWluZSBPSUQgb2YgZnVuY3Rpb24gJXMiLAotCQkJCQkJ ICAibG9yZWFkIik7CisJCQkJCQkJCSJsb3JlYWQiKTsKIAkJZnJlZShsb2JqZnVuY3MpOwogCQly ZXR1cm4gLTE7CiAJfQogCWlmIChsb2JqZnVuY3MtPmZuX2xvX3dyaXRlID09IDApCiAJewogCQls aWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY2Fubm90IGRldGVybWluZSBPSUQgb2YgZnVu Y3Rpb24gJXMiLAotCQkJCQkJICAibG93cml0ZSIpOworCQkJCQkJCQkibG93cml0ZSIpOwogCQlm cmVlKGxvYmpmdW5jcyk7CiAJCXJldHVybiAtMTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJm YWNlcy9saWJwcS9mZS1taXNjLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1taXNjLmMKaW5k ZXggMzY1M2ExYThhNi4uNjYwY2RlYzkzYyAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGli cHEvZmUtbWlzYy5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLW1pc2MuYwpAQCAtNzQ5 LDggKzc0OSw4IEBAIHJldHJ5NDoKIAkgKi8KIGRlZmluaXRlbHlFT0Y6CiAJbGlicHFfYXBwZW5k X2Nvbm5fZXJyb3IoY29ubiwgInNlcnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24gdW5leHBlY3Rl ZGx5XG4iCi0JCQkJCSAgICJcdFRoaXMgcHJvYmFibHkgbWVhbnMgdGhlIHNlcnZlciB0ZXJtaW5h dGVkIGFibm9ybWFsbHlcbiIKLQkJCQkJICAgIlx0YmVmb3JlIG9yIHdoaWxlIHByb2Nlc3Npbmcg dGhlIHJlcXVlc3QuIik7CisJCQkJCQkJIlx0VGhpcyBwcm9iYWJseSBtZWFucyB0aGUgc2VydmVy IHRlcm1pbmF0ZWQgYWJub3JtYWxseVxuIgorCQkJCQkJCSJcdGJlZm9yZSBvciB3aGlsZSBwcm9j ZXNzaW5nIHRoZSByZXF1ZXN0LiIpOwogCiAJLyogQ29tZSBoZXJlIGlmIGxvd2VyLWxldmVsIGNv ZGUgYWxyZWFkeSBzZXQgYSBzdWl0YWJsZSBlcnJvck1lc3NhZ2UgKi8KIGRlZmluaXRlbHlGYWls ZWQ6CkBAIC0xMDY3LDcgKzEwNjcsNyBAQCBwcVNvY2tldENoZWNrKFBHY29ubiAqY29ubiwgaW50 IGZvclJlYWQsIGludCBmb3JXcml0ZSwgdGltZV90IGVuZF90aW1lKQogCQljaGFyCQlzZWJ1ZltQ R19TVFJFUlJPUl9SX0JVRkxFTl07CiAKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwg IiVzKCkgZmFpbGVkOiAlcyIsICJzZWxlY3QiLAotCQkJCQkJICBTT0NLX1NUUkVSUk9SKFNPQ0tf RVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCVNPQ0tfU1RSRVJST1IoU09D S19FUlJOTywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAl9CiAKIAlyZXR1cm4gcmVzdWx0OwpA QCAtMTI4MCw3ICsxMjgwLDcgQEAgbGlicHFfbmdldHRleHQoY29uc3QgY2hhciAqbXNnaWQsIGNv bnN0IGNoYXIgKm1zZ2lkX3BsdXJhbCwgdW5zaWduZWQgbG9uZyBuKQogICogbmV3bGluZS4KICAq Lwogdm9pZAotbGlicHFfYXBwZW5kX2Vycm9yKFBRRXhwQnVmZmVyIGVycm9yTWVzc2FnZSwgY29u c3QgY2hhciAqZm10LCAuLi4pCitsaWJwcV9hcHBlbmRfZXJyb3IoUFFFeHBCdWZmZXIgZXJyb3JN ZXNzYWdlLCBjb25zdCBjaGFyICpmbXQsLi4uKQogewogCWludAkJCXNhdmVfZXJybm8gPSBlcnJu bzsKIAlib29sCQlkb25lOwpAQCAtMTMwOSw3ICsxMzA5LDcgQEAgbGlicHFfYXBwZW5kX2Vycm9y KFBRRXhwQnVmZmVyIGVycm9yTWVzc2FnZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCiAgKiBmb3Jt YXQgc2hvdWxkIG5vdCBlbmQgd2l0aCBhIG5ld2xpbmUuCiAgKi8KIHZvaWQKLWxpYnBxX2FwcGVu ZF9jb25uX2Vycm9yKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqZm10LCAuLi4pCitsaWJwcV9h cHBlbmRfY29ubl9lcnJvcihQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmZtdCwuLi4pCiB7CiAJ aW50CQkJc2F2ZV9lcnJubyA9IGVycm5vOwogCWJvb2wJCWRvbmU7CmRpZmYgLS1naXQgYS9zcmMv aW50ZXJmYWNlcy9saWJwcS9mZS1wcm90b2NvbDMuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LXByb3RvY29sMy5jCmluZGV4IDhhYjZhODg0MTYuLmI3OWQ3NGY3NDggMTAwNjQ0Ci0tLSBhL3Ny Yy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXByb3RvY29sMy5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLXByb3RvY29sMy5jCkBAIC00NjYsNyArNDY2LDcgQEAgc3RhdGljIHZvaWQKIGhhbmRs ZVN5bmNMb3NzKFBHY29ubiAqY29ubiwgY2hhciBpZCwgaW50IG1zZ0xlbmd0aCkKIHsKIAlsaWJw cV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAibG9zdCBzeW5jaHJvbml6YXRpb24gd2l0aCBzZXJ2 ZXI6IGdvdCBtZXNzYWdlIHR5cGUgXCIlY1wiLCBsZW5ndGggJWQiLAotCQkJCQkgIGlkLCBtc2dM ZW5ndGgpOworCQkJCQkJCWlkLCBtc2dMZW5ndGgpOwogCS8qIGJ1aWxkIGFuIGVycm9yIHJlc3Vs dCBob2xkaW5nIHRoZSBlcnJvciBtZXNzYWdlICovCiAJcHFTYXZlRXJyb3JSZXN1bHQoY29ubik7 CiAJY29ubi0+YXN5bmNTdGF0dXMgPSBQR0FTWU5DX1JFQURZOwkvKiBkcm9wIG91dCBvZiBQUWdl dFJlc3VsdCB3YWl0IGxvb3AgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LXNlY3VyZS1jb21tb24uYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1jb21tb24u YwppbmRleCBkZTExNWIzNzY0Li4zZWNjN2JmNjE1IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9saWJwcS9mZS1zZWN1cmUtY29tbW9uLmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUt c2VjdXJlLWNvbW1vbi5jCkBAIC0yMjYsNyArMjI2LDcgQEAgcHFfdmVyaWZ5X3BlZXJfbmFtZV9t YXRjaGVzX2NlcnRpZmljYXRlX2lwKFBHY29ubiAqY29ubiwKIAkJICogd3JvbmcgZ2l2ZW4gdGhl IHN1YmplY3QgbWF0dGVyLgogCQkgKi8KIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwg ImNlcnRpZmljYXRlIGNvbnRhaW5zIElQIGFkZHJlc3Mgd2l0aCBpbnZhbGlkIGxlbmd0aCAlenUi LAotCQkJCQkJICBpcGxlbik7CisJCQkJCQkJCWlwbGVuKTsKIAkJcmV0dXJuIC0xOwogCX0KIApA QCAtMjM1LDcgKzIzNSw3IEBAIHBxX3ZlcmlmeV9wZWVyX25hbWVfbWF0Y2hlc19jZXJ0aWZpY2F0 ZV9pcChQR2Nvbm4gKmNvbm4sCiAJaWYgKCFhZGRyc3RyKQogCXsKIAkJbGlicHFfYXBwZW5kX2Nv bm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBjb252ZXJ0IGNlcnRpZmljYXRlJ3MgSVAgYWRkcmVz cyB0byBzdHJpbmc6ICVzIiwKLQkJCQkJCSAgc3RyZXJyb3JfcihlcnJubywgc2VidWYsIHNpemVv ZihzZWJ1ZikpKTsKKwkJCQkJCQkJc3RyZXJyb3JfcihlcnJubywgc2VidWYsIHNpemVvZihzZWJ1 ZikpKTsKIAkJcmV0dXJuIC0xOwogCX0KIApAQCAtMjkyLDcgKzI5Miw3IEBAIHBxX3ZlcmlmeV9w ZWVyX25hbWVfbWF0Y2hlc19jZXJ0aWZpY2F0ZShQR2Nvbm4gKmNvbm4pCiAJCWVsc2UgaWYgKG5h bWVzX2V4YW1pbmVkID09IDEpCiAJCXsKIAkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4s ICJzZXJ2ZXIgY2VydGlmaWNhdGUgZm9yIFwiJXNcIiBkb2VzIG5vdCBtYXRjaCBob3N0IG5hbWUg XCIlc1wiIiwKLQkJCQkJCQkgIGZpcnN0X25hbWUsIGhvc3QpOworCQkJCQkJCQkJZmlyc3RfbmFt ZSwgaG9zdCk7CiAJCX0KIAkJZWxzZQogCQl7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9s aWJwcS9mZS1zZWN1cmUtZ3NzYXBpLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUt Z3NzYXBpLmMKaW5kZXggNjIyMGU0YTEwMS4uYmVkNmU2MjQzNSAxMDA2NDQKLS0tIGEvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLWdzc2FwaS5jCisrKyBiL3NyYy9pbnRlcmZhY2VzL2xp YnBxL2ZlLXNlY3VyZS1nc3NhcGkuYwpAQCAtMjEzLDggKzIxMyw4IEBAIHBnX0dTU193cml0ZShQ R2Nvbm4gKmNvbm4sIGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IGxlbikKIAkJaWYgKG91dHB1dC5s ZW5ndGggPiBQUV9HU1NfU0VORF9CVUZGRVJfU0laRSAtIHNpemVvZih1aW50MzIpKQogCQl7CiAJ CQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY2xpZW50IHRyaWVkIHRvIHNlbmQgb3Zl cnNpemUgR1NTQVBJIHBhY2tldCAoJXp1ID4gJXp1KSIsCi0JCQkJCQkJICAoc2l6ZV90KSBvdXRw dXQubGVuZ3RoLAotCQkJCQkJCSAgUFFfR1NTX1NFTkRfQlVGRkVSX1NJWkUgLSBzaXplb2YodWlu dDMyKSk7CisJCQkJCQkJCQkoc2l6ZV90KSBvdXRwdXQubGVuZ3RoLAorCQkJCQkJCQkJUFFfR1NT X1NFTkRfQlVGRkVSX1NJWkUgLSBzaXplb2YodWludDMyKSk7CiAJCQllcnJubyA9IEVJTzsJCS8q IGZvciBsYWNrIG9mIGEgYmV0dGVyIGlkZWEgKi8KIAkJCWdvdG8gY2xlYW51cDsKIAkJfQpAQCAt MzQ5LDggKzM0OSw4IEBAIHBnX0dTU19yZWFkKFBHY29ubiAqY29ubiwgdm9pZCAqcHRyLCBzaXpl X3QgbGVuKQogCQlpZiAoaW5wdXQubGVuZ3RoID4gUFFfR1NTX1JFQ1ZfQlVGRkVSX1NJWkUgLSBz aXplb2YodWludDMyKSkKIAkJewogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm92 ZXJzaXplIEdTU0FQSSBwYWNrZXQgc2VudCBieSB0aGUgc2VydmVyICglenUgPiAlenUpIiwKLQkJ CQkJCQkgIChzaXplX3QpIGlucHV0Lmxlbmd0aCwKLQkJCQkJCQkgIFBRX0dTU19SRUNWX0JVRkZF Ul9TSVpFIC0gc2l6ZW9mKHVpbnQzMikpOworCQkJCQkJCQkJKHNpemVfdCkgaW5wdXQubGVuZ3Ro LAorCQkJCQkJCQkJUFFfR1NTX1JFQ1ZfQlVGRkVSX1NJWkUgLSBzaXplb2YodWludDMyKSk7CiAJ CQllcnJubyA9IEVJTzsJCS8qIGZvciBsYWNrIG9mIGEgYmV0dGVyIGlkZWEgKi8KIAkJCXJldHVy biAtMTsKIAkJfQpAQCAtNTg4LDggKzU4OCw4IEBAIHBxc2VjdXJlX29wZW5fZ3NzKFBHY29ubiAq Y29ubikKIAkJaWYgKGlucHV0Lmxlbmd0aCA+IFBRX0dTU19SRUNWX0JVRkZFUl9TSVpFIC0gc2l6 ZW9mKHVpbnQzMikpCiAJCXsKIAkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJvdmVy c2l6ZSBHU1NBUEkgcGFja2V0IHNlbnQgYnkgdGhlIHNlcnZlciAoJXp1ID4gJXp1KSIsCi0JCQkJ CQkJICAoc2l6ZV90KSBpbnB1dC5sZW5ndGgsCi0JCQkJCQkJICBQUV9HU1NfUkVDVl9CVUZGRVJf U0laRSAtIHNpemVvZih1aW50MzIpKTsKKwkJCQkJCQkJCShzaXplX3QpIGlucHV0Lmxlbmd0aCwK KwkJCQkJCQkJCVBRX0dTU19SRUNWX0JVRkZFUl9TSVpFIC0gc2l6ZW9mKHVpbnQzMikpOwogCQkJ cmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOwogCQl9CiAKZGlmZiAtLWdpdCBhL3NyYy9pbnRl cmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1vcGVuc3NsLmMgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9m ZS1zZWN1cmUtb3BlbnNzbC5jCmluZGV4IDk4MzUzNmRlMjUuLmFiMmNiZjA0NWIgMTAwNjQ0Ci0t LSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS1vcGVuc3NsLmMKKysrIGIvc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW9wZW5zc2wuYwpAQCAtMjEzLDEyICsyMTMsMTIgQEAg cmxvb3A6CiAJCQkJaWYgKHJlc3VsdF9lcnJubyA9PSBFUElQRSB8fAogCQkJCQlyZXN1bHRfZXJy bm8gPT0gRUNPTk5SRVNFVCkKIAkJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgInNl cnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24gdW5leHBlY3RlZGx5XG4iCi0JCQkJCQkJCQkgICAi XHRUaGlzIHByb2JhYmx5IG1lYW5zIHRoZSBzZXJ2ZXIgdGVybWluYXRlZCBhYm5vcm1hbGx5XG4i Ci0JCQkJCQkJCQkgICAiXHRiZWZvcmUgb3Igd2hpbGUgcHJvY2Vzc2luZyB0aGUgcmVxdWVzdC4i KTsKKwkJCQkJCQkJCQkJIlx0VGhpcyBwcm9iYWJseSBtZWFucyB0aGUgc2VydmVyIHRlcm1pbmF0 ZWQgYWJub3JtYWxseVxuIgorCQkJCQkJCQkJCQkiXHRiZWZvcmUgb3Igd2hpbGUgcHJvY2Vzc2lu ZyB0aGUgcmVxdWVzdC4iKTsKIAkJCQllbHNlCiAJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9y KGNvbm4sICJTU0wgU1lTQ0FMTCBlcnJvcjogJXMiLAotCQkJCQkJCQkJICBTT0NLX1NUUkVSUk9S KHJlc3VsdF9lcnJubywKLQkJCQkJCQkJCQkJCQlzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJ CQkJCQkJCQlTT0NLX1NUUkVSUk9SKHJlc3VsdF9lcnJubywKKwkJCQkJCQkJCQkJCQkJICBzZWJ1 Ziwgc2l6ZW9mKHNlYnVmKSkpOwogCQkJfQogCQkJZWxzZQogCQkJewpAQCAtMzEzLDEyICszMTMs MTIgQEAgcGd0bHNfd3JpdGUoUEdjb25uICpjb25uLCBjb25zdCB2b2lkICpwdHIsIHNpemVfdCBs ZW4pCiAJCQkJcmVzdWx0X2Vycm5vID0gU09DS19FUlJOTzsKIAkJCQlpZiAocmVzdWx0X2Vycm5v ID09IEVQSVBFIHx8IHJlc3VsdF9lcnJubyA9PSBFQ09OTlJFU0VUKQogCQkJCQlsaWJwcV9hcHBl bmRfY29ubl9lcnJvcihjb25uLCAic2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiB1bmV4cGVj dGVkbHlcbiIKLQkJCQkJCQkJCSAgICJcdFRoaXMgcHJvYmFibHkgbWVhbnMgdGhlIHNlcnZlciB0 ZXJtaW5hdGVkIGFibm9ybWFsbHlcbiIKLQkJCQkJCQkJCSAgICJcdGJlZm9yZSBvciB3aGlsZSBw cm9jZXNzaW5nIHRoZSByZXF1ZXN0LiIpOworCQkJCQkJCQkJCQkiXHRUaGlzIHByb2JhYmx5IG1l YW5zIHRoZSBzZXJ2ZXIgdGVybWluYXRlZCBhYm5vcm1hbGx5XG4iCisJCQkJCQkJCQkJCSJcdGJl Zm9yZSBvciB3aGlsZSBwcm9jZXNzaW5nIHRoZSByZXF1ZXN0LiIpOwogCQkJCWVsc2UKIAkJCQkJ bGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIlNTTCBTWVNDQUxMIGVycm9yOiAlcyIsCi0J CQkJCQkJCQkgIFNPQ0tfU1RSRVJST1IocmVzdWx0X2Vycm5vLAotCQkJCQkJCQkJCQkJCXNlYnVm LCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCQkJCVNPQ0tfU1RSRVJST1IocmVzdWx0X2Vycm5v LAorCQkJCQkJCQkJCQkJCQkgIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CiAJCQl9CiAJCQllbHNl CiAJCQl7CkBAIC00MTAsNyArNDEwLDcgQEAgcGd0bHNfZ2V0X3BlZXJfY2VydGlmaWNhdGVfaGFz aChQR2Nvbm4gKmNvbm4sIHNpemVfdCAqbGVuKQogCQkJaWYgKGFsZ29fdHlwZSA9PSBOVUxMKQog CQkJewogCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgZmluZCBk aWdlc3QgZm9yIE5JRCAlcyIsCi0JCQkJCQkJCSAgT0JKX25pZDJzbihhbGdvX25pZCkpOworCQkJ CQkJCQkJCU9CSl9uaWQyc24oYWxnb19uaWQpKTsKIAkJCQlyZXR1cm4gTlVMTDsKIAkJCX0KIAkJ CWJyZWFrOwpAQCAtOTYyLDcgKzk2Miw3IEBAIGluaXRpYWxpemVfU1NMKFBHY29ubiAqY29ubikK IAkJaWYgKHNzbF9taW5fdmVyID09IC0xKQogCQl7CiAJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJv cihjb25uLCAiaW52YWxpZCB2YWx1ZSBcIiVzXCIgZm9yIG1pbmltdW0gU1NMIHByb3RvY29sIHZl cnNpb24iLAotCQkJCQkJCSAgY29ubi0+c3NsX21pbl9wcm90b2NvbF92ZXJzaW9uKTsKKwkJCQkJ CQkJCWNvbm4tPnNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbik7CiAJCQlTU0xfQ1RYX2ZyZWUoU1NM X2NvbnRleHQpOwogCQkJcmV0dXJuIC0xOwogCQl9CkBAIC05ODgsNyArOTg4LDcgQEAgaW5pdGlh bGl6ZV9TU0woUEdjb25uICpjb25uKQogCQlpZiAoc3NsX21heF92ZXIgPT0gLTEpCiAJCXsKIAkJ CWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJpbnZhbGlkIHZhbHVlIFwiJXNcIiBmb3Ig bWF4aW11bSBTU0wgcHJvdG9jb2wgdmVyc2lvbiIsCi0JCQkJCQkJICBjb25uLT5zc2xfbWF4X3By b3RvY29sX3ZlcnNpb24pOworCQkJCQkJCQkJY29ubi0+c3NsX21heF9wcm90b2NvbF92ZXJzaW9u KTsKIAkJCVNTTF9DVFhfZnJlZShTU0xfY29udGV4dCk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KQEAg LTEwMzIsNyArMTAzMiw3IEBAIGluaXRpYWxpemVfU1NMKFBHY29ubiAqY29ubikKIAkJCWNoYXIJ ICAgKmVyciA9IFNTTGVycm1lc3NhZ2UoRVJSX2dldF9lcnJvcigpKTsKIAogCQkJbGlicHFfYXBw ZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCByZWFkIHJvb3QgY2VydGlmaWNhdGUgZmls ZSBcIiVzXCI6ICVzIiwKLQkJCQkJCQkgIGZuYnVmLCBlcnIpOworCQkJCQkJCQkJZm5idWYsIGVy cik7CiAJCQlTU0xlcnJmcmVlKGVycik7CiAJCQlTU0xfQ1RYX2ZyZWUoU1NMX2NvbnRleHQpOwog CQkJcmV0dXJuIC0xOwpAQCAtMTA4NCwxMCArMTA4NCwxMCBAQCBpbml0aWFsaXplX1NTTChQR2Nv bm4gKmNvbm4pCiAJCQkgKi8KIAkJCWlmIChmbmJ1ZlswXSA9PSAnXDAnKQogCQkJCWxpYnBxX2Fw cGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgZ2V0IGhvbWUgZGlyZWN0b3J5IHRvIGxv Y2F0ZSByb290IGNlcnRpZmljYXRlIGZpbGVcbiIKLQkJCQkJCQkJICAgIkVpdGhlciBwcm92aWRl IHRoZSBmaWxlIG9yIGNoYW5nZSBzc2xtb2RlIHRvIGRpc2FibGUgc2VydmVyIGNlcnRpZmljYXRl IHZlcmlmaWNhdGlvbi4iKTsKKwkJCQkJCQkJCQkiRWl0aGVyIHByb3ZpZGUgdGhlIGZpbGUgb3Ig Y2hhbmdlIHNzbG1vZGUgdG8gZGlzYWJsZSBzZXJ2ZXIgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9u LiIpOwogCQkJZWxzZQogCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJyb290IGNl cnRpZmljYXRlIGZpbGUgXCIlc1wiIGRvZXMgbm90IGV4aXN0XG4iCi0JCQkJCQkJCSAgICJFaXRo ZXIgcHJvdmlkZSB0aGUgZmlsZSBvciBjaGFuZ2Ugc3NsbW9kZSB0byBkaXNhYmxlIHNlcnZlciBj ZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24uIiwgZm5idWYpOworCQkJCQkJCQkJCSJFaXRoZXIgcHJv dmlkZSB0aGUgZmlsZSBvciBjaGFuZ2Ugc3NsbW9kZSB0byBkaXNhYmxlIHNlcnZlciBjZXJ0aWZp Y2F0ZSB2ZXJpZmljYXRpb24uIiwgZm5idWYpOwogCQkJU1NMX0NUWF9mcmVlKFNTTF9jb250ZXh0 KTsKIAkJCXJldHVybiAtMTsKIAkJfQpAQCAtMTExNyw3ICsxMTE3LDcgQEAgaW5pdGlhbGl6ZV9T U0woUEdjb25uICpjb25uKQogCQlpZiAoZXJybm8gIT0gRU5PRU5UICYmIGVycm5vICE9IEVOT1RE SVIpCiAJCXsKIAkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3Qgb3Bl biBjZXJ0aWZpY2F0ZSBmaWxlIFwiJXNcIjogJXMiLAotCQkJCQkJCSAgZm5idWYsIHN0cmVycm9y X3IoZXJybm8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCQlmbmJ1Ziwgc3RyZXJy b3JfcihlcnJubywgc2VidWYsIHNpemVvZihzZWJ1ZikpKTsKIAkJCVNTTF9DVFhfZnJlZShTU0xf Y29udGV4dCk7CiAJCQlyZXR1cm4gLTE7CiAJCX0KQEAgLTExMzUsNyArMTEzNSw3IEBAIGluaXRp YWxpemVfU1NMKFBHY29ubiAqY29ubikKIAkJCWNoYXIJICAgKmVyciA9IFNTTGVycm1lc3NhZ2Uo RVJSX2dldF9lcnJvcigpKTsKIAogCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNv dWxkIG5vdCByZWFkIGNlcnRpZmljYXRlIGZpbGUgXCIlc1wiOiAlcyIsCi0JCQkJCQkJICBmbmJ1 ZiwgZXJyKTsKKwkJCQkJCQkJCWZuYnVmLCBlcnIpOwogCQkJU1NMZXJyZnJlZShlcnIpOwogCQkJ U1NMX0NUWF9mcmVlKFNTTF9jb250ZXh0KTsKIAkJCXJldHVybiAtMTsKQEAgLTEyMzQsNyArMTIz NCw3IEBAIGluaXRpYWxpemVfU1NMKFBHY29ubiAqY29ubikKIAkJCQljaGFyCSAgICplcnIgPSBT U0xlcnJtZXNzYWdlKEVSUl9nZXRfZXJyb3IoKSk7CiAKIAkJCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAiY291bGQgbm90IGxvYWQgU1NMIGVuZ2luZSBcIiVzXCI6ICVzIiwKLQkJCQkJ CQkJICBlbmdpbmVfc3RyLCBlcnIpOworCQkJCQkJCQkJCWVuZ2luZV9zdHIsIGVycik7CiAJCQkJ U1NMZXJyZnJlZShlcnIpOwogCQkJCWZyZWUoZW5naW5lX3N0cik7CiAJCQkJcmV0dXJuIC0xOwpA QCAtMTI0NSw3ICsxMjQ1LDcgQEAgaW5pdGlhbGl6ZV9TU0woUEdjb25uICpjb25uKQogCQkJCWNo YXIJICAgKmVyciA9IFNTTGVycm1lc3NhZ2UoRVJSX2dldF9lcnJvcigpKTsKIAogCQkJCWxpYnBx X2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgaW5pdGlhbGl6ZSBTU0wgZW5naW5l IFwiJXNcIjogJXMiLAotCQkJCQkJCQkgIGVuZ2luZV9zdHIsIGVycik7CisJCQkJCQkJCQkJZW5n aW5lX3N0ciwgZXJyKTsKIAkJCQlTU0xlcnJmcmVlKGVycik7CiAJCQkJRU5HSU5FX2ZyZWUoY29u bi0+ZW5naW5lKTsKIAkJCQljb25uLT5lbmdpbmUgPSBOVUxMOwpAQCAtMTI2MCw3ICsxMjYwLDcg QEAgaW5pdGlhbGl6ZV9TU0woUEdjb25uICpjb25uKQogCQkJCWNoYXIJICAgKmVyciA9IFNTTGVy cm1lc3NhZ2UoRVJSX2dldF9lcnJvcigpKTsKIAogCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9y KGNvbm4sICJjb3VsZCBub3QgcmVhZCBwcml2YXRlIFNTTCBrZXkgXCIlc1wiIGZyb20gZW5naW5l IFwiJXNcIjogJXMiLAotCQkJCQkJCQkgIGVuZ2luZV9jb2xvbiwgZW5naW5lX3N0ciwgZXJyKTsK KwkJCQkJCQkJCQllbmdpbmVfY29sb24sIGVuZ2luZV9zdHIsIGVycik7CiAJCQkJU1NMZXJyZnJl ZShlcnIpOwogCQkJCUVOR0lORV9maW5pc2goY29ubi0+ZW5naW5lKTsKIAkJCQlFTkdJTkVfZnJl ZShjb25uLT5lbmdpbmUpOwpAQCAtMTI3Myw3ICsxMjczLDcgQEAgaW5pdGlhbGl6ZV9TU0woUEdj b25uICpjb25uKQogCQkJCWNoYXIJICAgKmVyciA9IFNTTGVycm1lc3NhZ2UoRVJSX2dldF9lcnJv cigpKTsKIAogCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgbG9h ZCBwcml2YXRlIFNTTCBrZXkgXCIlc1wiIGZyb20gZW5naW5lIFwiJXNcIjogJXMiLAotCQkJCQkJ CQkgIGVuZ2luZV9jb2xvbiwgZW5naW5lX3N0ciwgZXJyKTsKKwkJCQkJCQkJCQllbmdpbmVfY29s b24sIGVuZ2luZV9zdHIsIGVycik7CiAJCQkJU1NMZXJyZnJlZShlcnIpOwogCQkJCUVOR0lORV9m aW5pc2goY29ubi0+ZW5naW5lKTsKIAkJCQlFTkdJTkVfZnJlZShjb25uLT5lbmdpbmUpOwpAQCAt MTMxMCwxMCArMTMxMCwxMCBAQCBpbml0aWFsaXplX1NTTChQR2Nvbm4gKmNvbm4pCiAJCXsKIAkJ CWlmIChlcnJubyA9PSBFTk9FTlQpCiAJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwg ImNlcnRpZmljYXRlIHByZXNlbnQsIGJ1dCBub3QgcHJpdmF0ZSBrZXkgZmlsZSBcIiVzXCIiLAot CQkJCQkJCQkgIGZuYnVmKTsKKwkJCQkJCQkJCQlmbmJ1Zik7CiAJCQllbHNlCiAJCQkJbGlicHFf YXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCBzdGF0IHByaXZhdGUga2V5IGZpbGUg XCIlc1wiOiAlbSIsCi0JCQkJCQkJCSAgZm5idWYpOworCQkJCQkJCQkJCWZuYnVmKTsKIAkJCXJl dHVybiAtMTsKIAkJfQogCkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBpbml0aWFsaXplX1NTTChQR2Nv bm4gKmNvbm4pCiAJCWlmICghU19JU1JFRyhidWYuc3RfbW9kZSkpCiAJCXsKIAkJCWxpYnBxX2Fw cGVuZF9jb25uX2Vycm9yKGNvbm4sICJwcml2YXRlIGtleSBmaWxlIFwiJXNcIiBpcyBub3QgYSBy ZWd1bGFyIGZpbGUiLAotCQkJCQkJCSAgZm5idWYpOworCQkJCQkJCQkJZm5idWYpOwogCQkJcmV0 dXJuIC0xOwogCQl9CiAKQEAgLTEzNzgsNyArMTM3OCw3IEBAIGluaXRpYWxpemVfU1NMKFBHY29u biAqY29ubikKIAkJCWlmIChTU0xfdXNlX1ByaXZhdGVLZXlfZmlsZShjb25uLT5zc2wsIGZuYnVm LCBTU0xfRklMRVRZUEVfQVNOMSkgIT0gMSkKIAkJCXsKIAkJCQlsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihjb25uLCAiY291bGQgbm90IGxvYWQgcHJpdmF0ZSBrZXkgZmlsZSBcIiVzXCI6ICVzIiwK LQkJCQkJCQkJICBmbmJ1ZiwgZXJyKTsKKwkJCQkJCQkJCQlmbmJ1ZiwgZXJyKTsKIAkJCQlTU0xl cnJmcmVlKGVycik7CiAJCQkJcmV0dXJuIC0xOwogCQkJfQpAQCAtMTM5NCw3ICsxMzk0LDcgQEAg aW5pdGlhbGl6ZV9TU0woUEdjb25uICpjb25uKQogCQljaGFyCSAgICplcnIgPSBTU0xlcnJtZXNz YWdlKEVSUl9nZXRfZXJyb3IoKSk7CiAKIAkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwg ImNlcnRpZmljYXRlIGRvZXMgbm90IG1hdGNoIHByaXZhdGUga2V5IGZpbGUgXCIlc1wiOiAlcyIs Ci0JCQkJCQkgIGZuYnVmLCBlcnIpOworCQkJCQkJCQlmbmJ1ZiwgZXJyKTsKIAkJU1NMZXJyZnJl ZShlcnIpOwogCQlyZXR1cm4gLTE7CiAJfQpAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAgb3Blbl9jbGll bnRfU1NMKFBHY29ubiAqY29ubikKIAogCQkJCQlpZiAociA9PSAtMSkKIAkJCQkJCWxpYnBxX2Fw cGVuZF9jb25uX2Vycm9yKGNvbm4sICJTU0wgU1lTQ0FMTCBlcnJvcjogJXMiLAotCQkJCQkJCQkJ CSAgU09DS19TVFJFUlJPUihTT0NLX0VSUk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkpOworCQkJ CQkJCQkJCQkJU09DS19TVFJFUlJPUihTT0NLX0VSUk5PLCBzZWJ1Ziwgc2l6ZW9mKHNlYnVmKSkp OwogCQkJCQllbHNlCiAJCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiU1NMIFNZ U0NBTEwgZXJyb3I6IEVPRiBkZXRlY3RlZCIpOwogCQkJCQlwZ3Rsc19jbG9zZShjb25uKTsKQEAg LTE0ODksMTIgKzE0ODksMTIgQEAgb3Blbl9jbGllbnRfU1NMKFBHY29ubiAqY29ubikKIAkJCQkJ CWNhc2UgU1NMX1JfVkVSU0lPTl9UT09fTE9XOgogI2VuZGlmCiAJCQkJCQkJbGlicHFfYXBwZW5k X2Nvbm5fZXJyb3IoY29ubiwgIlRoaXMgbWF5IGluZGljYXRlIHRoYXQgdGhlIHNlcnZlciBkb2Vz IG5vdCBzdXBwb3J0IGFueSBTU0wgcHJvdG9jb2wgdmVyc2lvbiBiZXR3ZWVuICVzIGFuZCAlcy4i LAotCQkJCQkJCQkJCQkgIGNvbm4tPnNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiA/Ci0JCQkJCQkJ CQkJCSAgY29ubi0+c3NsX21pbl9wcm90b2NvbF92ZXJzaW9uIDoKLQkJCQkJCQkJCQkJICBNSU5f T1BFTlNTTF9UTFNfVkVSU0lPTiwKLQkJCQkJCQkJCQkJICBjb25uLT5zc2xfbWF4X3Byb3RvY29s X3ZlcnNpb24gPwotCQkJCQkJCQkJCQkgIGNvbm4tPnNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbiA6 Ci0JCQkJCQkJCQkJCSAgTUFYX09QRU5TU0xfVExTX1ZFUlNJT04pOworCQkJCQkJCQkJCQkJCWNv bm4tPnNzbF9taW5fcHJvdG9jb2xfdmVyc2lvbiA/CisJCQkJCQkJCQkJCQkJY29ubi0+c3NsX21p bl9wcm90b2NvbF92ZXJzaW9uIDoKKwkJCQkJCQkJCQkJCQlNSU5fT1BFTlNTTF9UTFNfVkVSU0lP TiwKKwkJCQkJCQkJCQkJCQljb25uLT5zc2xfbWF4X3Byb3RvY29sX3ZlcnNpb24gPworCQkJCQkJ CQkJCQkJCWNvbm4tPnNzbF9tYXhfcHJvdG9jb2xfdmVyc2lvbiA6CisJCQkJCQkJCQkJCQkJTUFY X09QRU5TU0xfVExTX1ZFUlNJT04pOwogCQkJCQkJCWJyZWFrOwogCQkJCQkJZGVmYXVsdDoKIAkJ CQkJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS5j IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMKaW5kZXggNjZlNDAxYmYzZC4uODA2 OWUzODE0MiAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMKKysr IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMKQEAgLTI1NSwxNCArMjU1LDE0IEBA IHBxc2VjdXJlX3Jhd19yZWFkKFBHY29ubiAqY29ubiwgdm9pZCAqcHRyLCBzaXplX3QgbGVuKQog CQkJY2FzZSBFUElQRToKIAkJCWNhc2UgRUNPTk5SRVNFVDoKIAkJCQlsaWJwcV9hcHBlbmRfY29u bl9lcnJvcihjb25uLCAic2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiB1bmV4cGVjdGVkbHlc biIKLQkJCQkJCQkJICAgIlx0VGhpcyBwcm9iYWJseSBtZWFucyB0aGUgc2VydmVyIHRlcm1pbmF0 ZWQgYWJub3JtYWxseVxuIgotCQkJCQkJCQkgICAiXHRiZWZvcmUgb3Igd2hpbGUgcHJvY2Vzc2lu ZyB0aGUgcmVxdWVzdC4iKTsKKwkJCQkJCQkJCQkiXHRUaGlzIHByb2JhYmx5IG1lYW5zIHRoZSBz ZXJ2ZXIgdGVybWluYXRlZCBhYm5vcm1hbGx5XG4iCisJCQkJCQkJCQkJIlx0YmVmb3JlIG9yIHdo aWxlIHByb2Nlc3NpbmcgdGhlIHJlcXVlc3QuIik7CiAJCQkJYnJlYWs7CiAKIAkJCWRlZmF1bHQ6 CiAJCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImNvdWxkIG5vdCByZWNlaXZlIGRh dGEgZnJvbSBzZXJ2ZXI6ICVzIiwKLQkJCQkJCQkJICBTT0NLX1NUUkVSUk9SKHJlc3VsdF9lcnJu bywKLQkJCQkJCQkJCQkJCXNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQkJCQkJU09DS19T VFJFUlJPUihyZXN1bHRfZXJybm8sCisJCQkJCQkJCQkJCQkJICBzZWJ1Ziwgc2l6ZW9mKHNlYnVm KSkpOwogCQkJCWJyZWFrOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGli cHEvbGlicHEtaW50LmggYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaAppbmRleCBk OTRiNjQ4ZWE1Li43MTJkNTcyMzczIDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9s aWJwcS1pbnQuaAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaApAQCAtODg4 LDggKzg4OCw4IEBAIGV4dGVybiBjaGFyICpsaWJwcV9uZ2V0dGV4dChjb25zdCBjaGFyICptc2dp ZCwgY29uc3QgY2hhciAqbXNnaWRfcGx1cmFsLCB1bnNpZ25lCiAgKi8KICN1bmRlZiBfCiAKLWV4 dGVybiB2b2lkIGxpYnBxX2FwcGVuZF9lcnJvcihQUUV4cEJ1ZmZlciBlcnJvck1lc3NhZ2UsIGNv bnN0IGNoYXIgKmZtdCwgLi4uKSBwZ19hdHRyaWJ1dGVfcHJpbnRmKDIsIDMpOwotZXh0ZXJuIHZv aWQgbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoUEdjb25uICpjb25uLCBjb25zdCBjaGFyICpmbXQs IC4uLikgcGdfYXR0cmlidXRlX3ByaW50ZigyLCAzKTsKK2V4dGVybiB2b2lkIGxpYnBxX2FwcGVu ZF9lcnJvcihQUUV4cEJ1ZmZlciBlcnJvck1lc3NhZ2UsIGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBn X2F0dHJpYnV0ZV9wcmludGYoMiwgMyk7CitleHRlcm4gdm9pZCBsaWJwcV9hcHBlbmRfY29ubl9l cnJvcihQR2Nvbm4gKmNvbm4sIGNvbnN0IGNoYXIgKmZtdCwuLi4pIHBnX2F0dHJpYnV0ZV9wcmlu dGYoMiwgMyk7CiAKIC8qCiAgKiBUaGVzZSBtYWNyb3MgYXJlIG5lZWRlZCB0byBsZXQgZXJyb3It aGFuZGxpbmcgY29kZSBiZSBwb3J0YWJsZSBiZXR3ZWVuCi0tIAoyLjM0LjEKCg== --_003_DBBPR83MB05079A565E6AB609104D3F9DF7FE9DBBPR83MB0507EURP_ Content-Type: application/octet-stream; name="v6-0002-Support-load-balancing-in-libpq.patch" Content-Description: v6-0002-Support-load-balancing-in-libpq.patch Content-Disposition: attachment; filename="v6-0002-Support-load-balancing-in-libpq.patch"; size=29353; creation-date="Mon, 09 Jan 2023 12:57:53 GMT"; modification-date="Mon, 09 Jan 2023 12:57:53 GMT" Content-Transfer-Encoding: base64 RnJvbSA4M2QwYWJkZTdkYjBkZGQwN2Y2MjUyMWMxNTgxMmY3MzgyN2YzZDYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hIDxnaXRodWItdGVjaEBqZWx0ZWYubmw+ CkRhdGU6IE1vbiwgMTIgU2VwIDIwMjIgMDk6NDQ6MDYgKzAyMDAKU3ViamVjdDogW1BBVENIIHY2 IDIvMl0gU3VwcG9ydCBsb2FkIGJhbGFuY2luZyBpbiBsaWJwcQoKVGhpcyBhZGRzIHN1cHBvcnQg Zm9yIGxvYWQgYmFsYW5jaW5nIHRvIGxpYnBxIHVzaW5nIHRoZSBuZXdseSBhZGRlZApsb2FkX2Jh bGFuY2VfaG9zdHMgcGFyYW1ldGVyLiBXaGVuIHNldHRpbmcgdGhlIGxvYWRfYmFsYW5jZV9ob3N0 cwpwYXJhbWV0ZXIgdG8gcmFuZG9tLCBob3N0cyBhbmQgYWRkcmVzc2VzIHdpbGwgYmUgY29ubmVj dGVkIHRvIGluIGEKcmFuZG9tIG9yZGVyLiBUaGlzIHRoZW4gcmVzdWx0cyBpbiBsb2FkIGJhbGFu Y2luZyBhY3Jvc3MgdGhlc2UKaG9zdHMvYWRkcmVzc2VzIGlmIG11bHRpcGxlIGNsaWVudHMgZG8g dGhpcyBhdCB0aGUgc2FtZSB0aW1lLgoKVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHR3byBsZXZlbHMg b2YgcmFuZG9tIGxvYWQgYmFsYW5jaW5nOgoxLiBUaGUgZ2l2ZW4gaG9zdHMgYXJlIHJhbmRvbWx5 IHNodWZmbGVkLCBiZWZvcmUgcmVzb2x2aW5nIHRoZW0KICAgIG9uZS1ieS1vbmUuCjIuIE9uY2Ug YSBob3N0IGl0cyBhZGRyZXNzZXMgZ2V0IHJlc29sdmVkLCB0aG9zZSBhZGRyZXNzZXMgYXJlIHNo dWZmbGVkLAogICAgYmVmb3JlIHRyeWluZyB0byBjb25uZWN0IHRvIHRoZW0gb25lLWJ5LW9uZS4K LS0tCiAuY2lycnVzLnltbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxNCArKwog ZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwgICAgICAgICAgICAgICAgICAgfCAgNjkgKysrKysrKwog c3JjL2luY2x1ZGUvbGlicHEvcHFjb21tLmggICAgICAgICAgICAgICAgfCAgIDYgKwogc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jICAgICAgICAgfCAyMTUgKysrKysrKysrKysrKysr KysrLS0tLQogc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggICAgICAgICAgfCAgMjEg KystCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9tZXNvbi5idWlsZCAgICAgICAgICB8ICAgMSArCiBz cmMvaW50ZXJmYWNlcy9saWJwcS90LzAwM19sb2FkYmFsYW5jZS5wbCB8IDE2NyArKysrKysrKysr KysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCA0NjAgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2ludGVyZmFjZXMvbGlicHEvdC8wMDNfbG9hZGJh bGFuY2UucGwKCmRpZmYgLS1naXQgYS8uY2lycnVzLnltbCBiLy5jaXJydXMueW1sCmluZGV4IDY5 ODM3YmNkNWEuLmY3MWU5MzQ1MWYgMTAwNjQ0Ci0tLSBhLy5jaXJydXMueW1sCisrKyBiLy5jaXJy dXMueW1sCkBAIC0zMDgsNiArMzA4LDE0IEBAIHRhc2s6CiAgICAgbWtkaXIgLW0gNzcwIC90bXAv Y29yZXMKICAgICBjaG93biByb290OnBvc3RncmVzIC90bXAvY29yZXMKICAgICBzeXNjdGwga2Vy bmVsLmNvcmVfcGF0dGVybj0nL3RtcC9jb3Jlcy8lZS0lcy0lcC5jb3JlJworCisgIHNldHVwX2hv c3RzX2ZpbGVfc2NyaXB0OiB8CisgICAgY2F0ID4+IC9ldGMvaG9zdHMgPDwtRU9GCisgICAgICAx MjcuMC4wLjEgcGctbG9hZGJhbGFuY2V0ZXN0CisgICAgICAxMjcuMC4wLjIgcGctbG9hZGJhbGFu Y2V0ZXN0CisgICAgICAxMjcuMC4wLjMgcGctbG9hZGJhbGFuY2V0ZXN0CisgICAgRU9GCisKICAg c2V0dXBfYWRkaXRpb25hbF9wYWNrYWdlc19zY3JpcHQ6IHwKICAgICAjYXB0LWdldCB1cGRhdGUK ICAgICAjREVCSUFOX0ZST05URU5EPW5vbmludGVyYWN0aXZlIGFwdC1nZXQgLXkgaW5zdGFsbCAu Li4KQEAgLTU1Nyw2ICs1NjUsMTIgQEAgdGFzazoKICAgc2V0dXBfYWRkaXRpb25hbF9wYWNrYWdl c19zY3JpcHQ6IHwKICAgICBSRU0gY2hvY28gaW5zdGFsbCAteSAtLW5vLXByb2dyZXNzIC4uLgog CisgIHNldHVwX2hvc3RzX2ZpbGVfc2NyaXB0OiB8CisgICAgZWNobyAxMjcuMC4wLjEgcGctbG9h ZGJhbGFuY2V0ZXN0ID4+IGM6XFdpbmRvd3NcU3lzdGVtMzJcRHJpdmVyc1xldGNcaG9zdHMKKyAg ICBlY2hvIDEyNy4wLjAuMiBwZy1sb2FkYmFsYW5jZXRlc3QgPj4gYzpcV2luZG93c1xTeXN0ZW0z MlxEcml2ZXJzXGV0Y1xob3N0cworICAgIGVjaG8gMTI3LjAuMC4zIHBnLWxvYWRiYWxhbmNldGVz dCA+PiBjOlxXaW5kb3dzXFN5c3RlbTMyXERyaXZlcnNcZXRjXGhvc3RzCisgICAgdHlwZSBjOlxX aW5kb3dzXFN5c3RlbTMyXERyaXZlcnNcZXRjXGhvc3RzCisKICAgIyBVc2UgL0RFQlVHOkZBU1RM SU5LIHRvIGF2b2lkIGhpZ2ggbWVtb3J5IHVzYWdlIGR1cmluZyBsaW5raW5nCiAgIGNvbmZpZ3Vy ZV9zY3JpcHQ6IHwKICAgICB2Y3ZhcnNhbGwgeDY0CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwv bGlicHEuc2dtbCBiL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCmluZGV4IGFmMjc4NjYwZWIuLjAz ZWFiMWQwMmUgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9saWJwcS5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9saWJwcS5zZ21sCkBAIC0xOTY0LDYgKzE5NjQsNzUgQEAgcG9zdGdyZXNxbDovLyUy RnZhciUyRmxpYiUyRnBvc3RncmVzcWwvZGJuYW1lCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9s aXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgPHZhcmxpc3RlbnRyeSBpZD0i bGlicHEtY29ubmVjdC1sb2FkLWJhbGFuY2UtaG9zdHMiIHhyZWZsYWJlbD0ibG9hZF9iYWxhbmNl X2hvc3RzIj4KKyAgICAgIDx0ZXJtPjxsaXRlcmFsPmxvYWRfYmFsYW5jZV9ob3N0czwvbGl0ZXJh bD48L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIENvbnRy b2xzIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgY2xpZW50IHRyaWVzIHRvIGNvbm5lY3QgdG8gdGhl IGF2YWlsYWJsZQorICAgICAgICBob3N0cyBhbmQgYWRkcmVzc2VzLiBJdCdzIHR5cGljYWxseSB1 c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggbXVsdGlwbGUKKyAgICAgICAgaG9zdCBuYW1lcyBvciBh IEROUyByZWNvcmQgdGhhdCByZXR1cm5zIG11bHRpcGxlIElQcy4gVGhpcyBwYXJhbWV0ZXIgYmUK KyAgICAgICAgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLWNv bm5lY3QtdGFyZ2V0LXNlc3Npb24tYXR0cnMiLz4KKyAgICAgICAgdG8sIGZvciBleGFtcGxlLCBs b2FkIGJhbGFuY2Ugb3ZlciBzdGFuYnkgc2VydmVycyBvbmx5LiBPbmNlIHN1Y2Nlc3NmdWxseQor ICAgICAgICBjb25uZWN0ZWQsIHN1YnNlcXVlbnQgcXVlcmllcyBvbiB0aGUgcmV0dXJuZWQgY29u bmVjdGlvbiB3aWxsIGFsbCBiZQorICAgICAgICBzZW50IHRvIHRoZSBzYW1lIHNlcnZlci4gVGhl cmUgYXJlIGN1cnJlbnRseSB0d28gbW9kZXM6CisgICAgICAgIDx2YXJpYWJsZWxpc3Q+CisgICAg ICAgICA8dmFybGlzdGVudHJ5PgorICAgICAgICAgIDx0ZXJtPjxsaXRlcmFsPmRpc2FibGU8L2xp dGVyYWw+IChkZWZhdWx0KTwvdGVybT4KKyAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAg IDxwYXJhPgorICAgICAgICAgICAgSG9zdHMgYXJlIHRyaWVkIGluIHRoZSBvcmRlciBpbiB3aGlj aCB0aGV5IGFyZSBwcm92aWRlZCBhbmQKKyAgICAgICAgICAgIGFkZHJlc3NlcyBhcmUgdHJpZWQg aW4gdGhlIG9yZGVyIHRoZXkgYXJlIHJlY2VpdmVkIGZyb20gRE5TIG9yIGEKKyAgICAgICAgICAg IGhvc3RzIGZpbGUuCisgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgor ICAgICAgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICAgICAgIDx2YXJsaXN0ZW50cnk+CisgICAg ICAgICAgPHRlcm0+PGxpdGVyYWw+cmFuZG9tPC9saXRlcmFsPjwvdGVybT4KKyAgICAgICAgICA8 bGlzdGl0ZW0+CisgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIHByb3ZpZGVkIGhv c3RzIGFuZCB0aGUgYWRkcmVzc2VzIHRoYXQgdGhleSByZXNvbHZlIHRvIGFyZQorICAgICAgICAg ICAgdHJpZWQgaW4gcmFuZG9tIG9yZGVyLiBUaGlzIHZhbHVlIGlzIG1vc3RseSB1c2VmdWwgd2hl biBvcGVuaW5nCisgICAgICAgICAgICBtdWx0aXBsZSBjb25uZWN0aW9ucyBhdCB0aGUgc2FtZSB0 aW1lLCBwb3NzaWJseSBmcm9tIGRpZmZlcmVudAorICAgICAgICAgICAgbWFjaGluZXMuIFRoaXMg d2F5IGNvbm5lY3Rpb25zIGNhbiBiZSBsb2FkIGJhbGFuY2VkIGFjcm9zcyBtdWx0aXBsZQorICAg ICAgICAgICAgUG9zdGdyZXMgc2VydmVycy4KKyAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAg ICA8cGFyYT4KKyAgICAgICAgICAgIFRoaXMgYWxnb3JpdGhtIHVzZXMgdHdvIGxldmVscyBvZiBy YW5kb20gY2hvaWNlczogRmlyc3QgdGhlIGhvc3RzCisgICAgICAgICAgICB3aWxsIGJlIHJlc29s dmVkIGluIHJhbmRvbSBvcmRlci4gVGhlbiBiZWZvcmUgcmVzb2x2aW5nIHRoZSBuZXh0CisgICAg ICAgICAgICBob3N0LCBhbGwgcmVzb2x2ZWQgYWRkcmVzc2VzIGZvciB0aGUgY3VycmVudCBob3N0 IHdpbGwgYmUgdHJpZWQgaW4KKyAgICAgICAgICAgIHJhbmRvbSBvcmRlci4gVGhpcyBiZWhhdmlv dXIgY2FuIGxlYWQgdG8gbm9uLXVuaWZvcm0gYWRkcmVzcworICAgICAgICAgICAgc2VsZWN0aW9u IGluIGNlcnRhaW4gY2FzZXMsIGZvciBpbnN0YW5jZSB3aGVuIHNvbWUgaG9zdHMgcmVzb2x2ZSB0 bworICAgICAgICAgICAgbW9yZSBhZGRyZXNzZXMgdGhhbiBvdGhlcnMuIFNvIGlmIHlvdSB3YW50 IHVuaWZvcm0gbG9hZCBiYWxhbmNpbmcsCisgICAgICAgICAgICB0aGlzIGlzIHNvbWV0aGluZyB0 byBrZWVwIGluIG1pbmQuIEhvd2V2ZXIsIG5vbi11bmlmb3JtIGxvYWQKKyAgICAgICAgICAgIGJh bGFuY2luZyBhbHNvIGNhbiBiZSB1c2VkIHRvIHlvdXIgYWR2YW50YWdlLCBlLmcuIGJ5IHByb3Zp ZGluZyB0aGUKKyAgICAgICAgICAgIGhvc3RuYW1lIG9mIGEgbGFyZ2VyIHNlcnZlciBtdWx0aXBs ZSB0aW1lcyBpbiB0aGUgaG9zdCBzdHJpbmcgc28gaXQKKyAgICAgICAgICAgIGdldHMgbW9yZSBj b25uZWN0aW9ucy4KKyAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICA8cGFyYT4KKyAgICAg ICAgICAgIFdoZW4gdXNpbmcgdGhpcyB2YWx1ZSBpdCdzIHJlY29tbWVuZGVkIHRvIGFsc28gY29u ZmlndXJlIGEgcmVhc29uYWJsZQorICAgICAgICAgICAgdmFsdWUgZm9yIDx4cmVmIGxpbmtlbmQ9 ImxpYnBxLWNvbm5lY3QtY29ubmVjdC10aW1lb3V0Ii8+LiBCZWNhdXNlIHRoZW4sCisgICAgICAg ICAgICBpZiBvbmUgb2YgdGhlIG5vZGVzIHRoYXQgYXJlIHVzZWQgZm9yIGxvYWQgYmFsYW5jaW5n IGlzIG5vdCByZXNwb25kaW5nLAorICAgICAgICAgICAgYSBuZXcgbm9kZSB3aWxsIGJlIHRyaWVk LgorICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAgIDwv dmFybGlzdGVudHJ5PgorICAgICAgICA8L3ZhcmlhYmxlbGlzdD4KKyAgICAgICA8L3BhcmE+Cisg ICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxpc3RlbnRyeT4KKworICAgICA8dmFybGlzdGVu dHJ5IGlkPSJsaWJwcS1yYW5kb20tc2VlZCIgeHJlZmxhYmVsPSJyYW5kb21fc2VlZCI+CisgICAg ICA8dGVybT48bGl0ZXJhbD5yYW5kb21fc2VlZDwvbGl0ZXJhbD48L3Rlcm0+CisgICAgICA8bGlz dGl0ZW0+CisgICAgICAgPHBhcmE+CisgICAgICAgIFNldHMgdGhlIHJhbmRvbSBzZWVkIHRoYXQg aXMgdXNlZCBieSA8eHJlZiBsaW5rZW5kPSJsaWJwcS1jb25uZWN0LWxvYWQtYmFsYW5jZS1ob3N0 cyIvPgorICAgICAgICB0byByYW5kb21pemUgdGhlIGhvc3Qgb3JkZXIuIFRoaXMgb3B0aW9uIGlz IG1vc3RseSB1c2VmdWwgd2hlbiBydW5uaW5nCisgICAgICAgIHRlc3RzIHRoYXQgcmVxdWlyZSBh IHN0YWJsZSByYW5kb20gb3JkZXIuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0aXRlbT4K KyAgICAgPC92YXJsaXN0ZW50cnk+CiAgICAgPC92YXJpYWJsZWxpc3Q+CiAgICA8L3BhcmE+CiAg IDwvc2VjdDI+CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWJwcS9wcWNvbW0uaCBiL3NyYy9p bmNsdWRlL2xpYnBxL3BxY29tbS5oCmluZGV4IDY2YmEzNTkzOTAuLmVlMjhlMjIzYmQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2xpYnBxL3BxY29tbS5oCisrKyBiL3NyYy9pbmNsdWRlL2xpYnBx L3BxY29tbS5oCkBAIC0yNyw2ICsyNywxMiBAQCB0eXBlZGVmIHN0cnVjdAogCXNvY2tsZW5fdAlz YWxlbjsKIH0gU29ja0FkZHI7CiAKK3R5cGVkZWYgc3RydWN0Cit7CisJaW50CQkJZmFtaWx5Owor CVNvY2tBZGRyCWFkZHI7Cit9IEFkZHJJbmZvOworCiAvKiBDb25maWd1cmUgdGhlIFVOSVggc29j a2V0IGxvY2F0aW9uIGZvciB0aGUgd2VsbCBrbm93biBwb3J0LiAqLwogCiAjZGVmaW5lIFVOSVhT T0NLX1BBVEgocGF0aCwgcG9ydCwgc29ja2RpcikgXApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFj ZXMvbGlicHEvZmUtY29ubmVjdC5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5j CmluZGV4IDc3M2U5ZTFmM2EuLjE4YTA3ZDgxMGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2Vz L2xpYnBxL2ZlLWNvbm5lY3QuYworKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1jb25uZWN0 LmMKQEAgLTEyMyw2ICsxMjMsNyBAQCBzdGF0aWMgaW50CWxkYXBTZXJ2aWNlTG9va3VwKGNvbnN0 IGNoYXIgKnB1cmwsIFBRY29ubmluZm9PcHRpb24gKm9wdGlvbnMsCiAjZGVmaW5lIERlZmF1bHRD aGFubmVsQmluZGluZwkiZGlzYWJsZSIKICNlbmRpZgogI2RlZmluZSBEZWZhdWx0VGFyZ2V0U2Vz c2lvbkF0dHJzCSJhbnkiCisjZGVmaW5lIERlZmF1bHRMb2FkQmFsYW5jZUhvc3RzCSJkaXNhYmxl IgogI2lmZGVmIFVTRV9TU0wKICNkZWZpbmUgRGVmYXVsdFNTTE1vZGUgInByZWZlciIKICNlbHNl CkBAIC0zNDEsNiArMzQyLDE1IEBAIHN0YXRpYyBjb25zdCBpbnRlcm5hbFBRY29ubmluZm9PcHRp b24gUFFjb25uaW5mb09wdGlvbnNbXSA9IHsKIAkJIlRhcmdldC1TZXNzaW9uLUF0dHJzIiwgIiIs IDE1LCAvKiBzaXplb2YoInByZWZlci1zdGFuZGJ5IikgPSAxNSAqLwogCW9mZnNldG9mKHN0cnVj dCBwZ19jb25uLCB0YXJnZXRfc2Vzc2lvbl9hdHRycyl9LAogCisJeyJsb2FkX2JhbGFuY2VfaG9z dHMiLCAiUEdMT0FEQkFMQU5DRUhPU1RTIiwKKwkJRGVmYXVsdExvYWRCYWxhbmNlSG9zdHMsIE5V TEwsCisJCSJMb2FkLUJhbGFuY2UtSG9zdHMiLCAiIiwgOCwJLyogc2l6ZW9mKCJkaXNhYmxlIikg PSA4ICovCisJb2Zmc2V0b2Yoc3RydWN0IHBnX2Nvbm4sIGxvYWRfYmFsYW5jZV9ob3N0cyl9LAor CisJeyJyYW5kb21fc2VlZCIsIE5VTEwsIE5VTEwsIE5VTEwsCisJCSJSYW5kb20tU2VlZCIsICIi LCAxMCwJLyogc3RybGVuKElOVDMyX01BWCkgPT0gMTAgKi8KKwlvZmZzZXRvZihzdHJ1Y3QgcGdf Y29ubiwgcmFuZG9tc2VlZCl9LAorCiAJLyogVGVybWluYXRpbmcgZW50cnkgLS0tIE1VU1QgQkUg TEFTVCAqLwogCXtOVUxMLCBOVUxMLCBOVUxMLCBOVUxMLAogCU5VTEwsIE5VTEwsIDB9CkBAIC0z NzksNiArMzg5LDcgQEAgc3RhdGljIGJvb2wgZmlsbFBHY29ubihQR2Nvbm4gKmNvbm4sIFBRY29u bmluZm9PcHRpb24gKmNvbm5PcHRpb25zKTsKIHN0YXRpYyB2b2lkIGZyZWVQR2Nvbm4oUEdjb25u ICpjb25uKTsKIHN0YXRpYyB2b2lkIGNsb3NlUEdjb25uKFBHY29ubiAqY29ubik7CiBzdGF0aWMg dm9pZCByZWxlYXNlX2Nvbm5fYWRkcmluZm8oUEdjb25uICpjb25uKTsKK3N0YXRpYyBib29sIHN0 b3JlX2Nvbm5fYWRkcmluZm8oUEdjb25uICpjb25uLCBzdHJ1Y3QgYWRkcmluZm8gKmFkZHJsaXN0 KTsKIHN0YXRpYyB2b2lkIHNlbmRUZXJtaW5hdGVDb25uKFBHY29ubiAqY29ubik7CiBzdGF0aWMg UFFjb25uaW5mb09wdGlvbiAqY29ubmluZm9faW5pdChQUUV4cEJ1ZmZlciBlcnJvck1lc3NhZ2Up Owogc3RhdGljIFBRY29ubmluZm9PcHRpb24gKnBhcnNlX2Nvbm5lY3Rpb25fc3RyaW5nKGNvbnN0 IGNoYXIgKmNvbm5zdHIsCkBAIC00MjQsNiArNDM1LDggQEAgc3RhdGljIHZvaWQgcGdwYXNzZmls ZVdhcm5pbmcoUEdjb25uICpjb25uKTsKIHN0YXRpYyB2b2lkIGRlZmF1bHRfdGhyZWFkbG9jayhp bnQgYWNxdWlyZSk7CiBzdGF0aWMgYm9vbCBzc2xWZXJpZnlQcm90b2NvbFZlcnNpb24oY29uc3Qg Y2hhciAqdmVyc2lvbik7CiBzdGF0aWMgYm9vbCBzc2xWZXJpZnlQcm90b2NvbFJhbmdlKGNvbnN0 IGNoYXIgKm1pbiwgY29uc3QgY2hhciAqbWF4KTsKK3N0YXRpYyBib29sIHBhcnNlX2ludF9wYXJh bShjb25zdCBjaGFyICp2YWx1ZSwgaW50ICpyZXN1bHQsIFBHY29ubiAqY29ubiwKKwkJCQkJCQlj b25zdCBjaGFyICpjb250ZXh0KTsKIAogCiAvKiBnbG9iYWwgdmFyaWFibGUgYmVjYXVzZSBmZS1h dXRoLmMgbmVlZHMgdG8gYWNjZXNzIGl0ICovCkBAIC0xMDA3LDYgKzEwMjAsNDQgQEAgcGFyc2Vf Y29tbWFfc2VwYXJhdGVkX2xpc3QoY2hhciAqKnN0YXJ0cHRyLCBib29sICptb3JlKQogCXJldHVy biBwOwogfQogCisvKgorICogSW5pdGlhbGl6ZXMgdGhlIHBybmdfc3RhdGUgZmllbGQgb2YgdGhl IGNvbm5lY3Rpb24uIFdlIHdhbnQgc29tZXRoaW5nCisgKiB1bnByZWRpY3RhYmxlLCBzbyBpZiBw b3NzaWJsZSwgdXNlIGhpZ2gtcXVhbGl0eSByYW5kb20gYml0cyBmb3IgdGhlCisgKiBzZWVkLiBP dGhlcndpc2UsIGZhbGwgYmFjayB0byBhIHNlZWQgYmFzZWQgb24gdGltZXN0YW1wIGFuZCBQSUQu CisgKi8KK3N0YXRpYyBib29sCitsaWJwcV9wcm5nX2luaXQoUEdjb25uICpjb25uKQoreworCWlm ICh1bmxpa2VseShjb25uLT5yYW5kb21zZWVkKSkKKwl7CisJCWludAkJCXJzZWVkOworCisJCWlm ICghcGFyc2VfaW50X3BhcmFtKGNvbm4tPnJhbmRvbXNlZWQsICZyc2VlZCwgY29ubiwgInJhbmRv bV9zZWVkIikpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJcGdfcHJuZ19zZWVkKCZjb25uLT5wcm5n X3N0YXRlLCByc2VlZCk7CisJfQorCWVsc2UgaWYgKHVubGlrZWx5KCFwZ19wcm5nX3N0cm9uZ19z ZWVkKCZjb25uLT5wcm5nX3N0YXRlKSkpCisJeworCQl1aW50NjQJCXJzZWVkOworCQl0aW1lX3QJ CW5vdyA9IHRpbWUoTlVMTCk7CisKKwkJLyoKKwkJICogU2luY2UgUElEcyBhbmQgdGltZXN0YW1w cyB0ZW5kIHRvIGNoYW5nZSBtb3JlIGZyZXF1ZW50bHkgaW4gdGhlaXIKKwkJICogbGVhc3Qgc2ln bmlmaWNhbnQgYml0cywgc2hpZnQgdGhlIHRpbWVzdGFtcCBsZWZ0IHRvIGFsbG93IGEgbGFyZ2Vy CisJCSAqIHRvdGFsIG51bWJlciBvZiBzZWVkcyBpbiBhIGdpdmVuIHRpbWUgcGVyaW9kLiAgU2lu Y2UgdGhhdCB3b3VsZAorCQkgKiBsZWF2ZSBvbmx5IDIwIGJpdHMgb2YgdGhlIHRpbWVzdGFtcCB0 aGF0IGN5Y2xlIGV2ZXJ5IH4xIHNlY29uZCwKKwkJICogYWxzbyBtaXggaW4gc29tZSBoaWdoZXIg Yml0cy4KKwkJICovCisJCXJzZWVkID0gKCh1aW50NjQpIGdldHBpZCgpKSBeCisJCQkoKHVpbnQ2 NCkgbm93IDw8IDEyKSBeCisJCQkoKHVpbnQ2NCkgbm93ID4+IDIwKTsKKworCQlwZ19wcm5nX3Nl ZWQoJmNvbm4tPnBybmdfc3RhdGUsIHJzZWVkKTsKKwl9CisJcmV0dXJuIHRydWU7Cit9CisKIC8q CiAgKgkJY29ubmVjdE9wdGlvbnMyCiAgKgpAQCAtMTQwMCw2ICsxNDUxLDQ3IEBAIGNvbm5lY3RP cHRpb25zMihQR2Nvbm4gKmNvbm4pCiAJZWxzZQogCQljb25uLT50YXJnZXRfc2VydmVyX3R5cGUg PSBTRVJWRVJfVFlQRV9BTlk7CiAKKwkvKgorCSAqIHZhbGlkYXRlIGxvYWRfYmFsYW5jZV9ob3N0 cyBvcHRpb24sIGFuZCBzZXQgbG9hZF9iYWxhbmNlX3R5cGUKKwkgKi8KKwlpZiAoY29ubi0+bG9h ZF9iYWxhbmNlX2hvc3RzKQorCXsKKwkJaWYgKHN0cmNtcChjb25uLT5sb2FkX2JhbGFuY2VfaG9z dHMsICJkaXNhYmxlIikgPT0gMCkKKwkJCWNvbm4tPmxvYWRfYmFsYW5jZV90eXBlID0gTE9BRF9C QUxBTkNFX0RJU0FCTEU7CisJCWVsc2UgaWYgKHN0cmNtcChjb25uLT5sb2FkX2JhbGFuY2VfaG9z dHMsICJyYW5kb20iKSA9PSAwKQorCQkJY29ubi0+bG9hZF9iYWxhbmNlX3R5cGUgPSBMT0FEX0JB TEFOQ0VfUkFORE9NOworCQllbHNlCisJCXsKKwkJCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05f QkFEOworCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgImludmFsaWQgJXMgdmFsdWU6 IFwiJXNcIiIsCisJCQkJCQkJCQkibG9hZF9iYWxhbmNlX2hvc3RzIiwKKwkJCQkJCQkJCWNvbm4t PmxvYWRfYmFsYW5jZV9ob3N0cyk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9CisJZWxzZQor CQljb25uLT5sb2FkX2JhbGFuY2VfdHlwZSA9IExPQURfQkFMQU5DRV9ESVNBQkxFOworCisJaWYg KGNvbm4tPmxvYWRfYmFsYW5jZV90eXBlID09IExPQURfQkFMQU5DRV9SQU5ET00pCisJeworCQlp ZiAoIWxpYnBxX3BybmdfaW5pdChjb25uKSkKKwkJCXJldHVybiBmYWxzZTsKKworCQkvKgorCQkg KiBTaHVmZmxlIGNvbm5ob3N0IHdpdGggYSBEdXJzdGVuZmVsZC9LbnV0aCB2ZXJzaW9uIG9mIHRo ZQorCQkgKiBGaXNoZXItWWF0ZXMgc2h1ZmZsZS4gU291cmNlOgorCQkgKiBodHRwczovL2VuLndp a2lwZWRpYS5vcmcvd2lraS9GaXNoZXIlRTIlODAlOTNZYXRlc19zaHVmZmxlI1RoZV9tb2Rlcm5f YWxnb3JpdGhtCisJCSAqLworCQlmb3IgKGkgPSBjb25uLT5uY29ubmhvc3QgLSAxOyBpID4gMDsg aS0tKQorCQl7CisJCQlpbnQJCQlqID0gcGdfcHJuZ191aW50NjRfcmFuZ2UoJmNvbm4tPnBybmdf c3RhdGUsIDAsIGkpOworCQkJcGdfY29ubl9ob3N0IHRlbXAgPSBjb25uLT5jb25uaG9zdFtqXTsK KworCQkJY29ubi0+Y29ubmhvc3Rbal0gPSBjb25uLT5jb25uaG9zdFtpXTsKKwkJCWNvbm4tPmNv bm5ob3N0W2ldID0gdGVtcDsKKwkJfQorCX0KKwogCS8qCiAJICogUmVzb2x2ZSBzcGVjaWFsICJh dXRvIiBjbGllbnRfZW5jb2RpbmcgZnJvbSB0aGUgbG9jYWxlCiAJICovCkBAIC0yMDc3LDcgKzIx NjksNyBAQCBjb25uZWN0REJDb21wbGV0ZShQR2Nvbm4gKmNvbm4pCiAJdGltZV90CQlmaW5pc2hf dGltZSA9ICgodGltZV90KSAtMSk7CiAJaW50CQkJdGltZW91dCA9IDA7CiAJaW50CQkJbGFzdF93 aGljaGhvc3QgPSAtMjsJLyogY2VydGFpbmx5IGRpZmZlcmVudCBmcm9tIHdoaWNoaG9zdCAqLwot CXN0cnVjdCBhZGRyaW5mbyAqbGFzdF9hZGRyX2N1ciA9IE5VTEw7CisJaW50CQkJbGFzdF93aGlj aGFkZHIgPSAtMjsJLyogY2VydGFpbmx5IGRpZmZlcmVudCBmcm9tIHdoaWNoYWRkciAqLwogCiAJ aWYgKGNvbm4gPT0gTlVMTCB8fCBjb25uLT5zdGF0dXMgPT0gQ09OTkVDVElPTl9CQUQpCiAJCXJl dHVybiAwOwpAQCAtMjEyMSwxMSArMjIxMywxMSBAQCBjb25uZWN0REJDb21wbGV0ZShQR2Nvbm4g KmNvbm4pCiAJCWlmIChmbGFnICE9IFBHUkVTX1BPTExJTkdfT0sgJiYKIAkJCXRpbWVvdXQgPiAw ICYmCiAJCQkoY29ubi0+d2hpY2hob3N0ICE9IGxhc3Rfd2hpY2hob3N0IHx8Ci0JCQkgY29ubi0+ YWRkcl9jdXIgIT0gbGFzdF9hZGRyX2N1cikpCisJCQkgY29ubi0+d2hpY2hhZGRyICE9IGxhc3Rf d2hpY2hhZGRyKSkKIAkJewogCQkJZmluaXNoX3RpbWUgPSB0aW1lKE5VTEwpICsgdGltZW91dDsK IAkJCWxhc3Rfd2hpY2hob3N0ID0gY29ubi0+d2hpY2hob3N0OwotCQkJbGFzdF9hZGRyX2N1ciA9 IGNvbm4tPmFkZHJfY3VyOworCQkJbGFzdF93aGljaGFkZHIgPSBjb25uLT53aGljaGFkZHI7CiAJ CX0KIAogCQkvKgpAQCAtMjI3Miw5ICsyMzY0LDkgQEAga2VlcF9nb2luZzoJCQkJCQkvKiBXZSB3 aWxsIGNvbWUgYmFjayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAJLyogVGltZSB0byBhZHZhbmNl IHRvIG5leHQgYWRkcmVzcywgb3IgbmV4dCBob3N0IGlmIG5vIG1vcmUgYWRkcmVzc2VzPyAqLwog CWlmIChjb25uLT50cnlfbmV4dF9hZGRyKQogCXsKLQkJaWYgKGNvbm4tPmFkZHJfY3VyICYmIGNv bm4tPmFkZHJfY3VyLT5haV9uZXh0KQorCQlpZiAoY29ubi0+d2hpY2hhZGRyIDwgY29ubi0+bmFk ZHIpCiAJCXsKLQkJCWNvbm4tPmFkZHJfY3VyID0gY29ubi0+YWRkcl9jdXItPmFpX25leHQ7CisJ CQljb25uLT53aGljaGFkZHIrKzsKIAkJCXJlc2V0X2Nvbm5lY3Rpb25fc3RhdGVfbWFjaGluZSA9 IHRydWU7CiAJCX0KIAkJZWxzZQpAQCAtMjI4Nyw2ICsyMzc5LDcgQEAga2VlcF9nb2luZzoJCQkJ CQkvKiBXZSB3aWxsIGNvbWUgYmFjayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAJewogCQlwZ19j b25uX2hvc3QgKmNoOwogCQlzdHJ1Y3QgYWRkcmluZm8gaGludDsKKwkJc3RydWN0IGFkZHJpbmZv ICphZGRybGlzdDsKIAkJaW50CQkJdGhpc3BvcnQ7CiAJCWludAkJCXJldDsKIAkJY2hhcgkJcG9y dHN0cltNQVhQR1BBVEhdOwpAQCAtMjMyNyw3ICsyNDIwLDcgQEAga2VlcF9nb2luZzoJCQkJCQkv KiBXZSB3aWxsIGNvbWUgYmFjayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAJCS8qIEluaXRpYWxp emUgaGludCBzdHJ1Y3R1cmUgKi8KIAkJTWVtU2V0KCZoaW50LCAwLCBzaXplb2YoaGludCkpOwog CQloaW50LmFpX3NvY2t0eXBlID0gU09DS19TVFJFQU07Ci0JCWNvbm4tPmFkZHJsaXN0X2ZhbWls eSA9IGhpbnQuYWlfZmFtaWx5ID0gQUZfVU5TUEVDOworCQloaW50LmFpX2ZhbWlseSA9IEFGX1VO U1BFQzsKIAogCQkvKiBGaWd1cmUgb3V0IHRoZSBwb3J0IG51bWJlciB3ZSdyZSBnb2luZyB0byB1 c2UuICovCiAJCWlmIChjaC0+cG9ydCA9PSBOVUxMIHx8IGNoLT5wb3J0WzBdID09ICdcMCcpCkBA IC0yMzUwLDggKzI0NDMsOCBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNr IHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJewogCQkJY2FzZSBDSFRfSE9TVF9OQU1FOgogCQkJ CXJldCA9IHBnX2dldGFkZHJpbmZvX2FsbChjaC0+aG9zdCwgcG9ydHN0ciwgJmhpbnQsCi0JCQkJ CQkJCQkJICZjb25uLT5hZGRybGlzdCk7Ci0JCQkJaWYgKHJldCB8fCAhY29ubi0+YWRkcmxpc3Qp CisJCQkJCQkJCQkJICZhZGRybGlzdCk7CisJCQkJaWYgKHJldCB8fCAhYWRkcmxpc3QpCiAJCQkJ ewogCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291bGQgbm90IHRyYW5zbGF0 ZSBob3N0IG5hbWUgXCIlc1wiIHRvIGFkZHJlc3M6ICVzIiwKIAkJCQkJCQkJCQkJY2gtPmhvc3Qs IGdhaV9zdHJlcnJvcihyZXQpKTsKQEAgLTIzNjIsOCArMjQ1NSw4IEBAIGtlZXBfZ29pbmc6CQkJ CQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJY2FzZSBD SFRfSE9TVF9BRERSRVNTOgogCQkJCWhpbnQuYWlfZmxhZ3MgPSBBSV9OVU1FUklDSE9TVDsKIAkJ CQlyZXQgPSBwZ19nZXRhZGRyaW5mb19hbGwoY2gtPmhvc3RhZGRyLCBwb3J0c3RyLCAmaGludCwK LQkJCQkJCQkJCQkgJmNvbm4tPmFkZHJsaXN0KTsKLQkJCQlpZiAocmV0IHx8ICFjb25uLT5hZGRy bGlzdCkKKwkJCQkJCQkJCQkgJmFkZHJsaXN0KTsKKwkJCQlpZiAocmV0IHx8ICFhZGRybGlzdCkK IAkJCQl7CiAJCQkJCWxpYnBxX2FwcGVuZF9jb25uX2Vycm9yKGNvbm4sICJjb3VsZCBub3QgcGFy c2UgbmV0d29yayBhZGRyZXNzIFwiJXNcIjogJXMiLAogCQkJCQkJCQkJCQljaC0+aG9zdGFkZHIs IGdhaV9zdHJlcnJvcihyZXQpKTsKQEAgLTIzNzIsNyArMjQ2NSw3IEBAIGtlZXBfZ29pbmc6CQkJ CQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCWJyZWFr OwogCiAJCQljYXNlIENIVF9VTklYX1NPQ0tFVDoKLQkJCQljb25uLT5hZGRybGlzdF9mYW1pbHkg PSBoaW50LmFpX2ZhbWlseSA9IEFGX1VOSVg7CisJCQkJaGludC5haV9mYW1pbHkgPSBBRl9VTklY OwogCQkJCVVOSVhTT0NLX1BBVEgocG9ydHN0ciwgdGhpc3BvcnQsIGNoLT5ob3N0KTsKIAkJCQlp ZiAoc3RybGVuKHBvcnRzdHIpID49IFVOSVhTT0NLX1BBVEhfQlVGTEVOKQogCQkJCXsKQEAgLTIz ODcsOCArMjQ4MCw4IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8g aGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCSAqIG5hbWUgYXMgYSBVbml4LWRvbWFpbiBzb2NrZXQg cGF0aC4KIAkJCQkgKi8KIAkJCQlyZXQgPSBwZ19nZXRhZGRyaW5mb19hbGwoTlVMTCwgcG9ydHN0 ciwgJmhpbnQsCi0JCQkJCQkJCQkJICZjb25uLT5hZGRybGlzdCk7Ci0JCQkJaWYgKHJldCB8fCAh Y29ubi0+YWRkcmxpc3QpCisJCQkJCQkJCQkJICZhZGRybGlzdCk7CisJCQkJaWYgKHJldCB8fCAh YWRkcmxpc3QpCiAJCQkJewogCQkJCQlsaWJwcV9hcHBlbmRfY29ubl9lcnJvcihjb25uLCAiY291 bGQgbm90IHRyYW5zbGF0ZSBVbml4LWRvbWFpbiBzb2NrZXQgcGF0aCBcIiVzXCIgdG8gYWRkcmVz czogJXMiLAogCQkJCQkJCQkJCQlwb3J0c3RyLCBnYWlfc3RyZXJyb3IocmV0KSk7CkBAIC0yMzk3 LDggKzI0OTAsMTQgQEAga2VlcF9nb2luZzoJCQkJCQkvKiBXZSB3aWxsIGNvbWUgYmFjayB0byBo ZXJlIHVudGlsIHRoZXJlIGlzCiAJCQkJYnJlYWs7CiAJCX0KIAotCQkvKiBPSywgc2NhbiB0aGlz IGFkZHJsaXN0IGZvciBhIHdvcmtpbmcgc2VydmVyIGFkZHJlc3MgKi8KLQkJY29ubi0+YWRkcl9j dXIgPSBjb25uLT5hZGRybGlzdDsKKwkJaWYgKCFzdG9yZV9jb25uX2FkZHJpbmZvKGNvbm4sIGFk ZHJsaXN0KSkKKwkJeworCQkJcGdfZnJlZWFkZHJpbmZvX2FsbChoaW50LmFpX2ZhbWlseSwgYWRk cmxpc3QpOworCQkJbGlicHFfYXBwZW5kX2Nvbm5fZXJyb3IoY29ubiwgIm91dCBvZiBtZW1vcnki KTsKKwkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQl9CisJCXBnX2ZyZWVhZGRyaW5mb19hbGwoaGlu dC5haV9mYW1pbHksIGFkZHJsaXN0KTsKKwogCQlyZXNldF9jb25uZWN0aW9uX3N0YXRlX21hY2hp bmUgPSB0cnVlOwogCQljb25uLT50cnlfbmV4dF9ob3N0ID0gZmFsc2U7CiAJfQpAQCAtMjQ1NSwz MCArMjU1NCwyOSBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhl cmUgdW50aWwgdGhlcmUgaXMKIAkJCXsKIAkJCQkvKgogCQkJCSAqIFRyeSB0byBpbml0aWF0ZSBh IGNvbm5lY3Rpb24gdG8gb25lIG9mIHRoZSBhZGRyZXNzZXMKLQkJCQkgKiByZXR1cm5lZCBieSBw Z19nZXRhZGRyaW5mb19hbGwoKS4gIGNvbm4tPmFkZHJfY3VyIGlzIHRoZQorCQkJCSAqIHJldHVy bmVkIGJ5IHBnX2dldGFkZHJpbmZvX2FsbCgpLiAgY29ubi0+d2hpY2hhZGRyIGlzIHRoZQogCQkJ CSAqIG5leHQgb25lIHRvIHRyeS4KIAkJCQkgKgogCQkJCSAqIFRoZSBleHRyYSBsZXZlbCBvZiBi cmFjZXMgaGVyZSBpcyBoaXN0b3JpY2FsLiAgSXQncyBub3QKIAkJCQkgKiB3b3J0aCByZWluZGVu dGluZyB0aGlzIHdob2xlIHN3aXRjaCBjYXNlIHRvIHJlbW92ZSAnZW0uCiAJCQkJICovCiAJCQkJ ewotCQkJCQlzdHJ1Y3QgYWRkcmluZm8gKmFkZHJfY3VyID0gY29ubi0+YWRkcl9jdXI7CiAJCQkJ CWNoYXIJCWhvc3RfYWRkcltOSV9NQVhIT1NUXTsKKwkJCQkJQWRkckluZm8gICAqYWRkcl9jdXI7 CiAKIAkJCQkJLyoKIAkJCQkJICogQWR2YW5jZSB0byBuZXh0IHBvc3NpYmxlIGhvc3QsIGlmIHdl J3ZlIHRyaWVkIGFsbCBvZgogCQkJCQkgKiB0aGUgYWRkcmVzc2VzIGZvciB0aGUgY3VycmVudCBo b3N0LgogCQkJCQkgKi8KLQkJCQkJaWYgKGFkZHJfY3VyID09IE5VTEwpCisJCQkJCWlmIChjb25u LT53aGljaGFkZHIgPT0gY29ubi0+bmFkZHIpCiAJCQkJCXsKIAkJCQkJCWNvbm4tPnRyeV9uZXh0 X2hvc3QgPSB0cnVlOwogCQkJCQkJZ290byBrZWVwX2dvaW5nOwogCQkJCQl9CisJCQkJCWFkZHJf Y3VyID0gJmNvbm4tPmFkZHJbY29ubi0+d2hpY2hhZGRyXTsKIAogCQkJCQkvKiBSZW1lbWJlciBj dXJyZW50IGFkZHJlc3MgZm9yIHBvc3NpYmxlIHVzZSBsYXRlciAqLwotCQkJCQltZW1jcHkoJmNv bm4tPnJhZGRyLmFkZHIsIGFkZHJfY3VyLT5haV9hZGRyLAotCQkJCQkJICAgYWRkcl9jdXItPmFp X2FkZHJsZW4pOwotCQkJCQljb25uLT5yYWRkci5zYWxlbiA9IGFkZHJfY3VyLT5haV9hZGRybGVu OworCQkJCQltZW1jcHkoJmNvbm4tPnJhZGRyLCAmYWRkcl9jdXItPmFkZHIsIHNpemVvZihTb2Nr QWRkcikpOwogCiAJCQkJCS8qCiAJCQkJCSAqIFNldCBjb25uaXAsIHRvby4gIE5vdGUgd2UgcHVy cG9zZWx5IGlnbm9yZSBzdHJkdXAKQEAgLTI0OTQsNyArMjU5Miw3IEBAIGtlZXBfZ29pbmc6CQkJ CQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCQkJY29u bi0+Y29ubmlwID0gc3RyZHVwKGhvc3RfYWRkcik7CiAKIAkJCQkJLyogVHJ5IHRvIGNyZWF0ZSB0 aGUgc29ja2V0ICovCi0JCQkJCWNvbm4tPnNvY2sgPSBzb2NrZXQoYWRkcl9jdXItPmFpX2ZhbWls eSwgU09DS19TVFJFQU0sIDApOworCQkJCQljb25uLT5zb2NrID0gc29ja2V0KGFkZHJfY3VyLT5m YW1pbHksIFNPQ0tfU1RSRUFNLCAwKTsKIAkJCQkJaWYgKGNvbm4tPnNvY2sgPT0gUEdJTlZBTElE X1NPQ0tFVCkKIAkJCQkJewogCQkJCQkJaW50CQkJZXJyb3JubyA9IFNPQ0tfRVJSTk87CkBAIC0y NTA1LDcgKzI2MDMsNyBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRv IGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJCQkJCSAqIGNhc2VzIHdoZXJlIHRoZSBhZGRyZXNzIGxp c3QgaW5jbHVkZXMgYm90aCBJUHY0IGFuZAogCQkJCQkJICogSVB2NiBidXQga2VybmVsIG9ubHkg YWNjZXB0cyBvbmUgZmFtaWx5LgogCQkJCQkJICovCi0JCQkJCQlpZiAoYWRkcl9jdXItPmFpX25l eHQgIT0gTlVMTCB8fAorCQkJCQkJaWYgKGNvbm4tPndoaWNoYWRkciA8IGNvbm4tPm5hZGRyIHx8 CiAJCQkJCQkJY29ubi0+d2hpY2hob3N0ICsgMSA8IGNvbm4tPm5jb25uaG9zdCkKIAkJCQkJCXsK IAkJCQkJCQljb25uLT50cnlfbmV4dF9hZGRyID0gdHJ1ZTsKQEAgLTI1MzEsNyArMjYyOSw3IEBA IGtlZXBfZ29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVy ZSBpcwogCQkJCQkgKiBUQ1Agc29ja2V0cywgbm9uYmxvY2sgbW9kZSwgY2xvc2Utb24tZXhlYy4g IFRyeSB0aGUKIAkJCQkJICogbmV4dCBhZGRyZXNzIGlmIGFueSBvZiB0aGlzIGZhaWxzLgogCQkJ CQkgKi8KLQkJCQkJaWYgKGFkZHJfY3VyLT5haV9mYW1pbHkgIT0gQUZfVU5JWCkKKwkJCQkJaWYg KGFkZHJfY3VyLT5mYW1pbHkgIT0gQUZfVU5JWCkKIAkJCQkJewogCQkJCQkJaWYgKCFjb25uZWN0 Tm9EZWxheShjb25uKSkKIAkJCQkJCXsKQEAgLTI1NTgsNyArMjY1Niw3IEBAIGtlZXBfZ29pbmc6 CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCQl9 CiAjZW5kaWYJCQkJCQkJLyogRl9TRVRGRCAqLwogCi0JCQkJCWlmIChhZGRyX2N1ci0+YWlfZmFt aWx5ICE9IEFGX1VOSVgpCisJCQkJCWlmIChhZGRyX2N1ci0+ZmFtaWx5ICE9IEFGX1VOSVgpCiAJ CQkJCXsKICNpZm5kZWYgV0lOMzIKIAkJCQkJCWludAkJCW9uID0gMTsKQEAgLTI2NTAsOCArMjc0 OCw4IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRp bCB0aGVyZSBpcwogCQkJCQkgKiBTdGFydC9tYWtlIGNvbm5lY3Rpb24uICBUaGlzIHNob3VsZCBu b3QgYmxvY2ssIHNpbmNlIHdlCiAJCQkJCSAqIGFyZSBpbiBub25ibG9jayBtb2RlLiAgSWYgaXQg ZG9lcywgd2VsbCwgdG9vIGJhZC4KIAkJCQkJICovCi0JCQkJCWlmIChjb25uZWN0KGNvbm4tPnNv Y2ssIGFkZHJfY3VyLT5haV9hZGRyLAotCQkJCQkJCQlhZGRyX2N1ci0+YWlfYWRkcmxlbikgPCAw KQorCQkJCQlpZiAoY29ubmVjdChjb25uLT5zb2NrLCAoc3RydWN0IHNvY2thZGRyICopICZhZGRy X2N1ci0+YWRkci5hZGRyLAorCQkJCQkJCQlhZGRyX2N1ci0+YWRkci5zYWxlbikgPCAwKQogCQkJ CQl7CiAJCQkJCQlpZiAoU09DS19FUlJOTyA9PSBFSU5QUk9HUkVTUyB8fAogI2lmZGVmIFdJTjMy CkBAIC00MDM1LDEyICs0MTMzLDY4IEBAIGZyZWVQR2Nvbm4oUEdjb25uICpjb25uKQogCWZyZWUo Y29ubi0+b3V0QnVmZmVyKTsKIAlmcmVlKGNvbm4tPnJvd0J1Zik7CiAJZnJlZShjb25uLT50YXJn ZXRfc2Vzc2lvbl9hdHRycyk7CisJZnJlZShjb25uLT5sb2FkX2JhbGFuY2VfaG9zdHMpOworCWZy ZWUoY29ubi0+cmFuZG9tc2VlZCk7CiAJdGVybVBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3Nh Z2UpOwogCXRlcm1QUUV4cEJ1ZmZlcigmY29ubi0+d29ya0J1ZmZlcik7CiAKIAlmcmVlKGNvbm4p OwogfQogCisvKgorICogQ29waWVzIG92ZXIgdGhlIEFkZHJJbmZvcyBmcm9tIGFkZHJsaXN0IHRv IHRoZSBQR2Nvbm4uCisgKi8KK3N0YXRpYyBib29sCitzdG9yZV9jb25uX2FkZHJpbmZvKFBHY29u biAqY29ubiwgc3RydWN0IGFkZHJpbmZvICphZGRybGlzdCkKK3sKKwlzdHJ1Y3QgYWRkcmluZm8g KmFpID0gYWRkcmxpc3Q7CisKKwljb25uLT53aGljaGFkZHIgPSAwOworCisJY29ubi0+bmFkZHIg PSAwOworCXdoaWxlIChhaSkKKwl7CisJCWFpID0gYWktPmFpX25leHQ7CisJCWNvbm4tPm5hZGRy Kys7CisJfQorCisJY29ubi0+YWRkciA9IGNhbGxvYyhjb25uLT5uYWRkciwgc2l6ZW9mKEFkZHJJ bmZvKSk7CisJaWYgKGNvbm4tPmFkZHIgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCisJYWkg PSBhZGRybGlzdDsKKwlmb3IgKGludCBpID0gMDsgaSA8IGNvbm4tPm5hZGRyOyBpKyspCisJewor CQljb25uLT5hZGRyW2ldLmZhbWlseSA9IGFpLT5haV9mYW1pbHk7CisKKwkJbWVtY3B5KCZjb25u LT5hZGRyW2ldLmFkZHIuYWRkciwgYWktPmFpX2FkZHIsCisJCQkgICBhaS0+YWlfYWRkcmxlbik7 CisJCWNvbm4tPmFkZHJbaV0uYWRkci5zYWxlbiA9IGFpLT5haV9hZGRybGVuOworCQlhaSA9IGFp LT5haV9uZXh0OworCX0KKworCWlmIChjb25uLT5sb2FkX2JhbGFuY2VfdHlwZSA9PSBMT0FEX0JB TEFOQ0VfUkFORE9NKQorCXsKKwkJLyoKKwkJICogU2h1ZmZsZSBhZGRyIHdpdGggYSBEdXJzdGVu ZmVsZC9LbnV0aCB2ZXJzaW9uIG9mIHRoZSBGaXNoZXItWWF0ZXMKKwkJICogc2h1ZmZsZS4gU291 cmNlOgorCQkgKiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9GaXNoZXIlRTIlODAlOTNZ YXRlc19zaHVmZmxlI1RoZV9tb2Rlcm5fYWxnb3JpdGhtCisJCSAqCisJCSAqIFdlIGRvbid0IG5l ZWQgdG8gaW5pdGlhbGl6ZSBjb25uLT5wcm5nX3N0YXRlIGhlcmUsIGJlY2F1c2UgdGhhdAorCQkg KiBhbHJlYWR5IGhhcHBlbmVkIGluIGNvbm5lY3RPcHRpb25zMi4KKwkJICovCisJCWZvciAoaW50 IGkgPSBjb25uLT5uYWRkciAtIDE7IGkgPiAwOyBpLS0pCisJCXsKKwkJCWludAkJCWogPSBwZ19w cm5nX3VpbnQ2NF9yYW5nZSgmY29ubi0+cHJuZ19zdGF0ZSwgMCwgaSk7CisJCQlBZGRySW5mbwl0 ZW1wID0gY29ubi0+YWRkcltqXTsKKworCQkJY29ubi0+YWRkcltqXSA9IGNvbm4tPmFkZHJbaV07 CisJCQljb25uLT5hZGRyW2ldID0gdGVtcDsKKwkJfQorCX0KKwlyZXR1cm4gdHJ1ZTsKK30KKwog LyoKICAqIHJlbGVhc2VfY29ubl9hZGRyaW5mbwogICoJIC0gRnJlZSBhbnkgYWRkcmluZm8gbGlz dCBpbiB0aGUgUEdjb25uLgpAQCAtNDA0OCwxMSArNDIwMiwxMCBAQCBmcmVlUEdjb25uKFBHY29u biAqY29ubikKIHN0YXRpYyB2b2lkCiByZWxlYXNlX2Nvbm5fYWRkcmluZm8oUEdjb25uICpjb25u KQogewotCWlmIChjb25uLT5hZGRybGlzdCkKKwlpZiAoY29ubi0+YWRkcikKIAl7Ci0JCXBnX2Zy ZWVhZGRyaW5mb19hbGwoY29ubi0+YWRkcmxpc3RfZmFtaWx5LCBjb25uLT5hZGRybGlzdCk7Ci0J CWNvbm4tPmFkZHJsaXN0ID0gTlVMTDsKLQkJY29ubi0+YWRkcl9jdXIgPSBOVUxMOwkvKiBmb3Ig c2FmZXR5ICovCisJCWZyZWUoY29ubi0+YWRkcik7CisJCWNvbm4tPmFkZHIgPSBOVUxMOwogCX0K IH0KIApkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmggYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaAppbmRleCA3MTJkNTcyMzczLi44NmRkMWQ2ZDQw IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaAorKysgYi9zcmMv aW50ZXJmYWNlcy9saWJwcS9saWJwcS1pbnQuaApAQCAtODIsNiArODIsOCBAQCB0eXBlZGVmIHN0 cnVjdAogI2VuZGlmCiAjZW5kaWYJCQkJCQkJLyogVVNFX09QRU5TU0wgKi8KIAorI2luY2x1ZGUg ImNvbW1vbi9wZ19wcm5nLmgiCisKIC8qCiAgKiBQT1NUR1JFUyBiYWNrZW5kIGRlcGVuZGVudCBD b25zdGFudHMuCiAgKi8KQEAgLTI0Miw2ICsyNDQsMTMgQEAgdHlwZWRlZiBlbnVtCiAJU0VSVkVS X1RZUEVfUFJFRkVSX1NUQU5EQllfUEFTUzIJLyogc2Vjb25kIHBhc3MgLSBiZWhhdmVzIHNhbWUg YXMgQU5ZICovCiB9IFBHVGFyZ2V0U2VydmVyVHlwZTsKIAorLyogVGFyZ2V0IHNlcnZlciB0eXBl IChkZWNvZGVkIHZhbHVlIG9mIGxvYWRfYmFsYW5jZV9ob3N0cykgKi8KK3R5cGVkZWYgZW51bQor eworCUxPQURfQkFMQU5DRV9ESVNBQkxFID0gMCwJLyogVXNlIHRoZSBleGlzdGluZyBob3N0IG9y ZGVyIChkZWZhdWx0KSAqLworCUxPQURfQkFMQU5DRV9SQU5ET00sCQkvKiBSZWFkLXdyaXRlIHNl cnZlciAqLworfQkJCVBHTG9hZEJhbGFuY2VUeXBlOworCiAvKiBCb29sZWFuIHZhbHVlIHBsdXMg YSBub3Qta25vd24gc3RhdGUsIGZvciBHVUNzIHdlIG1pZ2h0IGhhdmUgdG8gZmV0Y2ggKi8KIHR5 cGVkZWYgZW51bQogewpAQCAtMzk2LDYgKzQwNSw4IEBAIHN0cnVjdCBwZ19jb25uCiAJY2hhcgkg ICAqc3NsX21pbl9wcm90b2NvbF92ZXJzaW9uOwkvKiBtaW5pbXVtIFRMUyBwcm90b2NvbCB2ZXJz aW9uICovCiAJY2hhcgkgICAqc3NsX21heF9wcm90b2NvbF92ZXJzaW9uOwkvKiBtYXhpbXVtIFRM UyBwcm90b2NvbCB2ZXJzaW9uICovCiAJY2hhcgkgICAqdGFyZ2V0X3Nlc3Npb25fYXR0cnM7CS8q IGRlc2lyZWQgc2Vzc2lvbiBwcm9wZXJ0aWVzICovCisJY2hhcgkgICAqbG9hZF9iYWxhbmNlX2hv c3RzOyAvKiBsb2FkIGJhbGFuY2Ugb3ZlciBob3N0cyAqLworCWNoYXIJICAgKnJhbmRvbXNlZWQ7 CQkvKiBzZWVkIGZvciByYW5kb21pemF0aW9uIG9mIGxvYWQgYmFsYW5jaW5nICovCiAKIAkvKiBP cHRpb25hbCBmaWxlIHRvIHdyaXRlIHRyYWNlIGluZm8gdG8gKi8KIAlGSUxFCSAgICpQZmRlYnVn OwpAQCAtNDU5LDEwICs0NzAsMTQgQEAgc3RydWN0IHBnX2Nvbm4KIAogCS8qIFRyYW5zaWVudCBz dGF0ZSBuZWVkZWQgd2hpbGUgZXN0YWJsaXNoaW5nIGNvbm5lY3Rpb24gKi8KIAlQR1RhcmdldFNl cnZlclR5cGUgdGFyZ2V0X3NlcnZlcl90eXBlOwkvKiBkZXNpcmVkIHNlc3Npb24gcHJvcGVydGll cyAqLworCVBHTG9hZEJhbGFuY2VUeXBlIGxvYWRfYmFsYW5jZV90eXBlOwkvKiBkZXNpcmVkIGxv YWQgYmFsYW5jaW5nCisJCQkJCQkJCQkJCSAqIGFsZ29yaXRobSAqLwogCWJvb2wJCXRyeV9uZXh0 X2FkZHI7CS8qIHRpbWUgdG8gYWR2YW5jZSB0byBuZXh0IGFkZHJlc3MvaG9zdD8gKi8KIAlib29s CQl0cnlfbmV4dF9ob3N0OwkvKiB0aW1lIHRvIGFkdmFuY2UgdG8gbmV4dCBjb25uaG9zdFtdPyAq LwotCXN0cnVjdCBhZGRyaW5mbyAqYWRkcmxpc3Q7CS8qIGxpc3Qgb2YgYWRkcmVzc2VzIGZvciBj dXJyZW50IGNvbm5ob3N0ICovCi0Jc3RydWN0IGFkZHJpbmZvICphZGRyX2N1cjsJLyogdGhlIG9u ZSBjdXJyZW50bHkgYmVpbmcgdHJpZWQgKi8KKwlpbnQJCQluYWRkcjsJCQkvKiBudW1iZXIgb2Yg YWRkcmVzc2VzIHJldHVybmVkIGJ5IGdldGFkZHJpbmZvICovCisJaW50CQkJd2hpY2hhZGRyOwkJ LyogdGhlIGFkZHJlc3MgY3VycmVudGx5IGJlaW5nIHRyaWVkICovCisJQWRkckluZm8gICAqYWRk cjsJCQkvKiB0aGUgYXJyYXkgb2YgYWRkcmVzc2VzIGZvciB0aGUgY3VycmVudGx5CisJCQkJCQkJ CSAqIHRyaWVkIGhvc3QgKi8KIAlpbnQJCQlhZGRybGlzdF9mYW1pbHk7CS8qIG5lZWRlZCB0byBr bm93IGhvdyB0byBmcmVlIGFkZHJsaXN0ICovCiAJYm9vbAkJc2VuZF9hcHBuYW1lOwkvKiBva2F5 IHRvIHNlbmQgYXBwbGljYXRpb25fbmFtZT8gKi8KIApAQCAtNDc3LDYgKzQ5Miw4IEBAIHN0cnVj dCBwZ19jb25uCiAJUEdWZXJib3NpdHkgdmVyYm9zaXR5OwkJLyogZXJyb3Ivbm90aWNlIG1lc3Nh Z2UgdmVyYm9zaXR5ICovCiAJUEdDb250ZXh0VmlzaWJpbGl0eSBzaG93X2NvbnRleHQ7CS8qIHdo ZXRoZXIgdG8gc2hvdyBDT05URVhUIGZpZWxkICovCiAJUEdsb2JqZnVuY3MgKmxvYmpmdW5jczsJ CS8qIHByaXZhdGUgc3RhdGUgZm9yIGxhcmdlLW9iamVjdCBhY2Nlc3MgZm5zICovCisJcGdfcHJu Z19zdGF0ZSBwcm5nX3N0YXRlOwkvKiBwcm5nIHN0YXRlIGZvciBsb2FkIGJhbGFuY2luZyBjb25u ZWN0aW9ucyAqLworCiAKIAkvKiBCdWZmZXIgZm9yIGRhdGEgcmVjZWl2ZWQgZnJvbSBiYWNrZW5k IGFuZCBub3QgeWV0IHByb2Nlc3NlZCAqLwogCWNoYXIJICAgKmluQnVmZmVyOwkJLyogY3VycmVu dGx5IGFsbG9jYXRlZCBidWZmZXIgKi8KZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBx L21lc29uLmJ1aWxkIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbWVzb24uYnVpbGQKaW5kZXggNTcz ZmQ5YjZlYS4uNTJiMzI3NTAwYyAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbWVz b24uYnVpbGQKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvbWVzb24uYnVpbGQKQEAgLTExNiw2 ICsxMTYsNyBAQCB0ZXN0cyArPSB7CiAgICAgJ3Rlc3RzJzogWwogICAgICAgJ3QvMDAxX3VyaS5w bCcsCiAgICAgICAndC8wMDJfYXBpLnBsJywKKyAgICAgICd0LzAwM19sb2FkYmFsYW5jZS5wbCcs CiAgICAgXSwKICAgICAnZW52Jzogeyd3aXRoX3NzbCc6IGdldF9vcHRpb24oJ3NzbCcpfSwKICAg fSwKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL3QvMDAzX2xvYWRiYWxhbmNlLnBs IGIvc3JjL2ludGVyZmFjZXMvbGlicHEvdC8wMDNfbG9hZGJhbGFuY2UucGwKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMWI0ZThmZDgxMwotLS0gL2Rldi9udWxsCisrKyBi L3NyYy9pbnRlcmZhY2VzL2xpYnBxL3QvMDAzX2xvYWRiYWxhbmNlLnBsCkBAIC0wLDAgKzEsMTY3 IEBACisjIENvcHlyaWdodCAoYykgMjAyMywgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQg R3JvdXAKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgQ29uZmlnOwordXNlIFBvc3Rn cmVTUUw6OlRlc3Q6OlV0aWxzOwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2Ug RmlsZTo6U3BlYzo6RnVuY3Rpb25zICdjYXRmaWxlJzsKK3VzZSBUZXN0OjpNb3JlOworCisjIFRo aXMgdGVzdHMgdHdvIGRpZmZlcmVudCBtZXRob2RzIG9mIGxvYWQgYmFsYW5jaW5nIGZyb20gbGli cHEKKyMgMS4gTG9hZCBiYWxhbmNpbmcgYnkgcHJvdmlkaW5nIG11bHRpcGxlIGhvc3QgYW5kIHBv cnQgY29tYmluYXRpb25zIGluIHRoZQorIyAgICBsaWJwcSBjb25uZWN0aW9uIHN0cmluZy4KKyMg Mi4gQnkgdXNpbmcgYSBob3N0cyBmaWxlIHdoZXJlIGhvc3RuYW1lIG1hcHMgdG8gbXVsdGlwbGUg ZGlmZmVyZW50IElQCisjICAgIGFkZHJlc3Nlcy4gUmVndWxhciBQb3N0Z3JlcyB1c2VycyB3b3Vs ZG4ndCB1c3VhbGx5IHVzZSBzdWNoIGEgaG9zdCBmaWxlLAorIyAgICBidXQgdGhpcyBpcyB0aGUg ZWFzaWVzdCB3YXkgdG8gaW1taXRhdGUgYmVoYXZpb3VyIG9mIGEgRE5TIHNlcnZlciB0aGF0Cisj ICAgIHJldHVybnMgbXVsdGlwbGUgSVAgYWRkcmVzc2VzIGZvciB0aGUgc2FtZSBETlMgcmVjb3Jk LgorIworIyBUZXN0aW5nIG1ldGhvZCAxIGlzIHN1cHBvcnRlZCBvbiBhbGwgcGxhdGZvcm1zIGFu ZCB3b3JrcyBvdXQgb2YgdGhlIGJveC4gQnV0CisjIHRlc3RpbmcgbWV0aG9kIDIgaGFzIHNvbWUg bW9yZSByZXF1aXJlbWVudHMsIGJvdGggb24gdGhlIHBsYXRmb3JtIGFuZCBvbiB0aGUKKyMgaW5p dGlhbCBzZXR1cC4gSWYgYW55IG9mIHRoZXNlIHJlcXVpcmVtZW50cyBhcmUgbm90IG1ldCwgdGhl biBtZXRob2QgMiBpcworIyBzaW1wbHkgbm90IHRlc3RlZC4KKyMKKyMgVGhlIHJlcXVpcmVtZW50 cyB0byB0ZXN0IG1ldGhvZCAyIGFyZSBhcyBmb2xsb3dzOgorIyAxLiBXaW5kb3dzIG9yIExpbnV4 IHNob3VsZCBiZSB1c2VkLgorIyAyLiBUaGUgT1MgaG9zdHMgZmlsZSBhdCAvZXRjL2hvc3RzIG9y IGM6XFdpbmRvd3NcU3lzdGVtMzJcRHJpdmVyc1xldGNcaG9zdHMKKyMgICAgc2hvdWxkIGNvbnRh aW4gdGhlIGZvbGxvd2luZyBjb250ZW50czoKKyMKKyMgMTI3LjAuMC4xIHBnLWxvYWRiYWxhbmNl dGVzdAorIyAxMjcuMC4wLjIgcGctbG9hZGJhbGFuY2V0ZXN0CisjIDEyNy4wLjAuMyBwZy1sb2Fk YmFsYW5jZXRlc3QKKyMKKyMKKyMgV2luZG93cyBvciBMaW51eCBhcmUgcmVxdWlyZWQgdG8gdGVz dCBtZXRob2QgMiBiZWNhdXNlIHRoZXNlIE9TZXMgYWxsb3cKKyMgYmluZGluZyB0byAxMjcuMC4w LjIgYW5kIDEyNy4wLjAuMyBhZGRyZXNlc3MgYnkgZGVmYXVsdCwgYnV0IG90aGVyIE9TZXMKKyMg ZG9uJ3QuIFdlIG5lZWQgdG8gYmluZCB0byBkaWZmZXJlbnQgSVAgYWRkcmVzc2VzLCBzbyB0aGF0 IHdlIGNhbiB1c2UgdGhlc2UKKyMgZGlmZmVyZW50IElQIGFkZHJlc3NlcyBpbiB0aGUgaG9zdHMg ZmlsZS4KKyMKKyMgVGhlIGhvc3RzIGZpbGUgbmVlZHMgdG8gYmUgcHJlcGFyZWQgYmVmb3JlIHJ1 bm5pbmcgdGhpcyB0ZXN0LiBXZSBkb24ndCBkbyBpdAorIyBvbiB0aGUgZmx5LCBiZWNhdXNlIGl0 IHJlcXVpcmVzIHJvb3QgcGVybWlzc2lvbnMgdG8gY2hhbmdlIHRoZSBob3N0cyBmaWxlLiBJbgor IyBDSSB3ZSBzZXQgdXAgdGhlIHByZXZpb3VzbHkgbWVudGlvbmVkIHJ1bGVzIGluIHRoZSBob3N0 cyBmaWxlLCBzbyB0aGF0IHRoaXMKKyMgbG9hZCBiYWxhbmNpbmcgbWV0aG9kIGlzIHRlc3RlZC4K KworCisjIENsdXN0ZXIgc2V0dXAgd2hpY2ggaXMgc2hhcmVkIGZvciB0ZXN0aW5nIGJvdGggbG9h ZCBiYWxhbmNpbmcgbWV0aG9kcworbXkgJGNhbl9iaW5kX3RvXzEyN18wXzBfMiA9ICRDb25maWd7 b3NuYW1lfSBlcSAnbGludXgnIHx8ICRQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6d2luZG93c19v czsKKworaWYgKCRjYW5fYmluZF90b18xMjdfMF8wXzIpCit7CisJJFBvc3RncmVTUUw6OlRlc3Q6 OkNsdXN0ZXI6OnVzZV90Y3AgPSAxOworCSRQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyOjp0ZXN0 X3BnaG9zdCA9ICcxMjcuMC4wLjEnOworfQorbXkgJHBvcnQgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyOjpnZXRfZnJlZV9wb3J0KCk7CitteSAkbm9kZTEgPSBQb3N0Z3JlU1FMOjpUZXN0OjpD bHVzdGVyLT5uZXcoJ25vZGUxJywgcG9ydCA9PiAkcG9ydCk7CitteSAkbm9kZTIgPSBQb3N0Z3Jl U1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUyJywgcG9ydCA9PiAkcG9ydCwgb3duX2hvc3Qg PT4gMSk7CitteSAkbm9kZTMgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ25vZGUz JywgcG9ydCA9PiAkcG9ydCwgb3duX2hvc3QgPT4gMSk7CisKKyMgQ3JlYXRlIGEgZGF0YSBkaXJl Y3Rvcnkgd2l0aCBpbml0ZGIKKyRub2RlMS0+aW5pdCgpOworJG5vZGUyLT5pbml0KCk7Ciskbm9k ZTMtPmluaXQoKTsKKworIyBTdGFydCB0aGUgUG9zdGdyZVNRTCBzZXJ2ZXIKKyRub2RlMS0+c3Rh cnQoKTsKKyRub2RlMi0+c3RhcnQoKTsKKyRub2RlMy0+c3RhcnQoKTsKKworIyBTdGFydCB0aGUg dGVzdHMgZm9yIGxvYWQgYmFsYW5jaW5nIG1ldGhvZCAxCitteSAkaG9zdGxpc3QgPSAkbm9kZTEt Pmhvc3QgLiAnLCcgLiAkbm9kZTItPmhvc3QgLiAnLCcgLiAkbm9kZTMtPmhvc3Q7CitteSAkcG9y dGxpc3QgPSAiJHBvcnQsJHBvcnQsJHBvcnQiOworCiskbm9kZTEtPmNvbm5lY3Rfb2soImhvc3Q9 JGhvc3RsaXN0IHBvcnQ9JHBvcnRsaXN0IGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20gcmFuZG9t X3NlZWQ9MTIzIiwKKwkic2VlZCAxMjMgc2VsZWN0cyBub2RlIDEgZmlyc3QiLAorCXNxbCA9PiAi U0VMRUNUICdjb25uZWN0MSciLAorCWxvZ19saWtlID0+IFtxci9zdGF0ZW1lbnQ6IFNFTEVDVCAn Y29ubmVjdDEnL10pOworCiskbm9kZTItPmNvbm5lY3Rfb2soImhvc3Q9JGhvc3RsaXN0IHBvcnQ9 JHBvcnRsaXN0IGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20gcmFuZG9tX3NlZWQ9MTIzIiwKKwki c2VlZCAxMjMgZG9lcyBub3Qgc2VsZWN0IG5vZGUgMiBmaXJzdCIsCisJc3FsID0+ICJTRUxFQ1Qg J2Nvbm5lY3QxJyIsCisJbG9nX3VubGlrZSA9PiBbcXIvc3RhdGVtZW50OiBTRUxFQ1QgJ2Nvbm5l Y3QxJy9dKTsKKworJG5vZGUzLT5jb25uZWN0X29rKCJob3N0PSRob3N0bGlzdCBwb3J0PSRwb3J0 bGlzdCBsb2FkX2JhbGFuY2VfaG9zdHM9cmFuZG9tIHJhbmRvbV9zZWVkPTEyMyIsCisJInNlZWQg MTIzIGRvZXMgbm90IHNlbGVjdCBub2RlIDMgZmlyc3QiLAorCXNxbCA9PiAiU0VMRUNUICdjb25u ZWN0MSciLAorCWxvZ191bmxpa2UgPT4gW3FyL3N0YXRlbWVudDogU0VMRUNUICdjb25uZWN0MScv XSk7CisKKyRub2RlMy0+Y29ubmVjdF9vaygiaG9zdD0kaG9zdGxpc3QgcG9ydD0kcG9ydGxpc3Qg bG9hZF9iYWxhbmNlX2hvc3RzPXJhbmRvbSByYW5kb21fc2VlZD00MiIsCisJInNlZWQgNDIgc2Vs ZWN0cyBub2RlIDMgZmlyc3QiLAorCXNxbCA9PiAiU0VMRUNUICdjb25uZWN0MiciLAorCWxvZ19s aWtlID0+IFtxci9zdGF0ZW1lbnQ6IFNFTEVDVCAnY29ubmVjdDInL10pOworCiskbm9kZTEtPmNv bm5lY3Rfb2soImhvc3Q9JGhvc3RsaXN0IHBvcnQ9JHBvcnRsaXN0IGxvYWRfYmFsYW5jZV9ob3N0 cz1yYW5kb20gcmFuZG9tX3NlZWQ9NDIiLAorCSJzZWVkIDQyIGRvZXMgbm90IHNlbGVjdCBub2Rl IDEgZmlyc3QiLAorCXNxbCA9PiAiU0VMRUNUICdjb25uZWN0MiciLAorCWxvZ191bmxpa2UgPT4g W3FyL3N0YXRlbWVudDogU0VMRUNUICdjb25uZWN0MicvXSk7CisKKyRub2RlMi0+Y29ubmVjdF9v aygiaG9zdD0kaG9zdGxpc3QgcG9ydD0kcG9ydGxpc3QgbG9hZF9iYWxhbmNlX2hvc3RzPXJhbmRv bSByYW5kb21fc2VlZD00MiIsCisJInNlZWQgNDIgZG9lcyBub3Qgc2VsZWN0IG5vZGUgMiBmaXJz dCIsCisJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QyJyIsCisJbG9nX3VubGlrZSA9PiBbcXIvc3Rh dGVtZW50OiBTRUxFQ1QgJ2Nvbm5lY3QyJy9dKTsKKworJG5vZGUzLT5zdG9wKCk7CisKKyRub2Rl MS0+Y29ubmVjdF9vaygiaG9zdD0kaG9zdGxpc3QgcG9ydD0kcG9ydGxpc3QgbG9hZF9iYWxhbmNl X2hvc3RzPXJhbmRvbSByYW5kb21fc2VlZD00MiIsCisJInNlZWQgNDIgZG9lcyBzZWxlY3Qgbm9k ZSAxIHNlY29uZCIsCisJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3QzJyIsCisJbG9nX2xpa2UgPT4g W3FyL3N0YXRlbWVudDogU0VMRUNUICdjb25uZWN0MycvXSk7CisKKyRub2RlMi0+Y29ubmVjdF9v aygiaG9zdD0kaG9zdGxpc3QgcG9ydD0kcG9ydGxpc3QgbG9hZF9iYWxhbmNlX2hvc3RzPXJhbmRv bSByYW5kb21fc2VlZD00MiIsCisJInNlZWQgNDIgZG9lcyBub3Qgc2VsZWN0IG5vZGUgMiBzZWNv bmQiLAorCXNxbCA9PiAiU0VMRUNUICdjb25uZWN0MyciLAorCWxvZ191bmxpa2UgPT4gW3FyL3N0 YXRlbWVudDogU0VMRUNUICdjb25uZWN0MycvXSk7CisKKyRub2RlMy0+c3RhcnQoKTsKKworIyBD aGVja3MgZm9yIHRoZSByZXF1aXJlbWVudHMgZm9yIHRlc3RpbmcgbG9hZCBiYWxhbmNpbmcgbWV0 aG9kIDIKK2lmICghJGNhbl9iaW5kX3RvXzEyN18wXzBfMikgeworCSMgVGhlIE9TIHJlcXVpcmVt ZW50IGlzIG5vdCBtZXQKKwlkb25lX3Rlc3RpbmcoKTsKKwlleGl0OworfQorCitteSAkaG9zdHNf cGF0aDsKK2lmICgkd2luZG93c19vcykgeworCSRob3N0c19wYXRoID0gJ2M6XFdpbmRvd3NcU3lz dGVtMzJcRHJpdmVyc1xldGNcaG9zdHMnOworfQorZWxzZQoreworCSRob3N0c19wYXRoID0gJy9l dGMvaG9zdHMnOworfQorCitteSAkaG9zdHNfY29udGVudCA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0 aWxzOjpzbHVycF9maWxlKCRob3N0c19wYXRoKTsKKworaWYgKCRob3N0c19jb250ZW50ICF+IG0v cGctbG9hZGJhbGFuY2V0ZXN0LykgeworCSMgSG9zdCBmaWxlIGlzIG5vdCBwcmVwYXJlZCBmb3Ig dGhpcyB0ZXN0CisJZG9uZV90ZXN0aW5nKCk7CisJZXhpdDsKK30KKworIyBTdGFydCB0aGUgdGVz dHMgZm9yIGxvYWQgYmFsYW5jaW5nIG1ldGhvZCAyCiskbm9kZTItPmNvbm5lY3Rfb2soImhvc3Q9 cGctbG9hZGJhbGFuY2V0ZXN0IHBvcnQ9JHBvcnQgbG9hZF9iYWxhbmNlX2hvc3RzPXJhbmRvbSBy YW5kb21fc2VlZD00NCIsCisJInNlZWQgNDQgc2VsZWN0cyBub2RlIDIgZmlyc3QiLAorCXNxbCA9 PiAiU0VMRUNUICdjb25uZWN0NCciLAorCWxvZ19saWtlID0+IFtxci9zdGF0ZW1lbnQ6IFNFTEVD VCAnY29ubmVjdDQnL10pOworCiskbm9kZTEtPmNvbm5lY3Rfb2soImhvc3Q9cGctbG9hZGJhbGFu Y2V0ZXN0IHBvcnQ9JHBvcnQgbG9hZF9iYWxhbmNlX2hvc3RzPXJhbmRvbSByYW5kb21fc2VlZD00 NCIsCisJInNlZWQgNDQgZG9lcyBub3Qgc2VsZWN0IG5vZGUgMSBmaXJzdCIsCisJc3FsID0+ICJT RUxFQ1QgJ2Nvbm5lY3Q0JyIsCisJbG9nX3VubGlrZSA9PiBbcXIvc3RhdGVtZW50OiBTRUxFQ1Qg J2Nvbm5lY3Q0Jy9dKTsKKworJG5vZGUzLT5jb25uZWN0X29rKCJob3N0PXBnLWxvYWRiYWxhbmNl dGVzdCBwb3J0PSRwb3J0IGxvYWRfYmFsYW5jZV9ob3N0cz1yYW5kb20gcmFuZG9tX3NlZWQ9NDQi LAorCSJzZWVkIDQ0IGRvZXMgbm90IHNlbGVjdCBub2RlIDMgZmlyc3QiLAorCXNxbCA9PiAiU0VM RUNUICdjb25uZWN0NCciLAorCWxvZ191bmxpa2UgPT4gW3FyL3N0YXRlbWVudDogU0VMRUNUICdj b25uZWN0NCcvXSk7CisKKyRub2RlMi0+c3RvcCgpOworCiskbm9kZTEtPmNvbm5lY3Rfb2soImhv c3Q9cGctbG9hZGJhbGFuY2V0ZXN0IHBvcnQ9JHBvcnQgbG9hZF9iYWxhbmNlX2hvc3RzPXJhbmRv bSByYW5kb21fc2VlZD00NCIsCisJInNlZWQgNDQgZG9lcyBzZWxlY3Qgbm9kZSAxIHNlY29uZCIs CisJc3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3Q1JyIsCisJbG9nX2xpa2UgPT4gW3FyL3N0YXRlbWVu dDogU0VMRUNUICdjb25uZWN0NScvXSk7CisKKyRub2RlMy0+Y29ubmVjdF9vaygiaG9zdD1wZy1s b2FkYmFsYW5jZXRlc3QgcG9ydD0kcG9ydCBsb2FkX2JhbGFuY2VfaG9zdHM9cmFuZG9tIHJhbmRv bV9zZWVkPTQ0IiwKKwkic2VlZCA0NCBkb2VzIG5vdCBzZWxlY3Qgbm9kZSAzIHNlY29uZCIsCisJ c3FsID0+ICJTRUxFQ1QgJ2Nvbm5lY3Q1JyIsCisJbG9nX3VubGlrZSA9PiBbcXIvc3RhdGVtZW50 OiBTRUxFQ1QgJ2Nvbm5lY3Q1Jy9dKTsKKworZG9uZV90ZXN0aW5nKCk7Ci0tIAoyLjM0LjEKCg== --_003_DBBPR83MB05079A565E6AB609104D3F9DF7FE9DBBPR83MB0507EURP_--