From: Luke Kenneth Casson Leighton Date: Sat, 16 May 2020 21:37:40 +0000 (+0100) Subject: Re: [libre-riscv-dev] Scoreboard vs Tomasulo X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6721bddb95df81c0b56f7d9d933876a148343685;p=libre-riscv-dev.git Re: [libre-riscv-dev] Scoreboard vs Tomasulo --- diff --git a/78/e4b0098a4978944d03e4a66338eab2b37355ac b/78/e4b0098a4978944d03e4a66338eab2b37355ac new file mode 100644 index 0000000..a0d9d0d --- /dev/null +++ b/78/e4b0098a4978944d03e4a66338eab2b37355ac @@ -0,0 +1,300 @@ +Return-path: +Envelope-to: publicinbox@libre-riscv.org +Delivery-date: Sat, 16 May 2020 22:38:18 +0100 +Received: from localhost ([::1] helo=libre-riscv.org) + by libre-soc.org with esmtp (Exim 4.89) + (envelope-from ) + id 1ja4Vd-00087F-9V; Sat, 16 May 2020 22:38:17 +0100 +Received: from lkcl.net ([217.147.94.29]) + by libre-soc.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) + (Exim 4.89) (envelope-from ) id 1ja4Vb-000879-Oh + for libre-riscv-dev@lists.libre-riscv.org; Sat, 16 May 2020 22:38:15 +0100 +DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lkcl.net; + s=201607131; + h=Content-Type:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version; + bh=ebLG0nqj6OyD5RE5QjDvf5rusdRRL9YEb0LKyJhW7rQ=; + b=Nl3sjp89DaCVss3sZVWNJpfyBOcbgTpz44BvdcTH12wX1scAeDDuJ+Yu4cVpSkKpJNlfMTwhguguhNgmUmibE4EMLyRn/174h1i5TsvTgMH5S9SJPqmLYVBrTZ9PKTh2KC3NY9YTaw7dLXeF56lu7yEIK0mlRscWIQfH0noBrjE=; +Received: from mail-lj1-f172.google.com ([209.85.208.172]) + by lkcl.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) + (Exim 4.84_2) (envelope-from ) id 1ja4Vb-0007bA-C4 + for libre-riscv-dev@lists.libre-riscv.org; Sat, 16 May 2020 21:38:15 +0000 +Received: by mail-lj1-f172.google.com with SMTP id b6so5918503ljj.1 + for ; + Sat, 16 May 2020 14:37:59 -0700 (PDT) +X-Gm-Message-State: AOAM530cQdmsuvIJD1stHDjrcDtJ/m2PsuzAStcXnT6Sd1Cx/XTp/h35 + XIsCk5QM3xpXSz8whRJ8phtjK/pGK9WkazIl3es= +X-Google-Smtp-Source: ABdhPJxIcDDPcglnlzJxc+I/L8v9iq5Bd/8aAn49rxOZdlJbOu7Y3KmSD4LMra/gjdMSvl/a637Lz5utE4lFjUmBANw= +X-Received: by 2002:a2e:8056:: with SMTP id p22mr6143482ljg.266.1589665074004; + Sat, 16 May 2020 14:37:54 -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: Luke Kenneth Casson Leighton +Date: Sat, 16 May 2020 22:37:40 +0100 +X-Gmail-Original-Message-ID: +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" + +T24gU2F0LCBNYXkgMTYsIDIwMjAgYXQgOToxNiBQTSBKZXJlbXkgU2luZ2hlciA8dGhlanNpbmdo +ZXJAZ21haWwuY29tPiB3cm90ZToKCj4gPiBIb3dldmVyLCB0aGUgc2NvcmVib2FyZCBpcyBsaW1p +dGVkIGluIHRoYXQgaXQgZG9lcyBub3QgaGFuZGxlIFdBUiBhbmQgV0FXCj4gPiBoYXphcmRzIHZl +cnkgd2VsbC4KPgo+ID4gdGhlIG9yaWdpbmFsIDY2MDAgaGFuZGxlcyBXQVIgZXh0cmVtZWx5IHdl +bGwsIG9ubHkgc3RhbGxpbmcgb24gV2FXCj4gPiBjb25kaXRpb24sIGRldGVjdGlvbiB3aGljaCBk +aWQgbm90IG1hdHRlciBncmVhdGx5IGJlY2F1c2UgdGhlIHBpcGVsaW5lcwo+ID4gd2VyZSBvbmx5 +IGF0IG1vc3QgMiBzdGFnZXMgbG9uZyBhbnl3YXkgKE1pdGNoIG9ubHkgbm90aWNlZCBhZnRlciBy +ZXJlYWRpbmcKPiA+IGxhc3QgeWVhciB0aGF0IHRoZSBGUCBBREQgb2YgdGhlIDY2MDAgd2FzIDIg +c3RhZ2UgcGlwZWxpbmVkLiAgbm8gYWNhZGVtaWMKPiA+IGxpdGVyYXR1cmUgaGFzIGFja25vd2xl +ZGdlZCBvciBub3RpY2VkIHRoaXMpLgo+Cj4gSSB3b3VsZCBhcmd1ZSB0aGF0IHRoZSBDREM2NjAw +IGhhbmRsZXMgV0FSIGJldHRlciB0aGFuIGFuIGluLW9yZGVyCj4gbWFjaGluZSwgYnV0IG5vdCBi +ZXR0ZXIgdGhhbiBhIG1hY2hpbmUgd2l0aCBmdWxsIHJlbmFtaW5nLgoKSmVyZW15OiA2NjAwIGRl +c2lnbnMgKmRvKiBoYXZlIHJlZ2lzdGVyICJyZW5hbWluZyIuICBpIHNhaWQgYWxyZWFkeSwKYSBu +dW1iZXIgb2YgdGltZXMuICBhbmQgaWYgeW91IGhhdmUgc3R1ZGllZCBhbmQgbGlzdGVuZWQgdG8g +dGhlIEFjYWRlbWljCmxpdGVyYXR1cmUgLSBhbmQgYmVsaWV2ZSBpdCAtIHlvdSBhcmUgbWlzaW5m +b3JtZWQgYnkgdGhhdCBsaXRlcmF0dXJlLCBhbmQgd2lsbApjb250aW51ZSB0byBiZSBtaXNpbmZv +cm1lZCBieSB0aGF0IGxpdGVyYXR1cmUuCgpwbGVhc2UgdW5kZXJzdGFuZDogaSBoYXZlIHNwZW50 +IG92ZXIgbmluZSBtb250aHMgc3R1ZHlpbmcgdGhpcywgbGVhcm5pbmcKZnJvbSBNaXRjaCBBbHN1 +cCwgb25lIG9mIHRoZSB3b3JsZCdzIGxlYWRpbmcgaGlnaC1wZXJmb3JtYW5jZSBjb21wdXRpbmcK +YXJjaGl0ZWN0cywgaW1wbGVtZW50aW5nIHRoaXMgYW5kIGl0J3Mgbm90IGdvaW5nIHRvIGdldCBj +aHVja2VkIG91dCB0bwppbXBsZW1lbnQgc29tZXRoaW5nIHRoYXQgdGFrZXMgc2l4IE1PTlRIUyB0 +byBmdWxseSB1bmRlcnN0YW5kIGlzIGEKYmV0dGVyIGRlc2lnbiwgdG8gYmUgcmVwbGFjZWQgYnkg +c29tZXRoaW5nIHRoYXQgd291bGQgdGFrZSBhbm90aGVyIHNpeAptb250aHMgdG8gaW1wbGVtZW50 +ICphbmQgd2UgdGhlbiBjb3VsZCBub3QgZG8gbXVsdGktaXNzdWUgb24gdG9wIG9mIGl0Ki4KCnBs +ZWFzZSB0aGVyZWZvcmUgdGFrZSB0aGUgdGltZSB0byB1bmRlcnN0YW5kIHRoaXMgZGVzaWduLCBw +YXJ0aWN1bGFybHkgd2hlbgp3ZSBhcmUgcmlnaHQgaW4gdGhlIG1pZGRsZSBvZiBhIHRpbWUtY3Jp +dGljYWwgZGVhZGxpbmUuCgo+IEluIHRoZQo+IENEQzY2MDAsIHRoZSBzY29yZWJvYXJkIHdvdWxk +IGJsb2NrIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBXIGluc3QgdW50aWwKPiB0aGUgUiBpbnN0IGhh +cyByZWFkIGl0cyBvcGVyYW5kcy4gSW4gVG9tYXN1bG8sIHRoZSBXIGluc3QgY2FuIHByb2NlZWQK +PiBpbW1lZGlhdGVseSBiZWZvcmUgdGhlIFIgaW5zdCBpcyByZWFkeSwgc2luY2UgdGhlIGRlc3Rp +bmF0aW9uIHJlZ2lzdGVyCj4gaXMgcGh5c2ljYWxseSByZW5hbWVkLgoKSmVyZW15OiB0aGUgInJl +bmFtaW5nIiBjYXJyaWVkIG91dCBieSB0aGUgNjYwMCBkb2VzIGV4YWN0bHkgdGhpcyBzYW1lCmpv +Yi4KCkFjYWRlbWljcyB1bmZvcnR1bmF0ZWx5IGhhdmUgKm9ubHkqIHN0dWRpZWQgdGhlICpwYXRl +bnQqIC0gbm90IFRob3JudG9uJ3MKYm9vayBub3IgcmVhZCBNaXRjaCBBbHN1cCdzIGJvb2sgY2hh +cHRlcnMgd2hpY2ggaGUgd3JvdGUgYmFzZWQgb24gMzArCnllYXJzIGV4cGVyaWVuY2Ugb2YgaW1w +bGVtZW50aW5nIDY2MDAtc3R5bGUgZXhlY3V0aW9uIGluIHRoZSA4ODEwMCwKQU1EIEs5IGFuZCBB +TUQgT3B0ZXJvbiBTZXJpZXMgb2YgQ1BVcy4KCnRoZSA2NjAwIHBhdGVudCAqT05MWSogY292ZXJz +IHRoZSBRLVRhYmxlcy4KCnRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgUS1UYWJsZXMgZG9lcyAqTk9U +KiBpbmNsdWRlIHRoZSBDb21wdXRhdGlvbiBVbml0cwp3aGVyZSB0aGUgb3BlcmFuZCBsYXRjaGVz +IGFyZS4KCnRoZXNlIGxhdGNoZXMgKkFSRSogdGhlICJyZW5hbWVkIHJlZ2lzdGVycyIgKGFjdHVh +bGx5LCBuYW1lbGVzcyByZWdpc3RlcnMpLgoKPiA+ICBST0IgaXMgYSBDQU0sCj4KPiBXaGF0PyBU +aGlzIGlzIG5vdCB0cnVlLiBJbnN0cnVjdGlvbnMgaW4gZmxpZ2h0IHRyYWNrIHRoZWlyIGluZGV4 +IGluCj4gdGhlIFJPQiwgYXQgY29tcGxldGlvbiwgdGhleSB3cml0ZSBzdWNjZXNzIGJpdCBhY2Nv +cmRpbmcgdG8gdGhlIGluZGV4Cj4gdGhleSBoYXZlLiBOb3QgYSBDQU0uIFNpbXBsZSBhZGRyZXNz +ZWQgd3JpdGUuCgphaCBhcHByZWNpYXRlZCB0aGUgY29ycmVjdGlvbi4gIGkga25ldyB0aGVyZSB3 +ZXJlIENBTXMgc29tZXdoZXJlLgp3aGVuIGkgZGlzY292ZXJlZCB0aGF0LCBpIGRyb3BwZWQgZnVy +dGhlciBpbnZlc3RpZ2F0aW9uLgoKaSBhbSBob3dldmVyIGF3YXJlIHRoYXQgaWYgeW91IHdpc2gg +dG8gZG8gbXVsdGktaXNzdWUsIHRoZSBST0Igd2lsbCBuZWVkCnRvIGJlIG11bHRpLXBvcnRlZCBT +UkFNLiAgd2l0aG91dCBtdWx0aS1wb3J0aW5nIHRoZSBTUkFNLCB5b3Ugc2ltcGx5CmNhbm5vdCB3 +cml0ZSBtdWx0aXBsZSBlbnRyaWVzLgoKdGhpcyBpcyB3aGVyZSB0aGUgcHJvYmxlbXMgKHJlYWQ6 +IG5pZ2h0bWFyZXMpIGZvciBUb21hc3VsbyBzdGFydCB0byBtYW5pZmVzdCwKYW5kIHByb2dyZXNz +IGZyb20gdGhlcmUgdGhyb3VnaCBtdWx0aXBsZSBDb21tb24gRGF0YSBCdXMgY2hhbm5lbHMgaW50 +bwptdWx0aS1wb3J0ZWQgKE54UiwgTnhXKSBDQU1zIGF0IHRoZSBSZXNlcnZhdGlvbiBTdGF0aW9u +IGxldmVsLgoKaSd2ZSBiZWVuIHRocm91Z2ggdGhpcywgb2ssIG92ZXIgMTggbW9udGhzIGFnby4K +CmJ5IGNvbnRyYXN0LCB3aGVuIGNvbnZlcnRlZCB0byBzaW5nbGUtYml0IHVuYXJ5IHZlY3RvcnMs +IGVhY2ggZW50cnkgaW4gdGhlCk1hdHJpY2VzIChjb3ZlcmVkIGJ5IGEgc2luZ2xlIFNSIE5BTkQg +bGF0Y2gpIGlzICppbmRlcGVuZGVudCouICBtdWx0aXBsZQpvZiB0aG9zZSBtYXkgYmUgc2V0IGlu +IGEgc2luZ2xlIGN5Y2xlLgoKdGhlcmUgaGFzIGJlZW4gYSAqbWFzc2l2ZSogYW1vdW50IG9mIHRo +b3VnaHQgZ29uZSBpbnRvIHRoaXMsIG9rPwoKCj4gPiBnaXZlbiB0aGF0IEludGVsIHByb2Nlc3Nv +cnMgdXNlIFRvbWFzdWxvLCB3ZSBzdGFydCB0byBzZWUgd2h5IEludGVsCj4gPiBwcm9jZXNzb3Jz +IHN1Y2sgc28gbXVjaCBwb3dlci4KPgo+IFBvd2VyIGNvbnN1bXB0aW9uIG9uIGEgcHJvY2Vzc29y +IGlzIHByaW1hcmlseSBmcm9tIGhpZ2ggc3dpdGNoaW5nCj4gcmF0ZXMgb24gbGFyZ2UgcmVnaXN0 +ZXIgZmlsZXMsIGFuZCBTUkFNIGxlYWthZ2UuCgpnaXZlbiB0aGF0IHdlJ3JlIHBsYW5uaW5nIGFy +b3VuZCAyOCBGdW5jdGlvbiBVbml0cyBhbmQgaGF2ZSBhIDEyOC1lbnRyeQpyZWdpc3RlciBmaWxl +LCB0aGUgY2FsY3VsYXRpb25zIHRoYXQgaSBkaWQgZm9yIHRoYXQgd291bGQgcHV0IHRoZSBEZXBl +bmRlbmN5Ck1hdHJpY2VzIGFyb3VuZCBhIHdob3BwaW5nIDUwLDAwMCBnYXRlcywgdXNpbmcgU1Ig +TkFORCBMYXRjaGVzLgoKKGlmIHdlIGRpZCBpdCBhcyBERkZzIGl0IHdvdWxkIGJlIGFuIHVuYWNj +ZXB0YWJsZSAyNTAsMDAwIGdhdGVzKQoKPiBUaGUgc2NoZWR1bGluZyBsb2dpYyBpcyBhIG1pbmlz +Y3VsZSBwb3J0aW9uLgoKbm90IGZvciB0aGUgbGFyZ2Utc2NhbGUgb3V0LW9mLW9yZGVyIHN5c3Rl +bXMgdGhhdCB3ZSBhcmUgcGxhbm5pbmcgdG8KZG8sIGl0J3Mgbm90LApkdWUgdG8gdGhlIGxhcmdl +IHNpemVkIEdQVSByZWdpc3RlciBmaWxlICgxMjggZW50cmllcy4gIGFjdHVhbGx5IDJ4CjEyOCAt +IDEyOCBGUCwKMTI4IElOVCkuCgp3ZSBtYXkgaGF2ZSB0byAqZG93biotc2NhbGUgdmlhIGEgcmVn +ZmlsZSBjYWNoZSB0byBjb3BlIHdpdGggdGhhdC4KZGlzY3Vzc2lvbiBmb3IgYW5vdGhlciB0aW1l +LgoKCj4gSW50ZWwgY29yZXMgYXJlIHBvd2VyLWh1bmdyeSBiZWNhdXNlCj4gaGlzdG9yaWNhbGx5 +IHRoZXkgaGF2ZSB0YXJnZXRlZCB0aGUgZGVza3RvcC93b3Jrc3RhdGlvbiBtYXJrZXQsIGFuZCBk +bwo+IG5vdCBoYXZlIGFzIG1hbnkgZGVjYWRlcyBvZiBleHBlcmllbmNlIGFzIG90aGVyIGZpcm1z +IG9wdGltaXppbmcgZm9yCj4gcG93ZXItY29uc3RyYWluZWQgZW52aXJvbm1lbnRzLgoKYXBwcmVj +aWF0ZWQgdGhlIGluc2lnaHQuCgo+IEFsc28gYWxtb3N0IGFsbCBtb2Rlcm4gT09PIGNvcmVzIHVz +ZSBUb21hc3VsbyBiZWNhdXNlIFRvbWFzdWxvIGlzCj4gYmV0dGVyIGF0IGF2b2lkaW5nIGZhbHNl +IGhhemFyZHMgY29tcGFyZWQgdG8gc2NvcmVib2FyZGluZy4KCmluIHRoZSB2ZXJzaW9ucyBvZiBz +Y29yZWJvYXJkcyBpbXBsZW1lbnRlZCBieSBhY2FkZW1pY3MgLSBiZWNhdXNlIHRoZXkKZmFpbCB0 +byBjb21wcmVoZW5kIHRoZW0gcHJvcGVybHkgLSBiZWNhdXNlIHRoZXkgb25seSByZWFkIHRoZSBw +YXRlbnQKb24gUS1UYWJsZXMgLSB5ZXMuCgppbiB0aGUgdmVyc2lvbiB0aGF0IE1pdGNoIEFsc3Vw +IC0gYSB3b3JsZCBsZWFkaW5nIGV4cGVydCBvbiBTY29yZWJvYXJkCk1lY2hhbmljcyAtIHRhdWdo +dCBtZToKCm5vLgoKYWxzbywgdGhlIElJVCBNYWRyYXMgUklTRSBHcm91cCBTaGFrdGkgRS1DbGFz +cyBwcm9jZXNzb3IgaXMgKmFsc28qIGEKc2NvcmVib2FyZCBkZXNpZ24uICB0aGlzIHdhcyBkZXNp +Z25lZCAiZnJvbSBmaXJzdCBwcmluY2lwbGVzIiBieSBQcm9mZXNzb3IKS2FtYXRvdGksIGFuZCBp +dCB3YXMgb25seSB0aHJvdWdoIGxlYXJuaW5nIGZyb20gTWl0Y2ggdGhhdCBpIHdhcyBhYmxlCnRv +IHJlY29nbmlzZSB3aGF0IGhlIGhhZCBkb25lIGFzIGJlaW5nIGlkZW50aWNhbCB0byBhIDY2MDAg +c2NvcmVib2FyZC4KCj4gVG9tYXN1bG8KPiBhbHNvIG1ha2VzIGl0IGVhc2llciB0byBpbXBsZW1l +bnQgcHJlY2lzZSB0cmFwcywgc29tZXRoaW5nIHdoaWNoIGlzCj4gbm90b3Jpb3VzbHkgY2hhbGxl +bmdpbmcgIHdpdGgganVzdCBhIHNjb3JlYm9hcmQuCgpubyBpdCBpcyBub3QuICB0aGlzIGlzICp5 +ZXQgYWdhaW4qIGNvbXBsZXRlIGZhY3R1YWwgbWlzaW5mb3JtYXRpb24gYW5kIGlnbm9yYW5jZQpm +cm9tIEFjYWRlbWljIGxpdGVyYXR1cmUuCgpjYW4gaSBhc2s6IGhhdmUgeW91IHJlYWQgUGF0dGVy +c29uJ3MgYm9vaz8gIHRoaXMgaXMgdGhlIHVzdWFsIHBsYWNlIHdoZXJlCm1vc3QgcGVvcGxlIGdl +dCB0aGVpciBtaXNpbmZvcm1hdGlvbiBmcm9tLiAgdGhlIHJlbGVhc2Ugb2YgdGhpcyBtaXNpbmZv +cm1hdGlvbgp3YXMgd2h5IE1pdGNoIEFsc3VwIC0gYSB2ZXJ5IHBpc3NlZC1vZmYgYW5kIGV4YXNw +ZXJhdGVkIE1pdGNoIC0gd3JvdGUgdGhvc2UKdHdvIGNoYXB0ZXJzLCBiYWNrIGFyb3VuZC4uLiAy +MDA4IChpIHRoaW5rKS4KCnByZWNpc2UgZXhjZXB0aW9ucywgdHJhcHMsIGludGVycnVwdHMsIGJy +YW5jaCBzcGVjdWxhdGlvbiBhbmQgcHJlZGljYXRpb24gbWF5CmFsbCBiZSBhY2hpZXZlZCB0aHJv +dWdoICJzaGFkb3dpbmciLiAgc2VlIHRoZSBsYXR0ZXIgcGFydCBvZiB0aGUgMm5kIGNoYXB0ZXIg +b2YKTWl0Y2gncyBib29rLgoKc2VlIHRoZSBzZWN0aW9uICJTaGFkb3dpbmciIGluIHRoaXMgcGFn +ZToKaHR0cHM6Ly9saWJyZS1zb2Mub3JnLzNkX2dwdS9hcmNoaXRlY3R1cmUvNjYwMHNjb3JlYm9h +cmQvCgppdCdzIHZlcnkgc2ltcGxlOiB5b3UgaG9sZCB3cml0ZSB1bnRpbCBzdWNoIHRpbWUgYXMg +dGhlIG9wcG9ydHVuaXR5IGZvciAiZGFtYWdlIgppcyBjbGVhcmVkLiAgT3BlcmFuZCBGb3J3YXJk +aW5nIGFsbG93cyBpbnN0cnVjdGlvbnMgdG8gcnVuIGFoZWFkLCB1c2luZyByZXN1bHRzCnRoYXQg +d291bGQgb3RoZXJ3aXNlIGhhdmUgdG8gYmUgcmVjZWl2ZWQgb25seSBmaXJzdCBieSBnb2luZyB0 +aHJvdWdoCnRoZSBSZWdmaWxlLgoKKnRoaXMgaXMgYWxyZWFkeSBpbXBsZW1lbnRlZCogYW5kIHRo +ZSB1bml0IHRlc3RzIGRlbW9uc3RyYXRlZCBpdCBhcwoqZnVsbHkgZnVuY3Rpb25hbCoKCgo+IExl +dHMgYmUgY2xlYXIgaGVyZS4gVGhlIENEQzY2MDAgQVZPSURTIFdBUiBhbmQgV0FXIGhhemFyZHMg +YnkgQkxPQ0tJTkcKPiB5b3VuZ2VyIGluc3RydWN0aW9ucyAoU2VlIHBnMyBpbiBNaXRjaCBBbHN1 +cCdzIHRleHQpLiBUb21hc3VsbydzCj4gc3VwcG9ydHMgT09PIGV4ZWN1dGlvbiBQQVNUIFdBUiBh +bmQgV0FXIGhhemFyZHMsIGVuYWJsaW5nIHRoZSBjb3JlIHRvCj4gZXhwbG9pdCBtb3JlIElMUCBh +Y3Jvc3MgaXRzIGZ1bmN0aW9uYWwgdW5pdHMuCgp0aGlzIGlzIG9ubHkgYmVjYXVzZSB0aGUgMTk2 +NSBDREM2NjAwIGRpZCBub3QgaGF2ZSBhbiBPcGVyYW5kIEZvcndhcmRpbmcgQnVzCihpbnN0ZWFk +IGl0IHVzZWQgdGhlIHJlZ2ZpbGUgYXMgYSBzYW1lLWNsb2NrIGZvcndhcmRpbmcgYnVzLCBieSBy +ZWFkaW5nIG9uIG9uZQplZGdlIGFuZCB3cml0aW5nIG9uIHRoZSBvdGhlci4gIHRoaXMgdW5mb3J0 +dW5hdGVseSBtZWFudCB0aGF0IHdpdGhvdXQgYW4gT3BGd2QKQnVzLCBzdGFsbCBoYWQgdG8gb2Nj +dXIpLgoKdGhpcyBET0VTIE5PVCBJTkhFUkVOVExZIE1FQU4gdGhhdCAqKkFMTCoqIFNjb3JlYm9h +cmRzIGFyZSBydWJiaXNoLgoKaWYgeW91IGFkZCBhbiBPcGVyYW5kIEZvcndhcmRpbmcgQnVzIChl +cXVpdmFsZW50IHRvIHRoZSBDREIgaW4gVG9tYXN1bG8pCnRoZSBleGFjdCBzYW1lIHBhcml0eSBm +dW5jdGlvbmFsaXR5IGlzIGFjaGlldmVkICh3aXRob3V0IHRoZSBzZXZlcmUgZG93bnNpZGVzKS4K +Cgo+IEx1a2UsIEkgYWdyZWUgd2l0aCB5b3UgdGhhdCB0aGUgcmVzZXJ2YXRpb24gc3RhdGlvbiBy +b3dzIGluIFRvbWFzdWxvJ3MKPiBjYW4gYmUgZXF1aXZhbGVudCB0byB0aGUgb3BlcmFuZCBsYXRj +aGVzIGluIFNjb3JlYm9hcmRpbmcuIEhvd2V2ZXIsCj4gYWRkaW5nIG1hbnkgb3BlcmFuZC1sYXRj +aGVzIChieSBoYXZpbmcgbWFueSBmdW5jdGlvbmFsIHVuaXRzKSBkb2VzIG5vdAo+IHNjYWxlIGFz +IG5pY2VseSBhcyBqdXN0IGFkZGluZyBhIGZldyBtb3JlIHJvd3MgdG8gVG9tYXN1bG8ncwo+IHJl +c2VydmF0aW9uIHN0YXRpb25zLgoKdGhpcyBpcyBpbmNvcnJlY3QuICB5b3UgbWF5IGJlIHVuZGVy +IHRoZSBtaXN0YWtlbiBpbXByZXNzaW9uIHRoYXQgdGhlIHBpcGVsaW5lcwpkdXBsaWNhdGVkIGFz +IHdlbGwuICB0aGlzIGNsZWFybHkgd291bGQgYmUgaW5hZHZpc2VhYmxlIGJlY2F1c2UgdGhlIEZV +J3Mgam9iCmlzIHRvIHNlcnZlIG9uZSBhbmQgb25seSBvbmUgcmVzdWx0LiAgdGhlcmVmb3JlIHlv +dSBrbm93IHRoYXQgdGhpcyBpcyBhIG1pc3Rha2VuCnVuZGVyc3RhbmRpbmcsIGFuZCB0aGF0IGNv +bnNlcXVlbnRseSB5b3UgaGF2ZSBtdWx0aXBsZSBGVXMgZm9yIHRoZSBzYW1lCnBpcGVsaW5lLiAg +KHRlcm1lZCAiQ29uY3VycmVudCBDb21wdXRhdGlvbiBVbml0IikuCgp0aGVyZWZvcmUgaXQncyBt +aW5pbWFsLiAgZXhjbHVkaW5nIHRoZSBsYXRjaGVzIHRoZW1zZWx2ZXMgKHRoZSByb3dzCmhhdmUg +bGF0Y2hlcywgdGhlCkNvbXBVbml0cyAtIGFrYSBGdW5jdGlvblVuaXRzIGhhdmUgbGF0Y2hlcywg +dGhlIHRvdGFsIG51bWJlciBvZiBsYXRjaGVzIGFmdGVyCmZsYXR0ZW5pbmcgaXMgdGhlIHNhbWUp +LCB0aGUgbnVtYmVyIG9mIGdhdGVzIGFkZGVkIGJ5IGVhY2ggQ29tcFVuaXQgaXMKbWluaW1hbDog +YXJvdW5kLi4uIDgwLCBtYXhpbXVtLgoKdGhhdCdzIHBlYW51dHMuCgo+IEVzcGVjaWFsbHkgc2lu +Y2UgZGVzaWduaW5nIHRoZSBDQU1zIGZvcgo+IFRvbWFzdWxvJ3MgaXMgYSB3ZWxsIHN0dWRpZWQs +IGFuZCB3ZWxsLXVuZGVyc3Rvb2QgcHJvYmxlbQoKdGhlIGtleSBpcyB0aGUgY29tYmluYXRpb24g +b2YgdGhvc2UgdHdvOgoKQSkgd2VsbC11bmRlcnN0b29kLi4uICphbmQqCkIpIGEgcHJvYmxlbS4K +CmhhdmUgYSBsb29rIGF0IGhvdyBtdWx0aS1pc3N1ZSBpcyBkb25lIHVzaW5nIFRvbWFzdWxvLiAg +aXQncyBzaG9ja2luZ2x5IGJhZC4KCgo+ID4gMy4gRXhwYW5kIHRoZSBudW1iZXIgb2YgUlNlcyBz +byB0aGF0IGlmIHlvdSB3ZXJlIHRvIGNvdW50IHRoZSB0b3RhbCBudW1iZXIKPiA+IG9mIHBsYWNl +cyBvcGVyYW5kcyBhcmUgc3RvcmVkLCB0aGV5IGFyZSB0aGUgc2FtZS4KPgo+ID4gKGFub3RoZXIg +d2F5IHRvIHB1dCB0aGlzIGlzLCAiZmxhdHRlbiBhbGwgMkQgUlNlcyBpbnRvIDFEIikKPgo+IFRo +aXMgZG9lcyBub3Qgc2NhbGUgd2VsbC4gQSAyRCBDQU0gaXMgZmFyIG1vcmUgYXJlYSBlZmZpY2ll +bnQgdGhhbiBhCj4gMUQgZmxhdHRlbmVkIHZlY3Rvci4KCmEgMUQgYml0dmVjdG9yLiAgYSBzaW5n +bGUsIDFEIGJpdHZlY3Rvci4gIG9mIDMyIGJpdHMgaW4gbGVuZ3RoLgoKY29tcGFyZWQgdG8gMzIg +NS1iaXQgYmluYXJ5IGFkZHJlc3Nlcy4KCmp1c3QgdGhlIGxhdGNoZXMgYWxvbmUsIHRoYXQgbWF0 +aCBkb2VzIG5vdCBzdGFjayB1cC4KCm5vdyBsZXQncyB0YWtlIGl0IHRvIDJELgoKbGV0J3Mgc2F5 +IHRoYXQgd2UgaGF2ZSAxMCBGVXMgYW5kIDMyICBSZWdzLgoKaW4gVG9tYXN1bG8gdGhhdCBpcyBh +IDUtYml0IGFkZHJlc3MuICAxMHg1ID0gNTAgREZGIGxhdGNoZXMuICBERkYKbGF0Y2hlcyBhcmUg +MTAgZ2F0ZXMgc28gdGhhdCdzIDUwMCBnYXRlcy4KCmluIDY2MDAgdGhhdCBpcyAxMHgzMiA9IDMy +MCBTUiBOQU5EIExhdGNoZXMuICBTUiBOQU5EIGxhdGNoZXMgYXJlIDIKZ2F0ZXMuICAzMjB4MiBp +cyA2NDAgZ2F0ZXMuCgpub3QgdmVyeSBkaWZmZXJlbnQgaW4gdGVybXMgb2YgbGF0Y2ggY291bnQs +IGlzIGl0PwoKCm5vdyBsZXQncyBkbyB0aGUgYWRkcmVzcy1jaGVja2luZy4KCnRvIGNoZWNrIGEg +cmVnaXN0ZXIgYXMgImFjdGl2ZSIgLSBiZWFyIGluIG1pbmQgdGhhdCB0aGlzIGlzIHBlcgpyZWdp +c3RlciBhbmQgY29uc2VxdWVudGx5CmlmIGRvaW5nIG11bHRpLWlzc3VlIHRoYXQncyBhIGJhdGNo +IG9mIGFkZHJlc3MtY2hlY2tpbmcgZ2F0ZXMgKnBlciByZWdpc3RlciouCgpmb3IgVG9tYXN1bHUs +IHRoaXMgcmVxdWlyZXMgMTB4NSA9IDUwMCBYT1IgZ2F0ZXMgKHBsdXMgc29tZQptdWx0aS1pbnB1 +dCBBTkQgZ2F0ZXMgb24gZWFjaCByb3cpICAgWE9SIGlzIDQgZ2F0ZXMsIHNvIHRoYXQncyAyLDAw +MApnYXRlcyAqUEVSIE1VTFRJLUlTU1VFIExBTkUqLgoKZm9yIHRoZSA2NjAwLCB0aGF0J3MgMTB4 +MzIgKipBTkQqKiBnYXRlcy4gIDMyMCBBTkQgZ2F0ZXMuCgphbmQgb2YgdGhvc2UgMzIwIEFORCBn +YXRlcywgdGhleSBhcmUgcmUtdXNlYWJsZSBmb3IgbXVsdGktaXNzdWUKV0lUSE9VVCBSRVFVSVJJ +TkcgQURESVRJT05BTCBHQVRFUy4KCnNvIHRoYXQgaXMgMzIwIEFORCBnYXRlcyBmb3Igc2luZ2xl +LWlzc3VlCnRoYXQgaXMgemVybyBleHRyYSBnYXRlcyBmb3IgZHVhbC1pc3N1ZQp0aGF0IGlzIHpl +cm8gZXh0cmEgZ2F0ZXMgZm9yIHF1YWQtaXNzdWUKemVybyBleHRyYSBnYXRlcyBmb3Igb2N0YWwt +aXNzdWUuCgpzdGFydCB0byBtYWtlIHNlbnNlIG5vdywgd2h5IHVuYXJ5IGVuY29kaW5nIGFzIDFE +IHZlY3RvcnMgaXMgbGVzcwpnYXRlcyBhbmQgbGVzcyBwb3dlciB0aGFuIGJpbmFyeSBDQU1zPwoK +aWYgeW91IHdhbnQgdG8gY2hlY2sgbXVsdGlwbGUgdW5hcnkgYml0cyAoYSBjcml0aWNhbCBwcmVy +ZXF1aXNpdGUgZm9yCm11bHRpLWlzc3VlKSwgYWxsIHlvdSBkbyBpcy4uLiBzZXQuLi4gbXVsdGlw +bGUuLi4gYml0cy4KCndoYXQgaGFwcGVucz8gIG11bHRpcGxlIEFORCBnYXRlcyBmaXJlLiAgaW4g +dGhlIHNhbWUgY2xvY2suICAgYW5kCnRoYXQncyBleGFjdGx5IHdoYXQgd2Ugd2FudC4KCgo+ID4g +Ny4gcmVuYW1lIFJTZXMgdG8gIkZ1bmN0aW9uIFVuaXRzIiAoYWN0dWFsbHkgaW4gVGhvcm50b24n +cyBib29rIHRoZSBwaHJhc2UKPiA+ICJDb21wdXRhdGlvbiBVbml0cyIgaXMgdXNlZCkKPgo+IFNv +IGEgVG9tYXN1bG8ncyBkZXNpZ24gd2l0aCA0IHJvd3Mgbm93IGJlY29tZXMgYSAiZmxhdHRlbmVk +IiBkZXNpZ24KPiB3aXRoIDQgZnVuY3Rpb25hbCB1bml0cz8gVGhlIGFkZGl0aW9uYWwgY29zdCBv +ZiB0aGUgZnVuY3Rpb25hbCB1bml0cwo+IGlzIGVub3Jtb3VzLgoKbm8sIGl0J3MgNCB4IDgwIGdh +dGVzIChhcHByb3gpLiAgdGhhdCdzIG5vdCA0eCBkdXBsaWNhdGlvbiBvZiBBTFUKcGlwZWxpbmVz +ICpiZWhpbmQqIHRob3NlIDQgRnVuY3Rpb24gVW5pdHMuICBzZWUgTWl0Y2gncyAybmQgQ2hhcHRl +ciwKIkNvbmN1cnJlbnQgQ29tcHV0YXRpb24gVW5pdCIKCmh0dHBzOi8vbGlicmUtc29jLm9yZy8z +ZF9ncHUvYXJjaGl0ZWN0dXJlLzY2MDBzY29yZWJvYXJkLzYwMHgtY29uY3VycmVudF9jb21wX3Vu +aXQucG5nCgpKZXJlbXk6IGl0J3MgcmF0aGVyIHVuZm9ydHVuYXRlIHRpbWluZy4gIHNpeCB0byB0 +d2VsdmUgbW9udGhzIGFnbywgd2UKY291bGQgaGF2ZSBoYWQgdGhpcyBkZWJhdGUgYW5kIGl0IHdv +dWxkIGhhdmUgYmVlbiBmdW4sIGluZm9ybWF0aXZlLAp1c2VmdWwgYW5kIHByb2R1Y3RpdmUuICBp +dCB3b3VsZCBhbHNvIGhhdmUgYmVlbiBwb3NzaWJsZSB0byBicmluZyB5b3UKaW4gdG8gdGhlIGRp +c2N1c3Npb25zIHRoYXQgdG9vayBwbGFjZSAoTm92IDIwMTggdG8gYXJvdW5kIEFwci1NYXkKMjAx +OSkgYmV0d2VlbiBteXNlbGYsIFNhbXVlbCBGYWx2bywgTWl0Y2ggQWxzdXAgYW5kIHRoZSB0ZWFt +IGVpdGhlcgpoZXJlIG9uIHRoaXMgbGlzdCwgb3Igb24gY29tcC5hcmNoLgoKaG93ZXZlciB3aXRo +IHRoZSB1cGNvbWluZyBkZWFkbGluZSwgdGhpcyBraW5kIG9mIG90aGVyd2lzZSByZWFsbHkKdmFs +dWFibGUgZGlzY3Vzc2lvbiBpcywgc2FkbHksIHNvbWV0aGluZyB0aGF0IHdlICpkbyBub3QgaGF2 +ZSB0aW1lCmZvciouCgpyZXRyb3NwZWN0aXZlIHJlY29tbWVuZGF0aW9uIHRoYXQgd2UgcmVjb25z +aWRlciBhbmQgdXNlIFRvbWFzdWxvIHdvdWxkCm5vdCBvbmx5IHJlc3VsdCBpbiB1cyBjb21wbGV0 +ZWx5IG1pc3NpbmcgdGhlIHVwY29taW5nIE9jdCAyMDIwCmRlYWRsaW5lLCB3ZSB3b3VsZCBlbmQg +dXAgd2l0aCBhbiBleGNlcHRpb25hbGx5IHBvb3JseS1wZXJmb3JtaW5nLApsaW1pdGVkIGFuZCBz +ZXJpb3VzbHkgcHJvYmxlbWF0aWMgcHJvY2Vzc29yIGFzIHdlbGwuICB3b3JzZSB0aGFuIHRoYXQs +CnNhZGx5IGkgaGF2ZSB0byBzYXkgdGhhdCBpIGFtIGNvbmNlcm5lZCB0aGF0IGFueSByZXRyb3Nw +ZWN0aXZlCmRpc2N1c3Npb24gd291bGQgaXRzZWxmIChhc2lkZSBmcm9tIHZhbHVhYmxlIGNvcnJl +Y3Rpb25zIGFuZAphc3Npc3RhbmNlIGluIGNyZWF0aW5nIGEgY29tcGFyYXRpdmUgYW5hbHlzaXMp +IGJlY29tZSBhIHNlcmlvdXMKZGlzdHJhY3Rpb24uCgppdCdzIGxpaXR0ZXJhbGxseSB0YWtlbiAx +OCBNT05USHMgdG8gZ2V0IHRvIHRoZSBwb2ludCB3aGVyZSB3ZSBhcmUgbm93CndpdGggdGhlIGNv +ZGUgYW5kIHRoZSBkZXNpZ24uICB3ZSBuZWVkIHRvIGZpbmlzaCB0aGUgZGVzaWduIGluIGEgdmVy +eQpzaG9ydCB0aW1lZnJhbWUgKDE0IHdlZWtzKSwgYW5kIGFzIFllaG93c2h1YSBwb2ludHMgb3V0 +LCBkdWUgdG8gdGhlCmNvbXBsZXhpdHkgb2YgdGhpcyBwYXJ0aWN1bGFyIGFyZWEgb2YgQ29tcHV0 +ZXIgU2NpZW5jZSwgdGhhdCBpbiB0dXJuCmltcGxpZXMgdGhhdCB5b3UnbGwgbmVlZCB0byB0cnVz +dCBtZSBvbiB0aGUgYXJjaGl0ZWN0dXJhbCBhbmFseXNpcwood2hpY2ggdG9vayA1IG1vbnRocyB0 +byBjb21wbGV0ZSwgdW5kZXIgTWl0Y2gncyBndWlkYW5jZSkuCgpzbywgbXkgYXBvbG9naWVzIGZv +ciBuZWVkaW5nIHRvIGJlIGZpcm0gb24gdGhpczogdGhlIG9wcG9ydHVuaXR5IHRvCmhlbHAgZXhp +c3RzIHdpdGhpbiB0aGUgdGltZS1mcmFtZSBhbmQgZmluYW5jaWFsIGNvbnN0cmFpbnRzIHRoYXQg +d2VyZQpkZXRlcm1pbmVkIGFuZCBzZXQsIG92ZXIgMTggbW9udGhzIGFnbywgYmVmb3JlIHlvdSBq +b2luZWQuCgp0aGVyZWZvcmUsIGlmIHlvdSdkIGxpa2UgdG8gaGVscCwgdGhlbiBhc2tpbmcgcXVl +c3Rpb25zIHdoaWNoIGFyZQpyZWxhdGVkIHRvICp1bmRlcnN0YW5kaW5nKiBvZiB0aGUgcHJlY2lz +ZS1hdWdtZW50ZWQgU2NvcmVib2FyZCBzeXN0ZW0sCnRhcmdldHRlZCB2ZXJ5IHNwZWNpZmljYWxs +eSBhdCBhbGxvd2luZyB5b3UgdG8gZW5nYWdlIGFuZCBhc3Npc3QgdXMgaW4KbWVldGluZyB0aGF0 +IGRlYWRsaW5lLCBhcmUgdmVyeSB3ZWxjb21lLgoKYW55dGhpbmcgb3RoZXIgdGhhbiB0aGF0IHZl +cnkgc3BlY2lmaWMgZ29hbC1vcmllbnRhdGVkIGZvY3VzLCBpIGFtCnJlYWxseSBzb3JyeSwgd2Ug +cmVhbGx5IG5lZWQgdG8gbW92ZSBpdCB0byBvbmUgc2lkZSwgYW5kIGZvciB0aGF0LCBpCnJlY29t +bWVuZCBjb21wLmFyY2guCgp0aGVyZWZvcmUsIGlmIHlvdSB3b3VsZCBsaWtlIHRvIGRpc2N1c3Mg +dGhlIG1lcml0cyBvZiBUb21hc3VsbyB2cwpTY29yZWJvYXJkIChwYXJ0aWN1bGFybHkgdGhvc2Ug +dGhhdCBwdXJzdWUgcmVjb21tZW5kaW5nIFRvbWFzdWxvCipvdmVyKiBTY29yZWJvYXJkKSBmdXJ0 +aGVyLCBpIHJlY29tbWVuZCBkb2luZyBzbyBvbiBjb21wLmFyY2gsIHdoaWNoCmlzIHdoZXJlIE1p +dGNoIEFsc3VwIG1vc3QgcmVndWxhcmx5IG1heSBiZSBmb3VuZC4gIHdpdGggdGhlIHJpZ2h0Cmlu +dGVyZXN0aW5nIHF1ZXN0aW9uLCBib3RoIGhlIGFuZCBtYW55IG90aGVycyB3aWxsIHBpdGNoIGlu +LgoKdGhlIG9uZSB0aGluZyB0aGF0IHlvdSBuZWVkIHRvIGJlIGF3YXJlIG9mIGlzIHRoYXQgTWl0 +Y2ggaXMgYm90aApoeXBlci1pbnRlbGxpZ2VudCwgYW5kIHNlY29uZCB0aGF0IGhlIGRvZXMgbm90 +IHRvbGVyYXRlIHBlb3BsZSB3aG8KY2Fubm90IGtlZXAgdXAgd2l0aCBoaW0sIGVzcGVjaWFsbHkg +aWYgdGhleSB0cnkgdG8gY29udmluY2UgaGltIG9mCnNvbWV0aGluZyB3aXRob3V0IGhhdmluZyBm +aXJzdCBkZW1vbnN0cmF0ZWQgdGhhdCB0aGV5J3ZlIHVuZGVyc3Rvb2QKKmhpbSouICBoZSdzIHdl +bGwgb3ZlciA3MCwgaGUncyByZXRpcmVkLCBoZSBtYWRlIGVub3VnaCAieHh4eC15b3UiCm1vbmV5 +IG9uIHNlbGxpbmcgR1BVIHBhdGVudHMgdG8gU2Ftc3VuZywgc28gaGUgZG9lc24ndCBoYXZlIHRv +IHB1dCB1cAp3aXRoIGFueXRoaW5nIHRoYXQgaGUgZG9lc24ndCB3YW50IHRvIDopCgpsLgoKX19f +X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlicmUtcmlzY3Yt +ZGV2IG1haWxpbmcgbGlzdApsaWJyZS1yaXNjdi1kZXZAbGlzdHMubGlicmUtcmlzY3Yub3JnCmh0 +dHA6Ly9saXN0cy5saWJyZS1yaXNjdi5vcmcvbWFpbG1hbi9saXN0aW5mby9saWJyZS1yaXNjdi1k +ZXYK +