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 E8C1B46BE5 for ; Thu, 6 Jul 2023 00:42:19 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8984768C6A4; Thu, 6 Jul 2023 03:42:16 +0300 (EEST) Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 35B8968016E for ; Thu, 6 Jul 2023 03:42:10 +0300 (EEST) Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-4f95bf5c493so36176e87.3 for ; Wed, 05 Jul 2023 17:42:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1688604129; x=1691196129; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=vM158l3+PNPp9CEYgPEEXHtkWB8/cJlIeo0+Xxo+5t0=; b=QJSw0ExZqdKtQWWF7qEp9R91R7gwwPng1wSkJvbTbn1VtdPOBEM3s8yvxk7Enu/rQ3 oI8/YP7rxj827HxbQkJSzTCl6kYxRkPT6iLUpXtl7xstNodAxUgpKCSRQLXNiZGCEpa6 eA5gw/Ltlz+eJ8aAl0Ek1FU0RnDMFW9qtYXdDBchZ586HTSAnTdrVUoiia00xP0u3aTu GHr/YBm+rIfeKmWMoKR+Gb7/Jv1+0NWt/oLwCm2qlQirqlMDO61cbCkvfpIbu5a1ji1I kGOSTLDoMrRBBtCNPGcM3bxzT2Oc/dfBEt9LqpX82W+DlaQaewbzgpu5ze5pNCL21ngF 40wg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688604129; x=1691196129; 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=vM158l3+PNPp9CEYgPEEXHtkWB8/cJlIeo0+Xxo+5t0=; b=a2jzx1xjFIl1Bz5HRR10R0IyEjd+eB0HFHqnKgWSXjkYh91tIVbIU/sdb3O6uqdvCR fxVGjPJ61GcFWKQh1FN57jdDr66Glgj/Hm0yl4IhtWhr97T9PeYiRXVpY0T069IAtkBq pNaBEAPhh2IibdNHieKAyQ5m4r1iOqPkostA3Ukpyy40zHC0qT6J51zcq6TQQ63oGGSn gXcMym4tyPXszzK7LcSAVUsEBSFWuDVH/k06vkHJ/aTy6DMcjIba3KtuNdXXYvlt84Tu y+LhcKq10FN+NjwK3D0o3HEzmCn84nmGVMZF/+N5RKk5cEjoKPgvzbZw9ycKgwP4kT+u gCUg== X-Gm-Message-State: ABy/qLYV3zJQyGo/55+PUT8NzmXlLVh83upxQ4bE5zeTrE79HoiqU5Zu zOc9mkmcZCwZH1AbRyHckkgGsyQYp3RqdGXNEr3n3pJiJlMoiKWz X-Google-Smtp-Source: APBJJlEqTPo4TPDmhr8e0T5i8m1PXiOxXcbQRn/572fjRMfEguHmluW4mSeSVz7vw6LmZH5d8BilCGc0wz96MPqzKQE= X-Received: by 2002:a05:6512:b99:b0:4f8:68a3:38d5 with SMTP id b25-20020a0565120b9900b004f868a338d5mr405359lfv.66.1688604128743; Wed, 05 Jul 2023 17:42:08 -0700 (PDT) MIME-Version: 1.0 References: <20230705183601.4998-1-jamrial@gmail.com> In-Reply-To: <20230705183601.4998-1-jamrial@gmail.com> From: Nuo Mi Date: Thu, 6 Jul 2023 08:41:57 +0800 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v4] avcodec/cbs_h266: add support for Adaptation parameter set NALU type 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: T24gVGh1LCBKdWwgNiwgMjAyMyBhdCAyOjM24oCvQU0gSmFtZXMgQWxtZXIgPGphbXJpYWxAZ21h aWwuY29tPiB3cm90ZToKCj4gU2lnbmVkLW9mZi1ieTogSmFtZXMgQWxtZXIgPGphbXJpYWxAZ21h aWwuY29tPgo+IC0tLQo+IHYzIHdhcyBtaXN0YWtlbmx5IHNlbnQgd2l0aG91dCB0aGUgYW1lbmRl ZCBjaGFuZ2VzLCBzbyBpdCdzIHRoZQo+IHNhbWUgYXMgdjIuCj4KPiAgbGliYXZjb2RlYy9jYnNf aDI2NDUuYyAgICAgICAgICAgICAgICB8ICAyMSArKysKPiAgbGliYXZjb2RlYy9jYnNfaDI2Ni5o ICAgICAgICAgICAgICAgICB8ICA0NiArKysrKwo+ICBsaWJhdmNvZGVjL2Nic19oMjY2X3N5bnRh eF90ZW1wbGF0ZS5jIHwgMjMxICsrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGxpYmF2Y29k ZWMvdnZjLmggICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKysKPiAgNCBmaWxlcyBjaGFuZ2Vk LCAzMDggaW5zZXJ0aW9ucygrKQo+Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2JzX2gyNjQ1 LmMgYi9saWJhdmNvZGVjL2Nic19oMjY0NS5jCj4gaW5kZXggOTVkYTU5NzQyNy4uMzRjNWQxZDM3 MiAxMDA2NDQKPiAtLS0gYS9saWJhdmNvZGVjL2Nic19oMjY0NS5jCj4gKysrIGIvbGliYXZjb2Rl Yy9jYnNfaDI2NDUuYwo+IEBAIC0xMTE2LDYgKzExMTYsMTYgQEAgc3RhdGljIGludAo+IGNic19o MjY2X3JlYWRfbmFsX3VuaXQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsCj4gICAgICAgICAg fQo+ICAgICAgICAgIGJyZWFrOwo+Cj4gKyAgICBjYXNlIFZWQ19QUkVGSVhfQVBTX05VVDoKPiAr ICAgIGNhc2UgVlZDX1NVRkZJWF9BUFNfTlVUOgo+ICsgICAgICAgIHsKPiArICAgICAgICAgICAg ZXJyID0gY2JzX2gyNjZfcmVhZF9hcHMoY3R4LCAmZ2JjLCB1bml0LT5jb250ZW50LAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0LT50eXBlID09IFZWQ19QUkVGSVhf QVBTX05VVCk7Cj4gKwo+ICsgICAgICAgICAgICBpZiAoZXJyIDwgMCkKPiArICAgICAgICAgICAg ICAgIHJldHVybiBlcnI7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGJyZWFrOwo+ICAgICAgY2Fz ZSBWVkNfUEhfTlVUOgo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgSDI2NlJhd1BIICpwaCA9 IHVuaXQtPmNvbnRlbnQ7Cj4gQEAgLTE2NjgsNiArMTY3OCwxNSBAQCBzdGF0aWMgaW50Cj4gY2Jz X2gyNjZfd3JpdGVfbmFsX3VuaXQoQ29kZWRCaXRzdHJlYW1Db250ZXh0ICpjdHgsCj4gICAgICAg ICAgfQo+ICAgICAgICAgIGJyZWFrOwo+Cj4gKyAgICBjYXNlIFZWQ19QUkVGSVhfQVBTX05VVDoK PiArICAgIGNhc2UgVlZDX1NVRkZJWF9BUFNfTlVUOgo+ICsgICAgICAgIHsKPiArICAgICAgICAg ICAgZXJyID0gY2JzX2gyNjZfd3JpdGVfYXBzKGN0eCwgcGJjLCB1bml0LT5jb250ZW50LAo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdC0+dHlwZSA9PSBWVkNfUFJF RklYX0FQU19OVVQpOwo+ICsgICAgICAgICAgICBpZiAoZXJyIDwgMCkKPiArICAgICAgICAgICAg ICAgIHJldHVybiBlcnI7Cj4gKyAgICAgICAgfQo+ICsgICAgICAgIGJyZWFrOwo+ICAgICAgY2Fz ZSBWVkNfUEhfTlVUOgo+ICAgICAgICAgIHsKPiAgICAgICAgICAgICAgSDI2NlJhd1BIICpwaCA9 IHVuaXQtPmNvbnRlbnQ7Cj4gQEAgLTIwMDQsNiArMjAyMyw4IEBAIHN0YXRpYyBjb25zdCBDb2Rl ZEJpdHN0cmVhbVVuaXRUeXBlRGVzY3JpcHRvcgo+IGNic19oMjY2X3VuaXRfdHlwZXNbXSA9IHsK PiAgICAgIENCU19VTklUX1RZUEVfSU5URVJOQUxfUkVGKFZWQ19WUFNfTlVULCBIMjY2UmF3VlBT LAo+IGV4dGVuc2lvbl9kYXRhLmRhdGEpLAo+ICAgICAgQ0JTX1VOSVRfVFlQRV9JTlRFUk5BTF9S RUYoVlZDX1NQU19OVVQsIEgyNjZSYXdTUFMsCj4gZXh0ZW5zaW9uX2RhdGEuZGF0YSksCj4gICAg ICBDQlNfVU5JVF9UWVBFX0lOVEVSTkFMX1JFRihWVkNfUFBTX05VVCwgSDI2NlJhd1BQUywKPiBl eHRlbnNpb25fZGF0YS5kYXRhKSwKPiArICAgIENCU19VTklUX1RZUEVfSU5URVJOQUxfUkVGKFZW Q19QUkVGSVhfQVBTX05VVCwgSDI2NlJhd0FQUywKPiBleHRlbnNpb25fZGF0YS5kYXRhKSwKPiAr ICAgIENCU19VTklUX1RZUEVfSU5URVJOQUxfUkVGKFZWQ19TVUZGSVhfQVBTX05VVCwgSDI2NlJh d0FQUywKPiBleHRlbnNpb25fZGF0YS5kYXRhKSwKPgo+ICAgICAgQ0JTX1VOSVRfVFlQRV9QT0Qo VlZDX1BIX05VVCAsIEgyNjZSYXdQSCksCj4gICAgICBDQlNfVU5JVF9UWVBFX1BPRChWVkNfQVVE X05VVCwgSDI2NlJhd0FVRCksCj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2JzX2gyNjYuaCBi L2xpYmF2Y29kZWMvY2JzX2gyNjYuaAo+IGluZGV4IDYzYWYzYmFjZjAuLjA4Y2FlNjgwMzYgMTAw NjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy9jYnNfaDI2Ni5oCj4gKysrIGIvbGliYXZjb2RlYy9jYnNf aDI2Ni5oCj4gQEAgLTU3OCw2ICs1NzgsNTIgQEAgdHlwZWRlZiBzdHJ1Y3QgSDI2NlJhd1BQUyB7 Cj4gICAgICB1aW50MTZfdCByb3dfaGVpZ2h0X3ZhbFtWVkNfTUFYX1RJTEVfUk9XU107Cj4gIH0g SDI2NlJhd1BQUzsKPgo+ICt0eXBlZGVmIHN0cnVjdCBIMjY2UmF3QVBTIHsKPiArICAgIEgyNjZS YXdOQUxVbml0SGVhZGVyIG5hbF91bml0X2hlYWRlcjsKPiArICAgIHVpbnQ4X3QgYXBzX3BhcmFt c190eXBlOwo+ICsgICAgdWludDhfdCBhcHNfYWRhcHRhdGlvbl9wYXJhbWV0ZXJfc2V0X2lkOwo+ ICsgICAgdWludDhfdCBhcHNfY2hyb21hX3ByZXNlbnRfZmxhZzsKPiArCj4gKyAgICB1aW50OF90 IGFsZl9sdW1hX2ZpbHRlcl9zaWduYWxfZmxhZzsKPiArICAgIHVpbnQ4X3QgYWxmX2Nocm9tYV9m aWx0ZXJfc2lnbmFsX2ZsYWc7Cj4gKyAgICB1aW50OF90IGFsZl9jY19jYl9maWx0ZXJfc2lnbmFs X2ZsYWc7Cj4gKyAgICB1aW50OF90IGFsZl9jY19jcl9maWx0ZXJfc2lnbmFsX2ZsYWc7Cj4gKyAg ICB1aW50OF90IGFsZl9sdW1hX2NsaXBfZmxhZzsKPiArICAgIHVpbnQ4X3QgYWxmX2x1bWFfbnVt X2ZpbHRlcnNfc2lnbmFsbGVkX21pbnVzMTsKPiArICAgIHVpbnQ4X3QgYWxmX2x1bWFfY29lZmZf ZGVsdGFfaWR4W1ZWQ19OVU1fQUxGX0ZJTFRFUlNdOwo+ICsgICAgdWludDhfdCBhbGZfbHVtYV9j b2VmZl9hYnNbVlZDX05VTV9BTEZfRklMVEVSU11bMTJdOwo+ICsgICAgdWludDhfdCBhbGZfbHVt YV9jb2VmZl9zaWduW1ZWQ19OVU1fQUxGX0ZJTFRFUlNdWzEyXTsKPiArICAgIHVpbnQ4X3QgYWxm X2x1bWFfY2xpcF9pZHhbVlZDX05VTV9BTEZfRklMVEVSU11bMTJdOwo+ICsgICAgdWludDhfdCBh bGZfY2hyb21hX2NsaXBfZmxhZzsKPiArICAgIHVpbnQ4X3QgYWxmX2Nocm9tYV9udW1fYWx0X2Zp bHRlcnNfbWludXMxOwo+ICsgICAgdWludDhfdCBhbGZfY2hyb21hX2NvZWZmX2Fic1s4XVs2XTsK PiArICAgIHVpbnQ4X3QgYWxmX2Nocm9tYV9jb2VmZl9zaWduWzhdWzZdOwo+ICsgICAgdWludDhf dCBhbGZfY2hyb21hX2NsaXBfaWR4WzhdWzZdOwo+ICsgICAgdWludDhfdCBhbGZfY2NfY2JfZmls dGVyc19zaWduYWxsZWRfbWludXMxOwo+ICsgICAgdWludDhfdCBhbGZfY2NfY2JfbWFwcGVkX2Nv ZWZmX2Fic1s0XVs3XTsKPiArICAgIHVpbnQ4X3QgYWxmX2NjX2NiX2NvZWZmX3NpZ25bNF1bN107 Cj4gKyAgICB1aW50OF90IGFsZl9jY19jcl9maWx0ZXJzX3NpZ25hbGxlZF9taW51czE7Cj4gKyAg ICB1aW50OF90IGFsZl9jY19jcl9tYXBwZWRfY29lZmZfYWJzWzRdWzddOwo+ICsgICAgdWludDhf dCBhbGZfY2NfY3JfY29lZmZfc2lnbls0XVs3XTsKPiArCj4gKyAgICB1aW50OF90IHNjYWxpbmdf bGlzdF9jb3B5X21vZGVfZmxhZ1syOF07Cj4gKyAgICB1aW50OF90IHNjYWxpbmdfbGlzdF9wcmVk X21vZGVfZmxhZ1syOF07Cj4gKyAgICB1aW50OF90IHNjYWxpbmdfbGlzdF9wcmVkX2lkX2RlbHRh WzI4XTsKPiArICAgIGludDhfdCAgc2NhbGluZ19saXN0X2RjX2NvZWZbMTRdOwo+ICsgICAgaW50 OF90ICBzY2FsaW5nX2xpc3RfZGVsdGFfY29lZlsyOF1bNjRdOwo+ICsKPiArICAgIHVpbnQ4X3Qg bG1jc19taW5fYmluX2lkeDsKPiArICAgIHVpbnQ4X3QgbG1jc19kZWx0YV9tYXhfYmluX2lkeDsK PiArICAgIHVpbnQ4X3QgbG1jc19kZWx0YV9jd19wcmVjX21pbnVzMTsKPiArICAgIHVpbnQxNl90 IGxtY3NfZGVsdGFfYWJzX2N3WzE2XTsKPiArICAgIHVpbnQ4X3QgbG1jc19kZWx0YV9zaWduX2N3 X2ZsYWdbMTZdOwo+ICsgICAgdWludDhfdCBsbWNzX2RlbHRhX2Fic19jcnM7Cj4gKyAgICB1aW50 OF90IGxtY3NfZGVsdGFfc2lnbl9jcnNfZmxhZzsKPiArCj4gKyAgICB1aW50OF90IGFwc19leHRl bnNpb25fZmxhZzsKPiArICAgIEgyNjZSYXdFeHRlbnNpb25EYXRhIGV4dGVuc2lvbl9kYXRhOwo+ ICt9IEgyNjZSYXdBUFM7Cj4gKwo+ICB0eXBlZGVmIHN0cnVjdCBIMjY2UmF3QVVEIHsKPiAgICAg IEgyNjZSYXdOQUxVbml0SGVhZGVyIG5hbF91bml0X2hlYWRlcjsKPiAgICAgIHVpbnQ4X3QgYXVk X2lyYXBfb3JfZ2RyX2ZsYWc7Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvY2JzX2gyNjZfc3lu dGF4X3RlbXBsYXRlLmMKPiBiL2xpYmF2Y29kZWMvY2JzX2gyNjZfc3ludGF4X3RlbXBsYXRlLmMK PiBpbmRleCBlMjI0NmNmYzFiLi5kOGFjNDkzZWRjIDEwMDY0NAo+IC0tLSBhL2xpYmF2Y29kZWMv Y2JzX2gyNjZfc3ludGF4X3RlbXBsYXRlLmMKPiArKysgYi9saWJhdmNvZGVjL2Nic19oMjY2X3N5 bnRheF90ZW1wbGF0ZS5jCj4gQEAgLTIxODUsNiArMjE4NSwyMzcgQEAgc3RhdGljIGludCBGVU5D KHBwcykgKENvZGVkQml0c3RyZWFtQ29udGV4dCAqY3R4LAo+IFJXQ29udGV4dCAqcncsCj4gICAg ICByZXR1cm4gMDsKPiAgfQo+Cj4gK3N0YXRpYyBpbnQgRlVOQyhhbGZfZGF0YSkoQ29kZWRCaXRz dHJlYW1Db250ZXh0ICpjdHgsIFJXQ29udGV4dCAqcncsCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgSDI2NlJhd0FQUyAqY3VycmVudCkKPiArewo+ICsgICAgaW50IGVyciwgaiwgazsKPiAr Cj4gKyAgICBmbGFnKGFsZl9sdW1hX2ZpbHRlcl9zaWduYWxfZmxhZyk7Cj4gKwo+ICsgICAgaWYg KGN1cnJlbnQtPmFwc19jaHJvbWFfcHJlc2VudF9mbGFnKSB7Cj4gKyAgICAgICAgZmxhZyhhbGZf Y2hyb21hX2ZpbHRlcl9zaWduYWxfZmxhZyk7Cj4gKyAgICAgICAgZmxhZyhhbGZfY2NfY2JfZmls dGVyX3NpZ25hbF9mbGFnKTsKPiArICAgICAgICBmbGFnKGFsZl9jY19jcl9maWx0ZXJfc2lnbmFs X2ZsYWcpOwo+ICsgICAgfSBlbHNlIHsKPiArICAgICAgICBpbmZlcihhbGZfY2hyb21hX2ZpbHRl cl9zaWduYWxfZmxhZywgMCk7Cj4gKyAgICAgICAgaW5mZXIoYWxmX2NjX2NiX2ZpbHRlcl9zaWdu YWxfZmxhZywgMCk7Cj4gKyAgICAgICAgaW5mZXIoYWxmX2NjX2NyX2ZpbHRlcl9zaWduYWxfZmxh ZywgMCk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKGN1cnJlbnQtPmFsZl9sdW1hX2ZpbHRlcl9z aWduYWxfZmxhZykgewo+ICsgICAgICAgIGZsYWcoYWxmX2x1bWFfY2xpcF9mbGFnKTsKPiArICAg ICAgICB1ZShhbGZfbHVtYV9udW1fZmlsdGVyc19zaWduYWxsZWRfbWludXMxLCAwLCBWVkNfTlVN X0FMRl9GSUxURVJTCj4gLSAxKTsKPiArICAgICAgICBpZiAoY3VycmVudC0+YWxmX2x1bWFfbnVt X2ZpbHRlcnNfc2lnbmFsbGVkX21pbnVzMSA+IDApIHsKPiArICAgICAgICAgICAgdW5zaWduZWQg aW50IGJpdHMgPQo+IGF2X2NlaWxfbG9nMihjdXJyZW50LT5hbGZfbHVtYV9udW1fZmlsdGVyc19z aWduYWxsZWRfbWludXMxICsgMSk7Cj4gKyAgICAgICAgICAgIGZvciAoaW50IGZpbHRfaWR4ID0g MDsgZmlsdF9pZHggPCBWVkNfTlVNX0FMRl9GSUxURVJTOwo+IGZpbHRfaWR4KyspCj4gKyAgICAg ICAgICAgICAgICB1cyhiaXRzLCBhbGZfbHVtYV9jb2VmZl9kZWx0YV9pZHhbZmlsdF9pZHhdLAo+ ICsgICAgICAgICAgICAgICAgICAgMCwgY3VycmVudC0+YWxmX2x1bWFfbnVtX2ZpbHRlcnNfc2ln bmFsbGVkX21pbnVzMSwKPiArICAgICAgICAgICAgICAgICAgIDEsIGZpbHRfaWR4KTsKPiArICAg ICAgICB9Cj4gKyAgICAgICAgZm9yIChpbnQgc2ZfaWR4ID0gMDsgc2ZfaWR4IDw9Cj4gY3VycmVu dC0+YWxmX2x1bWFfbnVtX2ZpbHRlcnNfc2lnbmFsbGVkX21pbnVzMTsgc2ZfaWR4KyspCj4gKyAg ICAgICAgICAgIGZvciAoaiA9IDA7IGogPCAxMjsgaisrKSB7Cj4gKyAgICAgICAgICAgICAgICB1 ZXMoYWxmX2x1bWFfY29lZmZfYWJzW3NmX2lkeF1bal0sIDAsIDEyOCwgMiwgc2ZfaWR4LCBqKTsK PiArICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LT5hbGZfbHVtYV9jb2VmZl9hYnNbc2ZfaWR4 XVtqXSkKPiArICAgICAgICAgICAgICAgICAgICB1YnMoMSwgYWxmX2x1bWFfY29lZmZfc2lnbltz Zl9pZHhdW2pdLCAyLCBzZl9pZHgsIGopOwo+ICsgICAgICAgICAgICAgICAgZWxzZQo+ICsgICAg ICAgICAgICAgICAgICAgIGluZmVyKGFsZl9sdW1hX2NvZWZmX3NpZ25bc2ZfaWR4XVtqXSwgMCk7 Cj4gKyAgICAgICAgICAgIH0KPiArICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgaW5mZXIoYWxmX2x1 bWFfY2xpcF9mbGFnLCAwKTsKPiArICAgICAgICBpbmZlcihhbGZfbHVtYV9udW1fZmlsdGVyc19z aWduYWxsZWRfbWludXMxLCAwKTsKPiArICAgIH0KPiArICAgIGZvciAoaW50IHNmX2lkeCA9IDA7 IHNmX2lkeCA8PQo+IGN1cnJlbnQtPmFsZl9sdW1hX251bV9maWx0ZXJzX3NpZ25hbGxlZF9taW51 czE7IHNmX2lkeCsrKSB7Cj4gKyAgICAgICAgZm9yIChqID0gMDsgaiA8IDEyOyBqKyspIHsKPiAr ICAgICAgICAgICAgaWYgKGN1cnJlbnQtPmFsZl9sdW1hX2NsaXBfZmxhZykKPiArICAgICAgICAg ICAgICAgIHVicygyLCBhbGZfbHVtYV9jbGlwX2lkeFtzZl9pZHhdW2pdLCAyLCBzZl9pZHgsIGop Owo+ICsgICAgICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICBpbmZlcihhbGZfbHVtYV9j bGlwX2lkeFtzZl9pZHhdW2pdLCAwKTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAg aWYgKGN1cnJlbnQtPmFsZl9jaHJvbWFfZmlsdGVyX3NpZ25hbF9mbGFnKSB7Cj4gKyAgICAgICAg ZmxhZyhhbGZfY2hyb21hX2NsaXBfZmxhZyk7Cj4gKyAgICAgICAgdWUoYWxmX2Nocm9tYV9udW1f YWx0X2ZpbHRlcnNfbWludXMxLCAwLCA3KTsKPiArICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgaW5m ZXIoYWxmX2Nocm9tYV9jbGlwX2ZsYWcsIDApOwo+ICsgICAgICAgIGluZmVyKGFsZl9jaHJvbWFf bnVtX2FsdF9maWx0ZXJzX21pbnVzMSwgMCk7Cj4gKyAgICB9Cj4gKyAgICBmb3IgKGludCBhbHRf aWR4ID0gMDsgYWx0X2lkeCA8PQo+IGN1cnJlbnQtPmFsZl9jaHJvbWFfbnVtX2FsdF9maWx0ZXJz X21pbnVzMTsgYWx0X2lkeCsrKSB7Cj4gKyAgICAgICAgZm9yIChqID0gMDsgaiA8IDY7IGorKykg ewo+ICsgICAgICAgICAgICBpZiAoY3VycmVudC0+YWxmX2Nocm9tYV9maWx0ZXJfc2lnbmFsX2Zs YWcpCj4gKyAgICAgICAgICAgICAgICB1ZXMoYWxmX2Nocm9tYV9jb2VmZl9hYnNbYWx0X2lkeF1b al0sIDAsIDEyOCwgMiwgYWx0X2lkeCwKPiBqKTsKPiArICAgICAgICAgICAgZWxzZQo+ICsgICAg ICAgICAgICAgICAgaW5mZXIoYWxmX2Nocm9tYV9jb2VmZl9hYnNbYWx0X2lkeF1bal0sIDApOwo+ ICsgICAgICAgICAgICBpZiAoY3VycmVudC0+YWxmX2Nocm9tYV9jb2VmZl9hYnNbYWx0X2lkeF1b al0gPiAwKQo+ICsgICAgICAgICAgICAgICAgdWJzKDEsIGFsZl9jaHJvbWFfY29lZmZfc2lnblth bHRfaWR4XVtqXSwgMiwgYWx0X2lkeCwgaik7Cj4gKyAgICAgICAgICAgIGVsc2UKPiArICAgICAg ICAgICAgICAgIGluZmVyKGFsZl9jaHJvbWFfY29lZmZfc2lnblthbHRfaWR4XVtqXSwgMCk7Cj4g KyAgICAgICAgfQo+ICsgICAgICAgIGZvciAoaiA9IDA7IGogPCA2OyBqKyspIHsKPiArICAgICAg ICAgICAgaWYgKGN1cnJlbnQtPmFsZl9jaHJvbWFfY2xpcF9mbGFnKQo+ICsgICAgICAgICAgICAg ICAgdWJzKDIsIGFsZl9jaHJvbWFfY2xpcF9pZHhbYWx0X2lkeF1bal0sIDIsIGFsdF9pZHgsIGop Owo+ICsgICAgICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICBpbmZlcihhbGZfY2hyb21h X2NsaXBfaWR4W2FsdF9pZHhdW2pdLCAwKTsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsg ICAgaWYgKGN1cnJlbnQtPmFsZl9jY19jYl9maWx0ZXJfc2lnbmFsX2ZsYWcpCj4gKyAgICAgICAg dWUoYWxmX2NjX2NiX2ZpbHRlcnNfc2lnbmFsbGVkX21pbnVzMSwgMCwgMyk7Cj4gKyAgICBlbHNl Cj4gKyAgICAgICAgaW5mZXIoYWxmX2NjX2NiX2ZpbHRlcnNfc2lnbmFsbGVkX21pbnVzMSwgMCk7 Cj4KTm90IHJpZ2h0LCBpdCB3aWxsIG92ZXJyZWFkIG9uZSBmaWx0ZXIgc2V0IGV2ZW4KYWxmX2Nj X2NiX2ZpbHRlcl9zaWduYWxfZmxhZyBpcyBmYWxzZS4KCj4gKyAgICBmb3IgKGsgPSAwOyBrIDw9 IGN1cnJlbnQtPmFsZl9jY19jYl9maWx0ZXJzX3NpZ25hbGxlZF9taW51czE7IGsrKykgewo+ICsg ICAgICAgIGZvciAoaiA9IDA7IGogPCA3OyBqKyspIHsKPiArICAgICAgICAgICAgaWYgKGN1cnJl bnQtPmFsZl9jY19jYl9maWx0ZXJfc2lnbmFsX2ZsYWcpCj4gKyAgICAgICAgICAgICAgICB1YnMo MywgYWxmX2NjX2NiX21hcHBlZF9jb2VmZl9hYnNba11bal0sIDIsIGssIGopOwo+ICsgICAgICAg ICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICBpbmZlcihhbGZfY2NfY2JfbWFwcGVkX2NvZWZm X2Fic1trXVtqXSwgMCk7Cj4gKyAgICAgICAgICAgIGlmIChjdXJyZW50LT5hbGZfY2NfY2JfbWFw cGVkX2NvZWZmX2Fic1trXVtqXSkKPiArICAgICAgICAgICAgICAgIHVicygxLCBhbGZfY2NfY2Jf Y29lZmZfc2lnbltrXVtqXSwgMiwgaywgaik7Cj4gKyAgICAgICAgICAgIGVsc2UKPiArICAgICAg ICAgICAgICAgIGluZmVyKGFsZl9jY19jYl9jb2VmZl9zaWduW2tdW2pdLCAwKTsKPiArICAgICAg ICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgaWYgKGN1cnJlbnQtPmFsZl9jY19jcl9maWx0ZXJfc2ln bmFsX2ZsYWcpCj4gKyAgICAgICAgdWUoYWxmX2NjX2NyX2ZpbHRlcnNfc2lnbmFsbGVkX21pbnVz MSwgMCwgMyk7Cj4gKyAgICBlbHNlCj4gKyAgICAgICAgaW5mZXIoYWxmX2NjX2NyX2ZpbHRlcnNf c2lnbmFsbGVkX21pbnVzMSwgMCk7Cj4KTm90IHJpZ2h0LAoKPiArICAgIGZvciAoayA9IDA7IGsg PCBjdXJyZW50LT5hbGZfY2NfY3JfZmlsdGVyc19zaWduYWxsZWRfbWludXMxICsgMTsgaysrKQo+ IHsKPiArICAgICAgICBmb3IgKGogPSAwOyBqIDwgNzsgaisrKSB7Cj4gKyAgICAgICAgICAgIGlm IChjdXJyZW50LT5hbGZfY2NfY3JfZmlsdGVyX3NpZ25hbF9mbGFnKQo+ICsgICAgICAgICAgICAg ICAgdWJzKDMsIGFsZl9jY19jcl9tYXBwZWRfY29lZmZfYWJzW2tdW2pdLCAyLCBrLCBqKTsKPiAr ICAgICAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICAgICAgaW5mZXIoYWxmX2NjX2NyX21hcHBl ZF9jb2VmZl9hYnNba11bal0sIDApOwo+ICsgICAgICAgICAgICBpZiAoY3VycmVudC0+YWxmX2Nj X2NyX21hcHBlZF9jb2VmZl9hYnNba11bal0pCj4gKyAgICAgICAgICAgICAgICB1YnMoMSwgYWxm X2NjX2NyX2NvZWZmX3NpZ25ba11bal0sIDIsIGssIGopOwo+ICsgICAgICAgICAgICBlbHNlCj4g KyAgICAgICAgICAgICAgICBpbmZlcihhbGZfY2NfY3JfY29lZmZfc2lnbltrXVtqXSwgMCk7Cj4g KyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IEZVTkMobG1jc19kYXRhKShDb2RlZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUldDb250 ZXh0ICpydywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgSDI2NlJhd0FQUyAqY3VycmVu dCkKPiArewo+ICsgICAgaW50IGVyciwgaSwgbG1jc19tYXhfYmluX2lkeDsKPiArCj4gKyAgICB1 ZShsbWNzX21pbl9iaW5faWR4LCAwLCAxNSk7Cj4gKyAgICB1ZShsbWNzX2RlbHRhX21heF9iaW5f aWR4LCAwLCAxNSk7Cj4gKyAgICB1ZShsbWNzX2RlbHRhX2N3X3ByZWNfbWludXMxLCAwLCAxNCk7 Cj4gKwo+ICsgICAgbG1jc19tYXhfYmluX2lkeCA9IDE1IC0gY3VycmVudC0+bG1jc19kZWx0YV9t YXhfYmluX2lkeDsKPiArCj4gKyAgICBpZiAobG1jc19tYXhfYmluX2lkeCA8IGN1cnJlbnQtPmxt Y3NfbWluX2Jpbl9pZHgpCj4gKyAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7Cj4g Kwo+ICsgICAgZm9yIChpID0gY3VycmVudC0+bG1jc19taW5fYmluX2lkeDsgaSA8PSBsbWNzX21h eF9iaW5faWR4OyBpKyspIHsKPiArICAgICAgICB1YnMoY3VycmVudC0+bG1jc19kZWx0YV9jd19w cmVjX21pbnVzMSArIDEsIGxtY3NfZGVsdGFfYWJzX2N3W2ldLAo+IDEsIGkpOwo+ICsgICAgICAg IGlmIChjdXJyZW50LT5sbWNzX2RlbHRhX2Fic19jd1tpXSA+IDApCj4gKyAgICAgICAgICAgIGZs YWdzKGxtY3NfZGVsdGFfc2lnbl9jd19mbGFnW2ldLCAxLCBpKTsKPiArICAgICAgICBlbHNlCj4g KyAgICAgICAgICAgIGluZmVyKGxtY3NfZGVsdGFfc2lnbl9jd19mbGFnW2ldLCAwKTsKPiArICAg IH0KPiArCj4gKyAgICBpZiAoY3VycmVudC0+YXBzX2Nocm9tYV9wcmVzZW50X2ZsYWcpIHsKPiAr ICAgICAgICB1YigzLCBsbWNzX2RlbHRhX2Fic19jcnMpOwo+ICsgICAgICAgIGlmIChjdXJyZW50 LT5sbWNzX2RlbHRhX2Fic19jcnMgPiAwKQo+ICsgICAgICAgICAgICBmbGFnKGxtY3NfZGVsdGFf c2lnbl9jcnNfZmxhZyk7Cj4gKyAgICAgICAgZWxzZQo+ICsgICAgICAgICAgICBpbmZlcihsbWNz X2RlbHRhX3NpZ25fY3JzX2ZsYWcsIDApOwo+ICsgICAgfSBlbHNlIHsKPiArICAgICAgICBpbmZl cihsbWNzX2RlbHRhX2Fic19jcnMsIDApOwo+ICsgICAgICAgIGluZmVyKGxtY3NfZGVsdGFfc2ln bl9jcnNfZmxhZywgMCk7Cj4gKyAgICB9Cj4gKwo+ICsgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgRlVOQyhzY2FsaW5nX2xpc3RfZGF0YSkoQ29kZWRCaXRzdHJlYW1Db250ZXh0 ICpjdHgsIFJXQ29udGV4dAo+ICpydywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBIMjY2UmF3QVBTICpjdXJyZW50KQo+ICt7Cj4gKyAgICAvLyA3LjQuMy40LCBkZXJpdmlu ZyBEaWFnU2Nhbk9yZGVyCj4gKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBkaWFnX3NjYW5fb3Jk ZXJbNjRdWzJdID0gewo+ICsgICAgICAgIHsgMCwgIDAsIH0sIHsgMCwgIDEsIH0sIHsgMSwgIDAs IH0sIHsgMCwgIDIsIH0sIHsgMSwgIDEsIH0sIHsgMiwKPiAwLCB9LCB7IDAsICAzLCB9LCB7IDEs ICAyLCB9LAo+ICsgICAgICAgIHsgMiwgIDEsIH0sIHsgMywgIDAsIH0sIHsgMCwgIDQsIH0sIHsg MSwgIDMsIH0sIHsgMiwgIDIsIH0sIHsgMywKPiAxLCB9LCB7IDQsICAwLCB9LCB7IDAsICA1LCB9 LAo+ICsgICAgICAgIHsgMSwgIDQsIH0sIHsgMiwgIDMsIH0sIHsgMywgIDIsIH0sIHsgNCwgIDEs IH0sIHsgNSwgIDAsIH0sIHsgMCwKPiA2LCB9LCB7IDEsICA1LCB9LCB7IDIsICA0LCB9LAo+ICsg ICAgICAgIHsgMywgIDMsIH0sIHsgNCwgIDIsIH0sIHsgNSwgIDEsIH0sIHsgNiwgIDAsIH0sIHsg MCwgIDcsIH0sIHsgMSwKPiA2LCB9LCB7IDIsICA1LCB9LCB7IDMsICA0LCB9LAo+ICsgICAgICAg IHsgNCwgIDMsIH0sIHsgNSwgIDIsIH0sIHsgNiwgIDEsIH0sIHsgNywgIDAsIH0sIHsgMSwgIDcs IH0sIHsgMiwKPiA2LCB9LCB7IDMsICA1LCB9LCB7IDQsICA0LCB9LAo+ICsgICAgICAgIHsgNSwg IDMsIH0sIHsgNiwgIDIsIH0sIHsgNywgIDEsIH0sIHsgMiwgIDcsIH0sIHsgMywgIDYsIH0sIHsg NCwKPiA1LCB9LCB7IDUsICA0LCB9LCB7IDYsICAzLCB9LAo+ICsgICAgICAgIHsgNywgIDIsIH0s IHsgMywgIDcsIH0sIHsgNCwgIDYsIH0sIHsgNSwgIDUsIH0sIHsgNiwgIDQsIH0sIHsgNywKPiAz LCB9LCB7IDQsICA3LCB9LCB7IDUsICA2LCB9LAo+ICsgICAgICAgIHsgNiwgIDUsIH0sIHsgNywg IDQsIH0sIHsgNSwgIDcsIH0sIHsgNiwgIDYsIH0sIHsgNywgIDUsIH0sIHsgNiwKPiA3LCB9LCB7 IDcsICA2LCB9LCB7IDcsICA3LCB9LCB9Owo+ICsgICAgaW50IGVycjsKPiArCj4gKyAgICBmb3Ig KGludCBpZCA9IDA7IGlkIDwgMjg7IGlkICsrKSB7Cj4gKyAgICAgICAgaWYgKGN1cnJlbnQtPmFw c19jaHJvbWFfcHJlc2VudF9mbGFnIHx8IGlkICUgMyA9PSAyIHx8IGlkID09IDI3KSB7Cj4gKyAg ICAgICAgICAgIGZsYWdzKHNjYWxpbmdfbGlzdF9jb3B5X21vZGVfZmxhZ1tpZF0sIDEsIGlkKTsK PiArICAgICAgICAgICAgaWYgKCFjdXJyZW50LT5zY2FsaW5nX2xpc3RfY29weV9tb2RlX2ZsYWdb aWRdKQo+ICsgICAgICAgICAgICAgICAgZmxhZ3Moc2NhbGluZ19saXN0X3ByZWRfbW9kZV9mbGFn W2lkXSwgMSwgaWQpOwo+ICsgICAgICAgICAgICBlbHNlCj4gKyAgICAgICAgICAgICAgICBpbmZl cihzY2FsaW5nX2xpc3RfcHJlZF9tb2RlX2ZsYWdbaWRdLCAwKTsKPiArICAgICAgICAgICAgaWYg KChjdXJyZW50LT5zY2FsaW5nX2xpc3RfY29weV9tb2RlX2ZsYWdbaWRdIHx8Cj4gKyAgICAgICAg ICAgICAgICAgY3VycmVudC0+c2NhbGluZ19saXN0X3ByZWRfbW9kZV9mbGFnW2lkXSkgJiYKPiAr ICAgICAgICAgICAgICAgICBpZCAhPSAwICYmIGlkICE9IDIgJiYgaWQgIT0gOCkgewo+ICsgICAg ICAgICAgICAgICAgaW50IG1heF9pZF9kZWx0YSA9IChpZCA8IDIpID8gaWQgOiAoKGlkIDwgOCkg PyAoaWQgLSAyKSA6Cj4gKGlkIC0gOCkpOwo+ICsgICAgICAgICAgICAgICAgdWVzKHNjYWxpbmdf bGlzdF9wcmVkX2lkX2RlbHRhW2lkXSwgMCwgbWF4X2lkX2RlbHRhLCAxLAo+IGlkKTsKPiArICAg ICAgICAgICAgfQo+ICsgICAgICAgICAgICBpZiAoIWN1cnJlbnQtPnNjYWxpbmdfbGlzdF9jb3B5 X21vZGVfZmxhZ1tpZF0pIHsKPiArICAgICAgICAgICAgICAgIGludCBtYXRyaXhfc2l6ZSA9IGlk IDwgMiA/IDIgOiAoaWQgPCA4ID8gNCA6IDgpOwo+ICsgICAgICAgICAgICAgICAgaWYgKGlkID4g MTMpIHsKPiArICAgICAgICAgICAgICAgICAgICBpbnQgaWR4ID0gaWQgLSAxNDsKPiArICAgICAg ICAgICAgICAgICAgICBzZXMoc2NhbGluZ19saXN0X2RjX2NvZWZbaWR4XSwgLTEyOCwgMTI3LCAx LCBpZHgpOwo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgZm9yIChpbnQg aSA9IDA7IGkgPCBtYXRyaXhfc2l6ZSAqIG1hdHJpeF9zaXplOyBpKyspIHsKPiArICAgICAgICAg ICAgICAgICAgICBpbnQgeCA9IGRpYWdfc2Nhbl9vcmRlcltpXVswXTsKPiArICAgICAgICAgICAg ICAgICAgICBpbnQgeSA9IGRpYWdfc2Nhbl9vcmRlcltpXVsxXTsKPiArICAgICAgICAgICAgICAg ICAgICBpZiAoIShpZCA+IDI1ICYmIHggPj0gNCAmJiB5ID49IDQpKQo+ICsgICAgICAgICAgICAg ICAgICAgICAgICBzZXMoc2NhbGluZ19saXN0X2RlbHRhX2NvZWZbaWRdW2ldLCAtMTI4LCAxMjcs IDIsCj4gaWQsIGkpOwo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICB9IGVsc2Ug aWYgKGlkID4gMTMpIHsKPiArICAgICAgICAgICAgICAgIGludCBpZHggPSBpZCAtIDE0Owo+ICsg ICAgICAgICAgICAgICAgaW5mZXIoc2NhbGluZ19saXN0X2RjX2NvZWZbaWR4XSwgMCk7Cj4gKyAg ICAgICAgICAgIH0KPiArICAgICAgICB9IGVsc2Ugewo+ICsgICAgICAgICAgICBpbmZlcihzY2Fs aW5nX2xpc3RfY29weV9tb2RlX2ZsYWdbaWRdLCAxKTsKPiArICAgICAgICAgICAgaW5mZXIoc2Nh bGluZ19saXN0X3ByZWRfbW9kZV9mbGFnW2lkXSwgMCk7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ ICsKPiArICAgIHJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IEZVTkMoYXBzKShDb2Rl ZEJpdHN0cmVhbUNvbnRleHQgKmN0eCwgUldDb250ZXh0ICpydywKPiArICAgICAgICAgICAgICAg ICAgICAgSDI2NlJhd0FQUyAqY3VycmVudCwgaW50IHByZWZpeCkKPiArewo+ICsgICAgaW50IGVy cjsKPiArCj4gKyAgICBpZiAocHJlZml4KQo+ICsgICAgICAgIEhFQURFUigiUHJlZml4IEFkYXB0 YXRpb24gcGFyYW1ldGVyIHNldCIpOwo+ICsgICAgZWxzZQo+ICsgICAgICAgIEhFQURFUigiU3Vm Zml4IEFkYXB0YXRpb24gcGFyYW1ldGVyIHNldCIpOwo+ICsKPiArICAgIENIRUNLKEZVTkMobmFs X3VuaXRfaGVhZGVyKShjdHgsIHJ3LCAmY3VycmVudC0+bmFsX3VuaXRfaGVhZGVyLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeCA/IFZWQ19QUkVGSVhfQVBTX05VVAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFZWQ19TVUZGSVhfQVBT X05VVCkpOwo+ICsKPiArICAgIHViKDMsIGFwc19wYXJhbXNfdHlwZSk7Cj4gKyAgICB1Yig1LCBh cHNfYWRhcHRhdGlvbl9wYXJhbWV0ZXJfc2V0X2lkKTsKPiArICAgIGZsYWcoYXBzX2Nocm9tYV9w cmVzZW50X2ZsYWcpOwo+ICsgICAgaWYgKGN1cnJlbnQtPmFwc19wYXJhbXNfdHlwZSA9PSBWVkNf QVNQX1RZUEVfQUxGKQo+ICsgICAgICAgIENIRUNLKEZVTkMoYWxmX2RhdGEpKGN0eCwgcncsIGN1 cnJlbnQpKTsKPiArICAgIGVsc2UgaWYoY3VycmVudC0+YXBzX3BhcmFtc190eXBlID09IFZWQ19B U1BfVFlQRV9MTUNTKQo+ICsgICAgICAgIENIRUNLKEZVTkMobG1jc19kYXRhKShjdHgsIHJ3LCBj dXJyZW50KSk7Cj4gKyAgICBlbHNlIGlmIChjdXJyZW50LT5hcHNfcGFyYW1zX3R5cGUgPT0gVlZD X0FTUF9UWVBFX1NDQUxJTkcpCj4gKyAgICAgICAgQ0hFQ0soRlVOQyhzY2FsaW5nX2xpc3RfZGF0 YSkoY3R4LCBydywgY3VycmVudCkpOwo+ICsgICAgZmxhZyhhcHNfZXh0ZW5zaW9uX2ZsYWcpOwo+ ICsgICAgaWYgKGN1cnJlbnQtPmFwc19leHRlbnNpb25fZmxhZykKPiArICAgICAgICBDSEVDSyhG VU5DKGV4dGVuc2lvbl9kYXRhKSAoY3R4LCBydywgJmN1cnJlbnQtPmV4dGVuc2lvbl9kYXRhKSk7 Cj4gKyAgICBDSEVDSyhGVU5DKHJic3BfdHJhaWxpbmdfYml0cykgKGN0eCwgcncpKTsKPiArCj4g KyAgICByZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGludCBGVU5DKGF1ZCkgKENvZGVkQml0 c3RyZWFtQ29udGV4dCAqY3R4LCBSV0NvbnRleHQgKnJ3LAo+ICAgICAgICAgICAgICAgICAgICAg ICBIMjY2UmF3QVVEICpjdXJyZW50KQo+ICB7Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdnZj LmggYi9saWJhdmNvZGVjL3Z2Yy5oCj4gaW5kZXggOWZiYjRhOTUzYy4uN2QxNjVjZGI4NiAxMDA2 NDQKPiAtLS0gYS9saWJhdmNvZGVjL3Z2Yy5oCj4gKysrIGIvbGliYXZjb2RlYy92dmMuaAo+IEBA IC02Niw2ICs2NiwxMiBAQCBlbnVtIFZWQ1NsaWNlVHlwZSB7Cj4gICAgICBWVkNfU0xJQ0VfVFlQ RV9JID0gMiwKPiAgfTsKPgo+ICtlbnVtIFZWQ0FQU1R5cGUgewo+ICsgICAgVlZDX0FTUF9UWVBF X0FMRiAgICAgPSAwLAo+ICsgICAgVlZDX0FTUF9UWVBFX0xNQ1MgICAgPSAxLAo+ICsgICAgVlZD X0FTUF9UWVBFX1NDQUxJTkcgPSAyLAo+ICt9Owo+ICsKPiAgZW51bSB7Cj4gICAgICAvLzYuMiB3 ZSBjYW4gaGF2ZSAzIHNhbXBsZSBhcnJheXMKPiAgICAgIFZWQ19NQVhfU0FNUExFX0FSUkFZUyA9 IDMsCj4gQEAgLTk1LDYgKzEwMSwxMCBAQCBlbnVtIHsKPiAgICAgIC8vIDcuNC40LjE6IHB0bF9u dW1fc3ViX3Byb2ZpbGVzIGlzIHUoOCkKPiAgICAgIFZWQ19NQVhfU1VCX1BST0ZJTEVTID0gMjU2 LAo+Cj4gKyAgICAvLyA3LjQuMy4xODogVGhlIHZhcmlhYmxlIE51bUFsZkZpbHRlcnMgc3BlY2lm eWluZyB0aGUgbnVtYmVyIG9mCj4gZGlmZmVyZW50IGFkYXB0aXZlIGxvb3AKPiArICAgIC8vIGZp bHRlcnMgaXMgc2V0IGVxdWFsIHRvIDI1Lgo+ICsgICAgVlZDX05VTV9BTEZfRklMVEVSUyA9IDI1 LAo+ICsKPiAgICAgIC8vIEEuNC4yOiBhY2NvcmRpbmcgdG8gKDE1NzcpLCBNYXhEcGJTaXplIGlz IGJvdW5kZWQgYWJvdmUgYnkgMiAqCj4gbWF4RHBiUGljQnVmKDgpCj4gICAgICBWVkNfTUFYX0RQ Ql9TSVpFID0gMTYsCj4KPiAtLQo+IDIuNDEuMAo+Cj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZmZt cGVnLWRldmVsQGZmbXBlZy5vcmcKPiBodHRwczovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5m by9mZm1wZWctZGV2ZWwKPgo+IFRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBl bWFpbAo+IGZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1 YnNjcmliZSIuCj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KZmZtcGVnLWRldmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRw czovL2ZmbXBlZy5vcmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2Ny aWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1w ZWcub3JnIHdpdGggc3ViamVjdCAidW5zdWJzY3JpYmUiLgo=