From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 3171143DCC for ; Wed, 12 Oct 2022 11:09:43 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A297068BD2D; Wed, 12 Oct 2022 14:09:40 +0300 (EEST) Received: from JPN01-OS0-obe.outbound.protection.outlook.com (mail-os0jpn01olkn2090.outbound.protection.outlook.com [40.92.98.90]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D8CD368BB2B for ; Wed, 12 Oct 2022 14:09:32 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aDxoQEWy7Uw2YQgjC8oRDMbiTPs6OH6o1sB915Y6aaRMpIyCnGrgxPtCz9LeSPg41V7/WQ09/ldUywgtqFJzpqrhfOcu2c4d9GFnOvhcaTihagBPE0SmOddjatg0RQzaf7/5FVjaxvq3sTGXmVkdkZrugQqY8R+B/4Oeb1j6egZjFnl3/yPU1edXeu3Dg/UAr9QqT0ee+1ScoitzupYSzQ36zg5lG62BFaGhNODqcFi/hsD5ftZWN7vTsR9VP28JSdut/0pX5Bt1TahnroSkMgmKj9I/YCGkEqGN09700txM6Ltm0iBva6ldFzohBLROGi6OusTvSLYm+5Cp+lMQDQ== 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=rXb60RF032xGTuzP5DE+CvYjdDwXQUZ+jo07XsLEEMk=; b=agslW/Puq6MyU4XplJIJdRt9hLeRNQhCLCQW19qhL5aV//tstQmJF+LBLOqtxs7fu47edfuZulvY32mpwucp0sOcHYu/UI4q3CVPvzgWIwXna70JgljpWzekI1o7mEePR69brJIx5Exf4YgT+qwp/hWK/3+rF5s4jUpRwm34VKRtYL7e52plDWuUOwz+mUMaK9mcxBWW04WpjaQZ8iRTlolefEviTDqx4RekJkIZrVi1F+mEkAFKu5X2rYtWSF9ysHhpNG3DMqpp0at8oSD1qa236efMgVaScFAU6x3Jwv2UmNocgfZZiHC30DaRuptnV0pEHSTZ7TwXfPQJ63IyGA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rXb60RF032xGTuzP5DE+CvYjdDwXQUZ+jo07XsLEEMk=; b=cmsYB9+efRPzQrze37Yk/uMnOSXy21PqKRehLsmJZyhhUHVdPu/VVdmhyVehnYOYVQ2s2xBafvQrQ0mcwNZvIQ+zhY+rKK16oyRDGnSnOwvt2PHynJqmDLN/PTNPO6tCR+ceaqWE7x4e8xPT18PoZnlLCJCXFO911sT3QiOnE7phqKuXUfJm63S1k+MOM+b+x1LAhawHFOFYGRqOupX8UJGqzpgrWd3Mi7ZmmD/v1BvNbW7RFSAkdMsvfPS95NY7DaTiUvwEk7qAloO8KrbRZztiz8DLO51YuudnWonCIwlPEkENfYvBwu23VIqXMArmdiH9Mzmn9wl+wp9NBBBPFw== Received: from OSZP286MB2173.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:186::5) by OS3P286MB2373.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:156::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5709.19; Wed, 12 Oct 2022 11:09:28 +0000 Received: from OSZP286MB2173.JPNP286.PROD.OUTLOOK.COM ([fe80::5fa3:fb9a:f219:8c6f]) by OSZP286MB2173.JPNP286.PROD.OUTLOOK.COM ([fe80::5fa3:fb9a:f219:8c6f%4]) with mapi id 15.20.5723.022; Wed, 12 Oct 2022 11:09:28 +0000 From: Wu Jianhua To: FFmpeg development discussions and patches Thread-Topic: [PATCH] avcodec: add D3D12VA hardware accelerated H264, HEVC, VP9, and AV1 decoding Thread-Index: AQHY3ikJgFdXkq4tME+m/9XuU1s84q4KmZUq Date: Wed, 12 Oct 2022 11:09:28 +0000 Message-ID: References: In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [Q6RiDXbq/Bbq2aSBiBcbyRuTD6+C82JR] x-ms-publictraffictype: Email x-ms-traffictypediagnostic: OSZP286MB2173:EE_|OS3P286MB2373:EE_ x-ms-office365-filtering-correlation-id: dd205b94-8233-42f1-fbff-08daac423adf x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: j9SEbnGLB+ogP+TpPd4cNodls+Cr6tyKRD8QbmSUfYgVjdD8DJhTgSXdWuyVjXirWhxi9RJEGVYvv5L9fQj4kcyoIGJoA6ceuNFMNqEVy3pkCaDqtBcRebuSmNaSTtSFXZeOnDC5yYN0zJJk63lxc+GgvaUFmn/z5FiAOjLBiUc9YVI2wtuKGxVVyQIK6PUM9g7WAVp4Qj/w3Bi3jptTzKD2L018BS0beWje2Htyb7kv/p7NcbPki3s4ycQ0vSCEFS6Tjn631GAci2vZnL61XuTj23AeMWXx6gGbThrMNArcFXHXLCn85kmzMDKPOuHhuZIGEiHY+tv8COgoDobw88Y8CH08ifwESSKT15+kjGeB74SAhQoyJanCvVb7buQqkYhtFm/D9HrrdTYWo4kNwMdfh/Iv0UxjBuqDQyOIh85fZloudxYf2W0qfwE0syX91f3vqwKx3N/vHaazEGFVSK+CZdo0EWekYt/nQIA1IqIX+xf6MTP6JPlat20dsGYr9lSKpfcJEf7HtMgS9x4z//zu2yUN9nqbsvwfTPKcHtIOvReNx1SqdN8nRuIgw9ghLCju6YaanGcyA4PZabCES6XOe4yU7tRI5YJGi88DF6tLCizdy2V6tQdNhJ9OiWAs12Ek0yG+5puRYsO8Iq6Xwg== x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?PYiPNFil5fjfsDG0LV+2+2zx6iSw8rSVmlO4PIbgAGQZhUljgrotEesqsLZ7?= =?us-ascii?Q?nO2xyVYyuR+3g1MHBalzk9BgDBGrIQ650kWlMr8aMuKcv/QfUfM5ZswtFmZm?= =?us-ascii?Q?fh+lWIquCx9rrN8HtCmpeCjicP3hlKjyCQkSYyr8M34VjbXFsz19djGakKVA?= =?us-ascii?Q?+Ekc9+zn/U1ucf1IYvHCBomefWGp529efogxEIvd2aMnzbr3dhtiFfBSRBPJ?= =?us-ascii?Q?6UKU8MbUXLNZqn7fXoqIsMHkfOXC357As2/8Tr1e+q00eBLYvXs6RfIQz2r8?= =?us-ascii?Q?OzA3oSlLSgpkBtZi0EolOsKyxWZNfdWlBk9tvyeQypQA/ZK9wuCwkjCfJAFd?= =?us-ascii?Q?YM2GchPFIpBQdc1ZYMfdV8spiAOGIsf+DJPSo6X6FuG44Csq9uNXRt+vGU6J?= =?us-ascii?Q?T28FZSn7KCauJGMz38Gw4eU8OwWDxxMAqf2Q6+Co+tevxDOuMr4ifhDR32Ly?= =?us-ascii?Q?7UJCTCWWD4hGNPPiz6X9+cOMh+f67Ze1TrjgpqLJDZBvydcrfSbtTr0dWN73?= =?us-ascii?Q?SoavYNX/uOgLOllVOdo933McrtFJzTrBBnCIIbmbkqqYMyegN27jrkXiVwAH?= =?us-ascii?Q?2QV8lAmx7hzQaqzW7vLY/gxrRaF93UxZLb+zsWByOXabpDPYKPMjWPDDjH32?= =?us-ascii?Q?PqFBSpx4ArjbdLW7oOcfc8ToDWI8vUW+Aitqjfn00di3N0nkWrRWNRXAwtBk?= =?us-ascii?Q?Lwqasdc59CwNp0kVzpZGeOk78gnAH88q/56inLY5f7RSAQ+S+oLkS2vK/RCx?= =?us-ascii?Q?vcNQA56aaaThBWoTSjiVsLc2j4W/D7c1brqnMueQ4dT/AX5B4q1MqUqQFrH3?= =?us-ascii?Q?8GNVdSdWsj2n+3VXHWJkaHeO2fm3ubrSxHQQ1b5s1dx4wsd1/4f0Vq0VWSCq?= =?us-ascii?Q?diaATkLNnAFvnHGIPqR1G7YSJ8zuagQuBHbVOND3eEyUfjlC0GLaiEKWyBn1?= =?us-ascii?Q?olSTQ88hWhlDlGcIcvxSip2aVxASg6jmqdvF4aRHSQRIX8QCPPmkaML5Vof4?= =?us-ascii?Q?ZedPnVKLVUiBATHI7RbPogwMjbM5J47HgBcvOVg7sIypM4Ep2E7FMjIhFZdq?= =?us-ascii?Q?fQV0hgIlZ/o3vZ1aeVrOCBL4koawWqANpKGFDVc3EJZ4Xy+CaGZs3c244oPN?= =?us-ascii?Q?J2aWPWeBPx/ktsPREGpIfuqz3BgrGonDjWoB8h8w+DieUCXNb0vopeHk3mR5?= =?us-ascii?Q?TdQ7E9UyeOEspVN/LXLoYVLJfWLNVHH1ludQdxvufCv1mK5JQ6Cf0EL55/MY?= =?us-ascii?Q?uIsm83VaAqLq1yfRzvuM8lGmso/2FIpVzGplwt6X/w=3D=3D?= Content-Type: multipart/mixed; boundary="_004_OSZP286MB2173C3D06713BCECA18FBA5BCA229OSZP286MB2173JPNP_" MIME-Version: 1.0 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: OSZP286MB2173.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: dd205b94-8233-42f1-fbff-08daac423adf X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Oct 2022 11:09:28.1454 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS3P286MB2373 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] avcodec: add D3D12VA hardware accelerated H264, HEVC, VP9, and AV1 decoding X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: --_004_OSZP286MB2173C3D06713BCECA18FBA5BCA229OSZP286MB2173JPNP_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable [PATCH] avcodec: add D3D12VA hardware accelerated H264, HEVC, VP9, and AV1 = decoding Patch attached. --_004_OSZP286MB2173C3D06713BCECA18FBA5BCA229OSZP286MB2173JPNP_ Content-Type: application/octet-stream; name="0001-avcodec-add-D3D12VA-hardware-accelerated-H264-HEVC-V.patch" Content-Description: 0001-avcodec-add-D3D12VA-hardware-accelerated-H264-HEVC-V.patch Content-Disposition: attachment; filename="0001-avcodec-add-D3D12VA-hardware-accelerated-H264-HEVC-V.patch"; size=145028; creation-date="Wed, 12 Oct 2022 10:55:15 GMT"; modification-date="Wed, 12 Oct 2022 11:08:26 GMT" Content-Transfer-Encoding: base64 RnJvbSA4NTQ4ZDc4ODcyNjA1MmUxZTAwODJmZmI3ZWI4MTI3MWQ0MjllY2JlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBXdSBKaWFuaHVhIDx0b3FzeHdAb3V0bG9vay5jb20+CkRhdGU6 IEZyaSwgMzAgU2VwIDIwMjIgMjI6NDI6MzYgKzA4MDAKU3ViamVjdDogW1BBVENIXSBhdmNvZGVj OiBhZGQgRDNEMTJWQSBoYXJkd2FyZSBhY2NlbGVyYXRlZCBIMjY0LCBIRVZDLCBWUDksCiBhbmQg QVYxIGRlY29kaW5nCgpUaGUgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb246Cmh0dHBzOi8vbGVh cm4ubWljcm9zb2Z0LmNvbS9lbi11cy93aW5kb3dzL3dpbjMyL21lZGZvdW5kL2RpcmVjdDNkLTEy LXZpZGVvLW92ZXJ2aWV3CgpXaXRoIHRoZSBEaXJlY3QzRCAxMiB2aWRlbyBkZWNvZGluZyBzdXBw b3J0LCB3ZSBjYW4gcmVuZGVyIG9yIHByb2Nlc3MKdGhlIGRlY29kZWQgaW1hZ2VzIGJ5IHRoZSBw aXhlbCBzaGFkZXJzIG9yIGNvbXB1dGUgc2hhZGVycyBkaXJlY3RseQp3aXRob3V0IHRoZSBleHRy YSBjb3B5IG92ZXJoZWFkLgoKVGhlIGNvbW1hbmQgYmVsb3cgaXMgaG93IHRvIGVuYWJsZSBkM2Qx MnZhOgpmZm1wZWcgLWh3YWNjZWwgZDNkMTJ2YSAtaSBpbnB1dC5tcDQgb3V0cHV0Lm1wNAoKU2ln bmVkLW9mZi1ieTogV3UgSmlhbmh1YSA8dG9xc3h3QG91dGxvb2suY29tPgotLS0KIENoYW5nZWxv ZyAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBjb25maWd1cmUgICAgICAgICAgICAgICAg ICAgICAgfCAgMTMgKwogbGliYXZjb2RlYy9NYWtlZmlsZSAgICAgICAgICAgIHwgICA2ICsKIGxp YmF2Y29kZWMvYXYxZGVjLmMgICAgICAgICAgICB8ICAxMCArCiBsaWJhdmNvZGVjL2QzZDEyZGVj LmMgICAgICAgICAgfCA1NDcgKysrKysrKysrKysrKysrKysrKysrKysrKysKIGxpYmF2Y29kZWMv ZDNkMTJkZWMuaCAgICAgICAgICB8IDE5MyArKysrKysrKysKIGxpYmF2Y29kZWMvZDNkMTJkZWNf YXYxLmMgICAgICB8IDQ0MCArKysrKysrKysrKysrKysrKysrKysKIGxpYmF2Y29kZWMvZDNkMTJk ZWNfaDI2NC5jICAgICB8IDMzNyArKysrKysrKysrKysrKysrCiBsaWJhdmNvZGVjL2QzZDEyZGVj X2hldmMuYyAgICAgfCAzOTEgKysrKysrKysrKysrKysrKysrKwogbGliYXZjb2RlYy9kM2QxMmRl Y192cDkuYyAgICAgIHwgMjk0ICsrKysrKysrKysrKysrCiBsaWJhdmNvZGVjL2gyNjRfc2xpY2Uu YyAgICAgICAgfCAgIDQgKwogbGliYXZjb2RlYy9oMjY0ZGVjLmMgICAgICAgICAgIHwgICA1ICst CiBsaWJhdmNvZGVjL2hldmNkZWMuYyAgICAgICAgICAgfCAgMTAgKwogbGliYXZjb2RlYy9od2Fj Y2Vscy5oICAgICAgICAgIHwgICA0ICsKIGxpYmF2Y29kZWMvaHdjb25maWcuaCAgICAgICAgICB8 ICAgMiArCiBsaWJhdmNvZGVjL3ZlcnNpb24uaCAgICAgICAgICAgfCAgIDIgKy0KIGxpYmF2Y29k ZWMvdnA5LmMgICAgICAgICAgICAgICB8ICAgNyArCiBsaWJhdnV0aWwvTWFrZWZpbGUgICAgICAg ICAgICAgfCAgIDMgKwogbGliYXZ1dGlsL2h3Y29udGV4dC5jICAgICAgICAgIHwgICA0ICsKIGxp YmF2dXRpbC9od2NvbnRleHQuaCAgICAgICAgICB8ICAgMSArCiBsaWJhdnV0aWwvaHdjb250ZXh0 X2QzZDEydmEuYyAgfCA2ODcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBsaWJh dnV0aWwvaHdjb250ZXh0X2QzZDEydmEuaCAgfCAyMzQgKysrKysrKysrKysKIGxpYmF2dXRpbC9o d2NvbnRleHRfaW50ZXJuYWwuaCB8ICAgMSArCiBsaWJhdnV0aWwvcGl4ZGVzYy5jICAgICAgICAg ICAgfCAgIDQgKwogbGliYXZ1dGlsL3BpeGZtdC5oICAgICAgICAgICAgIHwgICA5ICsKIGxpYmF2 dXRpbC90ZXN0cy9od2RldmljZS5jICAgICB8ICAgMiArCiBsaWJhdnV0aWwvdmVyc2lvbi5oICAg ICAgICAgICAgfCAgIDQgKy0KIDI3IGZpbGVzIGNoYW5nZWQsIDMyMTEgaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2QzZDEyZGVjLmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2QzZDEyZGVjLmgKIGNyZWF0ZSBtb2RlIDEw MDY0NCBsaWJhdmNvZGVjL2QzZDEyZGVjX2F2MS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbGliYXZj b2RlYy9kM2QxMmRlY19oMjY0LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdmNvZGVjL2QzZDEy ZGVjX2hldmMuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2Y29kZWMvZDNkMTJkZWNfdnA5LmMK IGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmEuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IGxpYmF2dXRpbC9od2NvbnRleHRfZDNkMTJ2YS5oCgpkaWZmIC0tZ2l0IGEv Q2hhbmdlbG9nIGIvQ2hhbmdlbG9nCmluZGV4IDE0YmE4YWM4NzQuLjRkNDQxNzE0OGIgMTAwNjQ0 Ci0tLSBhL0NoYW5nZWxvZworKysgYi9DaGFuZ2Vsb2cKQEAgLTE3LDYgKzE3LDcgQEAgdmVyc2lv biA8bmV4dD46CiAtIEFQQUMgZGVjb2RlciBhbmQgZGVtdXhlcgogLSBNZWRpYSAxMDBpIGRlY29k ZXJzCiAtIERUUyB0byBQVFMgcmVvcmRlciBic2YKKy0gRDNEMTJWQSBoYXJkd2FyZSBhY2NlbGVy YXRlZCBIMjY0LCBIRVZDLCBWUDkgYW5kIEFWMSBkZWNvZGluZwogCiAKIHZlcnNpb24gNS4xOgpk aWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IGYzZmQ5MWY1OTIuLjQ5MTZh ODg5Y2EgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTMzNyw2ICsz MzcsNyBAQCBFeHRlcm5hbCBsaWJyYXJ5IHN1cHBvcnQ6CiAgIC0tZGlzYWJsZS1jdWRhLWxsdm0g ICAgICBkaXNhYmxlIENVREEgY29tcGlsYXRpb24gdXNpbmcgY2xhbmcgW2F1dG9kZXRlY3RdCiAg IC0tZGlzYWJsZS1jdXZpZCAgICAgICAgICBkaXNhYmxlIE52aWRpYSBDVVZJRCBzdXBwb3J0IFth dXRvZGV0ZWN0XQogICAtLWRpc2FibGUtZDNkMTF2YSAgICAgICAgZGlzYWJsZSBNaWNyb3NvZnQg RGlyZWN0M0QgMTEgdmlkZW8gYWNjZWxlcmF0aW9uIGNvZGUgW2F1dG9kZXRlY3RdCisgIC0tZGlz YWJsZS1kM2QxMnZhICAgICAgICBkaXNhYmxlIE1pY3Jvc29mdCBEaXJlY3QzRCAxMiB2aWRlbyBh Y2NlbGVyYXRpb24gY29kZSBbYXV0b2RldGVjdF0KICAgLS1kaXNhYmxlLWR4dmEyICAgICAgICAg IGRpc2FibGUgTWljcm9zb2Z0IERpcmVjdFggOSB2aWRlbyBhY2NlbGVyYXRpb24gY29kZSBbYXV0 b2RldGVjdF0KICAgLS1kaXNhYmxlLWZmbnZjb2RlYyAgICAgIGRpc2FibGUgZHluYW1pY2FsbHkg bGlua2VkIE52aWRpYSBjb2RlIFthdXRvZGV0ZWN0XQogICAtLWVuYWJsZS1saWJkcm0gICAgICAg ICAgZW5hYmxlIERSTSBjb2RlIChMaW51eCkgW25vXQpAQCAtMTg5Nyw2ICsxODk4LDcgQEAgSFdB Q0NFTF9BVVRPREVURUNUX0xJQlJBUllfTElTVD0iCiAgICAgY3VkYV9sbHZtCiAgICAgY3V2aWQK ICAgICBkM2QxMXZhCisgICAgZDNkMTJ2YQogICAgIGR4dmEyCiAgICAgZmZudmNvZGVjCiAgICAg bnZkZWMKQEAgLTMwMjEsNiArMzAyMyw3IEBAIGNyeXN0YWxoZF9kZXBzPSJsaWJjcnlzdGFsaGRf bGliY3J5c3RhbGhkX2lmX2giCiBjdWRhX2RlcHM9ImZmbnZjb2RlYyIKIGN1dmlkX2RlcHM9ImZm bnZjb2RlYyIKIGQzZDExdmFfZGVwcz0iZHh2YV9oIElEM0QxMVZpZGVvRGVjb2RlciBJRDNEMTFW aWRlb0NvbnRleHQiCitkM2QxMnZhX2RlcHM9ImR4dmFfaCBJRDNEMTJEZXZpY2UgSUQzRDEyVmlk ZW9EZWNvZGVyIgogZHh2YTJfZGVwcz0iZHh2YTJhcGlfaCBEWFZBMl9Db25maWdQaWN0dXJlRGVj b2RlIG9sZTMyIHVzZXIzMiIKIGZmbnZjb2RlY19kZXBzX2FueT0ibGliZGwgTG9hZExpYnJhcnki CiBudmRlY19kZXBzPSJmZm52Y29kZWMiCkBAIC0zMDMzLDYgKzMwMzYsOCBAQCBhdjFfZDNkMTF2 YV9od2FjY2VsX2RlcHM9ImQzZDExdmEgRFhWQV9QaWNQYXJhbXNfQVYxIgogYXYxX2QzZDExdmFf aHdhY2NlbF9zZWxlY3Q9ImF2MV9kZWNvZGVyIgogYXYxX2QzZDExdmEyX2h3YWNjZWxfZGVwcz0i ZDNkMTF2YSBEWFZBX1BpY1BhcmFtc19BVjEiCiBhdjFfZDNkMTF2YTJfaHdhY2NlbF9zZWxlY3Q9 ImF2MV9kZWNvZGVyIgorYXYxX2QzZDEyZGVjX2h3YWNjZWxfZGVwcz0iZDNkMTJ2YSBEWFZBX1Bp Y1BhcmFtc19BVjEiCithdjFfZDNkMTJkZWNfaHdhY2NlbF9zZWxlY3Q9ImF2MV9kZWNvZGVyIgog YXYxX2R4dmEyX2h3YWNjZWxfZGVwcz0iZHh2YTIgRFhWQV9QaWNQYXJhbXNfQVYxIgogYXYxX2R4 dmEyX2h3YWNjZWxfc2VsZWN0PSJhdjFfZGVjb2RlciIKIGF2MV9udmRlY19od2FjY2VsX2RlcHM9 Im52ZGVjIENVVklEQVYxUElDUEFSQU1TIgpAQCAtMzA0OSw2ICszMDU0LDggQEAgaDI2NF9kM2Qx MXZhX2h3YWNjZWxfZGVwcz0iZDNkMTF2YSIKIGgyNjRfZDNkMTF2YV9od2FjY2VsX3NlbGVjdD0i aDI2NF9kZWNvZGVyIgogaDI2NF9kM2QxMXZhMl9od2FjY2VsX2RlcHM9ImQzZDExdmEiCiBoMjY0 X2QzZDExdmEyX2h3YWNjZWxfc2VsZWN0PSJoMjY0X2RlY29kZXIiCitoMjY0X2QzZDEyZGVjX2h3 YWNjZWxfZGVwcz0iZDNkMTJ2YSIKK2gyNjRfZDNkMTJkZWNfaHdhY2NlbF9zZWxlY3Q9ImgyNjRf ZGVjb2RlciIKIGgyNjRfZHh2YTJfaHdhY2NlbF9kZXBzPSJkeHZhMiIKIGgyNjRfZHh2YTJfaHdh Y2NlbF9zZWxlY3Q9ImgyNjRfZGVjb2RlciIKIGgyNjRfbnZkZWNfaHdhY2NlbF9kZXBzPSJudmRl YyIKQEAgLTMwNjMsNiArMzA3MCw4IEBAIGhldmNfZDNkMTF2YV9od2FjY2VsX2RlcHM9ImQzZDEx dmEgRFhWQV9QaWNQYXJhbXNfSEVWQyIKIGhldmNfZDNkMTF2YV9od2FjY2VsX3NlbGVjdD0iaGV2 Y19kZWNvZGVyIgogaGV2Y19kM2QxMXZhMl9od2FjY2VsX2RlcHM9ImQzZDExdmEgRFhWQV9QaWNQ YXJhbXNfSEVWQyIKIGhldmNfZDNkMTF2YTJfaHdhY2NlbF9zZWxlY3Q9ImhldmNfZGVjb2RlciIK K2hldmNfZDNkMTJkZWNfaHdhY2NlbF9kZXBzPSJkM2QxMnZhIERYVkFfUGljUGFyYW1zX0hFVkMi CitoZXZjX2QzZDEyZGVjX2h3YWNjZWxfc2VsZWN0PSJoZXZjX2RlY29kZXIiCiBoZXZjX2R4dmEy X2h3YWNjZWxfZGVwcz0iZHh2YTIgRFhWQV9QaWNQYXJhbXNfSEVWQyIKIGhldmNfZHh2YTJfaHdh Y2NlbF9zZWxlY3Q9ImhldmNfZGVjb2RlciIKIGhldmNfbnZkZWNfaHdhY2NlbF9kZXBzPSJudmRl YyIKQEAgLTMxMjcsNiArMzEzNiw4IEBAIHZwOV9kM2QxMXZhX2h3YWNjZWxfZGVwcz0iZDNkMTF2 YSBEWFZBX1BpY1BhcmFtc19WUDkiCiB2cDlfZDNkMTF2YV9od2FjY2VsX3NlbGVjdD0idnA5X2Rl Y29kZXIiCiB2cDlfZDNkMTF2YTJfaHdhY2NlbF9kZXBzPSJkM2QxMXZhIERYVkFfUGljUGFyYW1z X1ZQOSIKIHZwOV9kM2QxMXZhMl9od2FjY2VsX3NlbGVjdD0idnA5X2RlY29kZXIiCit2cDlfZDNk MTJkZWNfaHdhY2NlbF9kZXBzPSJkM2QxMnZhIERYVkFfUGljUGFyYW1zX1ZQOSIKK3ZwOV9kM2Qx MmRlY19od2FjY2VsX3NlbGVjdD0idnA5X2RlY29kZXIiCiB2cDlfZHh2YTJfaHdhY2NlbF9kZXBz PSJkeHZhMiBEWFZBX1BpY1BhcmFtc19WUDkiCiB2cDlfZHh2YTJfaHdhY2NlbF9zZWxlY3Q9InZw OV9kZWNvZGVyIgogdnA5X252ZGVjX2h3YWNjZWxfZGVwcz0ibnZkZWMiCkBAIC02NDM5LDYgKzY0 NTAsOCBAQCBjaGVja190eXBlICJ3aW5kb3dzLmggZHhnaTFfMi5oIiAiSURYR0lPdXRwdXQxIgog Y2hlY2tfdHlwZSAid2luZG93cy5oIGR4Z2kxXzUuaCIgIklEWEdJT3V0cHV0NSIKIGNoZWNrX3R5 cGUgIndpbmRvd3MuaCBkM2QxMS5oIiAiSUQzRDExVmlkZW9EZWNvZGVyIgogY2hlY2tfdHlwZSAi d2luZG93cy5oIGQzZDExLmgiICJJRDNEMTFWaWRlb0NvbnRleHQiCitjaGVja190eXBlICJ3aW5k b3dzLmggZDNkMTIuaCIgIklEM0QxMkRldmljZSIKK2NoZWNrX3R5cGUgIndpbmRvd3MuaCBkM2Qx MnZpZGVvLmgiICJJRDNEMTJWaWRlb0RlY29kZXIiCiBjaGVja190eXBlICJ3aW5kb3dzLmgiICJE UElfQVdBUkVORVNTX0NPTlRFWFQiIC1EX1dJTjMyX1dJTk5UPTB4MEEwMAogY2hlY2tfdHlwZSAi ZDNkOS5oIGR4dmEyYXBpLmgiIERYVkEyX0NvbmZpZ1BpY3R1cmVEZWNvZGUgLURfV0lOMzJfV0lO TlQ9MHgwNjAyCiBjaGVja19mdW5jX2hlYWRlcnMgbWZhcGkuaCBNRkNyZWF0ZUFsaWduZWRNZW1v cnlCdWZmZXIgLWxtZnBsYXQKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvTWFrZWZpbGUgYi9saWJh dmNvZGVjL01ha2VmaWxlCmluZGV4IDM3YjYzY2FkYzIuLjJiMzUxNDg0ZDEgMTAwNjQ0Ci0tLSBh L2xpYmF2Y29kZWMvTWFrZWZpbGUKKysrIGIvbGliYXZjb2RlYy9NYWtlZmlsZQpAQCAtOTQ5LDYg Kzk0OSw3IEBAIE9CSlMtJChDT05GSUdfQURQQ01fWk9SS19ERUNPREVSKSAgICAgICAgICs9IGFk cGNtLm8gYWRwY21fZGF0YS5vCiAKICMgaGFyZHdhcmUgYWNjZWxlcmF0b3JzCiBPQkpTLSQoQ09O RklHX0QzRDExVkEpICAgICAgICAgICAgICAgICAgICArPSBkeHZhMi5vCitPQkpTLSQoQ09ORklH X0QzRDEyVkEpICAgICAgICAgICAgICAgICAgICArPSBkM2QxMmRlYy5vCiBPQkpTLSQoQ09ORklH X0RYVkEyKSAgICAgICAgICAgICAgICAgICAgICArPSBkeHZhMi5vCiBPQkpTLSQoQ09ORklHX05W REVDKSAgICAgICAgICAgICAgICAgICAgICArPSBudmRlYy5vCiBPQkpTLSQoQ09ORklHX1ZBQVBJ KSAgICAgICAgICAgICAgICAgICAgICArPSB2YWFwaV9kZWNvZGUubwpAQCAtOTU3LDYgKzk1OCw3 IEBAIE9CSlMtJChDT05GSUdfVkRQQVUpICAgICAgICAgICAgICAgICAgICAgICs9IHZkcGF1Lm8K IAogT0JKUy0kKENPTkZJR19BVjFfRDNEMTFWQV9IV0FDQ0VMKSAgICAgICAgKz0gZHh2YTJfYXYx Lm8KIE9CSlMtJChDT05GSUdfQVYxX0RYVkEyX0hXQUNDRUwpICAgICAgICAgICs9IGR4dmEyX2F2 MS5vCitPQkpTLSQoQ09ORklHX0FWMV9EM0QxMkRFQ19IV0FDQ0VMKSAgICAgICArPSBkM2QxMmRl Y19hdjEubwogT0JKUy0kKENPTkZJR19BVjFfTlZERUNfSFdBQ0NFTCkgICAgICAgICAgKz0gbnZk ZWNfYXYxLm8KIE9CSlMtJChDT05GSUdfQVYxX1ZBQVBJX0hXQUNDRUwpICAgICAgICAgICs9IHZh YXBpX2F2MS5vCiBPQkpTLSQoQ09ORklHX0FWMV9WRFBBVV9IV0FDQ0VMKSAgICAgICAgICArPSB2 ZHBhdV9hdjEubwpAQCAtOTY0LDYgKzk2Niw3IEBAIE9CSlMtJChDT05GSUdfSDI2M19WQUFQSV9I V0FDQ0VMKSAgICAgICAgICs9IHZhYXBpX21wZWc0Lm8KIE9CSlMtJChDT05GSUdfSDI2M19WSURF T1RPT0xCT1hfSFdBQ0NFTCkgICs9IHZpZGVvdG9vbGJveC5vCiBPQkpTLSQoQ09ORklHX0gyNjRf RDNEMTFWQV9IV0FDQ0VMKSAgICAgICArPSBkeHZhMl9oMjY0Lm8KIE9CSlMtJChDT05GSUdfSDI2 NF9EWFZBMl9IV0FDQ0VMKSAgICAgICAgICs9IGR4dmEyX2gyNjQubworT0JKUy0kKENPTkZJR19I MjY0X0QzRDEyREVDX0hXQUNDRUwpICAgICAgKz0gZDNkMTJkZWNfaDI2NC5vCiBPQkpTLSQoQ09O RklHX0gyNjRfTlZERUNfSFdBQ0NFTCkgICAgICAgICArPSBudmRlY19oMjY0Lm8KIE9CSlMtJChD T05GSUdfSDI2NF9RU1ZfSFdBQ0NFTCkgICAgICAgICAgICs9IHFzdmRlYy5vCiBPQkpTLSQoQ09O RklHX0gyNjRfVkFBUElfSFdBQ0NFTCkgICAgICAgICArPSB2YWFwaV9oMjY0Lm8KQEAgLTk3MSw2 ICs5NzQsNyBAQCBPQkpTLSQoQ09ORklHX0gyNjRfVkRQQVVfSFdBQ0NFTCkgICAgICAgICArPSB2 ZHBhdV9oMjY0Lm8KIE9CSlMtJChDT05GSUdfSDI2NF9WSURFT1RPT0xCT1hfSFdBQ0NFTCkgICs9 IHZpZGVvdG9vbGJveC5vCiBPQkpTLSQoQ09ORklHX0hFVkNfRDNEMTFWQV9IV0FDQ0VMKSAgICAg ICArPSBkeHZhMl9oZXZjLm8KIE9CSlMtJChDT05GSUdfSEVWQ19EWFZBMl9IV0FDQ0VMKSAgICAg ICAgICs9IGR4dmEyX2hldmMubworT0JKUy0kKENPTkZJR19IRVZDX0QzRDEyREVDX0hXQUNDRUwp ICAgICAgKz0gZDNkMTJkZWNfaGV2Yy5vCiBPQkpTLSQoQ09ORklHX0hFVkNfTlZERUNfSFdBQ0NF TCkgICAgICAgICArPSBudmRlY19oZXZjLm8KIE9CSlMtJChDT05GSUdfSEVWQ19RU1ZfSFdBQ0NF TCkgICAgICAgICAgICs9IHFzdmRlYy5vCiBPQkpTLSQoQ09ORklHX0hFVkNfVkFBUElfSFdBQ0NF TCkgICAgICAgICArPSB2YWFwaV9oZXZjLm8gaDI2NV9wcm9maWxlX2xldmVsLm8KQEAgLTEwMDEs NiArMTAwNSw3IEBAIE9CSlMtJChDT05GSUdfVlA4X05WREVDX0hXQUNDRUwpICAgICAgICAgICs9 IG52ZGVjX3ZwOC5vCiBPQkpTLSQoQ09ORklHX1ZQOF9WQUFQSV9IV0FDQ0VMKSAgICAgICAgICAr PSB2YWFwaV92cDgubwogT0JKUy0kKENPTkZJR19WUDlfRDNEMTFWQV9IV0FDQ0VMKSAgICAgICAg Kz0gZHh2YTJfdnA5Lm8KIE9CSlMtJChDT05GSUdfVlA5X0RYVkEyX0hXQUNDRUwpICAgICAgICAg ICs9IGR4dmEyX3ZwOS5vCitPQkpTLSQoQ09ORklHX1ZQOV9EM0QxMkRFQ19IV0FDQ0VMKSAgICAg ICArPSBkM2QxMmRlY192cDkubwogT0JKUy0kKENPTkZJR19WUDlfTlZERUNfSFdBQ0NFTCkgICAg ICAgICAgKz0gbnZkZWNfdnA5Lm8KIE9CSlMtJChDT05GSUdfVlA5X1ZBQVBJX0hXQUNDRUwpICAg ICAgICAgICs9IHZhYXBpX3ZwOS5vCiBPQkpTLSQoQ09ORklHX1ZQOV9WRFBBVV9IV0FDQ0VMKSAg ICAgICAgICArPSB2ZHBhdV92cDkubwpAQCAtMTI0MSw2ICsxMjQ2LDcgQEAgU0tJUEhFQURFUlMg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKz0gJV90YWJsZWdlbi5oICAgICAgICAgICAgICAg ICAgXAogCiBTS0lQSEVBREVSUy0kKENPTkZJR19BTUYpICAgICAgICAgICAgICArPSBhbWZlbmMu aAogU0tJUEhFQURFUlMtJChDT05GSUdfRDNEMTFWQSkgICAgICAgICAgKz0gZDNkMTF2YS5oIGR4 dmEyX2ludGVybmFsLmgKK1NLSVBIRUFERVJTLSQoQ09ORklHX0QzRDEyVkEpICAgICAgICAgICs9 IGQzZDEydmEuaCBkM2QxMmRlYy5oCiBTS0lQSEVBREVSUy0kKENPTkZJR19EWFZBMikgICAgICAg ICAgICArPSBkeHZhMi5oIGR4dmEyX2ludGVybmFsLmgKIFNLSVBIRUFERVJTLSQoQ09ORklHX0pO SSkgICAgICAgICAgICAgICs9IGZmam5pLmgKIFNLSVBIRUFERVJTLSQoQ09ORklHX0xDTVMyKSAg ICAgICAgICAgICs9IGZmbGNtczIuaApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9hdjFkZWMuYyBi L2xpYmF2Y29kZWMvYXYxZGVjLmMKaW5kZXggMGMyNGVhYzg0Mi4uMjQwNTlmYzgzMSAxMDA2NDQK LS0tIGEvbGliYXZjb2RlYy9hdjFkZWMuYworKysgYi9saWJhdmNvZGVjL2F2MWRlYy5jCkBAIC00 NDAsNiArNDQwLDcgQEAgc3RhdGljIGludCBnZXRfcGl4ZWxfZm9ybWF0KEFWQ29kZWNDb250ZXh0 ICphdmN0eCkKICAgICBlbnVtIEFWUGl4ZWxGb3JtYXQgcGl4X2ZtdCA9IEFWX1BJWF9GTVRfTk9O RTsKICNkZWZpbmUgSFdBQ0NFTF9NQVggKENPTkZJR19BVjFfRFhWQTJfSFdBQ0NFTCArIFwKICAg ICAgICAgICAgICAgICAgICAgIENPTkZJR19BVjFfRDNEMTFWQV9IV0FDQ0VMICogMiArIFwKKyAg ICAgICAgICAgICAgICAgICAgIENPTkZJR19BVjFfRDNEMTJERUNfSFdBQ0NFTCArIFwKICAgICAg ICAgICAgICAgICAgICAgIENPTkZJR19BVjFfTlZERUNfSFdBQ0NFTCArIFwKICAgICAgICAgICAg ICAgICAgICAgIENPTkZJR19BVjFfVkFBUElfSFdBQ0NFTCArIFwKICAgICAgICAgICAgICAgICAg ICAgIENPTkZJR19BVjFfVkRQQVVfSFdBQ0NFTCkKQEAgLTUxNCw2ICs1MTUsOSBAQCBzdGF0aWMg aW50IGdldF9waXhlbF9mb3JtYXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQogICAgICAgICAqZm10 cCsrID0gQVZfUElYX0ZNVF9EM0QxMVZBX1ZMRDsKICAgICAgICAgKmZtdHArKyA9IEFWX1BJWF9G TVRfRDNEMTE7CiAjZW5kaWYKKyNpZiBDT05GSUdfQVYxX0QzRDEyREVDX0hXQUNDRUwKKyAgICAg ICAgKmZtdHArKyA9IEFWX1BJWF9GTVRfRDNEMTI7CisjZW5kaWYKICNpZiBDT05GSUdfQVYxX05W REVDX0hXQUNDRUwKICAgICAgICAgKmZtdHArKyA9IEFWX1BJWF9GTVRfQ1VEQTsKICNlbmRpZgpA QCAtNTMyLDYgKzUzNiw5IEBAIHN0YXRpYyBpbnQgZ2V0X3BpeGVsX2Zvcm1hdChBVkNvZGVjQ29u dGV4dCAqYXZjdHgpCiAgICAgICAgICpmbXRwKysgPSBBVl9QSVhfRk1UX0QzRDExVkFfVkxEOwog ICAgICAgICAqZm10cCsrID0gQVZfUElYX0ZNVF9EM0QxMTsKICNlbmRpZgorI2lmIENPTkZJR19B VjFfRDNEMTJERUNfSFdBQ0NFTAorICAgICAgICAqZm10cCsrID0gQVZfUElYX0ZNVF9EM0QxMjsK KyNlbmRpZgogI2lmIENPTkZJR19BVjFfTlZERUNfSFdBQ0NFTAogICAgICAgICAqZm10cCsrID0g QVZfUElYX0ZNVF9DVURBOwogI2VuZGlmCkBAIC0xMjcxLDYgKzEyNzgsOSBAQCBjb25zdCBGRkNv ZGVjIGZmX2F2MV9kZWNvZGVyID0gewogI2lmIENPTkZJR19BVjFfRDNEMTFWQTJfSFdBQ0NFTAog ICAgICAgICBIV0FDQ0VMX0QzRDExVkEyKGF2MSksCiAjZW5kaWYKKyNpZiBDT05GSUdfQVYxX0Qz RDEyREVDX0hXQUNDRUwKKyAgICAgICAgSFdBQ0NFTF9EM0QxMkRFQyhhdjEpLAorI2VuZGlmCiAj aWYgQ09ORklHX0FWMV9OVkRFQ19IV0FDQ0VMCiAgICAgICAgIEhXQUNDRUxfTlZERUMoYXYxKSwK ICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9kM2QxMmRlYy5jIGIvbGliYXZjb2RlYy9k M2QxMmRlYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjYyMzdmZjU0 ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNvZGVjL2QzZDEyZGVjLmMKQEAgLTAsMCArMSw1 NDcgQEAKKy8qDQorICogRGlyZWN0M0QgMTIgSFcgYWNjZWxlcmF0aW9uIHZpZGVvIGRlY29kZXIN CisgKg0KKyAqIGNvcHlyaWdodCAoYykgMjAyMiBXdSBKaWFuaHVhIDx0b3FzeHdAb3V0bG9vay5j b20+DQorICoNCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuDQorICoNCisgKiBGRm1w ZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQorICog bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp Yw0KKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b247IGVpdGhlcg0KKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KKyAqDQorICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQorICogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCisgKiBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl IEdOVQ0KKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu DQorICoNCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljDQorICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90 LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0ENCisg Ki8NCisNCisjaW5jbHVkZSA8YXNzZXJ0Lmg+DQorI2luY2x1ZGUgPHN0cmluZy5oPg0KKyNpbmNs dWRlIDxpbml0Z3VpZC5oPg0KKw0KKyNpbmNsdWRlICJsaWJhdnV0aWwvY29tbW9uLmgiDQorI2lu Y2x1ZGUgImxpYmF2dXRpbC9sb2cuaCINCisjaW5jbHVkZSAibGliYXZ1dGlsL3RpbWUuaCINCisj aW5jbHVkZSAibGliYXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhLmgiDQorI2luY2x1ZGUgImF2Y29k ZWMuaCINCisjaW5jbHVkZSAiZGVjb2RlLmgiDQorI2luY2x1ZGUgImQzZDEyZGVjLmgiDQorDQor dHlwZWRlZiBzdHJ1Y3QgQ29tbWFuZEFsbG9jYXRvcg0KK3sNCisgICAgSUQzRDEyQ29tbWFuZEFs bG9jYXRvciAqY29tbWFuZF9hbGxvY2F0b3I7DQorICAgIHVpbnQ2NF90IGZlbmNlX3ZhbHVlOw0K K30gQ29tbWFuZEFsbG9jYXRvcjsNCisNCitVSU5UIGZmX2QzZDEyZGVjX2dldF9zdWl0YWJsZV9t YXhfYml0c3RyZWFtX3NpemUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQ0KK3sNCisgICAgVUlOVCBy ZXQgPSBhdmN0eC0+d2lkdGggKiBhdmN0eC0+aGVpZ2h0ICogMS41Ow0KKyAgICBzd2l0Y2ggKGF2 Y3R4LT5zd19waXhfZm10KSB7DQorICAgIGNhc2UgQVZfUElYX0ZNVF9ZVVY0MjBQMTA6DQorICAg ICAgICByZXR1cm4gcmV0ICogMjsNCisNCisgICAgY2FzZSBBVl9QSVhfRk1UX1lVVjQyMFA6DQor ICAgIGRlZmF1bHQ6DQorICAgICAgICByZXR1cm4gcmV0Ow0KKyAgICB9DQorfQ0KKw0KK3N0YXRp YyBpbnQgZDNkMTJkZWNfZ2V0X3ZhbGlkX2NvbW1hbmRfYWxsb2NhdG9yKEFWQ29kZWNDb250ZXh0 ICphdmN0eCwgSUQzRDEyQ29tbWFuZEFsbG9jYXRvciAqKnBwQWxsb2NhdG9yKQ0KK3sNCisgICAg SFJFU1VMVCBocjsNCisgICAgRDNEMTJWQURlY29kZUNvbnRleHQgKmN0eCA9IEQzRDEyVkFfREVD T0RFX0NPTlRFWFQoYXZjdHgpOw0KKyAgICBDb21tYW5kQWxsb2NhdG9yIGFsbG9jYXRvcjsNCisN CisgICAgaWYgKGF2X2ZpZm9fcGVlayhjdHgtPmFsbG9jYXRvcl9xdWV1ZSwgJmFsbG9jYXRvciwg MSwgMCkgPj0gMCkgew0KKyAgICAgICAgdWludDY0X3QgY29tcGxldGlvbiA9IElEM0QxMkZlbmNl X0dldENvbXBsZXRlZFZhbHVlKGN0eC0+c3luY19jdHgtPmZlbmNlKTsNCisgICAgICAgIGlmIChj b21wbGV0aW9uID49IGFsbG9jYXRvci5mZW5jZV92YWx1ZSkgew0KKyAgICAgICAgICAgICpwcEFs bG9jYXRvciA9IGFsbG9jYXRvci5jb21tYW5kX2FsbG9jYXRvcjsNCisgICAgICAgICAgICBhdl9m aWZvX3JlYWQoY3R4LT5hbGxvY2F0b3JfcXVldWUsICZhbGxvY2F0b3IsIDEpOw0KKyAgICAgICAg ICAgIHJldHVybiAwOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIGhyID0gSUQzRDEyRGV2 aWNlX0NyZWF0ZUNvbW1hbmRBbGxvY2F0b3IoY3R4LT5kZXZpY2VfY3R4LT5kZXZpY2UsIEQzRDEy X0NPTU1BTkRfTElTVF9UWVBFX1ZJREVPX0RFQ09ERSwNCisgICAgICAgICZJSURfSUQzRDEyQ29t bWFuZEFsbG9jYXRvciwgcHBBbGxvY2F0b3IpOw0KKyAgICBpZiAoRkFJTEVEKGhyKSkgew0KKyAg ICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gY3JlYXRlIGEgbmV3 IGNvbW1hbmQgYWxsb2NhdG9yIVxuIik7DQorICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwp Ow0KKyAgICB9DQorDQorICAgIHJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IGQzZDEyZGVj X2Rpc2NhcmRfY29tbWFuZF9hbGxvY2F0b3IoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBJRDNEMTJD b21tYW5kQWxsb2NhdG9yICpwQWxsb2NhdG9yLCB1aW50NjRfdCBmZW5jZV92YWx1ZSkNCit7DQor ICAgIEQzRDEyVkFEZWNvZGVDb250ZXh0ICpjdHggPSBEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2 Y3R4KTsNCisNCisgICAgQ29tbWFuZEFsbG9jYXRvciBhbGxvY2F0b3IgPSB7DQorICAgICAgICAu Y29tbWFuZF9hbGxvY2F0b3IgPSBwQWxsb2NhdG9yLA0KKyAgICAgICAgLmZlbmNlX3ZhbHVlID0g ZmVuY2VfdmFsdWUNCisgICAgfTsNCisNCisgICAgaWYgKGF2X2ZpZm9fd3JpdGUoY3R4LT5hbGxv Y2F0b3JfcXVldWUsICZhbGxvY2F0b3IsIDEpIDwgMCkgew0KKyAgICAgICAgRDNEMTJfT0JKRUNU X1JFTEVBU0UocEFsbG9jYXRvcik7DQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOw0K KyAgICB9DQorDQorICAgIHJldHVybiAwOw0KK30NCisNCitzdGF0aWMgdm9pZCBidWZyZWZfZnJl ZV9pbnRlcmZhY2Uodm9pZCAqb3BhcXVlLCB1aW50OF90ICpkYXRhKQ0KK3sNCisgICAgRDNEMTJf T0JKRUNUX1JFTEVBU0Uob3BhcXVlKTsNCit9DQorDQorc3RhdGljIEFWQnVmZmVyUmVmICpidWZy ZWZfd3JhcF9pbnRlcmZhY2UoSVVua25vd24gKmlmYWNlKQ0KK3sNCisgICAgcmV0dXJuIGF2X2J1 ZmZlcl9jcmVhdGUoKHVpbnQ4X3QqKWlmYWNlLCAxLCBidWZyZWZfZnJlZV9pbnRlcmZhY2UsIGlm YWNlLCAwKTsNCit9DQorDQorc3RhdGljIGludCBkM2QxMmRlY19jcmVhdGVfYnVmZmVyKEFWQ29k ZWNDb250ZXh0ICphdmN0eCwgVUlOVCBzaXplLCBJRDNEMTJSZXNvdXJjZSAqKnBwUmVzb3VjZSkN Cit7DQorICAgIEQzRDEyVkFEZWNvZGVDb250ZXh0ICpjdHggPSBEM0QxMlZBX0RFQ09ERV9DT05U RVhUKGF2Y3R4KTsNCisNCisgICAgRDNEMTJfSEVBUF9QUk9QRVJUSUVTIGhlYXBfcHJvcHMgPSB7 IC5UeXBlID0gRDNEMTJfSEVBUF9UWVBFX1VQTE9BRCB9Ow0KKw0KKyAgICBEM0QxMl9SRVNPVVJD RV9ERVNDIGRlc2MgPSB7DQorICAgICAgICAuRGltZW5zaW9uICAgICAgICA9IEQzRDEyX1JFU09V UkNFX0RJTUVOU0lPTl9CVUZGRVIsDQorICAgICAgICAuQWxpZ25tZW50ICAgICAgICA9IEQzRDEy X0RFRkFVTFRfUkVTT1VSQ0VfUExBQ0VNRU5UX0FMSUdOTUVOVCwNCisgICAgICAgIC5XaWR0aCAg ICAgICAgICAgID0gc2l6ZSwNCisgICAgICAgIC5IZWlnaHQgICAgICAgICAgID0gMSwNCisgICAg ICAgIC5EZXB0aE9yQXJyYXlTaXplID0gMSwNCisgICAgICAgIC5NaXBMZXZlbHMgICAgICAgID0g MSwNCisgICAgICAgIC5Gb3JtYXQgICAgICAgICAgID0gRFhHSV9GT1JNQVRfVU5LTk9XTiwNCisg ICAgICAgIC5TYW1wbGVEZXNjICAgICAgID0geyAuQ291bnQgPSAxLCAuUXVhbGl0eSA9IDAgfSwN CisgICAgICAgIC5MYXlvdXQgICAgICAgICAgID0gRDNEMTJfVEVYVFVSRV9MQVlPVVRfUk9XX01B Sk9SLA0KKyAgICAgICAgLkZsYWdzICAgICAgICAgICAgPSBEM0QxMl9SRVNPVVJDRV9GTEFHX05P TkUsDQorICAgIH07DQorDQorICAgIEhSRVNVTFQgaHIgPSBJRDNEMTJEZXZpY2VfQ3JlYXRlQ29t bWl0dGVkUmVzb3VyY2UoY3R4LT5kZXZpY2VfY3R4LT5kZXZpY2UsICZoZWFwX3Byb3BzLCBEM0Qx Ml9IRUFQX0ZMQUdfTk9ORSwNCisgICAgICAgICZkZXNjLCBEM0QxMl9SRVNPVVJDRV9TVEFURV9H RU5FUklDX1JFQUQsIE5VTEwsICZJSURfSUQzRDEyUmVzb3VyY2UsIHBwUmVzb3VjZSk7DQorDQor ICAgIGlmIChGQUlMRUQoaHIpKSB7DQorICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJP UiwgIkZhaWxlZCB0byBjcmVhdGUgZDNkMTIgYnVmZmVyLlxuIik7DQorICAgICAgICByZXR1cm4g IEFWRVJST1IoRUlOVkFMKTsNCisgICAgfQ0KKw0KKyAgICByZXR1cm4gMDsNCit9DQorDQorc3Rh dGljIGludCBkM2QxMmRlY193YWl0X2Zvcl9ncHUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQ0KK3sN CisgICAgRDNEMTJWQURlY29kZUNvbnRleHQgKmN0eCAgICAgID0gRDNEMTJWQV9ERUNPREVfQ09O VEVYVChhdmN0eCk7DQorICAgIEFWRDNEMTJWQVN5bmNDb250ZXh0ICpzeW5jX2N0eCA9IGN0eC0+ c3luY19jdHg7DQorDQorICAgIHJldHVybiBhdl9kM2QxMnZhX3dhaXRfcXVldWVfaWRsZShzeW5j X2N0eCwgY3R4LT5jb21tYW5kX3F1ZXVlKTsNCit9DQorDQorc3RhdGljIGludCBkM2QxMmRlY19j cmVhdGVfZGVjb2Rlcl9oZWFwKEFWQ29kZWNDb250ZXh0ICphdmN0eCkNCit7DQorICAgIEQzRDEy VkFEZWNvZGVDb250ZXh0ICAgKmN0eCAgICAgICAgPSBEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2 Y3R4KTsNCisgICAgQVZIV0ZyYW1lc0NvbnRleHQgICAgICAqZnJhbWVzX2N0eCA9IEQzRDEyVkFf RlJBTUVTX0NPTlRFWFQoYXZjdHgpOw0KKyAgICBBVkQzRDEyVkFEZXZpY2VDb250ZXh0ICpod2N0 eCAgICAgID0gY3R4LT5kZXZpY2VfY3R4Ow0KKw0KKyAgICBEM0QxMl9WSURFT19ERUNPREVSX0hF QVBfREVTQyBkZXNjID0gew0KKyAgICAgICAgLk5vZGVNYXNrICAgICAgPSAwLA0KKwkgICAgLkNv bmZpZ3VyYXRpb24gPSBjdHgtPmNmZywNCisJICAgIC5EZWNvZGVXaWR0aCAgID0gZnJhbWVzX2N0 eC0+d2lkdGgsDQorCSAgICAuRGVjb2RlSGVpZ2h0ICA9IGZyYW1lc19jdHgtPmhlaWdodCwNCisJ ICAgIC5Gb3JtYXQgICAgICAgID0gYXZfZDNkMTJ2YV9tYXBfc3dfdG9faHdfZm9ybWF0KGZyYW1l c19jdHgtPnN3X2Zvcm1hdCksDQorCSAgICAuRnJhbWVSYXRlICAgICA9IHsgYXZjdHgtPmZyYW1l cmF0ZS5udW0sIGF2Y3R4LT5mcmFtZXJhdGUuZGVuIH0sDQorCSAgICAuQml0UmF0ZSAgICAgICA9 IGF2Y3R4LT5iaXRfcmF0ZSwNCisgICAgICAgIC5NYXhEZWNvZGVQaWN0dXJlQnVmZmVyQ291bnQg PSBmcmFtZXNfY3R4LT5pbml0aWFsX3Bvb2xfc2l6ZSwNCisgICAgfTsNCisNCisgICAgRFhfQ0hF Q0soSUQzRDEyVmlkZW9EZXZpY2VfQ3JlYXRlVmlkZW9EZWNvZGVySGVhcChod2N0eC0+dmlkZW9f ZGV2aWNlLCAmZGVzYywNCisgICAgICAgICZJSURfSUQzRDEyVmlkZW9EZWNvZGVySGVhcCwgJmN0 eC0+ZGVjb2Rlcl9oZWFwKSk7DQorDQorICAgIHJldHVybiAwOw0KKw0KK2ZhaWw6DQorICAgIGlm IChjdHgtPmRlY29kZXIpIHsNCisgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAi RDNEMTIgZG9lc24ndCBzdXBwb3J0IGRlY29kaW5nIGZyYW1lcyB3aXRoIGFuIGV4dGVudCAiDQor ICAgICAgICAgICAgIlt3aWR0aCglZCksIGhlaWdodCglZCldLCBvbiB5b3VyIGRldmljZSFcbiIs IGZyYW1lc19jdHgtPndpZHRoLCBmcmFtZXNfY3R4LT5oZWlnaHQpOw0KKyAgICB9DQorDQorICAg IHJldHVybiBBVkVSUk9SKEVJTlZBTCk7DQorfQ0KKw0KK3N0YXRpYyBpbnQgZDNkMTJkZWNfY3Jl YXRlX2RlY29kZXIoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQ0KK3sNCisgICAgRDNEMTJfVklERU9f REVDT0RFUl9ERVNDIGRlc2M7DQorICAgIEQzRDEyVkFEZWNvZGVDb250ZXh0ICAgKmN0eCAgICAg ICAgPSBEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2Y3R4KTsNCisgICAgQVZIV0ZyYW1lc0NvbnRl eHQgICAgICAqZnJhbWVzX2N0eCA9IEQzRDEyVkFfRlJBTUVTX0NPTlRFWFQoYXZjdHgpOw0KKyAg ICBBVkQzRDEyVkFEZXZpY2VDb250ZXh0ICpod2N0eCAgICAgID0gY3R4LT5kZXZpY2VfY3R4Ow0K Kw0KKyAgICBEM0QxMl9GRUFUVVJFX0RBVEFfVklERU9fREVDT0RFX1NVUFBPUlQgZmVhdHVyZSA9 IHsNCisJICAgIC5Ob2RlSW5kZXggICAgID0gMCwNCisJICAgIC5Db25maWd1cmF0aW9uID0gY3R4 LT5jZmcsDQorCSAgICAuV2lkdGggICAgICAgICA9IGZyYW1lc19jdHgtPndpZHRoLA0KKwkgICAg LkhlaWdodCAgICAgICAgPSBmcmFtZXNfY3R4LT5oZWlnaHQsDQorCSAgICAuRGVjb2RlRm9ybWF0 ICA9IGF2X2QzZDEydmFfbWFwX3N3X3RvX2h3X2Zvcm1hdChmcmFtZXNfY3R4LT5zd19mb3JtYXQp LA0KKwkgICAgLkZyYW1lUmF0ZSAgICAgPSB7IGF2Y3R4LT5mcmFtZXJhdGUubnVtLCBhdmN0eC0+ ZnJhbWVyYXRlLmRlbiB9LA0KKwkgICAgLkJpdFJhdGUgICAgICAgPSBhdmN0eC0+Yml0X3JhdGUs DQorCX07DQorDQorICAgIERYX0NIRUNLKElEM0QxMlZpZGVvRGV2aWNlX0NoZWNrRmVhdHVyZVN1 cHBvcnQoaHdjdHgtPnZpZGVvX2RldmljZSwgRDNEMTJfRkVBVFVSRV9WSURFT19ERUNPREVfU1VQ UE9SVCwgJmZlYXR1cmUsIHNpemVvZihmZWF0dXJlKSkpOw0KKyAgICBpZiAoIShmZWF0dXJlLlN1 cHBvcnRGbGFncyAmIEQzRDEyX1ZJREVPX0RFQ09ERV9TVVBQT1JUX0ZMQUdfU1VQUE9SVEVEKSB8 fA0KKyAgICAgICAgIShmZWF0dXJlLkRlY29kZVRpZXIgPj0gRDNEMTJfVklERU9fREVDT0RFX1RJ RVJfMikpIHsNCisgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRDNEMTIgZGVj b2RlciBkb2Vzbid0IHN1cHBvcnQgb24gdGhpcyBkZXZpY2VcbiIpOw0KKyAgICAgICAgcmV0dXJu IEFWRVJST1IoRUlOVkFMKTsNCisgICAgfQ0KKw0KKyAgICBkZXNjID0gKEQzRDEyX1ZJREVPX0RF Q09ERVJfREVTQykgew0KKyAgICAgICAgLk5vZGVNYXNrID0gMCwNCisgICAgICAgIC5Db25maWd1 cmF0aW9uID0gY3R4LT5jZmcsDQorICAgIH07DQorDQorICAgIERYX0NIRUNLKElEM0QxMlZpZGVv RGV2aWNlX0NyZWF0ZVZpZGVvRGVjb2Rlcihod2N0eC0+dmlkZW9fZGV2aWNlLCAmZGVzYywgJklJ RF9JRDNEMTJWaWRlb0RlY29kZXIsICZjdHgtPmRlY29kZXIpKTsNCisNCisgICAgY3R4LT5kZWNv ZGVyX3JlZiA9IGJ1ZnJlZl93cmFwX2ludGVyZmFjZSgoSVVua25vd24gKiljdHgtPmRlY29kZXIp Ow0KKyAgICBpZiAoIWN0eC0+ZGVjb2Rlcl9yZWYpDQorICAgICAgICByZXR1cm4gQVZFUlJPUihF Tk9NRU0pOw0KKw0KKyAgICByZXR1cm4gMDsNCisNCitmYWlsOg0KKyAgICByZXR1cm4gQVZFUlJP UihFSU5WQUwpOw0KK30NCisNCitzdGF0aWMgaW5saW5lIGludCBkM2QxMnZhX2dldF9udW1fc3Vy ZmFjZXMoZW51bSBBVkNvZGVjSUQgY29kZWNfaWQpDQorew0KKyAgICBpbnQgbnVtX3N1cmZhY2Vz ID0gMTsNCisgICAgaWYgKGNvZGVjX2lkID09IEFWX0NPREVDX0lEX0gyNjQgfHwgY29kZWNfaWQg PT0gQVZfQ09ERUNfSURfSEVWQykNCisgICAgICAgIG51bV9zdXJmYWNlcyArPSAxNjsNCisgICAg ZWxzZSBpZiAoY29kZWNfaWQgPT0gQVZfQ09ERUNfSURfVlA5IHx8IGNvZGVjX2lkID09IEFWX0NP REVDX0lEX0FWMSkNCisgICAgICAgIG51bV9zdXJmYWNlcyArPSA4Ow0KKyAgICBlbHNlDQorICAg ICAgICBudW1fc3VyZmFjZXMgKz0gMjsNCisNCisgICAgcmV0dXJuIG51bV9zdXJmYWNlczsNCit9 DQorDQoraW50IGZmX2QzZDEyZGVjX2NvbW1vbl9mcmFtZV9wYXJhbXMoQVZDb2RlY0NvbnRleHQg KmF2Y3R4LCBBVkJ1ZmZlclJlZiAqaHdfZnJhbWVzX2N0eCkNCit7DQorICAgIEFWSFdGcmFtZXND b250ZXh0ICAgICAgKmZyYW1lc19jdHggICA9IChBVkhXRnJhbWVzQ29udGV4dCAqKWh3X2ZyYW1l c19jdHgtPmRhdGE7DQorICAgIEFWSFdEZXZpY2VDb250ZXh0ICAgICAgKmRldmljZV9jdHggICA9 IGZyYW1lc19jdHgtPmRldmljZV9jdHg7DQorICAgIEFWRDNEMTJWQUZyYW1lc0NvbnRleHQgKmZy YW1lc19od2N0eCA9IGZyYW1lc19jdHgtPmh3Y3R4Ow0KKw0KKyAgICBmcmFtZXNfY3R4LT5mb3Jt YXQgICAgPSBBVl9QSVhfRk1UX0QzRDEyOw0KKyAgICBmcmFtZXNfY3R4LT5zd19mb3JtYXQgPSBh dmN0eC0+c3dfcGl4X2ZtdCA9PSBBVl9QSVhfRk1UX1lVVjQyMFAxMCA/IEFWX1BJWF9GTVRfUDAx MCA6IEFWX1BJWF9GTVRfTlYxMjsNCisgICAgZnJhbWVzX2N0eC0+d2lkdGggICAgID0gYXZjdHgt PmNvZGVkX3dpZHRoOw0KKyAgICBmcmFtZXNfY3R4LT5oZWlnaHQgICAgPSBhdmN0eC0+Y29kZWRf aGVpZ2h0Ow0KKw0KKyAgICBmcmFtZXNfY3R4LT5pbml0aWFsX3Bvb2xfc2l6ZSA9IGQzZDEydmFf Z2V0X251bV9zdXJmYWNlcyhhdmN0eC0+Y29kZWNfaWQpOw0KKw0KKyAgICByZXR1cm4gMDsNCit9 DQorDQoraW50IGZmX2QzZDEyZGVjX2RlY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkN Cit7DQorICAgIGludCByZXQ7DQorICAgIFVJTlQgYml0c3RyZWFtX3NpemU7DQorICAgIEFWSFdG cmFtZXNDb250ZXh0ICpmcmFtZXNfY3R4Ow0KKyAgICBEM0QxMlZBRGVjb2RlQ29udGV4dCAqY3R4 ID0gRDNEMTJWQV9ERUNPREVfQ09OVEVYVChhdmN0eCk7DQorDQorICAgIElEM0QxMkNvbW1hbmRB bGxvY2F0b3IgKmNvbW1hbmRfYWxsb2NhdG9yID0gTlVMTDsNCisgICAgRDNEMTJfQ09NTUFORF9R VUVVRV9ERVNDIHF1ZXVlX2Rlc2MgPSB7DQorICAgICAgICAuVHlwZSAgICAgPSBEM0QxMl9DT01N QU5EX0xJU1RfVFlQRV9WSURFT19ERUNPREUsDQorICAgICAgICAuUHJpb3JpdHkgPSAwLA0KKyAg ICAgICAgLkZsYWdzICAgID0gRDNEMTJfQ09NTUFORF9RVUVVRV9GTEFHX05PTkUsDQorICAgICAg ICAuTm9kZU1hc2sgPSAwDQorICAgIH07DQorDQorICAgIGN0eC0+cGl4X2ZtdCA9IGF2Y3R4LT5o d2FjY2VsLT5waXhfZm10Ow0KKw0KKyAgICByZXQgPSBmZl9kZWNvZGVfZ2V0X2h3X2ZyYW1lc19j dHgoYXZjdHgsIEFWX0hXREVWSUNFX1RZUEVfRDNEMTJWQSk7DQorICAgIGlmIChyZXQgPCAwKQ0K KyAgICAgICAgcmV0dXJuIHJldDsNCisNCisgICAgZnJhbWVzX2N0eCA9IEQzRDEyVkFfRlJBTUVT X0NPTlRFWFQoYXZjdHgpOw0KKyAgICBjdHgtPmRldmljZV9jdHggPSAoQVZEM0QxMlZBRGV2aWNl Q29udGV4dCAqKWZyYW1lc19jdHgtPmRldmljZV9jdHgtPmh3Y3R4Ow0KKw0KKyAgICBpZiAoZnJh bWVzX2N0eC0+Zm9ybWF0ICE9IGN0eC0+cGl4X2ZtdCkgew0KKyAgICAgICAgYXZfbG9nKGF2Y3R4 LCBBVl9MT0dfRVJST1IsICJJbnZhbGlkIHBpeGZtdCBmb3IgaHdhY2NlbCFcbiIpOw0KKyAgICAg ICAgZ290byBmYWlsOw0KKyAgICB9DQorDQorICAgIHJldCA9IGQzZDEyZGVjX2NyZWF0ZV9kZWNv ZGVyKGF2Y3R4KTsNCisgICAgaWYgKHJldCA8IDApDQorICAgICAgICBnb3RvIGZhaWw7DQorDQor ICAgIHJldCA9IGQzZDEyZGVjX2NyZWF0ZV9kZWNvZGVyX2hlYXAoYXZjdHgpOw0KKyAgICBpZiAo cmV0IDwgMCkNCisgICAgICAgIGdvdG8gZmFpbDsNCisNCisgICAgY3R4LT5tYXhfbnVtX3JlZiA9 IGZyYW1lc19jdHgtPmluaXRpYWxfcG9vbF9zaXplOw0KKw0KKyAgICBiaXRzdHJlYW1fc2l6ZSA9 IGZmX2QzZDEyZGVjX2dldF9zdWl0YWJsZV9tYXhfYml0c3RyZWFtX3NpemUoYXZjdHgpOw0KKyAg ICBjdHgtPmJ1ZmZlcnMgPSBhdl9jYWxsb2Moc2l6ZW9mKElEM0QxMlJlc291cmNlICopLCBjdHgt Pm1heF9udW1fcmVmKTsNCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjdHgtPm1heF9udW1fcmVm OyBpKyspIHsNCisgICAgICAgIHJldCA9IGQzZDEyZGVjX2NyZWF0ZV9idWZmZXIoYXZjdHgsIGJp dHN0cmVhbV9zaXplLCAmY3R4LT5idWZmZXJzW2ldKTsNCisgICAgICAgIGlmIChyZXQgPCAwKQ0K KyAgICAgICAgICAgIGdvdG8gZmFpbDsNCisgICAgfQ0KKw0KKyAgICBjdHgtPnJlZl9yZXNvdXJj ZXMgPSBhdl9jYWxsb2Moc2l6ZW9mKElEM0QxMlJlc291cmNlICopLCBjdHgtPm1heF9udW1fcmVm KTsNCisgICAgaWYgKCFjdHgtPnJlZl9yZXNvdXJjZXMpDQorICAgICAgICByZXR1cm4gQVZFUlJP UihFTk9NRU0pOw0KKw0KKyAgICBjdHgtPnJlZl9zdWJyZXNvdXJjZXMgPSBhdl9jYWxsb2Moc2l6 ZW9mKFVJTlQpLCBjdHgtPm1heF9udW1fcmVmKTsNCisgICAgaWYgKCFjdHgtPnJlZl9zdWJyZXNv dXJjZXMpDQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOw0KKw0KKyAgICBjdHgtPmFs bG9jYXRvcl9xdWV1ZSA9IGF2X2ZpZm9fYWxsb2MyKGN0eC0+bWF4X251bV9yZWYsIHNpemVvZihD b21tYW5kQWxsb2NhdG9yKSwgQVZfRklGT19GTEFHX0FVVE9fR1JPVyk7DQorICAgIGlmICghY3R4 LT5hbGxvY2F0b3JfcXVldWUpDQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOw0KKw0K KyAgICByZXQgPSBhdl9kM2QxMnZhX2NyZWF0ZV9zeW5jX2NvbnRleHQoY3R4LT5kZXZpY2VfY3R4 LCAmY3R4LT5zeW5jX2N0eCk7DQorICAgIGlmIChyZXQgPCAwKQ0KKyAgICAgICAgZ290byBmYWls Ow0KKw0KKyAgICByZXQgPSBkM2QxMmRlY19nZXRfdmFsaWRfY29tbWFuZF9hbGxvY2F0b3IoYXZj dHgsICZjb21tYW5kX2FsbG9jYXRvcik7DQorICAgIGlmIChyZXQgPCAwKQ0KKyAgICAgICAgZ290 byBmYWlsOw0KKw0KKyAgICBEWF9DSEVDSyhJRDNEMTJEZXZpY2VfQ3JlYXRlQ29tbWFuZFF1ZXVl KGN0eC0+ZGV2aWNlX2N0eC0+ZGV2aWNlLCAmcXVldWVfZGVzYywNCisgICAgICAgICZJSURfSUQz RDEyQ29tbWFuZFF1ZXVlLCAmY3R4LT5jb21tYW5kX3F1ZXVlKSk7DQorDQorICAgIERYX0NIRUNL KElEM0QxMkRldmljZV9DcmVhdGVDb21tYW5kTGlzdChjdHgtPmRldmljZV9jdHgtPmRldmljZSwg MCwgcXVldWVfZGVzYy5UeXBlLA0KKyAgICAgICAgY29tbWFuZF9hbGxvY2F0b3IsIE5VTEwsICZJ SURfSUQzRDEyQ29tbWFuZExpc3QsICZjdHgtPmNvbW1hbmRfbGlzdCkpOw0KKw0KKyAgICBEWF9D SEVDSyhJRDNEMTJWaWRlb0RlY29kZUNvbW1hbmRMaXN0X0Nsb3NlKGN0eC0+Y29tbWFuZF9saXN0 KSk7DQorDQorICAgIElEM0QxMkNvbW1hbmRRdWV1ZV9FeGVjdXRlQ29tbWFuZExpc3RzKGN0eC0+ Y29tbWFuZF9xdWV1ZSwgMSwgKElEM0QxMkNvbW1hbmRMaXN0ICoqKSZjdHgtPmNvbW1hbmRfbGlz dCk7DQorDQorICAgIGQzZDEyZGVjX3dhaXRfZm9yX2dwdShhdmN0eCk7DQorDQorICAgIGQzZDEy ZGVjX2Rpc2NhcmRfY29tbWFuZF9hbGxvY2F0b3IoYXZjdHgsIGNvbW1hbmRfYWxsb2NhdG9yLCBj dHgtPnN5bmNfY3R4LT5mZW5jZV92YWx1ZSk7DQorDQorICAgIHJldHVybiAwOw0KKw0KK2ZhaWw6 DQorICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKGNvbW1hbmRfYWxsb2NhdG9yKTsNCisgICAgZmZf ZDNkMTJkZWNfZGVjb2RlX3VuaW5pdChhdmN0eCk7DQorDQorICAgIHJldHVybiBBVkVSUk9SKEVJ TlZBTCk7DQorfQ0KKw0KK2ludCBmZl9kM2QxMmRlY19kZWNvZGVfdW5pbml0KEFWQ29kZWNDb250 ZXh0ICphdmN0eCkNCit7DQorICAgIGludCBpLCBudW1fYWxsb2NhdG9yID0gMDsNCisgICAgRDNE MTJWQURlY29kZUNvbnRleHQgKmN0eCA9IEQzRDEyVkFfREVDT0RFX0NPTlRFWFQoYXZjdHgpOw0K KyAgICBDb21tYW5kQWxsb2NhdG9yIGFsbG9jYXRvcjsNCisNCisgICAgaWYgKGN0eC0+c3luY19j dHgpDQorICAgICAgICBkM2QxMmRlY193YWl0X2Zvcl9ncHUoYXZjdHgpOw0KKw0KKyAgICBhdl9m cmVlcCgmY3R4LT5yZWZfcmVzb3VyY2VzKTsNCisNCisgICAgYXZfZnJlZXAoJmN0eC0+cmVmX3N1 YnJlc291cmNlcyk7DQorDQorICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPm1heF9udW1fcmVmOyBp KyspDQorICAgICAgICBEM0QxMl9PQkpFQ1RfUkVMRUFTRShjdHgtPmJ1ZmZlcnNbaV0pOw0KKw0K KyAgICBhdl9mcmVlcCgmY3R4LT5idWZmZXJzKTsNCisNCisgICAgRDNEMTJfT0JKRUNUX1JFTEVB U0UoY3R4LT5jb21tYW5kX2xpc3QpOw0KKw0KKyAgICBEM0QxMl9PQkpFQ1RfUkVMRUFTRShjdHgt PmNvbW1hbmRfcXVldWUpOw0KKw0KKyAgICBpZiAoY3R4LT5hbGxvY2F0b3JfcXVldWUpIHsNCisg ICAgICAgIHdoaWxlIChhdl9maWZvX3JlYWQoY3R4LT5hbGxvY2F0b3JfcXVldWUsICZhbGxvY2F0 b3IsIDEpID49IDApIHsNCisgICAgICAgICAgICBudW1fYWxsb2NhdG9yKys7DQorICAgICAgICAg ICAgRDNEMTJfT0JKRUNUX1JFTEVBU0UoYWxsb2NhdG9yLmNvbW1hbmRfYWxsb2NhdG9yKTsNCisg ICAgICAgIH0NCisNCisgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX1ZFUkJPU0UsICJUb3Rh bCBudW1iZXIgb2YgY29tbWFuZCBhbGxvY2F0b3JzIHJldXNlZDogJWRcbiIsIG51bV9hbGxvY2F0 b3IpOw0KKyAgICB9DQorDQorICAgIGF2X2ZpZm9fZnJlZXAyKCZjdHgtPmFsbG9jYXRvcl9xdWV1 ZSk7DQorDQorICAgIGF2X2QzZDEydmFfcmVsZWFzZV9zeW5jX2NvbnRleHQoY3R4LT5zeW5jX2N0 eCk7DQorDQorICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKGN0eC0+ZGVjb2Rlcl9oZWFwKTsNCisN CisgICAgYXZfYnVmZmVyX3VucmVmKCZjdHgtPmRlY29kZXJfcmVmKTsNCisNCisgICAgcmV0dXJu IDA7DQorfQ0KKw0KK3N0YXRpYyBJRDNEMTJSZXNvdXJjZSAqZDNkMTJkZWNfZ2V0X3N1cmZhY2Uo Y29uc3QgQVZGcmFtZSAqZnJhbWUpDQorew0KKyAgICByZXR1cm4gKElEM0QxMlJlc291cmNlICop ZnJhbWUtPmRhdGFbMF07DQorfQ0KKw0KK2ludHB0cl90IGZmX2QzZDEyZGVjX2dldF9zdXJmYWNl X2luZGV4KEFWQ29kZWNDb250ZXh0ICpjdHgsIGNvbnN0IEFWRnJhbWUqIGZyYW1lKQ0KK3sNCisg ICAgcmV0dXJuIChpbnRwdHJfdClmcmFtZS0+ZGF0YVsxXTsNCit9DQorDQorc3RhdGljIEFWRDNE MTJWQVN5bmNDb250ZXh0ICpkM2QxMmRlY19nZXRfc3luY19jb250ZXh0KGNvbnN0IEFWRnJhbWUg KmZyYW1lKQ0KK3sNCisgICAgcmV0dXJuIChBVkQzRDEyVkFTeW5jQ29udGV4dCAqKWZyYW1lLT5k YXRhWzJdOw0KK30NCisNCitzdGF0aWMgaW50IGQzZDEyZGVjX2JlZ2luX3VwZGF0ZV9yZWZlcmVu Y2VfZnJhbWVzKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgRDNEMTJfUkVTT1VSQ0VfQkFSUklFUiAq YmFycmllcnMsIGludCBpbmRleCkNCit7DQorICAgIEQzRDEyVkFEZWNvZGVDb250ZXh0ICAgKmN0 eCAgICAgICAgICA9IEQzRDEyVkFfREVDT0RFX0NPTlRFWFQoYXZjdHgpOw0KKyAgICBBVkhXRnJh bWVzQ29udGV4dCAgICAgICpmcmFtZXNfY3R4ICAgPSBEM0QxMlZBX0ZSQU1FU19DT05URVhUKGF2 Y3R4KTsNCisgICAgQVZEM0QxMlZBRnJhbWVzQ29udGV4dCAqZnJhbWVzX2h3Y3R4ID0gZnJhbWVz X2N0eC0+aHdjdHg7DQorDQorICAgIGludCBudW1fYmFycmllciA9IDA7DQorDQorICAgIGZvciAo aW50IGkgPSAwOyBpIDwgY3R4LT5tYXhfbnVtX3JlZjsgaSsrKSB7DQorICAgICAgICBpZiAoY3R4 LT5yZWZfcmVzb3VyY2VzW2ldICYmIGN0eC0+cmVmX3Jlc291cmNlc1tpXSAhPSBmcmFtZXNfaHdj dHgtPnRleHR1cmVfaW5mb3NbaW5kZXhdLnRleHR1cmUpIHsNCisgICAgICAgICAgICBiYXJyaWVy c1tudW1fYmFycmllcl0uVHlwZSAgPSBEM0QxMl9SRVNPVVJDRV9CQVJSSUVSX1RZUEVfVFJBTlNJ VElPTjsNCisgICAgICAgICAgICBiYXJyaWVyc1tudW1fYmFycmllcl0uRmxhZ3MgPSBEM0QxMl9S RVNPVVJDRV9CQVJSSUVSX0ZMQUdfTk9ORTsNCisgICAgICAgICAgICBiYXJyaWVyc1tudW1fYmFy cmllcl0uVHJhbnNpdGlvbiA9IChEM0QxMl9SRVNPVVJDRV9UUkFOU0lUSU9OX0JBUlJJRVIpew0K KyAgICAgICAgICAgICAgICAucFJlc291cmNlICAgPSBjdHgtPnJlZl9yZXNvdXJjZXNbaV0sDQor ICAgICAgICAgICAgICAgIC5TdWJyZXNvdXJjZSA9IDAsDQorICAgICAgICAgICAgICAgIC5TdGF0 ZUJlZm9yZSA9IEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPTU1PTiwNCisgICAgICAgICAgICAgICAg LlN0YXRlQWZ0ZXIgID0gRDNEMTJfUkVTT1VSQ0VfU1RBVEVfVklERU9fREVDT0RFX1JFQUQsDQor ICAgICAgICAgICAgfTsNCisgICAgICAgICAgICBudW1fYmFycmllcisrOw0KKyAgICAgICAgfQ0K KyAgICB9DQorDQorICAgIHJldHVybiBudW1fYmFycmllcjsNCit9DQorDQorc3RhdGljIHZvaWQg ZDNkMTJkZWNfZW5kX3VwZGF0ZV9yZWZlcmVuY2VfZnJhbWVzKEFWQ29kZWNDb250ZXh0ICphdmN0 eCwgRDNEMTJfUkVTT1VSQ0VfQkFSUklFUiAqYmFycmllcnMsIGludCBpbmRleCkNCit7DQorICAg IEQzRDEyVkFEZWNvZGVDb250ZXh0ICAgKmN0eCAgICAgICAgICA9IEQzRDEyVkFfREVDT0RFX0NP TlRFWFQoYXZjdHgpOw0KKyAgICBBVkhXRnJhbWVzQ29udGV4dCAgICAgICpmcmFtZXNfY3R4ICAg PSBEM0QxMlZBX0ZSQU1FU19DT05URVhUKGF2Y3R4KTsNCisgICAgQVZEM0QxMlZBRnJhbWVzQ29u dGV4dCAqZnJhbWVzX2h3Y3R4ID0gZnJhbWVzX2N0eC0+aHdjdHg7DQorICAgIGludCBudW1fYmFy cmllciA9IDA7DQorDQorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY3R4LT5tYXhfbnVtX3JlZjsg aSsrKSB7DQorICAgICAgICBpZiAoY3R4LT5yZWZfcmVzb3VyY2VzW2ldICYmIGN0eC0+cmVmX3Jl c291cmNlc1tpXSAhPSBmcmFtZXNfaHdjdHgtPnRleHR1cmVfaW5mb3NbaW5kZXhdLnRleHR1cmUp IHsNCisgICAgICAgICAgICBiYXJyaWVyc1tudW1fYmFycmllcl0uVHJhbnNpdGlvbi5wUmVzb3Vy Y2UgPSBjdHgtPnJlZl9yZXNvdXJjZXNbaV07DQorICAgICAgICAgICAgYmFycmllcnNbbnVtX2Jh cnJpZXJdLkZsYWdzID0gRDNEMTJfUkVTT1VSQ0VfQkFSUklFUl9GTEFHX05PTkU7DQorICAgICAg ICAgICAgYmFycmllcnNbbnVtX2JhcnJpZXJdLlRyYW5zaXRpb24uU3RhdGVCZWZvcmUgPSBEM0Qx Ml9SRVNPVVJDRV9TVEFURV9WSURFT19ERUNPREVfUkVBRDsNCisgICAgICAgICAgICBiYXJyaWVy c1tudW1fYmFycmllcl0uVHJhbnNpdGlvbi5TdGF0ZUFmdGVyID0gRDNEMTJfUkVTT1VSQ0VfU1RB VEVfQ09NTU9OOw0KKyAgICAgICAgICAgIG51bV9iYXJyaWVyKys7DQorICAgICAgICB9DQorICAg IH0NCit9DQorDQoraW50IGZmX2QzZDEyZGVjX2NvbW1vbl9lbmRfZnJhbWUoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCB2b2lkICpwcCwgdW5zaWduZWQgcHBfc2l6ZSwNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCB2b2lkICpxbSwgdW5zaWduZWQgcW1fc2l6ZSwNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQoKnVwZGF0ZV9pbnB1dF9hcmd1bWVudHMpKEFWQ29kZWND b250ZXh0ICosIEQzRDEyX1ZJREVPX0RFQ09ERV9JTlBVVF9TVFJFQU1fQVJHVU1FTlRTICosIElE M0QxMlJlc291cmNlICopKQ0KK3sNCisgICAgaW50IHJldDsNCisgICAgRDNEMTJWQURlY29kZUNv bnRleHQgICAqY3R4ICAgICAgICAgICAgICAgPSBEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2Y3R4 KTsNCisgICAgQVZIV0ZyYW1lc0NvbnRleHQgICAgICAqZnJhbWVzX2N0eCAgICAgICAgPSBEM0Qx MlZBX0ZSQU1FU19DT05URVhUKGF2Y3R4KTsNCisgICAgQVZEM0QxMlZBRnJhbWVzQ29udGV4dCAq ZnJhbWVzX2h3Y3R4ICAgICAgPSBmcmFtZXNfY3R4LT5od2N0eDsNCisgICAgSUQzRDEyQ29tbWFu ZEFsbG9jYXRvciAqY29tbWFuZF9hbGxvY2F0b3IgPSBOVUxMOw0KKw0KKyAgICBJRDNEMTJSZXNv dXJjZSAqcmVzb3VyY2UgPSBkM2QxMmRlY19nZXRfc3VyZmFjZShmcmFtZSk7DQorICAgIFVJTlQg aW5kZXggPSBmZl9kM2QxMmRlY19nZXRfc3VyZmFjZV9pbmRleChhdmN0eCwgZnJhbWUpOw0KKyAg ICBBVkQzRDEyVkFTeW5jQ29udGV4dCAqc3luY19jdHggPSBkM2QxMmRlY19nZXRfc3luY19jb250 ZXh0KGZyYW1lKTsNCisNCisgICAgSUQzRDEyVmlkZW9EZWNvZGVDb21tYW5kTGlzdCAqY21kX2xp c3QgPSBjdHgtPmNvbW1hbmRfbGlzdDsNCisgICAgRDNEMTJfUkVTT1VSQ0VfQkFSUklFUiBiYXJy aWVyc1tEM0QxMlZBX01BWF9TVVJGQUNFU10gPSB7IDAgfTsNCisNCisgICAgRDNEMTJfVklERU9f REVDT0RFX0lOUFVUX1NUUkVBTV9BUkdVTUVOVFMgaW5wdXRfYXJncyA9IHsNCisgICAgICAgIC5O dW1GcmFtZUFyZ3VtZW50cyA9IDIsDQorICAgICAgICAuRnJhbWVBcmd1bWVudHMgPSB7DQorICAg ICAgICAgICAgWzBdID0gew0KKyAgICAgICAgICAgICAgICAuVHlwZSAgPSBEM0QxMl9WSURFT19E RUNPREVfQVJHVU1FTlRfVFlQRV9QSUNUVVJFX1BBUkFNRVRFUlMsDQorICAgICAgICAgICAgICAg IC5TaXplICA9IHBwX3NpemUsDQorICAgICAgICAgICAgICAgIC5wRGF0YSA9ICh2b2lkICopcHAs DQorICAgICAgICAgICAgfSwNCisgICAgICAgICAgICBbMV0gPSB7DQorICAgICAgICAgICAgICAg IC5UeXBlICA9IEQzRDEyX1ZJREVPX0RFQ09ERV9BUkdVTUVOVF9UWVBFX0lOVkVSU0VfUVVBTlRJ WkFUSU9OX01BVFJJWCwNCisgICAgICAgICAgICAgICAgLlNpemUgID0gcW1fc2l6ZSwNCisgICAg ICAgICAgICAgICAgLnBEYXRhID0gKHZvaWQgKilxbSwNCisgICAgICAgICAgICB9LA0KKyAgICAg ICAgfSwNCisgICAgICAgIC5wSGVhcCA9IGN0eC0+ZGVjb2Rlcl9oZWFwLA0KKyAgICB9Ow0KKw0K KyAgICBEM0QxMl9WSURFT19ERUNPREVfT1VUUFVUX1NUUkVBTV9BUkdVTUVOVFMgb3V0cHV0X2Fy Z3MgPSB7DQorICAgICAgICAuQ29udmVyc2lvbkFyZ3VtZW50cyA9IDAsDQorICAgICAgICAuT3V0 cHV0U3VicmVzb3VyY2UgICA9IDAsDQorICAgICAgICAucE91dHB1dFRleHR1cmUyRCAgICA9IHJl c291cmNlLA0KKyAgICB9Ow0KKw0KKyAgICBVSU5UIG51bV9iYXJyaWVyID0gMTsNCisgICAgYmFy cmllcnNbMF0gPSAoRDNEMTJfUkVTT1VSQ0VfQkFSUklFUikgew0KKyAgICAgICAgLlR5cGUgID0g RDNEMTJfUkVTT1VSQ0VfQkFSUklFUl9UWVBFX1RSQU5TSVRJT04sDQorICAgICAgICAuRmxhZ3Mg PSBEM0QxMl9SRVNPVVJDRV9CQVJSSUVSX0ZMQUdfTk9ORSwNCisgICAgICAgIC5UcmFuc2l0aW9u ID0gew0KKyAgICAgICAgICAgIC5wUmVzb3VyY2UgICA9IHJlc291cmNlLA0KKyAgICAgICAgICAg IC5TdWJyZXNvdXJjZSA9IDAsDQorICAgICAgICAgICAgLlN0YXRlQmVmb3JlID0gRDNEMTJfUkVT T1VSQ0VfU1RBVEVfQ09NTU9OLA0KKyAgICAgICAgICAgIC5TdGF0ZUFmdGVyICA9IEQzRDEyX1JF U09VUkNFX1NUQVRFX1ZJREVPX0RFQ09ERV9XUklURSwNCisgICAgICAgIH0sDQorICAgIH07DQor DQorICAgIG1lbXNldChjdHgtPnJlZl9yZXNvdXJjZXMsIDAsIHNpemVvZihJRDNEMTJSZXNvdXJj ZSAqKSAqIGN0eC0+bWF4X251bV9yZWYpOw0KKyAgICBtZW1zZXQoY3R4LT5yZWZfc3VicmVzb3Vy Y2VzLCAwLCBzaXplb2YoVUlOVCkgKiBjdHgtPm1heF9udW1fcmVmKTsNCisgICAgaW5wdXRfYXJn cy5SZWZlcmVuY2VGcmFtZXMuTnVtVGV4dHVyZTJEcyA9IGN0eC0+bWF4X251bV9yZWY7DQorICAg IGlucHV0X2FyZ3MuUmVmZXJlbmNlRnJhbWVzLnBwVGV4dHVyZTJEcyAgPSBjdHgtPnJlZl9yZXNv dXJjZXM7DQorICAgIGlucHV0X2FyZ3MuUmVmZXJlbmNlRnJhbWVzLnBTdWJyZXNvdXJjZXMgPSBj dHgtPnJlZl9zdWJyZXNvdXJjZXM7DQorDQorICAgIGF2X2QzZDEydmFfd2FpdF9pZGxlKHN5bmNf Y3R4KTsNCisNCisgICAgaWYgKCFxbSkNCisgICAgICAgIGlucHV0X2FyZ3MuTnVtRnJhbWVBcmd1 bWVudHMgPSAxOw0KKw0KKyAgICByZXQgPSB1cGRhdGVfaW5wdXRfYXJndW1lbnRzKGF2Y3R4LCAm aW5wdXRfYXJncywgY3R4LT5idWZmZXJzW2luZGV4XSk7DQorICAgIGlmIChyZXQgPCAwKQ0KKyAg ICAgICAgcmV0dXJuIHJldDsNCisNCisgICAgcmV0ID0gZDNkMTJkZWNfZ2V0X3ZhbGlkX2NvbW1h bmRfYWxsb2NhdG9yKGF2Y3R4LCAmY29tbWFuZF9hbGxvY2F0b3IpOw0KKyAgICBpZiAocmV0IDwg MCkNCisgICAgICAgIGdvdG8gZmFpbDsNCisNCisgICAgRFhfQ0hFQ0soSUQzRDEyQ29tbWFuZEFs bG9jYXRvcl9SZXNldChjb21tYW5kX2FsbG9jYXRvcikpOw0KKw0KKyAgICBEWF9DSEVDSyhJRDNE MTJWaWRlb0RlY29kZUNvbW1hbmRMaXN0X1Jlc2V0KGNtZF9saXN0LCBjb21tYW5kX2FsbG9jYXRv cikpOw0KKw0KKyAgICBudW1fYmFycmllciArPSBkM2QxMmRlY19iZWdpbl91cGRhdGVfcmVmZXJl bmNlX2ZyYW1lcyhhdmN0eCwgJmJhcnJpZXJzWzFdLCBpbmRleCk7DQorDQorICAgIElEM0QxMlZp ZGVvRGVjb2RlQ29tbWFuZExpc3RfUmVzb3VyY2VCYXJyaWVyKGNtZF9saXN0LCBudW1fYmFycmll ciwgYmFycmllcnMpOw0KKw0KKyAgICBJRDNEMTJWaWRlb0RlY29kZUNvbW1hbmRMaXN0X0RlY29k ZUZyYW1lKGNtZF9saXN0LCBjdHgtPmRlY29kZXIsICZvdXRwdXRfYXJncywgJmlucHV0X2FyZ3Mp Ow0KKw0KKyAgICBiYXJyaWVyc1swXS5UcmFuc2l0aW9uLlN0YXRlQmVmb3JlID0gYmFycmllcnNb MF0uVHJhbnNpdGlvbi5TdGF0ZUFmdGVyOw0KKyAgICBiYXJyaWVyc1swXS5UcmFuc2l0aW9uLlN0 YXRlQWZ0ZXIgID0gRDNEMTJfUkVTT1VSQ0VfU1RBVEVfQ09NTU9OOw0KKyAgICBkM2QxMmRlY19l bmRfdXBkYXRlX3JlZmVyZW5jZV9mcmFtZXMoYXZjdHgsICZiYXJyaWVyc1sxXSwgaW5kZXgpOw0K Kw0KKyAgICBJRDNEMTJWaWRlb0RlY29kZUNvbW1hbmRMaXN0X1Jlc291cmNlQmFycmllcihjbWRf bGlzdCwgbnVtX2JhcnJpZXIsIGJhcnJpZXJzKTsNCisNCisgICAgRFhfQ0hFQ0soSUQzRDEyVmlk ZW9EZWNvZGVDb21tYW5kTGlzdF9DbG9zZShjbWRfbGlzdCkpOw0KKw0KKyAgICBJRDNEMTJDb21t YW5kUXVldWVfRXhlY3V0ZUNvbW1hbmRMaXN0cyhjdHgtPmNvbW1hbmRfcXVldWUsIDEsIChJRDNE MTJDb21tYW5kTGlzdCAqKikmY3R4LT5jb21tYW5kX2xpc3QpOw0KKw0KKyAgICBEWF9DSEVDSyhJ RDNEMTJDb21tYW5kUXVldWVfU2lnbmFsKGN0eC0+Y29tbWFuZF9xdWV1ZSwgc3luY19jdHgtPmZl bmNlLCArK3N5bmNfY3R4LT5mZW5jZV92YWx1ZSkpOw0KKw0KKyAgICBEWF9DSEVDSyhJRDNEMTJD b21tYW5kUXVldWVfU2lnbmFsKGN0eC0+Y29tbWFuZF9xdWV1ZSwgY3R4LT5zeW5jX2N0eC0+ZmVu Y2UsICsrY3R4LT5zeW5jX2N0eC0+ZmVuY2VfdmFsdWUpKTsNCisNCisgICAgcmV0ID0gZDNkMTJk ZWNfZGlzY2FyZF9jb21tYW5kX2FsbG9jYXRvcihhdmN0eCwgY29tbWFuZF9hbGxvY2F0b3IsIGN0 eC0+c3luY19jdHgtPmZlbmNlX3ZhbHVlKTsNCisgICAgaWYgKHJldCA8IDApDQorICAgICAgICBy ZXR1cm4gcmV0Ow0KKw0KKyAgICBpZiAoY3R4LT5kZXZpY2VfY3R4LT5zeW5jKSB7DQorICAgICAg ICByZXQgPSBkM2QxMmRlY193YWl0X2Zvcl9ncHUoYXZjdHgpOw0KKyAgICAgICAgaWYgKHJldCA8 IDApDQorICAgICAgICAgICAgcmV0dXJuIHJldDsNCisgICAgfQ0KKw0KKyAgICByZXR1cm4gMDsN CisNCitmYWlsOg0KKyAgICBpZiAoY29tbWFuZF9hbGxvY2F0b3IpDQorICAgICAgICBkM2QxMmRl Y19kaXNjYXJkX2NvbW1hbmRfYWxsb2NhdG9yKGF2Y3R4LCBjb21tYW5kX2FsbG9jYXRvciwgY3R4 LT5zeW5jX2N0eC0+ZmVuY2VfdmFsdWUpOw0KKyAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOw0K K30NCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2QzZDEyZGVjLmggYi9saWJhdmNvZGVjL2QzZDEy ZGVjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uMGQ3N2VlYzYxMgot LS0gL2Rldi9udWxsCisrKyBiL2xpYmF2Y29kZWMvZDNkMTJkZWMuaApAQCAtMCwwICsxLDE5MyBA QAorLyoKKyAqIERpcmVjdDNEIDEyIEhXIGFjY2VsZXJhdGlvbiB2aWRlbyBkZWNvZGVyCisgKgor ICogY29weXJpZ2h0IChjKSAyMDIyIFd1IEppYW5odWEgPHRvcXN4d0BvdXRsb29rLmNvbT4KKyAq CisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg KiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisg KiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs b29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2lmbmRlZiBBVkNPREVDX0Qz RDEyREVDX0gKKyNkZWZpbmUgQVZDT0RFQ19EM0QxMkRFQ19ICisKKyNpbmNsdWRlICJsaWJhdnV0 aWwvZmlmby5oIgorI2luY2x1ZGUgImxpYmF2dXRpbC9od2NvbnRleHQuaCIKKyNpbmNsdWRlICJs aWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmEuaCIKKyNpbmNsdWRlICJhdmNvZGVjLmgiCisjaW5j bHVkZSAiaW50ZXJuYWwuaCIKKworI2RlZmluZSBEM0QxMkRFQ19NQVhfU0xJQ0VTIDgKKworLyoq CisgKiBAYnJpZWYgVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBwcm92aWRlcyB0aGUgbmVjZXNz YXJ5IGNvbmZpZ3VyYXRpb25zIGFuZCBkYXRhCisgKiB0byB0aGUgRkZtcGVnIERpcmVjdDNEIDEy IEhXQWNjZWwgaW1wbGVtZW50YXRpb24gZm9yIHZpZGVvIGRlY29kZXIuCisgKgorICogVGhlIGFw cGxpY2F0aW9uIG11c3QgbWFrZSBpdCBhdmFpbGFibGUgYXMgQVZDb2RlY0NvbnRleHQuaHdhY2Nl bF9jb250ZXh0LgorICovCit0eXBlZGVmIHN0cnVjdCBEM0QxMlZBRGVjb2RlQ29udGV4dCB7Cisg ICAgQVZCdWZmZXJSZWYgKmRlY29kZXJfcmVmOworCisgICAgLyoqCisgICAgICogRDNEMTIgdmlk ZW8gZGVjb2RlcgorICAgICAqLworICAgIElEM0QxMlZpZGVvRGVjb2RlciAqZGVjb2RlcjsKKwor ICAgIC8qKgorICAgICAqIEQzRDEyIHZpZGVvIGRlY29kZXIgaGVhcAorICAgICAqLworICAgIElE M0QxMlZpZGVvRGVjb2RlckhlYXAgKmRlY29kZXJfaGVhcDsKKworICAgIC8qKgorICAgICAqIEQz RDEyIGNvbmZpZ3VyYXRpb24gdXNlZCB0byBjcmVhdGUgdGhlIGRlY29kZXIKKyAgICAgKgorICAg ICAqIFNwZWNpZmllZCBieSBkZWNvZGVycworICAgICAqLworICAgIEQzRDEyX1ZJREVPX0RFQ09E RV9DT05GSUdVUkFUSU9OIGNmZzsKKworICAgIC8qKgorICAgICAqIEEgY2FjaGVkIHF1ZXVlIGZv ciByZXVzaW5nIHRoZSBEM0QxMiBjb21tYW5kIGFsbG9jYXRvcnMKKyAgICAgKgorICAgICAqIEBz ZWUgaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mvd2luMzIvZGlyZWN0 M2QxMi9yZWNvcmRpbmctY29tbWFuZC1saXN0cy1hbmQtYnVuZGxlcyNpZDNkMTJjb21tYW5kYWxs b2NhdG9yCisgICAgICovCisgICAgQVZGaWZvICphbGxvY2F0b3JfcXVldWU7CisKKyAgICAvKioK KyAgICAgKiBEM0QxMiBjb21tYW5kIHF1ZXVlCisgICAgICovCisgICAgSUQzRDEyQ29tbWFuZFF1 ZXVlICpjb21tYW5kX3F1ZXVlOworCisgICAgLyoqCisgICAgICogRDNEMTIgdmlkZW8gZGVjb2Rl IGNvbW1hbmQgbGlzdAorICAgICAqLworICAgIElEM0QxMlZpZGVvRGVjb2RlQ29tbWFuZExpc3Qg KmNvbW1hbmRfbGlzdDsKKworICAgIC8qKgorICAgICAqIFRoZSBhcnJheSBvZiBidWZmZXIgcmVz b3VyY2VzIHVzZWQgdG8gdXBsb2FkIGNvbXByZXNzZWQgYml0c3RyZWFtCisgICAgICoKKyAgICAg KiBUaGUgYnVmZmVycy5sZW5ndGggaXMgdGhlIHNhbWUgYXMgRDNEMTJWQURlY29kZUNvbnRleHQu bWF4X251bV9yZWYKKyAgICAgKi8KKyAgICBJRDNEMTJSZXNvdXJjZSAqKmJ1ZmZlcnM7CisKKyAg ICAvKioKKyAgICAgKiBUaGUgYXJyYXkgb2YgcmVzb3VyY2VzIHVzZWQgZm9yIHJlZmVyZW5jZSBm cmFtZXMKKyAgICAgKgorICAgICAqIFRoZSByZWZfcmVzb3VyY2VzLmxlbmd0aCBpcyB0aGUgc2Ft ZSBhcyBEM0QxMlZBRGVjb2RlQ29udGV4dC5tYXhfbnVtX3JlZgorICAgICAqLworICAgIElEM0Qx MlJlc291cmNlICoqcmVmX3Jlc291cmNlczsKKworICAgIC8qKgorICAgICAqIFRoZSBhcnJheSBv ZiBzdWJyZXNvdXJjZXMgdXNlZCBmb3IgcmVmZXJlbmNlIGZyYW1lcworICAgICAqCisgICAgICog VGhlIHJlZl9zdWJyZXNvdXJjZXMubGVuZ3RoIGlzIHRoZSBzYW1lIGFzIEQzRDEyVkFEZWNvZGVD b250ZXh0Lm1heF9udW1fcmVmCisgICAgICovCisgICAgVUlOVCAqcmVmX3N1YnJlc291cmNlczsK KworICAgIC8qKgorICAgICAqIE1heGltdW0gbnVtYmVyIG9mIHJlZmVyZW5jZSBmcmFtZXMKKyAg ICAgKi8KKyAgICBVSU5UIG1heF9udW1fcmVmOworCisgICAgLyoqCisgICAgICogVGhlIHN5bmMg Y29udGV4dCB1c2VkIHRvIHN5bmMgY29tbWFuZCBxdWV1ZQorICAgICAqLworICAgIEFWRDNEMTJW QVN5bmNDb250ZXh0ICpzeW5jX2N0eDsKKworICAgIC8qKgorICAgICAqIEEgcG9pbnRlciB0byBB VkQzRDEyVkFEZXZpY2VDb250ZXh0IHVzZWQgdG8gY3JlYXRlIEQzRDEyIG9iamVjdHMKKyAgICAg Ki8KKyAgICBBVkQzRDEyVkFEZXZpY2VDb250ZXh0ICpkZXZpY2VfY3R4OworCisgICAgLyoqCisg ICAgICogUGl4ZWwgZm9ybWF0CisgICAgICovCisgICAgZW51bSBBVlBpeGVsRm9ybWF0IHBpeF9m bXQ7CisKKyAgICAvKioKKyAgICAgKiBQcml2YXRlIHRvIHRoZSBGRm1wZWcgQVZIV0FjY2VsIGlt cGxlbWVudGF0aW9uCisgICAgICovCisgICAgdW5zaWduZWQgcmVwb3J0X2lkOworfSBEM0QxMlZB RGVjb2RlQ29udGV4dDsKKworLyoqCisgKiBAfQorICovCisKKyNkZWZpbmUgRDNEMTJWQV9ERUNP REVfQ09OVEVYVChhdmN0eCkgKChEM0QxMlZBRGVjb2RlQ29udGV4dCAqKSgoYXZjdHgpLT5pbnRl cm5hbC0+aHdhY2NlbF9wcml2X2RhdGEpKQorI2RlZmluZSBEM0QxMlZBX0ZSQU1FU19DT05URVhU KGF2Y3R4KSAoKEFWSFdGcmFtZXNDb250ZXh0ICopKGF2Y3R4KS0+aHdfZnJhbWVzX2N0eC0+ZGF0 YSkKKworLyoqCisgKiBAYnJpZWYgR2V0IGEgc3VpdGFibGUgbWF4aW11bSBiaXRzdHJlYW0gc2l6 ZQorICoKKyAqIENyZWF0aW5nIGFuZCBkZXN0cm95aW5nIGEgcmVzb3VyY2Ugb24gZDNkMTIgbmVl ZHMgc3luYyBhbmQgcmVhbGxvY2F0aW9uLCBzbyB1c2UgdGhpcyBmdW5jdGlvbgorICogdG8gaGVs cCBhbGxvY2F0ZSBhIGJpZyBlbm91Z2ggYml0c3RyZWFtIGJ1ZmZlciB0byBhdm9pZCByZWNyZWF0 aW5nIHJlc291cmNlcyB3aGVuIGRlY29kaW5nLgorICoKKyAqIEBwYXJhbSBhdmN0eAorICogQHJl dHVybiB0aGUgc3VpdGFibGUgc2l6ZQorICovCitVSU5UIGZmX2QzZDEyZGVjX2dldF9zdWl0YWJs ZV9tYXhfYml0c3RyZWFtX3NpemUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KTsKKworLyoqCisgKiBA YnJpZWYgaW5pdCBEM0QxMlZBRGVjb2RlQ29udGV4dAorICoKKyAqIEBwYXJhbSBhdmN0eAorICog QHJldHVybiBFcnJvciBjb2RlIChyZXQgPCAwIGlmIGZhaWxlZCkKKyAqLworaW50IGZmX2QzZDEy ZGVjX2RlY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCk7CisKKy8qKgorICogQGJyaWVm IHVuaW5pdCBEM0QxMlZBRGVjb2RlQ29udGV4dAorICoKKyAqIEBwYXJhbSBhdmN0eAorICogQHJl dHVybiBFcnJvciBjb2RlIChyZXQgPCAwIGlmIGZhaWxlZCkKKyAqLworaW50IGZmX2QzZDEyZGVj X2RlY29kZV91bmluaXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KTsKKworLyoqCisgKiBAYnJpZWYg ZDNkMTJkZWMgY29tbW9uIGZyYW1lIHBhcmFtcworICoKKyAqIEBwYXJhbSBhdmN0eAorICogQHBh cmFtIGh3X2ZyYW1lc19jdHgKKyAqIEByZXR1cm4gRXJyb3IgY29kZSAocmV0IDwgMCBpZiBmYWls ZWQpCisgKi8KK2ludCBmZl9kM2QxMmRlY19jb21tb25fZnJhbWVfcGFyYW1zKEFWQ29kZWNDb250 ZXh0ICphdmN0eCwgQVZCdWZmZXJSZWYgKmh3X2ZyYW1lc19jdHgpOworCisvKioKKyAqIEBicmll ZiBkM2QxMmRlYyBjb21tb24gZW5kIGZyYW1lCisgKgorICogQHBhcmFtIGF2Y3R4ICAgIGNvZGVj IGNvbnRleHQKKyAqIEBwYXJhbSBmcmFtZSAgICBjdXJyZW50IG91dHB1dCBmcmFtZQorICogQHBh cmFtIHBwICAgICAgIHBpY3R1cmUgcGFyYW1ldGVycworICogQHBhcmFtIHBwX3NpemUgIHRoZSBz aXplIG9mIHRoZSBwaWN0dXJlIHBhcmFtZXRlcnMKKyAqIEBwYXJhbSBxbSAgICAgICBxdWFudGl6 YXRpb24gbWF0cml4CisgKiBAcGFyYW0gcW1fc2l6ZSAgdGhlIHNpemUgb2YgdGhlIHF1YW50aXph dGlvbiBtYXRyaXgKKyAqIEBwYXJhbSBjYWxsYmFjayB1cGRhdGUgZGVjb2Rlci1zcGVjaWZpZWQg aW5wdXQgc3RyZWFtIGFyZ3VtZW50cworICogQHJldHVybiBFcnJvciBjb2RlIChyZXQgPCAwIGlm IGZhaWxlZCkKKyAqLworaW50IGZmX2QzZDEyZGVjX2NvbW1vbl9lbmRfZnJhbWUoQVZDb2RlY0Nv bnRleHQgKmF2Y3R4LCBBVkZyYW1lICpmcmFtZSwKKyAgICBjb25zdCB2b2lkICpwcCwgdW5zaWdu ZWQgcHBfc2l6ZSwKKyAgICBjb25zdCB2b2lkICpxbSwgdW5zaWduZWQgcW1fc2l6ZSwKKyAgICBp bnQoKikoQVZDb2RlY0NvbnRleHQgKiwgRDNEMTJfVklERU9fREVDT0RFX0lOUFVUX1NUUkVBTV9B UkdVTUVOVFMgKiwgSUQzRDEyUmVzb3VyY2UgKikpOworCisvKioKKyAqIEBicmllZiBnZXQgc3Vy ZmFjZSBpbmRleAorICoKKyAqIEBwYXJhbSBhdmN0eAorICogQHBhcmFtIGZyYW1lCisgKiBAcmV0 dXJuIGluZGV4CisgKi8KK2ludHB0cl90IGZmX2QzZDEyZGVjX2dldF9zdXJmYWNlX2luZGV4KEFW Q29kZWNDb250ZXh0ICphdmN0eCwgY29uc3QgQVZGcmFtZSAqZnJhbWUpOworCisjZW5kaWYgLyog QVZDT0RFQ19EM0QxMlZBX0RFQ19IICovCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2QzZDEyZGVj X2F2MS5jIGIvbGliYXZjb2RlYy9kM2QxMmRlY19hdjEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwLi5kZmZiYzU3ODA1Ci0tLSAvZGV2L251bGwKKysrIGIvbGliYXZjb2Rl Yy9kM2QxMmRlY19hdjEuYwpAQCAtMCwwICsxLDQ0MCBAQAorLyoKKyAqIERpcmVjdDNEIDEyIEFW MSBIVyBhY2NlbGVyYXRpb24KKyAqCisgKiBjb3B5cmlnaHQgKGMpIDIwMjIgV3UgSmlhbmh1YSA8 dG9xc3h3QG91dGxvb2suY29tPgorICoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZGbXBlZy4K KyAqCisgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAo YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIEZGbXBlZyBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM ZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5v dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAq LworCisjaW5jbHVkZSAiY29uZmlnX2NvbXBvbmVudHMuaCIKKyNpbmNsdWRlICJsaWJhdnV0aWwv YXZhc3NlcnQuaCIKKyNpbmNsdWRlICJhdjFkZWMuaCIKKyNpbmNsdWRlICJkM2QxMmRlYy5oIgor I2luY2x1ZGUgPGR4dmEuaD4KKworI2RlZmluZSBNQVhfVElMRVMgRDNEMTJERUNfTUFYX1NMSUNF UyArIDEKKwordHlwZWRlZiBzdHJ1Y3QgRDNEMTJBVjFEZWNvZGVDb250ZXh0IHsKKyAgICBEM0Qx MlZBRGVjb2RlQ29udGV4dCBjdHg7CisgICAgdWludDhfdCAqYml0c3RyZWFtX2J1ZmZlcjsKK30g RDNEMTJBVjFEZWNvZGVDb250ZXh0OworCisjZGVmaW5lIEQzRDEyX0FWMV9ERUNPREVfQ09OVEVY VChhdmN0eCkgKChEM0QxMkFWMURlY29kZUNvbnRleHQgKilEM0QxMlZBX0RFQ09ERV9DT05URVhU KGF2Y3R4KSkKKwordHlwZWRlZiBzdHJ1Y3QgRDNEMTJEZWNvZGVQaWN0dXJlQ29udGV4dCB7Cisg ICAgRFhWQV9QaWNQYXJhbXNfQVYxICBwcDsKKyAgICB1bnNpZ25lZCAgICAgICAgICAgIHRpbGVf Y291bnQ7CisgICAgRFhWQV9UaWxlX0FWMSAgICAgICB0aWxlc1tNQVhfVElMRVNdOworICAgIHVp bnQ4X3QgICAgICAgICAgICAqYml0c3RyZWFtOworICAgIHVuc2lnbmVkICAgICAgICAgICAgYml0 c3RyZWFtX3NpemU7Cit9IEQzRDEyRGVjb2RlUGljdHVyZUNvbnRleHQ7CisKK3N0YXRpYyBpbnQg Z2V0X2JpdF9kZXB0aF9mcm9tX3NlcShjb25zdCBBVjFSYXdTZXF1ZW5jZUhlYWRlciAqc2VxKQor eworICAgIGlmIChzZXEtPnNlcV9wcm9maWxlID09IDIgJiYgc2VxLT5jb2xvcl9jb25maWcuaGln aF9iaXRkZXB0aCkKKyAgICAgICAgcmV0dXJuIHNlcS0+Y29sb3JfY29uZmlnLnR3ZWx2ZV9iaXQg PyAxMiA6IDEwOworICAgIGVsc2UgaWYgKHNlcS0+c2VxX3Byb2ZpbGUgPD0gMiAmJiBzZXEtPmNv bG9yX2NvbmZpZy5oaWdoX2JpdGRlcHRoKQorICAgICAgICByZXR1cm4gMTA7CisgICAgZWxzZQor ICAgICAgICByZXR1cm4gODsKK30KKworc3RhdGljIGludCBmaWxsX3BpY3R1cmVfcGFyYW1ldGVy cyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsIGNvbnN0IEFWMURlY0NvbnRleHQgKmgsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWFZBX1BpY1BhcmFtc19BVjEgKnBwKQorewor ICAgIGludCBpLGosIHVzZXNfbHI7CisgICAgY29uc3QgQVYxUmF3U2VxdWVuY2VIZWFkZXIgICpz ZXEgICAgICAgICAgPSBoLT5yYXdfc2VxOworICAgIGNvbnN0IEFWMVJhd0ZyYW1lSGVhZGVyICAg ICAqZnJhbWVfaGVhZGVyID0gaC0+cmF3X2ZyYW1lX2hlYWRlcjsKKyAgICBjb25zdCBBVjFSYXdG aWxtR3JhaW5QYXJhbXMgKmZpbG1fZ3JhaW4gICA9ICZoLT5jdXJfZnJhbWUuZmlsbV9ncmFpbjsK KworICAgIHVuc2lnbmVkIGNoYXIgcmVtYXBfbHJfdHlwZVs0XSA9IHsgQVYxX1JFU1RPUkVfTk9O RSwgQVYxX1JFU1RPUkVfU1dJVENIQUJMRSwgQVYxX1JFU1RPUkVfV0lFTkVSLCBBVjFfUkVTVE9S RV9TR1JQUk9KIH07CisgICAgaW50IGFwcGx5X2dyYWluID0gIShhdmN0eC0+ZXhwb3J0X3NpZGVf ZGF0YSAmIEFWX0NPREVDX0VYUE9SVF9EQVRBX0ZJTE1fR1JBSU4pICYmIGZpbG1fZ3JhaW4tPmFw cGx5X2dyYWluOworCisgICAgbWVtc2V0KHBwLCAwLCBzaXplb2YoKnBwKSk7CisKKyAgICBwcC0+ d2lkdGggID0gYXZjdHgtPndpZHRoOworICAgIHBwLT5oZWlnaHQgPSBhdmN0eC0+aGVpZ2h0Owor CisgICAgcHAtPm1heF93aWR0aCAgPSBzZXEtPm1heF9mcmFtZV93aWR0aF9taW51c18xICsgMTsK KyAgICBwcC0+bWF4X2hlaWdodCA9IHNlcS0+bWF4X2ZyYW1lX2hlaWdodF9taW51c18xICsgMTsK KworICAgIHBwLT5DdXJyUGljVGV4dHVyZUluZGV4ID0gZmZfZDNkMTJkZWNfZ2V0X3N1cmZhY2Vf aW5kZXgoYXZjdHgsIGgtPmN1cl9mcmFtZS5mKTsKKyAgICBwcC0+c3VwZXJyZXNfZGVub20gICAg ICA9IGZyYW1lX2hlYWRlci0+dXNlX3N1cGVycmVzID8gZnJhbWVfaGVhZGVyLT5jb2RlZF9kZW5v bSArIEFWMV9TVVBFUlJFU19ERU5PTV9NSU4gOiBBVjFfU1VQRVJSRVNfTlVNOworICAgIHBwLT5i aXRkZXB0aCAgICAgICAgICAgID0gZ2V0X2JpdF9kZXB0aF9mcm9tX3NlcShzZXEpOworICAgIHBw LT5zZXFfcHJvZmlsZSAgICAgICAgID0gc2VxLT5zZXFfcHJvZmlsZTsKKworICAgIC8qIFRpbGlu ZyBpbmZvICovCisgICAgcHAtPnRpbGVzLmNvbHMgPSBmcmFtZV9oZWFkZXItPnRpbGVfY29sczsK KyAgICBwcC0+dGlsZXMucm93cyA9IGZyYW1lX2hlYWRlci0+dGlsZV9yb3dzOworICAgIHBwLT50 aWxlcy5jb250ZXh0X3VwZGF0ZV9pZCA9IGZyYW1lX2hlYWRlci0+Y29udGV4dF91cGRhdGVfdGls ZV9pZDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBwcC0+dGlsZXMuY29sczsgaSsrKQorICAgICAg ICBwcC0+dGlsZXMud2lkdGhzW2ldID0gZnJhbWVfaGVhZGVyLT53aWR0aF9pbl9zYnNfbWludXNf MVtpXSArIDE7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgcHAtPnRpbGVzLnJvd3M7IGkrKykKKyAg ICAgICAgcHAtPnRpbGVzLmhlaWdodHNbaV0gPSBmcmFtZV9oZWFkZXItPmhlaWdodF9pbl9zYnNf bWludXNfMVtpXSArIDE7CisKKyAgICAvKiBDb2RpbmcgdG9vbHMgKi8KKyAgICBwcC0+Y29kaW5n LnVzZV8xMjh4MTI4X3N1cGVyYmxvY2sgICAgICAgPSBzZXEtPnVzZV8xMjh4MTI4X3N1cGVyYmxv Y2s7CisgICAgcHAtPmNvZGluZy5pbnRyYV9lZGdlX2ZpbHRlciAgICAgICAgICAgID0gc2VxLT5l bmFibGVfaW50cmFfZWRnZV9maWx0ZXI7CisgICAgcHAtPmNvZGluZy5pbnRlcmludHJhX2NvbXBv dW5kICAgICAgICAgID0gc2VxLT5lbmFibGVfaW50ZXJpbnRyYV9jb21wb3VuZDsKKyAgICBwcC0+ Y29kaW5nLm1hc2tlZF9jb21wb3VuZCAgICAgICAgICAgICAgPSBzZXEtPmVuYWJsZV9tYXNrZWRf Y29tcG91bmQ7CisgICAgcHAtPmNvZGluZy53YXJwZWRfbW90aW9uICAgICAgICAgICAgICAgID0g ZnJhbWVfaGVhZGVyLT5hbGxvd193YXJwZWRfbW90aW9uOworICAgIHBwLT5jb2RpbmcuZHVhbF9m aWx0ZXIgICAgICAgICAgICAgICAgICA9IHNlcS0+ZW5hYmxlX2R1YWxfZmlsdGVyOworICAgIHBw LT5jb2Rpbmcuam50X2NvbXAgICAgICAgICAgICAgICAgICAgICA9IHNlcS0+ZW5hYmxlX2pudF9j b21wOworICAgIHBwLT5jb2Rpbmcuc2NyZWVuX2NvbnRlbnRfdG9vbHMgICAgICAgICA9IGZyYW1l X2hlYWRlci0+YWxsb3dfc2NyZWVuX2NvbnRlbnRfdG9vbHM7CisgICAgcHAtPmNvZGluZy5pbnRl Z2VyX212ICAgICAgICAgICAgICAgICAgID0gZnJhbWVfaGVhZGVyLT5mb3JjZV9pbnRlZ2VyX212 IHx8ICEoZnJhbWVfaGVhZGVyLT5mcmFtZV90eXBlICYgMSk7CisgICAgcHAtPmNvZGluZy5jZGVm ICAgICAgICAgICAgICAgICAgICAgICAgID0gc2VxLT5lbmFibGVfY2RlZjsKKyAgICBwcC0+Y29k aW5nLnJlc3RvcmF0aW9uICAgICAgICAgICAgICAgICAgPSBzZXEtPmVuYWJsZV9yZXN0b3JhdGlv bjsKKyAgICBwcC0+Y29kaW5nLmZpbG1fZ3JhaW4gICAgICAgICAgICAgICAgICAgPSBzZXEtPmZp bG1fZ3JhaW5fcGFyYW1zX3ByZXNlbnQgJiYgIShhdmN0eC0+ZXhwb3J0X3NpZGVfZGF0YSAmIEFW X0NPREVDX0VYUE9SVF9EQVRBX0ZJTE1fR1JBSU4pOworICAgIHBwLT5jb2RpbmcuaW50cmFiYyAg ICAgICAgICAgICAgICAgICAgICA9IGZyYW1lX2hlYWRlci0+YWxsb3dfaW50cmFiYzsKKyAgICBw cC0+Y29kaW5nLmhpZ2hfcHJlY2lzaW9uX212ICAgICAgICAgICAgPSBmcmFtZV9oZWFkZXItPmFs bG93X2hpZ2hfcHJlY2lzaW9uX212OworICAgIHBwLT5jb2Rpbmcuc3dpdGNoYWJsZV9tb3Rpb25f bW9kZSAgICAgICA9IGZyYW1lX2hlYWRlci0+aXNfbW90aW9uX21vZGVfc3dpdGNoYWJsZTsKKyAg ICBwcC0+Y29kaW5nLmZpbHRlcl9pbnRyYSAgICAgICAgICAgICAgICAgPSBzZXEtPmVuYWJsZV9m aWx0ZXJfaW50cmE7CisgICAgcHAtPmNvZGluZy5kaXNhYmxlX2ZyYW1lX2VuZF91cGRhdGVfY2Rm ID0gZnJhbWVfaGVhZGVyLT5kaXNhYmxlX2ZyYW1lX2VuZF91cGRhdGVfY2RmOworICAgIHBwLT5j b2RpbmcuZGlzYWJsZV9jZGZfdXBkYXRlICAgICAgICAgICA9IGZyYW1lX2hlYWRlci0+ZGlzYWJs ZV9jZGZfdXBkYXRlOworICAgIHBwLT5jb2RpbmcucmVmZXJlbmNlX21vZGUgICAgICAgICAgICAg ICA9IGZyYW1lX2hlYWRlci0+cmVmZXJlbmNlX3NlbGVjdDsKKyAgICBwcC0+Y29kaW5nLnNraXBf bW9kZSAgICAgICAgICAgICAgICAgICAgPSBmcmFtZV9oZWFkZXItPnNraXBfbW9kZV9wcmVzZW50 OworICAgIHBwLT5jb2RpbmcucmVkdWNlZF90eF9zZXQgICAgICAgICAgICAgICA9IGZyYW1lX2hl YWRlci0+cmVkdWNlZF90eF9zZXQ7CisgICAgcHAtPmNvZGluZy5zdXBlcnJlcyAgICAgICAgICAg ICAgICAgICAgID0gZnJhbWVfaGVhZGVyLT51c2Vfc3VwZXJyZXM7CisgICAgcHAtPmNvZGluZy50 eF9tb2RlICAgICAgICAgICAgICAgICAgICAgID0gZnJhbWVfaGVhZGVyLT50eF9tb2RlOworICAg IHBwLT5jb2RpbmcudXNlX3JlZl9mcmFtZV9tdnMgICAgICAgICAgICA9IGZyYW1lX2hlYWRlci0+ dXNlX3JlZl9mcmFtZV9tdnM7CisgICAgcHAtPmNvZGluZy5lbmFibGVfcmVmX2ZyYW1lX212cyAg ICAgICAgID0gc2VxLT5lbmFibGVfcmVmX2ZyYW1lX212czsKKyAgICBwcC0+Y29kaW5nLnJlZmVy ZW5jZV9mcmFtZV91cGRhdGUgICAgICAgPSAxOyAvLyAwIGZvciBzaG93X2V4aXN0aW5nX2ZyYW1l IHdpdGgga2V5IGZyYW1lcywgYnV0IHRob3NlIGFyZSBub3QgcGFzc2VkIHRvIHRoZSBod2FjY2Vs CisKKyAgICAvKiBGb3JtYXQgJiBQaWN0dXJlIEluZm8gZmxhZ3MgKi8KKyAgICBwcC0+Zm9ybWF0 LmZyYW1lX3R5cGUgICAgID0gZnJhbWVfaGVhZGVyLT5mcmFtZV90eXBlOworICAgIHBwLT5mb3Jt YXQuc2hvd19mcmFtZSAgICAgPSBmcmFtZV9oZWFkZXItPnNob3dfZnJhbWU7CisgICAgcHAtPmZv cm1hdC5zaG93YWJsZV9mcmFtZSA9IGZyYW1lX2hlYWRlci0+c2hvd2FibGVfZnJhbWU7CisgICAg cHAtPmZvcm1hdC5zdWJzYW1wbGluZ194ICA9IHNlcS0+Y29sb3JfY29uZmlnLnN1YnNhbXBsaW5n X3g7CisgICAgcHAtPmZvcm1hdC5zdWJzYW1wbGluZ195ICA9IHNlcS0+Y29sb3JfY29uZmlnLnN1 YnNhbXBsaW5nX3k7CisgICAgcHAtPmZvcm1hdC5tb25vX2Nocm9tZSAgICA9IHNlcS0+Y29sb3Jf Y29uZmlnLm1vbm9fY2hyb21lOworCisgICAgLyogUmVmZXJlbmNlcyAqLworICAgIHBwLT5wcmlt YXJ5X3JlZl9mcmFtZSA9IGZyYW1lX2hlYWRlci0+cHJpbWFyeV9yZWZfZnJhbWU7CisgICAgcHAt Pm9yZGVyX2hpbnQgICAgICAgID0gZnJhbWVfaGVhZGVyLT5vcmRlcl9oaW50OworICAgIHBwLT5v cmRlcl9oaW50X2JpdHMgICA9IHNlcS0+ZW5hYmxlX29yZGVyX2hpbnQgPyBzZXEtPm9yZGVyX2hp bnRfYml0c19taW51c18xICsgMSA6IDA7CisKKyAgICBtZW1zZXQocHAtPlJlZkZyYW1lTWFwVGV4 dHVyZUluZGV4LCAweEZGLCBzaXplb2YocHAtPlJlZkZyYW1lTWFwVGV4dHVyZUluZGV4KSk7Cisg ICAgZm9yIChpID0gMDsgaSA8IEFWMV9SRUZTX1BFUl9GUkFNRTsgaSsrKSB7CisgICAgICAgIGlu dDhfdCByZWZfaWR4ID0gZnJhbWVfaGVhZGVyLT5yZWZfZnJhbWVfaWR4W2ldOworICAgICAgICBB VkZyYW1lICpyZWZfZnJhbWUgPSBoLT5yZWZbcmVmX2lkeF0uZjsKKworICAgICAgICBwcC0+ZnJh bWVfcmVmc1tpXS53aWR0aCAgPSByZWZfZnJhbWUtPndpZHRoOworICAgICAgICBwcC0+ZnJhbWVf cmVmc1tpXS5oZWlnaHQgPSByZWZfZnJhbWUtPmhlaWdodDsKKyAgICAgICAgcHAtPmZyYW1lX3Jl ZnNbaV0uSW5kZXggID0gcmVmX2ZyYW1lLT5idWZbMF0gPyByZWZfaWR4IDogMHhGRjsKKworICAg ICAgICAvKiBHbG9iYWwgTW90aW9uICovCisgICAgICAgIHBwLT5mcmFtZV9yZWZzW2ldLndtaW52 YWxpZCA9IGgtPmN1cl9mcmFtZS5nbV9pbnZhbGlkW0FWMV9SRUZfRlJBTUVfTEFTVCArIGldOwor ICAgICAgICBwcC0+ZnJhbWVfcmVmc1tpXS53bXR5cGUgICAgPSBoLT5jdXJfZnJhbWUuZ21fdHlw ZVtBVjFfUkVGX0ZSQU1FX0xBU1QgKyBpXTsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IDY7ICsr aikgeworICAgICAgICAgICAgIHBwLT5mcmFtZV9yZWZzW2ldLndtbWF0W2pdID0gaC0+Y3VyX2Zy YW1lLmdtX3BhcmFtc1tBVjFfUkVGX0ZSQU1FX0xBU1QgKyBpXVtqXTsKKyAgICAgICAgfQorICAg IH0KKyAgICBmb3IgKGkgPSAwOyBpIDwgQVYxX05VTV9SRUZfRlJBTUVTOyBpKyspIHsKKyAgICAg ICAgQVZGcmFtZSAqcmVmX2ZyYW1lID0gaC0+cmVmW2ldLmY7CisgICAgICAgIGlmIChyZWZfZnJh bWUtPmJ1ZlswXSkKKyAgICAgICAgICAgIHBwLT5SZWZGcmFtZU1hcFRleHR1cmVJbmRleFtpXSA9 IGZmX2QzZDEyZGVjX2dldF9zdXJmYWNlX2luZGV4KGF2Y3R4LCByZWZfZnJhbWUpOworICAgIH0K KworICAgIC8qIExvb3AgZmlsdGVyIHBhcmFtZXRlcnMgKi8KKyAgICBwcC0+bG9vcF9maWx0ZXIu ZmlsdGVyX2xldmVsWzBdICAgICAgICA9IGZyYW1lX2hlYWRlci0+bG9vcF9maWx0ZXJfbGV2ZWxb MF07CisgICAgcHAtPmxvb3BfZmlsdGVyLmZpbHRlcl9sZXZlbFsxXSAgICAgICAgPSBmcmFtZV9o ZWFkZXItPmxvb3BfZmlsdGVyX2xldmVsWzFdOworICAgIHBwLT5sb29wX2ZpbHRlci5maWx0ZXJf bGV2ZWxfdSAgICAgICAgID0gZnJhbWVfaGVhZGVyLT5sb29wX2ZpbHRlcl9sZXZlbFsyXTsKKyAg ICBwcC0+bG9vcF9maWx0ZXIuZmlsdGVyX2xldmVsX3YgICAgICAgICA9IGZyYW1lX2hlYWRlci0+ bG9vcF9maWx0ZXJfbGV2ZWxbM107CisgICAgcHAtPmxvb3BfZmlsdGVyLnNoYXJwbmVzc19sZXZl bCAgICAgICAgPSBmcmFtZV9oZWFkZXItPmxvb3BfZmlsdGVyX3NoYXJwbmVzczsKKyAgICBwcC0+ bG9vcF9maWx0ZXIubW9kZV9yZWZfZGVsdGFfZW5hYmxlZCA9IGZyYW1lX2hlYWRlci0+bG9vcF9m aWx0ZXJfZGVsdGFfZW5hYmxlZDsKKyAgICBwcC0+bG9vcF9maWx0ZXIubW9kZV9yZWZfZGVsdGFf dXBkYXRlICA9IGZyYW1lX2hlYWRlci0+bG9vcF9maWx0ZXJfZGVsdGFfdXBkYXRlOworICAgIHBw LT5sb29wX2ZpbHRlci5kZWx0YV9sZl9tdWx0aSAgICAgICAgID0gZnJhbWVfaGVhZGVyLT5kZWx0 YV9sZl9tdWx0aTsKKyAgICBwcC0+bG9vcF9maWx0ZXIuZGVsdGFfbGZfcHJlc2VudCAgICAgICA9 IGZyYW1lX2hlYWRlci0+ZGVsdGFfbGZfcHJlc2VudDsKKyAgICBwcC0+bG9vcF9maWx0ZXIuZGVs dGFfbGZfcmVzICAgICAgICAgICA9IGZyYW1lX2hlYWRlci0+ZGVsdGFfbGZfcmVzOworCisgICAg Zm9yIChpID0gMDsgaSA8IEFWMV9UT1RBTF9SRUZTX1BFUl9GUkFNRTsgaSsrKSB7CisgICAgICAg IHBwLT5sb29wX2ZpbHRlci5yZWZfZGVsdGFzW2ldID0gZnJhbWVfaGVhZGVyLT5sb29wX2ZpbHRl cl9yZWZfZGVsdGFzW2ldOworICAgIH0KKworICAgIHBwLT5sb29wX2ZpbHRlci5tb2RlX2RlbHRh c1swXSAgICAgICAgICAgICAgICA9IGZyYW1lX2hlYWRlci0+bG9vcF9maWx0ZXJfbW9kZV9kZWx0 YXNbMF07CisgICAgcHAtPmxvb3BfZmlsdGVyLm1vZGVfZGVsdGFzWzFdICAgICAgICAgICAgICAg ID0gZnJhbWVfaGVhZGVyLT5sb29wX2ZpbHRlcl9tb2RlX2RlbHRhc1sxXTsKKyAgICBwcC0+bG9v cF9maWx0ZXIuZnJhbWVfcmVzdG9yYXRpb25fdHlwZVswXSAgICAgPSByZW1hcF9scl90eXBlW2Zy YW1lX2hlYWRlci0+bHJfdHlwZVswXV07CisgICAgcHAtPmxvb3BfZmlsdGVyLmZyYW1lX3Jlc3Rv cmF0aW9uX3R5cGVbMV0gICAgID0gcmVtYXBfbHJfdHlwZVtmcmFtZV9oZWFkZXItPmxyX3R5cGVb MV1dOworICAgIHBwLT5sb29wX2ZpbHRlci5mcmFtZV9yZXN0b3JhdGlvbl90eXBlWzJdICAgICA9 IHJlbWFwX2xyX3R5cGVbZnJhbWVfaGVhZGVyLT5scl90eXBlWzJdXTsKKyAgICB1c2VzX2xyID0g ZnJhbWVfaGVhZGVyLT5scl90eXBlWzBdIHx8IGZyYW1lX2hlYWRlci0+bHJfdHlwZVsxXSB8fCBm cmFtZV9oZWFkZXItPmxyX3R5cGVbMl07CisgICAgcHAtPmxvb3BfZmlsdGVyLmxvZzJfcmVzdG9y YXRpb25fdW5pdF9zaXplWzBdID0gdXNlc19sciA/ICg2ICsgZnJhbWVfaGVhZGVyLT5scl91bml0 X3NoaWZ0KSA6IDg7CisgICAgcHAtPmxvb3BfZmlsdGVyLmxvZzJfcmVzdG9yYXRpb25fdW5pdF9z aXplWzFdID0gdXNlc19sciA/ICg2ICsgZnJhbWVfaGVhZGVyLT5scl91bml0X3NoaWZ0IC0gZnJh bWVfaGVhZGVyLT5scl91dl9zaGlmdCkgOiA4OworICAgIHBwLT5sb29wX2ZpbHRlci5sb2cyX3Jl c3RvcmF0aW9uX3VuaXRfc2l6ZVsyXSA9IHVzZXNfbHIgPyAoNiArIGZyYW1lX2hlYWRlci0+bHJf dW5pdF9zaGlmdCAtIGZyYW1lX2hlYWRlci0+bHJfdXZfc2hpZnQpIDogODsKKworICAgIC8qIFF1 YW50aXphdGlvbiAqLworICAgIHBwLT5xdWFudGl6YXRpb24uZGVsdGFfcV9wcmVzZW50ID0gZnJh bWVfaGVhZGVyLT5kZWx0YV9xX3ByZXNlbnQ7CisgICAgcHAtPnF1YW50aXphdGlvbi5kZWx0YV9x X3JlcyAgICAgPSBmcmFtZV9oZWFkZXItPmRlbHRhX3FfcmVzOworICAgIHBwLT5xdWFudGl6YXRp b24uYmFzZV9xaW5kZXggICAgID0gZnJhbWVfaGVhZGVyLT5iYXNlX3FfaWR4OworICAgIHBwLT5x dWFudGl6YXRpb24ueV9kY19kZWx0YV9xICAgID0gZnJhbWVfaGVhZGVyLT5kZWx0YV9xX3lfZGM7 CisgICAgcHAtPnF1YW50aXphdGlvbi51X2RjX2RlbHRhX3EgICAgPSBmcmFtZV9oZWFkZXItPmRl bHRhX3FfdV9kYzsKKyAgICBwcC0+cXVhbnRpemF0aW9uLnZfZGNfZGVsdGFfcSAgICA9IGZyYW1l X2hlYWRlci0+ZGVsdGFfcV92X2RjOworICAgIHBwLT5xdWFudGl6YXRpb24udV9hY19kZWx0YV9x ICAgID0gZnJhbWVfaGVhZGVyLT5kZWx0YV9xX3VfYWM7CisgICAgcHAtPnF1YW50aXphdGlvbi52 X2FjX2RlbHRhX3EgICAgPSBmcmFtZV9oZWFkZXItPmRlbHRhX3Ffdl9hYzsKKyAgICBwcC0+cXVh bnRpemF0aW9uLnFtX3kgICAgICAgICAgICA9IGZyYW1lX2hlYWRlci0+dXNpbmdfcW1hdHJpeCA/ IGZyYW1lX2hlYWRlci0+cW1feSA6IDB4RkY7CisgICAgcHAtPnF1YW50aXphdGlvbi5xbV91ICAg ICAgICAgICAgPSBmcmFtZV9oZWFkZXItPnVzaW5nX3FtYXRyaXggPyBmcmFtZV9oZWFkZXItPnFt X3UgOiAweEZGOworICAgIHBwLT5xdWFudGl6YXRpb24ucW1fdiAgICAgICAgICAgID0gZnJhbWVf aGVhZGVyLT51c2luZ19xbWF0cml4ID8gZnJhbWVfaGVhZGVyLT5xbV92IDogMHhGRjsKKworICAg IC8qIENkZWYgcGFyYW1ldGVycyAqLworICAgIHBwLT5jZGVmLmRhbXBpbmcgPSBmcmFtZV9oZWFk ZXItPmNkZWZfZGFtcGluZ19taW51c18zOworICAgIHBwLT5jZGVmLmJpdHMgICAgPSBmcmFtZV9o ZWFkZXItPmNkZWZfYml0czsKKyAgICBmb3IgKGkgPSAwOyBpIDwgODsgaSsrKSB7CisgICAgICAg IHBwLT5jZGVmLnlfc3RyZW5ndGhzW2ldLnByaW1hcnkgICAgPSBmcmFtZV9oZWFkZXItPmNkZWZf eV9wcmlfc3RyZW5ndGhbaV07CisgICAgICAgIHBwLT5jZGVmLnlfc3RyZW5ndGhzW2ldLnNlY29u ZGFyeSAgPSBmcmFtZV9oZWFkZXItPmNkZWZfeV9zZWNfc3RyZW5ndGhbaV07CisgICAgICAgIHBw LT5jZGVmLnV2X3N0cmVuZ3Roc1tpXS5wcmltYXJ5ICAgPSBmcmFtZV9oZWFkZXItPmNkZWZfdXZf cHJpX3N0cmVuZ3RoW2ldOworICAgICAgICBwcC0+Y2RlZi51dl9zdHJlbmd0aHNbaV0uc2Vjb25k YXJ5ID0gZnJhbWVfaGVhZGVyLT5jZGVmX3V2X3NlY19zdHJlbmd0aFtpXTsKKyAgICB9CisKKyAg ICAvKiBNaXNjIGZsYWdzICovCisgICAgcHAtPmludGVycF9maWx0ZXIgPSBmcmFtZV9oZWFkZXIt PmludGVycG9sYXRpb25fZmlsdGVyOworCisgICAgLyogU2VnbWVudGF0aW9uICovCisgICAgcHAt PnNlZ21lbnRhdGlvbi5lbmFibGVkICAgICAgICAgPSBmcmFtZV9oZWFkZXItPnNlZ21lbnRhdGlv bl9lbmFibGVkOworICAgIHBwLT5zZWdtZW50YXRpb24udXBkYXRlX21hcCAgICAgID0gZnJhbWVf aGVhZGVyLT5zZWdtZW50YXRpb25fdXBkYXRlX21hcDsKKyAgICBwcC0+c2VnbWVudGF0aW9uLnVw ZGF0ZV9kYXRhICAgICA9IGZyYW1lX2hlYWRlci0+c2VnbWVudGF0aW9uX3VwZGF0ZV9kYXRhOwor ICAgIHBwLT5zZWdtZW50YXRpb24udGVtcG9yYWxfdXBkYXRlID0gZnJhbWVfaGVhZGVyLT5zZWdt ZW50YXRpb25fdGVtcG9yYWxfdXBkYXRlOworICAgIGZvciAoaSA9IDA7IGkgPCBBVjFfTUFYX1NF R01FTlRTOyBpKyspIHsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IEFWMV9TRUdfTFZMX01BWDsg aisrKSB7CisgICAgICAgICAgICBwcC0+c2VnbWVudGF0aW9uLmZlYXR1cmVfbWFza1tpXS5tYXNr IHw9IGZyYW1lX2hlYWRlci0+ZmVhdHVyZV9lbmFibGVkW2ldW2pdIDw8IGo7CisgICAgICAgICAg ICBwcC0+c2VnbWVudGF0aW9uLmZlYXR1cmVfZGF0YVtpXVtqXSAgICA9IGZyYW1lX2hlYWRlci0+ ZmVhdHVyZV92YWx1ZVtpXVtqXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIEZpbG0gZ3Jh aW4gKi8KKyAgICBpZiAoYXBwbHlfZ3JhaW4pIHsKKyAgICAgICAgcHAtPmZpbG1fZ3JhaW4uYXBw bHlfZ3JhaW4gICAgICAgICAgICAgID0gMTsKKyAgICAgICAgcHAtPmZpbG1fZ3JhaW4uc2NhbGlu Z19zaGlmdF9taW51czggICAgID0gZmlsbV9ncmFpbi0+Z3JhaW5fc2NhbGluZ19taW51c184Owor ICAgICAgICBwcC0+ZmlsbV9ncmFpbi5jaHJvbWFfc2NhbGluZ19mcm9tX2x1bWEgPSBmaWxtX2dy YWluLT5jaHJvbWFfc2NhbGluZ19mcm9tX2x1bWE7CisgICAgICAgIHBwLT5maWxtX2dyYWluLmFy X2NvZWZmX2xhZyAgICAgICAgICAgICA9IGZpbG1fZ3JhaW4tPmFyX2NvZWZmX2xhZzsKKyAgICAg ICAgcHAtPmZpbG1fZ3JhaW4uYXJfY29lZmZfc2hpZnRfbWludXM2ICAgID0gZmlsbV9ncmFpbi0+ YXJfY29lZmZfc2hpZnRfbWludXNfNjsKKyAgICAgICAgcHAtPmZpbG1fZ3JhaW4uZ3JhaW5fc2Nh bGVfc2hpZnQgICAgICAgID0gZmlsbV9ncmFpbi0+Z3JhaW5fc2NhbGVfc2hpZnQ7CisgICAgICAg IHBwLT5maWxtX2dyYWluLm92ZXJsYXBfZmxhZyAgICAgICAgICAgICA9IGZpbG1fZ3JhaW4tPm92 ZXJsYXBfZmxhZzsKKyAgICAgICAgcHAtPmZpbG1fZ3JhaW4uY2xpcF90b19yZXN0cmljdGVkX3Jh bmdlID0gZmlsbV9ncmFpbi0+Y2xpcF90b19yZXN0cmljdGVkX3JhbmdlOworICAgICAgICBwcC0+ ZmlsbV9ncmFpbi5tYXRyaXhfY29lZmZfaXNfaWRlbnRpdHkgPSAoc2VxLT5jb2xvcl9jb25maWcu bWF0cml4X2NvZWZmaWNpZW50cyA9PSBBVkNPTF9TUENfUkdCKTsKKworICAgICAgICBwcC0+Zmls bV9ncmFpbi5ncmFpbl9zZWVkICAgICAgICAgICAgICAgPSBmaWxtX2dyYWluLT5ncmFpbl9zZWVk OworICAgICAgICBwcC0+ZmlsbV9ncmFpbi5udW1feV9wb2ludHMgICAgICAgICAgICAgPSBmaWxt X2dyYWluLT5udW1feV9wb2ludHM7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmaWxtX2dyYWlu LT5udW1feV9wb2ludHM7IGkrKykgeworICAgICAgICAgICAgcHAtPmZpbG1fZ3JhaW4uc2NhbGlu Z19wb2ludHNfeVtpXVswXSA9IGZpbG1fZ3JhaW4tPnBvaW50X3lfdmFsdWVbaV07CisgICAgICAg ICAgICBwcC0+ZmlsbV9ncmFpbi5zY2FsaW5nX3BvaW50c195W2ldWzFdID0gZmlsbV9ncmFpbi0+ cG9pbnRfeV9zY2FsaW5nW2ldOworICAgICAgICB9CisgICAgICAgIHBwLT5maWxtX2dyYWluLm51 bV9jYl9wb2ludHMgICAgICAgICAgICA9IGZpbG1fZ3JhaW4tPm51bV9jYl9wb2ludHM7CisgICAg ICAgIGZvciAoaSA9IDA7IGkgPCBmaWxtX2dyYWluLT5udW1fY2JfcG9pbnRzOyBpKyspIHsKKyAg ICAgICAgICAgIHBwLT5maWxtX2dyYWluLnNjYWxpbmdfcG9pbnRzX2NiW2ldWzBdID0gZmlsbV9n cmFpbi0+cG9pbnRfY2JfdmFsdWVbaV07CisgICAgICAgICAgICBwcC0+ZmlsbV9ncmFpbi5zY2Fs aW5nX3BvaW50c19jYltpXVsxXSA9IGZpbG1fZ3JhaW4tPnBvaW50X2NiX3NjYWxpbmdbaV07Cisg ICAgICAgIH0KKyAgICAgICAgcHAtPmZpbG1fZ3JhaW4ubnVtX2NyX3BvaW50cyAgICAgICAgICAg ID0gZmlsbV9ncmFpbi0+bnVtX2NyX3BvaW50czsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGZp bG1fZ3JhaW4tPm51bV9jcl9wb2ludHM7IGkrKykgeworICAgICAgICAgICAgcHAtPmZpbG1fZ3Jh aW4uc2NhbGluZ19wb2ludHNfY3JbaV1bMF0gPSBmaWxtX2dyYWluLT5wb2ludF9jcl92YWx1ZVtp XTsKKyAgICAgICAgICAgIHBwLT5maWxtX2dyYWluLnNjYWxpbmdfcG9pbnRzX2NyW2ldWzFdID0g ZmlsbV9ncmFpbi0+cG9pbnRfY3Jfc2NhbGluZ1tpXTsKKyAgICAgICAgfQorICAgICAgICBmb3Ig KGkgPSAwOyBpIDwgMjQ7IGkrKykgeworICAgICAgICAgICAgcHAtPmZpbG1fZ3JhaW4uYXJfY29l ZmZzX3lbaV0gPSBmaWxtX2dyYWluLT5hcl9jb2VmZnNfeV9wbHVzXzEyOFtpXTsKKyAgICAgICAg fQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMjU7IGkrKykgeworICAgICAgICAgICAgcHAtPmZp bG1fZ3JhaW4uYXJfY29lZmZzX2NiW2ldID0gZmlsbV9ncmFpbi0+YXJfY29lZmZzX2NiX3BsdXNf MTI4W2ldOworICAgICAgICAgICAgcHAtPmZpbG1fZ3JhaW4uYXJfY29lZmZzX2NyW2ldID0gZmls bV9ncmFpbi0+YXJfY29lZmZzX2NyX3BsdXNfMTI4W2ldOworICAgICAgICB9CisgICAgICAgIHBw LT5maWxtX2dyYWluLmNiX211bHQgICAgICA9IGZpbG1fZ3JhaW4tPmNiX211bHQ7CisgICAgICAg IHBwLT5maWxtX2dyYWluLmNiX2x1bWFfbXVsdCA9IGZpbG1fZ3JhaW4tPmNiX2x1bWFfbXVsdDsK KyAgICAgICAgcHAtPmZpbG1fZ3JhaW4uY3JfbXVsdCAgICAgID0gZmlsbV9ncmFpbi0+Y3JfbXVs dDsKKyAgICAgICAgcHAtPmZpbG1fZ3JhaW4uY3JfbHVtYV9tdWx0ID0gZmlsbV9ncmFpbi0+Y3Jf bHVtYV9tdWx0OworICAgICAgICBwcC0+ZmlsbV9ncmFpbi5jYl9vZmZzZXQgICAgPSBmaWxtX2dy YWluLT5jYl9vZmZzZXQ7CisgICAgICAgIHBwLT5maWxtX2dyYWluLmNyX29mZnNldCAgICA9IGZp bG1fZ3JhaW4tPmNyX29mZnNldDsKKyAgICAgICAgcHAtPmZpbG1fZ3JhaW4uY3Jfb2Zmc2V0ICAg ID0gZmlsbV9ncmFpbi0+Y3Jfb2Zmc2V0OworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitz dGF0aWMgaW50IGQzZDEyZGVjX2F2MV9zdGFydF9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgs IGF2X3VudXNlZCBjb25zdCB1aW50OF90ICpidWZmZXIsICBhdl91bnVzZWQgdWludDMyX3Qgc2l6 ZSkKK3sKKyAgICBjb25zdCBBVjFEZWNDb250ZXh0ICAgICAgICpoICAgICAgID0gYXZjdHgtPnBy aXZfZGF0YTsKKyAgICBEM0QxMkRlY29kZVBpY3R1cmVDb250ZXh0ICpjdHhfcGljID0gaC0+Y3Vy X2ZyYW1lLmh3YWNjZWxfcGljdHVyZV9wcml2YXRlOworCisgICAgaWYgKCFEM0QxMlZBX0RFQ09E RV9DT05URVhUKGF2Y3R4KSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgYXZfYXNzZXJ0MChj dHhfcGljKTsKKworICAgIGlmIChmaWxsX3BpY3R1cmVfcGFyYW1ldGVycyhhdmN0eCwgaCwgJmN0 eF9waWMtPnBwKSA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGN0eF9waWMtPmJpdHN0 cmVhbSAgICAgID0gTlVMTDsKKyAgICBjdHhfcGljLT5iaXRzdHJlYW1fc2l6ZSA9IDA7CisgICAg Y3R4X3BpYy0+dGlsZV9jb3VudCAgICAgPSAwOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQgZDNkMTJkZWNfYXYxX2RlY29kZV9zbGljZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZmZlciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2l6ZSkKK3sKKyAg ICBjb25zdCBBVjFEZWNDb250ZXh0ICAgICAgICpoICAgICAgICAgICAgPSBhdmN0eC0+cHJpdl9k YXRhOworICAgIGNvbnN0IEFWMVJhd0ZyYW1lSGVhZGVyICAgKmZyYW1lX2hlYWRlciA9IGgtPnJh d19mcmFtZV9oZWFkZXI7CisgICAgRDNEMTJEZWNvZGVQaWN0dXJlQ29udGV4dCAqY3R4X3BpYyAg ICAgID0gaC0+Y3VyX2ZyYW1lLmh3YWNjZWxfcGljdHVyZV9wcml2YXRlOworCisgICAgY3R4X3Bp Yy0+dGlsZV9jb3VudCA9IGZyYW1lX2hlYWRlci0+dGlsZV9jb2xzICogZnJhbWVfaGVhZGVyLT50 aWxlX3Jvd3M7CisKKyAgICBpZiAoY3R4X3BpYy0+dGlsZV9jb3VudCA+IE1BWF9USUxFUykKKyAg ICAgICAgcmV0dXJuIEFWRVJST1IoRU5PU1lTKTsKKworICAgIGlmIChjdHhfcGljLT50aWxlX2Nv dW50ID09IGgtPnRnX2VuZCAtIGgtPnRnX3N0YXJ0ICsgMSkgeworICAgICAgICBjdHhfcGljLT5i aXRzdHJlYW0gPSAodWludDhfdCAqKWJ1ZmZlcjsKKyAgICAgICAgY3R4X3BpYy0+Yml0c3RyZWFt X3NpemUgPSBzaXplOworCisgICAgICAgIGZvciAodWludDMyX3QgdGlsZV9udW0gPSAwOyB0aWxl X251bSA8IGN0eF9waWMtPnRpbGVfY291bnQ7IHRpbGVfbnVtKyspIHsKKyAgICAgICAgICAgIGN0 eF9waWMtPnRpbGVzW3RpbGVfbnVtXS5EYXRhT2Zmc2V0ICAgPSBoLT50aWxlX2dyb3VwX2luZm9b dGlsZV9udW1dLnRpbGVfb2Zmc2V0OworICAgICAgICAgICAgY3R4X3BpYy0+dGlsZXNbdGlsZV9u dW1dLkRhdGFTaXplICAgICA9IGgtPnRpbGVfZ3JvdXBfaW5mb1t0aWxlX251bV0udGlsZV9zaXpl OworICAgICAgICAgICAgY3R4X3BpYy0+dGlsZXNbdGlsZV9udW1dLnJvdyAgICAgICAgICA9IGgt PnRpbGVfZ3JvdXBfaW5mb1t0aWxlX251bV0udGlsZV9yb3c7CisgICAgICAgICAgICBjdHhfcGlj LT50aWxlc1t0aWxlX251bV0uY29sdW1uICAgICAgID0gaC0+dGlsZV9ncm91cF9pbmZvW3RpbGVf bnVtXS50aWxlX2NvbHVtbjsKKyAgICAgICAgICAgIGN0eF9waWMtPnRpbGVzW3RpbGVfbnVtXS5h bmNob3JfZnJhbWUgPSAweEZGOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAg fQorCisgICAgY3R4X3BpYy0+Yml0c3RyZWFtID0gRDNEMTJfQVYxX0RFQ09ERV9DT05URVhUKGF2 Y3R4KS0+Yml0c3RyZWFtX2J1ZmZlcjsKKyAgICBtZW1jcHkoY3R4X3BpYy0+Yml0c3RyZWFtICsg Y3R4X3BpYy0+Yml0c3RyZWFtX3NpemUsIGJ1ZmZlciwgc2l6ZSk7CisKKyAgICBmb3IgKHVpbnQz Ml90IHRpbGVfbnVtID0gaC0+dGdfc3RhcnQ7IHRpbGVfbnVtIDw9IGgtPnRnX2VuZDsgdGlsZV9u dW0rKykgeworICAgICAgICBjdHhfcGljLT50aWxlc1t0aWxlX251bV0uRGF0YU9mZnNldCAgID0g Y3R4X3BpYy0+Yml0c3RyZWFtX3NpemUgKyBoLT50aWxlX2dyb3VwX2luZm9bdGlsZV9udW1dLnRp bGVfb2Zmc2V0OworICAgICAgICBjdHhfcGljLT50aWxlc1t0aWxlX251bV0uRGF0YVNpemUgICAg ID0gaC0+dGlsZV9ncm91cF9pbmZvW3RpbGVfbnVtXS50aWxlX3NpemU7CisgICAgICAgIGN0eF9w aWMtPnRpbGVzW3RpbGVfbnVtXS5yb3cgICAgICAgICAgPSBoLT50aWxlX2dyb3VwX2luZm9bdGls ZV9udW1dLnRpbGVfcm93OworICAgICAgICBjdHhfcGljLT50aWxlc1t0aWxlX251bV0uY29sdW1u ICAgICAgID0gaC0+dGlsZV9ncm91cF9pbmZvW3RpbGVfbnVtXS50aWxlX2NvbHVtbjsKKyAgICAg ICAgY3R4X3BpYy0+dGlsZXNbdGlsZV9udW1dLmFuY2hvcl9mcmFtZSA9IDB4RkY7CisgICAgfQor CisgICAgY3R4X3BpYy0+Yml0c3RyZWFtX3NpemUgKz0gc2l6ZTsKKworICAgIHJldHVybiAwOwor fQorCitzdGF0aWMgaW50IHVwZGF0ZV9pbnB1dF9hcmd1bWVudHMoQVZDb2RlY0NvbnRleHQgKmF2 Y3R4LCBEM0QxMl9WSURFT19ERUNPREVfSU5QVVRfU1RSRUFNX0FSR1VNRU5UUyAqaW5wdXRfYXJn cywgSUQzRDEyUmVzb3VyY2UgKmJ1ZmZlcikKK3sKKyAgICBEM0QxMlZBRGVjb2RlQ29udGV4dCAg ICAgICpjdHggICAgICAgICAgPSBEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2Y3R4KTsKKyAgICBB VkhXRnJhbWVzQ29udGV4dCAgICAgICAgICpmcmFtZXNfY3R4ICAgPSBEM0QxMlZBX0ZSQU1FU19D T05URVhUKGF2Y3R4KTsKKyAgICBBVkQzRDEyVkFGcmFtZXNDb250ZXh0ICAgICpmcmFtZXNfaHdj dHggPSBmcmFtZXNfY3R4LT5od2N0eDsKKyAgICBjb25zdCBBVjFEZWNDb250ZXh0ICAgICAgICpo ICAgICAgICAgICAgPSBhdmN0eC0+cHJpdl9kYXRhOworICAgIEQzRDEyRGVjb2RlUGljdHVyZUNv bnRleHQgKmN0eF9waWMgICAgICA9IGgtPmN1cl9mcmFtZS5od2FjY2VsX3BpY3R1cmVfcHJpdmF0 ZTsKKworICAgIGludCBpLCBpbmRleDsKKyAgICB1aW50OF90ICptYXBwZWRfZGF0YTsKKyAgICBE M0QxMl9WSURFT19ERUNPREVfRlJBTUVfQVJHVU1FTlQgKmFyZ3M7CisKKyAgICBpZiAoRkFJTEVE KElEM0QxMlJlc291cmNlX01hcChidWZmZXIsIDAsIE5VTEwsICZtYXBwZWRfZGF0YSkpKSB7Cisg ICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIG1hcCBEM0QxMiBC dWZmZXIgcmVzb3VyY2UhXG4iKTsKKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyAg ICB9CisKKyAgICBtZW1jcHkobWFwcGVkX2RhdGEsIGN0eF9waWMtPmJpdHN0cmVhbSwgY3R4X3Bp Yy0+Yml0c3RyZWFtX3NpemUpOworCisgICAgSUQzRDEyUmVzb3VyY2VfVW5tYXAoYnVmZmVyLCAw LCBOVUxMKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBjdHhfcGljLT50aWxlX2NvdW50OyBpKysp IHsKKyAgICAgICAgYXJncyA9ICZpbnB1dF9hcmdzLT5GcmFtZUFyZ3VtZW50c1tpbnB1dF9hcmdz LT5OdW1GcmFtZUFyZ3VtZW50cysrXTsKKyAgICAgICAgYXJncy0+VHlwZSAgPSBEM0QxMl9WSURF T19ERUNPREVfQVJHVU1FTlRfVFlQRV9TTElDRV9DT05UUk9MOworICAgICAgICBhcmdzLT5TaXpl ICA9IHNpemVvZihEWFZBX1RpbGVfQVYxKTsKKyAgICAgICAgYXJncy0+cERhdGEgPSAmY3R4X3Bp Yy0+dGlsZXNbaV07CisgICAgfQorCisgICAgaW5wdXRfYXJncy0+Q29tcHJlc3NlZEJpdHN0cmVh bSA9IChEM0QxMl9WSURFT19ERUNPREVfQ09NUFJFU1NFRF9CSVRTVFJFQU0peworICAgICAgICAu cEJ1ZmZlciA9IGJ1ZmZlciwKKyAgICAgICAgLk9mZnNldCAgPSAwLAorICAgICAgICAuU2l6ZSAg ICA9IGN0eF9waWMtPmJpdHN0cmVhbV9zaXplLAorICAgIH07CisKKyAgICBpbmRleCA9IGN0eF9w aWMtPnBwLkN1cnJQaWNUZXh0dXJlSW5kZXg7CisgICAgY3R4LT5yZWZfcmVzb3VyY2VzW2luZGV4 XSA9IGZyYW1lc19od2N0eC0+dGV4dHVyZV9pbmZvc1tpbmRleF0udGV4dHVyZTsKKworICAgIGZv ciAoaSA9IDA7IGkgPCBGRl9BUlJBWV9FTEVNUyhjdHhfcGljLT5wcC5SZWZGcmFtZU1hcFRleHR1 cmVJbmRleCk7IGkrKykgeworICAgICAgICBpbmRleCA9IGN0eF9waWMtPnBwLlJlZkZyYW1lTWFw VGV4dHVyZUluZGV4W2ldOworICAgICAgICBpZiAoaW5kZXggIT0gMHhGRikgeworICAgICAgICAg ICAgY3R4LT5yZWZfcmVzb3VyY2VzW2luZGV4XSA9IGZyYW1lc19od2N0eC0+dGV4dHVyZV9pbmZv c1tpbmRleF0udGV4dHVyZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQor CitzdGF0aWMgaW50IGQzZDEyZGVjX2F2MV9lbmRfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4 KQoreworICAgIGludCByZXQ7CisgICAgY29uc3QgQVYxRGVjQ29udGV4dCAgICAgICAqaCAgICAg ICA9IGF2Y3R4LT5wcml2X2RhdGE7CisgICAgRDNEMTJWQURlY29kZUNvbnRleHQgICAgICAqY3R4 ICAgICA9IEQzRDEyVkFfREVDT0RFX0NPTlRFWFQoYXZjdHgpOworICAgIEQzRDEyRGVjb2RlUGlj dHVyZUNvbnRleHQgKmN0eF9waWMgPSBoLT5jdXJfZnJhbWUuaHdhY2NlbF9waWN0dXJlX3ByaXZh dGU7CisKKyAgICBpZiAoY3R4X3BpYy0+dGlsZXMgPD0gMCB8fCBjdHhfcGljLT5iaXRzdHJlYW1f c2l6ZSA8PSAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXQgPSBmZl9kM2QxMmRlY19j b21tb25fZW5kX2ZyYW1lKGF2Y3R4LCBoLT5jdXJfZnJhbWUuZiwgJmN0eF9waWMtPnBwLCBzaXpl b2YoY3R4X3BpYy0+cHApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO VUxMLCAwLCB1cGRhdGVfaW5wdXRfYXJndW1lbnRzKTsKKworICAgIHJldHVybiByZXQ7Cit9CisK K3N0YXRpYyBpbnQgZDNkMTJkZWNfYXYxX2RlY29kZV9pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0 eCkKK3sKKyAgICBjb25zdCBBVjFEZWNDb250ZXh0ICAgICAgICpoICAgICAgID0gYXZjdHgtPnBy aXZfZGF0YTsKKyAgICBEM0QxMlZBRGVjb2RlQ29udGV4dCAgICAgICpjdHggICAgID0gRDNEMTJW QV9ERUNPREVfQ09OVEVYVChhdmN0eCk7CisgICAgRDNEMTJBVjFEZWNvZGVDb250ZXh0ICAgICAq YXYxX2N0eCA9IEQzRDEyX0FWMV9ERUNPREVfQ09OVEVYVChhdmN0eCk7CisgICAgRDNEMTJEZWNv ZGVQaWN0dXJlQ29udGV4dCAqY3R4X3BpYyA9IGgtPmN1cl9mcmFtZS5od2FjY2VsX3BpY3R1cmVf cHJpdmF0ZTsKKworICAgIGlmIChhdmN0eC0+cHJvZmlsZSAhPSBGRl9QUk9GSUxFX0FWMV9NQUlO KQorICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworCisgICAgY3R4LT5jZmcuRGVjb2Rl UHJvZmlsZSA9IEQzRDEyX1ZJREVPX0RFQ09ERV9QUk9GSUxFX0FWMV9QUk9GSUxFMDsKKworICAg IGlmICghYXYxX2N0eC0+Yml0c3RyZWFtX2J1ZmZlcikgeworICAgICAgICBhdjFfY3R4LT5iaXRz dHJlYW1fYnVmZmVyID0gYXZfbWFsbG9jKGZmX2QzZDEyZGVjX2dldF9zdWl0YWJsZV9tYXhfYml0 c3RyZWFtX3NpemUoYXZjdHgpKTsKKyAgICAgICAgaWYgKCFhdjFfY3R4LT5iaXRzdHJlYW1fYnVm ZmVyKQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKyAgICB9CisKKyAgICBy ZXR1cm4gZmZfZDNkMTJkZWNfZGVjb2RlX2luaXQoYXZjdHgpOworfQorCitzdGF0aWMgaW50IGQz ZDEyZGVjX2F2MV9kZWNvZGVfdW5pbml0KEFWQ29kZWNDb250ZXh0ICphdmN0eCkKK3sKKyAgICBj b25zdCBBVjFEZWNDb250ZXh0ICAgICAgICpoICAgICAgID0gYXZjdHgtPnByaXZfZGF0YTsKKyAg ICBEM0QxMkFWMURlY29kZUNvbnRleHQgICAgICpjdHggICAgID0gRDNEMTJfQVYxX0RFQ09ERV9D T05URVhUKGF2Y3R4KTsKKyAgICBEM0QxMkRlY29kZVBpY3R1cmVDb250ZXh0ICpjdHhfcGljID0g aC0+Y3VyX2ZyYW1lLmh3YWNjZWxfcGljdHVyZV9wcml2YXRlOworCisgICAgaWYgKGN0eC0+Yml0 c3RyZWFtX2J1ZmZlcikKKyAgICAgICAgYXZfZnJlZXAoJmN0eC0+Yml0c3RyZWFtX2J1ZmZlcik7 CisKKyAgICByZXR1cm4gZmZfZDNkMTJkZWNfZGVjb2RlX3VuaW5pdChhdmN0eCk7Cit9CisKKyNp ZiBDT05GSUdfQVYxX0QzRDEyREVDX0hXQUNDRUwKK2NvbnN0IEFWSFdBY2NlbCBmZl9hdjFfZDNk MTJkZWNfaHdhY2NlbCA9IHsKKyAgICAubmFtZSAgICAgICAgICAgICAgICAgPSAiYXYxX2QzZDEy ZGVjIiwKKyAgICAudHlwZSAgICAgICAgICAgICAgICAgPSBBVk1FRElBX1RZUEVfVklERU8sCisg ICAgLmlkICAgICAgICAgICAgICAgICAgID0gQVZfQ09ERUNfSURfQVYxLAorICAgIC5waXhfZm10 ICAgICAgICAgICAgICA9IEFWX1BJWF9GTVRfRDNEMTIsCisgICAgLmluaXQgICAgICAgICAgICAg ICAgID0gZDNkMTJkZWNfYXYxX2RlY29kZV9pbml0LAorICAgIC51bmluaXQgICAgICAgICAgICAg ICA9IGQzZDEyZGVjX2F2MV9kZWNvZGVfdW5pbml0LAorICAgIC5zdGFydF9mcmFtZSAgICAgICAg ICA9IGQzZDEyZGVjX2F2MV9zdGFydF9mcmFtZSwKKyAgICAuZGVjb2RlX3NsaWNlICAgICAgICAg PSBkM2QxMmRlY19hdjFfZGVjb2RlX3NsaWNlLAorICAgIC5lbmRfZnJhbWUgICAgICAgICAgICA9 IGQzZDEyZGVjX2F2MV9lbmRfZnJhbWUsCisgICAgLmZyYW1lX3BhcmFtcyAgICAgICAgID0gZmZf ZDNkMTJkZWNfY29tbW9uX2ZyYW1lX3BhcmFtcywKKyAgICAuZnJhbWVfcHJpdl9kYXRhX3NpemUg PSBzaXplb2YoRDNEMTJEZWNvZGVQaWN0dXJlQ29udGV4dCksCisgICAgLnByaXZfZGF0YV9zaXpl ICAgICAgID0gc2l6ZW9mKEQzRDEyQVYxRGVjb2RlQ29udGV4dCksCit9OworI2VuZGlmCmRpZmYg LS1naXQgYS9saWJhdmNvZGVjL2QzZDEyZGVjX2gyNjQuYyBiL2xpYmF2Y29kZWMvZDNkMTJkZWNf aDI2NC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjc3ZGNjZDM3MmMK LS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNvZGVjL2QzZDEyZGVjX2gyNjQuYwpAQCAtMCwwICsx LDMzNyBAQAorLyoKKyAqIERpcmVjdDNEIDEyIGgyNjQgSFcgYWNjZWxlcmF0aW9uCisgKgorICog Y29weXJpZ2h0IChjKSAyMDIyIFd1IEppYW5odWEgPHRvcXN4d0BvdXRsb29rLmNvbT4KKyAqCisg KiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2 ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBM aWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3 YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y LCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2luY2x1ZGUgImNvbmZpZ19jb21w b25lbnRzLmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCisjaW5jbHVkZSAiaDI2 NGRlYy5oIgorI2luY2x1ZGUgImgyNjRkYXRhLmgiCisjaW5jbHVkZSAiaDI2NF9wcy5oIgorI2lu Y2x1ZGUgIm1wZWd1dGlscy5oIgorI2luY2x1ZGUgImQzZDEyZGVjLmgiCisjaW5jbHVkZSA8ZHh2 YS5oPgorCit0eXBlZGVmIHN0cnVjdCBEM0QxMkRlY29kZVBpY3R1cmVDb250ZXh0IHsKKyAgICBE WFZBX1BpY1BhcmFtc19IMjY0ICAgcHA7CisgICAgRFhWQV9RbWF0cml4X0gyNjQgICAgIHFtOwor ICAgIHVuc2lnbmVkICAgICAgICAgICAgICBzbGljZV9jb3VudDsKKyAgICBEWFZBX1NsaWNlX0gy NjRfU2hvcnQgc2xpY2Vfc2hvcnRbRDNEMTJERUNfTUFYX1NMSUNFU107CisgICAgY29uc3QgdWlu dDhfdCAgICAgICAgICpiaXRzdHJlYW07CisgICAgdW5zaWduZWQgICAgICAgICAgICAgIGJpdHN0 cmVhbV9zaXplOworfSBEM0QxMkRlY29kZVBpY3R1cmVDb250ZXh0OworCitzdGF0aWMgdm9pZCBm aWxsX3BpY3R1cmVfZW50cnkoRFhWQV9QaWNFbnRyeV9IMjY0ICpwaWMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGZsYWcpCit7CisgICAg YXNzZXJ0KChpbmRleCAmIDB4N2YpID09IGluZGV4ICYmIChmbGFnICYgMHgwMSkgPT0gZmxhZyk7 CisgICAgcGljLT5iUGljRW50cnkgPSBpbmRleCB8IChmbGFnIDw8IDcpOworfQorCitzdGF0aWMg dm9pZCBmaWxsX3BpY3R1cmVfcGFyYW1ldGVycyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsIGNvbnN0 IEgyNjRDb250ZXh0ICpoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFhW QV9QaWNQYXJhbXNfSDI2NCAqcHApCit7CisgICAgRDNEMTJWQURlY29kZUNvbnRleHQgKmN0eCA9 IEQzRDEyVkFfREVDT0RFX0NPTlRFWFQoYXZjdHgpOworICAgIGNvbnN0IEgyNjRQaWN0dXJlICpj dXJyZW50X3BpY3R1cmUgPSBoLT5jdXJfcGljX3B0cjsKKyAgICBjb25zdCBTUFMgKnNwcyA9IGgt PnBzLnNwczsKKyAgICBjb25zdCBQUFMgKnBwcyA9IGgtPnBzLnBwczsKKyAgICBpbnQgaSwgajsK KworICAgIG1lbXNldChwcCwgMCwgc2l6ZW9mKCpwcCkpOworICAgIC8qIENvbmZpZ3VyZSBjdXJy ZW50IHBpY3R1cmUgKi8KKyAgICBmaWxsX3BpY3R1cmVfZW50cnkoJnBwLT5DdXJyUGljLAorICAg ICAgICAgICAgICAgICAgICAgICBmZl9kM2QxMmRlY19nZXRfc3VyZmFjZV9pbmRleChhdmN0eCwg Y3VycmVudF9waWN0dXJlLT5mKSwKKyAgICAgICAgICAgICAgICAgICAgICAgaC0+cGljdHVyZV9z dHJ1Y3R1cmUgPT0gUElDVF9CT1RUT01fRklFTEQpOworICAgIC8qIENvbmZpZ3VyZSB0aGUgc2V0 IG9mIHJlZmVyZW5jZXMgKi8KKyAgICBwcC0+VXNlZEZvclJlZmVyZW5jZUZsYWdzICA9IDA7Cisg ICAgcHAtPk5vbkV4aXN0aW5nRnJhbWVGbGFncyAgPSAwOworICAgIGZvciAoaSA9IDAsIGogPSAw OyBpIDwgRkZfQVJSQVlfRUxFTVMocHAtPlJlZkZyYW1lTGlzdCk7IGkrKykgeworICAgICAgICBj b25zdCBIMjY0UGljdHVyZSAqcjsKKyAgICAgICAgaWYgKGogPCBoLT5zaG9ydF9yZWZfY291bnQp IHsKKyAgICAgICAgICAgIHIgPSBoLT5zaG9ydF9yZWZbaisrXTsKKyAgICAgICAgfSBlbHNlIHsK KyAgICAgICAgICAgIHIgPSBOVUxMOworICAgICAgICAgICAgd2hpbGUgKCFyICYmIGogPCBoLT5z aG9ydF9yZWZfY291bnQgKyAxNikKKyAgICAgICAgICAgICAgICByID0gaC0+bG9uZ19yZWZbaisr IC0gaC0+c2hvcnRfcmVmX2NvdW50XTsKKyAgICAgICAgfQorICAgICAgICBpZiAocikgeworICAg ICAgICAgICAgZmlsbF9waWN0dXJlX2VudHJ5KCZwcC0+UmVmRnJhbWVMaXN0W2ldLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZmX2QzZDEyZGVjX2dldF9zdXJmYWNlX2luZGV4KGF2 Y3R4LCByLT5mKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLT5sb25nX3JlZiAh PSAwKTsKKworICAgICAgICAgICAgaWYgKChyLT5yZWZlcmVuY2UgJiBQSUNUX1RPUF9GSUVMRCkg JiYgci0+ZmllbGRfcG9jWzBdICE9IElOVF9NQVgpCisgICAgICAgICAgICAgICAgcHAtPkZpZWxk T3JkZXJDbnRMaXN0W2ldWzBdID0gci0+ZmllbGRfcG9jWzBdOworICAgICAgICAgICAgaWYgKChy LT5yZWZlcmVuY2UgJiBQSUNUX0JPVFRPTV9GSUVMRCkgJiYgci0+ZmllbGRfcG9jWzFdICE9IElO VF9NQVgpCisgICAgICAgICAgICAgICAgcHAtPkZpZWxkT3JkZXJDbnRMaXN0W2ldWzFdID0gci0+ ZmllbGRfcG9jWzFdOworCisgICAgICAgICAgICBwcC0+RnJhbWVOdW1MaXN0W2ldID0gci0+bG9u Z19yZWYgPyByLT5waWNfaWQgOiByLT5mcmFtZV9udW07CisgICAgICAgICAgICBpZiAoci0+cmVm ZXJlbmNlICYgUElDVF9UT1BfRklFTEQpCisgICAgICAgICAgICAgICAgcHAtPlVzZWRGb3JSZWZl cmVuY2VGbGFncyB8PSAxIDw8ICgyKmkgKyAwKTsKKyAgICAgICAgICAgIGlmIChyLT5yZWZlcmVu Y2UgJiBQSUNUX0JPVFRPTV9GSUVMRCkKKyAgICAgICAgICAgICAgICBwcC0+VXNlZEZvclJlZmVy ZW5jZUZsYWdzIHw9IDEgPDwgKDIqaSArIDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg ICAgcHAtPlJlZkZyYW1lTGlzdFtpXS5iUGljRW50cnkgPSAweGZmOworICAgICAgICAgICAgcHAt PkZpZWxkT3JkZXJDbnRMaXN0W2ldWzBdICAgPSAwOworICAgICAgICAgICAgcHAtPkZpZWxkT3Jk ZXJDbnRMaXN0W2ldWzFdICAgPSAwOworICAgICAgICAgICAgcHAtPkZyYW1lTnVtTGlzdFtpXSAg ICAgICAgICAgPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgcHAtPndGcmFtZVdpZHRoSW5N YnNNaW51czEgICAgICAgID0gaC0+bWJfd2lkdGggIC0gMTsKKyAgICBwcC0+d0ZyYW1lSGVpZ2h0 SW5NYnNNaW51czEgICAgICAgPSBoLT5tYl9oZWlnaHQgLSAxOworICAgIHBwLT5udW1fcmVmX2Zy YW1lcyAgICAgICAgICAgICAgICA9IHNwcy0+cmVmX2ZyYW1lX2NvdW50OworCisgICAgcHAtPndC aXRGaWVsZHMgICAgICAgICAgICAgICAgICAgID0gKChoLT5waWN0dXJlX3N0cnVjdHVyZSAhPSBQ SUNUX0ZSQU1FKSA8PCAgMCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICgoc3BzLT5tYl9hZmYgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoaC0+cGljdHVyZV9zdHJ1Y3R1cmUgPT0gUElDVF9GUkFNRSkpIDw8ICAxKSB8CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwcy0+cmVzaWR1YWxfY29sb3Jf dHJhbnNmb3JtX2ZsYWcgICA8PCAgMikgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIHNwX2Zvcl9zd2l0Y2hfZmxhZyAobm90IGltcGxlbWVudGVkIGJ5IEZGbXBl ZykgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8ICAzKSB8CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHNwcy0+Y2hyb21hX2Zvcm1hdF9pZGMgICAgICAgICAgICAg ICA8PCAgNCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoaC0+ bmFsX3JlZl9pZGMgIT0gMCkgICAgICAgICAgICAgICAgPDwgIDYpIHwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocHBzLT5jb25zdHJhaW5lZF9pbnRyYV9wcmVkICAg ICAgICAgIDw8ICA3KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHBwcy0+d2VpZ2h0ZWRfcHJlZCAgICAgICAgICAgICAgICAgICA8PCAgOCkgfAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcHMtPndlaWdodGVkX2JpcHJlZF9pZGMg ICAgICAgICAgICAgPDwgIDkpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvKiBNYnNDb25zZWN1dGl2ZUZsYWcgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw8IDEx KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwcy0+ZnJhbWVf bWJzX29ubHlfZmxhZyAgICAgICAgICAgICA8PCAxMikgfAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChwcHMtPnRyYW5zZm9ybV84eDhfbW9kZSAgICAgICAgICAgICAg PDwgMTMpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHNwcy0+ bGV2ZWxfaWRjID49IDMxKSAgICAgICAgICAgICAgIDw8IDE0KSB8CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLyogSW50cmFQaWNGbGFnIChNb2RpZmllZCBpZiB3ZSBk ZXRlY3QgYSBub24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBp bnRyYSBzbGljZSBpbiBkeHZhMl9oMjY0X2RlY29kZV9zbGljZSkgKi8KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDw8IDE1KTsKKworICAgIHBwLT5iaXRfZGVwdGhfbHVtYV9taW51czggICAgICAgICA9 IHNwcy0+Yml0X2RlcHRoX2x1bWEgLSA4OworICAgIHBwLT5iaXRfZGVwdGhfY2hyb21hX21pbnVz OCAgICAgICA9IHNwcy0+Yml0X2RlcHRoX2Nocm9tYSAtIDg7CisgICAgcHAtPlJlc2VydmVkMTZC aXRzICAgICAgICAgICAgICAgID0gMDsKKyAgICBwcC0+U3RhdHVzUmVwb3J0RmVlZGJhY2tOdW1i ZXIgICAgPSBjdHgtPnJlcG9ydF9pZCsrOworICAgIHBwLT5DdXJyRmllbGRPcmRlckNudFswXSA9 IDA7CisgICAgaWYgKChoLT5waWN0dXJlX3N0cnVjdHVyZSAmIFBJQ1RfVE9QX0ZJRUxEKSAmJgor ICAgICAgICBjdXJyZW50X3BpY3R1cmUtPmZpZWxkX3BvY1swXSAhPSBJTlRfTUFYKQorICAgICAg ICBwcC0+Q3VyckZpZWxkT3JkZXJDbnRbMF0gPSBjdXJyZW50X3BpY3R1cmUtPmZpZWxkX3BvY1sw XTsKKyAgICBwcC0+Q3VyckZpZWxkT3JkZXJDbnRbMV0gPSAwOworICAgIGlmICgoaC0+cGljdHVy ZV9zdHJ1Y3R1cmUgJiBQSUNUX0JPVFRPTV9GSUVMRCkgJiYKKyAgICAgICAgY3VycmVudF9waWN0 dXJlLT5maWVsZF9wb2NbMV0gIT0gSU5UX01BWCkKKyAgICAgICAgcHAtPkN1cnJGaWVsZE9yZGVy Q250WzFdID0gY3VycmVudF9waWN0dXJlLT5maWVsZF9wb2NbMV07CisgICAgcHAtPnBpY19pbml0 X3FzX21pbnVzMjYgICAgICAgICAgID0gcHBzLT5pbml0X3FzIC0gMjY7CisgICAgcHAtPmNocm9t YV9xcF9pbmRleF9vZmZzZXQgICAgICAgID0gcHBzLT5jaHJvbWFfcXBfaW5kZXhfb2Zmc2V0WzBd OworICAgIHBwLT5zZWNvbmRfY2hyb21hX3FwX2luZGV4X29mZnNldCA9IHBwcy0+Y2hyb21hX3Fw X2luZGV4X29mZnNldFsxXTsKKyAgICBwcC0+Q29udGludWF0aW9uRmxhZyAgICAgICAgICAgICAg PSAxOworICAgIHBwLT5waWNfaW5pdF9xcF9taW51czI2ICAgICAgICAgICA9IHBwcy0+aW5pdF9x cCAtIDI2OworICAgIHBwLT5udW1fcmVmX2lkeF9sMF9hY3RpdmVfbWludXMxICA9IHBwcy0+cmVm X2NvdW50WzBdIC0gMTsKKyAgICBwcC0+bnVtX3JlZl9pZHhfbDFfYWN0aXZlX21pbnVzMSAgPSBw cHMtPnJlZl9jb3VudFsxXSAtIDE7CisgICAgcHAtPlJlc2VydmVkOEJpdHNBICAgICAgICAgICAg ICAgID0gMDsKKyAgICBwcC0+ZnJhbWVfbnVtICAgICAgICAgICAgICAgICAgICAgPSBoLT5wb2Mu ZnJhbWVfbnVtOworICAgIHBwLT5sb2cyX21heF9mcmFtZV9udW1fbWludXM0ICAgICA9IHNwcy0+ bG9nMl9tYXhfZnJhbWVfbnVtIC0gNDsKKyAgICBwcC0+cGljX29yZGVyX2NudF90eXBlICAgICAg ICAgICAgPSBzcHMtPnBvY190eXBlOworICAgIGlmIChzcHMtPnBvY190eXBlID09IDApCisgICAg ICAgIHBwLT5sb2cyX21heF9waWNfb3JkZXJfY250X2xzYl9taW51czQgPSBzcHMtPmxvZzJfbWF4 X3BvY19sc2IgLSA0OworICAgIGVsc2UgaWYgKHNwcy0+cG9jX3R5cGUgPT0gMSkKKyAgICAgICAg cHAtPmRlbHRhX3BpY19vcmRlcl9hbHdheXNfemVyb19mbGFnID0gc3BzLT5kZWx0YV9waWNfb3Jk ZXJfYWx3YXlzX3plcm9fZmxhZzsKKyAgICBwcC0+ZGlyZWN0Xzh4OF9pbmZlcmVuY2VfZmxhZyAg ICAgPSBzcHMtPmRpcmVjdF84eDhfaW5mZXJlbmNlX2ZsYWc7CisgICAgcHAtPmVudHJvcHlfY29k aW5nX21vZGVfZmxhZyAgICAgID0gcHBzLT5jYWJhYzsKKyAgICBwcC0+cGljX29yZGVyX3ByZXNl bnRfZmxhZyAgICAgICAgPSBwcHMtPnBpY19vcmRlcl9wcmVzZW50OworICAgIHBwLT5udW1fc2xp Y2VfZ3JvdXBzX21pbnVzMSAgICAgICA9IHBwcy0+c2xpY2VfZ3JvdXBfY291bnQgLSAxOworICAg IHBwLT5zbGljZV9ncm91cF9tYXBfdHlwZSAgICAgICAgICA9IHBwcy0+bWJfc2xpY2VfZ3JvdXBf bWFwX3R5cGU7CisgICAgcHAtPmRlYmxvY2tpbmdfZmlsdGVyX2NvbnRyb2xfcHJlc2VudF9mbGFn ID0gcHBzLT5kZWJsb2NraW5nX2ZpbHRlcl9wYXJhbWV0ZXJzX3ByZXNlbnQ7CisgICAgcHAtPnJl ZHVuZGFudF9waWNfY250X3ByZXNlbnRfZmxhZz0gcHBzLT5yZWR1bmRhbnRfcGljX2NudF9wcmVz ZW50OworICAgIHBwLT5SZXNlcnZlZDhCaXRzQiAgICAgICAgICAgICAgICA9IDA7CisgICAgcHAt PnNsaWNlX2dyb3VwX2NoYW5nZV9yYXRlX21pbnVzMT0gMDsKK30KKworc3RhdGljIHZvaWQgZmls bF9zY2FsaW5nX2xpc3RzKGNvbnN0IEFWQ29kZWNDb250ZXh0ICphdmN0eCwgY29uc3QgSDI2NENv bnRleHQgKmgsIERYVkFfUW1hdHJpeF9IMjY0ICpxbSkKK3sKKyAgICBjb25zdCBQUFMgKnBwcyA9 IGgtPnBzLnBwczsKKyAgICBtZW1zZXQocW0sIDAsIHNpemVvZigqcW0pKTsKKyAgICBpbnQgaSwg ajsKKyAgICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrKQorICAgICAgICBmb3IgKGogPSAwOyBqIDwg MTY7IGorKykKKyAgICAgICAgICAgIHFtLT5iU2NhbGluZ0xpc3RzNHg0W2ldW2pdID0gcHBzLT5z Y2FsaW5nX21hdHJpeDRbaV1bal07CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgNjQ7IGkrKykgewor ICAgICAgICBxbS0+YlNjYWxpbmdMaXN0czh4OFswXVtpXSA9IHBwcy0+c2NhbGluZ19tYXRyaXg4 WzBdW2ldOworICAgICAgICBxbS0+YlNjYWxpbmdMaXN0czh4OFsxXVtpXSA9IHBwcy0+c2NhbGlu Z19tYXRyaXg4WzNdW2ldOworICAgIH0KK30KKworc3RhdGljIHZvaWQgZmlsbF9zbGljZV9zaG9y dChEWFZBX1NsaWNlX0gyNjRfU2hvcnQgKnNsaWNlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgc2l6ZSkKK3sKKyAgICBtZW1zZXQoc2xp Y2UsIDAsIHNpemVvZigqc2xpY2UpKTsKKyAgICBzbGljZS0+QlNOQUx1bml0RGF0YUxvY2F0aW9u ID0gcG9zaXRpb247CisgICAgc2xpY2UtPlNsaWNlQnl0ZXNJbkJ1ZmZlciAgICA9IHNpemU7Cisg ICAgc2xpY2UtPndCYWRTbGljZUNob3BwaW5nICAgICA9IDA7Cit9CisKK3N0YXRpYyBpbnQgZDNk MTJkZWNfaDI2NF9zdGFydF9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYXZfdW51c2VkIGNvbnN0IHVpbnQ4X3QgKmJ1ZmZlciwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdl91bnVzZWQgdWludDMyX3Qgc2l6 ZSkKK3sKKyAgICBjb25zdCBIMjY0Q29udGV4dCAgICAgICAgICAgICAgICAqaCAgICAgICA9IGF2 Y3R4LT5wcml2X2RhdGE7CisgICAgRDNEMTJEZWNvZGVQaWN0dXJlQ29udGV4dCAqY3R4X3BpYyA9 IGgtPmN1cl9waWNfcHRyLT5od2FjY2VsX3BpY3R1cmVfcHJpdmF0ZTsKKworICAgIGlmICghRDNE MTJWQV9ERUNPREVfQ09OVEVYVChhdmN0eCkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGFz c2VydChjdHhfcGljKTsKKworICAgIGZpbGxfcGljdHVyZV9wYXJhbWV0ZXJzKGF2Y3R4LCBoLCAm Y3R4X3BpYy0+cHApOworCisgICAgZmlsbF9zY2FsaW5nX2xpc3RzKGF2Y3R4LCBoLCAmY3R4X3Bp Yy0+cW0pOworCisgICAgY3R4X3BpYy0+c2xpY2VfY291bnQgICAgPSAwOworICAgIGN0eF9waWMt PmJpdHN0cmVhbV9zaXplID0gMDsKKyAgICBjdHhfcGljLT5iaXRzdHJlYW0gICAgICA9IE5VTEw7 CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkM2QxMmRlY19oMjY0X2RlY29kZV9z bGljZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHVpbnQ4X3QgKmJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludDMyX3Qgc2l6ZSkKK3sKKyAgICB1bnNpZ25lZCBwb3NpdGlvbjsKKyAgICBj b25zdCBIMjY0Q29udGV4dCAqaCA9IGF2Y3R4LT5wcml2X2RhdGE7CisgICAgY29uc3QgSDI2NFNs aWNlQ29udGV4dCAqc2wgPSAmaC0+c2xpY2VfY3R4WzBdOworICAgIGNvbnN0IEgyNjRQaWN0dXJl ICpjdXJyZW50X3BpY3R1cmUgPSBoLT5jdXJfcGljX3B0cjsKKyAgICBEM0QxMkRlY29kZVBpY3R1 cmVDb250ZXh0ICpjdHhfcGljID0gY3VycmVudF9waWN0dXJlLT5od2FjY2VsX3BpY3R1cmVfcHJp dmF0ZTsKKworICAgIGlmIChjdHhfcGljLT5zbGljZV9jb3VudCA+PSBEM0QxMkRFQ19NQVhfU0xJ Q0VTKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoIWN0eF9waWMtPmJpdHN0cmVhbSkK KyAgICAgICAgY3R4X3BpYy0+Yml0c3RyZWFtID0gYnVmZmVyOworICAgIGN0eF9waWMtPmJpdHN0 cmVhbV9zaXplICs9IHNpemU7CisKKyAgICBwb3NpdGlvbiA9IGJ1ZmZlciAtIGN0eF9waWMtPmJp dHN0cmVhbTsKKyAgICBmaWxsX3NsaWNlX3Nob3J0KCZjdHhfcGljLT5zbGljZV9zaG9ydFtjdHhf cGljLT5zbGljZV9jb3VudF0sIHBvc2l0aW9uLCBzaXplKTsKKyAgICBjdHhfcGljLT5zbGljZV9j b3VudCsrOworCisgICAgaWYgKHNsLT5zbGljZV90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9JICYm IHNsLT5zbGljZV90eXBlICE9IEFWX1BJQ1RVUkVfVFlQRV9TSSkKKyAgICAgICAgY3R4X3BpYy0+ cHAud0JpdEZpZWxkcyAmPSB+KDEgPDwgMTUpOyAvKiBTZXQgSW50cmFQaWNGbGFnIHRvIDAgKi8K KworICAgIHJldHVybiAwOworfQorCisjZGVmaW5lIFNUQVJUX0NPREUgNjU1MzYKKyNkZWZpbmUg U1RBUlRfQ09ERV9TSVpFIDMKK3N0YXRpYyBpbnQgdXBkYXRlX2lucHV0X2FyZ3VtZW50cyhBVkNv ZGVjQ29udGV4dCAqYXZjdHgsIEQzRDEyX1ZJREVPX0RFQ09ERV9JTlBVVF9TVFJFQU1fQVJHVU1F TlRTICppbnB1dF9hcmdzLCBJRDNEMTJSZXNvdXJjZSAqYnVmZmVyKQoreworICAgIEQzRDEyVkFE ZWNvZGVDb250ZXh0ICAgICAqY3R4ICAgICAgICAgID0gRDNEMTJWQV9ERUNPREVfQ09OVEVYVChh dmN0eCk7CisgICAgQVZIV0ZyYW1lc0NvbnRleHQgICAgICAgICpmcmFtZXNfY3R4ICAgPSBEM0Qx MlZBX0ZSQU1FU19DT05URVhUKGF2Y3R4KTsKKyAgICBBVkQzRDEyVkFGcmFtZXNDb250ZXh0ICAg KmZyYW1lc19od2N0eCA9IGZyYW1lc19jdHgtPmh3Y3R4OworCisgICAgY29uc3QgSDI2NENvbnRl eHQgICAgICAgICAqaCAgICAgICAgICAgICAgID0gYXZjdHgtPnByaXZfZGF0YTsKKyAgICBjb25z dCBIMjY0UGljdHVyZSAgICAgICAgICpjdXJyZW50X3BpY3R1cmUgPSBoLT5jdXJfcGljX3B0cjsK KyAgICBEM0QxMkRlY29kZVBpY3R1cmVDb250ZXh0ICpjdHhfcGljICAgICAgICAgPSBjdXJyZW50 X3BpY3R1cmUtPmh3YWNjZWxfcGljdHVyZV9wcml2YXRlOworCisgICAgaW50IGksIGluZGV4Owor ICAgIHVpbnQ4X3QgKm1hcHBlZF9kYXRhLCAqbWFwcGVkX3B0cjsKKyAgICBEWFZBX1NsaWNlX0gy NjRfU2hvcnQgKnNsaWNlOworICAgIEQzRDEyX1ZJREVPX0RFQ09ERV9GUkFNRV9BUkdVTUVOVCAq YXJnczsKKworICAgIGlmIChGQUlMRUQoSUQzRDEyUmVzb3VyY2VfTWFwKGJ1ZmZlciwgMCwgTlVM TCwgJm1hcHBlZF9kYXRhKSkpIHsKKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1Is ICJGYWlsZWQgdG8gbWFwIEQzRDEyIEJ1ZmZlciByZXNvdXJjZSFcbiIpOworICAgICAgICByZXR1 cm4gQVZFUlJPUihFSU5WQUwpOworICAgIH0KKworICAgIG1hcHBlZF9wdHIgPSBtYXBwZWRfZGF0 YTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY3R4X3BpYy0+c2xpY2VfY291bnQ7IGkrKykgeworICAg ICAgICBhcmdzID0gJmlucHV0X2FyZ3MtPkZyYW1lQXJndW1lbnRzW2lucHV0X2FyZ3MtPk51bUZy YW1lQXJndW1lbnRzKytdOworICAgICAgICBhcmdzLT5UeXBlICA9IEQzRDEyX1ZJREVPX0RFQ09E RV9BUkdVTUVOVF9UWVBFX1NMSUNFX0NPTlRST0w7CisgICAgICAgIGFyZ3MtPlNpemUgID0gc2l6 ZW9mKERYVkFfU2xpY2VfSDI2NF9TaG9ydCk7CisgICAgICAgIGFyZ3MtPnBEYXRhID0gJmN0eF9w aWMtPnNsaWNlX3Nob3J0W2ldOworCisgICAgICAgIHNsaWNlID0gJmN0eF9waWMtPnNsaWNlX3No b3J0W2ldOworCisgICAgICAgICoodWludDMyX3QgKiltYXBwZWRfcHRyID0gU1RBUlRfQ09ERTsK KyAgICAgICAgbWFwcGVkX3B0ciArPSBTVEFSVF9DT0RFX1NJWkU7CisKKyAgICAgICAgbWVtY3B5 KG1hcHBlZF9wdHIsICZjdHhfcGljLT5iaXRzdHJlYW1bc2xpY2UtPkJTTkFMdW5pdERhdGFMb2Nh dGlvbl0sIHNsaWNlLT5TbGljZUJ5dGVzSW5CdWZmZXIpOworICAgICAgICBtYXBwZWRfcHRyICs9 IHNsaWNlLT5TbGljZUJ5dGVzSW5CdWZmZXI7CisgICAgfQorCisgICAgSUQzRDEyUmVzb3VyY2Vf VW5tYXAoYnVmZmVyLCAwLCBOVUxMKTsKKworICAgIGlucHV0X2FyZ3MtPkNvbXByZXNzZWRCaXRz dHJlYW0gPSAoRDNEMTJfVklERU9fREVDT0RFX0NPTVBSRVNTRURfQklUU1RSRUFNKXsKKyAgICAg ICAgLnBCdWZmZXIgPSBidWZmZXIsCisgICAgICAgIC5PZmZzZXQgID0gMCwKKyAgICAgICAgLlNp emUgICAgPSBtYXBwZWRfcHRyIC0gbWFwcGVkX2RhdGEsCisgICAgfTsKKworICAgIGluZGV4ID0g Y3R4X3BpYy0+cHAuQ3VyclBpYy5JbmRleDdCaXRzOworICAgIGN0eC0+cmVmX3Jlc291cmNlc1tp bmRleF0gPSBmcmFtZXNfaHdjdHgtPnRleHR1cmVfaW5mb3NbaW5kZXhdLnRleHR1cmU7CisKKyAg ICBmb3IgKGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMoY3R4X3BpYy0+cHAuUmVmRnJhbWVMaXN0 KTsgaSsrKSB7CisgICAgICAgIGluZGV4ID0gY3R4X3BpYy0+cHAuUmVmRnJhbWVMaXN0W2ldLklu ZGV4N0JpdHM7CisgICAgICAgIGlmIChpbmRleCAhPSAweDdmKSB7CisgICAgICAgICAgICBjdHgt PnJlZl9yZXNvdXJjZXNbaW5kZXhdID0gZnJhbWVzX2h3Y3R4LT50ZXh0dXJlX2luZm9zW2luZGV4 XS50ZXh0dXJlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQgZDNkMTJkZWNfaDI2NF9lbmRfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQorewor ICAgIEgyNjRDb250ZXh0ICAgICAgICAgICAgICAgKmggICAgICAgPSBhdmN0eC0+cHJpdl9kYXRh OworICAgIEQzRDEyRGVjb2RlUGljdHVyZUNvbnRleHQgKmN0eF9waWMgPSBoLT5jdXJfcGljX3B0 ci0+aHdhY2NlbF9waWN0dXJlX3ByaXZhdGU7CisgICAgSDI2NFNsaWNlQ29udGV4dCAgICAgICAg ICAqc2wgICAgICA9ICZoLT5zbGljZV9jdHhbMF07CisKKyAgICBpbnQgcmV0OworCisgICAgaWYg KGN0eF9waWMtPnNsaWNlX2NvdW50IDw9IDAgfHwgY3R4X3BpYy0+Yml0c3RyZWFtX3NpemUgPD0g MCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0ID0gZmZfZDNkMTJkZWNfY29tbW9uX2Vu ZF9mcmFtZShhdmN0eCwgaC0+Y3VyX3BpY19wdHItPmYsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZjdHhfcGljLT5wcCwgc2l6ZW9mKGN0eF9waWMtPnBwKSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmN0eF9waWMtPnFtLCBzaXplb2YoY3R4 X3BpYy0+cW0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVf aW5wdXRfYXJndW1lbnRzKTsKKyAgICBpZiAoIXJldCkKKyAgICAgICAgZmZfaDI2NF9kcmF3X2hv cml6X2JhbmQoaCwgc2wsIDAsIGgtPmF2Y3R4LT5oZWlnaHQpOworCisgICAgcmV0dXJuIHJldDsK K30KKworc3RhdGljIGludCBkM2QxMmRlY19oMjY0X2RlY29kZV9pbml0KEFWQ29kZWNDb250ZXh0 ICphdmN0eCkKK3sKKyAgICBEM0QxMlZBRGVjb2RlQ29udGV4dCAqY3R4ID0gRDNEMTJWQV9ERUNP REVfQ09OVEVYVChhdmN0eCk7CisKKyAgICBjdHgtPmNmZy5EZWNvZGVQcm9maWxlID0gRDNEMTJf VklERU9fREVDT0RFX1BST0ZJTEVfSDI2NDsKKworICAgIHJldHVybiBmZl9kM2QxMmRlY19kZWNv ZGVfaW5pdChhdmN0eCk7Cit9CisKKyNpZiBDT05GSUdfSDI2NF9EM0QxMkRFQ19IV0FDQ0VMCitj b25zdCBBVkhXQWNjZWwgZmZfaDI2NF9kM2QxMmRlY19od2FjY2VsID0geworICAgIC5uYW1lICAg ICAgICAgICAgICAgICA9ICJoMjY0X2QzZDEyZGVjIiwKKyAgICAudHlwZSAgICAgICAgICAgICAg ICAgPSBBVk1FRElBX1RZUEVfVklERU8sCisgICAgLmlkICAgICAgICAgICAgICAgICAgID0gQVZf Q09ERUNfSURfSDI2NCwKKyAgICAucGl4X2ZtdCAgICAgICAgICAgICAgPSBBVl9QSVhfRk1UX0Qz RDEyLAorICAgIC5pbml0ICAgICAgICAgICAgICAgICA9IGQzZDEyZGVjX2gyNjRfZGVjb2RlX2lu aXQsCisgICAgLnVuaW5pdCAgICAgICAgICAgICAgID0gZmZfZDNkMTJkZWNfZGVjb2RlX3VuaW5p dCwKKyAgICAuc3RhcnRfZnJhbWUgICAgICAgICAgPSBkM2QxMmRlY19oMjY0X3N0YXJ0X2ZyYW1l LAorICAgIC5kZWNvZGVfc2xpY2UgICAgICAgICA9IGQzZDEyZGVjX2gyNjRfZGVjb2RlX3NsaWNl LAorICAgIC5lbmRfZnJhbWUgICAgICAgICAgICA9IGQzZDEyZGVjX2gyNjRfZW5kX2ZyYW1lLAor ICAgIC5mcmFtZV9wYXJhbXMgICAgICAgICA9IGZmX2QzZDEyZGVjX2NvbW1vbl9mcmFtZV9wYXJh bXMsCisgICAgLmZyYW1lX3ByaXZfZGF0YV9zaXplID0gc2l6ZW9mKEQzRDEyRGVjb2RlUGljdHVy ZUNvbnRleHQpLAorICAgIC5wcml2X2RhdGFfc2l6ZSAgICAgICA9IHNpemVvZihEM0QxMlZBRGVj b2RlQ29udGV4dCksCit9OworI2VuZGlmCmRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2QzZDEyZGVj X2hldmMuYyBiL2xpYmF2Y29kZWMvZDNkMTJkZWNfaGV2Yy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAuLjhmYTVhNDY2ODUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJhdmNv ZGVjL2QzZDEyZGVjX2hldmMuYwpAQCAtMCwwICsxLDM5MSBAQAorLyoKKyAqIERpcmVjdDNEIDEy IEhFVkMgSFcgYWNjZWxlcmF0aW9uCisgKgorICogY29weXJpZ2h0IChjKSAyMDIyIFd1IEppYW5o dWEgPHRvcXN4d0BvdXRsb29rLmNvbT4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1w ZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1 MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNB CisgKi8KKworI2luY2x1ZGUgImNvbmZpZ19jb21wb25lbnRzLmgiCisKKyNpbmNsdWRlICJsaWJh dnV0aWwvYXZhc3NlcnQuaCIKKyNpbmNsdWRlICJoZXZjX2RhdGEuaCIKKyNpbmNsdWRlICJoZXZj ZGVjLmgiCisjaW5jbHVkZSAiZDNkMTJkZWMuaCIKKyNpbmNsdWRlIDxkeHZhLmg+CisKK3R5cGVk ZWYgc3RydWN0IEQzRDEyRGVjb2RlUGljdHVyZUNvbnRleHQgeworICAgIERYVkFfUGljUGFyYW1z X0hFVkMgICAgcHA7CisgICAgRFhWQV9RbWF0cml4X0hFVkMgICAgICBxbTsKKyAgICB1bnNpZ25l ZCAgICAgICAgICAgICAgIHNsaWNlX2NvdW50OworICAgIERYVkFfU2xpY2VfSEVWQ19TaG9ydCAg c2xpY2Vfc2hvcnRbRDNEMTJERUNfTUFYX1NMSUNFU107CisgICAgY29uc3QgdWludDhfdCAgICAg ICAgICpiaXRzdHJlYW07CisgICAgdW5zaWduZWQgICAgICAgICAgICAgICBiaXRzdHJlYW1fc2l6 ZTsKK30gRDNEMTJEZWNvZGVQaWN0dXJlQ29udGV4dDsKKworc3RhdGljIHZvaWQgZmlsbF9waWN0 dXJlX2VudHJ5KERYVkFfUGljRW50cnlfSEVWQyAqcGljLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGluZGV4LCB1bnNpZ25lZCBmbGFnKQoreworICAgIGF2X2Fzc2Vy dDAoKGluZGV4ICYgMHg3ZikgPT0gaW5kZXggJiYgKGZsYWcgJiAweDAxKSA9PSBmbGFnKTsKKyAg ICBwaWMtPmJQaWNFbnRyeSA9IGluZGV4IHwgKGZsYWcgPDwgNyk7Cit9CisKK3N0YXRpYyBpbnQg Z2V0X3JlZnBpY19pbmRleChjb25zdCBEWFZBX1BpY1BhcmFtc19IRVZDICpwcCwgaW50IHN1cmZh Y2VfaW5kZXgpCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IEZGX0FSUkFZX0VM RU1TKHBwLT5SZWZQaWNMaXN0KTsgaSsrKSB7CisgICAgICAgIGlmICgocHAtPlJlZlBpY0xpc3Rb aV0uYlBpY0VudHJ5ICYgMHg3ZikgPT0gc3VyZmFjZV9pbmRleCkKKyAgICAgICAgICByZXR1cm4g aTsKKyAgICB9CisgICAgcmV0dXJuIDB4ZmY7Cit9CisKK3N0YXRpYyB2b2lkIGZpbGxfcGljdHVy ZV9wYXJhbWV0ZXJzKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgY29uc3QgSEVWQ0NvbnRleHQgKmgs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEWFZBX1BpY1BhcmFtc19IRVZD ICpwcCkKK3sKKyAgICBEM0QxMlZBRGVjb2RlQ29udGV4dCAqY3R4ID0gRDNEMTJWQV9ERUNPREVf Q09OVEVYVChhdmN0eCk7CisKKyAgICBjb25zdCBIRVZDRnJhbWUgKmN1cnJlbnRfcGljdHVyZSA9 IGgtPnJlZjsKKyAgICBjb25zdCBIRVZDU1BTICpzcHMgPSBoLT5wcy5zcHM7CisgICAgY29uc3Qg SEVWQ1BQUyAqcHBzID0gaC0+cHMucHBzOworICAgIGludCBpLCBqOworCisgICAgbWVtc2V0KHBw LCAwLCBzaXplb2YoKnBwKSk7CisKKyAgICBwcC0+UGljV2lkdGhJbk1pbkNic1kgID0gc3BzLT5t aW5fY2Jfd2lkdGg7CisgICAgcHAtPlBpY0hlaWdodEluTWluQ2JzWSA9IHNwcy0+bWluX2NiX2hl aWdodDsKKworICAgIHBwLT53Rm9ybWF0QW5kU2VxdWVuY2VJbmZvRmxhZ3MgPSAoc3BzLT5jaHJv bWFfZm9ybWF0X2lkYyAgICAgICAgICAgICA8PCAgMCkgfAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoc3BzLT5zZXBhcmF0ZV9jb2xvdXJfcGxhbmVfZmxhZyAgICA8PCAg MikgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHNwcy0+Yml0X2Rl cHRoIC0gOCkgICAgICAgICAgICAgICA8PCAgMykgfAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoKHNwcy0+Yml0X2RlcHRoIC0gOCkgICAgICAgICAgICAgICA8PCAgNikg fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHNwcy0+bG9nMl9tYXhf cG9jX2xzYiAtIDQpICAgICAgICA8PCAgOSkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxMykgfAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8PCAxNCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAoMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxNSk7CisKKyAg ICBmaWxsX3BpY3R1cmVfZW50cnkoJnBwLT5DdXJyUGljLCBmZl9kM2QxMmRlY19nZXRfc3VyZmFj ZV9pbmRleChhdmN0eCwgY3VycmVudF9waWN0dXJlLT5mcmFtZSksIDApOworCisgICAgcHAtPnNw c19tYXhfZGVjX3BpY19idWZmZXJpbmdfbWludXMxICAgICAgICAgPSBzcHMtPnRlbXBvcmFsX2xh eWVyW3Nwcy0+bWF4X3N1Yl9sYXllcnMgLSAxXS5tYXhfZGVjX3BpY19idWZmZXJpbmcgLSAxOwor ICAgIHBwLT5sb2cyX21pbl9sdW1hX2NvZGluZ19ibG9ja19zaXplX21pbnVzMyAgID0gc3BzLT5s b2cyX21pbl9jYl9zaXplIC0gMzsKKyAgICBwcC0+bG9nMl9kaWZmX21heF9taW5fbHVtYV9jb2Rp bmdfYmxvY2tfc2l6ZSA9IHNwcy0+bG9nMl9kaWZmX21heF9taW5fY29kaW5nX2Jsb2NrX3NpemU7 CisgICAgcHAtPmxvZzJfbWluX3RyYW5zZm9ybV9ibG9ja19zaXplX21pbnVzMiAgICAgPSBzcHMt PmxvZzJfbWluX3RiX3NpemUgLSAyOworICAgIHBwLT5sb2cyX2RpZmZfbWF4X21pbl90cmFuc2Zv cm1fYmxvY2tfc2l6ZSAgID0gc3BzLT5sb2cyX21heF90cmFmb19zaXplICAtIHNwcy0+bG9nMl9t aW5fdGJfc2l6ZTsKKyAgICBwcC0+bWF4X3RyYW5zZm9ybV9oaWVyYXJjaHlfZGVwdGhfaW50ZXIg ICAgICA9IHNwcy0+bWF4X3RyYW5zZm9ybV9oaWVyYXJjaHlfZGVwdGhfaW50ZXI7CisgICAgcHAt Pm1heF90cmFuc2Zvcm1faGllcmFyY2h5X2RlcHRoX2ludHJhICAgICAgPSBzcHMtPm1heF90cmFu c2Zvcm1faGllcmFyY2h5X2RlcHRoX2ludHJhOworICAgIHBwLT5udW1fc2hvcnRfdGVybV9yZWZf cGljX3NldHMgICAgICAgICAgICAgID0gc3BzLT5uYl9zdF9ycHM7CisgICAgcHAtPm51bV9sb25n X3Rlcm1fcmVmX3BpY3Nfc3BzICAgICAgICAgICAgICAgPSBzcHMtPm51bV9sb25nX3Rlcm1fcmVm X3BpY3Nfc3BzOworCisgICAgcHAtPm51bV9yZWZfaWR4X2wwX2RlZmF1bHRfYWN0aXZlX21pbnVz MSAgICAgPSBwcHMtPm51bV9yZWZfaWR4X2wwX2RlZmF1bHRfYWN0aXZlIC0gMTsKKyAgICBwcC0+ bnVtX3JlZl9pZHhfbDFfZGVmYXVsdF9hY3RpdmVfbWludXMxICAgICA9IHBwcy0+bnVtX3JlZl9p ZHhfbDFfZGVmYXVsdF9hY3RpdmUgLSAxOworICAgIHBwLT5pbml0X3FwX21pbnVzMjYgICAgICAg ICAgICAgICAgICAgICAgICAgID0gcHBzLT5waWNfaW5pdF9xcF9taW51czI2OworCisgICAgaWYg KGgtPnNoLnNob3J0X3Rlcm1fcmVmX3BpY19zZXRfc3BzX2ZsYWcgPT0gMCAmJiBoLT5zaC5zaG9y dF90ZXJtX3JwcykgeworICAgICAgICBwcC0+dWNOdW1EZWx0YVBvY3NPZlJlZlJwc0lkeCAgICAg ICAgICAgID0gaC0+c2guc2hvcnRfdGVybV9ycHMtPnJwc19pZHhfbnVtX2RlbHRhX3BvY3M7Cisg ICAgICAgIHBwLT53TnVtQml0c0ZvclNob3J0VGVybVJQU0luU2xpY2UgICAgICAgPSBoLT5zaC5z aG9ydF90ZXJtX3JlZl9waWNfc2V0X3NpemU7CisgICAgfQorCisgICAgcHAtPmR3Q29kaW5nUGFy YW1Ub29sRmxhZ3MgPSAoc3BzLT5zY2FsaW5nX2xpc3RfZW5hYmxlX2ZsYWcgICAgICAgICAgICAg ICAgICA8PCAgMCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwcy0+YW1w X2VuYWJsZWRfZmxhZyAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIDEpIHwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzcHMtPnNhb19lbmFibGVkICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDw8ICAyKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc3BzLT5wY21fZW5hYmxlZF9mbGFnICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAgMykg fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChzcHMtPnBjbV9lbmFibGVkX2Zs YWcgPyAoc3BzLT5wY20uYml0X2RlcHRoIC0gMSkgOiAwKSAgICAgICAgICAgIDw8ICA0KSB8Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHNwcy0+cGNtX2VuYWJsZWRfZmxhZyA/ IChzcHMtPnBjbS5iaXRfZGVwdGhfY2hyb21hIC0gMSkgOiAwKSAgICAgPDwgIDgpIHwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc3BzLT5wY21fZW5hYmxlZF9mbGFnID8gKHNw cy0+cGNtLmxvZzJfbWluX3BjbV9jYl9zaXplIC0gMykgOiAwKSA8PCAxMikgfAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKChzcHMtPnBjbV9lbmFibGVkX2ZsYWcgPyAoc3BzLT5w Y20ubG9nMl9tYXhfcGNtX2NiX3NpemUgLSBzcHMtPnBjbS5sb2cyX21pbl9wY21fY2Jfc2l6ZSkg OiAwKSA8PCAxNCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwcy0+cGNt Lmxvb3BfZmlsdGVyX2Rpc2FibGVfZmxhZyAgICAgICAgICAgICAgPDwgMTYpIHwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzcHMtPmxvbmdfdGVybV9yZWZfcGljc19wcmVzZW50 X2ZsYWcgICAgICAgICAgIDw8IDE3KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc3BzLT5zcHNfdGVtcG9yYWxfbXZwX2VuYWJsZWRfZmxhZyAgICAgICAgICAgICA8PCAxOCkg fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwcy0+c3BzX3N0cm9uZ19pbnRy YV9zbW9vdGhpbmdfZW5hYmxlX2ZsYWcgICAgPDwgMTkpIHwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwcHMtPmRlcGVuZGVudF9zbGljZV9zZWdtZW50c19lbmFibGVkX2ZsYWcg ICAgIDw8IDIwKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHBzLT5vdXRw dXRfZmxhZ19wcmVzZW50X2ZsYWcgICAgICAgICAgICAgICAgICA8PCAyMSkgfAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHBwcy0+bnVtX2V4dHJhX3NsaWNlX2hlYWRlcl9iaXRz ICAgICAgICAgICAgICAgPDwgMjIpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwcHMtPnNpZ25fZGF0YV9oaWRpbmdfZmxhZyAgICAgICAgICAgICAgICAgICAgIDw8IDI1KSB8 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHBzLT5jYWJhY19pbml0X3ByZXNl bnRfZmxhZyAgICAgICAgICAgICAgICAgICA8PCAyNikgfAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPDwgMjcpOworCisgICAgcHAtPmR3Q29kaW5nU2V0dGluZ1BpY3R1cmVQcm9wZXJ0eUZsYWdz ID0gKHBwcy0+Y29uc3RyYWluZWRfaW50cmFfcHJlZF9mbGFnICAgICAgICAgICAgICAgICAgIDw8 ICAwKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBw cy0+dHJhbnNmb3JtX3NraXBfZW5hYmxlZF9mbGFnICAgICAgICAgICAgICAgICAgIDw8ICAxKSB8 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBwcy0+Y3Vf cXBfZGVsdGFfZW5hYmxlZF9mbGFnICAgICAgICAgICAgICAgICAgICAgIDw8ICAyKSB8CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBwcy0+cGljX3NsaWNl X2xldmVsX2Nocm9tYV9xcF9vZmZzZXRzX3ByZXNlbnRfZmxhZyA8PCAgMykgfAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcHMtPndlaWdodGVkX3ByZWRf ZmxhZyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAgNCkgfAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcHMtPndlaWdodGVkX2JpcHJlZF9mbGFn ICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAgNSkgfAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChwcHMtPnRyYW5zcXVhbnRfYnlwYXNzX2VuYWJsZV9m bGFnICAgICAgICAgICAgICAgICA8PCAgNikgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChwcHMtPnRpbGVzX2VuYWJsZWRfZmxhZyAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8PCAgNykgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwcHMtPmVudHJvcHlfY29kaW5nX3N5bmNfZW5hYmxlZF9mbGFnICAgICAg ICAgICAgICA8PCAgOCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwcHMtPnVuaWZvcm1fc3BhY2luZ19mbGFnICAgICAgICAgICAgICAgICAgICAgICAg ICA8PCAgOSkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICgocHBzLT50aWxlc19lbmFibGVkX2ZsYWcgPyBwcHMtPmxvb3BfZmlsdGVyX2Fjcm9zc190aWxl c19lbmFibGVkX2ZsYWcgOiAwKSA8PCAxMCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChwcHMtPnNlcV9sb29wX2ZpbHRlcl9hY3Jvc3Nfc2xpY2VzX2Vu YWJsZWRfZmxhZyAgICA8PCAxMSkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwcHMtPmRlYmxvY2tpbmdfZmlsdGVyX292ZXJyaWRlX2VuYWJsZWRfZmxh ZyAgICAgICA8PCAxMikgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwcHMtPmRpc2FibGVfZGJmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8PCAxMykgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChwcHMtPmxpc3RzX21vZGlmaWNhdGlvbl9wcmVzZW50X2ZsYWcgICAgICAgICAgICAgICA8PCAx NCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcHMt PnNsaWNlX2hlYWRlcl9leHRlbnNpb25fcHJlc2VudF9mbGFnICAgICAgICAgICA8PCAxNSkgfAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJU19JUkFQKGgp ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxNikgfAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJU19JRFIoaCkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxNykgfAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEludHJhUGljRmxhZyAqLworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJU19JUkFQKGgpICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxOCkgfAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAxOSk7CisgICAgcHAtPnBwc19jYl9x cF9vZmZzZXQgICAgICAgICAgICA9IHBwcy0+Y2JfcXBfb2Zmc2V0OworICAgIHBwLT5wcHNfY3Jf cXBfb2Zmc2V0ICAgICAgICAgICAgPSBwcHMtPmNyX3FwX29mZnNldDsKKyAgICBpZiAocHBzLT50 aWxlc19lbmFibGVkX2ZsYWcpIHsKKyAgICAgICAgcHAtPm51bV90aWxlX2NvbHVtbnNfbWludXMx ID0gcHBzLT5udW1fdGlsZV9jb2x1bW5zIC0gMTsKKyAgICAgICAgcHAtPm51bV90aWxlX3Jvd3Nf bWludXMxICAgID0gcHBzLT5udW1fdGlsZV9yb3dzIC0gMTsKKworICAgICAgICBpZiAoIXBwcy0+ dW5pZm9ybV9zcGFjaW5nX2ZsYWcpIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBwcHMt Pm51bV90aWxlX2NvbHVtbnM7IGkrKykKKyAgICAgICAgICAgICAgICBwcC0+Y29sdW1uX3dpZHRo X21pbnVzMVtpXSA9IHBwcy0+Y29sdW1uX3dpZHRoW2ldIC0gMTsKKworICAgICAgICAgICAgZm9y IChpID0gMDsgaSA8IHBwcy0+bnVtX3RpbGVfcm93czsgaSsrKQorICAgICAgICAgICAgICAgIHBw LT5yb3dfaGVpZ2h0X21pbnVzMVtpXSA9IHBwcy0+cm93X2hlaWdodFtpXSAtIDE7CisgICAgICAg IH0KKyAgICB9CisKKyAgICBwcC0+ZGlmZl9jdV9xcF9kZWx0YV9kZXB0aCAgICAgICAgICAgPSBw cHMtPmRpZmZfY3VfcXBfZGVsdGFfZGVwdGg7CisgICAgcHAtPnBwc19iZXRhX29mZnNldF9kaXYy ICAgICAgICAgICAgID0gcHBzLT5iZXRhX29mZnNldCAvIDI7CisgICAgcHAtPnBwc190Y19vZmZz ZXRfZGl2MiAgICAgICAgICAgICAgID0gcHBzLT50Y19vZmZzZXQgLyAyOworICAgIHBwLT5sb2cy X3BhcmFsbGVsX21lcmdlX2xldmVsX21pbnVzMiA9IHBwcy0+bG9nMl9wYXJhbGxlbF9tZXJnZV9s ZXZlbCAtIDI7CisgICAgcHAtPkN1cnJQaWNPcmRlckNudFZhbCAgICAgICAgICAgICAgID0gaC0+ cG9jOworCisgICAgLy8gZmlsbCBSZWZQaWNMaXN0IGZyb20gdGhlIERQQgorICAgIGZvciAoaSA9 IDAsIGogPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMocHAtPlJlZlBpY0xpc3QpOyBpKyspIHsKKyAg ICAgICAgY29uc3QgSEVWQ0ZyYW1lICpmcmFtZSA9IE5VTEw7CisgICAgICAgIHdoaWxlICghZnJh bWUgJiYgaiA8IEZGX0FSUkFZX0VMRU1TKGgtPkRQQikpIHsKKyAgICAgICAgICAgIGlmICgmaC0+ RFBCW2pdICE9IGN1cnJlbnRfcGljdHVyZSAmJiAoaC0+RFBCW2pdLmZsYWdzICYgKEhFVkNfRlJB TUVfRkxBR19MT05HX1JFRiB8IEhFVkNfRlJBTUVfRkxBR19TSE9SVF9SRUYpKSkKKyAgICAgICAg ICAgICAgICBmcmFtZSA9ICZoLT5EUEJbal07CisgICAgICAgICAgICBqKys7CisgICAgICAgIH0K KworICAgICAgICBpZiAoZnJhbWUpIHsKKyAgICAgICAgICAgIGZpbGxfcGljdHVyZV9lbnRyeSgm cHAtPlJlZlBpY0xpc3RbaV0sIGZmX2QzZDEyZGVjX2dldF9zdXJmYWNlX2luZGV4KGF2Y3R4LCBm cmFtZS0+ZnJhbWUpLCAhIShmcmFtZS0+ZmxhZ3MgJiBIRVZDX0ZSQU1FX0ZMQUdfTE9OR19SRUYp KTsKKyAgICAgICAgICAgIHBwLT5QaWNPcmRlckNudFZhbExpc3RbaV0gPSBmcmFtZS0+cG9jOwor ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHAtPlJlZlBpY0xpc3RbaV0uYlBpY0VudHJ5 ID0gMHhmZjsKKyAgICAgICAgICAgIHBwLT5QaWNPcmRlckNudFZhbExpc3RbaV0gICA9IDA7Cisg ICAgICAgIH0KKyAgICB9CisKKyAgICAjZGVmaW5lIERPX1JFRl9MSVNUKHJlZl9pZHgsIHJlZl9s aXN0KSB7IFwKKyAgICAgICAgY29uc3QgUmVmUGljTGlzdCAqcnBsID0gJmgtPnJwc1tyZWZfaWR4 XTsgXAorICAgICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IEZGX0FSUkFZX0VMRU1TKHBwLT5y ZWZfbGlzdCk7IGkrKykgeyBcCisgICAgICAgICAgICBjb25zdCBIRVZDRnJhbWUgKmZyYW1lID0g TlVMTDsgXAorICAgICAgICAgICAgd2hpbGUgKCFmcmFtZSAmJiBqIDwgcnBsLT5uYl9yZWZzKSBc CisgICAgICAgICAgICAgICAgZnJhbWUgPSBycGwtPnJlZltqKytdOyBcCisgICAgICAgICAgICBp ZiAoZnJhbWUgJiYgZnJhbWUtPmZsYWdzICYgKEhFVkNfRlJBTUVfRkxBR19MT05HX1JFRiB8IEhF VkNfRlJBTUVfRkxBR19TSE9SVF9SRUYpKSBcCisgICAgICAgICAgICAgICAgcHAtPnJlZl9saXN0 W2ldID0gZ2V0X3JlZnBpY19pbmRleChwcCwgZmZfZDNkMTJkZWNfZ2V0X3N1cmZhY2VfaW5kZXgo YXZjdHgsIGZyYW1lLT5mcmFtZSkpOyBcCisgICAgICAgICAgICBlbHNlIFwKKyAgICAgICAgICAg ICAgICBwcC0+cmVmX2xpc3RbaV0gPSAweGZmOyBcCisgICAgICAgIH0gXAorICAgIH0KKworICAg IC8vIEZpbGwgc2hvcnQgdGVybSBhbmQgbG9uZyB0ZXJtIGxpc3RzCisgICAgRE9fUkVGX0xJU1Qo U1RfQ1VSUl9CRUYsIFJlZlBpY1NldFN0Q3VyckJlZm9yZSk7CisgICAgRE9fUkVGX0xJU1QoU1Rf Q1VSUl9BRlQsIFJlZlBpY1NldFN0Q3VyckFmdGVyKTsKKyAgICBET19SRUZfTElTVChMVF9DVVJS LCBSZWZQaWNTZXRMdEN1cnIpOworCisgICAgcHAtPlN0YXR1c1JlcG9ydEZlZWRiYWNrTnVtYmVy ID0gY3R4LT5yZXBvcnRfaWQrKzsKK30KKworc3RhdGljIHZvaWQgZmlsbF9zY2FsaW5nX2xpc3Rz KGNvbnN0IEFWQ29kZWNDb250ZXh0ICphdmN0eCwgY29uc3QgSEVWQ0NvbnRleHQgKmgsIERYVkFf UW1hdHJpeF9IRVZDICpxbSkKK3sKKyAgICB1bnNpZ25lZCBpLCBqLCBwb3M7CisgICAgY29uc3Qg U2NhbGluZ0xpc3QgKnNsID0gaC0+cHMucHBzLT5zY2FsaW5nX2xpc3RfZGF0YV9wcmVzZW50X2Zs YWcgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoLT5wcy5wcHMtPnNjYWxpbmdfbGlz dCA6ICZoLT5wcy5zcHMtPnNjYWxpbmdfbGlzdDsKKworICAgIG1lbXNldChxbSwgMCwgc2l6ZW9m KCpxbSkpOworICAgIGZvciAoaSA9IDA7IGkgPCA2OyBpKyspIHsKKyAgICAgICAgZm9yIChqID0g MDsgaiA8IDE2OyBqKyspIHsKKyAgICAgICAgICAgIHBvcyA9IDQgKiBmZl9oZXZjX2RpYWdfc2Nh bjR4NF95W2pdICsgZmZfaGV2Y19kaWFnX3NjYW40eDRfeFtqXTsKKyAgICAgICAgICAgIHFtLT51 Y1NjYWxpbmdMaXN0czBbaV1bal0gPSBzbC0+c2xbMF1baV1bcG9zXTsKKyAgICAgICAgfQorCisg ICAgICAgIGZvciAoaiA9IDA7IGogPCA2NDsgaisrKSB7CisgICAgICAgICAgICBwb3MgPSA4ICog ZmZfaGV2Y19kaWFnX3NjYW44eDhfeVtqXSArIGZmX2hldmNfZGlhZ19zY2FuOHg4X3hbal07Cisg ICAgICAgICAgICBxbS0+dWNTY2FsaW5nTGlzdHMxW2ldW2pdID0gc2wtPnNsWzFdW2ldW3Bvc107 CisgICAgICAgICAgICBxbS0+dWNTY2FsaW5nTGlzdHMyW2ldW2pdID0gc2wtPnNsWzJdW2ldW3Bv c107CisKKyAgICAgICAgICAgIGlmIChpIDwgMikKKyAgICAgICAgICAgICAgICBxbS0+dWNTY2Fs aW5nTGlzdHMzW2ldW2pdID0gc2wtPnNsWzNdW2kgKiAzXVtwb3NdOworICAgICAgICB9CisKKyAg ICAgICAgcW0tPnVjU2NhbGluZ0xpc3REQ0NvZWZTaXplSUQyW2ldID0gc2wtPnNsX2RjWzBdW2ld OworICAgICAgICBpZiAoaSA8IDIpCisgICAgICAgICAgICBxbS0+dWNTY2FsaW5nTGlzdERDQ29l ZlNpemVJRDNbaV0gPSBzbC0+c2xfZGNbMV1baSAqIDNdOworICAgIH0KK30KKworc3RhdGljIHZv aWQgZmlsbF9zbGljZV9zaG9ydChEWFZBX1NsaWNlX0hFVkNfU2hvcnQgKnNsaWNlLCB1bnNpZ25l ZCBwb3NpdGlvbiwgdW5zaWduZWQgc2l6ZSkKK3sKKyAgICBtZW1zZXQoc2xpY2UsIDAsIHNpemVv Zigqc2xpY2UpKTsKKyAgICBzbGljZS0+QlNOQUx1bml0RGF0YUxvY2F0aW9uID0gcG9zaXRpb247 CisgICAgc2xpY2UtPlNsaWNlQnl0ZXNJbkJ1ZmZlciAgICA9IHNpemU7CisgICAgc2xpY2UtPndC YWRTbGljZUNob3BwaW5nICAgICA9IDA7Cit9CisKK3N0YXRpYyBpbnQgZDNkMTJkZWNfaGV2Y19z dGFydF9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIGF2X3VudXNlZCBjb25zdCB1aW50OF90 ICpidWZmZXIsIGF2X3VudXNlZCB1aW50MzJfdCBzaXplKQoreworICAgIGNvbnN0IEhFVkNDb250 ZXh0ICAgICAgICAgKmggICAgICAgPSBhdmN0eC0+cHJpdl9kYXRhOworICAgIEQzRDEyRGVjb2Rl UGljdHVyZUNvbnRleHQgKmN0eF9waWMgPSBoLT5yZWYtPmh3YWNjZWxfcGljdHVyZV9wcml2YXRl OworCisgICAgaWYgKCFEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2Y3R4KSkKKyAgICAgICAgcmV0 dXJuIC0xOworCisgICAgYXZfYXNzZXJ0MChjdHhfcGljKTsKKworICAgIGZpbGxfcGljdHVyZV9w YXJhbWV0ZXJzKGF2Y3R4LCBoLCAmY3R4X3BpYy0+cHApOworCisgICAgZmlsbF9zY2FsaW5nX2xp c3RzKGF2Y3R4LCBoLCAmY3R4X3BpYy0+cW0pOworCisgICAgY3R4X3BpYy0+c2xpY2VfY291bnQg ICAgPSAwOworICAgIGN0eF9waWMtPmJpdHN0cmVhbV9zaXplID0gMDsKKyAgICBjdHhfcGljLT5i aXRzdHJlYW0gICAgICA9IE5VTEw7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBk M2QxMmRlY19oZXZjX2RlY29kZV9zbGljZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIGNvbnN0IHVp bnQ4X3QgKmJ1ZmZlciwgdWludDMyX3Qgc2l6ZSkKK3sKKyAgICBjb25zdCBIRVZDQ29udGV4dCAg ICAgICAgICpoICAgICAgICAgICAgICAgPSBhdmN0eC0+cHJpdl9kYXRhOworICAgIGNvbnN0IEhF VkNGcmFtZSAgICAgICAgICAgKmN1cnJlbnRfcGljdHVyZSA9IGgtPnJlZjsKKyAgICBEM0QxMkRl Y29kZVBpY3R1cmVDb250ZXh0ICpjdHhfcGljICAgICAgICAgPSBjdXJyZW50X3BpY3R1cmUtPmh3 YWNjZWxfcGljdHVyZV9wcml2YXRlOworICAgIHVuc2lnbmVkIHBvc2l0aW9uOworCisgICAgaWYg KGN0eF9waWMtPnNsaWNlX2NvdW50ID49IEQzRDEyREVDX01BWF9TTElDRVMpCisgICAgICAgIHJl dHVybiAtMTsKKworICAgIGlmICghY3R4X3BpYy0+Yml0c3RyZWFtKQorICAgICAgICBjdHhfcGlj LT5iaXRzdHJlYW0gPSBidWZmZXI7CisgICAgY3R4X3BpYy0+Yml0c3RyZWFtX3NpemUgKz0gc2l6 ZTsKKworICAgIHBvc2l0aW9uID0gYnVmZmVyIC0gY3R4X3BpYy0+Yml0c3RyZWFtOworICAgIGZp bGxfc2xpY2Vfc2hvcnQoJmN0eF9waWMtPnNsaWNlX3Nob3J0W2N0eF9waWMtPnNsaWNlX2NvdW50 XSwgcG9zaXRpb24sIHNpemUpOworICAgIGN0eF9waWMtPnNsaWNlX2NvdW50Kys7CisKKyAgICBy ZXR1cm4gMDsKK30KKworI2RlZmluZSBTVEFSVF9DT0RFIDY1NTM2CisjZGVmaW5lIFNUQVJUX0NP REVfU0laRSAzCitzdGF0aWMgaW50IHVwZGF0ZV9pbnB1dF9hcmd1bWVudHMoQVZDb2RlY0NvbnRl eHQgKmF2Y3R4LCBEM0QxMl9WSURFT19ERUNPREVfSU5QVVRfU1RSRUFNX0FSR1VNRU5UUyAqaW5w dXRfYXJncywgSUQzRDEyUmVzb3VyY2UgKmJ1ZmZlcikKK3sKKyAgICBEM0QxMlZBRGVjb2RlQ29u dGV4dCAgICpjdHggICAgICAgICAgPSBEM0QxMlZBX0RFQ09ERV9DT05URVhUKGF2Y3R4KTsKKyAg ICBBVkhXRnJhbWVzQ29udGV4dCAgICAgICpmcmFtZXNfY3R4ICAgPSBEM0QxMlZBX0ZSQU1FU19D T05URVhUKGF2Y3R4KTsKKyAgICBBVkQzRDEyVkFGcmFtZXNDb250ZXh0ICpmcmFtZXNfaHdjdHgg PSBmcmFtZXNfY3R4LT5od2N0eDsKKworICAgIGNvbnN0IEhFVkNDb250ZXh0ICAgICAgICAgKmgg ICAgICAgICAgICAgICA9IGF2Y3R4LT5wcml2X2RhdGE7CisgICAgY29uc3QgSEVWQ0ZyYW1lICAg ICAgICAgICAqY3VycmVudF9waWN0dXJlID0gaC0+cmVmOworICAgIEQzRDEyRGVjb2RlUGljdHVy ZUNvbnRleHQgKmN0eF9waWMgICAgICAgICA9IGN1cnJlbnRfcGljdHVyZS0+aHdhY2NlbF9waWN0 dXJlX3ByaXZhdGU7CisKKyAgICBpbnQgaSwgaW5kZXg7CisgICAgdWludDhfdCAqbWFwcGVkX2Rh dGEsICptYXBwZWRfcHRyOworICAgIERYVkFfU2xpY2VfSEVWQ19TaG9ydCAqc2xpY2U7CisgICAg RDNEMTJfVklERU9fREVDT0RFX0ZSQU1FX0FSR1VNRU5UICphcmdzOworCisgICAgaWYgKEZBSUxF RChJRDNEMTJSZXNvdXJjZV9NYXAoYnVmZmVyLCAwLCBOVUxMLCAmbWFwcGVkX2RhdGEpKSkgewor ICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBtYXAgRDNEMTIg QnVmZmVyIHJlc291cmNlIVxuIik7CisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cisg ICAgfQorCisgICAgbWFwcGVkX3B0ciA9IG1hcHBlZF9kYXRhOworICAgIGZvciAoaSA9IDA7IGkg PCBjdHhfcGljLT5zbGljZV9jb3VudDsgaSsrKSB7CisgICAgICAgIGFyZ3MgPSAmaW5wdXRfYXJn cy0+RnJhbWVBcmd1bWVudHNbaW5wdXRfYXJncy0+TnVtRnJhbWVBcmd1bWVudHMrK107CisgICAg ICAgIGFyZ3MtPlR5cGUgID0gRDNEMTJfVklERU9fREVDT0RFX0FSR1VNRU5UX1RZUEVfU0xJQ0Vf Q09OVFJPTDsKKyAgICAgICAgYXJncy0+U2l6ZSAgPSBzaXplb2YoY3R4X3BpYy0+c2xpY2Vfc2hv cnRbaV0pOworICAgICAgICBhcmdzLT5wRGF0YSA9ICZjdHhfcGljLT5zbGljZV9zaG9ydFtpXTsK KworICAgICAgICBzbGljZSA9ICZjdHhfcGljLT5zbGljZV9zaG9ydFtpXTsKKworICAgICAgICAq KHVpbnQzMl90ICopbWFwcGVkX3B0ciA9IFNUQVJUX0NPREU7CisgICAgICAgIG1hcHBlZF9wdHIg Kz0gU1RBUlRfQ09ERV9TSVpFOworCisgICAgICAgIG1lbWNweShtYXBwZWRfcHRyLCAmY3R4X3Bp Yy0+Yml0c3RyZWFtW3NsaWNlLT5CU05BTHVuaXREYXRhTG9jYXRpb25dLCBzbGljZS0+U2xpY2VC eXRlc0luQnVmZmVyKTsKKyAgICAgICAgbWFwcGVkX3B0ciArPSBzbGljZS0+U2xpY2VCeXRlc0lu QnVmZmVyOworICAgIH0KKworICAgIElEM0QxMlJlc291cmNlX1VubWFwKGJ1ZmZlciwgMCwgTlVM TCk7CisKKyAgICBpbnB1dF9hcmdzLT5Db21wcmVzc2VkQml0c3RyZWFtID0gKEQzRDEyX1ZJREVP X0RFQ09ERV9DT01QUkVTU0VEX0JJVFNUUkVBTSl7CisgICAgICAgIC5wQnVmZmVyID0gYnVmZmVy LAorICAgICAgICAuT2Zmc2V0ICA9IDAsCisgICAgICAgIC5TaXplICAgID0gbWFwcGVkX3B0ciAt IG1hcHBlZF9kYXRhLAorICAgIH07CisKKyAgICBpbmRleCA9IGN0eF9waWMtPnBwLkN1cnJQaWMu SW5kZXg3Qml0czsKKyAgICBjdHgtPnJlZl9yZXNvdXJjZXNbaW5kZXhdID0gZnJhbWVzX2h3Y3R4 LT50ZXh0dXJlX2luZm9zW2luZGV4XS50ZXh0dXJlOworCisgICAgZm9yIChpID0gMDsgaSA8IEZG X0FSUkFZX0VMRU1TKGN0eF9waWMtPnBwLlJlZlBpY0xpc3QpOyBpKyspIHsKKyAgICAgICAgaW5k ZXggPSBjdHhfcGljLT5wcC5SZWZQaWNMaXN0W2ldLkluZGV4N0JpdHM7CisgICAgICAgIGlmIChp bmRleCAhPSAweDdmKSB7CisgICAgICAgICAgICBjdHgtPnJlZl9yZXNvdXJjZXNbaW5kZXhdID0g ZnJhbWVzX2h3Y3R4LT50ZXh0dXJlX2luZm9zW2luZGV4XS50ZXh0dXJlOworICAgICAgICB9Cisg ICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZDNkMTJkZWNfaGV2Y19lbmRf ZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4KQoreworICAgIEhFVkNDb250ZXh0ICAgICAgICAg ICAgICAgKmggICAgICAgPSBhdmN0eC0+cHJpdl9kYXRhOworICAgIEQzRDEyRGVjb2RlUGljdHVy ZUNvbnRleHQgKmN0eF9waWMgPSBoLT5yZWYtPmh3YWNjZWxfcGljdHVyZV9wcml2YXRlOworCisg ICAgaW50IHNjYWxlID0gY3R4X3BpYy0+cHAuZHdDb2RpbmdQYXJhbVRvb2xGbGFncyAmIDE7CisK KyAgICBpZiAoY3R4X3BpYy0+c2xpY2VfY291bnQgPD0gMCB8fCBjdHhfcGljLT5iaXRzdHJlYW1f c2l6ZSA8PSAwKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICByZXR1cm4gZmZfZDNkMTJkZWNf Y29tbW9uX2VuZF9mcmFtZShhdmN0eCwgaC0+cmVmLT5mcmFtZSwgJmN0eF9waWMtPnBwLCBzaXpl b2YoY3R4X3BpYy0+cHApLAorICAgICAgICAgICAgICAgc2NhbGUgPyAmY3R4X3BpYy0+cW0gOiBO VUxMLCBzY2FsZSA/IHNpemVvZihjdHhfcGljLT5xbSkgOiAwLCB1cGRhdGVfaW5wdXRfYXJndW1l bnRzKTsKK30KKworc3RhdGljIGludCBkM2QxMmRlY19oZXZjX2RlY29kZV9pbml0KEFWQ29kZWND b250ZXh0ICphdmN0eCkKK3sKKyAgICBIRVZDQ29udGV4dCAgICAgICAgICAqaCAgID0gYXZjdHgt PnByaXZfZGF0YTsKKyAgICBEM0QxMlZBRGVjb2RlQ29udGV4dCAqY3R4ID0gRDNEMTJWQV9ERUNP REVfQ09OVEVYVChhdmN0eCk7CisKKyAgICBzd2l0Y2ggKGF2Y3R4LT5wcm9maWxlKSB7CisgICAg Y2FzZSBGRl9QUk9GSUxFX0hFVkNfTUFJTl8xMDoKKyAgICAgICAgY3R4LT5jZmcuRGVjb2RlUHJv ZmlsZSA9IEQzRDEyX1ZJREVPX0RFQ09ERV9QUk9GSUxFX0hFVkNfTUFJTjEwOworICAgICAgICBi cmVhazsKKworICAgIGNhc2UgRkZfUFJPRklMRV9IRVZDX01BSU5fU1RJTExfUElDVFVSRToKKyAg ICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJEM0QxMiBkb2Vzbid0IHN1cHBvcnQg UFJPRklMRV9IRVZDX01BSU5fU1RJTExfUElDVFVSRSFcbiIpOworICAgICAgICByZXR1cm4gQVZF UlJPUihFSU5WQUwpOworCisgICAgY2FzZSBGRl9QUk9GSUxFX0hFVkNfTUFJTjoKKyAgICBkZWZh dWx0OgorICAgICAgICBjdHgtPmNmZy5EZWNvZGVQcm9maWxlID0gRDNEMTJfVklERU9fREVDT0RF X1BST0ZJTEVfSEVWQ19NQUlOOworICAgICAgICBicmVhazsKKyAgICB9OworCisgICAgcmV0dXJu IGZmX2QzZDEyZGVjX2RlY29kZV9pbml0KGF2Y3R4KTsKK30KKworI2lmIENPTkZJR19IRVZDX0Qz RDEyREVDX0hXQUNDRUwKK2NvbnN0IEFWSFdBY2NlbCBmZl9oZXZjX2QzZDEyZGVjX2h3YWNjZWwg PSB7CisgICAgLm5hbWUgICAgICAgICAgICAgICAgID0gImhldmNfZDNkMTJkZWMiLAorICAgIC50 eXBlICAgICAgICAgICAgICAgICA9IEFWTUVESUFfVFlQRV9WSURFTywKKyAgICAuaWQgICAgICAg ICAgICAgICAgICAgPSBBVl9DT0RFQ19JRF9IRVZDLAorICAgIC5waXhfZm10ICAgICAgICAgICAg ICA9IEFWX1BJWF9GTVRfRDNEMTIsCisgICAgLmluaXQgICAgICAgICAgICAgICAgID0gZDNkMTJk ZWNfaGV2Y19kZWNvZGVfaW5pdCwKKyAgICAudW5pbml0ICAgICAgICAgICAgICAgPSBmZl9kM2Qx MmRlY19kZWNvZGVfdW5pbml0LAorICAgIC5zdGFydF9mcmFtZSAgICAgICAgICA9IGQzZDEyZGVj X2hldmNfc3RhcnRfZnJhbWUsCisgICAgLmRlY29kZV9zbGljZSAgICAgICAgID0gZDNkMTJkZWNf aGV2Y19kZWNvZGVfc2xpY2UsCisgICAgLmVuZF9mcmFtZSAgICAgICAgICAgID0gZDNkMTJkZWNf aGV2Y19lbmRfZnJhbWUsCisgICAgLmZyYW1lX3BhcmFtcyAgICAgICAgID0gZmZfZDNkMTJkZWNf Y29tbW9uX2ZyYW1lX3BhcmFtcywKKyAgICAuZnJhbWVfcHJpdl9kYXRhX3NpemUgPSBzaXplb2Yo RDNEMTJEZWNvZGVQaWN0dXJlQ29udGV4dCksCisgICAgLnByaXZfZGF0YV9zaXplICAgICAgID0g c2l6ZW9mKEQzRDEyVkFEZWNvZGVDb250ZXh0KSwKK307CisjZW5kaWYKZGlmZiAtLWdpdCBhL2xp YmF2Y29kZWMvZDNkMTJkZWNfdnA5LmMgYi9saWJhdmNvZGVjL2QzZDEyZGVjX3ZwOS5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjE2YTMzZDRlMzEKLS0tIC9kZXYvbnVs bAorKysgYi9saWJhdmNvZGVjL2QzZDEyZGVjX3ZwOS5jCkBAIC0wLDAgKzEsMjk0IEBACisvKgor ICogRGlyZWN0M0QgMTIgVlA5IEhXIGFjY2VsZXJhdGlvbgorICoKKyAqIGNvcHlyaWdodCAoYykg MjAyMiBXdSBKaWFuaHVhIDx0b3FzeHdAb3V0bG9vay5jb20+CisgKgorICogVGhpcyBmaWxlIGlz IHBhcnQgb2YgRkZtcGVnLgorICoKKyAqIEZGbXBlZyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2Yg dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor ICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3 aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRh dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAw MjExMC0xMzAxIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWdfY29tcG9uZW50cy5oIgorCisj aW5jbHVkZSAibGliYXZ1dGlsL2F2YXNzZXJ0LmgiCisjaW5jbHVkZSAibGliYXZ1dGlsL3BpeGRl c2MuaCIKKworI2luY2x1ZGUgInZwOXNoYXJlZC5oIgorI2luY2x1ZGUgImQzZDEyZGVjLmgiCisj aW5jbHVkZSA8ZHh2YS5oPgorCit0eXBlZGVmIHN0cnVjdCBEM0QxMkRlY29kZVBpY3R1cmVDb250 ZXh0IHsKKyAgICBEWFZBX1BpY1BhcmFtc19WUDkgICAgcHA7CisgICAgRFhWQV9TbGljZV9WUHhf U2hvcnQgIHNsaWNlOworICAgIGNvbnN0IHVpbnQ4X3QgICAgICAgICpiaXRzdHJlYW07CisgICAg dW5zaWduZWQgICAgICAgICAgICAgIGJpdHN0cmVhbV9zaXplOworfSBEM0QxMkRlY29kZVBpY3R1 cmVDb250ZXh0OworCitzdGF0aWMgdm9pZCBmaWxsX3BpY3R1cmVfZW50cnkoRFhWQV9QaWNFbnRy eV9WUHggKnBpYywgdW5zaWduZWQgaW5kZXgsIHVuc2lnbmVkIGZsYWcpCit7CisgICAgYXZfYXNz ZXJ0MCgoaW5kZXggJiAweDdmKSA9PSBpbmRleCAmJiAoZmxhZyAmIDB4MDEpID09IGZsYWcpOwor ICAgIHBpYy0+YlBpY0VudHJ5ID0gaW5kZXggfCAoZmxhZyA8PCA3KTsKK30KKworc3RhdGljIGlu dCBmaWxsX3BpY3R1cmVfcGFyYW1ldGVycyhBVkNvZGVjQ29udGV4dCAqYXZjdHgsIGNvbnN0IFZQ OVNoYXJlZENvbnRleHQgKmgsIERYVkFfUGljUGFyYW1zX1ZQOSAqcHApCit7CisgICAgaW50IGk7 CisgICAgRDNEMTJWQURlY29kZUNvbnRleHQgICAgICpjdHggICAgID0gRDNEMTJWQV9ERUNPREVf Q09OVEVYVChhdmN0eCk7CisgICAgY29uc3QgQVZQaXhGbXREZXNjcmlwdG9yICpwaXhkZXNjID0g YXZfcGl4X2ZtdF9kZXNjX2dldChhdmN0eC0+c3dfcGl4X2ZtdCk7CisKKyAgICBpZiAoIXBpeGRl c2MpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIG1lbXNldChwcCwgMCwgc2l6ZW9mKCpwcCkp OworCisgICAgZmlsbF9waWN0dXJlX2VudHJ5KCZwcC0+Q3VyclBpYywgZmZfZDNkMTJkZWNfZ2V0 X3N1cmZhY2VfaW5kZXgoYXZjdHgsIGgtPmZyYW1lc1tDVVJfRlJBTUVdLnRmLmYpLCAwKTsKKwor ICAgIHBwLT5wcm9maWxlID0gaC0+aC5wcm9maWxlOworICAgIHBwLT53Rm9ybWF0QW5kUGljdHVy ZUluZm9GbGFncyA9ICgoaC0+aC5rZXlmcmFtZSA9PSAwKSAgIDw8ICAwKSB8CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKChoLT5oLmludmlzaWJsZSA9PSAwKSAgPDwgIDEp IHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaC0+aC5lcnJvcnJlcyAg ICAgICAgICA8PCAgMikgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChw aXhkZXNjLT5sb2cyX2Nocm9tYV93IDw8ICAzKSB8IC8qIHN1YnNhbXBsaW5nX3ggKi8KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGl4ZGVzYy0+bG9nMl9jaHJvbWFfaCA8 PCAgNCkgfCAvKiBzdWJzYW1wbGluZ195ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKDAgICAgICAgICAgICAgICAgICAgICAgPDwgIDUpIHwgLyogZXh0cmFfcGxhbmUg Ki8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaC0+aC5yZWZyZXNoY3R4 ICAgICAgICA8PCAgNikgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICho LT5oLnBhcmFsbGVsbW9kZSAgICAgIDw8ICA3KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKGgtPmguaW50cmFvbmx5ICAgICAgICAgPDwgIDgpIHwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoaC0+aC5mcmFtZWN0eGlkICAgICAgICA8PCAgOSkg fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoLT5oLnJlc2V0Y3R4ICAg ICAgICAgIDw8IDExKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCho LT5oLmtleWZyYW1lID8gMCA6IGgtPmguaGlnaHByZWNpc2lvbm12cykgPDwgMTMpIHwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCAgICAgICAgICAgICAgICAgICAgICA8 PCAxNCk7ICAvKiBSZXNlcnZlZEZvcm1hdEluZm8yQml0cyAqLworCisgICAgcHAtPndpZHRoICA9 IGF2Y3R4LT53aWR0aDsKKyAgICBwcC0+aGVpZ2h0ID0gYXZjdHgtPmhlaWdodDsKKyAgICBwcC0+ Qml0RGVwdGhNaW51czhMdW1hICAgPSBwaXhkZXNjLT5jb21wWzBdLmRlcHRoIC0gODsKKyAgICBw cC0+Qml0RGVwdGhNaW51czhDaHJvbWEgPSBwaXhkZXNjLT5jb21wWzFdLmRlcHRoIC0gODsKKyAg ICAvKiBzd2FwIDAvMSB0byBtYXRjaCB0aGUgcmVmZXJlbmNlICovCisgICAgcHAtPmludGVycF9m aWx0ZXIgPSBoLT5oLmZpbHRlcm1vZGUgXiAoaC0+aC5maWx0ZXJtb2RlIDw9IDEpOworICAgIHBw LT5SZXNlcnZlZDhCaXRzID0gMDsKKworICAgIGZvciAoaSA9IDA7IGkgPCA4OyBpKyspIHsKKyAg ICAgICAgaWYgKGgtPnJlZnNbaV0uZi0+YnVmWzBdKSB7CisgICAgICAgICAgICBmaWxsX3BpY3R1 cmVfZW50cnkoJnBwLT5yZWZfZnJhbWVfbWFwW2ldLCBmZl9kM2QxMmRlY19nZXRfc3VyZmFjZV9p bmRleChhdmN0eCwgaC0+cmVmc1tpXS5mKSwgMCk7CisgICAgICAgICAgICBwcC0+cmVmX2ZyYW1l X2NvZGVkX3dpZHRoW2ldICA9IGgtPnJlZnNbaV0uZi0+d2lkdGg7CisgICAgICAgICAgICBwcC0+ cmVmX2ZyYW1lX2NvZGVkX2hlaWdodFtpXSA9IGgtPnJlZnNbaV0uZi0+aGVpZ2h0OworICAgICAg ICB9IGVsc2UKKyAgICAgICAgICAgIHBwLT5yZWZfZnJhbWVfbWFwW2ldLmJQaWNFbnRyeSA9IDB4 RkY7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworICAgICAgICB1aW50 OF90IHJlZmlkeCA9IGgtPmgucmVmaWR4W2ldOworICAgICAgICBpZiAoaC0+cmVmc1tyZWZpZHhd LmYtPmJ1ZlswXSkKKyAgICAgICAgICAgIGZpbGxfcGljdHVyZV9lbnRyeSgmcHAtPmZyYW1lX3Jl ZnNbaV0sIGZmX2QzZDEyZGVjX2dldF9zdXJmYWNlX2luZGV4KGF2Y3R4LCBoLT5yZWZzW3JlZmlk eF0uZiksIDApOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcC0+ZnJhbWVfcmVmc1tpXS5i UGljRW50cnkgPSAweEZGOworCisgICAgICAgIHBwLT5yZWZfZnJhbWVfc2lnbl9iaWFzW2kgKyAx XSA9IGgtPmguc2lnbmJpYXNbaV07CisgICAgfQorCisgICAgcHAtPmZpbHRlcl9sZXZlbCAgICA9 IGgtPmguZmlsdGVyLmxldmVsOworICAgIHBwLT5zaGFycG5lc3NfbGV2ZWwgPSBoLT5oLmZpbHRl ci5zaGFycG5lc3M7CisKKyAgICBwcC0+d0NvbnRyb2xJbmZvRmxhZ3MgPSAoaC0+aC5sZl9kZWx0 YS5lbmFibGVkICAgPDwgMCkgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoLT5oLmxm X2RlbHRhLnVwZGF0ZWQgICA8PCAxKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGgt PmgudXNlX2xhc3RfZnJhbWVfbXZzIDw8IDIpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoMCAgICAgICAgICAgICAgICAgICAgICAgPDwgMyk7ICAvKiBSZXNlcnZlZENvbnRyb2xJbmZv NUJpdHMgKi8KKworICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCisgICAgICAgIHBwLT5yZWZf ZGVsdGFzW2ldICA9IGgtPmgubGZfZGVsdGEucmVmW2ldOworCisgICAgZm9yIChpID0gMDsgaSA8 IDI7IGkrKykKKyAgICAgICAgcHAtPm1vZGVfZGVsdGFzW2ldICA9IGgtPmgubGZfZGVsdGEubW9k ZVtpXTsKKworICAgIHBwLT5iYXNlX3FpbmRleCAgID0gaC0+aC55YWNfcWk7CisgICAgcHAtPnlf ZGNfZGVsdGFfcSAgPSBoLT5oLnlkY19xZGVsdGE7CisgICAgcHAtPnV2X2RjX2RlbHRhX3EgPSBo LT5oLnV2ZGNfcWRlbHRhOworICAgIHBwLT51dl9hY19kZWx0YV9xID0gaC0+aC51dmFjX3FkZWx0 YTsKKworICAgIC8qIHNlZ21lbnRhdGlvbiBkYXRhICovCisgICAgcHAtPnN0VlA5U2VnbWVudHMu d1NlZ21lbnRJbmZvRmxhZ3MgPSAoaC0+aC5zZWdtZW50YXRpb24uZW5hYmxlZCAgICAgICA8PCAw KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaC0+aC5zZWdt ZW50YXRpb24udXBkYXRlX21hcCAgICA8PCAxKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaC0+aC5zZWdtZW50YXRpb24udGVtcG9yYWwgICAgICA8PCAyKSB8 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaC0+aC5zZWdtZW50 YXRpb24uYWJzb2x1dGVfdmFscyA8PCAzKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCA0KTsgIC8q IFJlc2VydmVkU2VnbWVudEZsYWdzNEJpdHMgKi8KKworICAgIGZvciAoaSA9IDA7IGkgPCA3OyBp KyspCisgICAgICAgIHBwLT5zdFZQOVNlZ21lbnRzLnRyZWVfcHJvYnNbaV0gPSBoLT5oLnNlZ21l bnRhdGlvbi5wcm9iW2ldOworCisgICAgaWYgKGgtPmguc2VnbWVudGF0aW9uLnRlbXBvcmFsKQor ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQorICAgICAgICAgICAgcHAtPnN0VlA5U2Vn bWVudHMucHJlZF9wcm9ic1tpXSA9IGgtPmguc2VnbWVudGF0aW9uLnByZWRfcHJvYltpXTsKKyAg ICBlbHNlCisgICAgICAgIG1lbXNldChwcC0+c3RWUDlTZWdtZW50cy5wcmVkX3Byb2JzLCAyNTUs IHNpemVvZihwcC0+c3RWUDlTZWdtZW50cy5wcmVkX3Byb2JzKSk7CisKKyAgICBmb3IgKGkgPSAw OyBpIDwgODsgaSsrKSB7CisgICAgICAgIHBwLT5zdFZQOVNlZ21lbnRzLmZlYXR1cmVfbWFza1tp XSA9IChoLT5oLnNlZ21lbnRhdGlvbi5mZWF0W2ldLnFfZW5hYmxlZCAgICA8PCAwKSB8CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoLT5oLnNlZ21lbnRhdGlv bi5mZWF0W2ldLmxmX2VuYWJsZWQgICA8PCAxKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChoLT5oLnNlZ21lbnRhdGlvbi5mZWF0W2ldLnJlZl9lbmFibGVk ICA8PCAyKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICho LT5oLnNlZ21lbnRhdGlvbi5mZWF0W2ldLnNraXBfZW5hYmxlZCA8PCAzKTsKKworICAgICAgICBw cC0+c3RWUDlTZWdtZW50cy5mZWF0dXJlX2RhdGFbaV1bMF0gPSBoLT5oLnNlZ21lbnRhdGlvbi5m ZWF0W2ldLnFfdmFsOworICAgICAgICBwcC0+c3RWUDlTZWdtZW50cy5mZWF0dXJlX2RhdGFbaV1b MV0gPSBoLT5oLnNlZ21lbnRhdGlvbi5mZWF0W2ldLmxmX3ZhbDsKKyAgICAgICAgcHAtPnN0VlA5 U2VnbWVudHMuZmVhdHVyZV9kYXRhW2ldWzJdID0gaC0+aC5zZWdtZW50YXRpb24uZmVhdFtpXS5y ZWZfdmFsOworICAgICAgICBwcC0+c3RWUDlTZWdtZW50cy5mZWF0dXJlX2RhdGFbaV1bM10gPSAw OyAvKiBubyBkYXRhIGZvciBza2lwICovCisgICAgfQorCisgICAgcHAtPmxvZzJfdGlsZV9jb2xz ID0gaC0+aC50aWxpbmcubG9nMl90aWxlX2NvbHM7CisgICAgcHAtPmxvZzJfdGlsZV9yb3dzID0g aC0+aC50aWxpbmcubG9nMl90aWxlX3Jvd3M7CisKKyAgICBwcC0+dW5jb21wcmVzc2VkX2hlYWRl cl9zaXplX2J5dGVfYWxpZ25lZCA9IGgtPmgudW5jb21wcmVzc2VkX2hlYWRlcl9zaXplOworICAg IHBwLT5maXJzdF9wYXJ0aXRpb25fc2l6ZSA9IGgtPmguY29tcHJlc3NlZF9oZWFkZXJfc2l6ZTsK KworICAgIHBwLT5TdGF0dXNSZXBvcnRGZWVkYmFja051bWJlciA9IGN0eC0+cmVwb3J0X2lkKys7 CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZmlsbF9zbGljZV9zaG9ydChEWFZB X1NsaWNlX1ZQeF9TaG9ydCAqc2xpY2UsIHVuc2lnbmVkIHBvc2l0aW9uLCB1bnNpZ25lZCBzaXpl KQoreworICAgIG1lbXNldChzbGljZSwgMCwgc2l6ZW9mKCpzbGljZSkpOworICAgIHNsaWNlLT5C U05BTHVuaXREYXRhTG9jYXRpb24gPSBwb3NpdGlvbjsKKyAgICBzbGljZS0+U2xpY2VCeXRlc0lu QnVmZmVyICAgID0gc2l6ZTsKKyAgICBzbGljZS0+d0JhZFNsaWNlQ2hvcHBpbmcgICAgID0gMDsK K30KKworc3RhdGljIGludCBkM2QxMmRlY192cDlfc3RhcnRfZnJhbWUoQVZDb2RlY0NvbnRleHQg KmF2Y3R4LCBhdl91bnVzZWQgY29uc3QgdWludDhfdCAqYnVmZmVyLCBhdl91bnVzZWQgdWludDMy X3Qgc2l6ZSkKK3sKKyAgICBjb25zdCBWUDlTaGFyZWRDb250ZXh0ICAgICpoICAgICAgID0gYXZj dHgtPnByaXZfZGF0YTsKKyAgICBEM0QxMkRlY29kZVBpY3R1cmVDb250ZXh0ICpjdHhfcGljID0g aC0+ZnJhbWVzW0NVUl9GUkFNRV0uaHdhY2NlbF9waWN0dXJlX3ByaXZhdGU7CisKKyAgICBpZiAo IUQzRDEyVkFfREVDT0RFX0NPTlRFWFQoYXZjdHgpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAg ICBhdl9hc3NlcnQwKGN0eF9waWMpOworCisgICAgaWYgKGZpbGxfcGljdHVyZV9wYXJhbWV0ZXJz KGF2Y3R4LCBoLCAmY3R4X3BpYy0+cHApIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAg Y3R4X3BpYy0+Yml0c3RyZWFtX3NpemUgPSAwOworICAgIGN0eF9waWMtPmJpdHN0cmVhbSA9IE5V TEw7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCBkM2QxMmRlY192cDlfZGVjb2Rl X3NsaWNlKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgY29uc3QgdWludDhfdCAqYnVmZmVyLCB1aW50 MzJfdCBzaXplKQoreworICAgIGNvbnN0IFZQOVNoYXJlZENvbnRleHQgICAgKmggICAgICAgPSBh dmN0eC0+cHJpdl9kYXRhOworICAgIEQzRDEyRGVjb2RlUGljdHVyZUNvbnRleHQgKmN0eF9waWMg PSBoLT5mcmFtZXNbQ1VSX0ZSQU1FXS5od2FjY2VsX3BpY3R1cmVfcHJpdmF0ZTsKKyAgICB1bnNp Z25lZCBwb3NpdGlvbjsKKworICAgIGlmICghY3R4X3BpYy0+Yml0c3RyZWFtKQorICAgICAgICBj dHhfcGljLT5iaXRzdHJlYW0gPSBidWZmZXI7CisgICAgY3R4X3BpYy0+Yml0c3RyZWFtX3NpemUg Kz0gc2l6ZTsKKworICAgIHBvc2l0aW9uID0gYnVmZmVyIC0gY3R4X3BpYy0+Yml0c3RyZWFtOwor ICAgIGZpbGxfc2xpY2Vfc2hvcnQoJmN0eF9waWMtPnNsaWNlLCBwb3NpdGlvbiwgc2l6ZSk7CisK KyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludCB1cGRhdGVfaW5wdXRfYXJndW1lbnRzKEFW Q29kZWNDb250ZXh0ICphdmN0eCwgRDNEMTJfVklERU9fREVDT0RFX0lOUFVUX1NUUkVBTV9BUkdV TUVOVFMgKmlucHV0X2FyZ3MsIElEM0QxMlJlc291cmNlICpidWZmZXIpCit7CisgICAgRDNEMTJW QURlY29kZUNvbnRleHQgICAqY3R4ICAgICAgICAgID0gRDNEMTJWQV9ERUNPREVfQ09OVEVYVChh dmN0eCk7CisgICAgQVZIV0ZyYW1lc0NvbnRleHQgICAgICAqZnJhbWVzX2N0eCAgID0gRDNEMTJW QV9GUkFNRVNfQ09OVEVYVChhdmN0eCk7CisgICAgQVZEM0QxMlZBRnJhbWVzQ29udGV4dCAqZnJh bWVzX2h3Y3R4ID0gZnJhbWVzX2N0eC0+aHdjdHg7CisKKyAgICBjb25zdCBWUDlTaGFyZWRDb250 ZXh0ICAgICpoICAgICAgID0gYXZjdHgtPnByaXZfZGF0YTsKKyAgICBEM0QxMkRlY29kZVBpY3R1 cmVDb250ZXh0ICpjdHhfcGljID0gaC0+ZnJhbWVzW0NVUl9GUkFNRV0uaHdhY2NlbF9waWN0dXJl X3ByaXZhdGU7CisKKyAgICBpbnQgaW5kZXg7CisgICAgdWludDhfdCAqbWFwcGVkX2RhdGE7Cisg ICAgRDNEMTJfVklERU9fREVDT0RFX0ZSQU1FX0FSR1VNRU5UICphcmdzOworCisgICAgaWYgKEZB SUxFRChJRDNEMTJSZXNvdXJjZV9NYXAoYnVmZmVyLCAwLCBOVUxMLCAmbWFwcGVkX2RhdGEpKSkg eworICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBtYXAgRDNE MTIgQnVmZmVyIHJlc291cmNlIVxuIik7CisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7 CisgICAgfQorCisgICAgYXJncyA9ICZpbnB1dF9hcmdzLT5GcmFtZUFyZ3VtZW50c1tpbnB1dF9h cmdzLT5OdW1GcmFtZUFyZ3VtZW50cysrXTsKKyAgICBhcmdzLT5UeXBlICA9IEQzRDEyX1ZJREVP X0RFQ09ERV9BUkdVTUVOVF9UWVBFX1NMSUNFX0NPTlRST0w7CisgICAgYXJncy0+U2l6ZSAgPSBz aXplb2YoY3R4X3BpYy0+c2xpY2UpOworICAgIGFyZ3MtPnBEYXRhID0gJmN0eF9waWMtPnNsaWNl OworCisgICAgbWVtY3B5KG1hcHBlZF9kYXRhLCBjdHhfcGljLT5iaXRzdHJlYW0sIGN0eF9waWMt PnNsaWNlLlNsaWNlQnl0ZXNJbkJ1ZmZlcik7CisKKyAgICBJRDNEMTJSZXNvdXJjZV9Vbm1hcChi dWZmZXIsIDAsIE5VTEwpOworCisgICAgaW5wdXRfYXJncy0+Q29tcHJlc3NlZEJpdHN0cmVhbSA9 IChEM0QxMl9WSURFT19ERUNPREVfQ09NUFJFU1NFRF9CSVRTVFJFQU0peworICAgICAgICAucEJ1 ZmZlciA9IGJ1ZmZlciwKKyAgICAgICAgLk9mZnNldCAgPSAwLAorICAgICAgICAuU2l6ZSAgICA9 IGN0eF9waWMtPnNsaWNlLlNsaWNlQnl0ZXNJbkJ1ZmZlciwKKyAgICB9OworCisgICAgaW5kZXgg PSBjdHhfcGljLT5wcC5DdXJyUGljLkluZGV4N0JpdHM7CisgICAgY3R4LT5yZWZfcmVzb3VyY2Vz W2luZGV4XSA9IGZyYW1lc19od2N0eC0+dGV4dHVyZV9pbmZvc1tpbmRleF0udGV4dHVyZTsKKwor ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMoY3R4X3BpYy0+cHAuZnJhbWVf cmVmcyk7IGkrKykgeworICAgICAgICBpbmRleCA9IGN0eF9waWMtPnBwLmZyYW1lX3JlZnNbaV0u SW5kZXg3Qml0czsKKyAgICAgICAgaWYgKGluZGV4ICE9IDB4N2YpIHsKKyAgICAgICAgICAgIGN0 eC0+cmVmX3Jlc291cmNlc1tpbmRleF0gPSBmcmFtZXNfaHdjdHgtPnRleHR1cmVfaW5mb3NbaW5k ZXhdLnRleHR1cmU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworc3Rh dGljIGludCBkM2QxMmRlY192cDlfZW5kX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKK3sK KyAgICBWUDlTaGFyZWRDb250ZXh0ICAgICAgICAgICpoID0gYXZjdHgtPnByaXZfZGF0YTsKKyAg ICBEM0QxMkRlY29kZVBpY3R1cmVDb250ZXh0ICpjdHhfcGljID0gaC0+ZnJhbWVzW0NVUl9GUkFN RV0uaHdhY2NlbF9waWN0dXJlX3ByaXZhdGU7CisKKyAgICBpZiAoY3R4X3BpYy0+Yml0c3RyZWFt X3NpemUgPD0gMCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIGZmX2QzZDEyZGVj X2NvbW1vbl9lbmRfZnJhbWUoYXZjdHgsIGgtPmZyYW1lc1tDVVJfRlJBTUVdLnRmLmYsCisgICAg ICAgICAgICAgICAmY3R4X3BpYy0+cHAsIHNpemVvZihjdHhfcGljLT5wcCksIE5VTEwsIDAsIHVw ZGF0ZV9pbnB1dF9hcmd1bWVudHMpOworfQorCitzdGF0aWMgaW50IGQzZDEyZGVjX3ZwOV9kZWNv ZGVfaW5pdChBVkNvZGVjQ29udGV4dCAqYXZjdHgpCit7CisgICAgRDNEMTJWQURlY29kZUNvbnRl eHQgKmN0eCA9IEQzRDEyVkFfREVDT0RFX0NPTlRFWFQoYXZjdHgpOworCisgICAgc3dpdGNoIChh dmN0eC0+cHJvZmlsZSkgeworICAgIGNhc2UgRkZfUFJPRklMRV9WUDlfMjoKKyAgICBjYXNlIEZG X1BST0ZJTEVfVlA5XzM6CisgICAgICAgIGN0eC0+Y2ZnLkRlY29kZVByb2ZpbGUgPSBEM0QxMl9W SURFT19ERUNPREVfUFJPRklMRV9WUDlfMTBCSVRfUFJPRklMRTI7CisgICAgICAgIGJyZWFrOwor CisgICAgY2FzZSBGRl9QUk9GSUxFX1ZQOV8wOgorICAgIGNhc2UgRkZfUFJPRklMRV9WUDlfMToK KyAgICBkZWZhdWx0OgorICAgICAgICBjdHgtPmNmZy5EZWNvZGVQcm9maWxlID0gRDNEMTJfVklE RU9fREVDT0RFX1BST0ZJTEVfVlA5OworICAgICAgICBicmVhazsKKyAgICB9OworCisgICAgcmV0 dXJuIGZmX2QzZDEyZGVjX2RlY29kZV9pbml0KGF2Y3R4KTsKK30KKworI2lmIENPTkZJR19WUDlf RDNEMTJERUNfSFdBQ0NFTAorY29uc3QgQVZIV0FjY2VsIGZmX3ZwOV9kM2QxMmRlY19od2FjY2Vs ID0geworICAgIC5uYW1lICAgICAgICAgICAgICAgICA9ICJ2cDlfZDNkMTJkZWMiLAorICAgIC50 eXBlICAgICAgICAgICAgICAgICA9IEFWTUVESUFfVFlQRV9WSURFTywKKyAgICAuaWQgICAgICAg ICAgICAgICAgICAgPSBBVl9DT0RFQ19JRF9WUDksCisgICAgLnBpeF9mbXQgICAgICAgICAgICAg ID0gQVZfUElYX0ZNVF9EM0QxMiwKKyAgICAuaW5pdCAgICAgICAgICAgICAgICAgPSBkM2QxMmRl Y192cDlfZGVjb2RlX2luaXQsCisgICAgLnVuaW5pdCAgICAgICAgICAgICAgID0gZmZfZDNkMTJk ZWNfZGVjb2RlX3VuaW5pdCwKKyAgICAuc3RhcnRfZnJhbWUgICAgICAgICAgPSBkM2QxMmRlY192 cDlfc3RhcnRfZnJhbWUsCisgICAgLmRlY29kZV9zbGljZSAgICAgICAgID0gZDNkMTJkZWNfdnA5 X2RlY29kZV9zbGljZSwKKyAgICAuZW5kX2ZyYW1lICAgICAgICAgICAgPSBkM2QxMmRlY192cDlf ZW5kX2ZyYW1lLAorICAgIC5mcmFtZV9wYXJhbXMgICAgICAgICA9IGZmX2QzZDEyZGVjX2NvbW1v bl9mcmFtZV9wYXJhbXMsCisgICAgLmZyYW1lX3ByaXZfZGF0YV9zaXplID0gc2l6ZW9mKHN0cnVj dCBEM0QxMkRlY29kZVBpY3R1cmVDb250ZXh0KSwKKyAgICAucHJpdl9kYXRhX3NpemUgICAgICAg PSBzaXplb2YoRDNEMTJWQURlY29kZUNvbnRleHQpLAorfTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv bGliYXZjb2RlYy9oMjY0X3NsaWNlLmMgYi9saWJhdmNvZGVjL2gyNjRfc2xpY2UuYwppbmRleCA2 ZjBhN2MxZmI3Li4wZjhlZTUyMzI5IDEwMDY0NAotLS0gYS9saWJhdmNvZGVjL2gyNjRfc2xpY2Uu YworKysgYi9saWJhdmNvZGVjL2gyNjRfc2xpY2UuYwpAQCAtNzkyLDYgKzc5Miw3IEBAIHN0YXRp YyBlbnVtIEFWUGl4ZWxGb3JtYXQgZ2V0X3BpeGVsX2Zvcm1hdChIMjY0Q29udGV4dCAqaCwgaW50 IGZvcmNlX2NhbGxiYWNrKQogewogI2RlZmluZSBIV0FDQ0VMX01BWCAoQ09ORklHX0gyNjRfRFhW QTJfSFdBQ0NFTCArIFwKICAgICAgICAgICAgICAgICAgICAgIChDT05GSUdfSDI2NF9EM0QxMVZB X0hXQUNDRUwgKiAyKSArIFwKKyAgICAgICAgICAgICAgICAgICAgIENPTkZJR19IMjY0X0QzRDEy REVDX0hXQUNDRUwgKyBcCiAgICAgICAgICAgICAgICAgICAgICBDT05GSUdfSDI2NF9OVkRFQ19I V0FDQ0VMICsgXAogICAgICAgICAgICAgICAgICAgICAgQ09ORklHX0gyNjRfVkFBUElfSFdBQ0NF TCArIFwKICAgICAgICAgICAgICAgICAgICAgIENPTkZJR19IMjY0X1ZJREVPVE9PTEJPWF9IV0FD Q0VMICsgXApAQCAtODgwLDYgKzg4MSw5IEBAIHN0YXRpYyBlbnVtIEFWUGl4ZWxGb3JtYXQgZ2V0 X3BpeGVsX2Zvcm1hdChIMjY0Q29udGV4dCAqaCwgaW50IGZvcmNlX2NhbGxiYWNrKQogICAgICAg ICAgICAgKmZtdCsrID0gQVZfUElYX0ZNVF9EM0QxMVZBX1ZMRDsKICAgICAgICAgICAgICpmbXQr KyA9IEFWX1BJWF9GTVRfRDNEMTE7CiAjZW5kaWYKKyNpZiBDT05GSUdfSDI2NF9EM0QxMkRFQ19I V0FDQ0VMCisgICAgICAgICAgICAqZm10KysgPSBBVl9QSVhfRk1UX0QzRDEyOworI2VuZGlmCiAj aWYgQ09ORklHX0gyNjRfVkFBUElfSFdBQ0NFTAogICAgICAgICAgICAgKmZtdCsrID0gQVZfUElY X0ZNVF9WQUFQSTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9oMjY0ZGVjLmMgYi9s aWJhdmNvZGVjL2gyNjRkZWMuYwppbmRleCA4ZjU2ZjNmZjkyLi40NDVjMzY4N2YzIDEwMDY0NAot LS0gYS9saWJhdmNvZGVjL2gyNjRkZWMuYworKysgYi9saWJhdmNvZGVjL2gyNjRkZWMuYwpAQCAt MTA4Niw3ICsxMDg2LDEwIEBAIGNvbnN0IEZGQ29kZWMgZmZfaDI2NF9kZWNvZGVyID0gewogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhXQUNDRUxfRDNEMTFWQShoMjY0KSwKICNlbmRp ZgogI2lmIENPTkZJR19IMjY0X0QzRDExVkEyX0hXQUNDRUwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBIV0FDQ0VMX0QzRDExVkEyKGgyNjQpLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEhXQUNDRUxfRDNEMTFWQShoMjY0KSwKKyNlbmRpZgorI2lmIENPTkZJR19IMjY0 X0QzRDEyREVDX0hXQUNDRUwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIV0FDQ0VM X0QzRDEyREVDKGgyNjQpLAogI2VuZGlmCiAjaWYgQ09ORklHX0gyNjRfTlZERUNfSFdBQ0NFTAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhXQUNDRUxfTlZERUMoaDI2NCksCmRpZmYg LS1naXQgYS9saWJhdmNvZGVjL2hldmNkZWMuYyBiL2xpYmF2Y29kZWMvaGV2Y2RlYy5jCmluZGV4 IGZiNDRkOGQzZjIuLmVlZTQxODM1Y2EgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvaGV2Y2RlYy5j CisrKyBiL2xpYmF2Y29kZWMvaGV2Y2RlYy5jCkBAIC00MDMsNiArNDAzLDcgQEAgc3RhdGljIGVu dW0gQVZQaXhlbEZvcm1hdCBnZXRfZm9ybWF0KEhFVkNDb250ZXh0ICpzLCBjb25zdCBIRVZDU1BT ICpzcHMpCiB7CiAjZGVmaW5lIEhXQUNDRUxfTUFYIChDT05GSUdfSEVWQ19EWFZBMl9IV0FDQ0VM ICsgXAogICAgICAgICAgICAgICAgICAgICAgQ09ORklHX0hFVkNfRDNEMTFWQV9IV0FDQ0VMICog MiArIFwKKyAgICAgICAgICAgICAgICAgICAgIENPTkZJR19IRVZDX0QzRDEyREVDX0hXQUNDRUwg KyBcCiAgICAgICAgICAgICAgICAgICAgICBDT05GSUdfSEVWQ19OVkRFQ19IV0FDQ0VMICsgXAog ICAgICAgICAgICAgICAgICAgICAgQ09ORklHX0hFVkNfVkFBUElfSFdBQ0NFTCArIFwKICAgICAg ICAgICAgICAgICAgICAgIENPTkZJR19IRVZDX1ZJREVPVE9PTEJPWF9IV0FDQ0VMICsgXApAQCAt NDE5LDYgKzQyMCw5IEBAIHN0YXRpYyBlbnVtIEFWUGl4ZWxGb3JtYXQgZ2V0X2Zvcm1hdChIRVZD Q29udGV4dCAqcywgY29uc3QgSEVWQ1NQUyAqc3BzKQogICAgICAgICAqZm10KysgPSBBVl9QSVhf Rk1UX0QzRDExVkFfVkxEOwogICAgICAgICAqZm10KysgPSBBVl9QSVhfRk1UX0QzRDExOwogI2Vu ZGlmCisjaWYgQ09ORklHX0hFVkNfRDNEMTJERUNfSFdBQ0NFTAorICAgICAgICAqZm10KysgPSBB Vl9QSVhfRk1UX0QzRDEyOworI2VuZGlmCiAjaWYgQ09ORklHX0hFVkNfVkFBUElfSFdBQ0NFTAog ICAgICAgICAqZm10KysgPSBBVl9QSVhfRk1UX1ZBQVBJOwogI2VuZGlmCkBAIC00NDAsNiArNDQ0 LDkgQEAgc3RhdGljIGVudW0gQVZQaXhlbEZvcm1hdCBnZXRfZm9ybWF0KEhFVkNDb250ZXh0ICpz LCBjb25zdCBIRVZDU1BTICpzcHMpCiAgICAgICAgICpmbXQrKyA9IEFWX1BJWF9GTVRfRDNEMTFW QV9WTEQ7CiAgICAgICAgICpmbXQrKyA9IEFWX1BJWF9GTVRfRDNEMTE7CiAjZW5kaWYKKyNpZiBD T05GSUdfSEVWQ19EM0QxMkRFQ19IV0FDQ0VMCisgICAgICAgICpmbXQrKyA9IEFWX1BJWF9GTVRf RDNEMTI7CisjZW5kaWYKICNpZiBDT05GSUdfSEVWQ19WQUFQSV9IV0FDQ0VMCiAgICAgICAgICpm bXQrKyA9IEFWX1BJWF9GTVRfVkFBUEk7CiAjZW5kaWYKQEAgLTM4NzgsNiArMzg4NSw5IEBAIGNv bnN0IEZGQ29kZWMgZmZfaGV2Y19kZWNvZGVyID0gewogI2lmIENPTkZJR19IRVZDX0QzRDExVkEy X0hXQUNDRUwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIV0FDQ0VMX0QzRDExVkEy KGhldmMpLAogI2VuZGlmCisjaWYgQ09ORklHX0hFVkNfRDNEMTJERUNfSFdBQ0NFTAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEhXQUNDRUxfRDNEMTJERUMoaGV2YyksCisjZW5kaWYK ICNpZiBDT05GSUdfSEVWQ19OVkRFQ19IV0FDQ0VMCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSFdBQ0NFTF9OVkRFQyhoZXZjKSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliYXZjb2Rl Yy9od2FjY2Vscy5oIGIvbGliYXZjb2RlYy9od2FjY2Vscy5oCmluZGV4IGFjYTU1ODMxZjMuLjJl MWNjNDc0ODYgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvaHdhY2NlbHMuaAorKysgYi9saWJhdmNv ZGVjL2h3YWNjZWxzLmgKQEAgLTIzLDYgKzIzLDcgQEAKIAogZXh0ZXJuIGNvbnN0IEFWSFdBY2Nl bCBmZl9hdjFfZDNkMTF2YV9od2FjY2VsOwogZXh0ZXJuIGNvbnN0IEFWSFdBY2NlbCBmZl9hdjFf ZDNkMTF2YTJfaHdhY2NlbDsKK2V4dGVybiBjb25zdCBBVkhXQWNjZWwgZmZfYXYxX2QzZDEyZGVj X2h3YWNjZWw7CiBleHRlcm4gY29uc3QgQVZIV0FjY2VsIGZmX2F2MV9keHZhMl9od2FjY2VsOwog ZXh0ZXJuIGNvbnN0IEFWSFdBY2NlbCBmZl9hdjFfbnZkZWNfaHdhY2NlbDsKIGV4dGVybiBjb25z dCBBVkhXQWNjZWwgZmZfYXYxX3ZhYXBpX2h3YWNjZWw7CkBAIC0zMiwxMiArMzMsMTQgQEAgZXh0 ZXJuIGNvbnN0IEFWSFdBY2NlbCBmZl9oMjYzX3ZpZGVvdG9vbGJveF9od2FjY2VsOwogZXh0ZXJu IGNvbnN0IEFWSFdBY2NlbCBmZl9oMjY0X2QzZDExdmFfaHdhY2NlbDsKIGV4dGVybiBjb25zdCBB VkhXQWNjZWwgZmZfaDI2NF9kM2QxMXZhMl9od2FjY2VsOwogZXh0ZXJuIGNvbnN0IEFWSFdBY2Nl bCBmZl9oMjY0X2R4dmEyX2h3YWNjZWw7CitleHRlcm4gY29uc3QgQVZIV0FjY2VsIGZmX2gyNjRf ZDNkMTJkZWNfaHdhY2NlbDsKIGV4dGVybiBjb25zdCBBVkhXQWNjZWwgZmZfaDI2NF9udmRlY19o d2FjY2VsOwogZXh0ZXJuIGNvbnN0IEFWSFdBY2NlbCBmZl9oMjY0X3ZhYXBpX2h3YWNjZWw7CiBl eHRlcm4gY29uc3QgQVZIV0FjY2VsIGZmX2gyNjRfdmRwYXVfaHdhY2NlbDsKIGV4dGVybiBjb25z dCBBVkhXQWNjZWwgZmZfaDI2NF92aWRlb3Rvb2xib3hfaHdhY2NlbDsKIGV4dGVybiBjb25zdCBB VkhXQWNjZWwgZmZfaGV2Y19kM2QxMXZhX2h3YWNjZWw7CiBleHRlcm4gY29uc3QgQVZIV0FjY2Vs IGZmX2hldmNfZDNkMTF2YTJfaHdhY2NlbDsKK2V4dGVybiBjb25zdCBBVkhXQWNjZWwgZmZfaGV2 Y19kM2QxMmRlY19od2FjY2VsOwogZXh0ZXJuIGNvbnN0IEFWSFdBY2NlbCBmZl9oZXZjX2R4dmEy X2h3YWNjZWw7CiBleHRlcm4gY29uc3QgQVZIV0FjY2VsIGZmX2hldmNfbnZkZWNfaHdhY2NlbDsK IGV4dGVybiBjb25zdCBBVkhXQWNjZWwgZmZfaGV2Y192YWFwaV9od2FjY2VsOwpAQCAtNzAsNiAr NzMsNyBAQCBleHRlcm4gY29uc3QgQVZIV0FjY2VsIGZmX3ZwOF9udmRlY19od2FjY2VsOwogZXh0 ZXJuIGNvbnN0IEFWSFdBY2NlbCBmZl92cDhfdmFhcGlfaHdhY2NlbDsKIGV4dGVybiBjb25zdCBB VkhXQWNjZWwgZmZfdnA5X2QzZDExdmFfaHdhY2NlbDsKIGV4dGVybiBjb25zdCBBVkhXQWNjZWwg ZmZfdnA5X2QzZDExdmEyX2h3YWNjZWw7CitleHRlcm4gY29uc3QgQVZIV0FjY2VsIGZmX3ZwOV9k M2QxMmRlY19od2FjY2VsOwogZXh0ZXJuIGNvbnN0IEFWSFdBY2NlbCBmZl92cDlfZHh2YTJfaHdh Y2NlbDsKIGV4dGVybiBjb25zdCBBVkhXQWNjZWwgZmZfdnA5X252ZGVjX2h3YWNjZWw7CiBleHRl cm4gY29uc3QgQVZIV0FjY2VsIGZmX3ZwOV92YWFwaV9od2FjY2VsOwpkaWZmIC0tZ2l0IGEvbGli YXZjb2RlYy9od2NvbmZpZy5oIGIvbGliYXZjb2RlYy9od2NvbmZpZy5oCmluZGV4IDcyMTQyNDkx MmMuLmJkNGUzZjA0YjkgMTAwNjQ0Ci0tLSBhL2xpYmF2Y29kZWMvaHdjb25maWcuaAorKysgYi9s aWJhdmNvZGVjL2h3Y29uZmlnLmgKQEAgLTY4LDYgKzY4LDggQEAgdHlwZWRlZiBzdHJ1Y3QgQVZD b2RlY0hXQ29uZmlnSW50ZXJuYWwgewogICAgIEhXX0NPTkZJR19IV0FDQ0VMKDEsIDEsIDEsIERY VkEyX1ZMRCwgICAgRFhWQTIsICAgICAgICBmZl8gIyMgY29kZWMgIyMgX2R4dmEyX2h3YWNjZWwp CiAjZGVmaW5lIEhXQUNDRUxfRDNEMTFWQTIoY29kZWMpIFwKICAgICBIV19DT05GSUdfSFdBQ0NF TCgxLCAxLCAwLCBEM0QxMSwgICAgICAgIEQzRDExVkEsICAgICAgZmZfICMjIGNvZGVjICMjIF9k M2QxMXZhMl9od2FjY2VsKQorI2RlZmluZSBIV0FDQ0VMX0QzRDEyREVDKGNvZGVjKSBcCisgICAg SFdfQ09ORklHX0hXQUNDRUwoMSwgMSwgMCwgRDNEMTIsICAgICAgICBEM0QxMlZBLCAgICAgIGZm XyAjIyBjb2RlYyAjIyBfZDNkMTJkZWNfaHdhY2NlbCkKICNkZWZpbmUgSFdBQ0NFTF9OVkRFQyhj b2RlYykgXAogICAgIEhXX0NPTkZJR19IV0FDQ0VMKDEsIDEsIDAsIENVREEsICAgICAgICAgQ1VE QSwgICAgICAgICBmZl8gIyMgY29kZWMgIyMgX252ZGVjX2h3YWNjZWwpCiAjZGVmaW5lIEhXQUND RUxfVkFBUEkoY29kZWMpIFwKZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmVyc2lvbi5oIGIvbGli YXZjb2RlYy92ZXJzaW9uLmgKaW5kZXggYWRlMThjZGRjZC4uZjhhYmM4MDNiNiAxMDA2NDQKLS0t IGEvbGliYXZjb2RlYy92ZXJzaW9uLmgKKysrIGIvbGliYXZjb2RlYy92ZXJzaW9uLmgKQEAgLTI5 LDcgKzI5LDcgQEAKIAogI2luY2x1ZGUgInZlcnNpb25fbWFqb3IuaCIKIAotI2RlZmluZSBMSUJB VkNPREVDX1ZFUlNJT05fTUlOT1IgIDUwCisjZGVmaW5lIExJQkFWQ09ERUNfVkVSU0lPTl9NSU5P UiAgNTEKICNkZWZpbmUgTElCQVZDT0RFQ19WRVJTSU9OX01JQ1JPIDEwMAogCiAjZGVmaW5lIExJ QkFWQ09ERUNfVkVSU0lPTl9JTlQgIEFWX1ZFUlNJT05fSU5UKExJQkFWQ09ERUNfVkVSU0lPTl9N QUpPUiwgXApkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy92cDkuYyBiL2xpYmF2Y29kZWMvdnA5LmMK aW5kZXggN2MwYTI0NjQ0Ni4uYTk5NzkzMTA2MyAxMDA2NDQKLS0tIGEvbGliYXZjb2RlYy92cDku YworKysgYi9saWJhdmNvZGVjL3ZwOS5jCkBAIC0xODQsNiArMTg0LDcgQEAgc3RhdGljIGludCB1 cGRhdGVfc2l6ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIGludCB3LCBpbnQgaCkKIHsKICNkZWZp bmUgSFdBQ0NFTF9NQVggKENPTkZJR19WUDlfRFhWQTJfSFdBQ0NFTCArIFwKICAgICAgICAgICAg ICAgICAgICAgIENPTkZJR19WUDlfRDNEMTFWQV9IV0FDQ0VMICogMiArIFwKKyAgICAgICAgICAg ICAgICAgICAgIENPTkZJR19WUDlfRDNEMTJERUNfSFdBQ0NFTCArIFwKICAgICAgICAgICAgICAg ICAgICAgIENPTkZJR19WUDlfTlZERUNfSFdBQ0NFTCArIFwKICAgICAgICAgICAgICAgICAgICAg IENPTkZJR19WUDlfVkFBUElfSFdBQ0NFTCArIFwKICAgICAgICAgICAgICAgICAgICAgIENPTkZJ R19WUDlfVkRQQVVfSFdBQ0NFTCArIFwKQEAgLTIxMCw2ICsyMTEsOSBAQCBzdGF0aWMgaW50IHVw ZGF0ZV9zaXplKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgaW50IHcsIGludCBoKQogICAgICAgICAg ICAgKmZtdHArKyA9IEFWX1BJWF9GTVRfRDNEMTFWQV9WTEQ7CiAgICAgICAgICAgICAqZm10cCsr ID0gQVZfUElYX0ZNVF9EM0QxMTsKICNlbmRpZgorI2lmIENPTkZJR19WUDlfRDNEMTJERUNfSFdB Q0NFTAorICAgICAgICAgICAgKmZtdHArKyA9IEFWX1BJWF9GTVRfRDNEMTI7CisjZW5kaWYKICNp ZiBDT05GSUdfVlA5X05WREVDX0hXQUNDRUwKICAgICAgICAgICAgICpmbXRwKysgPSBBVl9QSVhf Rk1UX0NVREE7CiAjZW5kaWYKQEAgLTE4OTcsNiArMTkwMSw5IEBAIGNvbnN0IEZGQ29kZWMgZmZf dnA5X2RlY29kZXIgPSB7CiAjaWYgQ09ORklHX1ZQOV9EM0QxMVZBMl9IV0FDQ0VMCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSFdBQ0NFTF9EM0QxMVZBMih2cDkpLAogI2VuZGlmCisj aWYgQ09ORklHX1ZQOV9EM0QxMkRFQ19IV0FDQ0VMCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSFdBQ0NFTF9EM0QxMkRFQyh2cDkpLAorI2VuZGlmCiAjaWYgQ09ORklHX1ZQOV9OVkRF Q19IV0FDQ0VMCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFdBQ0NFTF9OVkRFQyh2 cDkpLAogI2VuZGlmCmRpZmYgLS1naXQgYS9saWJhdnV0aWwvTWFrZWZpbGUgYi9saWJhdnV0aWwv TWFrZWZpbGUKaW5kZXggM2Q5YzA3YWVhOC4uMTIxZDg3ZTlhNSAxMDA2NDQKLS0tIGEvbGliYXZ1 dGlsL01ha2VmaWxlCisrKyBiL2xpYmF2dXRpbC9NYWtlZmlsZQpAQCAtNDAsNiArNDAsNyBAQCBI RUFERVJTID0gYWRsZXIzMi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCiAgICAgICAgICAgaHdjb250ZXh0LmggICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgaHdjb250ZXh0X2N1 ZGEuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAg ICAgICAgaHdjb250ZXh0X2QzZDExdmEuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCisgICAgICAgICAgaHdjb250ZXh0X2QzZDEydmEuaCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgaHdjb250ZXh0X2RybS5o ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAg ICAgaHdjb250ZXh0X2R4dmEyLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCiAgICAgICAgICAgaHdjb250ZXh0X3Fzdi5oICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xODUsNiArMTg2LDcgQEAgT0JKUyA9IGFk bGVyMzIubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAogCiBPQkpTLSQoQ09ORklHX0NVREEpICAgICAgICAgICAgICAgICAgICAgKz0gaHdj b250ZXh0X2N1ZGEubwogT0JKUy0kKENPTkZJR19EM0QxMVZBKSAgICAgICAgICAgICAgICAgICs9 IGh3Y29udGV4dF9kM2QxMXZhLm8KK09CSlMtJChDT05GSUdfRDNEMTJWQSkgICAgICAgICAgICAg ICAgICArPSBod2NvbnRleHRfZDNkMTJ2YS5vCiBPQkpTLSQoQ09ORklHX0RYVkEyKSAgICAgICAg ICAgICAgICAgICAgKz0gaHdjb250ZXh0X2R4dmEyLm8KIE9CSlMtJChDT05GSUdfTElCRFJNKSAg ICAgICAgICAgICAgICAgICArPSBod2NvbnRleHRfZHJtLm8KIE9CSlMtJChDT05GSUdfTUFDT1Nf S1BFUkYpICAgICAgICAgICAgICArPSBtYWNvc19rcGVyZi5vCkBAIC0yMDgsNiArMjEwLDcgQEAg U0tJUEhFQURFUlMtJChIQVZFX0NVREFfSCkgICAgICAgICAgICAgKz0gaHdjb250ZXh0X2N1ZGEu aAogU0tJUEhFQURFUlMtJChDT05GSUdfQ1VEQSkgICAgICAgICAgICAgKz0gaHdjb250ZXh0X2N1 ZGFfaW50ZXJuYWwuaCAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY3VkYV9jaGVjay5oCiBTS0lQSEVBREVSUy0kKENPTkZJR19EM0QxMVZBKSAgICAgICAg ICArPSBod2NvbnRleHRfZDNkMTF2YS5oCitTS0lQSEVBREVSUy0kKENPTkZJR19EM0QxMlZBKSAg ICAgICAgICArPSBod2NvbnRleHRfZDNkMTJ2YS5oCiBTS0lQSEVBREVSUy0kKENPTkZJR19EWFZB MikgICAgICAgICAgICArPSBod2NvbnRleHRfZHh2YTIuaAogU0tJUEhFQURFUlMtJChDT05GSUdf UVNWKSAgICAgICAgICAgICAgKz0gaHdjb250ZXh0X3Fzdi5oCiBTS0lQSEVBREVSUy0kKENPTkZJ R19PUEVOQ0wpICAgICAgICAgICArPSBod2NvbnRleHRfb3BlbmNsLmgKZGlmZiAtLWdpdCBhL2xp YmF2dXRpbC9od2NvbnRleHQuYyBiL2xpYmF2dXRpbC9od2NvbnRleHQuYwppbmRleCBhYjlhZDM3 MDNlLi45MDk3MWZiZWNlIDEwMDY0NAotLS0gYS9saWJhdnV0aWwvaHdjb250ZXh0LmMKKysrIGIv bGliYXZ1dGlsL2h3Y29udGV4dC5jCkBAIC0zNiw2ICszNiw5IEBAIHN0YXRpYyBjb25zdCBIV0Nv bnRleHRUeXBlICogY29uc3QgaHdfdGFibGVbXSA9IHsKICNpZiBDT05GSUdfRDNEMTFWQQogICAg ICZmZl9od2NvbnRleHRfdHlwZV9kM2QxMXZhLAogI2VuZGlmCisjaWYgQ09ORklHX0QzRDEyVkEK KyAgICAmZmZfaHdjb250ZXh0X3R5cGVfZDNkMTJ2YSwKKyNlbmRpZgogI2lmIENPTkZJR19MSUJE Uk0KICAgICAmZmZfaHdjb250ZXh0X3R5cGVfZHJtLAogI2VuZGlmCkBAIC03MSw2ICs3NCw3IEBA IHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBod190eXBlX25hbWVzW10gPSB7CiAgICAgW0FWX0hX REVWSUNFX1RZUEVfRFJNXSAgICA9ICJkcm0iLAogICAgIFtBVl9IV0RFVklDRV9UWVBFX0RYVkEy XSAgPSAiZHh2YTIiLAogICAgIFtBVl9IV0RFVklDRV9UWVBFX0QzRDExVkFdID0gImQzZDExdmEi LAorICAgIFtBVl9IV0RFVklDRV9UWVBFX0QzRDEyVkFdID0gImQzZDEydmEiLAogICAgIFtBVl9I V0RFVklDRV9UWVBFX09QRU5DTF0gPSAib3BlbmNsIiwKICAgICBbQVZfSFdERVZJQ0VfVFlQRV9R U1ZdICAgID0gInFzdiIsCiAgICAgW0FWX0hXREVWSUNFX1RZUEVfVkFBUEldICA9ICJ2YWFwaSIs CmRpZmYgLS1naXQgYS9saWJhdnV0aWwvaHdjb250ZXh0LmggYi9saWJhdnV0aWwvaHdjb250ZXh0 LmgKaW5kZXggYzE4YjdlMWU4Yi4uZDg5MjVjNDU3NCAxMDA2NDQKLS0tIGEvbGliYXZ1dGlsL2h3 Y29udGV4dC5oCisrKyBiL2xpYmF2dXRpbC9od2NvbnRleHQuaApAQCAtMzMsNiArMzMsNyBAQCBl bnVtIEFWSFdEZXZpY2VUeXBlIHsKICAgICBBVl9IV0RFVklDRV9UWVBFX1FTViwKICAgICBBVl9I V0RFVklDRV9UWVBFX1ZJREVPVE9PTEJPWCwKICAgICBBVl9IV0RFVklDRV9UWVBFX0QzRDExVkEs CisgICAgQVZfSFdERVZJQ0VfVFlQRV9EM0QxMlZBLAogICAgIEFWX0hXREVWSUNFX1RZUEVfRFJN LAogICAgIEFWX0hXREVWSUNFX1RZUEVfT1BFTkNMLAogICAgIEFWX0hXREVWSUNFX1RZUEVfTUVE SUFDT0RFQywKZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9od2NvbnRleHRfZDNkMTJ2YS5jIGIvbGli YXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMC4uY2RlMjU5ZDY1OQotLS0gL2Rldi9udWxsCisrKyBiL2xpYmF2dXRpbC9od2NvbnRl eHRfZDNkMTJ2YS5jCkBAIC0wLDAgKzEsNjg3IEBACisvKgorICogRGlyZWN0WCAxMiBIVyBhY2Nl bGVyYXRpb24uCisgKgorICogY29weXJpZ2h0IChjKSAyMDIyIFd1IEppYW5odWEgPHRvcXN4d0Bv dXRsb29rLmNvbT4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCisgKgorICog RkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1 YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO VQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgKi8KKworI2lu Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImNvbW1vbi5oIgorI2luY2x1ZGUgImh3Y29udGV4 dC5oIgorI2luY2x1ZGUgImh3Y29udGV4dF9kM2QxMnZhLmgiCisjaW5jbHVkZSAiaHdjb250ZXh0 X2ludGVybmFsLmgiCisjaW5jbHVkZSAiaW1ndXRpbHMuaCIKKyNpbmNsdWRlICJwaXhkZXNjLmgi CisjaW5jbHVkZSAicGl4Zm10LmgiCisjaW5jbHVkZSAidGhyZWFkLmgiCisKKyNpbmNsdWRlIDxp bml0Z3VpZC5oPgorI2luY2x1ZGUgPGR4Z2kxXzMuaD4KKwordHlwZWRlZiBIUkVTVUxUKFdJTkFQ SSAqUEZOX0NSRUFURV9EWEdJX0ZBQ1RPUlkyKShVSU5UIEZsYWdzLCBSRUZJSUQgcmlpZCwgdm9p ZCAqKnBwRmFjdG9yeSk7CisKK3N0YXRpYyBBVk9uY2UgZnVuY3Rpb25zX2xvYWRlZCA9IEFWX09O Q0VfSU5JVDsKKworc3RhdGljIFBGTl9DUkVBVEVfRFhHSV9GQUNUT1JZMiBkM2QxMnZhX2NyZWF0 ZV9keGdpX2ZhY3RvcnkyOworc3RhdGljIFBGTl9EM0QxMl9DUkVBVEVfREVWSUNFIGQzZDEydmFf Y3JlYXRlX2RldmljZTsKK3N0YXRpYyBQRk5fRDNEMTJfR0VUX0RFQlVHX0lOVEVSRkFDRSBkM2Qx MnZhX2dldF9kZWJ1Z19pbnRlcmZhY2U7CisKK3N0YXRpYyBhdl9jb2xkIHZvaWQgbG9hZF9mdW5j dGlvbnModm9pZCkKK3sKKyAgICBIQU5ETEUgZDNkbGliLCBkeGdpbGliOworCisgICAgZDNkbGli ICA9IGRsb3BlbigiZDNkMTIuZGxsIiwgMCk7CisgICAgZHhnaWxpYiA9IGRsb3BlbigiZHhnaS5k bGwiLCAwKTsKKyAgICBpZiAoIWQzZGxpYiB8fCAhZHhnaWxpYikKKyAgICAgICAgcmV0dXJuOwor CisgICAgZDNkMTJ2YV9jcmVhdGVfZGV2aWNlID0gKFBGTl9EM0QxMl9DUkVBVEVfREVWSUNFKUdl dFByb2NBZGRyZXNzKGQzZGxpYiwgIkQzRDEyQ3JlYXRlRGV2aWNlIik7CisgICAgZDNkMTJ2YV9j cmVhdGVfZHhnaV9mYWN0b3J5MiA9IChQRk5fQ1JFQVRFX0RYR0lfRkFDVE9SWTIpR2V0UHJvY0Fk ZHJlc3MoZHhnaWxpYiwgIkNyZWF0ZURYR0lGYWN0b3J5MiIpOworICAgIGQzZDEydmFfZ2V0X2Rl YnVnX2ludGVyZmFjZSA9IChQRk5fRDNEMTJfR0VUX0RFQlVHX0lOVEVSRkFDRSlHZXRQcm9jQWRk cmVzcyhkM2RsaWIsICJEM0QxMkdldERlYnVnSW50ZXJmYWNlIik7Cit9CisKK3R5cGVkZWYgc3Ry dWN0IEQzRDEyVkFGcmFtZXNDb250ZXh0IHsKKyAgICBpbnQgbmJfc3VyZmFjZXM7CisKKyAgICBp bnQgbmJfc3VyZmFjZXNfdXNlZDsKKworICAgIERYR0lfRk9STUFUIGZvcm1hdDsKKworICAgIFVJ TlQgbHVtYV9jb21wb25lbnRfc2l6ZTsKKworICAgIElEM0QxMlJlc291cmNlICpzdGFnaW5nX2J1 ZmZlcjsKK30gRDNEMTJWQUZyYW1lc0NvbnRleHQ7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgewor ICAgIERYR0lfRk9STUFUIGQzZF9mb3JtYXQ7CisgICAgZW51bSBBVlBpeGVsRm9ybWF0IHBpeF9m bXQ7Cit9IHN1cHBvcnRlZF9mb3JtYXRzW10gPSB7CisgICAgeyBEWEdJX0ZPUk1BVF9OVjEyLCBB Vl9QSVhfRk1UX05WMTIgfSwKKyAgICB7IERYR0lfRk9STUFUX1AwMTAsIEFWX1BJWF9GTVRfUDAx MCB9LAorfTsKKworRFhHSV9GT1JNQVQgYXZfZDNkMTJ2YV9tYXBfc3dfdG9faHdfZm9ybWF0KGVu dW0gQVZQaXhlbEZvcm1hdCBwaXhfZm10KQoreworICAgIHN3aXRjaCAocGl4X2ZtdCkgeworICAg IGNhc2UgQVZfUElYX0ZNVF9OVjEyOnJldHVybiBEWEdJX0ZPUk1BVF9OVjEyOworICAgIGNhc2Ug QVZfUElYX0ZNVF9QMDEwOnJldHVybiBEWEdJX0ZPUk1BVF9QMDEwOworICAgIGRlZmF1bHQ6ICAg ICAgICAgICAgIHJldHVybiBEWEdJX0ZPUk1BVF9VTktOT1dOOworICAgIH0KK30KKworaW50IGF2 X2QzZDEydmFfY3JlYXRlX3N5bmNfY29udGV4dChBVkQzRDEyVkFEZXZpY2VDb250ZXh0ICpjdHgs IEFWRDNEMTJWQVN5bmNDb250ZXh0ICoqc3luY19jdHgpCit7CisgICAgQVZEM0QxMlZBU3luY0Nv bnRleHQgKnN5bmM7CisKKyAgICAqc3luY19jdHggPSBhdl9tYWxsb2N6KHNpemVvZihBVkQzRDEy VkFTeW5jQ29udGV4dCkpOworICAgIHN5bmMgPSAqc3luY19jdHg7CisgICAgRFhfQ0hFQ0soSUQz RDEyRGV2aWNlX0NyZWF0ZUZlbmNlKGN0eC0+ZGV2aWNlLCBzeW5jLT5mZW5jZV92YWx1ZSwgRDNE MTJfRkVOQ0VfRkxBR19OT05FLCAmSUlEX0lEM0QxMkZlbmNlLCAmc3luYy0+ZmVuY2UpKTsKKwor ICAgIHN5bmMtPmV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNFLCBOVUxMKTsK KyAgICBpZiAoIXN5bmMtPmV2ZW50KQorICAgICAgICBnb3RvIGZhaWw7CisKKyAgICByZXR1cm4g MDsKKworZmFpbDoKKyAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworfQorCitpbnQgYXZfZDNk MTJ2YV9yZWxlYXNlX3N5bmNfY29udGV4dChBVkQzRDEyVkFTeW5jQ29udGV4dCAqc3luY19jdHgp Cit7CisgICAgaWYgKCFzeW5jX2N0eCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpbnQgcmV0 ID0gYXZfZDNkMTJ2YV93YWl0X2lkbGUoc3luY19jdHgpOworICAgIGlmIChyZXQgPCAwKQorICAg ICAgICByZXR1cm4gcmV0OworCisgICAgRDNEMTJfT0JKRUNUX1JFTEVBU0Uoc3luY19jdHgtPmZl bmNlKTsKKworICAgIGlmIChzeW5jX2N0eC0+ZXZlbnQgJiYgIUNsb3NlSGFuZGxlKHN5bmNfY3R4 LT5ldmVudCkpCisgICAgICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7CisKKyAgICBhdl9mcmVl cCgmc3luY19jdHgpOworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBhdl9kM2QxMnZhX3dhaXRf Zm9yX2ZlbmNlX3ZhbHVlKEFWRDNEMTJWQVN5bmNDb250ZXh0ICpzeW5jX2N0eCwgdWludDY0X3Qg ZmVuY2VfdmFsdWUpCit7CisgICAgdWludDY0X3QgY29tcGxldGlvbiA9IElEM0QxMkZlbmNlX0dl dENvbXBsZXRlZFZhbHVlKHN5bmNfY3R4LT5mZW5jZSk7CisgICAgaWYgKGNvbXBsZXRpb24gPCBm ZW5jZV92YWx1ZSkgeworICAgICAgICBpZiAoRkFJTEVEKElEM0QxMkZlbmNlX1NldEV2ZW50T25D b21wbGV0aW9uKHN5bmNfY3R4LT5mZW5jZSwgZmVuY2VfdmFsdWUsIHN5bmNfY3R4LT5ldmVudCkp KQorICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKworICAgICAgICBXYWl0Rm9y U2luZ2xlT2JqZWN0RXgoc3luY19jdHgtPmV2ZW50LCBJTkZJTklURSwgRkFMU0UpOworICAgIH0K KworICAgIHJldHVybiAwOworfQorCitpbnQgYXZfZDNkMTJ2YV93YWl0X2lkbGUoQVZEM0QxMlZB U3luY0NvbnRleHQgKmN0eCkKK3sKKyAgICByZXR1cm4gYXZfZDNkMTJ2YV93YWl0X2Zvcl9mZW5j ZV92YWx1ZShjdHgsIGN0eC0+ZmVuY2VfdmFsdWUpOworfQorCitpbnQgYXZfZDNkMTJ2YV93YWl0 X3F1ZXVlX2lkbGUoQVZEM0QxMlZBU3luY0NvbnRleHQgKnN5bmNfY3R4LCBJRDNEMTJDb21tYW5k UXVldWUgKmNvbW1hbmRfcXVldWUpCit7CisgICAgRFhfQ0hFQ0soSUQzRDEyQ29tbWFuZFF1ZXVl X1NpZ25hbChjb21tYW5kX3F1ZXVlLCBzeW5jX2N0eC0+ZmVuY2UsICsrc3luY19jdHgtPmZlbmNl X3ZhbHVlKSk7CisgICAgcmV0dXJuIGF2X2QzZDEydmFfd2FpdF9pZGxlKHN5bmNfY3R4KTsKKwor ZmFpbDoKKyAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworfQorCitzdGF0aWMgaW5saW5lIGlu dCBjcmVhdGVfcmVzb3VyY2UoSUQzRDEyRGV2aWNlICpkZXZpY2UsIGNvbnN0IEQzRDEyX1JFU09V UkNFX0RFU0MgKmRlc2MsIEQzRDEyX1JFU09VUkNFX1NUQVRFUyBzdGF0ZXMsIElEM0QxMlJlc291 cmNlICoqcHBSZXNvdXJjZSwgaW50IGlzX3JlYWRfYmFjaykKK3sKKyAgICBEM0QxMl9IRUFQX1BS T1BFUlRJRVMgcHJvcHMgPSB7CisgICAgICAgIC5UeXBlICAgICAgICAgICAgICAgICA9IGlzX3Jl YWRfYmFjayA/IEQzRDEyX0hFQVBfVFlQRV9SRUFEQkFDSyA6IEQzRDEyX0hFQVBfVFlQRV9ERUZB VUxULAorICAgICAgICAuQ1BVUGFnZVByb3BlcnR5ICAgICAgPSBEM0QxMl9DUFVfUEFHRV9QUk9Q RVJUWV9VTktOT1dOLAorICAgICAgICAuTWVtb3J5UG9vbFByZWZlcmVuY2UgPSBEM0QxMl9NRU1P UllfUE9PTF9VTktOT1dOLAorICAgICAgICAuQ3JlYXRpb25Ob2RlTWFzayAgICAgPSAwLAorICAg ICAgICAuVmlzaWJsZU5vZGVNYXNrICAgICAgPSAwLAorICAgIH07CisKKyAgICBpZiAoRkFJTEVE KElEM0QxMkRldmljZV9DcmVhdGVDb21taXR0ZWRSZXNvdXJjZShkZXZpY2UsICZwcm9wcywgRDNE MTJfSEVBUF9GTEFHX05PTkUsIGRlc2MsCisgICAgICAgIHN0YXRlcywgTlVMTCwgJklJRF9JRDNE MTJSZXNvdXJjZSwgcHBSZXNvdXJjZSkpKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwp OworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZDNkMTJ2YV9jcmVhdGVfaGVscGVy X29iamVjdHMoQVZIV0ZyYW1lc0NvbnRleHQgKmN0eCkKK3sKKyAgICBBVkQzRDEyVkFEZXZpY2VD b250ZXh0ICpod2N0eCA9IGN0eC0+ZGV2aWNlX2N0eC0+aHdjdHg7CisgICAgRDNEMTJfQ09NTUFO RF9RVUVVRV9ERVNDIHF1ZXVlX2Rlc2MgPSB7CisgICAgICAgIC5UeXBlID0gRDNEMTJfQ09NTUFO RF9MSVNUX1RZUEVfRElSRUNULAorICAgICAgICAuUHJpb3JpdHkgPSAwLAorICAgICAgICAuTm9k ZU1hc2sgPSAwLAorICAgIH07CisKKyAgICBEWF9DSEVDSyhJRDNEMTJEZXZpY2VfQ3JlYXRlQ29t bWFuZFF1ZXVlKGh3Y3R4LT5kZXZpY2UsICZxdWV1ZV9kZXNjLAorICAgICAgICAmSUlEX0lEM0Qx MkNvbW1hbmRRdWV1ZSwgJmh3Y3R4LT5jb21tYW5kX3F1ZXVlKSk7CisKKyAgICBEWF9DSEVDSyhJ RDNEMTJEZXZpY2VfQ3JlYXRlQ29tbWFuZEFsbG9jYXRvcihod2N0eC0+ZGV2aWNlLCBxdWV1ZV9k ZXNjLlR5cGUsCisgICAgICAgICZJSURfSUQzRDEyQ29tbWFuZEFsbG9jYXRvciwgJmh3Y3R4LT5j b21tYW5kX2FsbG9jYXRvcikpOworCisgICAgRFhfQ0hFQ0soSUQzRDEyRGV2aWNlX0NyZWF0ZUNv bW1hbmRMaXN0KGh3Y3R4LT5kZXZpY2UsIDAsIHF1ZXVlX2Rlc2MuVHlwZSwKKyAgICAgICAgaHdj dHgtPmNvbW1hbmRfYWxsb2NhdG9yLCBOVUxMLCAmSUlEX0lEM0QxMkdyYXBoaWNzQ29tbWFuZExp c3QsICZod2N0eC0+Y29tbWFuZF9saXN0KSk7CisKKyAgICBEWF9DSEVDSyhJRDNEMTJHcmFwaGlj c0NvbW1hbmRMaXN0X0Nsb3NlKGh3Y3R4LT5jb21tYW5kX2xpc3QpKTsKKworICAgIElEM0QxMkNv bW1hbmRRdWV1ZV9FeGVjdXRlQ29tbWFuZExpc3RzKGh3Y3R4LT5jb21tYW5kX3F1ZXVlLCAxLCAo SUQzRDEyQ29tbWFuZExpc3QgKiopJmh3Y3R4LT5jb21tYW5kX2xpc3QpOworCisgICAgcmV0dXJu IGF2X2QzZDEydmFfd2FpdF9xdWV1ZV9pZGxlKGh3Y3R4LT5zeW5jX2N0eCwgaHdjdHgtPmNvbW1h bmRfcXVldWUpOworCitmYWlsOgorICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cit9CisKK3N0 YXRpYyB2b2lkIGQzZDEydmFfZnJhbWVzX3VuaW5pdChBVkhXRnJhbWVzQ29udGV4dCAqY3R4KQor eworICAgIEFWRDNEMTJWQUZyYW1lc0NvbnRleHQgKmZyYW1lc19od2N0eCA9IGN0eC0+aHdjdHg7 CisgICAgRDNEMTJWQUZyYW1lc0NvbnRleHQgICAqcyAgICAgICAgICAgID0gY3R4LT5pbnRlcm5h bC0+cHJpdjsKKworICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKHMtPnN0YWdpbmdfYnVmZmVyKTsK KworICAgIGF2X2ZyZWVwKCZmcmFtZXNfaHdjdHgtPnRleHR1cmVfaW5mb3MpOworfQorCitzdGF0 aWMgaW50IGQzZDEydmFfZnJhbWVzX2dldF9jb25zdHJhaW50cyhBVkhXRGV2aWNlQ29udGV4dCAq Y3R4LCBjb25zdCB2b2lkICpod2NvbmZpZywgQVZIV0ZyYW1lc0NvbnN0cmFpbnRzICpjb25zdHJh aW50cykKK3sKKyAgICBIUkVTVUxUIGhyOworICAgIGludCBuYl9zd19mb3JtYXRzID0gMDsKKyAg ICBBVkQzRDEyVkFEZXZpY2VDb250ZXh0ICpkZXZpY2VfaHdjdHggPSBjdHgtPmh3Y3R4OworCisg ICAgY29uc3RyYWludHMtPnZhbGlkX3N3X2Zvcm1hdHMgPSBhdl9tYWxsb2NfYXJyYXkoRkZfQVJS QVlfRUxFTVMoc3VwcG9ydGVkX2Zvcm1hdHMpICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoKmNvbnN0cmFpbnRzLT52YWxpZF9z d19mb3JtYXRzKSk7CisgICAgaWYgKCFjb25zdHJhaW50cy0+dmFsaWRfc3dfZm9ybWF0cykKKyAg ICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg RkZfQVJSQVlfRUxFTVMoc3VwcG9ydGVkX2Zvcm1hdHMpOyBpKyspIHsKKyAgICAgICAgRDNEMTJf RkVBVFVSRV9EQVRBX0ZPUk1BVF9TVVBQT1JUIGZvcm1hdF9zdXBwb3J0ID0geyBzdXBwb3J0ZWRf Zm9ybWF0c1tpXS5kM2RfZm9ybWF0IH07CisgICAgICAgIGhyID0gSUQzRDEyRGV2aWNlX0NoZWNr RmVhdHVyZVN1cHBvcnQoZGV2aWNlX2h3Y3R4LT5kZXZpY2UsIEQzRDEyX0ZFQVRVUkVfRk9STUFU X1NVUFBPUlQsICZmb3JtYXRfc3VwcG9ydCwgc2l6ZW9mKGZvcm1hdF9zdXBwb3J0KSk7CisgICAg ICAgIGlmIChTVUNDRUVERUQoaHIpICYmIChmb3JtYXRfc3VwcG9ydC5TdXBwb3J0MSAmIEQzRDEy X0ZPUk1BVF9TVVBQT1JUMV9URVhUVVJFMkQpKQorICAgICAgICAgICAgY29uc3RyYWludHMtPnZh bGlkX3N3X2Zvcm1hdHNbbmJfc3dfZm9ybWF0cysrXSA9IHN1cHBvcnRlZF9mb3JtYXRzW2ldLnBp eF9mbXQ7CisgICAgfQorICAgIGNvbnN0cmFpbnRzLT52YWxpZF9zd19mb3JtYXRzW25iX3N3X2Zv cm1hdHNdID0gQVZfUElYX0ZNVF9OT05FOworCisgICAgY29uc3RyYWludHMtPnZhbGlkX2h3X2Zv cm1hdHMgPSBhdl9tYWxsb2NfYXJyYXkoMiwgc2l6ZW9mKCpjb25zdHJhaW50cy0+dmFsaWRfaHdf Zm9ybWF0cykpOworICAgIGlmICghY29uc3RyYWludHMtPnZhbGlkX2h3X2Zvcm1hdHMpCisgICAg ICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7CisKKyAgICBjb25zdHJhaW50cy0+dmFsaWRfaHdf Zm9ybWF0c1swXSA9IEFWX1BJWF9GTVRfRDNEMTI7CisgICAgY29uc3RyYWludHMtPnZhbGlkX2h3 X2Zvcm1hdHNbMV0gPSBBVl9QSVhfRk1UX05PTkU7CisKKyAgICByZXR1cm4gMDsKK30KKworc3Rh dGljIHZvaWQgZnJlZV90ZXh0dXJlKHZvaWQgKm9wYXF1ZSwgdWludDhfdCAqZGF0YSkKK3sKKyAg ICBBVkQzRDEyRnJhbWVEZXNjcmlwdG9yICpkZXNjID0gKEFWRDNEMTJGcmFtZURlc2NyaXB0b3Ig KilkYXRhOworCisgICAgaWYgKGRlc2MtPnN5bmNfY3R4KQorICAgICAgICBhdl9kM2QxMnZhX3Jl bGVhc2Vfc3luY19jb250ZXh0KGRlc2MtPnN5bmNfY3R4KTsKKworICAgIEQzRDEyX09CSkVDVF9S RUxFQVNFKGRlc2MtPnRleHR1cmUpOworICAgIGF2X2ZyZWVwKCZkYXRhKTsKK30KKworc3RhdGlj IEFWQnVmZmVyUmVmICp3cmFwX3RleHR1cmVfYnVmKEFWSFdGcmFtZXNDb250ZXh0ICpjdHgsIElE M0QxMlJlc291cmNlICp0ZXh0dXJlLCBBVkQzRDEyVkFTeW5jQ29udGV4dCAqc3luY19jdHgpCit7 CisgICAgQVZCdWZmZXJSZWYgKmJ1ZjsKKyAgICBEM0QxMlZBRnJhbWVzQ29udGV4dCAgICpzICAg ICAgICAgICAgPSBjdHgtPmludGVybmFsLT5wcml2OworICAgIEFWRDNEMTJWQUZyYW1lc0NvbnRl eHQgKmZyYW1lc19od2N0eCA9IGN0eC0+aHdjdHg7CisKKyAgICBBVkQzRDEyRnJhbWVEZXNjcmlw dG9yICpkZXNjID0gYXZfbWFsbG9jeihzaXplb2YoKmRlc2MpKTsKKyAgICBpZiAoIWRlc2MpCisg ICAgICAgIGdvdG8gZmFpbDsKKworICAgIGlmIChzLT5uYl9zdXJmYWNlcyA8PSBzLT5uYl9zdXJm YWNlc191c2VkKSB7CisgICAgICAgIGZyYW1lc19od2N0eC0+dGV4dHVyZV9pbmZvcyA9IGF2X3Jl YWxsb2NfZihmcmFtZXNfaHdjdHgtPnRleHR1cmVfaW5mb3MsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5uYl9zdXJmYWNlc191c2VkICsgMSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVv ZigqZnJhbWVzX2h3Y3R4LT50ZXh0dXJlX2luZm9zKSk7CisgICAgICAgIGlmICghZnJhbWVzX2h3 Y3R4LT50ZXh0dXJlX2luZm9zKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBzLT5u Yl9zdXJmYWNlcyA9IHMtPm5iX3N1cmZhY2VzX3VzZWQgKyAxOworICAgIH0KKworICAgIGRlc2Mt PnRleHR1cmUgID0gdGV4dHVyZTsKKyAgICBkZXNjLT5pbmRleCAgICA9IHMtPm5iX3N1cmZhY2Vz X3VzZWQ7CisgICAgZGVzYy0+c3luY19jdHggPSBzeW5jX2N0eDsKKworICAgIGZyYW1lc19od2N0 eC0+dGV4dHVyZV9pbmZvc1tzLT5uYl9zdXJmYWNlc191c2VkXS50ZXh0dXJlICA9IHRleHR1cmU7 CisgICAgZnJhbWVzX2h3Y3R4LT50ZXh0dXJlX2luZm9zW3MtPm5iX3N1cmZhY2VzX3VzZWRdLmlu ZGV4ICAgID0gZGVzYy0+aW5kZXg7CisgICAgZnJhbWVzX2h3Y3R4LT50ZXh0dXJlX2luZm9zW3Mt Pm5iX3N1cmZhY2VzX3VzZWRdLnN5bmNfY3R4ID0gc3luY19jdHg7CisgICAgcy0+bmJfc3VyZmFj ZXNfdXNlZCsrOworCisgICAgYnVmID0gYXZfYnVmZmVyX2NyZWF0ZSgodWludDhfdCAqKWRlc2Ms IHNpemVvZihkZXNjKSwgZnJlZV90ZXh0dXJlLCB0ZXh0dXJlLCAwKTsKKyAgICBpZiAoIWJ1Zikg eworICAgICAgICBEM0QxMl9PQkpFQ1RfUkVMRUFTRSh0ZXh0dXJlKTsKKyAgICAgICAgYXZfZnJl ZXAoJmRlc2MpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gYnVm OworCitmYWlsOgorICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKHRleHR1cmUpOworICAgIGF2X2Qz ZDEydmFfcmVsZWFzZV9zeW5jX2NvbnRleHQoc3luY19jdHgpOworICAgIHJldHVybiBOVUxMOwor fQorCitzdGF0aWMgQVZCdWZmZXJSZWYgKmQzZDEydmFfcG9vbF9hbGxvYyh2b2lkICpvcGFxdWUs IHNpemVfdCBzaXplKQoreworICAgIEFWSFdGcmFtZXNDb250ZXh0ICAgICAgKmN0eCAgICAgICAg ICA9IChBVkhXRnJhbWVzQ29udGV4dCAqKW9wYXF1ZTsKKyAgICBEM0QxMlZBRnJhbWVzQ29udGV4 dCAgICpzICAgICAgICAgICAgPSBjdHgtPmludGVybmFsLT5wcml2OworICAgIEFWRDNEMTJWQUZy YW1lc0NvbnRleHQgKmh3Y3R4ICAgICAgICA9IGN0eC0+aHdjdHg7CisgICAgQVZEM0QxMlZBRGV2 aWNlQ29udGV4dCAqZGV2aWNlX2h3Y3R4ID0gY3R4LT5kZXZpY2VfY3R4LT5od2N0eDsKKworICAg IGludCByZXQ7CisgICAgSUQzRDEyUmVzb3VyY2UgKnRleHR1cmU7CisgICAgQVZEM0QxMlZBU3lu Y0NvbnRleHQgKnN5bmNfY3R4OworCisgICAgRDNEMTJfUkVTT1VSQ0VfREVTQyBkZXNjID0gewor ICAgICAgICAuRGltZW5zaW9uICAgICAgICA9IEQzRDEyX1JFU09VUkNFX0RJTUVOU0lPTl9URVhU VVJFMkQsCisgICAgICAgIC5BbGlnbm1lbnQgICAgICAgID0gMCwKKyAgICAgICAgLldpZHRoICAg ICAgICAgICAgPSBjdHgtPndpZHRoLAorICAgICAgICAuSGVpZ2h0ICAgICAgICAgICA9IGN0eC0+ aGVpZ2h0LAorICAgICAgICAuRGVwdGhPckFycmF5U2l6ZSA9IDEsCisgICAgICAgIC5NaXBMZXZl bHMgICAgICAgID0gMSwKKyAgICAgICAgLkZvcm1hdCAgICAgICAgICAgPSBzLT5mb3JtYXQsCisg ICAgICAgIC5TYW1wbGVEZXNjICAgICAgID0gey5Db3VudCA9IDEsIC5RdWFsaXR5ID0gMCB9LAor ICAgICAgICAuTGF5b3V0ICAgICAgICAgICA9IEQzRDEyX1RFWFRVUkVfTEFZT1VUX1VOS05PV04s CisgICAgICAgIC5GbGFncyAgICAgICAgICAgID0gRDNEMTJfUkVTT1VSQ0VfRkxBR19OT05FLAor ICAgIH07CisKKyAgICByZXQgPSBjcmVhdGVfcmVzb3VyY2UoZGV2aWNlX2h3Y3R4LT5kZXZpY2Us ICZkZXNjLCBEM0QxMl9SRVNPVVJDRV9TVEFURV9DT01NT04sICZ0ZXh0dXJlLCAwKTsKKyAgICBp ZiAocmV0IDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXQgPSBhdl9kM2QxMnZh X2NyZWF0ZV9zeW5jX2NvbnRleHQoZGV2aWNlX2h3Y3R4LCAmc3luY19jdHgpOworICAgIGlmIChy ZXQgPCAwKSB7CisgICAgICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKHRleHR1cmUpCisgICAgICAg ICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gd3JhcF90ZXh0dXJlX2J1Zihj dHgsIHRleHR1cmUsIHN5bmNfY3R4KTsKK30KKworc3RhdGljIGludCBkM2QxMnZhX2NyZWF0ZV9z dGFnaW5nX2J1ZmZlcl9yZXNvdXJjZShBVkhXRnJhbWVzQ29udGV4dCAqY3R4LCBEWEdJX0ZPUk1B VCBmb3JtYXQpCit7CisgICAgQVZEM0QxMlZBRGV2aWNlQ29udGV4dCAqZGV2aWNlX2h3Y3R4ID0g Y3R4LT5kZXZpY2VfY3R4LT5od2N0eDsKKyAgICBEM0QxMlZBRnJhbWVzQ29udGV4dCAgICpzICAg ICAgICAgICAgPSBjdHgtPmludGVybmFsLT5wcml2OworCisgICAgRDNEMTJfUkVTT1VSQ0VfREVT QyBkZXNjID0geworICAgICAgICAuRGltZW5zaW9uICAgICAgICAgID0gRDNEMTJfUkVTT1VSQ0Vf RElNRU5TSU9OX0JVRkZFUiwKKyAgICAgICAgLkFsaWdubWVudCAgICAgICAgICA9IDAsCisgICAg ICAgIC5XaWR0aCAgICAgICAgICAgICAgPSAwLAorICAgICAgICAuSGVpZ2h0ICAgICAgICAgICAg ID0gMSwKKyAgICAgICAgLkRlcHRoT3JBcnJheVNpemUgICA9IDEsCisgICAgICAgIC5NaXBMZXZl bHMgICAgICAgICAgPSAxLAorCSAgICAuRm9ybWF0ICAgICAgICAgICAgID0gRFhHSV9GT1JNQVRf VU5LTk9XTiwKKwkgICAgLlNhbXBsZURlc2MgICAgICAgICA9IHsgLkNvdW50ID0gMSwgLlF1YWxp dHkgPSAwIH0sCisgICAgICAgIC5MYXlvdXQgICAgICAgICAgICAgPSBEM0QxMl9URVhUVVJFX0xB WU9VVF9ST1dfTUFKT1IsCisgICAgICAgIC5GbGFncyAgICAgICAgICAgICAgPSBEM0QxMl9SRVNP VVJDRV9GTEFHX05PTkUsCisgICAgfTsKKworICAgIHMtPmx1bWFfY29tcG9uZW50X3NpemUgPSBG RkFMSUdOKGN0eC0+d2lkdGgsIEQzRDEyX1RFWFRVUkVfREFUQV9QSVRDSF9BTElHTk1FTlQpICog Y3R4LT5oZWlnaHQgKiAoZm9ybWF0ID09IERYR0lfRk9STUFUX1AwMTAgPyAyIDogMSk7CisgICAg ZGVzYy5XaWR0aCA9IHMtPmx1bWFfY29tcG9uZW50X3NpemUgKyAocy0+bHVtYV9jb21wb25lbnRf c2l6ZSA+PiAxKTsKKworICAgIHJldHVybiBjcmVhdGVfcmVzb3VyY2UoZGV2aWNlX2h3Y3R4LT5k ZXZpY2UsICZkZXNjLCBEM0QxMl9SRVNPVVJDRV9TVEFURV9DT1BZX0RFU1QsICZzLT5zdGFnaW5n X2J1ZmZlciwgMSk7Cit9CisKK3N0YXRpYyBpbnQgZDNkMTJ2YV9mcmFtZXNfaW5pdChBVkhXRnJh bWVzQ29udGV4dCAqY3R4KQoreworICAgIEFWRDNEMTJWQUZyYW1lc0NvbnRleHQgKmh3Y3R4ICAg ICAgICA9IGN0eC0+aHdjdHg7CisgICAgQVZEM0QxMlZBRGV2aWNlQ29udGV4dCAqZGV2aWNlX2h3 Y3R4ID0gY3R4LT5kZXZpY2VfY3R4LT5od2N0eDsKKyAgICBEM0QxMlZBRnJhbWVzQ29udGV4dCAg ICpzICAgICAgICAgICAgPSBjdHgtPmludGVybmFsLT5wcml2OworCisgICAgaW50IGk7CisKKyAg ICBpZiAoY3R4LT5pbml0aWFsX3Bvb2xfc2l6ZSA+IEQzRDEyVkFfTUFYX1NVUkZBQ0VTKSB7Cisg ICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19XQVJOSU5HLCAiVG9vIGJpZyBpbml0aWFsIHBvb2wg c2l6ZSglZCkgZm9yIHN1cmZhY2VzLiAiCisgICAgICAgICAgICAiVGhlIHNpemUgd2lsbCBiZSBs aW1pdGVkIHRvICVkIGF1dG9tYXRpY2FsbHlcbiIsIGN0eC0+aW5pdGlhbF9wb29sX3NpemUsIEQz RDEyVkFfTUFYX1NVUkZBQ0VTKTsKKyAgICAgICAgY3R4LT5pbml0aWFsX3Bvb2xfc2l6ZSA9IEQz RDEyVkFfTUFYX1NVUkZBQ0VTOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBGRl9BUlJB WV9FTEVNUyhzdXBwb3J0ZWRfZm9ybWF0cyk7IGkrKykgeworICAgICAgICBpZiAoY3R4LT5zd19m b3JtYXQgPT0gc3VwcG9ydGVkX2Zvcm1hdHNbaV0ucGl4X2ZtdCkgeworICAgICAgICAgICAgcy0+ Zm9ybWF0ID0gc3VwcG9ydGVkX2Zvcm1hdHNbaV0uZDNkX2Zvcm1hdDsKKyAgICAgICAgICAgIGJy ZWFrOworICAgICAgICB9CisgICAgfQorICAgIGlmIChpID09IEZGX0FSUkFZX0VMRU1TKHN1cHBv cnRlZF9mb3JtYXRzKSkgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJVbnN1 cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLAorICAgICAgICAgICAgICAgYXZfZ2V0X3BpeF9m bXRfbmFtZShjdHgtPnN3X2Zvcm1hdCkpOworICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwp OworICAgIH0KKworICAgIGh3Y3R4LT50ZXh0dXJlX2luZm9zID0gYXZfcmVhbGxvY19mKE5VTEws IGN0eC0+aW5pdGlhbF9wb29sX3NpemUsIHNpemVvZigqaHdjdHgtPnRleHR1cmVfaW5mb3MpKTsK KyAgICBpZiAoIWh3Y3R4LT50ZXh0dXJlX2luZm9zKQorICAgICAgICByZXR1cm4gQVZFUlJPUihF Tk9NRU0pOworCisgICAgbWVtc2V0KGh3Y3R4LT50ZXh0dXJlX2luZm9zLCAwLCBjdHgtPmluaXRp YWxfcG9vbF9zaXplICogc2l6ZW9mKCpod2N0eC0+dGV4dHVyZV9pbmZvcykpOworICAgIHMtPm5i X3N1cmZhY2VzID0gY3R4LT5pbml0aWFsX3Bvb2xfc2l6ZTsKKworICAgIGN0eC0+aW50ZXJuYWwt PnBvb2xfaW50ZXJuYWwgPSBhdl9idWZmZXJfcG9vbF9pbml0MihzaXplb2YoQVZEM0QxMkZyYW1l RGVzY3JpcHRvciksCisgICAgICAgIGN0eCwgZDNkMTJ2YV9wb29sX2FsbG9jLCBOVUxMKTsKKwor ICAgIGlmICghY3R4LT5pbnRlcm5hbC0+cG9vbF9pbnRlcm5hbCkKKyAgICAgICAgcmV0dXJuIEFW RVJST1IoRU5PTUVNKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGQzZDEydmFf Z2V0X2J1ZmZlcihBVkhXRnJhbWVzQ29udGV4dCAqY3R4LCBBVkZyYW1lICpmcmFtZSkKK3sKKyAg ICBpbnQgcmV0OworICAgIEFWRDNEMTJGcmFtZURlc2NyaXB0b3IgKmRlc2M7CisKKyAgICBmcmFt ZS0+YnVmWzBdID0gYXZfYnVmZmVyX3Bvb2xfZ2V0KGN0eC0+cG9vbCk7CisgICAgaWYgKCFmcmFt ZS0+YnVmWzBdKQorICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOworCisgICAgcmV0ID0g YXZfaW1hZ2VfZmlsbF9hcnJheXMoZnJhbWUtPmRhdGEsIGZyYW1lLT5saW5lc2l6ZSwgZnJhbWUt PmJ1ZlswXS0+ZGF0YSwKKyAgICAgICAgY3R4LT5zd19mb3JtYXQsIGN0eC0+d2lkdGgsIGN0eC0+ aGVpZ2h0LCBEM0QxMl9URVhUVVJFX0RBVEFfUElUQ0hfQUxJR05NRU5UKTsKKyAgICBpZiAocmV0 IDwgMCkKKyAgICAgICAgcmV0dXJuIHJldDsKKworICAgIGRlc2MgPSAoQVZEM0QxMkZyYW1lRGVz Y3JpcHRvciAqKWZyYW1lLT5idWZbMF0tPmRhdGE7CisgICAgZnJhbWUtPmRhdGFbMF0gPSAodWlu dDhfdCAqKWRlc2MtPnRleHR1cmU7CisgICAgZnJhbWUtPmRhdGFbMV0gPSAodWludDhfdCAqKWRl c2MtPmluZGV4OworICAgIGZyYW1lLT5kYXRhWzJdID0gKHVpbnQ4X3QgKilkZXNjLT5zeW5jX2N0 eDsKKworICAgIGZyYW1lLT5mb3JtYXQgID0gQVZfUElYX0ZNVF9EM0QxMjsKKyAgICBmcmFtZS0+ d2lkdGggICA9IGN0eC0+d2lkdGg7CisgICAgZnJhbWUtPmhlaWdodCAgPSBjdHgtPmhlaWdodDsK KworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IGQzZDEydmFfdHJhbnNmZXJfZ2V0X2Zv cm1hdHMoQVZIV0ZyYW1lc0NvbnRleHQgKmN0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBlbnVtIEFWSFdGcmFtZVRyYW5zZmVyRGlyZWN0aW9uIGRpciwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIEFWUGl4ZWxGb3JtYXQgKipm b3JtYXRzKQoreworICAgIEQzRDEyVkFGcmFtZXNDb250ZXh0ICpzID0gY3R4LT5pbnRlcm5hbC0+ cHJpdjsKKyAgICBlbnVtIEFWUGl4ZWxGb3JtYXQgKmZtdHM7CisKKyAgICBmbXRzID0gYXZfbWFs bG9jX2FycmF5KDIsIHNpemVvZigqZm10cykpOworICAgIGlmICghZm10cykKKyAgICAgICAgcmV0 dXJuIEFWRVJST1IoRU5PTUVNKTsKKworICAgIGZtdHNbMF0gPSBjdHgtPnN3X2Zvcm1hdDsKKyAg ICBmbXRzWzFdID0gQVZfUElYX0ZNVF9OT05FOworCisgICAgKmZvcm1hdHMgPSBmbXRzOworCisg ICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZDNkMTJ2YV90cmFuc2Zlcl9kYXRhKEFWSFdG cmFtZXNDb250ZXh0ICpjdHgsIEFWRnJhbWUgKmRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IEFWRnJhbWUgKnNyYykKK3sKKyAgICBBVkQzRDEyVkFEZXZpY2VDb250 ZXh0ICpod2N0eCAgICAgICAgPSBjdHgtPmRldmljZV9jdHgtPmh3Y3R4OworICAgIEFWRDNEMTJW QUZyYW1lc0NvbnRleHQgKmZyYW1lc19od2N0eCA9IGN0eC0+aHdjdHg7CisgICAgRDNEMTJWQUZy YW1lc0NvbnRleHQgICAqcyAgICAgICAgICAgID0gY3R4LT5pbnRlcm5hbC0+cHJpdjsKKworICAg IGludCByZXQ7CisgICAgaW50IGRvd25sb2FkID0gc3JjLT5mb3JtYXQgPT0gQVZfUElYX0ZNVF9E M0QxMjsKKyAgICBjb25zdCBBVkZyYW1lICpmcmFtZSA9IGRvd25sb2FkID8gc3JjIDogZHN0Owor ICAgIGNvbnN0IEFWRnJhbWUgKm90aGVyID0gZG93bmxvYWQgPyBkc3QgOiBzcmM7CisgICAgRFhH SV9GT1JNQVQgZm9ybWF0ID0gYXZfZDNkMTJ2YV9tYXBfc3dfdG9faHdfZm9ybWF0KGN0eC0+c3df Zm9ybWF0KTsKKworICAgIElEM0QxMlJlc291cmNlICAgICAgICp0ZXh0dXJlICA9IChJRDNEMTJS ZXNvdXJjZSAqKSAgICAgIGZyYW1lLT5kYXRhWzBdOworICAgIGludCAgICAgICAgICAgICAgICAg ICBpbmRleCAgICA9IChpbnRwdHJfdCkgICAgICAgICAgICAgIGZyYW1lLT5kYXRhWzFdOworICAg IEFWRDNEMTJWQVN5bmNDb250ZXh0ICpzeW5jX2N0eCA9IChBVkQzRDEyVkFTeW5jQ29udGV4dCAq KWZyYW1lLT5kYXRhWzJdOworCisgICAgdWludDhfdCAqbWFwcGVkX2RhdGE7CisgICAgdWludDhf dCAqZGF0YVs0XTsKKyAgICBpbnQgbGluZXNpemVzWzRdOworCisgICAgRDNEMTJfVEVYVFVSRV9D T1BZX0xPQ0FUSU9OIHN0YWdpbmdfeV9sb2NhdGlvbjsKKyAgICBEM0QxMl9URVhUVVJFX0NPUFlf TE9DQVRJT04gc3RhZ2luZ191dl9sb2NhdGlvbjsKKworICAgIEQzRDEyX1RFWFRVUkVfQ09QWV9M T0NBVElPTiB0ZXh0dXJlX3lfbG9jYXRpb24gPSB7CisgICAgICAgIC5wUmVzb3VyY2UgICAgICAg ID0gdGV4dHVyZSwKKyAgICAgICAgLlR5cGUgICAgICAgICAgICAgPSBEM0QxMl9URVhUVVJFX0NP UFlfVFlQRV9TVUJSRVNPVVJDRV9JTkRFWCwKKyAgICAgICAgLlN1YnJlc291cmNlSW5kZXggPSAw LAorICAgIH07CisKKyAgICBEM0QxMl9URVhUVVJFX0NPUFlfTE9DQVRJT04gdGV4dHVyZV91dl9s b2NhdGlvbiA9IHsKKyAgICAgICAgLnBSZXNvdXJjZSAgICAgICAgPSB0ZXh0dXJlLAorICAgICAg ICAuVHlwZSAgICAgICAgICAgICA9IEQzRDEyX1RFWFRVUkVfQ09QWV9UWVBFX1NVQlJFU09VUkNF X0lOREVYLAorICAgICAgICAuU3VicmVzb3VyY2VJbmRleCA9IDEsCisgICAgfTsKKworICAgIEQz RDEyX1JFU09VUkNFX0JBUlJJRVIgYmFycmllciA9IHsKKyAgICAgICAgLlR5cGUgID0gRDNEMTJf UkVTT1VSQ0VfQkFSUklFUl9UWVBFX1RSQU5TSVRJT04sCisgICAgICAgIC5GbGFncyA9IEQzRDEy X1JFU09VUkNFX0JBUlJJRVJfRkxBR19OT05FLAorICAgICAgICAuVHJhbnNpdGlvbiA9IHsKKyAg ICAgICAgICAgIC5wUmVzb3VyY2UgICA9IHRleHR1cmUsCisgICAgICAgICAgICAuU3RhdGVCZWZv cmUgPSBEM0QxMl9SRVNPVVJDRV9TVEFURV9DT01NT04sCisgICAgICAgICAgICAuU3RhdGVBZnRl ciAgPSBEM0QxMl9SRVNPVVJDRV9TVEFURV9DT1BZX1NPVVJDRSwKKyAgICAgICAgICAgIC5TdWJy ZXNvdXJjZSA9IEQzRDEyX1JFU09VUkNFX0JBUlJJRVJfQUxMX1NVQlJFU09VUkNFUywKKyAgICAg ICAgfQorICAgIH07CisKKyAgICBpZiAoZnJhbWUtPmh3X2ZyYW1lc19jdHgtPmRhdGEgIT0gKHVp bnQ4X3QgKiljdHggfHwgb3RoZXItPmZvcm1hdCAhPSBjdHgtPnN3X2Zvcm1hdCkKKyAgICAgICAg cmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKworICAgIGlmICghcy0+c3RhZ2luZ19idWZmZXIpIHsK KyAgICAgICAgcmV0ID0gZDNkMTJ2YV9jcmVhdGVfc3RhZ2luZ19idWZmZXJfcmVzb3VyY2UoY3R4 LCBmb3JtYXQpOworICAgICAgICBpZiAocmV0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7 CisgICAgfQorCisgICAgaWYgKCFod2N0eC0+Y29tbWFuZF9xdWV1ZSkgeworICAgICAgICByZXQg PSBkM2QxMnZhX2NyZWF0ZV9oZWxwZXJfb2JqZWN0cyhjdHgpOworICAgICAgICBpZiAocmV0IDwg MCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCA0OyBpKyspCisgICAgICAgIGxpbmVzaXplc1tpXSA9IEZGQUxJR04oZnJhbWUtPndpZHRo ICogKGZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9QMDEwID8gMiA6IDEpLCBEM0QxMl9URVhUVVJFX0RB VEFfUElUQ0hfQUxJR05NRU5UKTsKKworICAgIHN0YWdpbmdfeV9sb2NhdGlvbiA9IChEM0QxMl9U RVhUVVJFX0NPUFlfTE9DQVRJT04pIHsKKyAgICAgICAgLnBSZXNvdXJjZSA9IHMtPnN0YWdpbmdf YnVmZmVyLAorICAgICAgICAuVHlwZSAgICAgID0gRDNEMTJfVEVYVFVSRV9DT1BZX1RZUEVfUExB Q0VEX0ZPT1RQUklOVCwKKyAgICAgICAgLlBsYWNlZEZvb3RwcmludCA9IHsKKyAgICAgICAgICAg IC5PZmZzZXQgPSAwLAorICAgICAgICAgICAgLkZvb3RwcmludCA9IHsKKyAgICAgICAgICAgICAg ICAuRm9ybWF0ICAgPSBmb3JtYXQgPT0gRFhHSV9GT1JNQVRfUDAxMCA/IERYR0lfRk9STUFUX1Ix Nl9VTk9STSA6IERYR0lfRk9STUFUX1I4X1VOT1JNLAorICAgICAgICAgICAgICAgIC5XaWR0aCAg ICA9IGN0eC0+d2lkdGgsCisgICAgICAgICAgICAgICAgLkhlaWdodCAgID0gY3R4LT5oZWlnaHQs CisgICAgICAgICAgICAgICAgLkRlcHRoICAgID0gMSwKKyAgICAgICAgICAgICAgICAuUm93UGl0 Y2ggPSBsaW5lc2l6ZXNbMF0sCisgICAgICAgICAgICB9LAorICAgICAgICB9LAorICAgIH07CisK KyAgICBzdGFnaW5nX3V2X2xvY2F0aW9uID0gKEQzRDEyX1RFWFRVUkVfQ09QWV9MT0NBVElPTikg eworICAgICAgICAucFJlc291cmNlID0gcy0+c3RhZ2luZ19idWZmZXIsCisgICAgICAgIC5UeXBl ICAgICAgPSBEM0QxMl9URVhUVVJFX0NPUFlfVFlQRV9QTEFDRURfRk9PVFBSSU5ULAorICAgICAg ICAuUGxhY2VkRm9vdHByaW50ID0geworICAgICAgICAgICAgLk9mZnNldCA9IHMtPmx1bWFfY29t cG9uZW50X3NpemUsCisgICAgICAgICAgICAuRm9vdHByaW50ID0geworICAgICAgICAgICAgICAg IC5Gb3JtYXQgICA9IGZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9QMDEwID8gRFhHSV9GT1JNQVRfUjE2 RzE2X1VOT1JNIDogRFhHSV9GT1JNQVRfUjhHOF9VTk9STSwKKyAgICAgICAgICAgICAgICAuV2lk dGggICAgPSBjdHgtPndpZHRoICA+PiAxLAorICAgICAgICAgICAgICAgIC5IZWlnaHQgICA9IGN0 eC0+aGVpZ2h0ID4+IDEsCisgICAgICAgICAgICAgICAgLkRlcHRoICAgID0gMSwKKyAgICAgICAg ICAgICAgICAuUm93UGl0Y2ggPSBsaW5lc2l6ZXNbMF0sCisgICAgICAgICAgICB9LAorICAgICAg ICB9LAorICAgIH07CisKKyAgICBEWF9DSEVDSyhJRDNEMTJDb21tYW5kQWxsb2NhdG9yX1Jlc2V0 KGh3Y3R4LT5jb21tYW5kX2FsbG9jYXRvcikpOworCisgICAgRFhfQ0hFQ0soSUQzRDEyR3JhcGhp Y3NDb21tYW5kTGlzdF9SZXNldChod2N0eC0+Y29tbWFuZF9saXN0LCBod2N0eC0+Y29tbWFuZF9h bGxvY2F0b3IsIE5VTEwpKTsKKworICAgIGlmIChkb3dubG9hZCkgeworICAgICAgICBJRDNEMTJH cmFwaGljc0NvbW1hbmRMaXN0X1Jlc291cmNlQmFycmllcihod2N0eC0+Y29tbWFuZF9saXN0LCAx LCAmYmFycmllcik7CisKKyAgICAgICAgSUQzRDEyR3JhcGhpY3NDb21tYW5kTGlzdF9Db3B5VGV4 dHVyZVJlZ2lvbihod2N0eC0+Y29tbWFuZF9saXN0LAorICAgICAgICAgICAgJnN0YWdpbmdfeV9s b2NhdGlvbiwgMCwgMCwgMCwgJnRleHR1cmVfeV9sb2NhdGlvbiwgTlVMTCk7CisKKyAgICAgICAg SUQzRDEyR3JhcGhpY3NDb21tYW5kTGlzdF9Db3B5VGV4dHVyZVJlZ2lvbihod2N0eC0+Y29tbWFu ZF9saXN0LAorICAgICAgICAgICAgJnN0YWdpbmdfdXZfbG9jYXRpb24sIDAsIDAsIDAsICZ0ZXh0 dXJlX3V2X2xvY2F0aW9uLCBOVUxMKTsKKworICAgICAgICBiYXJyaWVyLlRyYW5zaXRpb24uU3Rh dGVCZWZvcmUgPSBiYXJyaWVyLlRyYW5zaXRpb24uU3RhdGVBZnRlcjsKKyAgICAgICAgYmFycmll ci5UcmFuc2l0aW9uLlN0YXRlQWZ0ZXIgPSBEM0QxMl9SRVNPVVJDRV9TVEFURV9DT01NT047Cisg ICAgICAgIElEM0QxMkdyYXBoaWNzQ29tbWFuZExpc3RfUmVzb3VyY2VCYXJyaWVyKGh3Y3R4LT5j b21tYW5kX2xpc3QsIDEsICZiYXJyaWVyKTsKKworICAgICAgICBEWF9DSEVDSyhJRDNEMTJHcmFw aGljc0NvbW1hbmRMaXN0X0Nsb3NlKGh3Y3R4LT5jb21tYW5kX2xpc3QpKTsKKworICAgICAgICBy ZXQgPSBhdl9kM2QxMnZhX3dhaXRfaWRsZShzeW5jX2N0eCk7CisgICAgICAgIGlmIChyZXQpCisg ICAgICAgICAgICByZXR1cm4gcmV0OworCisgICAgICAgIElEM0QxMkNvbW1hbmRRdWV1ZV9FeGVj dXRlQ29tbWFuZExpc3RzKGh3Y3R4LT5jb21tYW5kX3F1ZXVlLCAxLCAoSUQzRDEyQ29tbWFuZExp c3QgKiopJmh3Y3R4LT5jb21tYW5kX2xpc3QpOworCisgICAgICAgIHJldCA9IGF2X2QzZDEydmFf d2FpdF9xdWV1ZV9pZGxlKGh3Y3R4LT5zeW5jX2N0eCwgaHdjdHgtPmNvbW1hbmRfcXVldWUpOzsK KyAgICAgICAgaWYgKHJldCkKKyAgICAgICAgICAgIHJldHVybiByZXQ7CisKKyAgICAgICAgRFhf Q0hFQ0soSUQzRDEyUmVzb3VyY2VfTWFwKHMtPnN0YWdpbmdfYnVmZmVyLCAwLCBOVUxMLCAmbWFw cGVkX2RhdGEpKTsKKyAgICAgICAgYXZfaW1hZ2VfZmlsbF9wb2ludGVycyhkYXRhLCBjdHgtPnN3 X2Zvcm1hdCwgY3R4LT5oZWlnaHQsIG1hcHBlZF9kYXRhLCBsaW5lc2l6ZXMpOworCisgICAgICAg IGF2X2ltYWdlX2NvcHkoZHN0LT5kYXRhLCBkc3QtPmxpbmVzaXplLCBkYXRhLCBsaW5lc2l6ZXMs CisgICAgICAgICAgICBjdHgtPnN3X2Zvcm1hdCwgY3R4LT53aWR0aCwgY3R4LT5oZWlnaHQpOwor CisgICAgICAgIElEM0QxMlJlc291cmNlX1VubWFwKHMtPnN0YWdpbmdfYnVmZmVyLCAwLCBOVUxM KTsKKyAgICB9IGVsc2UgeworICAgICAgICBhdl9sb2coY3R4LCBBVl9MT0dfRVJST1IsICJUcmFu c2ZlciBkYXRhIHRvIEFWX1BJWF9GTVRfRDNEMTIgaXMgbm90IHN1cHBvcnRlZCB5ZXQhXG4iKTsK KyAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsK KworZmFpbDoKKyAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOworfQorCitzdGF0aWMgaW50IGQz ZDEydmFfZGV2aWNlX2luaXQoQVZIV0RldmljZUNvbnRleHQgKmh3ZGV2KQoreworICAgIEFWRDNE MTJWQURldmljZUNvbnRleHQgKmN0eCA9IGh3ZGV2LT5od2N0eDsKKworICAgIGlmICghY3R4LT52 aWRlb19kZXZpY2UpCisgICAgICAgIERYX0NIRUNLKElEM0QxMkRldmljZV9RdWVyeUludGVyZmFj ZShjdHgtPmRldmljZSwgJklJRF9JRDNEMTJWaWRlb0RldmljZSwgKHZvaWQgKiopJmN0eC0+dmlk ZW9fZGV2aWNlKSk7CisKKyAgICByZXR1cm4gYXZfZDNkMTJ2YV9jcmVhdGVfc3luY19jb250ZXh0 KGN0eCwgJmN0eC0+c3luY19jdHgpOworCitmYWlsOgorICAgIHJldHVybiBBVkVSUk9SKEVJTlZB TCk7Cit9CisKK3N0YXRpYyB2b2lkIGQzZDEydmFfZGV2aWNlX3VuaW5pdChBVkhXRGV2aWNlQ29u dGV4dCAqaHdkZXYpCit7CisgICAgQVZEM0QxMlZBRGV2aWNlQ29udGV4dCAqZGV2aWNlX2h3Y3R4 ID0gaHdkZXYtPmh3Y3R4OworCisgICAgYXZfZDNkMTJ2YV9yZWxlYXNlX3N5bmNfY29udGV4dChk ZXZpY2VfaHdjdHgtPnN5bmNfY3R4KTsKKworICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKGRldmlj ZV9od2N0eC0+Y29tbWFuZF9hbGxvY2F0b3IpOworICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKGRl dmljZV9od2N0eC0+Y29tbWFuZF9saXN0KTsKKyAgICBEM0QxMl9PQkpFQ1RfUkVMRUFTRShkZXZp Y2VfaHdjdHgtPmNvbW1hbmRfcXVldWUpOworICAgIEQzRDEyX09CSkVDVF9SRUxFQVNFKGRldmlj ZV9od2N0eC0+dmlkZW9fZGV2aWNlKTsKKyAgICBEM0QxMl9PQkpFQ1RfUkVMRUFTRShkZXZpY2Vf aHdjdHgtPmRldmljZSk7Cit9CisKK3N0YXRpYyBpbnQgZDNkMTJ2YV9kZXZpY2VfY3JlYXRlKEFW SFdEZXZpY2VDb250ZXh0ICpjdHgsIGNvbnN0IGNoYXIgKmRldmljZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEFWRGljdGlvbmFyeSAqb3B0cywgaW50IGZsYWdzKQoreworICAg IEFWRDNEMTJWQURldmljZUNvbnRleHQgKmRldmljZV9od2N0eCA9IGN0eC0+aHdjdHg7CisKKyAg ICBIUkVTVUxUIGhyOworICAgIFVJTlQgY3JlYXRlX2ZsYWdzID0gMDsKKyAgICBJRFhHSUFkYXB0 ZXIgKnBBZGFwdGVyID0gTlVMTDsKKworICAgIGludCByZXQ7CisgICAgaW50IGlzX2RlYnVnICAg ICAgID0gISFhdl9kaWN0X2dldChvcHRzLCAiZGVidWciLCBOVUxMLCAwKTsKKyAgICBkZXZpY2Vf aHdjdHgtPnN5bmMgPSAhIWF2X2RpY3RfZ2V0KG9wdHMsICJzeW5jIiwgIE5VTEwsIDApOworCisg ICAgaWYgKChyZXQgPSBmZl90aHJlYWRfb25jZSgmZnVuY3Rpb25zX2xvYWRlZCwgbG9hZF9mdW5j dGlvbnMpKSAhPSAwKQorICAgICAgICByZXR1cm4gQVZFUlJPUl9VTktOT1dOOworCisgICAgaWYg KGlzX2RlYnVnKSB7CisgICAgICAgIElEM0QxMkRlYnVnICpwRGVidWc7CisgICAgICAgIGlmIChk M2QxMnZhX2dldF9kZWJ1Z19pbnRlcmZhY2UgJiYgU1VDQ0VFREVEKGQzZDEydmFfZ2V0X2RlYnVn X2ludGVyZmFjZSgmSUlEX0lEM0QxMkRlYnVnLCAmcERlYnVnKSkpIHsKKyAgICAgICAgICAgIGNy ZWF0ZV9mbGFncyB8PSBEWEdJX0NSRUFURV9GQUNUT1JZX0RFQlVHOworICAgICAgICAgICAgSUQz RDEyRGVidWdfRW5hYmxlRGVidWdMYXllcihwRGVidWcpOworICAgICAgICAgICAgRDNEMTJfT0JK RUNUX1JFTEVBU0UocERlYnVnKTsKKyAgICAgICAgICAgIGF2X2xvZyhjdHgsIEFWX0xPR19JTkZP LCAiRDNEMTIgZGVidWcgbGF5ZXIgaXMgZW5hYmxlZCFcbiIpOworICAgICAgICB9CisgICAgfQor CisgICAgaWYgKCFkZXZpY2VfaHdjdHgtPmRldmljZSkgeworICAgICAgICBJRFhHSUZhY3Rvcnky ICpwRFhHSUZhY3RvcnkgPSBOVUxMOworCisgICAgICAgIGlmICghZDNkMTJ2YV9jcmVhdGVfZGV2 aWNlIHx8ICFkM2QxMnZhX2NyZWF0ZV9keGdpX2ZhY3RvcnkyKSB7CisgICAgICAgICAgICBhdl9s b2coY3R4LCBBVl9MT0dfRVJST1IsICJGYWlsZWQgdG8gbG9hZCBEM0QxMiBsaWJyYXJ5IG9yIGl0 cyBmdW5jdGlvbnNcbiIpOworICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfVU5LTk9XTjsKKyAg ICAgICAgfQorCisgICAgICAgIGhyID0gZDNkMTJ2YV9jcmVhdGVfZHhnaV9mYWN0b3J5MihjcmVh dGVfZmxhZ3MsICZJSURfSURYR0lGYWN0b3J5MiwgKHZvaWQgKiopJnBEWEdJRmFjdG9yeSk7Cisg ICAgICAgIGlmIChTVUNDRUVERUQoaHIpKSB7CisgICAgICAgICAgICBpbnQgYWRhcHRlciA9IGRl dmljZSA/IGF0b2koZGV2aWNlKSA6IDA7CisgICAgICAgICAgICBpZiAoRkFJTEVEKElEWEdJRmFj dG9yeTJfRW51bUFkYXB0ZXJzKHBEWEdJRmFjdG9yeSwgYWRhcHRlciwgJnBBZGFwdGVyKSkpCisg ICAgICAgICAgICAgICAgcEFkYXB0ZXIgPSBOVUxMOworICAgICAgICAgICAgSURYR0lGYWN0b3J5 Ml9SZWxlYXNlKHBEWEdJRmFjdG9yeSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocEFkYXB0 ZXIpIHsKKyAgICAgICAgICAgIERYR0lfQURBUFRFUl9ERVNDIGRlc2M7CisgICAgICAgICAgICBo ciA9IElEWEdJQWRhcHRlcjJfR2V0RGVzYyhwQWRhcHRlciwgJmRlc2MpOworICAgICAgICAgICAg aWYgKCFGQUlMRUQoaHIpKSB7CisgICAgICAgICAgICAgICAgYXZfbG9nKGN0eCwgQVZfTE9HX0lO Rk8sICJVc2luZyBkZXZpY2UgJTA0eDolMDR4ICglbHMpLlxuIiwKKyAgICAgICAgICAgICAgICAg ICAgICAgZGVzYy5WZW5kb3JJZCwgZGVzYy5EZXZpY2VJZCwgZGVzYy5EZXNjcmlwdGlvbik7Cisg ICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBociA9IGQzZDEydmFfY3JlYXRlX2Rl dmljZSgoSVVua25vd24gKilwQWRhcHRlciwgRDNEX0ZFQVRVUkVfTEVWRUxfMTJfMCwgJklJRF9J RDNEMTJEZXZpY2UsICZkZXZpY2VfaHdjdHgtPmRldmljZSk7CisgICAgICAgIEQzRDEyX09CSkVD VF9SRUxFQVNFKHBBZGFwdGVyKTsKKyAgICAgICAgaWYgKEZBSUxFRChocikpIHsKKyAgICAgICAg ICAgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBjcmVhdGUgRGlyZWN0WDNE IDEyIGRldmljZSAoJWx4KVxuIiwgKGxvbmcpaHIpOworICAgICAgICAgICAgcmV0dXJuIEFWRVJS T1JfVU5LTk9XTjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfQorCitjb25z dCBIV0NvbnRleHRUeXBlIGZmX2h3Y29udGV4dF90eXBlX2QzZDEydmEgPSB7CisgICAgLnR5cGUg ICAgICAgICAgICAgICAgICAgPSBBVl9IV0RFVklDRV9UWVBFX0QzRDEyVkEsCisgICAgLm5hbWUg ICAgICAgICAgICAgICAgICAgPSAiRDNEMTJWQSIsCisKKyAgICAuZGV2aWNlX2h3Y3R4X3NpemUg ICAgICA9IHNpemVvZihBVkQzRDEyVkFEZXZpY2VDb250ZXh0KSwKKyAgICAuZnJhbWVzX2h3Y3R4 X3NpemUgICAgICA9IHNpemVvZihBVkQzRDEyVkFGcmFtZXNDb250ZXh0KSwKKyAgICAuZnJhbWVz X3ByaXZfc2l6ZSAgICAgICA9IHNpemVvZihEM0QxMlZBRnJhbWVzQ29udGV4dCksCisKKyAgICAu ZGV2aWNlX2NyZWF0ZSAgICAgICAgICA9IGQzZDEydmFfZGV2aWNlX2NyZWF0ZSwKKyAgICAuZGV2 aWNlX2luaXQgICAgICAgICAgICA9IGQzZDEydmFfZGV2aWNlX2luaXQsCisgICAgLmRldmljZV91 bmluaXQgICAgICAgICAgPSBkM2QxMnZhX2RldmljZV91bmluaXQsCisgICAgLmZyYW1lc19nZXRf Y29uc3RyYWludHMgPSBkM2QxMnZhX2ZyYW1lc19nZXRfY29uc3RyYWludHMsCisgICAgLmZyYW1l c19pbml0ICAgICAgICAgICAgPSBkM2QxMnZhX2ZyYW1lc19pbml0LAorICAgIC5mcmFtZXNfdW5p bml0ICAgICAgICAgID0gZDNkMTJ2YV9mcmFtZXNfdW5pbml0LAorICAgIC5mcmFtZXNfZ2V0X2J1 ZmZlciAgICAgID0gZDNkMTJ2YV9nZXRfYnVmZmVyLAorICAgIC50cmFuc2Zlcl9nZXRfZm9ybWF0 cyAgID0gZDNkMTJ2YV90cmFuc2Zlcl9nZXRfZm9ybWF0cywKKyAgICAudHJhbnNmZXJfZGF0YV90 byAgICAgICA9IGQzZDEydmFfdHJhbnNmZXJfZGF0YSwKKyAgICAudHJhbnNmZXJfZGF0YV9mcm9t ICAgICA9IGQzZDEydmFfdHJhbnNmZXJfZGF0YSwKKworICAgIC5waXhfZm10cyAgICAgICAgICAg ICAgID0gKGNvbnN0IGVudW0gQVZQaXhlbEZvcm1hdFtdKXsgQVZfUElYX0ZNVF9EM0QxMiwgQVZf UElYX0ZNVF9OT05FIH0sCit9OwpkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL2h3Y29udGV4dF9kM2Qx MnZhLmggYi9saWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmEuaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi5kNjk5ZjlmNGM3Ci0tLSAvZGV2L251bGwKKysrIGIvbGliYXZ1 dGlsL2h3Y29udGV4dF9kM2QxMnZhLmgKQEAgLTAsMCArMSwyMzQgQEAKKy8qCisgKiBEaXJlY3Qz RCAxMiBIVyBhY2NlbGVyYXRpb24uCisgKgorICogY29weXJpZ2h0IChjKSAyMDIyIFd1IEppYW5o dWEgPHRvcXN4d0BvdXRsb29rLmNvbT4KKyAqCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1w ZWcuCisgKgorICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3Nl ciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwg b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBGRm1wZWcgaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBp ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1 MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNB CisgKi8KKworI2lmbmRlZiBBVlVUSUxfSFdDT05URVhUX0QzRDEyVkFfSAorI2RlZmluZSBBVlVU SUxfSFdDT05URVhUX0QzRDEyVkFfSAorCisvKioKKyAqIEBkZWYgQ09CSk1BQ1JPUworICoKKyAq IEBicmllZiBFbmFibGUgQyBzdHlsZSBpbnRlcmZhY2UgZm9yIEQzRDEyCisgKi8KKyNkZWZpbmUg Q09CSk1BQ1JPUworCisvKioKKyAqIEBmaWxlCisgKiBBbiBBUEktc3BlY2lmaWMgaGVhZGVyIGZv ciBBVl9IV0RFVklDRV9UWVBFX0QzRDExVkEuCisgKgorICovCisjaW5jbHVkZSA8c3RkaW50Lmg+ CisjaW5jbHVkZSA8ZDNkMTIuaD4KKyNpbmNsdWRlIDxkM2QxMnZpZGVvLmg+CisjaW5jbHVkZSAi Y29tcGF0L3czMmRsZmNuLmgiCisKKy8qKgorICogQGRlZiBEWF9DSEVDSworICoKKyAqIEBicmll ZiBBIGNoZWNrIG1hY3JvIHVzZWQgYnkgRDNEMTIgZnVuY3Rpb25zIGhpZ2hseSBmcmVxdWVudGx5 CisgKi8KKyNkZWZpbmUgRFhfQ0hFQ0soaHIpIGlmIChGQUlMRUQoaHIpKSB7IFwKKyAgICBhdl9s b2coTlVMTCwgQVZfTE9HX0VSUk9SLCAiRDNEMTIgZXJyb3Igb2NjdXJyZWQhIFBsZWFzZSBlbmFi bGUgZGVidWc9MSBhbmQgY2hlY2sgdGhlIG91dHB1dCBmb3IgbW9yZSBkZXRhaWxzIVxuIik7IFwK KyAgICBnb3RvIGZhaWw7IFwKK30KKworLyoqCisgKiBAZGVmIEQzRDEyX09CSkVDVF9SRUxFQVNF CisgKgorICogQGJyaWVmIEEgcmVsZWFzZSBtYWNybyB1c2VkIGJ5IEQzRDEyIG9iamVjdHMgaGln aGx5IGZyZXF1ZW50bHkKKyAqLworI2RlZmluZSBEM0QxMl9PQkpFQ1RfUkVMRUFTRShwSW50ZXJm YWNlKSBpZiAocEludGVyZmFjZSkgeyBcCisgICAgSVVua25vd25fUmVsZWFzZSgoSVVua25vd24g KilwSW50ZXJmYWNlKTsgXAorICAgIHBJbnRlcmZhY2UgPSBOVUxMOyBcCit9CisKKy8qKgorICog QGRlZiBEM0QxMlZBX01BWF9TVVJGQUNFUworICoKKyAqIEBicmllZiBNYXhpbXVtIG51bWJlciBz dXJmYWNlcworICogVGhlIHJlZmVyZW5jZSBwcm9jZXNzaW5nIG92ZXIgZGVjb2Rpbmcgd2lsbCBi ZSBjb3JydXB0ZWQgb24gc29tZSBkcml2ZXJzCisgKiBpZiB0aGUgbWF4IG51bWJlciBvZiByZWZl cmVuY2UgZnJhbWVzIGV4Y2VlZHMgdGhpcy4KKyAqLworI2RlZmluZSBEM0QxMlZBX01BWF9TVVJG QUNFUyAzMgorCisvKioKKyAqIEBicmllZiBUaGlzIHN0cnVjdCBpcyB1c2VkIHRvIHN5bmMgZDNk MTIgZXhlY3V0aW9uCisgKgorICovCit0eXBlZGVmIHN0cnVjdCBBVkQzRDEyVkFTeW5jQ29udGV4 dCB7CisgICAgSUQzRDEyRmVuY2UgKmZlbmNlOworCisgICAgSEFORExFIGV2ZW50OworCisgICAg dWludDY0X3QgZmVuY2VfdmFsdWU7Cit9IEFWRDNEMTJWQVN5bmNDb250ZXh0OworCisvKioKKyAq IEBicmllZiBUaGlzIHN0cnVjdCBpcyBhbGxvY2F0ZWQgYXMgQVZIV0RldmljZUNvbnRleHQuaHdj dHgKKyAqCisgKi8KK3R5cGVkZWYgc3RydWN0IEFWRDNEMTJWQURldmljZUNvbnRleHQgeworICAg IC8qKgorICAgICAqIERldmljZSB1c2VkIGZvciBvYmplY3RzIGNyZWF0aW9uIGFuZCBhY2Nlc3Mu IFRoaXMgY2FuIGFsc28gYmUKKyAgICAgKiB1c2VkIHRvIHNldCB0aGUgbGliYXZjb2RlYyBkZWNv ZGluZyBkZXZpY2UuCisgICAgICoKKyAgICAgKiBDYW4gYmUgc2V0IGJ5IHRoZSB1c2VyLiBUaGlz IGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBmaWVsZCAtIHRoZSBvdGhlcgorICAgICAqIGRldmljZSBj b250ZXh0IGZpZWxkcyBhcmUgc2V0IGZyb20gdGhpcyBhbmQgYXJlIGF2YWlsYWJsZSBmb3IgY29u dmVuaWVuY2UuCisgICAgICoKKyAgICAgKiBEZWFsbG9jYXRpbmcgdGhlIEFWSFdEZXZpY2VDb250 ZXh0IHdpbGwgYWx3YXlzIHJlbGVhc2UgdGhpcyBpbnRlcmZhY2UsCisgICAgICogYW5kIGl0IGRv ZXMgbm90IG1hdHRlciB3aGV0aGVyIGl0IHdhcyB1c2VyLWFsbG9jYXRlZC4KKyAgICAgKi8KKyAg ICBJRDNEMTJEZXZpY2UgKmRldmljZTsKKworICAgIC8qKgorICAgICAqIElmIHVuc2V0LCB0aGlz IHdpbGwgYmUgc2V0IGZyb20gdGhlIGRldmljZSBmaWVsZCBvbiBpbml0LgorICAgICAqCisgICAg ICogRGVhbGxvY2F0aW5nIHRoZSBBVkhXRGV2aWNlQ29udGV4dCB3aWxsIGFsd2F5cyByZWxlYXNl IHRoaXMgaW50ZXJmYWNlLAorICAgICAqIGFuZCBpdCBkb2VzIG5vdCBtYXR0ZXIgd2hldGhlciBp dCB3YXMgdXNlci1hbGxvY2F0ZWQuCisgICAgICovCisgICAgSUQzRDEyVmlkZW9EZXZpY2UgICp2 aWRlb19kZXZpY2U7CisKKyAgICAvKioKKyAgICAgKiBEM0QxMiBjb21tYW5kIHF1ZXVlIHVzZWQg Zm9yIHRleHR1cmUgdHJhbnNmZXIKKyAgICAgKi8KKyAgICBJRDNEMTJDb21tYW5kUXVldWUgKmNv bW1hbmRfcXVldWU7CisKKyAgICAvKioKKyAgICAgKiBEM0QxMiBjb21tYW5kIGFsbG9jYXRvciB1 c2VkIGZvciB0ZXh0dXJlIHRyYW5zZmVyCisgICAgICovCisgICAgSUQzRDEyQ29tbWFuZEFsbG9j YXRvciAqY29tbWFuZF9hbGxvY2F0b3I7CisKKyAgICAvKioKKyAgICAgKiBEM0QxMiBjb21tYW5k IGxpc3QgdXNlZCBmb3IgdGV4dHVyZSB0cmFuc2ZlcgorICAgICAqLworICAgIElEM0QxMkdyYXBo aWNzQ29tbWFuZExpc3QgKmNvbW1hbmRfbGlzdDsKKworICAgIC8qKgorICAgICAqIFN5bmMgY29u dGV4dCB1c2VkIGZvciB0ZXh0dXJlIHRyYW5zZmVyCisgICAgICovCisgICAgQVZEM0QxMlZBU3lu Y0NvbnRleHQgKnN5bmNfY3R4OworCisgICAgLyoqCisgICAgICogU3BlY2lmZWQgYnkgc3luYz0x IHdoZW4gaW5pdCBkM2QxMnZhCisgICAgICoKKyAgICAgKiBMZXQgYWxsIGNvbW1hbmRzIGV4ZWN1 dGVkIGFzIGEgc3luYyBtb2RlCisgICAgICovCisgICAgaW50IHN5bmM7Cit9IEFWRDNEMTJWQURl dmljZUNvbnRleHQ7CisKKy8qKgorICogQGJyaWVmIEQzRDEyIGZyYW1lIGRlc2NyaXB0b3IgZm9y IHBvb2wgYWxsb2NhdGlvbi4KKyAqCisgKi8KK3R5cGVkZWYgc3RydWN0IEFWRDNEMTJGcmFtZURl c2NyaXB0b3IgeworICAgIC8qKgorICAgICAqIFRoZSB0ZXh0dXJlIGluIHdoaWNoIHRoZSBmcmFt ZSBpcyBsb2NhdGVkLiBUaGUgcmVmZXJlbmNlIGNvdW50IGlzCisgICAgICogbWFuYWdlZCBieSB0 aGUgQVZCdWZmZXJSZWYsIGFuZCBkZXN0cm95aW5nIHRoZSByZWZlcmVuY2Ugd2lsbCByZWxlYXNl CisgICAgICogdGhlIGludGVyZmFjZS4KKyAgICAgKgorICAgICAqIE5vcm1hbGx5IHN0b3JlZCBp biBBVkZyYW1lLmRhdGFbMF0uCisgICAgICovCisgICAgSUQzRDEyUmVzb3VyY2UgKnRleHR1cmU7 CisKKyAgICAvKioKKyAgICAgKiBUaGUgaW5kZXggaW50byB0aGUgYXJyYXkgdGV4dHVyZSBlbGVt ZW50IHJlcHJlc2VudGluZyB0aGUgZnJhbWUKKyAgICAgKgorICAgICAqIE5vcm1hbGx5IHN0b3Jl ZCBpbiBBVkZyYW1lLmRhdGFbMV0gKGNhc3QgZnJvbSBpbnRwdHJfdCkuCisgICAgICovCisgICAg aW50cHRyX3QgaW5kZXg7CisKKyAgICAvKioKKyAgICAgKiBUaGUgc3luYyBjb250ZXh0IGZvciB0 aGUgdGV4dHVyZQorICAgICAqCisgICAgICogVXNlIGF2X2QzZDEydmFfd2FpdF9pZGxlKHN5bmNf Y3R4KSB0byBlbnN1cmUgdGhlIGRlY29kaW5nIG9yIGVuY29kaW5nIGhhdmUgYmVlbiBmaW5pc2Vk CisgICAgICogQHNlZTogaHR0cHM6Ly9sZWFybi5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mv d2luMzIvbWVkZm91bmQvZGlyZWN0M2QtMTItdmlkZW8tb3ZlcnZpZXcjZGlyZWN0eC0xMi1mZW5j ZXMKKyAgICAgKgorICAgICAqIE5vcm1hbGx5IHN0b3JlZCBpbiBBVkZyYW1lLmRhdGFbMl0uCisg ICAgICovCisgICAgQVZEM0QxMlZBU3luY0NvbnRleHQgKnN5bmNfY3R4OworfSBBVkQzRDEyRnJh bWVEZXNjcmlwdG9yOworCisvKioKKyAqIEBicmllZiBUaGlzIHN0cnVjdCBpcyBhbGxvY2F0ZWQg YXMgQVZIV0ZyYW1lc0NvbnRleHQuaHdjdHgKKyAqCisgKi8KK3R5cGVkZWYgc3RydWN0IEFWRDNE MTJWQUZyYW1lc0NvbnRleHQgeworICAgIEFWRDNEMTJGcmFtZURlc2NyaXB0b3IgKnRleHR1cmVf aW5mb3M7Cit9IEFWRDNEMTJWQUZyYW1lc0NvbnRleHQ7CisKKy8qKgorICogQGJyaWVmIE1hcCBz dyBwaXhlbCBmb3JtYXQgdG8gZDNkMTIgZm9ybWF0CisgKgorICogQHBhcmFtIHBpeF9mbXQKKyAq IEByZXR1cm4gZDNkMTIgc3BlY2lmaWVkIGZvcm1hdAorICovCitEWEdJX0ZPUk1BVCBhdl9kM2Qx MnZhX21hcF9zd190b19od19mb3JtYXQoZW51bSBBVlBpeGVsRm9ybWF0IHBpeF9mbXQpOworCisv KioKKyAqIEBicmllZiBDcmVhdGUgYSBBVkQzRDEyVkFTeW5jQ29udGV4dAorICoKKyAqIEBwYXJh bSBjdHgKKyAqIEBwYXJhbSBzeW5jX2N0eAorICogQHJldHVybiBFcnJvciBjb2RlIChyZXQgPCAw IGlmIGZhaWxlZCkKKyAqLworaW50IGF2X2QzZDEydmFfY3JlYXRlX3N5bmNfY29udGV4dChBVkQz RDEyVkFEZXZpY2VDb250ZXh0ICpjdHgsIEFWRDNEMTJWQVN5bmNDb250ZXh0ICoqc3luY19jdHgp OworCisvKioKKyAqIEBicmllZiBSZWxlYXNlIGEgQVZEM0QxMlZBU3luY0NvbnRleHQKKyAqCisg KiBAcGFyYW0gc3luY19jdHgKKyAqIEByZXR1cm4gRXJyb3IgY29kZSAocmV0IDwgMCBpZiBmYWls ZWQpLCBjYW4gYmUgaWdub3JlZAorICovCitpbnQgYXZfZDNkMTJ2YV9yZWxlYXNlX3N5bmNfY29u dGV4dChBVkQzRDEyVkFTeW5jQ29udGV4dCAqc3luY19jdHgpOworCisvKioKKyAqIEBicmllZiBX YWl0IGZvciBhIHNwZWNpZmllZCBmZW5jZSB2YWx1ZQorICoKKyAqIFRoZSBleGVjdXRpb24gZmVu Y2UgdmFsdWVzIHRpbWVsaW5lIG1heSBiZSBsaWtlOgorICogIzAgLT4gIzEgLT4gIzIgLT4gIzMg LS0tLS0tLS0tLS0tLS0tLT4gI24KKyAqICAgICAgICAgICAgIF4KKyAqICAgICAgICAgICAgIHwK KyAqIENhbGwgYXZfZDNkMTJ2YV93YWl0X2Zvcl9mZW5jZV92YWx1ZSgyKSB3aWxsIHdhaXQgIzIg ZXhlY3V0aW9uIHRvIGNvbXBsZXRlZC4KKyAqCisgKiBAcGFyYW0gc3luY19jdHgKKyAqIEBwYXJh bSBmZW5jZV92YWx1ZQorICogQHJldHVybiBFcnJvciBjb2RlIChyZXQgPCAwIGlmIGZhaWxlZCkK KyAqLworaW50IGF2X2QzZDEydmFfd2FpdF9mb3JfZmVuY2VfdmFsdWUoQVZEM0QxMlZBU3luY0Nv bnRleHQgKnN5bmNfY3R4LCB1aW50NjRfdCBmZW5jZV92YWx1ZSk7CisKKy8qKgorICogQGJyaWVm IFdhaXQgZm9yIHRoZSBzeW5jIGNvbnRleHQgdG8gdGhlIGlkbGUgc3RhdGUKKyAqCisgKiBAcGFy YW0gc3luY19jdHgKKyAqIEByZXR1cm4gRXJyb3IgY29kZSAocmV0IDwgMCBpZiBmYWlsZWQpCisg Ki8KK2ludCBhdl9kM2QxMnZhX3dhaXRfaWRsZShBVkQzRDEyVkFTeW5jQ29udGV4dCAqc3luY19j dHgpOworCisvKioKKyAqIEBicmllZiBXYWl0IGZvciBhIHNwZWNpZmllZCBjb21tYW5kIHF1ZXVl IHRvIHRoZSBpZGxlIHN0YXRlCisgKgorICogQHBhcmFtIHN5bmNfY3R4CisgKiBAcGFyYW0gY29t bWFuZF9xdWV1ZQorICogQHJldHVybiBFcnJvciBjb2RlIChyZXQgPCAwIGlmIGZhaWxlZCkKKyAq LworaW50IGF2X2QzZDEydmFfd2FpdF9xdWV1ZV9pZGxlKEFWRDNEMTJWQVN5bmNDb250ZXh0ICpz eW5jX2N0eCwgSUQzRDEyQ29tbWFuZFF1ZXVlICpjb21tYW5kX3F1ZXVlKTsKKworI2VuZGlmIC8q IEFWVVRJTF9IV0NPTlRFWFRfRDNEMTJWQV9IICovCmRpZmYgLS1naXQgYS9saWJhdnV0aWwvaHdj b250ZXh0X2ludGVybmFsLmggYi9saWJhdnV0aWwvaHdjb250ZXh0X2ludGVybmFsLmgKaW5kZXgg ZTYyNjY0OTRhYy4uNGRmNTE2ZWU2YSAxMDA2NDQKLS0tIGEvbGliYXZ1dGlsL2h3Y29udGV4dF9p bnRlcm5hbC5oCisrKyBiL2xpYmF2dXRpbC9od2NvbnRleHRfaW50ZXJuYWwuaApAQCAtMTY1LDYg KzE2NSw3IEBAIGludCBmZl9od2ZyYW1lX21hcF9yZXBsYWNlKEFWRnJhbWUgKmRzdCwgY29uc3Qg QVZGcmFtZSAqc3JjKTsKIAogZXh0ZXJuIGNvbnN0IEhXQ29udGV4dFR5cGUgZmZfaHdjb250ZXh0 X3R5cGVfY3VkYTsKIGV4dGVybiBjb25zdCBIV0NvbnRleHRUeXBlIGZmX2h3Y29udGV4dF90eXBl X2QzZDExdmE7CitleHRlcm4gY29uc3QgSFdDb250ZXh0VHlwZSBmZl9od2NvbnRleHRfdHlwZV9k M2QxMnZhOwogZXh0ZXJuIGNvbnN0IEhXQ29udGV4dFR5cGUgZmZfaHdjb250ZXh0X3R5cGVfZHJt OwogZXh0ZXJuIGNvbnN0IEhXQ29udGV4dFR5cGUgZmZfaHdjb250ZXh0X3R5cGVfZHh2YTI7CiBl eHRlcm4gY29uc3QgSFdDb250ZXh0VHlwZSBmZl9od2NvbnRleHRfdHlwZV9vcGVuY2w7CmRpZmYg LS1naXQgYS9saWJhdnV0aWwvcGl4ZGVzYy5jIGIvbGliYXZ1dGlsL3BpeGRlc2MuYwppbmRleCBj YTNlMjA0YTBiLi44MDA5MTMwNjNjIDEwMDY0NAotLS0gYS9saWJhdnV0aWwvcGl4ZGVzYy5jCisr KyBiL2xpYmF2dXRpbC9waXhkZXNjLmMKQEAgLTIyNTMsNiArMjI1MywxMCBAQCBzdGF0aWMgY29u c3QgQVZQaXhGbXREZXNjcmlwdG9yIGF2X3BpeF9mbXRfZGVzY3JpcHRvcnNbQVZfUElYX0ZNVF9O Ql0gPSB7CiAgICAgICAgIC5uYW1lID0gImQzZDExIiwKICAgICAgICAgLmZsYWdzID0gQVZfUElY X0ZNVF9GTEFHX0hXQUNDRUwsCiAgICAgfSwKKyAgICBbQVZfUElYX0ZNVF9EM0QxMl0gPSB7Cisg ICAgICAgIC5uYW1lID0gImQzZDEyIiwKKyAgICAgICAgLmZsYWdzID0gQVZfUElYX0ZNVF9GTEFH X0hXQUNDRUwsCisgICAgfSwKICAgICBbQVZfUElYX0ZNVF9HQlJQRjMyQkVdID0gewogICAgICAg ICAubmFtZSA9ICJnYnJwZjMyYmUiLAogICAgICAgICAubmJfY29tcG9uZW50cyA9IDMsCmRpZmYg LS1naXQgYS9saWJhdnV0aWwvcGl4Zm10LmggYi9saWJhdnV0aWwvcGl4Zm10LmgKaW5kZXggMjI0 NjcwYTczMS4uZTAyNjIwYjFjNyAxMDA2NDQKLS0tIGEvbGliYXZ1dGlsL3BpeGZtdC5oCisrKyBi L2xpYmF2dXRpbC9waXhmbXQuaApAQCAtMzA0LDYgKzMwNCwxNSBAQCBlbnVtIEFWUGl4ZWxGb3Jt YXQgewogICAgICAqLwogICAgIEFWX1BJWF9GTVRfRDNEMTEsCiAKKyAgICAvKioKKyAgICAgKiBI YXJkd2FyZSBzdXJmYWNlcyBmb3IgRGlyZWN0M0QxMi4KKyAgICAgKgorICAgICAqIGRhdGFbMF0g Y29udGFpbnMgYSBJRDNEMTJSZXNvdXJjZSBwb2ludGVyLgorICAgICAqIGRhdGFbMV0gY29udGFp bnMgdGhlIHJlc291cmNlIGFycmF5IGluZGV4IG9mIHRoZSBmcmFtZSBhcyBpbnRwdHJfdC4KKyAg ICAgKiBkYXRhWzJdIGNvbnRhaW5zIHRoZSBzeW5jIGNvbnRleHQgZm9yIGN1cnJlbnQgcmVzb3Vy Y2UKKyAgICAgKi8KKyAgICBBVl9QSVhfRk1UX0QzRDEyLAorCiAgICAgQVZfUElYX0ZNVF9HUkFZ OUJFLCAgIC8vLzwgICAgICAgIFkgICAgICAgICwgOWJwcCwgYmlnLWVuZGlhbgogICAgIEFWX1BJ WF9GTVRfR1JBWTlMRSwgICAvLy88ICAgICAgICBZICAgICAgICAsIDlicHAsIGxpdHRsZS1lbmRp YW4KIApkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL3Rlc3RzL2h3ZGV2aWNlLmMgYi9saWJhdnV0aWwv dGVzdHMvaHdkZXZpY2UuYwppbmRleCA3ZWIzNTVjOTg4Li4wMzIyYmQ5ZmNiIDEwMDY0NAotLS0g YS9saWJhdnV0aWwvdGVzdHMvaHdkZXZpY2UuYworKysgYi9saWJhdnV0aWwvdGVzdHMvaHdkZXZp Y2UuYwpAQCAtMTM3LDYgKzEzNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgewogICAgICAgeyAi MCIsICIxIiwgIjIiIH0gfSwKICAgICB7IEFWX0hXREVWSUNFX1RZUEVfRDNEMTFWQSwKICAgICAg IHsgIjAiLCAiMSIsICIyIiB9IH0sCisgICAgeyBBVl9IV0RFVklDRV9UWVBFX0QzRDEyVkEsCisg ICAgICB7ICIwIiwgIjEiLCAiMiIgfSB9LAogICAgIHsgQVZfSFdERVZJQ0VfVFlQRV9PUEVOQ0ws CiAgICAgICB7ICIwLjAiLCAiMC4xIiwgIjEuMCIsICIxLjEiIH0gfSwKICAgICB7IEFWX0hXREVW SUNFX1RZUEVfVkFBUEksCmRpZmYgLS1naXQgYS9saWJhdnV0aWwvdmVyc2lvbi5oIGIvbGliYXZ1 dGlsL3ZlcnNpb24uaAppbmRleCBjYjBjOTI4YmQwLi4yZGY3ODhlNTI5IDEwMDY0NAotLS0gYS9s aWJhdnV0aWwvdmVyc2lvbi5oCisrKyBiL2xpYmF2dXRpbC92ZXJzaW9uLmgKQEAgLTc5LDggKzc5 LDggQEAKICAqLwogCiAjZGVmaW5lIExJQkFWVVRJTF9WRVJTSU9OX01BSk9SICA1NwotI2RlZmlu ZSBMSUJBVlVUSUxfVkVSU0lPTl9NSU5PUiAgMzkKLSNkZWZpbmUgTElCQVZVVElMX1ZFUlNJT05f TUlDUk8gMTAxCisjZGVmaW5lIExJQkFWVVRJTF9WRVJTSU9OX01JTk9SICA0MAorI2RlZmluZSBM SUJBVlVUSUxfVkVSU0lPTl9NSUNSTyAxMDAKIAogI2RlZmluZSBMSUJBVlVUSUxfVkVSU0lPTl9J TlQgICBBVl9WRVJTSU9OX0lOVChMSUJBVlVUSUxfVkVSU0lPTl9NQUpPUiwgXAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJBVlVUSUxfVkVSU0lPTl9N SU5PUiwgXAotLSAKMi4zMi4wCgo= --_004_OSZP286MB2173C3D06713BCECA18FBA5BCA229OSZP286MB2173JPNP_ Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". --_004_OSZP286MB2173C3D06713BCECA18FBA5BCA229OSZP286MB2173JPNP_--