[libre-riscv-dev] [Bug 330] create POWER9 Logic Pipeline
[libre-riscv-dev.git] / 9b / f2bfafa293fb360290f4250cd3b2d9ee63d457
1 Return-path: <libre-riscv-dev-bounces@lists.libre-riscv.org>
2 Envelope-to: publicinbox@libre-riscv.org
3 Delivery-date: Fri, 01 May 2020 12:24:59 +0100
4 Received: from localhost ([::1] helo=libre-riscv.org)
5 by libre-soc.org with esmtp (Exim 4.89)
6 (envelope-from <libre-riscv-dev-bounces@lists.libre-riscv.org>)
7 id 1jUTms-0003pb-HP; Fri, 01 May 2020 12:24:58 +0100
8 Received: from lkcl.net ([217.147.94.29])
9 by libre-soc.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
10 (Exim 4.89) (envelope-from <lkcl@lkcl.net>) id 1jUTmr-0003pV-B3
11 for libre-riscv-dev@lists.libre-riscv.org; Fri, 01 May 2020 12:24:57 +0100
12 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lkcl.net;
13 s=201607131;
14 h=Content-Type:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version;
15 bh=AAeNLbzxN4sYlopgZKRPDvjFYKgU4fqmIobb+D5lWS4=;
16 b=Jx3XC488aOuTIHKdLqpxbfJ8bhEW4RFWkC1dllHs5tr7RgJouG/sOimxoNuxIna/yOR7Ubdko76c7kseK9WR58YYd4czRCPfklOuv8+pxBXGbEYgZtBSM4C47Mia+8CtMV28I/I7TfshfLCRbN1mO72WaLpkXi/eKnpcyuLFxwI=;
17 Received: from mail-lf1-f53.google.com ([209.85.167.53])
18 by lkcl.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
19 (Exim 4.84_2) (envelope-from <lkcl@lkcl.net>) id 1jUTmr-0000Sv-0Z
20 for libre-riscv-dev@lists.libre-riscv.org; Fri, 01 May 2020 11:24:57 +0000
21 Received: by mail-lf1-f53.google.com with SMTP id f8so3637619lfe.12
22 for <libre-riscv-dev@lists.libre-riscv.org>;
23 Fri, 01 May 2020 04:24:41 -0700 (PDT)
24 X-Gm-Message-State: AGi0PuaQFF1+CsT8QpGRIhOPata0jZ1Yj3N2/wKpRlfQFos+zedfn2Ka
25 l11OAPJCOB2G8dCxMn1ekEWOLO2b+hVXoFForh0=
26 X-Google-Smtp-Source: APiQypLWZsNWAj/v8kUQTb2Hy4mFF00EsKYKALioR7TU4L6xo1vNGqn2dLO7Uphb+UQpHBdt3TVc80VuB02Q16dNbFc=
27 X-Received: by 2002:ac2:5e26:: with SMTP id o6mr2222262lfg.49.1588332275646;
28 Fri, 01 May 2020 04:24:35 -0700 (PDT)
29 MIME-Version: 1.0
30 References: <CAC2bXD7uY+dxiA1D5vSoNDVg=xtxgdHQk8DrDbB9nx5ZHbDHrg@mail.gmail.com>
31 In-Reply-To: <CAC2bXD7uY+dxiA1D5vSoNDVg=xtxgdHQk8DrDbB9nx5ZHbDHrg@mail.gmail.com>
32 From: Luke Kenneth Casson Leighton <lkcl@lkcl.net>
33 Date: Fri, 1 May 2020 12:24:24 +0100
34 X-Gmail-Original-Message-ID: <CAPweEDxCOYfpj6u0w8Nr+r6CWvz24ukQNUU5U1cXrPAVtWK46A@mail.gmail.com>
35 Message-ID: <CAPweEDxCOYfpj6u0w8Nr+r6CWvz24ukQNUU5U1cXrPAVtWK46A@mail.gmail.com>
36 To: Libre-RISCV General Development <libre-riscv-dev@lists.libre-riscv.org>
37 Subject: Re: [libre-riscv-dev] load/store execution queue idea
38 X-BeenThere: libre-riscv-dev@lists.libre-riscv.org
39 X-Mailman-Version: 2.1.23
40 Precedence: list
41 List-Id: Libre-RISCV General Development
42 <libre-riscv-dev.lists.libre-riscv.org>
43 List-Unsubscribe: <http://lists.libre-riscv.org/mailman/options/libre-riscv-dev>,
44 <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=unsubscribe>
45 List-Archive: <http://lists.libre-riscv.org/pipermail/libre-riscv-dev/>
46 List-Post: <mailto:libre-riscv-dev@lists.libre-riscv.org>
47 List-Help: <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=help>
48 List-Subscribe: <http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev>,
49 <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=subscribe>
50 Reply-To: Libre-RISCV General Development
51 <libre-riscv-dev@lists.libre-riscv.org>
52 Content-Type: text/plain; charset="utf-8"
53 Content-Transfer-Encoding: base64
54 Errors-To: libre-riscv-dev-bounces@lists.libre-riscv.org
55 Sender: "libre-riscv-dev" <libre-riscv-dev-bounces@lists.libre-riscv.org>
56
57 T24gRnJpLCBNYXkgMSwgMjAyMCBhdCAzOjU0IEFNIEphY29iIExpZnNoYXkgPHByb2dyYW1tZXJq
58 YWtlQGdtYWlsLmNvbT4gd3JvdGU6Cgo+IEkgZmlsbGVkIG91dCBzb21lIG5vdGVzIG9uIG15IGxv
59 YWQvc3RvcmUgZXhlY3V0aW9uIHF1ZXVlIGlkZWEgaGVyZToKPiBodHRwczovL2xpYnJlLXNvYy5v
60 cmcvM2RfZ3B1L2FyY2hpdGVjdHVyZS9hbHRlcm5hdGl2ZS1kZXNpZ24taWRlYS8KCmV4Y2VsbGVu
61 dC4KCj4gVGhlIGRlc2lnbiBzaG91bGQgYmUgc3VpdGFibGUgZm9yIHRoZSBmaW5hbCAyOG5tIFNv
62 QyBhbmQgc2hvdWxkIGJlCj4gYWJsZSB0byBleGVjdXRlIDQgbG9hZHMgb3IgNCBzdG9yZXMgb3Ig
63 NCBBTU9zIG9yIDQgZmVuY2VzIHBlciBjeWNsZSwKPiBjb21wbGV0ZWx5IGFkanVzdGFibGUgdG8g
64 c29tZSBvdGhlciBudW1iZXIgaWYgd2UgZGVzaXJlLiBUaGlzIHRvdGFsbHkKPiByZXBsYWNlcyB0
65 aGUgbWVtb3J5IGRlcGVuZGVuY3kgbWF0cml4LgoKaG1tLiAgIHRoZSBNRE0gaXMgc3BlY2lmaWNh
66 bGx5IGRlc2lnbmVkIHRvIGlkZW50aWZ5IHNlcGFyYXRlIGFuZApkaXN0aW5jdCBMRC1iYXRjaGVz
67 IGZyb20gU1QtYmF0Y2hlcyBmcm9tIEF0b21pYy1iYXRjaGVzLCBpbiBhbgpleHRyZW1lbHkgZ2F0
68 ZS1lZmZpY2llbnQgZmFzaGlvbi4gIHdlIGRvbid0IG5lZWQgVFNPLCB3ZSBqdXN0IG5lZWQgdG8K
69 cHJlc2VydmUgdGhlIG9yZGVyIG9mIGJhdGNoZXMgKGFuZCBhbHNvIGlkZW50aWZ5IG92ZXJsYXBz
70 KS4KCgo+IE9uZSBkb3duc2lkZSBpcyBpdCBkb2Vzbid0Cj4gc3VwcG9ydCBmb3J3YXJkaW5nIGZy
71 b20gc3RvcmVzIHRvIGxhdGVyIGxvYWRzIHdpdGhvdXQgZ29pbmcgdGhyb3VnaAo+IHRoZSBMMSBj
72 YWNoZS4KCnRoYXQncyBvay4KCm9rLCBhIGNyaXRpY2FsIGFzcGVjdCB0byB1bmRlcnN0YW5kIGFi
73 b3V0IENvbXB1dGF0aW9uYWwgVW5pdHM6IHRoZXkgZG8KKm5vdCogcHJvY2VlZCB1bnRpbCB0aGUg
74 InB1cnBvc2UiIHRoYXQgdGhleSBtYW5hZ2UgaXMgZW50aXJlbHkgZmluaXNoZWQuCnRoZXkgdGhl
75 biAqbm90aWZ5KiB0aGUgRGVwZW5kZW5jeSBNYXRyaWNlcyB0aGF0IHRoZSAicmVzdWx0IiBpcyBk
76 b25lCihhdmFpbGFibGUpLCBhbmQgKnRoZW4qIHRoZXkgZHJvcCB0aGVpciAiYnVzeSIgZmxhZywg
77 cmVhZHkgZm9yIHJlLXVzZSBmb3IKYW5vdGhlciBvcGVyYXRpb24uCgp0aGlzIGlzIHRoZSB0b3Rh
78 bCBvcHBvc2l0ZSBvZiBhIHBpcGVsaW5lIG9yIHF1ZXVlLCB3aGVyZSB5b3UgY2h1Y2sgZGF0YQph
79 dCBpdCwgYWJkaWNhdGUgcmVzcG9uc2liaWxpdHkgZm9yIGl0cyBtYW5hZ2VtZW50LCBhbmQgYXQg
80 c29tZSBhcmJpdHJhcnkKcG9pbnQgaW4gdGhlIGZ1dHVyZSwgdGhlIHJlc3VsdCBjb21lcyBvdXQs
81 IGJ1dCBieSB0aGF0IHRpbWUgZXZlcnl0aGluZwpoYXMgbW92ZWQgb24uCgphbiBvdXQtb2Ytb3Jk
82 ZXIgc2NoZWR1bGluZyBzeXN0ZW0gKmNhbm5vdCogLSBpbiBhbnkgd2F5IC0gcGVybWl0IHRoYXQK
83 dG8gaGFwcGVuLiAgdGhlIHJlc3VsdHMgd291bGQgYmUgY2F0YXN0cm9waGljLgoKdGhlcmVmb3Jl
84 IGluIHRoZSBBTFUgQ29tcHV0YXRpb25hbCBVbml0cyB3aGljaCBtYW5hZ2UgYSBwaXBlbGluZQoo
85 b3IgcGlwZWxpbmVzKSwgd2UgKm11c3QqIGhhdmUgZXF1YWwgb3IgZ3JlYXRlZCBDb21wVW5pdHMg
86 dGhhbgp0aGVyZSBpcyBwaXBlbGluZSBkZXB0aC4KCiogZ3JlYXRlciB0aGFuIHRoYXQgaXMgb2s6
87 IGluc3RydWN0aW9ucyB3aWxsIGJlIGFibGUgdG8gcnVuIGFoZWFkLgogIHRoZSBERVNJUkUgdG8g
88 cnVuIGluc3RydWN0aW9ucyAoYW5kIHRoZSBvcmRlciBhcyBhIERBRykgaXMKICByZWNvcmRlZCwg
89 aG93ZXZlciB0aGVpciBBQ1RVQUwgZXhlY3V0aW9uIG11c3Qgd2FpdCB1bnRpbAogIHRoZXJlIGlz
90 IGEgZnJlZSBwaXBlbGluZSBzbG90LgoqIGxlc3MgdGhhbiB0aGF0IGlzIE5PVCByZWFsbHkgb2sg
91 KGEgd2FzdGUgb2Ygc2lsaWNvbikgYmVjYXVzZSB0aGVyZQogIGlzIG5vdCBlbm91Z2ggdG8gdHJh
92 Y2sgdGhlIHByb2dyZXNzIG9mIGVhY2ggYW5kIGV2ZXJ5IG9wZXJhdGlvbgogIGdvaW5nIHRocm91
93 Z2ggZWFjaCBhbmQgZXZlcnkgcGlwZWxpbmUgc3RhZ2UuCgp3aGVuIGl0IGNvbWVzIHRvIG1hbmFn
94 aW5nIE1lbW9yeSwgdGhlIGltcGxpY2F0aW9ucyBhcmUgYXMgZm9sbG93czoKCiogdG8gaGF2ZSBt
95 b3JlIExEL1NUIENvbXB1dGF0aW9uIFVuaXRzIHRoYW4gdGhlcmUgYXJlICJDZWxscyIKICBpcyBs
96 aWtld2lzZSBvay4gIGluc3RydWN0aW9ucyB3aWxsIGJlIGFibGUgdG8gcnVuIGFoZWFkLgoqIHRv
97 IGhhdmUgTEVTUyBMRC9TVCBDVXMgdGhhbiB0aGVyZSBhcmUgIkNlbGxzIiBpcyAqTk9UKiBvaywK
98 ICBiZWNhdXNlIHRoZSBDb21wdXRhdGlvblVuaXRzIHdpbGwgTkVWRVJSUlJSIGlzc3VlIGEKICBM
99 RCBvciBTVCB1bnRpbCBpdCBrbm93cyAtIGFic29sdXRlbHkgYW5kIHdpdGhvdXQgYW55IHNoYWRv
100 dyBvZgogIGRvdWJ0IC0gdGhhdCB0aGUgb3BlcmF0aW9uIGl0IG1vbml0b3JzIGhhcyAxMDAlIGFi
101 c29sdXRlIGd1YXJhbnRlZWQKICBjb21wbGV0ZWQuCgpzbyB0aGF0J3MgcmVhbGx5IGNydWNpYWwg
102 aW5mb3JtYXRpb24gdGhhdCBoYXMgaW1wbGljYXRpb25zIGZvciB0aGUKZGVzaWduIG9mIHRoZSBM
103 RC9TVCBCdWZmZXIsIGltcG9ydGFudCBhcyBjb250ZXh0LCBiZWxvdy4KCgpub3RlczoKCjEpIHRo
104 ZSBjZWxsIGFycmFuZ2VtZW50IHN0aWxsIG5lZWRzIGFuIDgtaW5wdXQgKDggTEQvU1QgQ29tcHV0
105 YXRpb24gVW5pdHMpCnRvIDQtb3V0cHV0IChoZWFkIG9mIGVhY2ggImNvbHVtbiIgb2YgZWFjaCBx
106 dWV1ZSkgbXVsdGlwbGV4ZXIuCnVubGVzcyBpJ3ZlIG1pc3VuZGVyc3Rvb2QsIHRoYXQgYWxvbmUg
107 aXMgYSBraWxsZXIuCgpkcm9wcGluZyBlYWNoIG9mIHRoZSA4LWlucHV0IHF1ZXVlIGVudHJpZXMg
108 aW50byB0aGUgZmlyc3QgOCBjZWxscyAqdGhlbioKcGVyZm9ybWluZyBzaGlmdGluZywgKnRoYXQq
109 IGlzIG9rYXkuICBidXQgYWxsb3dpbmcgZWFjaCBhbmQgZXZlcnkgc2luZ2xlCm9uZSBvZiB0aG9z
110 ZSA4IExEL1NUIENvbXBVbml0cyB0byB3cml0ZSB0byBjZWxscyAwLTQ/IHRoZSB3aXJpbmcgYWxv
111 bmUKaXMgaW5zYW5lLgoKYXNzdW1lIDEyOCBiaXRzIHBlciBvcGVyYXRpb24gKDQ4IGFkZHJlc3Ms
112 IDY0IGRhdGEsIHNvbWUgY29udHJvbCBsaW5lcwpsZXQncyByb3VuZCBpdCB1cCB0byAxMjggYml0
113 cyk6IHdpdGggMTI4LXdpZGUgZGF0YSBwYXRocyB0aW1lcyA4IExEL1NUCkNvbXAgVW5pdHMgdGlt
114 ZXMgKjQqIHRvIGJlIGFibGUgdG8gYXJiaXRyYXJpbHkgd3JpdGUgdG8gYW55IG9uZSBvZgo0ICJ0
115 b3Agcm93IiBjZWxscz8gIHRoYXQncyBhIE1BU1NJVkUgNDA5NiB3aXJlcyEKCndlIGNhbid0IHBv
116 c3NpYmx5IGhhdmUgdGhhdCBtYW55IHdpcmVzLgoKaWYgeW91IG1lYW50IHRoYXQgdGhlIHF1ZXVl
117 IHdpZHRoIHNob3VsZCBtYXRjaCB0aGUgbnVtYmVyIG9mIExEL1NUClVuaXRzIC0gOC13aWRlIGJl
118 Y2F1c2Ugd2UgbmVlZCA4IExEL1NUIENvbXBVbml0cyAod2UgbWlnaHQgYmUKYWJsZSB0byBnZXQg
119 YXdheSB3aXRoIG9ubHkgNikgLSB0aGVuIHRoZSByZW1haW5pbmcgZW50cmllcyB3aWxsIGFjdHVh
120 bGx5CnJlbWFpbiBwZXJtYW5lbnRseSBlbXB0eSwgYmVjYXVzZSB0aGVyZSAqaGFzKiB0byBiZSBh
121 IGRpcmVjdApvbmUtdG8tb25lIG1hdGNoIGJldHdlZW4gTEQvU1QgQ29tcFVuaXRzIGFuZCB0aGUg
122 TEQvU1QgdGhhdAppdCAibWFuYWdlcyIuCgpzbyB0aGVyZSB3b3VsZCBvbmx5IGJlIDggTEQvU1Rz
123 LCBhbmQgYSByb3cgZGVwdGggb2YgMS4KCmlmIGhvd2V2ZXIgd2UgZG8gMi1wb3J0cyBwZXIgQ29t
124 cFVuaXQgKHRvIGNvdmVyIG1pc2FsaWduZWQpLCB0aGVuIHRoZXJlCndvdWxkIGJlIGFuIDgtd2lk
125 ZSBieSAyLXJvdyBhcnJhbmdlbWVudCBvZiBDZWxscy4KCndpdGggb25seSBhIENlbGwgRGVwdGgg
126 b2YgMSBvciAyLCB0aGUgcHVycG9zZSAqb2YqIHRoZSBDZWxscyBpcyBkZWZlYXRlZAplbnRpcmVs
127 eS4gIHRoZXJlJ3Mgbm8gbmVlZCBmb3Igc2hpZnRpbmc6IHRoZSBlbnRyaWVzIG1pZ2h0IGFzIHdl
128 bGwgc3RheQp3aGVyZSB0aGV5IGFyZS4KCnRoaXMgcGFydGljdWxhcmx5IGJlY2F1c2UgZXZlbiBm
129 b3IgdGhlICJtaXNhbGlnbm1lbnQiIGNhc2UsIHRoZSBMRC9TVApDb21wVW5pdCBpcyAqTkVWRVJS
130 UiogZ29pbmcgdG8gcGxhY2UgYW55dGhpbmcgb3RoZXIgdGhhbiB0aGUKMiByZXF1ZXN0cyBpdCBp
131 cyByZXNwb25zaWJsZSBmb3IgaW50byB0aGUgcXVldWU6CgoqIGZpcnN0IG9uZSBjb3ZlcmluZyB0
132 aGUgbG93ZXIgcGFydCBvZiB0aGUgbWlzYWxpZ25lZCByZXF1ZXN0Ciogc2Vjb25kIG9uZSBjb3Zl
133 cmluZyB0aGUgdXBwZXIgcGFydC4KCm5vIG1hdHRlciBob3cgbWFueSBjb2x1bW5zIChhc3N1bWlu
134 ZyB0aGF0IHRoZXJlIGlzIG9uZQpwZXIgTERTVENVKSBhbGwgb3RoZXIgcm93cyAqd2lsbCogcmVt
135 YWluIGVtcHR5LgoKYW5kIGlmIHRoZSBjb2x1bW5zIGFyZSBoYWx2ZWQgKDQgd2lkZSB0byBjb3Zl
136 ciA4IExEL1NUIENVcykKbm93IHdlIGhhdmUgYSBtdWNoIG1vcmUgc2VyaW91cyBwcm9ibGVtOiB0
137 aGUgdG90YWwgZGF0YSBiYW5kd2lkdGgKaXMgc2hydW5rIHRvIG9ubHkgNHggNjQtYml0IG9wZXJh
138 dGlvbnMgKmFuZCogdGhlcmUgaXMgYSBtdWx0aXBsZXhpbmcKcHJvYmxlbSBhY3R1YWxseSBnZXR0
139 aW5nIGRhdGEgaW50byB0aGUgZmlyc3QgMiByb3dzIChhY3R1YWxseSwgbm93LAo0IHJvd3MgaWYg
140 dGhlcmUgYXJlIDIgcG9ydHMgcGVyIExEL1NUIENVLCBvbmUgZm9yIGxvd2VyLW1pc2FsaWduZWQK
141 b25lIGZvciB1cHBlci1taXNhbGlnbmVkKS4KCmRvIHdlIHN0YWxsIHRoZSByZXF1ZXN0cyBpZiB0
142 aGV5IGRvIG5vdCBoYXZlIGFjY2Vzcz8gIHRoYXQgbWVhbnMKdGhhdCBvcHBvcnR1bml0aWVzIHRv
143 IGtlZXAgdGhlIEwxIGNhY2hlLWxpbmUgcmVxdWVzdHMgMTAwJSBmdWxsCmFyZSBtaXNzZWQsIHdo
144 ZXJlIHRoZSBjdXJyZW50IGRlc2lnbiBjYW4gKmV2ZW4gY2F0Y2ggbWlzYWxpZ25lZAplbGVtZW50
145 LXN0cmlkZWQgZGF0YSByZXF1ZXN0cyogYW5kIGNhbiAxMDAlIG1lcmdlIHRoZW0gaW50bwphIGZ1
146 bGwgY2FjaGUtbGluZSByZXF1ZXN0LgoKCgoiYW5kIHRoZSBMMSBjYWNoZSBsaW5lIGFkZHJlc3Mg
147 aXQgd291bGQgdXNlIGlzIGJyb2FkY2FzdCB0byBhbGwgY2VsbHMuIgoKdGhpcyBpcyBhIGZ1bGwg
148 WE9SLWNvbXBhcmlzb24gb2YgdGhlIGVudGlyZSBhZGRyZXNzLCBhZ2FpbnN0IGV2ZXJ5IHNpbmds
149 ZSBjZWxsLgoKaWYgdGhlIGFkZHJlc3MgaXMgNDggYml0cyBhbmQgdGhlcmUgYXJlIDEyIGNlbGxz
150 LCB1c2luZyBiaXRzIDMgYW5kIGFib3ZlIG9mCnRoZSBhZGRyZXNzIHdpbGwgcmVxdWlyZSA1Mjgg
151 WE9SIGdhdGVzLgoKaWYgd2Ugd2FudCAqdHdvKiBMMSBjYWNoZSBsaW5lIGFkZHJlc3NlcyBzaW11
152 bHRhbmVvdXNseSAocmF0aGVyIHRoYW4KZ29pbmcgdG8gMjU2LWJpdC13aWRlIEwxIGNhY2hlIGxp
153 bmVzKSwgdGhhdCdzICp0d28qIGJyb2FkY2FzdHMsIGVhY2ggNTI4ClhPUiBnYXRlcy4KCgoyKSBo
154 b3cgYXJlIG92ZXJsYXBwaW5nIGFkZHJlc3NlcyBkZXRlY3RlZD8gIG9yLCBtb3JlIHRvIHRoZSBw
155 b2ludCwKaG93IGFyZSBub24tb3ZlcmxhcHBpbmcgYWRkcmVzc2VzIGRldGVjdGVkIHN1Y2ggdGhh
156 dCB0aGV5IGNhbiBiZQpwYXNzZWQgdGhyb3VnaCBhcyBhIGdyb3VwLCBhbmQgZ2l2ZW4gdGhlIG9w
157 cG9ydHVuaXR5IHRvIGJlIGRvbmUgaW4KcGFyYWxsZWw/CgozKSBob3cgd291bGQgbWlzYWxpZ25l
158 ZCBhZGRyZXNzZXMgaGFuZGxlZD8KCjQpIGknbSBub3Qgc2VlaW5nIGhvdyByZXF1ZXN0cyBjb3Vs
159 ZCBiZSBtZXJnZWQgaW50byAiMTAwJSBmdWxsIGNhY2hlCmxpbmUiIHJlcXVlc3RzLCB3aGljaCB0
160 aGUgY3VycmVudCBkZXNpZ24gaXMgY2FwYWJsZSBvZiBkb2luZywgYnkgdXNpbmcKc2ltcGxlIGJp
161 dC13aXNlIEFORGluZyBhbmQgT1JpbmcuICB0aGUgQWJzdHJhY3QgUHJlZml4IFN1bSBjbGFzcwpk
162 b2Vzbid0IGxvb2sgb2J2aW91cyBhcyB0byBob3cgdGhhdCBoYXBwZW5zLCBhbmQgaXMgbGlrZWx5
163 IHRvIGJlCm11Y2ggbW9yZSBjb3N0bHkgdGhhbiBhIHNpbXBsZSBBTkQgYW5kIE9SIG5ldHdvcmsu
164 Cgo1KSBob3cgYXJlIGNsYXNoZXMgb2YgYWRkcmVzc2VzICppbnRlci1yb3cqIGRldGVjdGVkPyAg
165 aWYgQ2VsbCAwIGhhcyBhIFNUCm9mIDgtYml0cyB0byBhZGRyZXNzIDB4MDAwMSBhbmQgQ2VsbCAx
166 IGhhcyBhIFNUIG9mIDggYml0cyB0byBhZGRyZXNzCjB4MDAwMiAoYSA3IGJ5dGUgb3ZlcmxhcCks
167 IGhvdyBpcyB0aGlzIGRldGVjdGVkICppbiB0aGUgcm93Kj8KCmluIHRoZSBjb2x1bW4gaXQgaXMg
168 ZmluZSwgYmVjYXVzZSBvbmx5IG9uZSByb3cgaXMgZXZlciBkb25lIGF0IG9uY2UKKHdoaWNoIGhh
169 cyBpbXBsaWNhdGlvbnMgZm9yIG1pcy1hbGlnbmVkIGRhdGEgcmVxdWVzdHMsIHRoZXJlIHdpbGwg
170 bmV2ZXIKYmUgYSAxMDAlIG1lcmdlIG9wcG9ydHVuaXR5KQoKCmFsbCBvZiB0aGVzZSB0aGluZ3Mg
171 dG9vayBzZXZlcmFsICptb250aHMqIHRvIGZhY3RvciBpbiB0byB0aGUgZGVzaWduLCBpbgpzZXZl
172 cmFsIHN0YWdlcy4gIGl0J3MgbWFzc2l2ZWx5IGNvbXBsZXggYW5kIGludGVyLWRlcGVuZGVudC4K
173 CmwuCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaWJy
174 ZS1yaXNjdi1kZXYgbWFpbGluZyBsaXN0CmxpYnJlLXJpc2N2LWRldkBsaXN0cy5saWJyZS1yaXNj
175 di5vcmcKaHR0cDovL2xpc3RzLmxpYnJlLXJpc2N2Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpYnJl
176 LXJpc2N2LWRldgo=
177