Re: Write-up on "tree repositories" as an alternative to conflictors

Ben Franksen <[email protected]> Sat, 19 Dec 2020 19:07:26 +0100
Newsgroups gmane.comp.version-control.darcs.user
Message-ID <[email protected]>
QW0gMTkuMTIuMjAgdW0gMDU6MDAgc2NocmllYiBKYW1lcyBDb29rOgo+PiBJbnRlcmVzdGluZyEg
U28gY29ybmVycyAocG90ZW50aWFsIGNvbnRleHRzKSBoYXZlIGFuIGluaGVyZW50IHBhcnRpYWwK
Pj4gb3JkZXIsIGluZGVlZCB0aGV5IGZvcm0gYSBqb2luLXNlbWlsYXR0aWNlLiBZb3UgcG9zdHVs
YXRlIHRoYXQgaWYgdHdvCj4+IGNvbnRleHRzIGhhdmUgYW4gdXBwcGVyIGJvdW5kIHRoYXQgaXMg
YWxzbyBhIGNvbnRleHQsIHRoZW4gdGhlIG1pbmltYWwKPj4gdXBwZXIgYm91bmQgbXVzdCBhbHNv
IGJlIGEgY29udGV4dC4gSSB0aGluayB0aGUgbWF0aCB0ZXJtIHdvdWxkIGJlIHRoYXQKPj4gY29u
dGV4dHMgZm9ybSBhIHN1Yi1zZW1pbGF0dGljZSBvZiB0aGUgY29ybmVycy4KPiAKPiBJIHNob3Vs
ZCBjcmVkaXQgbXkgZnJpZW5kIFNyaWRoYXIgUmFtZXNoIGhlcmUuIEkgd2FzIGFza2luZyB0aGVt
Cj4gd2hldGhlciB0aGVyZSdzIGEgbmFtZSBmb3Igc29tZSBwcm9wZXJ0eSBpbnZvbHZpbmcgcHVz
aG91dHMsIGFuZAo+IGNhc3VhbGx5IG1lbnRpb25lZCB3ZSBtaWdodCBub3QgbmVlZCB0byBkaXN0
aW5ndWlzaCBtb3JwaGlzbXMgd2l0aCB0aGUKPiBzYW1lIGRvbWFpbiBhbmQgY29kb21haW4sIGFu
ZCBTcmlkaGFyIHBvaW50ZWQgb3V0IHRoYXQncyBqdXN0IGEKPiBwcmUtb3JkZXIuCgpBYnNvbHV0
ZWx5IHJpZ2h0LiBXaHkgZGlkIEkgbm90IHNlZSB0aGlzPwoKSXQganVzdCBvY2N1cnJlZCB0byBt
ZSB0aGF0IHdlIGNhbiBhbHNvIGludGVycHJldCB0aGlzIGZyb20gYSBsb2dpY2FsIC8KdHlwZSB0
aGVvcnkgUE9WLCB0aGluayBDdXJyeS1Ib3dhcmQuIEluIHRoaXMgdmlldywgYSBwYXRoIHA6cy0+
dCBpbiB0aGUKcGF0Y2ggZ3JhcGggaXMgYSBwcm9vZiBvZiB0aGUgcHJvcG9zaXRpb24gcy0+dCwg
d2hpY2ggZXhwcmVzc2VzIHRoYXQgImlmCnMgaXMgYSBjb250ZXh0LCB0aGVuIHNvIGlzIHQiLCBv
ciBtb3JlIGNvbmNyZXRlbHkgInMgaXMgYSBzdWJzZXQgb2YgdCIuClNlZSB0aGUgbGVtbWEgYmVs
b3cuCgo+IEdvb2QgcG9pbnRzLiBTbyBub3cgd2l0aCBzb21lIHJlcGhyYXNpbmcsIHRoZSBydWxl
cyBvbiB0aGUgc2V0IG9mCj4gY29udGV4dHMgYXJlOgo+IAo+IChhKSBUaGUgZW1wdHkgc2V0IGlz
IGEgY29udGV4dC4KPiAKPiAoYikgSWYgYzEgYW5kIGMyIGFyZSBjb250ZXh0cywgdGhlbiBjMSDi
iKkgYzIgaXMgYSBjb250ZXh0Lgo+IAo+IChjKSBJZiBjMSwgYzIsIGMzIGFyZSBjb250ZXh0cyBh
bmQgYzEg4oqGIGMzIGFuZCBjMiDiioYgYzMsIHRoZW4gYzEg4oiqIGMyIGlzCj4gICAgIGEgY29u
dGV4dC4KPiAKPiAoZCkgRm9yIGV2ZXJ5IG5vbi1lbXB0eSBjb250ZXh0IGMgdGhlcmUgaXMgYXQg
bGVhc3Qgb25lIGVsZW1lbnQgbiBvZiBjCj4gICAgIHN1Y2ggdGhhdCBjXHtufSBpcyBhbHNvIGEg
Y29udGV4dC4KClllcywgZXhhY3RseS4gV2UgdGhlbiBkZWZpbmUgYW4gL2Fic3RyYWN0IHBhdGNo
LyBhcyBhIHBhaXIgKGMsbiksIHdoZXJlCmMgaXMgYSBjb250ZXh0IGFuZCBu4oiIYyBpcyBhIG5h
bWU7IGFuZCB3cml0ZSAoYyxuKSA6IGNce259IC0+IGMuIENvbnRleHRzCmFuZCBwYXRjaGVzIGZv
cm0gYSBjb25uZWN0ZWQgYWN5Y2xpYyBkaXJlY3RlZCBncmFwaCwgdGhlIC9wYXRjaCBncmFwaC8K
b3ZlciB0aGUgc2V0IG9mIGNvbnRleHRzIEMsIGFuZCB0aGUgZmluaXRlIHBhdGhzIG9mIHN1Y2gg
YSBncmFwaCBhcmUgdGhlCmFycm93cyBvZiBpdHMgZnJlZSBjYXRlZ29yeS4KCldlIGNhbiB0aGVu
IHByb3ZlIGUuZy4KCkxlbW1hOiBUaGVyZSBpcyBhIHBhdGggYmV0d2VlbiB0d28gY29udGV4dHMg
cyBhbmQgdCBpZiBhbmQgb25seSBpZiBzCiAgaXMgYSBzdWJzZXQgb2YgdC4gVGhlIG5hbWUgb2Yg
YW55IHN1Y2ggcGF0aCBpcyB0XHMuCgogIChQcm9vZiBpcyBieSBpbmR1Y3Rpb24uIEkgY2FuIHBv
c3QgdGhlIGRldGFpbHMgaWYgeW91IGFyZSBpbnRlcmVzdGVkLikKCndpdGggY29yb2xsYXJpZXMg
c3VjaCBhczoKCkNvcm9sbGFyeTogRm9yIGVhY2ggY29udGV4dCBjIHRoZXJlIGlzIGEgcGF0aCBw
OjAtPmMuCgpDb3JvbGxhcnk6IEZvciBhbnkgcGF0aCBwLCB8cHw9fG5hbWUocCl8LiBJbiBvdGhl
ciB3b3JkcywgdGhlIG5hbWVzCiAgb2N1cnJpbmcgaW4gYSBwYXRoIGFyZSB1bmlxdWUuCgpDb3Jv
bGxhcnk6IEZvciBhbnkgdHdvIGNvbnRleHRzIHMsIHQsIGFsbCBwYXRocyBwOnMtPnQgaGF2ZSB0
aGUgc2FtZQogIG5hbWUgYW5kIGxlbmd0aC4KCj4+IEFub3RoZXIgaW50ZXJlc3Rpbmcgb2JzZXJ2
YXRpb24gaXMgdGhhdCB3ZSBjYW4gcmVnYXJkIGEgbmFtZSBhcyBhCj4+IHBhcnRpYWwgYmlqZWN0
aW9uIGJldHdlZW4gY29udGV4dHMuIFRoZSBhY3Rpb24gb2YgdGhlIGZ1bmN0aW9uIGlzIHRvIGFk
ZAo+PiB0aGUgbmFtZSB0byB0aGUgY29udGV4dCBhbmQgaXRzIGludmVyc2UgaXMgdG8gcmVtb3Zl
IGl0LiBJdHMgZG9tYWluIGFuZAo+PiByYW5nZSBhcmUgZ2l2ZW4gYnkKPj4KPj4gICBkb21haW4o
bik9e2PiiIhDfG7iiIljIGFuZCBj4oiqe2594oiIQ30sIHJhbmdlKG4pPXtj4oiIQ3xu4oiIYyBh
bmQgY1x7bn3iiIhDfQo+Pgo+PiBUaGUgcmVhc29uIEkgZmluZCB0aGlzIGludGVyZXN0aW5nIGlz
IHRoYXQgaXQgaGludHMgYXQgYSBwb3NzaWJpbGl0eSB0bwo+PiByZS1pbnRyb2R1Y2UgL2NvbmNy
ZXRlLyBwYXRjaGVzICh0aGF0IGlzLCAvcGF0Y2ggY29udGVudC8pIGludG8gdGhlCj4+IHBpY3R1
cmUuIENvbmNyZXRlIChwcmltaXRpdmUpIHBhdGNoZXMgY2FuIGJlIHNlZW4gYXMgcGFydGlhbCBi
aWplY3Rpb25zCj4+IG9uIGEgc2V0IFMgb2Ygc3RhdGVzLCByZXByZXNlbnRlZCBhcyBkYXRhLgo+
IAo+IEknbSBub3Qgc3VyZSBJIHVuZGVyc3RhbmQuIEkgZ3Vlc3MgYSBzdGF0ZSBpcyB0aGUgY29u
dGVudCBvZiB0aGUgZmlsZXMKPiBpbiB0aGUgcmVwb3NpdG9yeS4KClBsdXMgdGhlIGRpcmVjdG9y
eSBzdHJ1Y3R1cmUuIE9uZSBjb25jcmV0ZSByZXByZXNlbnRhdGlvbiBvZiBzdGF0ZXMgaXMKdGhl
ICdUcmVlJyB0eXBlIGluIERhcmNzLCBzZWUKaHR0cHM6Ly9odWIuZGFyY3MubmV0L2RhcmNzL2Rh
cmNzLXNjcmVlbmVkL2Jyb3dzZS9zcmMvRGFyY3MvVXRpbC9UcmVlLmhzIzU5CnVwIHRvIGxpbmUg
ODQuCgo+IEFueSBjb25jcmV0ZSBwYXRjaCBoYXMgZXhhY3RseSBvbmUgc3RhcnQgc3RhdGUgYW5k
Cj4gb25lIGVuZCBzdGF0ZS4KCk5vdCBhdCBhbGwuIFVubmFtZWQgcHJpbSBwYXRjaGVzIGNhbiBi
ZSBhcHBsaWVkIHRvIG1hbnkgc3RhdGVzLCBpbmRlZWQKdGhlIGRvbWFpbiBpcyBhbHdheXMgaW5m
aW5pdGUuIEZvciBpbnN0YW5jZSB0aGUgZG9tYWluIG9mICJhZGRmaWxlIC4vZiIKaXMgdGhlIHNl
dCBvZiBhbGwgdHJlZXMgd2hpY2ggZG8gbm90IGhhdmUgIi4vZiIgYXMgZWl0aGVyIGZpbGUgb3IK
ZGlyZWN0b3J5LiBJdHMgY29kb21haW4gaXMgdGhlIHNldCBvZiBhbGwgdHJlZXMgdGhhdCBkbyBo
YXZlICIuL2YiIGFzIGEKZmlsZS4gSXRzIGludmVyc2UgaXMgInJtZmlsZSAuL2YiIHdpdGggZG9t
YWluIGFuZCBjb2RvbWFpbiBzd2FwcGVkLgoKPiBEbyB5b3UgbWVhbiB0aGF0IGl0J3MgYSBwYXJ0
aWFsIGJpamVjdGlvbiB3aGVyZSB0aGUKPiBkb21haW4gYW5kIHJhbmdlIGFyZSBib3RoIHNldHMg
b2Ygc2l6ZSAxPwoKTm8sIHNlZSBhYm92ZS4KCj4gRS5nLiBzdXBwb3NlIHRoZSBjb25jcmV0ZSBw
YXRjaCBQIGlzOgo+IAo+IGh1bmsgLi9maWxlLnR4dCAyCj4gK3dvcmxkCj4gCj4gYW5kIGluIHRo
ZSBjb250ZXh0IG9mIHAsIGZpbGUudHh0IGhhcyBqdXN0IG9uZSBsaW5lICJIZWxsbyIuCj4gSSBn
dWVzcyBpdCdzIHRlbXB0aW5nIHRvIHRoaW5rIG9mIHAgYXMgdGhlIGZvbGxvd2luZyBwYXJ0aWFs
IGJpamVjdGlvbgo+IGY6IGYgYWx3YXlzIGluc2VydHMgdGhlIGxpbmUgIndvcmxkIiBhZnRlciB0
aGUgZmlyc3QgbGluZSBvZiBmaWxlLnR4dC4KClRoaXMgaXMgZXhhY3RseSBob3cgdGhlIGFib3Zl
IGh1bmsgaXMgaW50ZXJwcmV0ZWQgaW4gRGFyY3MuCgo+IEJ1dCB0aGF0J3Mgbm90IHJlYWxseSBh
IHVzZWZ1bCByZXByZXNlbnRhdGlvbiBvZiBwOyBlLmcuIGl0IGRvZXNuJ3QKPiB3b3JrIGlmIHAg
Z2V0cyBjb21tdXRlZCB0byBhIGRpZmZlcmVudCBjb250ZXh0LgoKV2h5IG5vdD8gSWYgeW91IGNv
bW11dGUgdGhlIHBhdGNoIHRvIGEgZGlmZmVyZW50IGNvbnRleHQgdGhlbiBpdHMgZG9tYWluCmFu
ZCBjb2RvbWFpbiB1c3VhbGx5IGNoYW5nZSwgdG9vLiBJIHdvdWxkIGV4cGVjdCBub3RoaW5nIGxl
c3MuCgpCdXQgcGVyaGFwcyB3aGF0IHlvdSBtZWFuIGlzIHRoYXQgaXQgaXMgbm90IGEgdXNlZnVs
IC9nZW5lcmljLwpkZXNjcmlwdGlvbiBvZiAid2hhdCB0aGUgcGF0Y2ggZG9lcyIgL2luZGVwZW5k
ZW50LyBvZiBjb21tdXRhdGlvbi4gVGhpcwppcyB0cnVlLiBJZiB3ZSBoYWQgYSByZXByZXNlbnRh
dGlvbiBvZiBjb25jcmV0ZSBwYXRjaGVzIHRoYXQgaXMgdHJ1bHkKY29udGV4dCBpbmRlcGVuZGVu
dCwgdGhlbiBhIGxvdCBvZiBwcm9ibGVtcyBjb3VsZCBiZSBzb2x2ZWQgcXVpdGUKZWFzaWx5LCBz
ZWUgUGlqdWwuIEluIHBhcnRpY3VsYXIsIEkgdGhpbmsgd2Ugd291bGQgbm90IG5lZWQgbmFtZXMg
Zm9yCnBhdGNoZXMuCgo+IFNvIHRvIG1lIGl0IG1ha2VzIG1vcmUKPiBzZW5zZSB0byBqdXN0IHNh
eSB0aGF0IGNvbmNyZXRlbHksIHAgaXMgdGhlIHBhaXIgKCJIZWxsb1xuIiwKPiAiSGVsbG9cbndv
cmxkXG4iKS4KCkl0IGlzIGNlcnRhaW5seSBwb3NzaWJsZSB0byBkZWZpbmUgaHVua3MgaW4gdGhp
cyB3YXkuIEluIERhcmNzLCBzbwpjYWxsZWQgYmluYXJ5IHBhdGNoZXMgYXJlIGRlZmluZWQgaW4g
dGhpcyB3YXk6IHRoZXkgY29udGFpbiB0aGUgb2xkCmNvbnRlbnQgYW5kIHRoZSBuZXcgY29udGVu
dC4KCkhvd2V2ZXIsIGV2ZW4gaWYgeW91IGRvIHRoYXQsIHlvdXIgaHVua3MgYXJlIHN0aWxsICJw
b2x5bW9ycGhpYyIKcmVsYXRpdmUgdG8gdGhlICJyZXN0IG9mIHRoZSB0cmVlIi4gQW5kIGNvbW11
dGluZyBzdWNoIGEgaHVuayB3aXRoIGEKZmlsZSByZW5hbWUgcGF0Y2ggbWF5IHN0aWxsIGhhdmUg
dG8gbW9kaWZ5IHRoZSBodW5rLgoKPiBJIGd1ZXNzIHRoaXMgaXMgYSBsb25nLXdpbmRlZCB3YXkg
dG8ganVzdCBzYXkgSSdtIG5vdCBzdXJlIHdoYXQgeW91Cj4gbWVhbiBieSBjb25jcmV0ZSBwYXRj
aGVzIGJlaW5nIGJpamVjdGlvbnMuCgpBcyBleHBsYWluZWQgYWJvdmUsIGZvciBlYWNoIGtpbmQg
b2YgcHJpbSBwYXRjaCBpbiBEYXJjcyAoaHVuaywgYmluYXJ5LAphZGRmaWxlLCBldGMuLi4gYnV0
IHBsZWFzZSBpZ25vcmUgc2V0cHJlZiBwYXRjaGVzKSBvbmUgY2FuIHByZWNpc2VseQpkZWZpbmUg
dGhlIHNldCBvZiB0cmVlcyB0aGF0IGFyZSB0aGVpciBkb21haW4gYW5kIGNvZG9tYWluIGFuZCB0
aGV5IGFyZQpkZXNpZ25lZCBzbyB0aGF0IHRoZSBwYXJ0aWFsIGZ1bmN0aW9uIGRlZmluZWQgYnkg
YXBwbHlpbmcgdGhlIHBhdGNoIGlzCmluamVjdGl2ZSBhbmQgdGh1cyBjYW4gYmUgaW52ZXJ0ZWQu
Cgo+IEkgZ3Vlc3MgeW91J2Qgd2FudCB0byBiZSBhYmxlIHRvIGNvbW11dGUgY29uY3JldGUgcGF0
Y2hlcyB3aXRob3V0Cj4gYWNjZXNzIHRvIGFueSBpbmZvcm1hdGlvbiBvdGhlciB0aGFuIHRob3Nl
IHR3byBwYXRjaGVzJwo+IHJlcHJlc2VudGF0aW9ucy4gRG9lcyB5b3VyIGRlZmluaXRpb24gY2Fw
dHVyZSB0aGF0PwoKQWJzb2x1dGVseS4gVGhlIGZ1bGwgY29tbXV0ZSBjb2RlIGZvciBEYXJjcycg
cHJpbSBwYXRjaGVzIGlzIGhlcmU6Cmh0dHBzOi8vaHViLmRhcmNzLm5ldC9kYXJjcy9kYXJjcy1z
Y3JlZW5lZC9icm93c2Uvc3JjL0RhcmNzL1BhdGNoL1ByaW0vVjEvQ29tbXV0ZS5ocy4KSXQgY291
bGQgdXNlIGEgYml0IG9mIHN0cmVhbWxpbmluZyBidXQgSSB0aGluayB0aGUgb3ZlcmFsbCBwaWN0
dXJlIG9mCmhvdyBjb21tdXRhdGlvbiB3b3JrcyBvbiBwcmltIHBhdGNoZXMgaXMgcmVjb2duaXph
YmxlLgoKPj4gSGVyZSwgdG9vLCB3ZSBjYW4gZ2VuZXJhbGl6ZQo+PiB0byBmaW5pdGUgc2VxdWVu
Y2VzIG9mIHBhdGNoZXMsIHdoaWNoIHRoZW4gbmF0dXJhbGx5IGZvcm0gYSBjYXRlZ29yeSwKPj4g
YW5kIHRoZXJlIGlzIGEgKG5vbi1pbmplY3RpdmUpIGZ1bmN0b3IgKHRoZSAiYXBwbHkiIGZ1bmN0
b3IpIGZyb20gdGhhdAo+PiBjYXRlZ29yeSB0byB0aGUgZ3JvdXBvaWQgb2YgcGFydGlhbCBiaWpl
Y3Rpb25zIG9uIHN0YXRlcyB0aGF0IG1hcHMKPj4gY29uY2F0ZW5hdGlvbiB0byBmdW5jdGlvbiBj
b21wb3NpdGlvbi4KPj4KPj4gV2UgbWF5IHdhbnQgdG8gc3R1ZHkgZnVuY3RvcnMgZnJvbSBhbiBh
YnN0cmFjdCBwYXRjaCB0aGVvcnkgdG8gYQo+PiBjb25jcmV0ZSBvbmUuCj4gCj4gVGhhdCdzIG5l
YXQuCgpXZSdsbCBzZWUuIEkgYW0gdHJ5aW5nIHRvIG1ha2UgdGhpcyBtb3JlIGNvbmNyZXRlIGJ1
dCBpdCdzIGRpZmZpY3VsdC4KCj4+IEEgZnVuY3RvciBtYXBzIGJvdGggb2JqZWN0cyBhbmQgYXJy
b3dzLiBGb3Igb2JqZWN0cywKPj4gRjpDLT5TIGFzc29jaWF0ZXMgYSBjb25jcmV0ZSBzdGF0ZSB0
byBlYWNoIGNvbnRleHQgKHRoaXMgbWFwcGluZyBpcyBhbHNvCj4+IG5vdCBuZWNlc3NhcmlseSBp
bmplY3RpdmUpLiBGb3IgYXJyb3dzIGl0IGFzc29jaWF0ZXMgdG8gZWFjaCBwYXRoIHA6cy0+dAo+
PiBhIGNvbmNyZXRlIHBhdGNoIEYocCk6RihzKS0+Rih0KS4gVGhlIGZ1bmN0b3IgbGF3cyBzYXkg
dGhhdAo+PiBGKGlkX2MpPWlkX0YoYykgYW5kIHRoYXQgRihwO3EpPUYocCk7RihxKS4KPiAKPiBT
byB0aGUgcGF0Y2ggaXMgYW4gYXJyb3cgam9pbmluZyB0d28gc3RhdGVzPyBUaGlzIGlzIG1vcmUg
aW4gbGluZSB3aXRoCj4gbXkgdmlldyBhYm92ZSB0aGF0IGEgcGF0Y2ggaXMgYSBwYWlyIG9mIHN0
YXRlcy4KClJpZ2h0LiBJIHdhcyBjb25mdXNlZCB3aGVuIEkgd3JvdGUgdGhhdC4gRm9yIGNvbmNy
ZXRlIHBhdGNoZXMgKG9yCnNlcXVlbmNlcyB0aGVyZW9mKSBzb3VyY2UgYW5kIHRhcmdldCBhcmUg
c2V0cyBvZiBzdGF0ZXMsIG5vdCBzdGF0ZXMuCgo+PiBUaGlzIGRvZXMgbm90IGEgcHJpb3JpIG1l
YW4gdGhhdCBlYWNoIGFic3RyYWN0IC9wYXRjaC8gKHNpbmdsZXRvbiBwYXRoKQo+PiBtYXBzIHRv
IGEgY29uY3JldGUgcGF0Y2gsCj4gCj4gRG9lc24ndCBpdCwgaWYgYSBjb25jcmV0ZSBwYXRjaCBp
cyBqdXN0IGEgcGFpciBvZiBzdGF0ZXM/IEJ1dCBJIGd1ZXNzIEkKPiBkb24ndCByZWFsbHkga25v
dyB3aGF0IHlvdSBtZWFuIGJ5IGNvbmNyZXRlIHBhdGNoLgoKSSBtZWFuIGEgY29uY3JldGUgcmVw
cmVzZW50YXRpb24gYXMgZGF0YSBvZiBhIHBhcnRpYWwgYmlqZWN0aW9uIG9uCnN0YXRlcy4gTGlr
ZSB0aGUgRGFyY3MgVjEgcHJpbSBwYXRjaGVzLgoKPj4gc28gSSBndWVzcyB3ZSBoYXZlIHRvIHJl
cXVpcmUgdGhhdCwgaW4KPj4gYWRkaXRpb24gdG8gdGhlIHVzdWFsIGZ1bmN0b3IgbGF3cy4gVGhl
cmUgbWF5IGJlIGEgZmV3IG1vcmUgZXh0cmEKPj4gcmVxdWlyZW1lbnRzIHRoYXQgd2Ugd2FudCB0
byBpbXBvc2UuIEZvciBpbnN0YW5jZSwgSSBndWVzcyB3ZSBuZWVkIHNvbWUKPj4gc29ydCBvZiBj
b25zaXN0ZW5jeSByZXF1aXJlbWVudCB0aGF0IHJlbGF0ZXMgY29tbXV0YXRpb24gaW4gdGhlIGFi
c3RyYWN0Cj4+IHNldHRpbmcgdG8gdGhhdCBpbiB0aGUgY29uY3JldGUgc2V0dGluZy4gTmVlZGxl
c3MgdG8gc2F5LCBJIGhhdmVuJ3QKPj4gdGhvdWdodCB0aGVzZSB0aGluZ3MgdGhyb3VnaCB0byB0
aGUgZW5kLCBzbyBJIGNhbid0IHRlbGwgeWV0IGlmIGl0IGhhcwo+PiBhbnkgcHJhY3RpY2FsIHJl
bGV2YW5jZS4KPiAKPj4gVGhpcyB2YXJpYW50IG9mIGFic3RyYWN0IHBhdGNoIHRoZW9yeSBoYXMg
Y2xlYW4gbWVyZ2UgYW5kIHVubWVyZ2UgKG9mCj4+IGNvbnRleHRzKSBhbHJlYWR5IGJ1aWx0LWlu
LCBzbyB0byBzcGVhaywgc2luY2UgbWVyZ2luZyBpcyBqdXN0IHRha2luZwo+PiB0aGUgdW5pb24g
YW5kIHVubWVyZ2luZyBpcyB0YWtpbmcgdGhlIGludGVyc2VjdGlvbi4gSSBmaW5kIGl0Cj4+IGlu
dGVyZXN0aW5nIHRvIG5vdGUgdGhhdCBhZGRpbmcgY29uZmxpY3RvcnMgYSBsYSBEYXJjcyBtZWFu
cyB0aGF0IHdlCj4+IGVubGFyZ2UgdGhlIHNldCBvZiBjb250ZXh0cyBieSBhZGRpbmcgL2NvbmZs
aWN0ZWQgc3RhdGVzLywgd2hpY2ggYXJlCj4+IHRob3NlIGNvcm5lcnMgdGhhdCB3ZSBnZXQgKGlu
IGFkZGl0aW9uIHRvIHRoZSBub3JtYWwgdW5jb25mbGljdGVkCj4+IGNvbnRleHRzKSBpZiB3ZSBh
bGxvdyBhcmJpdHJhcnkgdW5pb25zIG9mIGNvbnRleHRzLiBTZWVuIGluIHRoaXMgd2F5LAo+PiBj
b25mbGljdG9ycyBhcHBlYXIgcXVpdGUgbmF0dXJhbCBhbmQgc2ltcGxlLCBjb25jZXB0dWFsbHkg
YXQgbGVhc3QuCj4gCj4gKFJlcGx5aW5nIHRvIHRoaXMgbGFzdCBzaW5jZSBpdCBkZXBlbmRzIG9u
IG1vcmUgY29udGV4dC4pCj4gCj4gVG8gbWFrZSB0aGlzIHBvaW50IG9mIHZpZXcgd29yaywgSSBn
dWVzcyB5b3Ugd291bGQgd2FudCB0byBleHRlbmQgdGhlCj4gZnVuY3RvciBzbyB0aGF0IHRoZSBj
b25mbGljdGVkIGNvbnRleHRzIGFsc28gbWFwIHRvIGNvbmNyZXRlIHN0YXRlcyAtLS0KClllcywg
bW9kdWxvICJzdGF0ZSAtPiBzZXRzIG9mIHN0YXRlcyIuCgo+IHRoaXMgZGV0ZXJtaW5lcyB3aGF0
IHN0YXRlIERhcmNzIGxlYXZlcyB0aGUgcmVwbyBpbiB3aGVuIHRoZXJlIGFyZQo+IGNvbmZsaWN0
aW5nIHBhdGNoZXMgKGlmIHlvdSBsZWF2ZSBvdXQgdGhlIGNvbmZsaWN0IG1hcmtlcnMpLgoKWWVz
LgoKPiBBbmQKPiBzaW1pbGFybHkgeW91J2Qgd2FudCB0byBleHRlbmQgY29uY3JldGUgcmVwcmVz
ZW50YXRpb25zIG9mIHBhdGNoZXMuCgpZZXMuIFRoYXQncyB0aGUgaWRlYS4KCj4gSSdtIG5vdCBz
dXJlIHdoYXQgcnVsZXMgY29uc3RyYWluIHVzIGhlcmUuIEUuZy4gSSBjb3VsZCBqdXN0IGRlY2xh
cmUKPiB0aGF0IGFueSAiY29uZmxpY3RlZCIgY29udGV4dCBtYXBzIHRvIHRoZSBlbXB0eSBmaWxl
c2V0LCBidXQgd291bGQgdGhhdAo+IHdvcmsgb3V0PyBJIGd1ZXNzIHRoZSBoYXJkIHBhcnQgaXMg
ZmlndXJpbmcgb3V0IHdoYXQgaG93IHRoZSBjb25jcmV0ZQo+IHBhdGNoZXMgd29yayAoZm9yIGV4
YW1wbGUsIGhvdyB5b3UgY2FuIGNvbW11dGUgdGhlbSB3aXRob3V0IGFjY2VzcyB0bwo+IGFueXRo
aW5nIGJ1dCB0aGUgdHdvIHBhdGNoIHJlcHJlc2VudGF0aW9ucykuCgpJbmRlZWQuIFRoaXMgaXMg
dGhlIHJlYXNvbiB3aHkgdGhlIGNvbmZsaWN0b3IgY29tbXV0ZSBhbmQgbWVyZ2UgY29kZSBpcwpo
aWdobHkgbm9uLXRyaXZpYWwuIEEgY29tcGxpY2F0aW5nIGZhY3RvciBpcyB0aGF0IGEgY2xlYW4g
ZGVmaW5pdGlvbiBvZgpjb25mbGljdG9ycyBjYW5ub3QgYmUgYmFzZWQgb24gcHJpbSBwYXRjaGVz
IGFsb25lLCB0aGV5IGhhdmUgdG8gYmUKL25hbWVkLyBwcmltIHBhdGNoZXMuIEhvdyB0byByZXNv
bHZlIHRoaXMgdGVuc2lvbiBpcyBzdGlsbCBsYXJnZWx5IHVuY2xlYXIuCgpJIHRoaW5rIHRoZSBj
b25zdHJhaW50cyBhcmUgdGhlIHVzdWFsIG9uZXM6IHRoZSBtZXJnZSBhbmQgY29tbXV0ZSBsYXdz
LAppbiBwYXJ0aWN1bGFyIHBlcm11dGl2aXR5LiBFLmcuIHRoZSBmaXJzdCB0aGluZyB5b3UgbmVl
ZCB0byBlbnN1cmUgaXMKdGhhdCBpZiB5b3UgbWVyZ2UgcFwvcSB0byBxJy9ccCcsIHRoZW4gcDtx
JyBjb21tdXRlcyB0byBxO3AnLCBldmVuIGlmIHAnCmFuZCBxJyBhcmUgY29uZmxpY3RlZC4KCj4g
VGhpcyByZW1pbmRzIG1lIG9mIHRoZSBmdW5jdGlvbiBJIGJ1aWx0IHRoYXQgbWFwcGVkIGV2ZXJ5
Cj4gcHNldWRvLWNvbnRleHQgdG8gYSBwcmltaXRpdmUgY29udGV4dCwgd2hlbiBJIHdhcyB3b3Jr
aW5nIG9uIG1ha2luZyBhbgo+IGFyYml0cmFyeSBwcmltaXRpdmUgcGF0Y2ggdGhlb3J5IGNvbW11
dGUuIElmIHRoZSBhYm92ZSBjb3VsZCBiZQo+IGV4dGVuZGVkIHRvIHRoZSBlbnRpcmUgaHlwZXJj
dWJlIChyYXRoZXIgdGhhbiBqdXN0IGFyYml0cmFyeSB1bmlvbnMgb2YKPiBjb250ZXh0cykgdGhl
biBJIGd1ZXNzIHdlIHdvdWxkIGhhdmUgYXJyaXZlZCBhdCBteSBvcmlnaW5hbCBnb2FsIG9mCj4g
bWFraW5nIGEgcGF0Y2ggdGhlb3J5IHdoZXJlIHBhdGNoZXMgYWx3YXlzIGNvbW11dGUuIChBdCB0
aGlzIHBvaW50IEknbQo+IG5vdCBzdXJlIGhvdyB1c2VmdWwgdGhhdCBpcy4pCgpZZXMgKHRvIGFs
bCB5b3Ugc2FpZCBpbiB0aGF0IHBhcmFncmFwaCkuCgpDaGVlcnMKQmVuCgpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkYXJjcy11c2VycyBtYWlsaW5nIGxp
c3QKZGFyY3MtdXNlcnNAb3N1b3NsLm9yZwpodHRwczovL2xpc3RzLm9zdW9zbC5vcmcvbWFpbG1h
bi9saXN0aW5mby9kYXJjcy11c2Vycwo=