[libre-riscv-dev] Some recent documenting of work performed for tape-out
[libre-riscv-dev.git] / b5 / eeb97e76ee3cc1b25e0d6ae4de4db0c4486422
1 Return-path: <libre-riscv-dev-bounces@lists.libre-riscv.org>
2 Envelope-to: publicinbox@libre-riscv.org
3 Delivery-date: Tue, 28 Jul 2020 21:23:52 +0100
4 Received: from localhost ([::1] helo=libre-riscv.org)
5 by libre-soc.org with esmtp (Exim 4.92)
6 (envelope-from <libre-riscv-dev-bounces@lists.libre-riscv.org>)
7 id 1k0Vzz-0001Dm-AY; Tue, 28 Jul 2020 21:14:55 +0100
8 Received: from kernel.crashing.org ([76.164.61.194])
9 by libre-soc.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
10 (Exim 4.92) (envelope-from <benh@kernel.crashing.org>)
11 id 1jyPTb-0001D8-3p
12 for libre-riscv-dev@lists.libre-riscv.org; Thu, 23 Jul 2020 01:52:47 +0100
13 Received: from localhost (gate.crashing.org [63.228.1.57])
14 (authenticated bits=0)
15 by kernel.crashing.org (8.14.7/8.14.7) with ESMTP id 06N0qahc029210
16 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO);
17 Wed, 22 Jul 2020 19:52:42 -0500
18 Message-ID: <bc0527a82b8a777486388ab6084ce364db4c278c.camel@kernel.crashing.org>
19 From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
20 To: Luke Kenneth Casson Leighton <lkcl@lkcl.net>, Libre-RISCV General
21 Development <libre-riscv-dev@lists.libre-riscv.org>
22 Date: Thu, 23 Jul 2020 10:52:35 +1000
23 In-Reply-To: <CAPweEDxxJqcy4kAcL0+wDYQh9A0KtW3dSi9kMdQ-_YotuRSsQw@mail.gmail.com>
24 References: <CAPweEDzJpX8mDE1QJO6=rPEQfz0jCt+Yi9sS48cE4bXcu8AwcQ@mail.gmail.com>
25 <20200722224713.GA213782@thinks.paulus.ozlabs.org>
26 <CAPweEDxxJqcy4kAcL0+wDYQh9A0KtW3dSi9kMdQ-_YotuRSsQw@mail.gmail.com>
27 X-Mailer: Evolution 3.28.5-0ubuntu0.18.04.2
28 Mime-Version: 1.0
29 X-Mailman-Approved-At: Tue, 28 Jul 2020 21:14:53 +0100
30 Subject: Re: [libre-riscv-dev] [OpenPOWER-HDL-Cores] system call (sc) LEV
31 "reserved field"
32 X-BeenThere: libre-riscv-dev@lists.libre-riscv.org
33 X-Mailman-Version: 2.1.23
34 Precedence: list
35 List-Id: Libre-RISCV General Development
36 <libre-riscv-dev.lists.libre-riscv.org>
37 List-Unsubscribe: <http://lists.libre-riscv.org/mailman/options/libre-riscv-dev>,
38 <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=unsubscribe>
39 List-Archive: <http://lists.libre-riscv.org/pipermail/libre-riscv-dev/>
40 List-Post: <mailto:libre-riscv-dev@lists.libre-riscv.org>
41 List-Help: <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=help>
42 List-Subscribe: <http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev>,
43 <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=subscribe>
44 Reply-To: Libre-RISCV General Development
45 <libre-riscv-dev@lists.libre-riscv.org>
46 Cc: "openpower-hdl-cores@mailinglist.openpowerfoundation.org"
47 <openpower-hdl-cores@mailinglist.openpowerfoundation.org>
48 Content-Type: text/plain; charset="utf-8"
49 Content-Transfer-Encoding: base64
50 Errors-To: libre-riscv-dev-bounces@lists.libre-riscv.org
51 Sender: "libre-riscv-dev" <libre-riscv-dev-bounces@lists.libre-riscv.org>
52
53 T24gVGh1LCAyMDIwLTA3LTIzIGF0IDAwOjQxICswMTAwLCBMdWtlIEtlbm5ldGggQ2Fzc29uIExl
54 aWdodG9uIHdyb3RlOgo+IAo+IGJlY2F1c2UgaSBkaWQgbm90IGV4cGVjdCB0aGF0IGJlaGF2aW91
55 ciwgYmVjYXVzZSBkb2luZyBzbyAoaWdub3JpbmcKPiB0aGVtKSBtYWtlcyBpdCBpbXBvc3NpYmxl
56 IHRvIHRyYXAgYW5kIGVtdWxhdGUuICAoaXQgYmVjb21lcyBuZWNlc3NhcnkKPiB0byB1c2UgSklU
57 IGFuYWx5c2lzKQo+IAo+IHNvLCB3aGVuIHNvbWUgYml0IGlzIGFkZGVkIGluIHRoZSBmdXR1cmUs
58 IGFuIG9sZGVyIHByb2Nlc3NvciAoYW5kIHRoZQo+IGRldmljZSBpdCBpcyBpbikgYmFzaWNhbGx5
59 IGhhcyB0byBiZSB0aHJvd24gaW50byBsYW5kZmlsbC4KCkRlcGVuZHMsIGl0IGdvZXMgYm90aCB3
60 YXlzLiBGb3IgZXhhbXBsZSwgdGhpcyBpcyB3aGF0IGFsbG93ZWQgdGhlCmFkZGl0aW9uIG9mIGx3
61 c3luYyB3aXRob3V0IHRocm93aW5nIG9sZGVyIHByb2Nlc3NvcnMgaW50byB0aGUgbGFuZGZpbGwK
62 YmVjYXVzZSBpdCB3b3VsZCBhdXRvbWF0aWNhbGx5ICJlc2NhbGF0ZSIgdG8gYSBmdWxsIHN5bmMg
63 b24gcHJvY2Vzc29ycwp0aGF0IGRpZG4ndCBpbXBsZW1lbnQgaXQgKG9yIHNob3VsZCBoYXZlLi4u
64 IEZTTCBkaWQgc2NyZXcgdGhhdCB1cCBvbgpzb21lIGNvcmVzKS4KIAo+IGlmIGhvd2V2ZXIgcmVz
65 ZXJ2ZWQgYml0cyBiZWluZyBzZXQgY2F1c2UgYW4gZXhjZXB0aW9uLCB0aGUgIm9sZCIKPiBwcm9j
66 ZXNzb3Igc3RhbmRzIGEgY2hhbmNlIG9mIGVtdWxhdGluZyB0aGUgbmV3IGJlaGF2aW91ciAoaW4K
67 PiBzb2Z0d2FyZSwgZXZlbiBpZiB0aGF0J3Mgc2xvdyksIGdpdmluZyBpdCBhIGNoYW5jZSBvZiBr
68 ZWVwaW5nIG91dCBvZgo+IGxhbmRmaWxsIGZvciBzbGlnaHRseSBsb25nZXIuCgpXaGljaCBpcyB3
69 aHkgcG93ZXJwYyB0ZW5kcyBub3QgdG8gImFkZCBiaXRzIiB0byBpbnN0cnVjdGlvbnMgdW5sZXNz
70 Cmlnbm9yaW5nIHRoZW0gaXMgYSBzYWZlIGZhbGxiYWNrLgoKPiBob3dldmVyIGl0IGlzIG5vdCBh
71 cHByb3ByaWF0ZSBmb3IgYWxsIHN5c3RlbXMgdG8gcmFpc2UgZXhjZXB0aW9ucyBvbgo+IHJlc2Vy
72 dmVkIGJpdHM6IHRoZSBjb3N0IG9mIGhhdmluZyB0aGUgZGV0ZWN0aW9uIGhhcmR3YXJlIChhIGZ1
73 bGwKPiBQT1dFUjkgZGVjb2RlciBhbmQgYWxzbyBpbGxlZ2FsL3Vuc3VwcG9ydGVkL3Jlc2VydmVk
74 IFNQUiBkZXRlY3Rpb24pCj4gY2FuIGJlIHZlcnkgaGlnaCBlc3BlY2lhbGx5IGZvciByZXNvdXJj
75 ZSBhbmQgcG93ZXIgY29uc3RyYWluZWQKPiBzaWxpY29uIG9yIEZQR0FzLgo+IAo+IChleGFtcGxl
76 OiBpIGtub3cgc29tZW9uZSAtIHllYSwgeW91IFNhbSAtIHdobyBpbXBsZW1lbnRlZCBSVjY0IHRv
77 Cj4gY29tcGx5IHdpdGggdGhlIFVOSVggUklTQ1Ygc3BlYyByYXRoZXIgdGhhbiB0aGUgRW1iZWRk
78 ZWQgUklTQ1Ygc3BlYzoKPiB0aGUgIkNTUiBkZXRlY3Rpb24iIGp1c3QgdG8gc3VwcG9ydCBhbGwg
79 dGhlIHplcm9zIGFuZCBpbGxlZ2FsIENTUnMKPiB0b29rIGEgd2hvcHBpbmcgMTUlIG9mIGFuIElD
80 RTQwIEZQR0EhKQo+IAo+IGluIFJJU0MtViB0aGV5IGdldCB0aGlzIHJpZ2h0LCBieSBoYXZpbmcg
81 dHdvIHNlcGFyYXRlIFBsYXRmb3JtczoKPiAKPiAqIEVtYmVkZGVkIHdoaWNoIGlzIHBlcm1pdHRl
82 ZCB0byBpZ25vcmUgcmVzZXJ2ZWQgYml0cyBlbnRpcmVseQo+IAo+ICogVU5JWCwgd2hpY2ggZGVm
83 aW5pdGVseSBpcyBub3QuCj4gCj4gZm9yIEVtYmVkZGVkLCB0aGUgdmVuZG9yIGN1c3RvbWlzZXMg
84 dGhlIGZpcm13YXJlIGVudGlyZWx5LCBhbmQgYmluYXJ5Cj4gaW50ZXJvcGVyYWJpbGl0eSBhcyB3
85 ZWxsIGFzIGxlZ2FjeSBzb2Z0d2FyZSBzdXBwb3J0IGlzIGNvbXBsZXRlbHkKPiB1bmltcG9ydGFu
86 dC4KPiAKPiBmb3IgVU5JWGVuLCBpbnRlcm9wZXJhYmlsaXR5IGFuZCBsb25ndGVybSBzdGFiaWxp
87 dHkgd2Uga25vdyB2ZXJ5IHdlbGwKPiBpcyBjcml0aWNhbC4KPiAKPiBib3R0b20gbGluZSBpZiBp
88 dCBpcyBjb3JyZWN0IHRoYXQgb24gdGhlIFBvd2VySVNBIFVOSVggUGxhdGZvcm0KPiByZXNlcnZl
89 ZCBiaXRzIGNhbiBiZSBpZ25vcmVkIHRoYXQgaXMgY2F1c2UgZm9yIHNvbWUgY29uY2Vybiwgd2hl
90 cmUKPiBmb3IgRW1iZWRkZWQgaXQgd291bGQgYmUgdGhlIG90aGVyIHdheSByb3VuZDogY2F1c2Ug
91 Zm9yIGNvbmNlcm4gaWYKPiB0aGUgcmVzZXJ2ZWQgYml0cyBjb3VsZCAqbm90KiBiZSBpZ25vcmVk
92 LgoKRG8geW91IGhhdmUgbW9yZSBzcGVjaWZpYyBjb25jZXJucyBoZXJlID8gSUUuIEFjdHVhbCBl
93 eGFtcGxlcyB3aGVyZQp0aGlzIGhhcyBiZWVuIGNhdXNlIG9mIGJyZWFrYWdlIGluIHRoZSBwYXN0
94 ID8KCj4gPiA+IGhvd2V2ZXIgdGhpcyBpcyBzbyB1bmNsZWFyIChiZWNhdXNlIG9mIHRoZSByZWZl
95 cnJhbCBmcm9tIG9uZQo+ID4gc2VjdGlvbgo+ID4gPiB0byBhbm90aGVyKSB0aGF0IGkgYW0gc2Vl
96 a2luZyBjb25maXJtYXRpb24uICBzaG91bGQgd2UgcmFpc2UgYW4KPiA+ID4gImlsbGVnYWwgaW5z
97 dHJ1Y3Rpb24iIHdoZW4gIkxFViA+IDEiIG9uIHNjPwo+ID4gCj4gPiBTZWN0aW9uIDEuOC4yIChC
98 b29rIEkpIHNheXMgImFueSBhdHRlbXB0IHRvIGV4ZWN1dGUgYW4gaW52YWxpZCBmb3JtCj4gPiBv
99 Zgo+ID4gYW4gaW5zdHJ1Y3Rpb24gd2lsbCBlaXRoZXIgY2F1c2UgdGhlIHN5c3RlbSBpbGxlZ2Fs
100 IGluc3RydWN0aW9uCj4gPiBoYW5kbGVyIHRvIGJlIGludm9rZWQgb3IgeWllbGQgYm91bmRlZGx5
101 IHVuZGVmaW5lZCByZXN1bHRzIi4gCj4gPiBQdXR0aW5nCj4gPiBMRVY9MSBpbiBzYyB3b3VsZCBi
102 ZSBhbiBleGFtcGxlIG9mIGFuIGludmFsaWQgZm9ybSAob24gYW4KPiA+IGltcGxlbWVudGF0aW9u
103 IHdpdGhvdXQgaHlwZXJ2aXNvciBtb2RlKS4KPiAKPiBvayB0aGF0IGhlbHBzIGNsYXJpZnkgd2hh
104 dCB0aGF0IG1lYW5zLCB0aGFuayB5b3UuCj4gIAo+ID4gICBBIGJvdW5kZWRseSB1bmRlZmluZWQg
105 cmVzdWx0Cj4gPiBpcyBvbmUgd2hpY2ggY291bGQgYmUgb2J0YWluZWQgYnkgYSBzZXF1ZW5jZSBv
106 ZiB2YWxpZCBpbnN0cnVjdGlvbnMsCj4gPiBzbyBpbiB0aGUgY2FzZSBvZiBzYyAxLCBtYWtpbmcg
107 aXQgZG8gd2hhdCBzYyAwIGRvZXMgbWVldHMgdGhlCj4gPiBib3VuZGVkbHkgdW5kZWZpbmVkIHJl
108 c3VsdHMgcmVxdWlyZW1lbnQuCj4gCj4gb2sgc28gdGhhdC4uLiBpZiBpIGFtIHVuZGVyc3RhbmRp
109 bmcgY29ycmVjdGx5LCBtZWFucywgInlvdSBjYW4gaW4KPiBmYWN0IGRvIHNvbWV0aGluZyBkaWZm
110 ZXJlbnQgYW5kIE9TIHNvZnR3YXJlIGhhcyB0byBkZXRlY3QgaXQgYW5kIHNvcnQKPiBpdCBvdXQg
111 dG8geWllbGQgZXhwZWN0ZWQgYmVoYXZpb3VyIgo+ICAKPiB3aGljaCwgaWYgaSBhbSBiZWluZyBo
112 b25lc3QsIG1ha2VzIG1lIG5lcnZvdXMgOikKPiAKPiA+ID4gc2Vjb25kbHksIHdlIG5vdGUgdGhh
113 dCAiTEVWPTEiIGlzIGZvciBpbnZvY2F0aW9uIG9mIHRoZQo+ID4gaHlwZXJ2aXNvci4KPiA+ID4g
114 d2hhdCdzIG5vdCBjbGVhciB0byB1cyBpcyAtIGdpdmVuIHRoYXQgd2UgYXJlIG5vdCBpbXBsZW1l
115 bnRpbmcKPiA+ID4gaHlwZXJ2aXNvciAtIHNob3VsZCB0aGlzIGJlICphbHNvKiB0cmVhdGVkIGFz
116 IGFuIGlsbGVnYWwKPiA+IGluc3RydWN0aW9uPwo+ID4gPiBvciwgc2hvdWxkIHdlIGp1c3QgbGVh
117 dmUgaXQgdG8gZmFsbCB0aHJvdWdoIHRvIHRyYXAgQCBhZGRyCj4gPiAweDBjMDAsIGFuZAo+ID4g
118 PiBleHBlY3QgdGhlIHRyYXAgKnRoZXJlKiB0byBub3RpY2UgYW5kIGRlYWwgd2l0aCB0aGUgc2l0
119 dWF0aW9uPwo+ID4gCj4gPiBUaGF0IGlzIHdoYXQgSSB3b3VsZCBkby4KPiAKPiBvay4gIHdlIGNh
120 biBkbyB0aGF0Lgo+ICAKPiA+IFRoZXJlIGlzIG9uZSBvZiB0aGUgdmFyaWFudHMgb2YgS1ZNIG9u
121 IFBQQywgY2FsbGVkIEtWTS1QUiwgd2hpY2gKPiA+IHJ1bnMKPiA+IHRoZSBndWVzdCBlbnRpcmVs
122 eSBpbiB1c2VyIG1vZGUgYW5kIHRyYXBzIGFuZCBlbXVsYXRlcyBhbGwKPiA+IHByaXZpbGVnZWQK
123 PiA+IGluc3RydWN0aW9ucyAodGh1cyBpdCBkb2Vzbid0IG5lZWQgaHlwZXJ2aXNvciBtb2RlIGFu
124 ZCBjYW4gcnVuCj4gPiBpbnNpZGUKPiA+IGEgZ3Vlc3Qgb2YgYW5vdGhlciBoeXBlcnZpc29yKS4g
125 IElmIHlvdSBhcmUgcnVubmluZyBhIEtWTSBndWVzdAo+ID4gaW5zaWRlCj4gPiB0aGF0IGVudmly
126 b25tZW50IGFuZCB0aGUgZ3Vlc3QgZG9lcyBzYyAxLCBLVk0tUFIgZXhwZWN0cyB0aGF0IHRvCj4g
127 PiBlbmQKPiA+IHVwIGF0IHRoZSBrZXJuZWwncyAweGMwMCBoYW5kbGVyLiAgU28gdGhhdCBpcyBv
128 bmUgcmVhc29uIHRvIHRyZWF0Cj4gPiBzYyAxCj4gPiBhcyBzYyAwLgo+IAo+IGFoaC4gIGkgZGlk
129 IHdvbmRlciA6KQo+ICAKPiA+ID4gYWxzbzogaWYgd2Ugc2V0IHRoZSBIViBiaXQgaW4gTVNSICh3
130 aGVuIExFVj0xKSBzZWN0aW9uIDYuNS4xNAo+ID4gcDEwNzcKPiA+ID4gd2hpY2ggcmVmZXJzIHVz
131 IGJhY2sgdG8gZmlndXJlIDY1IG9uIHAxMDY0LCB3aWxsIHRoaXMgImJyZWFrIgo+ID4gdGhpbmdz
132 Pwo+ID4gCj4gPiBQcm9iYWJseSBub3QuICBMaW51eCBkb2VzIGNoZWNrIHdoZXRoZXIgSFY9MSBh
133 dCBib290IHRpbWUsIGJ1dCBJJ20KPiA+IHByZXR0eSBzdXJlIHRoYXQncyBvbmx5IG9uIGNlcnRh
134 aW4gcHJvY2Vzc29ycyB3aGljaCBpdCBrbm93cyB0byBiZQo+ID4gSFYtY2FwYWJsZSAoZWl0aGVy
135 IGJ5IGxvb2tpbmcgYXQgUFZSIG9yIHRoZSBkZXZpY2UgdHJlZSkuCj4gCj4gb2suICB0aGFuayB5
136 b3UuCj4gIAo+ID4gPiBhbHNvOiBpbiBtaWNyb3dhdHQsIGknbSBub3Qgc2VlaW5nIHRoZSByZW1h
137 aW5pbmcgYml0cyB3aGljaAo+ID4gYXBwZWFyIFt0bwo+ID4gPiBuZWVkIHRvXSBiZSBzZXQuCj4g
138 PiA+IAo+ID4gPiAKPiA+IGh0dHBzOi8vZ2l0aHViLmNvbS9hbnRvbmJsYW5jaGFyZC9taWNyb3dh
139 dHQvYmxvYi9tYXN0ZXIvZXhlY3V0ZTEudmhkbCNMNDc5Cj4gPiA+ICAgICAgICAgICAgIGN0cmxf
140 dG1wLm1zcihNU1JfU0YpIDw9ICcxJzsKPiA+ID4gICAgICAgICAgICAgY3RybF90bXAubXNyKE1T
141 Ul9FRSkgPD0gJzAnOwo+ID4gPiAgICAgICAgICAgICBjdHJsX3RtcC5tc3IoTVNSX1BSKSA8PSAn
142 MCc7Cj4gPiA+ICAgICAgICAgICAgIGN0cmxfdG1wLm1zcihNU1JfSVIpIDw9ICcwJzsKPiA+ID4g
143 ICAgICAgICAgICAgY3RybF90bXAubXNyKE1TUl9EUikgPD0gJzAnOwo+ID4gPiAgICAgICAgICAg
144 ICBjdHJsX3RtcC5tc3IoTVNSX1JJKSA8PSAnMCc7Cj4gPiA+ICAgICAgICAgICAgIGN0cmxfdG1w
145 Lm1zcihNU1JfTEUpIDw9ICcxJzsKPiA+ID4gCj4gPiA+IHRoZXNlIGFwcGVhciB0byBiZSBjb3Jy
146 ZWN0IGFzIGRlZmluZWQgYWNjb3JkaW5nIHRvIGZpZ3VyZSA2NQo+ID4gKHAxMDYzKQo+ID4gPiAK
147 PiA+ID4gaG93ZXZlciB0aGUgcmVtYWluaW5nIGFjdGlvbnMgZG8gbm90IHNlZW0gdG8gYmUgaW1w
148 bGVtZW50ZWQKPiA+IChwMTA2NCk6Cj4gPiA+IAo+ID4gPiAgICAgIEJpdHMgYml0IDUsIFRNLCBW
149 RUMsIFZTWCwgUFIsIEZQLCBhbmQgUE1NIGFyZSBzZXQgdG8gMC4KPiA+ID4gICAgICBUaGUgVEUg
150 ZmllbGQgaXMgc2V0IHRvIDBiMDAuCj4gPiA+ICAgICAgVE0sIEZQLCBWRUMsIFZTWCwgYW5kIGJp
151 dCA1IGFyZSBzZXQgdG8gMC4KPiA+IAo+ID4gUmlnaHQuICBXZSBoYXZlIGEgdG8tZG8gbGlzdCBm
152 b3IgYXJjaGl0ZWN0dXJlIGNvbXBsaWFuY2UuICAoV2UKPiA+IGhhdmVuJ3QKPiA+IGltcGxlbWVu
153 dGVkIDMyLWJpdCBtb2RlIG9yIEJFIG1vZGUsIGZvciBpbnN0YW5jZS4pCj4gCj4geWVhaGggYWx0
154 aG91Z2ggd2UgaGF2ZSAzMiBiaXQgb3AgbW9kZXMgKHVzaW5nIG1pY3Jvd2F0dCAKPiBkZWNvZGUx
155 LnZoZGwsIHR1cm5lZCBpbnRvIENTVikgd2UgaGF2ZSB5ZXQgdG8gc3VwcG9ydCB0aGUgTVNSIDMy
156 Yml0Cj4gZ2xvYmFsIG1vZGUuCj4gCj4gTEUvQkUgYW1hemluZ2x5IHNlZW1zIHRvIHdvcmsgb24g
157 TGlicmVTT0MsIGl0IHdhcyBxdWl0ZSBmdW5ueSBoYXZpbmcKPiB0aGUgdHJhcCBqdW1wIGludG8g
158 MHg3MDAgd2hlbiB0ZXN0aW5nIGFnYWluc3QgcWVtdSAocnVubmluZwo+IHNpbmdsZXN0ZXAgdW5k
159 ZXIgZ2RiKSwgb25seSB0byBmaW5kIHRoYXQgcWVtdSB0cmFwcyBjaGFuZ2UgdGhlIExFIGJpdAo+
160 IGFuZCBvZiBjb3Vyc2UgaW4gcWVtdSBvbmNlIHRoYXQncyBjaGFuZ2VkIGdkYiBjYW4ndCByZWFk
161 IHJlZ2lzdGVycwo+IGNvcnJlY3RseS4gc2lnaC4KCkl0IGNhbiBpZiB5b3UgbWFudWFsbHkgY2hh
162 bmdlIGVuZGlhbiBpbiBnZGIgbm8gPwoKPiA+ID4gcXVlc3Rpb246IHdoYXQgZWZmZWN0IHdvdWxk
163 IGl0IGhhdmUgLSBiZWFyIGluIG1pbmQgdGhhdCB3ZSBhcmUKPiA+ID4gZm9sbG93aW5nIG1pY3Jv
164 d2F0dCAtIGlmIHdlIGltcGxlbWVudGVkIHRoZXNlIGNoYW5nZXMgdG8gTVNSPyAKPiA+IGJlYXIg
165 aW4KPiA+ID4gbWluZCB0aGF0IHdlIGlnbm9yZSBtb3N0IG9mIHRoZW0gYXQgdGhlIG1vbWVudCAo
166 TVNSLkxFIGJlaW5nIG9uZQo+ID4gPiBub3RhYmxlIGV4Y2VwdGlvbiksIHNvIHRoZSBxdWVzdGlv
167 biBpcywgaW4gZWZmZWN0OiBkb2VzIHRoZSBMaW51eAo+ID4gPiBrZXJuZWwgKmFsc28qIGlnbm9y
168 ZSB0aGVtPwo+ID4gCj4gPiBUaGUgTGludXgga2VybmVsIGNsZWFybHkgbmVlZHMgUFIgdG8gYmUg
169 c2V0IHRvIHplcm8gYW5kIGl0IGFsc28KPiA+IGV4cGVjdHMgRlAsIFZFQywgVlNYLCBUTSB0byBi
170 ZSBjbGVhcmVkLiAgU2V0dGluZyBURSB0byAwIGlzCj4gPiBuZWNlc3NhcnkKPiA+IG9uY2UgeW91
171 IGltcGxlbWVudCB0aGUgdHJhY2UgaW50ZXJydXB0LCBvdGhlcndpc2UgeW91IGNvdWxkIGdldCBh
172 Cj4gPiB0cmFjZSBpbnRlcnJ1cHQgaW5zaWRlIHlvdXIgZmlyc3QtbGV2ZWwgaW50ZXJydXB0IGhh
173 bmRsZXJzLCB3aGljaAo+ID4gd291bGQgYmUgYmFkLgo+IAo+IGFoIDopCj4gIAo+ID4gIFNpbWls
174 YXJseSBpZiB5b3UgaGF2ZSBmbG9hdGluZy1wb2ludCBhbmQgeW91IGRvbid0IHNldAo+ID4gRkUw
175 IGFuZCBGRTEgdG8gMCBvbiBhbiBpbnRlcnJ1cHQsIHRoZXJlIGlzIHRoZSBjaGFuY2Ugb2YgdGFr
176 aW5nIGEKPiA+IGZsb2F0aW5nLXBvaW50IHByb2dyYW0gaW50ZXJydXB0IGluc2lkZSBhIGZpcnN0
177 LWxldmVsIGhhbmRsZXIuCj4gCj4gd2hvb3BzLiAgb2sgYXBwcmVjaWF0ZSB0aGUgd2FybmluZy4K
178 PiAgCj4gPiBJJ20gbm90IHN1cmUgdGhhdCBhbGwgdGhpcyBjb3VudHMgYXMgdGhlIExpbnV4IGtl
179 cm5lbCAiaWdub3JpbmciCj4gPiB0aGUKPiA+IGJpdHMsIGJ1dCBpbiBnZW5lcmFsIGlmIHlvdSBk
180 byB3aGF0IHRoZSBhcmNoaXRlY3R1cmUgc2F5cywgdGhlCj4gPiBrZXJuZWwKPiA+IHdpbGwgYmUg
181 aGFwcGllciB0aGFuIGlmIHlvdSBkb24ndC4KPiAKPiBoYSwgdGhhdCBtYWtlcyBzZW5zZS4KPiAK
182 PiBpIGdlbmVyYWxseSBmb3VuZCB0aGlzIG91dCB3aGVuIG5ldHdvcmsgcmV2ZXJzZS1lbmdpbmVl
183 cmluZywgZGVzcGl0ZQo+IG5vdCB1bmRlcnN0YW5kaW5nIGF0IGFsbCB3aGF0IGkgd2FzIHNlbmRp
184 bmcgdG8gdGhlIGNsaWVudCBvciBzZXJ2ZXIKPiA6KQo+IAo+IHRoYW5rIHlvdSBQYXVsCj4gCj4g
185 bC4KPiAKPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
186 X19fXwo+IE9wZW5QT1dFUi1IREwtQ29yZXMgbWFpbGluZyBsaXN0Cj4gT3BlblBPV0VSLUhETC1D
187 b3Jlc0BtYWlsaW5nbGlzdC5vcGVucG93ZXJmb3VuZGF0aW9uLm9yZwo+IApodHRwOi8vbGlzdHMu
188 bWFpbGluZ2xpc3Qub3BlbnBvd2VyZm91bmRhdGlvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9vcGVu
189 cG93ZXItaGRsLWNvcmVzCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
190 X19fX19fX18KbGlicmUtcmlzY3YtZGV2IG1haWxpbmcgbGlzdApsaWJyZS1yaXNjdi1kZXZAbGlz
191 dHMubGlicmUtcmlzY3Yub3JnCmh0dHA6Ly9saXN0cy5saWJyZS1yaXNjdi5vcmcvbWFpbG1hbi9s
192 aXN0aW5mby9saWJyZS1yaXNjdi1kZXYK
193