Re: Fwd: LDAP configuration and hooks

David Wells <[email protected]> Sat, 30 Nov 2019 00:56:19 -0300
Newsgroups gmane.comp.horde.user
Message-ID <[email protected]>
WW91J3JlIHJpZ2h0LCBJJ20gc29ycnkuIFRoZSBmaWxlIGlzIGluIHRoZSAKL3Zhci93d3cvaG9y
ZGUvY29uZmlnL2NvbmYucGhwLCB0aGUgZGlyZWN0b3J5IC92YXIvd3d3L2hvcmRlIGlzIHRoZSB0
b3AgCmxldmVsIGRpcmVjdG9yeSBvZiB0aGUgaG9yZGUgaW5zdGFsbGF0aW9uIGFzIHNwZWNpZmll
ZCB3aGVuIEkgcmFuIHRoZSAKd2VibWFpbC1pbnN0YWxsIHNjcmlwdC4gVGhlIGhvb2tzLnBocCBh
bmQgdGhlIHByZWZzLmxvY2FsLnBocCBmaWxlcyBhcmUgCmFsc28gbG9jYXRlZCBpbiB0aGUgY29u
ZmlnIGRpcmVjdG9yeSBvZiB0aGUgdG9wIGxldmVsIGRpcmVjdG9yeSBvZiB0aGUgCmhvcmRlIGlu
c3RhbGxhdGlvbiBhbG9uZyB3aXRoIHRoZSBjb25mLnBocCBmaWxlLiBJIHZlcmlmaWVkIHRoZSB3
ZWIgCnNlcnZlciBhY2Nlc3MgdG8gdGhpcyBmaWxlIGFuZCBpdCBoYXMgbm8gcHJvYmxlbSBhdCBh
bGwgcmVhZGluZyB0aGUgCmRhdGFiYXNlIGFjY2VzcyBjb25maWd1cmF0aW9uIGZyb20gdGhpcyBz
YW1lIGNvbmYucGhwIGZpbGUuIEkgYWxzbyByYW4gCiJwcmludF9yKGFycmF5X3ZhbHVlcygkY29u
ZikpOyIgaW4gdGhlIHBocCBzaGVsbCBhbmQgZ290IHRoaXMgaW4gdGhlIApvdXRwdXQgb2YgdGhl
IGNvbW1hbmQKCj4gWzE1XSA9PiBBcnJheQo+ICAgICAgICAgICgKPiAgICAgICAgICAgICAgW2hv
c3RzcGVjXSA9PiBBcnJheQo+ICAgICAgICAgICAgICAgICAgKAo+ICAgICAgICAgICAgICAgICAg
ICAgIFswXSA9PiBkYzEuZmxpYXdlbGxzLmNvbS5hcgo+ICAgICAgICAgICAgICAgICAgKQo+Cj4g
ICAgICAgICAgICAgIFtwb3J0XSA9PiAzMjY4Cj4gICAgICAgICAgICAgIFt0bHNdID0+IDEKPiAg
ICAgICAgICAgICAgW3RpbWVvdXRdID0+IDUKPiAgICAgICAgICAgICAgW3ZlcnNpb25dID0+IDMK
PiAgICAgICAgICAgICAgW3VzZXJdID0+IEFycmF5Cj4gICAgICAgICAgICAgICAgICAoCj4gICAg
ICAgICAgICAgICAgICAgICAgW2Jhc2Vkbl0gPT4gREM9ZmxpYXdlbGxzLERDPWNvbSxEQz1hcgo+
ICAgICAgICAgICAgICAgICAgICAgIFt1aWRdID0+IHVzZXJQcmluY2lwYWxOYW1lCj4gICAgICAg
ICAgICAgICAgICAgICAgW29iamVjdGNsYXNzXSA9PiBBcnJheQo+ICAgICAgICAgICAgICAgICAg
ICAgICAgICAoCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMF0gPT4gKgo+ICAgICAg
ICAgICAgICAgICAgICAgICAgICApCj4KPiAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyX3R5
cGVdID0+IG9iamVjdGNsYXNzCj4gICAgICAgICAgICAgICAgICApCj4KPiAgICAgICAgICAgICAg
W2JpbmRhc10gPT4gdXNlcgo+ICAgICAgICAgICAgICBbdXNlbGRhcF0gPT4gMQo+ICAgICAgICAg
ICkKCgpFbCAyOS8xMS8yMDE5IGEgbGFzIDA2OjUyIHAuIG0uLCBBcmplbiBkZSBLb3J0ZSBlc2Ny
aWJpw7M6Cj4gQ2l0ZXJlbiAiRGF2aWQgV2VsbHMgLSBBbGZhdmluaWwgUy5BLiIgPGR3ZWxsc0Bh
bGZhdmluaWwuY29tPjoKPgo+PiBUaGFua3MgZm9yIHlvdXIgcmVwbHkuCj4+Cj4+IEkgbW92ZWQg
dGhlIGZpbGUgZnJvbSBob29rcy5sb2NhbC5waHAgdG8gaG9va3MucGhwIGFuZCBJIHN0aWxsIGdl
dCB0aGUKPj4gZXJyb3Igc3RhdGluZyBob3JkZSBpcyB0cnlpbmcgdG8gY29ubmVjdCB0byBsb2Nh
bGhvc3Q6Mzg5IGluc3RlYWQgb2YgdGhlCj4+IGhvc3QgY29uZmlndXJlZCBpbiBjb25maWcucGhw
Lgo+Cj4gUGxlYXNlIGJlIHByZWNpc2UuIFRoZXJlIGlzIG5vIGNvbmZpZ3VyYXRpb24gZmlsZSAn
Y29uZmlnLnBocCcgYW5kIAo+IGFsc28gcGxlYXNlIG1lbnRpb24gKndoaWNoKiBjb25maWd1cmF0
aW9uIGZpbGUgeW91ciBtZWFuLiBJbiBtYW55IAo+IGFwcGxpY2F0aW9ucyB0aGVyZSB3aWxsIGJl
IGEgJ2NvbmYucGhwJyBhbmQgJ2hvb2tzLnBocCcgZmlsZSwgYnV0IAo+IHdpdGhvdXQgYXQgbGVh
c3QgdHdvIG1vcmUgZGlyZWN0b3J5IGxldmVscywgSSBoYXZlIG5vIGlkZWEgd2hpY2ggb25lIAo+
IHlvdSBtZWFuLgo+Cj4gTGFzdCBidXQgbm90IGxlYXN0LCBtYWtlIHN1cmUgdGhlIHdlYnNlcnZl
ciBpcyBhYmxlIHRvIHJlYWQgdGhlc2UgCj4gY29uZmlndXJhdGlvbiBmaWxlcyAocGVybWlzc2lv
bnMpLgo+Cj4+Cj4+IEVsIDI5LzExLzIwMTkgYSBsYXMgMTY6NTQsIEFyamVuIGRlIEtvcnRlIGVz
Y3JpYmnDszoKPj4+IENpdGVyZW4gIkRhdmlkIFdlbGxzIC0gQWxmYXZpbmlsIFMuQS4iIDxkd2Vs
bHNAYWxmYXZpbmlsLmNvbT46Cj4+Pgo+Pj4+IEhpIGFnYWluIQo+Pj4+Cj4+Pj4gSSBkaXNjb3Zl
cmVkIHRoYXQgd2hlbiBJIGV4ZWN1dGUgaW4gdGhlIFBIUCBTaGVsbCBqdXN0IHRoZSBsaW5lIAo+
Pj4+ICIkbGRhcCA9Cj4+Pj4gJEdMT0JBTFNbJ2luamVjdG9yJ10tPmdldEluc3RhbmNlKCdIb3Jk
ZV9MZGFwJyk7IiBJIGFscmVhZHkgZ2V0IHRoZQo+Pj4+IGVycm9yICJleGNlcHRpb24gJ0hvcmRl
X0xkYXBfRXhjZXB0aW9uJyB3aXRoIG1lc3NhZ2UgJ0NvdWxkIG5vdCAKPj4+PiBjb25uZWN0Cj4+
Pj4gdG8gbG9jYWxob3N0OjM4OSciCj4+Pj4KPj4+Pgo+Pj4+IC0tLS0tLS0tIE1lbnNhamUgcmVl
bnZpYWRvIC0tLS0tLS0tCj4+Pj4gQXN1bnRvOsKgwqDCoMKgIFtob3JkZV0gTERBUCBjb25maWd1
cmF0aW9uIGFuZCBob29rcwo+Pj4+IEZlY2hhOsKgwqDCoMKgIFRodSwgMjggTm92IDIwMTkgMTg6
MTI6NDEgLTAzMDAKPj4+PiBEZTrCoMKgwqDCoCBEYXZpZCBXZWxscyA8ZHdlbGxzQGFsZmF2aW5p
bC5jb20+Cj4+Pj4gUGFyYTrCoMKgwqDCoCBob3JkZUBsaXN0cy5ob3JkZS5vcmcKPj4+Pgo+Pj4+
Cj4+Pj4KPj4+PiBIaSEKPj4+Pgo+Pj4+Cj4+Pj4gSSBoYXZlIGNvbmZpZ3VyZWQgdGhlIExEQVAg
c2V0dGluZ3MgaW4gaG9yZGUgYXMgZm9sbG93Cj4+Pj4KPj4+Pj4gJGNvbmZbJ2xkYXAnXVsnaG9z
dHNwZWMnXSA9IGFycmF5KCdkYzEuZmxpYXdlbGxzLmNvbS5hcicpOwo+Pj4+PiAkY29uZlsnbGRh
cCddWydwb3J0J10gPSAzMjY4Owo+Pj4+PiAkY29uZlsnbGRhcCddWyd0bHMnXSA9IHRydWU7Cj4+
Pj4+ICRjb25mWydsZGFwJ11bJ3RpbWVvdXQnXSA9IDU7Cj4+Pj4+ICRjb25mWydsZGFwJ11bJ3Zl
cnNpb24nXSA9IDM7Cj4+Pj4+ICRjb25mWydsZGFwJ11bJ3VzZXInXVsnYmFzZWRuJ10gPSAnREM9
ZmxpYXdlbGxzLERDPWNvbSxEQz1hcic7Cj4+Pj4+ICRjb25mWydsZGFwJ11bJ3VzZXInXVsndWlk
J10gPSAndXNlclByaW5jaXBhbE5hbWUnOwo+Pj4+PiAkY29uZlsnbGRhcCddWyd1c2VyJ11bJ29i
amVjdGNsYXNzJ10gPSBhcnJheSgnKicpOwo+Pj4+PiAkY29uZlsnbGRhcCddWyd1c2VyJ11bJ2Zp
bHRlcl90eXBlJ10gPSAnb2JqZWN0Y2xhc3MnOwo+Pj4+PiAkY29uZlsnbGRhcCddWydiaW5kYXMn
XSA9ICd1c2VyJzsKPj4+Pj4gJGNvbmZbJ2xkYXAnXVsndXNlbGRhcCddID0gdHJ1ZTsKPj4+Pgo+
Pj4+IFdoZW4gSSBtb2RpZnkgdGhlIGhvb2tzLmxvY2FsLnBocCBmaWxlIHNvIHRoYXQgaXQgcmVh
ZHMKPj4+Cj4+PiBIb3JkZSBkb2Vzbid0IHVzZSBhICdob29rcy5sb2NhbC5waHAnIGZpbGUgYW55
d2hlcmUuIFRoZSBkaXN0cmlidXRlZAo+Pj4gdmVyc2lvbiBpcyBjYWxsZWQgJ2hvb2tzLnBocC5k
aXN0JyBhbmQgYXMgZmFyIGFzIEkgcmVtZW1iZXIgdGhlcmUgaXMgYQo+Pj4gJ2hvb2tzLnBocCcg
aW4gdGhlIHdlYm1haWwgcGFja2FnZS4gQ2hhbmNlcyBhcmUgaGVyZSBpcyBhICdob29rcy5waHAn
Cj4+PiBmaWxlIGFsb25nc2lkZSB5b3VyICdob29rcy5sb2NhbC5waHAnIGFuZCBpdCBpcyB0aGF0
IG9uZSB0aGF0IGlzCj4+PiBhY3R1YWxseSB1c2VkLiBUcnkgcmVuYW1pbmcgdGhpcyAnaG9va3Mu
bG9jYWwucGhwJyBmaWxlIHRvICdob29rcy5waHAnCj4+PiBhbmQgY2hlY2sgYWdhaW4uCj4+Pgo+
Pj4+Cj4+Pj4+IDw/cGhwCj4+Pj4+IGNsYXNzIEhvcmRlX0hvb2tzCj4+Pj4+IHsKPj4+Pj4gwqDC
oMKgIHB1YmxpYyBmdW5jdGlvbiBwcmVmc19pbml0KCRwcmVmLCAkdmFsdWUsICR1c2VybmFtZSwg
JHNjb3BlX29iKQo+Pj4+PiDCoMKgwqAgewo+Pj4+PiDCoMKgwqDCoMKgwqDCoCBzd2l0Y2ggKCRw
cmVmKSB7Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgIGNhc2UgJ2Zyb21fYWRkcic6Cj4+Pj4+Cj4+Pj4+
IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGlzX251bGwoJHVzZXJuYW1lKSkgewo+Pj4+PiDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuICR2YWx1ZTsKPj4+Pj4gwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4+Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJGxk
YXAgPSAkR0xPQkFMU1snaW5qZWN0b3InXS0+Z2V0SW5zdGFuY2UoJ0hvcmRlX0xkYXAnKTsKPj4+
Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0cnkgewo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgJHJlc3VsdCA9ICRsZGFwLT5zZWFyY2goCj4+Pj4+ICRHTE9CQUxTWydjb25m
J11bJ2xkYXAnXVsndXNlciddWydiYXNlZG4nXSwKPj4+Pj4gSG9yZGVfTGRhcF9GaWx0ZXI6OmNy
ZWF0ZSgndXNlclByaW5jaXBhbE5hbWUnLCAnZXF1YWxzJywgJHVzZXJuYW1lKSwKPj4+Pj4gwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXJyYXkoJ2F0dHJpYnV0ZXMnID0+
IGFycmF5KCdtYWlsJykpCj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCApOwo+
Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCRyZXN1bHQtPmNvdW50KCkp
IHsKPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJGVudHJ5ID0g
JHJlc3VsdC0+c2hpZnRFbnRyeSgpOwo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoCByZXR1cm4gJGVudHJ5LT5nZXRWYWx1ZSgnbWFpbCcsICdzaW5nbGUnKTsKPj4+
Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4+Pj4gwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoCB9IGNhdGNoIChIb3JkZV9MZGFwX0V4Y2VwdGlvbiAkZSkgewo+Pj4+PiDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIH0KPj4+Pj4KPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1
cm4gJHZhbHVlOwo+Pj4+Pgo+Pj4+Pgo+Pj4+PiDCoMKgwqDCoMKgwqDCoCBjYXNlICdmdWxsbmFt
ZSc6Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGlzX251bGwoJHVzZXJuYW1lKSkg
ewo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuICR2YWx1ZTsKPj4+
Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4+Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgJGxkYXAgPSAkR0xPQkFMU1snaW5qZWN0b3InXS0+Z2V0SW5zdGFuY2UoJ0hvcmRlX0xk
YXAnKTsKPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0cnkgewo+Pj4+PiDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgJHJlc3VsdCA9ICRsZGFwLT5zZWFyY2goCj4+Pj4+ICRHTE9C
QUxTWydjb25mJ11bJ2xkYXAnXVsndXNlciddWydiYXNlZG4nXSwKPj4+Pj4gSG9yZGVfTGRhcF9G
aWx0ZXI6OmNyZWF0ZSgndXNlclByaW5jaXBhbE5hbWUnLCAnZXF1YWxzJywgJHVzZXJuYW1lKSwK
Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXJyYXkoJ2F0dHJp
YnV0ZXMnID0+IGFycmF5KCdjbicsICdjbjtsYW5nLWVzJykpCj4+Pj4+IMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoCApOwo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
aWYgKCRyZXN1bHQtPmNvdW50KCkpIHsKPj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgJGVudHJ5ID0gJHJlc3VsdC0+c2hpZnRFbnRyeSgpOwo+Pj4+PiDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gJGVudHJ5LT5nZXRWYWx1ZSgn
Y247bGFuZy1lcycsICdzaW5nbGUnKQo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgID86ICRlbnRyeS0+Z2V0VmFsdWUoJ2NuJywgJ3NpbmdsZScpOwo+
Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4+PiDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgIH0gY2F0Y2ggKEhvcmRlX0xkYXBfRXhjZXB0aW9uICRlKSB7Cj4+Pj4+IMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4+Pgo+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl
dHVybiAkdXNlcm5hbWU7Cj4+Pj4+IMKgwqDCoMKgwqDCoMKgIH0KPj4+Pj4gwqDCoMKgIH0KPj4+
Pj4gfQo+Pj4+Cj4+Pj4gYW5kIGVuYWJsZSB0aGVzZSBob29rcyBieSBtb2RpZnlpbmcgdGhlIHBy
ZWZzLmxvY2FsLnBocCBmaWxlIHNvIAo+Pj4+IHRoYXQgaXQKPj4+PiByZWFkcwo+Pj4+Cj4+Pj4+
IDw/cGhwCj4+Pj4+ICRfcHJlZnNbJ2Zyb21fYWRkciddWydob29rJ10gPSB0cnVlOwo+Pj4+PiAk
X3ByZWZzWydmdWxsbmFtZSddWydob29rJ10gPSB0cnVlOwo+Pj4+Cj4+Pj4gSSBnZXQgYW4gZXJy
b3IgdGhhdCBzYXlzCj4+Pj4KPj4+Pj4KPj4+Pj4gwqDCoMKgwqDCoCBDb3VsZCBub3QgY29ubmVj
dCB0byBsb2NhbGhvc3Q6Mzg5Cj4+Pj4+Cj4+Pj4gV2hlbiBJIGNvbW1lbnQgdGhlIHByZWZzLmxv
Y2FsLnBocCBmaWxlIGFuZCBhY2Nlc3MgaG9yZGUgSSBydW4gdGhlCj4+Pj4gZm9sbG93aW5nIHBp
ZWNlIG9mIGNvZGUgaW4gdGhlIFBIUCBTaGVsbCAodW5kZXIgdGhlIGhvcmRlIGNvbnRleHQKPj4+
Pgo+Pj4+PiB8JGxkYXB8IHw9Cj4+Pj4+IHx8JEdMT0JBTFN8fFt8fCdpbmplY3Rvcid8fF0tPmdl
dEluc3RhbmNlKHx8J0hvcmRlX0xkYXAnfHwpO3wKPj4+Pj4gfHx8dHJ5fCB8e3wKPj4+Pj4gfHx8
JHJlc3VsdHwgfD0gfHwkbGRhcHx8LT5zZWFyY2gofAo+Pj4+PiB8fHwkR0xPQkFMU3x8W3x8J2Nv
bmYnfHxdW3x8J2xkYXAnfHxdW3x8J3VzZXInfHxdW3x8J2Jhc2Vkbid8fF0sfAo+Pj4+PiB8fHxI
b3JkZV9MZGFwX0ZpbHRlcjo6Y3JlYXRlKHx8J3VzZXJQcmluY2lwYWxOYW1lJ3x8LCB8fCdlcXVh
bHMnfHwsCj4+Pj4+IHx8J2R3ZWxsc0BmbGlhd2VsbHMuY29tLmFyJ3x8KSwgfHxhcnJheXx8KHx8
J2F0dHJpYnV0ZXMnfCB8PT4KPj4+Pj4gfHxhcnJheXx8KHx8J21haWwnfHwpKSk7fAo+Pj4+PiB8
fHxpZnwgfCh8fCRyZXN1bHR8fC0+fHxjb3VudHx8KCkpIHt8Cj4+Pj4+IHx8fCRlbnRyeXwgfD0g
fHwkcmVzdWx0fHwtPnNoaWZ0RW50cnkoKTt8Cj4+Pj4+IHx8fHJldHVybnwgfCRlbnRyeXx8LT5n
ZXRWYWx1ZSh8fCdtYWlsJ3x8LCB8fCdzaW5nbGUnfHwpO3wKPj4+Pj4gfHx8fXwKPj4+Pj4gfHx8
fSB8fGNhdGNofCB8KEhvcmRlX0xkYXBfRXhjZXB0aW9uIHx8JGV8fCkge3wKPj4+Pj4gfHx8fXwK
Pj4+Pj4gfHx8cmV0dXJufCB8JHZhbHVlfHw7fAo+Pj4+IEkgZ2V0IHRoZSBmb2xsb3dpbmcgcmVz
dWx0Cj4+Pj4KPj4+Pj4gZXhjZXB0aW9uICdIb3JkZV9MZGFwX0V4Y2VwdGlvbicgd2l0aCBtZXNz
YWdlICdDb3VsZCBub3QgY29ubmVjdCB0bwo+Pj4+PiBsb2NhbGhvc3Q6Mzg5JyBpbiAvdXNyL2xp
YjY0L3BocC9Ib3JkZS9MZGFwLnBocDozMjEKPj4+Pj4gU3RhY2sgdHJhY2U6Cj4+Pj4+ICMwIC91
c3IvbGliNjQvcGhwL0hvcmRlL0xkYXAucGhwKDIyNSk6IEhvcmRlX0xkYXAtPl9jb25uZWN0KCkK
Pj4+Pj4gIzEgL3Vzci9saWI2NC9waHAvSG9yZGUvTGRhcC5waHAoMTM3KTogSG9yZGVfTGRhcC0+
YmluZCgpCj4+Pj4+ICMyIFtpbnRlcm5hbCBmdW5jdGlvbl06IEhvcmRlX0xkYXAtPl9fY29uc3Ry
dWN0KEFycmF5KQo+Pj4+PiAjMyAvdXNyL2xpYjY0L3BocC9Ib3JkZS9JbmplY3Rvci9CaW5kZXIv
SW1wbGVtZW50YXRpb24ucGhwKDg4KToKPj4+Pj4gUmVmbGVjdGlvbkNsYXNzLT5uZXdJbnN0YW5j
ZUFyZ3MoQXJyYXkpCj4+Pj4+ICM0IC91c3IvbGliNjQvcGhwL0hvcmRlL0luamVjdG9yL0JpbmRl
ci9JbXBsZW1lbnRhdGlvbi5waHAoNzApOgo+Pj4+PiBIb3JkZV9JbmplY3Rvcl9CaW5kZXJfSW1w
bGVtZW50YXRpb24tPl9nZXRJbnN0YW5jZShPYmplY3QoSG9yZGVfSW5qZWN0b3IpLCAKPj4+Pj4K
Pj4+Pj4gT2JqZWN0KFJlZmxlY3Rpb25DbGFzcykpCj4+Pj4+ICM1IC91c3IvbGliNjQvcGhwL0hv
cmRlL0luamVjdG9yL0JpbmRlci9Bbm5vdGF0ZWRTZXR0ZXJzLnBocCg3OCk6Cj4+Pj4+IEhvcmRl
X0luamVjdG9yX0JpbmRlcl9JbXBsZW1lbnRhdGlvbi0+Y3JlYXRlKE9iamVjdChIb3JkZV9Jbmpl
Y3RvcikpCj4+Pj4+ICM2IC91c3IvbGliNjQvcGhwL0hvcmRlL0luamVjdG9yLnBocCgyMzgpOgo+
Pj4+PiBIb3JkZV9JbmplY3Rvcl9CaW5kZXJfQW5ub3RhdGVkU2V0dGVycy0+Y3JlYXRlKE9iamVj
dChIb3JkZV9JbmplY3RvcikpIAo+Pj4+Pgo+Pj4+PiAjNyAvdXNyL2xpYjY0L3BocC9Ib3JkZS9J
bmplY3Rvci5waHAoMjcyKToKPj4+Pj4gSG9yZGVfSW5qZWN0b3ItPmNyZWF0ZUluc3RhbmNlKCdI
b3JkZV9MZGFwJykKPj4+Pj4gIzggL3Zhci93d3cvaG9yZGUvYWRtaW4vcGhwc2hlbGwucGhwKDY2
KSA6IGV2YWwoKSdkIGNvZGUoMSk6Cj4+Pj4+IEhvcmRlX0luamVjdG9yLT5nZXRJbnN0YW5jZSgn
SG9yZGVfTGRhcCcpCj4+Pj4+ICM5IC92YXIvd3d3L2hvcmRlL2FkbWluL3BocHNoZWxsLnBocCg2
Nik6IGV2YWwoKQo+Pj4+PiAjMTAge21haW59Cj4+Pj4KPj4+PiBGcm9tIHdoYXQgSSBjYW4gdGVs
bCB0aGUgbGlicmFyeSBpcyB0cnlpbmcgdG8gY29ubmVjdCBsbyBsb2NhbGhvc3Q6Mzg5Cj4+Pj4g
ZXZlbiB0aG91Z2ggdGhlIHNldHRpbmdzIHN0YXRlIHRoYXQgaXQgc2hvdWxkIGJlIGNvbm5lY3Rp
bmcgdG8KPj4+PiBkYzEuZmxpYXdlbGxzLmNvbS5hcjozMjY4LiBXaGF0IGNvdWxkIEkgYmUgbWlz
c2luZyBoZXJlPwo+Pj4+Cj4+Pj4KPj4+PiBUaGFuayB5b3UgdmVyeSBtdWNoIGluIGFkdmFuY2Uh
Cj4+Pj4KPj4+PiBCZXN0IHJlZ2FyZHMsCj4+Pj4KPj4+PiBEYXZpZCBXZWxscy4KPj4+Pgo+Pj4+
Cj4+Pj4KPj4+PiAtLSAKPj4+PiBIb3JkZSBtYWlsaW5nIGxpc3QKPj4+PiBGcmVxdWVudGx5IEFz
a2VkIFF1ZXN0aW9uczogaHR0cDovL2hvcmRlLm9yZy9mYXEvCj4+Pj4gVG8gdW5zdWJzY3JpYmUs
IG1haWw6IGhvcmRlLXVuc3Vic2NyaWJlQGxpc3RzLmhvcmRlLm9yZwo+Pj4KPj4+Cj4+Pgo+Cj4K
PgotLSAKSG9yZGUgbWFpbGluZyBsaXN0CkZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zOiBodHRw
Oi8vaG9yZGUub3JnL2ZhcS8KVG8gdW5zdWJzY3JpYmUsIG1haWw6IGhvcmRlLXVuc3Vic2NyaWJl
QGxpc3RzLmhvcmRlLm9yZwo=