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 307F24280B for ; Fri, 1 Apr 2022 00:24:40 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3AE8D68B234; Fri, 1 Apr 2022 03:24:39 +0300 (EEST) Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5EF2768B1E2 for ; Fri, 1 Apr 2022 03:24:32 +0300 (EEST) Received: by mail-wm1-f41.google.com with SMTP id c190-20020a1c35c7000000b0038e37907b5bso2616653wma.0 for ; Thu, 31 Mar 2022 17:24:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=N/HqMsuoU7pqBrempAv9EtW4yityp2OAWJW1M/Ip41o=; b=U+mU/WgbTjikp2U+UtISW+A54jj0HDKeJlgO3ze3UqnfNW3rOEm5asKhDSUyYOcu5o zcuq3hZKoZnft8Nwhomqy3Lci1toXa0WMwki4OPWUO1/vywIbq8LA66/eVyjjO1mcvU0 8JT+/wSu/tRLIefGQBQEZN+R5BipRAmlbnS5pMv4Afs6A/cOt+1sLafdWbSrAK1Opjdx PtUPTexFrsw3Rv3M90M8d/YB/uTOz3leSzoy4fKlBkprRu2G5eHx7aPNc2orE8m3aVRF sLsWlnB4HUAM5aYI2TLEfF660fpkigFF+CdHwJWKMrgkc6Tp6Vlc2P8c3gbj5qzIAumY shVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=N/HqMsuoU7pqBrempAv9EtW4yityp2OAWJW1M/Ip41o=; b=QDYi7zi16+F2o1o1HAYfN6Bwx7C2Vgobhvn+/tO8hCvAVOM6mDBpsLiPAAhat1PVH1 DBzUCopKEJwmOeY4mYEShbi6CK3JBdHxfydhtDwdfg0BseneYKgQgRn6VyKvH9z816Sy q3sEd77j0H0wJ2C2/ezEOW9wWYRcNF/r98iGdjbeCfjKIxgygN+dfngXDd8ZyWcB2/WF 2ESRaf7x1lr6RzogyiZdbB21zQZgZtI2GWmF7AM2y3P4G3F/JGD/wzfEqkxkznkdDZGw Pr0TDQj8Eg+0C2lmigcr7vACvyDZOpFqHCEo/sHhhVjcP6lo1NrJ2rF9e2+4wzMGgukl JF/A== X-Gm-Message-State: AOAM532rTNgT2sl+3L8q9Fbcppo/GB/yehbgowsVxRbCTUdWc7Lds15+ xTP4R1scXLZrP8eKlLf9pmNreKY4u0c1/eITGQVdT3Gkqtc= X-Google-Smtp-Source: ABdhPJwsd2oKq2v+RXarOcqsCr9dVBGd4IhcBVoaRYATuMH4aQ1l8dJz3AowBe/q/fjzbRbIzDg9CRgPcxQoFnWBMMs= X-Received: by 2002:a1c:ed11:0:b0:38a:dd7:ab91 with SMTP id l17-20020a1ced11000000b0038a0dd7ab91mr6708545wmh.37.1648772671251; Thu, 31 Mar 2022 17:24:31 -0700 (PDT) MIME-Version: 1.0 References: <20220401000852.156566-1-markg85@gmail.com> <20220401000852.156566-2-markg85@gmail.com> In-Reply-To: <20220401000852.156566-2-markg85@gmail.com> From: Mark Gaiser Date: Fri, 1 Apr 2022 02:23:23 +0200 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v11 1/1] avformat: Add IPFS protocol support. 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 Cc: michael@niedermayer.cc, =?UTF-8?Q?Tomas_H=C3=A4rdin?= , Andreas Rheinhardt 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: T24gRnJpLCBBcHIgMSwgMjAyMiBhdCAyOjA5IEFNIE1hcmsgR2Fpc2VyIDxtYXJrZzg1QGdtYWls LmNvbT4gd3JvdGU6Cgo+IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvcjoKPiAtIGZmcGxheSBp cGZzOi8vPGNpZD4KPiAtIGZmcGxheSBpcG5zOi8vPGNpZD4KPgo+IElQRlMgZGF0YSBjYW4gYmUg cGxheWVkIGZyb20gc28gY2FsbGVkICJpcGZzIGdhdGV3YXlzIi4KPiBBIGdhdGV3YXkgaXMgZXNz ZW50aWFsbHkgYSB3ZWJzZXJ2ZXIgdGhhdCBnaXZlcyBhY2Nlc3MgdG8gdGhlCj4gZGlzdHJpYnV0 ZWQgSVBGUyBuZXR3b3JrLgo+Cj4gVGhpcyBwcm90b2NvbCBzdXBwb3J0IChpcGZzIGFuZCBpcG5z KSB0aGVyZWZvcmUgdHJhbnNsYXRlcwo+IGlwZnM6Ly8gYW5kIGlwbnM6Ly8gdG8gYSBodHRwOi8v IHVybC4gVGhpcyByZXN1bHRpbmcgdXJsIGlzCj4gdGhlbiBoYW5kbGVkIGJ5IHRoZSBodHRwIHBy b3RvY29sLiBJdCBjb3VsZCBhbHNvIGJlIGh0dHBzCj4gZGVwZW5kaW5nIG9uIHRoZSBnYXRld2F5 IHByb3ZpZGVkLgo+Cj4gVG8gdXNlIHRoaXMgcHJvdG9jb2wsIGEgZ2F0ZXdheSBtdXN0IGJlIHBy b3ZpZGVkLgo+IElmIHlvdSBkbyBub3RoaW5nIGl0IHdpbGwgdHJ5IHRvIGZpbmQgaXQgaW4geW91 cgo+ICRIT01FLy5pcGZzL2dhdGV3YXkgZmlsZS4gVGhlIHdheXMgdG8gc2V0IGl0IG1hbnVhbGx5 IGFyZToKPiAxLiBEZWZpbmUgYSAtZ2F0ZXdheSA8dXJsPiB0byB0aGUgZ2F0ZXdheS4KPiAyLiBE ZWZpbmUgJElQRlNfR0FURVdBWSB3aXRoIHRoZSBmdWxsIGh0dHAgbGluayB0byB0aGUgZ2F0ZXdh eS4KPiAzLiBEZWZpbmUgJElQRlNfUEFUSCBhbmQgcG9pbnQgaXQgdG8gdGhlIElQRlMgZGF0YSBw YXRoLgo+IDQuIEhhdmUgSVBGUyBydW5uaW5nIGluIHlvdXIgbG9jYWwgdXNlciBmb2xkZXIgKHVu ZGVyICRIT01FLy5pcGZzKS4KPgo+IFNpZ25lZC1vZmYtYnk6IE1hcmsgR2Fpc2VyIDxtYXJrZzg1 QGdtYWlsLmNvbT4KPiAtLS0KPiAgY29uZmlndXJlICAgICAgICAgICAgICAgICB8ICAgMiArCj4g IGRvYy9wcm90b2NvbHMudGV4aSAgICAgICAgfCAgMzAgKysrKwo+ICBsaWJhdmZvcm1hdC9NYWtl ZmlsZSAgICAgIHwgICAyICsKPiAgbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYyB8IDMyOCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBsaWJhdmZvcm1hdC9wcm90b2Nv bHMuYyAgIHwgICAyICsKPiAgNSBmaWxlcyBjaGFuZ2VkLCAzNjQgaW5zZXJ0aW9ucygrKQo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwo+Cj4gZGlmZiAtLWdp dCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQo+IGluZGV4IGU0ZDM2YWE2MzkuLjU1YWY5MDk1N2Eg MTAwNzU1Cj4gLS0tIGEvY29uZmlndXJlCj4gKysrIGIvY29uZmlndXJlCj4gQEAgLTM1NzksNiAr MzU3OSw4IEBAIHVkcF9wcm90b2NvbF9zZWxlY3Q9Im5ldHdvcmsiCj4gIHVkcGxpdGVfcHJvdG9j b2xfc2VsZWN0PSJuZXR3b3JrIgo+ICB1bml4X3Byb3RvY29sX2RlcHM9InN5c191bl9oIgo+ICB1 bml4X3Byb3RvY29sX3NlbGVjdD0ibmV0d29yayIKPiAraXBmc19wcm90b2NvbF9zZWxlY3Q9Imh0 dHBzX3Byb3RvY29sIgo+ICtpcG5zX3Byb3RvY29sX3NlbGVjdD0iaHR0cHNfcHJvdG9jb2wiCj4K PiAgIyBleHRlcm5hbCBsaWJyYXJ5IHByb3RvY29scwo+ICBsaWJhbXFwX3Byb3RvY29sX2RlcHM9 ImxpYnJhYmJpdG1xIgo+IGRpZmYgLS1naXQgYS9kb2MvcHJvdG9jb2xzLnRleGkgYi9kb2MvcHJv dG9jb2xzLnRleGkKPiBpbmRleCBkMjA3ZGYwYjUyLi43YzljMGE0ODA4IDEwMDY0NAo+IC0tLSBh L2RvYy9wcm90b2NvbHMudGV4aQo+ICsrKyBiL2RvYy9wcm90b2NvbHMudGV4aQo+IEBAIC0yMDI1 LDUgKzIwMjUsMzUgQEAgZGVjb2RpbmcgZXJyb3JzLgo+Cj4gIEBlbmQgdGFibGUKPgo+ICtAc2Vj dGlvbiBpcGZzCj4gKwo+ICtJbnRlclBsYW5ldGFyeSBGaWxlIFN5c3RlbSAoSVBGUykgcHJvdG9j b2wgc3VwcG9ydC4gT25lIGNhbiBhY2Nlc3MgZmlsZXMKPiBzdG9yZWQKPiArb24gdGhlIElQRlMg bmV0d29yayB0aHJvdWdoIHNvIGNhbGxlZCBnYXRld2F5cy4gVGhvc2UgYXJlIGh0dHAocykKPiBl bmRwb2ludHMuCj4gK1RoaXMgcHJvdG9jb2wgd3JhcHMgdGhlIElQRlMgbmF0aXZlIHByb3RvY29s cyAoaXBmczovLyBhbmQgaXBuczovLykgdG8gYmUKPiBzZW5kCj4gK3RvIHN1Y2ggYSBnYXRld2F5 LiBVc2VycyBjYW4gKGFuZCBzaG91bGQpIGhvc3QgdGhlaXIgb3duIG5vZGUgd2hpY2ggbWVhbnMK PiB0aGlzCj4gK3Byb3RvY29sIHdpbGwgdXNlIHlvdXIgbG9jYWwgbWFjaGluZSBnYXRld2F5IHRv IGFjY2VzcyBmaWxlcyBvbiB0aGUgSVBGUwo+IG5ldHdvcmsuCj4gKwo+ICtJZiBhIHVzZXIgZG9l c24ndCBoYXZlIGEgbm9kZSBvZiB0aGVpciBvd24gdGhlbiB0aGUgcHVibGljIGdhdGV3YXkKPiBk d2ViLmxpbmsgaXMKPiArdXNlZCBieSBkZWZhdWx0Lgo+ICsKPiArWW91IGNhbiB1c2UgdGhpcyBw cm90b2NvbCBpbiAyIHdheXMuIFVzaW5nIElQRlM6Cj4gK0BleGFtcGxlCj4gK2ZmcGxheSBpcGZz Oi8vUW1iR3RKZzIzc2todkZtdTltSmllUFZCeWhmenU1cndvNzRNRWtWRFlBbUY1VAo+ICtAZW5k IGV4YW1wbGUKPiArCj4gK09yIHRoZSBJUE5TIHByb3RvY29sIChJUE5TIGlzIG11dGFibGUgSVBG Uyk6Cj4gK0BleGFtcGxlCj4gK2ZmcGxheSBpcG5zOi8vUW1iR3RKZzIzc2todkZtdTltSmllUFZC eWhmenU1cndvNzRNRWtWRFlBbUY1VAo+ICtAZW5kIGV4YW1wbGUKPiArCj4gK1lvdSBjYW4gYWxz byBjaGFuZ2UgdGhlIGdhdGV3YXkgdG8gYmUgdXNlZDoKPiArCj4gK0B0YWJsZSBAb3B0aW9uCj4g Kwo+ICtAaXRlbSBnYXRld2F5Cj4gK0RlZmluZXMgdGhlIGdhdGV3YXkgdG8gdXNlLiBXaGVuIG5v dGhpbmcgaXMgcHJvdmlkZWQgdGhlIHByb3RvY29sIHdpbGwKPiBmaXJzdCB0cnkKPiAreW91ciBs b2NhbCBnYXRld2F5LiBJZiB0aGF0IGZhaWxzIGR3ZWIubGluayB3aWxsIGJlIHVzZWQuCj4gKwo+ ICtAZW5kIHRhYmxlCj4KPiAgQGMgbWFuIGVuZCBQUk9UT0NPTFMKPiBkaWZmIC0tZ2l0IGEvbGli YXZmb3JtYXQvTWFrZWZpbGUgYi9saWJhdmZvcm1hdC9NYWtlZmlsZQo+IGluZGV4IGQ3MTgyZDZi ZDguLmUzMjMzZmQ3YWMgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmb3JtYXQvTWFrZWZpbGUKPiArKysg Yi9saWJhdmZvcm1hdC9NYWtlZmlsZQo+IEBAIC02NjAsNiArNjYwLDggQEAgT0JKUy0kKENPTkZJ R19TUlRQX1BST1RPQ09MKSAgICAgICAgICAgICArPQo+IHNydHBwcm90by5vIHNydHAubwo+ICBP QkpTLSQoQ09ORklHX1NVQkZJTEVfUFJPVE9DT0wpICAgICAgICAgICs9IHN1YmZpbGUubwo+ICBP QkpTLSQoQ09ORklHX1RFRV9QUk9UT0NPTCkgICAgICAgICAgICAgICs9IHRlZXByb3RvLm8gdGVl X2NvbW1vbi5vCj4gIE9CSlMtJChDT05GSUdfVENQX1BST1RPQ09MKSAgICAgICAgICAgICAgKz0g dGNwLm8KPiArT0JKUy0kKENPTkZJR19JUEZTX1BST1RPQ09MKSAgICAgICAgICAgICArPSBpcGZz Z2F0ZXdheS5vCj4gK09CSlMtJChDT05GSUdfSVBOU19QUk9UT0NPTCkgICAgICAgICAgICAgKz0g aXBmc2dhdGV3YXkubwo+ICBUTFMtT0JKUy0kKENPTkZJR19HTlVUTFMpICAgICAgICAgICAgICAg ICs9IHRsc19nbnV0bHMubwo+ICBUTFMtT0JKUy0kKENPTkZJR19MSUJUTFMpICAgICAgICAgICAg ICAgICs9IHRsc19saWJ0bHMubwo+ICBUTFMtT0JKUy0kKENPTkZJR19NQkVEVExTKSAgICAgICAg ICAgICAgICs9IHRsc19tYmVkdGxzLm8KPiBkaWZmIC0tZ2l0IGEvbGliYXZmb3JtYXQvaXBmc2dh dGV3YXkuYyBiL2xpYmF2Zm9ybWF0L2lwZnNnYXRld2F5LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAuLjcyNWNjNWU0NzQKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIv bGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwo+IEBAIC0wLDAgKzEsMzI4IEBACj4gKy8qCj4gKyAq IElQRlMgYW5kIElQTlMgcHJvdG9jb2wgc3VwcG9ydCB0aHJvdWdoIElQRlMgR2F0ZXdheS4KPiAr ICogQ29weXJpZ2h0IChjKSAyMDIyIE1hcmsgR2Fpc2VyCj4gKyAqCj4gKyAqIFRoaXMgZmlsZSBp cyBwYXJ0IG9mIEZGbXBlZy4KPiArICoKPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgo+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gKyAqIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgo+ICsgKiB2ZXJz aW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KPiArICoKPiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCj4gKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91 dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCj4gKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCj4gKyAqIExlc3Nl ciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCj4gKyAqCj4gKyAqIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ dWJsaWMKPiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQo+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BCj4gMDIxMTAtMTMwMSBVU0EKPiArICovCj4gKwo+ ICsjaW5jbHVkZSAibGliYXZ1dGlsL2F2c3RyaW5nLmgiCj4gKyNpbmNsdWRlICJsaWJhdnV0aWwv b3B0LmgiCj4gKyNpbmNsdWRlICJ1cmwuaCIKPiArI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4gKwo+ ICt0eXBlZGVmIHN0cnVjdCBJUEZTR2F0ZXdheUNvbnRleHQgewo+ICsgICAgQVZDbGFzcyAqY2xh c3M7Cj4gKyAgICBVUkxDb250ZXh0ICppbm5lcjsKPiArICAgIC8vIElzIGZpbGxlZCBieSB0aGUg LWdhdGV3YXkgYXJndW1lbnQgYW5kIG5vdCBjaGFuZ2VkIGFmdGVyLgo+ICsgICAgY2hhciAqZ2F0 ZXdheTsKPiArICAgIC8vIElmIHRoZSBhYm92ZSBnYXRld2F5IGlzIG5vbiBudWxsLCBpdCB3aWxs IGJlIGNvcGllZCBpbnRvIHRoaXMKPiBidWZmZXIuCj4gKyAgICAvLyBFbHNlIHRoaXMgYnVmZmVy IHdpbGwgY29udGFpbiB0aGUgYXV0byBkZXRlY3RlZCBnYXRld2F5Lgo+ICsgICAgLy8gSW4gZWl0 aGVyIGNhc2UsIHRoZSBnYXRld2F5IHRvIHVzZSB3aWxsIGJlIGluIHRoaXMgYnVmZmVyLgo+ICsg ICAgY2hhciBnYXRld2F5X2J1ZmZlcltQQVRIX01BWF07Cj4gK30gSVBGU0dhdGV3YXlDb250ZXh0 Owo+ICsKPiArLy8gQSBiZXN0LWVmZm9ydCB3YXkgdG8gZmluZCB0aGUgSVBGUyBnYXRld2F5Lgo+ ICsvLyBPbmx5IHRoZSBtb3N0IGFwcHJvcGlhdGUgZ2F0ZXdheSBpcyBzZXQuIEl0J3Mgbm90IGFj dHVhbGx5IHJlcXVlc3RlZAo+ICsvLyAoaHR0cCBjYWxsKSB0byBwcmV2ZW50IGEgcG90ZW50aWFs IHNsb3dkb3duIGluIHN0YXJ0dXAuIEEgcG90ZW50aWFsCj4gdGltZW91dAo+ICsvLyBpcyBoYW5k bGVkIGJ5IHRoZSBIVFRQIHByb3RvY29sLgo+ICtzdGF0aWMgaW50IHBvcHVsYXRlX2lwZnNfZ2F0 ZXdheShVUkxDb250ZXh0ICpoKQo+ICt7Cj4gKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBo LT5wcml2X2RhdGE7Cj4gKyAgICBjaGFyIGlwZnNfZnVsbF9kYXRhX2ZvbGRlcltQQVRIX01BWF07 Cj4gKyAgICBjaGFyIGlwZnNfZ2F0ZXdheV9maWxlW1BBVEhfTUFYXTsKPiArICAgIHN0cnVjdCBz dGF0IHN0Owo+ICsgICAgaW50IHN0YXRfcmV0ID0gMDsKPiArICAgIGludCByZXQgPSBBVkVSUk9S KEVJTlZBTCk7Cj4gKyAgICBGSUxFICpnYXRld2F5X2ZpbGUgPSBOVUxMOwo+ICsKPiArICAgIC8v IFRlc3QgJElQRlNfR0FURVdBWS4KPiArICAgIGlmIChnZXRlbnYoIklQRlNfR0FURVdBWSIpICE9 IE5VTEwpIHsKPiArICAgICAgICBpZiAoc25wcmludGYoYy0+Z2F0ZXdheV9idWZmZXIsIHNpemVv ZihjLT5nYXRld2F5X2J1ZmZlciksICIlcyIsCj4gKyAgICAgICAgICAgICAgICAgICAgIGdldGVu digiSVBGU19HQVRFV0FZIikpID49Cj4gc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSkgewo+ICsg ICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGU19HQVRFV0FZIGVu dmlyb25tZW50Cj4gdmFyaWFibGUgIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0aC4gIgo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJXZSBhbGxvdyBhIG1heCBvZiAlenUKPiBjaGFyYWN0ZXJz XG4iLAo+ICsgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSk7Cj4g KyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiArICAgICAgICAgICAgZ290byBl cnI7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgICAgICByZXQgPSAxOwo+ICsgICAgICAgIGdvdG8g ZXJyOwo+ICsgICAgfSBlbHNlCj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19ERUJVRywgIiRJ UEZTX0dBVEVXQVkgaXMgZW1wdHkuXG4iKTsKPiArCj4gKyAgICAvLyBXZSBuZWVkIHRvIGtub3cg dGhlIElQRlMgZm9sZGVyIHRvIC0gZXZlbnR1YWxseSAtIHJlYWQgdGhlCj4gY29udGVudHMgb2YK PiArICAgIC8vIHRoZSAiZ2F0ZXdheSIgZmlsZSB3aGljaCB3b3VsZCB0ZWxsIHVzIHRoZSBnYXRl d2F5IHRvIHVzZS4KPiArICAgIGlmIChnZXRlbnYoIklQRlNfUEFUSCIpID09IE5VTEwpIHsKPiAr ICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0RFQlVHLCAiJElQRlNfUEFUSCBpcyBlbXB0eS5cbiIp Owo+ICsKPiArICAgICAgICAvLyBUcnkgdmlhIHRoZSBob21lIGZvbGRlci4KPiArICAgICAgICBp ZiAoZ2V0ZW52KCJIT01FIikgPT0gTlVMTCkgewo+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZf TE9HX1dBUk5JTkcsICIkSE9NRSBhcHBlYXJzIHRvIGJlIGVtcHR5LlxuIik7Cj4gKyAgICAgICAg ICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiArICAgICAgICAgICAgZ290byBlcnI7Cj4gKyAg ICAgICAgfQo+ICsKPiArICAgICAgICAvLyBWZXJpZnkgdGhlIGNvbXBvc2VkIHBhdGggZml0cy4K PiArICAgICAgICBpZiAoc25wcmludGYoaXBmc19mdWxsX2RhdGFfZm9sZGVyLCBzaXplb2YoaXBm c19mdWxsX2RhdGFfZm9sZGVyKSwKPiArICAgICAgICAgICAgICAgICAgICAgIiVzLy5pcGZzLyIs IGdldGVudigiSE9NRSIpKSA+PQo+IHNpemVvZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpKSB7Cj4g KyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBJUEZTIGRhdGEgcGF0 aCBleGNlZWRzIHRoZSAiCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Im1heCBwYXRoIGxlbmd0aCAoJXp1KVxuIiwKPiArICAgICAgICAgICAgICAgICAgIHNpemVvZihp cGZzX2Z1bGxfZGF0YV9mb2xkZXIpKTsKPiArICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5W QUwpOwo+ICsgICAgICAgICAgICBnb3RvIGVycjsKPiArICAgICAgICB9Cj4gKwo+ICsgICAgICAg IC8vIFN0YXQgdGhlIGZvbGRlci4KPiArICAgICAgICAvLyBJdCBzaG91bGQgZXhpc3QgaW4gYSBk ZWZhdWx0IElQRlMgc2V0dXAgd2hlbiBydW4gYXMgbG9jYWwgdXNlci4KPiArI2lmbmRlZiBfV0lO MzIKPiArICAgICAgICBzdGF0X3JldCA9IHN0YXQoaXBmc19mdWxsX2RhdGFfZm9sZGVyLCAmc3Qp Owo+ICsjZWxzZQo+ICsgICAgICAgIHN0YXRfcmV0ID0gd2luMzJfc3RhdChpcGZzX2Z1bGxfZGF0 YV9mb2xkZXIsICZzdCk7Cj4gKyNlbmRpZgo+ICsgICAgICAgIGlmIChzdGF0X3JldCA8IDApIHsK PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiVW5hYmxlIHRvIGZpbmQgSVBG UyBmb2xkZXIuIFdlCj4gdHJpZWQ6XG4iKTsKPiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xP R19JTkZPLCAiLSAkSVBGU19QQVRILCB3aGljaCB3YXMgZW1wdHkuXG4iKTsKPiArICAgICAgICAg ICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiLSAkSE9NRS8uaXBmcyAoZnVsbCB1cmk6ICVzKSB3 aGljaAo+IGRvZXNuJ3QgZXhpc3QuXG4iLCBpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpOwo+ICsgICAg ICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7Cj4gKyAgICAgICAgICAgIGdvdG8gZXJyOwo+ ICsgICAgICAgIH0KPiArICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgaWYgKHNucHJpbnRmKGlwZnNf ZnVsbF9kYXRhX2ZvbGRlciwKPiBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVyKSwgIiVzIiwK PiArICAgICAgICAgICAgICAgICBnZXRlbnYoIklQRlNfUEFUSCIpKSA+PSBzaXplb2YoaXBmc19m dWxsX2RhdGFfZm9sZGVyKSkgewo+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5J TkcsICJUaGUgSVBGU19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlCj4gIgo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNlZWRzIHRoZSBtYXhpbXVtIGxlbmd0aC4g Igo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZSBhbGxvdyBhIG1h eCBvZiAlenUKPiBjaGFyYWN0ZXJzXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGMt PmdhdGV3YXlfYnVmZmVyKSk7Cj4gKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsK PiArICAgICAgICAgICAgZ290byBlcnI7Cj4gKyAgICAgICAgfQo+ICsKPiArICAgIH0KPiArCj4g KyAgICAvLyBDb3B5IHRoZSBmdWxseSBjb21wb3NlZCBnYXRld2F5IHBhdGggaW50byBpcGZzX2dh dGV3YXlfZmlsZS4KPiArICAgIGlmIChzbnByaW50ZihpcGZzX2dhdGV3YXlfZmlsZSwgc2l6ZW9m KGlwZnNfZ2F0ZXdheV9maWxlKSwKPiAiJXNnYXRld2F5IiwKPiArICAgICAgICAgICAgICAgICBp cGZzX2Z1bGxfZGF0YV9mb2xkZXIpID49IHNpemVvZihpcGZzX2dhdGV3YXlfZmlsZSkpIHsKPiAr ICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGUyBnYXRld2F5IGZpbGUg cGF0aCBleGNlZWRzICIKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUg bWF4IHBhdGggbGVuZ3RoICglenUpXG4iLAo+ICsgICAgICAgICAgICAgICBzaXplb2YoaXBmc19n YXRld2F5X2ZpbGUpKTsKPiArICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7Cj4gKyAgICAg ICAgZ290byBlcnI7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8gR2V0IHRoZSBjb250ZW50cyBvZiB0 aGUgZ2F0ZXdheSBmaWxlLgo+ICsgICAgZ2F0ZXdheV9maWxlID0gYXZfZm9wZW5fdXRmOChpcGZz X2dhdGV3YXlfZmlsZSwgInIiKTsKPiArICAgIGlmICghZ2F0ZXdheV9maWxlKSB7Cj4gKyAgICAg ICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIElQRlMgZ2F0ZXdheSBmaWxlIChmdWxs IHVyaTogJXMpCj4gZG9lc24ndCBleGlzdC4gIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIklzIHRoZSBnYXRld2F5IGVuYWJsZWQ/XG4iLAo+ICsgICAgICAgICAgICAgICBp cGZzX2dhdGV3YXlfZmlsZSk7Cj4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihFTk9FTlQpOwo+ICsg ICAgICAgIGdvdG8gZXJyOwo+ICsgICAgfQo+ICsKPiArICAgIC8vIFJlYWQgYSBzaW5nbGUgbGlu ZSAoZmdldHMgc3RvcHMgYXQgbmV3IGxpbmUgbWFyaykuCj4gKyAgICBpZiAoIWZnZXRzKGMtPmdh dGV3YXlfYnVmZmVyLCBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpIC0gMSwKPiBnYXRld2F5X2Zp bGUpKSB7Cj4gKyAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlVuYWJsZSB0byByZWFk IGZyb20gZmlsZSAoZnVsbCB1cmk6Cj4gJXMpLlxuIiwKPiArICAgICAgICAgICAgIGlwZnNfZ2F0 ZXdheV9maWxlKTsKPiArICAgICAgcmV0ID0gQVZFUlJPUihFTk9FTlQpOwo+ICsgICAgICBnb3Rv IGVycjsKPiArICAgIH0KPiArCj4gKyAgICAvLyBSZXBsYWNlIGZpcnN0IG9jY3VyZW5jZSBvZiBl bmQgb2YgbGluZSB3aXRoIFwwCj4gKyAgICBjLT5nYXRld2F5X2J1ZmZlcltzdHJjc3BuKGMtPmdh dGV3YXlfYnVmZmVyLCAiXHJcbiIpXSA9IDA7Cj4gKwo+ICsgICAgLy8gSWYgc3RybGVuIGZpbmRz IGFueXRoaW5nIGxvbmdlciB0aGVuIDAgY2hhcmFjdGVycyB0aGVuIHdlIGhhdmUgYQo+ICsgICAg Ly8gcG90ZW50aWFsIGdhdGV3YXkgdXJsLgo+ICsgICAgaWYgKCpjLT5nYXRld2F5X2J1ZmZlciA9 PSAnXDAnKSB7Cj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIElQRlMg Z2F0ZXdheSBmaWxlIChmdWxsIHVyaTogJXMpCj4gYXBwZWFycyB0byBiZSBlbXB0eS4gIgo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklzIHRoZSBnYXRld2F5IHN0YXJ0ZWQ/ XG4iLAo+ICsgICAgICAgICAgICAgICBpcGZzX2dhdGV3YXlfZmlsZSk7Cj4gKyAgICAgICAgcmV0 ID0gQVZFUlJPUihFSUxTRVEpOwo+ICsgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgfSBlbHNlIHsK PiArICAgICAgICAvLyBXZSdyZSBkb25lLCB0aGUgYy0+Z2F0ZXdheV9idWZmZXIgaGFzIHNvbWV0 aGluZyB0aGF0IGxvb2tzCj4gdmFsaWQuCj4gKyAgICAgICAgcmV0ID0gMTsKPiArICAgICAgICBn b3RvIGVycjsKPiArICAgIH0KPiArCj4gK2VycjoKPiArICAgIGlmIChnYXRld2F5X2ZpbGUpCj4g KyAgICAgICAgZmNsb3NlKGdhdGV3YXlfZmlsZSk7Cj4gKwo+ICsgICAgcmV0dXJuIHJldDsKPiAr fQo+ICsKPiArc3RhdGljIGludCB0cmFuc2xhdGVfaXBmc190b19odHRwKFVSTENvbnRleHQgKmgs IGNvbnN0IGNoYXIgKnVyaSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBmbGFncywgQVZEaWN0aW9uYXJ5ICoqb3B0aW9ucykKPiArewo+ICsgICAgY29uc3QgY2hhciAq aXBmc19jaWQ7Cj4gKyAgICBjaGFyICpmdWxsdXJpID0gTlVMTDsKPiArICAgIGludCByZXQ7Cj4g KyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7Cj4gKwo+ICsgICAgLy8g VGVzdCBmb3IgaXBmczovLywgaXBmczosIGlwbnM6Ly8gYW5kIGlwbnM6LiBUaGlzIHByZWZpeCBp cwo+IHN0cmlwcGVkIGZyb20KPiArICAgIC8vIHRoZSBzdHJpbmcgbGVhdmluZyBqdXN0IHRoZSBD SUQgaW4gaXBmc19jaWQuCj4gKyAgICBpbnQgaXNfaXBmcyA9IGF2X3N0cmlzdGFydCh1cmksICJp cGZzOi8vIiwgJmlwZnNfY2lkKTsKPiArICAgIGludCBpc19pcG5zID0gYXZfc3RyaXN0YXJ0KHVy aSwgImlwbnM6Ly8iLCAmaXBmc19jaWQpOwo+ICsKPiArICAgIC8vIFdlIG11c3QgaGF2ZSBlaXRo ZXIgaXBucyBvciBpcGZzLgo+ICsgICAgaWYgKCFpc19pcGZzICYmICFpc19pcG5zKSB7Cj4gKyAg ICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0df V0FSTklORywgIlVuc3VwcG9ydGVkIHVybCAlc1xuIiwgdXJpKTsKPiArICAgICAgICBnb3RvIGVy cjsKPiArICAgIH0KPiArCj4gKyAgICAvLyBJZiB0aGUgQ0lEIGhhcyBhIGxlbmd0aCBncmVhdGVy IHRoZW4gMCB0aGVuIHdlIGFzc3VtZSB3ZSBoYXZlIGEKPiBwcm9wZXIgd29ya2luZyBvbmUuCj4g KyAgICAvLyBJdCBjb3VsZCBzdGlsbCBiZSB3cm9uZyBidXQgaW4gdGhhdCBjYXNlIHRoZSBnYXRl d2F5IHNob3VsZCBzYXZlCj4gdXMgYW5kCj4gKyAgICAvLyBydXR1cm4gYSA0MDMgZXJyb3IuIFRo ZSBodHRwIHByb3RvY29sIGhhbmRsZXMgdGhpcy4KPiArICAgIGlmIChzdHJsZW4oaXBmc19jaWQp IDwgMSkgewo+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIkEgQ0lEIG11c3Qg YmUgcHJvdmlkZWQuXG4iKTsKPiArICAgICAgICByZXQgPSBBVkVSUk9SKEVJTFNFUSk7Cj4gKyAg ICAgICAgZ290byBlcnI7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8gUG9wdWxhdGUgYy0+Z2F0ZXdh eV9idWZmZXIgd2l0aCB3aGF0ZXZlciBpcyBpbiBjLT5nYXRld2F5Cj4gKyAgICBpZiAoYy0+Z2F0 ZXdheSAhPSBOVUxMKSB7Cj4gKyAgICAgICAgaWYgKHNucHJpbnRmKGMtPmdhdGV3YXlfYnVmZmVy LCBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpLCAiJXMiLAo+ICsgICAgICAgICAgICAgICAgICAg ICBjLT5nYXRld2F5KSA+PSBzaXplb2YoYy0+Z2F0ZXdheV9idWZmZXIpKSB7Cj4gKyAgICAgICAg ICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSAtZ2F0ZXdheSBwYXJhbWV0ZXIgaXMg dG9vCj4gbG9uZy4gIgo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJX ZSBhbGxvdyBhIG1heCBvZiAlenUKPiBjaGFyYWN0ZXJzXG4iLAo+ICsgICAgICAgICAgICAgICAg ICAgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSk7Cj4gKyAgICAgICAgICAgIHJldCA9IEFWRVJS T1IoRUlOVkFMKTsKPiArICAgICAgICAgICAgZ290byBlcnI7Cj4gKyAgICAgICAgfQo+ICsgICAg fSBlbHNlIHsKPiArICAgICAgICAvLyBQb3B1bGF0ZSB0aGUgSVBGUyBnYXRld2F5IGlmIHdlIGhh dmUgYW55Lgo+ICsgICAgICAgIC8vIElmIG5vdCwgaW5mb3JtIHRoZSB1c2VyIGhvdyB0byBwcm9w ZXJseSBzZXQgb25lLgo+ICsgICAgICAgIHJldCA9IHBvcHVsYXRlX2lwZnNfZ2F0ZXdheShoKTsK PiArCj4gKyAgICAgICAgaWYgKHJldCA8IDEpIHsKPiArICAgICAgICAgICAgLy8gV2UgZmFsbGJh Y2sgb24gZHdlYi5saW5rIChtYW5hZ2VkIGJ5IFByb3RvY29sIExhYnMpLgo+ICsgICAgICAgICAg ICBzbnByaW50ZihjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwg Igo+IGh0dHBzOi8vZHdlYi5saW5rIik7Cj4gKwo+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZf TE9HX1dBUk5JTkcsICJJUEZTIGRvZXMgbm90IGFwcGVhciB0byBiZQo+IHJ1bm5pbmcuICIKPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWW914oCZcmUgbm93IHVzaW5n IHRoZSBwdWJsaWMKPiBnYXRld2F5IGF0IGR3ZWIubGluay5cbiIpOwo+ICsgICAgICAgICAgICBh dl9sb2coaCwgQVZfTE9HX0lORk8sICJJbnN0YWxsaW5nIElQRlMgbG9jYWxseSBpcwo+IHJlY29t bWVuZGVkIHRvICIKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wcm92 ZSBwZXJmb3JtYW5jZSBhbmQgcmVsaWFiaWxpdHksICIKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiYW5kIG5vdCBzaGFyZSBhbGwgeW91ciBhY3Rpdml0eSB3aXRoCj4gYSBz aW5nbGUgSVBGUyBnYXRld2F5LlxuIgo+ICsgICAgICAgICAgICAgICAgICAgIlRoZXJlIGFyZSBt dWx0aXBsZSBvcHRpb25zIHRvIGRlZmluZSB0aGlzIGdhdGV3YXkuXG4iCj4gKyAgICAgICAgICAg ICAgICAgICAiMS4gQ2FsbCBmZm1wZWcgd2l0aCBhIGdhdGV3YXkgcGFyYW0sICIKPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aG91dCBhIHRyYWlsaW5nIHNsYXNoOiAt Z2F0ZXdheQo+IDx1cmw+LlxuIgo+ICsgICAgICAgICAgICAgICAgICAgIjIuIERlZmluZSBhbiAk SVBGU19HQVRFV0FZIGVudmlyb25tZW50IHZhcmlhYmxlIHdpdGgKPiB0aGUgIgo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdWxsIEhUVFAgVVJMIHRvIHRoZSBnYXRld2F5 ICIKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2l0aG91dCB0cmFpbGlu ZyBmb3J3YXJkIHNsYXNoLlxuIgo+ICsgICAgICAgICAgICAgICAgICAgIjMuIERlZmluZSBhbiAk SVBGU19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlICIKPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiYW5kIHBvaW50IGl0IHRvIHRoZSBJUEZTIGRhdGEgcGF0aCAiCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0gdGhpcyBpcyB0eXBpY2FsbHkgfi8u aXBmc1xuIik7Cj4gKyAgICAgICAgfQo+ICsgICAgfQo+ICsKPiArICAgIC8vIFRlc3QgaWYgdGhl IGdhdGV3YXkgc3RhcnRzIHdpdGggZWl0aGVyIGh0dHA6Ly8gb3IgaHR0cHM6Ly8KPiArICAgIGlm IChhdl9zdHJpc3RhcnQoYy0+Z2F0ZXdheV9idWZmZXIsICJodHRwOi8vIiwgTlVMTCkgPT0gMAo+ ICsgICAgICAgICYmIGF2X3N0cmlzdGFydChjLT5nYXRld2F5X2J1ZmZlciwgImh0dHBzOi8vIiwg TlVMTCkgPT0gMCkgewo+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlRoZSBn YXRld2F5IFVSTCBkaWRuJ3Qgc3RhcnQgd2l0aAo+IGh0dHA6Ly8gb3IgIgo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vIGFuZCBpcyB0aGVyZWZvcmUKPiBpbnZh bGlkLlxuIik7Cj4gKyAgICAgICAgcmV0ID0gQVZFUlJPUihFSUxTRVEpOwo+ICsgICAgICAgIGdv dG8gZXJyOwo+ICsgICAgfQo+ICsKPiArICAgIC8vIENvbmNhdGVuYXRlIHRoZSB1cmwuCj4gKyAg ICAvLyBUaGlzIGVuZHMgdXAgd2l0aCBzb21ldGhpbmcgbGlrZTogaHR0cDovL2xvY2FsaG9zdDo4 MDgwL2lwZnMvUW0uLi4KPiAuLgo+ICsgICAgLy8gVGhlIGZvcm1hdCBvZiAiJXMlcyVzJXMiIGlz IHRoZSBmb2xsb3dpbmc6Cj4gKyAgICAvLyAxc3QgJXMgPSBUaGUgZ2F0ZXdheS4KPiArICAgIC8v IDJuZCAlcyA9IElmIHRoZSBnYXRld2F5IGRpZG4ndCBlbmQgaW4gYSBzbGFzaCwgYWRkIGEgIi8i Lgo+IE90aGVyd2lzZSBpdCdzIGFuIGVtcHR5IHN0cmluZwo+ICsgICAgLy8gM3JkICVzID0gRWl0 aGVyIGlwbnMvIG9yIGlwZnMvLgo+ICsgICAgLy8gNHRoICVzID0gVGhlIElQRlMgQ0lEIChRbS4u LiwgYmFmeS4uLiwgLi4uKS4KPiArICAgIGZ1bGx1cmkgPSBhdl9hc3ByaW50ZigiJXMlcyVzJXMi LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmdhdGV3YXlfYnVmZmVyLAo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIChjLT5nYXRld2F5X2J1ZmZlcltzdHJsZW4oYy0+Z2F0ZXdh eV9idWZmZXIpIC0KPiAxXSA9PSAnLycpID8gIiIgOiAiLyIsCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgKGlzX2lwbnMpID8gImlwbnMvIiA6ICJpcGZzLyIsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgaXBmc19jaWQpOwo+ICsKPiArICAgIGlmICghZnVsbHVyaSkgewo+ICsgICAg ICBhdl9sb2coaCwgQVZfTE9HX0VSUk9SLCAiRmFpbGVkIHRvIGNvbXBvc2UgdGhlIFVSTFxuIik7 Cj4gKyAgICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsKPiArICAgICAgZ290byBlcnI7Cj4gKyAg ICB9Cj4gKwo+ICsgICAgLy8gUGFzcyB0aGUgVVJMIGJhY2sgdG8gRkZNcGVnJ3MgcHJvdG9jb2wg aGFuZGxlci4KPiArICAgIHJldCA9IGZmdXJsX29wZW5fd2hpdGVsaXN0KCZjLT5pbm5lciwgZnVs bHVyaSwgZmxhZ3MsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaC0+aW50ZXJy dXB0X2NhbGxiYWNrLCBvcHRpb25zLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aC0+cHJvdG9jb2xfd2hpdGVsaXN0LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aC0+cHJvdG9jb2xfYmxhY2tsaXN0LCBoKTsKPiArICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAg ICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVW5hYmxlIHRvIG9wZW4gcmVzb3VyY2U6ICVz XG4iLAo+IGZ1bGx1cmkpOwo+ICsgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgfQo+ICsKPiArZXJy Ogo+ICsgICAgYXZfZnJlZShmdWxsdXJpKTsKPiArICAgIHJldHVybiByZXQ7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgaXBmc19yZWFkKFVSTENvbnRleHQgKmgsIHVuc2lnbmVkIGNoYXIgKmJ1Ziwg aW50IHNpemUpCj4gK3sKPiArICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0 YTsKPiArICAgIHJldHVybiBmZnVybF9yZWFkKGMtPmlubmVyLCBidWYsIHNpemUpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgaW50NjRfdCBpcGZzX3NlZWsoVVJMQ29udGV4dCAqaCwgaW50NjRfdCBwb3Ms IGludCB3aGVuY2UpCj4gK3sKPiArICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZf ZGF0YTsKPiArICAgIHJldHVybiBmZnVybF9zZWVrKGMtPmlubmVyLCBwb3MsIHdoZW5jZSk7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgaXBmc19jbG9zZShVUkxDb250ZXh0ICpoKQo+ICt7Cj4gKyAg ICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5wcml2X2RhdGE7Cj4gKyAgICByZXR1cm4gZmZ1 cmxfY2xvc2VwKCZjLT5pbm5lcik7Cj4gK30KPiArCj4gKyNkZWZpbmUgT0ZGU0VUKHgpIG9mZnNl dG9mKElQRlNHYXRld2F5Q29udGV4dCwgeCkKPiArCj4gK3N0YXRpYyBjb25zdCBBVk9wdGlvbiBv cHRpb25zW10gPSB7Cj4gKyAgICB7ImdhdGV3YXkiLCAiVGhlIGdhdGV3YXkgdG8gYXNrIGZvciBJ UEZTIGRhdGEuIiwgT0ZGU0VUKGdhdGV3YXkpLAo+IEFWX09QVF9UWVBFX1NUUklORywgey5zdHIg PSBOVUxMfSwgMCwgMCwgQVZfT1BUX0ZMQUdfREVDT0RJTkdfUEFSQU19LAo+ICsgICAge05VTEx9 LAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IEFWQ2xhc3MgaXBmc19jb250ZXh0X2NsYXNzID0g ewo+ICsgICAgLmNsYXNzX25hbWUgICA9ICJJUEZTIiwKPiArICAgIC5pdGVtX25hbWUgICAgPSBh dl9kZWZhdWx0X2l0ZW1fbmFtZSwKPiArICAgIC5vcHRpb24gICAgICAgPSBvcHRpb25zLAo+ICsg ICAgLnZlcnNpb24gICAgICA9IExJQkFWVVRJTF9WRVJTSU9OX0lOVCwKPiArfTsKPiArCj4gK2Nv bnN0IFVSTFByb3RvY29sIGZmX2lwZnNfcHJvdG9jb2wgPSB7Cj4gKyAgICAubmFtZSAgICAgICAg ICAgICA9ICJpcGZzIiwKPiArICAgIC51cmxfb3BlbjIgICAgICAgID0gdHJhbnNsYXRlX2lwZnNf dG9faHR0cCwKPiArICAgIC51cmxfcmVhZCAgICAgICAgID0gaXBmc19yZWFkLAo+ICsgICAgLnVy bF9zZWVrICAgICAgICAgPSBpcGZzX3NlZWssCj4gKyAgICAudXJsX2Nsb3NlICAgICAgICA9IGlw ZnNfY2xvc2UsCj4gKyAgICAucHJpdl9kYXRhX3NpemUgICA9IHNpemVvZihJUEZTR2F0ZXdheUNv bnRleHQpLAo+ICsgICAgLnByaXZfZGF0YV9jbGFzcyAgPSAmaXBmc19jb250ZXh0X2NsYXNzLAo+ ICt9Owo+ICsKPiArY29uc3QgVVJMUHJvdG9jb2wgZmZfaXBuc19wcm90b2NvbCA9IHsKPiArICAg IC5uYW1lICAgICAgICAgICAgID0gImlwbnMiLAo+ICsgICAgLnVybF9vcGVuMiAgICAgICAgPSB0 cmFuc2xhdGVfaXBmc190b19odHRwLAo+ICsgICAgLnVybF9yZWFkICAgICAgICAgPSBpcGZzX3Jl YWQsCj4gKyAgICAudXJsX3NlZWsgICAgICAgICA9IGlwZnNfc2VlaywKPiArICAgIC51cmxfY2xv c2UgICAgICAgID0gaXBmc19jbG9zZSwKPiArICAgIC5wcml2X2RhdGFfc2l6ZSAgID0gc2l6ZW9m KElQRlNHYXRld2F5Q29udGV4dCksCj4gKyAgICAucHJpdl9kYXRhX2NsYXNzICA9ICZpcGZzX2Nv bnRleHRfY2xhc3MsCj4gK307Cj4gZGlmZiAtLWdpdCBhL2xpYmF2Zm9ybWF0L3Byb3RvY29scy5j IGIvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMKPiBpbmRleCBkMDc1NjNjZDBjLi42ZWU2MmE1OThh IDEwMDY0NAo+IC0tLSBhL2xpYmF2Zm9ybWF0L3Byb3RvY29scy5jCj4gKysrIGIvbGliYXZmb3Jt YXQvcHJvdG9jb2xzLmMKPiBAQCAtNzEsNiArNzEsOCBAQCBleHRlcm4gY29uc3QgVVJMUHJvdG9j b2wgZmZfbGlic3J0X3Byb3RvY29sOwo+ICBleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfbGli c3NoX3Byb3RvY29sOwo+ICBleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfbGlic21iY2xpZW50 X3Byb3RvY29sOwo+ICBleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfbGliem1xX3Byb3RvY29s Owo+ICtleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfaXBmc19wcm90b2NvbDsKPiArZXh0ZXJu IGNvbnN0IFVSTFByb3RvY29sIGZmX2lwbnNfcHJvdG9jb2w7Cj4KPiAgI2luY2x1ZGUgImxpYmF2 Zm9ybWF0L3Byb3RvY29sX2xpc3QuYyIKPgo+IC0tCj4gMi4zNS4xCj4KPgpQaW5nLCBldmVuIHRo b3VnaCB0aGUgbWVzc2FnZSBpcyBqdXN0IGhlcmUgZm9yIG1lcmUgbWludXRlcy4KCkFzIG9mIHRo ZSB2ZXJ5IGRheSBpJ20gbm93IHNlbmRpbmcgdXBkYXRlZCBwYXRjaGVzIGZvciB0aGlzIGZvciBl eGFjdGx5IDIKbW9udGhzLiBJIHN0YXJ0ZWQgb24gRmViLiAxc3QuCldpdGggdGhlIGxhc3Qgcm91 bmQgb2YgY2hhbmdlcyAoVGhhbnggQW5kcmVhcyEpIEkgZmVlbCByZWFsbHkgY29uZmlkZW50CnRo YXQgdGhpcyBpcyBub3cgYXQgdGhlIHZlcnkgbGVhc3QgZ29vZCBxdWFsaXR5IGNvZGUgcmVhZHkg Zm9yIHByaW1lIHRpbWUhCklQRlMgc3VwcG9ydCBpcyBub3cgYWxzbyB3b3JraW5nIGJ5IGRlZmF1 bHQsIGV2ZW4gd2hlbiB5b3UgZG9uJ3QgaGF2ZSBJUEZTCmF0IGFsbCAoaW4gaGVyZSBzaW5jZSBh IGZldyBwYXRjaGVzIGFnbykuClllYWgsIEkgZmVlbCByZWFsbHkgZ29vZCBhYm91dCBpdCBub3ch CgpJJ2QgdmVyeSBtdWNoIGFwcHJlY2lhdGUgaXQgaWYgdGhpcyBjb3VsZCBmaW5hbGx5IGJlIG1l cmdlZC4gSSBwcm9taXNlIEknbQpzdGF5aW5nIGFyb3VuZCB0byBmaXggYnVncyBpZiB0aGVyZSBh cmUgc3RpbGwgYnVncyB0byBiZSBmaXhlZCBhbmQgd2lsbApyZXNwb25kIHN3aWZ0bHkgOikKCkJ1 dC4uLiBJJ2QgcmVhbGx5IHJlYWxseSByZWFsbHkgbGlrZSB0byBiZSBkb25lIHdpdGggaXQgZm9y IG5vdy4KSSBkb24ndCBrbm93IHdoZW4gZmZtcGVnIDUuMSBpcyBnb2luZyB0byBiZSByZWxlYXNl ZCBidXQgaGF2aW5nIElQRlMKc3VwcG9ydCBpbiB0aGVyZSB3b3VsZCBiZSBhYnNvbHV0ZWx5IGF3 ZXNvbWUhIEFuZCB3b3VsZCBoZWxwIG1lIGdyZWF0bHkgaW4KY29udGludWluZyB0aGUgZGV2ZWxv cG1lbnQgdG8gc3VwcG9ydCBJUEZTIGluIG1wdiwgS09ESSBhbmQgVkxDLgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBs aXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9y IGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1 YnNjcmliZSIuCg==