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 E78C042112 for ; Wed, 26 Oct 2022 00:16:11 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E616568B972; Wed, 26 Oct 2022 03:16:08 +0300 (EEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075097.outbound.protection.outlook.com [40.92.75.97]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F030B68B6D3 for ; Wed, 26 Oct 2022 03:16:01 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nwotodybQH+kqcPU4xvvxvRgrDbB2T9OBaSxCHmZKeh0WftvI0HJo454Ta5B8tRWFJ0gP0r5owNJB0ZP2bw6u5NKpbfTdVtU+Wxqu/yWzXlaeykc+VKEhcg1cE3YKeFi9CLuOZBP/YNiczNukhCRIGOxQGpOc3Nul7ZA2diGqUuOoR31Hskv6mwKkQtpcyZpwMZHvn3dreHOfoW4SzbQpve0EYj2069216i5FvcXBGV9Tn713/pt5aXWxzs5b0d9yiZ6vA5c5IhNehpijqcm7Afo2JWZC1AP10VSQGs/7RgRoMiLAn/G/xuuKA3L5/mQbfeX2qjV/iJg5yMWX6Ht2w== 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=kMpT61+RSPD/XtztA+BbXxp+czAMvpKWdwUt1hEemKg=; b=IilElm0WTkkcULOWyLdzyUDnfvbDUO9kdau7bXxTYlEtcqz6a2lUNLO8wNazyEx/jjX7LRChBTq31qutVvAjQvwr8Eem4fnTYDqZx5gSlSo7aUmh8qkHPxVirV5J3Ezu1CqT2O8HZN7dZkBL4hP+RamodysTOTdlKZGX+hcgUNbJujQbIRJP2QvMBVHWZV/iuqhB3ii3XE08wP3kgzDkRn67n6prZ2jdSD1i1a+z/3PgTGzY/DLhNHu2lUE1AgXspCuzkDiJnGs6Rb9EHdBb+euPT33BguxsumTSPA57PS4q+OKwoVHiM+l5NXh3dB0kufyotpCXFqPZ39YGl+xofA== 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=kMpT61+RSPD/XtztA+BbXxp+czAMvpKWdwUt1hEemKg=; b=WQWinVMdKskwXgeFYqaiKCi4rr1mY5Bx/zIjbNAx87I2OKvBrxQgBODqxZ9gqxx2MBTsf6gVUSUU4CaXSt+QfH5AW0Um0H2jp+4wTx+959B2xC68H5F2mr9Gs6+ARgsepf5+GVItKdQ3YGKuTtY+rNHp2Z2C4DG4IN4aSXW72Ox3YyQSunSuSW8iBG60AOuzEJkBZQhOIoHgvy+cuRLt3NHWkT0LwgMQMtPDjxl1YYKgheqJAn4ysiK0vjBGQCJVLtysxDXcD4coU4rIhPTfOaUeK1I4G9CwPB/1jYF6DhHch0637c7NZlHQx4HTOZUFfdRdv35bL8IIqmyEbBwnuQ== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0349.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:27a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.21; Wed, 26 Oct 2022 00:15:59 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f9d7:680f:70c4:44fe]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f9d7:680f:70c4:44fe%7]) with mapi id 15.20.5709.015; Wed, 26 Oct 2022 00:15:59 +0000 Message-ID: Date: Wed, 26 Oct 2022 02:16:09 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <0c396bde-b983-9722-2aa0-bf5c4eec77c3@gmail.com> <20220908012214.1556959-1-izadi@google.com> From: Andreas Rheinhardt In-Reply-To: <20220908012214.1556959-1-izadi@google.com> X-TMN: [dn1V+kQI09WPreg5X8z5kgRfHk3egKoR301vh8P7u7I=] X-ClientProxiedBy: FR0P281CA0058.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:49::19) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <75dd68de-5f91-e413-40e2-ac2f10d6e678@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0349:EE_ X-MS-Office365-Filtering-Correlation-Id: 6988f1bd-1c91-4fe4-991c-08dab6e74227 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dQMBazY7S5cpnSKhNZD19f1iZHg8CR3k0dXVVW8lmQlr6plcv1BKB7qKXbeex7PQEq9pXtrVuUiH/Z2g6yaV4hGpJK0k479DMpV4KA0dkSIDG9Amr8bhJOxwK7ptyibefH5mctFq+Gg/3WFD3vtLXMkYc7YI983n7rKlGEpvktNigiEpL4XoToR68tY1yQI6YntP9FuMYnGrIXcKbVJ7QZwG6jFiBVBHU+Bl8Y4nUmi5MoLPB9WnzAweREyF1Htv5oIBP4uuGlf59ZR0XnUAVGi6FjdtseQeUd4kaINgJ5Jb1wf65M2cHvCO9l8bEbMd6Lv1MCXf6me8NwQhZqQn2SiesuF/kRHssgfhQQfJZqNh1LYyV6kthiMMCRf4tjRebsgv/vl4KSDRBjcK27UiMn2hqhF/Je3zk0/QDpChTQXO516lfWnmXcP1rWSonriKIm58hZp4fM92j/n8/qhWEi30gPJdk3+umrb5yo8AM/9CHoQdjU7jsAXFUoePjhOt1/BQFmmZWMHIE+SXuz2MkWiDlCg/cy719ZohZnK68EsZ5/M0Ehwh6WMox8YMD5b4oEZdH4tMgUcc8M3tFoRFAsodvXiPwJDGhDzQaTkWNmeNTiyyoBp+2tj2QJ3x5TK0qpz9zji/kUk3BSI6BBNcfJYCaOeBbJKFF1QC4Bw0yqZKYZVdMWsKnjnWOZcDsadtVTyyQrZsQjmGgwMu2KxAQ3IFKxPXJ0PbZZbQq4KuYrY= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bVFValNVR2xPWHI1L08yQkFHb3RvK084SmNuS0h4WDJTblE5bDZLQlZEVTNU?= =?utf-8?B?NFd0V2FWQUwvUUhMVnd2YU05STZ2eE9sMzY3V1Y1VDFTT2U4aitDTjJRU3lI?= =?utf-8?B?Q2ptRXN4QmQxa0Z1cStoQVZvOFNJTXA3WFZ4VWVTWVlVbnQzZnBWbnllVStT?= =?utf-8?B?K2V4cG5Bdlk3dXNJaVcrOXZpcWhLWUlteGZxWW5pUzVVTHB5YWtCbklQQm1E?= =?utf-8?B?bkJVVk5jMVFmRU40M055WTY1T09rNDl3Q3Z1MTBnZHhRS0dNdDAvdzJMOEEw?= =?utf-8?B?N01hTndZS2llTWhWRHVLeTNzYzRnQzRyZjR1Q2s3ZHFvRm9oU2U0UzU5a2Q2?= =?utf-8?B?VnVSOUR1dGRObEU0Zmk3anZBdFdnMEt1dlQvejVESWVXbjJxbFFvWEswVTcz?= =?utf-8?B?WWdhMDNBR0YxZnBXazM2OVMxcWRzeFFGNGR6cEx3TCtFS1Y0Rkl1aEFkL3JL?= =?utf-8?B?V1V1elNVdDBzVldvTndPK2QycnRIUmZ0UkZ6SEV5dzhLbXA5b1JPbTlLSUZu?= =?utf-8?B?MzhGOWxjQ2VpWnZBekF6ZjdYL1MxN3J6cCtqbHd3eE1EY1NiZUx1RmlwejJN?= =?utf-8?B?b1BCVG1HTEh5ZTlpdjFrZGtSTS9lSXRITENVQzRWV0cvamNWclhWamtwTmFL?= =?utf-8?B?YlAzZ2JDU2JJZVhYWUZJNXdBMTJ5VzdOai9EQ1BWT09jaVliVjhBUXEyWDF1?= =?utf-8?B?eVFsVFRHb0VVN28raHBVc1UzSHVZYmd4M2h6SVYvUWo3L29JTmxiakNHU3V5?= =?utf-8?B?ckVlaGZGWm5hU2Z0RUhwYVdsckNuQ3Y2NTFRU3g2WHA4N0lCVjhwemNadC9p?= =?utf-8?B?WFRBd1lSS0JDSERLV0ZtRDEyblhnUGdXWmM5SEdyeEVGamwvL1ZmbTRqSDZt?= =?utf-8?B?bDhFaSs2ZHM1RFQ2aGtCT0VLN2YyYmZ6Y2xpdHZ0QmdTc2x1eGdTRm9WZnNU?= =?utf-8?B?TzFOWmJTSVBIV21KVyt2bGVoTlA2cjMreGJlV0YxY0pFZ3h5bWFVNUlVeGI1?= =?utf-8?B?VzAxN1pPdkJuUW52NjNwN2djaXBDeVNFZjUvKyt2ZDh2WGZ1b1ZOa2NoUTBh?= =?utf-8?B?QzU1Q0w3Vjh6T3VyVkQyNGNNbFlNa2hGbnBxMnJ5Q2k2TUFEaTAxMGgyQUww?= =?utf-8?B?ZzNTVjZzMHJwVkphYXN3WUYvWlRwYSs0NVhsQTBLa3pITGxpNVdpZUYxY1hh?= =?utf-8?B?TFcwcjFFOXA2UE55Z2FFdWFVS1kwSThVb243bFJXMmFOb1c2RGhpY2xuVjRG?= =?utf-8?B?aU1Pem1LaFNOejBPaFhxMWc1OC9XNFJGWGhXU0ptbmRpOFlPb2FMWmRLQWNs?= =?utf-8?B?eHdKK2c1dVltVEtFeUt5Rzc0QXFQRVJzeGlucUxQNVNjenVqRmtENEdjWTAv?= =?utf-8?B?VGhCWGc3bEJCK2JtaHQ0aGNGVWJHVnV4dXFKN0ZvS2dkeVZwYjcyT3NJOTls?= =?utf-8?B?ZmpTcnNCeDJUbGdyVlZNMFFabWNQWjE3QnRHdmF4OTdpQ2pCRkVMWG9iSUxC?= =?utf-8?B?RlVxZzBGNnFIdVdXVU5iaGorT1QvWEd0dEp4ODJKUDNsQldZSEJ6L3doODM1?= =?utf-8?B?dWlBRUU3NUljb29ZTzNjclFVTWEvbUlVNEkwRFVKUlk0amNQTGFWY1E4ZG5y?= =?utf-8?B?N1VIUGZvdU5HUDAxUzV3ZEdIdmdDWEJYMysrbUtpcU5mdnM1N1ZSL1RhaERw?= =?utf-8?B?NFJ6MnB3cFNYMTZEVDRmSXl4ZnBDYW1jUU5IMkJjQWhlT04zL1JkTlQ4d1o5?= =?utf-8?Q?F2WjvM3D8DKvmmu+aI/EEo7OwHToezFhjcSIhq8?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6988f1bd-1c91-4fe4-991c-08dab6e74227 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2022 00:15:59.2280 (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: DU2P250MB0349 Subject: Re: [FFmpeg-devel] [PATCH] avformat/matroska: Support HDR10+ metadata in Matroska. 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 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: TW9oYW1tYWQgSXphZGk6Cj4gVGhlIGZhdGUgdGVzdCBmaWxlIGNhbiBiZSBmb3VuZCBoZXJlOiBo dHRwczovL2RyaXZlLmdvb2dsZS5jb20vZmlsZS9kLzFqR1czZjk0cmdsTGZyNVdHbU1RZTNTRW5w MVlrYk1SeS92aWV3P3VzcD1kcml2ZXNkawo+IFRoZSB2aWRlbyBmaWxlIG5lZWRzIHRvIGJlIGNv cGllZCB0byBmYXRlLXN1aXRlL21rdi8KClRoaXMgZG9lcyBub3QgZGVzY3JpYmUgdGhlIHBhdGNo IGF0IGFsbCBhbmQgc2hvdWxkIHRoZXJlZm9yZSBub3QgYmUgcGFydApvZiB0aGUgY29tbWl0IG1l c3NhZ2UuCgo+IC0tLQoKSW5zdGVhZCBwdXQgaXQgaGVyZS4KCj4gIGxpYmF2Y29kZWMvZHluYW1p Y19oZHIxMF9wbHVzLmMgICAgICAgICAgICAgfCAyNjkgKysrKysrKysrKysrKysrKystLS0KClRo ZSBjaGFuZ2VzIHRvIGxpYmF2Y29kZWMgYW5kIE1hdHJvc2thIG5lZWQgdG8gYmUgaW4gc2VwYXJh dGUgcGF0Y2hlcy4KCj4gIGxpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmggICAgICAgICAg ICAgfCAgMjYgKy0KClRoaXMgaXMgYSBwcml2YXRlIGhlYWRlciBhbmQgdGhlcmVmb3JlIG11c3Qg bm90IGJlIHVzZWQgZm9yIHB1YmxpYyBzeW1ib2xzLgoKPiAgbGliYXZmb3JtYXQvbWF0cm9za2Eu aCAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArCj4gIGxpYmF2Zm9ybWF0L21hdHJvc2thZGVj LmMgICAgICAgICAgICAgICAgICAgfCAgMzAgKystCj4gIGxpYmF2Zm9ybWF0L21hdHJvc2thZW5j LmMgICAgICAgICAgICAgICAgICAgfCAgNDQgKysrLQo+ICB0ZXN0cy9mYXRlL21hdHJvc2thLm1h ayAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsKPiAgdGVzdHMvcmVmL2ZhdGUvbWF0cm9za2Et aGRyMTAtcGx1cy1tZXRhZGF0YSB8ICA3NCArKysrKysKPiAgNyBmaWxlcyBjaGFuZ2VkLCAzOTcg aW5zZXJ0aW9ucygrKSwgNTcgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0 cy9yZWYvZmF0ZS9tYXRyb3NrYS1oZHIxMC1wbHVzLW1ldGFkYXRhCj4gCj4gZGlmZiAtLWdpdCBh L2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmMgYi9saWJhdmNvZGVjL2R5bmFtaWNfaGRy MTBfcGx1cy5jCj4gaW5kZXggMzRhNDRhYWM2NS4uZDA1ZjIxMWM5NCAxMDA2NDQKPiAtLS0gYS9s aWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5jCj4gKysrIGIvbGliYXZjb2RlYy9keW5hbWlj X2hkcjEwX3BsdXMuYwo+IEBAIC0xOCw2ICsxOCwxMiBAQAo+ICAKPiAgI2luY2x1ZGUgImR5bmFt aWNfaGRyMTBfcGx1cy5oIgo+ICAjaW5jbHVkZSAiZ2V0X2JpdHMuaCIKPiArI2luY2x1ZGUgInB1 dF9iaXRzLmgiCj4gKwo+ICtzdGF0aWMgY29uc3QgdWludDhfdCB1c2FfY291bnRyeV9jb2RlID0g MHhCNTsKPiArc3RhdGljIGNvbnN0IHVpbnQxNl90IHNtcHRlX3Byb3ZpZGVyX2NvZGUgPSAweDAw M0M7Cj4gK3N0YXRpYyBjb25zdCB1aW50MTZfdCBzbXB0ZTIwOTRfNDBfcHJvdmlkZXJfb3JpZW50 ZWRfY29kZSA9IDB4MDAwMTsKPiArc3RhdGljIGNvbnN0IHVpbnQxNl90IHNtcHRlMjA5NF80MF9h cHBsaWNhdGlvbl9pZGVudGlmaWVyID0gMHgwNDsKPiAgCgpXZSB0eXBpY2FsbHkgdXNlIGRlZmlu ZXMgb3IgZW51bXMgZm9yIHN1Y2ggdGhpbmdzOyBDIGRvZXMgbm90IGhhdmUKY29uc3RleHByLgoK PiAgc3RhdGljIGNvbnN0IGludDY0X3QgbHVtaW5hbmNlX2RlbiA9IDE7Cj4gIHN0YXRpYyBjb25z dCBpbnQzMl90IHBlYWtfbHVtaW5hbmNlX2RlbiA9IDE1Owo+IEBAIC0yNyw4ICszMyw4IEBAIHN0 YXRpYyBjb25zdCBpbnQzMl90IGtuZWVfcG9pbnRfZGVuID0gNDA5NTsKPiAgc3RhdGljIGNvbnN0 IGludDMyX3QgYmV6aWVyX2FuY2hvcl9kZW4gPSAxMDIzOwo+ICBzdGF0aWMgY29uc3QgaW50MzJf dCBzYXR1cmF0aW9uX3dlaWdodF9kZW4gPSA4Owo+ICAKPiAtaW50IGZmX3BhcnNlX2l0dV90X3Qz NV90b19keW5hbWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERSUGx1cyAqcywgY29uc3QgdWludDhf dCAqZGF0YSwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IHNpemUpCj4gK2ludCBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVz KEFWRHluYW1pY0hEUlBsdXMqIHMsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsCj4gKwkJCQkJICAgICBp bnQgc2l6ZSkKPiAgewo+ICAgICAgR2V0Qml0Q29udGV4dCBnYmMsICpnYiA9ICZnYmM7Cj4gICAg ICBpbnQgcmV0Owo+IEBAIC00MCwxMCArNDYsMTIgQEAgaW50IGZmX3BhcnNlX2l0dV90X3QzNV90 b19keW5hbWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERSUGx1cyAqcywgY29uc3QgdWludDhfdAo+ ICAgICAgaWYgKHJldCA8IDApCj4gICAgICAgICAgcmV0dXJuIHJldDsKPiAgCj4gLSAgICBpZiAo Z2V0X2JpdHNfbGVmdChnYikgPCAxMCkKPiArICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDgp Cj4gICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKyAgICAgcy0+YXBwbGlj YXRpb25fdmVyc2lvbiA9IGdldF9iaXRzKGdiLCA4KTsKPiAgCj4gLSAgICBzLT5hcHBsaWNhdGlv bl92ZXJzaW9uID0gZ2V0X2JpdHMoZ2IsIDgpOwo+ICsgICAgaWYgKGdldF9iaXRzX2xlZnQoZ2Ip IDwgMikKPiArICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKClRoZXNlIGNoYW5n ZXMgYWRkIGFuIHVubmVjZXNzYXJ5IGJyYW5jaC4KCj4gICAgICBzLT5udW1fd2luZG93cyA9IGdl dF9iaXRzKGdiLCAyKTsKPiAgCj4gICAgICBpZiAocy0+bnVtX3dpbmRvd3MgPCAxIHx8IHMtPm51 bV93aW5kb3dzID4gMykgewo+IEBAIC01NiwxNSArNjQsMTEgQEAgaW50IGZmX3BhcnNlX2l0dV90 X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMoQVZEeW5hbWljSERSUGx1cyAqcywgY29uc3QgdWlu dDhfdAo+ICAgICAgZm9yIChpbnQgdyA9IDE7IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7Cj4g ICAgICAgICAgLy8gVGhlIGNvcm5lcnMgYXJlIHNldCB0byBhYnNvbHV0ZSBjb29yZGluYXRlcyBo ZXJlLiBUaGV5IHNob3VsZCBiZQo+ICAgICAgICAgIC8vIGNvbnZlcnRlZCB0byB0aGUgcmVsYXRp dmUgY29vcmRpbmF0ZXMgKGluIFswLCAxXSkgaW4gdGhlIGRlY29kZXIuCgpBbGwgdGhlIGZvbGxv d2luZyBjaGFuZ2VzIHRvIHRoaXMgZnVuY3Rpb25zIGFyZSBjb3NtZXRpYyBhbmQgc2hvdWxkIGJl CnJlbW92ZWQuIE1peGluZyBjb3NtZXRpYyBhbmQgbm9uLWNvc21ldGljIGNoYW5nZXMgbWFrZSBw YXRjaGVzIGhhcmRlciB0bwpyZXZpZXcuCgo+IC0gICAgICAgIEFWSERSUGx1c0NvbG9yVHJhbnNm b3JtUGFyYW1zICpwYXJhbXMgPSAmcy0+cGFyYW1zW3ddOwo+IC0gICAgICAgIHBhcmFtcy0+d2lu ZG93X3VwcGVyX2xlZnRfY29ybmVyX3ggPQo+IC0gICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0 X2JpdHMoZ2IsIDE2KSwgMX07Cj4gLSAgICAgICAgcGFyYW1zLT53aW5kb3dfdXBwZXJfbGVmdF9j b3JuZXJfeSA9Cj4gLSAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAx fTsKPiAtICAgICAgICBwYXJhbXMtPndpbmRvd19sb3dlcl9yaWdodF9jb3JuZXJfeCA9Cj4gLSAg ICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKPiAtICAgICAgICBw YXJhbXMtPndpbmRvd19sb3dlcl9yaWdodF9jb3JuZXJfeSA9Cj4gLSAgICAgICAgICAgIChBVlJh dGlvbmFsKXtnZXRfYml0cyhnYiwgMTYpLCAxfTsKPiArICAgICAgICBBVkhEUlBsdXNDb2xvclRy YW5zZm9ybVBhcmFtcyogcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKPiArICAgICAgICBwYXJhbXMt PndpbmRvd191cHBlcl9sZWZ0X2Nvcm5lcl94ID0gKEFWUmF0aW9uYWwpIHsgZ2V0X2JpdHMoZ2Is IDE2KSwgMSB9Owo+ICsgICAgICAgIHBhcmFtcy0+d2luZG93X3VwcGVyX2xlZnRfY29ybmVyX3kg PSAoQVZSYXRpb25hbCkgeyBnZXRfYml0cyhnYiwgMTYpLCAxIH07Cj4gKyAgICAgICAgcGFyYW1z LT53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVyX3ggPSAoQVZSYXRpb25hbCkgeyBnZXRfYml0cyhn YiwgMTYpLCAxIH07Cj4gKyAgICAgICAgcGFyYW1zLT53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVy X3kgPSAoQVZSYXRpb25hbCkgeyBnZXRfYml0cyhnYiwgMTYpLCAxIH07Cj4gIAo+ICAgICAgICAg IHBhcmFtcy0+Y2VudGVyX29mX2VsbGlwc2VfeCA9IGdldF9iaXRzKGdiLCAxNik7Cj4gICAgICAg ICAgcGFyYW1zLT5jZW50ZXJfb2ZfZWxsaXBzZV95ID0gZ2V0X2JpdHMoZ2IsIDE2KTsKPiBAQCAt NzgsOCArODIsNyBAQCBpbnQgZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1 cyhBVkR5bmFtaWNIRFJQbHVzICpzLCBjb25zdCB1aW50OF90Cj4gICAgICBpZiAoZ2V0X2JpdHNf bGVmdChnYikgPCAyOCkKPiAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAg Cj4gLSAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9tYXhpbXVtX2x1bWluYW5jZSA9Cj4g LSAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzX2xvbmcoZ2IsIDI3KSwgbHVtaW5hbmNlX2Rl bn07Cj4gKyAgICBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9tYXhpbXVtX2x1bWluYW5jZSA9 IChBVlJhdGlvbmFsKSB7IGdldF9iaXRzX2xvbmcoZ2IsIDI3KSwgbHVtaW5hbmNlX2RlbiB9Owo+ ICAgICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlX2Zs YWcgPSBnZXRfYml0czEoZ2IpOwo+ICAKPiAgICAgIGlmIChzLT50YXJnZXRlZF9zeXN0ZW1fZGlz cGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZykgewo+IEBAIC05OSwyMiArMTAyLDE5IEBA IGludCBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKEFWRHluYW1pY0hE UlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QKPiAgCj4gICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg PCByb3dzOyBpKyspIHsKPiAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb2xzOyBq KyspIHsKPiAtICAgICAgICAgICAgICAgIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVh bF9wZWFrX2x1bWluYW5jZVtpXVtqXSA9Cj4gLSAgICAgICAgICAgICAgICAgICAgKEFWUmF0aW9u YWwpe2dldF9iaXRzKGdiLCA0KSwgcGVha19sdW1pbmFuY2VfZGVufTsKPiArICAgICAgICAgICAg ICAgIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtq XSA9IChBVlJhdGlvbmFsKSB7IGdldF9iaXRzKGdiLCA0KSwgcGVha19sdW1pbmFuY2VfZGVuIH07 Cj4gICAgICAgICAgICAgIH0KPiAgICAgICAgICB9Cj4gICAgICB9Cj4gICAgICBmb3IgKGludCB3 ID0gMDsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKPiAtICAgICAgICBBVkhEUlBsdXNDb2xv clRyYW5zZm9ybVBhcmFtcyAqcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKPiArICAgICAgICBBVkhE UlBsdXNDb2xvclRyYW5zZm9ybVBhcmFtcyogcGFyYW1zID0gJnMtPnBhcmFtc1t3XTsKPiAgICAg ICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPCAoMyAqIDE3ICsgMTcgKyA0KSkKPiAgICAgICAg ICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gIAo+ICAgICAgICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgMzsgaSsrKSB7Cj4gLSAgICAgICAgICAgIHBhcmFtcy0+bWF4c2NsW2ldID0K PiAtICAgICAgICAgICAgICAgIChBVlJhdGlvbmFsKXtnZXRfYml0cyhnYiwgMTcpLCByZ2JfZGVu fTsKPiArICAgICAgICAgICAgcGFyYW1zLT5tYXhzY2xbaV0gPSAoQVZSYXRpb25hbCkgeyBnZXRf Yml0cyhnYiwgMTcpLCByZ2JfZGVuIH07Cj4gICAgICAgICAgfQo+IC0gICAgICAgIHBhcmFtcy0+ YXZlcmFnZV9tYXhyZ2IgPQo+IC0gICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2Is IDE3KSwgcmdiX2Rlbn07Cj4gKyAgICAgICAgcGFyYW1zLT5hdmVyYWdlX21heHJnYiA9IChBVlJh dGlvbmFsKSB7IGdldF9iaXRzKGdiLCAxNyksIHJnYl9kZW4gfTsKPiAgICAgICAgICBwYXJhbXMt Pm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVzID0gZ2V0X2JpdHMoZ2IsIDQpOwo+ ICAKPiAgICAgICAgICBpZiAoZ2V0X2JpdHNfbGVmdChnYikgPAo+IEBAIC0xMjMsMTQgKzEyMywx MyBAQCBpbnQgZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhBVkR5bmFt aWNIRFJQbHVzICpzLCBjb25zdCB1aW50OF90Cj4gIAo+ICAgICAgICAgIGZvciAoaW50IGkgPSAw OyBpIDwgcGFyYW1zLT5udW1fZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlczsgaSsrKSB7 Cj4gICAgICAgICAgICAgIHBhcmFtcy0+ZGlzdHJpYnV0aW9uX21heHJnYltpXS5wZXJjZW50YWdl ID0gZ2V0X2JpdHMoZ2IsIDcpOwo+IC0gICAgICAgICAgICBwYXJhbXMtPmRpc3RyaWJ1dGlvbl9t YXhyZ2JbaV0ucGVyY2VudGlsZSA9Cj4gLSAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0 X2JpdHMoZ2IsIDE3KSwgcmdiX2Rlbn07Cj4gKyAgICAgICAgICAgIHBhcmFtcy0+ZGlzdHJpYnV0 aW9uX21heHJnYltpXS5wZXJjZW50aWxlID0gKEFWUmF0aW9uYWwpIHsgZ2V0X2JpdHMoZ2IsIDE3 KSwgcmdiX2RlbiB9Owo+ICAgICAgICAgIH0KPiAgCj4gICAgICAgICAgaWYgKGdldF9iaXRzX2xl ZnQoZ2IpIDwgMTApCj4gICAgICAgICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ ICAKPiAtICAgICAgICBwYXJhbXMtPmZyYWN0aW9uX2JyaWdodF9waXhlbHMgPSAoQVZSYXRpb25h bCl7Z2V0X2JpdHMoZ2IsIDEwKSwgZnJhY3Rpb25fcGl4ZWxfZGVufTsKPiArICAgICAgICBwYXJh bXMtPmZyYWN0aW9uX2JyaWdodF9waXhlbHMgPSAoQVZSYXRpb25hbCkgeyBnZXRfYml0cyhnYiwg MTApLCBmcmFjdGlvbl9waXhlbF9kZW4gfTsKPiAgICAgIH0KPiAgICAgIGlmIChnZXRfYml0c19s ZWZ0KGdiKSA8IDEpCj4gICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gQEAg LTE1MiwxNCArMTUxLDEzIEBAIGludCBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIx MF9wbHVzKEFWRHluYW1pY0hEUlBsdXMgKnMsIGNvbnN0IHVpbnQ4X3QKPiAgCj4gICAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCByb3dzOyBpKyspIHsKPiAgICAgICAgICAgICAgZm9yIChpbnQg aiA9IDA7IGogPCBjb2xzOyBqKyspIHsKPiAtICAgICAgICAgICAgICAgIHMtPm1hc3RlcmluZ19k aXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXSA9Cj4gLSAgICAgICAgICAgICAgICAg ICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCA0KSwgcGVha19sdW1pbmFuY2VfZGVufTsKPiAr ICAgICAgICAgICAgICAgIHMtPm1hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5j ZVtpXVtqXSA9IChBVlJhdGlvbmFsKSB7IGdldF9iaXRzKGdiLCA0KSwgcGVha19sdW1pbmFuY2Vf ZGVuIH07Cj4gICAgICAgICAgICAgIH0KPiAgICAgICAgICB9Cj4gICAgICB9Cj4gIAo+ICAgICAg Zm9yIChpbnQgdyA9IDA7IHcgPCBzLT5udW1fd2luZG93czsgdysrKSB7Cj4gLSAgICAgICAgQVZI RFJQbHVzQ29sb3JUcmFuc2Zvcm1QYXJhbXMgKnBhcmFtcyA9ICZzLT5wYXJhbXNbd107Cj4gKyAg ICAgICAgQVZIRFJQbHVzQ29sb3JUcmFuc2Zvcm1QYXJhbXMqIHBhcmFtcyA9ICZzLT5wYXJhbXNb d107CgpUaGlzIGlzIG5vdCB0aGUgY29kZXN0eWxlIHByZWZlcnJlZCBieSBGRm1wZWcgKHJhdGlv bmFsZTogVGhlICcqJwpiZWxvbmdzIHRvIHRoZSB2YXJpYWJsZSwgbm90IHRoZSB0eXBlLiBBZnRl ciBhbGwgIlQqIGZvbywgYmFyOyIgZGVmaW5lcwpmb28gYXMgcG9pbnRlciB0byB0eXBlIFQgYW5k IGJhciBhcyB2YXJpYWJsZSBvZiB0eXBlIFQsIG5vdCBhcyBwb2ludGVyCnRvIFQpLiBBbmQgYW55 d2F5LCBpdCBpcyBhIGNvc21ldGljIGNoYW5nZS4KCj4gICAgICAgICAgaWYgKGdldF9iaXRzX2xl ZnQoZ2IpIDwgMSkKPiAgICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4g IAo+IEBAIC0xNjgsMTggKzE2NiwxNSBAQCBpbnQgZmZfcGFyc2VfaXR1X3RfdDM1X3RvX2R5bmFt aWNfaGRyMTBfcGx1cyhBVkR5bmFtaWNIRFJQbHVzICpzLCBjb25zdCB1aW50OF90Cj4gICAgICAg ICAgICAgIGlmIChnZXRfYml0c19sZWZ0KGdiKSA8IDI4KQo+ICAgICAgICAgICAgICAgICAgcmV0 dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gIAo+IC0gICAgICAgICAgICBwYXJhbXMtPmtuZWVf cG9pbnRfeCA9Cj4gLSAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEy KSwga25lZV9wb2ludF9kZW59Owo+IC0gICAgICAgICAgICBwYXJhbXMtPmtuZWVfcG9pbnRfeSA9 Cj4gLSAgICAgICAgICAgICAgICAoQVZSYXRpb25hbCl7Z2V0X2JpdHMoZ2IsIDEyKSwga25lZV9w b2ludF9kZW59Owo+ICsgICAgICAgICAgICBwYXJhbXMtPmtuZWVfcG9pbnRfeCA9IChBVlJhdGlv bmFsKSB7IGdldF9iaXRzKGdiLCAxMiksIGtuZWVfcG9pbnRfZGVuIH07Cj4gKyAgICAgICAgICAg IHBhcmFtcy0+a25lZV9wb2ludF95ID0gKEFWUmF0aW9uYWwpIHsgZ2V0X2JpdHMoZ2IsIDEyKSwg a25lZV9wb2ludF9kZW4gfTsKPiAgICAgICAgICAgICAgcGFyYW1zLT5udW1fYmV6aWVyX2N1cnZl X2FuY2hvcnMgPSBnZXRfYml0cyhnYiwgNCk7Cj4gIAo+ICAgICAgICAgICAgICBpZiAoZ2V0X2Jp dHNfbGVmdChnYikgPCAocGFyYW1zLT5udW1fYmV6aWVyX2N1cnZlX2FuY2hvcnMgKiAxMCkpCj4g ICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAgCj4gICAgICAg ICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcGFyYW1zLT5udW1fYmV6aWVyX2N1cnZlX2FuY2hv cnM7IGkrKykgewo+IC0gICAgICAgICAgICAgICAgcGFyYW1zLT5iZXppZXJfY3VydmVfYW5jaG9y c1tpXSA9Cj4gLSAgICAgICAgICAgICAgICAgICAgKEFWUmF0aW9uYWwpe2dldF9iaXRzKGdiLCAx MCksIGJlemllcl9hbmNob3JfZGVufTsKPiArICAgICAgICAgICAgICAgIHBhcmFtcy0+YmV6aWVy X2N1cnZlX2FuY2hvcnNbaV0gPSAoQVZSYXRpb25hbCkgeyBnZXRfYml0cyhnYiwgMTApLCBiZXpp ZXJfYW5jaG9yX2RlbiB9Owo+ICAgICAgICAgICAgICB9Cj4gICAgICAgICAgfQo+ICAKPiBAQCAt MTk2LDMgKzE5MSwyMDkgQEAgaW50IGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5hbWljX2hkcjEw X3BsdXMoQVZEeW5hbWljSERSUGx1cyAqcywgY29uc3QgdWludDhfdAo+ICAKPiAgICAgIHJldHVy biAwOwo+ICB9Cj4gKwo+ICtpbnQgYXZfcGFyc2VfZnVsbF9pdHVfdF90MzVfdG9fZHluYW1pY19o ZHIxMF9wbHVzKEFWRHluYW1pY0hEUlBsdXMqIHMsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsCj4gKwkJ CQkJICAgICBpbnQgc2l6ZSkKPiArewo+ICsgICAgdWludDhfdCBjb3VudHJ5X2NvZGU7Cj4gKyAg ICB1aW50MTZfdCBwcm92aWRlcl9jb2RlOwo+ICsgICAgdWludDE2X3QgcHJvdmlkZXJfb3JpZW50 ZWRfY29kZTsKPiArICAgIHVpbnQ4X3QgYXBwbGljYXRpb25faWRlbnRpZmllcjsKPiArICAgIEdl dEJpdENvbnRleHQgZ2JjLCAqZ2IgPSAmZ2JjOwo+ICsgICAgaW50IHJldCwgb2Zmc2V0Owo+ICsK PiArICAgIGlmICghcykKPiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwoKPwoKPiAr Cj4gKyAgICBpZiAoc2l6ZSA8IDcpCj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERB VEE7Cj4gKwo+ICsgICAgcmV0ID0gaW5pdF9nZXRfYml0czgoZ2IsIGRhdGEsIHNpemUpOwo+ICsg ICAgaWYgKHJldCA8IDApCj4gKyAgICAgICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICBjb3VudHJ5 X2NvZGUgPSBnZXRfYml0cyhnYiwgOCk7Cj4gKyAgICBwcm92aWRlcl9jb2RlID0gZ2V0X2JpdHMo Z2IsIDE2KTsKPiArCj4gKyAgICBpZiAoY291bnRyeV9jb2RlICE9IHVzYV9jb3VudHJ5X2NvZGUg fHwKPiArICAgICAgICBwcm92aWRlcl9jb2RlICE9IHNtcHRlX3Byb3ZpZGVyX2NvZGUpCj4gKyAg ICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKwo+ICsgICAgLy8gQS8zNDEgQW1l bmRtZW50IOKAkyAyMDk0LTQwCj4gKyAgICBwcm92aWRlcl9vcmllbnRlZF9jb2RlID0gZ2V0X2Jp dHMoZ2IsIDE2KTsKPiArICAgIGFwcGxpY2F0aW9uX2lkZW50aWZpZXIgPSBnZXRfYml0cyhnYiwg OCk7Cj4gKyAgICBpZiAocHJvdmlkZXJfb3JpZW50ZWRfY29kZSAhPSBzbXB0ZTIwOTRfNDBfcHJv dmlkZXJfb3JpZW50ZWRfY29kZSB8fAo+ICsgICAgICAgIGFwcGxpY2F0aW9uX2lkZW50aWZpZXIg IT0gc21wdGUyMDk0XzQwX2FwcGxpY2F0aW9uX2lkZW50aWZpZXIpCj4gKyAgICAgICAgcmV0dXJu IEFWRVJST1JfSU5WQUxJRERBVEE7Cj4gKwo+ICsgICAgb2Zmc2V0ID0gZ2V0X2JpdHNfY291bnQo Z2IpIC8gODsKClRoaXMgZnVuY3Rpb24gb25seSBwZXJmb3JtcyBieXRlLWFsaWduZWQgcmVhZHMg YW5kIGRvZXMgbm90IG5lZWQgdG8gdXNlCnRoZSBHZXRCaXQgQVBJIGF0IGFsbC4KCj4gKwo+ICsg ICAgcmV0dXJuIGZmX3BhcnNlX2l0dV90X3QzNV90b19keW5hbWljX2hkcjEwX3BsdXMocywgZ2It PmJ1ZmZlciArIG9mZnNldCwgc2l6ZSAtIG9mZnNldCk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQg ZmZfaXR1X3RfdDM1X2J1ZmZlcl9zaXplKGNvbnN0IEFWRHluYW1pY0hEUlBsdXMqIHMpCgpmZl8g aXMgb3VyIHByZWZpeCBmb3IgZnVuY3Rpb25zIHdpdGggZXh0ZXJuYWwgbGlua2FnZSAoYXMgd2Vs bCBhcwpzb21ldGltZXMgZm9yIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGRlY2xhcmVkIGluIGhl YWRlcnMpLgoKPiArewo+ICsgICAgaW50IGJpdF9jb3VudCA9IDA7Cj4gKyAgICBpbnQgdywgc2l6 ZTsKPiArCj4gKyAgICBpZiAoIXMpCj4gKyAgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICsgICAgLy8g NyBieXRlcyBmb3IgY291bnRyeSBjb2RlLCBwcm92aWRlciBjb2RlLCBhbmQgdXNlciBpZGVudGlm aWVyLgo+ICsgICAgYml0X2NvdW50ICs9IDU2Owo+ICsKPiArICAgIGlmIChzLT5udW1fd2luZG93 cyA8IDEgfHwgcy0+bnVtX3dpbmRvd3MgPiAzKQo+ICsgICAgICAgIHJldHVybiAwOwo+ICsgICAg Ly8gQ291bnQgYml0cyBmb3Igd2luZG93IHBhcmFtcy4KPiArICAgIGJpdF9jb3VudCArPSAyICsg KCgxOSAqIDggKyAxKSAqIChzLT5udW1fd2luZG93cyAtIDEpKTsKPiArCj4gKyAgICBiaXRfY291 bnQgKz0gMjg7Cj4gKyAgICBpZiAocy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3Bl YWtfbHVtaW5hbmNlX2ZsYWcpIHsKPiArICAgICAgICBpbnQgcm93cywgY29sczsKPiArICAgICAg ICByb3dzID0gcy0+bnVtX3Jvd3NfdGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtf bHVtaW5hbmNlOwo+ICsgICAgICAgIGNvbHMgPSBzLT5udW1fY29sc190YXJnZXRlZF9zeXN0ZW1f ZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2U7Cj4gKyAgICAgICAgaWYgKCgocm93cyA8IDIp IHx8IChyb3dzID4gMjUpKSB8fCAoKGNvbHMgPCAyKSB8fCAoY29scyA+IDI1KSkpCj4gKyAgICAg ICAgICAgIHJldHVybiAwOwo+ICsKPiArICAgICAgICBiaXRfY291bnQgKz0gKDEwICsgcm93cyAq IGNvbHMgKiA0KTsKPiArICAgIH0KPiArICAgIGZvciAodyA9IDA7IHcgPCBzLT5udW1fd2luZG93 czsgdysrKSB7Cj4gKyAgICAgICAgYml0X2NvdW50ICs9ICgzICogMTcgKyAxNyArIDQgKyAxMCkg KyAocy0+cGFyYW1zW3ddLm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVzICogMjQp Owo+ICsgICAgfQo+ICsgICAgYml0X2NvdW50Kys7Cj4gKwo+ICsgICAgaWYgKHMtPm1hc3Rlcmlu Z19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnKSB7Cj4gKyAgICAgICAgaW50IHJv d3MsIGNvbHM7Cj4gKyAgICAgICAgcm93cyA9IHMtPm51bV9yb3dzX21hc3RlcmluZ19kaXNwbGF5 X2FjdHVhbF9wZWFrX2x1bWluYW5jZTsKPiArICAgICAgICBjb2xzID0gcy0+bnVtX2NvbHNfbWFz dGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5hbmNlOwo+ICsgICAgICAgIGlmICgoKHJv d3MgPCAyKSB8fCAocm93cyA+IDI1KSkgfHwgKChjb2xzIDwgMikgfHwgKGNvbHMgPiAyNSkpKQo+ ICsgICAgICAgICAgICByZXR1cm4gMDsKPiArCj4gKyAgICAgICAgYml0X2NvdW50ICs9ICgxMCAr IHJvd3MgKiBjb2xzICogNCk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgZm9yICh3ID0gMDsgdyA8IHMt Pm51bV93aW5kb3dzOyB3KyspIHsKPiArICAgICAgICBiaXRfY291bnQrKzsKPiArICAgICAgICBp ZiAocy0+cGFyYW1zW3ddLnRvbmVfbWFwcGluZ19mbGFnKQo+ICsgICAgICAgICAgICBiaXRfY291 bnQgKz0gKDI4ICsgcy0+cGFyYW1zW3ddLm51bV9iZXppZXJfY3VydmVfYW5jaG9ycyAqIDEwKTsK PiArCj4gKyAgICAgICAgYml0X2NvdW50Kys7Cj4gKyAgICAgICAgaWYgKHMtPnBhcmFtc1t3XS5j b2xvcl9zYXR1cmF0aW9uX21hcHBpbmdfZmxhZykKPiArICAgICAgICAgICAgYml0X2NvdW50ICs9 IDY7Cj4gKyAgICB9Cj4gKyAgICBzaXplID0gYml0X2NvdW50IC8gODsKPiArICAgIGlmIChiaXRf Y291bnQgJSA4ICE9IDApCj4gKyAgICAgICAgc2l6ZSsrOwo+ICsgICAgcmV0dXJuIHNpemU7Cj4g K30KPiArCj4gK2ludCBhdl93cml0ZV9keW5hbWljX2hkcjEwX3BsdXNfdG9fZnVsbF9pdHVfdF90 MzUoY29uc3QgQVZEeW5hbWljSERSUGx1cyogcywgdWludDhfdCoqIGRhdGEsIHNpemVfdCogc2l6 ZSkKPiArewo+ICsgICAgaW50IHcsIGksIGo7Cj4gKyAgICBQdXRCaXRDb250ZXh0IHBiYywgKnBi ID0gJnBiYzsKPiArCj4gKyAgICBpZiAoIXMgfHwgIXNpemUpCj4gKyAgICAgICAgcmV0dXJuIEFW RVJST1IoRUlOVkFMKTsKPiArCj4gKyAgICAqc2l6ZSA9IGZmX2l0dV90X3QzNV9idWZmZXJfc2l6 ZShzKTsKPiArICAgIGlmICgqc2l6ZSA8PSAwKQo+ICsgICAgICAgIHJldHVybiBBVkVSUk9SKEVJ TlZBTCk7Cj4gKyAgICAqZGF0YSA9IGF2X21hbGxvY3ooKnNpemUpOwo+ICsgICAgaW5pdF9wdXRf Yml0cyhwYiwgKmRhdGEsICpzaXplKTsKPiArICAgIGlmIChwdXRfYml0c19sZWZ0KHBiKSA8ICpz aXplKSB7Cj4gKyAgICAgICAgYXZfZnJlZXAoZGF0YSk7Cj4gKyAgICAgICAgcmV0dXJuIEFWRVJS T1IoRUlOVkFMKTsKPiArICAgIH0KPiArICAgIHB1dF9iaXRzKHBiLCA4LCB1c2FfY291bnRyeV9j b2RlKTsKPiArCj4gKyAgICBwdXRfYml0cyhwYiwgMTYsIHNtcHRlX3Byb3ZpZGVyX2NvZGUpOwo+ ICsgICAgcHV0X2JpdHMocGIsIDE2LCBzbXB0ZTIwOTRfNDBfcHJvdmlkZXJfb3JpZW50ZWRfY29k ZSk7Cj4gKyAgICBwdXRfYml0cyhwYiwgOCwgc21wdGUyMDk0XzQwX2FwcGxpY2F0aW9uX2lkZW50 aWZpZXIpOwo+ICsgICAgcHV0X2JpdHMocGIsIDgsIHMtPmFwcGxpY2F0aW9uX3ZlcnNpb24pOwo+ ICsKPiArICAgIHB1dF9iaXRzKHBiLCAyLCBzLT5udW1fd2luZG93cyk7Cj4gKwo+ICsgICAgZm9y ICh3ID0gMTsgdyA8IHMtPm51bV93aW5kb3dzOyB3KyspIHsKPiArICAgICAgICBwdXRfYml0cyhw YiwgMTYsIHMtPnBhcmFtc1t3XS53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeC5udW0gLyBzLT5w YXJhbXNbd10ud2luZG93X3VwcGVyX2xlZnRfY29ybmVyX3guZGVuKTsKPiArICAgICAgICBwdXRf Yml0cyhwYiwgMTYsIHMtPnBhcmFtc1t3XS53aW5kb3dfdXBwZXJfbGVmdF9jb3JuZXJfeS5udW0g LyBzLT5wYXJhbXNbd10ud2luZG93X3VwcGVyX2xlZnRfY29ybmVyX3kuZGVuKTsKPiArICAgICAg ICBwdXRfYml0cyhwYiwgMTYsIHMtPnBhcmFtc1t3XS53aW5kb3dfbG93ZXJfcmlnaHRfY29ybmVy X3gubnVtIC8gcy0+cGFyYW1zW3ddLndpbmRvd19sb3dlcl9yaWdodF9jb3JuZXJfeC5kZW4pOwo+ ICsgICAgICAgIHB1dF9iaXRzKHBiLCAxNiwgcy0+cGFyYW1zW3ddLndpbmRvd19sb3dlcl9yaWdo dF9jb3JuZXJfeS5udW0gLyBzLT5wYXJhbXNbd10ud2luZG93X2xvd2VyX3JpZ2h0X2Nvcm5lcl95 LmRlbik7Cj4gKyAgICAgICAgcHV0X2JpdHMocGIsIDE2LCBzLT5wYXJhbXNbd10uY2VudGVyX29m X2VsbGlwc2VfeCk7Cj4gKyAgICAgICAgcHV0X2JpdHMocGIsIDE2LCBzLT5wYXJhbXNbd10uY2Vu dGVyX29mX2VsbGlwc2VfeSk7Cj4gKyAgICAgICAgcHV0X2JpdHMocGIsIDgsIHMtPnBhcmFtc1t3 XS5yb3RhdGlvbl9hbmdsZSk7Cj4gKyAgICAgICAgcHV0X2JpdHMocGIsIDE2LCBzLT5wYXJhbXNb d10uc2VtaW1ham9yX2F4aXNfaW50ZXJuYWxfZWxsaXBzZSk7Cj4gKyAgICAgICAgcHV0X2JpdHMo cGIsIDE2LCBzLT5wYXJhbXNbd10uc2VtaW1ham9yX2F4aXNfZXh0ZXJuYWxfZWxsaXBzZSk7Cj4g KyAgICAgICAgcHV0X2JpdHMocGIsIDE2LCBzLT5wYXJhbXNbd10uc2VtaW1pbm9yX2F4aXNfZXh0 ZXJuYWxfZWxsaXBzZSk7Cj4gKyAgICAgICAgcHV0X2JpdHMocGIsIDEsIHMtPnBhcmFtc1t3XS5v dmVybGFwX3Byb2Nlc3Nfb3B0aW9uKTsKPiArICAgIH0KPiArICAgIHB1dF9iaXRzKHBiLCAyNywK PiArICAgICAgICAgICAgIHMtPnRhcmdldGVkX3N5c3RlbV9kaXNwbGF5X21heGltdW1fbHVtaW5h bmNlLm51bSAqIGx1bWluYW5jZV9kZW4gLyBzLT50YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9tYXhp bXVtX2x1bWluYW5jZS5kZW4pOwo+ICsgICAgcHV0X2JpdHMocGIsIDEsIHMtPnRhcmdldGVkX3N5 c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZV9mbGFnKTsKPiArICAgIGlmIChzLT50 YXJnZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2VfZmxhZykgewo+ICsg ICAgICAgIGludCByb3dzLCBjb2xzOwo+ICsgICAgICAgIHJvd3MgPSBzLT5udW1fcm93c190YXJn ZXRlZF9zeXN0ZW1fZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2U7Cj4gKyAgICAgICAgY29s cyA9IHMtPm51bV9jb2xzX3RhcmdldGVkX3N5c3RlbV9kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWlu YW5jZTsKPiArICAgICAgICBwdXRfYml0cyhwYiwgNSwgcm93cyk7Cj4gKyAgICAgICAgcHV0X2Jp dHMocGIsIDUsIGNvbHMpOwo+ICsgICAgICAgIGZvciAoaSA9IDA7IGkgPCByb3dzOyBpKyspIHsK PiArICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvbHM7IGorKykgewo+ICsgICAgICAgICAg ICAgICAgcHV0X2JpdHMoCj4gKyAgICAgICAgICAgICAgICAgICAgcGIsIDQsCj4gKyAgICAgICAg ICAgICAgICAgICAgcy0+dGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5h bmNlW2ldW2pdLm51bSAqIHBlYWtfbHVtaW5hbmNlX2RlbiAvIHMtPnRhcmdldGVkX3N5c3RlbV9k aXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXS5kZW4pOwo+ICsgICAgICAgICAgICB9 Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsgICAgZm9yICh3ID0gMDsgdyA8IHMtPm51bV93aW5k b3dzOyB3KyspIHsKPiArICAgICAgICBmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKSB7Cj4gKyAgICAg ICAgICAgIHB1dF9iaXRzKHBiLCAxNywKPiArICAgICAgICAgICAgICAgICAgICAgcy0+cGFyYW1z W3ddLm1heHNjbFtpXS5udW0gKiByZ2JfZGVuIC8gcy0+cGFyYW1zW3ddLm1heHNjbFtpXS5kZW4p Owo+ICsgICAgICAgIH0KPiArICAgICAgICBwdXRfYml0cyhwYiwgMTcsCj4gKyAgICAgICAgICAg ICAgICAgcy0+cGFyYW1zW3ddLmF2ZXJhZ2VfbWF4cmdiLm51bSAqIHJnYl9kZW4gLyBzLT5wYXJh bXNbd10uYXZlcmFnZV9tYXhyZ2IuZGVuKTsKPiArICAgICAgICBwdXRfYml0cyhwYiwgNCwgcy0+ cGFyYW1zW3ddLm51bV9kaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGVzKTsKPiArCj4gKyAg ICAgICAgZm9yIChpID0gMDsgaSA8IHMtPnBhcmFtc1t3XS5udW1fZGlzdHJpYnV0aW9uX21heHJn Yl9wZXJjZW50aWxlczsgaSsrKSB7Cj4gKyAgICAgICAgICAgIHB1dF9iaXRzKHBiLCA3LCBzLT5w YXJhbXNbd10uZGlzdHJpYnV0aW9uX21heHJnYltpXS5wZXJjZW50YWdlKTsKPiArICAgICAgICAg ICAgcHV0X2JpdHMocGIsIDE3LAo+ICsgICAgICAgICAgICAgICAgICAgICBzLT5wYXJhbXNbd10u ZGlzdHJpYnV0aW9uX21heHJnYltpXS5wZXJjZW50aWxlLm51bSAqIHJnYl9kZW4gLyBzLT5wYXJh bXNbd10uZGlzdHJpYnV0aW9uX21heHJnYltpXS5wZXJjZW50aWxlLmRlbik7Cj4gKyAgICAgICAg fQo+ICsgICAgICAgIHB1dF9iaXRzKHBiLCAxMCwKPiArICAgICAgICAgICAgICAgICBzLT5wYXJh bXNbd10uZnJhY3Rpb25fYnJpZ2h0X3BpeGVscy5udW0gKiBmcmFjdGlvbl9waXhlbF9kZW4gLyBz LT5wYXJhbXNbd10uZnJhY3Rpb25fYnJpZ2h0X3BpeGVscy5kZW4pOwo+ICsgICAgfQo+ICsgICAg cHV0X2JpdHMocGIsIDEsIHMtPm1hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFrX2x1bWluYW5j ZV9mbGFnKTsKPiArICAgIGlmIChzLT5tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1p bmFuY2VfZmxhZykgewo+ICsgICAgICAgIGludCByb3dzLCBjb2xzOwo+ICsgICAgICAgIHJvd3Mg PSBzLT5udW1fcm93c19tYXN0ZXJpbmdfZGlzcGxheV9hY3R1YWxfcGVha19sdW1pbmFuY2U7Cj4g KyAgICAgICAgY29scyA9IHMtPm51bV9jb2xzX21hc3RlcmluZ19kaXNwbGF5X2FjdHVhbF9wZWFr X2x1bWluYW5jZTsKPiArICAgICAgICBwdXRfYml0cyhwYiwgNSwgcm93cyk7Cj4gKyAgICAgICAg cHV0X2JpdHMocGIsIDUsIGNvbHMpOwo+ICsgICAgICAgIGZvciAoaSA9IDA7IGkgPCByb3dzOyBp KyspIHsKPiArICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGNvbHM7IGorKykgewo+ICsgICAg ICAgICAgICAgICAgcHV0X2JpdHMoCj4gKyAgICAgICAgICAgICAgICAgICAgcGIsIDQsCj4gKyAg ICAgICAgICAgICAgICAgICAgcy0+bWFzdGVyaW5nX2Rpc3BsYXlfYWN0dWFsX3BlYWtfbHVtaW5h bmNlW2ldW2pdLm51bSAqIHBlYWtfbHVtaW5hbmNlX2RlbiAvIHMtPm1hc3RlcmluZ19kaXNwbGF5 X2FjdHVhbF9wZWFrX2x1bWluYW5jZVtpXVtqXS5kZW4pOwo+ICsgICAgICAgICAgICB9Cj4gKyAg ICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIGZvciAodyA9IDA7IHcgPCBzLT5udW1fd2luZG93 czsgdysrKSB7Cj4gKyAgICAgICAgcHV0X2JpdHMocGIsIDEsIHMtPnBhcmFtc1t3XS50b25lX21h cHBpbmdfZmxhZyk7Cj4gKyAgICAgICAgaWYgKHMtPnBhcmFtc1t3XS50b25lX21hcHBpbmdfZmxh Zykgewo+ICsgICAgICAgICAgICBwdXRfYml0cyhwYiwgMTIsCj4gKyAgICAgICAgICAgICAgICAg ICAgIHMtPnBhcmFtc1t3XS5rbmVlX3BvaW50X3gubnVtICoga25lZV9wb2ludF9kZW4gLyBzLT5w YXJhbXNbd10ua25lZV9wb2ludF94LmRlbik7Cj4gKyAgICAgICAgICAgIHB1dF9iaXRzKHBiLCAx MiwKPiArICAgICAgICAgICAgICAgICAgICAgcy0+cGFyYW1zW3ddLmtuZWVfcG9pbnRfeS5udW0g KiBrbmVlX3BvaW50X2RlbiAvIHMtPnBhcmFtc1t3XS5rbmVlX3BvaW50X3kuZGVuKTsKPiArICAg ICAgICAgICAgcHV0X2JpdHMocGIsIDQsIHMtPnBhcmFtc1t3XS5udW1fYmV6aWVyX2N1cnZlX2Fu Y2hvcnMpOwo+ICsgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcy0+cGFyYW1zW3ddLm51bV9i ZXppZXJfY3VydmVfYW5jaG9yczsgaSsrKSB7Cj4gKyAgICAgICAgICAgICAgICBwdXRfYml0cyhw YiwgMTAsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICBzLT5wYXJhbXNbd10uYmV6aWVyX2N1 cnZlX2FuY2hvcnNbaV0ubnVtICogYmV6aWVyX2FuY2hvcl9kZW4gLyBzLT5wYXJhbXNbd10uYmV6 aWVyX2N1cnZlX2FuY2hvcnNbaV0uZGVuKTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgIH0K PiArICAgICAgICBwdXRfYml0cyhwYiwgMSwgcy0+cGFyYW1zW3ddLmNvbG9yX3NhdHVyYXRpb25f bWFwcGluZ19mbGFnKTsKPiArICAgICAgICBpZiAocy0+cGFyYW1zW3ddLmNvbG9yX3NhdHVyYXRp b25fbWFwcGluZ19mbGFnKQo+ICsgICAgICAgICAgICBwdXRfYml0cyhwYiwgNiwKPiArICAgICAg ICAgICAgICAgICAgICAgcy0+cGFyYW1zW3ddLmNvbG9yX3NhdHVyYXRpb25fd2VpZ2h0Lm51bSAq IHNhdHVyYXRpb25fd2VpZ2h0X2RlbiAvIHMtPnBhcmFtc1t3XS5jb2xvcl9zYXR1cmF0aW9uX3dl aWdodC5kZW4pOwo+ICsgICAgfQo+ICsgICAgZmx1c2hfcHV0X2JpdHMocGIpOwo+ICsgICAgcmV0 dXJuIDA7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvbGliYXZjb2RlYy9keW5hbWljX2hkcjEwX3BsdXMu aCBiL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmgKPiBpbmRleCBjZDdhY2YwNDMyLi5k NTJjM2U1NTJkIDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMvZHluYW1pY19oZHIxMF9wbHVzLmgK PiArKysgYi9saWJhdmNvZGVjL2R5bmFtaWNfaGRyMTBfcGx1cy5oCj4gQEAgLTI5LDcgKzI5LDI5 IEBACj4gICAqCj4gICAqIEByZXR1cm4gMCBpZiBzdWNjZWVkLiBPdGhlcndpc2UsIHJldHVybnMg dGhlIGFwcHJvcHJpYXRlIEFWRVJST1IuCj4gICAqLwo+IC1pbnQgZmZfcGFyc2VfaXR1X3RfdDM1 X3RvX2R5bmFtaWNfaGRyMTBfcGx1cyhBVkR5bmFtaWNIRFJQbHVzICpzLCBjb25zdCB1aW50OF90 ICpkYXRhLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgc2l6ZSk7Cj4gK2ludCBmZl9wYXJzZV9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVz KEFWRHluYW1pY0hEUlBsdXMqIHMsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsCj4gKwkJCQkJICAgICBp bnQgc2l6ZSk7Cj4gKwo+ICsvKioKPiArICogUGFyc2UgdGhlIHVzZXIgZGF0YSByZWdpc3RlcmVk IElUVS1UIFQuMzUgd2l0aCBoZWFkZXIgdG8gQVZEeW5hbWljSERSUGx1cy4gQXQgZmlyc3QgY2hl Y2sKPiArICogdGhlIGhlYWRlciBpZiB0aGUgcHJvdmlkZXIgY29kZSBpcyBTTVBURS0yMDk0LTQw LiBUaGVuIHdpbGwgcGFyc2UgdGhlIGRhdGEgdG8gQVZEeW5hbWljSERSUGx1cy4KPiArICogQHBh cmFtIHMgQSBwb2ludGVyIGNvbnRhaW5pbmcgdGhlIGRlY29kZWQgQVZEeW5hbWljSERSUGx1cyBz dHJ1Y3R1cmUuCj4gKyAqIEBwYXJhbSBkYXRhIFRoZSBieXRlIGFycmF5IGNvbnRhaW5pbmcgdGhl IHJhdyBJVFUtVCBULjM1IGRhdGEgd2l0aCBoZWFkZXIuCj4gKyAqIEBwYXJhbSBzaXplIFNpemUg b2YgdGhlIGRhdGEgYXJyYXkgaW4gYnl0ZXMuCj4gKyAqCj4gKyAqIEByZXR1cm4gMCBpZiBzdWNj ZWVkLiBPdGhlcndpc2UsIHJldHVybnMgdGhlIGFwcHJvcHJpYXRlIEFWRVJST1IuCj4gKyAqLwo+ ICtpbnQgYXZfcGFyc2VfZnVsbF9pdHVfdF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKEFWRHlu YW1pY0hEUlBsdXMqIHMsIGNvbnN0IHVpbnQ4X3QqIGRhdGEsCj4gKwkJCQkJICAgICBpbnQgc2l6 ZSk7Cj4gKwo+ICsvKioKPiArICogRW5jb2RlIGFuZCB3cml0ZSBBVkR5bmFtaWNIRFJQbHVzIHRv IHRoZSB1c2VyIGRhdGEgcmVnaXN0ZXJlZCBJVFUtVCBULjMgd2l0aCBoZWFkZXIgKGNvbnRhaW5p bmcgdGhlIHByb3ZpZGVyIGNvZGUpLgo+ICsgKiBAcGFyYW0gcyBBIHBvaW50ZXIgY29udGFpbmlu ZyB0aGUgQVZEeW5hbWljSERSUGx1cyBzdHJ1Y3R1cmUuCj4gKyAqIEBwYXJhbSBkYXRhIFRoZSBi eXRlIGFycmF5IGNvbnRhaW5pbmcgdGhlIHJhdyBJVFUtVCBULjM1IGRhdGEgd2l0aCBoZWFkZXIu Cj4gKyAqIEBwYXJhbSBzaXplIFRoZSBzaXplIG9mIHRoZSByYXcgSVRVLVQgVC4zNSBkYXRhLgo+ ICsgKgo+ICsgKiBAcmV0dXJuIDAgaWYgc3VjY2VlZC4gT3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBh cHByb3ByaWF0ZSBBVkVSUk9SLgo+ICsgKi8KPiAraW50IGF2X3dyaXRlX2R5bmFtaWNfaGRyMTBf cGx1c190b19mdWxsX2l0dV90X3QzNShjb25zdCBBVkR5bmFtaWNIRFJQbHVzKiBzLCB1aW50OF90 KiogZGF0YSwgc2l6ZV90KiBzaXplKTsKPiAgCj4gICNlbmRpZiAvKiBBVkNPREVDX0RZTkFNSUNf SERSMTBfUExVU19IICovCj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L21hdHJvc2thLmggYi9s aWJhdmZvcm1hdC9tYXRyb3NrYS5oCj4gaW5kZXggNDUwNzdlZDMzZi4uYzNjZjllZWY1MyAxMDA2 NDQKPiAtLS0gYS9saWJhdmZvcm1hdC9tYXRyb3NrYS5oCj4gKysrIGIvbGliYXZmb3JtYXQvbWF0 cm9za2EuaAo+IEBAIC0zNTgsNiArMzU4LDExIEBAIHR5cGVkZWYgZW51bSB7Cj4gICAgTUFUUk9T S0FfVklERU9fUFJPSkVDVElPTl9UWVBFX01FU0ggICAgICAgICAgICAgICA9IDMsCj4gIH0gTWF0 cm9za2FWaWRlb1Byb2plY3Rpb25UeXBlOwo+ICAKPiArdHlwZWRlZiBlbnVtIHsKPiArICBNQVRS T1NLQV9CTE9DS19BRERfSURfREVGQVVMVCAgICAgICAgICAgICAgICAgICAgID0gMCwKClRoZSBk ZWZhdWx0IHZhbHVlIG9mIEJsb2NrQWRkSUQgaXMgYWN0dWFsbHkgMS4gMCBpcyBhbiBpbnZhbGlk IHZhbHVlIGZvcgpCbG9ja0FkZElELgoKPiArICBNQVRST1NLQV9CTE9DS19BRERfSURfRFlOQU1J Q19IRFIxMF9QTFVTICAgICAgICAgID0gNCwKPiArfSBNYXRyb3NrYUJsb2NrQWRkSUQ7Cj4gKwo+ ICAvKgo+ICAgKiBNYXRyb3NrYSBDb2RlYyBJRHMsIHN0cmluZ3MKPiAgICovCj4gZGlmZiAtLWdp dCBhL2xpYmF2Zm9ybWF0L21hdHJvc2thZGVjLmMgYi9saWJhdmZvcm1hdC9tYXRyb3NrYWRlYy5j Cj4gaW5kZXggMTZhM2U5MzYxMS4uN2ZhNDQ4M2JhNCAxMDA2NDQKPiAtLS0gYS9saWJhdmZvcm1h dC9tYXRyb3NrYWRlYy5jCj4gKysrIGIvbGliYXZmb3JtYXQvbWF0cm9za2FkZWMuYwo+IEBAIC01 MCw2ICs1MCw3IEBACj4gICNpbmNsdWRlICJsaWJhdnV0aWwvc3BoZXJpY2FsLmgiCj4gIAo+ICAj aW5jbHVkZSAibGliYXZjb2RlYy9ieXRlc3RyZWFtLmgiCj4gKyNpbmNsdWRlICJsaWJhdmNvZGVj L2R5bmFtaWNfaGRyMTBfcGx1cy5oIgo+ICAjaW5jbHVkZSAibGliYXZjb2RlYy9mbGFjLmgiCj4g ICNpbmNsdWRlICJsaWJhdmNvZGVjL21wZWc0YXVkaW8uaCIKPiAgI2luY2x1ZGUgImxpYmF2Y29k ZWMvcGFja2V0X2ludGVybmFsLmgiCj4gQEAgLTM2MzYsMTUgKzM2MzcsMjggQEAgc3RhdGljIGlu dCBtYXRyb3NrYV9wYXJzZV9mcmFtZShNYXRyb3NrYURlbXV4Q29udGV4dCAqbWF0cm9za2EsCj4g ICAgICBwa3QtPnN0cmVhbV9pbmRleCA9IHN0LT5pbmRleDsKPiAgCj4gICAgICBpZiAoYWRkaXRp b25hbF9zaXplID4gMCkgewo+IC0gICAgICAgIHVpbnQ4X3QgKnNpZGVfZGF0YSA9IGF2X3BhY2tl dF9uZXdfc2lkZV9kYXRhKHBrdCwKPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBBVl9QS1RfREFUQV9NQVRST1NLQV9CTE9DS0FERElUSU9OQUws Cj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YWRkaXRpb25hbF9zaXplICsgOCk7Cj4gLSAgICAgICAgaWYgKCFzaWRlX2RhdGEpIHsKPiAtICAg ICAgICAgICAgYXZfcGFja2V0X3VucmVmKHBrdCk7Cj4gLSAgICAgICAgICAgIHJldHVybiBBVkVS Uk9SKEVOT01FTSk7Cj4gKyAgICAgICAgaWYgKGFkZGl0aW9uYWxfaWQgPT0gTUFUUk9TS0FfQkxP Q0tfQUREX0lEX0RZTkFNSUNfSERSMTBfUExVUykgewo+ICsgICAgICAgICAgICBBVkR5bmFtaWNI RFJQbHVzIGhkcjEwX3BsdXM7Cj4gKyAgICAgICAgICAgIGlmICghYXZfcGFyc2VfZnVsbF9pdHVf dF90MzVfdG9fZHluYW1pY19oZHIxMF9wbHVzKCZoZHIxMF9wbHVzLCBhZGRpdGlvbmFsLCBhZGRp dGlvbmFsX3NpemUpKSB7Cj4gKyAgICAgICAgICAgICAgICB1aW50OF90ICpzaWRlX2RhdGEgPSBh dl9wYWNrZXRfbmV3X3NpZGVfZGF0YShwa3QsIEFWX1BLVF9EQVRBX0RZTkFNSUNfSERSMTBfUExV Uywgc2l6ZW9mKGhkcjEwX3BsdXMpKTsKPiArICAgICAgICAgICAgICAgIGlmICghc2lkZV9kYXRh KSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgYXZfcGFja2V0X3VucmVmKHBrdCk7Cj4gKyAgICAg ICAgICAgICAgICAgICAgYXZfZnJlZShwa3QpOwoKV2hlcmUgZGlkIHlvdSBnZXQgdGhhdCBmcm9t PwoKPiArICAgICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+ICsgICAg ICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgbWVtY3B5KHNpZGVfZGF0YSwgKHVpbnQ4 X3QqKSgmaGRyMTBfcGx1cyksIHNpemVvZihoZHIxMF9wbHVzKSk7Cj4gKyAgICAgICAgICAgICAg ICB9Cj4gKwl9IGVsc2Ugewo+ICsJICAgIHVpbnQ4X3QgKnNpZGVfZGF0YSA9IGF2X3BhY2tldF9u ZXdfc2lkZV9kYXRhKHBrdCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQVZfUEtUX0RBVEFfTUFUUk9TS0FfQkxPQ0tBRERJVElPTkFM LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhZGRpdGlvbmFsX3NpemUgKyA4KTsKPiArICAgICAgICAgICAgaWYgKCFzaWRlX2RhdGEp IHsKPiArICAgICAgICAgICAgICAgIGF2X3BhY2tldF91bnJlZihwa3QpOwo+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAg ICAgICBBVl9XQjY0KHNpZGVfZGF0YSwgYWRkaXRpb25hbF9pZCk7Cj4gKyAgICAgICAgICAgIG1l bWNweShzaWRlX2RhdGEgKyA4LCBhZGRpdGlvbmFsLCBhZGRpdGlvbmFsX3NpemUpOwo+ICAgICAg ICAgIH0KPiAtICAgICAgICBBVl9XQjY0KHNpZGVfZGF0YSwgYWRkaXRpb25hbF9pZCk7Cj4gLSAg ICAgICAgbWVtY3B5KHNpZGVfZGF0YSArIDgsIGFkZGl0aW9uYWwsIGFkZGl0aW9uYWxfc2l6ZSk7 Cj4gICAgICB9Cj4gIAo+ICAgICAgaWYgKGRpc2NhcmRfcGFkZGluZykgewo+IGRpZmYgLS1naXQg YS9saWJhdmZvcm1hdC9tYXRyb3NrYWVuYy5jIGIvbGliYXZmb3JtYXQvbWF0cm9za2FlbmMuYwo+ IGluZGV4IGVkMWFkNTAzOWQuLjY2NWUzYjdlYzYgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmb3JtYXQv bWF0cm9za2FlbmMuYwo+ICsrKyBiL2xpYmF2Zm9ybWF0L21hdHJvc2thZW5jLmMKPiBAQCAtNTcs NiArNTcsNyBAQAo+ICAjaW5jbHVkZSAibGliYXZ1dGlsL3N0ZXJlbzNkLmgiCj4gIAo+ICAjaW5j bHVkZSAibGliYXZjb2RlYy9hdjEuaCIKPiArI2luY2x1ZGUgImxpYmF2Y29kZWMvZHluYW1pY19o ZHIxMF9wbHVzLmgiCj4gICNpbmNsdWRlICJsaWJhdmNvZGVjL3hpcGguaCIKPiAgI2luY2x1ZGUg ImxpYmF2Y29kZWMvbXBlZzRhdWRpby5oIgo+ICAKPiBAQCAtMjQ5MCw3ICsyNDkxLDcgQEAgc3Rh dGljIGludCBta3Zfd3JpdGVfaGVhZGVyKEFWRm9ybWF0Q29udGV4dCAqcykKPiAgCj4gICNpZiBD T05GSUdfTUFUUk9TS0FfTVVYRVIKPiAgc3RhdGljIGludCBta3ZfcmVmb3JtYXRfaDI2NDUoTWF0 cm9za2FNdXhDb250ZXh0ICpta3YsIEFWSU9Db250ZXh0ICpwYiwKPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgQVZQYWNrZXQgKnBrdCwgaW50ICpzaXplKQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQVZQYWNrZXQgKnBrdCwgaW50ICpzaXplKQoK U3B1cmlvdXMgY2hhbmdlLgoKPiAgewo+ICAgICAgaW50IHJldDsKPiAgICAgIGlmIChwYikgewo+ IEBAIC0yNTkxLDggKzI1OTIsMTEgQEAgc3RhdGljIGludCBta3Zfd3JpdGVfYmxvY2sodm9pZCAq bG9nY3R4LCBNYXRyb3NrYU11eENvbnRleHQgKm1rdiwKPiAgewo+ICAgICAgdWludDhfdCAqc2lk ZV9kYXRhOwo+ICAgICAgc2l6ZV90IHNpZGVfZGF0YV9zaXplOwo+IC0gICAgdWludDY0X3QgYWRk aXRpb25hbF9pZDsKPiArICAgIHVpbnQ2NF90IGFkZGl0aW9uYWxfaWQgPSAwOwo+ICAgICAgdW5z aWduZWQgdHJhY2tfbnVtYmVyID0gdHJhY2stPnRyYWNrX251bTsKPiArICAgIGludCBoYXNfY29k ZWNfc3BlY2lmaWNfYmxvY2ttb3JlID0gMDsKPiArICAgIHVpbnQ4X3QgKmhkcjEwX3BsdXNfaXR1 X3RfdDM1Owo+ICsgICAgc2l6ZV90IGhkcjEwX3BsdXNfaXR1X3RfdDM1X3NpemUgPSAwOwo+ICAg ICAgRUJNTF9XUklURVIoOSk7Cj4gIAo+ICAgICAgbWt2LT5jdXJfYmxvY2sudHJhY2sgID0gdHJh Y2s7Cj4gQEAgLTI2MjcsMjQgKzI2MzEsMzggQEAgc3RhdGljIGludCBta3Zfd3JpdGVfYmxvY2so dm9pZCAqbG9nY3R4LCBNYXRyb3NrYU11eENvbnRleHQgKm1rdiwKPiAgICAgICAgICAgICAgZWJt bF93cml0ZXJfYWRkX3NpbnQoJndyaXRlciwgTUFUUk9TS0FfSURfRElTQ0FSRFBBRERJTkcsIGRp c2NhcmRfcGFkZGluZyk7Cj4gICAgICAgICAgfQo+ICAgICAgfQo+ICsgICAgc2lkZV9kYXRhID0g YXZfcGFja2V0X2dldF9zaWRlX2RhdGEocGt0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQVZfUEtUX0RBVEFfRFlOQU1JQ19IRFIxMF9QTFVTLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNpZGVfZGF0YV9zaXplKTsKPiArICAg IGlmIChzaWRlX2RhdGEgJiYgc2lkZV9kYXRhX3NpemUgPiAwKQo+ICsgICAgICAgIGF2X3dyaXRl X2R5bmFtaWNfaGRyMTBfcGx1c190b19mdWxsX2l0dV90X3QzNSgoQVZEeW5hbWljSERSUGx1cyop c2lkZV9kYXRhLCAmaGRyMTBfcGx1c19pdHVfdF90MzUsICZoZHIxMF9wbHVzX2l0dV90X3QzNV9z aXplKTsKPiAgCj4gICAgICBzaWRlX2RhdGEgPSBhdl9wYWNrZXRfZ2V0X3NpZGVfZGF0YShwa3Qs Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVl9QS1RfREFUQV9N QVRST1NLQV9CTE9DS0FERElUSU9OQUwsCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmc2lkZV9kYXRhX3NpemUpOwo+IC0gICAgaWYgKHNpZGVfZGF0YSAmJiBzaWRl X2RhdGFfc2l6ZSA+PSA4ICYmCj4gLSAgICAgICAgLy8gT25seSB0aGUgQ29kZWMtc3BlY2lmaWMg QmxvY2tNb3JlIChpZCA9PSAxKSBpcyBjdXJyZW50bHkgc3VwcG9ydGVkLgo+IC0gICAgICAgIChh ZGRpdGlvbmFsX2lkID0gQVZfUkI2NChzaWRlX2RhdGEpKSA9PSAxKSB7Cj4gKyAgICBoYXNfY29k ZWNfc3BlY2lmaWNfYmxvY2ttb3JlID0gc2lkZV9kYXRhICYmIHNpZGVfZGF0YV9zaXplID49IDgg JiYKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkaXRpb25hbF9pZCA9 IEFWX1JCNjQoc2lkZV9kYXRhKSkgPT0gMTsKPiArICAgIC8vIFRoZSBDb2RlYy1zcGVjaWZpYyBC bG9ja01vcmUgKGlkID09IDEpIGFuZCBIRFIxMCsgKGlkID09IDQpIGFyZSBzdXBwb3J0ZWQuCj4g KyAgICBpZiAoaGFzX2NvZGVjX3NwZWNpZmljX2Jsb2NrbW9yZSB8fCBoZHIxMF9wbHVzX2l0dV90 X3QzNV9zaXplID4gMCkgewo+ICAgICAgICAgIGVibWxfd3JpdGVyX29wZW5fbWFzdGVyKCZ3cml0 ZXIsIE1BVFJPU0tBX0lEX0JMT0NLQURESVRJT05TKTsKPiAtICAgICAgICBlYm1sX3dyaXRlcl9v cGVuX21hc3Rlcigmd3JpdGVyLCBNQVRST1NLQV9JRF9CTE9DS01PUkUpOwo+IC0gICAgICAgIC8q IFVudGlsIGRiYzUwZjhhIG91ciBkZW11eGVyIHVzZWQgYSB3cm9uZyBkZWZhdWx0IHZhbHVlCj4g LSAgICAgICAgICogb2YgQmxvY2tBZGRJRCwgc28gd2Ugd3JpdGUgaXQgdW5jb25kaXRpb25hbGx5 LiAqLwo+IC0gICAgICAgIGVibWxfd3JpdGVyX2FkZF91aW50KCZ3cml0ZXIsIE1BVFJPU0tBX0lE X0JMT0NLQURESUQsIGFkZGl0aW9uYWxfaWQpOwo+IC0gICAgICAgIGVibWxfd3JpdGVyX2FkZF9i aW4gKCZ3cml0ZXIsIE1BVFJPU0tBX0lEX0JMT0NLQURESVRJT05BTCwKPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzaWRlX2RhdGEgKyA4LCBzaWRlX2RhdGFfc2l6ZSAtIDgpOwo+IC0g ICAgICAgIGVibWxfd3JpdGVyX2Nsb3NlX21hc3Rlcigmd3JpdGVyKTsKPiArCWlmIChoYXNfY29k ZWNfc3BlY2lmaWNfYmxvY2ttb3JlKSB7Cj4gKyAgICAgICAgICAgIGVibWxfd3JpdGVyX29wZW5f bWFzdGVyKCZ3cml0ZXIsIE1BVFJPU0tBX0lEX0JMT0NLTU9SRSk7Cj4gKyAgICAgICAgICAgIC8q IFVudGlsIGRiYzUwZjhhIG91ciBkZW11eGVyIHVzZWQgYSB3cm9uZyBkZWZhdWx0IHZhbHVlCj4g KyAgICAgICAgICAgICAqIG9mIEJsb2NrQWRkSUQsIHNvIHdlIHdyaXRlIGl0IHVuY29uZGl0aW9u YWxseS4gKi8KPiArICAgICAgICAgICAgZWJtbF93cml0ZXJfYWRkX3VpbnQoJndyaXRlciwgTUFU Uk9TS0FfSURfQkxPQ0tBRERJRCwgYWRkaXRpb25hbF9pZCk7Cj4gKyAgICAgICAgICAgIGVibWxf d3JpdGVyX2FkZF9iaW4gKCZ3cml0ZXIsIE1BVFJPU0tBX0lEX0JMT0NLQURESVRJT05BTCwKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZV9kYXRhICsgOCwgc2lkZV9kYXRh X3NpemUgLSA4KTsKPiArICAgICAgICAgICAgZWJtbF93cml0ZXJfY2xvc2VfbWFzdGVyKCZ3cml0 ZXIpOwo+ICsJfQo+ICsJaWYgKGhkcjEwX3BsdXNfaXR1X3RfdDM1X3NpemUgPiAwKSB7Cj4gKyAg ICAgICAgICAgIGVibWxfd3JpdGVyX29wZW5fbWFzdGVyKCZ3cml0ZXIsIE1BVFJPU0tBX0lEX0JM T0NLTU9SRSk7Cj4gKyAgICAgICAgICAgIGVibWxfd3JpdGVyX2FkZF91aW50KCZ3cml0ZXIsIE1B VFJPU0tBX0lEX0JMT0NLQURESUQsIE1BVFJPU0tBX0JMT0NLX0FERF9JRF9EWU5BTUlDX0hEUjEw X1BMVVMpOwo+ICsgICAgICAgICAgICBlYm1sX3dyaXRlcl9hZGRfYmluICgmd3JpdGVyLCBNQVRS T1NLQV9JRF9CTE9DS0FERElUSU9OQUwsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGhkcjEwX3BsdXNfaXR1X3RfdDM1LCBoZHIxMF9wbHVzX2l0dV90X3QzNV9zaXplKTsKPiAr ICAgICAgICAgICAgZWJtbF93cml0ZXJfY2xvc2VfbWFzdGVyKCZ3cml0ZXIpOwo+ICsJfQo+ICAg ICAgICAgIGVibWxfd3JpdGVyX2Nsb3NlX21hc3Rlcigmd3JpdGVyKTsKPiAgICAgIH0KPiAtCgox LiBZb3UgYXJlIHdyaXRpbmcgdGhlIFdlYk0gSERSMTArIG1ldGFkYXRhIGluIE1hdHJvc2thLCBh bHRob3VnaCB0aGlzCmlzIG5vdCB5ZXQgc3BlY2lmaWVkIGZvciBNYXRyb3NrYSAoc2VlCmh0dHBz Oi8vZ2l0aHViLmNvbS9pZXRmLXdnLWNlbGxhci9tYXRyb3NrYS1zcGVjaWZpY2F0aW9uL2lzc3Vl cy8zNDUpLgpUaGlzIGlzIGludmFsaWQuCjIuIFlvdSBpbmNyZWFzZWQgdGhlIHBvdGVudGlhbCBt YXhpbXVtIG9mIGVsZW1lbnRzIHRvIHdyaXRlLCBidXQgbm90IHRoZQpzaXplIG9mIHRoZSBlYm1s IHdyaXRlcidzIGJ1ZmZlci4KMy4gU2VlbXMgbGlrZSBoZHIxMF9wbHVzX2l0dV90X3QzNSBsZWFr cyBoZXJlIChpcyB0aGUgYWxsb2NhdGlvbiBldmVuCm5lY2Vzc2FyeT8gSXMgdGhlcmUgYW4gdXBw ZXIgYm91bmQgZm9yIHRoZSBzaXplIG9mIHRoZSBjcmVhdGVkIGRhdGE/KS4KNC4gWW91IGFyZSBh ZGRpbmcgbG90cyBvZiBjaGVja3MgZm9yIHdoZXRoZXIgeW91IHNob3VsZCBvcGVuIHRoZQpibG9j a2FkZGl0aW9ucyBtYXN0ZXI7IHRoZXkgYXJlIGFsbCB1bm5lY2Vzc2FyeTogT3BlbiBpdCB1bmNv bmRpdGlvbmFsbHkKYW5kIGNsb3NlIGl0IHdpdGggZWJtbF93cml0ZXJfY2xvc2Vfb3JfZGlzY2Fy ZF9tYXN0ZXIoKSAoSSBhZGRlZCB0aGlzCmZ1bmN0aW9uIGZvciBwdXJwb3NlcyBsaWtlIHRoaXMu KQoKLSBBbmRyZWFzCgo+ICAgICAgaWYgKCFmb3JjZV9ibG9ja2dyb3VwICYmIHdyaXRlci5uYl9l bGVtZW50cyA9PSAyKSB7Cj4gICAgICAgICAgLyogTm90aGluZyBleGNlcHQgdGhlIEJsb2NrR3Jv dXAgKyBCbG9jay4gQ2FuIHVzZSBhIFNpbXBsZUJsb2NrLiAqLwo+ICAgICAgICAgIHdyaXRlci5l bGVtZW50cysrOyAgICAvLyBTa2lwIHRoZSBCbG9ja0dyb3VwLgo+IGRpZmYgLS1naXQgYS90ZXN0 cy9mYXRlL21hdHJvc2thLm1hayBiL3Rlc3RzL2ZhdGUvbWF0cm9za2EubWFrCj4gaW5kZXggNjNl ODFmMTIxYi4uMDY4ZjE3OGQ5YiAxMDA2NDQKPiAtLS0gYS90ZXN0cy9mYXRlL21hdHJvc2thLm1h awo+ICsrKyBiL3Rlc3RzL2ZhdGUvbWF0cm9za2EubWFrCj4gQEAgLTE0OCw2ICsxNDgsMTIgQEAg RkFURV9NQVRST1NLQV9GRk1QRUdfRkZQUk9CRS0kKGNhbGwgVFJBTlNDT0RFLCBQQ01fUzMyTEUg TVAyLCBNQVRST1NLQSwgICAgICBcCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQVJFU0FNUExFX0ZJTFRFUiAgICAgICAgICAgICAgXAo+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTV9TMzJCRV9FTkNPREVS KSAgICAgICAgICAgIFwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICs9IGZhdGUt bWF0cm9za2EtaDI2NC1yZW11eAo+ICsKPiArIyBUaGUgaW5wdXQgZmlsZSBvZiB0aGUgZm9sbG93 aW5nIHRlc3QgY29udGFpbnMgSERSMTArIG1ldGFkYXRhIGFuZCBzbyB0aGlzCj4gKyMgdGVzdCB0 ZXN0cyBjb3JyZWN0IGVuY29kaW5nIGFuZCBkZWNvZGluZyBIRFIxMCsgZm9yIFZQOS9NS1YuCj4g K0ZBVEVfTUFUUk9TS0FfRkZQUk9CRS0kKGNhbGwgQUxMWUVTLCBNQVRST1NLQV9ERU1VWEVSKSAr PSBmYXRlLW1hdHJvc2thLWhkcjEwLXBsdXMtbWV0YWRhdGEKPiArZmF0ZS1tYXRyb3NrYS1oZHIx MC1wbHVzLW1ldGFkYXRhOiBDTUQgPSBydW4gZmZwcm9iZSQoUFJPR1NTVUYpJChFWEVTVUYpIC1z aG93X2ZyYW1lcyAtc2VsZWN0X3N0cmVhbXMgdiAtdiAwICQoVEFSR0VUX1NBTVBMRVMpL21rdi9o ZHIxMF9wbHVzX3ZwOV9zYW1wbGUubWt2Cj4gKwoKVGhpcyBkb2VzIG5vdCB0ZXN0IG11eGluZyBI RFIxMCsgYXQgYWxsLCBhcyBpdCBqdXN0IHJ1bnMgZmZwcm9iZSBvbiBhbgphbHJlYWR5IGV4aXN0 aW5nIGZpbGUuIFlvdSB3b3VsZCBuZWVkIHRvIHVzZSBhICJ0cmFuc2NvZGUiIHRlc3QgdG8gdGVz dAptdXhpbmcuCgo+ICBmYXRlLW1hdHJvc2thLWgyNjQtcmVtdXg6IENNRCA9IHRyYW5zY29kZSBt cGVndHMgJChUQVJHRVRfU0FNUExFUykvaDI2NC9oMjY0X2ludHJhX2ZpcnN0LXNtYWxsLnRzIG1h dHJvc2thICItbWFwIDA6MCAtbWFwIDAgLWM6diBjb3B5IC1zYXI6MCAzOjQgLWJzZjp2OjEgaDI2 NF9tZXRhZGF0YT1hdWQ9cmVtb3ZlOmRlbGV0ZV9maWxsZXI9MSAtZGlzcG9zaXRpb246diAraGVh cmluZ19pbXBhaXJlZCAtYWYgYXJlc2FtcGxlIC1jOmE6MCBwY21fczMybGUgLWM6YToxIHBjbV9z MzJiZSAtZGlzcG9zaXRpb246YTowIG9yaWdpbmFsIC1tZXRhZGF0YTpzOmE6MCB0aXRsZT1zd2Vk aXNoX3NpbGVuY2UgLW1ldGFkYXRhOnM6YToxIHRpdGxlPW5vcndlZ2lhbl9zaWxlbmNlIC1kaXNw b3NpdGlvbjphOjEgZHViIiAiLW1hcCAwOnYiICItc2hvd19lbnRyaWVzIHN0cmVhbT1pbmRleCxj b2RlY19uYW1lOnN0cmVhbV90YWdzPXRpdGxlLGxhbmd1YWdlIgo+ICAKPiAgIyBUZXN0cyB3cml0 aW5nIEJsb2NrQWRkaXRpb25hbCBhbmQgQmxvY2tHcm91cHMgd2l0aCBSZWZlcmVuY2VCbG9jayBl bGVtZW50czsKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvcmVmL2ZhdGUvbWF0cm9za2EtaGRyMTAtcGx1 cy1tZXRhZGF0YSBiL3Rlc3RzL3JlZi9mYXRlL21hdHJvc2thLWhkcjEwLXBsdXMtbWV0YWRhdGEK PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAuLjBmOWFkMzMxYWQKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvdGVzdHMvcmVmL2ZhdGUvbWF0cm9za2EtaGRyMTAtcGx1cy1t ZXRhZGF0YQo+IEBAIC0wLDAgKzEsNzQgQEAKPiArW0ZSQU1FXQo+ICttZWRpYV90eXBlPXZpZGVv Cj4gK3N0cmVhbV9pbmRleD0wCj4gK2tleV9mcmFtZT0xCj4gK3B0cz0wCj4gK3B0c190aW1lPTAu MDAwMDAwCj4gK3BrdF9kdHM9MAo+ICtwa3RfZHRzX3RpbWU9MC4wMDAwMDAKPiArYmVzdF9lZmZv cnRfdGltZXN0YW1wPTAKPiArYmVzdF9lZmZvcnRfdGltZXN0YW1wX3RpbWU9MC4wMDAwMDAKPiAr cGt0X2R1cmF0aW9uPTQwCj4gK3BrdF9kdXJhdGlvbl90aW1lPTAuMDQwMDAwCj4gK2R1cmF0aW9u PTQwCj4gK2R1cmF0aW9uX3RpbWU9MC4wNDAwMDAKPiArcGt0X3Bvcz01NjEKPiArcGt0X3NpemU9 MTMzNTAKPiArd2lkdGg9MTI4MAo+ICtoZWlnaHQ9NzIwCj4gK3BpeF9mbXQ9eXV2NDIwcDEwbGUK PiArc2FtcGxlX2FzcGVjdF9yYXRpbz0xOjEKPiArcGljdF90eXBlPUkKPiArY29kZWRfcGljdHVy ZV9udW1iZXI9MAo+ICtkaXNwbGF5X3BpY3R1cmVfbnVtYmVyPTAKPiAraW50ZXJsYWNlZF9mcmFt ZT0wCj4gK3RvcF9maWVsZF9maXJzdD0wCj4gK3JlcGVhdF9waWN0PTAKPiArY29sb3JfcmFuZ2U9 dHYKPiArY29sb3Jfc3BhY2U9dW5rbm93bgo+ICtjb2xvcl9wcmltYXJpZXM9dW5rbm93bgo+ICtj b2xvcl90cmFuc2Zlcj11bmtub3duCj4gK2Nocm9tYV9sb2NhdGlvbj11bnNwZWNpZmllZAo+ICtb U0lERV9EQVRBXQo+ICtzaWRlX2RhdGFfdHlwZT1IRFIgRHluYW1pYyBNZXRhZGF0YSBTTVBURTIw OTQtNDAgKEhEUjEwKykKPiArYXBwbGljYXRpb24gdmVyc2lvbj0xCj4gK251bV93aW5kb3dzPTEK PiArdGFyZ2V0ZWRfc3lzdGVtX2Rpc3BsYXlfbWF4aW11bV9sdW1pbmFuY2U9NDAwLzEKPiArbWF4 c2NsPTMzNDAvMTAwMDAwCj4gK21heHNjbD0yODcwLzEwMDAwMAo+ICttYXhzY2w9MjcyMC8xMDAw MDAKPiArYXZlcmFnZV9tYXhyZ2I9NTEwLzEwMDAwMAo+ICtudW1fZGlzdHJpYnV0aW9uX21heHJn Yl9wZXJjZW50aWxlcz05Cj4gK2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGFnZT0xCj4gK2Rp c3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGlsZT0zMC8xMDAwMDAKPiArZGlzdHJpYnV0aW9uX21h eHJnYl9wZXJjZW50YWdlPTUKPiArZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlPTI5NDAv MTAwMDAwCj4gK2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGFnZT0xMAo+ICtkaXN0cmlidXRp b25fbWF4cmdiX3BlcmNlbnRpbGU9MjU1LzEwMDAwMAo+ICtkaXN0cmlidXRpb25fbWF4cmdiX3Bl cmNlbnRhZ2U9MjUKPiArZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlPTcwLzEwMDAwMAo+ ICtkaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRhZ2U9NTAKPiArZGlzdHJpYnV0aW9uX21heHJn Yl9wZXJjZW50aWxlPTEzNDAvMTAwMDAwCj4gK2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVyY2VudGFn ZT03NQo+ICtkaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRpbGU9MTYwMC8xMDAwMDAKPiArZGlz dHJpYnV0aW9uX21heHJnYl9wZXJjZW50YWdlPTkwCj4gK2Rpc3RyaWJ1dGlvbl9tYXhyZ2JfcGVy Y2VudGlsZT0xODUwLzEwMDAwMAo+ICtkaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRhZ2U9OTUK PiArZGlzdHJpYnV0aW9uX21heHJnYl9wZXJjZW50aWxlPTE5NTAvMTAwMDAwCj4gK2Rpc3RyaWJ1 dGlvbl9tYXhyZ2JfcGVyY2VudGFnZT05OQo+ICtkaXN0cmlidXRpb25fbWF4cmdiX3BlcmNlbnRp bGU9Mjk0MC8xMDAwMDAKPiArZnJhY3Rpb25fYnJpZ2h0X3BpeGVscz0xLzEwMDAKPiAra25lZV9w b2ludF94PTAvNDA5NQo+ICtrbmVlX3BvaW50X3k9MC80MDk1Cj4gK251bV9iZXppZXJfY3VydmVf YW5jaG9ycz05Cj4gK2Jlemllcl9jdXJ2ZV9hbmNob3JzPTEwMi8xMDIzCj4gK2Jlemllcl9jdXJ2 ZV9hbmNob3JzPTIwNS8xMDIzCj4gK2Jlemllcl9jdXJ2ZV9hbmNob3JzPTMwNy8xMDIzCj4gK2Jl emllcl9jdXJ2ZV9hbmNob3JzPTQxMC8xMDIzCj4gK2Jlemllcl9jdXJ2ZV9hbmNob3JzPTUxMi8x MDIzCj4gK2Jlemllcl9jdXJ2ZV9hbmNob3JzPTYxNC8xMDIzCj4gK2Jlemllcl9jdXJ2ZV9hbmNo b3JzPTcxNy8xMDIzCj4gK2Jlemllcl9jdXJ2ZV9hbmNob3JzPTgxOS8xMDIzCj4gK2Jlemllcl9j dXJ2ZV9hbmNob3JzPTkyMi8xMDIzCj4gK1svU0lERV9EQVRBXQo+ICtbL0ZSQU1FXQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRldmVsIG1h aWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5vcmcvbWFp bG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFi b3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVj dCAidW5zdWJzY3JpYmUiLgo=