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 1ouuGd-0000um-AZ for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Nov 2022 11:38:16 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1ouuGb-0000iT-Ah for pgsql-hackers@arkaria.postgresql.org; Tue, 15 Nov 2022 11:38:13 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ouuGa-0000iJ-5x for pgsql-hackers@lists.postgresql.org; Tue, 15 Nov 2022 11:38:12 +0000 Received: from mail-db8eur05on20718.outbound.protection.outlook.com ([2a01:111:f400:7e1a::718] helo=EUR05-DB8-obe.outbound.protection.outlook.com) by makus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1ouuGW-0005aT-OV for pgsql-hackers@lists.postgresql.org; Tue, 15 Nov 2022 11:38:11 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EwAnNLaPdRzCH/b+K1sIcSynlHBiq4OtsFO38x+0oM/LvWOlNeu9DAwWs5fyfIY7TVSk5M3z6FPCx7ZCZV7ub6denV0bVNJKk9QUgTYs81g1lxH24US7/kE+P0RKH5cS//eI8TmljRQh4ObCVLPUXApKU8qV0bo4OTWvrp4hGmxT0GrLSAPbWih92F3+mrFSVBEQvR5C0vqvVf+n0YSEuE5hxosAPMbaI8IW6byKhApFXM3p0gweGQ3EpVTJl1WwLg/p3Nhc+9FzNApmBZhcJsA+ZTnOrMMXoj/pK8rkd0NjWknJIuV1s3aa7YHaoYmtTwt5BG01rK/bM68JSZRQ1g== 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=kED3HATg6450mQEcZVqWbfr2ETES4Z4PBGh5tItwLT8=; b=QqkBhS2Jhf3O/v69t32OsgNTBLCF8NSvi2MfgVcnuk3ilmztFdiICQttxuKgP+4XziBjH13au8TcLpud2z7CCFuUbc975IMjBpAUCBDsFUT8l+Sj9F8F6iWMb9j4wPYs/ZjCP07zTumyi2XYrlLuqlDwaQzXafpq2241KLmtSKuagOApbwEcNqnbI0OcItJ2G/QVsAhyd9Z6pfuKvgo7H+cWs6xwW4Z/nWLbJVJwHb4A16RAMucmv8bLNtfK9ooQfRanG6dKM1ul7XgpUYu0ab4ClIKyk2auElhUM1GP4JrgOS2PQV1lSrSRlEFkRaL8WXnfJdjFBQw3LdcLyghq7Q== 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=kED3HATg6450mQEcZVqWbfr2ETES4Z4PBGh5tItwLT8=; b=d9m4wj0tb6YAFghmQ1zu4DOTyAVG+UpcTtr4A1fa2j0ldCzn0GFVXhTvYHOBil0aUvc9A5er7j0xVN/HuX8jpaUCcx6mIzPe3KZDPKiWu9KLbJudQhPnn28sLLX3GInXYFrK+RoQIvlZrBpiluMhRlfPwTcqvsR/ZsVoZ+BSyfM= Received: from DBBPR83MB0507.EURPRD83.prod.outlook.com (2603:10a6:10:209::18) by VI1PR83MB0477.EURPRD83.prod.outlook.com (2603:10a6:800:194::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.5; Tue, 15 Nov 2022 11:38:00 +0000 Received: from DBBPR83MB0507.EURPRD83.prod.outlook.com ([fe80::98f9:f548:d8dd:dcd8]) by DBBPR83MB0507.EURPRD83.prod.outlook.com ([fe80::98f9:f548:d8dd:dcd8%8]) with mapi id 15.20.5834.005; Tue, 15 Nov 2022 11:38:00 +0000 From: Jelte Fennema To: Jacob Champion , Tom Lane CC: Andres Freund , Justin Pryzby , Robert Haas , "pgsql-hackers@lists.postgresql.org" Subject: Re: Add non-blocking version of PQcancel Thread-Topic: Add non-blocking version of PQcancel Thread-Index: AQHY+Oa3XzQjIvdKkE+tbSpJXnuUBA== Date: Tue, 15 Nov 2022 11:38:00 +0000 Message-ID: References: <20220324224909.4tnubqv2owmfoyoc@alap3.anarazel.de> <3453535.1648234019@sss.pgh.pa.us> <3457746.1648236890@sss.pgh.pa.us> <20220331054704.GL28503@telsasoft.com> <20220625013617.e4qvy6qlaukgvfpo@alap3.anarazel.de> <2906785.1663192411@sss.pgh.pa.us> <99e3d1c5-4dd7-70f1-a520-89288a3496c2@timescale.com> In-Reply-To: <99e3d1c5-4dd7-70f1-a520-89288a3496c2@timescale.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=2022-11-15T11:38:12.498Z;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_|VI1PR83MB0477:EE_ x-ms-office365-filtering-correlation-id: ced641f6-cfa7-4d64-7870-08dac6fdd9ad x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xmQx+Fq4WZBcE51C/cbtBt5D2B7eMEuw/o43lEdGwRS9JP9EbHqYPkfsPU2JMOuTTsNpmYpv2GqPnCt3Bov2Nf2oQRL1m7nlCto+BUFHmGGsrCAyBhDY1rfi8S5zWnpRuEsbIin+9qKg3GFQuLDnQPA6Wi+fdcDAbpn4U2s/0wWdAWD8oaKNS0al4uastp4BuXKLbHisE/A5+PD2tghTCqHb/4biRUffXpe0QwK5LyF2b04ohNug4wsve90gSappn8mWPdaGYXkEsNCWNYgAh7xiMlChg3ypptieSCTRlMP1OX+0wslgO2NhH0yZt6l78ir9ajV1AMjwvgonfsZ1bIakO4aRVe847bk5kSzNQpRL1qAQhOAaBulCe6g1ImR39km5lnqqsFLMrNseZbn0tMBuDUrL28cP++f+IZUg2LCLyzdjD7moT7bt+k5labCTsSACHBc+9Z7pDOEwdbNKwythCf0EvhRltvXw2NsXEkoes2gRRJcDdtJQP5GYQh/hkCZ70HEv3sCecFJzUZd1kbpnwd4NU/GBaj5qr9FYtr9/QSeSy4kleOrc02TV1nIdXCzkMNxLIP6LL7ml1/8y89z9U7yCz4dxEuJAcpGe1x1bMWhYbdrwy27c5KE+i0JuZc9NVfJ0Bwv/On8wvj6Zdet0NQ7tVyGXBObEQX/alRmeSKJRMXf4/6XCrYPsz0jbaAPIBnYNWvdZNK8ArSOs3279pUj7jwdDGt/qgJQgkwl+C5T4CnNjXpsov/IWoeOVmPSiDqfHAlGa/n12xwdEckxYXXiG73VOyWg4uvywqKj4GUvxRCSUHIz5hn7Frg/z 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)(396003)(376002)(366004)(136003)(39860400002)(346002)(451199015)(71200400001)(41300700001)(82950400001)(82960400001)(38100700002)(8936002)(8990500004)(52536014)(5660300002)(122000001)(99936003)(38070700005)(76116006)(4326008)(8676002)(66556008)(66946007)(66446008)(64756008)(66476007)(91956017)(478600001)(55016003)(186003)(2906002)(316002)(6506007)(7696005)(26005)(9686003)(54906003)(33656002)(110136005)(86362001)(10290500003)(558084003);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?eTufbSY9DFEafVWfvBOWr4aOIsGqcj99DBtTO9f30k//c6DClIhoF5/rtj?= =?iso-8859-1?Q?RRxMGc4rNJ0cQ+NqXBjONuJROly5zdsWRoDHi3mGyE0X3/f3MsV6BB4dpn?= =?iso-8859-1?Q?46ukU6e6vsbRXlPWLSDYuCPZetrpX9/eaopS3+XWVVGC9XCmJTP2MExm2J?= =?iso-8859-1?Q?M2UANL2LETZLpjZ4ns9H61XxIHPehhNAGNOAT94y9C9c9DuIgEZOgEdk0k?= =?iso-8859-1?Q?7dB/eNEQu8YYcRetBEgN0DeQxfJc3qRla1u91Zno1sFILDNBsOvPD6hhDh?= =?iso-8859-1?Q?jKZuDb3myndab74rKqXbRAQiULiRuwxmj4sQzOs9ZBXoIL8SNtCZlNF8Wz?= =?iso-8859-1?Q?pX/g4AkPq+JLjUE9LJpDHdaB/FILBseVHi17nn9sZpnpuoMrVJrROKkaKL?= =?iso-8859-1?Q?4wbYQKew6J7ELF0Z856isggUGeUL4VFaFOQL7GOuAuJoo4wBvIsu9Mwf4B?= =?iso-8859-1?Q?6XMgeSxB0eNjor+GBE0DdWzhfkdSrOdOEmAFZhUrxuc3+w0+iAUJNx+W5k?= =?iso-8859-1?Q?mq/vQ9n/CbBWaINUOR1tQGSTzsXTTkZsyRy1vNMcyPCQ9fAdTiMkmC70sP?= =?iso-8859-1?Q?iyHfa8Q86Go3LEZtqYhhsC48SnHA3fyo7bOvRN8FZ4Q+IfWvxVQlewaWJW?= =?iso-8859-1?Q?N/L1GiqtVG2g6U9xozjrsPm6Gr5OEZFPxMlzJx9qOGQPRFqxyD+9geXbMv?= =?iso-8859-1?Q?wOLee2/PX0SGLQXg9n0oQFRueM7AHe01YMlEG/hsQB1XDc9E+Kw1dZMMg6?= =?iso-8859-1?Q?HZ3pk7qE7KYTkBSJHA3WIO5FSeWIWsGzSBnYYRC0nnYPW4RtqtmOOiSB8i?= =?iso-8859-1?Q?9tB2Tnfr52NfXqWvw2kgJmw0cWa72Vrm5fXgHe+VbFd911WQmSBJ1pQVWZ?= =?iso-8859-1?Q?FF3ZlFeCnBQIclpB58CZY2Z2aFc0SRBDJtX68/07tRUKOl7rUEYkbPlSGY?= =?iso-8859-1?Q?ngx5fAc2LdcJvTeH+KJenfJ8QgLs4jEjbSghutIDZiLByn6ssV2wl1SNOr?= =?iso-8859-1?Q?YKfmL/q2A+NpyAa/RQmenzOv1LJe/9V812LcBNynIYRskDjk/TdvWk9vxU?= =?iso-8859-1?Q?/H/XwKUmUawde66zy7asC2E9NS2nrSoiRJeZ2hfAnuuAmt/vWYL/kY3U8M?= =?iso-8859-1?Q?s2pUe3jUWpCLagGgWFrKI6JlqkN34glgjFS47hR0Amd/HNN62ZugfuxVQ7?= =?iso-8859-1?Q?5B5cIgEAG0WagDlE+aC9KBeXtqo72xY/3IXCKJPpTwJbimGIbFHO1iNEBL?= =?iso-8859-1?Q?pq7SZToD5/ipUSqwzze87G76kj2kSQUKgU//0f1P1Q8jAxpE2hNnUw+itC?= =?iso-8859-1?Q?e9JSUvQedxnXYjpP+Q+ciDpf6H9de9G15/g4plN0UhBd0hPCKYuRKhNd8I?= =?iso-8859-1?Q?oB9zCpVtl66IduztjYtnt0WAuBai2Cu3AAixNQytBXjmYQzVIYY09GHKOS?= =?iso-8859-1?Q?piKh2Q5Zb7xQySx/GV64x+VFC70/bDQvvIUxnMMgJti36Hi41Sdz05Nrds?= =?iso-8859-1?Q?CHZUgTeJjx26B5C0ScG76DzLdguRixyaEuKsaM2QVrm8+Q8ZW3m8/qlZIz?= =?iso-8859-1?Q?CYJhnC8j8Noj5zCadUqNnGrSa85hEhIZngC2LJ3GxJhp8SKfJryAUIam3t?= =?iso-8859-1?Q?e6adribJutG2GvMjbF+uaJJw+DuEjGCEeI?= Content-Type: multipart/mixed; boundary="_002_DBBPR83MB0507E785FE96166AB8D9940BF7049DBBPR83MB0507EURP_" 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: ced641f6-cfa7-4d64-7870-08dac6fdd9ad X-MS-Exchange-CrossTenant-originalarrivaltime: 15 Nov 2022 11:38:00.6927 (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: HHFwzJt+BWCcWJdS0o9euIh0cXEFV9Ag1D7pEqB21lkiQ/jVm/91lBikz6qBpb5xjHc58RLySb92x3JG2S1oGw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR83MB0477 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_DBBPR83MB0507E785FE96166AB8D9940BF7049DBBPR83MB0507EURP_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Ugh, it indeed seems like I somehow messed up sending the new patch. =0A= Here's the correct one.= --_002_DBBPR83MB0507E785FE96166AB8D9940BF7049DBBPR83MB0507EURP_ Content-Type: application/octet-stream; name="0001-Add-non-blocking-version-of-PQcancel.patch" Content-Description: 0001-Add-non-blocking-version-of-PQcancel.patch Content-Disposition: attachment; filename="0001-Add-non-blocking-version-of-PQcancel.patch"; size=57115; creation-date="Tue, 15 Nov 2022 11:37:46 GMT"; modification-date="Tue, 15 Nov 2022 11:37:46 GMT" Content-Transfer-Encoding: base64 RnJvbSBkOGQ1ODFhMDAzM2UwMzY1ZmFmOTZhMzllOGNlNzVhNmVjOWViZjdkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWx0ZSBGZW5uZW1hIDxqZWx0ZS5mZW5uZW1hQG1pY3Jvc29m dC5jb20+CkRhdGU6IFdlZCwgMTIgSmFuIDIwMjIgMDk6NTI6MDUgKzAxMDAKU3ViamVjdDogW1BB VENIXSBBZGQgbm9uLWJsb2NraW5nIHZlcnNpb24gb2YgUFFjYW5jZWwKClRoaXMgcGF0Y2ggbWFr ZXMgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIGluIGxpYnBxOgoxLiBBZGQgYSBuZXcgUFFjYW5jZWxT ZW5kIGZ1bmN0aW9uLCB3aGljaCBzZW5kcyBjYW5jZWxsYXRpb24gcmVxdWVzdHMKICAgdXNpbmcg dGhlIHJlZ3VsYXIgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50IGNvZGUuIFRoaXMgbWFrZXMgc3Vy ZQogICB0aGF0IGNhbmNlbCByZXF1ZXN0cyBzdXBwb3J0IGFuZCB1c2UgYWxsIGNvbm5lY3Rpb24g b3B0aW9ucwogICBpbmNsdWRpbmcgZW5jcnlwdGlvbi4KMi4gQWRkIGEgbmV3IFBRY2FuY2VsQ29u biBmdW5jdGlvbiB3aGljaCBhbGxvd3Mgc2VuZGluZyBjYW5jZWxsYXRpb24gaW4KICAgYSBub24t YmxvY2tpbmcgd2F5IGJ5IHVzaW5nIGl0IHRvZ2V0aGVyIHdpdGggdGhlIG5ld2x5IGFkZGVkCiAg IFBRY2FuY2VsUG9sbCBhbmQgUFFjYW5jZWxTb2NrZXQuCjMuIFVzZSB0aGVzZSB0d28gbmV3IGNh bmNlbGxhdGlvbiBBUElzIGV2ZXJ5d2hlcmUgaW4gdGhlIGNvZGViYXNlIHdoZXJlCiAgIHNpZ25h bC1zYWZldHkgaXMgbm90IGEgbmVjZXNzaXR5LgoKVGhlIGV4aXN0aW5nIFBRY2FuY2VsIEFQSSBp cyB1c2luZyBibG9ja2luZyBJTy4gVGhpcyBtYWtlcyBQUWNhbmNlbAppbXBvc3NpYmxlIHRvIHVz ZSBpbiBhbiBldmVudCBsb29wIGJhc2VkIGNvZGViYXNlLCB3aXRob3V0IGJsb2NraW5nIHRoZQpl dmVudCBsb29wIHVudGlsIHRoZSBjYWxsIHJldHVybnMuIFBRY2FuY2VsQ29ubiBjYW4gbm93IGJl IHVzZWQgaW5zdGVhZCwKdG8gaGF2ZSBhIG5vbi1ibG9ja2luZyB3YXkgb2Ygc2VuZGluZyBjYW5j ZWwgcmVxdWVzdHMuIFRoZSBwb3N0Z3Jlc19mZHcKY2FuY2VsbGF0aW9uIGNvZGUgaGFzIGJlZW4g bW9kaWZpZWQgdG8gbWFrZSB1c2Ugb2YgdGhpcy4KClRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBh IHRlc3QgZm9yIGFsbCBvZiBsaWJwcSBjYW5jZWxsYXRpb24gQVBJcy4gVGhlCnRlc3QgY2FuIGJl IGVhc2lseSBydW4gbGlrZSB0aGlzOgoKICAgIGNkIHNyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlw ZWxpbmUKICAgIG1ha2UgJiYgLi9saWJwcV9waXBlbGluZSBjYW5jZWwKLS0tCiBjb250cmliL2Ri bGluay9kYmxpbmsuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMjIgKy0KIGNvbnRyaWIvcG9z dGdyZXNfZmR3L2Nvbm5lY3Rpb24uYyAgICAgICAgICAgICB8ICA5MyArKysrLQogLi4uL3Bvc3Rn cmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0ICAgIHwgIDE1ICsKIGNvbnRyaWIvcG9z dGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsICAgICB8ICAgOCArCiBkb2Mvc3JjL3NnbWwv bGlicHEuc2dtbCAgICAgICAgICAgICAgICAgICAgICAgfCAyNzkgKysrKysrKysrKystLQogc3Jj L2ZlX3V0aWxzL2Nvbm5lY3RfdXRpbHMuYyAgICAgICAgICAgICAgICAgIHwgIDEwICstCiBzcmMv aW50ZXJmYWNlcy9saWJwcS9leHBvcnRzLnR4dCAgICAgICAgICAgICAgfCAgIDggKwogc3JjL2lu dGVyZmFjZXMvbGlicHEvZmUtY29ubmVjdC5jICAgICAgICAgICAgIHwgMzc1ICsrKysrKysrKysr KysrKystLQogc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtbWlzYy5jICAgICAgICAgICAgICAgIHwg IDE1ICstCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtb3BlbnNzbC5jICAgICAgfCAg IDIgKy0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNlY3VyZS5jICAgICAgICAgICAgICB8ICAg NiArCiBzcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oICAgICAgICAgICAgICAgfCAgMjUg Ky0KIHNyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oICAgICAgICAgICAgICB8ICAgOSAr CiBzcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9udGVzdGVyLmMgICAgICAgICAgfCAgMjkgKy0K IC4uLi9tb2R1bGVzL2xpYnBxX3BpcGVsaW5lL2xpYnBxX3BpcGVsaW5lLmMgICB8IDI2MyArKysr KysrKysrKy0KIDE1IGZpbGVzIGNoYW5nZWQsIDEwNTAgaW5zZXJ0aW9ucygrKSwgMTA5IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvZGJsaW5rL2RibGluay5jIGIvY29udHJpYi9k YmxpbmsvZGJsaW5rLmMKaW5kZXggOWVlZjQxN2M0Ny4uMmE1NWM2NzU5YSAxMDA2NDQKLS0tIGEv Y29udHJpYi9kYmxpbmsvZGJsaW5rLmMKKysrIGIvY29udHJpYi9kYmxpbmsvZGJsaW5rLmMKQEAg LTEzNzgsMjIgKzEzNzgsMjQgQEAgUEdfRlVOQ1RJT05fSU5GT19WMShkYmxpbmtfY2FuY2VsX3F1 ZXJ5KTsKIERhdHVtCiBkYmxpbmtfY2FuY2VsX3F1ZXJ5KFBHX0ZVTkNUSU9OX0FSR1MpCiB7Ci0J aW50CQkJcmVzOwogCVBHY29ubgkgICAqY29ubjsKLQlQR2NhbmNlbCAgICpjYW5jZWw7Ci0JY2hh cgkJZXJyYnVmWzI1Nl07CisJUEdjYW5jZWxDb25uCSpjYW5jZWxDb25uOworCWNoYXIJICAgKm1z ZzsKIAogCWRibGlua19pbml0KCk7CiAJY29ubiA9IGRibGlua19nZXRfbmFtZWRfY29ubih0ZXh0 X3RvX2NzdHJpbmcoUEdfR0VUQVJHX1RFWFRfUFAoMCkpKTsKLQljYW5jZWwgPSBQUWdldENhbmNl bChjb25uKTsKLQotCXJlcyA9IFBRY2FuY2VsKGNhbmNlbCwgZXJyYnVmLCAyNTYpOwotCVBRZnJl ZUNhbmNlbChjYW5jZWwpOworCWNhbmNlbENvbm4gPSBQUWNhbmNlbFNlbmQoY29ubik7CiAKLQlp ZiAocmVzID09IDEpCi0JCVBHX1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0KCJPSyIpKTsK KwlpZiAoUFFjYW5jZWxTdGF0dXMoY2FuY2VsQ29ubikgPT0gQ09OTkVDVElPTl9CQUQpCisJewor CQltc2cgPSBwY2hvbXAoUFFjYW5jZWxFcnJvck1lc3NhZ2UoY2FuY2VsQ29ubikpOworCX0KIAll bHNlCi0JCVBHX1JFVFVSTl9URVhUX1AoY3N0cmluZ190b190ZXh0KGVycmJ1ZikpOworCXsKKwkJ bXNnID0gIk9LIjsKKwl9CisJUFFjYW5jZWxGaW5pc2goY2FuY2VsQ29ubik7CisJUEdfUkVUVVJO X1RFWFRfUChjc3RyaW5nX3RvX3RleHQobXNnKSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvY29udHJp Yi9wb3N0Z3Jlc19mZHcvY29ubmVjdGlvbi5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvY29ubmVj dGlvbi5jCmluZGV4IDkzOWQxMTRmMDIuLjk2MjI0NDFkYTcgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIv cG9zdGdyZXNfZmR3L2Nvbm5lY3Rpb24uYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9jb25u ZWN0aW9uLmMKQEAgLTEyNjQsMzUgKzEyNjQsOTggQEAgcGdmZHdfcmVzZXRfeGFjdF9zdGF0ZShD b25uQ2FjaGVFbnRyeSAqZW50cnksIGJvb2wgdG9wbGV2ZWwpCiBzdGF0aWMgYm9vbAogcGdmZHdf Y2FuY2VsX3F1ZXJ5KFBHY29ubiAqY29ubikKIHsKLQlQR2NhbmNlbCAgICpjYW5jZWw7Ci0JY2hh cgkJZXJyYnVmWzI1Nl07CiAJUEdyZXN1bHQgICAqcmVzdWx0ID0gTlVMTDsKLQlUaW1lc3RhbXBU eiBlbmR0aW1lOwotCWJvb2wJCXRpbWVkX291dDsKIAogCS8qCiAJICogSWYgaXQgdGFrZXMgdG9v IGxvbmcgdG8gY2FuY2VsIHRoZSBxdWVyeSBhbmQgZGlzY2FyZCB0aGUgcmVzdWx0LCBhc3N1bWUK IAkgKiB0aGUgY29ubmVjdGlvbiBpcyBkZWFkLgogCSAqLwotCWVuZHRpbWUgPSBUaW1lc3RhbXBU elBsdXNNaWxsaXNlY29uZHMoR2V0Q3VycmVudFRpbWVzdGFtcCgpLCAzMDAwMCk7CisJVGltZXN0 YW1wVHogZW5kdGltZSA9IFRpbWVzdGFtcFR6UGx1c01pbGxpc2Vjb25kcyhHZXRDdXJyZW50VGlt ZXN0YW1wKCksIDMwMDAwKTsKKwlib29sCQl0aW1lZF9vdXQgPSBmYWxzZTsKKwlib29sCQlmYWls ZWQgPSBmYWxzZTsKKwlQR2NhbmNlbENvbm4JKmNhbmNlbF9jb25uID0gUFFjYW5jZWxDb25uKGNv bm4pOwogCi0JLyoKLQkgKiBJc3N1ZSBjYW5jZWwgcmVxdWVzdC4gIFVuZm9ydHVuYXRlbHksIHRo ZXJlJ3Mgbm8gZ29vZCB3YXkgdG8gbGltaXQgdGhlCi0JICogYW1vdW50IG9mIHRpbWUgdGhhdCB3 ZSBtaWdodCBibG9jayBpbnNpZGUgUFFnZXRDYW5jZWwoKS4KLQkgKi8KLQlpZiAoKGNhbmNlbCA9 IFBRZ2V0Q2FuY2VsKGNvbm4pKSkKKworCWlmIChQUWNhbmNlbFN0YXR1cyhjYW5jZWxfY29ubikg PT0gQ09OTkVDVElPTl9CQUQpCisJeworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycmNvZGUo RVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxVUkUpLAorCQkJCSBlcnJtc2coImNvdWxkIG5vdCBzZW5k IGNhbmNlbCByZXF1ZXN0OiAlcyIsCisJCQkJCQlwY2hvbXAoUFFjYW5jZWxFcnJvck1lc3NhZ2Uo Y2FuY2VsX2Nvbm4pKSkpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIEluIHdoYXQgZm9s bG93cywgZG8gbm90IGxlYWsgYW55IFBHY2FuY2VsQ29ubiBvbiBhbiBlcnJvci4gKi8KKwlQR19U UlkoKTsKKwl7CisJCXdoaWxlICh0cnVlKQorCQl7CisJCQlUaW1lc3RhbXBUeiBub3cgPSBHZXRD dXJyZW50VGltZXN0YW1wKCk7CisJCQlsb25nCQljdXJfdGltZW91dDsKKwkJCVBvc3RncmVzUG9s bGluZ1N0YXR1c1R5cGUgcG9sbHJlcyA9IFBRY2FuY2VsUG9sbChjYW5jZWxfY29ubik7CisJCQlp bnQJCQl3YWl0RXZlbnRzID0gV0xfTEFUQ0hfU0VUIHwgV0xfVElNRU9VVCB8IFdMX0VYSVRfT05f UE1fREVBVEg7CisKKwkJCWlmIChwb2xscmVzID09IFBHUkVTX1BPTExJTkdfT0spCisJCQl7CisJ CQkJYnJlYWs7CisJCQl9CisKKwkJCS8qIElmIHRpbWVvdXQgaGFzIGV4cGlyZWQsIGdpdmUgdXAs IGVsc2UgZ2V0IHNsZWVwIHRpbWUuICovCisJCQljdXJfdGltZW91dCA9IFRpbWVzdGFtcERpZmZl cmVuY2VNaWxsaXNlY29uZHMobm93LCBlbmR0aW1lKTsKKwkJCWlmIChjdXJfdGltZW91dCA8PSAw KQorCQkJeworCQkJCXRpbWVkX291dCA9IHRydWU7CisJCQkJZmFpbGVkID0gdHJ1ZTsKKwkJCQln b3RvIGV4aXQ7CisJCQl9CisKKwkJCXN3aXRjaCAocG9sbHJlcykKKwkJCXsKKwkJCQljYXNlIFBH UkVTX1BPTExJTkdfUkVBRElORzoKKwkJCQkJd2FpdEV2ZW50cyB8PSBXTF9TT0NLRVRfUkVBREFC TEU7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgUEdSRVNfUE9MTElOR19XUklUSU5HOgorCQkJCQl3 YWl0RXZlbnRzIHw9IFdMX1NPQ0tFVF9XUklURUFCTEU7CisJCQkJCWJyZWFrOworCQkJCWRlZmF1 bHQ6CisJCQkJCWZhaWxlZCA9IHRydWU7CisJCQkJCWdvdG8gZXhpdDsKKwkJCX0KKworCQkJLyog U2xlZXAgdW50aWwgdGhlcmUncyBzb21ldGhpbmcgdG8gZG8gKi8KKwkJCVdhaXRMYXRjaE9yU29j a2V0KE15TGF0Y2gsIHdhaXRFdmVudHMsIFBRY2FuY2VsU29ja2V0KGNhbmNlbF9jb25uKSwKKwkJ CQkJCQkgIGN1cl90aW1lb3V0LCBQR19XQUlUX0VYVEVOU0lPTik7CisJCQlSZXNldExhdGNoKE15 TGF0Y2gpOworCisJCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQl9CitleGl0Ogk7CisJfQor CVBHX0NBVENIKCk7CiAJewotCQlpZiAoIVBRY2FuY2VsKGNhbmNlbCwgZXJyYnVmLCBzaXplb2Yo ZXJyYnVmKSkpCisJCVBRY2FuY2VsRmluaXNoKGNhbmNlbF9jb25uKTsKKwkJUEdfUkVfVEhST1co KTsKKwl9CisJUEdfRU5EX1RSWSgpOworCisJaWYgKGZhaWxlZCkKKwl7CisJCWlmICh0aW1lZF9v dXQpCisJCXsKKwkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJKGVycm1zZygiY291bGQgbm90IGNh bmNlbCByZXF1ZXN0IGR1ZSB0byB0aW1lb3V0IikpKTsKKwkJfQorCQllbHNlCiAJCXsKIAkJCWVy ZXBvcnQoV0FSTklORywKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9DT05ORUNUSU9OX0ZBSUxVUkUp LAogCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qgc2VuZCBjYW5jZWwgcmVxdWVzdDogJXMiLAotCQkJ CQkJCWVycmJ1ZikpKTsKLQkJCVBRZnJlZUNhbmNlbChjYW5jZWwpOwotCQkJcmV0dXJuIGZhbHNl OworCQkJCQkJCXBjaG9tcChQUWNhbmNlbEVycm9yTWVzc2FnZShjYW5jZWxfY29ubikpKSkpOwog CQl9Ci0JCVBRZnJlZUNhbmNlbChjYW5jZWwpOworCQlQUWNhbmNlbEZpbmlzaChjYW5jZWxfY29u bik7CisJCXJldHVybiBmYWlsZWQ7CiAJfQorCVBRY2FuY2VsRmluaXNoKGNhbmNlbF9jb25uKTsK IAogCS8qIEdldCBhbmQgZGlzY2FyZCB0aGUgcmVzdWx0IG9mIHRoZSBxdWVyeS4gKi8KIAlpZiAo cGdmZHdfZ2V0X2NsZWFudXBfcmVzdWx0KGNvbm4sIGVuZHRpbWUsICZyZXN1bHQsICZ0aW1lZF9v dXQpKQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNf ZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQK aW5kZXggY2M5ZTM5YzRhNS4uMTEzZjMyMDRjYyAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jl c19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zk dy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CkBAIC0yNjg4LDYgKzI2ODgsMjEgQEAgU0VMRUNU IHQxLmMxLCB0Mi5jMiBGUk9NIHY0IHQxIExFRlQgSk9JTiBmdDUgdDIgT04gKHQxLmMxID0gdDIu YzEpIE9SREVSIEJZIHQxLmMKICgxMCByb3dzKQogCiBBTFRFUiBWSUVXIHY0IE9XTkVSIFRPIHJl Z3Jlc3Nfdmlld19vd25lcjsKKy0tIE1ha2Ugc3VyZSB0aGlzIGJpZyBDUk9TUyBKT0lOIHF1ZXJ5 IGlzIHB1c2hlZCBkb3duCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCBjb3Vu dCgqKSBGUk9NIGZ0MSBDUk9TUyBKT0lOIGZ0MiBDUk9TUyBKT0lOIGZ0NCBDUk9TUyBKT0lOIGZ0 NTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRm9y ZWlnbiBTY2FuCisgICBPdXRwdXQ6IChjb3VudCgqKSkKKyAgIFJlbGF0aW9uczogQWdncmVnYXRl IG9uICgoKChwdWJsaWMuZnQxKSBJTk5FUiBKT0lOIChwdWJsaWMuZnQyKSkgSU5ORVIgSk9JTiAo cHVibGljLmZ0NCkpIElOTkVSIEpPSU4gKHB1YmxpYy5mdDUpKQorICAgUmVtb3RlIFNRTDogU0VM RUNUIGNvdW50KCopIEZST00gKCgoIlMgMSIuIlQgMSIgcjEgSU5ORVIgSk9JTiAiUyAxIi4iVCAx IiByMiBPTiAoVFJVRSkpIElOTkVSIEpPSU4gIlMgMSIuIlQgMyIgcjQgT04gKFRSVUUpKSBJTk5F UiBKT0lOICJTIDEiLiJUIDQiIHI2IE9OIChUUlVFKSkKKyg0IHJvd3MpCisKKy0tIE1ha2Ugc3Vy ZSBxdWVyeSBjYW5jZWxsYXRpb24gd29ya3MKK1NFVCBzdGF0ZW1lbnRfdGltZW91dCA9ICcxMG1z JzsKK3NlbGVjdCBjb3VudCgqKSBmcm9tIGZ0MSBDUk9TUyBKT0lOIGZ0MiBDUk9TUyBKT0lOIGZ0 NCBDUk9TUyBKT0lOIGZ0NTsgLS0gdGhpcyB0YWtlcyB2ZXJ5IGxvbmcKK0VSUk9SOiAgY2FuY2Vs aW5nIHN0YXRlbWVudCBkdWUgdG8gc3RhdGVtZW50IHRpbWVvdXQKK1JFU0VUIHN0YXRlbWVudF90 aW1lb3V0OwogLS0gY2xlYW51cAogRFJPUCBPV05FRCBCWSByZWdyZXNzX3ZpZXdfb3duZXI7CiBE Uk9QIFJPTEUgcmVncmVzc192aWV3X293bmVyOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jl c19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9z dGdyZXNfZmR3LnNxbAppbmRleCBlNDhjY2QyODZiLi5iZjk3NzQ0MmQ2IDEwMDY0NAotLS0gYS9j b250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAorKysgYi9jb250cmliL3Bv c3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbApAQCAtMzI2LDYgKzMyNiw3IEBAIERFTEVU RSBGUk9NIGxvY3RfZW1wdHk7CiBBTkFMWVpFIGZ0X2VtcHR5OwogRVhQTEFJTiAoVkVSQk9TRSwg Q09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGZ0X2VtcHR5IE9SREVSIEJZIGMxOwogCisKIC0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KIC0tIFdIRVJFIHdpdGggcmVtb3RlbHktZXhlY3V0YWJsZSBjb25kaXRpb25zCiAt LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CkBAIC03MTMsNiArNzE0LDEzIEBAIFNFTEVDVCB0MS5jMSwgdDIuYzIgRlJP TSB2NCB0MSBMRUZUIEpPSU4gZnQ1IHQyIE9OICh0MS5jMSA9IHQyLmMxKSBPUkRFUiBCWSB0MS5j CiBTRUxFQ1QgdDEuYzEsIHQyLmMyIEZST00gdjQgdDEgTEVGVCBKT0lOIGZ0NSB0MiBPTiAodDEu YzEgPSB0Mi5jMSkgT1JERVIgQlkgdDEuYzEsIHQyLmMxIE9GRlNFVCAxMCBMSU1JVCAxMDsKIEFM VEVSIFZJRVcgdjQgT1dORVIgVE8gcmVncmVzc192aWV3X293bmVyOwogCistLSBNYWtlIHN1cmUg dGhpcyBiaWcgQ1JPU1MgSk9JTiBxdWVyeSBpcyBwdXNoZWQgZG93bgorRVhQTEFJTiAoVkVSQk9T RSwgQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgRlJPTSBmdDEgQ1JPU1MgSk9JTiBmdDIgQ1JP U1MgSk9JTiBmdDQgQ1JPU1MgSk9JTiBmdDU7CistLSBNYWtlIHN1cmUgcXVlcnkgY2FuY2VsbGF0 aW9uIHdvcmtzCitTRVQgc3RhdGVtZW50X3RpbWVvdXQgPSAnMTBtcyc7CitzZWxlY3QgY291bnQo KikgZnJvbSBmdDEgQ1JPU1MgSk9JTiBmdDIgQ1JPU1MgSk9JTiBmdDQgQ1JPU1MgSk9JTiBmdDU7 IC0tIHRoaXMgdGFrZXMgdmVyeSBsb25nCitSRVNFVCBzdGF0ZW1lbnRfdGltZW91dDsKKwogLS0g Y2xlYW51cAogRFJPUCBPV05FRCBCWSByZWdyZXNzX3ZpZXdfb3duZXI7CiBEUk9QIFJPTEUgcmVn cmVzc192aWV3X293bmVyOwpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xpYnBxLnNnbWwgYi9k b2Mvc3JjL3NnbWwvbGlicHEuc2dtbAppbmRleCAzYzliZDNkNjczLi45MGRiMDIxYzFkIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvbGlicHEuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvbGlicHEu c2dtbApAQCAtMjY1LDcgKzI2NSw3IEBAIFBHY29ubiAqUFFzZXRkYihjaGFyICpwZ2hvc3QsCiAg ICAgPHZhcmxpc3RlbnRyeSBpZD0ibGlicHEtUFFjb25uZWN0U3RhcnRQYXJhbXMiPgogICAgICA8 dGVybT48ZnVuY3Rpb24+UFFjb25uZWN0U3RhcnRQYXJhbXM8L2Z1bmN0aW9uPjxpbmRleHRlcm0+ PHByaW1hcnk+UFFjb25uZWN0U3RhcnRQYXJhbXM8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJt PgogICAgICA8dGVybT48ZnVuY3Rpb24+UFFjb25uZWN0U3RhcnQ8L2Z1bmN0aW9uPjxpbmRleHRl cm0+PHByaW1hcnk+UFFjb25uZWN0U3RhcnQ8L3ByaW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgot ICAgICA8dGVybT48ZnVuY3Rpb24+UFFjb25uZWN0UG9sbDwvZnVuY3Rpb24+PGluZGV4dGVybT48 cHJpbWFyeT5QUWNvbm5lY3RQb2xsPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4KKyAgICAg PHRlcm0gaWQ9ImxpYnBxLVBRY29ubmVjdFBvbGwiPjxmdW5jdGlvbj5QUWNvbm5lY3RQb2xsPC9m dW5jdGlvbj48aW5kZXh0ZXJtPjxwcmltYXJ5PlBRY29ubmVjdFBvbGw8L3ByaW1hcnk+PC9pbmRl eHRlcm0+PC90ZXJtPgogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KICAgICAgICA8aW5k ZXh0ZXJtPjxwcmltYXJ5Pm5vbmJsb2NraW5nIGNvbm5lY3Rpb248L3ByaW1hcnk+PC9pbmRleHRl cm0+CkBAIC00OTA5LDcgKzQ5MDksNyBAQCBpbnQgUFFpc0J1c3koUEdjb25uICpjb25uKTsKICAg IDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRc2VuZFF1ZXJ5Ii8+Lzx4cmVmIGxpbmtlbmQ9ImxpYnBx LVBRZ2V0UmVzdWx0Ii8+CiAgICBjYW4gYWxzbyBhdHRlbXB0IHRvIGNhbmNlbCBhIGNvbW1hbmQg dGhhdCBpcyBzdGlsbCBiZWluZyBwcm9jZXNzZWQKICAgIGJ5IHRoZSBzZXJ2ZXI7IHNlZSA8eHJl ZiBsaW5rZW5kPSJsaWJwcS1jYW5jZWwiLz4uICBCdXQgcmVnYXJkbGVzcyBvZgotICAgdGhlIHJl dHVybiB2YWx1ZSBvZiA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbCIvPiwgdGhlIGFwcGxp Y2F0aW9uCisgICB0aGUgcmV0dXJuIHZhbHVlIG9mIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY2Fu Y2VsU2VuZCIvPiwgdGhlIGFwcGxpY2F0aW9uCiAgICBtdXN0IGNvbnRpbnVlIHdpdGggdGhlIG5v cm1hbCByZXN1bHQtcmVhZGluZyBzZXF1ZW5jZSB1c2luZwogICAgPHhyZWYgbGlua2VuZD0ibGli cHEtUFFnZXRSZXN1bHQiLz4uICBBIHN1Y2Nlc3NmdWwgY2FuY2VsbGF0aW9uIHdpbGwKICAgIHNp bXBseSBjYXVzZSB0aGUgY29tbWFuZCB0byB0ZXJtaW5hdGUgc29vbmVyIHRoYW4gaXQgd291bGQg aGF2ZQpAQCAtNTYyNywxMyArNTYyNywyMjAgQEAgaW50IFBRc2V0U2luZ2xlUm93TW9kZShQR2Nv bm4gKmNvbm4pOwogICAgdGhpcyBzZWN0aW9uLgogCiAgICA8dmFyaWFibGVsaXN0PgorICAgIDx2 YXJsaXN0ZW50cnkgaWQ9ImxpYnBxLVBRY2FuY2VsU2VuZCI+CisgICAgIDx0ZXJtPjxmdW5jdGlv bj5QUWNhbmNlbFNlbmQ8L2Z1bmN0aW9uPjxpbmRleHRlcm0+PHByaW1hcnk+UFFjYW5jZWxTZW5k PC9wcmltYXJ5PjwvaW5kZXh0ZXJtPjwvdGVybT4KKworICAgICA8bGlzdGl0ZW0+CisgICAgICA8 cGFyYT4KKyAgICAgICBSZXF1ZXN0cyB0aGF0IHRoZSBzZXJ2ZXIgYWJhbmRvbnMgcHJvY2Vzc2lu ZyBvZiB0aGUgY3VycmVudCBjb21tYW5kLgorPHN5bm9wc2lzPgorUEdjYW5jZWxDb25uICpQUWNh bmNlbFNlbmQoUEdjb25uICpjb25uKTsKKzwvc3lub3BzaXM+CisgICAgICA8L3BhcmE+CisKKyAg ICAgIDxwYXJhPgorICAgICAgIFRoaXMgcmVxdWVzdCBpcyBtYWRlIG92ZXIgYSBjb25uZWN0aW9u IHRoYXQgdXNlcyB0aGUgc2FtZSBjb25uZWN0aW9uCisgICAgICAgb3B0aW9ucyBhcyB0aGUgdGhl IG9yaWdpbmFsIDxzdHJ1Y3RuYW1lPlBHY29ubjwvc3RydWN0bmFtZT4uIFNvIHdoZW4gdGhlCisg ICAgICAgb3JpZ2luYWwgY29ubmVjdGlvbiBpcyBlbmNyeXB0ZWQgKHVzaW5nIFRMUyBvciBHU1Mp LCB0aGUgY29ubmVjdGlvbiBmb3IKKyAgICAgICB0aGUgY2FuY2VsIHJlcXVlc3QgY29ubmVjdGlv biBpcyBlbmNyeXB0ZWQgaW4gdGhlIHNhbWUuIEFueSBjb25uZWN0aW9uCisgICAgICAgb3B0aW9u cyB0aGF0IG9ubHkgbWFrZSBzZW5zZSBmb3IgYXV0aGVudGljYXRpb24gb3IgYWZ0ZXIgYXV0aGVu dGljYXRpb24KKyAgICAgICBhcmUgaWdub3JlZCB0aG91Z2gsIGJlY2F1c2UgY2FuY2VsbGF0aW9u IHJlcXVlc3RzIGRvIG5vdCByZXF1aXJlCisgICAgICAgYXV0aGVudGljYXRpb24uCisgICAgICA8 L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIDxz dHJ1Y3RuYW1lPlBHY2FuY2VsQ29ubjwvc3RydWN0bmFtZT4KKyAgICAgICBvYmplY3QuIEJ5IHVz aW5nCisgICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWxTdGF0dXMiLz4KKyAgICAg ICBpdCBjYW4gYmUgY2hlY2tlZCBpZiB0aGVyZSB3YXMgYW55IGVycm9yIHdoZW4gc2VuZGluZyB0 aGUgY2FuY2VsbGF0aW9uCisgICAgICAgcmVxdWVzdC4gSWYgPHhyZWYgbGlua2VuZD0ibGlicHEt UFFjYW5jZWxTdGF0dXMiLz4KKyAgICAgICByZXR1cm5zIGZvciA8c3ltYm9sPkNPTk5FQ1RJT05f T0s8L3N5bWJvbD4gdGhlIHJlcXVlc3Qgd2FzCisgICAgICAgc3VjY2Vzc2Z1bGx5IHNlbnQsIGJ1 dCBpZiBpdCByZXR1cm5zIDxzeW1ib2w+Q09OTkVDVElPTl9CQUQ8L3N5bWJvbD4KKyAgICAgICBh biBlcnJvciBvY2N1cmVkLiBJZiBhbiBlcnJvciBvY2N1cmVkIHRoZSBlcnJvciBtZXNzYWdlIGNh biBiZSByZXRyaWV2ZWQgdXNpbmcKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNl bEVycm9yTWVzc2FnZSIvPi4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAg U3VjY2Vzc2Z1bCBkaXNwYXRjaCBvZiB0aGUgY2FuY2VsbGF0aW9uIGlzIG5vIGd1YXJhbnRlZSB0 aGF0IHRoZSByZXF1ZXN0CisgICAgICAgd2lsbCBoYXZlIGFueSBlZmZlY3QsIGhvd2V2ZXIuIElm IHRoZSBjYW5jZWxsYXRpb24gaXMgZWZmZWN0aXZlLCB0aGUKKyAgICAgICBjb21tYW5kIGJlaW5n IGNhbmNlbGxlZCB3aWxsIHRlcm1pbmF0ZSBlYXJseSBhbmQgcmV0dXJuIGFuIGVycm9yIHJlc3Vs dC4KKyAgICAgICBJZiB0aGUgY2FuY2VsbGF0aW9uIGZhaWxzIChzYXksIGJlY2F1c2UgdGhlIHNl cnZlciB3YXMgYWxyZWFkeSBkb25lCisgICAgICAgcHJvY2Vzc2luZyB0aGUgY29tbWFuZCksIHRo ZW4gdGhlcmUgd2lsbCBiZSBubyB2aXNpYmxlIHJlc3VsdCBhdCBhbGwuCisgICAgICA8L3BhcmE+ CisKKyAgICAgIDxwYXJhPgorICAgICAgIE5vdGUgdGhhdCB3aGVuIDxmdW5jdGlvbj5QUWNhbmNl bFNlbmQ8L2Z1bmN0aW9uPiByZXR1cm5zIGEgbm9uLW51bGwKKyAgICAgICBwb2ludGVyLCB5b3Ug bXVzdCBjYWxsIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY2FuY2VsRmluaXNoIi8+IHdoZW4geW91 IAorICAgICAgIGFyZSBmaW5pc2hlZCB3aXRoIGl0LCBpbiBvcmRlciB0byBkaXNwb3NlIG9mIHRo ZSBzdHJ1Y3R1cmUgYW5kIGFueQorICAgICAgIGFzc29jaWF0ZWQgbWVtb3J5IGJsb2Nrcy4gVGhp cyBtdXN0IGJlIGRvbmUgZXZlbiBpZiB0aGUgY2FuY2VsIHJlcXVlc3QKKyAgICAgICBmYWlsZWQu CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisK KyAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUWNhbmNlbENvbm4iPgorICAgICA8dGVybT48 ZnVuY3Rpb24+UFFjYW5jZWxDb25uPC9mdW5jdGlvbj48aW5kZXh0ZXJtPjxwcmltYXJ5PlBRY2Fu Y2VsQ29ubjwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+CisKKyAgICAgPGxpc3RpdGVtPgor ICAgICAgPHBhcmE+CisgICAgICAgQSB2ZXJzaW9uIG9mIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBR Y2FuY2VsU2VuZCIvPiB0aGF0IGNhbiBiZSB1c2VkIAorICAgICAgIGluIGEgbm9uLWJsb2NraW5n IG1hbm5lci4KKzxzeW5vcHNpcz4KK1BHY2FuY2VsQ29ubiAqUFFjYW5jZWxDb25uKFBHY29ubiAq Y29ubik7Cis8L3N5bm9wc2lzPgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAg ICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbENvbm4iLz4gY3JlYXRlcyBhCisgICAgICAg PHN0cnVjdG5hbWU+UEdjYW5jZWxDb25uPC9zdHJ1Y3RuYW1lPjxpbmRleHRlcm0+PHByaW1hcnk+ UEdjYW5jZWxDb25uPC9wcmltYXJ5PjwvaW5kZXh0ZXJtPiwKKyAgICAgICBidXQgaXQgd29uJ3Qg aW5zdGFudGx5IHN0YXJ0IHNlbmRpbmcgYSBjYW5jZWwgcmVxdWVzdCBvdmVyIHRoaXMKKyAgICAg ICBjb25uZWN0aW9uIGxpa2UgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWxTZW5kIi8+Lgor ICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY2FuY2VsU3RhdHVzIi8+IHNob3VsZCBiZSBj YWxsZWQgb24gdGhlIHJldHVybgorICAgICAgIHZhbHVlIHRvIGNoZWNrIGlmIHRoZSA8c3RydWN0 bmFtZT4gUEdjYW5jZWxDb25uIDwvc3RydWN0bmFtZT4gd2FzCisgICAgICAgY3JlYXRlZCBzdWNj ZXNzZnVsbHkuCisgICAgICAgVGhlIDxzdHJ1Y3RuYW1lPlBHY2FuY2VsQ29ubjwvc3RydWN0bmFt ZT4gb2JqZWN0IGlzIGFuIG9wYXF1ZSBzdHJ1Y3R1cmUKKyAgICAgICB0aGF0IGlzIG5vdCBtZWFu dCB0byBiZSBhY2Nlc3NlZCBkaXJlY3RseSBieSB0aGUgYXBwbGljYXRpb24uCisgICAgICAgVGhp cyA8c3RydWN0bmFtZT5QR2NhbmNlbENvbm48L3N0cnVjdG5hbWU+IG9iamVjdCBjYW4gYmUgdXNl ZCB0byBjYW5jZWwKKyAgICAgICB0aGUgcXVlcnkgdGhhdCdzIHJ1bm5pbmcgb24gdGhlIG9yaWdp bmFsIGNvbm5lY3Rpb24gaW4gYSB0aHJlYWQtc2FmZSBhbmQKKyAgICAgICBub24tYmxvY2tpbmcg d2F5LgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBOb3RlIHRoYXQgd2hl biA8ZnVuY3Rpb24+UFFjYW5jZWxDb25uPC9mdW5jdGlvbj4gcmV0dXJucyBhIG5vbi1udWxsCisg ICAgICAgcG9pbnRlciwgeW91IG11c3QgY2FsbCA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNl bEZpbmlzaCIvPiB3aGVuIHlvdSAKKyAgICAgICBhcmUgZmluaXNoZWQgd2l0aCBpdCwgaW4gb3Jk ZXIgdG8gZGlzcG9zZSBvZiB0aGUgc3RydWN0dXJlIGFuZCBhbnkKKyAgICAgICBhc3NvY2lhdGVk IG1lbW9yeSBibG9ja3MuIFRoaXMgbXVzdCBiZSBkb25lIGV2ZW4gaWYgdGhlIGNhbmNlbCByZXF1 ZXN0CisgICAgICAgZmFpbGVkIG9yIHdhcyBhYmFuZG9uZWQuCisgICAgICA8L3BhcmE+CisgICAg IDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5IGlk PSJsaWJwcS1QUWNhbmNlbFN0YXR1cyI+CisgICAgIDx0ZXJtPjxmdW5jdGlvbj5QUWNhbmNlbFN0 YXR1czwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJpbWFyeT5QUWNhbmNlbFN0YXR1czwvcHJpbWFy eT48L2luZGV4dGVybT48L3Rlcm0+CisKKyAgICAgPGxpc3RpdGVtPgorICAgICAgPHBhcmE+Cisg ICAgICAgQSB2ZXJzaW9uIG9mIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRc3RhdHVzIi8+IHRoYXQg Y2FuIGJlIHVzZWQgZm9yCisgICAgICAgY2FuY2VsbGF0aW9uIGNvbm5lY3Rpb25zLgorPHN5bm9w c2lzPgorQ29ublN0YXR1c1R5cGUgUFFjYW5jZWxTdGF0dXMoY29uc3QgUEdjYW5jZWxDb25uICpj b25uKTsKKzwvc3lub3BzaXM+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBJ biBhZGRpdGlvbiB0byBhbGwgdGhlIHN0YXR1c2VzIHRoYXQgYSA8c3RydWN0bmFtZT5QR2Nvbm48 L3N0cnVjdG5hbWU+CisgICAgICAgY2FuIGhhdmUsIHRoaXMgY29ubmVjdGlvbiBjYW4gaGF2ZSBv bmUgYWRkaXRpb25hbCBzdGF0dXM6CisKKyAgICAgICA8dmFyaWFibGVsaXN0PgorICAgICAgICA8 dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1jb25uZWN0aW9uLXN0YXJ0aW5nIj4KKyAgICAgICAgIDx0 ZXJtPjxzeW1ib2w+Q09OTkVDVElPTl9TVEFSVElORzwvc3ltYm9sPjwvdGVybT4KKyAgICAgICAg IDxsaXN0aXRlbT4KKyAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgV2FpdGluZyBmb3IgdGhl IGZpcnN0IGNhbGwgdG8gPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWxQb2xsIi8+LAorICAg ICAgICAgICB0byBhY3R1YWxseSBvcGVuIHRoZSBzb2NrZXQuIFRoaXMgaXMgdGhlIGNvbm5lY3Rp b24gc3RhdGUgcmlnaHQgYWZ0ZXIKKyAgICAgICAgICAgY2FsbGluZyA8eHJlZiBsaW5rZW5kPSJs aWJwcS1QUWNhbmNlbENvbm4iLz4uIE5vIGNvbm5lY3Rpb24gdG8gdGhlCisgICAgICAgICAgIHNl cnZlciBoYXMgYmVlbiBpbml0aWF0ZWQgeWV0IGF0IHRoaXMgcG9pbnQuIFRvIGFjdHVhbGx5IHN0 YXJ0CisgICAgICAgICAgIHNlbmRpbmcgdGhlIGNhbmNlbCByZXF1ZXN0IHVzZSA8eHJlZiBsaW5r ZW5kPSJsaWJwcS1QUWNhbmNlbFBvbGwiLz4uCisgICAgICAgICAgPC9wYXJhPgorICAgICAgICAg PC9saXN0aXRlbT4KKyAgICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICAgPC92YXJpYWJsZWxp c3Q+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJhPgorICAgICAgIE9uZSBmaW5hbCBub3Rl IGFib3V0IHRoZSByZXR1cm5lZCBzdGF0dXNlcyBpcyB0aGF0IAorICAgICAgIDxzeW1ib2w+Q09O TkVDVElPTl9PSzwvc3ltYm9sPiBoYXMgYSBzbGlnaHRseSBkaWZmZXJlbnQgbWVhbmluZyBmb3Ig YQorICAgICAgIDxzdHJ1Y3RuYW1lPlBHY2FuY2VsQ29ubjwvc3RydWN0bmFtZT4gdGhhbiB3aGF0 IGl0IGhhcyBmb3IgYSAKKyAgICAgICA8c3RydWN0bmFtZT5QR2Nvbm48L3N0cnVjdG5hbWU+LiBX aGVuIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY2FuY2VsU3RhdHVzIi8+CisgICAgICAgcmV0dXJu cyA8c3ltYm9sPkNPTk5FQ1RJT05fT0s8L3N5bWJvbD4gZm9yIGEgPHN0cnVjdG5hbWU+UEdjYW5j ZWxDb25uPC9zdHJ1Y3RuYW1lPgorICAgICAgIGl0IG1lYW5zIHRoYXQgdGhhdCB0aGUgZGlzcGF0 Y2ggb2YgdGhlIGNhbmNlbCByZXF1ZXN0IGhhcyBjb21wbGV0ZWQgKGFsdGhvdWdoCisgICAgICAg dGhpcyBpcyBubyBwcm9taXNlIHRoYXQgdGhlIHF1ZXJ5IHdhcyBhY3R1YWxseSBjYW5jZWxsZWQp LgorICAgICAgIFdoaWxlIGEgPHN5bWJvbD5DT05ORUNUSU9OX09LPC9zeW1ib2w+IHJlc3VsdCBm b3IKKyAgICAgICA8c3RydWN0bmFtZT5QR2Nvbm48L3N0cnVjdG5hbWU+IG1lYW5zIHRoYXRxdWVy aWVzIGNhbiBiZSBzZW50IG92ZXIgdGhlCisgICAgICAgY29ubmVjdGlvbi4KKyAgICAgIDwvcGFy YT4KKworICAgICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICAgPHZhcmxp c3RlbnRyeSBpZD0ibGlicHEtUFFjYW5jZWxQb2xsIj4KKyAgICAgPHRlcm0+PGZ1bmN0aW9uPlBR Y2FuY2VsUG9sbDwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJpbWFyeT5QUWNhbmNlbFBvbGw8L3By aW1hcnk+PC9pbmRleHRlcm0+PC90ZXJtPgorCisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJh PgorICAgICAgIEEgdmVyc2lvbiBvZiA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNvbm5lY3RQb2xs Ii8+IHRoYXQgY2FuIGJlIHVzZWQgZm9yCisgICAgICAgY2FuY2VsbGF0aW9uIGNvbm5lY3Rpb25z LgorPHN5bm9wc2lzPgorUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZSBQUWNhbmNlbFBvbGwoUEdj YW5jZWxDb25uICpjb25uKTsKKzwvc3lub3BzaXM+CisgICAgICA8L3BhcmE+CisgICAgIDwvbGlz dGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJw cS1QUWNhbmNlbEVycm9yTWVzc2FnZSI+CisgICAgIDx0ZXJtPjxmdW5jdGlvbj5QUWNhbmNlbEVy cm9yTWVzc2FnZTwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJpbWFyeT5QUWNhbmNlbEVycm9yTWVz c2FnZTwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+CisKKyAgICAgPGxpc3RpdGVtPgorICAg ICAgPHBhcmE+CisgICAgICAgQSB2ZXJzaW9uIG9mIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRZXJy b3JNZXNzYWdlIi8+IHRoYXQgY2FuIGJlIHVzZWQgZm9yCisgICAgICAgY2FuY2VsbGF0aW9uIGNv bm5lY3Rpb25zLgorPHN5bm9wc2lzPgorY2hhciAqUFFjYW5jZWxFcnJvck1lc3NhZ2UoY29uc3Qg UEdjYW5jZWxDb25uICpjb25uKTsKKzwvc3lub3BzaXM+CisgICAgICA8L3BhcmE+CisgICAgIDwv bGlzdGl0ZW0+CisgICAgPC92YXJsaXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5IGlkPSJs aWJwcS1QUWNhbmNlbEZpbmlzaCI+CisgICAgIDx0ZXJtPjxmdW5jdGlvbj5QUWNhbmNlbEZpbmlz aDwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJpbWFyeT5QUWNhbmNlbEZpbmlzaDwvcHJpbWFyeT48 L2luZGV4dGVybT48L3Rlcm0+CisgICAgIDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAg IENsb3NlcyB0aGUgY2FuY2VsIGNvbm5lY3Rpb24gKGlmIGl0IGRpZCBub3QgZmluaXNoIHNlbmRp bmcgdGhlIGNhbmNlbCAKKyAgICAgICByZXF1ZXN0IHlldCkuIEFsc28gZnJlZXMgbWVtb3J5IHVz ZWQgYnkgdGhlIDxzdHJ1Y3RuYW1lPlBHY2FuY2VsQ29ubjwvc3RydWN0bmFtZT4gCisgICAgICAg b2JqZWN0LgorPHN5bm9wc2lzPgordm9pZCBQUWNhbmNlbEZpbmlzaChQR2NhbmNlbENvbm4gKmNv bm4pOworPC9zeW5vcHNpcz4KKyAgICAgIDwvcGFyYT4KKworICAgICAgPHBhcmE+CisgICAgICAg Tm90ZSB0aGF0IGV2ZW4gaWYgdGhlIGNhbmNlbCBhdHRlbXB0IGZhaWxzIChhcworICAgICAgIGlu ZGljYXRlZCBieSA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbFN0YXR1cyIvPiksIHRoZSBh cHBsaWNhdGlvbiBzaG91bGQgY2FsbCA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbEZpbmlz aCIvPgorICAgICAgIHRvIGZyZWUgdGhlIG1lbW9yeSB1c2VkIGJ5IHRoZSA8c3RydWN0bmFtZT5Q R2NhbmNlbENvbm48L3N0cnVjdG5hbWU+IG9iamVjdC4KKyAgICAgICBUaGUgPHN0cnVjdG5hbWU+ UEdjYW5jZWxDb25uPC9zdHJ1Y3RuYW1lPiBwb2ludGVyIG11c3Qgbm90IGJlIHVzZWQgYWdhaW4g YWZ0ZXIKKyAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbEZpbmlzaCIvPiBoYXMg YmVlbiBjYWxsZWQuCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJs aXN0ZW50cnk+CisKKyAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUWNhbmNlbFJlc2V0Ij4K KyAgICAgPHRlcm0+PGZ1bmN0aW9uPlBRY2FuY2VsUmVzZXQ8L2Z1bmN0aW9uPjxpbmRleHRlcm0+ PHByaW1hcnk+UFFjYW5jZWxSZXNldDwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+CisgICAg IDxsaXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgIFJlc2V0cyB0aGUgPHN5bWJvbD5QR2Nh bmNlbENvbm48L3N5bWJvbD4gc28gaXQgY2FuIGJlIHJldXNlZCBmb3IgYSBuZXcgCisgICAgICAg Y2FuY2VsIGNvbm5lY3Rpb24uCis8c3lub3BzaXM+Cit2b2lkIFBRY2FuY2VsUmVzZXQoUEdjYW5j ZWxDb25uICpjb25uKTsKKzwvc3lub3BzaXM+CisgICAgICA8L3BhcmE+CisKKyAgICAgIDxwYXJh PgorICAgICAgIElmIHRoZSA8c3ltYm9sPlBHY2FuY2VsQ29ubjwvc3ltYm9sPiBpcyBjdXJyZW50 bHkgdXNlZCB0byBzZW5kIGEgY2FuY2VsCisgICAgICAgcmVxdWVzdCwgdGhlbiB0aGlzIGNvbm5l Y3Rpb24gaXMgY2xvc2VkLiBJdCB3aWxsIHRoZW4gcHJlcGFyZSB0aGUKKyAgICAgICA8c3ltYm9s PlBHY2FuY2VsQ29ubjwvc3ltYm9sPiBvYmplY3Qgc3VjaCB0aGF0IGl0IGNhbiBiZSB1c2VkIHRv IHNlbmQgYQorICAgICAgIG5ldyBjYW5jZWwgcmVxdWVzdC4gVGhpcyBjYW4gYmUgdXNlZCB0byBj cmVhdGUgb25lIDxzeW1ib2w+UEdjYW5jZWxDb25uPC9zeW1ib2w+CisgICAgICAgZm9yIGEgPHN5 bWJvbD5QR2Nvbm48L3N5bWJvbD4gYW5kIHJldXNlIHRoYXQgbXVsdGlwbGUgdGltZXMgdGhyb3Vn aG91dAorICAgICAgIHRoZSBsaWZldGltZSBvZiB0aGUgb3JpZ2luYWwgPHN5bWJvbD5QR2Nvbm48 L3N5bWJvbD4uCisgICAgICA8L3BhcmE+CisgICAgIDwvbGlzdGl0ZW0+CisgICAgPC92YXJsaXN0 ZW50cnk+CisKICAgICA8dmFybGlzdGVudHJ5IGlkPSJsaWJwcS1QUWdldENhbmNlbCI+CiAgICAg IDx0ZXJtPjxmdW5jdGlvbj5QUWdldENhbmNlbDwvZnVuY3Rpb24+PGluZGV4dGVybT48cHJpbWFy eT5QUWdldENhbmNlbDwvcHJpbWFyeT48L2luZGV4dGVybT48L3Rlcm0+CiAKICAgICAgPGxpc3Rp dGVtPgogICAgICAgPHBhcmE+CiAgICAgICAgQ3JlYXRlcyBhIGRhdGEgc3RydWN0dXJlIGNvbnRh aW5pbmcgdGhlIGluZm9ybWF0aW9uIG5lZWRlZCB0byBjYW5jZWwKLSAgICAgICBhIGNvbW1hbmQg aXNzdWVkIHRocm91Z2ggYSBwYXJ0aWN1bGFyIGRhdGFiYXNlIGNvbm5lY3Rpb24uCisgICAgICAg YSBjb21tYW5kIHVzaW5nIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY2FuY2VsIi8+LgogPHN5bm9w c2lzPgogUEdjYW5jZWwgKlBRZ2V0Q2FuY2VsKFBHY29ubiAqY29ubik7CiA8L3N5bm9wc2lzPgpA QCAtNTY3NSwxNCArNTg4MiwzMCBAQCB2b2lkIFBRZnJlZUNhbmNlbChQR2NhbmNlbCAqY2FuY2Vs KTsKIAogICAgICA8bGlzdGl0ZW0+CiAgICAgICA8cGFyYT4KLSAgICAgICBSZXF1ZXN0cyB0aGF0 IHRoZSBzZXJ2ZXIgYWJhbmRvbiBwcm9jZXNzaW5nIG9mIHRoZSBjdXJyZW50IGNvbW1hbmQuCisg ICAgICAgQW4gaW5zZWN1cmUgdmVyc2lvbiBvZgorICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBx LVBRY2FuY2VsU2VuZCIvPiwgYnV0IG9uZSB0aGF0IGNhbiBiZSB1c2VkIHNhZmVseQorICAgICAg IGZyb20gd2l0aGluIGEgc2lnbmFsIGhhbmRsZXIuCiA8c3lub3BzaXM+CiBpbnQgUFFjYW5jZWwo UEdjYW5jZWwgKmNhbmNlbCwgY2hhciAqZXJyYnVmLCBpbnQgZXJyYnVmc2l6ZSk7CiA8L3N5bm9w c2lzPgogICAgICAgPC9wYXJhPgogCiAgICAgICA8cGFyYT4KLSAgICAgICBUaGUgcmV0dXJuIHZh bHVlIGlzIDEgaWYgdGhlIGNhbmNlbCByZXF1ZXN0IHdhcyBzdWNjZXNzZnVsbHkKKyAgICAgICA8 eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbCIvPiBzaG91bGQgb25seSBiZSB1c2VkIGlmIGl0 J3MgbmVjZXNzYXJ5CisgICAgICAgdG8gY2FuY2VsIGEgcXVlcnkgZnJvbSBhIHNpZ25hbC1oYW5k bGVyLiBJZiBzaWduYWwtc2FmZXR5IGlzIG5vdCBuZWVkZWQsCisgICAgICAgPHhyZWYgbGlua2Vu ZD0ibGlicHEtUFFjYW5jZWxTZW5kIi8+IHNob3VsZCBiZSB1c2VkIHRvIGNhbmNlbCB0aGUgcXVl cnkgCisgICAgICAgaW5zdGVhZC4KKyAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNl bCIvPiBjYW4gYmUgc2FmZWx5IGludm9rZWQgZnJvbSBhIHNpZ25hbAorICAgICAgIGhhbmRsZXIs IGlmIHRoZSA8cGFyYW1ldGVyPmVycmJ1ZjwvcGFyYW1ldGVyPiBpcyBhIGxvY2FsIHZhcmlhYmxl IGluIHRoZQorICAgICAgIHNpZ25hbCBoYW5kbGVyLiAgVGhlIDxzdHJ1Y3RuYW1lPlBHY2FuY2Vs PC9zdHJ1Y3RuYW1lPiBvYmplY3QgaXMgcmVhZC1vbmx5CisgICAgICAgYXMgZmFyIGFzIDx4cmVm IGxpbmtlbmQ9ImxpYnBxLVBRY2FuY2VsIi8+IGlzIGNvbmNlcm5lZCwgc28gaXQgY2FuCisgICAg ICAgYWxzbyBiZSBpbnZva2VkIGZyb20gYSB0aHJlYWQgdGhhdCBpcyBzZXBhcmF0ZSBmcm9tIHRo ZSBvbmUKKyAgICAgICBtYW5pcHVsYXRpbmcgdGhlIDxzdHJ1Y3RuYW1lPlBHY29ubjwvc3RydWN0 bmFtZT4gb2JqZWN0LgorICAgICAgPC9wYXJhPgorCisgICAgICA8cGFyYT4KKyAgICAgICBUaGUg cmV0dXJuIHZhbHVlIG9mIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY2FuY2VsIi8+CisgICAgICAg aXMgMSBpZiB0aGUgY2FuY2VsIHJlcXVlc3Qgd2FzIHN1Y2Nlc3NmdWxseQogICAgICAgIGRpc3Bh dGNoZWQgYW5kIDAgaWYgbm90LiAgSWYgbm90LCA8cGFyYW1ldGVyPmVycmJ1ZjwvcGFyYW1ldGVy PiBpcyBmaWxsZWQKICAgICAgICB3aXRoIGFuIGV4cGxhbmF0b3J5IGVycm9yIG1lc3NhZ2UuICA8 cGFyYW1ldGVyPmVycmJ1ZjwvcGFyYW1ldGVyPgogICAgICAgIG11c3QgYmUgYSBjaGFyIGFycmF5 IG9mIHNpemUgPHBhcmFtZXRlcj5lcnJidWZzaXplPC9wYXJhbWV0ZXI+ICh0aGUKQEAgLTU2OTAs MjEgKzU5MTMsMjIgQEAgaW50IFBRY2FuY2VsKFBHY2FuY2VsICpjYW5jZWwsIGNoYXIgKmVycmJ1 ZiwgaW50IGVycmJ1ZnNpemUpOwogICAgICAgPC9wYXJhPgogCiAgICAgICA8cGFyYT4KLSAgICAg ICBTdWNjZXNzZnVsIGRpc3BhdGNoIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSByZXF1ZXN0IHdp bGwgaGF2ZQotICAgICAgIGFueSBlZmZlY3QsIGhvd2V2ZXIuICBJZiB0aGUgY2FuY2VsbGF0aW9u IGlzIGVmZmVjdGl2ZSwgdGhlIGN1cnJlbnQKLSAgICAgICBjb21tYW5kIHdpbGwgdGVybWluYXRl IGVhcmx5IGFuZCByZXR1cm4gYW4gZXJyb3IgcmVzdWx0LiAgSWYgdGhlCi0gICAgICAgY2FuY2Vs bGF0aW9uIGZhaWxzIChzYXksIGJlY2F1c2UgdGhlIHNlcnZlciB3YXMgYWxyZWFkeSBkb25lCi0g ICAgICAgcHJvY2Vzc2luZyB0aGUgY29tbWFuZCksIHRoZW4gdGhlcmUgd2lsbCBiZSBubyB2aXNp YmxlIHJlc3VsdCBhdAotICAgICAgIGFsbC4KLSAgICAgIDwvcGFyYT4KLQotICAgICAgPHBhcmE+ Ci0gICAgICAgPHhyZWYgbGlua2VuZD0ibGlicHEtUFFjYW5jZWwiLz4gY2FuIHNhZmVseSBiZSBp bnZva2VkIGZyb20gYSBzaWduYWwKLSAgICAgICBoYW5kbGVyLCBpZiB0aGUgPHBhcmFtZXRlcj5l cnJidWY8L3BhcmFtZXRlcj4gaXMgYSBsb2NhbCB2YXJpYWJsZSBpbiB0aGUKLSAgICAgICBzaWdu YWwgaGFuZGxlci4gIFRoZSA8c3RydWN0bmFtZT5QR2NhbmNlbDwvc3RydWN0bmFtZT4gb2JqZWN0 IGlzIHJlYWQtb25seQotICAgICAgIGFzIGZhciBhcyA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNh bmNlbCIvPiBpcyBjb25jZXJuZWQsIHNvIGl0IGNhbgotICAgICAgIGFsc28gYmUgaW52b2tlZCBm cm9tIGEgdGhyZWFkIHRoYXQgaXMgc2VwYXJhdGUgZnJvbSB0aGUgb25lCi0gICAgICAgbWFuaXB1 bGF0aW5nIHRoZSA8c3RydWN0bmFtZT5QR2Nvbm48L3N0cnVjdG5hbWU+IG9iamVjdC4KKyAgICAg ICBUbyBhY2hpZXZlIHNpZ25hbC1zYWZldHksIHNvbWUgY29uY2Vzc2lvbnMgbmVlZGVkIHRvIGJl IG1hZGUgaW4gdGhlCisgICAgICAgaW1wbGVtZW50YXRpb24gb2YgPHhyZWYgbGlua2VuZD0ibGli cHEtUFFjYW5jZWwiLz4uIE5vdCBhbGwgY29ubmVjdGlvbgorICAgICAgIG9wdGlvbnMgb2YgdGhl IG9yaWdpbmFsIGNvbm5lY3Rpb24gYXJlIHVzZWQgd2hlbiBlc3RhYmxpc2hpbmcgYQorICAgICAg IGNvbm5lY3Rpb24gZm9yIHRoZSBjYW5jZWxsYXRpb24gcmVxdWVzdC4gV2hlbiBjYWxsaW5nIHRo aXMgZnVuY3Rpb24gYQorICAgICAgIGNvbm5lY3Rpb24gaXMgbWFkZSB0byB0aGUgcG9zdGdyZXMg aG9zdCB1c2luZyB0aGUgc2FtZSBwb3J0LiBUaGUgb25seQorICAgICAgIGNvbm5lY3Rpb24gb3B0 aW9ucyB0aGF0IGFyZSBob25vcmVkIGR1cmluZyB0aGlzIGNvbm5lY3Rpb24gYXJlCisgICAgICAg PHZhcm5hbWU+a2VlcGFsaXZlczwvdmFybmFtZT4sCisgICAgICAgPHZhcm5hbWU+a2VlcGFsaXZl c19pZGxlPC92YXJuYW1lPiwKKyAgICAgICA8dmFybmFtZT5rZWVwYWxpdmVzX2ludGVydmFsPC92 YXJuYW1lPiwKKyAgICAgICA8dmFybmFtZT5rZWVwYWxpdmVzX2NvdW50PC92YXJuYW1lPiwgYW5k CisgICAgICAgPHZhcm5hbWU+dGNwX3VzZXJfdGltZW91dDwvdmFybmFtZT4uCisgICAgICAgU28s IGZvciBleGFtcGxlCisgICAgICAgPHZhcm5hbWU+Y29ubmVjdF90aW1lb3V0PC92YXJuYW1lPiwK KyAgICAgICA8dmFybmFtZT5nc3NlbmNtb2RlPC92YXJuYW1lPiwgYW5kCisgICAgICAgPHZhcm5h bWU+c3NsbW9kZTwvdmFybmFtZT4gYXJlIGlnbm9yZWQuIDxlbXBoYXNpcz5UaGlzIG1lYW5zIHRo ZSBjb25uZWN0aW9uCisgICAgICAgaXMgbmV2ZXIgZW5jcnlwdGVkIHVzaW5nIFRMUyBvciBHU1M8 L2VtcGhhc2lzPi4KICAgICAgIDwvcGFyYT4KICAgICAgPC9saXN0aXRlbT4KICAgICA8L3Zhcmxp c3RlbnRyeT4KQEAgLTU3MTYsMTMgKzU5NDAsMjIgQEAgaW50IFBRY2FuY2VsKFBHY2FuY2VsICpj YW5jZWwsIGNoYXIgKmVycmJ1ZiwgaW50IGVycmJ1ZnNpemUpOwogCiAgICAgIDxsaXN0aXRlbT4K ICAgICAgIDxwYXJhPgotICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRcmVxdWVzdENhbmNl bCIvPiBpcyBhIGRlcHJlY2F0ZWQgdmFyaWFudCBvZgotICAgICAgIDx4cmVmIGxpbmtlbmQ9Imxp YnBxLVBRY2FuY2VsIi8+LgorICAgICAgIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRcmVxdWVzdENh bmNlbCIvPiBpcyBhIGRlcHJlY2F0ZWQgYW5kIGluc2VjdXJlCisgICAgICAgdmFyaWFudCBvZiA8 eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbFNlbmQiLz4uCiA8c3lub3BzaXM+CiBpbnQgUFFy ZXF1ZXN0Q2FuY2VsKFBHY29ubiAqY29ubik7CiA8L3N5bm9wc2lzPgogICAgICAgPC9wYXJhPgog CisgICAgICA8cGFyYT4KKyAgICAgICA8eHJlZiBsaW5rZW5kPSJsaWJwcS1QUXJlcXVlc3RDYW5j ZWwiLz4gb25seSBleGlzdHMgYmVjYXVzZSBvZiBiYWNrd2FyZHMKKyAgICAgICBjb21wYXRpYmls aXR5IHJlYXNvbnMuIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRY2FuY2VsU2VuZCIvPiBzaG91bGQg YmUKKyAgICAgICB1c2VkIGluc3RlYWQsIHRvIGF2b2lkIHRoZSBzZWN1cml0eSBhbmQgdGhyZWFk LXNhZmV0eSBpc3N1ZXMgdGhhdCB0aGlzCisgICAgICAgZnVuY3Rpb24gaGFzLiBUaGlzIGZ1bmN0 aW9uIGhhcyB0aGUgc2FtZSBzZWN1cml0eSBpc3N1ZXMgYXMKKyAgICAgICA8eHJlZiBsaW5rZW5k PSJsaWJwcS1QUWNhbmNlbCIvPiwgYnV0IHdpdGhvdXQgdGhlIGJlbmVmaXQgb2YgYmVpbmcKKyAg ICAgICBzaWduYWwtc2FmZS4KKyAgICAgIDwvcGFyYT4KKwogICAgICAgPHBhcmE+CiAgICAgICAg UmVxdWVzdHMgdGhhdCB0aGUgc2VydmVyIGFiYW5kb24gcHJvY2Vzc2luZyBvZiB0aGUgY3VycmVu dAogICAgICAgIGNvbW1hbmQuICBJdCBvcGVyYXRlcyBkaXJlY3RseSBvbiB0aGUKQEAgLTg4NzEs NyArOTEwNCw3IEBAIGludCBQUWlzdGhyZWFkc2FmZSgpOwogICAgVGhlIGRlcHJlY2F0ZWQgZnVu Y3Rpb25zIDx4cmVmIGxpbmtlbmQ9ImxpYnBxLVBRcmVxdWVzdENhbmNlbCIvPiBhbmQKICAgIDx4 cmVmIGxpbmtlbmQ9ImxpYnBxLVBRb2lkU3RhdHVzIi8+IGFyZSBub3QgdGhyZWFkLXNhZmUgYW5k IHNob3VsZCBub3QgYmUKICAgIHVzZWQgaW4gbXVsdGl0aHJlYWQgcHJvZ3JhbXMuICA8eHJlZiBs aW5rZW5kPSJsaWJwcS1QUXJlcXVlc3RDYW5jZWwiLz4KLSAgIGNhbiBiZSByZXBsYWNlZCBieSA8 eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbCIvPi4KKyAgIGNhbiBiZSByZXBsYWNlZCBieSA8 eHJlZiBsaW5rZW5kPSJsaWJwcS1QUWNhbmNlbFNlbmQiLz4uCiAgICA8eHJlZiBsaW5rZW5kPSJs aWJwcS1QUW9pZFN0YXR1cyIvPiBjYW4gYmUgcmVwbGFjZWQgYnkKICAgIDx4cmVmIGxpbmtlbmQ9 ImxpYnBxLVBRb2lkVmFsdWUiLz4uCiAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3NyYy9mZV91dGls cy9jb25uZWN0X3V0aWxzLmMgYi9zcmMvZmVfdXRpbHMvY29ubmVjdF91dGlscy5jCmluZGV4IDFj Yzk3YjcyZjcuLjBmNWU4NGFkNzEgMTAwNjQ0Ci0tLSBhL3NyYy9mZV91dGlscy9jb25uZWN0X3V0 aWxzLmMKKysrIGIvc3JjL2ZlX3V0aWxzL2Nvbm5lY3RfdXRpbHMuYwpAQCAtMTU3LDE5ICsxNTcs MTEgQEAgY29ubmVjdE1haW50ZW5hbmNlRGF0YWJhc2UoQ29ublBhcmFtcyAqY3BhcmFtcywKIHZv aWQKIGRpc2Nvbm5lY3REYXRhYmFzZShQR2Nvbm4gKmNvbm4pCiB7Ci0JY2hhcgkJZXJyYnVmWzI1 Nl07Ci0KIAlBc3NlcnQoY29ubiAhPSBOVUxMKTsKIAogCWlmIChQUXRyYW5zYWN0aW9uU3RhdHVz KGNvbm4pID09IFBRVFJBTlNfQUNUSVZFKQogCXsKLQkJUEdjYW5jZWwgICAqY2FuY2VsOwotCi0J CWlmICgoY2FuY2VsID0gUFFnZXRDYW5jZWwoY29ubikpKQotCQl7Ci0JCQkodm9pZCkgUFFjYW5j ZWwoY2FuY2VsLCBlcnJidWYsIHNpemVvZihlcnJidWYpKTsKLQkJCVBRZnJlZUNhbmNlbChjYW5j ZWwpOwotCQl9CisJCVBRY2FuY2VsRmluaXNoKFBRY2FuY2VsU2VuZChjb25uKSk7CiAJfQogCiAJ UFFmaW5pc2goY29ubik7CmRpZmYgLS1naXQgYS9zcmMvaW50ZXJmYWNlcy9saWJwcS9leHBvcnRz LnR4dCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0CmluZGV4IGU4YmNjODgzNzAu LmY1NmU4YzE4NWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0 CisrKyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2V4cG9ydHMudHh0CkBAIC0xODYsMyArMTg2LDEx IEBAIFBRcGlwZWxpbmVTdGF0dXMgICAgICAgICAgMTgzCiBQUXNldFRyYWNlRmxhZ3MgICAgICAg ICAgIDE4NAogUFFtYmxlbkJvdW5kZWQgICAgICAgICAgICAxODUKIFBRc2VuZEZsdXNoUmVxdWVz dCAgICAgICAgMTg2CitQUWNhbmNlbFNlbmQgICAgICAgICAgICAgIDE4NworUFFjYW5jZWxDb25u ICAgICAgICAgICAgICAxODgKK1BRY2FuY2VsUG9sbCAgICAgICAgICAgICAgMTg5CitQUWNhbmNl bFN0YXR1cyAgICAgICAgICAgIDE5MAorUFFjYW5jZWxTb2NrZXQgICAgICAgICAgICAxOTEKK1BR Y2FuY2VsRXJyb3JNZXNzYWdlICAgICAgMTkyCitQUWNhbmNlbFJlc2V0ICAgICAgICAgICAgIDE5 MworUFFjYW5jZWxGaW5pc2ggICAgICAgICAgICAxOTQKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZh Y2VzL2xpYnBxL2ZlLWNvbm5lY3QuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLWNvbm5lY3Qu YwppbmRleCA3NDZlOWI0ZjFlLi43YjU5Njk3ZTY0IDEwMDY0NAotLS0gYS9zcmMvaW50ZXJmYWNl cy9saWJwcS9mZS1jb25uZWN0LmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtY29ubmVj dC5jCkBAIC0zNzYsNiArMzc2LDcgQEAgc3RhdGljIFBHUGluZyBpbnRlcm5hbF9waW5nKFBHY29u biAqY29ubik7CiBzdGF0aWMgUEdjb25uICptYWtlRW1wdHlQR2Nvbm4odm9pZCk7CiBzdGF0aWMg dm9pZCBwcUZyZWVDb21tYW5kUXVldWUoUEdjbWRRdWV1ZUVudHJ5ICpxdWV1ZSk7CiBzdGF0aWMg Ym9vbCBmaWxsUEdjb25uKFBHY29ubiAqY29ubiwgUFFjb25uaW5mb09wdGlvbiAqY29ubk9wdGlv bnMpOworc3RhdGljIGJvb2wgY29weVBHY29ubihQR2Nvbm4gKnNyY0Nvbm4sIFBHY29ubiAqZHN0 Q29ubik7CiBzdGF0aWMgdm9pZCBmcmVlUEdjb25uKFBHY29ubiAqY29ubik7CiBzdGF0aWMgdm9p ZCBjbG9zZVBHY29ubihQR2Nvbm4gKmNvbm4pOwogc3RhdGljIHZvaWQgcmVsZWFzZV9jb25uX2Fk ZHJpbmZvKFBHY29ubiAqY29ubik7CkBAIC01OTksOCArNjAwLDE3IEBAIHBxRHJvcFNlcnZlckRh dGEoUEdjb25uICpjb25uKQogCWNvbm4tPndyaXRlX2ZhaWxlZCA9IGZhbHNlOwogCWZyZWUoY29u bi0+d3JpdGVfZXJyX21zZyk7CiAJY29ubi0+d3JpdGVfZXJyX21zZyA9IE5VTEw7Ci0JY29ubi0+ YmVfcGlkID0gMDsKLQljb25uLT5iZV9rZXkgPSAwOworCisJLyoKKwkgKiBDYW5jZWwgY29ubmVj dGlvbnMgc2hvdWxkIHNhdmUgdGhlaXIgYmVfcGlkIGFuZCBiZV9rZXkgYWNyb3NzCisJICogUFFy ZXNldFN0YXJ0IGludm9jYXRpb25zLiBPdGhlcndpc2UgdGhleSBkb24ndCBrbm93IHRoZSBzZWNy ZXQgdG9rZW4gb2YKKwkgKiB0aGUgY29ubmVjdGlvbiB0aGV5IGFyZSBzdXBwb3NlZCB0byBjYW5j ZWwgYW55bW9yZS4KKwkgKi8KKwlpZiAoIWNvbm4tPmNhbmNlbFJlcXVlc3QpCisJeworCQljb25u LT5iZV9waWQgPSAwOworCQljb25uLT5iZV9rZXkgPSAwOworCX0KIH0KIAogCkBAIC03MzEsNiAr NzQxLDY4IEBAIFBRcGluZyhjb25zdCBjaGFyICpjb25uaW5mbykKIAlyZXR1cm4gcmV0OwogfQog CisvKgorICoJCVBRY2FuY2VsQ29ubgorICoKKyAqIEFzeW5jaHJvbm91c2x5IGNhbmNlbCBhIHJl cXVlc3Qgb24gdGhlIGdpdmVuIGNvbm5lY3Rpb24uIFRoaXMgcmVxdWlyZXMKKyAqIHBvbGxpbmcg dGhlIHJldHVybmVkIFBHY29ubiB0byBhY3R1YWxseSBjb21wbGV0ZSB0aGUgY2FuY2VsbGF0aW9u IG9mIHRoZQorICogcmVxdWVzdC4KKyAqLworUEdjYW5jZWxDb25uICoKK1BRY2FuY2VsQ29ubihQ R2Nvbm4gKmNvbm4pCit7CisJUEdjb25uCSAgICpjYW5jZWxDb25uID0gbWFrZUVtcHR5UEdjb25u KCk7CisKKwlpZiAoY2FuY2VsQ29ubiA9PSBOVUxMKQorCQlyZXR1cm4gTlVMTDsKKworCS8qIENo ZWNrIHdlIGhhdmUgYW4gb3BlbiBjb25uZWN0aW9uICovCisJaWYgKCFjb25uKQorCXsKKwkJYXBw ZW5kUFFFeHBCdWZmZXJTdHIoJmNhbmNlbENvbm4tPmVycm9yTWVzc2FnZSwgbGlicHFfZ2V0dGV4 dCgicGFzc2VkIGNvbm5lY3Rpb24gd2FzIE5VTExcbiIpKTsKKwkJcmV0dXJuIChQR2NhbmNlbENv bm4gKikgY2FuY2VsQ29ubjsKKwl9CisKKwlpZiAoY29ubi0+c29jayA9PSBQR0lOVkFMSURfU09D S0VUKQorCXsKKwkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmNhbmNlbENvbm4tPmVycm9yTWVzc2Fn ZSwgbGlicHFfZ2V0dGV4dCgicGFzc2VkIGNvbm5lY3Rpb24gaXMgbm90IG9wZW5cbiIpKTsKKwkJ cmV0dXJuIChQR2NhbmNlbENvbm4gKikgY2FuY2VsQ29ubjsKKwl9CisKKwkvKgorCSAqIEluZGlj YXRlIHRoYXQgdGhpcyBjb25uZWN0aW9uIGlzIHVzZWQgdG8gc2VuZCBhIGNhbmNlbGxhdGlvbgor CSAqLworCWNhbmNlbENvbm4tPmNhbmNlbFJlcXVlc3QgPSB0cnVlOworCisJaWYgKCFjb3B5UEdj b25uKGNvbm4sIGNhbmNlbENvbm4pKQorCQlyZXR1cm4gKFBHY2FuY2VsQ29ubiAqKSBjYW5jZWxD b25uOworCisJLyoKKwkgKiBDb21wdXRlIGRlcml2ZWQgb3B0aW9ucworCSAqLworCWlmICghY29u bmVjdE9wdGlvbnMyKGNhbmNlbENvbm4pKQorCQlyZXR1cm4gKFBHY2FuY2VsQ29ubiAqKSBjYW5j ZWxDb25uOworCisJLyoKKwkgKiBDb3B5IGNhbmNlbGF0aW9uIHRva2VuIGRhdGEgZnJvbSB0aGUg b3JpZ2luYWwgY29ubm5lY3Rpb24KKwkgKi8KKwljYW5jZWxDb25uLT5iZV9waWQgPSBjb25uLT5i ZV9waWQ7CisJY2FuY2VsQ29ubi0+YmVfa2V5ID0gY29ubi0+YmVfa2V5OworCisJLyoKKwkgKiBD YW5jZWwgcmVxdWVzdHMgc2hvdWxkIG5vdCBpdGVyYXRlIG92ZXIgYWxsIHBvc3NpYmxlIGhvc3Rz LiBUaGUgcmVxdWVzdAorCSAqIG5lZWRzIHRvIGJlIHNlbnQgdG8gdGhlIGV4YWN0IGhvc3QgYW5k IGFkZHJlc3MgdGhhdCB0aGUgb3JpZ2luYWwKKwkgKiBjb25uZWN0aW9uIHVzZWQuCisJICovCisJ bWVtY3B5KCZjYW5jZWxDb25uLT5yYWRkciwgJmNvbm4tPnJhZGRyLCBzaXplb2YoU29ja0FkZHIp KTsKKwljYW5jZWxDb25uLT53aGljaGhvc3QgPSBjb25uLT53aGljaGhvc3Q7CisJY29ubi0+dHJ5 X25leHRfaG9zdCA9IGZhbHNlOworCWNvbm4tPnRyeV9uZXh0X2FkZHIgPSBmYWxzZTsKKworCWNh bmNlbENvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05fU1RBUlRJTkc7CisJcmV0dXJuIChQR2NhbmNl bENvbm4gKikgY2FuY2VsQ29ubjsKK30KKwogLyoKICAqCQlQUWNvbm5lY3RTdGFydFBhcmFtcwog ICoKQEAgLTkwNyw2ICs5NzksNDYgQEAgZmlsbFBHY29ubihQR2Nvbm4gKmNvbm4sIFBRY29ubmlu Zm9PcHRpb24gKmNvbm5PcHRpb25zKQogCXJldHVybiB0cnVlOwogfQogCisvKgorICogQ29weSBv dmVyIG9wdGlvbiB2YWx1ZXMgZnJvbSBzcmNDb25uIHRvIGRzdENvbm4KKyAqCisgKiBEb24ndCBw dXQgYW55dGhpbmcgY3V0ZSBoZXJlIC0tLSBpbnRlbGxpZ2VuY2Ugc2hvdWxkIGJlIGluCisgKiBj b25uZWN0T3B0aW9uczIgLi4uCisgKgorICogUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3MuIE9uIGZh aWx1cmUsIHJldHVybnMgZmFsc2UgYW5kIHNldHMgZXJyb3IgbWVzc2FnZSBvZgorICogZHN0Q29u bi4KKyAqLworc3RhdGljIGJvb2wKK2NvcHlQR2Nvbm4oUEdjb25uICpzcmNDb25uLCBQR2Nvbm4g KmRzdENvbm4pCit7CisJY29uc3QgaW50ZXJuYWxQUWNvbm5pbmZvT3B0aW9uICpvcHRpb247CisK KwkvKiBjb3B5IG92ZXIgY29ubmVjdGlvbiBvcHRpb25zICovCisJZm9yIChvcHRpb24gPSBQUWNv bm5pbmZvT3B0aW9uczsgb3B0aW9uLT5rZXl3b3JkOyBvcHRpb24rKykKKwl7CisJCWlmIChvcHRp b24tPmNvbm5vZnMgPj0gMCkKKwkJeworCQkJY29uc3QgY2hhciAqKnRtcCA9IChjb25zdCBjaGFy ICoqKSAoKGNoYXIgKikgc3JjQ29ubiArIG9wdGlvbi0+Y29ubm9mcyk7CisKKwkJCWlmICgqdG1w KQorCQkJeworCQkJCWNoYXIJICAqKmRzdENvbm5tZW1iZXIgPSAoY2hhciAqKikgKChjaGFyICop IGRzdENvbm4gKyBvcHRpb24tPmNvbm5vZnMpOworCisJCQkJaWYgKCpkc3RDb25ubWVtYmVyKQor CQkJCQlmcmVlKCpkc3RDb25ubWVtYmVyKTsKKwkJCQkqZHN0Q29ubm1lbWJlciA9IHN0cmR1cCgq dG1wKTsKKwkJCQlpZiAoKmRzdENvbm5tZW1iZXIgPT0gTlVMTCkKKwkJCQl7CisJCQkJCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZkc3RDb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJCQkJIGxpYnBx X2dldHRleHQoIm91dCBvZiBtZW1vcnlcbiIpKTsKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJCX0K KwkJCX0KKwkJfQorCX0KKwlyZXR1cm4gdHJ1ZTsKK30KKwogLyoKICAqCQljb25uZWN0T3B0aW9u czEKICAqCkBAIC0yMDU1LDEwICsyMTY3LDE3IEBAIGNvbm5lY3REQlN0YXJ0KFBHY29ubiAqY29u bikKIAkgKiBTZXQgdXAgdG8gdHJ5IHRvIGNvbm5lY3QgdG8gdGhlIGZpcnN0IGhvc3QuICAoU2V0 dGluZyB3aGljaGhvc3QgPSAtMSBpcwogCSAqIGEgYml0IG9mIGEgY2hlYXQsIGJ1dCBQUWNvbm5l Y3RQb2xsIHdpbGwgYWR2YW5jZSBpdCB0byAwIGJlZm9yZQogCSAqIGFueXRoaW5nIGVsc2UgbG9v a3MgYXQgaXQuKQorCSAqCisJICogQ2FuY2VsIHJlcXVlc3RzIGFyZSBzcGVjaWFsIHRob3VnaCwg dGhleSBzaG91bGQgb25seSB0cnkgb25lIGhvc3QsCisJICogd2hpY2ggaXMgZGV0ZXJtaW5lZCBp biBQUWNhbmNlbENvbm4uIFNvIGxlYXZlIHRoZXNlIHNldHRpbmdzCisJICogYWxvbmUgZm9yIGNh bmNlbCByZXF1ZXN0cy4KIAkgKi8KLQljb25uLT53aGljaGhvc3QgPSAtMTsKLQljb25uLT50cnlf bmV4dF9hZGRyID0gZmFsc2U7Ci0JY29ubi0+dHJ5X25leHRfaG9zdCA9IHRydWU7CisJaWYgKCFj b25uLT5jYW5jZWxSZXF1ZXN0KQorCXsKKwkJY29ubi0+d2hpY2hob3N0ID0gLTE7CisJCWNvbm4t PnRyeV9uZXh0X2hvc3QgPSB0cnVlOworCQljb25uLT50cnlfbmV4dF9hZGRyID0gZmFsc2U7CisJ fQogCWNvbm4tPnN0YXR1cyA9IENPTk5FQ1RJT05fTkVFREVEOwogCiAJLyogQWxzbyByZXNldCB0 aGUgdGFyZ2V0X3NlcnZlcl90eXBlIHN0YXRlIGlmIG5lZWRlZCAqLwpAQCAtMjEwNyw2ICsyMjI2 LDE1IEBAIGNvbm5lY3REQkNvbXBsZXRlKFBHY29ubiAqY29ubikKIAlpZiAoY29ubiA9PSBOVUxM IHx8IGNvbm4tPnN0YXR1cyA9PSBDT05ORUNUSU9OX0JBRCkKIAkJcmV0dXJuIDA7CiAKKwlpZiAo Y29ubi0+c3RhdHVzID09IENPTk5FQ1RJT05fU1RBUlRJTkcpCisJeworCQlpZiAoIWNvbm5lY3RE QlN0YXJ0KGNvbm4pKQorCQl7CisJCQljb25uLT5zdGF0dXMgPSBDT05ORUNUSU9OX0JBRDsKKwkJ CXJldHVybiAwOworCQl9CisJfQorCiAJLyoKIAkgKiBTZXQgdXAgYSB0aW1lIGxpbWl0LCBpZiBj b25uZWN0X3RpbWVvdXQgaXNuJ3QgemVyby4KIAkgKi8KQEAgLTIyNDcsOCArMjM3NSw4IEBAIFBR Y29ubmVjdFBvbGwoUEdjb25uICpjb25uKQogCXN3aXRjaCAoY29ubi0+c3RhdHVzKQogCXsKIAkJ CS8qCi0JCQkgKiBXZSByZWFsbHkgc2hvdWxkbid0IGhhdmUgYmVlbiBwb2xsZWQgaW4gdGhlc2Ug dHdvIGNhc2VzLCBidXQgd2UKLQkJCSAqIGNhbiBoYW5kbGUgaXQuCisJCQkgKiBXZSByZWFsbHkg c2hvdWxkbid0IGhhdmUgYmVlbiBwb2xsZWQgaW4gdGhlc2UgdGhyZWUgY2FzZXMsIGJ1dAorCQkJ ICogd2UgY2FuIGhhbmRsZSBpdC4KIAkJCSAqLwogCQljYXNlIENPTk5FQ1RJT05fQkFEOgogCQkJ cmV0dXJuIFBHUkVTX1BPTExJTkdfRkFJTEVEOwpAQCAtMjI2NSw2ICsyMzkzLDM0IEBAIFBRY29u bmVjdFBvbGwoUEdjb25uICpjb25uKQogCQkJCS8qIExvYWQgd2FpdGluZyBkYXRhICovCiAJCQkJ aW50CQkJbiA9IHBxUmVhZERhdGEoY29ubik7CiAKKyNpZm5kZWYgV0lOMzIKKwkJCQlpZiAobiA9 PSAtMiAmJiBjb25uLT5jYW5jZWxSZXF1ZXN0KQorI2Vsc2UKKworCQkJCS8qCisJCQkJICogV2lu ZG93cyBpcyBhIGJpdCBzcGVjaWFsIGluIGl0cyBFT0YgYmVoYXZpb3VyIGZvciBUQ1AuCisJCQkJ ICogU29tZXRpbWVzIGl0IHdpbGwgZXJyb3Igd2l0aCBhbiBFQ09OTlJFU0VUIHdoZW4gdGhlcmUg aXMgYQorCQkJCSAqIGNsZWFuIGNvbm5lY3Rpb24gY2xvc3VyZS4gU2VlIHRoZXNlIHRocmVhZHMg Zm9yIGRldGFpbHM6CisJCQkJICogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1p ZC9mbGF0LzkwYjM0MDU3LTQxNzYtN2JiMC0wZGJiLTk4MjJhNWY2NDI1YiU0MGdyZWl6LXJlaW5z ZG9yZi5kZQorCQkJCSAqCisJCQkJICogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2Fn ZS1pZC9mbGF0L0NBJTJCaFVLRyUyQk9lb0VUWlElM0RRdzVVYjVoM3Rtd1FoQm1EQSUzRG51Tk8z S0clM0R6V2ZVeXBGQXclNDBtYWlsLmdtYWlsLmNvbQorCQkJCSAqCisJCQkJICogUFFjYW5jZWwg aWdub3JlcyBzdWNoIGVycm9ycyBhbmQgcmVwb3J0cyBzdWNjZXNzIGZvciB0aGUKKwkJCQkgKiBj YW5jZWxsYXRpb24gYW55d2F5LCBzbyBldmVuIGlmIHRoaXMgaXMgbm90IGFsd2F5cyBjb3JyZWN0 CisJCQkJICogd2UgZG8gdGhlIHNhbWUgaGVyZS4KKwkJCQkgKi8KKwkJCQlpZiAobiA8IDAgJiYg Y29ubi0+Y2FuY2VsUmVxdWVzdCkKKyNlbmRpZgorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogVGhp cyBpcyB0aGUgZXhwZWN0ZWQgZW5kIHN0YXRlIGZvciBjYW5jZWwgY29ubmVjdGlvbnMuCisJCQkJ CSAqIFRoZXkgYXJlIGNsb3NlZCBvbmNlIHRoZSBjYW5jZWwgaXMgcHJvY2Vzc2VkIGJ5IHRoZQor CQkJCQkgKiBzZXJ2ZXIuCisJCQkJCSAqLworCQkJCQljb25uLT5zdGF0dXMgPSBDT05ORUNUSU9O X09LOworCQkJCQlyZXNldFBRRXhwQnVmZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UpOworCQkJCQly ZXR1cm4gUEdSRVNfUE9MTElOR19PSzsKKwkJCQl9CiAJCQkJaWYgKG4gPCAwKQogCQkJCQlnb3Rv IGVycm9yX3JldHVybjsKIAkJCQlpZiAobiA9PSAwKQpAQCAtMjI3NCw2ICsyNDMwLDcgQEAgUFFj b25uZWN0UG9sbChQR2Nvbm4gKmNvbm4pCiAJCQl9CiAKIAkJCS8qIFRoZXNlIGFyZSB3cml0aW5n IHN0YXRlcywgc28gd2UganVzdCBwcm9jZWVkLiAqLworCQljYXNlIENPTk5FQ1RJT05fU1RBUlRJ Tkc6CiAJCWNhc2UgQ09OTkVDVElPTl9TVEFSVEVEOgogCQljYXNlIENPTk5FQ1RJT05fTUFERToK IAkJCWJyZWFrOwpAQCAtMjI5OCw2ICsyNDU1LDE0IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyogV2Ug d2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCS8qIFRpbWUgdG8gYWR2YW5j ZSB0byBuZXh0IGFkZHJlc3MsIG9yIG5leHQgaG9zdCBpZiBubyBtb3JlIGFkZHJlc3Nlcz8gKi8K IAlpZiAoY29ubi0+dHJ5X25leHRfYWRkcikKIAl7CisJCS8qCisJCSAqIENhbmNlbCByZXF1ZXN0 cyBuZXZlciBoYXZlIG1vcmUgYWRkcmVzc2VzIHRvIHRyeS4gVGhleSBzaG91bGQgb25seQorCQkg KiB0cnkgYSBzaW5nbGUgb25lLgorCQkgKi8KKwkJaWYgKGNvbm4tPmNhbmNlbFJlcXVlc3QpCisJ CXsKKwkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQl9CiAJCWlmIChjb25uLT5hZGRyX2N1ciAmJiBj b25uLT5hZGRyX2N1ci0+YWlfbmV4dCkKIAkJewogCQkJY29ubi0+YWRkcl9jdXIgPSBjb25uLT5h ZGRyX2N1ci0+YWlfbmV4dDsKQEAgLTIzMTcsNiArMjQ4MiwxNSBAQCBrZWVwX2dvaW5nOgkJCQkJ CS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50aWwgdGhlcmUgaXMKIAkJaW50CQkJcmV0 OwogCQljaGFyCQlwb3J0c3RyW01BWFBHUEFUSF07CiAKKwkJLyoKKwkJICogQ2FuY2VsIHJlcXVl c3RzIG5ldmVyIGhhdmUgbW9yZSBob3N0cyB0byB0cnkuIFRoZXkgc2hvdWxkIG9ubHkgdHJ5CisJ CSAqIGEgc2luZ2xlIG9uZS4KKwkJICovCisJCWlmIChjb25uLT5jYW5jZWxSZXF1ZXN0KQorCQl7 CisJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJfQorCiAJCWlmIChjb25uLT53aGljaGhvc3QgKyAx IDwgY29ubi0+bmNvbm5ob3N0KQogCQkJY29ubi0+d2hpY2hob3N0Kys7CiAJCWVsc2UKQEAgLTI0 OTgsMTkgKzI2NzIsMjcgQEAga2VlcF9nb2luZzoJCQkJCQkvKiBXZSB3aWxsIGNvbWUgYmFjayB0 byBoZXJlIHVudGlsIHRoZXJlIGlzCiAJCQkJCWNoYXIJCWhvc3RfYWRkcltOSV9NQVhIT1NUXTsK IAogCQkJCQkvKgotCQkJCQkgKiBBZHZhbmNlIHRvIG5leHQgcG9zc2libGUgaG9zdCwgaWYgd2Un dmUgdHJpZWQgYWxsIG9mCi0JCQkJCSAqIHRoZSBhZGRyZXNzZXMgZm9yIHRoZSBjdXJyZW50IGhv c3QuCisJCQkJCSAqIENhbmNlbCByZXF1ZXN0cyBkb24ndCB1c2UgYWRkcl9jdXIgYXQgYWxsLiBU aGV5IGhhdmUKKwkJCQkJICogdGhlaXIgcmFkZHIgZmllbGQgYWxyZWFkeSBmaWxsZWQgaW4gZHVy aW5nCisJCQkJCSAqIGluaXRpYWxpemF0aW9uIGluIFBRY2FuY2VsQ29ubi4KIAkJCQkJICovCi0J CQkJCWlmIChhZGRyX2N1ciA9PSBOVUxMKQorCQkJCQlpZiAoIWNvbm4tPmNhbmNlbFJlcXVlc3Qp CiAJCQkJCXsKLQkJCQkJCWNvbm4tPnRyeV9uZXh0X2hvc3QgPSB0cnVlOwotCQkJCQkJZ290byBr ZWVwX2dvaW5nOwotCQkJCQl9CisJCQkJCQkvKgorCQkJCQkJICogQWR2YW5jZSB0byBuZXh0IHBv c3NpYmxlIGhvc3QsIGlmIHdlJ3ZlIHRyaWVkIGFsbAorCQkJCQkJICogb2YgdGhlIGFkZHJlc3Nl cyBmb3IgdGhlIGN1cnJlbnQgaG9zdC4KKwkJCQkJCSAqLworCQkJCQkJaWYgKGFkZHJfY3VyID09 IE5VTEwpCisJCQkJCQl7CisJCQkJCQkJY29ubi0+dHJ5X25leHRfaG9zdCA9IHRydWU7CisJCQkJ CQkJZ290byBrZWVwX2dvaW5nOworCQkJCQkJfQogCi0JCQkJCS8qIFJlbWVtYmVyIGN1cnJlbnQg YWRkcmVzcyBmb3IgcG9zc2libGUgdXNlIGxhdGVyICovCi0JCQkJCW1lbWNweSgmY29ubi0+cmFk ZHIuYWRkciwgYWRkcl9jdXItPmFpX2FkZHIsCi0JCQkJCQkgICBhZGRyX2N1ci0+YWlfYWRkcmxl bik7Ci0JCQkJCWNvbm4tPnJhZGRyLnNhbGVuID0gYWRkcl9jdXItPmFpX2FkZHJsZW47CisJCQkJ CQkvKiBSZW1lbWJlciBjdXJyZW50IGFkZHJlc3MgZm9yIHBvc3NpYmxlIHVzZSBsYXRlciAqLwor CQkJCQkJbWVtY3B5KCZjb25uLT5yYWRkci5hZGRyLCBhZGRyX2N1ci0+YWlfYWRkciwKKwkJCQkJ CQkgICBhZGRyX2N1ci0+YWlfYWRkcmxlbik7CisJCQkJCQljb25uLT5yYWRkci5zYWxlbiA9IGFk ZHJfY3VyLT5haV9hZGRybGVuOworCQkJCQl9CiAKIAkJCQkJLyoKIAkJCQkJICogU2V0IGNvbm5p cCwgdG9vLiAgTm90ZSB3ZSBwdXJwb3NlbHkgaWdub3JlIHN0cmR1cApAQCAtMjUyNiw3ICsyNzA4 LDcgQEAga2VlcF9nb2luZzoJCQkJCQkvKiBXZSB3aWxsIGNvbWUgYmFjayB0byBoZXJlIHVudGls IHRoZXJlIGlzCiAJCQkJCQljb25uLT5jb25uaXAgPSBzdHJkdXAoaG9zdF9hZGRyKTsKIAogCQkJ CQkvKiBUcnkgdG8gY3JlYXRlIHRoZSBzb2NrZXQgKi8KLQkJCQkJY29ubi0+c29jayA9IHNvY2tl dChhZGRyX2N1ci0+YWlfZmFtaWx5LCBTT0NLX1NUUkVBTSwgMCk7CisJCQkJCWNvbm4tPnNvY2sg PSBzb2NrZXQoY29ubi0+cmFkZHIuYWRkci5zc19mYW1pbHksIFNPQ0tfU1RSRUFNLCAwKTsKIAkJ CQkJaWYgKGNvbm4tPnNvY2sgPT0gUEdJTlZBTElEX1NPQ0tFVCkKIAkJCQkJewogCQkJCQkJaW50 CQkJZXJyb3JubyA9IFNPQ0tfRVJSTk87CkBAIC0yNTM2LDEyICsyNzE4LDE4IEBAIGtlZXBfZ29p bmc6CQkJCQkJLyogV2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJ CQkJICogYWRkcmVzc2VzIHRvIHRyeTsgdGhpcyByZWR1Y2VzIHVzZWxlc3MgY2hhdHRlciBpbgog CQkJCQkJICogY2FzZXMgd2hlcmUgdGhlIGFkZHJlc3MgbGlzdCBpbmNsdWRlcyBib3RoIElQdjQg YW5kCiAJCQkJCQkgKiBJUHY2IGJ1dCBrZXJuZWwgb25seSBhY2NlcHRzIG9uZSBmYW1pbHkuCisJ CQkJCQkgKgorCQkJCQkJICogQ2FuY2VsIHJlcXVlc3RzIG5ldmVyIGhhdmUgbW9yZSBhZGRyZXNz ZXMgdG8gdHJ5LgorCQkJCQkJICogVGhleSBzaG91bGQgb25seSB0cnkgYSBzaW5nbGUgb25lLgog CQkJCQkJICovCi0JCQkJCQlpZiAoYWRkcl9jdXItPmFpX25leHQgIT0gTlVMTCB8fAotCQkJCQkJ CWNvbm4tPndoaWNoaG9zdCArIDEgPCBjb25uLT5uY29ubmhvc3QpCisJCQkJCQlpZiAoIWNvbm4t PmNhbmNlbFJlcXVlc3QpCiAJCQkJCQl7Ci0JCQkJCQkJY29ubi0+dHJ5X25leHRfYWRkciA9IHRy dWU7Ci0JCQkJCQkJZ290byBrZWVwX2dvaW5nOworCQkJCQkJCWlmIChhZGRyX2N1ci0+YWlfbmV4 dCAhPSBOVUxMIHx8CisJCQkJCQkJCWNvbm4tPndoaWNoaG9zdCArIDEgPCBjb25uLT5uY29ubmhv c3QpCisJCQkJCQkJeworCQkJCQkJCQljb25uLT50cnlfbmV4dF9hZGRyID0gdHJ1ZTsKKwkJCQkJ CQkJZ290byBrZWVwX2dvaW5nOworCQkJCQkJCX0KIAkJCQkJCX0KIAkJCQkJCWVtaXRIb3N0SWRl bnRpdHlJbmZvKGNvbm4sIGhvc3RfYWRkcik7CiAJCQkJCQlhcHBlbmRQUUV4cEJ1ZmZlcigmY29u bi0+ZXJyb3JNZXNzYWdlLApAQCAtMjU2NCw3ICsyNzUyLDcgQEAga2VlcF9nb2luZzoJCQkJCQkv KiBXZSB3aWxsIGNvbWUgYmFjayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAJCQkJCSAqIFRDUCBz b2NrZXRzLCBub25ibG9jayBtb2RlLCBjbG9zZS1vbi1leGVjLiAgVHJ5IHRoZQogCQkJCQkgKiBu ZXh0IGFkZHJlc3MgaWYgYW55IG9mIHRoaXMgZmFpbHMuCiAJCQkJCSAqLwotCQkJCQlpZiAoYWRk cl9jdXItPmFpX2ZhbWlseSAhPSBBRl9VTklYKQorCQkJCQlpZiAoY29ubi0+cmFkZHIuYWRkci5z c19mYW1pbHkgIT0gQUZfVU5JWCkKIAkJCQkJewogCQkJCQkJaWYgKCFjb25uZWN0Tm9EZWxheShj b25uKSkKIAkJCQkJCXsKQEAgLTI1OTMsNyArMjc4MSw3IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyog V2Ugd2lsbCBjb21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCQl9CiAjZW5kaWYJ CQkJCQkJLyogRl9TRVRGRCAqLwogCi0JCQkJCWlmIChhZGRyX2N1ci0+YWlfZmFtaWx5ICE9IEFG X1VOSVgpCisJCQkJCWlmIChjb25uLT5yYWRkci5hZGRyLnNzX2ZhbWlseSAhPSBBRl9VTklYKQog CQkJCQl7CiAjaWZuZGVmIFdJTjMyCiAJCQkJCQlpbnQJCQlvbiA9IDE7CkBAIC0yNjg3LDggKzI4 NzUsOSBAQCBrZWVwX2dvaW5nOgkJCQkJCS8qIFdlIHdpbGwgY29tZSBiYWNrIHRvIGhlcmUgdW50 aWwgdGhlcmUgaXMKIAkJCQkJICogU3RhcnQvbWFrZSBjb25uZWN0aW9uLiAgVGhpcyBzaG91bGQg bm90IGJsb2NrLCBzaW5jZSB3ZQogCQkJCQkgKiBhcmUgaW4gbm9uYmxvY2sgbW9kZS4gIElmIGl0 IGRvZXMsIHdlbGwsIHRvbyBiYWQuCiAJCQkJCSAqLwotCQkJCQlpZiAoY29ubmVjdChjb25uLT5z b2NrLCBhZGRyX2N1ci0+YWlfYWRkciwKLQkJCQkJCQkJYWRkcl9jdXItPmFpX2FkZHJsZW4pIDwg MCkKKwkJCQkJaWYgKGNvbm5lY3QoY29ubi0+c29jaywKKwkJCQkJCQkJKHN0cnVjdCBzb2NrYWRk ciAqKSAmY29ubi0+cmFkZHIuYWRkciwKKwkJCQkJCQkJY29ubi0+cmFkZHIuc2FsZW4pIDwgMCkK IAkJCQkJewogCQkJCQkJaWYgKFNPQ0tfRVJSTk8gPT0gRUlOUFJPR1JFU1MgfHwKICNpZmRlZiBX SU4zMgpAQCAtMjcyNyw2ICsyOTE2LDE2IEBAIGtlZXBfZ29pbmc6CQkJCQkJLyogV2Ugd2lsbCBj b21lIGJhY2sgdG8gaGVyZSB1bnRpbCB0aGVyZSBpcwogCQkJCX0KIAkJCX0KIAorCQljYXNlIENP Tk5FQ1RJT05fU1RBUlRJTkc6CisJCQl7CisJCQkJaWYgKCFjb25uZWN0REJTdGFydChjb25uKSkK KwkJCQl7CisJCQkJCWdvdG8gZXJyb3JfcmV0dXJuOworCQkJCX0KKwkJCQljb25uLT5zdGF0dXMg PSBDT05ORUNUSU9OX1NUQVJURUQ7CisJCQkJcmV0dXJuIFBHUkVTX1BPTExJTkdfV1JJVElORzsK KwkJCX0KKwogCQljYXNlIENPTk5FQ1RJT05fU1RBUlRFRDoKIAkJCXsKIAkJCQlzb2NrbGVuX3QJ b3B0bGVuID0gc2l6ZW9mKG9wdHZhbCk7CkBAIC0yOTM1LDYgKzMxMzQsMzAgQEAga2VlcF9nb2lu ZzoJCQkJCQkvKiBXZSB3aWxsIGNvbWUgYmFjayB0byBoZXJlIHVudGlsIHRoZXJlIGlzCiAJCQkJ fQogI2VuZGlmCQkJCQkJCS8qIFVTRV9TU0wgKi8KIAorCQkJCS8qCisJCQkJICogRm9yIGNhbmNl bCByZXF1ZXN0cyB0aGlzIGlzIGFzIGZhciBhcyB3ZSBuZWVkIHRvIGdvIGluIHRoZQorCQkJCSAq IGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudC4gTm93IHdlIGNhbiBhY3R1YWxseSBzZW5kIG91cgor CQkJCSAqIGNhbmNlbGF0aW9uIHJlcXVlc3QuCisJCQkJICovCisJCQkJaWYgKGNvbm4tPmNhbmNl bFJlcXVlc3QpCisJCQkJeworCQkJCQlDYW5jZWxSZXF1ZXN0UGFja2V0IGNhbmNlbHBhY2tldDsK KworCQkJCQlwYWNrZXRsZW4gPSBzaXplb2YoY2FuY2VscGFja2V0KTsKKwkJCQkJY2FuY2VscGFj a2V0LmNhbmNlbFJlcXVlc3RDb2RlID0gKE1zZ1R5cGUpIHBnX2h0b24zMihDQU5DRUxfUkVRVUVT VF9DT0RFKTsKKwkJCQkJY2FuY2VscGFja2V0LmJhY2tlbmRQSUQgPSBwZ19odG9uMzIoY29ubi0+ YmVfcGlkKTsKKwkJCQkJY2FuY2VscGFja2V0LmNhbmNlbEF1dGhDb2RlID0gcGdfaHRvbjMyKGNv bm4tPmJlX2tleSk7CisJCQkJCWlmIChwcVBhY2tldFNlbmQoY29ubiwgMCwgJmNhbmNlbHBhY2tl dCwgcGFja2V0bGVuKSAhPSBTVEFUVVNfT0spCisJCQkJCXsKKwkJCQkJCWFwcGVuZFBRRXhwQnVm ZmVyKCZjb25uLT5lcnJvck1lc3NhZ2UsCisJCQkJCQkJCQkJICBsaWJwcV9nZXR0ZXh0KCJjb3Vs ZCBub3Qgc2VuZCBjYW5jZWwgcGFja2V0OiAlc1xuIiksCisJCQkJCQkJCQkJICBTT0NLX1NUUkVS Uk9SKFNPQ0tfRVJSTk8sIHNlYnVmLCBzaXplb2Yoc2VidWYpKSk7CisJCQkJCQlnb3RvIGVycm9y X3JldHVybjsKKwkJCQkJfQorCQkJCQljb25uLT5zdGF0dXMgPSBDT05ORUNUSU9OX0FXQUlUSU5H X1JFU1BPTlNFOworCQkJCQlyZXR1cm4gUEdSRVNfUE9MTElOR19SRUFESU5HOworCQkJCX0KKwog CQkJCS8qCiAJCQkJICogQnVpbGQgdGhlIHN0YXJ0dXAgcGFja2V0LgogCQkJCSAqLwpAQCAtNDEx NCw2ICs0MzM3LDE1IEBAIHJlbGVhc2VfY29ubl9hZGRyaW5mbyhQR2Nvbm4gKmNvbm4pCiBzdGF0 aWMgdm9pZAogc2VuZFRlcm1pbmF0ZUNvbm4oUEdjb25uICpjb25uKQogeworCS8qCisJICogVGhl IFBvc3RncmVzIGNhbmNlbGxhdGlvbiBwcm90b2NvbCBkb2VzIG5vdCBoYXZlIGEgbm90aW9uIG9m IGEgVGVybWluYXRlCisJICogbWVzc2FnZSwgc28gZG9uJ3Qgc2VuZCBvbmUuCisJICovCisJaWYg KGNvbm4tPmNhbmNlbFJlcXVlc3QpCisJeworCQlyZXR1cm47CisJfQorCiAJLyoKIAkgKiBOb3Rl IHRoYXQgdGhlIHByb3RvY29sIGRvZXNuJ3QgYWxsb3cgdXMgdG8gc2VuZCBUZXJtaW5hdGUgbWVz c2FnZXMKIAkgKiBkdXJpbmcgdGhlIHN0YXJ0dXAgcGhhc2UuCkBAIC00NTgyLDYgKzQ4MTQsOTYg QEAgY2FuY2VsX2VyclJldHVybjoKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKy8qCisgKiBQUXJlcXVl c3RDYW5jZWw6IG9sZCwgbm90IHRocmVhZC1zYWZlIGZ1bmN0aW9uIGZvciByZXF1ZXN0aW5nIHF1 ZXJ5IGNhbmNlbAorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiBhYmxlIHRvIHNlbmQgdGhlIGNhbmNl bCByZXF1ZXN0LCBmYWxzZSBpZiBub3QuCisgKgorICogT24gZmFpbHVyZSwgdGhlIGVycm9yIG1l c3NhZ2UgaXMgc2F2ZWQgaW4gY29ubi0+ZXJyb3JNZXNzYWdlOyB0aGlzIG1lYW5zCisgKiB0aGF0 IHRoaXMgY2FuJ3QgYmUgdXNlZCB3aGVuIHRoZXJlIG1pZ2h0IGJlIG90aGVyIGFjdGl2ZSBvcGVy YXRpb25zIG9uCisgKiB0aGUgY29ubmVjdGlvbiBvYmplY3QuCisgKgorICogTk9URTogZXJyb3Ig bWVzc2FnZXMgd2lsbCBiZSBjdXQgb2ZmIGF0IHRoZSBjdXJyZW50IHNpemUgb2YgdGhlCisgKiBl cnJvciBtZXNzYWdlIGJ1ZmZlciwgc2luY2Ugd2UgZGFyZSBub3QgdHJ5IHRvIGV4cGFuZCBjb25u LT5lcnJvck1lc3NhZ2UhCisgKi8KK1BHY2FuY2VsQ29ubiAqCitQUWNhbmNlbFNlbmQoUEdjb25u ICpjb25uKQoreworCVBHY2FuY2VsQ29ubiAqY2FuY2VsQ29ubiA9IFBRY2FuY2VsQ29ubihjb25u KTsKKworCWlmIChjYW5jZWxDb25uICYmIGNhbmNlbENvbm4tPmNvbm4uc3RhdHVzICE9IENPTk5F Q1RJT05fQkFEKQorCQkodm9pZCkgY29ubmVjdERCQ29tcGxldGUoJmNhbmNlbENvbm4tPmNvbm4p OworCisJcmV0dXJuIGNhbmNlbENvbm47Cit9CisKKy8qCisgKgkJUFFjYW5jZWxQb2xsCisgKgor ICogUG9sbCBhIGNhbmNlbCBjb25uZWN0aW9uLiBGb3IgdXNhZ2UgZGV0YWlscyBzZWUgUFFjb25u ZWN0UG9sbC4KKyAqLworUG9zdGdyZXNQb2xsaW5nU3RhdHVzVHlwZQorUFFjYW5jZWxQb2xsKFBH Y2FuY2VsQ29ubiAqIGNhbmNlbENvbm4pCit7CisJcmV0dXJuIFBRY29ubmVjdFBvbGwoKFBHY29u biAqKSBjYW5jZWxDb25uKTsKK30KKworLyoKKyAqCQlQUWNhbmNlbFN0YXR1cworICoKKyAqIEdl dCB0aGUgc3RhdHVzIG9mIGEgY2FuY2VsIGNvbm5lY3Rpb24uCisgKi8KK0Nvbm5TdGF0dXNUeXBl CitQUWNhbmNlbFN0YXR1cyhjb25zdCBQR2NhbmNlbENvbm4gKiBjYW5jZWxDb25uKQoreworCXJl dHVybiBQUXN0YXR1cygoY29uc3QgUEdjb25uICopIGNhbmNlbENvbm4pOworfQorCisvKgorICoJ CVBRY2FuY2VsU29ja2V0CisgKgorICogR2V0IHRoZSBzb2NrZXQgb2YgdGhlIGNhbmNlbCBjb25u ZWN0aW9uLgorICovCitpbnQKK1BRY2FuY2VsU29ja2V0KGNvbnN0IFBHY2FuY2VsQ29ubiAqIGNh bmNlbENvbm4pCit7CisJcmV0dXJuIFBRc29ja2V0KChjb25zdCBQR2Nvbm4gKikgY2FuY2VsQ29u bik7Cit9CisKKy8qCisgKgkJUFFjYW5jZWxFcnJvck1lc3NhZ2UKKyAqCisgKiBHZXQgdGhlIHNv Y2tldCBvZiB0aGUgY2FuY2VsIGNvbm5lY3Rpb24uCisgKi8KK2NoYXIgKgorUFFjYW5jZWxFcnJv ck1lc3NhZ2UoY29uc3QgUEdjYW5jZWxDb25uICogY2FuY2VsQ29ubikKK3sKKwlyZXR1cm4gUFFl cnJvck1lc3NhZ2UoKGNvbnN0IFBHY29ubiAqKSBjYW5jZWxDb25uKTsKK30KKworLyoKKyAqCQlQ UWNhbmNlbFJlc2V0CisgKgorICogUmVzZXRzIHRoZSBjYW5jZWwgY29ubmVjdGlvbiwgc28gaXQg Y2FuIGJlIHJldXNlZCB0byBzZW5kIGEgbmV3IGNhbmNlbAorICogcmVxdWVzdC4KKyAqLwordm9p ZAorUFFjYW5jZWxSZXNldChQR2NhbmNlbENvbm4gKmNhbmNlbENvbm4pCit7CisJY2xvc2VQR2Nv bm4oKFBHY29ubiAqKSBjYW5jZWxDb25uKTsKKwljYW5jZWxDb25uLT5jb25uLnN0YXR1cyA9IENP Tk5FQ1RJT05fU1RBUlRJTkc7Cit9CisKKy8qCisgKgkJUFFjYW5jZWxGaW5pc2gKKyAqCisgKiBD bG9zZXMgYW5kIGZyZWVzIHRoZSBjYW5jZWwgY29ubmVjdGlvbi4KKyAqLwordm9pZAorUFFjYW5j ZWxGaW5pc2goUEdjYW5jZWxDb25uICogY2FuY2VsQ29ubikKK3sKKwlQUWZpbmlzaCgoUEdjb25u ICopIGNhbmNlbENvbm4pOworfQogCiAvKgogICogUFFyZXF1ZXN0Q2FuY2VsOiBvbGQsIG5vdCB0 aHJlYWQtc2FmZSBmdW5jdGlvbiBmb3IgcmVxdWVzdGluZyBxdWVyeSBjYW5jZWwKQEAgLTQ2NDAs NiArNDk2Miw3IEBAIFBRcmVxdWVzdENhbmNlbChQR2Nvbm4gKmNvbm4pCiB9CiAKIAorCiAvKgog ICogcHFQYWNrZXRTZW5kKCkgLS0gY29udmVuaWVuY2Ugcm91dGluZSB0byBzZW5kIGEgbWVzc2Fn ZSB0byBzZXJ2ZXIuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtbWlz Yy5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtbWlzYy5jCmluZGV4IDc5NTUwMGM1OTMuLmI1 YjEwZWMyYmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLW1pc2MuYworKysg Yi9zcmMvaW50ZXJmYWNlcy9saWJwcS9mZS1taXNjLmMKQEAgLTU1Niw4ICs1NTYsMTEgQEAgcHFQ dXRNc2dFbmQoUEdjb25uICpjb25uKQogICogUG9zc2libGUgcmV0dXJuIHZhbHVlczoKICAqCSAx OiBzdWNjZXNzZnVsbHkgbG9hZGVkIGF0IGxlYXN0IG9uZSBtb3JlIGJ5dGUKICAqCSAwOiBubyBk YXRhIGlzIHByZXNlbnRseSBhdmFpbGFibGUsIGJ1dCBubyBlcnJvciBkZXRlY3RlZAotICoJLTE6 IGVycm9yIGRldGVjdGVkIChpbmNsdWRpbmcgRU9GID0gY29ubmVjdGlvbiBjbG9zdXJlKTsKKyAq CS0xOiBlcnJvciBkZXRlY3RlZCAoZXhjbHVkaW5nIEVPRiA9IGNvbm5lY3Rpb24gY2xvc3VyZSk7 CiAgKgkJY29ubi0+ZXJyb3JNZXNzYWdlIHNldAorICoJLTI6IEVPRiBkZXRlY3RlZCwgY29ubmVj dGlvbiBpcyBjbG9zZWQKKyAqCQljb25uLT5lcnJvck1lc3NhZ2Ugc2V0CisgKgogICogTk9URTog Y2FsbGVycyBtdXN0IG5vdCBhc3N1bWUgdGhhdCBwb2ludGVycyBvciBpbmRleGVzIGludG8gY29u bi0+aW5CdWZmZXIKICAqIHJlbWFpbiB2YWxpZCBhY3Jvc3MgdGhpcyBjYWxsIQogICogLS0tLS0t LS0tLQpAQCAtNjQwLDcgKzY0Myw3IEBAIHJldHJ5MzoKIAogCQkJZGVmYXVsdDoKIAkJCQkvKiBw cXNlY3VyZV9yZWFkIHNldCB0aGUgZXJyb3IgbWVzc2FnZSBmb3IgdXMgKi8KLQkJCQlyZXR1cm4g LTE7CisJCQkJcmV0dXJuIG5yZWFkOwogCQl9CiAJfQogCWlmIChucmVhZCA+IDApCkBAIC03MzUs NyArNzM4LDcgQEAgcmV0cnk0OgogCiAJCQlkZWZhdWx0OgogCQkJCS8qIHBxc2VjdXJlX3JlYWQg c2V0IHRoZSBlcnJvciBtZXNzYWdlIGZvciB1cyAqLwotCQkJCXJldHVybiAtMTsKKwkJCQlyZXR1 cm4gbnJlYWQ7CiAJCX0KIAl9CiAJaWYgKG5yZWFkID4gMCkKQEAgLTc1MywxMyArNzU2LDE3IEBA IGRlZmluaXRlbHlFT0Y6CiAJCQkJCQkgbGlicHFfZ2V0dGV4dCgic2VydmVyIGNsb3NlZCB0aGUg Y29ubmVjdGlvbiB1bmV4cGVjdGVkbHlcbiIKIAkJCQkJCQkJCSAgICJcdFRoaXMgcHJvYmFibHkg bWVhbnMgdGhlIHNlcnZlciB0ZXJtaW5hdGVkIGFibm9ybWFsbHlcbiIKIAkJCQkJCQkJCSAgICJc dGJlZm9yZSBvciB3aGlsZSBwcm9jZXNzaW5nIHRoZSByZXF1ZXN0LlxuIikpOworCS8qIERvICpu b3QqIGRyb3AgYW55IGFscmVhZHktcmVhZCBkYXRhOyBjYWxsZXIgc3RpbGwgd2FudHMgaXQgKi8K KwlwcURyb3BDb25uZWN0aW9uKGNvbm4sIGZhbHNlKTsKKwljb25uLT5zdGF0dXMgPSBDT05ORUNU SU9OX0JBRDsJLyogTm8gbW9yZSBjb25uZWN0aW9uIHRvIGJhY2tlbmQgKi8KKwlyZXR1cm4gLTI7 CiAKIAkvKiBDb21lIGhlcmUgaWYgbG93ZXItbGV2ZWwgY29kZSBhbHJlYWR5IHNldCBhIHN1aXRh YmxlIGVycm9yTWVzc2FnZSAqLwogZGVmaW5pdGVseUZhaWxlZDoKIAkvKiBEbyAqbm90KiBkcm9w IGFueSBhbHJlYWR5LXJlYWQgZGF0YTsgY2FsbGVyIHN0aWxsIHdhbnRzIGl0ICovCiAJcHFEcm9w Q29ubmVjdGlvbihjb25uLCBmYWxzZSk7CiAJY29ubi0+c3RhdHVzID0gQ09OTkVDVElPTl9CQUQ7 CS8qIE5vIG1vcmUgY29ubmVjdGlvbiB0byBiYWNrZW5kICovCi0JcmV0dXJuIC0xOworCXJldHVy biBucmVhZCA8IDAgPyBucmVhZCA6IC0xOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2ludGVy ZmFjZXMvbGlicHEvZmUtc2VjdXJlLW9wZW5zc2wuYyBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2Zl LXNlY3VyZS1vcGVuc3NsLmMKaW5kZXggYjQyYTkwODczMy4uY2EzNzhkMmFkNSAxMDA2NDQKLS0t IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLW9wZW5zc2wuYworKysgYi9zcmMvaW50 ZXJmYWNlcy9saWJwcS9mZS1zZWN1cmUtb3BlbnNzbC5jCkBAIC0yNTMsNyArMjUzLDcgQEAgcmxv b3A6CiAJCQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmY29ubi0+ZXJyb3JNZXNzYWdlLAogCQkJCQkJ CQkgbGlicHFfZ2V0dGV4dCgiU1NMIGNvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkIHVuZXhwZWN0 ZWRseVxuIikpOwogCQkJcmVzdWx0X2Vycm5vID0gRUNPTk5SRVNFVDsKLQkJCW4gPSAtMTsKKwkJ CW4gPSAtMjsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmNv bm4tPmVycm9yTWVzc2FnZSwKZGlmZiAtLWdpdCBhL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2ZlLXNl Y3VyZS5jIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMKaW5kZXggM2RmNGE5N2Yy ZS4uMThkZmYyNTNjNCAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJl LmMKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEvZmUtc2VjdXJlLmMKQEAgLTE5OSw2ICsxOTks MTIgQEAgcHFzZWN1cmVfY2xvc2UoUEdjb25uICpjb25uKQogICogT24gZmFpbHVyZSwgdGhpcyBm dW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgYXBwZW5kaW5nIGEgc3VpdGFibGUgbWVzc2FnZQog ICogdG8gY29ubi0+ZXJyb3JNZXNzYWdlLiAgVGhlIGNhbGxlciBtdXN0IHN0aWxsIGluc3BlY3Qg ZXJybm8sIGJ1dCBvbmx5CiAgKiB0byBkZXRlcm1pbmUgd2hldGhlciB0byBjb250aW51ZS9yZXRy eSBhZnRlciBlcnJvci4KKyAqCisgKiBSZXR1cm5zIC0xIGluIGNhc2Ugb2YgZmFpbHVyZXMsIGV4 Y2VwdCBpbiB0aGUgY2FzZSBvZiB3aGVyZSBhIGZhaWx1cmUgbWVhbnMKKyAqIHRoYXQgdGhlcmUg d2FzIGEgY2xlYW4gY29ubmVjdGlvbiBjbG9zdXJlLCBpbiB0aG9zZSBjYXNlcyAtMiBpcyByZXR1 cm5lZC4KKyAqIEN1cnJlbnRseSBvbmx5IHRoZSBUTFMgaW1wbGVtZW50YXRpb24gb2YgcHFzZWN1 cmVfcmVhZCBldmVyIHJldHVybnMgLTIuIEZvcgorICogdGhlIG90aGVyIGltcGxlbWVudGF0aW9u cyBhIGNsZWFuIGNvbm5lY3Rpb24gY2xvc3VyZSBpcyBkZXRlY3RlZCBpbgorICogcHFSZWFkRGF0 YSBpbnN0ZWFkLgogICovCiBzc2l6ZV90CiBwcXNlY3VyZV9yZWFkKFBHY29ubiAqY29ubiwgdm9p ZCAqcHRyLCBzaXplX3QgbGVuKQpkaWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGli cHEtZmUuaCBiL3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWZlLmgKaW5kZXggYjdkZjMyMjRj MC4uZGUyZTMyY2E2MyAxMDA2NDQKLS0tIGEvc3JjL2ludGVyZmFjZXMvbGlicHEvbGlicHEtZmUu aAorKysgYi9zcmMvaW50ZXJmYWNlcy9saWJwcS9saWJwcS1mZS5oCkBAIC03OCw3ICs3OCw5IEBA IHR5cGVkZWYgZW51bQogCUNPTk5FQ1RJT05fQ09OU1VNRSwJCQkvKiBDb25zdW1pbmcgYW55IGV4 dHJhIG1lc3NhZ2VzLiAqLwogCUNPTk5FQ1RJT05fR1NTX1NUQVJUVVAsCQkvKiBOZWdvdGlhdGlu ZyBHU1NBUEkuICovCiAJQ09OTkVDVElPTl9DSEVDS19UQVJHRVQsCS8qIENoZWNraW5nIHRhcmdl dCBzZXJ2ZXIgcHJvcGVydGllcy4gKi8KLQlDT05ORUNUSU9OX0NIRUNLX1NUQU5EQlkJLyogQ2hl Y2tpbmcgaWYgc2VydmVyIGlzIGluIHN0YW5kYnkgbW9kZS4gKi8KKwlDT05ORUNUSU9OX0NIRUNL X1NUQU5EQlksCS8qIENoZWNraW5nIGlmIHNlcnZlciBpcyBpbiBzdGFuZGJ5IG1vZGUuICovCisJ Q09OTkVDVElPTl9TVEFSVElORwkJCS8qIFdhaXRpbmcgZm9yIGNvbm5lY3Rpb24gYXR0ZW1wdCB0 byBiZQorCQkJCQkJCQkgKiBzdGFydGVkLiAgKi8KIH0gQ29ublN0YXR1c1R5cGU7CiAKIHR5cGVk ZWYgZW51bQpAQCAtMTY1LDYgKzE2NywxMSBAQCB0eXBlZGVmIGVudW0KICAqLwogdHlwZWRlZiBz dHJ1Y3QgcGdfY29ubiBQR2Nvbm47CiAKKy8qIFBHY2FuY2VsQ29ubiBlbmNhcHN1bGF0ZXMgYSBj YW5jZWwgY29ubmVjdGlvbiB0byB0aGUgYmFja2VuZC4KKyAqIFRoZSBjb250ZW50cyBvZiB0aGlz IHN0cnVjdCBhcmUgbm90IHN1cHBvc2VkIHRvIGJlIGtub3duIHRvIGFwcGxpY2F0aW9ucy4KKyAq LwordHlwZWRlZiBzdHJ1Y3QgcGdfY2FuY2VsX2Nvbm4gUEdjYW5jZWxDb25uOworCiAvKiBQR3Jl c3VsdCBlbmNhcHN1bGF0ZXMgdGhlIHJlc3VsdCBvZiBhIHF1ZXJ5IChvciBtb3JlIHByZWNpc2Vs eSwgb2YgYSBzaW5nbGUKICAqIFNRTCBjb21tYW5kIC0tLSBhIHF1ZXJ5IHN0cmluZyBnaXZlbiB0 byBQUXNlbmRRdWVyeSBjYW4gY29udGFpbiBtdWx0aXBsZQogICogY29tbWFuZHMgYW5kIHRodXMg cmV0dXJuIG11bHRpcGxlIFBHcmVzdWx0IG9iamVjdHMpLgpAQCAtMzIxLDE2ICszMjgsMjggQEAg ZXh0ZXJuIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUgUFFyZXNldFBvbGwoUEdjb25uICpjb25u KTsKIC8qIFN5bmNocm9ub3VzIChibG9ja2luZykgKi8KIGV4dGVybiB2b2lkIFBRcmVzZXQoUEdj b25uICpjb25uKTsKIAorLyogaXNzdWUgYSBjYW5jZWwgcmVxdWVzdCAqLworZXh0ZXJuIFBHY2Fu Y2VsQ29ubiAqIFBRY2FuY2VsU2VuZChQR2Nvbm4gKmNvbm4pOworLyogbm9uLWJsb2NraW5nIHZl cnNpb24gb2YgUFFyZXF1ZXN0U2VuZCAqLworZXh0ZXJuIFBHY2FuY2VsQ29ubiAqIFBRY2FuY2Vs Q29ubihQR2Nvbm4gKmNvbm4pOworZXh0ZXJuIFBvc3RncmVzUG9sbGluZ1N0YXR1c1R5cGUgUFFj YW5jZWxQb2xsKFBHY2FuY2VsQ29ubiAqIGNhbmNlbENvbm4pOworZXh0ZXJuIENvbm5TdGF0dXNU eXBlIFBRY2FuY2VsU3RhdHVzKGNvbnN0IFBHY2FuY2VsQ29ubiAqIGNhbmNlbENvbm4pOworZXh0 ZXJuIGludAlQUWNhbmNlbFNvY2tldChjb25zdCBQR2NhbmNlbENvbm4gKiBjYW5jZWxDb25uKTsK K2V4dGVybiBjaGFyICpQUWNhbmNlbEVycm9yTWVzc2FnZShjb25zdCBQR2NhbmNlbENvbm4gKiBj YW5jZWxDb25uKTsKK2V4dGVybiB2b2lkIFBRY2FuY2VsUmVzZXQoUEdjYW5jZWxDb25uICpjYW5j ZWxDb25uKTsKK2V4dGVybiB2b2lkIFBRY2FuY2VsRmluaXNoKFBHY2FuY2VsQ29ubiAqIGNhbmNl bENvbm4pOworCisKIC8qIHJlcXVlc3QgYSBjYW5jZWwgc3RydWN0dXJlICovCiBleHRlcm4gUEdj YW5jZWwgKlBRZ2V0Q2FuY2VsKFBHY29ubiAqY29ubik7CiAKIC8qIGZyZWUgYSBjYW5jZWwgc3Ry dWN0dXJlICovCiBleHRlcm4gdm9pZCBQUWZyZWVDYW5jZWwoUEdjYW5jZWwgKmNhbmNlbCk7CiAK LS8qIGlzc3VlIGEgY2FuY2VsIHJlcXVlc3QgKi8KKy8qIGEgbGVzcyBzZWN1cmUgdmVyc2lvbiBv ZiBQUWNhbmNlbFNlbmQsIGJ1dCBvbmUgd2hpY2ggaXMgc2lnbmFsLXNhZmUgKi8KIGV4dGVybiBp bnQJUFFjYW5jZWwoUEdjYW5jZWwgKmNhbmNlbCwgY2hhciAqZXJyYnVmLCBpbnQgZXJyYnVmc2l6 ZSk7CiAKLS8qIGJhY2t3YXJkcyBjb21wYXRpYmxlIHZlcnNpb24gb2YgUFFjYW5jZWw7IG5vdCB0 aHJlYWQtc2FmZSAqLworLyogZGVwcmVjYXRlZCB2ZXJzaW9uIG9mIFBRY2FuY2VsOyBub3QgdGhy ZWFkLXNhZmUgKi8KIGV4dGVybiBpbnQJUFFyZXF1ZXN0Q2FuY2VsKFBHY29ubiAqY29ubik7CiAK IC8qIEFjY2Vzc29yIGZ1bmN0aW9ucyBmb3IgUEdjb25uIG9iamVjdHMgKi8KZGlmZiAtLWdpdCBh L3NyYy9pbnRlcmZhY2VzL2xpYnBxL2xpYnBxLWludC5oIGIvc3JjL2ludGVyZmFjZXMvbGlicHEv bGlicHEtaW50LmgKaW5kZXggYzc1ZWQ2M2EyYy4uODQwMjdiYzRhYiAxMDA2NDQKLS0tIGEvc3Jj L2ludGVyZmFjZXMvbGlicHEvbGlicHEtaW50LmgKKysrIGIvc3JjL2ludGVyZmFjZXMvbGlicHEv bGlicHEtaW50LmgKQEAgLTM5Nyw2ICszOTcsMTAgQEAgc3RydWN0IHBnX2Nvbm4KIAljaGFyCSAg ICpzc2xfbWF4X3Byb3RvY29sX3ZlcnNpb247CS8qIG1heGltdW0gVExTIHByb3RvY29sIHZlcnNp b24gKi8KIAljaGFyCSAgICp0YXJnZXRfc2Vzc2lvbl9hdHRyczsJLyogZGVzaXJlZCBzZXNzaW9u IHByb3BlcnRpZXMgKi8KIAorCWJvb2wJCWNhbmNlbFJlcXVlc3Q7CS8qIHRydWUgaWYgdGhpcyBj b25uZWN0aW9uIGlzIHVzZWQgdG8gc2VuZCBhCisJCQkJCQkJCSAqIGNhbmNlbCByZXF1ZXN0LCBp bnN0ZWFkIG9mIGJlaW5nIGEgbm9ybWFsCisJCQkJCQkJCSAqIGNvbm5lY3Rpb24gdGhhdCdzIHVz ZWQgZm9yIHF1ZXJpZXMgKi8KKwogCS8qIE9wdGlvbmFsIGZpbGUgdG8gd3JpdGUgdHJhY2UgaW5m byB0byAqLwogCUZJTEUJICAgKlBmZGVidWc7CiAJaW50CQkJdHJhY2VGbGFnczsKQEAgLTU5Miw2 ICs1OTYsMTEgQEAgc3RydWN0IHBnX2Nvbm4KIAlQUUV4cEJ1ZmZlckRhdGEgd29ya0J1ZmZlcjsg LyogZXhwYW5zaWJsZSBzdHJpbmcgKi8KIH07CiAKK3N0cnVjdCBwZ19jYW5jZWxfY29ubgorewor CVBHY29ubgkJY29ubjsKK307CisKIC8qIFBHY2FuY2VsIHN0b3JlcyBhbGwgZGF0YSBuZWNlc3Nh cnkgdG8gY2FuY2VsIGEgY29ubmVjdGlvbi4gQSBjb3B5IG9mIHRoaXMKICAqIGRhdGEgaXMgcmVx dWlyZWQgdG8gc2FmZWx5IGNhbmNlbCBhIGNvbm5lY3Rpb24gcnVubmluZyBvbiBhIGRpZmZlcmVu dAogICogdGhyZWFkLgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbnRl c3Rlci5jIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2lzb2xhdGlvbnRlc3Rlci5jCmluZGV4IDBhNjYy MzUxNTMuLjM3ODFmNzk4MmIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9pc29sYXRp b250ZXN0ZXIuYworKysgYi9zcmMvdGVzdC9pc29sYXRpb24vaXNvbGF0aW9udGVzdGVyLmMKQEAg LTk0NiwyNiArOTQ2LDIxIEBAIHRyeV9jb21wbGV0ZV9zdGVwKFRlc3RTcGVjICp0ZXN0c3BlYywg UGVybXV0YXRpb25TdGVwICpwc3RlcCwgaW50IGZsYWdzKQogCQkJICovCiAJCQlpZiAodGQgPiBt YXhfc3RlcF93YWl0ICYmICFjYW5jZWxlZCkKIAkJCXsKLQkJCQlQR2NhbmNlbCAgICpjYW5jZWwg PSBQUWdldENhbmNlbChjb25uKTsKKwkJCQlQR2NhbmNlbENvbm4gKmNhbmNlbF9jb25uID0gUFFj YW5jZWxTZW5kKGNvbm4pOwogCi0JCQkJaWYgKGNhbmNlbCAhPSBOVUxMKQorCQkJCWlmIChQUWNh bmNlbFN0YXR1cyhjYW5jZWxfY29ubikgPT0gQ09OTkVDVElPTl9PSykKIAkJCQl7Ci0JCQkJCWNo YXIJCWJ1ZlsyNTZdOwotCi0JCQkJCWlmIChQUWNhbmNlbChjYW5jZWwsIGJ1Ziwgc2l6ZW9mKGJ1 ZikpKQotCQkJCQl7Ci0JCQkJCQkvKgotCQkJCQkJICogcHJpbnQgdG8gc3Rkb3V0IG5vdCBzdGRl cnIsIGFzIHRoaXMgc2hvdWxkIGFwcGVhcgotCQkJCQkJICogaW4gdGhlIHRlc3QgY2FzZSdzIHJl c3VsdHMKLQkJCQkJCSAqLwotCQkJCQkJcHJpbnRmKCJpc29sYXRpb250ZXN0ZXI6IGNhbmNlbGlu ZyBzdGVwICVzIGFmdGVyICVkIHNlY29uZHNcbiIsCi0JCQkJCQkJICAgc3RlcC0+bmFtZSwgKGlu dCkgKHRkIC8gVVNFQ1NfUEVSX1NFQykpOwotCQkJCQkJY2FuY2VsZWQgPSB0cnVlOwotCQkJCQl9 Ci0JCQkJCWVsc2UKLQkJCQkJCWZwcmludGYoc3RkZXJyLCAiUFFjYW5jZWwgZmFpbGVkOiAlc1xu IiwgYnVmKTsKLQkJCQkJUFFmcmVlQ2FuY2VsKGNhbmNlbCk7CisJCQkJCS8qCisJCQkJCSAqIHBy aW50IHRvIHN0ZG91dCBub3Qgc3RkZXJyLCBhcyB0aGlzIHNob3VsZCBhcHBlYXIgaW4KKwkJCQkJ ICogdGhlIHRlc3QgY2FzZSdzIHJlc3VsdHMKKwkJCQkJICovCisJCQkJCXByaW50ZigiaXNvbGF0 aW9udGVzdGVyOiBjYW5jZWxpbmcgc3RlcCAlcyBhZnRlciAlZCBzZWNvbmRzXG4iLAorCQkJCQkJ ICAgc3RlcC0+bmFtZSwgKGludCkgKHRkIC8gVVNFQ1NfUEVSX1NFQykpOworCQkJCQljYW5jZWxl ZCA9IHRydWU7CiAJCQkJfQorCQkJCWVsc2UKKwkJCQkJZnByaW50ZihzdGRlcnIsICJQUWNhbmNl bCBmYWlsZWQ6ICVzXG4iLCBQUWNhbmNlbEVycm9yTWVzc2FnZShjYW5jZWxfY29ubikpOworCQkJ CVBRY2FuY2VsRmluaXNoKGNhbmNlbF9jb25uKTsKIAkJCX0KIAogCQkJLyoKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvbGlicHFfcGlwZWxpbmUuYyBiL3NyYy90 ZXN0L21vZHVsZXMvbGlicHFfcGlwZWxpbmUvbGlicHFfcGlwZWxpbmUuYwppbmRleCBjNjA5ZjQy MjU4Li4yNjc0YWJiNTM5IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2xpYnBxX3BpcGVs aW5lL2xpYnBxX3BpcGVsaW5lLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9saWJwcV9waXBlbGlu ZS9saWJwcV9waXBlbGluZS5jCkBAIC04Niw2ICs4NiwyNjQgQEAgcGdfZmF0YWxfaW1wbChpbnQg bGluZSwgY29uc3QgY2hhciAqZm10LC4uLikKIAlleGl0KDEpOwogfQogCisvKgorICogQ2hlY2sg dGhhdCB0aGUgcXVlcnkgb24gdGhlIGdpdmVuIGNvbm5lY3Rpb24gZ290IGNhbmNlbGxlZC4KKyAq CisgKiBUaGlzIGlzIGEgZnVuY3Rpb24gd3JhcHBlZCBpbiBhIG1hY3JjbyB0byBtYWtlIHRoZSBy ZXBvcnRlZCBsaW5lIG51bWJlcgorICogaW4gYW4gZXJyb3IgbWF0Y2ggdGhlIGxpbmUgbnVtYmVy IG9mIHRoZSBpbnZvY2F0aW9uLgorICovCisjZGVmaW5lIGNvbmZpcm1fcXVlcnlfY2FuY2VsbGVk KGNvbm4pIGNvbmZpcm1fcXVlcnlfY2FuY2VsbGVkX2ltcGwoX19MSU5FX18sIGNvbm4pCitzdGF0 aWMgdm9pZAorY29uZmlybV9xdWVyeV9jYW5jZWxsZWRfaW1wbChpbnQgbGluZSwgUEdjb25uICpj b25uKQoreworCVBHcmVzdWx0ICAgKnJlcyA9IE5VTEw7CisKKwlyZXMgPSBQUWdldFJlc3VsdChj b25uKTsKKwlpZiAocmVzID09IE5VTEwpCisJCXBnX2ZhdGFsX2ltcGwobGluZSwgIlBRZ2V0UmVz dWx0IHJldHVybmVkIG51bGw6ICVzIiwKKwkJCQkJICBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJ aWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfRkFUQUxfRVJST1IpCisJCXBnX2ZhdGFs X2ltcGwobGluZSwgInF1ZXJ5IGRpZCBub3QgZmFpbCB3aGVuIGl0IHdhcyBleHBlY3RlZCIpOwor CWlmIChzdHJjbXAoUFFyZXN1bHRFcnJvckZpZWxkKHJlcywgUEdfRElBR19TUUxTVEFURSksICI1 NzAxNCIpICE9IDApCisJCXBnX2ZhdGFsX2ltcGwobGluZSwgInF1ZXJ5IGZhaWxlZCB3aXRoIGEg ZGlmZmVyZW50IGVycm9yIHRoYW4gY2FuY2VsbGF0aW9uOiAlcyIsCisJCQkJCSAgUFFlcnJvck1l c3NhZ2UoY29ubikpOworCVBRY2xlYXIocmVzKTsKKwl3aGlsZSAoUFFpc0J1c3koY29ubikpCisJ eworCQlQUWNvbnN1bWVJbnB1dChjb25uKTsKKwl9Cit9CisKKyNkZWZpbmUgc2VuZF9jYW5jZWxs YWJsZV9xdWVyeShjb25uLCBtb25pdG9yQ29ubikgc2VuZF9jYW5jZWxsYWJsZV9xdWVyeV9pbXBs KF9fTElORV9fLCBjb25uLCBtb25pdG9yQ29ubikKK3N0YXRpYyB2b2lkCitzZW5kX2NhbmNlbGxh YmxlX3F1ZXJ5X2ltcGwoaW50IGxpbmUsIFBHY29ubiAqY29ubiwgUEdjb25uICptb25pdG9yQ29u bikKK3sKKwljb25zdCBjaGFyICplbnZfd2FpdDsKKwljb25zdCBPaWQgcGFyYW1UeXBlc1sxXSA9 IHtJTlQ0T0lEfTsKKworCWVudl93YWl0ID0gZ2V0ZW52KCJQR19URVNUX1RJTUVPVVRfREVGQVVM VCIpOworCWlmIChlbnZfd2FpdCA9PSBOVUxMKQorCQllbnZfd2FpdCA9ICIxODAiOworCisJaWYg KFBRc2VuZFF1ZXJ5UGFyYW1zKGNvbm4sICJTRUxFQ1QgcGdfc2xlZXAoJDEpIiwgMSwgcGFyYW1U eXBlcywgJmVudl93YWl0LCBOVUxMLCBOVUxMLCAwKSAhPSAxKQorCQlwZ19mYXRhbF9pbXBsKGxp bmUsICJmYWlsZWQgdG8gc2VuZCBxdWVyeTogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisK KwkvKgorCSAqIFdhaXQgdW50aWwgdGhlIHF1ZXJ5IGlzIGFjdHVhbGx5IHJ1bm5pbmcuIE90aGVy d2lzZSBzZW5kaW5nIGEKKwkgKiBjYW5jZWxsYXRpb24gcmVxdWVzdCBtaWdodCBub3QgY2FuY2Vs IHRoZSBxdWVyeSBkdWUgdG8gcmFjZSBjb25kaXRpb25zLgorCSAqLworCXdoaWxlICh0cnVlKQor CXsKKwkJY2hhcgkgICAqdmFsdWUgPSBOVUxMOworCQlQR3Jlc3VsdCAgICpyZXMgPSBQUWV4ZWMo CisJCQkJCQkJCSBtb25pdG9yQ29ubiwKKwkJCQkJCQkJICJTRUxFQ1QgY291bnQoKikgRlJPTSBw Z19zdGF0X2FjdGl2aXR5IFdIRVJFICIKKwkJCQkJCQkJICJxdWVyeSA9ICdTRUxFQ1QgcGdfc2xl ZXAoJDEpJyAiCisJCQkJCQkJCSAiQU5EIHN0YXRlID0gJ2FjdGl2ZSciKTsKKworCQlpZiAoUFFy ZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19UVVBMRVNfT0spCisJCXsKKwkJCXBnX2ZhdGFsKCJD b25uZWN0aW9uIHRvIGRhdGFiYXNlIGZhaWxlZDogJXMiLCBQUWVycm9yTWVzc2FnZShtb25pdG9y Q29ubikpOworCQl9CisJCWlmIChQUW50dXBsZXMocmVzKSAhPSAxKQorCQl7CisJCQlwZ19mYXRh bCgidW5leHBlY3RlZCBudW1iZXIgb2Ygcm93cyByZWNlaXZlZDogJWQiLCBQUW50dXBsZXMocmVz KSk7CisJCX0KKwkJaWYgKFBRbmZpZWxkcyhyZXMpICE9IDEpCisJCXsKKwkJCXBnX2ZhdGFsKCJ1 bmV4cGVjdGVkIG51bWJlciBvZiBjb2x1bW5zIHJlY2VpdmVkOiAlZCIsIFBRbmZpZWxkcyhyZXMp KTsKKwkJfQorCQl2YWx1ZSA9IFBRZ2V0dmFsdWUocmVzLCAwLCAwKTsKKwkJaWYgKCp2YWx1ZSAh PSAnMCcpCisJCXsKKwkJCVBRY2xlYXIocmVzKTsKKwkJCWJyZWFrOworCQl9CisJCVBRY2xlYXIo cmVzKTsKKworCQkvKgorCQkgKiB3YWl0IDEwbXMgYmVmb3JlIHBvbGxpbmcgYWdhaW4KKwkJICov CisJCXBnX3VzbGVlcCgxMDAwMCk7CisJfQorfQorCitzdGF0aWMgdm9pZAordGVzdF9jYW5jZWwo UEdjb25uICpjb25uLCBjb25zdCBjaGFyICpjb25uaW5mbykKK3sKKwlQR2NhbmNlbCAgICpjYW5j ZWwgPSBOVUxMOworCVBHY2FuY2VsQ29ubgkgICAqY2FuY2VsQ29ubiA9IE5VTEw7CisJUEdjb25u CSAgICptb25pdG9yQ29ubiA9IE5VTEw7CisJY2hhcgkJZXJyb3JidWZbMjU2XTsKKworCWZwcmlu dGYoc3RkZXJyLCAidGVzdCBjYW5jZWxsYXRpb25zLi4uICIpOworCisJaWYgKFBRc2V0bm9uYmxv Y2tpbmcoY29ubiwgMSkgIT0gMCkKKwkJcGdfZmF0YWwoImZhaWxlZCB0byBzZXQgbm9uYmxvY2tp bmcgbW9kZTogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisKKwkvKgorCSAqIE1ha2UgYSBj b25uZWN0aW9uIHRvIHRoZSBkYXRhYmFzZSB0byBtb25pdG9yIHRoZSBxdWVyeSBvbiB0aGUgbWFp bgorCSAqIGNvbm5lY3Rpb24uCisJICovCisJbW9uaXRvckNvbm4gPSBQUWNvbm5lY3RkYihjb25u aW5mbyk7CisJaWYgKFBRc3RhdHVzKGNvbm4pICE9IENPTk5FQ1RJT05fT0spCisJeworCQlwZ19m YXRhbCgiQ29ubmVjdGlvbiB0byBkYXRhYmFzZSBmYWlsZWQ6ICVzIiwKKwkJCQkgUFFlcnJvck1l c3NhZ2UoY29ubikpOworCX0KKworCS8qIHRlc3QgUFFjYW5jZWwgKi8KKwlzZW5kX2NhbmNlbGxh YmxlX3F1ZXJ5KGNvbm4sIG1vbml0b3JDb25uKTsKKwljYW5jZWwgPSBQUWdldENhbmNlbChjb25u KTsKKwlpZiAoIVBRY2FuY2VsKGNhbmNlbCwgZXJyb3JidWYsIHNpemVvZihlcnJvcmJ1ZikpKQor CXsKKwkJcGdfZmF0YWwoImZhaWxlZCB0byBydW4gUFFjYW5jZWw6ICVzIiwgZXJyb3JidWYpOwor CX07CisJY29uZmlybV9xdWVyeV9jYW5jZWxsZWQoY29ubik7CisKKwkvKiBQR2NhbmNlbCBvYmpl Y3QgY2FuIGJlIHJldXNlZCBmb3IgdGhlIG5leHQgcXVlcnkgKi8KKwlzZW5kX2NhbmNlbGxhYmxl X3F1ZXJ5KGNvbm4sIG1vbml0b3JDb25uKTsKKwlpZiAoIVBRY2FuY2VsKGNhbmNlbCwgZXJyb3Ji dWYsIHNpemVvZihlcnJvcmJ1ZikpKQorCXsKKwkJcGdfZmF0YWwoImZhaWxlZCB0byBydW4gUFFj YW5jZWw6ICVzIiwgZXJyb3JidWYpOworCX07CisJY29uZmlybV9xdWVyeV9jYW5jZWxsZWQoY29u bik7CisKKwlQUWZyZWVDYW5jZWwoY2FuY2VsKTsKKworCS8qIHRlc3QgUFFyZXF1ZXN0Q2FuY2Vs ICovCisJc2VuZF9jYW5jZWxsYWJsZV9xdWVyeShjb25uLCBtb25pdG9yQ29ubik7CisJaWYgKCFQ UXJlcXVlc3RDYW5jZWwoY29ubikpCisJCXBnX2ZhdGFsKCJmYWlsZWQgdG8gcnVuIFBRcmVxdWVz dENhbmNlbDogJXMiLCBQUWVycm9yTWVzc2FnZShjb25uKSk7CisJY29uZmlybV9xdWVyeV9jYW5j ZWxsZWQoY29ubik7CisKKwkvKiB0ZXN0IFBRY2FuY2VsU2VuZCAqLworCXNlbmRfY2FuY2VsbGFi bGVfcXVlcnkoY29ubiwgbW9uaXRvckNvbm4pOworCWNhbmNlbENvbm4gPSBQUWNhbmNlbFNlbmQo Y29ubik7CisJaWYgKFBRY2FuY2VsU3RhdHVzKGNhbmNlbENvbm4pID09IENPTk5FQ1RJT05fQkFE KQorCQlwZ19mYXRhbCgiZmFpbGVkIHRvIHJ1biBQUWNhbmNlbFNlbmQ6ICVzIiwgUFFjYW5jZWxF cnJvck1lc3NhZ2UoY2FuY2VsQ29ubikpOworCWNvbmZpcm1fcXVlcnlfY2FuY2VsbGVkKGNvbm4p OworCVBRY2FuY2VsRmluaXNoKGNhbmNlbENvbm4pOworCisJLyogdGVzdCBQUWNhbmNlbENvbm4g YW5kIHRoZW4gcG9sbGluZyB3aXRoIFBRY2FuY2VsUG9sbCAqLworCXNlbmRfY2FuY2VsbGFibGVf cXVlcnkoY29ubiwgbW9uaXRvckNvbm4pOworCWNhbmNlbENvbm4gPSBQUWNhbmNlbENvbm4oY29u bik7CisJaWYgKFBRY2FuY2VsU3RhdHVzKGNhbmNlbENvbm4pID09IENPTk5FQ1RJT05fQkFEKQor CQlwZ19mYXRhbCgiYmFkIGNhbmNlbCBjb25uZWN0aW9uOiAlcyIsIFBRY2FuY2VsRXJyb3JNZXNz YWdlKGNhbmNlbENvbm4pKTsKKwl3aGlsZSAodHJ1ZSkKKwl7CisJCXN0cnVjdCB0aW1ldmFsIHR2 OworCQlmZF9zZXQJCWlucHV0X21hc2s7CisJCWZkX3NldAkJb3V0cHV0X21hc2s7CisJCVBvc3Rn cmVzUG9sbGluZ1N0YXR1c1R5cGUgcG9sbHJlcyA9IFBRY2FuY2VsUG9sbChjYW5jZWxDb25uKTsK KwkJaW50CQkJc29jayA9IFBRY2FuY2VsU29ja2V0KGNhbmNlbENvbm4pOworCisJCWlmIChwb2xs cmVzID09IFBHUkVTX1BPTExJTkdfT0spCisJCXsKKwkJCWJyZWFrOworCQl9CisKKwkJRkRfWkVS TygmaW5wdXRfbWFzayk7CisJCUZEX1pFUk8oJm91dHB1dF9tYXNrKTsKKwkJc3dpdGNoIChwb2xs cmVzKQorCQl7CisJCQljYXNlIFBHUkVTX1BPTExJTkdfUkVBRElORzoKKwkJCQlwZ19kZWJ1Zygi cG9sbGluZyBmb3IgcmVhZHNcbiIpOworCQkJCUZEX1NFVChzb2NrLCAmaW5wdXRfbWFzayk7CisJ CQkJYnJlYWs7CisJCQljYXNlIFBHUkVTX1BPTExJTkdfV1JJVElORzoKKwkJCQlwZ19kZWJ1Zygi cG9sbGluZyBmb3Igd3JpdGVzXG4iKTsKKwkJCQlGRF9TRVQoc29jaywgJm91dHB1dF9tYXNrKTsK KwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJcGdfZmF0YWwoImJhZCBjYW5jZWwgY29ubmVj dGlvbjogJXMiLCBQUWNhbmNlbEVycm9yTWVzc2FnZShjYW5jZWxDb25uKSk7CisJCX0KKworCQlp ZiAoc29jayA8IDApCisJCQlwZ19mYXRhbCgic29jayBkaWQgbm90IGV4aXN0OiAlcyIsIFBRY2Fu Y2VsRXJyb3JNZXNzYWdlKGNhbmNlbENvbm4pKTsKKworCQl0di50dl9zZWMgPSAzOworCQl0di50 dl91c2VjID0gMDsKKworCQl3aGlsZSAodHJ1ZSkKKwkJeworCQkJaWYgKHNlbGVjdChzb2NrICsg MSwgJmlucHV0X21hc2ssICZvdXRwdXRfbWFzaywgTlVMTCwgJnR2KSA8IDApCisJCQl7CisJCQkJ aWYgKGVycm5vID09IEVJTlRSKQorCQkJCQljb250aW51ZTsKKwkJCQlwZ19mYXRhbCgic2VsZWN0 KCkgZmFpbGVkOiAlbSIpOworCQkJfQorCQkJYnJlYWs7CisJCX0KKwl9CisJaWYgKFBRY2FuY2Vs U3RhdHVzKGNhbmNlbENvbm4pICE9IENPTk5FQ1RJT05fT0spCisJCXBnX2ZhdGFsKCJ1bmV4cGVj dGVkIGNhbmNlbCBjb25uZWN0aW9uIHN0YXR1czogJXMiLCBQUWNhbmNlbEVycm9yTWVzc2FnZShj YW5jZWxDb25uKSk7CisJY29uZmlybV9xdWVyeV9jYW5jZWxsZWQoY29ubik7CisKKwkvKgorCSAq IHRlc3QgUFFjYW5jZWxSZXNldCB3b3JrcyBvbiB0aGUgY2FuY2VsIGNvbm5lY3Rpb24gYW5kIGl0 IGNhbiBiZSByZXVzZWQKKwkgKiBhZnRlcgorCSAqLworCVBRY2FuY2VsUmVzZXQoY2FuY2VsQ29u bik7CisKKwlzZW5kX2NhbmNlbGxhYmxlX3F1ZXJ5KGNvbm4sIG1vbml0b3JDb25uKTsKKwlpZiAo UFFjYW5jZWxTdGF0dXMoY2FuY2VsQ29ubikgPT0gQ09OTkVDVElPTl9CQUQpCisJCXBnX2ZhdGFs KCJiYWQgY2FuY2VsIGNvbm5lY3Rpb246ICVzIiwgUFFjYW5jZWxFcnJvck1lc3NhZ2UoY2FuY2Vs Q29ubikpOworCXdoaWxlICh0cnVlKQorCXsKKwkJc3RydWN0IHRpbWV2YWwgdHY7CisJCWZkX3Nl dAkJaW5wdXRfbWFzazsKKwkJZmRfc2V0CQlvdXRwdXRfbWFzazsKKwkJUG9zdGdyZXNQb2xsaW5n U3RhdHVzVHlwZSBwb2xscmVzID0gUFFjYW5jZWxQb2xsKGNhbmNlbENvbm4pOworCQlpbnQJCQlz b2NrID0gUFFjYW5jZWxTb2NrZXQoY2FuY2VsQ29ubik7CisKKwkJaWYgKHBvbGxyZXMgPT0gUEdS RVNfUE9MTElOR19PSykKKwkJeworCQkJYnJlYWs7CisJCX0KKworCQlGRF9aRVJPKCZpbnB1dF9t YXNrKTsKKwkJRkRfWkVSTygmb3V0cHV0X21hc2spOworCQlzd2l0Y2ggKHBvbGxyZXMpCisJCXsK KwkJCWNhc2UgUEdSRVNfUE9MTElOR19SRUFESU5HOgorCQkJCXBnX2RlYnVnKCJwb2xsaW5nIGZv ciByZWFkc1xuIik7CisJCQkJRkRfU0VUKHNvY2ssICZpbnB1dF9tYXNrKTsKKwkJCQlicmVhazsK KwkJCWNhc2UgUEdSRVNfUE9MTElOR19XUklUSU5HOgorCQkJCXBnX2RlYnVnKCJwb2xsaW5nIGZv ciB3cml0ZXNcbiIpOworCQkJCUZEX1NFVChzb2NrLCAmb3V0cHV0X21hc2spOworCQkJCWJyZWFr OworCQkJZGVmYXVsdDoKKwkJCQlwZ19mYXRhbCgiYmFkIGNhbmNlbCBjb25uZWN0aW9uOiAlcyIs IFBRY2FuY2VsRXJyb3JNZXNzYWdlKGNhbmNlbENvbm4pKTsKKwkJfQorCisJCWlmIChzb2NrIDwg MCkKKwkJCXBnX2ZhdGFsKCJzb2NrIGRpZCBub3QgZXhpc3Q6ICVzIiwgUFFjYW5jZWxFcnJvck1l c3NhZ2UoY2FuY2VsQ29ubikpOworCisJCXR2LnR2X3NlYyA9IDM7CisJCXR2LnR2X3VzZWMgPSAw OworCisJCXdoaWxlICh0cnVlKQorCQl7CisJCQlpZiAoc2VsZWN0KHNvY2sgKyAxLCAmaW5wdXRf bWFzaywgJm91dHB1dF9tYXNrLCBOVUxMLCAmdHYpIDwgMCkKKwkJCXsKKwkJCQlpZiAoZXJybm8g PT0gRUlOVFIpCisJCQkJCWNvbnRpbnVlOworCQkJCXBnX2ZhdGFsKCJzZWxlY3QoKSBmYWlsZWQ6 ICVtIik7CisJCQl9CisJCQlicmVhazsKKwkJfQorCX0KKwlpZiAoUFFjYW5jZWxTdGF0dXMoY2Fu Y2VsQ29ubikgIT0gQ09OTkVDVElPTl9PSykKKwkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgY2FuY2Vs IGNvbm5lY3Rpb24gc3RhdHVzOiAlcyIsIFBRY2FuY2VsRXJyb3JNZXNzYWdlKGNhbmNlbENvbm4p KTsKKwljb25maXJtX3F1ZXJ5X2NhbmNlbGxlZChjb25uKTsKKworCVBRY2FuY2VsRmluaXNoKGNh bmNlbENvbm4pOworCisJZnByaW50ZihzdGRlcnIsICJva1xuIik7Cit9CisKIHN0YXRpYyB2b2lk CiB0ZXN0X2Rpc2FsbG93ZWRfaW5fcGlwZWxpbmUoUEdjb25uICpjb25uKQogewpAQCAtMTYzOCw2 ICsxODk2LDcgQEAgdXNhZ2UoY29uc3QgY2hhciAqcHJvZ25hbWUpCiBzdGF0aWMgdm9pZAogcHJp bnRfdGVzdF9saXN0KHZvaWQpCiB7CisJcHJpbnRmKCJjYW5jZWxcbiIpOwogCXByaW50ZigiZGlz YWxsb3dlZF9pbl9waXBlbGluZVxuIik7CiAJcHJpbnRmKCJtdWx0aV9waXBlbGluZXNcbiIpOwog CXByaW50Zigibm9zeW5jXG4iKTsKQEAgLTE3MzksNyArMTk5OCw5IEBAIG1haW4oaW50IGFyZ2Ms IGNoYXIgKiphcmd2KQogCQkJCQkJUFFUUkFDRV9TVVBQUkVTU19USU1FU1RBTVBTIHwgUFFUUkFD RV9SRUdSRVNTX01PREUpOwogCX0KIAotCWlmIChzdHJjbXAodGVzdG5hbWUsICJkaXNhbGxvd2Vk X2luX3BpcGVsaW5lIikgPT0gMCkKKwlpZiAoc3RyY21wKHRlc3RuYW1lLCAiY2FuY2VsIikgPT0g MCkKKwkJdGVzdF9jYW5jZWwoY29ubiwgY29ubmluZm8pOworCWVsc2UgaWYgKHN0cmNtcCh0ZXN0 bmFtZSwgImRpc2FsbG93ZWRfaW5fcGlwZWxpbmUiKSA9PSAwKQogCQl0ZXN0X2Rpc2FsbG93ZWRf aW5fcGlwZWxpbmUoY29ubik7CiAJZWxzZSBpZiAoc3RyY21wKHRlc3RuYW1lLCAibXVsdGlfcGlw ZWxpbmVzIikgPT0gMCkKIAkJdGVzdF9tdWx0aV9waXBlbGluZXMoY29ubik7Ci0tIAoyLjM0LjEK Cg== --_002_DBBPR83MB0507E785FE96166AB8D9940BF7049DBBPR83MB0507EURP_--