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 E202140BDD for ; Thu, 7 Apr 2022 22:03:26 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 05E6D68B23A; Fri, 8 Apr 2022 01:03:24 +0300 (EEST) Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 59061689B39 for ; Fri, 8 Apr 2022 01:03:17 +0300 (EEST) Received: by mail-wr1-f51.google.com with SMTP id d3so9975420wrb.7 for ; Thu, 07 Apr 2022 15:03:17 -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; bh=3RXIvMwXBwUheYwgwZVJuGTn3lbqGDzLjkYxny0s1c8=; b=JAWOFL4Dk4Sj/uoJsBQ8UFtloE2xKXQIazi/GIYfBxvfyJK08Qo2x3cSkahxLTfpAM Ilx96453SyGr7ZaVmpI83VuQplk+rkPGYV/BiOiOQWmNj4XF10iYDk1s/V/GF04suQl+ pp+Cd5E15PkTcmwmeae5MqQYDJdC3LR1oIr/g1FzU5wDl7QMqeTyD88/EV9llD6gf79O lx6kRbcDMwicSiGtXQ758Etgm1GrmGvVSf+3mRyjBIw1/Pt6WjyxY9FjwAVh1ipXSKaP ndSo28IZUiItN7oOc9BDTkV57uoqRe2qhRE0JBAXxflwWEb0NGqEINpI7Pibb1w8B+ru J3mw== 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; bh=3RXIvMwXBwUheYwgwZVJuGTn3lbqGDzLjkYxny0s1c8=; b=R2A0sX+mTfIr1bDkLGGjZq4ERHn4K3e25nPOir/B46WkzH6AkmqZxMCWifnHX4pEDO TgDh0T1f52g5pnjwktDis2yQZYm6mQyN19pQKxK3KLXG+qTPnBeO6pETGeUhDiUIGzBQ t+MJWLT7V1GOFx1E7nrSegOikDMtyFL3UZaRZl3ek3PHlLVauoqZVqwK/HtD7UXyrVU3 2D2RSjC63KsIkD7+onFQ91SWToB8f0rX+Bd8ElmnOCZCb8YrpXuE0HmcBJwCK5RPHse2 sAgC1Yp/pvdsjpxVs14naaLGQxW9a8vUgUpk7+pxO7Jde6oNEA+XSwSg3RKCT4Tp5pT5 ExHA== X-Gm-Message-State: AOAM531/h1aAnK5siCv//bw4DNg6jFnOazCS6lmxykFkyM3GZfTab5gY jbHxUwrngN3+L84rYmlU8bMBiDaCjx/NHbK0BwEFhpks X-Google-Smtp-Source: ABdhPJxtn1fxZ1MGeZwhAuHYz8HICMDytt6a5XHCLot+5TKd0rETkMD/CcXKzfyVT/HEl6un6E/mf9WIPnymQWx4Kik= X-Received: by 2002:a5d:6c61:0:b0:207:81ec:9471 with SMTP id r1-20020a5d6c61000000b0020781ec9471mr6841443wrz.30.1649368996121; Thu, 07 Apr 2022 15:03:16 -0700 (PDT) MIME-Version: 1.0 References: <20220406120056.10537-1-markg85@gmail.com> <20220406120056.10537-2-markg85@gmail.com> In-Reply-To: <20220406120056.10537-2-markg85@gmail.com> From: Mark Gaiser Date: Fri, 8 Apr 2022 00:01:58 +0200 Message-ID: To: FFmpeg development discussions and patches , michael@niedermayer.cc X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v13 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 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: T24gV2VkLCBBcHIgNiwgMjAyMiBhdCAyOjAyIFBNIE1hcmsgR2Fpc2VyIDxtYXJrZzg1QGdtYWls 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 ZmlsZSAgICAgIHwgICAyICsKPiAgbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYyB8IDMzOSArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBsaWJhdmZvcm1hdC9wcm90b2Nv bHMuYyAgIHwgICAyICsKPiAgNSBmaWxlcyBjaGFuZ2VkLCAzNzUgaW5zZXJ0aW9ucygrKQo+ICBj cmVhdGUgbW9kZSAxMDA2NDQgbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwo+Cj4gZGlmZiAtLWdp dCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQo+IGluZGV4IGU0ZDM2YWE2MzkuLjU1YWY5MDk1N2Eg MTAwNzU1Cj4gLS0tIGEvY29uZmlndXJlCj4gKysrIGIvY29uZmlndXJlCj4gQEAgLTM1NzksNiAr MzU3OSw4IEBAIHVkcF9wcm90b2NvbF9zZWxlY3Q9Im5ldHdvcmsiCj4gIHVkcGxpdGVfcHJvdG9j b2xfc2VsZWN0PSJuZXR3b3JrIgo+ICB1bml4X3Byb3RvY29sX2RlcHM9InN5c191bl9oIgo+ICB1 bml4X3Byb3RvY29sX3NlbGVjdD0ibmV0d29yayIKPiAraXBmc19wcm90b2NvbF9zZWxlY3Q9Imh0 dHBzX3Byb3RvY29sIgo+ICtpcG5zX3Byb3RvY29sX3NlbGVjdD0iaHR0cHNfcHJvdG9jb2wiCj4K PiAgIyBleHRlcm5hbCBsaWJyYXJ5IHByb3RvY29scwo+ICBsaWJhbXFwX3Byb3RvY29sX2RlcHM9 ImxpYnJhYmJpdG1xIgo+IGRpZmYgLS1naXQgYS9kb2MvcHJvdG9jb2xzLnRleGkgYi9kb2MvcHJv dG9jb2xzLnRleGkKPiBpbmRleCBkMjA3ZGYwYjUyLi45MGE5ZWVmZGUwIDEwMDY0NAo+IC0tLSBh L2RvYy9wcm90b2NvbHMudGV4aQo+ICsrKyBiL2RvYy9wcm90b2NvbHMudGV4aQo+IEBAIC0yMDI1 LDUgKzIwMjUsMzUgQEAgZGVjb2RpbmcgZXJyb3JzLgo+Cj4gIEBlbmQgdGFibGUKPgo+ICtAc2Vj dGlvbiBpcGZzCj4gKwo+ICtJbnRlclBsYW5ldGFyeSBGaWxlIFN5c3RlbSAoSVBGUykgcHJvdG9j b2wgc3VwcG9ydC4gT25lIGNhbiBhY2Nlc3MgZmlsZXMKPiBzdG9yZWQKPiArb24gdGhlIElQRlMg bmV0d29yayB0aHJvdWdoIHNvIGNhbGxlZCBnYXRld2F5cy4gVGhvc2UgYXJlIGh0dHAocykKPiBl bmRwb2ludHMuCj4gK1RoaXMgcHJvdG9jb2wgd3JhcHMgdGhlIElQRlMgbmF0aXZlIHByb3RvY29s cyAoaXBmczovLyBhbmQgaXBuczovLykgdG8gYmUKPiBzZW5kCj4gK3RvIHN1Y2ggYSBnYXRld2F5 LiBVc2VycyBjYW4gKGFuZCBzaG91bGQpIGhvc3QgdGhlaXIgb3duIG5vZGUgd2hpY2ggbWVhbnMK PiB0aGlzCj4gK3Byb3RvY29sIHdpbGwgdXNlIHlvdXIgbG9jYWwgZ2F0ZXdheSB0byBhY2Nlc3Mg ZmlsZXMgb24gdGhlIElQRlMgbmV0d29yay4KPiArCj4gK0lmIGEgdXNlciBkb2Vzbid0IGhhdmUg YSBub2RlIG9mIHRoZWlyIG93biB0aGVuIHRoZSBwdWJsaWMgZ2F0ZXdheQo+IGR3ZWIubGluayBp cwo+ICt1c2VkIGJ5IGRlZmF1bHQuCj4gKwo+ICtZb3UgY2FuIHVzZSB0aGlzIHByb3RvY29sIGlu IDIgd2F5cy4gVXNpbmcgSVBGUzoKPiArQGV4YW1wbGUKPiArZmZwbGF5IGlwZnM6Ly9RbWJHdEpn MjNza2h2Rm11OW1KaWVQVkJ5aGZ6dTVyd283NE1Fa1ZEWUFtRjVUCj4gK0BlbmQgZXhhbXBsZQo+ ICsKPiArT3IgdGhlIElQTlMgcHJvdG9jb2wgKElQTlMgaXMgbXV0YWJsZSBJUEZTKToKPiArQGV4 YW1wbGUKPiArZmZwbGF5IGlwbnM6Ly9RbWJHdEpnMjNza2h2Rm11OW1KaWVQVkJ5aGZ6dTVyd283 NE1Fa1ZEWUFtRjVUCj4gK0BlbmQgZXhhbXBsZQo+ICsKPiArWW91IGNhbiBhbHNvIGNoYW5nZSB0 aGUgZ2F0ZXdheSB0byBiZSB1c2VkOgo+ICsKPiArQHRhYmxlIEBvcHRpb24KPiArCj4gK0BpdGVt IGdhdGV3YXkKPiArRGVmaW5lcyB0aGUgZ2F0ZXdheSB0byB1c2UuIFdoZW4gbm90aGluZyBpcyBw cm92aWRlZCB0aGUgcHJvdG9jb2wgd2lsbAo+IGZpcnN0IHRyeQo+ICt5b3VyIGxvY2FsIGdhdGV3 YXkuIElmIHRoYXQgZmFpbHMgZHdlYi5saW5rIHdpbGwgYmUgdXNlZC4KPiArCj4gK0BlbmQgdGFi bGUKPgo+ICBAYyBtYW4gZW5kIFBST1RPQ09MUwo+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9N YWtlZmlsZSBiL2xpYmF2Zm9ybWF0L01ha2VmaWxlCj4gaW5kZXggZDcxODJkNmJkOC4uZTMyMzNm ZDdhYyAxMDA2NDQKPiAtLS0gYS9saWJhdmZvcm1hdC9NYWtlZmlsZQo+ICsrKyBiL2xpYmF2Zm9y bWF0L01ha2VmaWxlCj4gQEAgLTY2MCw2ICs2NjAsOCBAQCBPQkpTLSQoQ09ORklHX1NSVFBfUFJP VE9DT0wpICAgICAgICAgICAgICs9Cj4gc3J0cHByb3RvLm8gc3J0cC5vCj4gIE9CSlMtJChDT05G SUdfU1VCRklMRV9QUk9UT0NPTCkgICAgICAgICAgKz0gc3ViZmlsZS5vCj4gIE9CSlMtJChDT05G SUdfVEVFX1BST1RPQ09MKSAgICAgICAgICAgICAgKz0gdGVlcHJvdG8ubyB0ZWVfY29tbW9uLm8K PiAgT0JKUy0kKENPTkZJR19UQ1BfUFJPVE9DT0wpICAgICAgICAgICAgICArPSB0Y3Aubwo+ICtP QkpTLSQoQ09ORklHX0lQRlNfUFJPVE9DT0wpICAgICAgICAgICAgICs9IGlwZnNnYXRld2F5Lm8K PiArT0JKUy0kKENPTkZJR19JUE5TX1BST1RPQ09MKSAgICAgICAgICAgICArPSBpcGZzZ2F0ZXdh eS5vCj4gIFRMUy1PQkpTLSQoQ09ORklHX0dOVVRMUykgICAgICAgICAgICAgICAgKz0gdGxzX2du dXRscy5vCj4gIFRMUy1PQkpTLSQoQ09ORklHX0xJQlRMUykgICAgICAgICAgICAgICAgKz0gdGxz X2xpYnRscy5vCj4gIFRMUy1PQkpTLSQoQ09ORklHX01CRURUTFMpICAgICAgICAgICAgICAgKz0g dGxzX21iZWR0bHMubwo+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9pcGZzZ2F0ZXdheS5jIGIv bGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXgg MDAwMDAwMDAwMC4uMDVmZDM3YmJjNQo+IC0tLSAvZGV2L251bGwKPiArKysgYi9saWJhdmZvcm1h dC9pcGZzZ2F0ZXdheS5jCj4gQEAgLTAsMCArMSwzMzkgQEAKPiArLyoKPiArICogSVBGUyBhbmQg SVBOUyBwcm90b2NvbCBzdXBwb3J0IHRocm91Z2ggSVBGUyBHYXRld2F5Lgo+ICsgKiBDb3B5cmln aHQgKGMpIDIwMjIgTWFyayBHYWlzZXIKPiArICoKPiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg RkZtcGVnLgo+ICsgKgo+ICsgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yCj4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiArICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCj4gKyAqIHZlcnNpb24gMi4xIG9m IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgo+ICsg Kgo+ICsgKiBGRm1wZWcgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKPiArICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKPiArICogTGVzc2VyIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KPiArICoKPiArICogWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwo+ICsg KiBMaWNlbnNlIGFsb25nIHdpdGggRkZtcGVnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv ZnR3YXJlCj4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg Rmxvb3IsIEJvc3RvbiwgTUEKPiAwMjExMC0xMzAxIFVTQQo+ICsgKi8KPiArCj4gKyNpbmNsdWRl ICJsaWJhdnV0aWwvYXZzdHJpbmcuaCIKPiArI2luY2x1ZGUgImxpYmF2dXRpbC9vcHQuaCIKPiAr I2luY2x1ZGUgPHN5cy9zdGF0Lmg+Cj4gKyNpbmNsdWRlICJvc19zdXBwb3J0LmgiCj4gKyNpbmNs dWRlICJ1cmwuaCIKPiArCj4gK3R5cGVkZWYgc3RydWN0IElQRlNHYXRld2F5Q29udGV4dCB7Cj4g KyAgICBBVkNsYXNzICpjbGFzczsKPiArICAgIFVSTENvbnRleHQgKmlubmVyOwo+ICsgICAgLy8g SXMgZmlsbGVkIGJ5IHRoZSAtZ2F0ZXdheSBhcmd1bWVudCBhbmQgbm90IGNoYW5nZWQgYWZ0ZXIu Cj4gKyAgICBjaGFyICpnYXRld2F5Owo+ICsgICAgLy8gSWYgdGhlIGFib3ZlIGdhdGV3YXkgaXMg bm9uIG51bGwsIGl0IHdpbGwgYmUgY29waWVkIGludG8gdGhpcwo+IGJ1ZmZlci4KPiArICAgIC8v IEVsc2UgdGhpcyBidWZmZXIgd2lsbCBjb250YWluIHRoZSBhdXRvIGRldGVjdGVkIGdhdGV3YXku Cj4gKyAgICAvLyBJbiBlaXRoZXIgY2FzZSwgdGhlIGdhdGV3YXkgdG8gdXNlIHdpbGwgYmUgaW4g dGhpcyBidWZmZXIuCj4gKyAgICBjaGFyIGdhdGV3YXlfYnVmZmVyW1BBVEhfTUFYXTsKPiArfSBJ UEZTR2F0ZXdheUNvbnRleHQ7Cj4gKwo+ICsvLyBBIGJlc3QtZWZmb3J0IHdheSB0byBmaW5kIHRo ZSBJUEZTIGdhdGV3YXkuCj4gKy8vIE9ubHkgdGhlIG1vc3QgYXBwcm9waWF0ZSBnYXRld2F5IGlz IHNldC4gSXQncyBub3QgYWN0dWFsbHkgcmVxdWVzdGVkCj4gKy8vIChodHRwIGNhbGwpIHRvIHBy ZXZlbnQgYSBwb3RlbnRpYWwgc2xvd2Rvd24gaW4gc3RhcnR1cC4gQSBwb3RlbnRpYWwKPiB0aW1l b3V0Cj4gKy8vIGlzIGhhbmRsZWQgYnkgdGhlIEhUVFAgcHJvdG9jb2wuCj4gK3N0YXRpYyBpbnQg cG9wdWxhdGVfaXBmc19nYXRld2F5KFVSTENvbnRleHQgKmgpCj4gK3sKPiArICAgIElQRlNHYXRl d2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKPiArICAgIGNoYXIgaXBmc19mdWxsX2RhdGFf Zm9sZGVyW1BBVEhfTUFYXTsKPiArICAgIGNoYXIgaXBmc19nYXRld2F5X2ZpbGVbUEFUSF9NQVhd Owo+ICsgICAgc3RydWN0IHN0YXQgc3Q7Cj4gKyAgICBpbnQgc3RhdF9yZXQgPSAwOwo+ICsgICAg aW50IHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiArICAgIEZJTEUgKmdhdGV3YXlfZmlsZSA9IE5V TEw7Cj4gKwo+ICsgICAgLy8gVGVzdCAkSVBGU19HQVRFV0FZLgo+ICsgICAgaWYgKGdldGVudigi SVBGU19HQVRFV0FZIikgIT0gTlVMTCkgewo+ICsgICAgICAgIGlmIChzbnByaW50ZihjLT5nYXRl d2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwgIiVzIiwKPiArICAgICAgICAg ICAgICAgICAgICAgZ2V0ZW52KCJJUEZTX0dBVEVXQVkiKSkKPiArICAgICAgICAgICAgPj0gc2l6 ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSkgewo+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9H X1dBUk5JTkcsCj4gKyAgICAgICAgICAgICAgICAgICAiVGhlIElQRlNfR0FURVdBWSBlbnZpcm9u bWVudCB2YXJpYWJsZSAiCj4gKyAgICAgICAgICAgICAgICAgICAiZXhjZWVkcyB0aGUgbWF4aW11 bSBsZW5ndGguICIKPiArICAgICAgICAgICAgICAgICAgICJXZSBhbGxvdyBhIG1heCBvZiAlenUg Y2hhcmFjdGVyc1xuIiwKPiArICAgICAgICAgICAgICAgICAgIHNpemVvZihjLT5nYXRld2F5X2J1 ZmZlcikpOwo+ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4gKyAgICAgICAg ICAgIGdvdG8gZXJyOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgcmV0ID0gMTsKPiArICAg ICAgICBnb3RvIGVycjsKPiArICAgIH0gZWxzZQo+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0df REVCVUcsICIkSVBGU19HQVRFV0FZIGlzIGVtcHR5LlxuIik7Cj4gKwo+ICsgICAgLy8gV2UgbmVl ZCB0byBrbm93IHRoZSBJUEZTIGZvbGRlciB0byAtIGV2ZW50dWFsbHkgLSByZWFkIHRoZQo+IGNv bnRlbnRzIG9mCj4gKyAgICAvLyB0aGUgImdhdGV3YXkiIGZpbGUgd2hpY2ggd291bGQgdGVsbCB1 cyB0aGUgZ2F0ZXdheSB0byB1c2UuCj4gKyAgICBpZiAoZ2V0ZW52KCJJUEZTX1BBVEgiKSA9PSBO VUxMKSB7Cj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19ERUJVRywgIiRJUEZTX1BBVEggaXMg ZW1wdHkuXG4iKTsKPiArCj4gKyAgICAgICAgLy8gVHJ5IHZpYSB0aGUgaG9tZSBmb2xkZXIuCj4g KyAgICAgICAgaWYgKGdldGVudigiSE9NRSIpID09IE5VTEwpIHsKPiArICAgICAgICAgICAgYXZf bG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiJEhPTUUgYXBwZWFycyB0byBiZSBlbXB0eS5cbiIpOwo+ ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4gKyAgICAgICAgICAgIGdvdG8g ZXJyOwo+ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgLy8gVmVyaWZ5IHRoZSBjb21wb3NlZCBw YXRoIGZpdHMuCj4gKyAgICAgICAgaWYgKHNucHJpbnRmKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciwg c2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciksCj4gKyAgICAgICAgICAgICAgICAgICAgICIl cy8uaXBmcy8iLCBnZXRlbnYoIkhPTUUiKSkKPiArICAgICAgICAgICAgPj0gc2l6ZW9mKGlwZnNf ZnVsbF9kYXRhX2ZvbGRlcikpIHsKPiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJO SU5HLAo+ICsgICAgICAgICAgICAgICAgICAgIlRoZSBJUEZTIGRhdGEgcGF0aCBleGNlZWRzIHRo ZSAiCj4gKyAgICAgICAgICAgICAgICAgICAibWF4IHBhdGggbGVuZ3RoICglenUpXG4iLAo+ICsg ICAgICAgICAgICAgICAgICAgc2l6ZW9mKGlwZnNfZnVsbF9kYXRhX2ZvbGRlcikpOwo+ICsgICAg ICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4gKyAgICAgICAgICAgIGdvdG8gZXJyOwo+ ICsgICAgICAgIH0KPiArCj4gKyAgICAgICAgLy8gU3RhdCB0aGUgZm9sZGVyLgo+ICsgICAgICAg IC8vIEl0IHNob3VsZCBleGlzdCBpbiBhIGRlZmF1bHQgSVBGUyBzZXR1cCB3aGVuIHJ1biBhcyBs b2NhbCB1c2VyLgo+ICsgICAgICAgIHN0YXRfcmV0ID0gc3RhdChpcGZzX2Z1bGxfZGF0YV9mb2xk ZXIsICZzdCk7Cj4gKwo+ICsgICAgICAgIGlmIChzdGF0X3JldCA8IDApIHsKPiArICAgICAgICAg ICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiVW5hYmxlIHRvIGZpbmQgSVBGUyBmb2xkZXIuIFdl Cj4gdHJpZWQ6XG4iKTsKPiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19JTkZPLCAiLSAk SVBGU19QQVRILCB3aGljaCB3YXMgZW1wdHkuXG4iKTsKPiArICAgICAgICAgICAgYXZfbG9nKGgs IEFWX0xPR19JTkZPLCAiLSAkSE9NRS8uaXBmcyAoZnVsbCB1cmk6ICVzKSB3aGljaAo+IGRvZXNu J3QgZXhpc3QuXG4iLCBpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpOwo+ICsgICAgICAgICAgICByZXQg PSBBVkVSUk9SKEVOT0VOVCk7Cj4gKyAgICAgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgICAgIH0K PiArICAgIH0gZWxzZSB7Cj4gKyAgICAgICAgaWYgKHNucHJpbnRmKGlwZnNfZnVsbF9kYXRhX2Zv bGRlciwKPiBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVyKSwgIiVzIiwKPiArICAgICAgICAg ICAgICAgICAgICAgZ2V0ZW52KCJJUEZTX1BBVEgiKSkKPiArICAgICAgICAgICAgPj0gc2l6ZW9m KGlwZnNfZnVsbF9kYXRhX2ZvbGRlcikpIHsKPiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xP R19XQVJOSU5HLAo+ICsgICAgICAgICAgICAgICAgICAgIlRoZSBJUEZTX1BBVEggZW52aXJvbm1l bnQgdmFyaWFibGUgIgo+ICsgICAgICAgICAgICAgICAgICAgImV4Y2VlZHMgdGhlIG1heGltdW0g bGVuZ3RoLiAiCj4gKyAgICAgICAgICAgICAgICAgICAiV2UgYWxsb3cgYSBtYXggb2YgJXp1IGNo YXJhY3RlcnNcbiIsCj4gKyAgICAgICAgICAgICAgICAgICBzaXplb2YoYy0+Z2F0ZXdheV9idWZm ZXIpKTsKPiArICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+ICsgICAgICAgICAg ICBnb3RvIGVycjsKPiArICAgICAgICB9Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8gQ29weSB0aGUg ZnVsbHkgY29tcG9zZWQgZ2F0ZXdheSBwYXRoIGludG8gaXBmc19nYXRld2F5X2ZpbGUuCj4gKyAg ICBpZiAoc25wcmludGYoaXBmc19nYXRld2F5X2ZpbGUsIHNpemVvZihpcGZzX2dhdGV3YXlfZmls ZSksCj4gIiVzZ2F0ZXdheSIsCj4gKyAgICAgICAgICAgICAgICAgaXBmc19mdWxsX2RhdGFfZm9s ZGVyKQo+ICsgICAgICAgID49IHNpemVvZihpcGZzX2dhdGV3YXlfZmlsZSkpIHsKPiArICAgICAg ICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsCj4gKyAgICAgICAgICAgICAgICJUaGUgSVBGUyBn YXRld2F5IGZpbGUgcGF0aCBleGNlZWRzICIKPiArICAgICAgICAgICAgICAgInRoZSBtYXggcGF0 aCBsZW5ndGggKCV6dSlcbiIsCj4gKyAgICAgICAgICAgICAgIHNpemVvZihpcGZzX2dhdGV3YXlf ZmlsZSkpOwo+ICsgICAgICAgIHJldCA9IEFWRVJST1IoRU5PRU5UKTsKPiArICAgICAgICBnb3Rv IGVycjsKPiArICAgIH0KPiArCj4gKyAgICAvLyBHZXQgdGhlIGNvbnRlbnRzIG9mIHRoZSBnYXRl d2F5IGZpbGUuCj4gKyAgICBnYXRld2F5X2ZpbGUgPSBhdl9mb3Blbl91dGY4KGlwZnNfZ2F0ZXdh eV9maWxlLCAiciIpOwo+ICsgICAgaWYgKCFnYXRld2F5X2ZpbGUpIHsKPiArICAgICAgICBhdl9s b2coaCwgQVZfTE9HX1dBUk5JTkcsCj4gKyAgICAgICAgICAgICAgICJUaGUgSVBGUyBnYXRld2F5 IGZpbGUgKGZ1bGwgdXJpOiAlcykgZG9lc24ndCBleGlzdC4gIgo+ICsgICAgICAgICAgICAgICAi SXMgdGhlIGdhdGV3YXkgZW5hYmxlZD9cbiIsCj4gKyAgICAgICAgICAgICAgIGlwZnNfZ2F0ZXdh eV9maWxlKTsKPiArICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7Cj4gKyAgICAgICAgZ290 byBlcnI7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8gUmVhZCBhIHNpbmdsZSBsaW5lIChmZ2V0cyBz dG9wcyBhdCBuZXcgbGluZSBtYXJrKS4KPiArICAgIGlmICghZmdldHMoYy0+Z2F0ZXdheV9idWZm ZXIsIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikgLSAxLAo+IGdhdGV3YXlfZmlsZSkpIHsKPiAr ICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJVbmFibGUgdG8gcmVhZCBmcm9tIGZp bGUgKGZ1bGwgdXJpOgo+ICVzKS5cbiIsCj4gKyAgICAgICAgICAgICAgIGlwZnNfZ2F0ZXdheV9m aWxlKTsKPiArICAgICAgICByZXQgPSBBVkVSUk9SKEVOT0VOVCk7Cj4gKyAgICAgICAgZ290byBl cnI7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8gUmVwbGFjZSBmaXJzdCBvY2N1cmVuY2Ugb2YgZW5k IG9mIGxpbmUgd2l0aCBcMAo+ICsgICAgYy0+Z2F0ZXdheV9idWZmZXJbc3RyY3NwbihjLT5nYXRl d2F5X2J1ZmZlciwgIlxyXG4iKV0gPSAwOwo+ICsKPiArICAgIC8vIElmIHN0cmxlbiBmaW5kcyBh bnl0aGluZyBsb25nZXIgdGhlbiAwIGNoYXJhY3RlcnMgdGhlbiB3ZSBoYXZlIGEKPiArICAgIC8v IHBvdGVudGlhbCBnYXRld2F5IHVybC4KPiArICAgIGlmICgqYy0+Z2F0ZXdheV9idWZmZXIgPT0g J1wwJykgewo+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywKPiArICAgICAgICAg ICAgICAgIlRoZSBJUEZTIGdhdGV3YXkgZmlsZSAoZnVsbCB1cmk6ICVzKSBhcHBlYXJzIHRvIGJl IGVtcHR5Lgo+ICIKPiArICAgICAgICAgICAgICAgIklzIHRoZSBnYXRld2F5IHN0YXJ0ZWQ/XG4i LAo+ICsgICAgICAgICAgICAgICBpcGZzX2dhdGV3YXlfZmlsZSk7Cj4gKyAgICAgICAgcmV0ID0g QVZFUlJPUihFSUxTRVEpOwo+ICsgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgfSBlbHNlIHsKPiAr ICAgICAgICAvLyBXZSdyZSBkb25lLCB0aGUgYy0+Z2F0ZXdheV9idWZmZXIgaGFzIHNvbWV0aGlu ZyB0aGF0IGxvb2tzCj4gdmFsaWQuCj4gKyAgICAgICAgcmV0ID0gMTsKPiArICAgICAgICBnb3Rv IGVycjsKPiArICAgIH0KPiArCj4gK2VycjoKPiArICAgIGlmIChnYXRld2F5X2ZpbGUpCj4gKyAg ICAgICAgZmNsb3NlKGdhdGV3YXlfZmlsZSk7Cj4gKwo+ICsgICAgcmV0dXJuIHJldDsKPiArfQo+ ICsKPiArc3RhdGljIGludCB0cmFuc2xhdGVfaXBmc190b19odHRwKFVSTENvbnRleHQgKmgsIGNv bnN0IGNoYXIgKnVyaSwgaW50Cj4gZmxhZ3MsIEFWRGljdGlvbmFyeSAqKm9wdGlvbnMpCj4gK3sK PiArICAgIGNvbnN0IGNoYXIgKmlwZnNfY2lkOwo+ICsgICAgY2hhciAqZnVsbHVyaSA9IE5VTEw7 Cj4gKyAgICBpbnQgcmV0Owo+ICsgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9k YXRhOwo+ICsKPiArICAgIC8vIFRlc3QgZm9yIGlwZnM6Ly8sIGlwZnM6LCBpcG5zOi8vIGFuZCBp cG5zOi4gVGhpcyBwcmVmaXggaXMKPiBzdHJpcHBlZCBmcm9tCj4gKyAgICAvLyB0aGUgc3RyaW5n IGxlYXZpbmcganVzdCB0aGUgQ0lEIGluIGlwZnNfY2lkLgo+ICsgICAgaW50IGlzX2lwZnMgPSBh dl9zdHJpc3RhcnQodXJpLCAiaXBmczovLyIsICZpcGZzX2NpZCk7Cj4gKyAgICBpbnQgaXNfaXBu cyA9IGF2X3N0cmlzdGFydCh1cmksICJpcG5zOi8vIiwgJmlwZnNfY2lkKTsKPiArCj4gKyAgICAv LyBXZSBtdXN0IGhhdmUgZWl0aGVyIGlwbnMgb3IgaXBmcy4KPiArICAgIGlmICghaXNfaXBmcyAm JiAhaXNfaXBucykgewo+ICsgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiArICAgICAg ICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJVbnN1cHBvcnRlZCB1cmwgJXNcbiIsIHVyaSk7 Cj4gKyAgICAgICAgZ290byBlcnI7Cj4gKyAgICB9Cj4gKwo+ICsgICAgLy8gSWYgdGhlIENJRCBo YXMgYSBsZW5ndGggZ3JlYXRlciB0aGVuIDAgdGhlbiB3ZSBhc3N1bWUgd2UgaGF2ZSBhCj4gcHJv cGVyIHdvcmtpbmcgb25lLgo+ICsgICAgLy8gSXQgY291bGQgc3RpbGwgYmUgd3JvbmcgYnV0IGlu IHRoYXQgY2FzZSB0aGUgZ2F0ZXdheSBzaG91bGQgc2F2ZQo+IHVzIGFuZAo+ICsgICAgLy8gcnV0 dXJuIGEgNDAzIGVycm9yLiBUaGUgaHR0cCBwcm90b2NvbCBoYW5kbGVzIHRoaXMuCj4gKyAgICBp ZiAoc3RybGVuKGlwZnNfY2lkKSA8IDEpIHsKPiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dB Uk5JTkcsICJBIENJRCBtdXN0IGJlIHByb3ZpZGVkLlxuIik7Cj4gKyAgICAgICAgcmV0ID0gQVZF UlJPUihFSUxTRVEpOwo+ICsgICAgICAgIGdvdG8gZXJyOwo+ICsgICAgfQo+ICsKPiArICAgIC8v IFBvcHVsYXRlIGMtPmdhdGV3YXlfYnVmZmVyIHdpdGggd2hhdGV2ZXIgaXMgaW4gYy0+Z2F0ZXdh eQo+ICsgICAgaWYgKGMtPmdhdGV3YXkgIT0gTlVMTCkgewo+ICsgICAgICAgIGlmIChzbnByaW50 ZihjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwgIiVzIiwKPiAr ICAgICAgICAgICAgICAgICAgICAgYy0+Z2F0ZXdheSkKPiArICAgICAgICAgICAgPj0gc2l6ZW9m KGMtPmdhdGV3YXlfYnVmZmVyKSkgewo+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dB Uk5JTkcsCj4gKyAgICAgICAgICAgICAgICAgICAiVGhlIC1nYXRld2F5IHBhcmFtZXRlciBpcyB0 b28gbG9uZy4gIgo+ICsgICAgICAgICAgICAgICAgICAgIldlIGFsbG93IGEgbWF4IG9mICV6dSBj aGFyYWN0ZXJzXG4iLAo+ICsgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGMtPmdhdGV3YXlfYnVm ZmVyKSk7Cj4gKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiArICAgICAgICAg ICAgZ290byBlcnI7Cj4gKyAgICAgICAgfQo+ICsgICAgfSBlbHNlIHsKPiArICAgICAgICAvLyBQ b3B1bGF0ZSB0aGUgSVBGUyBnYXRld2F5IGlmIHdlIGhhdmUgYW55Lgo+ICsgICAgICAgIC8vIElm IG5vdCwgaW5mb3JtIHRoZSB1c2VyIGhvdyB0byBwcm9wZXJseSBzZXQgb25lLgo+ICsgICAgICAg IHJldCA9IHBvcHVsYXRlX2lwZnNfZ2F0ZXdheShoKTsKPiArCj4gKyAgICAgICAgaWYgKHJldCA8 IDEpIHsKPiArICAgICAgICAgICAgLy8gV2UgZmFsbGJhY2sgb24gZHdlYi5saW5rIChtYW5hZ2Vk IGJ5IFByb3RvY29sIExhYnMpLgo+ICsgICAgICAgICAgICBzbnByaW50ZihjLT5nYXRld2F5X2J1 ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSwgIgo+IGh0dHBzOi8vZHdlYi5saW5rIik7 Cj4gKwo+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsCj4gKyAgICAgICAg ICAgICAgICAgICAiSVBGUyBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgcnVubmluZy4gIgo+ICsgICAg ICAgICAgICAgICAgICAgIllvdeKAmXJlIG5vdyB1c2luZyB0aGUgcHVibGljIGdhdGV3YXkgYXQg ZHdlYi5saW5rLlxuIik7Cj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywKPiAr ICAgICAgICAgICAgICAgICAgICJJbnN0YWxsaW5nIElQRlMgbG9jYWxseSBpcyByZWNvbW1lbmRl ZCB0byAiCj4gKyAgICAgICAgICAgICAgICAgICAiaW1wcm92ZSBwZXJmb3JtYW5jZSBhbmQgcmVs aWFiaWxpdHksICIKPiArICAgICAgICAgICAgICAgICAgICJhbmQgbm90IHNoYXJlIGFsbCB5b3Vy IGFjdGl2aXR5IHdpdGggYSBzaW5nbGUgSVBGUwo+IGdhdGV3YXkuXG4iCj4gKyAgICAgICAgICAg ICAgICAgICAiVGhlcmUgYXJlIG11bHRpcGxlIG9wdGlvbnMgdG8gZGVmaW5lIHRoaXMgZ2F0ZXdh eS5cbiIKPiArICAgICAgICAgICAgICAgICAgICIxLiBDYWxsIGZmbXBlZyB3aXRoIGEgZ2F0ZXdh eSBwYXJhbSwgIgo+ICsgICAgICAgICAgICAgICAgICAgIndpdGhvdXQgYSB0cmFpbGluZyBzbGFz aDogLWdhdGV3YXkgPHVybD4uXG4iCj4gKyAgICAgICAgICAgICAgICAgICAiMi4gRGVmaW5lIGFu ICRJUEZTX0dBVEVXQVkgZW52aXJvbm1lbnQgdmFyaWFibGUgd2l0aAo+IHRoZSAiCj4gKyAgICAg ICAgICAgICAgICAgICAiZnVsbCBIVFRQIFVSTCB0byB0aGUgZ2F0ZXdheSAiCj4gKyAgICAgICAg ICAgICAgICAgICAid2l0aG91dCB0cmFpbGluZyBmb3J3YXJkIHNsYXNoLlxuIgo+ICsgICAgICAg ICAgICAgICAgICAgIjMuIERlZmluZSBhbiAkSVBGU19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxl ICIKPiArICAgICAgICAgICAgICAgICAgICJhbmQgcG9pbnQgaXQgdG8gdGhlIElQRlMgZGF0YSBw YXRoICIKPiArICAgICAgICAgICAgICAgICAgICItIHRoaXMgaXMgdHlwaWNhbGx5IH4vLmlwZnNc biIpOwo+ICsgICAgICAgIH0KPiArICAgIH0KPiArCj4gKyAgICAvLyBUZXN0IGlmIHRoZSBnYXRl d2F5IHN0YXJ0cyB3aXRoIGVpdGhlciBodHRwOi8vIG9yIGh0dHBzOi8vCj4gKyAgICBpZiAoYXZf c3RyaXN0YXJ0KGMtPmdhdGV3YXlfYnVmZmVyLCAiaHR0cDovLyIsIE5VTEwpID09IDAKPiArICAg ICAgICAmJiBhdl9zdHJpc3RhcnQoYy0+Z2F0ZXdheV9idWZmZXIsICJodHRwczovLyIsIE5VTEwp ID09IDApIHsKPiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsCj4gKyAgICAgICAg ICAgICAgICJUaGUgZ2F0ZXdheSBVUkwgZGlkbid0IHN0YXJ0IHdpdGggaHR0cDovLyBvciAiCj4g KyAgICAgICAgICAgICAgICJodHRwczovLyBhbmQgaXMgdGhlcmVmb3JlIGludmFsaWQuXG4iKTsK PiArICAgICAgICByZXQgPSBBVkVSUk9SKEVJTFNFUSk7Cj4gKyAgICAgICAgZ290byBlcnI7Cj4g KyAgICB9Cj4gKwo+ICsgICAgLy8gQ29uY2F0ZW5hdGUgdGhlIHVybC4KPiArICAgIC8vIFRoaXMg ZW5kcyB1cCB3aXRoIHNvbWV0aGluZyBsaWtlOiBodHRwOi8vbG9jYWxob3N0OjgwODAvaXBmcy9R bS4uLgo+IC4uCj4gKyAgICAvLyBUaGUgZm9ybWF0IG9mICIlcyVzJXMlcyIgaXMgdGhlIGZvbGxv d2luZzoKPiArICAgIC8vIDFzdCAlcyA9IFRoZSBnYXRld2F5Lgo+ICsgICAgLy8gMm5kICVzID0g SWYgdGhlIGdhdGV3YXkgZGlkbid0IGVuZCBpbiBhIHNsYXNoLCBhZGQgYSAiLyIuCj4gT3RoZXJ3 aXNlIGl0J3MgYW4gZW1wdHkgc3RyaW5nCj4gKyAgICAvLyAzcmQgJXMgPSBFaXRoZXIgaXBucy8g b3IgaXBmcy8uCj4gKyAgICAvLyA0dGggJXMgPSBUaGUgSVBGUyBDSUQgKFFtLi4uLCBiYWZ5Li4u LCAuLi4pLgo+ICsgICAgZnVsbHVyaSA9IGF2X2FzcHJpbnRmKCIlcyVzJXMlcyIsCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgYy0+Z2F0ZXdheV9idWZmZXIsCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgKGMtPmdhdGV3YXlfYnVmZmVyW3N0cmxlbihjLT5nYXRld2F5X2J1ZmZlcikg LQo+IDFdID09ICcvJykgPyAiIiA6ICIvIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAo aXNfaXBucykgPyAiaXBucy8iIDogImlwZnMvIiwKPiArICAgICAgICAgICAgICAgICAgICAgICAg ICBpcGZzX2NpZCk7Cj4gKwo+ICsgICAgaWYgKCFmdWxsdXJpKSB7Cj4gKyAgICAgICAgYXZfbG9n KGgsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0byBjb21wb3NlIHRoZSBVUkxcbiIpOwo+ICsgICAg ICAgIHJldCA9IEFWRVJST1IoRU5PTUVNKTsKPiArICAgICAgICBnb3RvIGVycjsKPiArICAgIH0K PiArCj4gKyAgICAvLyBQYXNzIHRoZSBVUkwgYmFjayB0byBGRk1wZWcncyBwcm90b2NvbCBoYW5k bGVyLgo+ICsgICAgcmV0ID0gZmZ1cmxfb3Blbl93aGl0ZWxpc3QoJmMtPmlubmVyLCBmdWxsdXJp LCBmbGFncywKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoLT5pbnRlcnJ1cHRf Y2FsbGJhY2ssIG9wdGlvbnMsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLT5w cm90b2NvbF93aGl0ZWxpc3QsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoLT5w cm90b2NvbF9ibGFja2xpc3QsIGgpOwo+ICsgICAgaWYgKHJldCA8IDApIHsKPiArICAgICAgICBh dl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJVbmFibGUgdG8gb3BlbiByZXNvdXJjZTogJXNcbiIs Cj4gZnVsbHVyaSk7Cj4gKyAgICAgICAgZ290byBlcnI7Cj4gKyAgICB9Cj4gKwo+ICtlcnI6Cj4g KyAgICBhdl9mcmVlKGZ1bGx1cmkpOwo+ICsgICAgcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3Rh dGljIGludCBpcGZzX3JlYWQoVVJMQ29udGV4dCAqaCwgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQg c2l6ZSkKPiArewo+ICsgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9kYXRhOwo+ ICsgICAgcmV0dXJuIGZmdXJsX3JlYWQoYy0+aW5uZXIsIGJ1Ziwgc2l6ZSk7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQ2NF90IGlwZnNfc2VlayhVUkxDb250ZXh0ICpoLCBpbnQ2NF90IHBvcywgaW50 IHdoZW5jZSkKPiArewo+ICsgICAgSVBGU0dhdGV3YXlDb250ZXh0ICpjID0gaC0+cHJpdl9kYXRh Owo+ICsgICAgcmV0dXJuIGZmdXJsX3NlZWsoYy0+aW5uZXIsIHBvcywgd2hlbmNlKTsKPiArfQo+ ICsKPiArc3RhdGljIGludCBpcGZzX2Nsb3NlKFVSTENvbnRleHQgKmgpCj4gK3sKPiArICAgIElQ RlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKPiArICAgIHJldHVybiBmZnVybF9j bG9zZXAoJmMtPmlubmVyKTsKPiArfQo+ICsKPiArI2RlZmluZSBPRkZTRVQoeCkgb2Zmc2V0b2Yo SVBGU0dhdGV3YXlDb250ZXh0LCB4KQo+ICsKPiArc3RhdGljIGNvbnN0IEFWT3B0aW9uIG9wdGlv bnNbXSA9IHsKPiArICAgIHsiZ2F0ZXdheSIsICJUaGUgZ2F0ZXdheSB0byBhc2sgZm9yIElQRlMg ZGF0YS4iLCBPRkZTRVQoZ2F0ZXdheSksCj4gQVZfT1BUX1RZUEVfU1RSSU5HLCB7LnN0ciA9IE5V TEx9LCAwLCAwLCBBVl9PUFRfRkxBR19ERUNPRElOR19QQVJBTX0sCj4gKyAgICB7TlVMTH0sCj4g K307Cj4gKwo+ICtzdGF0aWMgY29uc3QgQVZDbGFzcyBpcGZzX2NvbnRleHRfY2xhc3MgPSB7Cj4g KyAgICAuY2xhc3NfbmFtZSAgICAgPSAiSVBGUyIsCj4gKyAgICAuaXRlbV9uYW1lICAgICAgPSBh dl9kZWZhdWx0X2l0ZW1fbmFtZSwKPiArICAgIC5vcHRpb24gICAgICAgICA9IG9wdGlvbnMsCj4g KyAgICAudmVyc2lvbiAgICAgICAgPSBMSUJBVlVUSUxfVkVSU0lPTl9JTlQsCj4gK307Cj4gKwo+ ICtjb25zdCBVUkxQcm90b2NvbCBmZl9pcGZzX3Byb3RvY29sID0gewo+ICsgICAgLm5hbWUgICAg ICAgICAgICAgICA9ICJpcGZzIiwKPiArICAgIC51cmxfb3BlbjIgICAgICAgICAgPSB0cmFuc2xh dGVfaXBmc190b19odHRwLAo+ICsgICAgLnVybF9yZWFkICAgICAgICAgICA9IGlwZnNfcmVhZCwK PiArICAgIC51cmxfc2VlayAgICAgICAgICAgPSBpcGZzX3NlZWssCj4gKyAgICAudXJsX2Nsb3Nl ICAgICAgICAgID0gaXBmc19jbG9zZSwKPiArICAgIC5wcml2X2RhdGFfc2l6ZSAgICAgPSBzaXpl b2YoSVBGU0dhdGV3YXlDb250ZXh0KSwKPiArICAgIC5wcml2X2RhdGFfY2xhc3MgICAgPSAmaXBm c19jb250ZXh0X2NsYXNzLAo+ICt9Owo+ICsKPiArY29uc3QgVVJMUHJvdG9jb2wgZmZfaXBuc19w cm90b2NvbCA9IHsKPiArICAgIC5uYW1lICAgICAgICAgICAgICAgPSAiaXBucyIsCj4gKyAgICAu dXJsX29wZW4yICAgICAgICAgID0gdHJhbnNsYXRlX2lwZnNfdG9faHR0cCwKPiArICAgIC51cmxf cmVhZCAgICAgICAgICAgPSBpcGZzX3JlYWQsCj4gKyAgICAudXJsX3NlZWsgICAgICAgICAgID0g aXBmc19zZWVrLAo+ICsgICAgLnVybF9jbG9zZSAgICAgICAgICA9IGlwZnNfY2xvc2UsCj4gKyAg ICAucHJpdl9kYXRhX3NpemUgICAgID0gc2l6ZW9mKElQRlNHYXRld2F5Q29udGV4dCksCj4gKyAg ICAucHJpdl9kYXRhX2NsYXNzICAgID0gJmlwZnNfY29udGV4dF9jbGFzcywKPiArfTsKPiBkaWZm IC0tZ2l0IGEvbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMgYi9saWJhdmZvcm1hdC9wcm90b2NvbHMu Ywo+IGluZGV4IGQwNzU2M2NkMGMuLjZlZTYyYTU5OGEgMTAwNjQ0Cj4gLS0tIGEvbGliYXZmb3Jt YXQvcHJvdG9jb2xzLmMKPiArKysgYi9saWJhdmZvcm1hdC9wcm90b2NvbHMuYwo+IEBAIC03MSw2 ICs3MSw4IEBAIGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzcnRfcHJvdG9jb2w7Cj4g IGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzc2hfcHJvdG9jb2w7Cj4gIGV4dGVybiBj b25zdCBVUkxQcm90b2NvbCBmZl9saWJzbWJjbGllbnRfcHJvdG9jb2w7Cj4gIGV4dGVybiBjb25z dCBVUkxQcm90b2NvbCBmZl9saWJ6bXFfcHJvdG9jb2w7Cj4gK2V4dGVybiBjb25zdCBVUkxQcm90 b2NvbCBmZl9pcGZzX3Byb3RvY29sOwo+ICtleHRlcm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfaXBu c19wcm90b2NvbDsKPgo+ICAjaW5jbHVkZSAibGliYXZmb3JtYXQvcHJvdG9jb2xfbGlzdC5jIgo+ Cj4gLS0KPiAyLjM1LjEKPgo+CkkganVzdCBrZWVwIHBpbmdpbmcuLi4gOikKV2VsbC4uIFRoaXMg aXMgdGhlIG9uZSB0byBiZSBtZXJnZWQsIHJpZ2h0PwpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1k ZXZlbEBmZm1wZWcub3JnCmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBl Zy1kZXZlbAoKVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBl Zy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==