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 1D771427CF for ; Wed, 30 Mar 2022 15:18:09 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E9C3968B2B0; Wed, 30 Mar 2022 18:18:06 +0300 (EEST) Received: from mail-wm1-f49.google.com (mail-wm1-f49.google.com [209.85.128.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6E4FB68B210 for ; Wed, 30 Mar 2022 18:18:00 +0300 (EEST) Received: by mail-wm1-f49.google.com with SMTP id r7so12468658wmq.2 for ; Wed, 30 Mar 2022 08:18:00 -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=oNhMqKcnbx2menQ9snbxnv+Vid6bRc1AW6dN5k4wJew=; b=L5/r+MHOQ/f9Q2vzheoHmqnOYB3k0QEFQycNjiXc22K1z61jZL2JhIfNp/zoOMsdpr LMTQI43OQRjOG5I6wE681kLojmKI8R8BMMO5QOkRL48tmwkGaPa1L9SW5/9prLxjfe6t UrxEnJF/lSrpi9cFAc/BdEDy6Komk6SnOYKA9N2UZCtswJyZ/3LamGXZJPZ3XCOM9fCQ qzHw13b6nTPaFnVHeHPx1ZGo14LHLAI/sXHjXEIngsFEE5FFdS61b0B0bBstlmfOO1Qk 9QiQnv0r8RHzRTeS+jqVfDdAv/hHOniij7cBAu66ffjc5/5FbmI+G6l3DSSeHK3QRkYL J8jg== 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=oNhMqKcnbx2menQ9snbxnv+Vid6bRc1AW6dN5k4wJew=; b=mCdftDMfJToWIfWZdwcwnfHsCCgtTtm94J7kocbc9Ezpqk04yQF04SKBYBSQhajRGP 5QfxaCeQW6Md4BqL9l+18zpRKxl1PgqXrF36OLKiZBm1CnhEcsOh8yd2Lv1tp947rhYt 9GoIcCkyvbNDqpU+EdnMbRdKelPABBGqjZH8aRYNVrTA/IfjhdXUJC/4fIbTUYsucGox 5pzWOX4/37uGM67RsNCf4Ev/srH/Y8/i65+2YJ8QzEz52dx1rtdZ4ei0eo8GJuUQyyrs neJ7+5SXbE/qxjUdZYSS2ZifQxQXb+j9tNAdf5X2hpJ0utnig45TsDHQznPR+RFUSXew 3V0w== X-Gm-Message-State: AOAM5316Kz2IJGZf8XZaGE/SMLTwsXG7HlNW5LcZGlCsJi8qdiUqLTDR Ob4yNBBKhOiceNbPyIYn22qT9G5fmQhwXILrTUkyldT6buA= X-Google-Smtp-Source: ABdhPJzpCGk64ZvOkFrks6ZrBvJgU/GI5A2Jz5z8azwMeMfNVokHKrPjdPArvVYOzx4OFsiNKM6sRTQjQcCDF2ac85A= X-Received: by 2002:a05:600c:6019:b0:38d:fbc:7988 with SMTP id az25-20020a05600c601900b0038d0fbc7988mr4988005wmb.100.1648653479655; Wed, 30 Mar 2022 08:17:59 -0700 (PDT) MIME-Version: 1.0 References: <20220330114039.69510-1-markg85@gmail.com> <20220330114039.69510-2-markg85@gmail.com> In-Reply-To: From: Mark Gaiser Date: Wed, 30 Mar 2022 17:16:52 +0200 Message-ID: To: Andreas Rheinhardt X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [FFmpeg-devel] [PATCH v10 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: 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: T24gV2VkLCBNYXIgMzAsIDIwMjIgYXQgMzo1NyBQTSBBbmRyZWFzIFJoZWluaGFyZHQgPAphbmRy ZWFzLnJoZWluaGFyZHRAb3V0bG9vay5jb20+IHdyb3RlOgoKPiBNYXJrIEdhaXNlcjoKPiA+IE9u IFdlZCwgTWFyIDMwLCAyMDIyIGF0IDI6MjEgUE0gQW5kcmVhcyBSaGVpbmhhcmR0IDwKPiA+IGFu ZHJlYXMucmhlaW5oYXJkdEBvdXRsb29rLmNvbT4gd3JvdGU6Cj4gPgo+ID4+IE1hcmsgR2Fpc2Vy Ogo+ID4+PiBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3I6Cj4gPj4+IC0gZmZwbGF5IGlwZnM6 Ly88Y2lkPgo+ID4+PiAtIGZmcGxheSBpcG5zOi8vPGNpZD4KPiA+Pj4KPiA+Pj4gSVBGUyBkYXRh IGNhbiBiZSBwbGF5ZWQgZnJvbSBzbyBjYWxsZWQgImlwZnMgZ2F0ZXdheXMiLgo+ID4+PiBBIGdh dGV3YXkgaXMgZXNzZW50aWFsbHkgYSB3ZWJzZXJ2ZXIgdGhhdCBnaXZlcyBhY2Nlc3MgdG8gdGhl Cj4gPj4+IGRpc3RyaWJ1dGVkIElQRlMgbmV0d29yay4KPiA+Pj4KPiA+Pj4gVGhpcyBwcm90b2Nv bCBzdXBwb3J0IChpcGZzIGFuZCBpcG5zKSB0aGVyZWZvcmUgdHJhbnNsYXRlcwo+ID4+PiBpcGZz Oi8vIGFuZCBpcG5zOi8vIHRvIGEgaHR0cDovLyB1cmwuIFRoaXMgcmVzdWx0aW5nIHVybCBpcwo+ ID4+PiB0aGVuIGhhbmRsZWQgYnkgdGhlIGh0dHAgcHJvdG9jb2wuIEl0IGNvdWxkIGFsc28gYmUg aHR0cHMKPiA+Pj4gZGVwZW5kaW5nIG9uIHRoZSBnYXRld2F5IHByb3ZpZGVkLgo+ID4+Pgo+ID4+ PiBUbyB1c2UgdGhpcyBwcm90b2NvbCwgYSBnYXRld2F5IG11c3QgYmUgcHJvdmlkZWQuCj4gPj4+ IElmIHlvdSBkbyBub3RoaW5nIGl0IHdpbGwgdHJ5IHRvIGZpbmQgaXQgaW4geW91cgo+ID4+PiAk SE9NRS8uaXBmcy9nYXRld2F5IGZpbGUuIFRoZSB3YXlzIHRvIHNldCBpdCBtYW51YWxseSBhcmU6 Cj4gPj4+IDEuIERlZmluZSBhIC1nYXRld2F5IDx1cmw+IHRvIHRoZSBnYXRld2F5Lgo+ID4+PiAy LiBEZWZpbmUgJElQRlNfR0FURVdBWSB3aXRoIHRoZSBmdWxsIGh0dHAgbGluayB0byB0aGUgZ2F0 ZXdheS4KPiA+Pj4gMy4gRGVmaW5lICRJUEZTX1BBVEggYW5kIHBvaW50IGl0IHRvIHRoZSBJUEZT IGRhdGEgcGF0aC4KPiA+Pj4gNC4gSGF2ZSBJUEZTIHJ1bm5pbmcgaW4geW91ciBsb2NhbCB1c2Vy IGZvbGRlciAodW5kZXIgJEhPTUUvLmlwZnMpLgo+ID4+Pgo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBN YXJrIEdhaXNlciA8bWFya2c4NUBnbWFpbC5jb20+Cj4gPj4+IC0tLQo+ID4+PiAgY29uZmlndXJl ICAgICAgICAgICAgICAgICB8ICAgMiArCj4gPj4+ICBkb2MvcHJvdG9jb2xzLnRleGkgICAgICAg IHwgIDMwICsrKysKPiA+Pj4gIGxpYmF2Zm9ybWF0L01ha2VmaWxlICAgICAgfCAgIDIgKwo+ID4+ PiAgbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYyB8IDMwOSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ID4+PiAgbGliYXZmb3JtYXQvcHJvdG9jb2xzLmMgICB8ICAgMiAr Cj4gPj4+ICA1IGZpbGVzIGNoYW5nZWQsIDM0NSBpbnNlcnRpb25zKCspCj4gPj4+ICBjcmVhdGUg bW9kZSAxMDA2NDQgbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwo+ID4+Pgo+ID4+PiBkaWZmIC0t Z2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCj4gPj4+IGluZGV4IGU0ZDM2YWE2MzkuLjU1YWY5 MDk1N2EgMTAwNzU1Cj4gPj4+IC0tLSBhL2NvbmZpZ3VyZQo+ID4+PiArKysgYi9jb25maWd1cmUK PiA+Pj4gQEAgLTM1NzksNiArMzU3OSw4IEBAIHVkcF9wcm90b2NvbF9zZWxlY3Q9Im5ldHdvcmsi Cj4gPj4+ICB1ZHBsaXRlX3Byb3RvY29sX3NlbGVjdD0ibmV0d29yayIKPiA+Pj4gIHVuaXhfcHJv dG9jb2xfZGVwcz0ic3lzX3VuX2giCj4gPj4+ICB1bml4X3Byb3RvY29sX3NlbGVjdD0ibmV0d29y ayIKPiA+Pj4gK2lwZnNfcHJvdG9jb2xfc2VsZWN0PSJodHRwc19wcm90b2NvbCIKPiA+Pj4gK2lw bnNfcHJvdG9jb2xfc2VsZWN0PSJodHRwc19wcm90b2NvbCIKPiA+Pj4KPiA+Pj4gICMgZXh0ZXJu YWwgbGlicmFyeSBwcm90b2NvbHMKPiA+Pj4gIGxpYmFtcXBfcHJvdG9jb2xfZGVwcz0ibGlicmFi Yml0bXEiCj4gPj4+IGRpZmYgLS1naXQgYS9kb2MvcHJvdG9jb2xzLnRleGkgYi9kb2MvcHJvdG9j b2xzLnRleGkKPiA+Pj4gaW5kZXggZDIwN2RmMGI1Mi4uN2M5YzBhNDgwOCAxMDA2NDQKPiA+Pj4g LS0tIGEvZG9jL3Byb3RvY29scy50ZXhpCj4gPj4+ICsrKyBiL2RvYy9wcm90b2NvbHMudGV4aQo+ ID4+PiBAQCAtMjAyNSw1ICsyMDI1LDM1IEBAIGRlY29kaW5nIGVycm9ycy4KPiA+Pj4KPiA+Pj4g IEBlbmQgdGFibGUKPiA+Pj4KPiA+Pj4gK0BzZWN0aW9uIGlwZnMKPiA+Pj4gKwo+ID4+PiArSW50 ZXJQbGFuZXRhcnkgRmlsZSBTeXN0ZW0gKElQRlMpIHByb3RvY29sIHN1cHBvcnQuIE9uZSBjYW4g YWNjZXNzCj4gPj4gZmlsZXMgc3RvcmVkCj4gPj4+ICtvbiB0aGUgSVBGUyBuZXR3b3JrIHRocm91 Z2ggc28gY2FsbGVkIGdhdGV3YXlzLiBUaG9zZSBhcmUgaHR0cChzKQo+ID4+IGVuZHBvaW50cy4K PiA+Pj4gK1RoaXMgcHJvdG9jb2wgd3JhcHMgdGhlIElQRlMgbmF0aXZlIHByb3RvY29scyAoaXBm czovLyBhbmQgaXBuczovLykgdG8KPiA+PiBiZSBzZW5kCj4gPj4+ICt0byBzdWNoIGEgZ2F0ZXdh eS4gVXNlcnMgY2FuIChhbmQgc2hvdWxkKSBob3N0IHRoZWlyIG93biBub2RlIHdoaWNoCj4gPj4g bWVhbnMgdGhpcwo+ID4+PiArcHJvdG9jb2wgd2lsbCB1c2UgeW91ciBsb2NhbCBtYWNoaW5lIGdh dGV3YXkgdG8gYWNjZXNzIGZpbGVzIG9uIHRoZQo+ID4+IElQRlMgbmV0d29yay4KPiA+Pj4gKwo+ ID4+PiArSWYgYSB1c2VyIGRvZXNuJ3QgaGF2ZSBhIG5vZGUgb2YgdGhlaXIgb3duIHRoZW4gdGhl IHB1YmxpYyBnYXRld2F5Cj4gPj4gZHdlYi5saW5rIGlzCj4gPj4+ICt1c2VkIGJ5IGRlZmF1bHQu Cj4gPj4+ICsKPiA+Pj4gK1lvdSBjYW4gdXNlIHRoaXMgcHJvdG9jb2wgaW4gMiB3YXlzLiBVc2lu ZyBJUEZTOgo+ID4+PiArQGV4YW1wbGUKPiA+Pj4gK2ZmcGxheSBpcGZzOi8vUW1iR3RKZzIzc2to dkZtdTltSmllUFZCeWhmenU1cndvNzRNRWtWRFlBbUY1VAo+ID4+PiArQGVuZCBleGFtcGxlCj4g Pj4+ICsKPiA+Pj4gK09yIHRoZSBJUE5TIHByb3RvY29sIChJUE5TIGlzIG11dGFibGUgSVBGUyk6 Cj4gPj4+ICtAZXhhbXBsZQo+ID4+PiArZmZwbGF5IGlwbnM6Ly9RbWJHdEpnMjNza2h2Rm11OW1K aWVQVkJ5aGZ6dTVyd283NE1Fa1ZEWUFtRjVUCj4gPj4+ICtAZW5kIGV4YW1wbGUKPiA+Pj4gKwo+ ID4+PiArWW91IGNhbiBhbHNvIGNoYW5nZSB0aGUgZ2F0ZXdheSB0byBiZSB1c2VkOgo+ID4+PiAr Cj4gPj4+ICtAdGFibGUgQG9wdGlvbgo+ID4+PiArCj4gPj4+ICtAaXRlbSBnYXRld2F5Cj4gPj4+ ICtEZWZpbmVzIHRoZSBnYXRld2F5IHRvIHVzZS4gV2hlbiBub3RoaW5nIGlzIHByb3ZpZGVkIHRo ZSBwcm90b2NvbCB3aWxsCj4gPj4gZmlyc3QgdHJ5Cj4gPj4+ICt5b3VyIGxvY2FsIGdhdGV3YXku IElmIHRoYXQgZmFpbHMgZHdlYi5saW5rIHdpbGwgYmUgdXNlZC4KPiA+Pj4gKwo+ID4+PiArQGVu ZCB0YWJsZQo+ID4+Pgo+ID4+PiAgQGMgbWFuIGVuZCBQUk9UT0NPTFMKPiA+Pj4gZGlmZiAtLWdp dCBhL2xpYmF2Zm9ybWF0L01ha2VmaWxlIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKPiA+Pj4gaW5k ZXggZDcxODJkNmJkOC4uZTMyMzNmZDdhYyAxMDA2NDQKPiA+Pj4gLS0tIGEvbGliYXZmb3JtYXQv TWFrZWZpbGUKPiA+Pj4gKysrIGIvbGliYXZmb3JtYXQvTWFrZWZpbGUKPiA+Pj4gQEAgLTY2MCw2 ICs2NjAsOCBAQCBPQkpTLSQoQ09ORklHX1NSVFBfUFJPVE9DT0wpICAgICAgICAgICAgICs9Cj4g Pj4gc3J0cHByb3RvLm8gc3J0cC5vCj4gPj4+ICBPQkpTLSQoQ09ORklHX1NVQkZJTEVfUFJPVE9D T0wpICAgICAgICAgICs9IHN1YmZpbGUubwo+ID4+PiAgT0JKUy0kKENPTkZJR19URUVfUFJPVE9D T0wpICAgICAgICAgICAgICArPSB0ZWVwcm90by5vIHRlZV9jb21tb24ubwo+ID4+PiAgT0JKUy0k KENPTkZJR19UQ1BfUFJPVE9DT0wpICAgICAgICAgICAgICArPSB0Y3Aubwo+ID4+PiArT0JKUy0k KENPTkZJR19JUEZTX1BST1RPQ09MKSAgICAgICAgICAgICArPSBpcGZzZ2F0ZXdheS5vCj4gPj4+ ICtPQkpTLSQoQ09ORklHX0lQTlNfUFJPVE9DT0wpICAgICAgICAgICAgICs9IGlwZnNnYXRld2F5 Lm8KPiA+Pj4gIFRMUy1PQkpTLSQoQ09ORklHX0dOVVRMUykgICAgICAgICAgICAgICAgKz0gdGxz X2dudXRscy5vCj4gPj4+ICBUTFMtT0JKUy0kKENPTkZJR19MSUJUTFMpICAgICAgICAgICAgICAg ICs9IHRsc19saWJ0bHMubwo+ID4+PiAgVExTLU9CSlMtJChDT05GSUdfTUJFRFRMUykgICAgICAg ICAgICAgICArPSB0bHNfbWJlZHRscy5vCj4gPj4+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9p cGZzZ2F0ZXdheS5jIGIvbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwo+ID4+PiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+ID4+PiBpbmRleCAwMDAwMDAwMDAwLi4xYTAzOTU4OWMwCj4gPj4+IC0tLSAv ZGV2L251bGwKPiA+Pj4gKysrIGIvbGliYXZmb3JtYXQvaXBmc2dhdGV3YXkuYwo+ID4+PiBAQCAt MCwwICsxLDMwOSBAQAo+ID4+PiArLyoKPiA+Pj4gKyAqIElQRlMgYW5kIElQTlMgcHJvdG9jb2wg c3VwcG9ydCB0aHJvdWdoIElQRlMgR2F0ZXdheS4KPiA+Pj4gKyAqIENvcHlyaWdodCAoYykgMjAy MiBNYXJrIEdhaXNlcgo+ID4+PiArICoKPiA+Pj4gKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEZG bXBlZy4KPiA+Pj4gKyAqCj4gPj4+ICsgKiBGRm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCj4gPj4+ICsgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCj4gPj4+ICsgKiBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKPiA+Pj4g KyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgo+ID4+PiArICoKPiA+Pj4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAo+ID4+PiArICogYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKPiA+Pj4g KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUgR05VCj4gPj4+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgo+ID4+PiArICoKPiA+Pj4gKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKPiA+Pj4gKyAqIExpY2Vu c2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK PiA+Pj4gKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv b3IsIEJvc3RvbiwgTUEKPiA+PiAwMjExMC0xMzAxIFVTQQo+ID4+PiArICovCj4gPj4+ICsKPiA+ Pj4gKyNpbmNsdWRlICJhdmZvcm1hdC5oIgo+ID4+PiArI2luY2x1ZGUgImxpYmF2dXRpbC9hdmFz c2VydC5oIgo+ID4+Cj4gPj4gVW51c2VkLgo+ID4+Cj4gPj4+ICsjaW5jbHVkZSAibGliYXZ1dGls L2F2c3RyaW5nLmgiCj4gPj4+ICsjaW5jbHVkZSAibGliYXZ1dGlsL2ludGVybmFsLmgiCj4gPj4+ ICsjaW5jbHVkZSAibGliYXZ1dGlsL29wdC5oIgo+ID4+PiArI2luY2x1ZGUgImxpYmF2dXRpbC90 cmVlLmgiCj4gPj4KPiA+PiA/Cj4gPj4KPiA+Cj4gPiBUaGlzIHdob2xlIGluY2x1ZGUgcGFydCBj YW4gYmUgY2xlYW5lZCB1cCBtdWNoIG1vcmUuCj4gPiBKdXN0IGhhdmluZyB0aGVzZToKPiA+ICNp bmNsdWRlICJsaWJhdnV0aWwvYXZzdHJpbmcuaCIKPiA+ICNpbmNsdWRlICJsaWJhdnV0aWwvb3B0 LmgiCj4gPiAjaW5jbHVkZSAidXJsLmgiCj4gPiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPiA+Cj4g PiBpcyBlbm91Z2guCj4gPgo+ID4KPiA+Pj4gKyNpbmNsdWRlIDxmY250bC5oPgo+ID4+PiArI2lm IEhBVkVfSU9fSAo+ID4+PiArI2luY2x1ZGUgPGlvLmg+Cj4gPj4+ICsjZW5kaWYKPiA+Pj4gKyNp ZiBIQVZFX1VOSVNURF9ICj4gPj4+ICsjaW5jbHVkZSA8dW5pc3RkLmg+Cj4gPj4+ICsjZW5kaWYK PiA+Pj4gKyNpbmNsdWRlICJvc19zdXBwb3J0LmgiCj4gPj4+ICsjaW5jbHVkZSAidXJsLmgiCj4g Pj4+ICsjaW5jbHVkZSA8c3RkbGliLmg+Cj4gPj4+ICsjaW5jbHVkZSA8c3lzL3N0YXQuaD4KPiA+ Pj4gKwo+ID4+PiArdHlwZWRlZiBzdHJ1Y3QgSVBGU0dhdGV3YXlDb250ZXh0IHsKPiA+Pj4gKyAg ICBBVkNsYXNzICpjbGFzczsKPiA+Pj4gKyAgICBVUkxDb250ZXh0ICppbm5lcjsKPiA+Pj4gKyAg ICAvLyBJcyBmaWxsZWQgYnkgdGhlIC1nYXRld2F5IGFyZ3VtZW50IGFuZCBub3QgY2hhbmdlZCBh ZnRlci4KPiA+Pj4gKyAgICBjaGFyICpnYXRld2F5Owo+ID4+PiArICAgIC8vIElmIHRoZSBhYm92 ZSBnYXRld2F5IGlzIG5vbiBudWxsLCBpdCB3aWxsIGJlIGNvcGllZCBpbnRvIHRoaXMKPiA+PiBi dWZmZXIuCj4gPj4+ICsgICAgLy8gRWxzZSB0aGlzIGJ1ZmZlciB3aWxsIGNvbnRhaW4gdGhlIGF1 dG8gZGV0ZWN0ZWQgZ2F0ZXdheS4KPiA+Pj4gKyAgICAvLyBJbiBlaXRoZXIgY2FzZSwgdGhlIGdh dGV3YXkgdG8gdXNlIHdpbGwgYmUgaW4gdGhpcyBidWZmZXIuCj4gPj4+ICsgICAgY2hhciBnYXRl d2F5X2J1ZmZlcltQQVRIX01BWF07Cj4gPj4+ICt9IElQRlNHYXRld2F5Q29udGV4dDsKPiA+Pj4g Kwo+ID4+PiArLy8gQSBiZXN0LWVmZm9ydCB3YXkgdG8gZmluZCB0aGUgSVBGUyBnYXRld2F5Lgo+ ID4+PiArLy8gT25seSB0aGUgbW9zdCBhcHByb3BpYXRlIGdhdGV3YXkgaXMgc2V0LiBJdCdzIG5v dCBhY3R1YWxseQo+IHJlcXVlc3RlZAo+ID4+PiArLy8gKGh0dHAgY2FsbCkgdG8gcHJldmVudCBh IHBvdGVudGlhbCBzbG93ZG93biBpbiBzdGFydHVwLiBBIHBvdGVudGlhbAo+ID4+IHRpbWVvdXQK PiA+Pj4gKy8vIGlzIGhhbmRsZWQgYnkgdGhlIEhUVFAgcHJvdG9jb2wuCj4gPj4+ICtzdGF0aWMg aW50IHBvcHVsYXRlX2lwZnNfZ2F0ZXdheShVUkxDb250ZXh0ICpoKQo+ID4+PiArewo+ID4+PiAr ICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKPiA+Pj4gKyAgICBjaGFy IGlwZnNfZnVsbF9kYXRhX2ZvbGRlcltQQVRIX01BWF07Cj4gPj4+ICsgICAgY2hhciBpcGZzX2dh dGV3YXlfZmlsZVtQQVRIX01BWF07Cj4gPj4+ICsgICAgc3RydWN0IHN0YXQgc3Q7Cj4gPj4+ICsg ICAgaW50IHN0YXRfcmV0ID0gMDsKPiA+Pj4gKyAgICBpbnQgcmV0ID0gQVZFUlJPUihFSU5WQUwp Owo+ID4+PiArICAgIEZJTEUgKmdhdGV3YXlfZmlsZSA9IE5VTEw7Cj4gPj4+ICsKPiA+Pj4gKyAg ICAvLyBUZXN0ICRJUEZTX0dBVEVXQVkuCj4gPj4+ICsgICAgaWYgKGdldGVudigiSVBGU19HQVRF V0FZIikgIT0gTlVMTCkgewo+ID4+PiArICAgICAgICBpZiAoc25wcmludGYoYy0+Z2F0ZXdheV9i dWZmZXIsIHNpemVvZihjLT5nYXRld2F5X2J1ZmZlciksCj4gIiVzIiwKPiA+Pj4gKyAgICAgICAg ICAgICAgICAgICAgIGdldGVudigiSVBGU19HQVRFV0FZIikpID49Cj4gPj4gc2l6ZW9mKGMtPmdh dGV3YXlfYnVmZmVyKSkgewo+ID4+PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJO SU5HLCAiVGhlIElQRlNfR0FURVdBWSBlbnZpcm9ubWVudAo+ID4+IHZhcmlhYmxlIGV4Y2VlZHMg dGhlIG1heGltdW0gbGVuZ3RoLiBXZSBhbGxvdyBhIG1heCBvZiAlenUKPiBjaGFyYWN0ZXJzXG4i LAo+ID4+IHNpemVvZihjLT5nYXRld2F5X2J1ZmZlcikpOwo+ID4+PiArICAgICAgICAgICAgcmV0 ID0gQVZFUlJPUihFSU5WQUwpOwo+ID4+PiArICAgICAgICAgICAgZ290byBlcnI7Cj4gPj4+ICsg ICAgICAgIH0KPiA+Pj4gKwo+ID4+PiArICAgICAgICByZXQgPSAxOwo+ID4+PiArICAgICAgICBn b3RvIGVycjsKPiA+Pj4gKyAgICB9IGVsc2UKPiA+Pj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xP R19ERUJVRywgIiRJUEZTX0dBVEVXQVkgaXMgZW1wdHkuXG4iKTsKPiA+Pj4gKwo+ID4+PiArICAg IC8vIFdlIG5lZWQgdG8ga25vdyB0aGUgSVBGUyBmb2xkZXIgdG8gLSBldmVudHVhbGx5IC0gcmVh ZCB0aGUKPiA+PiBjb250ZW50cyBvZgo+ID4+PiArICAgIC8vIHRoZSAiZ2F0ZXdheSIgZmlsZSB3 aGljaCB3b3VsZCB0ZWxsIHVzIHRoZSBnYXRld2F5IHRvIHVzZS4KPiA+Pj4gKyAgICBpZiAoZ2V0 ZW52KCJJUEZTX1BBVEgiKSA9PSBOVUxMKSB7Cj4gPj4+ICsgICAgICAgIGF2X2xvZyhoLCBBVl9M T0dfREVCVUcsICIkSVBGU19QQVRIIGlzIGVtcHR5LlxuIik7Cj4gPj4+ICsKPiA+Pj4gKyAgICAg ICAgLy8gVHJ5IHZpYSB0aGUgaG9tZSBmb2xkZXIuCj4gPj4+ICsgICAgICAgIGlmIChnZXRlbnYo IkhPTUUiKSA9PSBOVUxMKSB7Cj4gPj4+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dB Uk5JTkcsICIkSE9NRSBhcHBlYXJzIHRvIGJlIGVtcHR5LlxuIik7Cj4gPj4+ICsgICAgICAgICAg ICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4gPj4+ICsgICAgICAgICAgICBnb3RvIGVycjsKPiA+ Pj4gKyAgICAgICAgfQo+ID4+PiArCj4gPj4+ICsgICAgICAgIC8vIFZlcmlmeSB0aGUgY29tcG9z ZWQgcGF0aCBmaXRzLgo+ID4+PiArICAgICAgICBpZiAoc25wcmludGYoaXBmc19mdWxsX2RhdGFf Zm9sZGVyLAo+ID4+IHNpemVvZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpLAo+ID4+PiArICAgICAg ICAgICAgICAgICAgICAgIiVzLy5pcGZzLyIsIGdldGVudigiSE9NRSIpKSA+PQo+ID4+IHNpemVv ZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpKSB7Cj4gPj4+ICsgICAgICAgICAgICBhdl9sb2coaCwg QVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGUyBkYXRhIHBhdGggZXhjZWVkcyB0aGUKPiA+PiBtYXgg cGF0aCBsZW5ndGggKCV6dSlcbiIsIHNpemVvZihpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpKTsKPiA+ Pj4gKyAgICAgICAgICAgIHJldCA9IEFWRVJST1IoRUlOVkFMKTsKPiA+Pj4gKyAgICAgICAgICAg IGdvdG8gZXJyOwo+ID4+PiArICAgICAgICB9Cj4gPj4+ICsKPiA+Pj4gKyAgICAgICAgLy8gU3Rh dCB0aGUgZm9sZGVyLgo+ID4+PiArICAgICAgICAvLyBJdCBzaG91bGQgZXhpc3QgaW4gYSBkZWZh dWx0IElQRlMgc2V0dXAgd2hlbiBydW4gYXMgbG9jYWwKPiA+PiB1c2VyLgo+ID4+PiArI2lmbmRl ZiBfV0lOMzIKPiA+Pj4gKyAgICAgICAgc3RhdF9yZXQgPSBzdGF0KGlwZnNfZnVsbF9kYXRhX2Zv bGRlciwgJnN0KTsKPiA+Pj4gKyNlbHNlCj4gPj4+ICsgICAgICAgIHN0YXRfcmV0ID0gd2luMzJf c3RhdChpcGZzX2Z1bGxfZGF0YV9mb2xkZXIsICZzdCk7Cj4gPj4+ICsjZW5kaWYKPiA+Pj4gKyAg ICAgICAgaWYgKHN0YXRfcmV0IDwgMCkgewo+ID4+PiArICAgICAgICAgICAgYXZfbG9nKGgsIEFW X0xPR19JTkZPLCAiVW5hYmxlIHRvIGZpbmQgSVBGUyBmb2xkZXIuIFdlCj4gPj4gdHJpZWQ6XG4i KTsKPiA+Pj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIi0gJElQRlNfUEFU SCwgd2hpY2ggd2FzCj4gZW1wdHkuXG4iKTsKPiA+Pj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBB Vl9MT0dfSU5GTywgIi0gJEhPTUUvLmlwZnMgKGZ1bGwgdXJpOiAlcykgd2hpY2gKPiA+PiBkb2Vz bid0IGV4aXN0LlxuIiwgaXBmc19mdWxsX2RhdGFfZm9sZGVyKTsKPiA+Pj4gKyAgICAgICAgICAg IHJldCA9IEFWRVJST1IoRU5PRU5UKTsKPiA+Pj4gKyAgICAgICAgICAgIGdvdG8gZXJyOwo+ID4+ PiArICAgICAgICB9Cj4gPj4+ICsgICAgfSBlbHNlIHsKPiA+Pj4gKyAgICAgICAgaWYgKHNucHJp bnRmKGlwZnNfZnVsbF9kYXRhX2ZvbGRlciwKPiA+PiBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9s ZGVyKSwgIiVzIiwKPiA+Pj4gKyAgICAgICAgICAgICAgICAgZ2V0ZW52KCJJUEZTX1BBVEgiKSkg Pj0KPiBzaXplb2YoaXBmc19mdWxsX2RhdGFfZm9sZGVyKSkKPiA+PiB7Cj4gPj4+ICsgICAgICAg ICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJUaGUgSVBGU19QQVRIIGVudmlyb25tZW50 Cj4gPj4gdmFyaWFibGUgZXhjZWVkcyB0aGUgbWF4aW11bSBsZW5ndGguIFdlIGFsbG93IGEgbWF4 IG9mICV6dQo+IGNoYXJhY3RlcnNcbiIsCj4gPj4gc2l6ZW9mKGMtPmdhdGV3YXlfYnVmZmVyKSk7 Cj4gPj4+ICsgICAgICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4gPj4+ICsgICAgICAg ICAgICBnb3RvIGVycjsKPiA+Pj4gKyAgICAgICAgfQo+ID4+PiArCj4gPj4+ICsgICAgfQo+ID4+ PiArCj4gPj4+ICsgICAgLy8gQ29weSB0aGUgZnVsbHkgY29tcG9zZWQgZ2F0ZXdheSBwYXRoIGlu dG8gaXBmc19nYXRld2F5X2ZpbGUuCj4gPj4+ICsgICAgaWYgKHNucHJpbnRmKGlwZnNfZ2F0ZXdh eV9maWxlLCBzaXplb2YoaXBmc19nYXRld2F5X2ZpbGUpLAo+ID4+ICIlc2dhdGV3YXkiLAo+ID4+ PiArICAgICAgICAgICAgICAgICBpcGZzX2Z1bGxfZGF0YV9mb2xkZXIpID49IHNpemVvZihpcGZz X2dhdGV3YXlfZmlsZSkpCj4gewo+ID4+PiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5J TkcsICJUaGUgSVBGUyBnYXRld2F5IGZpbGUgcGF0aCBleGNlZWRzCj4gPj4gdGhlIG1heCBwYXRo IGxlbmd0aCAoJXp1KVxuIiwgc2l6ZW9mKGlwZnNfZ2F0ZXdheV9maWxlKSk7Cj4gPj4+ICsgICAg ICAgIHJldCA9IEFWRVJST1IoRU5PRU5UKTsKPiA+Pj4gKyAgICAgICAgZ290byBlcnI7Cj4gPj4+ ICsgICAgfQo+ID4+PiArCj4gPj4+ICsgICAgLy8gR2V0IHRoZSBjb250ZW50cyBvZiB0aGUgZ2F0 ZXdheSBmaWxlLgo+ID4+PiArICAgIGdhdGV3YXlfZmlsZSA9IGF2X2ZvcGVuX3V0ZjgoaXBmc19n YXRld2F5X2ZpbGUsICJyIik7Cj4gPj4+ICsgICAgaWYgKCFnYXRld2F5X2ZpbGUpIHsKPiA+Pj4g KyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIElQRlMgZ2F0ZXdheSBmaWxl IChmdWxsIHVyaToKPiAlcykKPiA+PiBkb2Vzbid0IGV4aXN0LiBJcyB0aGUgZ2F0ZXdheSBlbmFi bGVkP1xuIiwgaXBmc19nYXRld2F5X2ZpbGUpOwo+ID4+PiArICAgICAgICByZXQgPSBBVkVSUk9S KEVOT0VOVCk7Cj4gPj4+ICsgICAgICAgIGdvdG8gZXJyOwo+ID4+PiArICAgIH0KPiA+Pj4gKwo+ ID4+PiArICAgIC8vIFJlYWQgYSBzaW5nbGUgbGluZSAoZmdldHMgc3RvcHMgYXQgbmV3IGxpbmUg bWFyaykuCj4gPj4+ICsgICAgZmdldHMoYy0+Z2F0ZXdheV9idWZmZXIsIHNpemVvZihjLT5nYXRl d2F5X2J1ZmZlcikgLSAxLAo+ID4+IGdhdGV3YXlfZmlsZSk7Cj4gPj4+ICsKPiA+Pj4gKyAgICAv LyBSZXBsYWNlIHRoZSBsYXN0IGNoYXIgd2l0aCBcMAo+ID4+PiArICAgIGMtPmdhdGV3YXlfYnVm ZmVyW3NpemVvZihjLT5nYXRld2F5X2J1ZmZlcikgLSAxXSA9IDA7Cj4gPj4+ICsKPiA+Pj4gKyAg ICAvLyBSZXBsYWNlIGZpcnN0IG9jY3VyZW5jZSBvZiBlbmQgb2YgbGluZSB3aXRoIFwwCj4gPj4+ ICsgICAgYy0+Z2F0ZXdheV9idWZmZXJbc3RyY3NwbihjLT5nYXRld2F5X2J1ZmZlciwgIlxyIild ID0gMDsKPiA+Pj4gKyAgICBjLT5nYXRld2F5X2J1ZmZlcltzdHJjc3BuKGMtPmdhdGV3YXlfYnVm ZmVyLCAiXG4iKV0gPSAwOwo+ID4+Cj4gPj4gSWYgdGhlIGJ1ZmZlciBjb250YWlucyBib3RoIFxy IGFuZCBcbiBhbmQgdGhlIGZpcnN0IFxuIHByZWNlZGVzIHRoZQo+ID4+IGZpcnN0IFxyLCB0aGVu IHRoZSBhYm92ZSB6ZXJvZXMgYm90aCB0aGUgZmlyc3QgXHIgYW5kIHRoZSBmaXJzdCBcbi4gSWYK PiA+PiBpdCBpcyBlbm91Z2ggdG8gb25seSB6ZXJvIHRoZSBmaXJzdCBuZXdsaW5lLCB0aGVuIHRo aXMgY2FuIGJlIHNpbXBsaWZpZWQKPiA+PiB0byAiYy0+Z2F0ZXdheV9idWZmZXJbc3RyY3Nwbihj LT5nYXRld2F5X2J1ZmZlciwgIlxyXG4iKV0gPSAwOyIuCj4gPj4KPiA+Cj4gPiBJdCB1c2VkIHRv IGJlIGluIHlvdXIgc3VnZ2VzdGVkIHNpbXBsaWZpZWQgYXBwcm9hY2guCj4gPiBJdCB3YXMgdGhl biBzdWdnZXN0ZWQgdG8gc3BsaXQgaXQgYmVjYXVzZSBvZiBuZXcgbGluZSBkaWZmZXJlbmNlcwo+ ID4gb24gZGlmZmVyZW50IHBsYXRmb3Jtcy4gVGhpcyB3YXMgc3VwcG9zZWQgdG8gY2F0Y2ggImV2 ZXJ5dGhpbmciLgo+ID4KPiA+IEkgcHJlZmVyIHRvIGtlZXAgdGhpcyBhcy1pcyBub3cuCj4gPgo+ Cj4gSXMgaXQgaW50ZW5kZWQgdG8gdXNlIHdoYXQgaXMgYmV0d2VlbiB0aGUgZmlyc3QgXG4gYW5k IHRoZSBmaXJzdCBccgo+IGxhdGVyb24gYWx0aG91Z2ggdGhpcyBkYXRhIHdpbGwgYmUgYWZ0ZXIg dGhlICdcMCcgYWZ0ZXIgdGhpcz8gVGhhdCB3b3VsZAo+IGJlIHZlcnkgd2VpcmQuCj4KCllvdSBo YXZlIHRvIGVsYWJvcmF0ZSBvbiB0aGF0IGFzIHRoYXQgc291bmRzIHJlYWxseSB3cm9uZyB0byBt ZS4KCklmIEknbSBjb3JyZWN0IGEgZmlsZSBkb2Vzbid0IHN0YXJ0IHdpdGggZWl0aGVyIFxyIG9y IFxuLiBVbmxlc3MgeW91IGhhdmUKaW50ZW50aW9uYWwgbGluZSBicmVha3MuCkl0IGVuZHMgd2l0 aCB0aG9zZSwgbm90IHN0YXJ0cy4gSSdtIGp1c3QgZ29pbmcgdG8gaWdub3JlIFxyIGZvciBub3cg Zm9yCmJyZXZpdHkuCgpTbyBpZiB5b3UgaGF2ZToKXG48eW91ciBnYXRld2F5PlxuCgpXb3VsZCBi ZSB0cmFuc2xhdGVkIHRvOgpcMDx5b3VyIGdhdGV3YXk+XG4KClRoZW4gaW5kZWVkIHlvdSB3b24n dCBnZXQgYSBnYXRld2F5IGJlY2F1c2UgaXQncyBpbnRlbmRlZCB0aGF0IHlvdXIgZmlyc3QKbGlu ZSBpcyB0aGF0IGdhdGV3YXkuCgpJdCBtdXN0IGJlIGluIHRoaXMgZm9ybWF0Ogo8eW91ciBnYXRl d2F5PlxuCgpvciB3aXRob3V0IGEgbmV3bGluZQo8eW91ciBnYXRld2F5PgoKVGhlcmUgaXMgbm8g YmxhbmsgbGluZSB0cmltbWluZyB0byBmaXggdXNlciBzY3Jld3Vwcy4KVXNlcnMgYXJlIG5vdCBp bnRlbmRlZCB0byB0b3VjaCB0aGF0IGZpbGUgYW55aG93LiBJdCdzIGF1dG8tZ2VuZXJhdGVkIGJ5 CklQRlMgYW5kIHJlbW92ZWQgb25jZSBpdCBzaHV0cyBkb3duLgoKCj4gPgo+ID4+PiArCj4gPj4+ ICsgICAgLy8gSWYgc3RybGVuIGZpbmRzIGFueXRoaW5nIGxvbmdlciB0aGVuIDAgY2hhcmFjdGVy cyB0aGVuIHdlIGhhdmUKPiBhCj4gPj4+ICsgICAgLy8gcG90ZW50aWFsIGdhdGV3YXkgdXJsLgo+ ID4+PiArICAgIGlmIChzdHJsZW4oYy0+Z2F0ZXdheV9idWZmZXIpIDwgMSkgewo+ID4+Cj4gPj4g aWYgKCpjLT5nYXRld2F5X2J1ZmZlciA9PSAnXDAnKQo+ID4+Cj4gPgo+ID4gSXMgdGhhdCBhIHN0 eWxlIGRpZmZlcmVuY2Ugb3IgYW4gYWN0dWFsIGJlaGF2aW9yIGRpZmZlcmVuY2U/Cj4gPgo+Cj4g VGhlIGZvcm1lciB3b3VsZCBjYWxsIHN0cmxlbiB0byBjaGVjayB3aGV0aGVyIGEgc3RyaW5nIGlz IGVtcHR5ICh1bmxlc3MKPiB0aGUgY29tcGlsZXIgb3B0aW1pemVzIGl0IGF3YXkpLiBObyBhY3R1 YWwgYmVoYXZpb3VyIGRpZmZlcmVuY2UgZXhpc3RzLgo+IEJ1dCBpdCBpcyBuZXZlcnRoZWxlc3Mg bW9yZSB0aGFuIGEgc3R5bGUgZGlmZmVyZW5jZS4KPgoKRml4ZWQgbG9jYWxseS4KCj4KPiA+Cj4g Pj4KPiA+Pj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhlIElQRlMgZ2F0 ZXdheSBmaWxlIChmdWxsIHVyaToKPiAlcykKPiA+PiBhcHBlYXJzIHRvIGJlIGVtcHR5LiBJcyB0 aGUgZ2F0ZXdheSBzdGFydGVkP1xuIiwgaXBmc19nYXRld2F5X2ZpbGUpOwo+ID4+PiArICAgICAg ICByZXQgPSBBVkVSUk9SKEVJTFNFUSk7Cj4gPj4+ICsgICAgICAgIGdvdG8gZXJyOwo+ID4+PiAr ICAgIH0gZWxzZSB7Cj4gPj4+ICsgICAgICAgIC8vIFdlJ3JlIGRvbmUsIHRoZSBjLT5nYXRld2F5 X2J1ZmZlciBoYXMgc29tZXRoaW5nIHRoYXQgbG9va3MKPiA+PiB2YWxpZC4KPiA+Pj4gKyAgICAg ICAgcmV0ID0gMTsKPiA+Pj4gKyAgICAgICAgZ290byBlcnI7Cj4gPj4+ICsgICAgfQo+ID4+PiAr Cj4gPj4+ICtlcnI6Cj4gPj4+ICsgICAgaWYgKGdhdGV3YXlfZmlsZSkKPiA+Pj4gKyAgICAgICAg ZmNsb3NlKGdhdGV3YXlfZmlsZSk7Cj4gPj4+ICsKPiA+Pj4gKyAgICByZXR1cm4gcmV0Owo+ID4+ PiArfQo+ID4+PiArCj4gPj4+ICtzdGF0aWMgaW50IHRyYW5zbGF0ZV9pcGZzX3RvX2h0dHAoVVJM Q29udGV4dCAqaCwgY29uc3QgY2hhciAqdXJpLAo+ID4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGludCBmbGFncywgQVZEaWN0aW9uYXJ5ICoqb3B0aW9ucykKPiA+Pj4gK3sK PiA+Pj4gKyAgICBjb25zdCBjaGFyICppcGZzX2NpZDsKPiA+Pj4gKyAgICBjaGFyICpmdWxsdXJp ID0gTlVMTDsKPiA+Pj4gKyAgICBpbnQgcmV0Owo+ID4+PiArICAgIElQRlNHYXRld2F5Q29udGV4 dCAqYyA9IGgtPnByaXZfZGF0YTsKPiA+Pj4gKwo+ID4+PiArICAgIC8vIFRlc3QgZm9yIGlwZnM6 Ly8sIGlwZnM6LCBpcG5zOi8vIGFuZCBpcG5zOi4gVGhpcyBwcmVmaXggaXMKPiA+PiBzdHJpcHBl ZCBmcm9tCj4gPj4+ICsgICAgLy8gdGhlIHN0cmluZyBsZWF2aW5nIGp1c3QgdGhlIENJRCBpbiBp cGZzX2NpZC4KPiA+Pj4gKyAgICBpbnQgaXNfaXBmcyA9IGF2X3N0cmlzdGFydCh1cmksICJpcGZz Oi8vIiwgJmlwZnNfY2lkKTsKPiA+Pj4gKyAgICBpbnQgaXNfaXBucyA9IGF2X3N0cmlzdGFydCh1 cmksICJpcG5zOi8vIiwgJmlwZnNfY2lkKTsKPiA+Pj4gKwo+ID4+PiArICAgIC8vIFdlIG11c3Qg aGF2ZSBlaXRoZXIgaXBucyBvciBpcGZzLgo+ID4+PiArICAgIGlmICghaXNfaXBmcyAmJiAhaXNf aXBucykgewo+ID4+PiArICAgICAgICByZXQgPSBBVkVSUk9SKEVJTlZBTCk7Cj4gPj4+ICsgICAg ICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIlVuc3VwcG9ydGVkIHVybCAlc1xuIiwgdXJp KTsKPiA+Pj4gKyAgICAgICAgZ290byBlcnI7Cj4gPj4+ICsgICAgfQo+ID4+PiArCj4gPj4+ICsg ICAgLy8gSWYgdGhlIENJRCBoYXMgYSBsZW5ndGggZ3JlYXRlciB0aGVuIDAgdGhlbiB3ZSBhc3N1 bWUgd2UgaGF2ZSBhCj4gPj4gcHJvcGVyIHdvcmtpbmcgb25lLgo+ID4+PiArICAgIC8vIEl0IGNv dWxkIHN0aWxsIGJlIHdyb25nIGJ1dCBpbiB0aGF0IGNhc2UgdGhlIGdhdGV3YXkgc2hvdWxkCj4g c2F2ZQo+ID4+IHVzIGFuZAo+ID4+PiArICAgIC8vIHJ1dHVybiBhIDQwMyBlcnJvci4gVGhlIGh0 dHAgcHJvdG9jb2wgaGFuZGxlcyB0aGlzLgo+ID4+PiArICAgIGlmIChzdHJsZW4oaXBmc19jaWQp IDwgMSkgewo+ID4+PiArICAgICAgICBhdl9sb2coaCwgQVZfTE9HX1dBUk5JTkcsICJBIENJRCBt dXN0IGJlIHByb3ZpZGVkLlxuIik7Cj4gPj4+ICsgICAgICAgIHJldCA9IEFWRVJST1IoRUlMU0VR KTsKPiA+Pj4gKyAgICAgICAgZ290byBlcnI7Cj4gPj4+ICsgICAgfQo+ID4+PiArCj4gPj4+ICsg ICAgLy8gUG9wdWxhdGUgYy0+Z2F0ZXdheV9idWZmZXIgd2l0aCB3aGF0ZXZlciBpcyBpbiBjLT5n YXRld2F5Cj4gPj4+ICsgICAgaWYgKGMtPmdhdGV3YXkgIT0gTlVMTCkgewo+ID4+PiArICAgICAg ICBpZiAoc25wcmludGYoYy0+Z2F0ZXdheV9idWZmZXIsIHNpemVvZihjLT5nYXRld2F5X2J1ZmZl ciksCj4gIiVzIiwKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGMtPmdhdGV3YXkpID49IHNp emVvZihjLT5nYXRld2F5X2J1ZmZlcikpIHsKPiA+Pj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBB Vl9MT0dfV0FSTklORywgIlRoZSAtZ2F0ZXdheSBwYXJhbWV0ZXIgaXMgdG9vCj4gPj4gbG9uZy4g V2UgYWxsb3cgYSBtYXggb2YgJXp1IGNoYXJhY3RlcnNcbiIsIHNpemVvZihjLT5nYXRld2F5X2J1 ZmZlcikpOwo+ID4+Cj4gPj4gV2UgdHlwaWNhbGx5IHVzZSBTSVpFX1NQRUNJRklFUiBpbnN0ZWFk IG9mIHogZm9yIGNvbXBhdGliaWxpdHkgd2l0aAo+ID4+IGFuY2llbnQgdmVyc2lvbnMgb2YgTVNW Qy4KPiA+PiAoSSBkb24ndCBrbm93IHdoZXRoZXIgdGhlcmUgaXMgYW55IHN1cHBvcnRlZCB2ZXJz aW9uIG9mIE1TVkMgdGhhdAo+ID4+IGRvZXNuJ3Qgc3VwcG9ydCB6OyBJIGRvbid0IHVzZSBNU1ZD IG15c2VsZi4pCj4gPj4KPiA+Cj4gPiBIZXJlIHRvbyBJIHdhcyBleHBsaWNpdGx5IHN1Z2dlc3Rl ZCB0byB1c2UgJXp1ICh3aGVuIEkgd2FzIHVzaW5nIC0gSQo+IHRoaW5rCj4gPiAtICVsdSBiZWZv cmUpLgo+ID4gU28gSSBhc3N1bWUgdGhhdCB0aGUgYW5jaWVudCBNU1ZDIHZlcnNpb24geW91J3Jl IHJlZmVycmluZyB0byBpcyBwcm9iYWJseQo+ID4gbm90IHN1cHBvcnRlZCBhbnltb3JlIGZyb20g YW4gZmZtcGVnIGNvbXBpbGVyIHJlcXVpcmVtZW50IHBvaW50IG9mIHZpZXc/Cj4gPgo+ID4gU2hv dWxkIGkgbm93IGNoYW5nZSBhbGwgIiV6dSIgdG8gIiUiU0laRV9TUEVDSUZJRVIgKHRoaXMgZG9l cyBub3QgbWFrZSBpdAo+ID4gbmVhdGVyIG5vciBzaG9ydGVyIHdpdGggdGhlIDgwIGNoYXIgbGlu ZSBsaW1pdCkuCj4gPiBJcyB0aGlzIGNoYW5nZSByZXF1aXJlZD8KPgo+IEFzIHNhaWQ6IEl0IGlz IGZvciBjb21wYXRpYmlsaXR5IHdpdGggYW5jaWVudCB2ZXJzaW9ucyBvZiBNU1ZDLiBCdXQgSQo+ IGRvbid0IGtub3cgd2hldGhlciBhbnkgb2YgdGhlIGFjdHVhbGx5IHN1cHBvcnRlZCB2ZXJzaW9u cyBvZiBNU1ZDIHN0aWxsCj4gbmVlZCBpdC4KPgo+ID4KPiA+IElmIGl0IGlzLCB3aGF0IF9leGFj dGx5XyBkbyBpIG5lZWQgdG8gY2hhbmdlIGl0IGluPyBJIHNlZSBhCj4gPiBjb3VwbGUgZGlmZmVy ZW50IFNJWkVfU1BFQ0lGSUVSIHByZWZpeGVzLiBJIGhhdmUgbm8gY2x1ZSB3aGF0IHRvIHVzZQo+ IGhlcmUuCj4KPiBUaGVyZSBpcyBvbmx5IG9uZSBTSVpFX1NQRUNJRklFUiwgbmFtZWx5IFNJWkVf U1BFQ0lGSUVSOyB0aGUKPiBQVFJESUZGX1NQRUNJRklFUiAob3Igd2hhdGV2ZXIgeW91IHNlZSkg aXMgb2J2aW91c2x5IG5vdCB0aGUgdGhpbmcgdG8KPiB1c2UgZm9yIHNpemVfdC4KPgo+IEkgc2Vl IHNvbWU6CiUiU0laRV9TUEVDSUZJRVIiCgpCdXQgYWxzbyBsaWtlIHRoaXM6CiU4IlNJWkVfU1BF Q0lGSUVSCiU1IlNJWkVfU1BFQ0lGSUVSCgpJJ20gYXNzdW1pbmcgdGhleSBhcmUgZm9yIGNsaXBw aW5nPwoKSSByZWFsbHkgZG9uJ3QgbGlrZSBoYXZpbmcgdG8gY2hhbmdlIGl0IHRvIHRoaXMgYXMg aXQ6Ci0gVWdsaWZpZXMgdGhlIGNvZGUgKGFuZCBpIGRvdWJ0IGlmIGl0J3MgZXZlbiBuZWVkZWQp Ci0gRGlyZWN0bHkgY29udHJhZGljdHMgZWFybGllciBmZWVkYmFjawotIEFuZCBkdWUgdG8gdGhl IGFib3ZlIGdpdmVzIG1lIGEgZmVlbGluZyBvZiB3YXN0aW5nIHRpbWUKLSBGaW5lIHRvIGNoYW5n ZSBpdCBidXQgSSBob3BlIHRoZXJlIGlzbid0IGFub3RoZXIgcGVyc29uIHBvcHBpbmcgdXAgd2l0 aCBhCnF1ZXN0aW9uIHRvIGNoYW5nZSBpdCB5ZXQgYWdhaW4uLi4uCgoKPiA+Cj4gPgo+ID4+PiAr ICAgICAgICAgICAgcmV0ID0gQVZFUlJPUihFSU5WQUwpOwo+ID4+PiArICAgICAgICAgICAgZ290 byBlcnI7Cj4gPj4+ICsgICAgICAgIH0KPiA+Pj4gKyAgICB9IGVsc2Ugewo+ID4+PiArICAgICAg ICAvLyBQb3B1bGF0ZSB0aGUgSVBGUyBnYXRld2F5IGlmIHdlIGhhdmUgYW55Lgo+ID4+PiArICAg ICAgICAvLyBJZiBub3QsIGluZm9ybSB0aGUgdXNlciBob3cgdG8gcHJvcGVybHkgc2V0IG9uZS4K PiA+Pj4gKyAgICAgICAgcmV0ID0gcG9wdWxhdGVfaXBmc19nYXRld2F5KGgpOwo+ID4+PiArCj4g Pj4+ICsgICAgICAgIGlmIChyZXQgPCAxKSB7Cj4gPj4+ICsgICAgICAgICAgICAvLyBXZSBmYWxs YmFjayBvbiBkd2ViLmxpbmsgKG1hbmFnZWQgYnkgUHJvdG9jb2wgTGFicykuCj4gPj4+ICsgICAg ICAgICAgICBzbnByaW50ZihjLT5nYXRld2F5X2J1ZmZlciwgc2l6ZW9mKGMtPmdhdGV3YXlfYnVm ZmVyKSwgIgo+ID4+IGh0dHBzOi8vZHdlYi5saW5rIik7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgICAg ICAgIGF2X2xvZyhoLCBBVl9MT0dfV0FSTklORywgIklQRlMgZG9lcyBub3QgYXBwZWFyIHRvIGJl Cj4gPj4gcnVubmluZy4gWW914oCZcmUgbm93IHVzaW5nIHRoZSBwdWJsaWMgZ2F0ZXdheSBhdCBk d2ViLmxpbmsuXG4iKTsKPiA+Pj4gKyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywg Ikluc3RhbGxpbmcgSVBGUyBsb2NhbGx5IGlzCj4gPj4gcmVjb21tZW5kZWQgdG8gaW1wcm92ZSBw ZXJmb3JtYW5jZSBhbmQgcmVsaWFiaWxpdHksIGFuZCBub3Qgc2hhcmUgYWxsCj4geW91cgo+ID4+ IGFjdGl2aXR5IHdpdGggYSBzaW5nbGUgSVBGUyBnYXRld2F5LlxuIik7Cj4gPj4+ICsgICAgICAg ICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICJUaGVyZSBhcmUgbXVsdGlwbGUgb3B0aW9ucyB0 bwo+ID4+IGRlZmluZSB0aGlzIGdhdGV3YXkuXG4iKTsKPiA+Pj4gKyAgICAgICAgICAgIGF2X2xv ZyhoLCBBVl9MT0dfSU5GTywgIjEuIENhbGwgZmZtcGVnIHdpdGggYSBnYXRld2F5Cj4gPj4gcGFy YW0sIHdpdGhvdXQgYSB0cmFpbGluZyBzbGFzaDogLWdhdGV3YXkgPHVybD4uXG4iKTsKPiA+Pj4g KyAgICAgICAgICAgIGF2X2xvZyhoLCBBVl9MT0dfSU5GTywgIjIuIERlZmluZSBhbiAkSVBGU19H QVRFV0FZCj4gPj4gZW52aXJvbm1lbnQgdmFyaWFibGUgd2l0aCB0aGUgZnVsbCBIVFRQIFVSTCB0 byB0aGUgZ2F0ZXdheSB3aXRob3V0Cj4gdHJhaWxpbmcKPiA+PiBmb3J3YXJkIHNsYXNoLlxuIik7 Cj4gPj4+ICsgICAgICAgICAgICBhdl9sb2coaCwgQVZfTE9HX0lORk8sICIzLiBEZWZpbmUgYW4g JElQRlNfUEFUSAo+IGVudmlyb25tZW50Cj4gPj4gdmFyaWFibGUgYW5kIHBvaW50IGl0IHRvIHRo ZSBJUEZTIGRhdGEgcGF0aCAtIHRoaXMgaXMgdHlwaWNhbGx5Cj4gfi8uaXBmc1xuIik7Cj4gPj4K PiA+PiBBbGwgdGhvc2UgQVZfTE9HX0lORk8gY2FuIGJlIGNvbWJpbmVkIHdoaWNoIGhhcyB0aGUg YWR2YW50YWdlIHRoYXQgdGhlCj4gPj4gbG9ncyBjYW4ndCBiZSB0ZWFyZWQgYXBhcnQgKHdoaWNo IHRoZXkgY2FuIG5vdyBpZiBzb21ldGhpbmcgZWxzZSBsb2dzIGF0Cj4gPj4gdGhlIHNhbWUgdGlt ZSk7IGZ1cnRoZXJtb3JlLCB0aGlzIHdvdWxkIGFsc28gZGVjcmVhc2UgY29kZXNpemUuCj4gPj4K PiA+Cj4gPiBEbyB5b3UgaGF2ZSBhbiBleGFtcGxlIG9mIHdoZXJlIHRoYXQncyBoYXBwZW5pbmc/ Cj4gPgo+Cj4gSXQgY2FuIGhhcHBlbiBhbnkgdGltZSB5b3UgaGF2ZSBtdWx0aXBsZSB0aHJlYWRz IHVzaW5nIGF2X2xvZyBhdCB0aGUKPiBzYW1lIHRpbWUuIEdpdmVuIHRoYXQgeW91ciBzdGF0ZW1l bnRzIGFyZSBzdXBwb3NlZCB0byBiZSBmdWxsIGxpbmVzLCBpdAo+IGlzIG5vdCB0aGF0IGJhZCBp ZiBpdCBoYXBwZW5zIGhlcmUsIGJ1dCBpdCBpcyBuZXZlcnRoZWxlc3Mgc3Vib3B0aW1hbC4KPgoK SSBtZWFudCBhIG11bHRpLWxpbmUgYXZfbG9nIGV4YW1wbGUgOykgQnV0IHllYWgsIEkgZ2V0IGhv dyB0aHJlYWRpbmcgY291bGQKc2NyZXcgdGhpcyB1cC4KCj4KPiA+Pgo+ID4+PiArICAgICAgICB9 Cj4gPj4+ICsgICAgfQo+ID4+PiArCj4gPj4+ICsgICAgLy8gVGVzdCBpZiB0aGUgZ2F0ZXdheSBz dGFydHMgd2l0aCBlaXRoZXIgaHR0cDovLyBvciBodHRwczovLwo+ID4+PiArICAgIGlmIChhdl9z dHJpc3RhcnQoYy0+Z2F0ZXdheV9idWZmZXIsICJodHRwOi8vIiwgTlVMTCkgPT0gMAo+ID4+PiAr ICAgICAgICAmJiBhdl9zdHJpc3RhcnQoYy0+Z2F0ZXdheV9idWZmZXIsICJodHRwczovLyIsIE5V TEwpID09IDApIHsKPiA+Pj4gKyAgICAgICAgYXZfbG9nKGgsIEFWX0xPR19XQVJOSU5HLCAiVGhl IGdhdGV3YXkgVVJMIGRpZG4ndCBzdGFydCB3aXRoCj4gPj4gaHR0cDovLyBvciBodHRwczovLyBh bmQgaXMgdGhlcmVmb3JlIGludmFsaWQuXG4iKTsKPiA+Pj4gKyAgICAgICAgcmV0ID0gQVZFUlJP UihFSUxTRVEpOwo+ID4+PiArICAgICAgICBnb3RvIGVycjsKPiA+Pj4gKyAgICB9Cj4gPj4+ICsK PiA+Pj4gKyAgICAvLyBDb25jYXRlbmF0ZSB0aGUgdXJsLgo+ID4+PiArICAgIC8vIFRoaXMgZW5k cyB1cCB3aXRoIHNvbWV0aGluZyBsaWtlOgo+ID4+IGh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9pcGZz L1FtLi4uLi4KPiA+Pj4gKyAgICAvLyBUaGUgZm9ybWF0IG9mICIlcyVzJXMlcyIgaXMgdGhlIGZv bGxvd2luZzoKPiA+Pj4gKyAgICAvLyAxc3QgJXMgPSBUaGUgZ2F0ZXdheS4KPiA+Pj4gKyAgICAv LyAybmQgJXMgPSBJZiB0aGUgZ2F0ZXdheSBkaWRuJ3QgZW5kIGluIGEgc2xhc2gsIGFkZCBhICIv Ii4KPiA+PiBPdGhlcndpc2UgaXQncyBhbiBlbXB0eSBzdHJpbmcKPiA+Pj4gKyAgICAvLyAzcmQg JXMgPSBFaXRoZXIgaXBucy8gb3IgaXBmcy8uCj4gPj4+ICsgICAgLy8gNHRoICVzID0gVGhlIElQ RlMgQ0lEIChRbS4uLiwgYmFmeS4uLiwgLi4uKS4KPiA+Pj4gKyAgICBmdWxsdXJpID0gYXZfYXNw cmludGYoIiVzJXMlcyVzIiwKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgYy0+Z2F0 ZXdheV9idWZmZXIsCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIChjLT5nYXRld2F5 X2J1ZmZlcltzdHJsZW4oYy0+Z2F0ZXdheV9idWZmZXIpCj4gPj4gLSAxXSA9PSAnLycpID8gIiIg OiAiLyIsCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgIChpc19pcG5zKSA/ICJpcG5z LyIgOiAiaXBmcy8iLAo+ID4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICBpcGZzX2NpZCk7 Cj4gPj4KPiA+PiBNaXNzaW5nIGFsbG9jYXRpb24gY2hlY2suCj4gPj4KPiA+Cj4gPiBBaAo+ID4g Rml4ZWQgaXQgbG9jYWxseS4KPiA+Cj4gPgo+ID4+Cj4gPj4+ICsKPiA+Pj4gKyAgICAvLyBQYXNz IHRoZSBVUkwgYmFjayB0byBGRk1wZWcncyBwcm90b2NvbCBoYW5kbGVyLgo+ID4+PiArICAgIGlm ICgocmV0ID0gZmZ1cmxfb3Blbl93aGl0ZWxpc3QoJmMtPmlubmVyLCBmdWxsdXJpLCBmbGFncywK PiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoLT5pbnRlcnJ1cHRf Y2FsbGJhY2ssIG9wdGlvbnMsCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBoLT5wcm90b2NvbF93aGl0ZWxpc3QsCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBoLT5wcm90b2NvbF9ibGFja2xpc3QsIGgpKQo+ID4+PiArICAgICAgICA8 IDApIHsKPiA+Pgo+ID4+IFdlaXJkIGZvcm1hdHRpbmc7IHdoeSBkb24ndCB5b3UganVzdCB1c2UK PiA+PiByZXQgPSBmZnVybF9vcGVuX3doaXRlbGlzdCguLi4pOwo+ID4+IGlmIChyZXQgPCAwKSB7 Cj4gPj4KPiA+Cj4gPiBGaXhlZC4KPiA+Cj4gPgo+ID4+Cj4gPj4+ICsgICAgICAgIGF2X2xvZyho LCBBVl9MT0dfV0FSTklORywgIlVuYWJsZSB0byBvcGVuIHJlc291cmNlOiAlc1xuIiwKPiA+PiBm dWxsdXJpKTsKPiA+Pj4gKyAgICAgICAgZ290byBlcnI7Cj4gPj4+ICsgICAgfQo+ID4+PiArCj4g Pj4+ICtlcnI6Cj4gPj4+ICsgICAgYXZfZnJlZShmdWxsdXJpKTsKPiA+Pj4gKyAgICByZXR1cm4g cmV0Owo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICtzdGF0aWMgaW50IGlwZnNfcmVhZChVUkxDb250 ZXh0ICpoLCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBzaXplKQo+ID4+PiArewo+ID4+PiArICAg IElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnByaXZfZGF0YTsKPiA+Pj4gKyAgICByZXR1cm4g ZmZ1cmxfcmVhZChjLT5pbm5lciwgYnVmLCBzaXplKTsKPiA+Pj4gK30KPiA+Pj4gKwo+ID4+PiAr c3RhdGljIGludDY0X3QgaXBmc19zZWVrKFVSTENvbnRleHQgKmgsIGludDY0X3QgcG9zLCBpbnQg d2hlbmNlKQo+ID4+PiArewo+ID4+PiArICAgIElQRlNHYXRld2F5Q29udGV4dCAqYyA9IGgtPnBy aXZfZGF0YTsKPiA+Pj4gKyAgICByZXR1cm4gZmZ1cmxfc2VlayhjLT5pbm5lciwgcG9zLCB3aGVu Y2UpOwo+ID4+PiArfQo+ID4+PiArCj4gPj4+ICtzdGF0aWMgaW50IGlwZnNfY2xvc2UoVVJMQ29u dGV4dCAqaCkKPiA+Pj4gK3sKPiA+Pj4gKyAgICBJUEZTR2F0ZXdheUNvbnRleHQgKmMgPSBoLT5w cml2X2RhdGE7Cj4gPj4+ICsgICAgcmV0dXJuIGZmdXJsX2Nsb3NlcCgmYy0+aW5uZXIpOwo+ID4+ PiArfQo+ID4+PiArCj4gPj4+ICsjZGVmaW5lIE9GRlNFVCh4KSBvZmZzZXRvZihJUEZTR2F0ZXdh eUNvbnRleHQsIHgpCj4gPj4+ICsKPiA+Pj4gK3N0YXRpYyBjb25zdCBBVk9wdGlvbiBvcHRpb25z W10gPSB7Cj4gPj4+ICsgICAgeyJnYXRld2F5IiwgIlRoZSBnYXRld2F5IHRvIGFzayBmb3IgSVBG UyBkYXRhLiIsIE9GRlNFVChnYXRld2F5KSwKPiA+PiBBVl9PUFRfVFlQRV9TVFJJTkcsIHsuc3Ry ID0gTlVMTH0sIDAsIDAsIEFWX09QVF9GTEFHX0RFQ09ESU5HX1BBUkFNfSwKPiA+Pj4gKyAgICB7 TlVMTH0sCj4gPj4+ICt9Owo+ID4+PiArCj4gPj4+ICtzdGF0aWMgY29uc3QgQVZDbGFzcyBpcGZz X2NvbnRleHRfY2xhc3MgPSB7Cj4gPj4+ICsgICAgLmNsYXNzX25hbWUgICA9ICJJUEZTIiwKPiA+ Pj4gKyAgICAuaXRlbV9uYW1lICAgID0gYXZfZGVmYXVsdF9pdGVtX25hbWUsCj4gPj4+ICsgICAg Lm9wdGlvbiAgICAgICA9IG9wdGlvbnMsCj4gPj4+ICsgICAgLnZlcnNpb24gICAgICA9IExJQkFW VVRJTF9WRVJTSU9OX0lOVCwKPiA+Pj4gK307Cj4gPj4+ICsKPiA+Pj4gK2NvbnN0IFVSTFByb3Rv Y29sIGZmX2lwZnNfcHJvdG9jb2wgPSB7Cj4gPj4+ICsgICAgLm5hbWUgICAgICAgICAgICAgPSAi aXBmcyIsCj4gPj4+ICsgICAgLnVybF9vcGVuMiAgICAgICAgPSB0cmFuc2xhdGVfaXBmc190b19o dHRwLAo+ID4+PiArICAgIC51cmxfcmVhZCAgICAgICAgID0gaXBmc19yZWFkLAo+ID4+PiArICAg IC51cmxfc2VlayAgICAgICAgID0gaXBmc19zZWVrLAo+ID4+PiArICAgIC51cmxfY2xvc2UgICAg ICAgID0gaXBmc19jbG9zZSwKPiA+Pj4gKyAgICAucHJpdl9kYXRhX3NpemUgICA9IHNpemVvZihJ UEZTR2F0ZXdheUNvbnRleHQpLAo+ID4+PiArICAgIC5wcml2X2RhdGFfY2xhc3MgID0gJmlwZnNf Y29udGV4dF9jbGFzcywKPiA+Pj4gK307Cj4gPj4+ICsKPiA+Pj4gK2NvbnN0IFVSTFByb3RvY29s IGZmX2lwbnNfcHJvdG9jb2wgPSB7Cj4gPj4+ICsgICAgLm5hbWUgICAgICAgICAgICAgPSAiaXBu cyIsCj4gPj4+ICsgICAgLnVybF9vcGVuMiAgICAgICAgPSB0cmFuc2xhdGVfaXBmc190b19odHRw LAo+ID4+PiArICAgIC51cmxfcmVhZCAgICAgICAgID0gaXBmc19yZWFkLAo+ID4+PiArICAgIC51 cmxfc2VlayAgICAgICAgID0gaXBmc19zZWVrLAo+ID4+PiArICAgIC51cmxfY2xvc2UgICAgICAg ID0gaXBmc19jbG9zZSwKPiA+Pj4gKyAgICAucHJpdl9kYXRhX3NpemUgICA9IHNpemVvZihJUEZT R2F0ZXdheUNvbnRleHQpLAo+ID4+PiArICAgIC5wcml2X2RhdGFfY2xhc3MgID0gJmlwZnNfY29u dGV4dF9jbGFzcywKPiA+Pj4gK307Cj4gPj4+IGRpZmYgLS1naXQgYS9saWJhdmZvcm1hdC9wcm90 b2NvbHMuYyBiL2xpYmF2Zm9ybWF0L3Byb3RvY29scy5jCj4gPj4+IGluZGV4IGQwNzU2M2NkMGMu LjZlZTYyYTU5OGEgMTAwNjQ0Cj4gPj4+IC0tLSBhL2xpYmF2Zm9ybWF0L3Byb3RvY29scy5jCj4g Pj4+ICsrKyBiL2xpYmF2Zm9ybWF0L3Byb3RvY29scy5jCj4gPj4+IEBAIC03MSw2ICs3MSw4IEBA IGV4dGVybiBjb25zdCBVUkxQcm90b2NvbCBmZl9saWJzcnRfcHJvdG9jb2w7Cj4gPj4+ICBleHRl cm4gY29uc3QgVVJMUHJvdG9jb2wgZmZfbGlic3NoX3Byb3RvY29sOwo+ID4+PiAgZXh0ZXJuIGNv bnN0IFVSTFByb3RvY29sIGZmX2xpYnNtYmNsaWVudF9wcm90b2NvbDsKPiA+Pj4gIGV4dGVybiBj b25zdCBVUkxQcm90b2NvbCBmZl9saWJ6bXFfcHJvdG9jb2w7Cj4gPj4+ICtleHRlcm4gY29uc3Qg VVJMUHJvdG9jb2wgZmZfaXBmc19wcm90b2NvbDsKPiA+Pj4gK2V4dGVybiBjb25zdCBVUkxQcm90 b2NvbCBmZl9pcG5zX3Byb3RvY29sOwo+ID4+Pgo+ID4+PiAgI2luY2x1ZGUgImxpYmF2Zm9ybWF0 L3Byb3RvY29sX2xpc3QuYyIKPiA+Pj4KPiA+Pgo+ID4+Cj4gPiBUaGFuayB5b3UgdmVyeSBtdWNo IGZvciB5b3VyIHJldmlldyEKPiA+IFBsZWFzZSBkbyBoaXQgbWUgYmFjayB3aXRoIGEgcmVwbHkg b24gdGhlIHF1ZXN0aW9ucyBJIGhhdmUgc3RpbGwgb3Blbi4KPiA+Cj4gPiBJJ20gaG9uZXN0bHkg cXVpdGUgZG9uZSB3aXRoIHBhdGNoaW5nIHRoaXMgb3ZlciBhbmQgb3ZlciBhZ2FpbiAoaXQncyBv cGVuCj4gPiBmb3IgbW9udGhzIG5vdykgc28gSSdkIGxpa2UgdG8gcHV0IHRoZSBwYWNlIGluIHRo ZXNlIGZpeGVzIGFuZCBzZW5kIGFuCj4gPiB1cGRhdGVkIHZlcnNpb24gdG9kYXkuCj4gPgo+Cj4K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZmZtcGVnLWRl dmVsIG1haWxpbmcgbGlzdApmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZwpodHRwczovL2ZmbXBlZy5v cmcvbWFpbG1hbi9saXN0aW5mby9mZm1wZWctZGV2ZWwKClRvIHVuc3Vic2NyaWJlLCB2aXNpdCBs aW5rIGFib3ZlLCBvciBlbWFpbApmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGgg c3ViamVjdCAidW5zdWJzY3JpYmUiLgo=