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 8C08146D8A for ; Wed, 12 Jul 2023 00:20:46 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5A96C68C613; Wed, 12 Jul 2023 03:20:43 +0300 (EEST) Received: from mail-qt1-f179.google.com (mail-qt1-f179.google.com [209.85.160.179]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8261F68C1EC for ; Wed, 12 Jul 2023 03:20:36 +0300 (EEST) Received: by mail-qt1-f179.google.com with SMTP id d75a77b69052e-4036bd4fff1so74791cf.0 for ; Tue, 11 Jul 2023 17:20:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1689121235; x=1691713235; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=IZBWiuVmZh8oeo7JcNkFqXxteq3YhJMdpRtEkxpCMqc=; b=hWqaCVCuCYsTid1NBCz3PKwH/yZnjwEZ4mvcTxBHT3TAjPrqMa6r3oy5ZQGfsBJuff zoxfQQ4kMF7bZCCUefBWBaJF8m3uuw0Kv1g0nDOGAuw0zs5yd52mmDbwA/hndUqoMm72 0wAVJqiVjX3MXRZd6fek3n9BtQR3lY1lLk+snAB5SAJACTdq37WKRB7jh44He1OO+MzZ aih5hDC4FJjpzI7p/Xoe8KnRxH+Gsu/XXBllcA/cmH80uivruvnO12uXg/KdZFRln2fx T6Y6n3/XpRO9H2zcU2gXlX5HNoJF1Eya1oRPEBQDNgj27X4f0jno+7kng3MYw6vnVu8s 3XNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689121235; x=1691713235; h=content-transfer-encoding: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=IZBWiuVmZh8oeo7JcNkFqXxteq3YhJMdpRtEkxpCMqc=; b=Zi2lWGa2u8dLW8K1A2NHPqLycu9DrIvVK0SpY9F4vRTtjqvnKJ5sf3B+gWv5yV7JKJ EV7NkLL2v6wEI41qb5t7TBLyIkXq2+rVt+UzfLrBcteQytxEpqwJiL4MD2DtF5haPkCI NGj/6JJRocDbZdLZBOy+/q0YWrwh9Z2EsaEyq+U3Ejk+O4CmiVIZwXTSekGLsCxKjbPw zyYV79mIGDEL99zPTmYCckDPKqzGlSBTc966/I+Av/NiUWdUdoT8Hp7BxjQgSacsRef/ LbH63OKxOreG+sZ7SX7vPilzfw8+U8Vmn1FyB1RLZNpzy1kkcXq/m34VUbcb1abLVp/P jUjA== X-Gm-Message-State: ABy/qLbHGPGlhTTpi9JPt97JvWcZLjEeAM3CTBtAsAlsmmBgt7gdgjEK s6U9oZDVqF97x/t9RvygO6OOq+P/+XfyFfPDZgbSDmXANZsBfWauiyo= X-Google-Smtp-Source: APBJJlFfm3TVIAmZek2ciQ+E+r0VBt25q2hoCB8+RaDOVRROKkhQPw6BA5qr8bMEqlSsZpWBZUCW+ROOiMw7A4WbnFc= X-Received: by 2002:ac8:59ce:0:b0:3f8:8c06:c53b with SMTP id f14-20020ac859ce000000b003f88c06c53bmr148604qtf.0.1689121234405; Tue, 11 Jul 2023 17:20:34 -0700 (PDT) MIME-Version: 1.0 References: <20230706112731.35895-1-thilo.borgmann@mail.de> <20230706112731.35895-4-thilo.borgmann@mail.de> In-Reply-To: <20230706112731.35895-4-thilo.borgmann@mail.de> From: James Zern Date: Tue, 11 Jul 2023 17:20:23 -0700 Message-ID: To: FFmpeg development discussions and patches Subject: Re: [FFmpeg-devel] [PATCH v2 3/5] libavcodec/webp: add support for animated WebP decoding X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches 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: T24gVGh1LCBKdWwgNiwgMjAyMyBhdCA0OjI44oCvQU0gVGhpbG8gQm9yZ21hbm4gPHRoaWxvLmJv cmdtYW5uQG1haWwuZGU+IHdyb3RlOgo+Cj4gRnJvbTogSm9zZWYgWmxvbWVrIDxqb3NlZkBwZXgu Y29tPgo+Cj4gRml4ZXM6IDQ5MDcKPgo+IEFkZHMgc3VwcG9ydCBmb3IgZGVjb2Rpbmcgb2YgYW5p bWF0ZWQgV2ViUC4KPgo+IFRoZSBXZWJQIGRlY29kZXIgYWRkcyB0aGUgYW5pbWF0aW9uIHJlbGF0 ZWQgZmVhdHVyZXMgYWNjb3JkaW5nIHRvIHRoZSBzcGVjczoKPiBodHRwczovL2RldmVsb3BlcnMu Z29vZ2xlLmNvbS9zcGVlZC93ZWJwL2RvY3MvcmlmZl9jb250YWluZXIjYW5pbWF0aW9uCj4gVGhl IGZyYW1lcyBvZiB0aGUgYW5pbWF0aW9uIG1heSBiZSBzbWFsbGVyIHRoYW4gdGhlIGltYWdlIGNh bnZhcy4KPiBUaGVyZWZvcmUsIHRoZSBmcmFtZSBpcyBkZWNvZGVkIHRvIGEgdGVtcG9yYXJ5IGZy YW1lLAo+IHRoZW4gaXQgaXMgYmxlbmRlZCBpbnRvIHRoZSBjYW52YXMsIHRoZSBjYW52YXMgaXMg Y29waWVkIHRvIHRoZSBvdXRwdXQgZnJhbWUsCj4gYW5kIGZpbmFsbHkgdGhlIGZyYW1lIGlzIGRp c3Bvc2VkIGZyb20gdGhlIGNhbnZhcy4KPgo+IFRoZSBvdXRwdXQgdG8gQVZfUElYX0ZNVF9ZVVZB NDIwUC9BVl9QSVhfRk1UX1lVVjQyMFAgaXMgc3RpbGwgc3VwcG9ydGVkLgo+IFRoZSBiYWNrZ3Jv dW5kIGNvbG9yIGlzIHNwZWNpZmllZCBvbmx5IGFzIEJHUkEgaW4gdGhlIFdlYlAgZmlsZQo+IHNv IGl0IGlzIGNvbnZlcnRlZCB0byBZVVZBIGlmIFlVViBmb3JtYXRzIGFyZSBvdXRwdXQuCj4KPiBT aWduZWQtb2ZmLWJ5OiBKb3NlZiBabG9tZWsgPGpvc2VmQHBleC5jb20+Cj4gLS0tCj4gIENoYW5n ZWxvZyAgICAgICAgICAgICAgIHwgICAxICsKPiAgbGliYXZjb2RlYy9jb2RlY19kZXNjLmMgfCAg IDMgKy0KPiAgbGliYXZjb2RlYy92ZXJzaW9uLmggICAgfCAgIDIgKy0KPiAgbGliYXZjb2RlYy93 ZWJwLmMgICAgICAgfCA3MTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0t LQo+ICA0IGZpbGVzIGNoYW5nZWQsIDY1OCBpbnNlcnRpb25zKCspLCA2MiBkZWxldGlvbnMoLSkK Pgo+IGRpZmYgLS1naXQgYS9DaGFuZ2Vsb2cgYi9DaGFuZ2Vsb2cKPiBpbmRleCAzODc2MDgyODQ0 Li4yNzE5MjZlZDhmIDEwMDY0NAo+IC0tLSBhL0NoYW5nZWxvZwo+ICsrKyBiL0NoYW5nZWxvZwo+ IEBAIC0yNSw2ICsyNSw3IEBAIHZlcnNpb24gPG5leHQ+Ogo+ICAtIFJhdyBWVkMgYml0c3RyZWFt IHBhcnNlciwgbXV4ZXIgYW5kIGRlbXV4ZXIKPiAgLSBCaXRzdHJlYW0gZmlsdGVyIGZvciBlZGl0 aW5nIG1ldGFkYXRhIGluIFZWQyBzdHJlYW1zCj4gIC0gQml0c3RyZWFtIGZpbHRlciBmb3IgY29u dmVydGluZyBWVkMgZnJvbSBNUDQgdG8gQW5uZXggQgo+ICstIGFuaW1hdGVkIFdlYlAgcGFyc2Vy L2RlY29kZXIKPgo+ICB2ZXJzaW9uIDYuMDoKPiAgLSBSYWRpYW5jZSBIRFIgaW1hZ2Ugc3VwcG9y dAo+IGRpZmYgLS1naXQgYS9saWJhdmNvZGVjL2NvZGVjX2Rlc2MuYyBiL2xpYmF2Y29kZWMvY29k ZWNfZGVzYy5jCj4gaW5kZXggNDQwNmRkODMxOC4uNDdhMzhhNDAzNiAxMDA2NDQKPiAtLS0gYS9s aWJhdmNvZGVjL2NvZGVjX2Rlc2MuYwo+ICsrKyBiL2xpYmF2Y29kZWMvY29kZWNfZGVzYy5jCj4g QEAgLTEyNTksOCArMTI1OSw3IEBAIHN0YXRpYyBjb25zdCBBVkNvZGVjRGVzY3JpcHRvciBjb2Rl Y19kZXNjcmlwdG9yc1tdID0gewo+ICAgICAgICAgIC50eXBlICAgICAgPSBBVk1FRElBX1RZUEVf VklERU8sCj4gICAgICAgICAgLm5hbWUgICAgICA9ICJ3ZWJwIiwKPiAgICAgICAgICAubG9uZ19u YW1lID0gTlVMTF9JRl9DT05GSUdfU01BTEwoIldlYlAiKSwKPiAtICAgICAgICAucHJvcHMgICAg ID0gQVZfQ09ERUNfUFJPUF9JTlRSQV9PTkxZIHwgQVZfQ09ERUNfUFJPUF9MT1NTWSB8Cj4gLSAg ICAgICAgICAgICAgICAgICAgIEFWX0NPREVDX1BST1BfTE9TU0xFU1MsCj4gKyAgICAgICAgLnBy b3BzICAgICA9IEFWX0NPREVDX1BST1BfTE9TU1kgfCBBVl9DT0RFQ19QUk9QX0xPU1NMRVNTLAoK VGhlIGZyYW1lcyBhcmUgYWxsIGludHJhLCB0aG91Z2ggd2l0aCBhbmltYXRpb24gdGhleSBtYXkg YmUgc21hbGxlcgp0aGFuIHRoZSBjYW52YXMgYW5kIGNvbWJpbmVkIHdpdGggdGhlIHByZXZpb3Vz IGZyYW1lLgoKPiAgICAgICAgICAubWltZV90eXBlcz0gTVQoImltYWdlL3dlYnAiKSwKPiAgICAg IH0sCj4gICAgICB7Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Y29kZWMvdmVyc2lvbi5oIGIvbGliYXZj b2RlYy92ZXJzaW9uLmgKPiBpbmRleCA5NDExNTExZTA0Li45ZjU1MzgxY2YxIDEwMDY0NAo+IC0t LSBhL2xpYmF2Y29kZWMvdmVyc2lvbi5oCj4gKysrIGIvbGliYXZjb2RlYy92ZXJzaW9uLmgKPiBA QCAtMzAsNyArMzAsNyBAQAo+ICAjaW5jbHVkZSAidmVyc2lvbl9tYWpvci5oIgo+Cj4gICNkZWZp bmUgTElCQVZDT0RFQ19WRVJTSU9OX01JTk9SICAyMgo+IC0jZGVmaW5lIExJQkFWQ09ERUNfVkVS U0lPTl9NSUNSTyAxMDAKPiArI2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJT05fTUlDUk8gMTAxCj4K PiAgI2RlZmluZSBMSUJBVkNPREVDX1ZFUlNJT05fSU5UICBBVl9WRVJTSU9OX0lOVChMSUJBVkNP REVDX1ZFUlNJT05fTUFKT1IsIFwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMSUJBVkNPREVDX1ZFUlNJT05fTUlOT1IsIFwKPiBkaWZmIC0tZ2l0IGEv bGliYXZjb2RlYy93ZWJwLmMgYi9saWJhdmNvZGVjL3dlYnAuYwo+IGluZGV4IDE1MTUyZWM4ZmIu LmJlZTQzZmNmMTkgMTAwNjQ0Cj4gLS0tIGEvbGliYXZjb2RlYy93ZWJwLmMKPiArKysgYi9saWJh dmNvZGVjL3dlYnAuYwo+IEBAIC0zNSwxMiArMzUsMTYgQEAKPiAgICogRXhpZiBtZXRhZGF0YQo+ ICAgKiBJQ0MgcHJvZmlsZQo+ICAgKgo+ICsgKiBAYXV0aG9yIEpvc2VmIFpsb21laywgUGV4ZXNv IEluYy4gPGpvc2VmQHBleC5jb20+Cj4gKyAqIEFuaW1hdGlvbgo+ICsgKgo+ICAgKiBVbmltcGxl bWVudGVkOgo+IC0gKiAgIC0gQW5pbWF0aW9uCj4gICAqICAgLSBYTVAgbWV0YWRhdGEKPiAgICov Cj4KPiArI2luY2x1ZGUgImxpYmF2Y29kZWMvcGFja2V0LmgiCj4gICNpbmNsdWRlICJsaWJhdnV0 aWwvaW1ndXRpbHMuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9jb2xvcnNwYWNlLmgiCj4KPiAg I2RlZmluZSBCSVRTVFJFQU1fUkVBREVSX0xFCj4gICNpbmNsdWRlICJhdmNvZGVjLmgiCj4gQEAg LTE3OCw2ICsxODIsOCBAQCB0eXBlZGVmIHN0cnVjdCBJbWFnZUNvbnRleHQgewo+ICB0eXBlZGVm IHN0cnVjdCBXZWJQQ29udGV4dCB7Cj4gICAgICBWUDhDb250ZXh0IHY7ICAgICAgICAgICAgICAg ICAgICAgICAvKiBWUDggQ29udGV4dCB1c2VkIGZvciBsb3NzeSBkZWNvZGluZyAqLwo+ICAgICAg R2V0Qml0Q29udGV4dCBnYjsgICAgICAgICAgICAgICAgICAgLyogYml0c3RyZWFtIHJlYWRlciBm b3IgbWFpbiBpbWFnZSBjaHVuayAqLwo+ICsgICAgVGhyZWFkRnJhbWUgY2FudmFzX2ZyYW1lOyAg ICAgICAgICAgLyogVGhyZWFkRnJhbWUgZm9yIGNhbnZhcyAqLwo+ICsgICAgQVZGcmFtZSAqZnJh bWU7ICAgICAgICAgICAgICAgICAgICAgLyogQVZGcmFtZSBmb3IgZGVjb2RlZCBmcmFtZSAqLwo+ ICAgICAgQVZGcmFtZSAqYWxwaGFfZnJhbWU7ICAgICAgICAgICAgICAgLyogQVZGcmFtZSBmb3Ig YWxwaGEgZGF0YSBkZWNvbXByZXNzZWQgZnJvbSBWUDhMICovCj4gICAgICBBVlBhY2tldCAqcGt0 OyAgICAgICAgICAgICAgICAgICAgICAvKiBBVlBhY2tldCB0byBiZSBwYXNzZWQgdG8gdGhlIHVu ZGVybHlpbmcgVlA4IGRlY29kZXIgKi8KPiAgICAgIEFWQ29kZWNDb250ZXh0ICphdmN0eDsgICAg ICAgICAgICAgIC8qIHBhcmVudCBBVkNvZGVjQ29udGV4dCAqLwo+IEBAIC0xODksOSArMTk1LDI0 IEBAIHR5cGVkZWYgc3RydWN0IFdlYlBDb250ZXh0IHsKPiAgICAgIGludCBhbHBoYV9kYXRhX3Np emU7ICAgICAgICAgICAgICAgIC8qIGFscGhhIGNodW5rIGRhdGEgc2l6ZSAqLwo+ICAgICAgaW50 IGhhc19leGlmOyAgICAgICAgICAgICAgICAgICAgICAgLyogc2V0IGFmdGVyIGFuIEVYSUYgY2h1 bmsgaGFzIGJlZW4gcHJvY2Vzc2VkICovCj4gICAgICBpbnQgaGFzX2ljY3A7ICAgICAgICAgICAg ICAgICAgICAgICAvKiBzZXQgYWZ0ZXIgYW4gSUNDUCBjaHVuayBoYXMgYmVlbiBwcm9jZXNzZWQg Ki8KPiAtICAgIGludCB3aWR0aDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGltYWdlIHdp ZHRoICovCj4gLSAgICBpbnQgaGVpZ2h0OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbWFn ZSBoZWlnaHQgKi8KPiAtICAgIGludCBsb3NzbGVzczsgICAgICAgICAgICAgICAgICAgICAgIC8q IGluZGljYXRlcyBsb3NzbGVzcyBvciBsb3NzeSAqLwo+ICsgICAgaW50IHZwOHhfZmxhZ3M7ICAg ICAgICAgICAgICAgICAgICAgLyogZ2xvYmFsIGZsYWdzIGZyb20gVlA4WCBjaHVuayAqLwo+ICsg ICAgaW50IGNhbnZhc193aWR0aDsgICAgICAgICAgICAgICAgICAgLyogY2FudmFzIHdpZHRoICov Cj4gKyAgICBpbnQgY2FudmFzX2hlaWdodDsgICAgICAgICAgICAgICAgICAvKiBjYW52YXMgaGVp Z2h0ICovCj4gKyAgICBpbnQgYW5tZl9mbGFnczsgICAgICAgICAgICAgICAgICAgICAvKiBmcmFt ZSBmbGFncyBmcm9tIEFOTUYgY2h1bmsgKi8KPiArICAgIGludCB3aWR0aDsgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIGZyYW1lIHdpZHRoICovCj4gKyAgICBpbnQgaGVpZ2h0OyAgICAgICAg ICAgICAgICAgICAgICAgICAvKiBmcmFtZSBoZWlnaHQgKi8KPiArICAgIGludCBwb3NfeDsgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIGZyYW1lIHBvc2l0aW9uIFggKi8KPiArICAgIGludCBw b3NfeTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZyYW1lIHBvc2l0aW9uIFkgKi8KPiAr ICAgIGludCBwcmV2X2FubWZfZmxhZ3M7ICAgICAgICAgICAgICAgIC8qIHByZXZpb3VzIGZyYW1l IGZsYWdzIGZyb20gQU5NRiBjaHVuayAqLwo+ICsgICAgaW50IHByZXZfd2lkdGg7ICAgICAgICAg ICAgICAgICAgICAgLyogcHJldmlvdXMgZnJhbWUgd2lkdGggKi8KPiArICAgIGludCBwcmV2X2hl aWdodDsgICAgICAgICAgICAgICAgICAgIC8qIHByZXZpb3VzIGZyYW1lIGhlaWdodCAqLwo+ICsg ICAgaW50IHByZXZfcG9zX3g7ICAgICAgICAgICAgICAgICAgICAgLyogcHJldmlvdXMgZnJhbWUg cG9zaXRpb24gWCAqLwo+ICsgICAgaW50IHByZXZfcG9zX3k7ICAgICAgICAgICAgICAgICAgICAg LyogcHJldmlvdXMgZnJhbWUgcG9zaXRpb24gWSAqLwo+ICsgICAgaW50IGF3YWl0X3Byb2dyZXNz OyAgICAgICAgICAgICAgICAgLyogdmFsdWUgb2YgcHJvZ3Jlc3MgdG8gd2FpdCBmb3IgKi8KPiAr ICAgIHVpbnQ4X3QgYmFja2dyb3VuZF9hcmdiWzRdOyAgICAgICAgIC8qIGJhY2tncm91bmQgY29s b3IgaW4gQVJHQiBmb3JtYXQgKi8KPiArICAgIHVpbnQ4X3QgYmFja2dyb3VuZF95dXZhWzRdOyAg ICAgICAgIC8qIGJhY2tncm91bmQgY29sb3IgaW4gWVVWQSBmb3JtYXQgKi8KPiArICAgIGNvbnN0 IHVpbnQ4X3QgKmJhY2tncm91bmRfZGF0YVs0XTsgIC8qICJwbGFuZXMiIGZvciBiYWNrZ3JvdW5k IGNvbG9yIGluIFlVVkEgZm9ybWF0ICovCj4gKyAgICB1aW50OF90IHRyYW5zcGFyZW50X3l1dmFb NF07ICAgICAgICAvKiB0cmFuc3BhcmVudCBibGFjayBpbiBZVVZBIGZvcm1hdCAqLwo+Cj4gICAg ICBpbnQgbmJfdHJhbnNmb3JtczsgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgdHJhbnNm b3JtcyAqLwo+ICAgICAgZW51bSBUcmFuc2Zvcm1UeXBlIHRyYW5zZm9ybXNbNF07ICAgLyogdHJh bnNmb3JtYXRpb25zIHVzZWQgaW4gdGhlIGltYWdlLCBpbiBvcmRlciAqLwo+IEBAIC01NTUsNyAr NTc2LDcgQEAgc3RhdGljIGludCBkZWNvZGVfZW50cm9weV9jb2RlZF9pbWFnZShXZWJQQ29udGV4 dCAqcywgZW51bSBJbWFnZVJvbGUgcm9sZSwKPiAgICAgIGltZy0+ZnJhbWUtPmhlaWdodCA9IGg7 Cj4KPiAgICAgIGlmIChyb2xlID09IElNQUdFX1JPTEVfQVJHQiAmJiAhaW1nLT5pc19hbHBoYV9w cmltYXJ5KSB7Cj4gLSAgICAgICAgcmV0ID0gZmZfdGhyZWFkX2dldF9idWZmZXIocy0+YXZjdHgs IGltZy0+ZnJhbWUsIDApOwo+ICsgICAgICAgIHJldCA9IGZmX2dldF9idWZmZXIocy0+YXZjdHgs IGltZy0+ZnJhbWUsIDApOwo+ICAgICAgfSBlbHNlCj4gICAgICAgICAgcmV0ID0gYXZfZnJhbWVf Z2V0X2J1ZmZlcihpbWctPmZyYW1lLCAxKTsKPiAgICAgIGlmIChyZXQgPCAwKQo+IEBAIC0xMDUz LDcgKzEwNzQsNyBAQCBzdGF0aWMgaW50IGFwcGx5X2NvbG9yX2luZGV4aW5nX3RyYW5zZm9ybShX ZWJQQ29udGV4dCAqcykKPiAgICAgIHJldHVybiAwOwo+ICB9Cj4KPiAtc3RhdGljIHZvaWQgdXBk YXRlX2NhbnZhc19zaXplKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgaW50IHcsIGludCBoKQo+ICtz dGF0aWMgdm9pZCB1cGRhdGVfZnJhbWVfc2l6ZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIGludCB3 LCBpbnQgaCkKPiAgewo+ICAgICAgV2ViUENvbnRleHQgKnMgPSBhdmN0eC0+cHJpdl9kYXRhOwo+ ICAgICAgaWYgKHMtPndpZHRoICYmIHMtPndpZHRoICE9IHcpIHsKPiBAQCAtMTA3Niw3ICsxMDk3 LDYgQEAgc3RhdGljIGludCB2cDhfbG9zc2xlc3NfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0 ICphdmN0eCwgQVZGcmFtZSAqcCwKPiAgICAgIGludCB3LCBoLCByZXQsIGksIHVzZWQ7Cj4KPiAg ICAgIGlmICghaXNfYWxwaGFfY2h1bmspIHsKPiAtICAgICAgICBzLT5sb3NzbGVzcyA9IDE7Cj4g ICAgICAgICAgYXZjdHgtPnBpeF9mbXQgPSBBVl9QSVhfRk1UX0FSR0I7Cj4gICAgICB9Cj4KPiBA QCAtMTA5Myw3ICsxMTEzLDcgQEAgc3RhdGljIGludCB2cDhfbG9zc2xlc3NfZGVjb2RlX2ZyYW1l KEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqcCwKPiAgICAgICAgICB3ID0gZ2V0X2Jp dHMoJnMtPmdiLCAxNCkgKyAxOwo+ICAgICAgICAgIGggPSBnZXRfYml0cygmcy0+Z2IsIDE0KSAr IDE7Cj4KPiAtICAgICAgICB1cGRhdGVfY2FudmFzX3NpemUoYXZjdHgsIHcsIGgpOwo+ICsgICAg ICAgIHVwZGF0ZV9mcmFtZV9zaXplKGF2Y3R4LCB3LCBoKTsKPgo+ICAgICAgICAgIHJldCA9IGZm X3NldF9kaW1lbnNpb25zKGF2Y3R4LCBzLT53aWR0aCwgcy0+aGVpZ2h0KTsKPiAgICAgICAgICBp ZiAocmV0IDwgMCkKPiBAQCAtMTI5MCw3ICsxMzEwLDYgQEAgc3RhdGljIGludCB2cDhfbG9zc3lf ZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgQVZGcmFtZSAqcCwKPiAgICAgICAg ICBzLT52LmFjdHVhbGx5X3dlYnAgPSAxOwo+ICAgICAgfQo+ICAgICAgYXZjdHgtPnBpeF9mbXQg PSBzLT5oYXNfYWxwaGEgPyBBVl9QSVhfRk1UX1lVVkE0MjBQIDogQVZfUElYX0ZNVF9ZVVY0MjBQ Owo+IC0gICAgcy0+bG9zc2xlc3MgPSAwOwo+Cj4gICAgICBpZiAoZGF0YV9zaXplID4gSU5UX01B WCkgewo+ICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAidW5zdXBwb3J0ZWQg Y2h1bmsgc2l6ZVxuIik7Cj4gQEAgLTEzMDgsNyArMTMyNyw3IEBAIHN0YXRpYyBpbnQgdnA4X2xv c3N5X2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKnAsCj4gICAg ICBpZiAoISpnb3RfZnJhbWUpCj4gICAgICAgICAgcmV0dXJuIEFWRVJST1JfSU5WQUxJRERBVEE7 Cj4KPiAtICAgIHVwZGF0ZV9jYW52YXNfc2l6ZShhdmN0eCwgYXZjdHgtPndpZHRoLCBhdmN0eC0+ aGVpZ2h0KTsKPiArICAgIHVwZGF0ZV9mcmFtZV9zaXplKGF2Y3R4LCBhdmN0eC0+d2lkdGgsIGF2 Y3R4LT5oZWlnaHQpOwo+Cj4gICAgICBpZiAocy0+aGFzX2FscGhhKSB7Cj4gICAgICAgICAgcmV0 ID0gdnA4X2xvc3N5X2RlY29kZV9hbHBoYShhdmN0eCwgcCwgcy0+YWxwaGFfZGF0YSwKPiBAQCAt MTMxOCw0MSArMTMzNywxNyBAQCBzdGF0aWMgaW50IHZwOF9sb3NzeV9kZWNvZGVfZnJhbWUoQVZD b2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpwLAo+ICAgICAgfQo+ICAgICAgcmV0dXJuIHJl dDsKPiAgfQo+ICtpbnQgaW5pdF9jYW52YXNfZnJhbWUoV2ViUENvbnRleHQgKnMsIGludCBmb3Jt YXQsIGludCBrZXlfZnJhbWUpOwo+Cj4gLXN0YXRpYyBpbnQgd2VicF9kZWNvZGVfZnJhbWUoQVZD b2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpwLAo+IC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCAqZ290X2ZyYW1lLCBBVlBhY2tldCAqYXZwa3QpCj4gK3N0YXRpYyBpbnQgd2Vi cF9kZWNvZGVfZnJhbWVfY29tbW9uKEFWQ29kZWNDb250ZXh0ICphdmN0eCwgdWludDhfdCAqZGF0 YSwgaW50IHNpemUsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmdvdF9m cmFtZSwgaW50IGtleV9mcmFtZSkKCmluZGVudCBpcyBvZmYKCj4gIHsKPiAgICAgIFdlYlBDb250 ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsKPiAgICAgIEdldEJ5dGVDb250ZXh0IGdiOwo+ICAg ICAgaW50IHJldDsKPiAgICAgIHVpbnQzMl90IGNodW5rX3R5cGUsIGNodW5rX3NpemU7Cj4gLSAg ICBpbnQgdnA4eF9mbGFncyA9IDA7Cj4KPiAtICAgIHMtPmF2Y3R4ICAgICA9IGF2Y3R4Owo+IC0g ICAgcy0+d2lkdGggICAgID0gMDsKPiAtICAgIHMtPmhlaWdodCAgICA9IDA7Cj4gLSAgICAqZ290 X2ZyYW1lICAgPSAwOwo+IC0gICAgcy0+aGFzX2FscGhhID0gMDsKPiAtICAgIHMtPmhhc19leGlm ICA9IDA7Cj4gLSAgICBzLT5oYXNfaWNjcCAgPSAwOwo+IC0gICAgYnl0ZXN0cmVhbTJfaW5pdCgm Z2IsIGF2cGt0LT5kYXRhLCBhdnBrdC0+c2l6ZSk7Cj4gLQo+IC0gICAgaWYgKGJ5dGVzdHJlYW0y X2dldF9ieXRlc19sZWZ0KCZnYikgPCAxMikKPiAtICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZB TElEREFUQTsKPiAtCj4gLSAgICBpZiAoYnl0ZXN0cmVhbTJfZ2V0X2xlMzIoJmdiKSAhPSBNS1RB RygnUicsICdJJywgJ0YnLCAnRicpKSB7Cj4gLSAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0df RVJST1IsICJtaXNzaW5nIFJJRkYgdGFnXG4iKTsKPiAtICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsKPiAtICAgIH0KPiAtCj4gLSAgICBjaHVua19zaXplID0gYnl0ZXN0cmVhbTJf Z2V0X2xlMzIoJmdiKTsKPiAtICAgIGlmIChieXRlc3RyZWFtMl9nZXRfYnl0ZXNfbGVmdCgmZ2Ip IDwgY2h1bmtfc2l6ZSkKPiAtICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAt Cj4gLSAgICBpZiAoYnl0ZXN0cmVhbTJfZ2V0X2xlMzIoJmdiKSAhPSBNS1RBRygnVycsICdFJywg J0InLCAnUCcpKSB7Cj4gLSAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsICJtaXNz aW5nIFdFQlAgdGFnXG4iKTsKPiAtICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsK PiAtICAgIH0KPiArICAgIGJ5dGVzdHJlYW0yX2luaXQoJmdiLCBkYXRhLCBzaXplKTsKPgo+ICAg ICAgd2hpbGUgKGJ5dGVzdHJlYW0yX2dldF9ieXRlc19sZWZ0KCZnYikgPiA4KSB7Cj4gICAgICAg ICAgY2hhciBjaHVua19zdHJbNV0gPSB7IDAgfTsKPiBAQCAtMTM2Myw2ICsxMzU4LDEwIEBAIHN0 YXRpYyBpbnQgd2VicF9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1l ICpwLAo+ICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiAgICAgICAg ICBjaHVua19zaXplICs9IGNodW5rX3NpemUgJiAxOwo+Cj4gKyAgICAgICAgLy8gd2UgbmVlZCB0 byBkaXZlIGludG8gUklGRiBjaHVuawo+ICsgICAgICAgIGlmIChjaHVua190eXBlID09IE1LVEFH KCdSJywgJ0knLCAnRicsICdGJykpCj4gKyAgICAgICAgICAgIGNodW5rX3NpemUgPSA0Owo+ICsK PiAgICAgICAgICBpZiAoYnl0ZXN0cmVhbTJfZ2V0X2J5dGVzX2xlZnQoJmdiKSA8IGNodW5rX3Np emUpIHsKPiAgICAgICAgICAgICAvKiB3ZSBzZWVtIHRvIGJlIHJ1bm5pbmcgb3V0IG9mIGRhdGEs IGJ1dCBpdCBjb3VsZCBhbHNvIGJlIHRoYXQgdGhlCj4gICAgICAgICAgICAgICAgYml0c3RyZWFt IGhhcyB0cmFpbGluZyBqdW5rIGxlYWRpbmcgdG8gYm9ndXMgY2h1bmtfc2l6ZS4gKi8KPiBAQCAt MTM3MCwxMCArMTM2OSwyNiBAQCBzdGF0aWMgaW50IHdlYnBfZGVjb2RlX2ZyYW1lKEFWQ29kZWND b250ZXh0ICphdmN0eCwgQVZGcmFtZSAqcCwKPiAgICAgICAgICB9Cj4KPiAgICAgICAgICBzd2l0 Y2ggKGNodW5rX3R5cGUpIHsKPiArICAgICAgICBjYXNlIE1LVEFHKCdSJywgJ0knLCAnRicsICdG Jyk6Cj4gKyAgICAgICAgICAgIGlmIChieXRlc3RyZWFtMl9nZXRfbGUzMigmZ2IpICE9IE1LVEFH KCdXJywgJ0UnLCAnQicsICdQJykpIHsKPiArICAgICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwg QVZfTE9HX0VSUk9SLCAibWlzc2luZyBXRUJQIHRhZ1xuIik7Cj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAgICAg ICBzLT52cDh4X2ZsYWdzICAgID0gMDsKPiArICAgICAgICAgICAgcy0+Y2FudmFzX3dpZHRoICA9 IDA7Cj4gKyAgICAgICAgICAgIHMtPmNhbnZhc19oZWlnaHQgPSAwOwo+ICsgICAgICAgICAgICBz LT5oYXNfZXhpZiAgICAgID0gMDsKPiArICAgICAgICAgICAgcy0+aGFzX2ljY3AgICAgICA9IDA7 Cj4gKyAgICAgICAgICAgIGZmX3RocmVhZF9yZWxlYXNlX2V4dF9idWZmZXIoYXZjdHgsICZzLT5j YW52YXNfZnJhbWUpOwo+ICsgICAgICAgICAgICBicmVhazsKPiAgICAgICAgICBjYXNlIE1LVEFH KCdWJywgJ1AnLCAnOCcsICcgJyk6Cj4gICAgICAgICAgICAgIGlmICghKmdvdF9mcmFtZSkgewo+ IC0gICAgICAgICAgICAgICAgcmV0ID0gdnA4X2xvc3N5X2RlY29kZV9mcmFtZShhdmN0eCwgcCwg Z290X2ZyYW1lLAo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhdnBrdC0+ZGF0YSArIGJ5dGVzdHJlYW0yX3RlbGwoJmdiKSwKPiArICAgICAgICAgICAgICAg IHJldCA9IGluaXRfY2FudmFzX2ZyYW1lKHMsIEFWX1BJWF9GTVRfWVVWQTQyMFAsIGtleV9mcmFt ZSk7Cj4gKyAgICAgICAgICAgICAgICBpZiAocmV0IDwgMCkKPiArICAgICAgICAgICAgICAgICAg ICByZXR1cm4gcmV0Owo+ICsKPiArICAgICAgICAgICAgICAgIHJldCA9IHZwOF9sb3NzeV9kZWNv ZGVfZnJhbWUoYXZjdHgsIHMtPmZyYW1lLCBnb3RfZnJhbWUsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKyBieXRlc3RyZWFtMl90ZWxsKCZnYiks Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX3Np emUpOwo+ICAgICAgICAgICAgICAgICAgaWYgKHJldCA8IDApCj4gICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIHJldDsKPiBAQCAtMTM4Miw4ICsxMzk3LDEzIEBAIHN0YXRpYyBpbnQgd2VicF9k ZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpwLAo+ICAgICAgICAg ICAgICBicmVhazsKPiAgICAgICAgICBjYXNlIE1LVEFHKCdWJywgJ1AnLCAnOCcsICdMJyk6Cj4g ICAgICAgICAgICAgIGlmICghKmdvdF9mcmFtZSkgewo+IC0gICAgICAgICAgICAgICAgcmV0ID0g dnA4X2xvc3NsZXNzX2RlY29kZV9mcmFtZShhdmN0eCwgcCwgZ290X2ZyYW1lLAo+IC0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdnBrdC0+ZGF0YSArIGJ5 dGVzdHJlYW0yX3RlbGwoJmdiKSwKPiArICAgICAgICAgICAgICAgIHJldCA9IGluaXRfY2FudmFz X2ZyYW1lKHMsIEFWX1BJWF9GTVRfQVJHQiwga2V5X2ZyYW1lKTsKPiArICAgICAgICAgICAgICAg IGlmIChyZXQgPCAwKQo+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAg ICAgICAgICAgICBmZl90aHJlYWRfZmluaXNoX3NldHVwKHMtPmF2Y3R4KTsKPiArCj4gKyAgICAg ICAgICAgICAgICByZXQgPSB2cDhfbG9zc2xlc3NfZGVjb2RlX2ZyYW1lKGF2Y3R4LCBzLT5mcmFt ZSwgZ290X2ZyYW1lLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBkYXRhICsgYnl0ZXN0cmVhbTJfdGVsbCgmZ2IpLAo+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaHVua19zaXplLCAwKTsKPiAgICAgICAg ICAgICAgICAgIGlmIChyZXQgPCAwKQo+ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7 Cj4gQEAgLTEzOTIsMTQgKzE0MTIsMTYgQEAgc3RhdGljIGludCB3ZWJwX2RlY29kZV9mcmFtZShB VkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKnAsCj4gICAgICAgICAgICAgIGJ5dGVzdHJl YW0yX3NraXAoJmdiLCBjaHVua19zaXplKTsKPiAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAg ICAgY2FzZSBNS1RBRygnVicsICdQJywgJzgnLCAnWCcpOgo+IC0gICAgICAgICAgICBpZiAocy0+ d2lkdGggfHwgcy0+aGVpZ2h0IHx8ICpnb3RfZnJhbWUpIHsKPiArICAgICAgICAgICAgaWYgKHMt PmNhbnZhc193aWR0aCB8fCBzLT5jYW52YXNfaGVpZ2h0IHx8ICpnb3RfZnJhbWUpIHsKPiAgICAg ICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiQ2FudmFzIGRpbWVuc2lv bnMgYXJlIGFscmVhZHkgc2V0XG4iKTsKPiAgICAgICAgICAgICAgICAgIHJldHVybiBBVkVSUk9S X0lOVkFMSUREQVRBOwo+ICAgICAgICAgICAgICB9Cj4gLSAgICAgICAgICAgIHZwOHhfZmxhZ3Mg PSBieXRlc3RyZWFtMl9nZXRfYnl0ZSgmZ2IpOwo+ICsgICAgICAgICAgICBzLT52cDh4X2ZsYWdz ID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGUoJmdiKTsKPiAgICAgICAgICAgICAgYnl0ZXN0cmVhbTJf c2tpcCgmZ2IsIDMpOwo+ICAgICAgICAgICAgICBzLT53aWR0aCAgPSBieXRlc3RyZWFtMl9nZXRf bGUyNCgmZ2IpICsgMTsKPiAgICAgICAgICAgICAgcy0+aGVpZ2h0ID0gYnl0ZXN0cmVhbTJfZ2V0 X2xlMjQoJmdiKSArIDE7Cj4gKyAgICAgICAgICAgIHMtPmNhbnZhc193aWR0aCAgPSBzLT53aWR0 aDsKPiArICAgICAgICAgICAgcy0+Y2FudmFzX2hlaWdodCA9IHMtPmhlaWdodDsKPiAgICAgICAg ICAgICAgcmV0ID0gYXZfaW1hZ2VfY2hlY2tfc2l6ZShzLT53aWR0aCwgcy0+aGVpZ2h0LCAwLCBh dmN0eCk7Cj4gICAgICAgICAgICAgIGlmIChyZXQgPCAwKQo+ICAgICAgICAgICAgICAgICAgcmV0 dXJuIHJldDsKPiBAQCAtMTQwNyw3ICsxNDI5LDcgQEAgc3RhdGljIGludCB3ZWJwX2RlY29kZV9m cmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKnAsCj4gICAgICAgICAgY2FzZSBN S1RBRygnQScsICdMJywgJ1AnLCAnSCcpOiB7Cj4gICAgICAgICAgICAgIGludCBhbHBoYV9oZWFk ZXIsIGZpbHRlcl9tLCBjb21wcmVzc2lvbjsKPgo+IC0gICAgICAgICAgICBpZiAoISh2cDh4X2Zs YWdzICYgVlA4WF9GTEFHX0FMUEhBKSkgewo+ICsgICAgICAgICAgICBpZiAoIShzLT52cDh4X2Zs YWdzICYgVlA4WF9GTEFHX0FMUEhBKSkgewo+ICAgICAgICAgICAgICAgICAgYXZfbG9nKGF2Y3R4 LCBBVl9MT0dfV0FSTklORywKPiAgICAgICAgICAgICAgICAgICAgICAgICAiQUxQSEEgY2h1bmsg cHJlc2VudCwgYnV0IGFscGhhIGJpdCBub3Qgc2V0IGluIHRoZSAiCj4gICAgICAgICAgICAgICAg ICAgICAgICAgIlZQOFggaGVhZGVyXG4iKTsKPiBAQCAtMTQxNiw4ICsxNDM4LDkgQEAgc3RhdGlj IGludCB3ZWJwX2RlY29kZV9mcmFtZShBVkNvZGVjQ29udGV4dCAqYXZjdHgsIEFWRnJhbWUgKnAs Cj4gICAgICAgICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgImludmFsaWQg QUxQSEEgY2h1bmsgc2l6ZVxuIik7Cj4gICAgICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9J TlZBTElEREFUQTsKPiAgICAgICAgICAgICAgfQo+ICsKPiAgICAgICAgICAgICAgYWxwaGFfaGVh ZGVyICAgICAgID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGUoJmdiKTsKPiAtICAgICAgICAgICAgcy0+ YWxwaGFfZGF0YSAgICAgID0gYXZwa3QtPmRhdGEgKyBieXRlc3RyZWFtMl90ZWxsKCZnYik7Cj4g KyAgICAgICAgICAgIHMtPmFscGhhX2RhdGEgICAgICA9IGRhdGEgKyBieXRlc3RyZWFtMl90ZWxs KCZnYik7Cj4gICAgICAgICAgICAgIHMtPmFscGhhX2RhdGFfc2l6ZSA9IGNodW5rX3NpemUgLSAx Owo+ICAgICAgICAgICAgICBieXRlc3RyZWFtMl9za2lwKCZnYiwgcy0+YWxwaGFfZGF0YV9zaXpl KTsKPgo+IEBAIC0xNDQ0LDE0ICsxNDY3LDEzIEBAIHN0YXRpYyBpbnQgd2VicF9kZWNvZGVfZnJh bWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpwLAo+ICAgICAgICAgICAgICAgICAg YXZfbG9nKGF2Y3R4LCBBVl9MT0dfVkVSQk9TRSwgIklnbm9yaW5nIGV4dHJhIEVYSUYgY2h1bmtc biIpOwo+ICAgICAgICAgICAgICAgICAgZ290byBleGlmX2VuZDsKPiAgICAgICAgICAgICAgfQo+ IC0gICAgICAgICAgICBpZiAoISh2cDh4X2ZsYWdzICYgVlA4WF9GTEFHX0VYSUZfTUVUQURBVEEp KQo+ICsgICAgICAgICAgICBpZiAoIShzLT52cDh4X2ZsYWdzICYgVlA4WF9GTEFHX0VYSUZfTUVU QURBVEEpKQo+ICAgICAgICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfV0FSTklORywK PiAgICAgICAgICAgICAgICAgICAgICAgICAiRVhJRiBjaHVuayBwcmVzZW50LCBidXQgRXhpZiBi aXQgbm90IHNldCBpbiB0aGUgIgo+ICAgICAgICAgICAgICAgICAgICAgICAgICJWUDhYIGhlYWRl clxuIik7Cj4KPiAgICAgICAgICAgICAgcy0+aGFzX2V4aWYgPSAxOwo+IC0gICAgICAgICAgICBi eXRlc3RyZWFtMl9pbml0KCZleGlmX2diLCBhdnBrdC0+ZGF0YSArIGV4aWZfb2Zmc2V0LAo+IC0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cGt0LT5zaXplIC0gZXhpZl9vZmZzZXQpOwo+ ICsgICAgICAgICAgICBieXRlc3RyZWFtMl9pbml0KCZleGlmX2diLCBkYXRhICsgZXhpZl9vZmZz ZXQsIHNpemUgLSBleGlmX29mZnNldCk7Cj4gICAgICAgICAgICAgIGlmIChmZl90ZGVjb2RlX2hl YWRlcigmZXhpZl9nYiwgJmxlLCAmaWZkX29mZnNldCkgPCAwKSB7Cj4gICAgICAgICAgICAgICAg ICBhdl9sb2coYXZjdHgsIEFWX0xPR19FUlJPUiwgImludmFsaWQgVElGRiBoZWFkZXIgIgo+ICAg ICAgICAgICAgICAgICAgICAgICAgICJpbiBFeGlmIGRhdGFcbiIpOwo+IEBAIC0xNDY0LDcgKzE0 ODYsNyBAQCBzdGF0aWMgaW50IHdlYnBfZGVjb2RlX2ZyYW1lKEFWQ29kZWNDb250ZXh0ICphdmN0 eCwgQVZGcmFtZSAqcCwKPiAgICAgICAgICAgICAgICAgIGdvdG8gZXhpZl9lbmQ7Cj4gICAgICAg ICAgICAgIH0KPgo+IC0gICAgICAgICAgICBhdl9kaWN0X2NvcHkoJnAtPm1ldGFkYXRhLCBleGlm X21ldGFkYXRhLCAwKTsKPiArICAgICAgICAgICAgYXZfZGljdF9jb3B5KCZzLT5mcmFtZS0+bWV0 YWRhdGEsIGV4aWZfbWV0YWRhdGEsIDApOwo+Cj4gIGV4aWZfZW5kOgo+ICAgICAgICAgICAgICBh dl9kaWN0X2ZyZWUoJmV4aWZfbWV0YWRhdGEpOwo+IEBAIC0xNDc5LDIxICsxNTAxLDY0IEBAIGV4 aWZfZW5kOgo+ICAgICAgICAgICAgICAgICAgYnl0ZXN0cmVhbTJfc2tpcCgmZ2IsIGNodW5rX3Np emUpOwo+ICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gICAgICAgICAgICAgIH0KPiAtICAgICAg ICAgICAgaWYgKCEodnA4eF9mbGFncyAmIFZQOFhfRkxBR19JQ0MpKQo+ICsgICAgICAgICAgICBp ZiAoIShzLT52cDh4X2ZsYWdzICYgVlA4WF9GTEFHX0lDQykpCj4gICAgICAgICAgICAgICAgICBh dl9sb2coYXZjdHgsIEFWX0xPR19XQVJOSU5HLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICJJ Q0NQIGNodW5rIHByZXNlbnQsIGJ1dCBJQ0MgUHJvZmlsZSBiaXQgbm90IHNldCBpbiB0aGUgIgo+ ICAgICAgICAgICAgICAgICAgICAgICAgICJWUDhYIGhlYWRlclxuIik7Cj4KPiAgICAgICAgICAg ICAgcy0+aGFzX2ljY3AgPSAxOwo+IC0gICAgICAgICAgICBzZCA9IGF2X2ZyYW1lX25ld19zaWRl X2RhdGEocCwgQVZfRlJBTUVfREFUQV9JQ0NfUFJPRklMRSwgY2h1bmtfc2l6ZSk7Cj4gKyAgICAg ICAgICAgIHNkID0gYXZfZnJhbWVfbmV3X3NpZGVfZGF0YShzLT5mcmFtZSwgQVZfRlJBTUVfREFU QV9JQ0NfUFJPRklMRSwgY2h1bmtfc2l6ZSk7Cj4gICAgICAgICAgICAgIGlmICghc2QpCj4gICAg ICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUihFTk9NRU0pOwo+Cj4gICAgICAgICAgICAgIGJ5 dGVzdHJlYW0yX2dldF9idWZmZXIoJmdiLCBzZC0+ZGF0YSwgY2h1bmtfc2l6ZSk7Cj4gICAgICAg ICAgICAgIGJyZWFrOwo+ICAgICAgICAgIH0KPiAtICAgICAgICBjYXNlIE1LVEFHKCdBJywgJ04n LCAnSScsICdNJyk6Cj4gKyAgICAgICAgY2FzZSBNS1RBRygnQScsICdOJywgJ0knLCAnTScpOiB7 Cj4gKyAgICAgICAgICAgIGNvbnN0IEFWUGl4Rm10RGVzY3JpcHRvciAqZGVzYzsKPiArICAgICAg ICAgICAgaW50IGEsIHIsIGcsIGI7Cj4gKyAgICAgICAgICAgIGlmICghKHMtPnZwOHhfZmxhZ3Mg JiBWUDhYX0ZMQUdfQU5JTUFUSU9OKSkgewo+ICsgICAgICAgICAgICAgICAgYXZfbG9nKGF2Y3R4 LCBBVl9MT0dfV0FSTklORywKPiArICAgICAgICAgICAgICAgICAgICAgICAiQU5JTSBjaHVuayBw cmVzZW50LCBidXQgYW5pbWF0aW9uIGJpdCBub3Qgc2V0IGluIHRoZSAiCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgIlZQOFggaGVhZGVyXG4iKTsKPiArICAgICAgICAgICAgfQo+ICsgICAgICAg ICAgICAvLyBiYWNrZ3JvdW5kIGlzIHN0b3JlZCBhcyBCR1JBLCB3ZSBuZWVkIEFSR0IKPiArICAg ICAgICAgICAgcy0+YmFja2dyb3VuZF9hcmdiWzNdID0gYiA9IGJ5dGVzdHJlYW0yX2dldF9ieXRl KCZnYik7Cj4gKyAgICAgICAgICAgIHMtPmJhY2tncm91bmRfYXJnYlsyXSA9IGcgPSBieXRlc3Ry ZWFtMl9nZXRfYnl0ZSgmZ2IpOwo+ICsgICAgICAgICAgICBzLT5iYWNrZ3JvdW5kX2FyZ2JbMV0g PSByID0gYnl0ZXN0cmVhbTJfZ2V0X2J5dGUoJmdiKTsKPiArICAgICAgICAgICAgcy0+YmFja2dy b3VuZF9hcmdiWzBdID0gYSA9IGJ5dGVzdHJlYW0yX2dldF9ieXRlKCZnYik7Cj4gKwo+ICsgICAg ICAgICAgICAvLyBjb252ZXJ0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHRvIFlVVkEKPiArICAgICAg ICAgICAgZGVzYyA9IGF2X3BpeF9mbXRfZGVzY19nZXQoQVZfUElYX0ZNVF9ZVVZBNDIwUCk7Cj4g KyAgICAgICAgICAgIHMtPmJhY2tncm91bmRfeXV2YVtkZXNjLT5jb21wWzBdLnBsYW5lXSA9IFJH Ql9UT19ZX0NDSVIociwgZywgYik7Cj4gKyAgICAgICAgICAgIHMtPmJhY2tncm91bmRfeXV2YVtk ZXNjLT5jb21wWzFdLnBsYW5lXSA9IFJHQl9UT19VX0NDSVIociwgZywgYiwgMCk7Cj4gKyAgICAg ICAgICAgIHMtPmJhY2tncm91bmRfeXV2YVtkZXNjLT5jb21wWzJdLnBsYW5lXSA9IFJHQl9UT19W X0NDSVIociwgZywgYiwgMCk7Cj4gKyAgICAgICAgICAgIHMtPmJhY2tncm91bmRfeXV2YVtkZXNj LT5jb21wWzNdLnBsYW5lXSA9IGE7Cj4gKwo+ICsgICAgICAgICAgICBieXRlc3RyZWFtMl9za2lw KCZnYiwgMik7IC8vIGxvb3AgY291bnQgaXMgaWdub3JlZAo+ICsgICAgICAgICAgICBicmVhazsK PiArICAgICAgICB9Cj4gICAgICAgICAgY2FzZSBNS1RBRygnQScsICdOJywgJ00nLCAnRicpOgo+ ICsgICAgICAgICAgICBpZiAoIShzLT52cDh4X2ZsYWdzICYgVlA4WF9GTEFHX0FOSU1BVElPTikp IHsKPiArICAgICAgICAgICAgICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX1dBUk5JTkcsCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgIkFOTUYgY2h1bmsgcHJlc2VudCwgYnV0IGFuaW1hdGlvbiBi aXQgbm90IHNldCBpbiB0aGUgIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICJWUDhYIGhlYWRl clxuIik7Cj4gKyAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgcy0+cG9zX3ggICAgICA9IGJ5 dGVzdHJlYW0yX2dldF9sZTI0KCZnYikgKiAyOwo+ICsgICAgICAgICAgICBzLT5wb3NfeSAgICAg ID0gYnl0ZXN0cmVhbTJfZ2V0X2xlMjQoJmdiKSAqIDI7Cj4gKyAgICAgICAgICAgIHMtPndpZHRo ICAgICAgPSBieXRlc3RyZWFtMl9nZXRfbGUyNCgmZ2IpICsgMTsKPiArICAgICAgICAgICAgcy0+ aGVpZ2h0ICAgICA9IGJ5dGVzdHJlYW0yX2dldF9sZTI0KCZnYikgKyAxOwo+ICsgICAgICAgICAg ICBieXRlc3RyZWFtMl9za2lwKCZnYiwgMyk7ICAgLy8gZHVyYXRpb24KPiArICAgICAgICAgICAg cy0+YW5tZl9mbGFncyA9IGJ5dGVzdHJlYW0yX2dldF9ieXRlKCZnYik7Cj4gKwo+ICsgICAgICAg ICAgICBpZiAocy0+d2lkdGggICsgcy0+cG9zX3ggPiBzLT5jYW52YXNfd2lkdGggfHwKPiArICAg ICAgICAgICAgICAgIHMtPmhlaWdodCArIHMtPnBvc195ID4gcy0+Y2FudmFzX2hlaWdodCkgewo+ ICsgICAgICAgICAgICAgICAgYXZfbG9nKGF2Y3R4LCBBVl9MT0dfRVJST1IsCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgImZyYW1lIGRvZXMgbm90IGZpdCBpbnRvIGNhbnZhc1xuIik7Cj4gKyAg ICAgICAgICAgICAgICByZXR1cm4gQVZFUlJPUl9JTlZBTElEREFUQTsKPiArICAgICAgICAgICAg fQo+ICsgICAgICAgICAgICBzLT52cDh4X2ZsYWdzIHw9IFZQOFhfRkxBR19BTklNQVRJT047Cj4g KyAgICAgICAgICAgIGJyZWFrOwo+ICAgICAgICAgIGNhc2UgTUtUQUcoJ1gnLCAnTScsICdQJywg JyAnKToKPiAgICAgICAgICAgICAgQVZfV0wzMihjaHVua19zdHIsIGNodW5rX3R5cGUpOwo+ICAg ICAgICAgICAgICBhdl9sb2coYXZjdHgsIEFWX0xPR19XQVJOSU5HLCAic2tpcHBpbmcgdW5zdXBw b3J0ZWQgY2h1bms6ICVzXG4iLAo+IEBAIC0xNTA5LDIxICsxNTc0LDUwOCBAQCBleGlmX2VuZDoK PiAgICAgICAgICB9Cj4gICAgICB9Cj4KPiAtICAgIGlmICghKmdvdF9mcmFtZSkgewo+IC0gICAg ICAgIGF2X2xvZyhhdmN0eCwgQVZfTE9HX0VSUk9SLCAiaW1hZ2UgZGF0YSBub3QgZm91bmRcbiIp Owo+IC0gICAgICAgIHJldHVybiBBVkVSUk9SX0lOVkFMSUREQVRBOwo+ICsgICAgcmV0dXJuIHNp emU7Cj4gK30KPiArCj4gK2ludCBpbml0X2NhbnZhc19mcmFtZShXZWJQQ29udGV4dCAqcywgaW50 IGZvcm1hdCwgaW50IGtleV9mcmFtZSkKPiArewo+ICsgICAgQVZGcmFtZSAqY2FudmFzID0gcy0+ Y2FudmFzX2ZyYW1lLmY7Cj4gKyAgICBpbnQgaGVpZ2h0Owo+ICsgICAgaW50IHJldDsKPiArCj4g KyAgICAvLyBjYW52YXMgaXMgbmVlZGVkIG9ubHkgZm9yIGFuaW1hdGlvbgo+ICsgICAgaWYgKCEo cy0+dnA4eF9mbGFncyAmIFZQOFhfRkxBR19BTklNQVRJT04pKQo+ICsgICAgICAgIHJldHVybiAw Owo+ICsKPiArICAgIC8vIGF2b2lkIGluaXQgZm9yIG5vbi1rZXkgZnJhbWVzIHdob3NlIGZvcm1h dCBhbmQgc2l6ZSBkaWQgbm90IGNoYW5nZQo+ICsgICAgaWYgKCFrZXlfZnJhbWUgJiYKPiArICAg ICAgICBjYW52YXMtPmRhdGFbMF0gJiYKPiArICAgICAgICBjYW52YXMtPmZvcm1hdCA9PSBmb3Jt YXQgJiYKPiArICAgICAgICBjYW52YXMtPndpZHRoICA9PSBzLT5jYW52YXNfd2lkdGggJiYKPiAr ICAgICAgICBjYW52YXMtPmhlaWdodCA9PSBzLT5jYW52YXNfaGVpZ2h0KQo+ICsgICAgICAgIHJl dHVybiAwOwo+ICsKPiArICAgIC8vIGNhbnZhcyBjaGFuZ2VzIHdpdGhpbiBJUFBQIHNlcXVlbmNl cyB3aWxsIGxvb3NlIHRocmVhZCBzeW5jCgpsb3NlLgoKPiArICAgIC8vIGJlY2F1c2Ugb2YgdGhl IFRocmVhZEZyYW1lIHJlYWxsb2NhdGlvbiBhbmQgd2lsbCB3YWl0IGZvcmV2ZXIKPiArICAgIC8v IHNvIGlmIGZyYW1lLXRocmVhZGluZyBpcyB1c2VkLCBmb3JiaWQgY2FudmFzIGNoYW5nZXMgYW5k IHVubG9jawo+ICsgICAgLy8gcHJldmlvdXMgZnJhbWVzCgpJIHRoaW5rIHRoaXMgbWlnaHQgbmVl ZCBzb21lIGFkZGl0aW9uYWwgd29yayBhZnRlciBsYW5kaW5nLiBUaGUKY2FudmFzLCBhcyB3ZWJw IGRlZmluZXMgaXQsIGlzIGZpeGVkLiBJbmRpdmlkdWFsIGZyYW1lcyBjYW4gYmUKc21hbGxlci4g SSB0aGluayBtaXhlZCBjb250ZW50IChsb3NzeSBhbmQgbG9zc2xlc3MpIG1pZ2h0IHRyaWdnZXIg dGhpcwpwYXRoIGFuZCByZXN1bHQgaW4gY29ycnVwdGlvbi4KCj4gKyAgICBpZiAoIWtleV9mcmFt ZSAmJiBjYW52YXMtPmRhdGFbMF0pIHsKPiArICAgICAgICBpZiAocy0+YXZjdHgtPnRocmVhZF9j b3VudCA+IDEpIHsKPiArICAgICAgICAgICAgYXZfbG9nKHMtPmF2Y3R4LCBBVl9MT0dfV0FSTklO RywgIkNhbnZhcyBjaGFuZ2UgZGV0ZWN0ZWQuIFRoZSBvdXRwdXQgd2lsbCBiZSBkYW1hZ2VkLiBV c2UgLXRocmVhZHMgMSB0byB0cnkgZGVjb2Rpbmcgd2l0aCBiZXN0IGVmZm9ydC5cbiIpOwo+ICsg ICAgICAgICAgICAvLyB1bmxvY2sgcHJldmlvdXMgZnJhbWVzIHRoYXQgaGF2ZSBzZW50IGFuIF9h d2FpdCgpIGNhbGwKPiArICAgICAgICAgICAgZmZfdGhyZWFkX3JlcG9ydF9wcm9ncmVzcygmcy0+ Y2FudmFzX2ZyYW1lLCBJTlRfTUFYLCAwKTsKPiArICAgICAgICAgICAgcmV0dXJuIEFWRVJST1Jf UEFUQ0hXRUxDT01FOwo+ICsgICAgICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgICAgIC8vIHdhcm4g Zm9yIGRhbWFnZWQgZnJhbWVzCj4gKyAgICAgICAgICAgIGF2X2xvZyhzLT5hdmN0eCwgQVZfTE9H X1dBUk5JTkcsICJDYW52YXMgY2hhbmdlIGRldGVjdGVkLiBUaGUgb3V0cHV0IHdpbGwgYmUgZGFt YWdlZC5cbiIpOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gWy4uLl0KPiArCj4gK3N0YXRp YyBpbnQgd2VicF9kZWNvZGVfZnJhbWUoQVZDb2RlY0NvbnRleHQgKmF2Y3R4LCBBVkZyYW1lICpw LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZ290X2ZyYW1lLCBBVlBhY2tl dCAqYXZwa3QpCj4gK3sKPiArICAgIFdlYlBDb250ZXh0ICpzID0gYXZjdHgtPnByaXZfZGF0YTsK PiArICAgIGludCByZXQ7Cj4gKyAgICBpbnQga2V5X2ZyYW1lID0gYXZwa3QtPmZsYWdzICYgQVZf UEtUX0ZMQUdfS0VZOwo+ICsKPiArICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXZwa3QtPnNpZGVf ZGF0YV9lbGVtczsgKytpKSB7Cj4gKyAgICAgICAgaWYgKGF2cGt0LT5zaWRlX2RhdGFbaV0udHlw ZSA9PSBBVl9QS1RfREFUQV9ORVdfRVhUUkFEQVRBKSB7Cj4gKyAgICAgICAgICAgIHJldCA9IHdl YnBfZGVjb2RlX2ZyYW1lX2NvbW1vbihhdmN0eCwgYXZwa3QtPnNpZGVfZGF0YVtpXS5kYXRhLAo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF2cGt0LT5zaWRlX2RhdGFb aV0uc2l6ZSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RfZnJh bWUsIGtleV9mcmFtZSk7CgppbmRlbnQgaXMgb2ZmLgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1k ZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBl Zy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBl Zy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==