Re: Spamitarium changes

Jonathan Kamens <[email protected]> Mon, 11 Sep 2017 15:13:05 -0400
Newsgroups gmane.mail.bogofilter.devel
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------6BFAAE5395E3EC2315D7B035
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

That's fine with me. I've attached my current version.

  jik


On 09/11/2017 12:23 PM, Matthias Andree wrote:
> Am 11.09.2017 um 18:15 schrieb Jonathan Kamens:
>> Hi,
>>
>> I've got a bunch of backward-compatible improvements and fixes that I've
>> made to spamitarium over the years. I emailed Tom Anderson many years
>> ago and asked him to incorporate them into his new version and put out a
>> new release, but he never responded.. I emailed him again recently to
>> ask if he's still maintaining spamitarium and would accept my patches,
>> and again no response.
>>
>> Can I submit these changes to be included in the version of spamitarium
>> shipped with bogofilter? I'd rather not have to keep maintaining my own
>> fork of spamitarium rather than using the one that ships with bogofilter.
>>
>>   jik
> Hi Jonathan,
>
> I am Cc:ing Tom to see if he'll respond to me instead, in case there
> were transmission issues.
>
> I don't have strong feelings either way, and propose to take a pragmatic
> approach, and just offer your updated version
> in addition to Tom's original one so people can see and choose, and we
> solicit feedback.
>
> If people want the original version, both can be kept available, and
> unless we have strong input that people want to keep both around, we can
> drop the ancestral version at some point.
>
> What do you think?
>
> Regards,
> Matthias
>
> _______________________________________________
> bogofilter-dev mailing list
> [email protected]
> https://www.bogofilter.org/mailman/listinfo/bogofilter-dev
>


--------------6BFAAE5395E3EC2315D7B035
Content-Type: text/plain;
 name="jiks-spamitarium.pl.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
 filename="jiks-spamitarium.pl.txt"

