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 5C8D64043E for ; Sat, 15 Jun 2024 13:08:07 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CE47C68D5B0; Sat, 15 Jun 2024 16:08:04 +0300 (EEST) Received: from mail-lj1-f182.google.com (mail-lj1-f182.google.com [209.85.208.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C774468CF1F for ; Sat, 15 Jun 2024 16:07:58 +0300 (EEST) Received: by mail-lj1-f182.google.com with SMTP id 38308e7fff4ca-2ebe40673d8so30084581fa.3 for ; Sat, 15 Jun 2024 06:07:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1718456878; x=1719061678; darn=ffmpeg.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=ohmV7Wm8zZFwddGgVZHV9EIM+RW/TzdGPpn9Na+8uzo=; b=MBAFITJoRW28RYt3eUkzJjPLdlKUBLyLh2gX0xC7N4XOqD24u5JtxjQAJn/o6qLrGv ggJgqFvAXSNv83XE6V6dFaddVsNklMuSdzm2DbJ6Aj1ZM2uEWe6BngdpgOSPf38snATq M5lE52JxVCfOVIRCWap/V6S57J6owFE61oJwCIX+QRjXhvjVT3xnWpFX4ME/iW3alsGk Ee1fdmuIUYFcm7oM+fPWEerYEYl6r013Rx5fWXj2YkR+BNhlwbJXgRCa6fvbxc6jY8Po vfs/lYfEzzqLUuptlqmeK/XUIPvIdcoHQhW4qjQVBV1LdRfLev8DMwqA/gNyOJdTm63D ZCBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1718456878; x=1719061678; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ohmV7Wm8zZFwddGgVZHV9EIM+RW/TzdGPpn9Na+8uzo=; b=OL7oraVUddbJMTXYK73peHv80dKRCNcZ355VWS4OS1DlnNVojCqTxMwNGdegIRZw1p p7CqQmc6Ifp8ST0bDyG7+fbIxzG2Me4vB6xFT5CKzawxhjp5mJ/1/Axz7B6hlargl1H6 Z7P4Z6LJ+/cKcgVPbDxCn3hgwkNnGMTmdZZ+0GPDX/DrVz+GnxPwyJLDdX3duWeiDiGR 4HqmUIzYPtlj2KSqpe/96rwHMTSAx3GVGZSXaV72nG56uVfoSsK4BAGkREJorKI+fwNU KhVeiU6hMePxYDzZopG+/YtIiPShAtoh5GgxHesg5NyQ9QQdDdrQ5VYJWGa0NcT39IAL C1ig== X-Gm-Message-State: AOJu0YzavJ6TbJgqzmDlKleLVlSpkNyiRk/XJgeO5w+41ahcyIRD+v3H cPagzbwIPXBhQt00cszxpc6vqzRyRGmBqsM9/nyp62v5nAi8RN0Vnf4hlo1RFBZIwhoS3LfQf3S ZFQr4xtJAHGrKo/C1jNEoxQrJ+Zjsw9xy X-Google-Smtp-Source: AGHT+IGxe3HLqHxsXDmZ0TLWw1hNbS3u0FG1VXu88ge5iPvOcK2XYSS/k52wtV9NpgIptfj8gs3F8m33O74erp6UyWA= X-Received: by 2002:a05:6512:3c9c:b0:52b:f6ab:6f75 with SMTP id 2adb3069b0e04-52ca6e6cab7mr4141508e87.29.1718456877295; Sat, 15 Jun 2024 06:07:57 -0700 (PDT) MIME-Version: 1.0 References: <20240605195146.11763-1-chris10317h5@gmail.com> <20240605195146.11763-2-chris10317h5@gmail.com> In-Reply-To: From: Nuo Mi Date: Sat, 15 Jun 2024 21:07:49 +0800 Message-ID: To: FFmpeg development discussions and patches , Thomas Siedel X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v5 1/1] avcodec: add external enc libvvenc for H266/VVC 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: T24gV2VkLCBKdW4gMTIsIDIwMjQgYXQgOTozNuKAr1BNIE51byBNaSA8bnVvbWkyMDIxQGdtYWls LmNvbT4gd3JvdGU6Cgo+IEhpIGFsbCwKPiBJZiB0aGVyZSBhcmUgbm8gb2JqZWN0aW9ucywgSSB3 aWxsIHB1c2ggaXQgaW4gMyBkYXlzLgo+Cj4gVGhhbmsgeW91LCAgQ2hyaXN0aWFuCj4KPgo+IE9u IFRodSwgSnVuIDYsIDIwMjQgYXQgMzo1MuKAr0FNIENocmlzdGlhbiBCYXJ0bmlrIDxjaHJpczEw MzE3aDVAZ21haWwuY29tPgo+IHdyb3RlOgo+Cj4+IEZyb206IFRob21hcyBTaWVkZWwgPHRob21h cy5mZkBzcGluLWRpZ2l0YWwuY29tPgo+Pgo+PiBBZGQgZXh0ZXJuYWwgZW5jb2RlciBWVmVuQyBm b3IgSDI2Ni9WVkMgZW5jb2RpbmcuCj4+IFJlZ2lzdGVyIG5ldyBlbmNvZGVyIGxpYnZ2ZW5jLgo+ PiBBZGQgbGlidnZlbmMgdG8gd3JhcCB0aGUgdnZlbmMgaW50ZXJmYWNlLgo+PiBsaWJ2dmVuYyBp bXBsZW1lbnRzIGVuY29kZXIgb3B0aW9uOiBwcmVzZXQscXAscXBhLHBlcmlvZCwKPj4gcGFzc2xv Z2ZpbGUsc3RhdHMsdnZlbmMtcGFyYW1zLGxldmVsLHRpZXIuCj4+IEVuYWJsZSBlbmNvZGVyIGJ5 IGFkZGluZyAtLWVuYWJsZS1saWJ2dmVuYyBpbiBjb25maWd1cmUgc3RlcC5lCj4KPiBBcHBsaWVk LApUaGFuayB5b3UsIENocmlzdGlhbiwgVGhvbWFzLCBBbmRyZWFzLCBBbnRvbiwgYW5kIGV2ZXJ5 b25lIHdobyBjb250cmlidXRlZAp0byB0aGlzLgoKCj4KPgo+PiBDby1hdXRob3JlZC1ieTogQ2hy aXN0aWFuIEJhcnRuaWsgY2hyaXMxMDMxN2g1QGdtYWlsLmNvbQo+PiBTaWduZWQtb2ZmLWJ5OiBU aG9tYXMgU2llZGVsIDx0aG9tYXMuZmZAc3Bpbi1kaWdpdGFsLmNvbT4KPj4gLS0tCj4+ICBjb25m aWd1cmUgICAgICAgICAgICAgICAgIHwgICA0ICsKPj4gIGRvYy9lbmNvZGVycy50ZXhpICAgICAg ICAgfCAgNjQgKysrKysKPj4gIGZmdG9vbHMvZmZtcGVnX211eF9pbml0LmMgfCAgIDIgKy0KPj4g IGxpYmF2Y29kZWMvTWFrZWZpbGUgICAgICAgfCAgIDEgKwo+PiAgbGliYXZjb2RlYy9hbGxjb2Rl Y3MuYyAgICB8ICAgMSArCj4+ICBsaWJhdmNvZGVjL2xpYnZ2ZW5jLmMgICAgIHwgNDkyICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+ICA2IGZpbGVzIGNoYW5nZWQsIDU2 MyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgbGli YXZjb2RlYy9saWJ2dmVuYy5jCj4+Cj4+IGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1 cmUKPj4gaW5kZXggNmM1YjhhYWI5YS4uMzdlY2UyMzM3NiAxMDA3NTUKPj4gLS0tIGEvY29uZmln dXJlCj4+ICsrKyBiL2NvbmZpZ3VyZQo+PiBAQCAtMjkzLDYgKzI5Myw3IEBAIEV4dGVybmFsIGxp YnJhcnkgc3VwcG9ydDoKPj4gICAgLS1lbmFibGUtbGlidm9yYmlzICAgICAgIGVuYWJsZSBWb3Ji aXMgZW4vZGVjb2RpbmcgdmlhIGxpYnZvcmJpcywKPj4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBleGlzdHMgW25vXQo+PiAgICAtLWVuYWJsZS1saWJ2 cHggICAgICAgICAgZW5hYmxlIFZQOCBhbmQgVlA5IGRlL2VuY29kaW5nIHZpYSBsaWJ2cHggW25v XQo+PiArICAtLWVuYWJsZS1saWJ2dmVuYyAgICAgICAgZW5hYmxlIEguMjY2L1ZWQyBlbmNvZGlu ZyB2aWEgdnZlbmMgW25vXQo+PiAgICAtLWVuYWJsZS1saWJ3ZWJwICAgICAgICAgZW5hYmxlIFdl YlAgZW5jb2RpbmcgdmlhIGxpYndlYnAgW25vXQo+PiAgICAtLWVuYWJsZS1saWJ4MjY0ICAgICAg ICAgZW5hYmxlIEguMjY0IGVuY29kaW5nIHZpYSB4MjY0IFtub10KPj4gICAgLS1lbmFibGUtbGli eDI2NSAgICAgICAgIGVuYWJsZSBIRVZDIGVuY29kaW5nIHZpYSB4MjY1IFtub10KPj4gQEAgLTE5 NjYsNiArMTk2Nyw3IEBAIEVYVEVSTkFMX0xJQlJBUllfTElTVD0iCj4+ICAgICAgbGlidm1hZgo+ PiAgICAgIGxpYnZvcmJpcwo+PiAgICAgIGxpYnZweAo+PiArICAgIGxpYnZ2ZW5jCj4+ICAgICAg bGlid2VicAo+PiAgICAgIGxpYnhldmQKPj4gICAgICBsaWJ4ZXZlCj4+IEBAIC0zNTYwLDYgKzM1 NjIsNyBAQCBsaWJ2cHhfdnA4X2RlY29kZXJfZGVwcz0ibGlidnB4Igo+PiAgbGlidnB4X3ZwOF9l bmNvZGVyX2RlcHM9ImxpYnZweCIKPj4gIGxpYnZweF92cDlfZGVjb2Rlcl9kZXBzPSJsaWJ2cHgi Cj4+ICBsaWJ2cHhfdnA5X2VuY29kZXJfZGVwcz0ibGlidnB4Igo+PiArbGlidnZlbmNfZW5jb2Rl cl9kZXBzPSJsaWJ2dmVuYyIKPj4gIGxpYndlYnBfZW5jb2Rlcl9kZXBzPSJsaWJ3ZWJwIgo+PiAg bGlid2VicF9hbmltX2VuY29kZXJfZGVwcz0ibGlid2VicCIKPj4gIGxpYngyNjJfZW5jb2Rlcl9k ZXBzPSJsaWJ4MjYyIgo+PiBAQCAtNzAzMCw2ICs3MDMzLDcgQEAgZW5hYmxlZCBsaWJ2cHggICAg ICAgICAgICAmJiB7Cj4+ICAgICAgZmkKPj4gIH0KPj4KPj4gK2VuYWJsZWQgbGlidnZlbmMgICAg ICAgICAgJiYgcmVxdWlyZV9wa2dfY29uZmlnIGxpYnZ2ZW5jICJsaWJ2dmVuYyA+PQo+PiAxLjYu MSIgInZ2ZW5jL3Z2ZW5jLmgiIHZ2ZW5jX2dldF92ZXJzaW9uCj4+ICBlbmFibGVkIGxpYndlYnAg ICAgICAgICAgICYmIHsKPj4gICAgICBlbmFibGVkIGxpYndlYnBfZW5jb2RlciAgICAgICYmIHJl cXVpcmVfcGtnX2NvbmZpZyBsaWJ3ZWJwICJsaWJ3ZWJwCj4+ID49IDAuMi4wIiB3ZWJwL2VuY29k ZS5oIFdlYlBHZXRFbmNvZGVyVmVyc2lvbgo+PiAgICAgIGVuYWJsZWQgbGlid2VicF9hbmltX2Vu Y29kZXIgJiYgY2hlY2tfcGtnX2NvbmZpZwo+PiBsaWJ3ZWJwX2FuaW1fZW5jb2RlciAibGlid2Vi cG11eCA+PSAwLjQuMCIgd2VicC9tdXguaAo+PiBXZWJQQW5pbUVuY29kZXJPcHRpb25zSW5pdDsg fQo+PiBkaWZmIC0tZ2l0IGEvZG9jL2VuY29kZXJzLnRleGkgYi9kb2MvZW5jb2RlcnMudGV4aQo+ PiBpbmRleCBjODJmMzE2Zjk0Li40OTY4NTJmYWViIDEwMDY0NAo+PiAtLS0gYS9kb2MvZW5jb2Rl cnMudGV4aQo+PiArKysgYi9kb2MvZW5jb2RlcnMudGV4aQo+PiBAQCAtMjM3OCw2ICsyMzc4LDcw IEBAIEluZGljYXRlcyBmcmFtZSBkdXJhdGlvbgo+PiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJv dXQgbGlidnB4IHNlZToKPj4gIEB1cmx7aHR0cDovL3d3dy53ZWJtcHJvamVjdC5vcmcvfQo+Pgo+ PiArQHNlY3Rpb24gbGlidnZlbmMKPj4gKwo+PiArVlZlbkMgSC4yNjYvVlZDIGVuY29kZXIgd3Jh cHBlci4KPj4gKwo+PiArVGhpcyBlbmNvZGVyIHJlcXVpcmVzIHRoZSBwcmVzZW5jZSBvZiB0aGUg bGlidnZlbmMgaGVhZGVycyBhbmQgbGlicmFyeQo+PiArZHVyaW5nIGNvbmZpZ3VyYXRpb24uIFlv dSBuZWVkIHRvIGV4cGxpY2l0bHkgY29uZmlndXJlIHRoZSBidWlsZCB3aXRoCj4+ICtAb3B0aW9u ey0tZW5hYmxlLWxpYnZ2ZW5jfS4KPj4gKwo+PiArVGhlIFZWZW5DIHByb2plY3Qgd2Vic2l0ZSBp cyBhdAo+PiArQHVybHtodHRwczovL2dpdGh1Yi5jb20vZnJhdW5ob2ZlcmhoaS92dmVuY30uCj4+ ICsKPj4gK0BzdWJzZWN0aW9uIFN1cHBvcnRlZCBQaXhlbCBGb3JtYXRzCj4+ICsKPj4gK1ZWZW5D IHN1cHBvcnRzIG9ubHkgMTAtYml0IGNvbG9yIHNwYWNlcyBhcyBpbnB1dC4gQnV0IHRoZSBpbnRl cm5hbAo+PiAoZW5jb2RlZCkKPj4gK2JpdCBkZXB0aCBjYW4gYmUgc2V0IHRvIDgtYml0IG9yIDEw LWJpdCBhdCBydW50aW1lLgo+PiArCj4+ICtAc3Vic2VjdGlvbiBPcHRpb25zCj4+ICsKPj4gK0B0 YWJsZSBAb3B0aW9uCj4+ICtAaXRlbSBiCj4+ICtTZXRzIHRhcmdldCB2aWRlbyBiaXRyYXRlLgo+ PiArCj4+ICtAaXRlbSBnCj4+ICtTZXQgdGhlIEdPUCBzaXplLiBDdXJyZW50bHkgc3VwcG9ydCBm b3IgZz0xIChJbnRyYSBvbmx5KSBvciBkZWZhdWx0Lgo+PiArCj4+ICtAaXRlbSBwcmVzZXQKPj4g K1NldCB0aGUgVlZlbkMgcHJlc2V0Lgo+PiArCj4+ICtAaXRlbSBsZXZlbGlkYwo+PiArU2V0IGxl dmVsIGlkYy4KPj4gKwo+PiArQGl0ZW0gdGllcgo+PiArU2V0IHZ2YyB0aWVyLgo+PiArCj4+ICtA aXRlbSBxcAo+PiArU2V0IGNvbnN0YW50IHF1YW50aXphdGlvbiBwYXJhbWV0ZXIuCj4+ICsKPj4g K0BpdGVtIHN1Ym9wdCBAdmFye2Jvb2xlYW59Cj4+ICtTZXQgc3ViamVjdGl2ZSAocGVyY2VwdHVh bGx5IG1vdGl2YXRlZCkgb3B0aW1pemF0aW9uLiBEZWZhdWx0IGlzIDEgKG9uKS4KPj4gKwo+PiAr QGl0ZW0gYml0ZGVwdGg4IEB2YXJ7Ym9vbGVhbn0KPj4gK1NldCA4Yml0IGNvZGluZyBtb2RlIGlu c3RlYWQgb2YgdXNpbmcgMTBiaXQuIERlZmF1bHQgaXMgMCAob2ZmKS4KPj4gKwo+PiArQGl0ZW0g cGVyaW9kCj4+ICtzZXQgKGludHJhKSByZWZyZXNoIHBlcmlvZCBpbiBzZWNvbmRzLgo+PiArCj4+ ICtAaXRlbSB2dmVuYy1wYXJhbXMKPj4gK1NldCB2dmVuYyBvcHRpb25zIHVzaW5nIGEgbGlzdCBv ZiBAdmFye2tleX09QHZhcnt2YWx1ZX0gY291cGxlcyBzZXBhcmF0ZWQKPj4gK2J5ICI6Ii4gU2Vl IEBjb21tYW5ke3Z2ZW5jYXBwIC0tZnVsbGhlbHB9IG9yIEBjb21tYW5ke3Z2ZW5jRkZhcHAKPj4g LS1mdWxsaGVscH0gZm9yIGEgbGlzdCBvZiBvcHRpb25zLgo+PiArCj4+ICtGb3IgZXhhbXBsZSwg dGhlIG9wdGlvbnMgbWlnaHQgYmUgcHJvdmlkZWQgYXM6Cj4+ICsKPj4gK0BleGFtcGxlCj4+ICtp bnRyYXBlcmlvZD02NDpkZWNvZGluZ3JlZnJlc2h0eXBlPWlkcjpwb2MwaWRyPTE6aW50ZXJuYWxi aXRkZXB0aD04Cj4+ICtAZW5kIGV4YW1wbGUKPj4gKwo+PiArRm9yIGV4YW1wbGUgdGhlIGVuY29k aW5nIG9wdGlvbnMgbWlnaHQgYmUgcHJvdmlkZWQgd2l0aAo+PiBAb3B0aW9uey12dmVuYy1wYXJh bXN9Ogo+PiArCj4+ICtAZXhhbXBsZQo+PiArZmZtcGVnIC1pIGlucHV0IC1jOnYgbGlidnZlbmMg LWIgMU0gLXZ2ZW5jLXBhcmFtcwo+PiBpbnRyYXBlcmlvZD02NDpkZWNvZGluZ3JlZnJlc2h0eXBl PWlkcjpwb2MwaWRyPTE6aW50ZXJuYWxiaXRkZXB0aD04Cj4+IG91dHB1dC5tcDQKPj4gK0BlbmQg ZXhhbXBsZQo+PiArCj4+ICtAZW5kIHRhYmxlCj4+ICsKPj4gIEBzZWN0aW9uIGxpYndlYnAKPj4K Pj4gIGxpYndlYnAgV2ViUCBJbWFnZSBlbmNvZGVyIHdyYXBwZXIKPj4gZGlmZiAtLWdpdCBhL2Zm dG9vbHMvZmZtcGVnX211eF9pbml0LmMgYi9mZnRvb2xzL2ZmbXBlZ19tdXhfaW5pdC5jCj4+IGlu ZGV4IDg3OTcyNjUxNDUuLmVmMjkyMjg1NGEgMTAwNjQ0Cj4+IC0tLSBhL2ZmdG9vbHMvZmZtcGVn X211eF9pbml0LmMKPj4gKysrIGIvZmZ0b29scy9mZm1wZWdfbXV4X2luaXQuYwo+PiBAQCAtNzM5 LDcgKzczOSw3IEBAIHN0YXRpYyBpbnQgbmV3X3N0cmVhbV92aWRlbyhNdXhlciAqbXV4LCBjb25z dAo+PiBPcHRpb25zQ29udGV4dCAqbywKPj4gICAgICAgICAgICAgICAgICAgICAgIG9zdC0+bG9n ZmlsZV9wcmVmaXggPyBvc3QtPmxvZ2ZpbGVfcHJlZml4IDoKPj4KPj4gREVGQVVMVF9QQVNTX0xP R0ZJTEVOQU1FX1BSRUZJWCwKPj4gICAgICAgICAgICAgICAgICAgICAgIG9zdF9pZHgpOwo+PiAt ICAgICAgICAgICAgaWYgKCFzdHJjbXAob3N0LT5lbmNfY3R4LT5jb2RlYy0+bmFtZSwgImxpYngy NjQiKSkgewo+PiArICAgICAgICAgICAgaWYgKCFzdHJjbXAob3N0LT5lbmNfY3R4LT5jb2RlYy0+ bmFtZSwgImxpYngyNjQiKSB8fAo+PiAhc3RyY21wKG9zdC0+ZW5jX2N0eC0+Y29kZWMtPm5hbWUs ICJsaWJ2dmVuYyIpKSB7Cj4+ICAgICAgICAgICAgICAgICAgYXZfZGljdF9zZXQoJm9zdC0+ZW5j b2Rlcl9vcHRzLCAic3RhdHMiLCBsb2dmaWxlbmFtZSwKPj4gQVZfRElDVF9ET05UX09WRVJXUklU RSk7Cj4+ICAgICAgICAgICAgICB9IGVsc2Ugewo+PiAgICAgICAgICAgICAgICAgIGlmICh2aWRl b19lbmMtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19QQVNTMikgewo+PiBkaWZmIC0tZ2l0IGEvbGli YXZjb2RlYy9NYWtlZmlsZSBiL2xpYmF2Y29kZWMvTWFrZWZpbGUKPj4gaW5kZXggMjQ0M2QyYzZm ZC4uNWQ3MzQ5MDkwZSAxMDA2NDQKPj4gLS0tIGEvbGliYXZjb2RlYy9NYWtlZmlsZQo+PiArKysg Yi9saWJhdmNvZGVjL01ha2VmaWxlCj4+IEBAIC0xMTUzLDYgKzExNTMsNyBAQCBPQkpTLSQoQ09O RklHX0xJQlZQWF9WUDhfREVDT0RFUikgICAgICAgICArPQo+PiBsaWJ2cHhkZWMubwo+PiAgT0JK Uy0kKENPTkZJR19MSUJWUFhfVlA4X0VOQ09ERVIpICAgICAgICAgKz0gbGlidnB4ZW5jLm8KPj4g IE9CSlMtJChDT05GSUdfTElCVlBYX1ZQOV9ERUNPREVSKSAgICAgICAgICs9IGxpYnZweGRlYy5v Cj4+ICBPQkpTLSQoQ09ORklHX0xJQlZQWF9WUDlfRU5DT0RFUikgICAgICAgICArPSBsaWJ2cHhl bmMubwo+PiArT0JKUy0kKENPTkZJR19MSUJWVkVOQ19FTkNPREVSKSAgICAgICAgICAgKz0gbGli dnZlbmMubwo+PiAgT0JKUy0kKENPTkZJR19MSUJXRUJQX0VOQ09ERVIpICAgICAgICAgICAgKz0g bGlid2VicGVuY19jb21tb24ubwo+PiBsaWJ3ZWJwZW5jLm8KPj4gIE9CSlMtJChDT05GSUdfTElC V0VCUF9BTklNX0VOQ09ERVIpICAgICAgICs9IGxpYndlYnBlbmNfY29tbW9uLm8KPj4gbGlid2Vi cGVuY19hbmltZW5jb2Rlci5vCj4+ICBPQkpTLSQoQ09ORklHX0xJQlgyNjJfRU5DT0RFUikgICAg ICAgICAgICArPSBsaWJ4MjY0Lm8KPj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvYWxsY29kZWNz LmMgYi9saWJhdmNvZGVjL2FsbGNvZGVjcy5jCj4+IGluZGV4IGIxMDJhODA2OWUuLjU5ZDM2ZGJk NTYgMTAwNjQ0Cj4+IC0tLSBhL2xpYmF2Y29kZWMvYWxsY29kZWNzLmMKPj4gKysrIGIvbGliYXZj b2RlYy9hbGxjb2RlY3MuYwo+PiBAQCAtODAwLDYgKzgwMCw3IEBAIGV4dGVybiBjb25zdCBGRkNv ZGVjIGZmX2xpYnZweF92cDhfZW5jb2RlcjsKPj4gIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xp YnZweF92cDhfZGVjb2RlcjsKPj4gIGV4dGVybiBGRkNvZGVjIGZmX2xpYnZweF92cDlfZW5jb2Rl cjsKPj4gIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYnZweF92cDlfZGVjb2RlcjsKPj4gK2V4 dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYnZ2ZW5jX2VuY29kZXI7Cj4+ICAvKiBwcmVmZXJyZWQg b3ZlciBsaWJ3ZWJwICovCj4+ICBleHRlcm4gY29uc3QgRkZDb2RlYyBmZl9saWJ3ZWJwX2FuaW1f ZW5jb2RlcjsKPj4gIGV4dGVybiBjb25zdCBGRkNvZGVjIGZmX2xpYndlYnBfZW5jb2RlcjsKPj4g ZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvbGlidnZlbmMuYyBiL2xpYmF2Y29kZWMvbGlidnZlbmMu Ywo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwLi41NDU0YjM5OTVj Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvbGliYXZjb2RlYy9saWJ2dmVuYy5jCj4+IEBAIC0w LDAgKzEsNDkyIEBACj4+ICsvKgo+PiArICogSC4yNjYgZW5jb2RpbmcgdXNpbmcgdGhlIFZWZW5D IGxpYnJhcnkKPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjIsIFRob21hcyBTaWVkZWwK Pj4gKyAqCj4+ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuCj4+ICsgKgo+PiArICog RkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ PiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs IFB1YmxpYwo+PiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyCj4+ICsgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3Ig KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPj4gKyAqCj4+ICsgKiBGRm1wZWcg aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKPj4gKyAq IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCj4+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlIEdOVQo+PiArICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KPj4gKyAqCj4+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4+ICsgKiBMaWNlbnNl IGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCj4+ ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC b3N0b24sIE1BCj4+IDAyMTEwLTEzMDEgVVNBCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPHZ2 ZW5jL3Z2ZW5jLmg+Cj4+ICsjaW5jbHVkZSA8dnZlbmMvdnZlbmNDZmcuaD4KPj4gKyNpbmNsdWRl IDx2dmVuYy92ZXJzaW9uLmg+Cj4+ICsKPj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcu aCIKPj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvYXZ1dGlsLmgiCj4+ICsjaW5jbHVkZSAibGliYXZ1 dGlsL2NvbW1vbi5oIgo+PiArI2luY2x1ZGUgImxpYmF2dXRpbC9mcmFtZS5oIgo+PiArI2luY2x1 ZGUgImxpYmF2dXRpbC9pbWd1dGlscy5oIgo+PiArI2luY2x1ZGUgImxpYmF2dXRpbC9sb2cuaCIK Pj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvbWVtLmgiCj4+ICsjaW5jbHVkZSAibGliYXZ1dGlsL3Bp eGRlc2MuaCIKPj4gKyNpbmNsdWRlICJsaWJhdnV0aWwvb3B0LmgiCj4+ICsKPj4gKyNpbmNsdWRl ICJhdmNvZGVjLmgiCj4+ICsjaW5jbHVkZSAiY29kZWNfaW50ZXJuYWwuaCIKPj4gKyNpbmNsdWRl ICJlbmNvZGUuaCIKPj4gKyNpbmNsdWRlICJpbnRlcm5hbC5oIgo+PiArI2luY2x1ZGUgInBhY2tl dF9pbnRlcm5hbC5oIgo+PiArI2luY2x1ZGUgInByb2ZpbGVzLmgiCj4+ICsKPj4gKyNkZWZpbmUg VlZFTkNfVkVSU0lPTl9JTlQgIEFWX1ZFUlNJT05fSU5UKFZWRU5DX1ZFUlNJT05fTUFKT1IsIFwK Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZWRU5DX1ZFUlNJ T05fTUlOT1IsIFwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFZWRU5DX1ZFUlNJT05fUEFUQ0gpCj4+ICsKPj4gK3R5cGVkZWYgc3RydWN0IFZWZW5DQ29udGV4 dCB7Cj4+ICsgICAgQVZDbGFzcyAgICAgICAgICpjbGFzczsKPj4gKyAgICB2dmVuY0VuY29kZXIg ICAgKmVuY29kZXI7Cj4+ICsgICAgdnZlbmNBY2Nlc3NVbml0ICphdTsKPj4gKyAgICBib29sICAg ICAgICAgICAgIGVuY29kZV9kb25lOwo+PiArICAgIGludCAgIHByZXNldDsKPj4gKyAgICBpbnQg ICBxcDsKPj4gKyAgICBpbnQgICBxcGE7Cj4+ICsgICAgaW50ICAgaW50cmFfcmVmcmVzaF9zZWM7 Cj4+ICsgICAgY2hhciAqbGV2ZWw7Cj4+ICsgICAgaW50ICAgdGllcjsKPj4gKyAgICBjaGFyICpz dGF0czsKPj4gKyAgICBBVkRpY3Rpb25hcnkgKnZ2ZW5jX29wdHM7Cj4+ICt9IFZWZW5DQ29udGV4 dDsKPj4gKwo+PiArc3RhdGljIHZvaWQgdnZlbmNfbG9nX2NhbGxiYWNrKHZvaWQgKmN0eCwgaW50 IGxldmVsLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZt dCwgdmFfbGlzdCBhcmdzKQo+PiArewo+PiArICAgIHZ2ZW5jX2NvbmZpZyBwYXJhbXM7Cj4+ICsg ICAgdnZlbmNFbmNvZGVyICplbmNvZGVyID0gY3R4Owo+PiArICAgIGlmIChlbmNvZGVyKSB7Cj4+ ICsgICAgICAgIHZ2ZW5jX2NvbmZpZ19kZWZhdWx0KCZwYXJhbXMpOwo+PiArICAgICAgICB2dmVu Y19nZXRfY29uZmlnKGVuY29kZXIsICZwYXJhbXMpOwo+PiArICAgICAgICBpZiAoKGludClwYXJh bXMubV92ZXJib3NpdHkgPj0gbGV2ZWwpCj4+ICsgICAgICAgICAgICB2ZnByaW50ZihsZXZlbCA9 PSAxID8gc3RkZXJyIDogc3Rkb3V0LCBmbXQsIGFyZ3MpOwo+PiArICAgIH0KPj4gK30KPj4gKwo+ PiArc3RhdGljIHZvaWQgdnZlbmNfc2V0X3ZlcmJvc2l0b3J5KHZ2ZW5jX2NvbmZpZyAqcGFyYW1z KQo+PiArewo+PiArICAgIGludCBsb2dsZXZlbCA9IGF2X2xvZ19nZXRfbGV2ZWwoKTsKPj4gKyAg ICBwYXJhbXMtPm1fdmVyYm9zaXR5ID0gVlZFTkNfU0lMRU5UOwo+PiArICAgIGlmIChsb2dsZXZl bCA+PSBBVl9MT0dfREVCVUcpCj4+ICsgICAgICAgIHBhcmFtcy0+bV92ZXJib3NpdHkgPSBWVkVO Q19ERVRBSUxTOwo+PiArICAgIGVsc2UgaWYgKGxvZ2xldmVsID49IEFWX0xPR19WRVJCT1NFKQo+ PiArICAgICAgICBwYXJhbXMtPm1fdmVyYm9zaXR5ID0gVlZFTkNfTk9USUNFOwo+PiArICAgIGVs c2UgaWYgKGxvZ2xldmVsID49IEFWX0xPR19JTkZPKQo+PiArICAgICAgICBwYXJhbXMtPm1fdmVy Ym9zaXR5ID0gVlZFTkNfV0FSTklORzsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgdnZlbmNf c2V0X3BpY19mb3JtYXQoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCB2dmVuY19jb25maWcKPj4gKnBh cmFtcykKPj4gK3sKPj4gKyAgICBwYXJhbXMtPm1faW50ZXJuQ2hyb21hRm9ybWF0ID0gVlZFTkNf Q0hST01BXzQyMDsKPj4gKyAgICBwYXJhbXMtPm1faW5wdXRCaXREZXB0aFswXSAgID0gMTA7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHZ2ZW5jX3NldF9jb2xvcl9mb3JtYXQoQVZDb2RlY0Nv bnRleHQgKmF2Y3R4LCB2dmVuY19jb25maWcKPj4gKnBhcmFtcykKPj4gK3sKPj4gKyAgICBpZiAo YXZjdHgtPmNvbG9yX3ByaW1hcmllcyAhPSBBVkNPTF9QUklfVU5TUEVDSUZJRUQpCj4+ICsgICAg ICAgIHBhcmFtcy0+bV9jb2xvdXJQcmltYXJpZXMgPSAoaW50KSBhdmN0eC0+Y29sb3JfcHJpbWFy aWVzOwo+PiArICAgIGlmIChhdmN0eC0+Y29sb3JzcGFjZSAhPSBBVkNPTF9TUENfVU5TUEVDSUZJ RUQpCj4+ICsgICAgICAgIHBhcmFtcy0+bV9tYXRyaXhDb2VmZmljaWVudHMgPSAoaW50KSBhdmN0 eC0+Y29sb3JzcGFjZTsKPj4gKyAgICBpZiAoYXZjdHgtPmNvbG9yX3RyYyAhPSBBVkNPTF9UUkNf VU5TUEVDSUZJRUQpIHsKPj4gKyAgICAgICAgcGFyYW1zLT5tX3RyYW5zZmVyQ2hhcmFjdGVyaXN0 aWNzID0gKGludCkgYXZjdHgtPmNvbG9yX3RyYzsKPj4gKwo+PiArICAgICAgICBpZiAoYXZjdHgt PmNvbG9yX3RyYyA9PSBBVkNPTF9UUkNfU01QVEUyMDg0KQo+PiArICAgICAgICAgICAgcGFyYW1z LT5tX0hkck1vZGUgPSAoYXZjdHgtPmNvbG9yX3ByaW1hcmllcyA9PQo+PiBBVkNPTF9QUklfQlQy MDIwKSA/Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZWRU5DX0hEUl9QUV9C VDIwMjAgOiBWVkVOQ19IRFJfUFE7Cj4+ICsgICAgICAgIGVsc2UgaWYgKGF2Y3R4LT5jb2xvcl90 cmMgPT0gQVZDT0xfVFJDX0JUMjAyMF8xMCB8fAo+PiBhdmN0eC0+Y29sb3JfdHJjID09IEFWQ09M X1RSQ19BUklCX1NURF9CNjcpCj4+ICsgICAgICAgICAgICBwYXJhbXMtPm1fSGRyTW9kZSA9IChh dmN0eC0+Y29sb3JfdHJjID09IEFWQ09MX1RSQ19CVDIwMjBfMTAKPj4gfHwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5jb2xvcl9wcmltYXJpZXMgPT0KPj4gQVZD T0xfUFJJX0JUMjAyMCB8fAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXZj dHgtPmNvbG9yc3BhY2UgPT0KPj4gQVZDT0xfU1BDX0JUMjAyMF9OQ0wgfHwKPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGF2Y3R4LT5jb2xvcnNwYWNlID09Cj4+IEFWQ09MX1NQ Q19CVDIwMjBfQ0wpID8KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVlZFTkNf SERSX0hMR19CVDIwMjAgOiBWVkVOQ19IRFJfSExHOwo+PiArICAgIH0KPj4gKwo+PiArICAgIGlm IChwYXJhbXMtPm1fSGRyTW9kZSA9PSBWVkVOQ19IRFJfT0ZGICYmCj4+ICsgICAgICAgIChhdmN0 eC0+Y29sb3JfcHJpbWFyaWVzICE9IEFWQ09MX1BSSV9VTlNQRUNJRklFRCB8fAo+PiBhdmN0eC0+ Y29sb3JzcGFjZSAhPSBBVkNPTF9TUENfVU5TUEVDSUZJRUQpKSB7Cj4+ICsgICAgICAgIHBhcmFt cy0+bV92dWlQYXJhbWV0ZXJzUHJlc2VudCA9IDE7Cj4+ICsgICAgICAgIHBhcmFtcy0+bV9jb2xv dXJEZXNjcmlwdGlvblByZXNlbnQgPSB0cnVlOwo+PiArICAgIH0KPj4gK30KPj4gKwo+PiArc3Rh dGljIHZvaWQgdnZlbmNfc2V0X2ZyYW1lcmF0ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIHZ2ZW5j X2NvbmZpZwo+PiAqcGFyYW1zKQo+PiArewo+PiArICAgIGlmIChhdmN0eC0+ZnJhbWVyYXRlLm51 bSA+IDAgJiYgYXZjdHgtPmZyYW1lcmF0ZS5kZW4gPiAwKSB7Cj4+ICsgICAgICAgIHBhcmFtcy0+ bV9GcmFtZVJhdGUgPSBhdmN0eC0+ZnJhbWVyYXRlLm51bTsKPj4gKyAgICAgICAgcGFyYW1zLT5t X0ZyYW1lU2NhbGUgPSBhdmN0eC0+ZnJhbWVyYXRlLmRlbjsKPj4gKyAgICB9IGVsc2Ugewo+PiAr ICAgICAgICBwYXJhbXMtPm1fRnJhbWVSYXRlID0gYXZjdHgtPnRpbWVfYmFzZS5kZW47Cj4+ICsg ICAgICAgIHBhcmFtcy0+bV9GcmFtZVNjYWxlID0gYXZjdHgtPnRpbWVfYmFzZS5udW07Cj4+ICsg ICAgfQo+PiArCj4+ICtGRl9ESVNBQkxFX0RFUFJFQ0FUSU9OX1dBUk5JTkdTCj4+ICsKPj4gKyNp ZiBGRl9BUElfVElDS1NfUEVSX0ZSQU1FCj4+ICsgICAgaWYgKGF2Y3R4LT50aWNrc19wZXJfZnJh bWUgPT0gMSkgewo+PiArI2VuZGlmCj4+ICsgICAgICAgIHBhcmFtcy0+bV9UaWNrc1BlclNlY29u ZCA9IC0xOyAgIC8qIGF1dG8gbW9kZSBmb3IgdGlja3MgcGVyCj4+IGZyYW1lID0gMSAqLwo+PiAr I2lmIEZGX0FQSV9USUNLU19QRVJfRlJBTUUKPj4gKyAgICB9IGVsc2Ugewo+PiArICAgICAgICBw YXJhbXMtPm1fVGlja3NQZXJTZWNvbmQgPQo+PiArICAgICAgICAgICAgY2VpbCgoYXZjdHgtPnRp bWVfYmFzZS5kZW4gLyAoZG91YmxlKSBhdmN0eC0+dGltZV9iYXNlLm51bSkgKgo+PiArICAgICAg ICAgICAgICAgICAoZG91YmxlKSBhdmN0eC0+dGlja3NfcGVyX2ZyYW1lKTsKPj4gKyAgICB9Cj4+ ICsjZW5kaWYKPj4gK0ZGX0VOQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUwo+PiArfQo+PiArCj4+ ICtzdGF0aWMgaW50IHZ2ZW5jX3BhcnNlX3Z2ZW5jX3BhcmFtcyhBVkNvZGVjQ29udGV4dCAqYXZj dHgsIHZ2ZW5jX2NvbmZpZwo+PiAqcGFyYW1zKQo+PiArewo+PiArICAgIFZWZW5DQ29udGV4dCAq cyA9IGF2Y3R4LT5wcml2X2RhdGE7Cj4+ICsgICAgY29uc3QgQVZEaWN0aW9uYXJ5RW50cnkgKmVu ID0gTlVMTDsKPj4gKyAgICBpbnQgcGFyc2VfcmV0Owo+PiArICAgIGludCByZXQgPSAwOwo+PiAr Cj4+ICsgICAgd2hpbGUgKChlbiA9IGF2X2RpY3RfaXRlcmF0ZShzLT52dmVuY19vcHRzLCBlbikp KSB7Cj4+ICsgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0RFQlVHLCAidnZlbmNfc2V0X3Bh cmFtOiAnJXM6JXMnXG4iLAo+PiBlbi0+a2V5LAo+PiArICAgICAgICAgICAgICAgZW4tPnZhbHVl KTsKPj4gKyAgICAgICAgcGFyc2VfcmV0ID0gdnZlbmNfc2V0X3BhcmFtKHBhcmFtcywgZW4tPmtl eSwgZW4tPnZhbHVlKTsKPj4gKyAgICAgICAgc3dpdGNoIChwYXJzZV9yZXQpIHsKPj4gKyAgICAg ICAgY2FzZSBWVkVOQ19QQVJBTV9CQURfTkFNRToKPj4gKyAgICAgICAgICAgIGF2X2xvZyhhdmN0 eCwgQVZfTE9HX0VSUk9SLCAiVW5rbm93biB2dmVuYyBvcHRpb246ICVzLlxuIiwKPj4gZW4tPmtl eSk7Cj4+ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4+ICsgICAgICAgICAg ICBicmVhazsKPj4gKyAgICAgICAgY2FzZSBWVkVOQ19QQVJBTV9CQURfVkFMVUU6Cj4+ICsgICAg ICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgIkludmFsaWQgdnZlbmMgdmFsdWUg Zm9yICVzOgo+PiAlcy5cbiIsIGVuLT5rZXksIGVuLT52YWx1ZSk7Cj4+ICsgICAgICAgICAgICBy ZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4+ICsgICAgICAgICAgICBicmVhazsKPj4gKyAgICAgICAg ZGVmYXVsdDoKPj4gKyAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgICB9Cj4+ICsKPj4gKyAg ICAgICAgaWYgKCFhdl9zdHJjYXNlY21wKGVuLT5rZXksICJyY3N0YXRzZmlsZSIpKSB7Cj4+ICsg ICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgInZ2ZW5jLXBhcmFtcyAycGFz cyBvcHRpb24KPj4gJ3Jjc3RhdHNmaWxlJyAiCj4+ICsgICAgICAgICAgICAgICAgICAgIm5vdCBh dmFpbGFibGUuIFVzZSBvcHRpb24gJ3Bhc3Nsb2dmaWxlJ1xuIik7Cj4+ICsgICAgICAgICAgICBy ZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4+ICsgICAgICAgIH0KPj4gKyAgICAgICAgaWYgKCFhdl9z dHJjYXNlY21wKGVuLT5rZXksICJwYXNzZXMiKSB8fCAhYXZfc3RyY2FzZWNtcChlbi0+a2V5LAo+ PiAicGFzcyIpKSB7Cj4+ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwg InZ2ZW5jLXBhcmFtcyAycGFzcyBvcHRpb24gJyVzJyAiCj4+ICsgICAgICAgICAgICAgICAgICAg Im5vdCBhdmFpbGFibGUuIFVzZSBvcHRpb24gJ3Bhc3MnXG4iLCBlbi0+a2V5KTsKPj4gKyAgICAg ICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPj4gKyAgICAgICAgfQo+PiArICAgIH0KPj4g KyAgICByZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHZ2ZW5jX3NldF9yY19t b2RlKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgdnZlbmNfY29uZmlnICpwYXJhbXMpCj4+ICt7Cj4+ ICsgICAgcGFyYW1zLT5tX1JDTnVtUGFzc2VzID0gMTsKPj4gKyAgICBpZiAoKGF2Y3R4LT5mbGFn cyAmIEFWX0NPREVDX0ZMQUdfUEFTUzEgfHwgYXZjdHgtPmZsYWdzICYKPj4gQVZfQ09ERUNfRkxB R19QQVNTMikpIHsKPj4gKyAgICAgICAgaWYgKCFhdmN0eC0+Yml0X3JhdGUpIHsKPj4gKyAgICAg ICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiQSBiaXRyYXRlIG11c3QgYmUgc2V0 IHRvIHVzZQo+PiB0d28gcGFzcyBtb2RlLlxuIik7Cj4+ICsgICAgICAgICAgICByZXR1cm4gQVZF UlJPUihFSU5WQUwpOwo+PiArICAgICAgICB9Cj4+ICsgICAgICAgIHBhcmFtcy0+bV9SQ051bVBh c3NlcyA9IDI7Cj4+ICsgICAgICAgIGlmIChhdmN0eC0+ZmxhZ3MgJiBBVl9DT0RFQ19GTEFHX1BB U1MxKQo+PiArICAgICAgICAgICAgcGFyYW1zLT5tX1JDUGFzcyA9IDE7Cj4+ICsgICAgICAgIGVs c2UKPj4gKyAgICAgICAgICAgIHBhcmFtcy0+bV9SQ1Bhc3MgPSAyOwo+PiArICAgIH0KPj4gKwo+ PiArICAgIGlmIChhdmN0eC0+cmNfbWF4X3JhdGUpIHsKPj4gKyNpZiBWVkVOQ19WRVJTSU9OX0lO VCA+PSBBVl9WRVJTSU9OX0lOVCgxLDgsMCkKPj4gKyAgICAgICAgcGFyYW1zLT5tX1JDTWF4Qml0 cmF0ZSA9IGF2Y3R4LT5yY19tYXhfcmF0ZTsKPj4gKyNlbmRpZgo+PiArCj4+ICsjaWYgVlZFTkNf VkVSU0lPTl9JTlQgPCBBVl9WRVJTSU9OX0lOVCgxLDExLDApCj4+ICsgICAgICAgIC8qIHJjX21h eF9yYXRlIHdpdGhvdXQgYSBiaXRfcmF0ZSBlbmFibGVzIGNhcHBlZCBDUUYgbW9kZS4KPj4gKyAg ICAgICAgKFFQICsgc3Viai4gb3B0aW1pemF0aW9uICsgbWF4LiBiaXRyYXRlKSAqLwo+PiArICAg ICAgICBpZiAoIWF2Y3R4LT5iaXRfcmF0ZSkgewo+PiArICAgICAgICAgICAgYXZfbG9nKGF2Y3R4 LCBBVl9MT0dfRVJST1IsICJDYXBwZWQgQ29uc3RhbnQgUXVhbGl0eSBGYWN0b3IKPj4gbW9kZSAo Y2FwcGVkIENRRikgIgo+PiArICAgICAgICAgICAgICAgICAgICJuZWVkcyBhdCBsZWFzdCB2dmVu YyB2ZXJzaW9uID49IDEuMTEuMCAoY3VycmVudAo+PiB2ZXJzaW9uICVzKVxuIiwgdnZlbmNfZ2V0 X3ZlcnNpb24oKSk7Cj4+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+PiAr ICAgICAgICB9Cj4+ICsjZW5kaWYKPj4gKyAgICB9Cj4+ICsgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ ICsKPj4gK3N0YXRpYyBpbnQgdnZlbmNfaW5pdF9leHRyYWRhdGEoQVZDb2RlY0NvbnRleHQgKmF2 Y3R4LCBWVmVuQ0NvbnRleHQgKnMpCj4+ICt7Cj4+ICsgICAgaW50IHJldDsKPj4gKyAgICBpZiAo YXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19HTE9CQUxfSEVBREVSKSB7Cj4+ICsgICAgICAg IHJldCA9IHZ2ZW5jX2dldF9oZWFkZXJzKHMtPmVuY29kZXIsIHMtPmF1KTsKPj4gKyAgICAgICAg aWYgKDAgIT0gcmV0KSB7Cj4+ICsgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJP UiwgImNhbm5vdCBnZXQgKFNQUyxQUFMpIGhlYWRlcnM6Cj4+ICVzXG4iLAo+PiArICAgICAgICAg ICAgICAgICAgIHZ2ZW5jX2dldF9sYXN0X2Vycm9yKHMtPmVuY29kZXIpKTsKPj4gKyAgICAgICAg ICAgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7Cj4+ICsgICAgICAgIH0KPj4gKwo+PiArICAgICAg ICBpZiAocy0+YXUtPnBheWxvYWRVc2VkU2l6ZSA8PSAwKSB7Cj4+ICsgICAgICAgICAgICByZXR1 cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPj4gKyAgICAgICAgfQo+PiArCj4+ICsgICAgICAgIGF2 Y3R4LT5leHRyYWRhdGFfc2l6ZSA9IHMtPmF1LT5wYXlsb2FkVXNlZFNpemU7Cj4+ICsgICAgICAg IGF2Y3R4LT5leHRyYWRhdGEgPSBhdl9tYWxsb2N6KGF2Y3R4LT5leHRyYWRhdGFfc2l6ZSArCj4+ IEFWX0lOUFVUX0JVRkZFUl9QQURESU5HX1NJWkUpOwo+PiArICAgICAgICBpZiAoIWF2Y3R4LT5l eHRyYWRhdGEpIHsKPj4gKyAgICAgICAgICAgIHJldHVybiBBVkVSUk9SKEVOT01FTSk7Cj4+ICsg ICAgICAgIH0KPj4gKwo+PiArICAgICAgICBtZW1jcHkoYXZjdHgtPmV4dHJhZGF0YSwgcy0+YXUt PnBheWxvYWQsIGF2Y3R4LT5leHRyYWRhdGFfc2l6ZSk7Cj4+ICsgICAgfQo+PiArICAgIHJldHVy biAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgYXZfY29sZCBpbnQgdnZlbmNfaW5pdChBVkNvZGVj Q29udGV4dCAqYXZjdHgpCj4+ICt7Cj4+ICsgICAgaW50IHJldDsKPj4gKyAgICBpbnQgZnJhbWVy YXRlOwo+PiArICAgIFZWZW5DQ29udGV4dCAqcyA9IGF2Y3R4LT5wcml2X2RhdGE7Cj4+ICsgICAg dnZlbmNfY29uZmlnIHBhcmFtczsKPj4gKyAgICB2dmVuY1ByZXNldE1vZGUgcHJlc2V0ID0gKHZ2 ZW5jUHJlc2V0TW9kZSkgcy0+cHJlc2V0Owo+PiArCj4+ICsgICAgaWYgKGF2Y3R4LT5mbGFncyAm IEFWX0NPREVDX0ZMQUdfSU5URVJMQUNFRF9EQ1QpIHsKPj4gKyAgICAgICAgYXZfbG9nKGF2Y3R4 LCBBVl9MT0dfRVJST1IsICJpbnRlcmxhY2VkIG5vdCBzdXBwb3J0ZWRcbiIpOwo+PiArICAgICAg ICByZXR1cm4gQVZFUlJPUihFSU5WQUwpOwo+PiArICAgIH0KPj4gKwo+PiArICAgIHZ2ZW5jX2Nv bmZpZ19kZWZhdWx0KCZwYXJhbXMpOwo+PiArCj4+ICsgICAgaWYgKGF2Y3R4LT5mcmFtZXJhdGUu bnVtID4gMCAmJiBhdmN0eC0+ZnJhbWVyYXRlLmRlbiA+IDApCj4+ICsgICAgICAgIGZyYW1lcmF0 ZSA9IGF2Y3R4LT5mcmFtZXJhdGUubnVtIC8gYXZjdHgtPmZyYW1lcmF0ZS5kZW47Cj4+ICsgICAg ZWxzZQo+PiArICAgICAgICBmcmFtZXJhdGUgPSBhdmN0eC0+dGltZV9iYXNlLmRlbiAvIGF2Y3R4 LT50aW1lX2Jhc2UubnVtOwo+PiArCj4+ICsgICAgdnZlbmNfaW5pdF9kZWZhdWx0KCZwYXJhbXMs IGF2Y3R4LT53aWR0aCwgYXZjdHgtPmhlaWdodCwgZnJhbWVyYXRlLAo+PiArICAgICAgICAgICAg ICAgICAgICAgICBhdmN0eC0+Yml0X3JhdGUsIHMtPnFwLCBwcmVzZXQpOwo+PiArCj4+ICsgICAg dnZlbmNfc2V0X3ZlcmJvc2l0b3J5KCZwYXJhbXMpOwo+PiArCj4+ICsgICAgaWYgKGF2Y3R4LT50 aHJlYWRfY291bnQgPiAwKQo+PiArICAgICAgICBwYXJhbXMubV9udW1UaHJlYWRzID0gYXZjdHgt PnRocmVhZF9jb3VudDsKPj4gKwo+PiArICAgIC8qIEdPUCBzZXR0aW5ncyAoSURSL0NSQSkgKi8K Pj4gKyAgICBpZiAoYXZjdHgtPmZsYWdzICYgQVZfQ09ERUNfRkxBR19DTE9TRURfR09QKQo+PiAr ICAgICAgICBwYXJhbXMubV9EZWNvZGluZ1JlZnJlc2hUeXBlID0gVlZFTkNfRFJUX0lEUjsKPj4g Kwo+PiArICAgIGlmIChhdmN0eC0+Z29wX3NpemUgPT0gMSkgewo+PiArICAgICAgICBwYXJhbXMu bV9HT1BTaXplID0gMTsKPj4gKyAgICAgICAgcGFyYW1zLm1fSW50cmFQZXJpb2QgPSAxOwo+PiAr ICAgIH0gZWxzZQo+PiArICAgICAgICBwYXJhbXMubV9JbnRyYVBlcmlvZFNlYyA9IHMtPmludHJh X3JlZnJlc2hfc2VjOwo+PiArCj4+ICsgICAgcGFyYW1zLm1fQWNjZXNzVW5pdERlbGltaXRlciA9 IHRydWU7Cj4+ICsgICAgcGFyYW1zLm1fdXNlUGVyY2VwdFFQQSA9IHMtPnFwYTsKPj4gKyAgICBw YXJhbXMubV9sZXZlbFRpZXIgICAgID0gKHZ2ZW5jVGllcikgcy0+dGllcjsKPj4gKwo+PiArICAg IGlmIChhdmN0eC0+bGV2ZWwgPiAwKQo+PiArICAgICAgICBwYXJhbXMubV9sZXZlbCA9ICh2dmVu Y0xldmVsKWF2Y3R4LT5sZXZlbDsKPj4gKwo+PiArICAgIGlmIChzLT5sZXZlbCkgewo+PiArICAg ICAgICBpZiAoVlZFTkNfUEFSQU1fQkFEX1ZBTFVFID09IHZ2ZW5jX3NldF9wYXJhbSgmcGFyYW1z LCAibGV2ZWwiLAo+PiBzLT5sZXZlbCkpIHsKPj4gKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwg QVZfTE9HX0VSUk9SLCAiSW52YWxpZCBsZXZlbF9pZGM6ICVzLlxuIiwKPj4gcy0+bGV2ZWwpOwo+ PiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsKPj4gKyAgICAgICAgfQo+PiAr ICAgIH0KPj4gKwo+PiArICAgIHZ2ZW5jX3NldF9mcmFtZXJhdGUoYXZjdHgsICZwYXJhbXMpOwo+ PiArCj4+ICsgICAgdnZlbmNfc2V0X3BpY19mb3JtYXQoYXZjdHgsICZwYXJhbXMpOwo+PiArCj4+ ICsgICAgdnZlbmNfc2V0X2NvbG9yX2Zvcm1hdChhdmN0eCwgJnBhcmFtcyk7Cj4+ICsKPj4gKyAg ICByZXQgPSB2dmVuY19wYXJzZV92dmVuY19wYXJhbXMoYXZjdHgsICZwYXJhbXMpOwo+PiArICAg IGlmIChyZXQgIT0gMCkKPj4gKyAgICAgICAgcmV0dXJuIHJldDsKPj4gKwo+PiArICAgIHJldCA9 IHZ2ZW5jX3NldF9yY19tb2RlKGF2Y3R4LCAmcGFyYW1zKTsKPj4gKyAgICBpZiAocmV0ICE9IDAp Cj4+ICsgICAgICAgIHJldHVybiByZXQ7Cj4+ICsKPj4gKyAgICBzLT5lbmNvZGVyID0gdnZlbmNf ZW5jb2Rlcl9jcmVhdGUoKTsKPj4gKyAgICBpZiAoIXMtPmVuY29kZXIpIHsKPj4gKyAgICAgICAg YXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJjYW5ub3QgY3JlYXRlIGxpYnZ2ZW5jIGVuY29k ZXJcbiIpOwo+PiArICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+PiArICAgIH0KPj4g Kwo+PiArICAgIHZ2ZW5jX3NldF9tc2dfY2FsbGJhY2soJnBhcmFtcywgcy0+ZW5jb2RlciwgdnZl bmNfbG9nX2NhbGxiYWNrKTsKPj4gKyAgICByZXQgPSB2dmVuY19lbmNvZGVyX29wZW4ocy0+ZW5j b2RlciwgJnBhcmFtcyk7Cj4+ICsgICAgaWYgKHJldCAhPSAwKSB7Cj4+ICsgICAgICAgIGF2X2xv ZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiY2Fubm90IG9wZW4gbGlidnZlbmMgZW5jb2RlcjogJXNc biIsCj4+ICsgICAgICAgICAgICAgICB2dmVuY19nZXRfbGFzdF9lcnJvcihzLT5lbmNvZGVyKSk7 Cj4+ICsgICAgICAgIHJldHVybiBBVkVSUk9SX0VYVEVSTkFMOwo+PiArICAgIH0KPj4gKwo+PiAr ICAgIHZ2ZW5jX2dldF9jb25maWcocy0+ZW5jb2RlciwgJnBhcmFtcyk7ICAgICAvKiBnZXQgdGhl IGFkYXB0ZWQgY29uZmlnCj4+ICovCj4+ICsKPj4gKyAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19J TkZPLCAibGlidnZlbmMgdmVyc2lvbjogJXNcbiIsCj4+IHZ2ZW5jX2dldF92ZXJzaW9uKCkpOwo+ PiArICAgIGlmIChhdl9sb2dfZ2V0X2xldmVsKCkgPj0gQVZfTE9HX1ZFUkJPU0UpCj4+ICsgICAg ICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0lORk8sICIlc1xuIiwKPj4gdnZlbmNfZ2V0X2NvbmZp Z19hc19zdHJpbmcoJnBhcmFtcywgcGFyYW1zLm1fdmVyYm9zaXR5KSk7Cj4+ICsKPj4gKyAgICBp ZiAocGFyYW1zLm1fUkNOdW1QYXNzZXMgPT0gMikgewo+PiArICAgICAgICByZXQgPSB2dmVuY19p bml0X3Bhc3Mocy0+ZW5jb2RlciwgcGFyYW1zLm1fUkNQYXNzIC0gMSwgcy0+c3RhdHMpOwo+PiAr ICAgICAgICBpZiAocmV0ICE9IDApIHsKPj4gKyAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZf TE9HX0VSUk9SLCAiY2Fubm90IGluaXQgcGFzcyAlZDogJXNcbiIsCj4+IHBhcmFtcy5tX1JDUGFz cywKPj4gKyAgICAgICAgICAgICAgICAgICB2dmVuY19nZXRfbGFzdF9lcnJvcihzLT5lbmNvZGVy KSk7Cj4+ICsgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9FWFRFUk5BTDsKPj4gKyAgICAgICAg fQo+PiArICAgIH0KPj4gKwo+PiArICAgIHMtPmF1ID0gdnZlbmNfYWNjZXNzVW5pdF9hbGxvYygp Owo+PiArICAgIGlmICghcy0+YXUpIHsKPj4gKyAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0df RkFUQUwsICJjYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBBVQo+PiBwYXlsb2FkXG4iKTsKPj4g KyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPj4gKyAgICB9Cj4+ICsgICAgdnZlbmNf YWNjZXNzVW5pdF9hbGxvY19wYXlsb2FkKHMtPmF1LCBhdmN0eC0+d2lkdGggKiBhdmN0eC0+aGVp Z2h0KTsKPj4gKyAgICBpZiAoIXMtPmF1LT5wYXlsb2FkKSB7Cj4+ICsgICAgICAgIGF2X2xvZyhh dmN0eCwgQVZfTE9HX0ZBVEFMLCAiY2Fubm90IGFsbG9jYXRlIHBheWxvYWQgbWVtb3J5IG9mCj4+ IHNpemUgJWRcbiIsCj4+ICsgICAgICAgICAgICAgICBhdmN0eC0+d2lkdGggKiBhdmN0eC0+aGVp Z2h0KTsKPj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsKPj4gKyAgICB9Cj4+ICsK Pj4gKyAgICByZXQgPSB2dmVuY19pbml0X2V4dHJhZGF0YShhdmN0eCwgcyk7Cj4+ICsgICAgaWYg KHJldCAhPSAwKQo+PiArICAgICAgICByZXR1cm4gcmV0Owo+PiArCj4+ICsgICAgcy0+ZW5jb2Rl X2RvbmUgPSBmYWxzZTsKPj4gKyAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGF2 X2NvbGQgaW50IHZ2ZW5jX2Nsb3NlKEFWQ29kZWNDb250ZXh0ICphdmN0eCkKPj4gK3sKPj4gKyAg ICBWVmVuQ0NvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOwo+PiArCj4+ICsgICAgaWYgKHMt PmF1KQo+PiArICAgICAgICB2dmVuY19hY2Nlc3NVbml0X2ZyZWUocy0+YXUsIHRydWUpOwo+PiAr Cj4+ICsgICAgaWYgKHMtPmVuY29kZXIpIHsKPj4gKyAgICAgICAgdnZlbmNfcHJpbnRfc3VtbWFy eShzLT5lbmNvZGVyKTsKPj4gKwo+PiArICAgICAgICBpZiAoMCAhPSB2dmVuY19lbmNvZGVyX2Ns b3NlKHMtPmVuY29kZXIpKQo+PiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1JfRVhURVJOQUw7 Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBh dl9jb2xkIGludCB2dmVuY19mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWUGFja2V0ICpw a3QsCj4+IGNvbnN0IEFWRnJhbWUgKmZyYW1lLAo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCAqZ290X3BhY2tldCkKPj4gK3sKPj4gKyAgICBWVmVuQ0NvbnRleHQgKnMgPSBh dmN0eC0+cHJpdl9kYXRhOwo+PiArICAgIHZ2ZW5jWVVWQnVmZmVyICpweXV2YnVmOwo+PiArICAg IHZ2ZW5jWVVWQnVmZmVyIHl1dmJ1ZjsKPj4gKyAgICBpbnQgcGljdF90eXBlOwo+PiArICAgIGlu dCByZXQ7Cj4+ICsKPj4gKyAgICBweXV2YnVmID0gTlVMTDsKPj4gKyAgICBpZiAoZnJhbWUpIHsK Pj4gKyAgICAgICAgdnZlbmNfWVVWQnVmZmVyX2RlZmF1bHQoJnl1dmJ1Zik7Cj4+ICsgICAgICAg IHl1dmJ1Zi5wbGFuZXNbMF0ucHRyID0gKGludDE2X3QgKikgZnJhbWUtPmRhdGFbMF07Cj4+ICsg ICAgICAgIHl1dmJ1Zi5wbGFuZXNbMV0ucHRyID0gKGludDE2X3QgKikgZnJhbWUtPmRhdGFbMV07 Cj4+ICsgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMl0ucHRyID0gKGludDE2X3QgKikgZnJhbWUtPmRh dGFbMl07Cj4+ICsKPj4gKyAgICAgICAgeXV2YnVmLnBsYW5lc1swXS53aWR0aCAgPSBmcmFtZS0+ d2lkdGg7Cj4+ICsgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMF0uaGVpZ2h0ID0gZnJhbWUtPmhlaWdo dDsKPj4gKyAgICAgICAgeXV2YnVmLnBsYW5lc1swXS5zdHJpZGUgPSBmcmFtZS0+bGluZXNpemVb MF0gPj4gMTsgLyogc3RyaWRlIGlzCj4+IHVzZWQgaW4gMTZiaXQgc2FtcGxlcyBpbiB2dmVuYyAq Lwo+PiArCj4+ICsgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMV0ud2lkdGggID0gZnJhbWUtPndpZHRo ID4+IDE7Cj4+ICsgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMV0uaGVpZ2h0ID0gZnJhbWUtPmhlaWdo dCA+PiAxOwo+PiArICAgICAgICB5dXZidWYucGxhbmVzWzFdLnN0cmlkZSA9IGZyYW1lLT5saW5l c2l6ZVsxXSA+PiAxOwo+PiArCj4+ICsgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMl0ud2lkdGggID0g ZnJhbWUtPndpZHRoID4+IDE7Cj4+ICsgICAgICAgIHl1dmJ1Zi5wbGFuZXNbMl0uaGVpZ2h0ID0g ZnJhbWUtPmhlaWdodCA+PiAxOwo+PiArICAgICAgICB5dXZidWYucGxhbmVzWzJdLnN0cmlkZSA9 IGZyYW1lLT5saW5lc2l6ZVsyXSA+PiAxOwo+PiArCj4+ICsgICAgICAgIHl1dmJ1Zi5jdHMgPSBm cmFtZS0+cHRzOwo+PiArICAgICAgICB5dXZidWYuY3RzVmFsaWQgPSB0cnVlOwo+PiArICAgICAg ICBweXV2YnVmID0gJnl1dmJ1ZjsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBpZiAoIXMtPmVuY29k ZV9kb25lKSB7Cj4+ICsgICAgICAgIGlmICh2dmVuY19lbmNvZGUocy0+ZW5jb2RlciwgcHl1dmJ1 Ziwgcy0+YXUsICZzLT5lbmNvZGVfZG9uZSkgIT0KPj4gMCkKPj4gKyAgICAgICAgICAgIHJldHVy biBBVkVSUk9SX0VYVEVSTkFMOwo+PiArICAgIH0gZWxzZQo+PiArICAgICAgICByZXR1cm4gMDsK Pj4gKwo+PiArICAgIGlmIChzLT5hdS0+cGF5bG9hZFVzZWRTaXplID4gMCkgewo+PiArICAgICAg ICByZXQgPSBmZl9nZXRfZW5jb2RlX2J1ZmZlcihhdmN0eCwgcGt0LCBzLT5hdS0+cGF5bG9hZFVz ZWRTaXplLAo+PiAwKTsKPj4gKyAgICAgICAgaWYgKHJldCA8IDApCj4+ICsgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+PiArCj4+ICsgICAgICAgIG1lbWNweShwa3QtPmRhdGEsIHMtPmF1LT5wYXls b2FkLCBzLT5hdS0+cGF5bG9hZFVzZWRTaXplKTsKPj4gKwo+PiArICAgICAgICBpZiAocy0+YXUt PmN0c1ZhbGlkKQo+PiArICAgICAgICAgICAgcGt0LT5wdHMgPSBzLT5hdS0+Y3RzOwo+PiArICAg ICAgICBpZiAocy0+YXUtPmR0c1ZhbGlkKQo+PiArICAgICAgICAgICAgcGt0LT5kdHMgPSBzLT5h dS0+ZHRzOwo+PiArICAgICAgICBwa3QtPmZsYWdzIHw9IEFWX1BLVF9GTEFHX0tFWSAqIHMtPmF1 LT5yYXA7Cj4+ICsKPj4gKyAgICAgICAgKmdvdF9wYWNrZXQgPSAxOwo+PiArICAgICAgICByZXR1 cm4gMDsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3Rh dGljIGNvbnN0IGVudW0gQVZQaXhlbEZvcm1hdCBwaXhfZm10c192dmVuY1tdID0gewo+PiArICAg IEFWX1BJWF9GTVRfWVVWNDIwUDEwLAo+PiArICAgIEFWX1BJWF9GTVRfTk9ORQo+PiArfTsKPj4g Kwo+PiArI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2YoVlZlbkNDb250ZXh0LCB4KQo+PiArI2Rl ZmluZSBWRSBBVl9PUFRfRkxBR19WSURFT19QQVJBTSB8IEFWX09QVF9GTEFHX0VOQ09ESU5HX1BB UkFNCj4+ICtzdGF0aWMgY29uc3QgQVZPcHRpb24gb3B0aW9uc1tdID0gewo+PiArICAgIHsgInBy ZXNldCIsICAgICAgICJzZXQgZW5jb2RpbmcgcHJlc2V0IiwgT0ZGU0VUKHByZXNldCksCj4+IEFW X09QVF9UWVBFX0lOVCwgey5pNjQgPSAyfSwgMCwgNCwgVkUsICJwcmVzZXQifSwKPj4gKyAgICB7 ICJmYXN0ZXIiLCAgICAgICAiMCIsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IFZWRU5D X0ZBU1RFUn0sCj4+IElOVF9NSU4sIElOVF9NQVgsIFZFLCAicHJlc2V0IiB9LAo+PiArICAgIHsg ImZhc3QiLCAgICAgICAgICIxIiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gVlZFTkNf RkFTVH0sCj4+ICBJTlRfTUlOLCBJTlRfTUFYLCBWRSwgInByZXNldCIgfSwKPj4gKyAgICB7ICJt ZWRpdW0iLCAgICAgICAiMiIsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IFZWRU5DX01F RElVTX0sCj4+IElOVF9NSU4sIElOVF9NQVgsIFZFLCAicHJlc2V0IiB9LAo+PiArICAgIHsgInNs b3ciLCAgICAgICAgICIzIiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0gVlZFTkNfU0xP V30sCj4+ICBJTlRfTUlOLCBJTlRfTUFYLCBWRSwgInByZXNldCIgfSwKPj4gKyAgICB7ICJzbG93 ZXIiLCAgICAgICAiNCIsIDAsIEFWX09QVF9UWVBFX0NPTlNULCB7Lmk2NCA9IFZWRU5DX1NMT1dF Un0sCj4+IElOVF9NSU4sIElOVF9NQVgsIFZFLCAicHJlc2V0IiB9LAo+PiArICAgIHsgInFwIiwg ICAgICAgICAgICJzZXQgcXVhbnRpemF0aW9uIiwgICAgICAgICAgT0ZGU0VUKHFwKSwKPj4gQVZf T1BUX1RZUEVfSU5ULCAgey5pNjQgPSAzMn0sIC0xLCA2MywgVkUgfSwKPj4gKyAgICB7ICJxcGEi LCAgICAgICAgICAic2V0IHN1YmplY3RpdmUgKHBlcmNlcHR1YWxseSBtb3RpdmF0ZWQpCj4+IG9w dGltaXphdGlvbiIsIE9GRlNFVChxcGEpLCBBVl9PUFRfVFlQRV9CT09MLCB7Lmk2NCA9IDF9LCAg MCwgMSwgVkV9LAo+PiArICAgIHsgInBhc3Nsb2dmaWxlIiwgICJGaWxlbmFtZSBmb3IgMiBwYXNz IHN0YXRzIiwgT0ZGU0VUKHN0YXRzKSwKPj4gQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9IE5V TEx9LCAwLCAwLCBWRX0sCj4+ICsgICAgeyAic3RhdHMiLCAgICAgICAgIkZpbGVuYW1lIGZvciAy IHBhc3Mgc3RhdHMiLCBPRkZTRVQoc3RhdHMpLAo+PiBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3Ry ID0gTlVMTH0sIDAsIDAsIFZFfSwKPj4gKyAgICB7ICJwZXJpb2QiLCAgICAgICAic2V0IChpbnRy YSkgcmVmcmVzaCBwZXJpb2QgaW4gc2Vjb25kcyIsCj4+IE9GRlNFVChpbnRyYV9yZWZyZXNoX3Nl YyksIEFWX09QVF9UWVBFX0lOVCwgIHsuaTY0ID0gMX0sICAxLCBJTlRfTUFYLCBWRSB9LAo+PiAr ICAgIHsgInZ2ZW5jLXBhcmFtcyIsICJzZXQgdGhlIHZ2ZW5jIGNvbmZpZ3VyYXRpb24gdXNpbmcg YSA6LXNlcGFyYXRlZAo+PiBsaXN0IG9mIGtleT12YWx1ZSBwYXJhbWV0ZXJzIiwgT0ZGU0VUKHZ2 ZW5jX29wdHMpLCBBVl9PUFRfVFlQRV9ESUNULCB7IDAgfSwKPj4gMCwgMCwgVkUgfSwKPj4gKyAg ICB7ICJsZXZlbCIsICAgICAgICAiU3BlY2lmeSBsZXZlbCAoYXMgZGVmaW5lZCBieSBBbm5leCBB KSIsCj4+IE9GRlNFVChsZXZlbCksIEFWX09QVF9UWVBFX1NUUklORywgey5zdHIgPSBOVUxMfSwg MCwgMCwgVkV9LAo+PiArICAgIHsgInRpZXIiLCAgICAgICAgICJzZXQgdnZjIHRpZXIiLCBPRkZT RVQodGllciksIEFWX09QVF9UWVBFX0lOVCwKPj4gey5pNjQgPSAwfSwgIDAsIDEsIFZFLCAidGll ciJ9LAo+PiArICAgIHsgIm1haW4iLCAgICAgICAgICJtYWluIiwgMCwgQVZfT1BUX1RZUEVfQ09O U1QsIHsuaTY0ID0gMH0sIElOVF9NSU4sCj4+IElOVF9NQVgsIFZFLCAidGllciJ9LAo+PiArICAg IHsgImhpZ2giLCAgICAgICAgICJoaWdoIiwgMCwgQVZfT1BUX1RZUEVfQ09OU1QsIHsuaTY0ID0g MX0sIElOVF9NSU4sCj4+IElOVF9NQVgsIFZFLCAidGllciJ9LAo+PiArICAgIHtOVUxMfQo+PiAr fTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IEFWQ2xhc3MgY2xhc3MgPSB7Cj4+ICsgICAgLmNsYXNz X25hbWUgPSAibGlidnZlbmMiLAo+PiArICAgIC5pdGVtX25hbWUgID0gYXZfZGVmYXVsdF9pdGVt X25hbWUsCj4+ICsgICAgLm9wdGlvbiAgICAgPSBvcHRpb25zLAo+PiArICAgIC52ZXJzaW9uICAg ID0gTElCQVZVVElMX1ZFUlNJT05fSU5ULAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IEZG Q29kZWNEZWZhdWx0IHZ2ZW5jX2RlZmF1bHRzW10gPSB7Cj4+ICsgICAgeyAiYiIsICIwIiB9LAo+ PiArICAgIHsgImciLCAiLTEiIH0sCj4+ICsgICAgeyBOVUxMIH0sCj4+ICt9Owo+PiArCj4+ICtj b25zdCBGRkNvZGVjIGZmX2xpYnZ2ZW5jX2VuY29kZXIgPSB7Cj4+ICsgICAgLnAubmFtZSAgICAg ICAgID0gImxpYnZ2ZW5jIiwKPj4gKyAgICBDT0RFQ19MT05HX05BTUUoImxpYnZ2ZW5jIEguMjY2 IC8gVlZDIiksCj4+ICsgICAgLnAudHlwZSAgICAgICAgID0gQVZNRURJQV9UWVBFX1ZJREVPLAo+ PiArICAgIC5wLmlkICAgICAgICAgICA9IEFWX0NPREVDX0lEX1ZWQywKPj4gKyAgICAucC5jYXBh YmlsaXRpZXMgPSBBVl9DT0RFQ19DQVBfRFIxIHwgQVZfQ09ERUNfQ0FQX0RFTEFZIHwKPj4gKyAg ICAgICAgICAgICAgICAgICAgICBBVl9DT0RFQ19DQVBfT1RIRVJfVEhSRUFEUywKPj4gKyAgICAu cC5wcm9maWxlcyAgICAgPSBOVUxMX0lGX0NPTkZJR19TTUFMTChmZl92dmNfcHJvZmlsZXMpLAo+ PiArICAgIC5wLnByaXZfY2xhc3MgICA9ICZjbGFzcywKPj4gKyAgICAucC53cmFwcGVyX25hbWUg PSAibGlidnZlbmMiLAo+PiArICAgIC5wcml2X2RhdGFfc2l6ZSA9IHNpemVvZihWVmVuQ0NvbnRl eHQpLAo+PiArICAgIC5wLnBpeF9mbXRzICAgICA9IHBpeF9mbXRzX3Z2ZW5jLAo+PiArICAgIC5p bml0ICAgICAgICAgICA9IHZ2ZW5jX2luaXQsCj4+ICsgICAgRkZfQ09ERUNfRU5DT0RFX0NCKHZ2 ZW5jX2ZyYW1lKSwKPj4gKyAgICAuY2xvc2UgICAgICAgICAgPSB2dmVuY19jbG9zZSwKPj4gKyAg ICAuZGVmYXVsdHMgICAgICAgPSB2dmVuY19kZWZhdWx0cywKPj4gKyAgICAuY2Fwc19pbnRlcm5h bCAgPSBGRl9DT0RFQ19DQVBfSU5JVF9DTEVBTlVQIHwKPj4gRkZfQ09ERUNfQ0FQX0FVVE9fVEhS RUFEUwo+PiArfTsKPj4gLS0KPj4gMi4zNC4xCj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCj4+IGZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKPj4g ZmZtcGVnLWRldmVsQGZmbXBlZy5vcmcKPj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlz dGluZm8vZmZtcGVnLWRldmVsCj4+Cj4+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3Zl LCBvciBlbWFpbAo+PiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGggc3ViamVj dCAidW5zdWJzY3JpYmUiLgo+Pgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QKZmZtcGVnLWRldmVsQGZmbXBl Zy5vcmcKaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4vbGlzdGluZm8vZmZtcGVnLWRldmVsCgpU byB1bnN1YnNjcmliZSwgdmlzaXQgbGluayBhYm92ZSwgb3IgZW1haWwKZmZtcGVnLWRldmVsLXJl cXVlc3RAZmZtcGVnLm9yZyB3aXRoIHN1YmplY3QgInVuc3Vic2NyaWJlIi4K