Re: [libre-riscv-dev] load/store execution queue idea
authorJacob Lifshay <programmerjake@gmail.com>
Wed, 6 May 2020 00:23:59 +0000 (17:23 -0700)
committerlibre-riscv-dev <libre-riscv-dev@lists.libre-riscv.org>
Wed, 6 May 2020 00:24:12 +0000 (01:24 +0100)
7d/3fe9b10cf2d4c81929ec9f5f2ac47a30085040 [new file with mode: 0644]

diff --git a/7d/3fe9b10cf2d4c81929ec9f5f2ac47a30085040 b/7d/3fe9b10cf2d4c81929ec9f5f2ac47a30085040
new file mode 100644 (file)
index 0000000..e5fb83a
--- /dev/null
@@ -0,0 +1,200 @@
+Return-path: <libre-riscv-dev-bounces@lists.libre-riscv.org>
+Envelope-to: publicinbox@libre-riscv.org
+Delivery-date: Wed, 06 May 2020 01:24:13 +0100
+Received: from localhost ([::1] helo=libre-riscv.org)
+       by libre-soc.org with esmtp (Exim 4.89)
+       (envelope-from <libre-riscv-dev-bounces@lists.libre-riscv.org>)
+       id 1jW7rA-0004C3-DF; Wed, 06 May 2020 01:24:12 +0100
+Received: from mail-wm1-f44.google.com ([209.85.128.44])
+ by libre-soc.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
+ (Exim 4.89) (envelope-from <programmerjake@gmail.com>)
+ id 1jW7r8-0004Bx-Lu
+ for libre-riscv-dev@lists.libre-riscv.org; Wed, 06 May 2020 01:24:10 +0100
+Received: by mail-wm1-f44.google.com with SMTP id 188so525603wmc.2
+ for <libre-riscv-dev@lists.libre-riscv.org>;
+ Tue, 05 May 2020 17:24:10 -0700 (PDT)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
+ h=mime-version:references:in-reply-to:from:date:message-id:subject:to;
+ bh=tWuXAHmioQeWJ7f+ppKZOYrxKUAAla7N47WfxlIGJAM=;
+ b=aX1JI8WtUnX2uj1OIAC6GHp86qc8w1JGRKm7TlQ5cVfTB7nCrvxJkXPC9PRtDJtL58
+ zlQSDozcdGln+5APpIv6x9ceKliOGuCrAnNsm4MGSXgeTtd5sXfsMcnzsg9dRmquFODu
+ +PaD49gXyP6AgLIw2Kfst7FDa2aIzvdAy/ezzSGSsYh+Cdx+Ycr9I9OgVgRIpFoowV1m
+ 4TWVJO8u1JD3XTpEhH1JtligYLBWJpjH42xhKi/Eyv5kZ21jIkFzG14ABWGUPjM+Zu3M
+ cfYn7e2T0CGUb/JeZ7aqFPybl50cUZSFiBCFoWYOyD9jIT81GuxEc8YvAsib6B5kwoG+
+ ttyA==
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+ d=1e100.net; s=20161025;
+ h=x-gm-message-state:mime-version:references:in-reply-to:from:date
+ :message-id:subject:to;
+ bh=tWuXAHmioQeWJ7f+ppKZOYrxKUAAla7N47WfxlIGJAM=;
+ b=MrIXaxI6YoBLFr/asT6s7hJtJDF8YaCyRNGDwdkIUXq63zyH+B+l5yVDOR4OjT6ALw
+ CezV6TK1XlYQ+dJwaJxzp+FNLYJYf31oyoRr+WF6h48fVrPoRCbXGdU+AxhgGkV1IdZp
+ H1GIvW74EazrPznMKNQdyARKstbzPCa+BeD+xWWuxdKEGh1AKJ/47wmeQ7dY/R9rX0tt
+ NrOvV0pUgYf7fZEX0z9ZZnqVunnFnWolUb7gpDoGEpG02o83FOz9uQ/WV314ulaKiLzo
+ QYIgA01n86HqymboK6F/tFRzycBQnB8h7jTiQW9o1fdtjlXmY3kwURvQ3zhxYUykj9NL
+ fAaA==
+X-Gm-Message-State: AGi0PubvxSykgjJbfQOWoXNRia3ambKFKCchBjZrpgpZYyvj95mGKRV4
+ VdCKUwi6kXrk6rRjvP2dsvH2RSg2u6wcfiB1xlzoWBE/
+X-Google-Smtp-Source: APiQypLBGNnI2OAHZ/nWbeYPUfsOyl4d77ku8pg8+roK0bg3kpRXpyT8Fqv0t6DuGfkiAekOkAg0Jwv7uVk88RZP8Vo=
+X-Received: by 2002:a1c:5448:: with SMTP id p8mr1198564wmi.173.1588724650159; 
+ Tue, 05 May 2020 17:24:10 -0700 (PDT)
+MIME-Version: 1.0
+References: <CAC2bXD7uY+dxiA1D5vSoNDVg=xtxgdHQk8DrDbB9nx5ZHbDHrg@mail.gmail.com>
+ <CAPweEDxCOYfpj6u0w8Nr+r6CWvz24ukQNUU5U1cXrPAVtWK46A@mail.gmail.com>
+In-Reply-To: <CAPweEDxCOYfpj6u0w8Nr+r6CWvz24ukQNUU5U1cXrPAVtWK46A@mail.gmail.com>
+From: Jacob Lifshay <programmerjake@gmail.com>
+Date: Tue, 5 May 2020 17:23:59 -0700
+Message-ID: <CAC2bXD4VSerJY3ry_HtouLOzn7gz7CSvQYhQ4L8k5OKN5LfHmQ@mail.gmail.com>
+To: Libre-RISCV General Development <libre-riscv-dev@lists.libre-riscv.org>
+Subject: Re: [libre-riscv-dev] load/store execution queue idea
+X-BeenThere: libre-riscv-dev@lists.libre-riscv.org
+X-Mailman-Version: 2.1.23
+Precedence: list
+List-Id: Libre-RISCV General Development
+ <libre-riscv-dev.lists.libre-riscv.org>
+List-Unsubscribe: <http://lists.libre-riscv.org/mailman/options/libre-riscv-dev>, 
+ <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=unsubscribe>
+List-Archive: <http://lists.libre-riscv.org/pipermail/libre-riscv-dev/>
+List-Post: <mailto:libre-riscv-dev@lists.libre-riscv.org>
+List-Help: <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=help>
+List-Subscribe: <http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev>, 
+ <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=subscribe>
+Reply-To: Libre-RISCV General Development
+ <libre-riscv-dev@lists.libre-riscv.org>
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+Errors-To: libre-riscv-dev-bounces@lists.libre-riscv.org
+Sender: "libre-riscv-dev" <libre-riscv-dev-bounces@lists.libre-riscv.org>
+
+V2lsbCByZXNwb25kIHRvIGFsbCB0aGVzZSBjb25jZXJucyBsYXRlciwgb25jZSB0aGVyZSBpcyBt
+b3JlIGZyZWUgdGltZS4KCk9uIEZyaSwgTWF5IDEsIDIwMjAgYXQgNDoyNSBBTSBMdWtlIEtlbm5l
+dGggQ2Fzc29uIExlaWdodG9uCjxsa2NsQGxrY2wubmV0PiB3cm90ZToKPgo+IE9uIEZyaSwgTWF5
+IDEsIDIwMjAgYXQgMzo1NCBBTSBKYWNvYiBMaWZzaGF5IDxwcm9ncmFtbWVyamFrZUBnbWFpbC5j
+b20+IHdyb3RlOgo+Cj4gPiBJIGZpbGxlZCBvdXQgc29tZSBub3RlcyBvbiBteSBsb2FkL3N0b3Jl
+IGV4ZWN1dGlvbiBxdWV1ZSBpZGVhIGhlcmU6Cj4gPiBodHRwczovL2xpYnJlLXNvYy5vcmcvM2Rf
+Z3B1L2FyY2hpdGVjdHVyZS9hbHRlcm5hdGl2ZS1kZXNpZ24taWRlYS8KPgo+IGV4Y2VsbGVudC4K
+Pgo+ID4gVGhlIGRlc2lnbiBzaG91bGQgYmUgc3VpdGFibGUgZm9yIHRoZSBmaW5hbCAyOG5tIFNv
+QyBhbmQgc2hvdWxkIGJlCj4gPiBhYmxlIHRvIGV4ZWN1dGUgNCBsb2FkcyBvciA0IHN0b3JlcyBv
+ciA0IEFNT3Mgb3IgNCBmZW5jZXMgcGVyIGN5Y2xlLAo+ID4gY29tcGxldGVseSBhZGp1c3RhYmxl
+IHRvIHNvbWUgb3RoZXIgbnVtYmVyIGlmIHdlIGRlc2lyZS4gVGhpcyB0b3RhbGx5Cj4gPiByZXBs
+YWNlcyB0aGUgbWVtb3J5IGRlcGVuZGVuY3kgbWF0cml4Lgo+Cj4gaG1tLiAgIHRoZSBNRE0gaXMg
+c3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIGlkZW50aWZ5IHNlcGFyYXRlIGFuZAo+IGRpc3RpbmN0
+IExELWJhdGNoZXMgZnJvbSBTVC1iYXRjaGVzIGZyb20gQXRvbWljLWJhdGNoZXMsIGluIGFuCj4g
+ZXh0cmVtZWx5IGdhdGUtZWZmaWNpZW50IGZhc2hpb24uICB3ZSBkb24ndCBuZWVkIFRTTywgd2Ug
+anVzdCBuZWVkIHRvCj4gcHJlc2VydmUgdGhlIG9yZGVyIG9mIGJhdGNoZXMgKGFuZCBhbHNvIGlk
+ZW50aWZ5IG92ZXJsYXBzKS4KPgo+Cj4gPiBPbmUgZG93bnNpZGUgaXMgaXQgZG9lc24ndAo+ID4g
+c3VwcG9ydCBmb3J3YXJkaW5nIGZyb20gc3RvcmVzIHRvIGxhdGVyIGxvYWRzIHdpdGhvdXQgZ29p
+bmcgdGhyb3VnaAo+ID4gdGhlIEwxIGNhY2hlLgo+Cj4gdGhhdCdzIG9rLgo+Cj4gb2ssIGEgY3Jp
+dGljYWwgYXNwZWN0IHRvIHVuZGVyc3RhbmQgYWJvdXQgQ29tcHV0YXRpb25hbCBVbml0czogdGhl
+eSBkbwo+ICpub3QqIHByb2NlZWQgdW50aWwgdGhlICJwdXJwb3NlIiB0aGF0IHRoZXkgbWFuYWdl
+IGlzIGVudGlyZWx5IGZpbmlzaGVkLgo+IHRoZXkgdGhlbiAqbm90aWZ5KiB0aGUgRGVwZW5kZW5j
+eSBNYXRyaWNlcyB0aGF0IHRoZSAicmVzdWx0IiBpcyBkb25lCj4gKGF2YWlsYWJsZSksIGFuZCAq
+dGhlbiogdGhleSBkcm9wIHRoZWlyICJidXN5IiBmbGFnLCByZWFkeSBmb3IgcmUtdXNlIGZvcgo+
+IGFub3RoZXIgb3BlcmF0aW9uLgo+Cj4gdGhpcyBpcyB0aGUgdG90YWwgb3Bwb3NpdGUgb2YgYSBw
+aXBlbGluZSBvciBxdWV1ZSwgd2hlcmUgeW91IGNodWNrIGRhdGEKPiBhdCBpdCwgYWJkaWNhdGUg
+cmVzcG9uc2liaWxpdHkgZm9yIGl0cyBtYW5hZ2VtZW50LCBhbmQgYXQgc29tZSBhcmJpdHJhcnkK
+PiBwb2ludCBpbiB0aGUgZnV0dXJlLCB0aGUgcmVzdWx0IGNvbWVzIG91dCwgYnV0IGJ5IHRoYXQg
+dGltZSBldmVyeXRoaW5nCj4gaGFzIG1vdmVkIG9uLgo+Cj4gYW4gb3V0LW9mLW9yZGVyIHNjaGVk
+dWxpbmcgc3lzdGVtICpjYW5ub3QqIC0gaW4gYW55IHdheSAtIHBlcm1pdCB0aGF0Cj4gdG8gaGFw
+cGVuLiAgdGhlIHJlc3VsdHMgd291bGQgYmUgY2F0YXN0cm9waGljLgo+Cj4gdGhlcmVmb3JlIGlu
+IHRoZSBBTFUgQ29tcHV0YXRpb25hbCBVbml0cyB3aGljaCBtYW5hZ2UgYSBwaXBlbGluZQo+IChv
+ciBwaXBlbGluZXMpLCB3ZSAqbXVzdCogaGF2ZSBlcXVhbCBvciBncmVhdGVkIENvbXBVbml0cyB0
+aGFuCj4gdGhlcmUgaXMgcGlwZWxpbmUgZGVwdGguCj4KPiAqIGdyZWF0ZXIgdGhhbiB0aGF0IGlz
+IG9rOiBpbnN0cnVjdGlvbnMgd2lsbCBiZSBhYmxlIHRvIHJ1biBhaGVhZC4KPiAgIHRoZSBERVNJ
+UkUgdG8gcnVuIGluc3RydWN0aW9ucyAoYW5kIHRoZSBvcmRlciBhcyBhIERBRykgaXMKPiAgIHJl
+Y29yZGVkLCBob3dldmVyIHRoZWlyIEFDVFVBTCBleGVjdXRpb24gbXVzdCB3YWl0IHVudGlsCj4g
+ICB0aGVyZSBpcyBhIGZyZWUgcGlwZWxpbmUgc2xvdC4KPiAqIGxlc3MgdGhhbiB0aGF0IGlzIE5P
+VCByZWFsbHkgb2sgKGEgd2FzdGUgb2Ygc2lsaWNvbikgYmVjYXVzZSB0aGVyZQo+ICAgaXMgbm90
+IGVub3VnaCB0byB0cmFjayB0aGUgcHJvZ3Jlc3Mgb2YgZWFjaCBhbmQgZXZlcnkgb3BlcmF0aW9u
+Cj4gICBnb2luZyB0aHJvdWdoIGVhY2ggYW5kIGV2ZXJ5IHBpcGVsaW5lIHN0YWdlLgo+Cj4gd2hl
+biBpdCBjb21lcyB0byBtYW5hZ2luZyBNZW1vcnksIHRoZSBpbXBsaWNhdGlvbnMgYXJlIGFzIGZv
+bGxvd3M6Cj4KPiAqIHRvIGhhdmUgbW9yZSBMRC9TVCBDb21wdXRhdGlvbiBVbml0cyB0aGFuIHRo
+ZXJlIGFyZSAiQ2VsbHMiCj4gICBpcyBsaWtld2lzZSBvay4gIGluc3RydWN0aW9ucyB3aWxsIGJl
+IGFibGUgdG8gcnVuIGFoZWFkLgo+ICogdG8gaGF2ZSBMRVNTIExEL1NUIENVcyB0aGFuIHRoZXJl
+IGFyZSAiQ2VsbHMiIGlzICpOT1QqIG9rLAo+ICAgYmVjYXVzZSB0aGUgQ29tcHV0YXRpb25Vbml0
+cyB3aWxsIE5FVkVSUlJSUiBpc3N1ZSBhCj4gICBMRCBvciBTVCB1bnRpbCBpdCBrbm93cyAtIGFi
+c29sdXRlbHkgYW5kIHdpdGhvdXQgYW55IHNoYWRvdyBvZgo+ICAgZG91YnQgLSB0aGF0IHRoZSBv
+cGVyYXRpb24gaXQgbW9uaXRvcnMgaGFzIDEwMCUgYWJzb2x1dGUgZ3VhcmFudGVlZAo+ICAgY29t
+cGxldGVkLgo+Cj4gc28gdGhhdCdzIHJlYWxseSBjcnVjaWFsIGluZm9ybWF0aW9uIHRoYXQgaGFz
+IGltcGxpY2F0aW9ucyBmb3IgdGhlCj4gZGVzaWduIG9mIHRoZSBMRC9TVCBCdWZmZXIsIGltcG9y
+dGFudCBhcyBjb250ZXh0LCBiZWxvdy4KPgo+Cj4gbm90ZXM6Cj4KPiAxKSB0aGUgY2VsbCBhcnJh
+bmdlbWVudCBzdGlsbCBuZWVkcyBhbiA4LWlucHV0ICg4IExEL1NUIENvbXB1dGF0aW9uIFVuaXRz
+KQo+IHRvIDQtb3V0cHV0IChoZWFkIG9mIGVhY2ggImNvbHVtbiIgb2YgZWFjaCBxdWV1ZSkgbXVs
+dGlwbGV4ZXIuCj4gdW5sZXNzIGkndmUgbWlzdW5kZXJzdG9vZCwgdGhhdCBhbG9uZSBpcyBhIGtp
+bGxlci4KPgo+IGRyb3BwaW5nIGVhY2ggb2YgdGhlIDgtaW5wdXQgcXVldWUgZW50cmllcyBpbnRv
+IHRoZSBmaXJzdCA4IGNlbGxzICp0aGVuKgo+IHBlcmZvcm1pbmcgc2hpZnRpbmcsICp0aGF0KiBp
+cyBva2F5LiAgYnV0IGFsbG93aW5nIGVhY2ggYW5kIGV2ZXJ5IHNpbmdsZQo+IG9uZSBvZiB0aG9z
+ZSA4IExEL1NUIENvbXBVbml0cyB0byB3cml0ZSB0byBjZWxscyAwLTQ/IHRoZSB3aXJpbmcgYWxv
+bmUKPiBpcyBpbnNhbmUuCj4KPiBhc3N1bWUgMTI4IGJpdHMgcGVyIG9wZXJhdGlvbiAoNDggYWRk
+cmVzcywgNjQgZGF0YSwgc29tZSBjb250cm9sIGxpbmVzCj4gbGV0J3Mgcm91bmQgaXQgdXAgdG8g
+MTI4IGJpdHMpOiB3aXRoIDEyOC13aWRlIGRhdGEgcGF0aHMgdGltZXMgOCBMRC9TVAo+IENvbXAg
+VW5pdHMgdGltZXMgKjQqIHRvIGJlIGFibGUgdG8gYXJiaXRyYXJpbHkgd3JpdGUgdG8gYW55IG9u
+ZSBvZgo+IDQgInRvcCByb3ciIGNlbGxzPyAgdGhhdCdzIGEgTUFTU0lWRSA0MDk2IHdpcmVzIQo+
+Cj4gd2UgY2FuJ3QgcG9zc2libHkgaGF2ZSB0aGF0IG1hbnkgd2lyZXMuCj4KPiBpZiB5b3UgbWVh
+bnQgdGhhdCB0aGUgcXVldWUgd2lkdGggc2hvdWxkIG1hdGNoIHRoZSBudW1iZXIgb2YgTEQvU1QK
+PiBVbml0cyAtIDgtd2lkZSBiZWNhdXNlIHdlIG5lZWQgOCBMRC9TVCBDb21wVW5pdHMgKHdlIG1p
+Z2h0IGJlCj4gYWJsZSB0byBnZXQgYXdheSB3aXRoIG9ubHkgNikgLSB0aGVuIHRoZSByZW1haW5p
+bmcgZW50cmllcyB3aWxsIGFjdHVhbGx5Cj4gcmVtYWluIHBlcm1hbmVudGx5IGVtcHR5LCBiZWNh
+dXNlIHRoZXJlICpoYXMqIHRvIGJlIGEgZGlyZWN0Cj4gb25lLXRvLW9uZSBtYXRjaCBiZXR3ZWVu
+IExEL1NUIENvbXBVbml0cyBhbmQgdGhlIExEL1NUIHRoYXQKPiBpdCAibWFuYWdlcyIuCj4KPiBz
+byB0aGVyZSB3b3VsZCBvbmx5IGJlIDggTEQvU1RzLCBhbmQgYSByb3cgZGVwdGggb2YgMS4KPgo+
+IGlmIGhvd2V2ZXIgd2UgZG8gMi1wb3J0cyBwZXIgQ29tcFVuaXQgKHRvIGNvdmVyIG1pc2FsaWdu
+ZWQpLCB0aGVuIHRoZXJlCj4gd291bGQgYmUgYW4gOC13aWRlIGJ5IDItcm93IGFycmFuZ2VtZW50
+IG9mIENlbGxzLgo+Cj4gd2l0aCBvbmx5IGEgQ2VsbCBEZXB0aCBvZiAxIG9yIDIsIHRoZSBwdXJw
+b3NlICpvZiogdGhlIENlbGxzIGlzIGRlZmVhdGVkCj4gZW50aXJlbHkuICB0aGVyZSdzIG5vIG5l
+ZWQgZm9yIHNoaWZ0aW5nOiB0aGUgZW50cmllcyBtaWdodCBhcyB3ZWxsIHN0YXkKPiB3aGVyZSB0
+aGV5IGFyZS4KPgo+IHRoaXMgcGFydGljdWxhcmx5IGJlY2F1c2UgZXZlbiBmb3IgdGhlICJtaXNh
+bGlnbm1lbnQiIGNhc2UsIHRoZSBMRC9TVAo+IENvbXBVbml0IGlzICpORVZFUlJSKiBnb2luZyB0
+byBwbGFjZSBhbnl0aGluZyBvdGhlciB0aGFuIHRoZQo+IDIgcmVxdWVzdHMgaXQgaXMgcmVzcG9u
+c2libGUgZm9yIGludG8gdGhlIHF1ZXVlOgo+Cj4gKiBmaXJzdCBvbmUgY292ZXJpbmcgdGhlIGxv
+d2VyIHBhcnQgb2YgdGhlIG1pc2FsaWduZWQgcmVxdWVzdAo+ICogc2Vjb25kIG9uZSBjb3Zlcmlu
+ZyB0aGUgdXBwZXIgcGFydC4KPgo+IG5vIG1hdHRlciBob3cgbWFueSBjb2x1bW5zIChhc3N1bWlu
+ZyB0aGF0IHRoZXJlIGlzIG9uZQo+IHBlciBMRFNUQ1UpIGFsbCBvdGhlciByb3dzICp3aWxsKiBy
+ZW1haW4gZW1wdHkuCj4KPiBhbmQgaWYgdGhlIGNvbHVtbnMgYXJlIGhhbHZlZCAoNCB3aWRlIHRv
+IGNvdmVyIDggTEQvU1QgQ1VzKQo+IG5vdyB3ZSBoYXZlIGEgbXVjaCBtb3JlIHNlcmlvdXMgcHJv
+YmxlbTogdGhlIHRvdGFsIGRhdGEgYmFuZHdpZHRoCj4gaXMgc2hydW5rIHRvIG9ubHkgNHggNjQt
+Yml0IG9wZXJhdGlvbnMgKmFuZCogdGhlcmUgaXMgYSBtdWx0aXBsZXhpbmcKPiBwcm9ibGVtIGFj
+dHVhbGx5IGdldHRpbmcgZGF0YSBpbnRvIHRoZSBmaXJzdCAyIHJvd3MgKGFjdHVhbGx5LCBub3cs
+Cj4gNCByb3dzIGlmIHRoZXJlIGFyZSAyIHBvcnRzIHBlciBMRC9TVCBDVSwgb25lIGZvciBsb3dl
+ci1taXNhbGlnbmVkCj4gb25lIGZvciB1cHBlci1taXNhbGlnbmVkKS4KPgo+IGRvIHdlIHN0YWxs
+IHRoZSByZXF1ZXN0cyBpZiB0aGV5IGRvIG5vdCBoYXZlIGFjY2Vzcz8gIHRoYXQgbWVhbnMKPiB0
+aGF0IG9wcG9ydHVuaXRpZXMgdG8ga2VlcCB0aGUgTDEgY2FjaGUtbGluZSByZXF1ZXN0cyAxMDAl
+IGZ1bGwKPiBhcmUgbWlzc2VkLCB3aGVyZSB0aGUgY3VycmVudCBkZXNpZ24gY2FuICpldmVuIGNh
+dGNoIG1pc2FsaWduZWQKPiBlbGVtZW50LXN0cmlkZWQgZGF0YSByZXF1ZXN0cyogYW5kIGNhbiAx
+MDAlIG1lcmdlIHRoZW0gaW50bwo+IGEgZnVsbCBjYWNoZS1saW5lIHJlcXVlc3QuCj4KPgo+Cj4g
+ImFuZCB0aGUgTDEgY2FjaGUgbGluZSBhZGRyZXNzIGl0IHdvdWxkIHVzZSBpcyBicm9hZGNhc3Qg
+dG8gYWxsIGNlbGxzLiIKPgo+IHRoaXMgaXMgYSBmdWxsIFhPUi1jb21wYXJpc29uIG9mIHRoZSBl
+bnRpcmUgYWRkcmVzcywgYWdhaW5zdCBldmVyeSBzaW5nbGUgY2VsbC4KPgo+IGlmIHRoZSBhZGRy
+ZXNzIGlzIDQ4IGJpdHMgYW5kIHRoZXJlIGFyZSAxMiBjZWxscywgdXNpbmcgYml0cyAzIGFuZCBh
+Ym92ZSBvZgo+IHRoZSBhZGRyZXNzIHdpbGwgcmVxdWlyZSA1MjggWE9SIGdhdGVzLgo+Cj4gaWYg
+d2Ugd2FudCAqdHdvKiBMMSBjYWNoZSBsaW5lIGFkZHJlc3NlcyBzaW11bHRhbmVvdXNseSAocmF0
+aGVyIHRoYW4KPiBnb2luZyB0byAyNTYtYml0LXdpZGUgTDEgY2FjaGUgbGluZXMpLCB0aGF0J3Mg
+KnR3byogYnJvYWRjYXN0cywgZWFjaCA1MjgKPiBYT1IgZ2F0ZXMuCj4KPgo+IDIpIGhvdyBhcmUg
+b3ZlcmxhcHBpbmcgYWRkcmVzc2VzIGRldGVjdGVkPyAgb3IsIG1vcmUgdG8gdGhlIHBvaW50LAo+
+IGhvdyBhcmUgbm9uLW92ZXJsYXBwaW5nIGFkZHJlc3NlcyBkZXRlY3RlZCBzdWNoIHRoYXQgdGhl
+eSBjYW4gYmUKPiBwYXNzZWQgdGhyb3VnaCBhcyBhIGdyb3VwLCBhbmQgZ2l2ZW4gdGhlIG9wcG9y
+dHVuaXR5IHRvIGJlIGRvbmUgaW4KPiBwYXJhbGxlbD8KPgo+IDMpIGhvdyB3b3VsZCBtaXNhbGln
+bmVkIGFkZHJlc3NlcyBoYW5kbGVkPwo+Cj4gNCkgaSdtIG5vdCBzZWVpbmcgaG93IHJlcXVlc3Rz
+IGNvdWxkIGJlIG1lcmdlZCBpbnRvICIxMDAlIGZ1bGwgY2FjaGUKPiBsaW5lIiByZXF1ZXN0cywg
+d2hpY2ggdGhlIGN1cnJlbnQgZGVzaWduIGlzIGNhcGFibGUgb2YgZG9pbmcsIGJ5IHVzaW5nCj4g
+c2ltcGxlIGJpdC13aXNlIEFORGluZyBhbmQgT1JpbmcuICB0aGUgQWJzdHJhY3QgUHJlZml4IFN1
+bSBjbGFzcwo+IGRvZXNuJ3QgbG9vayBvYnZpb3VzIGFzIHRvIGhvdyB0aGF0IGhhcHBlbnMsIGFu
+ZCBpcyBsaWtlbHkgdG8gYmUKPiBtdWNoIG1vcmUgY29zdGx5IHRoYW4gYSBzaW1wbGUgQU5EIGFu
+ZCBPUiBuZXR3b3JrLgo+Cj4gNSkgaG93IGFyZSBjbGFzaGVzIG9mIGFkZHJlc3NlcyAqaW50ZXIt
+cm93KiBkZXRlY3RlZD8gIGlmIENlbGwgMCBoYXMgYSBTVAo+IG9mIDgtYml0cyB0byBhZGRyZXNz
+IDB4MDAwMSBhbmQgQ2VsbCAxIGhhcyBhIFNUIG9mIDggYml0cyB0byBhZGRyZXNzCj4gMHgwMDAy
+IChhIDcgYnl0ZSBvdmVybGFwKSwgaG93IGlzIHRoaXMgZGV0ZWN0ZWQgKmluIHRoZSByb3cqPwo+
+Cj4gaW4gdGhlIGNvbHVtbiBpdCBpcyBmaW5lLCBiZWNhdXNlIG9ubHkgb25lIHJvdyBpcyBldmVy
+IGRvbmUgYXQgb25jZQo+ICh3aGljaCBoYXMgaW1wbGljYXRpb25zIGZvciBtaXMtYWxpZ25lZCBk
+YXRhIHJlcXVlc3RzLCB0aGVyZSB3aWxsIG5ldmVyCj4gYmUgYSAxMDAlIG1lcmdlIG9wcG9ydHVu
+aXR5KQo+Cj4KPiBhbGwgb2YgdGhlc2UgdGhpbmdzIHRvb2sgc2V2ZXJhbCAqbW9udGhzKiB0byBm
+YWN0b3IgaW4gdG8gdGhlIGRlc2lnbiwgaW4KPiBzZXZlcmFsIHN0YWdlcy4gIGl0J3MgbWFzc2l2
+ZWx5IGNvbXBsZXggYW5kIGludGVyLWRlcGVuZGVudC4KPgo+IGwuCj4KPiBfX19fX19fX19fX19f
+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGxpYnJlLXJpc2N2LWRldiBtYWls
+aW5nIGxpc3QKPiBsaWJyZS1yaXNjdi1kZXZAbGlzdHMubGlicmUtcmlzY3Yub3JnCj4gaHR0cDov
+L2xpc3RzLmxpYnJlLXJpc2N2Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpYnJlLXJpc2N2LWRldgoK
+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlicmUtcmlz
+Y3YtZGV2IG1haWxpbmcgbGlzdApsaWJyZS1yaXNjdi1kZXZAbGlzdHMubGlicmUtcmlzY3Yub3Jn
+Cmh0dHA6Ly9saXN0cy5saWJyZS1yaXNjdi5vcmcvbWFpbG1hbi9saXN0aW5mby9saWJyZS1yaXNj
+di1kZXYK
+