Re: [libre-riscv-dev] xdc2020
[libre-riscv-dev.git] / f8 / 06eb869f7507c95310c3965d2388e87650a4da
1 Return-path: <libre-riscv-dev-bounces@lists.libre-riscv.org>
2 Envelope-to: publicinbox@libre-riscv.org
3 Delivery-date: Sat, 16 May 2020 23:45:32 +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 1ja5Yh-0001ZK-UW; Sat, 16 May 2020 23:45:31 +0100
8 Received: from mail-lf1-f44.google.com ([209.85.167.44])
9 by libre-soc.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
10 (Exim 4.89) (envelope-from <thejsingher@gmail.com>)
11 id 1ja5Yg-0001ZD-4v
12 for libre-riscv-dev@lists.libre-riscv.org; Sat, 16 May 2020 23:45:30 +0100
13 Received: by mail-lf1-f44.google.com with SMTP id x22so1905890lfd.4
14 for <libre-riscv-dev@lists.libre-riscv.org>;
15 Sat, 16 May 2020 15:45:30 -0700 (PDT)
16 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
17 h=mime-version:references:in-reply-to:from:date:message-id:subject:to;
18 bh=dKhclSNnFd90609ov61VmWCX1YBIWbNA/l2E1mOwmqM=;
19 b=B1K4wIXC/HfPWRjNQxN1DnWk1kJjWAn5cHPkM6vL0xJjK0J6rSHSea6RPFDwa4V5jU
20 5IZdaY9lsVfFhwGJdpMcPLURDJSW9at9y3V931Mgs0Kn4r1AUtwyVCpDOvETLC/oQ9O6
21 9vQJDUHe7hM0X+0WDBedT9m2McrCoJsQZVBMnisLeKNZ/B9My6PKZei6yo337nFuo85R
22 VsAwkkM1UlFEGjdzFhRZD47cOiLjmHtNWf5G4dH2+rQfNy9IrNOxbtkm4n9GPYi+2/q4
23 Vi5lAR5Zne30sSJKm/BHdPsAUJRywFnSW2dC55drnP3Pctq6qPGawC1OqJZQuKM0V98l
24 mLig==
25 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
26 d=1e100.net; s=20161025;
27 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
28 :message-id:subject:to;
29 bh=dKhclSNnFd90609ov61VmWCX1YBIWbNA/l2E1mOwmqM=;
30 b=sng8jaEqGPMwZvy3xn5k9f7D+fPxGTTJ4vkSc6o7hV0spUvwGDLBcZ03pPQ19JqyC7
31 bTRukISduzWu1mvQZAacPTWQkMn23R33zbwxWJr2SIvQaVpNyatiB2wixchFCVKXUzMo
32 0F7onMuSECy0gR23uqRB/C/8Qwc6SU2LlcdrqzVMh09VOqS/KVkSS9aP+fHe/Zc7Sguh
33 jAmjFaipyDBbLIQNLEpDlhXEqC2ns16DJ8GFj5uYpUXWujZDo53vjqCLDK2UbxwptHGq
34 77y2P+v+Gh6drgadSu3bkPJj0bCwEYIzr+1XuWJsnaayC6y4zzk3kIDVSoQy2YQVlDMF
35 DOFA==
36 X-Gm-Message-State: AOAM531PppTRz6OzxgK1d57Tcz16pWWkEE5AjaEEmqm9oUA/yuQrU+sa
37 dasVTkm2lHkYxnBN/68tATH85LKFMQxbOx0Q4euIR0Qq
38 X-Google-Smtp-Source: ABdhPJz6MCJkdGfPlvMLJoYStSQitkzqTNPsNf35mLcYJQIARXNxYUaz+N2iwEfQMqB8WPy2gFW9AhENsjgzwxpBtgc=
39 X-Received: by 2002:a05:6512:31c5:: with SMTP id
40 j5mr6707612lfe.26.1589669128854;
41 Sat, 16 May 2020 15:45:28 -0700 (PDT)
42 MIME-Version: 1.0
43 References: <13EDF987-9A19-4C96-89C2-6DB784CF2C96@gatech.edu>
44 <CAPweEDyDcmAJbJx+PKkL8MotPMNyHyFOEtuNOKP+V2PmmY5HvA@mail.gmail.com>
45 <CAPweEDyw+LSW2S4sKWk-V24NSHYe2qqWO+KFqikQ34Q1Guhaig@mail.gmail.com>
46 <CAPweEDweXSC5c_ROQ8a3Y4hQMaJYmD_jAriadcZk9PRrkjOXvA@mail.gmail.com>
47 <25AC8A2E-D48F-439F-AF9D-0EB3DC08D7CC@gatech.edu>
48 <CAPweEDx_TMOxQHLrhbdhnXsBE1s-u2mz3xD2DDFCMi6m9BZCZg@mail.gmail.com>
49 <CAEoCstRd+hLfF5YtUbnS2gukPxVAjmheJrZ29QvJD3y4Y928JQ@mail.gmail.com>
50 <CAPweEDxXGedm-4QwmU2UuYvb4G2nNaoAsy_P2eyviQ42pbmyXA@mail.gmail.com>
51 In-Reply-To: <CAPweEDxXGedm-4QwmU2UuYvb4G2nNaoAsy_P2eyviQ42pbmyXA@mail.gmail.com>
52 From: Jeremy Singher <thejsingher@gmail.com>
53 Date: Sat, 16 May 2020 15:45:17 -0700
54 Message-ID: <CAEoCstSGxwV88JUHTQmUp=75kHWxSZNSPu==_pxsUYf29ctd9w@mail.gmail.com>
55 To: Libre-RISCV General Development <libre-riscv-dev@lists.libre-riscv.org>
56 Subject: Re: [libre-riscv-dev] Scoreboard vs Tomasulo
57 X-BeenThere: libre-riscv-dev@lists.libre-riscv.org
58 X-Mailman-Version: 2.1.23
59 Precedence: list
60 List-Id: Libre-RISCV General Development
61 <libre-riscv-dev.lists.libre-riscv.org>
62 List-Unsubscribe: <http://lists.libre-riscv.org/mailman/options/libre-riscv-dev>,
63 <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=unsubscribe>
64 List-Archive: <http://lists.libre-riscv.org/pipermail/libre-riscv-dev/>
65 List-Post: <mailto:libre-riscv-dev@lists.libre-riscv.org>
66 List-Help: <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=help>
67 List-Subscribe: <http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev>,
68 <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=subscribe>
69 Reply-To: Libre-RISCV General Development
70 <libre-riscv-dev@lists.libre-riscv.org>
71 Content-Type: text/plain; charset="utf-8"
72 Content-Transfer-Encoding: base64
73 Errors-To: libre-riscv-dev-bounces@lists.libre-riscv.org
74 Sender: "libre-riscv-dev" <libre-riscv-dev-bounces@lists.libre-riscv.org>
75
76 SSBoYXZlIGZpbmFsbHkgZmluaXNoZWQgcGFyc2luZyBNaXRjaCdzIGNoYXB0ZXJzLCBhbmQgbm93
77 IEkgc2VlIHdoYXQKdGhlIHByaW1hcnkgY29uZnVzaW9uIGlzIGZyb20uIFRoZSBzY29yZWJvYXJk
78 IGJlaW5nIGRldmVsb3BlZCBoZXJlIGhhcwpiZWVuIHJlZmVycmVkIHRvIGluIHRoZSBtYWlsaW5n
79 IGxpc3RzIGFzIGEgIkNEQyA2NjAwLWxpa2UiIHNjb3JlYm9hcmQsCndoaWxlIGluIHJlYWxpdHks
80 IHRoZSBmaW5hbCBkZXNpZ24gaXMgZmFyIGV4dGVuZGVkIGZhciBiZXlvbmQgdGhlCm9yaWdpbmFs
81 IENEQyA2NjAwIGltcGxlbWVudGF0aW9uLiBJIHdvdWxkIHN1Z2dlc3Qgbm90IGNhbGxpbmcgaXQg
82 YQoiQ0RDIDY2MDAtbGlrZSBzY29yZWJvYXJkIiBpbiB0aGUgZnV0dXJlLCBpbnN0ZWFkIGEgImV4
83 dGVuZGVkCnNjb3JlYm9hcmQiIGlzIG1vcmUgYWNjdXJhdGUuCgpMZXQgbWUgdHJ5IHRvIGNvbXBv
84 c2UgbXkgdGhvdWdodHMuCkluIG9yZGVyIGZvciBPT08gZXhlY3V0aW9uIHRvIGJlIHBvc3NpYmxl
85 LCB3cml0ZSBkYXRhIGZyb20Kc3BlY3VsYXRpdmVseSBleGVjdXRlZCBpbnN0cnVjdGlvbnMgbXVz
86 dCBiZSBidWZmZXJlZCwgZm9yIGluIHRoZSBjYXNlCm9mIG1pc3NwZWN1bGF0aW9uLCB0aGV5IG11
87 c3Qgbm90IGJlIGFsbG93ZWQgdG8gY29tbWl0IGludG8gdGhlCmFyY2hpdGVjdHVyYWwgcmVnaXN0
88 ZXIgZmlsZS4KCkluIFRvbWFzdWxvJ3MsIHNwZWN1bGF0aXZlIHdyaXRlIGRhdGEgYXJlIGhlbGQg
89 aW4gcGh5c2ljYWxseSByZW5hbWVkIHJlZ2lzdGVycy4KSW4gdGhlIGV4dGVuZGVkIHNjb3JlYm9h
90 cmQgc2NoZW1lLCBzcGVjdWxhdGl2ZSB3cml0ZSBkYXRhIGFyZSBoZWxkIGluCmNvbXB1dGUgdW5p
91 dCBsYXRjaGVzLgpJbiBUb21hc3VsbydzLCBicmFuY2ggZGVwZW5kZW5jeSBtYXNrcyBhcmUgdXNl
92 ZCB0byBkcmFpbiBtaXNzcGVjdWxhdGVkCmluc3RydWN0aW9ucy4KSW4gZXh0ZW5kZWQgc2NvcmVi
93 b2FyZCwgdGhlIG1pc3NwZWN1bGF0ZWQgaW5zdHJ1Y3Rpb25zIGRyYWluCnRoZW1zZWx2ZXMgZnJv
94 bSB0aGUgc3lzdGVtLgpCb3RoIHNjaGVtZXMgY2FuIGJlIGRlc2lnbmVkIHRvIGFjaGlldmUgc2lt
95 aWxhciBPT08gYmVoYXZpb3JzLgpUaHVzLCBvbmUgY2Fubm90IGRyYXcgYSBwZXJmb3JtYW5jZSBj
96 b25jbHVzaW9uIGp1c3QgYnkgc2VlaW5nIHdoaWNoCnNjaGVtZSBpcyBiZWluZyB1c2VkLgoKSWRl
97 YWxseSB0aGUgYWJvdmUgdGV4dCBzaG91bGQgYmUgdW5jb250cm92ZXJzaWFsLCBwbGVhc2UgbGV0
98 IG1lIGtub3cKaWYgdGhlcmUgaXMgYSBsYXJnZSBtaXN1bmRlcnN0YW5kaW5nIGhlcmUuCgpNeSBv
99 cGluaW9uIGlzIHRoYXQgVG9tYXN1bG8ncyBpcyBhIG1vcmUgZWxlZ2FudCBhbmQgd2VsbC1wcm92
100 ZW4gc2NoZW1lCmZvciBhY2hpZXZpbmcgT09PIGV4ZWN1dGlvbiwgY29tcGFyZWQgdG8gYW4gZXh0
101 ZW5kZWQgc2NvcmVib2FyZC4gSQphbHNvIGFyZ3VlIHRoYXQgdGhlIGV4dGVuZGVkIHNjb3JlYm9h
102 cmQgc2NoZW1lIGRvZXMgbm90IHByZXNlbnQKc2lnbmlmaWNhbnQgcG93ZXIvYXJlYSBhZHZhbnRh
103 Z2VzIGNvbXBhcmVkIHRvIFRvbWFzdWxvJ3MuIEdpdmVuIHRoYXQKZXN0aW1hdGVzIG9uIHBvd2Vy
104 L2FyZWEgdGVuZCB0byBiZSB3aWxkbHkgaW5hY2N1cmF0ZSwgSSB0aGluayB3ZSB3aWxsCmhhdmUg
105 dG8gd2FpdCBmb3IgcG93ZXIgYW5hbHlzaXMgb2YgTGlicmVTb0MgdG8gZ2V0IGEgZGVmaW5pdGl2
106 ZSBhbnN3ZXIKdG8gdGhpcyBkZWJhdGUgOikuCgpJIGRlZXBseSBhcG9sb2dpemUgaWYgYW55IG9m
107 IG15IHRob3VnaHRzIGNvdWxkIGJlIGludGVycHJldGVkIGFzCmNyaXRpY2lzbS4gSSBmdWxseSBz
108 dXBwb3J0IHRoaXMga2luZCBvZiBleHBsb3JhdGlvbiBpbiBPT08gZGVzaWduLiBJCmFsc28gYXBv
109 bG9naXplIGlmIEkgc2VlbSB0byBzdWdnZXN0IGEgY2hhbmdlIGluIGRlc2lnbiwgYXMgSQp1bmRl
110 cnN0YW5kIHRoYXQgaGFyZHdhcmUgZGVzaWduIGlzIG5vdCBuZWFybHkgYXMgZmxleGlibGUgYXMg
111 c29mdHdhcmUKZGVzaWduLgoKCgpPbiBTYXQsIE1heSAxNiwgMjAyMCBhdCAyOjM4IFBNIEx1a2Ug
112 S2VubmV0aCBDYXNzb24gTGVpZ2h0b24KPGxrY2xAbGtjbC5uZXQ+IHdyb3RlOgo+Cj4gT24gU2F0
113 LCBNYXkgMTYsIDIwMjAgYXQgOToxNiBQTSBKZXJlbXkgU2luZ2hlciA8dGhlanNpbmdoZXJAZ21h
114 aWwuY29tPiB3cm90ZToKPgo+ID4gPiBIb3dldmVyLCB0aGUgc2NvcmVib2FyZCBpcyBsaW1pdGVk
115 IGluIHRoYXQgaXQgZG9lcyBub3QgaGFuZGxlIFdBUiBhbmQgV0FXCj4gPiA+IGhhemFyZHMgdmVy
116 eSB3ZWxsLgo+ID4KPiA+ID4gdGhlIG9yaWdpbmFsIDY2MDAgaGFuZGxlcyBXQVIgZXh0cmVtZWx5
117 IHdlbGwsIG9ubHkgc3RhbGxpbmcgb24gV2FXCj4gPiA+IGNvbmRpdGlvbiwgZGV0ZWN0aW9uIHdo
118 aWNoIGRpZCBub3QgbWF0dGVyIGdyZWF0bHkgYmVjYXVzZSB0aGUgcGlwZWxpbmVzCj4gPiA+IHdl
119 cmUgb25seSBhdCBtb3N0IDIgc3RhZ2VzIGxvbmcgYW55d2F5IChNaXRjaCBvbmx5IG5vdGljZWQg
120 YWZ0ZXIgcmVyZWFkaW5nCj4gPiA+IGxhc3QgeWVhciB0aGF0IHRoZSBGUCBBREQgb2YgdGhlIDY2
121 MDAgd2FzIDIgc3RhZ2UgcGlwZWxpbmVkLiAgbm8gYWNhZGVtaWMKPiA+ID4gbGl0ZXJhdHVyZSBo
122 YXMgYWNrbm93bGVkZ2VkIG9yIG5vdGljZWQgdGhpcykuCj4gPgo+ID4gSSB3b3VsZCBhcmd1ZSB0
123 aGF0IHRoZSBDREM2NjAwIGhhbmRsZXMgV0FSIGJldHRlciB0aGFuIGFuIGluLW9yZGVyCj4gPiBt
124 YWNoaW5lLCBidXQgbm90IGJldHRlciB0aGFuIGEgbWFjaGluZSB3aXRoIGZ1bGwgcmVuYW1pbmcu
125 Cj4KPiBKZXJlbXk6IDY2MDAgZGVzaWducyAqZG8qIGhhdmUgcmVnaXN0ZXIgInJlbmFtaW5nIi4g
126 IGkgc2FpZCBhbHJlYWR5LAo+IGEgbnVtYmVyIG9mIHRpbWVzLiAgYW5kIGlmIHlvdSBoYXZlIHN0
127 dWRpZWQgYW5kIGxpc3RlbmVkIHRvIHRoZSBBY2FkZW1pYwo+IGxpdGVyYXR1cmUgLSBhbmQgYmVs
128 aWV2ZSBpdCAtIHlvdSBhcmUgbWlzaW5mb3JtZWQgYnkgdGhhdCBsaXRlcmF0dXJlLCBhbmQgd2ls
129 bAo+IGNvbnRpbnVlIHRvIGJlIG1pc2luZm9ybWVkIGJ5IHRoYXQgbGl0ZXJhdHVyZS4KPgo+IHBs
130 ZWFzZSB1bmRlcnN0YW5kOiBpIGhhdmUgc3BlbnQgb3ZlciBuaW5lIG1vbnRocyBzdHVkeWluZyB0
131 aGlzLCBsZWFybmluZwo+IGZyb20gTWl0Y2ggQWxzdXAsIG9uZSBvZiB0aGUgd29ybGQncyBsZWFk
132 aW5nIGhpZ2gtcGVyZm9ybWFuY2UgY29tcHV0aW5nCj4gYXJjaGl0ZWN0cywgaW1wbGVtZW50aW5n
133 IHRoaXMgYW5kIGl0J3Mgbm90IGdvaW5nIHRvIGdldCBjaHVja2VkIG91dCB0bwo+IGltcGxlbWVu
134 dCBzb21ldGhpbmcgdGhhdCB0YWtlcyBzaXggTU9OVEhTIHRvIGZ1bGx5IHVuZGVyc3RhbmQgaXMg
135 YQo+IGJldHRlciBkZXNpZ24sIHRvIGJlIHJlcGxhY2VkIGJ5IHNvbWV0aGluZyB0aGF0IHdvdWxk
136 IHRha2UgYW5vdGhlciBzaXgKPiBtb250aHMgdG8gaW1wbGVtZW50ICphbmQgd2UgdGhlbiBjb3Vs
137 ZCBub3QgZG8gbXVsdGktaXNzdWUgb24gdG9wIG9mIGl0Ki4KPgo+IHBsZWFzZSB0aGVyZWZvcmUg
138 dGFrZSB0aGUgdGltZSB0byB1bmRlcnN0YW5kIHRoaXMgZGVzaWduLCBwYXJ0aWN1bGFybHkgd2hl
139 bgo+IHdlIGFyZSByaWdodCBpbiB0aGUgbWlkZGxlIG9mIGEgdGltZS1jcml0aWNhbCBkZWFkbGlu
140 ZS4KPgo+ID4gSW4gdGhlCj4gPiBDREM2NjAwLCB0aGUgc2NvcmVib2FyZCB3b3VsZCBibG9jayB0
141 aGUgY29tcGxldGlvbiBvZiB0aGUgVyBpbnN0IHVudGlsCj4gPiB0aGUgUiBpbnN0IGhhcyByZWFk
142 IGl0cyBvcGVyYW5kcy4gSW4gVG9tYXN1bG8sIHRoZSBXIGluc3QgY2FuIHByb2NlZWQKPiA+IGlt
143 bWVkaWF0ZWx5IGJlZm9yZSB0aGUgUiBpbnN0IGlzIHJlYWR5LCBzaW5jZSB0aGUgZGVzdGluYXRp
144 b24gcmVnaXN0ZXIKPiA+IGlzIHBoeXNpY2FsbHkgcmVuYW1lZC4KPgo+IEplcmVteTogdGhlICJy
145 ZW5hbWluZyIgY2FycmllZCBvdXQgYnkgdGhlIDY2MDAgZG9lcyBleGFjdGx5IHRoaXMgc2FtZQo+
146 IGpvYi4KPgo+IEFjYWRlbWljcyB1bmZvcnR1bmF0ZWx5IGhhdmUgKm9ubHkqIHN0dWRpZWQgdGhl
147 ICpwYXRlbnQqIC0gbm90IFRob3JudG9uJ3MKPiBib29rIG5vciByZWFkIE1pdGNoIEFsc3VwJ3Mg
148 Ym9vayBjaGFwdGVycyB3aGljaCBoZSB3cm90ZSBiYXNlZCBvbiAzMCsKPiB5ZWFycyBleHBlcmll
149 bmNlIG9mIGltcGxlbWVudGluZyA2NjAwLXN0eWxlIGV4ZWN1dGlvbiBpbiB0aGUgODgxMDAsCj4g
150 QU1EIEs5IGFuZCBBTUQgT3B0ZXJvbiBTZXJpZXMgb2YgQ1BVcy4KPgo+IHRoZSA2NjAwIHBhdGVu
151 dCAqT05MWSogY292ZXJzIHRoZSBRLVRhYmxlcy4KPgo+IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUg
152 US1UYWJsZXMgZG9lcyAqTk9UKiBpbmNsdWRlIHRoZSBDb21wdXRhdGlvbiBVbml0cwo+IHdoZXJl
153 IHRoZSBvcGVyYW5kIGxhdGNoZXMgYXJlLgo+Cj4gdGhlc2UgbGF0Y2hlcyAqQVJFKiB0aGUgInJl
154 bmFtZWQgcmVnaXN0ZXJzIiAoYWN0dWFsbHksIG5hbWVsZXNzIHJlZ2lzdGVycykuCj4KPiA+ID4g
155 IFJPQiBpcyBhIENBTSwKPiA+Cj4gPiBXaGF0PyBUaGlzIGlzIG5vdCB0cnVlLiBJbnN0cnVjdGlv
156 bnMgaW4gZmxpZ2h0IHRyYWNrIHRoZWlyIGluZGV4IGluCj4gPiB0aGUgUk9CLCBhdCBjb21wbGV0
157 aW9uLCB0aGV5IHdyaXRlIHN1Y2Nlc3MgYml0IGFjY29yZGluZyB0byB0aGUgaW5kZXgKPiA+IHRo
158 ZXkgaGF2ZS4gTm90IGEgQ0FNLiBTaW1wbGUgYWRkcmVzc2VkIHdyaXRlLgo+Cj4gYWggYXBwcmVj
159 aWF0ZWQgdGhlIGNvcnJlY3Rpb24uICBpIGtuZXcgdGhlcmUgd2VyZSBDQU1zIHNvbWV3aGVyZS4K
160 PiB3aGVuIGkgZGlzY292ZXJlZCB0aGF0LCBpIGRyb3BwZWQgZnVydGhlciBpbnZlc3RpZ2F0aW9u
161 Lgo+Cj4gaSBhbSBob3dldmVyIGF3YXJlIHRoYXQgaWYgeW91IHdpc2ggdG8gZG8gbXVsdGktaXNz
162 dWUsIHRoZSBST0Igd2lsbCBuZWVkCj4gdG8gYmUgbXVsdGktcG9ydGVkIFNSQU0uICB3aXRob3V0
163 IG11bHRpLXBvcnRpbmcgdGhlIFNSQU0sIHlvdSBzaW1wbHkKPiBjYW5ub3Qgd3JpdGUgbXVsdGlw
164 bGUgZW50cmllcy4KPgo+IHRoaXMgaXMgd2hlcmUgdGhlIHByb2JsZW1zIChyZWFkOiBuaWdodG1h
165 cmVzKSBmb3IgVG9tYXN1bG8gc3RhcnQgdG8gbWFuaWZlc3QsCj4gYW5kIHByb2dyZXNzIGZyb20g
166 dGhlcmUgdGhyb3VnaCBtdWx0aXBsZSBDb21tb24gRGF0YSBCdXMgY2hhbm5lbHMgaW50bwo+IG11
167 bHRpLXBvcnRlZCAoTnhSLCBOeFcpIENBTXMgYXQgdGhlIFJlc2VydmF0aW9uIFN0YXRpb24gbGV2
168 ZWwuCj4KPiBpJ3ZlIGJlZW4gdGhyb3VnaCB0aGlzLCBvaywgb3ZlciAxOCBtb250aHMgYWdvLgo+
169 Cj4gYnkgY29udHJhc3QsIHdoZW4gY29udmVydGVkIHRvIHNpbmdsZS1iaXQgdW5hcnkgdmVjdG9y
170 cywgZWFjaCBlbnRyeSBpbiB0aGUKPiBNYXRyaWNlcyAoY292ZXJlZCBieSBhIHNpbmdsZSBTUiBO
171 QU5EIGxhdGNoKSBpcyAqaW5kZXBlbmRlbnQqLiAgbXVsdGlwbGUKPiBvZiB0aG9zZSBtYXkgYmUg
172 c2V0IGluIGEgc2luZ2xlIGN5Y2xlLgo+Cj4gdGhlcmUgaGFzIGJlZW4gYSAqbWFzc2l2ZSogYW1v
173 dW50IG9mIHRob3VnaHQgZ29uZSBpbnRvIHRoaXMsIG9rPwo+Cj4KPiA+ID4gZ2l2ZW4gdGhhdCBJ
174 bnRlbCBwcm9jZXNzb3JzIHVzZSBUb21hc3Vsbywgd2Ugc3RhcnQgdG8gc2VlIHdoeSBJbnRlbAo+
175 ID4gPiBwcm9jZXNzb3JzIHN1Y2sgc28gbXVjaCBwb3dlci4KPiA+Cj4gPiBQb3dlciBjb25zdW1w
176 dGlvbiBvbiBhIHByb2Nlc3NvciBpcyBwcmltYXJpbHkgZnJvbSBoaWdoIHN3aXRjaGluZwo+ID4g
177 cmF0ZXMgb24gbGFyZ2UgcmVnaXN0ZXIgZmlsZXMsIGFuZCBTUkFNIGxlYWthZ2UuCj4KPiBnaXZl
178 biB0aGF0IHdlJ3JlIHBsYW5uaW5nIGFyb3VuZCAyOCBGdW5jdGlvbiBVbml0cyBhbmQgaGF2ZSBh
179 IDEyOC1lbnRyeQo+IHJlZ2lzdGVyIGZpbGUsIHRoZSBjYWxjdWxhdGlvbnMgdGhhdCBpIGRpZCBm
180 b3IgdGhhdCB3b3VsZCBwdXQgdGhlIERlcGVuZGVuY3kKPiBNYXRyaWNlcyBhcm91bmQgYSB3aG9w
181 cGluZyA1MCwwMDAgZ2F0ZXMsIHVzaW5nIFNSIE5BTkQgTGF0Y2hlcy4KPgo+IChpZiB3ZSBkaWQg
182 aXQgYXMgREZGcyBpdCB3b3VsZCBiZSBhbiB1bmFjY2VwdGFibGUgMjUwLDAwMCBnYXRlcykKPgo+
183 ID4gVGhlIHNjaGVkdWxpbmcgbG9naWMgaXMgYSBtaW5pc2N1bGUgcG9ydGlvbi4KPgo+IG5vdCBm
184 b3IgdGhlIGxhcmdlLXNjYWxlIG91dC1vZi1vcmRlciBzeXN0ZW1zIHRoYXQgd2UgYXJlIHBsYW5u
185 aW5nIHRvCj4gZG8sIGl0J3Mgbm90LAo+IGR1ZSB0byB0aGUgbGFyZ2Ugc2l6ZWQgR1BVIHJlZ2lz
186 dGVyIGZpbGUgKDEyOCBlbnRyaWVzLiAgYWN0dWFsbHkgMngKPiAxMjggLSAxMjggRlAsCj4gMTI4
187 IElOVCkuCj4KPiB3ZSBtYXkgaGF2ZSB0byAqZG93biotc2NhbGUgdmlhIGEgcmVnZmlsZSBjYWNo
188 ZSB0byBjb3BlIHdpdGggdGhhdC4KPiBkaXNjdXNzaW9uIGZvciBhbm90aGVyIHRpbWUuCj4KPgo+
189 ID4gSW50ZWwgY29yZXMgYXJlIHBvd2VyLWh1bmdyeSBiZWNhdXNlCj4gPiBoaXN0b3JpY2FsbHkg
190 dGhleSBoYXZlIHRhcmdldGVkIHRoZSBkZXNrdG9wL3dvcmtzdGF0aW9uIG1hcmtldCwgYW5kIGRv
191 Cj4gPiBub3QgaGF2ZSBhcyBtYW55IGRlY2FkZXMgb2YgZXhwZXJpZW5jZSBhcyBvdGhlciBmaXJt
192 cyBvcHRpbWl6aW5nIGZvcgo+ID4gcG93ZXItY29uc3RyYWluZWQgZW52aXJvbm1lbnRzLgo+Cj4g
193 YXBwcmVjaWF0ZWQgdGhlIGluc2lnaHQuCj4KPiA+IEFsc28gYWxtb3N0IGFsbCBtb2Rlcm4gT09P
194 IGNvcmVzIHVzZSBUb21hc3VsbyBiZWNhdXNlIFRvbWFzdWxvIGlzCj4gPiBiZXR0ZXIgYXQgYXZv
195 aWRpbmcgZmFsc2UgaGF6YXJkcyBjb21wYXJlZCB0byBzY29yZWJvYXJkaW5nLgo+Cj4gaW4gdGhl
196 IHZlcnNpb25zIG9mIHNjb3JlYm9hcmRzIGltcGxlbWVudGVkIGJ5IGFjYWRlbWljcyAtIGJlY2F1
197 c2UgdGhleQo+IGZhaWwgdG8gY29tcHJlaGVuZCB0aGVtIHByb3Blcmx5IC0gYmVjYXVzZSB0aGV5
198 IG9ubHkgcmVhZCB0aGUgcGF0ZW50Cj4gb24gUS1UYWJsZXMgLSB5ZXMuCj4KPiBpbiB0aGUgdmVy
199 c2lvbiB0aGF0IE1pdGNoIEFsc3VwIC0gYSB3b3JsZCBsZWFkaW5nIGV4cGVydCBvbiBTY29yZWJv
200 YXJkCj4gTWVjaGFuaWNzIC0gdGF1Z2h0IG1lOgo+Cj4gbm8uCj4KPiBhbHNvLCB0aGUgSUlUIE1h
201 ZHJhcyBSSVNFIEdyb3VwIFNoYWt0aSBFLUNsYXNzIHByb2Nlc3NvciBpcyAqYWxzbyogYQo+IHNj
202 b3JlYm9hcmQgZGVzaWduLiAgdGhpcyB3YXMgZGVzaWduZWQgImZyb20gZmlyc3QgcHJpbmNpcGxl
203 cyIgYnkgUHJvZmVzc29yCj4gS2FtYXRvdGksIGFuZCBpdCB3YXMgb25seSB0aHJvdWdoIGxlYXJu
204 aW5nIGZyb20gTWl0Y2ggdGhhdCBpIHdhcyBhYmxlCj4gdG8gcmVjb2duaXNlIHdoYXQgaGUgaGFk
205 IGRvbmUgYXMgYmVpbmcgaWRlbnRpY2FsIHRvIGEgNjYwMCBzY29yZWJvYXJkLgo+Cj4gPiBUb21h
206 c3Vsbwo+ID4gYWxzbyBtYWtlcyBpdCBlYXNpZXIgdG8gaW1wbGVtZW50IHByZWNpc2UgdHJhcHMs
207 IHNvbWV0aGluZyB3aGljaCBpcwo+ID4gbm90b3Jpb3VzbHkgY2hhbGxlbmdpbmcgIHdpdGgganVz
208 dCBhIHNjb3JlYm9hcmQuCj4KPiBubyBpdCBpcyBub3QuICB0aGlzIGlzICp5ZXQgYWdhaW4qIGNv
209 bXBsZXRlIGZhY3R1YWwgbWlzaW5mb3JtYXRpb24gYW5kIGlnbm9yYW5jZQo+IGZyb20gQWNhZGVt
210 aWMgbGl0ZXJhdHVyZS4KPgo+IGNhbiBpIGFzazogaGF2ZSB5b3UgcmVhZCBQYXR0ZXJzb24ncyBi
211 b29rPyAgdGhpcyBpcyB0aGUgdXN1YWwgcGxhY2Ugd2hlcmUKPiBtb3N0IHBlb3BsZSBnZXQgdGhl
212 aXIgbWlzaW5mb3JtYXRpb24gZnJvbS4gIHRoZSByZWxlYXNlIG9mIHRoaXMgbWlzaW5mb3JtYXRp
213 b24KPiB3YXMgd2h5IE1pdGNoIEFsc3VwIC0gYSB2ZXJ5IHBpc3NlZC1vZmYgYW5kIGV4YXNwZXJh
214 dGVkIE1pdGNoIC0gd3JvdGUgdGhvc2UKPiB0d28gY2hhcHRlcnMsIGJhY2sgYXJvdW5kLi4uIDIw
215 MDggKGkgdGhpbmspLgo+Cj4gcHJlY2lzZSBleGNlcHRpb25zLCB0cmFwcywgaW50ZXJydXB0cywg
216 YnJhbmNoIHNwZWN1bGF0aW9uIGFuZCBwcmVkaWNhdGlvbiBtYXkKPiBhbGwgYmUgYWNoaWV2ZWQg
217 dGhyb3VnaCAic2hhZG93aW5nIi4gIHNlZSB0aGUgbGF0dGVyIHBhcnQgb2YgdGhlIDJuZCBjaGFw
218 dGVyIG9mCj4gTWl0Y2gncyBib29rLgo+Cj4gc2VlIHRoZSBzZWN0aW9uICJTaGFkb3dpbmciIGlu
219 IHRoaXMgcGFnZToKPiBodHRwczovL2xpYnJlLXNvYy5vcmcvM2RfZ3B1L2FyY2hpdGVjdHVyZS82
220 NjAwc2NvcmVib2FyZC8KPgo+IGl0J3MgdmVyeSBzaW1wbGU6IHlvdSBob2xkIHdyaXRlIHVudGls
221 IHN1Y2ggdGltZSBhcyB0aGUgb3Bwb3J0dW5pdHkgZm9yICJkYW1hZ2UiCj4gaXMgY2xlYXJlZC4g
222 IE9wZXJhbmQgRm9yd2FyZGluZyBhbGxvd3MgaW5zdHJ1Y3Rpb25zIHRvIHJ1biBhaGVhZCwgdXNp
223 bmcgcmVzdWx0cwo+IHRoYXQgd291bGQgb3RoZXJ3aXNlIGhhdmUgdG8gYmUgcmVjZWl2ZWQgb25s
224 eSBmaXJzdCBieSBnb2luZyB0aHJvdWdoCj4gdGhlIFJlZ2ZpbGUuCj4KPiAqdGhpcyBpcyBhbHJl
225 YWR5IGltcGxlbWVudGVkKiBhbmQgdGhlIHVuaXQgdGVzdHMgZGVtb25zdHJhdGVkIGl0IGFzCj4g
226 KmZ1bGx5IGZ1bmN0aW9uYWwqCj4KPgo+ID4gTGV0cyBiZSBjbGVhciBoZXJlLiBUaGUgQ0RDNjYw
227 MCBBVk9JRFMgV0FSIGFuZCBXQVcgaGF6YXJkcyBieSBCTE9DS0lORwo+ID4geW91bmdlciBpbnN0
228 cnVjdGlvbnMgKFNlZSBwZzMgaW4gTWl0Y2ggQWxzdXAncyB0ZXh0KS4gVG9tYXN1bG8ncwo+ID4g
229 c3VwcG9ydHMgT09PIGV4ZWN1dGlvbiBQQVNUIFdBUiBhbmQgV0FXIGhhemFyZHMsIGVuYWJsaW5n
230 IHRoZSBjb3JlIHRvCj4gPiBleHBsb2l0IG1vcmUgSUxQIGFjcm9zcyBpdHMgZnVuY3Rpb25hbCB1
231 bml0cy4KPgo+IHRoaXMgaXMgb25seSBiZWNhdXNlIHRoZSAxOTY1IENEQzY2MDAgZGlkIG5vdCBo
232 YXZlIGFuIE9wZXJhbmQgRm9yd2FyZGluZyBCdXMKPiAoaW5zdGVhZCBpdCB1c2VkIHRoZSByZWdm
233 aWxlIGFzIGEgc2FtZS1jbG9jayBmb3J3YXJkaW5nIGJ1cywgYnkgcmVhZGluZyBvbiBvbmUKPiBl
234 ZGdlIGFuZCB3cml0aW5nIG9uIHRoZSBvdGhlci4gIHRoaXMgdW5mb3J0dW5hdGVseSBtZWFudCB0
235 aGF0IHdpdGhvdXQgYW4gT3BGd2QKPiBCdXMsIHN0YWxsIGhhZCB0byBvY2N1cikuCj4KPiB0aGlz
236 IERPRVMgTk9UIElOSEVSRU5UTFkgTUVBTiB0aGF0ICoqQUxMKiogU2NvcmVib2FyZHMgYXJlIHJ1
237 YmJpc2guCj4KPiBpZiB5b3UgYWRkIGFuIE9wZXJhbmQgRm9yd2FyZGluZyBCdXMgKGVxdWl2YWxl
238 bnQgdG8gdGhlIENEQiBpbiBUb21hc3VsbykKPiB0aGUgZXhhY3Qgc2FtZSBwYXJpdHkgZnVuY3Rp
239 b25hbGl0eSBpcyBhY2hpZXZlZCAod2l0aG91dCB0aGUgc2V2ZXJlIGRvd25zaWRlcykuCj4KPgo+
240 ID4gTHVrZSwgSSBhZ3JlZSB3aXRoIHlvdSB0aGF0IHRoZSByZXNlcnZhdGlvbiBzdGF0aW9uIHJv
241 d3MgaW4gVG9tYXN1bG8ncwo+ID4gY2FuIGJlIGVxdWl2YWxlbnQgdG8gdGhlIG9wZXJhbmQgbGF0
242 Y2hlcyBpbiBTY29yZWJvYXJkaW5nLiBIb3dldmVyLAo+ID4gYWRkaW5nIG1hbnkgb3BlcmFuZC1s
243 YXRjaGVzIChieSBoYXZpbmcgbWFueSBmdW5jdGlvbmFsIHVuaXRzKSBkb2VzIG5vdAo+ID4gc2Nh
244 bGUgYXMgbmljZWx5IGFzIGp1c3QgYWRkaW5nIGEgZmV3IG1vcmUgcm93cyB0byBUb21hc3Vsbydz
245 Cj4gPiByZXNlcnZhdGlvbiBzdGF0aW9ucy4KPgo+IHRoaXMgaXMgaW5jb3JyZWN0LiAgeW91IG1h
246 eSBiZSB1bmRlciB0aGUgbWlzdGFrZW4gaW1wcmVzc2lvbiB0aGF0IHRoZSBwaXBlbGluZXMKPiBk
247 dXBsaWNhdGVkIGFzIHdlbGwuICB0aGlzIGNsZWFybHkgd291bGQgYmUgaW5hZHZpc2VhYmxlIGJl
248 Y2F1c2UgdGhlIEZVJ3Mgam9iCj4gaXMgdG8gc2VydmUgb25lIGFuZCBvbmx5IG9uZSByZXN1bHQu
249 ICB0aGVyZWZvcmUgeW91IGtub3cgdGhhdCB0aGlzIGlzIGEgbWlzdGFrZW4KPiB1bmRlcnN0YW5k
250 aW5nLCBhbmQgdGhhdCBjb25zZXF1ZW50bHkgeW91IGhhdmUgbXVsdGlwbGUgRlVzIGZvciB0aGUg
251 c2FtZQo+IHBpcGVsaW5lLiAgKHRlcm1lZCAiQ29uY3VycmVudCBDb21wdXRhdGlvbiBVbml0Iiku
252 Cj4KPiB0aGVyZWZvcmUgaXQncyBtaW5pbWFsLiAgZXhjbHVkaW5nIHRoZSBsYXRjaGVzIHRoZW1z
253 ZWx2ZXMgKHRoZSByb3dzCj4gaGF2ZSBsYXRjaGVzLCB0aGUKPiBDb21wVW5pdHMgLSBha2EgRnVu
254 Y3Rpb25Vbml0cyBoYXZlIGxhdGNoZXMsIHRoZSB0b3RhbCBudW1iZXIgb2YgbGF0Y2hlcyBhZnRl
255 cgo+IGZsYXR0ZW5pbmcgaXMgdGhlIHNhbWUpLCB0aGUgbnVtYmVyIG9mIGdhdGVzIGFkZGVkIGJ5
256 IGVhY2ggQ29tcFVuaXQgaXMKPiBtaW5pbWFsOiBhcm91bmQuLi4gODAsIG1heGltdW0uCj4KPiB0
257 aGF0J3MgcGVhbnV0cy4KPgo+ID4gRXNwZWNpYWxseSBzaW5jZSBkZXNpZ25pbmcgdGhlIENBTXMg
258 Zm9yCj4gPiBUb21hc3VsbydzIGlzIGEgd2VsbCBzdHVkaWVkLCBhbmQgd2VsbC11bmRlcnN0b29k
259 IHByb2JsZW0KPgo+IHRoZSBrZXkgaXMgdGhlIGNvbWJpbmF0aW9uIG9mIHRob3NlIHR3bzoKPgo+
260 IEEpIHdlbGwtdW5kZXJzdG9vZC4uLiAqYW5kKgo+IEIpIGEgcHJvYmxlbS4KPgo+IGhhdmUgYSBs
261 b29rIGF0IGhvdyBtdWx0aS1pc3N1ZSBpcyBkb25lIHVzaW5nIFRvbWFzdWxvLiAgaXQncyBzaG9j
262 a2luZ2x5IGJhZC4KPgo+Cj4gPiA+IDMuIEV4cGFuZCB0aGUgbnVtYmVyIG9mIFJTZXMgc28gdGhh
263 dCBpZiB5b3Ugd2VyZSB0byBjb3VudCB0aGUgdG90YWwgbnVtYmVyCj4gPiA+IG9mIHBsYWNlcyBv
264 cGVyYW5kcyBhcmUgc3RvcmVkLCB0aGV5IGFyZSB0aGUgc2FtZS4KPiA+Cj4gPiA+IChhbm90aGVy
265 IHdheSB0byBwdXQgdGhpcyBpcywgImZsYXR0ZW4gYWxsIDJEIFJTZXMgaW50byAxRCIpCj4gPgo+
266 ID4gVGhpcyBkb2VzIG5vdCBzY2FsZSB3ZWxsLiBBIDJEIENBTSBpcyBmYXIgbW9yZSBhcmVhIGVm
267 ZmljaWVudCB0aGFuIGEKPiA+IDFEIGZsYXR0ZW5lZCB2ZWN0b3IuCj4KPiBhIDFEIGJpdHZlY3Rv
268 ci4gIGEgc2luZ2xlLCAxRCBiaXR2ZWN0b3IuICBvZiAzMiBiaXRzIGluIGxlbmd0aC4KPgo+IGNv
269 bXBhcmVkIHRvIDMyIDUtYml0IGJpbmFyeSBhZGRyZXNzZXMuCj4KPiBqdXN0IHRoZSBsYXRjaGVz
270 IGFsb25lLCB0aGF0IG1hdGggZG9lcyBub3Qgc3RhY2sgdXAuCj4KPiBub3cgbGV0J3MgdGFrZSBp
271 dCB0byAyRC4KPgo+IGxldCdzIHNheSB0aGF0IHdlIGhhdmUgMTAgRlVzIGFuZCAzMiAgUmVncy4K
272 Pgo+IGluIFRvbWFzdWxvIHRoYXQgaXMgYSA1LWJpdCBhZGRyZXNzLiAgMTB4NSA9IDUwIERGRiBs
273 YXRjaGVzLiAgREZGCj4gbGF0Y2hlcyBhcmUgMTAgZ2F0ZXMgc28gdGhhdCdzIDUwMCBnYXRlcy4K
274 Pgo+IGluIDY2MDAgdGhhdCBpcyAxMHgzMiA9IDMyMCBTUiBOQU5EIExhdGNoZXMuICBTUiBOQU5E
275 IGxhdGNoZXMgYXJlIDIKPiBnYXRlcy4gIDMyMHgyIGlzIDY0MCBnYXRlcy4KPgo+IG5vdCB2ZXJ5
276 IGRpZmZlcmVudCBpbiB0ZXJtcyBvZiBsYXRjaCBjb3VudCwgaXMgaXQ/Cj4KPgo+IG5vdyBsZXQn
277 cyBkbyB0aGUgYWRkcmVzcy1jaGVja2luZy4KPgo+IHRvIGNoZWNrIGEgcmVnaXN0ZXIgYXMgImFj
278 dGl2ZSIgLSBiZWFyIGluIG1pbmQgdGhhdCB0aGlzIGlzIHBlcgo+IHJlZ2lzdGVyIGFuZCBjb25z
279 ZXF1ZW50bHkKPiBpZiBkb2luZyBtdWx0aS1pc3N1ZSB0aGF0J3MgYSBiYXRjaCBvZiBhZGRyZXNz
280 LWNoZWNraW5nIGdhdGVzICpwZXIgcmVnaXN0ZXIqLgo+Cj4gZm9yIFRvbWFzdWx1LCB0aGlzIHJl
281 cXVpcmVzIDEweDUgPSA1MDAgWE9SIGdhdGVzIChwbHVzIHNvbWUKPiBtdWx0aS1pbnB1dCBBTkQg
282 Z2F0ZXMgb24gZWFjaCByb3cpICAgWE9SIGlzIDQgZ2F0ZXMsIHNvIHRoYXQncyAyLDAwMAo+IGdh
283 dGVzICpQRVIgTVVMVEktSVNTVUUgTEFORSouCj4KPiBmb3IgdGhlIDY2MDAsIHRoYXQncyAxMHgz
284 MiAqKkFORCoqIGdhdGVzLiAgMzIwIEFORCBnYXRlcy4KPgo+IGFuZCBvZiB0aG9zZSAzMjAgQU5E
285 IGdhdGVzLCB0aGV5IGFyZSByZS11c2VhYmxlIGZvciBtdWx0aS1pc3N1ZQo+IFdJVEhPVVQgUkVR
286 VUlSSU5HIEFERElUSU9OQUwgR0FURVMuCj4KPiBzbyB0aGF0IGlzIDMyMCBBTkQgZ2F0ZXMgZm9y
287 IHNpbmdsZS1pc3N1ZQo+IHRoYXQgaXMgemVybyBleHRyYSBnYXRlcyBmb3IgZHVhbC1pc3N1ZQo+
288 IHRoYXQgaXMgemVybyBleHRyYSBnYXRlcyBmb3IgcXVhZC1pc3N1ZQo+IHplcm8gZXh0cmEgZ2F0
289 ZXMgZm9yIG9jdGFsLWlzc3VlLgo+Cj4gc3RhcnQgdG8gbWFrZSBzZW5zZSBub3csIHdoeSB1bmFy
290 eSBlbmNvZGluZyBhcyAxRCB2ZWN0b3JzIGlzIGxlc3MKPiBnYXRlcyBhbmQgbGVzcyBwb3dlciB0
291 aGFuIGJpbmFyeSBDQU1zPwo+Cj4gaWYgeW91IHdhbnQgdG8gY2hlY2sgbXVsdGlwbGUgdW5hcnkg
292 Yml0cyAoYSBjcml0aWNhbCBwcmVyZXF1aXNpdGUgZm9yCj4gbXVsdGktaXNzdWUpLCBhbGwgeW91
293 IGRvIGlzLi4uIHNldC4uLiBtdWx0aXBsZS4uLiBiaXRzLgo+Cj4gd2hhdCBoYXBwZW5zPyAgbXVs
294 dGlwbGUgQU5EIGdhdGVzIGZpcmUuICBpbiB0aGUgc2FtZSBjbG9jay4gICBhbmQKPiB0aGF0J3Mg
295 ZXhhY3RseSB3aGF0IHdlIHdhbnQuCj4KPgo+ID4gPiA3LiByZW5hbWUgUlNlcyB0byAiRnVuY3Rp
296 b24gVW5pdHMiIChhY3R1YWxseSBpbiBUaG9ybnRvbidzIGJvb2sgdGhlIHBocmFzZQo+ID4gPiAi
297 Q29tcHV0YXRpb24gVW5pdHMiIGlzIHVzZWQpCj4gPgo+ID4gU28gYSBUb21hc3VsbydzIGRlc2ln
298 biB3aXRoIDQgcm93cyBub3cgYmVjb21lcyBhICJmbGF0dGVuZWQiIGRlc2lnbgo+ID4gd2l0aCA0
299 IGZ1bmN0aW9uYWwgdW5pdHM/IFRoZSBhZGRpdGlvbmFsIGNvc3Qgb2YgdGhlIGZ1bmN0aW9uYWwg
300 dW5pdHMKPiA+IGlzIGVub3Jtb3VzLgo+Cj4gbm8sIGl0J3MgNCB4IDgwIGdhdGVzIChhcHByb3gp
301 LiAgdGhhdCdzIG5vdCA0eCBkdXBsaWNhdGlvbiBvZiBBTFUKPiBwaXBlbGluZXMgKmJlaGluZCog
302 dGhvc2UgNCBGdW5jdGlvbiBVbml0cy4gIHNlZSBNaXRjaCdzIDJuZCBDaGFwdGVyLAo+ICJDb25j
303 dXJyZW50IENvbXB1dGF0aW9uIFVuaXQiCj4KPiBodHRwczovL2xpYnJlLXNvYy5vcmcvM2RfZ3B1
304 L2FyY2hpdGVjdHVyZS82NjAwc2NvcmVib2FyZC82MDB4LWNvbmN1cnJlbnRfY29tcF91bml0LnBu
305 Zwo+Cj4gSmVyZW15OiBpdCdzIHJhdGhlciB1bmZvcnR1bmF0ZSB0aW1pbmcuICBzaXggdG8gdHdl
306 bHZlIG1vbnRocyBhZ28sIHdlCj4gY291bGQgaGF2ZSBoYWQgdGhpcyBkZWJhdGUgYW5kIGl0IHdv
307 dWxkIGhhdmUgYmVlbiBmdW4sIGluZm9ybWF0aXZlLAo+IHVzZWZ1bCBhbmQgcHJvZHVjdGl2ZS4g
308 IGl0IHdvdWxkIGFsc28gaGF2ZSBiZWVuIHBvc3NpYmxlIHRvIGJyaW5nIHlvdQo+IGluIHRvIHRo
309 ZSBkaXNjdXNzaW9ucyB0aGF0IHRvb2sgcGxhY2UgKE5vdiAyMDE4IHRvIGFyb3VuZCBBcHItTWF5
310 Cj4gMjAxOSkgYmV0d2VlbiBteXNlbGYsIFNhbXVlbCBGYWx2bywgTWl0Y2ggQWxzdXAgYW5kIHRo
311 ZSB0ZWFtIGVpdGhlcgo+IGhlcmUgb24gdGhpcyBsaXN0LCBvciBvbiBjb21wLmFyY2guCj4KPiBo
312 b3dldmVyIHdpdGggdGhlIHVwY29taW5nIGRlYWRsaW5lLCB0aGlzIGtpbmQgb2Ygb3RoZXJ3aXNl
313 IHJlYWxseQo+IHZhbHVhYmxlIGRpc2N1c3Npb24gaXMsIHNhZGx5LCBzb21ldGhpbmcgdGhhdCB3
314 ZSAqZG8gbm90IGhhdmUgdGltZQo+IGZvciouCj4KPiByZXRyb3NwZWN0aXZlIHJlY29tbWVuZGF0
315 aW9uIHRoYXQgd2UgcmVjb25zaWRlciBhbmQgdXNlIFRvbWFzdWxvIHdvdWxkCj4gbm90IG9ubHkg
316 cmVzdWx0IGluIHVzIGNvbXBsZXRlbHkgbWlzc2luZyB0aGUgdXBjb21pbmcgT2N0IDIwMjAKPiBk
317 ZWFkbGluZSwgd2Ugd291bGQgZW5kIHVwIHdpdGggYW4gZXhjZXB0aW9uYWxseSBwb29ybHktcGVy
318 Zm9ybWluZywKPiBsaW1pdGVkIGFuZCBzZXJpb3VzbHkgcHJvYmxlbWF0aWMgcHJvY2Vzc29yIGFz
319 IHdlbGwuICB3b3JzZSB0aGFuIHRoYXQsCj4gc2FkbHkgaSBoYXZlIHRvIHNheSB0aGF0IGkgYW0g
320 Y29uY2VybmVkIHRoYXQgYW55IHJldHJvc3BlY3RpdmUKPiBkaXNjdXNzaW9uIHdvdWxkIGl0c2Vs
321 ZiAoYXNpZGUgZnJvbSB2YWx1YWJsZSBjb3JyZWN0aW9ucyBhbmQKPiBhc3Npc3RhbmNlIGluIGNy
322 ZWF0aW5nIGEgY29tcGFyYXRpdmUgYW5hbHlzaXMpIGJlY29tZSBhIHNlcmlvdXMKPiBkaXN0cmFj
323 dGlvbi4KPgo+IGl0J3MgbGlpdHRlcmFsbGx5IHRha2VuIDE4IE1PTlRIcyB0byBnZXQgdG8gdGhl
324 IHBvaW50IHdoZXJlIHdlIGFyZSBub3cKPiB3aXRoIHRoZSBjb2RlIGFuZCB0aGUgZGVzaWduLiAg
325 d2UgbmVlZCB0byBmaW5pc2ggdGhlIGRlc2lnbiBpbiBhIHZlcnkKPiBzaG9ydCB0aW1lZnJhbWUg
326 KDE0IHdlZWtzKSwgYW5kIGFzIFllaG93c2h1YSBwb2ludHMgb3V0LCBkdWUgdG8gdGhlCj4gY29t
327 cGxleGl0eSBvZiB0aGlzIHBhcnRpY3VsYXIgYXJlYSBvZiBDb21wdXRlciBTY2llbmNlLCB0aGF0
328 IGluIHR1cm4KPiBpbXBsaWVzIHRoYXQgeW91J2xsIG5lZWQgdG8gdHJ1c3QgbWUgb24gdGhlIGFy
329 Y2hpdGVjdHVyYWwgYW5hbHlzaXMKPiAod2hpY2ggdG9vayA1IG1vbnRocyB0byBjb21wbGV0ZSwg
330 dW5kZXIgTWl0Y2gncyBndWlkYW5jZSkuCj4KPiBzbywgbXkgYXBvbG9naWVzIGZvciBuZWVkaW5n
331 IHRvIGJlIGZpcm0gb24gdGhpczogdGhlIG9wcG9ydHVuaXR5IHRvCj4gaGVscCBleGlzdHMgd2l0
332 aGluIHRoZSB0aW1lLWZyYW1lIGFuZCBmaW5hbmNpYWwgY29uc3RyYWludHMgdGhhdCB3ZXJlCj4g
333 ZGV0ZXJtaW5lZCBhbmQgc2V0LCBvdmVyIDE4IG1vbnRocyBhZ28sIGJlZm9yZSB5b3Ugam9pbmVk
334 Lgo+Cj4gdGhlcmVmb3JlLCBpZiB5b3UnZCBsaWtlIHRvIGhlbHAsIHRoZW4gYXNraW5nIHF1ZXN0
335 aW9ucyB3aGljaCBhcmUKPiByZWxhdGVkIHRvICp1bmRlcnN0YW5kaW5nKiBvZiB0aGUgcHJlY2lz
336 ZS1hdWdtZW50ZWQgU2NvcmVib2FyZCBzeXN0ZW0sCj4gdGFyZ2V0dGVkIHZlcnkgc3BlY2lmaWNh
337 bGx5IGF0IGFsbG93aW5nIHlvdSB0byBlbmdhZ2UgYW5kIGFzc2lzdCB1cyBpbgo+IG1lZXRpbmcg
338 dGhhdCBkZWFkbGluZSwgYXJlIHZlcnkgd2VsY29tZS4KPgo+IGFueXRoaW5nIG90aGVyIHRoYW4g
339 dGhhdCB2ZXJ5IHNwZWNpZmljIGdvYWwtb3JpZW50YXRlZCBmb2N1cywgaSBhbQo+IHJlYWxseSBz
340 b3JyeSwgd2UgcmVhbGx5IG5lZWQgdG8gbW92ZSBpdCB0byBvbmUgc2lkZSwgYW5kIGZvciB0aGF0
341 LCBpCj4gcmVjb21tZW5kIGNvbXAuYXJjaC4KPgo+IHRoZXJlZm9yZSwgaWYgeW91IHdvdWxkIGxp
342 a2UgdG8gZGlzY3VzcyB0aGUgbWVyaXRzIG9mIFRvbWFzdWxvIHZzCj4gU2NvcmVib2FyZCAocGFy
343 dGljdWxhcmx5IHRob3NlIHRoYXQgcHVyc3VlIHJlY29tbWVuZGluZyBUb21hc3Vsbwo+ICpvdmVy
344 KiBTY29yZWJvYXJkKSBmdXJ0aGVyLCBpIHJlY29tbWVuZCBkb2luZyBzbyBvbiBjb21wLmFyY2gs
345 IHdoaWNoCj4gaXMgd2hlcmUgTWl0Y2ggQWxzdXAgbW9zdCByZWd1bGFybHkgbWF5IGJlIGZvdW5k
346 LiAgd2l0aCB0aGUgcmlnaHQKPiBpbnRlcmVzdGluZyBxdWVzdGlvbiwgYm90aCBoZSBhbmQgbWFu
347 eSBvdGhlcnMgd2lsbCBwaXRjaCBpbi4KPgo+IHRoZSBvbmUgdGhpbmcgdGhhdCB5b3UgbmVlZCB0
348 byBiZSBhd2FyZSBvZiBpcyB0aGF0IE1pdGNoIGlzIGJvdGgKPiBoeXBlci1pbnRlbGxpZ2VudCwg
349 YW5kIHNlY29uZCB0aGF0IGhlIGRvZXMgbm90IHRvbGVyYXRlIHBlb3BsZSB3aG8KPiBjYW5ub3Qg
350 a2VlcCB1cCB3aXRoIGhpbSwgZXNwZWNpYWxseSBpZiB0aGV5IHRyeSB0byBjb252aW5jZSBoaW0g
351 b2YKPiBzb21ldGhpbmcgd2l0aG91dCBoYXZpbmcgZmlyc3QgZGVtb25zdHJhdGVkIHRoYXQgdGhl
352 eSd2ZSB1bmRlcnN0b29kCj4gKmhpbSouICBoZSdzIHdlbGwgb3ZlciA3MCwgaGUncyByZXRpcmVk
353 LCBoZSBtYWRlIGVub3VnaCAieHh4eC15b3UiCj4gbW9uZXkgb24gc2VsbGluZyBHUFUgcGF0ZW50
354 cyB0byBTYW1zdW5nLCBzbyBoZSBkb2Vzbid0IGhhdmUgdG8gcHV0IHVwCj4gd2l0aCBhbnl0aGlu
355 ZyB0aGF0IGhlIGRvZXNuJ3Qgd2FudCB0byA6KQo+Cj4gbC4KPgo+IF9fX19fX19fX19fX19fX19f
356 X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gbGlicmUtcmlzY3YtZGV2IG1haWxpbmcg
357 bGlzdAo+IGxpYnJlLXJpc2N2LWRldkBsaXN0cy5saWJyZS1yaXNjdi5vcmcKPiBodHRwOi8vbGlz
358 dHMubGlicmUtcmlzY3Yub3JnL21haWxtYW4vbGlzdGluZm8vbGlicmUtcmlzY3YtZGV2CgpfX19f
359 X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaWJyZS1yaXNjdi1k
360 ZXYgbWFpbGluZyBsaXN0CmxpYnJlLXJpc2N2LWRldkBsaXN0cy5saWJyZS1yaXNjdi5vcmcKaHR0
361 cDovL2xpc3RzLmxpYnJlLXJpc2N2Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpYnJlLXJpc2N2LWRl
362 dgo=
363