IyEvdXNyL2Jpbi9wZXJsIC1UdwpyZXF1aXJlIDUuMDA2XzAwMTsKdXNlIHN0cmljdDsKCiMg
VGhpcyBpcyBhIGZvcmsgb2YgVG9tIEFuZGVyc29uJ3Mgc3BhbWl0YXJpdW0ucGwgYnkgSm9u
YXRoYW4gS2FtZW5zCiMgPGppa0BrYW1lbnMudXM+LiBUaGUgY2hhbmdlcyBoZXJlIGhhdmUg
YmVlbiBzdWJtaXR0ZWQgYmFjayB0byBUb20gQW5kZXJzb24KIyBmb3IgaW5jb3Jwb3JhdGlv
biBpbnRvIGhpcyBtYXN0ZXIgdmVyc2lvbi4gSW4gdGhlIG1lYW50aW1lLCB5b3UgbWF5IHdp
c2ggdG8KIyB1c2UgdGhpcyB2ZXJzaW9uIGluc3RlYWQuIEhlcmUgYXJlIHRoZSBjaGFuZ2Vz
IGluIGl0OgojCiMgKiBDb21tYW5kLWxpbmUgcGFyc2luZyBoYXMgYmVlbiB1cGRhdGVkIHRv
IHVzZSB0aGUgc3RhbmRhcmQgUGVybCBHZXRvcHQ6OkxvbmcKIyAgIHN5bnRheCwgd2hpbGUg
Y29udGludWluZyB0byBzdXBwb3J0IHRoZSAiYnVuZGxlZCIgb3B0aW9ucyBzeW50YXggc3Vw
cG9ydGVkCiMgICBieSBwcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGUgc2NyaXB0LgojICogT3B0
aW9ucyBoYXZlIGJlZW4gYWRkZWQgdG8gc3BlY2lmeSBpbmZvcm1hdGlvbiB0aGF0IG1heSBi
ZSBtaXNzaW5nIGZyb20gdGhlCiMgICBtZXNzYWdlIGhlYWRlciwgc3BlY2lmaWNhbGx5IGZv
ciB3aGVuIHNwYW1pdGFyaXVtIGlzIGJlaW5nIGNhbGxlZCBmcm9tIGEKIyAgIE1pbHRlciBh
bmQgdGhlcmVmb3JlIHRoZSBtZXNzYWdlIGRvZXMgbm90IHlldCBoYXZlIHRoZSBSZXR1cm4t
UGF0aCBvciBsb2NhbAojICAgUmVjZWl2ZWQgbGluZXMgdGhhdCB3aWxsIGJlIGluc2VydGVk
IGJ5IHRoZSBNVEEgYmVmb3JlIGZpbmFsIGRlbGl2ZXJ5LiBTZWUKIyAgIHRoZSBkb2N1bWVu
dGF0aW9uIGJlbG93IGZvciB0aGUgb3B0aW9ucyAtLXJldHVybi1wYXRoLCAtLW5vLWxvY2Fs
LXJlY2VpdmVkLAojICAgLS1yZW1vdGUtaXAsIC0tcmVtb3RlLW5hbWUsIC0taGVsbywgLS1s
b2NhbC1pcCwgLS1sb2NhbC1uYW1lLCAtLXJjcHQsIGFuZAojICAgLS1hZGQtbG9jYWwtcmVj
ZWl2ZWQuCiMgKiBUeXBvcyBhbmQgc3VjaCBoYXZlIGJlZW4gY2xlYW5lZCB1cCBpbiB0aGUg
ZG9jdW1lbnRhdGlvbi4KIyAqIEEgZGF0ZS1wYXJzaW5nIGJ1ZyB3aGljaCB3YXMgY2F1c2lu
ZyB0aGUgdGltZSB6b25lIHRvIGJlIGlnbm9yZWQsIHRodXMKIyAgIGNhdXNpbmcgdGhlIFgt
RGF0ZS1DaGVjayBoZWFkZXIgdG8gcmVwb3J0IGFuIGluYWNjdXJhdGUgZGVsdGEsIGhhcyBi
ZWVuCiMgICBmaXhlZC4KIyAqIEEgYnVnIHdoaWNoIGNvdWxkIGNhdXNlIHNwYW1pdGFyaXVt
IHRvIGNyYXNoIHVwb24gZW5jb3VudGVyaW5nIGEgZmFyIGludG8KIyAgIHRoZSBmdXR1cmUg
ZGF0ZSBpbiB0aGUgbWVzc2FnZSBoZWFkZXIgaGFzIGJlZW4gZml4ZWQuCiMgKiBBIGJ1ZyB3
aGljaCB3YXMgY2F1c2luZyBzb21lIGRvbWFpbiBuYW1lcyB0byBiZSB0cnVuY2F0ZWQgKGUu
Zy4sCiMgICAib210YTAxLW1kcC53ZXN0Y2hlc3Rlci5wYS5iby5jb21jYXN0Lm5ldCIgYmVj
YW1lICJvbXRhMDEtbWRwLndlc3QiKSBoYXMKIyAgIGJlZW4gZml4ZWQuCiMgKiBBIGNvdXBs
ZSBvZiBQZXJsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZ3MgaGF2ZSBiZWVuIGZp
eGVkLgojICogTWFpbDo6U1BGIGlzIHVzZWQgbm93IGluc3RlYWQgb2YgTWFpbDo6U1BGOjpR
dWVyeSwgZm9yIElQdjYgc3VwcG9ydC4KIyAqIENvZGUgaGFzIGJlZW4gYWRkZWQgdG8gd29y
ayBhcm91bmQgdGhlIGZhY3QgdGhhdCBzb21lIGVtYWlscyBnZW5lcmF0ZWQgYnkKIyAgIENv
bnN0YW50IENvbnRhY3QgaGF2ZSBDUiByYXRoZXIgdGhhbiBDUkxGIGF0IHRoZSBlbmQgb2Yg
dGhlaXIgRGF0ZTogaGVhZGVyCiMgICBsaW5lcyAodGhpcyBpcyBhIHZlcnkgc3BlY2lmaWMg
d29ya2Fyb3VuZCBmb3IgYSB2ZXJ5IHNwZWNpZmljIHByb2JsZW0KIyAgIGJlY2F1c2UgdGVj
aG5pY2FsbHkgdGhlIHdvcmthcm91bmQgaXMgYSB2aW9sYXRpb24gb2YgdGhlIFNNVFAgUkZD
LCB0aG91Z2gKIyAgIG5vYm9keSBlbHNlIHNlZW1zIHRvIGNhcmUgYWJvdXQgdGhhdC4gOi0v
KS4KCj1oZWFkMSBOQU1FCgpTcGFtaXRhcml1bSAtIGV2YWx1YXRlcyBhbmQgcmVwYWlycyB0
aGUgc2FuaXR5IG9mIGVtYWlsIGhlYWRlcnMuLi4KCj1jdXQKCm15ICR2ZXJzaW9uID0gIjAu
NC4wIjsKCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IwojIyMjIyMjIyMjIyMjIyMgQ29weWxlZnQgTm90aWNlICMjIyMjIyMjIyMjIyMjIyMKIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIENvcHly
aWdodCCpIDIwMDQgT3JkZXIgYW1pZCBDaGFvcywgSW5jLgojIEF1dGhvcjogVG9tIEFuZGVy
c29uIAojIG5lbytzcGFtaXRhcml1bUBvcmRlcmFtaWRjaGFvcy5jb20KIyAKIyBUaGlzIHBy
b2dyYW0gaXMgb3Blbi1zb3VyY2Ugc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IAojIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMgCiMgTGljZW5zZSwgdjIsIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIAojIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
CiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIwojIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyAKIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRv
OiAKIwojIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiAKIyA1OSBUZW1wbGUgUGxhY2UsIFN1
aXRlIDMzMAojIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyAgVVNBCiMKIyBodHRwOi8vd3d3Lmdu
dS5vcmcvCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCiMjIyMjIyMjIyMjIyMjIyMjIERvY3VtZW50YXRpb24gIyMjIyMjIyMjIyMjIyMjIyMK
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKIyB1
c2UgInBlcmxkb2Mgc3BhbWl0YXJpdW0iIG9yICJzcGFtaXRhcml1bSAtaCIgdG8gcmVhZCB0
aGlzCgo9aGVhZDEgU1lOT1BTSVMKCj1oZWFkMiBDb21tYW5kIGxpbmUgdXNhZ2U6CgpCPHNw
YW1pdGFyaXVtPiBbSTxvcHRpb25zPl0gPCBbSTxyZmM4MjJfZW1haWw+XQoKPWhlYWQyIFBy
b2NtYWlsIHVzYWdlIChyZWNvbW1lbmRlZCk6CgpBZGQgdG8geW91ciAucHJvY21haWxyYyB0
aGUgZm9sbG93aW5nIHJlY2lwZToKCiAgOjAKICB7CiAgICAgICAgOjAgZmh3CiAgICAgICAg
fCBzcGFtaXRhcml1bSAtc3JlYWR4dHAKICAKICAgICAgICAjIGZpbHRlciB0aHJvdWdoIGJv
Z29maWx0ZXIsIHRhZ2dpbmcgYXMgc3BhbSAKCSMgb3Igbm90IGFuZCB1cGRhdGluZyB0aGUg
d29yZCBsaXN0cwogICAgICAgIDowIGZ3CiAgICAgICAgfCBib2dvZmlsdGVyIC11ZXAKCiAg
ICAgICAgIyBhZGQgYmFjayB0aGUgIkZyb20iIGhlYWRlciBmb3IgcHJvcGVyIGRlbGl2ZXJ5
CiAgICAgICAgOjAgZmh3CiAgICAgICAgfCBmb3JtYWlsIC1JICJGcm9tICIgLWEgIkZyb20g
IgogIH0KCj1oZWFkMiBDb21tYW5kIGxpbmUgb3B0aW9uczoKCj1vdmVyIDQKCj1pdGVtIEI8
LWg+CgpkaXNwbGF5IHRoaXMgaGVscCBmaWxlCgo9aXRlbSBCPC1zPiBbSTxwZXJtaXR0ZWRf
aGVhZGVycz5dCgpBbGxvdyBzdGFuZGFyZCBmaWVsZHMgb25seSAoUkZDIDgyMi8yODIyLzEw
NDkvMTM0MS8xNTIxLzIxODMvMTg2NCkgLi4uCmFsbCBvdGhlcnMgYXJlIHN0cmlwcGVkIGZy
b20gdGhlIGVtYWlsLiAgVG8gZXhjbHVkZSBzb21lIGhlYWRlcnMgZnJvbQpzdHJpcHBpbmcs
IHNwZWNpZnkgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBhcyBhbiBhcmd1bWVudCB0byB0aGlz
Cm9wdGlvbi4KCj1pdGVtIEI8LXI+CgppbnNlcnQgbmV3IHJlY2VpdmVkIGxpbmUgY29udGFp
bmluZyB2ZXJpZmllZCByZWNlaXZlZC1saW5lIHRva2VucwoKPWl0ZW0gQjwtZT4KCmluY2x1
ZGUgaGVsbyBzdHJpbmcgaW4gcmVjZWl2ZWQgbGluZQoKPWl0ZW0gQjwtZD4KCmFsbG93IERO
UyBsb29rdXBzIChmb3J3YXJkIGFuZCByZXZlcnNlKSB0byBoZWxwIGZpbGwgaW4gYWxsIApu
ZWNlc3NhcnkgcmVjZWl2ZWQgZmllbGRzCgo9aXRlbSBCPC1mPgoKZm9yY2UgckROUyBsb29r
dXBzIGV2ZW4gd2hlbiBwcm92aWRlZCBhbHJlYWR5IGJ5IHRoZSBNVEEKCj1pdGVtIEI8LWE+
CgpwZXJmb3JtIEFTTiBsb29rdXBzIGFuZCBpbmNsdWRlIGluIHJlY2VpdmVkIGxpbmVzCgo9
aXRlbSBCPC1wPgoKcGVyZm9ybSBTUEYgbG9va3VwcyBhbmQgaW5jbHVkZSBpbiByZWNlaXZl
ZCBsaW5lcwoKPWl0ZW0gQjwteD4KCmluY2x1ZGUgY3VzdG9tIHgtaGVhZGVycyBmb3IgYWRk
aXRpb25hbCBoZWFkZXIgdmFsaWRhdGlvbnM6Cgo9aXRlbSBCPC10PgoKdmFsaWRhdGUgdGhh
dCB0aGUgZGF0ZSBoZWFkZXIgaXMgd2l0aGluIGNsb3NlIHByb3hpbWl0eSB0byB0aGUgCnJl
Y2VpdmVkIGRhdGUgKHNlZSAkZGF0ZV9saW1pdCBnbG9iYWwgdmFyaWFibGUgdG8gY29uZmln
dXJlKQoKPWl0ZW0gQjwtdz4KCnBhcnNlIGFuZCBkaXNwbGF5IHRoZSBib2R5IG9mIHRoZSBl
bWFpbCBpbiBhZGRpdGlvbiB0byB0aGUgaGVhZGVycwoKPWl0ZW0gQjwtYj4KCmRpc3BsYXkg
YmVuY2htYXJraW5nIGluZm8KCj1pdGVtIEI8LS1yZXR1cm4tcGF0aD4gSTxhZGRyPgoKU3Bl
Y2lmeSB0aGUgc2VuZGVyIG9mIHRoZSBlbWFpbCBmb3IgU1BGIGxvb2t1cHMsIG92ZXJyaWRp
bmcgdGhlCiJSZXR1cm4tUGF0aCIgZmllbGQuCgo9aXRlbSBCPC0tbm8tbG9jYWwtcmVjZWl2
ZWQ+CgpUZWxsIHNwYW1pdGFyaXVtIHRoYXQgdGhlcmUgaXMgbm8gUmVjZWl2ZWQgbGluZSBp
biB0aGUgbWVzc2FnZSBmcm9tCnRoZSBsb2NhbCBtYWlsZXIsIGUuZy4sIGJlY2F1c2Ugc3Bh
bWl0YXJpdW0gaXMgYmVpbmcgY2FsbGVkIGZyb20KaW5zaWRlIGEgTWlsdGVyLgoKVGhlIGZv
bGxvd2luZyBvcHRpb25zIGFyZSBvbmx5IHVzZWQgd2hlbiBCPC0tbm8tbG9jYWwtcmVjZWl2
ZWQ+IGlzCnNwZWNpZmllZC4KCj1vdmVyIDQKCj1pdGVtIEI8LS1yZW1vdGUtaXA+IEk8aXAt
YWRkcmVzcz4KClNwZWNpZnkgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIHJlbW90ZSBzZXJ2ZXIg
c2VuZGluZyB0aGUgZW1haWwuCgo9aXRlbSBCPC0tcmVtb3RlLW5hbWU+IEk8aXAtYWRkcmVz
cz4KClNwZWNpZnkgdGhlIGhvc3QgbmFtZSBvZiB0aGUgcmVtb3RlIHNlcnZlciBzZW5kaW5n
IHRoZSBlbWFpbCwgYXMKZGV0ZXJtaW5lZCBieSBhIHJldmVyc2UgRE5TIGxvb2t1cCBvZiBp
dHMgSVAgYWRkcmVzcy4KCj1pdGVtIEI8LS1oZWxvPiBJPGhvc3QtbmFtZT4KClNwZWNpZnkg
dGhlIGhvc3QgbmFtZSBzZW50IGJ5IHRoZSByZW1vdGUgc2VydmVyIGluIHRoZSBTTVRQIEhF
TE8gKG9yCkVITE8pIGNvbW1hbmQuCgo9aXRlbSBCPC0tbG9jYWwtaXA+IEk8aXAtYWRkcmVz
cz4KClNwZWNpZnkgdGhlIElQIGFkZHJlc3Mgb2YgdGhlIHNlcnZlciByZWNlaXZpbmcgdGhl
IGVtYWlsLgoKPWl0ZW0gQjwtLWxvY2FsLW5hbWU+IEk8aG9zdC1uYW1lPgoKU3BlY2lmeSB0
aGUgaG9zdCBuYW1lIG9mIHRoZSBzZXJ2ZXIgcmVjZWl2aW5nIHRoZSBlbWFpbC4KCj1pdGVt
IEI8LS1yY3B0PiBJPGVtYWlsLWFkZHJlc3M+CgpTcGVjaWZ5IHRoZSBlbnZlbG9wZSBhZGRy
ZXNzIG9mIHRoZSByZWNpcGllbnQgb2YgdGhlIGVtYWlsLgoKPWl0ZW0gQjwtLWFkZC1sb2Nh
bC1yZWNlaXZlZD4KCkluZGljYXRlIHRoYXQgc3BhbWl0YXJpdW0gc2hvdWxkIGFkZCBhbiBh
dXRvLWdlbmVyYXRlZCBsb2NhbCBSZWNlaXZlZApsaW5lLgoKPWJhY2sKCj1iYWNrCgoKPWhl
YWQyIFVzZXItZGVmaW5lZCBoZWFkZXIgZmllbGQgbGlzdDoKCklmIHVzaW5nIHRoZSBCPHM+
IG9wdGlvbiwgeW91IG1heSB3YW50IHRvIGFsbG93IGNlcnRhaW4gaGVhZGVyIGZpZWxkcwpv
dGhlciB0aGFuIHRob3NlIHNwZWNpZmllZCBieSBSRkNzLiAgVGhlc2UgbWlnaHQgaW5jbHVk
ZSBmaWVsZHMgc2V0CmJ5IHlvdXIgbWFpbGluZyBsaXN0IG9yIHByb3h5IG9yIG90aGVyIGN1
c3RvbSBhcHBsaWNhdGlvbi4gIFlvdSBtYXkKc3BlY2lmeSBzdWNoIGEgbGlzdCBvZiBmaWVs
ZHMgYnkgYXBwZW5kaW5nIHRoZW0gY29tbWEtZGVsaW1pdGVkIGF0CnRoZSBlbmQgb2YgeW91
ciBjb21tYW5kIGxpbmUuICBGb3IgZXhhbXBsZSwgaWYgeW91IHdhbnRlZCB0aGUgCkk8bGlz
dC1pZD4gYW5kIEk8ZW5jcnlwdGVkPiBmaWVsZHMgcGFzc2VkIHRocm91Z2gsIHlvdSB3b3Vs
ZCBjaGFuZ2UKeW91ciBwcm9jbWFpbCByZWNpcGUgYXMgZm9sbG93czoKCiAgfCBzcGFtaXRh
cml1bSAtcmVhZHh0cCAtcyBsaXN0LWlkLGVuY3J5cHRlZAoKCj1oZWFkMSBSRVFVSVJFUwoK
PW92ZXIgNAoKPWl0ZW0gKgoKUGVybCA1LjYuMQpOZXQ6OkROUzo6UmVzb2x2ZXIKTWFpbDo6
U1BGCk5ldDo6Q0lEUgpEQl9GaWxlClBPU0lYCkdldG9wdDo6TG9uZwoKPWJhY2sKCgo9aGVh
ZDEgREVTQ1JJUFRJT04KClNwYW1pdGFyaXVtIGhlbHBzIHRvIHJlbW92ZSB1bm5lY2Vzc2Fy
eSBub2lzZSBmcm9tIGVtYWlsIGhlYWRlcnMgYW5kCnRvIGhpZ2hsaWdodCBqdXN0IHRoZSBw
b3J0aW9ucyB3aGljaCBjb250cmlidXRlIHBvc2l0aXZlbHkgdG8gc3BhbQpmaWx0ZXJpbmcg
dXNpbmcgc3RhdGlzdGljYWwgbWV0aG9kcy4KClRoZSBvbmx5IG5vbi1zcG9vZmFibGUsIC1m
b3JnYWJsZSwgb3IgLXR3ZWFrYWJsZSBwYXJ0IG9mCmFuIGVtYWlsIGlzIHRoZSByZWNlaXZl
ZCBsaW5lLCBhcyBpdCBpcyBnZW5lcmF0ZWQgYnkgdGhlIHJlY2VpdmluZwptYWlsIHNlcnZl
ciB3aGljaCBvdWdodCB0byBoYXZlIG5vIHJlYXNvbiB0byBtdW5nZSBpdC4gIEV2ZXJ5IG90
aGVyCnBhcnQgb2YgYW4gZW1haWwgY2FuIGJlIGluZmx1ZW5jZWQgZGlyZWN0bHkgYnkgdGhl
IHNlbmRlci4gIFJlY2VpdmVkCmxpbmUgdG9rZW5zLCB3aGVuIHZlcmlmaWVkIGF1dGhlbnRp
YywgYXJlIHRoZXJlZm9yZSBoaWdobHkgaW5kaWNhdGl2ZQpvZiB3aGV0aGVyIG9yIG5vdCBh
IGdpdmVuIG1lc3NhZ2UgaXMgc3BhbS4gIAoKU3BhbWl0YXJpdW0gcmVhZHMgdGhlIHJlY2Vp
dmVkIGhlYWRlcnMsIGRldGVybWluZXMgd2hpY2ggb25lcyBhcmUKYXV0aGVudGljLCBhbmQg
dGhlbiBwcmludHMgdG9rZW5zIGludG8gdGhlIGhlYWRlciB3aGljaCBtYXkgYmUga2V5ZWQK
b24gYnkgc3RhdGlzdGljYWwgZmlsdGVycy4gIFRoaXMgd29ya3MgbXVjaCBsaWtlIGEgYmxh
Y2tsaXN0L3doaXRlbGlzdCwgCmJ1dCB3aGVuIGNvdXBsZWQgd2l0aCBhIHN0YXRpc3RpY2Fs
IGZpbHRlciBzdWNoIGFzIGJvZ29maWx0ZXIsIHRoZXNlIApsaXN0cyBhcmUgYXV0b21hdGlj
YWxseSBnZW5lcmF0ZWQgYW5kIHJlcXVpcmUgbm8gbWFudWFsIG1haW50ZW5hbmNlIApvdGhl
ciB0aGFuIG5vcm1hbCB0cmFpbmluZy4KCk1vcmVvdmVyLCBoZWFkZXJzIHdoaWNoIGRvIG5v
dCBkaXJlY3RseSBpbmZsdWVuY2UgdGhlIGVtYWlsIGluIGFueQpmdW5jdGlvbmFsIHdheSwg
bm9yIGFyZSB2aXNpYmxlIHRvIHRoZSBlbmQtdXNlciBpbiBhIHN0YW5kYXJkCmdyYXBoaWNh
bCBNVUEsIGFyZSBoaWdobHkgbGlrZWx5IHRvIGNvbnRhaW4gaW5mb3JtYXRpb24gd2hpY2gg
CnNwYW1tZXJzIHRoaW5rIHdpbGwgZGV0cmFjdCBmcm9tIG5vcm1hbCBzdGF0aXN0aWNhbCBm
aWx0ZXJpbmcuIEl0CmlzIHRoZXJlZm9yZSBkZXNpcmVhYmxlIHRvIHJlbW92ZSB0aGVzZSBl
bGVtZW50cywgc3BlY2lmaWNhbGx5IApYLWhlYWRlcnMsIHByaW9yIHRvIGZpbHRlcmluZy4g
IFNwYW1pdGFyaXVtIHJlbW92ZXMgYWxsIGludmlzaWJsZSwKbm9uLWZ1bmN0aW9uYWwgaGVh
ZGVyIGxpbmVzLgoKU3BhbWl0YXJpdW0gYWxzbyBsb29rcyB1cCBhbnkgSVAgYWRkcmVzc2Vz
IG9yIHJETlMgYWRkcmVzc2VzCndoaWNoIGFyZSBub3QgcHJvdmlkZWQgaW4gb3JkZXIgdG8g
cHJvdmlkZSB0aGUgbWF4aW11bSB0b2tlbnMgb24Kd2hpY2ggdG8gZmlsdGVyLiAgTW9yZW92
ZXIsIGl0IGxvb2tzIHVwIHRoZSBhdXRvbm9tb3VzIHN5c3RlbSBudW1iZXIKKEFTTikgYXNz
b2NpYXRlZCB3aXRoIGVhY2ggImZyb20iIGFkZHJlc3MgaW4gb3JkZXIgdG8gcHJvdmlkZQph
IHNtYWxsIHNldCBvZiB0b2tlbnMgcmVwcmVzZW50aW5nIHRoZSB2YXJpb3VzIG1ham9yIHN1
Ym5ldHMgb2YgdGhlCmludGVybmV0LiAgQW5kIGl0IGNoZWNrcyB0aGUgU2VuZGVyIFBvbGlj
eSBGcmFtZXdvcmsgKFNQRikgcmVjb3JkcyBvZgp0aGUgc2VuZGVyIHRvIGVuc3VyZSB0aGF0
IHRoZSBnaXZlbiBNWCBoYXMgcGVybWlzc2lvbiB0byBzZW5kIG9uCnRoZWlyIGJlaGFsZi4K
CkZpbmFsbHksIFNwYW1pdGFyaXVtIGFzc2Vzc2VzIHRoZSBoZWFkZXJzIGZvciBtaXNzaW5n
IHJlcXVpcmVkCmhlYWRlciBsaW5lcywgaW5zZXJ0aW5nIGtleWFibGUgdG9rZW5zIG9yIHN1
cHBseWluZyB0aGUgbWlzc2luZwppbmZvcm1hdGlvbi4gIEFuZCBpdCBjb21wYXJlcyB0aGUg
ZGF0ZSBmaWVsZHMgdG8gZGV0ZXJtaW5lIGlmIHRoZQplbWFpbCBoYXMgYmVlbiBwcmUtIG9y
IHBvc3QtZGF0ZWQgYnkgYSBsYXJnZSBtYXJnaW4gaW4gb3JkZXIgdG8KaW5mbHVlbmNlIHdo
ZXJlIGl0IGFwcGVhcnMgaW4geW91ciBtYWlsIGNsaWVudCBhbmQgaW5zZXJ0cyBhbgp4LWhl
YWRlciB3aXRoIGtleWFibGUgcmFuZ2UgdG9rZW5zIHRvIGNvbXBlbnNhdGUgZm9yIHRoaXMu
CgpUb2dldGhlciwgYWxsIG9mIHRoZXNlIHRlY2huaXF1ZXMgaGVscCB0byByZW1vdmUgdGhl
IG5vaXNlIHdoaWNoCmFjY29tcGFuaWVzLCBlaXRoZXIgaW5jaWRlbnRhbGx5IG9yIG1hbGlj
aW91c2x5LCBtb3N0IGVtYWlsIG1lc3NhZ2VzLgpUaGlzIHJlc3VsdHMgaW4gYSBjbGVhbmVy
IGhlYWRlciBjb25zaXN0aW5nIG9mIG1vcmUgZWFzaWx5IHNjb3JlZAp0b2tlbnMuICBUaGlz
IHBlcm1pdHMgYmV0dGVyIGFjY3VyYWN5IHdpdGggc3RhdGlzdGljYWwgZmlsdGVycyBhcwp3
ZWxsIGFzIHF1aWNrZXIgcHJvY2Vzc2luZyBhbmQgYSBzbWFsbGVyIHRva2VuIGRhdGFiYXNl
LgoKCj1oZWFkMSBGQVEKCj1oZWFkMiBBc2sgYSBxdWVzdGlvbgoKWWUgbWF5IHJlY2VpdmUg
YW4gYW5zd2VyIGhlcmUgaWYgaXQgaXMgYXNrZWQgZnJlcXVlbnRseQoKCj1oZWFkMSBCVUdT
Cgo9b3ZlciA0Cgo9aXRlbSAqCgp0aW1lZ20oJHNlYywkbWluLCRob3VyLCRkYXksJG1vbiwk
eWVhcikgYWJvcnRzIGlmIFBlcmwncyB0aW1lX3QgaXMgMzIgCmJpdHMgbGFyZ2UgYW5kIHRo
ZSB5ZWFyIGlzIHRvbyBoaWdoICg+MjAzOCkuCgo9YmFjawoKPWhlYWQxIFRPRE8KCj1vdmVy
IDQKCj1pdGVtICoKClN1Z2dlc3Rpb25zIHdlbGNvbWUuCgo9YmFjawoKPWhlYWQxIFNFRSBB
TFNPCgo9b3ZlciA0Cgo9aXRlbSAqCgpMPHByb2NtYWlsPgoKPWl0ZW0gKgoKTDxib2dvZmls
dGVyPgoKPWJhY2sKCgo9aGVhZDEgQVVUSE9SCgpUb20gQW5kZXJzb24gPG5lbytzcGFtaXRh
cml1bUBvcmRlcmFtaWRjaGFvcy5jb20+Cgo9Y3V0CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyBVc2VyIFZhcmlh
YmxlcyAgIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIwoKIyBwbGVhc2UgZWRpdCBhY2NvcmRpbmcgdG8geW91ciBz
ZXR1cAoKIyBkZWZhdWx0IHBhdGgKb3VyICRwYXRoID0gIi9iaW46L3Vzci9iaW46L3Vzci9s
b2NhbC9iaW4iOwoKIyBkZWZhdWx0IHNoZWxsCm91ciAkc2hlbGwgPSAiL2Jpbi9zaCI7Cgoj
IHNlY29uZHMgYmVmb3JlIHdlIGJhaWwgd2FpdGluZyBvbiBpbnB1dApvdXIgJHRpbWVvdXQg
PSAzOwoKIyBzZXJ2ZXIgdG8gdXNlIGZvciBBU04gbG9va3VwcwpvdXIgJGFzbl9zZXJ2ZXIg
PSAiYXNuLnJvdXRldmlld3Mub3JnIjsKCiMgV2hpdGVsaXN0IGFueSBJUCBhZGRyZXNzZXMg
b3IgcmFuZ2VzIGZyb20gU1BGIGxvb2t1cHMKb3VyIEB3aGl0ZWxpc3QgPSAoIjEyNy4wLjAu
MSIsIjE5Mi4xNjguMC4xLTE5Mi4xNjguMC4yNTUiKTsKCiMgSWYgeW91IHdhbnQgdG8gd2hp
dGVsaXN0IGFueSBhZGRyZXNzZXMgd2hpY2ggaGF2ZSBhdXRoZW50aWNhdGVkCiMgdmlhIHBv
cHJlbGF5ZCAoaS5lLiByZW1vdGUgd29ya3N0YXRpb25zIG9mIHVzZXJzIG9uIHlvdXIgc2Vy
dmVyKQojIHNldCAkZGJmaWxlIHRvIHlvdXIgcG9waXAuZGIgbG9jYXRpb24sIGVsc2Ugc2V0
IGl0IHRvIHVuZGVmCiNvdXIgJGRiZmlsZSA9ICIvZXRjL21haWwvcG9waXAuZGIiOwpvdXIg
JGRiZmlsZSA9IHVuZGVmOwoKIyBkaXN0YW5jZSBpbiBzZWNvbmRzIGZyb20gcmlnaHQgbm93
IHRvIGNvbnNpZGVyIGEgcmVhc29uYWJsZSAobm9uLXNwYW0pIHJhbmdlIHRvIGRhdGUgYW4g
ZW1haWwKb3VyICRkYXRlX2xpbWl0ID0gNjAqNjAqMjQqMjsgICMgMiBkYXlzCgojIEVNQUlM
IEhFQURFUiBGSUVMRFMKIwojIFNlZSBSRkMgMjA3NiAvICJDb21tb24gSW50ZXJuZXQgTWVz
c2FnZSBIZWFkZXIgRmllbGRzIiBmb3IgYSBzeW5vcHNpcyBvZiBjb21tb24gbWFpbCBoZWFk
ZXJzCgoJIyBTUEVDSUZJRUQgRklFTERTIC0tIGFsbCBvZiB0aGUgZmllbGRzIHNwZWNpZmll
ZCBpbiBSRkMgODIyLzI4MjIsIGNhc2UtaW5zZW5zaXRpdmUsIGluIHRoZSBzdWdnZXN0ZWQg
b3JkZXIKCW91ciAkc3BlY19maWVsZHMgPSAicmV0dXJuLXBhdGgscmVjZWl2ZWQscmVzZW50
LWRhdGUscmVzZW50LWZyb20scmVzZW50LXNlbmRlcixyZXNlbnQtcmVwbHktdG8sIi4KCSAJ
CSAgICJyZXNlbnQtdG8scmVzZW50LWNjLHJlc2VudC1iY2MscmVzZW50LW1lc3NhZ2UtaWQs
ZGF0ZSxmcm9tLHNlbmRlcixyZXBseS10bywiLgoJCQkgICAidG8sY2MsYmNjLG1lc3NhZ2Ut
aWQsaW4tcmVwbHktdG8scmVmZXJlbmNlcyxzdWJqZWN0LGNvbW1lbnRzLGtleXdvcmRzLGVu
Y3J5cHRlZCI7CgoJIyBNSU1FIGhlYWRlciBmaWVsZHMgKFJGQyAxMDQ5LzEzNDEvMTUyMS8y
MTgzKQoJJHNwZWNfZmllbGRzIC49ICIsbWltZS12ZXJzaW9uLGNvbnRlbnQtdHlwZSxjb250
ZW50LXRyYW5zZmVyLWVuY29kaW5nLGNvbnRlbnQtaWQsY29udGVudC1kZXNjcmlwdGlvbixj
b250ZW50LWRpc3Bvc2l0aW9uIjsKCgkjIHNlY3VyaXR5L2NoZWNrc3VtIChSRkMgMTg2NCkK
CSRzcGVjX2ZpZWxkcyAuPSAiLGNvbnRlbnQtbWQ1IjsKCgkjIG1haWxpbmcgbGlzdCBoZWFk
ZXJzIChSRkMgMjM2OS8yOTE5KSBtYXkgYmUgYWRkZWQgaWYgeW91IGxpa2UsIGJ1dCBmb3Ig
bm93IEknbSBjaG9vc2luZyB0byBsZWF2ZSB0aGVtIG91dAoJIyRzcGVjX2ZpZWxkcyAuPSAi
LGxpc3QtaWQsbGlzdC1oZWxwLGxpc3QtdW5zdWJzY3JpYmUsbGlzdC1zdWJzY3JpYmUsbGlz
dC1wb3N0LGxpc3Qtb3duZXIsbGlzdC1hcmNoaXZlIjsKCgkjIE1BU0tFRCBGSUVMRFMgLS0g
dW5uZWNlc3NhcnkgZmllbGRzIG9mdGVuIHVzZWQgZm9yIHNwYW0gd2lsbCBiZSBleHB1bmdl
ZCBmcm9tIHRoZSBzcGVjIGZpZWxkcyBsaXN0CgkjIChpZiB5b3Uga25vdyBvZiBhIHZhbGlk
LCBuZWNlc3NhcnkgdXNlIGZvciB0aGVzZSwgbGV0IG1lIGtub3cpCglvdXIgJG1hc2tlZF9m
aWVsZHMgPSAia2V5d29yZHMsY29tbWVudHMsZW5jcnlwdGVkLGNvbnRlbnQtaWQsY29udGVu
dC1kZXNjcmlwdGlvbiI7CgoJIyBjb250cm92ZXJzaWFsIGFuZCBub3Qgc3RyaWN0bHkgbmVj
ZXNzYXJ5OgoJIyRtYXNrZWRfZmllbGRzIC49ICAiLHJlcGx5LXRvIjsKCgkjIG1lc3NhZ2Ut
aWQgZmllbGRzIGFyZSBvbmx5IG1hY2hpbmUtcmVhZGFibGUgYW5kIG5vdCB2aXNpYmxlIHRv
IG5vciByZWFkYWJsZSBieSB0aGUgcmVjaXBpZW50CgkjIGhvd2V2ZXIsIHRoZXkgY2FuIGJl
IHVzZWZ1bCBpZiB5b3VyIGNsaWVudCBwcm9kdWNlcyBkaXNjdXNzaW9uIHRocmVhZGluZwoJ
IyB1bmNvbW1lbnQgdGhpcyBsaW5lIGlmIHlvdSBkb24ndCBjYXJlIGFib3V0IHRocmVhZGlu
ZzoKCSMkbWFza2VkX2ZpZWxkcyAuPSAgIixtZXNzYWdlLWlkLHJlc2VudC1tZXNzYWdlLWlk
LGluLXJlcGx5LXRvLHJlZmVyZW5jZXMiOwoJCgkjIHJlc2VudCBmaWVsZHMgYXJlIHN0cmlj
dGx5IGluZm9ybWF0aW9uYWwgKGFuZCBub3QgZ2VuZXJhbGx5IHVzZXItdmlzaWJsZSksIHRo
ZXJlZm9yZSBhbGxvd2luZyB0aGVtIHRocm91Z2ggaXMgb3B0aW9uYWw6CgkjIE1JTUUgc3Bl
Y2lmaWVzIGEgZGlmZmVyZW50IHdheSBvZiByZXNlbmRpbmcgbWVzc2FnZXMgd2l0aCB0aGUg
Ik1lc3NhZ2UiIGNvbnRlbnQtdHlwZSwgc28gdGhlc2UgbWF5IGJlIGNvbnNpZGVyZWQgZGVw
cmVjYXRlZDoKCSRtYXNrZWRfZmllbGRzIC49ICIscmVzZW50LWRhdGUscmVzZW50LWZyb20s
cmVzZW50LXNlbmRlcixyZXNlbnQtcmVwbHktdG8scmVzZW50LXRvLHJlc2VudC1jYyxyZXNl
bnQtYmNjLHJlc2VudC1tZXNzYWdlLWlkIjsKCgkjIFVTRVIgRklFTERTIC0tIFVzZXIgZmll
bGRzIGFyZSB0aG9zZSB0aGF0IGFyZSBuZWl0aGVyIHNwZWNpZmllZCBub3IgbWFza2VkIHRo
YXQgeW91IHdhbnQgcGVybWl0dGVkLiAKCSMgVGhlc2UgbWF5IGluY2x1ZGUgc3BlY2lhbCBm
aWVsZHMgZm9yIHlvdXIgcGFydGljdWxhciBtYWlsIHNlcnZlciwgZmlsdGVyLCBvciBtYWls
IHVzZXIgYWdlbnQuCglvdXIgJHVzZXJfZmllbGRzID0gIiI7CgoJIyBORVcgRklFTERTIC0t
IE5ldyBjdXN0b20geC1oZWFkZXJzIGFkZGVkIGJ5IFNwYW1pdGFyaXVtIChpdCBpcyByZWNv
bW1lbmQgdGhhdCB5b3UgZG9uJ3QgY2hhbmdlIHRoZXNlKS4gIAoJIyBUaGVzZSBhcmUgZGlz
YWJsZWQgdW5sZXNzIHlvdSBwYXNzIHRoZSAneCcgb3B0aW9uLgoJb3VyICRuZXdfZmllbGRz
ID0gIngtZGF0ZS1jaGVjayx4LXNwZiI7CgoJIyBSRVFVSVJFRCBGSUVMRFMgLS0gQW55IGZp
ZWxkcyB0aGF0IHNob3VsZCBzaG93IHVwIGluIGFuIGVtYWlsIGV2ZW4gaWYgdGhleSBhcmUg
bm90IHNlbnQgLS0gaS5lLiBpZiB0aGUgbGFjayBvZgoJIyB0aGVzZSBmaWVsZHMgbWF5IGJl
IHVzZWZ1bCBmb3IgdGhlIGZpbHRlciwgYSBuby1yZXEtZmllbGQgdGFnIHdpbGwgYmUgYWRk
ZWQuICBUaGUgb25seSAqcmVxdWlyZWQqIGZpZWxkcyBhY2NvcmRpbmcgdG8gCgkjIFJGQyAy
ODIyIGFyZSAiZnJvbSIsICJzZW5kZXIiLCAicmVwbHktdG8iLCBhbmQgImRhdGUiLCBvdGhl
cnMgYXJlIGp1c3Qgc3VnZ2VzdGVkLiAgSG93ZXZlciwgInNlbmRlciIgYW5kICJyZXBseS10
byIgYXJlIAoJIyBjb21tb25seSBub3Qgc3VwcGxpZWQsIGFuZCBzbyBzaG91bGQgcHJvYmFi
bHkgbm90IGJlIGluIHRoaXMgbGlzdC4gIE9uIHRoZSBvdGhlciBoYW5kLCAic3ViamVjdCIg
YW5kIGEgZmV3IG90aGVycyBtYXkgCgkjIGJlIGRlc2lyZWQgaW4gdGhpcyBsaXN0LgoJb3Vy
ICRyZXFfZmllbGRzID0gInJlY2VpdmVkLGZyb20sdG8sZGF0ZSxzdWJqZWN0IjsKCiMgb2Yg
Y291cnNlLCBtb2RpZnkgdGhlIGZpcnN0IGxpbmUgb2YgdGhpcyBmaWxlLAojIHRoZSBzaGVi
YW5nLCB0byBwb2ludCB0byB5b3VyIHBlcmwgaW50ZXJwcmV0ZXIKCiMgZG8gbm90IGVkaXQg
YmVsb3cgdGhpcyBsaW5lIHVubGVzcyB5b3UgcmVhbGx5CiMga25vdyB3aGF0IHlvdSdyZSBk
b2luZwoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IwojIyMjIyMjIyMjIyMjIyBJbmNsdWRlIExpYnJhcmllcyAjIyMjIyMjIyMjIyMjIyMjCiMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnVzZSBC
ZW5jaG1hcms7CnVzZSBGaWxlOjpCYXNlbmFtZTsKdXNlIFRpbWU6OkxvY2FsOwp1c2UgTmV0
OjpETlM6OlJlc29sdmVyOwp1c2UgTWFpbDo6U1BGOwp1c2UgTmV0OjpDSURSOwp1c2UgREJf
RmlsZTsKdXNlIFBPU0lYOwp1c2UgR2V0b3B0OjpMb25nOwp1c2UgU3lzOjpTeXNsb2c7Cgoj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMj
IyMjIyMjIyMjIERlZmF1bHQgR2xvYmFscyAjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKJD4gPSAkPDsgIyBz
ZXQgZWZmZWN0aXZlIHVzZXIgSUQgdG8gcmVhbCBVSUQKJCkgPSAkKDsgIyBzZXQgZWZmZWN0
aXZlIGdyb3VwIElEIHRvIHJlYWwgR0lECgojIE1ha2UgJUVOViBzYWZlcgpkZWxldGUgQEVO
VntxdyhJRlMgQ0RQQVRIIEVOViBCQVNIX0VOViBQQVRIIFNIRUxMKX07CgojIFNldCB0aGUg
ZW52aXJvbm1lbnQgZXhwbGljaXRseQokRU5We1BBVEh9ID0gJHBhdGg7CiRFTlZ7U0hFTEx9
ID0gJHNoZWxsOwoKIyBvcHRpb25zIGZsYWdzCm91ciAkb3B0aW9ucyA9ICIiOwpvdXIgJHJl
dHVybl9wYXRoID0gIiI7Cm91ciAkb3B0X3JlbW90ZV9pcCA9ICIiOwpvdXIgJG9wdF9yZW1v
dGVfbmFtZSA9ICIiOwpvdXIgJG9wdF9sb2NhbF9pcCA9ICIiOwpvdXIgJG9wdF9sb2NhbF9u
YW1lID0gIiI7Cm91ciAkb3B0X2hlbG8gPSAiIjsKb3VyICRvcHRfcmNwdCA9ICIiOwpvdXIg
JG5vX2xvY2FsX3JlY2VpdmVkID0gdW5kZWY7Cm91ciAkYWRkX2xvY2FsX3JlY2VpdmVkID0g
dW5kZWY7CgojIGRlZmluZSB0aGUgY29udHJvbC1saW5lZmVlZCBzeW50YXggZm9yIHRoaXMg
c3lzdGVtCm91ciAkQ1JMRiA9IAoiXG4iOwojKCReTz1+L1ZNUy9pKT8gCSJcbiI6IAkJIyBW
TVMKIygiXHQiIG5lICJcMDExIik/IAkiXHJcbiI6IAkjIEVCQ0RJQwojCQkJIlwwMTVcMDEy
IjsgCSMgb3RoZXJzIAoKIyBETlMgcXVlcnkgb3B0aW9ucwpvdXIgJHJlcyA9IE5ldDo6RE5T
OjpSZXNvbHZlci0+bmV3KAoJbmFtZXNlcnZlcnMgICAgID0+IFtxdygxMjcuMC4wLjEpXSwK
CXVkcF90aW1lb3V0ICAgICA9PiAyLAoJcmV0cnkgICAgICAgICAgID0+IDEsCgkjZGVidWcg
ICAgICAgICAgPT4gMQopOwoKIyBjb252ZXJ0IHdoaXRlbGlzdCBpbnRvIENJRFIgbm90YXRp
b24Kb3VyIEBjaWRyX2xpc3QgPSAoKTsKZm9yZWFjaCBteSAkSVAgKEB3aGl0ZWxpc3QpIHsK
ICBpZiAobm90IGV2YWwge0BjaWRyX2xpc3QgPSBOZXQ6OkNJRFI6OmNpZHJhZGQgKCRJUCwg
QGNpZHJfbGlzdCl9KSB7CiAgICBlcnJvcigid2FybiIsIkVycm9yIHByb2Nlc3Npbmcgd2hp
dGVsaXN0OiBcIiRJUFwiIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3Mgb3IgcmFuZ2UuIik7
CiAgfQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIE1haW4gIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKb3Blbmxv
ZyhiYXNlbmFtZSAkMCwgJ21haWwnKTsKCiMgcHJvY2VzcyBvcHRpb25zCnN1YiB1c2FnZSB7
CiAgICBteSAkc3BhbWl0YXJpdW0gPSAkMSBpZiAkMCA9fiAvXihbXHdcLy5cLX5dKikkLzsK
ICAgIHN5c3RlbSgicGVybGRvYyAkc3BhbWl0YXJpdW0iKTsKfQoKIyBBbGxvdyBidW5kbGlu
ZyBvZiBmaXJzdCBzZXQgb2Ygb3B0aW9ucywgYXMgd2VsbCBhcyBvcHRpb25hbCBoeXBoZW4u
CmlmIChAQVJHViBhbmQgJEFSR1ZbMF0gPX4gL14tP1tocmRmYXNlYnd4dHBdKyQvKSB7CiAg
ICBpZiAoJEFSR1ZbMF0gPX4gcy9zLy8pIHsKCXNwbGljZShAQVJHViwgMSwgMCwgIi1zIik7
CiAgICB9CiAgICAkQVJHVlswXSA9fiBzL14oW14tXSkvLSQxLzsKICAgIEdldG9wdDo6TG9u
Zzo6Q29uZmlndXJlKCJidW5kbGluZyIpOwp9CgppZiAoISBHZXRPcHRpb25zKCJoZWxwfGgi
ID0+IHN1YiB7ICZ1c2FnZTsgZXhpdCgwKTsgfSwKCQkgInIiID0+IHN1YiB7ICRvcHRpb25z
IC49ICJyIjsgfSwgIyBwcm9jZXNzIHJlY2VpdmVkIGhlYWRlcnMKCQkgImQiID0+IHN1YiB7
ICRvcHRpb25zIC49ICJkIjsgfSwgIyBwZXJmb3JtIGRvbWFpbiBsb29rdXBzIHdoZXJlIG5l
ZWRlZAoJCSAiZiIgPT4gc3ViIHsgJG9wdGlvbnMgLj0gImYiOyB9LCAjIGZvcmNlIFJETlMg
bG9va3VwcyBldmVuIHdoZXJlIE1UQSBwcm92aWRlZAoJCSAiYSIgPT4gc3ViIHsgJG9wdGlv
bnMgLj0gImEiOyB9LCAjIHBlcmZvcm0gQVNOIGxvb2t1cHMKCQkgInM6cyIgPT4gc3ViIHsg
JG9wdGlvbnMgLj0gInMiOyAgIyBzdGFuZGFyZCBmaWVsZHMgb25seSAoc3RyaXAgb3RoZXJz
KQoJCQkgJHVzZXJfZmllbGRzID0gJF9bMV07IH0sCgkJICJlIiA9PiBzdWIgeyAkb3B0aW9u
cyAuPSAiZSI7IH0sICMgaW5jbHVkZSB0aGUgaGVsbyByZWNlaXZlZCBmaWVsZCBpbiBvdXRw
dXQKCQkgImIiID0+IHN1YiB7ICRvcHRpb25zIC49ICJiIjsgfSwgIyBvdXRwdXQgYmVuY2ht
YXJraW5nIGluZm8KCQkgInciID0+IHN1YiB7ICRvcHRpb25zIC49ICJ3IjsgfSwgIyBwcm9j
ZXNzIHdob2xlIGVtYWlsIChpbmNsdWRpbmcgYm9keSkKCQkgIngiID0+IHN1YiB7ICRvcHRp
b25zIC49ICJ4IjsgfSwgIyBpbnNlcnQgY3VzdG9tIHgtaGVhZGVyIGZpZWxkcwoJCSAidCIg
PT4gc3ViIHsgJG9wdGlvbnMgLj0gInQiOyB9LCAjIHBlcmZvcm0gZGF0ZSByYW5nZSBjaGVj
a3MKCQkgInAiID0+IHN1YiB7ICRvcHRpb25zIC49ICJwIjsgfSwgIyBwZXJmb3JtIFNQRiBs
b29rdXBzCgkJICJyZXR1cm4tcGF0aHxyZXR1cm5wYXRoPXMiID0+IFwkcmV0dXJuX3BhdGgs
CgkJICJyZW1vdGUtaXB8cmVtb3RlaXA9cyIgPT4gXCRvcHRfcmVtb3RlX2lwLAoJCSAicmVt
b3RlLW5hbWV8cmVtb3RlbmFtZT1zIiA9PiBcJG9wdF9yZW1vdGVfbmFtZSwKCQkgImxvY2Fs
LWlwfGxvY2FsaXA9cyIgPT4gXCRvcHRfbG9jYWxfaXAsCgkJICJsb2NhbC1uYW1lfGxvY2Fs
bmFtZT1zIiA9PiBcJG9wdF9sb2NhbF9uYW1lLAoJCSAiaGVsbz1zIiA9PiBcJG9wdF9oZWxv
LAoJCSAicmNwdD1zIiA9PiBcJG9wdF9yY3B0LAoJCSAibm8tbG9jYWwtcmVjZWl2ZWR8bm9s
b2NhbHJlY2VpdmVkIiA9PiBcJG5vX2xvY2FsX3JlY2VpdmVkLAoJCSAiYWRkLWxvY2FsLXJl
Y2VpdmVkfGFkZGxvY2FscmVjZWl2ZWQiID0+IFwkYWRkX2xvY2FsX3JlY2VpdmVkLAoJCSAp
KSB7CiAgICAmdXNhZ2U7CiAgICBleGl0KDEpOwp9CgojIG9wZW4gcG9waXAgZGF0YWJhc2Ug
Zm9yIHJlYWRpbmcKb3VyICVkYjsKJm9wZW5kYl9yZWFkIGlmICRkYmZpbGU7CgojIHN0YXJ0
IHRpbWluZyB0aGUgcHJvY2VzcwpteSAkc3RhcnRfdGltZSA9IG5ldyBCZW5jaG1hcmsgaWYg
JG9wdGlvbnMgPX4gL2IvOwpteSAoJHN0YXJ0X3BhcnNlLCAkZW5kX3BhcnNlLCAkc3RhcnRf
cmN2ZCwgJGVuZF9yY3ZkLCAkc3RhcnRfc2V0LCAkZW5kX3NldCk7CgojIGdldCBTVERJTiBh
bmQgcHJvY2VzcyB0aGUgZW1haWwKZXZhbCAKewoJIyBzZXQgYW4gYWxhcm0gc28gdGhhdCB3
ZSBkb24ndCBoYW5nIG9uIGFuIGVtcHR5IFNURElOCglsb2NhbCAkU0lHe0FMUk19ID0gc3Vi
IHsgZGllICJ0aW1lb3V0IiB9OwoJYWxhcm0gJHRpbWVvdXQ7CgoJIyBwYXJzZSB0aGUgaGVh
ZGVyCgkkc3RhcnRfcGFyc2UgPSBuZXcgQmVuY2htYXJrIGlmICRvcHRpb25zID1+IC9iLzsK
CW15ICgkaGVhZGVyLCRwYXJzZV9iZW5jaG1hcmspID0gcGFyc2VfaGVhZGVyKCk7CgkkZW5k
X3BhcnNlID0gbmV3IEJlbmNobWFyayBpZiAkb3B0aW9ucyA9fiAvYi87CgoJIyBjYW5jZWwg
dGltZW91dCBpZiB3ZSBnb3QgdGhpcyBmYXIKCWFsYXJtIDA7CgoJIyBkZWZhdWx0IGRhdGUg
aWYgbm9uZSBwcm92aWRlZAoJdW5sZXNzIChkZWZpbmVkICRoZWFkZXItPnsnZGF0ZSd9KQoJ
ewoJCSRoZWFkZXItPnsnZGF0ZSd9LT5bMF0tPnsnbmFtZSd9ID0gIkRhdGUiOwoJCSRoZWFk
ZXItPnsnZGF0ZSd9LT5bMF0tPnsndmFsdWUnfSA9IGdtdGltZSB0aW1lOwoJfQoJCgkjIHBy
b2Nlc3MgdGhlIHJlY2VpdmVkIGxpbmVzCglpZiAoJG9wdGlvbnMgPX4gL3IvKQoJewoJCSRz
dGFydF9yY3ZkID0gbmV3IEJlbmNobWFyayBpZiAkb3B0aW9ucyA9fiAvYi87CgkJJGhlYWRl
ci0+eydyZWNlaXZlZCd9ID0gcHJvY2Vzc19yY3ZkKCRoZWFkZXItPnsncmVjZWl2ZWQnfSwk
cmV0dXJuX3BhdGggfHwgJGhlYWRlci0+eydyZXR1cm4tcGF0aCd9LT5bMF0tPnsndmFsdWUn
fSk7CgkJJGVuZF9yY3ZkID0gbmV3IEJlbmNobWFyayBpZiAkb3B0aW9ucyA9fiAvYi87Cgl9
CgoJIyBhZGQgbmV3IGN1c3RvbSBoZWFkZXIgZmllbGRzCglpZiAoJG9wdGlvbnMgPX4gL3gv
KSAKCXsKCQlpZiAoJG9wdGlvbnMgPX4gL3QvKQoJCXsKCQkJJGhlYWRlci0+eyd4LWRhdGUt
Y2hlY2snfS0+WzBdLT57J25hbWUnfSA9ICJYLURhdGUtQ2hlY2siOyAKCQkJJGhlYWRlci0+
eyd4LWRhdGUtY2hlY2snfS0+WzBdLT57J3ZhbHVlJ30gPSBkYXRlX2NoZWNrKCRoZWFkZXIt
PnsnZGF0ZSd9LT5bMF0tPnsndmFsdWUnfSwkaGVhZGVyLT57J3JlY2VpdmVkJ30tPlswXS0+
eydkYXRlJ30pOwoJCX0KCgkJaWYgKCRvcHRpb25zID1+IC9wLykKCQl7CgkgICAgICAgICAg
ICAgICAgZm9yIChteSAkeCA9IDA7ICR4IDwgc2NhbGFyIEB7JGhlYWRlci0+eydyZWNlaXZl
ZCd9fTsgJHgrKykKCSAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAg
CSAgICAgICAgaWYgKGRlZmluZWQgJGhlYWRlci0+eydyZWNlaXZlZCd9LT5bJHhdLT57J3Nw
Zid9ICYmICRoZWFkZXItPnsncmVjZWl2ZWQnfS0+WyR4XS0+eydzcGYnfSA9fiAvXHcvKQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCXsKCQkJICAgICAgICAgICAgICAgICRo
ZWFkZXItPnsneC1zcGYnfS0+WyR4XS0+eyduYW1lJ30gPSAiWC1TUEYiOwoJCQkgICAgICAg
ICAgICAgICAgJGhlYWRlci0+eyd4LXNwZid9LT5bJHhdLT57J3ZhbHVlJ30gPSAkaGVhZGVy
LT57J3JlY2VpdmVkJ30tPlskeF0tPnsnc3BmJ307CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQoJICAgICAgICAgICAgICAgIH0JCQkKCQl9Cgl9CgoJIyBUaGlzIG5lZWRz
IHRvIGJlIGRvbmUgYWZ0ZXIgdGhlIHgtc3BmIGhlYWRlcnMgYXJlIGdlbmVyYXRlZAoJIyBh
Ym92ZSwgc28gdGhhdCBhbiB4LXNwZiBoZWFkZXIgaXMgZ2VuZXJhdGVkIGZvciB0aGUKCSMg
YXV0by1nZW5lcmF0ZWQgbG9jYWwgUmVjZWl2ZWQgbGluZS4KCWlmICgkbm9fbG9jYWxfcmVj
ZWl2ZWQgYW5kIG5vdCAkYWRkX2xvY2FsX3JlY2VpdmVkKSB7CgkgICAgc3BsaWNlKEB7JGhl
YWRlci0+eydyZWNlaXZlZCd9fSwgMCwgMSk7Cgl9CgoJIyBvdXRwdXQgdGhlIG5ldyBoZWFk
ZXIgY29udGFpbmluZyB0aGUgY2hhbmdlcwoJJHN0YXJ0X3NldCA9IG5ldyBCZW5jaG1hcmsg
aWYgJG9wdGlvbnMgPX4gL2IvOwoJcHJpbnQgc2V0X2hlYWRlcigkaGVhZGVyKTsKCSRlbmRf
c2V0ID0gbmV3IEJlbmNobWFyayBpZiAkb3B0aW9ucyA9fiAvYi87CgoJIyBhZGQgdGhlIGJv
ZHkgaWYgZGVzaXJlZAoJcHJpbnQgcGFyc2VfYm9keSgpIGlmICRvcHRpb25zID1+IC93LzsK
fTsKCiMgcHJvcGFnYXRlIGVycm9ycwpkaWUgaWYgJEAgJiYgJEAgIX4gL3RpbWVvdXQvaTsK
CiMgcHJpbnQgdGltZW91dCBtZXNzYWdlCmlmICgkQCA9fiAvdGltZW91dC9pKSB7IGVycm9y
KCJkaWUiLCJUaW1lZCBvdXQuLi4gbWFrZSBzdXJlIHRvIHN1cHBseSBhbiBlbWFpbCBmb3Ig
cHJvY2Vzc2luZy4gIFRyeSAnc3BhbWl0YXJpdW0gLWgnIGZvciBkZXRhaWxzLlxuIik7IH0K
CiMgY2FsY3VsYXRlIHRvdGFsIHJ1bm5pbmcgdGltZQppZiAoJG9wdGlvbnMgPX4gL2IvKQp7
CglteSAkZW5kX3RpbWUgPSBuZXcgQmVuY2htYXJrOyAgCglteSAkdGQgPSB0aW1lZGlmZigk
ZW5kX3RpbWUsICRzdGFydF90aW1lKTsKCW15ICR1c3IgPSAkdGQtPlsxXSskdGQtPlszXTsg
bXkgJHN5cyA9ICR0ZC0+WzJdKyR0ZC0+WzRdOwoJbXkgJGNwdSA9ICR1c3IrJHN5czsgbXkg
JHdhbGwgPSAkdGQtPlswXTsKCXByaW50ICJUb3RhbCBydW5uaW5nIHRpbWUgd2FzICR3YWxs
IHdhbGxjbG9jayBzZWNzOyAkdXNyIHVzciArICRzeXMgc3lzID0gJGNwdSBDUFUgc2Vjcy4k
Q1JMRiI7CgoJJHRkID0gdGltZWRpZmYoJGVuZF9wYXJzZSwgJHN0YXJ0X3BhcnNlKTsKCSR1
c3IgPSAkdGQtPlsxXSskdGQtPlszXTsgJHN5cyA9ICR0ZC0+WzJdKyR0ZC0+WzRdOwoJJGNw
dSA9ICR1c3IrJHN5czsgJHdhbGwgPSAkdGQtPlswXTsKCXByaW50ICJJbnB1dCBwYXJzaW5n
IHRpbWUgd2FzICR3YWxsIHdhbGxjbG9jayBzZWNzOyAkdXNyIHVzciArICRzeXMgc3lzID0g
JGNwdSBDUFUgc2Vjcy4kQ1JMRiI7CgoJaWYgKCRvcHRpb25zID1+IC9yLykKCXsKCQkkdGQg
PSB0aW1lZGlmZigkZW5kX3JjdmQsICRzdGFydF9yY3ZkKTsKCQkkdXNyID0gJHRkLT5bMV0r
JHRkLT5bM107ICRzeXMgPSAkdGQtPlsyXSskdGQtPls0XTsKCQkkY3B1ID0gJHVzciskc3lz
OyAkd2FsbCA9ICR0ZC0+WzBdOwoJCXByaW50ICJSZWNlaXZlZCBsaW5lIHByb2Nlc3Npbmcg
dGltZSB3YXMgJHdhbGwgd2FsbGNsb2NrIHNlY3M7ICR1c3IgdXNyICsgJHN5cyBzeXMgPSAk
Y3B1IENQVSBzZWNzLiRDUkxGIjsKCX0KCgkkdGQgPSB0aW1lZGlmZigkZW5kX3NldCwgJHN0
YXJ0X3NldCk7CgkkdXNyID0gJHRkLT5bMV0rJHRkLT5bM107ICRzeXMgPSAkdGQtPlsyXSsk
dGQtPls0XTsKCSRjcHUgPSAkdXNyKyRzeXM7ICR3YWxsID0gJHRkLT5bMF07CglwcmludCAi
UmVidWlsZGluZyBlbWFpbCB0aW1lIHdhcyAkd2FsbCB3YWxsY2xvY2sgc2VjczsgJHVzciB1
c3IgKyAkc3lzIHN5cyA9ICRjcHUgQ1BVIHNlY3MuJENSTEYiOwp9CgojIGNsb3NlIHBvcGlw
IGRhdGFiYXNlCiZjbG9zZWRiIGlmICRkYmZpbGU7CgpleGl0KDApOwoKIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMg
UGFyc2UgSGVhZGVyICAjIyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBwYXJzZV9oZWFkZXIKewoJbXkgJGhl
YWRlciA9IHt9OwoJbXkgJG5hbWUgPSAiIjsKCiAgICAgIGxpbmVpbjoKICAgICAgICB3aGls
ZSAoPFNURElOPikKICAgICAgICB7CiAgICAgICAgICAgIGFsYXJtIDA7CiAgICAgICAgICAg
ICMgVGhpcyBpcyByZWFsbHkgZ3Jvc3MuIFRoZXJlIGlzIGEgY2VydGFpbiBwcm9taW5lbnQg
ZW1haWwKICAgICAgICAgICAgIyBtYXJrZXRpbmcgY29tcGFueSB3aG9zZSBzb2Z0d2FyZSBo
YXMgYSBidWcgaW4gaXQgd2hpY2ggY2F1c2VzCiAgICAgICAgICAgICMgRGF0ZTogaGVhZGVy
cyB0byBzb21ldGltZXMgYmUgdGVybWluYXRlZCB3aXRoIGp1c3QgQ1IgcmF0aGVyIHRoYW4K
ICAgICAgICAgICAgIyBDUkxGLiBJZiB3ZSBpbnRlcnByZXQgUkZDIDUzMjEgc2VjdGlvbiAy
LjMuOCBzdHJpY3RseSwgdGhlbiB3ZSdyZQogICAgICAgICAgICAjIHJlcXVpcmVkIHRvIHRy
ZWF0IHN1Y2ggYSBEYXRlOiBoZWFkZXIgYW5kIHRoZSBvbmUgZm9sbG93aW5nIGl0IGFzCiAg
ICAgICAgICAgICMgYSBzaW5nbGUgaGVhZGVyIGZpZWxkLCBidXQgc3RyaWN0IGFkaGVyZW5j
ZSB0byB0aGUgUkZDIHdoZW4gdGhhdAogICAgICAgICAgICAjIHJlc3VsdHMgaW4gb2J2aW91
c2x5IGJyb2tlbiBiZWhhdmlvciBpcyBub3QgdGhlIGJlc3QgYXBwcm9hY2guIE9uCiAgICAg
ICAgICAgICMgdGhlIG90aGVyIGhhbmQsIHdoZW4gd2UncmUgc3RyYXlpbmcgZnJvbSB0aGUg
UkZDLCB3ZSB3YW50IHRvIGRvCiAgICAgICAgICAgICMgc28gYXMgbWluaW1hbGx5IGFzIHBv
c3NpYmxlLiBUaGVyZWZvcmUsIHdoYXQgd2UgYXJlIGRvaW5nIGhlcmUgaXMKICAgICAgICAg
ICAgIyBjaGVja2luZyBzcGVjaWZpY2FsbHkgZm9yIHRoaXMgZXhhY3QgcHJvYmxlbSAtLSBE
YXRlOiBoZWFkZXJzCiAgICAgICAgICAgICMgZW5kaW5nIHdpdGggQ1IgcmF0aGVyIHRoYW4g
Q1JMRiAtLSBhbmQgY29ycmVjdGluZyBmb3IganVzdCB0aGF0CiAgICAgICAgICAgICMgb25l
LCBsaW1pdGVkIGNhc2UuCiAgICAgICAgICAgIG15KEBsaW5lcyk7CiAgICAgICAgICAgICMg
VGhpcyBoYW5kbGVzIGlucHV0IHdpdGggYm90aCBDUkxGIGFuZCBMRiBsaW5lIHRlcm1pbmF0
b3JzLgogICAgICAgICAgICBpZiAoL14oRGF0ZTouKilccihbXlxuXS4qKC4pXG4pLykgewog
ICAgICAgICAgICAgICAgaWYgKCQzIGVxICJcciIpIHsKICAgICAgICAgICAgICAgICAgICBA
bGluZXMgPSAoIiQxXHJcbiIsICQyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIEBsaW5lcyA9ICgiJDFcbiIsICQyKTsK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgICAgIEBsaW5lcyA9ICgkXyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAg
IGZvcmVhY2ggbXkgJGxpbmUgKEBsaW5lcykgewoJCWNob21wKCRsaW5lKTsKCgkJIyB3ZSdy
ZSBkb25lIHdpdGggdGhlIGhlYWRlciB3aGVuIHdlJ3ZlIGZvdW5kIGEgYmxhbmsgbGluZQoJ
CSMgYW5kIHRoZSByZXF1aXJlZCBoZWFkZXJzIGhhdmUgYmVlbiBmb3VuZCBhbHJlYWR5CgkJ
bGFzdCBsaW5laW4gaWYgKCFkZWZpbmVkICRsaW5lIHx8ICRsaW5lICF+IC9cUy8pOyAKCQkJ
ICMmJiAoCgkJCSAjKGRlZmluZWQgJGhlYWRlci0+eydyZWNlaXZlZCd9ICYmICRoZWFkZXIt
PnsncmVjZWl2ZWQnfS0+WzBdLT57J3ZhbHVlJ30gPX4gL1x3LykgJiYKCQkJICMoZGVmaW5l
ZCAkaGVhZGVyLT57J3N1YmplY3QnfSAmJiAkaGVhZGVyLT57J3N1YmplY3QnfS0+WzBdLT57
J3ZhbHVlJ30gPX4gL1x3LykgJiYKCQkJICMoZGVmaW5lZCAkaGVhZGVyLT57J3RvJ30gJiYg
JGhlYWRlci0+eyd0byd9LT5bMF0tPnsndmFsdWUnfSA9fiAvXHcvKSAmJgoJCQkgIyhkZWZp
bmVkICRoZWFkZXItPnsnZnJvbSd9ICYmICRoZWFkZXItPnsnZnJvbSd9LT5bMF0tPnsndmFs
dWUnfSA9fiAvXHcvKSkpOwoKCQkjIG1hdGNoIGhlYWRlciBsaW5lcwoJCWlmICgkbGluZSA9
fiAvXihcUys/KTpccyo/KFxTLio/KSQvKQoJCXsKCQkJbXkgJGhlYWQgPSAkMTsgbXkgJHZh
bHVlID0gJDI7CgkJCSRuYW1lID0gJGhlYWQ7CgkJCQoJCQkkbmFtZSA9fiB0ci9BLVovYS16
LzsJIyBoZWFkZXIgbmFtZXMgYXJlIGNhc2UgaW5zZW5zaXRpdmUKCQkJY2hvbXAoJG5hbWUp
OwoKCQkJJHZhbHVlID1+IHMvXHMrPy8gL2dpczsJIyBuaXggZXh0cmEgc3BhY2VzICYgdW5m
b2xkIGhlYWRlciBsaW5lcyBieSByZW1vdmluZyBDUkxGCgkJCSR2YWx1ZSA9fiBzLyhcUykk
LyQxIC87CgkJCWNob21wKCR2YWx1ZSk7CgkJCQoJCQkjIGlmIHRoaXMgaGVhZGVyIG5hbWUg
aGFzIGFscmVhZHkgYmVlbiBmb3VuZCwgYXBwZW5kIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5
CgkJCW15ICRjb3VudCA9ICgoZGVmaW5lZCAkaGVhZGVyLT57JG5hbWV9KSAmJiAocmVmKCRo
ZWFkZXItPnskbmFtZX0pIGVxICJBUlJBWSIpKT8gc2NhbGFyIEB7JGhlYWRlci0+eyRuYW1l
fX0gOiAwOwoJCQkKCQkJIyByZWNvcmQgdGhpcyBoZWFkZXIgbGluZQoJCQkkaGVhZGVyLT57
JG5hbWV9LT5bJGNvdW50XS0+eyd2YWx1ZSd9ID0gJHZhbHVlOwoJCQkkaGVhZGVyLT57JG5h
bWV9LT5bJGNvdW50XS0+eyduYW1lJ30gPSAkaGVhZDsgIyBqdXN0IGZvciBjb25zaXN0ZW5j
eSAoaS5lLiBwcmUgdHJhbnNmb3JtcykKCQkJCgkJCSNwcmludCAiZm91bmQgJGhlYWQgWyRj
b3VudF0gPSAkdmFsdWUkQ1JMRiI7CgkJfQoJCQoJCSMgaWYgdGhpcyBsaW5lIGRvZXNuJ3Qg
c3RhcnQgd2l0aCAiaGVhZGVyOiIsIGFwcGVuZCB0byBsYXN0IGxpbmUgZm91bmQgKGlmIGV4
aXN0cykKCQllbHNpZiAoJG5hbWUgJiYgJGxpbmUgPX4gL1x3LyAmJiAkbGluZSAhfiAvXjov
KSB7ICRsaW5lID1+IHMvXHMrPy8gL2dpczsgJGxpbmUgPX4gcy9eXHMvLzsgJGhlYWRlci0+
eyRuYW1lfS0+WyhzY2FsYXIgQHskaGVhZGVyLT57JG5hbWV9fSAtIDEpXS0+eyd2YWx1ZSd9
IC49ICRsaW5lIGlmICgoZGVmaW5lZCAkaGVhZGVyLT57JG5hbWV9KSAmJiAocmVmKCRoZWFk
ZXItPnskbmFtZX0pIGVxICJBUlJBWSIpKTsgfQogICAgICAgICAgICB9Cgl9CgoJcmV0dXJu
ICRoZWFkZXI7Cn0KCnN1YiBkYXRlX2NoZWNrCnsKCW15ICgkZGF0ZSwkcmN2ZCkgPSBzaGlm
dDsKCW15ICgkZG93LCAkZGF5LCAkbW9uLCAkeWVhciwgJGhvdXIsICRtaW4sICRzZWMsICRy
bWRyKSA9ICI/IjsKCglpZiAoJGRhdGUgPX4gL1xzKj8oXHd7MSw5fSksP1xzKz8oXGQrPylc
cys/KFx3ezN9KVxzKz8oXGR7NH0pXHMrPyhcZHsxLDJ9KTooXGR7Mn0pOihcZHsyfSkoLiop
L2kpIAoJeyAKCQkkZG93PSQxOyAkZGF5PSQyOyAkbW9uPSQzOyAkeWVhcj0kNDsgJGhvdXI9
JDU7ICRtaW49JDY7ICRzZWM9JDc7ICRybWRyPSQ4OwoJCSRtb24gPSAkbW9uPX4vRGVjL2k/
MTE6JG1vbj1+L05vdi9pPzEwOiRtb249fi9PY3QvaT85OiRtb249fi9TZXAvaT84OiRtb249
fi9BdWcvaT83OiRtb249fi9KdWwvaT82OiRtb249fi9KdW4vaT81OiRtb249fi9NYXkvaT80
OiRtb249fi9BcHIvaT8zOiRtb249fi9NYXIvaT8yOiRtb249fi9GZWIvaT8xOjA7CgoJCWV2
YWwgewoJCSAgICAkZGF0ZSA9IHRpbWVnbSgkc2VjLCRtaW4sJGhvdXIsJGRheSwkbW9uLCR5
ZWFyKTsKCQl9OwoJCWlmICgkQCkgewoJCSAgICByZXR1cm4gImRhdGUtb3V0LW9mLXJhbmdl
IChvdmVyZmxvdykiOwoJCX0KCgkJIyBhZGp1c3QgZm9yIGxvY2FsIHRpbWUKCQlpZiAoJHJt
ZHIgPX4gL1wrXGQoXGQpXGRcZC8pIHsgJGRhdGUgLT0gJDEgKiA2MCAqIDYwOyB9CgkJaWYg
KCRybWRyID1+IC9cLVxkKFxkKVxkXGQvKSB7ICRkYXRlICs9ICQxICogNjAgKiA2MDsgfQoJ
fQoJZWxzZSB7IHJldHVybiAiZGF0ZS1mb3JtYXQtdW5rbm93biI7IH0KCiAgICAgICAgaWYg
KCRyY3ZkICYmICRyY3ZkID1+IC9ccyo/KFx3ezEsOX0pLD9ccys/KFxkKz8pXHMrPyhcd3sz
fSlccys/KFxkezR9KVxzKz8oXGR7MSwyfSk6KFxkezJ9KTooXGR7Mn0pKC4qKS9pKQogICAg
ICAgIHsKICAgICAgICAgICAgICAgICRkb3c9JDE7ICRkYXk9JDI7ICRtb249JDM7ICR5ZWFy
PSQ0OyAkaG91cj0kNTsgJG1pbj0kNjsgJHNlYz0kNzsgJHJtZHI9JDg7CgkJJG1vbiA9ICRt
b249fi9EZWMvaT8xMTokbW9uPX4vTm92L2k/MTA6JG1vbj1+L09jdC9pPzk6JG1vbj1+L1Nl
cC9pPzg6JG1vbj1+L0F1Zy9pPzc6JG1vbj1+L0p1bC9pPzY6JG1vbj1+L0p1bi9pPzU6JG1v
bj1+L01heS9pPzQ6JG1vbj1+L0Fwci9pPzM6JG1vbj1+L01hci9pPzI6JG1vbj1+L0ZlYi9p
PzE6MDsKCgkJZXZhbCB7CgkJICAgICRyY3ZkID0gdGltZWdtKCRzZWMsJG1pbiwkaG91ciwk
ZGF5LCRtb24sJHllYXIpOwoJCX07CgkJaWYgKCRAKSB7CgkJICAgIHJldHVybiAiZGF0ZS1v
dXQtb2YtcmFuZ2UgKG92ZXJmbG93KSI7CgkJfQoKICAgICAgICAgICAgICAgICMgYWRqdXN0
IGZvciBsb2NhbCB0aW1lCiAgICAgICAgICAgICAgICBpZiAoJHJtZHIgPX4gL1wrXGQoXGQp
XGRcZC8pIHsgJHJjdmQgLT0gJDEgKiA2MCAqIDYwOyB9CiAgICAgICAgICAgICAgICBpZiAo
JHJtZHIgPX4gL1wtXGQoXGQpXGRcZC8pIHsgJHJjdmQgKz0gJDEgKiA2MCAqIDYwOyB9CiAg
ICAgICAgfQogICAgICAgIGVsc2UgeyAkcmN2ZCA9IHRpbWU7IH0KCgkjIGNoZWNrIGZvciBy
YW5nZSArLy0KCW15ICRkaWZmID0gJHJjdmQgLSAkZGF0ZTsgbXkgJGRpZmZfZGF5cyA9IHJv
dW5kKCRkaWZmLyg2MCo2MCoyNCkpOwoJaWYgKCgkZGlmZiA8ICRkYXRlX2xpbWl0KSBhbmQg
KCRkaWZmID4gJGRhdGVfbGltaXQgKiAtMSkpIHsgcmV0dXJuICJkYXRlLWluLXJhbmdlICgk
ZGlmZl9kYXlzIGRheXMpIjsgfQoJZWxzZSB7IHJldHVybiAiZGF0ZS1vdXQtb2YtcmFuZ2Ug
KCRkaWZmX2RheXMgZGF5cykiOyB9Cn0KCnN1YiByb3VuZCAKewogICAgbXkgJG51bSA9IHNo
aWZ0OwogICAgcmV0dXJuIGludCgoJG51bSoxMDApKzAuNSkvMTAwOwp9CgojIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMj
IyMgUGFyc2UgQm9keSAgIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKc3ViIHBhcnNlX2JvZHkKewoJIyB0aGlz
IGZ1bmN0aW9uIGlzIHJlYWxseSBvbmx5IHVzZWQgZm9yCgkjIGVtYWlsLXRvLWVtYWlsIGNv
bXBhcmlzb25zLCB3aGVyZSBwcm9jZXNzaW5nCgkjIHRoZSBlbnRpcmUgZW1haWwgaXMgcmVx
dWlyZWQuLi4gdXN1YWxseQoJIyB3ZSdsbCBqdXN0IHByb2Nlc3MgdGhlIGhlYWRlcgoKCW15
ICRib2R5ID0gIiI7CiAgICAgICAgd2hpbGUgKDxTVERJTj4pIHsgJGJvZHkgLj0gJF87IH0K
CXJldHVybiAkYm9keTsKfQkJCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMgUHJvY2VzcyBSZWNlaXZlZCBMaW5lcyAgIyMj
IyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIwoKc3ViIHByb2Nlc3NfcmN2ZAp7CglteSAkcmN2ZCA9IHNoaWZ0OwoJbXkgJHJ0cm4g
PSBzaGlmdDsKCQoJIyBoZXVyaXN0aWNzCglteSAkTFVTRVIJPSBxcn4oPzpcd3wtfFwuKSs/
fjsKCW15ICRET01BSU4JPSBxcn4oPzpcd3wtfFwuKStcLlx3ezIsNH1+OwoJbXkgJElQCQk9
IHFyfig/OlxkezEsM31cLil7M31cZHsxLDN9fjsKCW15ICRFTUFJTCAJPSBxcn4kTFVTRVJc
QCRET01BSU5+OwoJbXkgJEhFTE8JPSBxcn5bXlxzXDBcL1xcXCNdKz9+OwoJbXkgJFJETlMJ
PSBxcn4oPzokRE9NQUlOfFxbPyRJUFxdP3x1bmtub3dufHVudmVyaWZpZWQpfjsKCQoJbXkg
JGVkZ2VfaXAgPSAiIjsKCW15ICR1bnRydXN0ZWQgPSAwOwoKCWlmICgkbm9fbG9jYWxfcmVj
ZWl2ZWQpIHsKCSAgICBteSAkbG9jYWxfcmN2ZDsKCSAgICAkbG9jYWxfcmN2ZC0+eyd2YWx1
ZSd9ID0gImF1dG8tZ2VuZXJhdGVkIjsKCSAgICAkbG9jYWxfcmN2ZC0+eyduYW1lJ30gPSAi
UmVjZWl2ZWQiOwoJICAgICRsb2NhbF9yY3ZkLT57J3NhbmUnfSA9ICJ0cnVzdGVkIjsKCSAg
ICAkbG9jYWxfcmN2ZC0+eydyZG5zJ30gPSAkb3B0X3JlbW90ZV9uYW1lIHx8ICIiOwoJICAg
ICRsb2NhbF9yY3ZkLT57J2lwYWQnfSA9ICRvcHRfcmVtb3RlX2lwIHx8ICIiOwoJICAgICRs
b2NhbF9yY3ZkLT57J210YW4nfSA9ICRvcHRfbG9jYWxfbmFtZSB8fCAiIjsKCSAgICAkbG9j
YWxfcmN2ZC0+eydtdGFpJ30gPSAkb3B0X2xvY2FsX2lwIHx8ICIiOwoJICAgICRsb2NhbF9y
Y3ZkLT57J2hlbG8nfSA9ICRvcHRfaGVsbyB8fCAiIjsKCSAgICAkbG9jYWxfcmN2ZC0+eydm
b3JlJ30gPSAkb3B0X3JjcHQgfHwgIiI7CgkgICAgJGxvY2FsX3JjdmQtPnsnZnJvbSd9ID0g
JHJldHVybl9wYXRoIHx8ICIiOwoKCSAgICBzcGxpY2UoQHskcmN2ZH0sIDAsIDAsICRsb2Nh
bF9yY3ZkKTsKCX0KCSAgICAKCSMgY2hlY2sgaWYgd2Ugd2VyZSBwYXNzZWQgYSB2YWxpZCBh
cnJheSBvZiByZWNlaXZlZCBsaW5lcwoJdW5sZXNzICgoZGVmaW5lZCAkcmN2ZCkgJiYgKHJl
ZigkcmN2ZCkgZXEgIkFSUkFZIikgJiYgJHJjdmQtPlswXS0+eyd2YWx1ZSd9KQoJewoJCW5v
IHN0cmljdCAncmVmcyc7CgkJbXkgJXJjdmRfaGFzaCA9ICgndmFsdWUnID0+ICJmcm9tIGxv
Y2FsaG9zdDsgIiAuIGdtdGltZSB0aW1lLCAnbmFtZScgPT4gIlJlY2VpdmVkIik7CgkJbXkg
QHJjdmRfYXJyYXk7ICRyY3ZkX2FycmF5WzBdID0gXCVyY3ZkX2hhc2g7ICAkcmN2ZCA9IFxA
cmN2ZF9hcnJheTsKCX0KCWVsc2UgewoKCSMgaXRlcmF0ZSB0aHJvdWdoIGVhY2ggcmVjZWl2
ZWQgaGVhZGVyLCBwYXJzaW5nIGFuZCB2YWxpZGF0aW5nIHRoZSBpbmZvCglmb3IgKG15ICR4
ID0gMDsgJHggPCBzY2FsYXIgQCRyY3ZkOyAkeCsrKQoJewoJCSMgc2tpcCBwcm9jZXNzaW5n
IGlmIHdlIGFscmVhZHkgbG9zdCBjb25maWRlbmNlIGluIHRoaXMgdHJhaWwgb2YgcmVjZWl2
ZWQgbGluZXMKCQkjaWYgKCR1bnRydXN0ZWQpIHsgJHJjdmQtPlskeF0tPnsnc2FuZSd9ID0g
InVudHJ1c3RlZCI7IG5leHQ7IH0KCQoJCW15ICRoZWxvID0gJHJjdmQtPlskeF0tPnsnaGVs
byd9IHx8ICIiOwoJCW15ICRpcGFkID0gJHJjdmQtPlskeF0tPnsnaXBhZCd9IHx8ICIiOwoJ
CW15ICRyZG5zID0gJHJjdmQtPlskeF0tPnsncmRucyd9IHx8ICIiOwoJCW15ICRmcm9tID0g
JHJjdmQtPlskeF0tPnsnZnJvbSd9IHx8ICIiOwoJCW15ICRtdGFuID0gJHJjdmQtPlskeF0t
PnsnbXRhbid9IHx8ICIiOwoJCW15ICRtdGFpID0gJHJjdmQtPlskeF0tPnsnbXRhaSd9IHx8
ICIiOwoJCW15ICRmb3JlID0gJHJjdmQtPlskeF0tPnsnZm9yZSd9IHx8ICIiOwoKCQlteSAk
aWRudD0iIjsgbXkgJG10YXY9IiI7IG15ICR3aXRoPSIiOyBteSAkZGF0ZT0iIjsKCQkKCQkj
IHRyeSB0byB0YWtlIGludG8gYWNjb3VudCBhbGwga25vd24gTVRBIGZvcm1hdHMKCQkKCQlp
ZiAgICAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL1woZW52ZWxvcGUtKD86c2VuZGVy
fGZyb20pIDwoJEVNQUlMKT5cKS8vZ2lzKSAJCQl7ICRmcm9tPSQxOyAJCQkJCX0jIHByaW50
ICJYLSR4LW1hdGNoZWQtMDE6IGZyb209JGZyb20sIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+
eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWlmICAgICgkcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+
IHMvO1xzKz8oXHd7M30sIFxkezEsMn0gXHd7M30gXGR7Miw0fS4qPykkLy9naXMpCQkJeyAk
ZGF0ZT0kMTsgCQkJCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTAyOiBkYXRlPSRkYXRlLCBy
ZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQlpZiAgICAoJHJj
dmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL2ZvclxzKz88PygkRU1BSUwpPj8oPzogXChzaW5n
bGUtZHJvcFwpKT8vL2dpcykgCQkJeyAkZm9yZT0kMTsgCQkJCQl9IyBwcmludCAiWC0keC1t
YXRjaGVkLTAzOiBmb3JlPSRmb3JlLCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUn
fSAkQ1JMRiI7IH0KCQlpZiAgICAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL2J5XHMr
PyhcUys/KSBcKCgkSVApXCkgXCgoLio/KVwpLy9naXMpIAkJCQl7ICRtdGFuPSQxOyAkbXRh
aT0kMjsgJG10YXY9JDM7IAkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0wNDogbXRhbj0kbXRh
biwgbXRhaT0kbXRhaSwgbXRhdj0kbXRhdiwgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3Zh
bHVlJ30gJENSTEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9i
eVxzKz8oXFMrPykgXFsoJElQKVxdLy9naXMpIAkJCQkJeyAkbXRhbj0kMTsgJG10YWk9JDI7
IAkJCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTA1OiBtdGFuPSRtdGFuLCBtdGFpPSRtdGFp
LCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQllbHNpZiAo
JHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL2J5XHMrPyhcUys/KSBcKCguKz8pXCkvL2dp
cykgCQkJCQl7ICRtdGFuPSQxOyAkbXRhdj0kMjsgCQkJCX0jIHByaW50ICJYLSR4LW1hdGNo
ZWQtMDY6IG10YW49JG10YW4sIG10YXY9JG10YXYsIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+
eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+
IHMvYnlccys/KCRJUCkoPz1cV3w7fCQpLy9naXMpIAkJCQkJCXsgJG10YWk9JDE7IAkJCQkJ
fSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0wNzogbXRhaT0kbXRhaSwgcmVtYWluaW5nPSRyY3Zk
LT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3Zh
bHVlJ30gPX4gcy9ieVxzKz8oJERPTUFJTikoPz1cV3w7fCQpLy9naXMpIAkJCQkJeyAkbXRh
bj0kMTsgCQkJCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTA4OiBtdGFuPSRtdGFuLCByZW1h
aW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQllbHNpZiAoJHJjdmQt
PlskeF0tPnsndmFsdWUnfSA9fiBzL2J5XHMrPyhcUys/KSg/PVxXfDt8JCkvL2dpcykgCQkJ
CQl7ICRtdGFuPSQxOyAJCQkJCX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMDk6IG10YW49JG10
YW4sIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWlmICAg
ICgkcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvKD86d2l0aClccys/KFxTKz8pIFwoKC4q
PylcKS8vZ2lzKSAJCQkJCXsgJHdpdGg9JDE7ICRtdGF2PSQyIGlmICEkbXRhdjsgCQl9IyBw
cmludCAiWC0keC1tYXRjaGVkLTEwOiB3aXRoPSR3aXRoLCBtdGF2PSRtdGF2LCByZW1haW5p
bmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7fQoJCWVsc2lmICgkcmN2ZC0+WyR4
XS0+eyd2YWx1ZSd9ID1+IHMvKD86d2l0aClccys/KFxTKz8pKD89XFd8O3wkKS8vZ2lzKSAJ
CQkJCXsgJHdpdGg9JDE7IAkJCQkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0xMTogd2l0aD0k
d2l0aCwgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJaWYg
ICAgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9eZnJvbVxzKz8oJFJETlMpIFwoSEVM
TyAoJEhFTE8pXCkgXCgoJExVU0VSKVxAXFs/KCRJUClcXT8vL2dpcykgCXsgJHJkbnM9JDE7
ICRoZWxvPSQyOyAkaWRudD0kMzsgJGlwYWQ9JDQ7IAl9IyBwcmludCAiWC0keC1tYXRjaGVk
LTEyOiByZG5zPSRyZG5zLCBoZWxvPSRoZWxvLCBpZG50PSRpZG50LCBpcGFkPSRpcGFkLCBy
ZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQllbHNpZiAoJHJj
dmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrPygkUkROUykgXChIRUxPICgkSEVM
TylcKSBcKFxbPygkSVApXF0/Ly9naXMpIAkJeyAkcmRucz0kMTsgJGhlbG89JDI7ICRpcGFk
PSQzOyAJCX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMTM6IHJkbnM9JHJkbnMsIGhlbG89JGhl
bG8sIGlwYWQ9JGlwYWQsIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxG
IjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/KCRS
RE5TKSBcKFxbKCRJUClcXSBoZWxvPSgkSEVMTylcKS8vZ2lzKSAJCQl7ICRyZG5zPSQxOyAk
aXBhZD0kMjsgJGhlbG89JDM7IAkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0xNDogcmRucz0k
cmRucywgaXBhZD0kaXBhZCwgaGVsbz0kaGVsbywgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57
J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4g
cy9eZnJvbVxzKz8oJFJETlMpIFwoKCRMVVNFUilcQFxbPygkSVApXF0/XCkvL2dpcykgCQkJ
eyAkcmRucz0kMTsgJGlkbnQ9JDI7ICRpcGFkPSQzOyAJCX0jIHByaW50ICJYLSR4LW1hdGNo
ZWQtMTU6IHJkbnM9JHJkbnMsIGlkbnQ9JGlkbnQsIGlwYWQ9JGlwYWQsIHJlbWFpbmluZz0k
cmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4XS0+
eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/KCRSRE5TKVwoKCRJUClcKS8vZ2lzKSAJCQkJCXsg
JHJkbnM9JDE7ICRpcGFkPSQyOyAJCQkJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0xNjogcmRu
cz0kcmRucywgaXBhZD0kaXBhZCwgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30g
JENSTEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9eZnJvbVxz
Kz9cWygkSVApXF0gXChoZWxvPSgkSEVMTykgaWRlbnQ9KCRMVVNFUilcKS8vZ2lzKSAJCXsg
JGlwYWQ9JDE7ICRoZWxvPSQyOyAkaWRudD0kMzsgCQl9IyBwcmludCAiWC0keC1tYXRjaGVk
LTE3OiBpcGFkPSRpcGFkLCBoZWxvPSRoZWxvLCBpZG50PSRpZG50LCByZW1haW5pbmc9JHJj
dmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQllbHNpZiAoJHJjdmQtPlskeF0tPnsn
dmFsdWUnfSA9fiBzL15mcm9tXHMrP1xbKCRJUClcXSBcKGFjY291bnQgKCRMVVNFUikgSEVM
TyAoJEhFTE8pXCkvL2dpcykgCQl7ICRpcGFkPSQxOyAkaWRudD0kMjsgJGhlbG89JDM7IAkJ
fSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0xODogaXBhZD0kaXBhZCwgaWRudD0kaWRudCwgaGVs
bz0kaGVsbywgcmVtYWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJ
ZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9eZnJvbVxzKz9cWygkSVApXF0g
XChoZWxvPSgkSEVMTylcKS8vZ2lzKSAJCQkJeyAkaXBhZD0kMTsgJGhlbG89JDI7IAkJCQl9
IyBwcmludCAiWC0keC1tYXRjaGVkLTE5OiBpcGFkPSRpcGFkLCBoZWxvPSRoZWxvLCByZW1h
aW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQllbHNpZiAoJHJjdmQt
PlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrP1xbPygkSVApXF0/Oj9cZCo/IFwoSEVM
TyAoJEhFTE8pXCkvL2dpcykgCQkJeyAkaXBhZD0kMTsgJGhlbG89JDI7IAkJCQl9IyBwcmlu
dCAiWC0keC1tYXRjaGVkLTIwOiBpcGFkPSRpcGFkLCBoZWxvPSRoZWxvLCByZW1haW5pbmc9
JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQllbHNpZiAoJHJjdmQtPlskeF0t
PnsndmFsdWUnfSA9fiBzL15mcm9tXHMrPygkSEVMTykgXChJREVOVDooJExVU0VSKVxAKCRS
RE5TKSBcWygkSVApXF0vL2dpcykgCQl7ICRoZWxvPSQxOyAkaWRudD0kMjsgJHJkbnM9JDM7
ICRpcGFkPSQ0OyAJfSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0yMTogaGVsbz0kaGVsbywgaWRu
dD0kaWRudCwgcmRucz0kcmRucywgaXBhZD0kaXBhZCwgcmVtYWluaW5nPSRyY3ZkLT5bJHhd
LT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30g
PX4gcy9eZnJvbVxzKz8oJEhFTE8pIFwoPD8oJFJETlMpPj9ccz9cWygkSVApXF0vL2dpcykg
CQkJeyAkaGVsbz0kMTsgJHJkbnM9JDI7ICRpcGFkPSQzOyAJCX0jIHByaW50ICJYLSR4LW1h
dGNoZWQtMjI6IGhlbG89JGhlbG8sIHJkbnM9JHJkbnMsIGlwYWQ9JGlwYWQsIHJlbWFpbmlu
Zz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4
XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/KCRIRUxPKSBcKFxbKCRJUClcXSBpZGVudD0o
JExVU0VSKVwpLy9naXMpIAkJCXsgJGhlbG89JDE7ICRpcGFkPSQyOyAkaWRudD0kMzsgCQl9
IyBwcmludCAiWC0keC1tYXRjaGVkLTIzOiBoZWxvPSRoZWxvLCBpcGFkPSRpcGFkLCBpZG50
PSRpZG50LCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQll
bHNpZiAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrPygkSEVMTykgXChw
cm94eWluZyBmb3IgKCRJUClcKSBcKC4qPyB1c2VyICgkTFVTRVIpXCkvL2dpcykJeyAkaGVs
bz0kMTsgJGlwYWQ9JDI7ICRpZG50PSQzOyAJCX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMjQ6
IGhlbG89JGhlbG8sIGlwYWQ9JGlwYWQsIGlkbnQ9JGlkbnQsIHJlbWFpbmluZz0kcmN2ZC0+
WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4XS0+eyd2YWx1
ZSd9ID1+IHMvXmZyb21ccys/KCRIRUxPKSBcKGFjY291bnQgKCRMVVNFUikgXFsoJElQKVxd
IHZlcmlmaWVkXCkvL2dpcykgCXsgJGhlbG89JDE7ICRpZG50PSQyOyAkaXBhZD0kMzsgCQl9
IyBwcmludCAiWC0keC1tYXRjaGVkLTI1OiBoZWxvPSRoZWxvLCBpZG50PSRpZG50LCBpcGFk
PSRpcGFkLCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JMRiI7IH0KCQll
bHNpZiAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL15mcm9tXHMrP1woPygkSEVMTykg
XCg/XFs/KCRJUClcXT9cKT8vL2dpcykgCQkJCXsgJGhlbG89JDE7ICRpcGFkPSQyOyAJCQkJ
fSMgcHJpbnQgIlgtJHgtbWF0Y2hlZC0yNjogaGVsbz0kaGVsbywgaXBhZD0kaXBhZCwgcmVt
YWluaW5nPSRyY3ZkLT5bJHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxzaWYgKCRyY3Zk
LT5bJHhdLT57J3ZhbHVlJ30gPX4gcy9eZnJvbVxzKz8oJEhFTE8pIFwobG9jYWxob3N0IFxb
Lio/OigkSVApXF1cKS8vZ2lzKSAJCQl7ICRoZWxvPSQxOyAkaXBhZD0kMjsgCQkJCX0jIHBy
aW50ICJYLSR4LW1hdGNoZWQtMjc6IGhlbG89JGhlbG8sIGlwYWQ9JGlwYWQsIHJlbWFpbmlu
Zz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2ZC0+WyR4
XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/KCRIRUxPKSBcKCgkTFVTRVIpXEAoJFJETlMp
XCkvL2dpcykgCQkJeyAkaGVsbz0kMTsgJGlkbnQ9JDI7ICRyZG5zPSQzOyAJCX0jIHByaW50
ICJYLSR4LW1hdGNoZWQtMjg6IGhlbG89JGhlbG8sIGlkbnQ9JGlkbnQsIHJkbnM9JHJkbnMs
IHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgk
cmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/KCRIRUxPKSBcKCgkUkROUylc
KS8vZ2lzKSAJCQkJCXsgJGhlbG89JDE7ICRyZG5zPSQyOyAJCQkJfSMgcHJpbnQgIlgtJHgt
bWF0Y2hlZC0yOTogaGVsbz0kaGVsbywgcmRucz0kcmRucywgcmVtYWluaW5nPSRyY3ZkLT5b
JHhdLT57J3ZhbHVlJ30gJENSTEYiOyB9CgkJZWxzaWYgKCRyY3ZkLT5bJHhdLT57J3ZhbHVl
J30gPX4gcy9cKGZyb21ccys/KCRMVVNFUilcQCgkUkROUylcKS8vZ2lzKQkJCQkJeyAkaWRu
dD0kMTsgJHJkbnM9JDI7IAkJCQl9IyBwcmludCAiWC0keC1tYXRjaGVkLTMwOiBpZG50PSRp
ZG50LCByZG5zPSRyZG5zLCByZW1haW5pbmc9JHJjdmQtPlskeF0tPnsndmFsdWUnfSAkQ1JM
RiI7IH0KCQllbHNpZiAoJHJjdmQtPlskeF0tPnsndmFsdWUnfSA9fiBzL1woZnJvbVxzKz8o
JExVU0VSKVxAKCRIRUxPKVwpLy9naXMpCQkJCQl7ICRpZG50PSQxOyAkaGVsbz0kMjsgCQkJ
CX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMzE6IGlkbnQ9JGlkbnQsIGhlbG89JGhlbG8sIHJl
bWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJCWVsc2lmICgkcmN2
ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/XCg/XFs/KCRJUClcXT9cKT8vL2dp
cykgCQkJCQl7ICRpcGFkPSQxOyAJCQkJCX0jIHByaW50ICJYLSR4LW1hdGNoZWQtMzI6IGlw
YWQ9JGlwYWQsIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ICRDUkxGIjsgfQoJ
CWVsc2lmICgkcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9ID1+IHMvXmZyb21ccys/KCRIRUxPKSg/
PVxXfDt8JCkvL2dpcykgCQkJCQl7ICRoZWxvPSQxOyAJCQkJCX0jIHByaW50ICJYLSR4LW1h
dGNoZWQtMzM6IGhlbG89JGhlbG8sIHJlbWFpbmluZz0kcmN2ZC0+WyR4XS0+eyd2YWx1ZSd9
ICRDUkxGIjsgfQoKCQkjIGxvb2t1cCBJUCBpZiBub3QgcHJvdmlkZWQKCQkkaXBhZCA9IGhv
c3QoJHJkbnMpIGlmICEkaXBhZCAmJiAkcmRucyAmJiAkb3B0aW9ucyA9fiAvZC87CgkJJGlw
YWQgPSBob3N0KCRoZWxvKSBpZiAhJGlwYWQgJiYgISRyZG5zICYmICRoZWxvICYmICRoZWxv
ID1+IC8kRE9NQUlOLyAmJiAkb3B0aW9ucyA9fiAvZC87CgoJCSMgZXhjbHVkZSBsaW5lcyB3
aXRoIG5vIElQCgkJI25leHQgaWYgISRpcGFkICYmICgoc2NhbGFyIEAkcmN2ZCkgPiAxKTsK
CgkJIyBlbnN1cmUgdGhlIGxvY2FsIHJlY2VpdmVkIGxpbmUgaGFzIGEgZGF0ZSBzdGFtcAoJ
CSRkYXRlID0gZ210aW1lIHRpbWUgdW5sZXNzICRkYXRlIHx8ICR4OwoKCQkjIHNhdmUgImZy
b20iIGluZm8gZm9yIGNvbXBhcmlzb24gaW4gbmV4dCBpdGVyYXRpb24KCQkkcmN2ZC0+WyR4
XS0+eydyZG5zJ30JPSAkcmRuczsJCQoJCSRyY3ZkLT5bJHhdLT57J2lwYWQnfQk9ICRpcGFk
OwoJCSRyY3ZkLT5bJHhdLT57J2RhdGUnfQk9ICRkYXRlOwoKCQkjIGV4Y2x1ZGUgbGluZXMg
ZnJvbSBsb2NhbCwgcHJpdmF0ZSAoUkZDIDE5MTgpLCBhbmQgaW52YWxpZCBJUCBhZGRyZXNz
IHJhbmdlcwoJCW15ICRyZXNlcnZlZCA9IHFyfl4oKD86MTI3XC4pfCg/OjEwXC4pfCg/OjE3
MlwuKD86MVs2LTldfDJbMC05XXwzMSlcLil8KD86MTkyXC4xNjhcLil8KD86MTY5XC4yNTRc
LikpfjsKCQlteSAkdmFsaWQgPSBxcn5eKCg/OjA/MD9cZHxbMDFdP1xkXGR8MlswLTRdXGR8
MjVbMC01XSlcLig/OjA/MD9cZHxbMDFdP1xkXGR8MlswLTRdXGR8MjVbMC01XSlcLig/OjA/
MD9cZHxbMDFdP1xkXGR8MlswLTRdXGR8MjVbMC01XSlcLig/OjA/MD9cZHxbMDFdP1xkXGR8
MlswLTRdXGR8MjVbMC01XSkpJH47CgkJbmV4dCBpZiAoKCRyZG5zIGFuZCAkcmRucyA9fiAv
bG9jYWxob3N0L2kpIHx8ICgkaXBhZCBhbmQgKCRpcGFkID1+IC8kcmVzZXJ2ZWQvIHx8ICRp
cGFkICF+IC8kdmFsaWQvKSkpICYmICgoc2NhbGFyIEAkcmN2ZCkgPiAxKTsKCQkKCQkjIGxv
b2t1cCBNVEEgSVAvckROUyBpZiBub3QgcHJvdmlkZWQKCQkkbXRhaSA9IGhvc3QoJG10YW4p
IGlmICEkbXRhaSAmJiAkbXRhbiAmJiAkb3B0aW9ucyA9fiAvZC87CgkJJG10YW4gPSBob3N0
KCRtdGFpKSBpZiAhJG10YW4gJiYgJG10YWkgJiYgJG9wdGlvbnMgPX4gL2QvOwoKCQkjIGV4
Y2x1ZGUgbGluZXMgZnJvbSB3aXRoaW4gb3VyIGNsYXNzIEIgKC8xNikgbmV0d29yawoJCW5l
eHQgaWYgKCgkZWRnZV9pcCAmJiAkaXBhZCAmJiBpc19zYW1lX2NsYXNzX0IoJGVkZ2VfaXAs
JGlwYWQpKXx8KCEkZWRnZV9pcCAmJiAkbXRhaSAmJiAkaXBhZCAmJiBpc19zYW1lX2NsYXNz
X0IoJG10YWksJGlwYWQpKSkgJiYgKChzY2FsYXIgQCRyY3ZkKSA+IDEpOwoJCQoJCSMgcGVy
Zm9ybSByZXZlcnNlIEROUyBsb29rdXAgaWYgbm90IHByb3ZpZGVkIGJ5IE1UQQoJCSRyZG5z
ID0gaG9zdCgkaXBhZCkgaWYgISRyZG5zICYmICRpcGFkICYmICRvcHRpb25zID1+IC9kLzsK
CQkKCQkjIGZvcmNlIGEgcmV2ZXJzZSBETlMgbG9va3VwIG9uIGFsbCBJUHMsIGV2ZW4gdGhv
c2Ugd2l0aCBhbiBSRE5TIHNldCBieSB0aGUgTVRBCgkJJHJkbnMgPSBob3N0KCRpcGFkKSBp
ZiAkaXBhZCAmJiAkb3B0aW9ucyA9fiAvZi87CgkJCgkJIyBwZXJmb3JtIEFTTiBsb29rdXAg
KFJGQyAxOTMwLzIyNzApCgkJbXkgJGFzbiA9ICIiOwoJCSRhc24gPSBhc24oJGlwYWQpIGlm
ICRpcGFkICYmICRvcHRpb25zID1+IC9hLzsKCgkJIyBwZXJmb3JtIFNQRiBsb29rdXAgKFJG
QyA0NDA4KQoJCW15ICRyZXN1bHQgPSAiIjsgbXkgJHJlY2VpdmVkX3NwZiA9ICIiOwoJCWlm
ICgkb3B0aW9ucyA9fiAvcC8pCgkJewoJCQlpZiAoc2NhbGFyIEBjaWRyX2xpc3QgJiYgZXZh
bHtOZXQ6OkNJRFI6OmNpZHJsb29rdXAoJGlwYWQsIEBjaWRyX2xpc3QpfSkKCQkJewoJCQkJ
JHJlc3VsdCA9ICJwYXNzIjsKCQkJCSRyZWNlaXZlZF9zcGYgPSAicGFzcyAoJGlwYWQgaXMg
bG9jYWxseSB3aGl0ZWxpc3RlZCkiOwoJCQl9CgoJCQlpZiAoJGRiZmlsZSAmJiAhJHJlc3Vs
dCkKCQkJewoJCQkJJnJldGllIHVubGVzcyB0aWVkICVkYjsKCQkJCWlmICgkZGJ7JGlwYWR9
KQoJCQkJewoJCQkJCSRyZXN1bHQgPSAicGFzcyI7CgkJCQkJJHJlY2VpdmVkX3NwZiA9ICJw
YXNzICgkaXBhZCBpcyBhdXRoZW50aWNhdGVkIHZpYSBQT1AzKSI7CgkJCQl9CgkJCX0KCQkJ
CgkJCWlmICgkcnRybiAmJiAkaXBhZCAmJiAhJHJlc3VsdCkKCQkJewoJCQkgICAgbXkgJHNy
dnIgPSAkcmRucz8kcmRuczooJGhlbG8/JGhlbG86JGlwYWQpOwoJCQkgICAgZXZhbCB7CgkJ
CQlteSAkc3BmX3NlcnZlciA9IE1haWw6OlNQRjo6U2VydmVyLT5uZXcoKTsKCQkJCW15ICRy
ZXF1ZXN0ID0gTWFpbDo6U1BGOjpSZXF1ZXN0LT5uZXcoCgkJCQkgICAgaWRlbnRpdHkgPT4g
JHJ0cm4sCgkJCQkgICAgaXBfYWRkcmVzcyA9PiAkaXBhZCwKCQkJCSAgICBoZWxvX2lkZW50
aXR5ID0+ICRzcnZyCgkJCQkgICAgKTsKCQkJCW15ICRyZXNwb25zZSA9ICRzcGZfc2VydmVy
LT5wcm9jZXNzKCRyZXF1ZXN0KTsKCQkJCSRyZXN1bHQgPSAkcmVzcG9uc2UtPmNvZGU7CgkJ
CQkkcmVjZWl2ZWRfc3BmID0gJHJlc3BvbnNlLT5yZWNlaXZlZF9zcGZfaGVhZGVyOwoJCQkg
ICAgfTsKCQkJICAgIGlmICgkQCkgewoJCQkJc3lzbG9nKCd3YXJuaW5nJywgJ1NQRiBxdWVy
eSBlcnJvciAoaXA9JXMsIHNlbmRlcj0lcywgaGVsbz0lcyk6ICVzJywKCQkJCSAgICAgICAk
aXBhZCwgJHJ0cm4sICRzcnZyLCAkQCk7CgkJCQkkQCA9IHVuZGVmOwoJCQkJJHJlc3VsdCA9
IHVuZGVmOwoJCQkgICAgfQoJCQl9CgkJCQoJCQlpZiAoISRyZXN1bHQpCgkJCXsKCQkJCSRy
ZXN1bHQgPSAiZXJyb3IiOwoJCQkJJHJlY2VpdmVkX3NwZiA9ICJ1bmFibGUgdG8gZGV0ZXJt
aW5lIHNlbmRlciBpbmZvIjsKCQkJfQoJCX0KCgkJIyB3ZSBpbXBsaWNpdGVseSB0cnVzdCB0
aGUgcmVjZWl2ZWQgbGluZSBzZXQgImJ5IiBvdXIgb3duIHNlcnZlciBhcyB2YWxpZCAoZmly
c3QgdW50cnVzdGVkICJmcm9tIikKCQlpZiAoISRlZGdlX2lwKSAKCQl7IAoJCQkkZWRnZV9p
cCA9ICRtdGFpOyAKCQkJJHJjdmQtPlskeF0tPnsnc2FuZSd9ID0gc2V0X3JjdmQoJGhlbG8s
JGlwYWQsJGlkbnQsJHJkbnMsJGZyb20sJG10YW4sJG10YWksJG10YXYsJGZvcmUsJHdpdGgs
JGRhdGUsJGFzbiwkcmVzdWx0KTsgCgkJCSRyY3ZkLT5bJHhdLT57J3NwZid9ID0gJHJlY2Vp
dmVkX3NwZiBpZiAkb3B0aW9ucyA9fiAvcC87CgkJfQoKCQkjIG5vdyB3ZSdsbCB0cnkgdG8g
ZXN0YWJsaXNoIHRoZSB2YWxpZGl0eSBvZiBlYWNoIHJlY2VpdmVkIGxpbmUgYnkgY2hlY2tp
bmcgCgkJIyBmb3IgY29udGludWl0eSBhbmQgcmVqZWN0aW5nIGxpbmVzIHRoYXQgZG9uJ3Qg
Zml0IHRoZSAiZnJvbS9ieSIgY2hhaW4KCQllbHNlCgkJewoJCQkjcHJpbnQgIiBieSAiIC4g
JG10YW4gLiAiIC8gcHJldiBmcm9tICIgLiAkcmN2ZC0+WyR4LTFdLT57J3JkbnMnfSAuICIk
Q1JMRiI7CgkJCSNwcmludCAiIGJ5ICIgLiAkbXRhaSAuICIgLyBwcmV2IGZyb20gIiAuICRy
Y3ZkLT5bJHgtMV0tPnsnaXBhZCd9IC4gIiRDUkxGIjsKCQkJaWYgKAoJCQkJKAoJCQkJCSgk
bXRhbiAmJiAkcmN2ZC0+WyR4LTFdLT57J3JkbnMnfSAmJiAkbXRhbiA9fiAvJHJjdmQtPlsk
eC0xXS0+eydyZG5zJ30vKSB8fCAKCQkJICAgICAJCSgkbXRhaSAmJiAkcmN2ZC0+WyR4LTFd
LT57J2lwYWQnfSAmJiAkbXRhaSA9fiAvJHJjdmQtPlskeC0xXS0+eydpcGFkJ30vKQoJCQkJ
KSAmJiAJKCEkdW50cnVzdGVkKQoJCQkgICApIAoJCQkgICAgIHsgCgkJCQkkcmN2ZC0+WyR4
XS0+eydzYW5lJ30gPSBzZXRfcmN2ZCgkaGVsbywkaXBhZCwkaWRudCwkcmRucywkZnJvbSwk
bXRhbiwkbXRhaSwkbXRhdiwkZm9yZSwkd2l0aCwkZGF0ZSwkYXNuLCRyZXN1bHQpOyAKCQkJ
CSRyY3ZkLT5bJHhdLT57J3NwZid9ID0gJHJlY2VpdmVkX3NwZiBpZiAkb3B0aW9ucyA9fiAv
cC87CgkJCSAgICAgfQoJCQllbHNlIAoJCQl7IAoJCQkJJGhlbG8gPSAidW50cnVzdGVkLSIu
JGhlbG8gaWYgJGhlbG87ICRpcGFkID0gInVudHJ1c3RlZC0iLiRpcGFkIGlmICRpcGFkOwoJ
CQkJJGlkbnQgPSAidW50cnVzdGVkLSIuJGlkbnQgaWYgJGlkbnQ7ICRyZG5zID0gInVudHJ1
c3RlZC0iLiRyZG5zIGlmICRyZG5zOwoJCQkJJGZyb20gPSAidW50cnVzdGVkLSIuJGZyb20g
aWYgJGZyb207ICRtdGFuID0gInVudHJ1c3RlZC0iLiRtdGFuIGlmICRtdGFuOwoJCQkJJG10
YWkgPSAidW50cnVzdGVkLSIuJG10YWkgaWYgJG10YWk7ICRtdGF2ID0gInVudHJ1c3RlZC0i
LiRtdGF2IGlmICRtdGF2OwoJCQkJJGZvcmUgPSAidW50cnVzdGVkLSIuJGZvcmUgaWYgJGZv
cmU7ICR3aXRoID0gInVudHJ1c3RlZC0iLiR3aXRoIGlmICR3aXRoOwoJCQkJJGRhdGUgPSAi
IjsgJGFzbiA9ICIiOyAkcmVzdWx0ID0gIiI7CgkJCQkkcmN2ZC0+WyR4XS0+eydzYW5lJ30g
PSBzZXRfcmN2ZCgkaGVsbywkaXBhZCwkaWRudCwkcmRucywkZnJvbSwkbXRhbiwkbXRhaSwk
bXRhdiwkZm9yZSwkd2l0aCwkZGF0ZSwkYXNuLCRyZXN1bHQpOyAKCQkJCSR1bnRydXN0ZWQg
PSAxOyAKCQkJfQoJCX0KCX19CgkKCXJldHVybiAkcmN2ZDsKfQoKc3ViIGlzX3NhbWVfY2xh
c3NfQgp7CglteSAoJGlwMSwkaXAyKSA9IEBfOwoJJGlwMSA9fiBzL14oXGR7MSwzfVwuXGR7
MSwzfVwuKS4qPyQvJDEvZ2lzOwoJJGlwMiA9fiBzL14oXGR7MSwzfVwuXGR7MSwzfVwuKS4q
PyQvJDEvZ2lzOwoJCglyZXR1cm4gKCRpcDEgZXEgJGlwMik/IDE6MDsKfQoKc3ViIGFzbgp7
CglteSAkdGFyZ2V0ID0gc2hpZnQ7CglteSAkb3V0cHV0ID0gIiI7CgogICAgICAgIG15ICRJ
UCAgICAgICAgICA9IHFyfig/OlxkezEsM31cLil7M31cZHsxLDN9fjsKICAgICAgICBteSAk
RE9NQUlOICAgICAgPSBxcn4oPzpcd3wtfFwuKSs/XC5cd3syLDR9fjsKCglpZiAoICR0YXJn
ZXQgPX4gcy8oXGR7MSwzfSlcLihcZHsxLDN9KVwuKFxkezEsM30pXC4oXGR7MSwzfSkvJDQu
JDMuJDIuJDEuJGFzbl9zZXJ2ZXIvICkKCXsKCQkjIHVuY29tbWVudCB0aGlzIGNvZGUgaWYg
eW91IGRvIG5vdCB3YW50IHRvIHVzZSBOZXQ6OkROUzo6UmVzb2x2ZXIgYW5kIHlvdSBoYXZl
ICdob3N0JyBvbiB5b3VyIHN5c3RlbQoJCSNvcGVuIChIT1NULCAiaG9zdCAtdCB0eHQgJHRh
cmdldCAyPi9kZXYvbnVsbCB8Iikgb3IgZXJyb3IoIndhcm4iLCJIb3N0IGxvb2t1cCBmYWls
ZWQ6ICQhIik7CgkJI3doaWxlICg8SE9TVD4pIHsgJG91dHB1dCA9ICQxIGlmIC9cUSR0YXJn
ZXRcRSg/OiBkZXNjcmlwdGl2ZSk/IHRleHQgIihcZCo/KSIuKi87IH0KCQkjY2xvc2UgSE9T
VDsKCiAgICAgICAgICAgICAgICAjIGZpbmQgQVNOIGluZm8gdmlhIE5ldDo6RE5TOjpSZXNv
bHZlcgoJICAgICAgICBpZiAobXkgJHF1ZXJ5ID0gJHJlcy0+c2VuZCgkdGFyZ2V0LCJUWFQi
KSkgeyBmb3JlYWNoICgkcXVlcnktPmFuc3dlcikgeyAkb3V0cHV0ID0gJDEgaWYgJF8tPnN0
cmluZyA9fiAvJERPTUFJTlwuXHMrP1xkKz9ccys/SU5ccys/VFhUXHMrPyIoXGQrPykiXHMr
PyIkSVAiXHMrPyJcZCs/Ii87IH19CiAgICAgICAgICAgICAgICAjZWxzZSB7IGVycm9yKCJ3
YXJuIiwiQVNOIGxvb2t1cCBmYWlsZWQ6ICIgLiAkcmVzLT5lcnJvcnN0cmluZyk7IH0KCX0g
CgoJcmV0dXJuICRvdXRwdXQ7Cn0KCnN1YiBob3N0CnsKCW15ICR0YXJnZXQgPSBzaGlmdDsK
CW15ICRvdXRwdXQgPSAiIjsKCQoJbXkgJElQCQk9IHFyfig/OlxkezEsM31cLil7M31cZHsx
LDN9fjsJCglteSAkRE9NQUlOCT0gcXJ+KD86XHd8LXxcLikrP1wuXHd7Miw0fX47CgoJaWYg
KCR0YXJnZXQgPX4gcy8oJElQfCRET01BSU4pLyQxLykKCXsKCQkjIHVuY29tbWVudCB0aGlz
IGNvZGUgaWYgeW91IGRvIG5vdCB3YW50IHRvIHVzZSBOZXQ6OkROUzo6UmVzb2x2ZXIgYW5k
IHlvdSBoYXZlICdob3N0JyBvbiB5b3VyIHN5c3RlbQoJCSNvcGVuIChIT1NULCAiaG9zdCAk
dGFyZ2V0IDI+L2Rldi9udWxsIHwiKSBvciBlcnJvcigid2FybiIsIkhvc3QgbG9va3VwIGZh
aWxlZDogJCEiKTsKCQkjd2hpbGUgKDxIT1NUPikgeyAkb3V0cHV0ID0gJDEgaWYgLyRET01B
SU4gKD86ZG9tYWluIG5hbWUgcG9pbnRlcnxoYXMgYWRkcmVzcykgKCRJUHwkRE9NQUlOKVwu
Py87IH0KCQkjY2xvc2UgSE9TVDsKCgkJIyBmaW5kIEROUyBpbmZvIHZpYSBOZXQ6OkROUzo6
UmVzb2x2ZXIKCSAgICAgICAgaWYgKG15ICRxdWVyeSA9ICRyZXMtPnNlbmQoJHRhcmdldCkp
IHsgZm9yZWFjaCAoJHF1ZXJ5LT5hbnN3ZXIpIHsgJG91dHB1dCA9ICQxIGlmICRfLT5zdHJp
bmcgPX4gLyRET01BSU5cLlxzKz9cZCs/XHMrP0lOXHMrPyg/OlBUUnxBKVxzKz8oJElQfCRE
T01BSU4pXC4/LzsgfX0KICAgICAgICAJI2Vsc2UgeyBlcnJvcigid2FybiIsIkROUyBsb29r
dXAgZmFpbGVkOiAiIC4gJHJlcy0+ZXJyb3JzdHJpbmcpOyB9Cgl9CgkKCXJldHVybiAkb3V0
cHV0Owp9CgpzdWIgc2V0X3JjdmQKewoJbXkgKCRoZWxvLCRpcGFkLCRpZG50LCRyZG5zLCRm
cm9tLCRtdGFuLCRtdGFpLCRtdGF2LCRmb3JlLCR3aXRoLCRkYXRlLCRhc24sJHNwZikgPSBA
XzsKCglteSAkb3V0cHV0ID0gImZyb20iOwoJaWYgKCRvcHRpb25zID1+IC9lLykgewoJJG91
dHB1dCAuPSAoJGhlbG8pPyAJCSIgaGVsby0kaGVsbyIgCTogIiBuby1oZWxvIjt9CQkjIHNl
bmRlcidzIHNhbHV0YXRpb24KCSRvdXRwdXQgLj0gKCRyZG5zKT8gCQkiICRyZG5zIiAJOiAi
IG5vLXJkbnMiOwkJIyBzZW5kZXIncyBuYW1lCgkkb3V0cHV0IC49ICgkaXBhZCk/IAkJIiAk
aXBhZCIgCTogIiBuby1pcGFkIjsJCSMgc2VuZGVyJ3MgSVAKICAgICAgICBpZiAoJG9wdGlv
bnMgPX4gL3AvKSB7Cgkkb3V0cHV0IC49ICgkc3BmKT8JCSIgc3BmLSRzcGYiCTogIiBuby1z
cGYiO30JCSMgc2VuZGVyJ3MgcG9saWN5IHJlc3VsdAoJJG91dHB1dCAuPSAoJGFzbik/ICAJ
CSIgYXMkYXNuIiAJOiAiIG5vLWFzbiI7CQkjIHNlbmRlcidzIEFTTgoJJG91dHB1dCAuPSAo
JG10YW58fCRtdGFpKT8gCSIgJENSTEZcdCAgYnkiCTogIiI7Cgkkb3V0cHV0IC49ICgkbXRh
bik/IAkJIiAkbXRhbiIgCTogIiBuby1tdGEtbmFtZSI7CSMgcmVjZWl2aW5nIE1UQSdzIG5h
bWUKCSRvdXRwdXQgLj0gKCRtdGFpKT8gCQkiICRtdGFpIiAJOiAiIG5vLW10YS1pcCI7CQkj
IHJlY2VpdmluZyBNVEEncyBJUAoJJG91dHB1dCAuPSAoJGZvcmUpPyAJCSIgJENSTEZcdCAg
Zm9yIiA6ICIiOwoJJG91dHB1dCAuPSAoJGZvcmUpPyAJCSIgPCRmb3JlPiIgCTogIiBuby10
by1hZGRyIjsJIyBlbnZlbG9wZSB0byBhZGRyZXNzCgkkb3V0cHV0IC49ICgkZGF0ZSk/IAkJ
IjsgJGRhdGUiIAk6ICIgbm8tZGF0ZSI7CQkjIHJlY2VpdmVkIGRhdGUvdGltZQoKCSNwcmlu
dCAib3V0cHV0dGluZyByZWNlaXZlZDogJG91dHB1dCIgLiAkQ1JMRjsKCXJldHVybiAkb3V0
cHV0Owp9CgpzdWIgb3BlbmRiX3JlYWQgCnsKICAgIHRpZSglZGIsICJEQl9GaWxlIiwgJGRi
ZmlsZSwgT19SRE9OTFksIDAsICREQl9IQVNIKSBvciBlcnJvcigid2FybiIsIkNhbid0IG9w
ZW4gJGRiZmlsZTogJCEiKTsKfQoKc3ViIGNsb3NlZGIgCnsKICAgIHVudGllICVkYjsKICAg
IHVuZGVmICVkYjsKfQoKc3ViIHJldGllIAp7CiAgICAmY2xvc2VkYjsKICAgICZvcGVuZGJf
cmVhZDsKfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCiMjIyMjIyMjIyMjIyMjIyMgT3V0cHV0IEhlYWRlciAjIyMjIyMjIyMjIyMjIyMjIwoj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBz
ZXRfaGVhZGVyCnsKCW15ICRoZWFkZXIgPSBzaGlmdDsKCW15ICRvdXRwdXQgPSAiIjsKCW15
ICRuYW1lID0gIiI7CgkKCSMgZXhjbHVkZSB0aGUgIm1hc2tlZCBmaWVsZHMiIGZyb20gZGlz
cGxheQoJZm9yZWFjaCAkbmFtZSAoc3BsaXQoLywvLCRtYXNrZWRfZmllbGRzKSkgeyAkc3Bl
Y19maWVsZHMgPX4gcy8oPzw9LCkkbmFtZSw/Ly87IH0KCgkjIG91dHB1dCB0aGUgZmllbGRz
IGluIHRoZSBvcmRlciBzcGVjaWZpZWQgYnkgUkZDIDI4MjIgLSBtaW51cyB0aGUgbWFza2Vk
IGZpZWxkcwoJZm9yZWFjaCAkbmFtZSAoc3BsaXQoLywvLCRzcGVjX2ZpZWxkcykpIHsgJG91
dHB1dCAuPSBzZXRfZmllbGQoJGhlYWRlciwkbmFtZSk7IGRlbGV0ZSAkaGVhZGVyLT57JG5h
bWV9OyB9CgoJIyBzZXQgYW55IHVzZXItc3BlY2lmaWVkIGZpZWxkcwoJZm9yZWFjaCAkbmFt
ZSAoc3BsaXQoLywvLCR1c2VyX2ZpZWxkcykpIHsgJG91dHB1dCAuPSBzZXRfZmllbGQoJGhl
YWRlciwkbmFtZSk7IGRlbGV0ZSAkaGVhZGVyLT57JG5hbWV9OyB9CgoJIyBzZXQgbmV3IGN1
c3RvbSB4LWhlYWRlciBmaWVsZHMKCWlmICgkb3B0aW9ucyA9fiAveC8pIHsgZm9yZWFjaCAk
bmFtZSAoc3BsaXQoLywvLCRuZXdfZmllbGRzKSkgeyAkb3V0cHV0IC49IHNldF9maWVsZCgk
aGVhZGVyLCRuYW1lKTsgZGVsZXRlICRoZWFkZXItPnskbmFtZX07IH0gfQoKCSMgdGhlbiBz
ZXQgYW55IHJlbWFpbmluZyBmaWVsZHMgKGlmIGFsbG93ZWQgdG8gc2V0IG5vbi1zdGFuZGFy
ZCBmaWVsZHMpCglpZiAoJG9wdGlvbnMgIX4gL3MvKSB7IGZvcmVhY2ggJG5hbWUgKGtleXMg
JXskaGVhZGVyfSkgeyAkb3V0cHV0IC49IHNldF9maWVsZCgkaGVhZGVyLCRuYW1lKTsgfSB9
CgoJJG91dHB1dCAuPSAkQ1JMRjsKCQoJcmV0dXJuICRvdXRwdXQ7Cn0KCnN1YiBzZXRfZmll
bGQKewoJbXkgJGhlYWRlciA9IHNoaWZ0OwoJbXkgJG5hbWUgPSBzaGlmdDsKCW15ICRvdXRw
dXQgPSAiIjsKCglpZiAoKGRlZmluZWQgJGhlYWRlci0+eyRuYW1lfSkgJiYgKHJlZigkaGVh
ZGVyLT57JG5hbWV9KSBlcSAiQVJSQVkiKSkKCXsKCQlmb3IgKG15ICR4ID0gMDsgJHggPCBz
Y2FsYXIgQHskaGVhZGVyLT57JG5hbWV9fTsgJHgrKykKCQl7CgkJCWlmICgoJG5hbWUgZXEg
InJlY2VpdmVkIikgJiYgKCRvcHRpb25zID1+IC9yLykpCgkJCXsKCQkJCWlmIChkZWZpbmVk
ICRoZWFkZXItPnskbmFtZX0tPlskeF0tPnsnc2FuZSd9ICYmICRoZWFkZXItPnskbmFtZX0t
PlskeF0tPnsnc2FuZSd9ID1+IC9cdy8pIAoJCQkJewkKCQkJCQkkb3V0cHV0IC49ICRoZWFk
ZXItPnskbmFtZX0tPlskeF0tPnsnbmFtZSd9IC4gIjogIiAuICRoZWFkZXItPnskbmFtZX0t
PlskeF0tPnsnc2FuZSd9IC4gJENSTEY7IAoJCQkJfQoJCQkJI2Vsc2Ugewkkb3V0cHV0IC49
ICRoZWFkZXItPnskbmFtZX0tPlskeF0tPnsnbmFtZSd9IC4gIjogc2FuaXR5IGNoZWNrIGZh
aWxlZCIgLiAkQ1JMRjsgfQoJCQl9CgkJCWVsc2lmICgkaGVhZGVyLT57JG5hbWV9LT5bJHhd
LT57J3ZhbHVlJ30gYW5kCgkJCSAgICAgICAkaGVhZGVyLT57JG5hbWV9LT5bJHhdLT57J3Zh
bHVlJ30gPX4gL1x3LykKCQkJeyAgCgkJCQkkb3V0cHV0IC49ICRoZWFkZXItPnskbmFtZX0t
PlskeF0tPnsnbmFtZSd9IC4gIjogIiAuICRoZWFkZXItPnskbmFtZX0tPlskeF0tPnsndmFs
dWUnfSAuICRDUkxGOyAKCQkJfQoJCX0KCX0KCWVsc2lmIChkZWZpbmVkICRoZWFkZXItPnsk
bmFtZX0pCgl7CgkJJG91dHB1dCAuPSB1Y2ZpcnN0KCRuYW1lKSAuICI6ICIgLiAkaGVhZGVy
LT57JG5hbWV9IC4gJENSTEY7IAkKCX0KCWVsc2lmICgkcmVxX2ZpZWxkcyA9fiAvKD86Xnws
KSRuYW1lKD86LHwkKS8pCgl7ICAKCQkkb3V0cHV0IC49IHVjZmlyc3QoJG5hbWUpIC4gIjog
W25vLSRuYW1lXSAiIC4gJENSTEY7IAoJfQoJCglyZXR1cm4gJG91dHB1dDsKfQoKIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMj
IyMjIyMgRXJyb3IgSGFuZGxpbmcgIyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCnN1YiBlcnJvcgp7CglteSAoJGFj
dGlvbiwkbXNnKSA9IEBfOwoKCWRpZSAkbXNnIGlmICRhY3Rpb24gZXEgImRpZSI7Cgl3YXJu
ICRtc2cgdW5sZXNzICRhY3Rpb24gZXEgImRpZSI7CgkjIGFkZCBvdGhlciBhY3Rpb25zIGlm
IHlvdSBsaWtlCn0KCnN1YiBzaWdfdHJhcAp7CglteSAkc2lnID0gc2hpZnQ7CglteSAoJGFj
dGlvbiwkbW9yZSkgPSAoIndhcm4iLCIiKTsKCglzaWc6IAoJewogICAgICAgIAkkYWN0aW9u
ID0gImRpZSIsICBsYXN0IHNpZyBpZiAkc2lnID1+IC9BTFJNLzsKCSAgICAgICAgJGFjdGlv
biA9ICJ3YXJuIiwgbGFzdCBzaWcgaWYgJHNpZyA9fiAvUElQRS87CgkgICAgICAgICRhY3Rp
b24gPSAid2FybiIsIGxhc3Qgc2lnIGlmICRzaWcgPX4gL0NITEQvOwogICAgICAgIAkkYWN0
aW9uID0gImRpZSIgLCBsYXN0IHNpZyBpZiAkc2lnID1+IC9JTlQvOwoJICAgICAgICAkYWN0
aW9uID0gImRpZSIgLCBsYXN0IHNpZyBpZiAkc2lnID1+IC9IVVAvOwogICAgICAgIAkkYWN0
aW9uID0gIndhcm4iOwoJfQoJCglteSAkd2FpdGVkcGlkID0gd2FpdDsKCSRtb3JlID0gIjsg
UmVhcGVkIHBpZCAkd2FpdGVkcGlkLCBleGl0ZWQgd2l0aCBzdGF0dXMgIiAuICgkPyA+PiA4
KSBpZiAkd2FpdGVkcGlkOwoKCSRTSUd7JHNpZ30gPSBcJnNpZ190cmFwOwoKCWVycm9yICgk
YWN0aW9uLCJUcmFwcGVkIHNpZ25hbCBTSUckc2lnJG1vcmUiKTsKfQoKIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
--------------6BFAAE5395E3EC2315D7B035
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
bogofilter-dev mailing list
[email protected]
https://www.bogofilter.org/mailman/listinfo/bogofilter-dev

--------------6BFAAE5395E3EC2315D7B035--