Re: Contributing to ScummVM with an interpreter for Magnetic Scrolls?

Torbjörn Andersson <[email protected]> Wed, 1 May 2019 08:00:31 +0200
Newsgroups gmane.games.devel.scummvm
Message-ID <[email protected]>
IEZyb20gd2hhdCBJIHJlbWVtYmVyLCB0aGUgbWFpbiBmZWF0dXJlIG5vdCBzdXBwb3J0ZWQgYnkg
dGhlIE1hZ25ldGljIAppbnRlcnByZXRlciBpcyBzb21lIG9mIHRoZSAiTWFnbmV0aWMgV2luZG93
cyIgaW50ZXJmYWNlIChvbi1zY3JlZW4gbWFwLCAKY29tcGFzcyByb3NlLCBzZXBhcmF0ZSB3aW5k
b3dzIGZvciBpbnZlbnRvcnkgYW5kIHJvb20gb2JqZWN0cywgaG9ycmlibHkgCmNsdXR0ZXJlZCB3
aW5kb3dpbmcgc3lzdGVtLCAuLi4gb2gsIHNvcnJ5LCB0aGF0IGxhc3QgdGhpbmcgaXNuJ3QgcmVh
bGx5IAphIGZlYXR1cmUsIGlzIGl0PykgdXNlZCBieSBXb25kZXJsYW5kIGFuZCB0aGUgTWFnbmV0
aWMgU2Nyb2xscyBDb2xsZWN0aW9uLgoKQXQgbGVhc3QgYXMgbG9uZyBhcyB0aGUgZnJvbnQgZW5k
IGltcGxlbWVudHMgdGhlIG5lY2Vzc2FyeSBob29rcyBmb3IgCmRpc3BsYXlpbmcgc3RhdGljIGFu
ZCBhbmltYXRlZCBwaWN0dXJlcywgZXRjLiBJJ20gbm90IHN1cmUgaWYgaXQgbG9hZHMgCnRoZSBv
cmlnaW5hbCBkYXRhIGZpbGVzLCBvciBpZiB0aGV5IGhhdmUgdG8gYmUgc3BlY2lhbGx5IHByZXBh
cmVkLiAoVGhlIApmaWxlcyBvbiBteSBNYWduZXRpYyBTY3JvbGxzIENvbGxlY3Rpb24gQ0QgY2Vy
dGFpbmx5IGRvbid0IGxvb2sgbGlrZSAKYW55dGhpbmcgdGhlIGVtdWxhdG9yIHdvdWxkIHJlY29n
bml6ZS4pCgpBbHNvLCBpdCBkb2Vzbid0IHRyeSB0byBlbXVsYXRlIHRoZSBvcmlnaW5hbCBsb29r
IG9mIHRoZSBnYW1lcyB3aXRoIGl0cyAKYW5pbWF0ZWQgbWVudXMgYW5kIHB1bGwtZG93biBncmFw
aGljcy4gV2hpY2ggaXMgYSBiaXQgb2YgYSBzaGFtZSBvciwsIGluIAp0aGUgY2FzZSBvZiB0aGUg
TWFnbmV0aWMgV2luZG93cyBpbnRlcmZhY2UsIGEgaHVnZSByZWxpZWYuCgpXaGVuIEkgYXNrZWQg
WzFdIG9uIHRoZSBTdHJhbmQgR2FtZXMgZm9ydW0gKHRoZSBjb21wYW55IGluIHRoZSBwcm9jZXNz
IApvZiByZW1hc3RlcmluZyB0aGUgTWFnbmV0aWMgU2Nyb2xscyBnYW1lcywgYWZ0ZXIgdGhlIHNv
dXJjZSBjb2RlIHdhcyAKcmVjb3ZlcmVkIGZyb20gYSBiYWNrdXAgdGFwZSBbMl0pIGlmIHRoZXkg
d2VyZSBwbGFubmluZyBvbiByZWxlYXNlIHRoZSAKb3JpZ2luYWwgdmVyc2lvbnMgYXMgd2VsbCwg
anVzdCBmb3Igbm9zdGFsZ2lhLCBJIGdvdCBhIHJlcGx5IGZyb20gSHVnaCAKU3RlZXJzIHJlZmVy
cmluZyBtZSB0byBTdGVmYW4gTWVpZXIncyAiTWFnbmV0aWMgU2Nyb2xscyBNZW1vcmlhbCIgZm9y
IApkYXRhIGZpbGVzIGZvciB0aGUgZW11bGF0b3IuCgpTaW5jZSAiU3RyYW5kIEdhbWVzIHdhcyBz
dGFydGVkIGJ5IEh1Z2ggU3RlZXJzIC0gYSBmb3VuZGluZyBtZW1iZXIgYW5kIApjb3JlIGRldmVs
b3BlciBvZiBNYWduZXRpYyBTY3JvbGxzIGFuZCBTdGVmYW4gTWVpZXIsIGN1cmF0b3Igb2YgCmlm
LWxlZ2VuZHMub3JnIiBhbmQgdGhleSBjbGFpbSB0byBoYXZlIHRoZSBzdXBwb3J0IG9mICJzZXZl
cmFsIG1lbWJlcnMgCm9mIHRoZSBvcmlnaW5hbCBNYWduZXRpYyBTY3JvbGxzIHRlYW0iIFszXSwg
SSBndWVzcyB0aG9zZSBmaWxlcyBhcmUgCmtpaWluZC1vZiBvZmZpY2lhbGx5IGVuZG9yc2VkLi4u
PyBJdCdzIHByb2JhYmx5IHdvcnRoIGFza2luZyB0aGVtIGFnYWluIApsYXRlci4KClsxXSBodHRw
czovL3N0cmFuZGdhbWVzLmNvbS9jb21tdW5pdHkvZGlzY3Vzc2lvbi82NS90aGUtb3JpZ2luYWwt
dmVyc2lvbnMKWzJdIApodHRwczovL3N0cmFuZGdhbWVzLmNvbS9ibG9nL21hZ25ldGljLXNjcm9s
bHMtZ2FtZXMtc291cmNlLWNvZGUtcmVjb3ZlcmVkClszXSBodHRwczovL3N0cmFuZGdhbWVzLmNv
bS9hYm91dAoKVG9yYmrDtnJuIEFuZGVzc29uCgpPbiAwMS8wNS8yMDE5IDA1LjEwLCBQYXVsIEdp
bGJlcnQgd3JvdGU6Cj4gSGkgVGhvbWFzLAo+IAo+IEknbSBub3Qgc3VyZSBvZiB0aGUgc3RhdHVz
IG9mIHRoZSBHYXJnb3lsZSBNYWduZXRpYyBTY3JvbGxzIHN1Yi1lbmdpbmUsIAo+IGFuZCBJIGRv
bid0IGN1cnJlbnRseSBoYXZlIGFueSBNYWduZXRpYyBTY3JvbGxzIGdhbWVzIGhhbmR5IHRvIHRl
c3QgaXQgCj4gb24uIEJ1dCB1bmxlc3MgaXQncyBzaWduaWZpY2FudGx5IGxhY2tpbmcgaW4gc3Vw
cG9ydCBmb3IgdGhlIGxhdGVyIGdhbWVzIAo+IHRoYXQgeW91ciBvd24gd29yayBhZGRzIHN1cHBv
cnQgZm9yLCBpdCdsbCBsaWtlbHkgcHJvdmUgZWFzaWVyIHRvIHdvcmsgCj4gb24gY29udmVydGlu
ZyBpdCwgSSdtIGFmcmFpZC4gU2luY2UsIGFmdGVyIGFsbCwgc29tZW9uZSBlbHNlIGhhcyBhbHJl
YWR5IAo+IGRvbmUgdGhlIHdvcmsgb2YgaG9va2luZyBpdCB1cCB0byBHbGsgYXMgd2VsbC4gU28g
aXQnbGwgYmUgZWFzaWVyIHRvIGRvIAo+IG1pbmltYWwgd29yayAocmVsYXRpdmVseSBzcGVha2lu
ZykgdG8gaG9vayBpdCB1cCB0byB0aGUgU2N1bW1WTSB2ZXJzaW9uIAo+IG9mIHRoZSBHbGsgbGF5
ZXIuIEFuZCB0aGVuIEkgY2FuIGtlZXAgdGVzdGluZyBpdCBhcyBJIHByb3Blcmx5IG9iamVjdGlm
eSAKPiBldmVyeXRoaW5nIHRvIG1ha2Ugc3VyZSBJIGRvbid0IGJyZWFrIGFueXRoaW5nIGFsb25n
IHRoZSB3YXkuCj4gCj4gVGhvdWdoIEknbGwgYmUgdW5saWtlbHkgdG8gYmUgc3BlbmRpbmcgbXVj
aCB0aW1lIGJleW9uZCBiYXNpYyBwb2xpc2hpbmcgCj4gdXAgb2YgdGhlIHN1Yi1lbmdpbmUgYWZ0
ZXJ3YXJkcy4gU28gYmFzZWQgb24geW91ciBleHBlcmllbmNlIHdpdGggdGhlIAo+IGdhbWVzICYg
ZW5naW5lIGludm9sdmVkLCB0aGVyZSBtaWdodCBiZSBvcHBvcnR1bml0aWVzIGFmdGVyd2FyZHMg
Zm9yIHlvdSAKPiB0byBjb250cmlidXRlIGlmIHlvdSdyZSBpbnRlcmVzdGVkLCBhbmQgdG8gZG8g
cHVsbCByZXF1ZXN0cyB0byBpbXByb3ZlIAo+IHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBlbmdp
bmUgYmFzZWQgb24geW91ciB3b3JrLgo+IAo+IFJlZ2FyZHMsCj4gCj4gUGF1bC4KPiAKPiAKPiBP
biBXZWQsIE1heSAxLCAyMDE5IGF0IDI6NTUgQU0gZGV0dHVzIDxkZXR0dXNAZGV0dHVzLm5ldCAK
PiA8bWFpbHRvOmRldHR1c0BkZXR0dXMubmV0Pj4gd3JvdGU6Cj4gCj4gICAgIEhlbGxvLgo+IAo+
IAo+ICAgICBJIG11c3QgYWRtaXQgdGhhdCBJIGhhdmUgbm90IGhlYXJkIGFib3V0IEdhcmdveWxl
IG9yIEdMSyBiZWZvcmUuCj4gCj4gICAgIEp1ZGdpbmcgZnJvbSB0aGUgZ2l0aHViIHJlcG9zaXRv
cnksIHRoZSBHYXJnb3lsZSBlbmdpbmUgZm9yIE1hZ25ldGljCj4gICAgIFNjcm9sbHMgaXMgdXNp
bmcgdGhlIG9yaWdpbmFsIG1hZ25ldGljIGludGVycHJldGVyIGZyb20gTmljbGFzCj4gICAgIEth
cmxzb24uIFdoYXQgaGUgZGlkIHdhcywgYXMgZmFyIGFzIEkga25vdywgcmV2ZXJzZS1lbmdpbmVl
ciB0aGUgQzY0Cj4gICAgIHBvcnRzIG9mIHRoZSBNYWduZXRpYyBTY3JvbGxzIGdhbWVzIGluIGEg
cGFpbnN0YWtpbmcgcHJvY2VzcyB0byBtYWtlCj4gICAgIHRoZW0gcnVuIG9uIERPUy4gV2hhdCBJ
IGRpZCB3YXMgc3RhcnRpbmcgZnJvbSBzY3JhdGNoIGFuZCB1c2luZyBoaXMKPiAgICAgY29kZSBh
cyBhIHJlZmVyZW5jZS4gSGlzIGNvZGUgaXMgcHJvYmFibHkgbW9yZSBzZXR0bGVkIHRoYW4gbWlu
ZS4KPiAgICAgUGx1cywgSSdkIGhhdGUgdG8gc3RlcCBvbiBzb21lYm9keSdzIHRvZXMgd2hvIGhh
cyBhbHJlYWR5IGludmVzdGVkCj4gICAgIGNvcGlvdXMgYW1vdW50cyBvZiB0aW1lIGFuZCBlbmVy
Z3kgaW50byBhIHByb2plY3QsIHNvIGlmIHlvdSBwcmVmZXIKPiAgICAgdG8gdXNlIGhpcyBjb2Rl
OiBQbGVhc2UsIHBsZWFzZSBkbyBzbyEKPiAKPiAgICAgV2hhdCBJIGNhbiBvZmZlciB5b3UgaXMg
YW4gZW5naW5lIHVzaW5nIGEgbW9yZSBtb2Rlcm4gY29kaW5nIHN0eWxlLgo+ICAgICBFdmVuIHRo
b3VnaCBpdCBpcyBDLCBJIGFtIHN1cmUgdGhhdCBpdCBjYW4gYmUgaW50ZWdyYXRlZCBlYXNpbHkg
d2l0aAo+ICAgICBDKysgcHJvamVjdHMuIEkgaGF2ZSB3b3JrZWQgd2l0aCBwcm9qZWN0cyB0aGF0
IHVzZSBib3RoIGxhbmd1YWdlcwo+ICAgICBhbmQgSSBhbSBleHBlcmllbmNlZCBpbiBkZXNpZ25p
bmcgQVBJcyBmb3IgdGhhdC4KPiAKPiAKPiAgICAgVGh1cyBmYXIsIEkgaGF2ZSB0aGUgZm9sbG93
aW5nIGZ1bmN0aW9uIHBvaW50ZXJzIGZvciBjYWxsYmFja3M6Cj4gCj4gCj4gICAgIHR5cGVkZWYg
aW50ICgqY2JMaW5lQU91dHB1dENoYXIpKHZvaWQqIGNvbnRleHQsY2hhciBjLHVuc2lnbmVkIGNo
YXIKPiAgICAgY29udHJvbEQyLHVuc2lnbmVkIGNoYXIgZmxhZ19oZWFkbGluZSk7Cj4gICAgIHR5
cGVkZWYgaW50ICgqY2JMaW5lQU91dHB1dFN0cmluZykodm9pZCogY29udGV4dCxjaGFyKgo+ICAg
ICBzdHJpbmcsdW5zaWduZWQgY2hhciBjb250cm9sRDIsdW5zaWduZWQgY2hhciBmbGFnX2hlYWRs
aW5lKTsKPiAgICAgdHlwZWRlZiBpbnQgKCpjYkxpbmVBSW5wdXRTdHJpbmcpKHZvaWQqIGNvbnRl
eHQsaW50KiBsZW4sY2hhciogc3RyaW5nKTsKPiAgICAgdHlwZWRlZiBpbnQgKCpjYkxpbmVBRHJh
d1BpY3R1cmUpKHZvaWQqIGNvbnRleHQsdFBpY3R1cmUqCj4gICAgIHBpY3R1cmUsaW50IG1vZGUp
Owo+ICAgICB0eXBlZGVmIGludCAoKmNiTGluZUFTYXZlR2FtZSkodm9pZCogY29udGV4dCxjaGFy
KiBmaWxlbmFtZSx2b2lkKgo+ICAgICBwdHIsaW50IGxlbik7Cj4gICAgIHR5cGVkZWYgaW50ICgq
Y2JMaW5lQUxvYWRHYW1lKSh2b2lkKiBjb250ZXh0LGNoYXIqIGZpbGVuYW1lLHZvaWQqCj4gICAg
IHB0cixpbnQgbGVuKTsKPiAKPiAgICAgQXMgd2VsbCBhcyB0aG9zZSBBUEkgZnVuY3Rpb25zOgo+
IAo+ICAgICAvLyBjb25maWd1cmF0aW9uIGZ1bmN0aW9ucwo+ICAgICBpbnQgbGluZUFfZ2V0c2l6
ZShpbnQqIHNpemUpOwo+ICAgICBpbnQgbGluZUFfaW5pdCh2b2lkKiBoTGluZUEsdm9pZCogcFNo
YXJlZE1lbSxpbnQKPiAgICAgKnNoYXJlZG1lbXNpemUsdm9pZCogcE1hZyxpbnQgbWFnc2l6ZSx2
b2lkKiBwR2Z4LGludCBnZnhzaXplKTsKPiAgICAgaW50IGxpbmVBX2dldFZlcnNpb24odm9pZCog
aExpbmVBLGludCogdmVyc2lvbik7Cj4gICAgIGludCBsaW5lQV9zZXRDQm91dHB1dENoYXIodm9p
ZCogaExpbmVBLGNiTGluZUFPdXRwdXRDaGFyIHBDQix2b2lkCj4gICAgICpjb250ZXh0KTsKPiAg
ICAgaW50IGxpbmVBX3NldENCb3V0cHV0U3RyaW5nKHZvaWQqIGhMaW5lQSxjYkxpbmVBT3V0cHV0
U3RyaW5nCj4gICAgIHBDQix2b2lkKiBjb250ZXh0KTsKPiAgICAgaW50IGxpbmVBX3NldENCaW5w
dXRTdHJpbmcodm9pZCogaExpbmVBLGNiTGluZUFJbnB1dFN0cmluZyBwQ0Isdm9pZCoKPiAgICAg
Y29udGV4dCk7Cj4gICAgIGludCBsaW5lQV9zZXRDQkRyYXdQaWN0dXJlKHZvaWQqIGhMaW5lQSxj
YkxpbmVBRHJhd1BpY3R1cmUgcENCLHZvaWQqCj4gICAgIGNvbnRleHQpOwo+ICAgICBpbnQgbGlu
ZUFfc2V0Q0JTYXZlR2FtZSh2b2lkKiBoTGluZUEsY2JMaW5lQVNhdmVHYW1lIHBDQix2b2lkKiBj
b250ZXh0KTsKPiAgICAgaW50IGxpbmVBX3NldENCTG9hZEdhbWUodm9pZCogaExpbmVBLGNiTGlu
ZUFMb2FkR2FtZSBwQ0Isdm9pZCogY29udGV4dCk7Cj4gCj4gCj4gICAgIFlvdSB0eXBpY2FsbHkg
aW5pdGlhbGl6ZSB0aGUgZW5naW5lIHdpdGggcG9pbnRlcnMgdG8gdGhlIGdhbWUKPiAgICAgYmlu
YXJpZXMsIHNldCB0aGUgZnVuY3Rpb24gcG9pbnRlcnMsIGFuZCBsZXQgaXQgcnVuLiBXaGVuIGl0
IHJlYWNoZXMKPiAgICAgYSBwb2ludCB3aGVyZSBhbiBpbnB1dCBpcyByZXF1aXJlZCwgdGhlIGVu
Z2luZSBnZW5lcmF0ZXMgYSBjYWxsYmFjawo+ICAgICBhbmQgcGF1c2VzIHVudGlsIHRoZSBjYWxs
YmFjayByZXR1cm5zLgo+IAo+IAo+ICAgICBSZWdhcmRpbmcgcGljdHVlczogVGhleSBhcmUgYWxz
byBiZWluZyByZW5kZXJlZCBpbnRlcm5hbGx5LCBhbmQKPiAgICAgYW5vdGhlciBjYWxsYmFjayBp
cyB0cmlnZ2VyZWQuIEFuIHVwcGVyIGxheWVyIG11c3QgZHJhdyBpdCBpbgo+ICAgICB3aGF0ZXZl
ciB3YXkgaXQgZGVlbXMgYXBwcm9wcmlhdGUuIFNvLCBpdCBkb2VzIG5vdCByZWFsbHkgY2FyZSB3
aGVyZQo+ICAgICBpdCBzaXRzLCBvciBpZiBpdCB3aWxsIGV2ZW4gYmUgZGlzcGxheWVkLiBUaGUg
ZGF0YSBmb3JtYXQgaXRzZWxmIGlzCj4gICAgIHZlcnkgYmFzaWMsIGFsbW9zdCAueHBtLgo+IAo+
IAo+ICAgICB0eXBlZGVmIHN0cnVjdCBfdFBpY3R1cmUKPiAgICAgewo+ICAgICAgwqDCoMKgwqDC
oMKgwqAgdW5zaWduZWQgaW50IHBhbGV0dGVbMTZdOwo+ICAgICAgwqDCoMKgwqDCoMKgwqAgaW50
IGhlaWdodDsKPiAgICAgIMKgwqDCoMKgwqDCoMKgIGludCB3aWR0aDsKPiAgICAgIMKgwqDCoMKg
wqDCoMKgIGNoYXIgcGl4ZWxzWzY1NTM2XTsKPiAgICAgfSB0UGljdHVyZTsKPiAKPiAKPiAgICAg
SSBhbSBzdXJlIEkgY2FuIGRlc2lnbiBhbiBleHRyYSBmdW5jdGlvbiBmb3IgYW5pbWF0aW9ucywg
c3VjaCBhcyB0aGlzOgo+IAo+ICAgICB0eXBlZGVmIGludCAoKmNiTGluZUFEcmF3QW5pbWF0aW9u
KSh2b2lkKiBjb250ZXh0LHRQaWN0dXJlKgo+ICAgICBmcmFtZXNbXSxpbnQgbW9kZSxpbnQgZnJh
bWVudW0saW50IGRlbGF5KTsKPiAKPiAKPiAKPiAgICAgUGxlYXNlIGxldCBtZSBrbm93IGlmIHRo
aXMgaXMgb2YgaW50ZXJlc3RlZCB0byB5b3UuCj4gCj4gICAgIFRob21hcwo+IAo+IAo+IAo+ICAg
ICBPbiA0LzMwLzE5IDI6MjAgQU0sIFBhdWwgR2lsYmVydCB3cm90ZToKPj4gICAgIEhpIGd1eXMs
Cj4+Cj4+ICAgICBUaGFua3MgZm9yIHRoZSBleGNlbGxlbnQgc3VtbWFyeSBvZiB0aGUgY3VycmVu
dCBzdGF0dXMsIEZpbGlwcG9zLgo+PiAgICAgQXMgaGUgc2FpZCwgSSdtIGN1cnJlbnRseSBpbiB0
aGUgbWlkZGxlIG9mIHdvcmtpbmcgbXkgd2F5IHRocm91Z2gKPj4gICAgIGNvbnZlcnRpbmcgYWxs
IHRoZSBHYXJnb3lsZSBlbmdpbmVzIHRvIFNjdW1tVk0sIGNsZWFuaW5nIHRoZW0gdXAKPj4gICAg
IGFuZCBtYWtpbmcgdGhlbSBjb25mb3JtIHRvIG91ciBjb2RpbmcgcmVxdWlyZW1lbnRzLCBhcyB3
ZWxsIGFzCj4+ICAgICBtYWtpbmcgdGhlbSBwcm9wZXIgQysrIGNsYXNzZXMuIElmIHlvdSBkbyBk
ZWNpZGUgdG8gd29yayBvbiB0aGUKPj4gICAgIEdhcmdveWxlIHN1Yi1lbmdpbmUsIHBsZWFzZSBs
ZXQgbWUga25vdy4uIEknbGwgaG9sZCBvZmYgd29ya2luZyBvbgo+PiAgICAgaXQgdW50aWwgYWZ0
ZXIgSSd2ZSBjb252ZXJ0ZWQgdGhlIHJlbWFpbmluZyBzdWItZW5naW5lcy4gVGhhdCdsbAo+PiAg
ICAgZ2l2ZSB5b3UgcGxlbnR5IG9mIHRpbWUuLiB0aGUgVEFEUyAmIEh1Z28gc3ViLWVuZ2luZXMg
YXJlIGJpZwo+PiAgICAgZW5vdWdoIHRoYXQgdGhhdCdsbCBsaWtlbHkgdGFrZSBtZSBhIHdoaWxl
IHRvIGZpbmlzaCBjb252ZXJ0aW5nIDopLgo+Pgo+PiAgICAgSWYgeW91IGhhdmUgYW55IHF1ZXN0
aW9ucyBhYm91dCB0aGUgR2xrIGVuZ2luZSBzcGVjaWZpY2FsbHksIGZlZWwKPj4gICAgIGZyZWUg
dG8gZHJvcCBtZSBhwqBsaW5lLsKgIFRoZXJlJ3MgYWxzbyB0aGUgdGVjaG5pY2FsIGZvcnVtcyBh
dAo+PiAgICAgaW50ZmljdGlvbi5vcmcgPGh0dHA6Ly9pbnRmaWN0aW9uLm9yZz4uIFRob3VnaCBt
eSBzY2hlZHVsZSBpcyBhCj4+ICAgICBiaXQgcGFja2VkIGZvciB0aGXCoG5leHQgZmV3IHdlZWtz
LCBzbyBpZiB5b3UgZG8gZW1haWwsIEkgbWF5IHRha2UKPj4gICAgIGEgYml0IHRvIGdldCBiYWNr
IHRvIHlvdS4KPj4KPj4gICAgIEFzIGZhciBhcyBtdXNpYyBhbmQgYW5pbWF0aW9uIGdvZXMsIG11
c2ljIGF0IGxlYXN0IHNob3VsZCBiZSBlYXN5LAo+PiAgICAgc28gbG9uZyBhcyBpdCdzIGEgc3Rh
bmRhcmQgZm9ybWF0IFNjdW1tVk0gdW5kZXJzdGFuZHMuIEN1cnJlbnRseQo+PiAgICAgdGhlIGVu
Z2luZSBzdXBwb3J0cyByYXcgc291bmQsIHdhdiBmaWxlcywgYWlmZiwgYW5kIG1wMy4gQXMgZm9y
Cj4+ICAgICBncmFwaGljcywgdGhhdCdzIHNvbWV3aGF0IHN0cmFpZ2h0Zm9yd2FyZCBhcyB3ZWxs
LCBhcyBsb25nIGFzIHRoZQo+PiAgICAgZ3JhcGhpY3MgY2FuIGJlIHNlZ21lbnRlZCBpbnRvIGNv
bXBsZXRlbHkgc2VwYXJhdGUgd2luZG93cyB0aGFuCj4+ICAgICB0aGUgdGV4dCwgYW5kIGl0IGxv
b2tzIGxpa2UgdGhlIE1hZ25ldGljIFNjcm9sbCBnYW1lcyBkby4uIHdoZW4KPj4gICAgIHlvdSBj
cmVhdGUgd2luZG93cyBpbiBHbGssIHlvdSBjYW4gc3BlY2lmeSB3aGF0IHBvcnRpb24gb2YgdGhl
Cj4+ICAgICBzY3JlZW4gZWFjaCB3aWxsIHVzZSAoZm9yIHRleHQgdnMgZ3JhcGhpY3MpLiBJJ3Zl
IGhhZCBhIGxvdCBvZgo+PiAgICAgdHJvdWJsZSB3aXRoIHRoZSBGcm90eiBzdWItZW5naW5lLCBi
dXQgb25seSBiZWNhdXNlIGdyYXBoaWNzIGFuZAo+PiAgICAgdGV4dCBjYW4gaW50ZXJtaW5nbGUg
aW4gdGhlIHNhbWUgd2luZG93cywgd2hpY2ggR2xrIGRvZXNuJ3QgYWxsb3cuCj4+Cj4+ICAgICBS
ZWdhcmRzLAo+Pgo+PiAgICAgUGF1bCBHaWxiZXJ0IChha2EgRHJlYW1NYXN0ZXIpLgo+Pgo+Pgo+
Pgo+Pgo+Pgo+PiAgICAgT24gTW9uLCBBcHIgMjksIDIwMTkgYXQgNzoxOCBQTSBGaWxpcHBvcyBL
YXJhcGV0aXMKPj4gICAgIDxibHVlZ3JAZ21haWwuY29tIDxtYWlsdG86Ymx1ZWdyQGdtYWlsLmNv
bT4+IHdyb3RlOgo+Pgo+PiAgICAgICAgIFNvcnJ5LCBmb3Jnb3QgdG8gc2F5IHRoYXQgdGhlIGds
ayBlbmdpbmUgaW4gU2N1bW1WTSBjYW4gYmUKPj4gICAgICAgICBmb3VuZCBoZXJlOgo+PiAgICAg
ICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9zY3VtbXZtL3NjdW1tdm0vdHJlZS9tYXN0ZXIvZW5naW5l
cy9nbGsKPj4KPj4gICAgICAgICBUaGVyZSBhcmUgY3VycmVudGx5IHN1YmVuZ2luZXMgZm9yIHRo
ZSBhbGFuMiwgZnJvdHosIGdsdWx4ZSwKPj4gICAgICAgICBtYWduZXRpYywgc2NvdHQsIGFuZCB0
YWRzIGludGVycHJldGVycywgaW4gdmFyaW91cyBzdGFnZXMgb2YKPj4gICAgICAgICBkZXZlbG9w
bWVudC4gZHJlYW1tYXN0ZXIgaXMgbWFpbmx5IHdvcmtpbmcgb24gdGhlc2UuIFlvdSBjYW4KPj4g
ICAgICAgICBhbHNvIGZpbmQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdsayBlbmdpbmUgaW4gb3Vy
IHdpa2k6Cj4+ICAgICAgICAgaHR0cHM6Ly93aWtpLnNjdW1tdm0ub3JnL2luZGV4LnBocD90aXRs
ZT1TY3VtbUdsawo+Pgo+PiAgICAgICAgIFJlZ2FyZHMKPj4gICAgICAgICBGaWxpcHBvcyBLYXJh
cGV0aXMKPj4KPj4gICAgICAgICBPbiBNb24sIEFwciAyOSwgMjAxOSBhdCAxMjoxNCBQTSBGaWxp
cHBvcyBLYXJhcGV0aXMKPj4gICAgICAgICA8Ymx1ZWdyQGdtYWlsLmNvbSA8bWFpbHRvOmJsdWVn
ckBnbWFpbC5jb20+PiB3cm90ZToKPj4KPj4gICAgICAgICAgICAgSGVsbG8sIGFuZCBnbGFkIHRv
IGhlYXIgYWJvdXQgeW91ciBpbnRlcmVzdCBpbiBTY3VtbVZNLAo+PiAgICAgICAgICAgICBhbmQg
eW91ciB3b3JrIG9uIHRoZSBNYWduZXRpYyBTY3JvbGxzIGdhbWVzIQo+Pgo+PiAgICAgICAgICAg
ICBJdCdzIGdyZWF0IHRoYXQgeW91IGFyZSB3b3JraW5nIG9uIHRoaXMuIEJlYXIgaW4gbWluZCwK
Pj4gICAgICAgICAgICAgdGhvdWdoLCB0aGF0IHRoZXJlIGhhcyBiZWVuIGV4dGVuc2l2ZSB3b3Jr
IG9uIHRoZSBNYWduZXRpYwo+PiAgICAgICAgICAgICBTY3JvbGxzIGdhbWVzLCB3aGljaCBoYXMg
YmVlbiBpbnRlZ3JhdGVkIGludG8gdGhlIEdhcmdveWxlCj4+ICAgICAgICAgICAgIGludGVycHJl
dGVyOgo+PiAgICAgICAgICAgICBodHRwOi8vY2N4dmlpLm5ldC9nYXJnb3lsZS8KPj4KPj4gICAg
ICAgICAgICAgR2FyZ295bGUgaXMgYmVpbmcgaW50ZWdyYXRlZCBhcyBhIHN1YmVuZ2luZSBpbnRv
IFNjdW1tVk0sCj4+ICAgICAgICAgICAgIGluIHRoZSBnbGsgZW5naW5lLiBUaGUgZ2xrIGVuZ2lu
ZSBpcyBhIHBvcnQgb2YgdGhlCj4+ICAgICAgICAgICAgIEdhcmdveWxlIGVuZ2luZSBpbnRvIFNj
dW1tVk0uIFRoZXJlJ3MgYW4gZXh0ZW5zaXZlIHdpa2kKPj4gICAgICAgICAgICAgZm9yIEdhcmdv
eWxlLCBoZXJlOgo+PiAgICAgICAgICAgICBodHRwOi8vaWZ3aWtpLm9yZy9pbmRleC5waHAvR2Fy
Z295bGUKPj4KPj4gICAgICAgICAgICAgU28sIG15IGFkdmljZSB3b3VsZCBiZSB0byBtYWtlIHlv
dXIgZW5naW5lIHBhcnQgb2YgdGhlIGdsawo+PiAgICAgICAgICAgICBlbmdpbmUsIGFuZCBiYXNl
IHlvdXIgd29yayBvbiB0aGUgYWxyZWFkeSB3b3JraW5nIE1hZ25ldGljCj4+ICAgICAgICAgICAg
IFNjcm9sbHMgaW50ZXJwcmV0ZXIgZnJvbSB0aGUgR2FyZ295bGUgZW5naW5lLiBUaGUKPj4gICAg
ICAgICAgICAgaW50ZXJwcmV0ZXIgaXMgb3BlbiBzb3VyY2UsIGFuZCBjYW4gYmUgZm91bmQgaGVy
ZToKPj4gICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2dhcmdsay9nYXJnbGsvdHJlZS9t
YXN0ZXIvdGVycHMvbWFnbmV0aWMKPj4KPj4gICAgICAgICAgICAgVGhlIGxpc3Qgb2Ygc3VwcG9y
dGVkIE1hZ25ldGljIFNjcm9sbHMgZ2FtZXMgY2FuIGJlIGZvdW5kCj4+ICAgICAgICAgICAgIGhl
cmU6Cj4+ICAgICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9nYXJnbGsvZ2FyZ2xrL2Jsb2Iv
bWFzdGVyL3RlcnBzL21hZ25ldGljL0dlbmVyaWMvZ2FtZXMudHh0Cj4+Cj4+ICAgICAgICAgICAg
IEFuZCB0aGVyZSdzIGFuIGFyY2hpdmUgYWJvdXQgaW50ZXJhY3RpdmUgZmljdGlvbiBnYW1lcywK
Pj4gICAgICAgICAgICAgd2hlcmUgYSBsb3Qgb2YgcmVzb3VyY2VzIGFib3V0IHRoZSBNYWduZXRp
YyBTY3JvbGxzIGdhbWVzCj4+ICAgICAgICAgICAgIGNhbiBiZSBmb3VuZCwgaGVyZToKPj4gICAg
ICAgICAgICAgaHR0cDovL3d3dy5pZmFyY2hpdmUub3JnL2luZGV4ZXMvaWYtYXJjaGl2ZS9tYWdu
ZXRpYy1zY3JvbGxzLwo+Pgo+PiAgICAgICAgICAgICBUaGFua3MgZm9yIHlvdXIgaW50ZXJlc3Qg
aW4gdGhlc2UgZ2FtZXMhIEl0IHdvdWxkIGJlIGdyZWF0Cj4+ICAgICAgICAgICAgIHRvIHNlZSB5
b3VyIHdvcmsgb24gdGhlbSA6KQo+Pgo+PiAgICAgICAgICAgICBSZWdhcmRzCj4+ICAgICAgICAg
ICAgIEZpbGlwcG9zIEthcmFwZXRpcwo+Pgo+Pgo+PiAgICAgICAgICAgICBPbiBNb24sIEFwciAy
OSwgMjAxOSBhdCAxMDowOCBBTSBkZXR0dXMgPGRldHR1c0BkZXR0dXMubmV0Cj4+ICAgICAgICAg
ICAgIDxtYWlsdG86ZGV0dHVzQGRldHR1cy5uZXQ+PiB3cm90ZToKPj4KPj4gICAgICAgICAgICAg
ICAgIEhlbGxvLgo+Pgo+Pgo+PiAgICAgICAgICAgICAgICAgTXkgbmFtZSBpcyBUaG9tYXMsIEkg
YW0gYSBiaWcgZmFuIG9mIFNjdW1tVk0uCj4+Cj4+ICAgICAgICAgICAgICAgICBDdXJyZW50bHks
IEkgYW0gaW4gdGhlIHByb2Nlc3Mgb2Ygd3JpdGluZyBhbgo+PiAgICAgICAgICAgICAgICAgaW50
ZXJwcmV0ZXIgZm9yIGNsYXNzaWMKPj4gICAgICAgICAgICAgICAgIHRleHQgYWR2ZW50dXJlcyBm
cm9tIE1hZ25ldGljIFNjcm9sbHMsIHN1Y2ggYXMgIlRoZQo+PiAgICAgICAgICAgICAgICAgUGF3
biIgb3IgIlRoZSBHdWlsZAo+PiAgICAgICAgICAgICAgICAgT2YgVGhpZXZlcyIuCj4+Cj4+ICAg
ICAgICAgICAgICAgICBFdmVuIHRob3VnaCBJIGFtIG5vdCBzYXlpbmcgdGhhdCBpdCBTSE9VTEQg
YmUKPj4gICAgICAgICAgICAgICAgIGludGVncmF0ZWQgaW50byBTY3VtbVZNLCBJCj4+ICAgICAg
ICAgICAgICAgICB3b3VsZCBsaWtlIHRvIHRoaW5rIHRoYXQgaXQgQ09VTEQuIEl0IGlzIFdBWSB0
byBlYXJseQo+PiAgICAgICAgICAgICAgICAgdG8gcmVhbGx5IHN0YXJ0Cj4+ICAgICAgICAgICAg
ICAgICBpbnRlZ3JhdGluZyBpdCwgYnV0IEkgbGlrZSB0byBiZSBwcmVwYXJlZC4KPj4KPj4KPj4K
Pj4gICAgICAgICAgICAgICAgIFNvLCB0aGUgcmVhc29uIHdoeSBJIGFtIHdyaXRpbmcgdGhpcyBt
YWlsIGlzIGJlY2F1c2UgSQo+PiAgICAgICAgICAgICAgICAgd291bGQgYmUKPj4gICAgICAgICAg
ICAgICAgIGludGVyZXN0ZWQgYXMgb24gaG93IEkgd291bGQgaGF2ZSB0byBkZXNpZ24gbXkgY29k
ZSB0bwo+PiAgICAgICAgICAgICAgICAgbWFrZSBpdCBwb3NzaWJsZS4KPj4gICAgICAgICAgICAg
ICAgIEN1cnJlbnRseSwgbXkgaW50ZXJwcmV0ZXIgbmVlZHMgYSBjb3VwbGUgb2YgaG9va3MgaW50
bwo+PiAgICAgICAgICAgICAgICAgYW55IGZvcm0gb2YgR1VJOgo+Pgo+PiAgICAgICAgICAgICAg
ICAgLSBJbml0aWFsaXphdGlvbiwgd2hlcmUgcG9pbnRlcnMgdG8gdGhlIG9yaWdpbmFsCj4+ICAg
ICAgICAgICAgICAgICBiaW5hcmllcyBhcmUgYmVpbmcgcHJvdmlkZWQKPj4KPj4gICAgICAgICAg
ICAgICAgIC0gQ2FsbGJhY2tzIGZvciB0ZXh0dWFsIGlucHV0IChzdHJpbmdzKQo+PiAgICAgICAg
ICAgICAgICAgLSBDYWxsYmFja3MgZm9yIHRleHR1YWwgb3V0cHV0IChzdHJpbmdzKQo+PiAgICAg
ICAgICAgICAgICAgLSBDYWxsYmFja3MgZm9yIHRleHR1YWwgb3V0cHV0IChjaGFyYWN0ZXJzKQo+
PiAgICAgICAgICAgICAgICAgLSBDYWxsYmFja3MgZm9yIGRyYXdpbmcgYSBwaWN0dXJlIChYUE0p
Cj4+Cj4+ICAgICAgICAgICAgICAgICBNeSBjb2RlIGlzIHB1cmVseSBDLCBzbyBjYWxsYmFja3Mg
SSBhbSB1c2luZyBmdW5jdGlvbgo+PiAgICAgICAgICAgICAgICAgcG9pbnRlcnMuIFNhaWQKPj4g
ICAgICAgICAgICAgICAgIGZ1bmN0aW9ucyBhcmUsIGF0IHRoZSBtb21lbnQsIGRvaW5nIG5vdGhp
bmcgbW9yZSB0aGFuCj4+ICAgICAgICAgICAgICAgICBqdXN0IGEgc2ltcGxlCj4+ICAgICAgICAg
ICAgICAgICBwcmludGYoKSBhbmQgZmdldHMoKS4gVGhlIGdhbWVzIEkgY2FuIHBsYXkgc28gZmFy
IGFyZQo+PiAgICAgICAgICAgICAgICAgIlRoZSBQYXduIiwgIlRoZQo+PiAgICAgICAgICAgICAg
ICAgR3VpbGQgb2YgVGhpZXZlcyIgYW5kICJKaW54dGVyIi4gSE9XRVZFUiwgbGF0ZXIgZ2FtZXMs
Cj4+ICAgICAgICAgICAgICAgICBzdWNoIGFzCj4+ICAgICAgICAgICAgICAgICAiQ29ycnVwdGlv
biIsICJNeXRoIiwgIkZpc2ghIiBhbmQgIldvbmRlcmxhbmQiIGFkZGVkCj4+ICAgICAgICAgICAg
ICAgICBmZWF0dXJlcyBzdWNoIGFzCj4+ICAgICAgICAgICAgICAgICBhbmltYXRpb24gYW5kIG11
c2ljLgo+Pgo+PiAgICAgICAgICAgICAgICAgU08gTVkgUVVFU1RJT04gaXMgdGhpczogSG93IHdv
dWxkIEkgYmVzdCBkZXNpZ24gdGhlCj4+ICAgICAgICAgICAgICAgICBjYWxsYmFja3MgZm9yCj4+
ICAgICAgICAgICAgICAgICBhbmltYXRpb24gYW5kIG11c2ljIGluIHdheSBzbyB0aGF0IGl0IE1J
R0hUIGJlCj4+ICAgICAgICAgICAgICAgICBpbnRlZ3JhdGFibGUgaW50byBTY3VtbVZNPwo+Pgo+
Pgo+Pgo+PiAgICAgICAgICAgICAgICAgRGV0dHVzCj4+Cj4+Cj4+Cj4+ICAgICAgICAgICAgICAg
ICBQLlMuOiBNeSBpbnRlcnByZXRlciBpcyBhdmFpbGFibGUgYXQKPj4gICAgICAgICAgICAgICAg
IGh0dHA6Ly93d3cuZGV0dHVzLm5ldC9kTWFnbmV0aWMuCj4+Cj4+ICAgICAgICAgICAgICAgICAo
SG9wZWZ1bGx5IHRoaXMgbGluaywgYW5kIHRoZSBmYWN0IHRoYXQgdGhpcyBpcyBteQo+PiAgICAg
ICAgICAgICAgICAgZmlyc3QgZW1haWwgd2lsbCBub3QKPj4gICAgICAgICAgICAgICAgIG1ha2Ug
dGhpcyBzcGFtLiA7KSApCj4+Cj4+Cj4+Cj4+Cj4+Cj4+ICAgICAgICAgICAgICAgICBfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiAgICAgICAgICAgICAg
ICAgU2N1bW12bS1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gICAgICAgICAgICAgICAgIFNjdW1tdm0t
ZGV2ZWxAbGlzdHMuc2N1bW12bS5vcmcKPj4gICAgICAgICAgICAgICAgIDxtYWlsdG86U2N1bW12
bS1kZXZlbEBsaXN0cy5zY3VtbXZtLm9yZz4KPj4gICAgICAgICAgICAgICAgIGh0dHBzOi8vbGlz
dHMuc2N1bW12bS5vcmcvbGlzdGluZm8vc2N1bW12bS1kZXZlbAo+Pgo+Pgo+Pgo+PiAgICAgICAg
ICAgICAtLSAKPj4gICAgICAgICAgICAgIkV4cGVyaWVuY2UgaXMgdGhlIG5hbWUgZXZlcnkgb25l
IGdpdmVzIHRvIHRoZWlyIG1pc3Rha2VzIgo+PiAgICAgICAgICAgICAtIE9zY2FyIFdpbGRlCj4+
Cj4+Cj4+Cj4+ICAgICAgICAgLS0gCj4+ICAgICAgICAgIkV4cGVyaWVuY2UgaXMgdGhlIG5hbWUg
ZXZlcnkgb25lIGdpdmVzIHRvIHRoZWlyIG1pc3Rha2VzIiAtCj4+ICAgICAgICAgT3NjYXIgV2ls
ZGUKPj4gICAgICAgICBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwo+PiAgICAgICAgIFNjdW1tdm0tZGV2ZWwgbWFpbGluZyBsaXN0Cj4+ICAgICAgICAgU2N1
bW12bS1kZXZlbEBsaXN0cy5zY3VtbXZtLm9yZwo+PiAgICAgICAgIDxtYWlsdG86U2N1bW12bS1k
ZXZlbEBsaXN0cy5zY3VtbXZtLm9yZz4KPj4gICAgICAgICBodHRwczovL2xpc3RzLnNjdW1tdm0u
b3JnL2xpc3RpbmZvL3NjdW1tdm0tZGV2ZWwKPj4KPj4KPj4gICAgIF9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+ICAgICBTY3VtbXZtLWRldmVsIG1haWxp
bmcgbGlzdAo+PiAgICAgU2N1bW12bS1kZXZlbEBsaXN0cy5zY3VtbXZtLm9yZyAgPG1haWx0bzpT
Y3VtbXZtLWRldmVsQGxpc3RzLnNjdW1tdm0ub3JnPgo+PiAgICAgaHR0cHM6Ly9saXN0cy5zY3Vt
bXZtLm9yZy9saXN0aW5mby9zY3VtbXZtLWRldmVsCj4gICAgIF9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gICAgIFNjdW1tdm0tZGV2ZWwgbWFpbGluZyBs
aXN0Cj4gICAgIFNjdW1tdm0tZGV2ZWxAbGlzdHMuc2N1bW12bS5vcmcgPG1haWx0bzpTY3VtbXZt
LWRldmVsQGxpc3RzLnNjdW1tdm0ub3JnPgo+ICAgICBodHRwczovL2xpc3RzLnNjdW1tdm0ub3Jn
L2xpc3RpbmZvL3NjdW1tdm0tZGV2ZWwKPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwo+IFNjdW1tdm0tZGV2ZWwgbWFpbGluZyBsaXN0Cj4gU2N1
bW12bS1kZXZlbEBsaXN0cy5zY3VtbXZtLm9yZwo+IGh0dHBzOi8vbGlzdHMuc2N1bW12bS5vcmcv
bGlzdGluZm8vc2N1bW12bS1kZXZlbAo+IAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fClNjdW1tdm0tZGV2ZWwgbWFpbGluZyBsaXN0ClNjdW1tdm0tZGV2
ZWxAbGlzdHMuc2N1bW12bS5vcmcKaHR0cHM6Ly9saXN0cy5zY3VtbXZtLm9yZy9saXN0aW5mby9z
Y3VtbXZtLWRldmVsCg==