From: Jeremy Singher Date: Sat, 16 May 2020 20:16:23 +0000 (-0700) Subject: Re: [libre-riscv-dev] Scoreboard vs Tomasulo X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e260b456724b1f738644d74dfbb12e737983518d;p=libre-riscv-dev.git Re: [libre-riscv-dev] Scoreboard vs Tomasulo --- diff --git a/47/fb8c4a46f45212cc3b616f96f2c5c51e9d3428 b/47/fb8c4a46f45212cc3b616f96f2c5c51e9d3428 new file mode 100644 index 0000000..c959e87 --- /dev/null +++ b/47/fb8c4a46f45212cc3b616f96f2c5c51e9d3428 @@ -0,0 +1,232 @@ +Return-path: +Envelope-to: publicinbox@libre-riscv.org +Delivery-date: Sat, 16 May 2020 21:16:37 +0100 +Received: from localhost ([::1] helo=libre-riscv.org) + by libre-soc.org with esmtp (Exim 4.89) + (envelope-from ) + id 1ja3Ea-0005yr-Nc; Sat, 16 May 2020 21:16:36 +0100 +Received: from mail-lj1-f179.google.com ([209.85.208.179]) + by libre-soc.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) + (Exim 4.89) (envelope-from ) + id 1ja3EZ-0005yl-C9 + for libre-riscv-dev@lists.libre-riscv.org; Sat, 16 May 2020 21:16:35 +0100 +Received: by mail-lj1-f179.google.com with SMTP id h4so5768877ljg.12 + for ; + Sat, 16 May 2020 13:16:35 -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=ajKTXr01cEGXByX2Mfn+2ySJf2oZlH121LBcMfjFrwg=; + b=GzzYqEPHwthoa8FIjxY4ZeU9wEJ6yd9K4mds7aKT/DE7C2IovF7hrSPehLChOz0/aS + kAJ2Zt6VNwtEtszpV7kJCOehd0CQnxRz04bsFuB6fgefVN+uZGQbFaUSsuJNCjkmpjG/ + uAeN+NGODrJMpdVoRvtifHU/cixozJBT3BCKHQz4t4wZ+YVJmPo3QodvDwFirJQ2CSj8 + 9DDQxUHOdEcJizvMz/UuJprjPIJ3UburmxmPTqvm0Dsk75eNHtfGMU+RAtUYicr6VCkf + iCdGL8RtV9ZXW1vMa7uYYmAZCli5nAhCO1oh8/T7VP/WomN0lC5ljQ5SCT8IsXjB4ghH + eVdA== +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=ajKTXr01cEGXByX2Mfn+2ySJf2oZlH121LBcMfjFrwg=; + b=B1lb5ayBX0Ud6r/hBdYK31V1iAjM3eSJiLOJ7gFztZecKJEV/3KyFdcW174iSqnk6x + 0rve9KptoinXReA3MPsVlafW9H26T03BPd9q1t7qMSmVAMQqFB4zsapiPAckcJbQMjvi + j2gx7XxKus0aZmQWh/LoQT9kM6828ZoxSNLeY/HkIcsGqhrR2XRr6g1PiH3i3tuGEeHE + 8nD4tvSOPjtvgkH68yabL6XfhsGU7QthrVpPhvHCKE67AvBc3/pfTb4fOMqmm7Y7ZU0f + XyuTl1n1MuKlQ/04YNoy0yvArpf0IBEVV4OmmLZ9KNGuVSzWy6otd/FSMNiSuBMMyu1m + G7kw== +X-Gm-Message-State: AOAM532g2sHSxFfTput8m1XaPVorLWcoLVJWedHNbWkhqh5NGkQylU95 + gdnLiqdowAxBVedkFRXx08+zeRS+EQzosfR6NwteDBeR +X-Google-Smtp-Source: ABdhPJw1nP4laMG1MvTBtQncvnNkSRNtjSuOwCGIhzosy8AifAz+VL6VMcCDbpcq3yyM2Gepq9jYCrzQNuN+aRb92TY= +X-Received: by 2002:a05:651c:50e:: with SMTP id + o14mr6082865ljp.52.1589660194239; + Sat, 16 May 2020 13:16:34 -0700 (PDT) +MIME-Version: 1.0 +References: <13EDF987-9A19-4C96-89C2-6DB784CF2C96@gatech.edu> + + + + <25AC8A2E-D48F-439F-AF9D-0EB3DC08D7CC@gatech.edu> + +In-Reply-To: +From: Jeremy Singher +Date: Sat, 16 May 2020 13:16:23 -0700 +Message-ID: +To: Libre-RISCV General Development +Subject: Re: [libre-riscv-dev] Scoreboard vs Tomasulo +X-BeenThere: libre-riscv-dev@lists.libre-riscv.org +X-Mailman-Version: 2.1.23 +Precedence: list +List-Id: Libre-RISCV General Development + +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +Reply-To: Libre-RISCV General Development + +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" + +PiBIb3dldmVyLCB0aGUgc2NvcmVib2FyZCBpcyBsaW1pdGVkIGluIHRoYXQgaXQgZG9lcyBub3Qg +aGFuZGxlIFdBUiBhbmQgV0FXCj4gaGF6YXJkcyB2ZXJ5IHdlbGwuCgo+IHRoZSBvcmlnaW5hbCA2 +NjAwIGhhbmRsZXMgV0FSIGV4dHJlbWVseSB3ZWxsLCBvbmx5IHN0YWxsaW5nIG9uIFdhVwo+IGNv +bmRpdGlvbiwgZGV0ZWN0aW9uIHdoaWNoIGRpZCBub3QgbWF0dGVyIGdyZWF0bHkgYmVjYXVzZSB0 +aGUgcGlwZWxpbmVzCj4gd2VyZSBvbmx5IGF0IG1vc3QgMiBzdGFnZXMgbG9uZyBhbnl3YXkgKE1p +dGNoIG9ubHkgbm90aWNlZCBhZnRlciByZXJlYWRpbmcKPiBsYXN0IHllYXIgdGhhdCB0aGUgRlAg +QUREIG9mIHRoZSA2NjAwIHdhcyAyIHN0YWdlIHBpcGVsaW5lZC4gIG5vIGFjYWRlbWljCj4gbGl0 +ZXJhdHVyZSBoYXMgYWNrbm93bGVkZ2VkIG9yIG5vdGljZWQgdGhpcykuCgpJIHdvdWxkIGFyZ3Vl +IHRoYXQgdGhlIENEQzY2MDAgaGFuZGxlcyBXQVIgYmV0dGVyIHRoYW4gYW4gaW4tb3JkZXIKbWFj +aGluZSwgYnV0IG5vdCBiZXR0ZXIgdGhhbiBhIG1hY2hpbmUgd2l0aCBmdWxsIHJlbmFtaW5nLiBJ +biB0aGUKQ0RDNjYwMCwgdGhlIHNjb3JlYm9hcmQgd291bGQgYmxvY2sgdGhlIGNvbXBsZXRpb24g +b2YgdGhlIFcgaW5zdCB1bnRpbAp0aGUgUiBpbnN0IGhhcyByZWFkIGl0cyBvcGVyYW5kcy4gSW4g +VG9tYXN1bG8sIHRoZSBXIGluc3QgY2FuIHByb2NlZWQKaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBS +IGluc3QgaXMgcmVhZHksIHNpbmNlIHRoZSBkZXN0aW5hdGlvbiByZWdpc3RlcgppcyBwaHlzaWNh +bGx5IHJlbmFtZWQuCgo+ICBST0IgaXMgYSBDQU0sCgpXaGF0PyBUaGlzIGlzIG5vdCB0cnVlLiBJ +bnN0cnVjdGlvbnMgaW4gZmxpZ2h0IHRyYWNrIHRoZWlyIGluZGV4IGluCnRoZSBST0IsIGF0IGNv +bXBsZXRpb24sIHRoZXkgd3JpdGUgc3VjY2VzcyBiaXQgYWNjb3JkaW5nIHRvIHRoZSBpbmRleAp0 +aGV5IGhhdmUuIE5vdCBhIENBTS4gU2ltcGxlIGFkZHJlc3NlZCB3cml0ZS4KCj4gZ2l2ZW4gdGhh +dCBJbnRlbCBwcm9jZXNzb3JzIHVzZSBUb21hc3Vsbywgd2Ugc3RhcnQgdG8gc2VlIHdoeSBJbnRl +bAo+IHByb2Nlc3NvcnMgc3VjayBzbyBtdWNoIHBvd2VyLgoKUG93ZXIgY29uc3VtcHRpb24gb24g +YSBwcm9jZXNzb3IgaXMgcHJpbWFyaWx5IGZyb20gaGlnaCBzd2l0Y2hpbmcKcmF0ZXMgb24gbGFy +Z2UgcmVnaXN0ZXIgZmlsZXMsIGFuZCBTUkFNIGxlYWthZ2UuIFRoZSBzY2hlZHVsaW5nIGxvZ2lj +CmlzIGEgbWluaXNjdWxlIHBvcnRpb24uIEludGVsIGNvcmVzIGFyZSBwb3dlci1odW5ncnkgYmVj +YXVzZQpoaXN0b3JpY2FsbHkgdGhleSBoYXZlIHRhcmdldGVkIHRoZSBkZXNrdG9wL3dvcmtzdGF0 +aW9uIG1hcmtldCwgYW5kIGRvCm5vdCBoYXZlIGFzIG1hbnkgZGVjYWRlcyBvZiBleHBlcmllbmNl +IGFzIG90aGVyIGZpcm1zIG9wdGltaXppbmcgZm9yCnBvd2VyLWNvbnN0cmFpbmVkIGVudmlyb25t +ZW50cy4KCkFsc28gYWxtb3N0IGFsbCBtb2Rlcm4gT09PIGNvcmVzIHVzZSBUb21hc3VsbyBiZWNh +dXNlIFRvbWFzdWxvIGlzCmJldHRlciBhdCBhdm9pZGluZyBmYWxzZSBoYXphcmRzIGNvbXBhcmVk +IHRvIHNjb3JlYm9hcmRpbmcuIFRvbWFzdWxvCmFsc28gbWFrZXMgaXQgZWFzaWVyIHRvIGltcGxl +bWVudCBwcmVjaXNlIHRyYXBzLCBzb21ldGhpbmcgd2hpY2ggaXMKbm90b3Jpb3VzbHkgY2hhbGxl +bmdpbmcgIHdpdGgganVzdCBhIHNjb3JlYm9hcmQuCgpMZXRzIGJlIGNsZWFyIGhlcmUuIFRoZSBD +REM2NjAwIEFWT0lEUyBXQVIgYW5kIFdBVyBoYXphcmRzIGJ5IEJMT0NLSU5HCnlvdW5nZXIgaW5z +dHJ1Y3Rpb25zIChTZWUgcGczIGluIE1pdGNoIEFsc3VwJ3MgdGV4dCkuIFRvbWFzdWxvJ3MKc3Vw +cG9ydHMgT09PIGV4ZWN1dGlvbiBQQVNUIFdBUiBhbmQgV0FXIGhhemFyZHMsIGVuYWJsaW5nIHRo +ZSBjb3JlIHRvCmV4cGxvaXQgbW9yZSBJTFAgYWNyb3NzIGl0cyBmdW5jdGlvbmFsIHVuaXRzLgoK +THVrZSwgSSBhZ3JlZSB3aXRoIHlvdSB0aGF0IHRoZSByZXNlcnZhdGlvbiBzdGF0aW9uIHJvd3Mg +aW4gVG9tYXN1bG8ncwpjYW4gYmUgZXF1aXZhbGVudCB0byB0aGUgb3BlcmFuZCBsYXRjaGVzIGlu +IFNjb3JlYm9hcmRpbmcuIEhvd2V2ZXIsCmFkZGluZyBtYW55IG9wZXJhbmQtbGF0Y2hlcyAoYnkg +aGF2aW5nIG1hbnkgZnVuY3Rpb25hbCB1bml0cykgZG9lcyBub3QKc2NhbGUgYXMgbmljZWx5IGFz +IGp1c3QgYWRkaW5nIGEgZmV3IG1vcmUgcm93cyB0byBUb21hc3VsbydzCnJlc2VydmF0aW9uIHN0 +YXRpb25zLiBFc3BlY2lhbGx5IHNpbmNlIGRlc2lnbmluZyB0aGUgQ0FNcyBmb3IKVG9tYXN1bG8n +cyBpcyBhIHdlbGwgc3R1ZGllZCwgYW5kIHdlbGwtdW5kZXJzdG9vZCBwcm9ibGVtCgo+IDMuIEV4 +cGFuZCB0aGUgbnVtYmVyIG9mIFJTZXMgc28gdGhhdCBpZiB5b3Ugd2VyZSB0byBjb3VudCB0aGUg +dG90YWwgbnVtYmVyCj4gb2YgcGxhY2VzIG9wZXJhbmRzIGFyZSBzdG9yZWQsIHRoZXkgYXJlIHRo +ZSBzYW1lLgoKPiAoYW5vdGhlciB3YXkgdG8gcHV0IHRoaXMgaXMsICJmbGF0dGVuIGFsbCAyRCBS +U2VzIGludG8gMUQiKQoKVGhpcyBkb2VzIG5vdCBzY2FsZSB3ZWxsLiBBIDJEIENBTSBpcyBmYXIg +bW9yZSBhcmVhIGVmZmljaWVudCB0aGFuIGEKMUQgZmxhdHRlbmVkIHZlY3Rvci4KCj4gNy4gcmVu +YW1lIFJTZXMgdG8gIkZ1bmN0aW9uIFVuaXRzIiAoYWN0dWFsbHkgaW4gVGhvcm50b24ncyBib29r +IHRoZSBwaHJhc2UKPiAiQ29tcHV0YXRpb24gVW5pdHMiIGlzIHVzZWQpCgpTbyBhIFRvbWFzdWxv +J3MgZGVzaWduIHdpdGggNCByb3dzIG5vdyBiZWNvbWVzIGEgImZsYXR0ZW5lZCIgZGVzaWduCndp +dGggNCBmdW5jdGlvbmFsIHVuaXRzPyBUaGUgYWRkaXRpb25hbCBjb3N0IG9mIHRoZSBmdW5jdGlv +bmFsIHVuaXRzCmlzIGVub3Jtb3VzLgoKT24gU2F0LCBNYXkgMTYsIDIwMjAgYXQgMTA6MzMgQU0g +THVrZSBLZW5uZXRoIENhc3NvbiBMZWlnaHRvbgo8bGtjbEBsa2NsLm5ldD4gd3JvdGU6Cj4KPiBP +biBTYXR1cmRheSwgTWF5IDE2LCAyMDIwLCBZZWhvd3NodWEgPHlpbW1hbnVlbDNAZ2F0ZWNoLmVk +dT4gd3JvdGU6Cj4KPiA+IFRoaXMgaXMgYSB2ZXJ5IGludHJpY2F0ZSBhbmQgY29tcGxpY2F0ZWQg +c3ViamVjdCBtYXR0ZXIgZm9yIHN1cmUuCj4KPgo+IHllcywgZXhjZXB0IGl0IGRvZXNuJ3QgaGF2 +ZSB0byBiZS4gIHRoZSBhY3R1YWwKPiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9MZXZl +bnNodGVpbl9kaXN0YW5jZSBiZXR3ZWVuIFRvbWFzdWxvIGFuZAo+IDY2MDAgcmVhbGx5IGlzIG5v +dCB0aGF0IGdyZWF0Lgo+Cj4gaSB0aG91Z2h0IGl0IHdvdWxkIGJlIGZ1biB0byB1c2UgYSBuZXcg +dW5wcm9ub3VuY2VhYmxlIHdvcmQgaSBsZWFybmVkCj4geWVzdGVyZGF5IDopCj4KPgo+ID4gQXQg +c29tZSBwb2ludCwgaXQgYmUgZ3JlYXQgdG8gcmVhbGx5IGJyZWFrIHRoaW5ncyBkb3duIGFuZCBt +YWtlIHRoZW0gbW9yZQo+ID4gYWNjZXNzaWJsZS4KPgo+Cj4geWVzLiBpdCBjb21lcyBkb3duIHRv +IHRpbWUuCj4KPiBzdGFydCB3aXRoIHRoaXMuCj4KPiAxLiBCZWdpbiBmcm9tIFRvbWFzdWxvLiAg +bmVpdGhlciBUUyBub3Igb3JpZ2luYWwgNjYwMCBoYXZlIHByZWNpc2UKPiBleGNlcHRpb25zIHNv +IHdlIGxlYXZlIHRoYXQgb3V0IGZvciBub3cuCj4KPiAyLiBTdGFydCBieSBvbmx5IGFsbG93aW5n +IG9uZSByb3cgcGVyIFJlc2VydmF0aW9uIFN0YXRpb24uCj4KPiAzLiBFeHBhbmQgdGhlIG51bWJl +ciBvZiBSU2VzIHNvIHRoYXQgaWYgeW91IHdlcmUgdG8gY291bnQgdGhlIHRvdGFsIG51bWJlcgo+ +IG9mIHBsYWNlcyBvcGVyYW5kcyBhcmUgc3RvcmVkLCB0aGV5IGFyZSB0aGUgc2FtZS4KPgo+IChh +bm90aGVyIHdheSB0byBwdXQgdGhpcyBpcywgImZsYXR0ZW4gYWxsIDJEIFJTZXMgaW50byAxRCIp +Cj4KPiA0LiB3aGVyZSBwaXBlbGluZXMgd2VyZSBmb3JtZXJseSBjb25uZWN0ZWQgZXhjbHVzaXZl +bHkgdG8gb25lIFJTLAo+ICpwcmVzZXJ2ZSogdGhvc2UgY29ubmVjdGlvbnMgZXZlbiB0aG91Z2gg +dGhlIHJvd3MgYXJlIG5vdyAxRCBmbGF0dGVuZWQuCj4KPiAoYW5vdGhlciB3YXkgdG8gcHV0IHRo +aXMgaXM6IHdlIGhhdmUgYSBnbG9iYWwgMUQgbmFtaW5nIHNjaGVtZSB0byByZWZlcmVuY2UKPiB0 +aGUgKm9wZXJhbmQgbGF0Y2hlcyogcmF0aGVyIHRoYW4gYSAyRCBzY2hlbWUgaW52b2x2aW5nIFJT +IG51bWJlciBpbiAxCj4gZGltZW5zaW9uIGFuZCB0aGUgcm93IG51bWJlciBpbiB0aGUgMm5kKQo+ +Cj4gNS4gZ2l2ZSB0aGlzIDFEIGZsYXR0ZW5pbmcgYW4gVU5BUlkgbnVtYmVyaW5nIHNjaGVtZS4K +Pgo+IDYuIG1ha2UgdGhlIHNpemUgb2YgdGhlIFJlb3JkZXIgQnVmZmVyIEVYQUNUTFkgZXF1YWwg +dG8gdGhlIG51bWJlciBvZiAxRAo+IGZsYXR0ZW5lZCBSU2VzLgo+Cj4gNy4gcmVuYW1lIFJTZXMg +dG8gIkZ1bmN0aW9uIFVuaXRzIiAoYWN0dWFsbHkgaW4gVGhvcm50b24ncyBib29rIHRoZSBwaHJh +c2UKPiAiQ29tcHV0YXRpb24gVW5pdHMiIGlzIHVzZWQpCj4KPiB0aHVzLCBhdCB0aGlzIHBvaW50 +IGluIHRoZSB0cmFuc2Zvcm1hdGlvbiwgdGhlIFJPQiByb3cgbnVtYmVyICpJUyogdGhlCj4gRnVu +Y3Rpb24gVW5pdCBOdW1iZXIsIHRoZSBuZWVkIHRvIGFjdHVhbGx5IHN0b3JlIHRoZSBST0IgIyBp +biB0aGUKPiBSZXNlcnZhdGlvbiBTdGF0aW9uIFJvdyBpcyBSRU1PVkVELCBhbmQgY29uc2VxdWVu +dGx5IHRoZSBSZXNlcnZhdGlvbgo+IFN0YXRpb25zIGFyZSBOTyBMT05HRVIgQSBDQU0uCj4KPiA4 +LiBnaXZlIGFsbCByZWdpc3RlciBmaWxlIG51bWJlcnMgKElOVCBGUCkgYW4gVU5BUlkgbnVtYmVy +aW5nLgo+Cj4gdGhpcyBtZWFucyB0aGF0IGluIHRoZSBST0IsIHRoZSBDQU0sIHdoaWNoIGhhcyB0 +byBsb29rIHVwIHRoZSByZWdpc3Rlcgo+IG51bWJlciBieSBoaXR0aW5nIHRoZSBDQU0gb24gZXZl +cnkgY3ljbGUsIG5vdyBvbmx5IGhhcyB0byBtYXRjaCBhIHNpbmdsZQo+IEFORCBnYXRlLgo+Cj4g +Yml0dmVjdG9ycyB0aGVyZWZvcmUgcmVwbGFjZSBDQU1zLgo+Cj4gd2l0aCB0aGUgUk9CIG5vdyBo +YXZpbmcgcm93cyBvZiBiaXR2ZWN0b3JzLCBpdCBpcyBub3cgdGVybWVkIGEgIk1hdHJpeCIuCj4K +PiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBST0IsIHdoaWNoIHVzZWQgdG8gY29udGFpbiB0aGUgUlMg +TnVtYmVyIGluIHVuYXJ5LCBub3cKPiBjb250YWlucyBhICpiaXR2ZWN0b3IqIERpcmVjdGVkIEFj +eWNsaWMgR3JhcGggb2YgdGhlIEZVIHRvIEZVIGRlcGVuZGVuY2llcywKPiBhbmQgaXMgc3BsaXQg +b3V0IGludG8gaXRzIG93biBNYXRyaXguCj4KPiB0aGlzIHdlIGNhbGwgdGhlIEZVLUZVIERlcGVu +ZGVuY3kgTWF0cml4Lgo+Cj4gdGhlIHJlbWFpbmRlciBvZiB0aGUgIlJPQiIgY29udGFpbnMgdGhl +IHJlZ2lzdGVyIG51bWJlcnMgaW4gdW5hcnkgTWF0cml4Cj4gZm9ybSwgYW5kIHdpdGggZWFjaCBy +b3cgYmVpbmcgZGlyZWN0bHkgYXNzb2NpYXRlZCB3aXRoIGEgRnVuY3Rpb24gVW5pdCwgd2UKPiBu +b3cgaGF2ZSBhbiBhc3NvY2lhdGlvbiBiZXR3ZWVuIEZVIGFuZCBSZWdzIHdoaWNoIHByZXNlcnZl +cyB0aGUga25vd2xlZGdlCj4gb2Ygd2hhdCBpbnN0cnVjdGlvbiByZXF1aXJlZCB3aGljaCByZWdp +c3RlcnMsICphbmQqIHdobyB3aWxsIHByb2R1Y2UgdGhlCj4gcmVzdWx0Lgo+Cj4gdGhpcyB3ZSBj +YWxsIHRoZSBGVS1SZWdzIERlcGVuZGVuY3kgTWF0cml4Lgo+Cj4gdGhhdCAqcmVhbGx5IGlzIGl0 +Ki4KPgo+IHRha2Ugc29tZSB0aW1lIHRvIGFic29yYiB0aGUgdHJhbnNmb3JtYXRpb24gd2hpY2gg +bm90IG9ubHkgcHJlc2VydmVzCj4gYWJzb2x1dGVseSBldmVyeSBmdW5jdGlvbmFsIGFzcGVjdCBv +ZiB0aGUgVG9tYXN1bG8gQWxnb3JpdGhtLCBpdAo+IGRyYXN0aWNhbGx5IHNpbXBsaWZpZXMgdGhl +IGltcGxlbWVudGF0aW9uLCByZWR1Y2VzIGdhdGUgY291bnQsIHJlZHVjZXMKPiBwb3dlciBjb25z +dW1wdGlvbiAqYW5kKiBwcm92aWRlcyBhIHN0cm9uZyBmb3VuZGF0aW9uIGZvciBkb2luZyBhcmJp +dHJhcnkKPiBtdWx0aS1pc3N1ZSBleGVjdXRpb24gd2l0aCBvbmx5IGFuIE8oTikgbGluZWFyIGlu +Y3JlYXNlIGluIGdhdGUgY291bnQgdG8gZG8KPiBzby4KPgo+Cj4gZnVydGhlciBoaWxhcmlvdXNs +eSBzaW1wbGUgYWRkaXRpb25hbCB0cmFuc2Zvcm1hdGlvbnMgb2NjdXIgdG8gcmVwbGFjZQo+IGZv +cm1lciBtYXNzaXZlIHJlc291cmNlIGNvbnN0cmFpbmVkIGJvdHRsZW5lY2tzLCBkdWUgdG8gdGhl +IGJpbmFyeQo+IG51bWJlcmluZyBvbiBib3RoIFJPQiBudW1iZXJzIGFuZCBSZWcgbnVtYmVycywg +d2l0aCBzaW1wbGUgbGFyZ2UgdW5hcnkgTk9SCj4gZ2F0ZXM6Cj4KPiAqIHRoZSBkZXRlcm1pbmF0 +aW9uIG9mIHdoZW4gaGF6YXJkcyBhcmUgY2xlYXIsIG9uIGEgcGVyIHJlZ2lzdGVyIGJhc2lzLCBp +cwo+IGEgbGF1Z2hhYmx5IHRyaXZpYWwgTk9SIGdhdGUgYWNyb3NzIGFsbCBjb2x1bW5zIG9mIHRo +ZSBGVS1SRUdzIG1hdHJpeCwKPiBwcm9kdWNpbmcgYSByb3cgYml0dmVjdG9yIGZvciBlYWNoIHJl +YWQgcmVnaXN0ZXIgYW5kIGVhY2ggd3JpdGUgcmVnaXN0ZXIuCj4KPiAqIHRoZSBkZXRlcm1pbmF0 +aW9uIG9mIHdoZW4gYSBGdW5jdGlvbiBVbml0IG1heSBwcm9jZWVkIGlzIGEgbGF1Z2hhYmx5Cj4g +dHJpdmlhbCBOT1IgZ2F0ZSBhY3Jvc3MgYWxsICpyb3dzKiBvZiB0aGUgKkZVLUZVKiBNYXRyaXgs +IHByb2R1Y2luZyBhCj4gcm93LWJhc2VkIHZlY3RvciwgZGV0ZXJtaW5pbmcgdGhhdCBpdCBpcyAi +cmVhZGFibGUiIGlmIHRoZXJlIGV4aXN0cyBubwo+IHdyaXRlIGhhemFyZCBhbmQgIndyaXRhYmxl +IiBpZiB0aGVyZSBleGlzdHMgbm8gcmVhZCBoYXphcmQuCj4KPiAqIHRoZSBUb21hc3VsbyBDb21t +b24gRGF0YSBCdXMsIGZvcm1lcmx5IGJlaW5nIGEgc2luZ2xlIGNob2tlcG9pbnQKPiBiaW5hcnkt +YWRkcmVzc2luZyBnbG9iYWwgQnVzLCBtYXkgbm93IGJlIHVwZ3JhZGVkIHRvICpNVUxUSVBMRSog +Q29tbW9uIERhdGEKPiBCdXNlcyB0aGF0LCBiZWNhdXNlIHRoZSBhZGRyZXNzaW5nIGluZm9ybWF0 +aW9uIGFib3V0IHJlZ2lzdGVycyBpcyBub3cgaW4KPiB1bmFyeSwgaXMgbGlrZXdpc2UgbGF1Z2hh +Ymx5IHRyaXZpYWwgdG8gdXNlIGNhc2NhZGluZyBQcmlvcml0eSBQaWNrZXJzIChhCj4gbm1pZ2Vu +IFByaW9yaXR5RW5jb2RlciBhbmQgRGVjb2RlciwgYmFjay10by1iYWNrKSB0byBkZXRlcm1pbmUg +d2hpY2gKPiBGdW5jdGlvbiBVbml0IHNoYWxsIGJlIGdyYW50ZWQgYWNjZXNzIHRvIHdoaWNoIENE +QiBpbiBvcmRlciB0byByZWNlaXZlIChvcgo+IHNlbmQpIGl0cyBvcGVyYW5kIChvciByZXN1bHQp +Lgo+Cj4gKiBtdWx0aS1pc3N1ZSBhcyBpIG1lbnRpb25lZCBhIGZldyB0aW1lcyBpcyBhbiBlcXVh +bGx5IGxhdWdoYWJseSB0cml2aWFsCj4gbWF0dGVyIG9mIHRyYW5zaXRpdmVseSBjYXNjYWRpbmcg +dGhlIFJlZ2lzdGVyIERlcGVuZGVuY3kgSGF6YXJkcyAoYm90aCByZWFkCj4gYW5kIHdyaXRlKSBh +Y3Jvc3MgZnV0dXJlIGluc3RydWN0aW9ucyBpbiB0aGUgc2FtZSBtdWx0aSBpc3N1ZSBleGVjdXRp +b24KPiB3aW5kb3cuIGluc3RyMiBoYXMgaW5zdHIxIEFORCBpbnN0cjIncyBoYXphcmRzLiAgaW5z +dHIzIGhhcyBpbnN0cjEgQU5ECj4gaW5zdHIyIEFORCBpbnN0cjMncyBoYXphcmRzIGFuZCBzbyBv +bi4gIHRoaXMganVzdCBsZWF2ZXMgdGhlIG5lY2Vzc2l0eSBvZgo+IGluY3JlYXNpbmcgcmVnaXN0 +ZXIgcG9ydCBudW1iZXJzLCBudW1iZXIgb2YgQ0RCcywgYW5kIExEL1NUIG1lbW9yeQo+IGJhbmR3 +aWR0aCB0byBjb21wZW5zYXRlIGFuZCBjb3BlIHdpdGggdGhlIGFkZGl0aW9uYWwgcmVzb3VyY2Ug +ZGVtYW5kcyB0aGF0Cj4gd2lsbCBub3cgb2NjdXIuCj4KPiB0aGUgbGF0dGVyIGlzIHBhcnRpY3Vs +YXJseSB3aHkgd2UgaGF2ZSBhIGRlc2lnbiB0aGF0LCB1bHRpbWF0ZWx5LCB3ZSBjb3VsZAo+IHRh +a2Ugb24gQVJNLCBJbnRlbCwgYW5kIEFNRC4KPgo+IHRoZXJlIGlzIG5vIHJlYXNvbiB0ZWNobmlj +YWxseSB3aHkgd2UgY291bGQgbm90IGRvIGEgNCwgNiBvciA4IG11bHRpIGlzc3VlCj4gc3lzdGVt +LCBhbmQgd2l0aCBlbm91Z2ggRnVuY3Rpb24gVW5pdHMgYW5kIHRoZSBjeWNsaWMgYnVmZmVyIHN5 +c3RlbSAoc28gYXMKPiBub3QgdG8gcmVxdWlyZSBhIGZ1bGwgY3Jvc3NiYXIgYXQgdGhlIENvbW1v +biBEYXRhIEJ1c2VzKSwgYW5kIHByb3Blcgo+IHN0cmF0aWZpY2F0aW9uIGFuZCBkZXNpZ24gb2Yg +dGhlIHJlZ2lzdGVyIGZpbGVzLCBtYXNzaXZlIFZlY3RvciBwYXJhbGxlbGlzbQo+IGF0IHRoZSBw +aXBlbGluZXMgd291bGQgYmUga2VwdCBmdWxseSBvY2N1cGllZCB3aXRob3V0IGFuIG92ZXJ3aGVs +bWluZwo+IGluY3JlYXNlIGluIGdhdGVzIG9yIHBvd2VyIGNvbnN1bXB0aW9uIHRoYXQgd291bGQg +bm9ybWFsbHkgYmUgZXhwZWN0ZWQsIGFuZAo+IHNjYWxhciBwZXJmb3JtYW5jZSB3b3VsZCBiZSBz +aW1pbGFybHkgaGlnaCBhcyB3ZWxsLgo+Cj4gbC4KPgo+Cj4KPgo+IC0tCj4gLS0tCj4gY3Jvd2Qt +ZnVuZGVkIGVjby1jb25zY2lvdXMgaGFyZHdhcmU6IGh0dHBzOi8vd3d3LmNyb3dkc3VwcGx5LmNv +bS9lb21hNjgKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f +Xwo+IGxpYnJlLXJpc2N2LWRldiBtYWlsaW5nIGxpc3QKPiBsaWJyZS1yaXNjdi1kZXZAbGlzdHMu +bGlicmUtcmlzY3Yub3JnCj4gaHR0cDovL2xpc3RzLmxpYnJlLXJpc2N2Lm9yZy9tYWlsbWFuL2xp +c3RpbmZvL2xpYnJlLXJpc2N2LWRldgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f +X19fX19fX19fX19fX18KbGlicmUtcmlzY3YtZGV2IG1haWxpbmcgbGlzdApsaWJyZS1yaXNjdi1k +ZXZAbGlzdHMubGlicmUtcmlzY3Yub3JnCmh0dHA6Ly9saXN0cy5saWJyZS1yaXNjdi5vcmcvbWFp +bG1hbi9saXN0aW5mby9saWJyZS1yaXNjdi1kZXYK +