Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 16 Oct 2010 16:16:19 -0700
From:      Garrett Cooper <gcooper@FreeBSD.org>
To:        Garrett Cooper <gcooper@freebsd.org>
Cc:        =?ISO-8859-1?Q?Dag=2DErling_Sm=F8rgrav?= <des@des.no>, Ivan Voras <ivoras@freebsd.org>, freebsd-hackers@freebsd.org
Subject:   Re: Why is TUNABLE_INT discouraged?
Message-ID:  <AANLkTik-zV67LYAbwStXPJ5YoK2j-rDwvyEAc3H5nGD0@mail.gmail.com>
In-Reply-To: <AANLkTim1E94qWq1TF1111-sYo2dj35Y-XnPq3DT4kpoL@mail.gmail.com>
References:  <AANLkTinKaiGFhKRgqQ%2BFjm=02VfWCxULe0a68y-PkJx6@mail.gmail.com> <86fwyq8rsc.fsf@ds4.des.no> <i3kbis$73l$1@dough.gmane.org> <86d3tujh72.fsf@ds4.des.no> <AANLkTi=puD%2B-WeZ%2BFGdtZtw1v%2BNnGD_htwNa%2BEn9fcML@mail.gmail.com> <864of680wv.fsf@ds4.des.no> <AANLkTinraF50O%2Bcp_h1m6TODnoz_7R3WXfjTanh-86mn@mail.gmail.com> <AANLkTikU6fLzWL-n6fCtvaTsXWGis7ydKM1qJaV=WRJ%2B@mail.gmail.com> <8662zkurx9.fsf@ds4.des.no> <AANLkTimbkTQiNgYCYFnTXMpRe9koJGrq1%2BYoq5-fVmFD@mail.gmail.com> <8662zg586z.fsf@ds4.des.no> <AANLkTim1E94qWq1TF1111-sYo2dj35Y-XnPq3DT4kpoL@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
--001485ea873c7936730492c421bb
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

2010/10/16 Garrett Cooper <gcooper@freebsd.org>:
> 2010/8/12 Dag-Erling Sm=F8rgrav <des@des.no>:
>> Garrett Cooper <gcooper@FreeBSD.org> writes:
>>> Dag-Erling Sm=F8rgrav <des@des.no> writes:
>>> > It might be a good idea to introduce TUNABLE_POINTER and TUNABLE_SIZE=
.
>>> I would actually argue against doing that because it would only create
>>> divergence between sysctl and tunable KPIs...
>>
>> Not if we also introduce corresponding SYSCTLs. =A0Note that my idea is =
to
>> have these as aliases for the correct primitive types.
>>
>>> (BTW, when you say TUNABLE_SIZE, I assume it would be a size_t quantity=
?)
>>
>> Yes.
>>
>>> Something might need to be done to the values returned by the tunables
>>> though, because they don't respect boundaries, and can overflow right
>>> now (which exacerbates the issue with values crammed into smaller
>>> datatypes)...
>>
>> Yes. =A0How about this:
>>
>> =A0- rename getenv_quad() to getenv_signed() and getenv_unsigned()
>> =A0- add min / max arguments
>> =A0- implement getenv_quad() (and all the others) in terms of
>> =A0 getenv_number()
>>
>> e.g.
>>
>> int
>> getenv_uint(const char *name, unsigned int *data)
>> {
>> =A0 =A0 =A0 =A0unsigned long long tmp;
>> =A0 =A0 =A0 =A0int rval;
>>
>> =A0 =A0 =A0 =A0if ((rval =3D getenv_unsigned(name, &tmp, 0, UINT_MAX)) =
=3D=3D 0)
>> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0*data =3D (unsigned int)tmp;
>> =A0 =A0 =A0 =A0return (rval);
>> }
>>
>> (note that due to the min / max arguments, the complexity of handling
>> both signed and unsigned values in the same function probably exceeds
>> the complexity of having two very similar functions)
>
> Here's a draft of this work des@ challenged me to a while back. It
> works well as demonstrated with my tests. The only catch with
> detecting bounds is that if it's the minimum in the case of signed or
> maximum representable value in the case of unsigned, then strtoq, etc
> will clamp the value to the maximum representable value.
>
> Other than that it works well, and now tunables represented by
> unsigned values should work better.
>
> Please let me know what you all think.
>
> Thanks!
> -Garrett
>
> PS I added uquad_t for consistency in the APIs, even though quad_t was
> deprecated, but I didn't bump __FreeBSD_version__ -- wasn't sure if I
> should have done that).

Let's try with the patch attached...

--001485ea873c7936730492c421bb
Content-Type: application/octet-stream; name="tunables-enhancement.diff"
Content-Disposition: attachment; filename="tunables-enhancement.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_gfd3u0a11

SW5kZXg6IHN5cy9rZXJuL2tlcm5fZW52aXJvbm1lbnQuYwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMva2Vy
bi9rZXJuX2Vudmlyb25tZW50LmMJKHJldmlzaW9uIDIxMzkzNykKKysrIHN5cy9rZXJuL2tlcm5f
ZW52aXJvbm1lbnQuYwkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUg
PHN5cy9zeXNlbnQuaD4KICNpbmNsdWRlIDxzeXMvc3lzcHJvdG8uaD4KICNpbmNsdWRlIDxzeXMv
bGlia2Vybi5oPgorI2luY2x1ZGUgPHN5cy9saW1pdHMuaD4KICNpbmNsdWRlIDxzeXMva2Vudi5o
PgogCiAjaW5jbHVkZSA8c2VjdXJpdHkvbWFjL21hY19mcmFtZXdvcmsuaD4KQEAgLTQ0MiwzMiAr
NDQzLDExNSBAQAogfQogCiAvKgotICogUmV0dXJuIGEgc3RyaW5nIHZhbHVlIGZyb20gYW4gZW52
aXJvbm1lbnQgdmFyaWFibGUuCisgKiBSZXR1cm4gdGhlIG11bHRpcGxpZXIgZm9yIGEgdXNlciBz
cGVjaWZpZWQgc3VmZml4IGZyb20gYSBnZXRlbnYgY2FsbC4KICAqLwordWludG1heF90CitnZXRl
bnZfcGFyc2Vfc3VmZml4KGNvbnN0IGNoYXIgc3VmZml4KQoreworCXVpbnRtYXhfdCBtdWx0aXBs
aWVyID0gMTsKKworCXN3aXRjaCAoc3VmZml4KSB7CisJY2FzZSAndCc6IGNhc2UgJ1QnOgorCQlt
dWx0aXBsaWVyICo9IDEwMjQ7CisJY2FzZSAnZyc6IGNhc2UgJ0cnOgorCQltdWx0aXBsaWVyICo9
IDEwMjQ7CisJY2FzZSAnbSc6IGNhc2UgJ00nOgorCQltdWx0aXBsaWVyICo9IDEwMjQ7CisJY2Fz
ZSAnayc6IGNhc2UgJ0snOgorCQltdWx0aXBsaWVyICo9IDEwMjQ7CisJY2FzZSAnXDAnOgorCQli
cmVhazsKKwlkZWZhdWx0OgorCQltdWx0aXBsaWVyID0gMDsKKwl9CisKKwlyZXR1cm4gKG11bHRp
cGxpZXIpOworfQorCisvKgorICogUmV0dXJuIGEgc2lnbmVkIHF1YW50aXR5IGZyb20gYW4gZW52
aXJvbm1lbnQgdmFyaWFibGUuCisgKi8KIGludAotZ2V0ZW52X3N0cmluZyhjb25zdCBjaGFyICpu
YW1lLCBjaGFyICpkYXRhLCBpbnQgc2l6ZSkKK2dldGVudl9zaWduZWQoY29uc3QgY2hhciAqbmFt
ZSwgaW50bWF4X3QgKmRhdGEsIGNvbnN0IGludG1heF90IG1pbiwKKyAgICBjb25zdCBpbnRtYXhf
dCBtYXgpCiB7Ci0JY2hhciAqdG1wOworCXVpbnRtYXhfdAltdWx0aXBsaWVyOworCWludG1heF90
CWl2OworCWludAkJcmV0X2NvZGU7CisJY2hhcgkJKnZhbHVlOworCWNoYXIJCSp2dHA7CiAKLQl0
bXAgPSBnZXRlbnYobmFtZSk7Ci0JaWYgKHRtcCAhPSBOVUxMKSB7Ci0JCXN0cmxjcHkoZGF0YSwg
dG1wLCBzaXplKTsKLQkJZnJlZWVudih0bXApOwotCQlyZXR1cm4gKDEpOwotCX0gZWxzZQotCQly
ZXR1cm4gKDApOworCXJldF9jb2RlID0gMDsKKworCXZhbHVlID0gZ2V0ZW52KG5hbWUpOworCWlm
ICh2YWx1ZSA9PSBOVUxMKQorCQlyZXR1cm4gKHJldF9jb2RlKTsKKwlpdiA9IHN0cnRvcSh2YWx1
ZSwgJnZ0cCwgMCk7CisJaWYgKHZ0cCA9PSB2YWx1ZSB8fCAodnRwWzBdICE9ICdcMCcgJiYgdnRw
WzFdICE9ICdcMCcpIHx8CisJICAgIChtdWx0aXBsaWVyID0gZ2V0ZW52X3BhcnNlX3N1ZmZpeCh2
dHBbMF0pKSA9PSAwKSB7CisJCS8qIAorCQkgKiBDYXRjaCBlcnJvcnMgaW4gcGFyc2luZyB0aGUg
bnVtYmVyLCBiYWQgaW5wdXQsIG9yIHRoZQorCQkgKiBzdWZmaXggaWYgb25lIHdhcyBzcGVjaWZp
ZWQuCisJCSAqLworCQk7CisJfSBlbHNlIHsKKwkJaXYgKj0gbXVsdGlwbGllcjsKKwkJaWYgKG1p
biA8PSBpdiAmJiBpdiA8PSBtYXgpIHsKKwkJCSpkYXRhID0gaXY7CisJCQlyZXRfY29kZSA9IDE7
CisJCX0KKwl9CisJZnJlZWVudih2YWx1ZSk7CisJcmV0dXJuIChyZXRfY29kZSk7CiB9CiAKIC8q
CisgKiBSZXR1cm4gYW4gdW5zaWduZWQgcXVhbnRpdHkgZnJvbSBhbiBlbnZpcm9ubWVudCB2YXJp
YWJsZS4KKyAqLworaW50CitnZXRlbnZfdW5zaWduZWQoY29uc3QgY2hhciAqbmFtZSwgdWludG1h
eF90ICpkYXRhLCBjb25zdCB1aW50bWF4X3QgbWluLAorICAgIGNvbnN0IHVpbnRtYXhfdCBtYXgp
Cit7CisJdWludG1heF90CW11bHRpcGxpZXI7CisJdWludG1heF90CXVpdjsKKwlpbnQJCXJldF9j
b2RlOworCWNoYXIJCSp2YWx1ZTsKKwljaGFyCQkqdnRwOworCisJcmV0X2NvZGUgPSAwOworCisJ
dmFsdWUgPSBnZXRlbnYobmFtZSk7CisJaWYgKHZhbHVlID09IE5VTEwpCisJCXJldHVybiAocmV0
X2NvZGUpOworCXVpdiA9IHN0cnRvdXEodmFsdWUsICZ2dHAsIDApOworCWlmICh2dHAgPT0gdmFs
dWUgfHwgKHZ0cFswXSAhPSAnXDAnICYmIHZ0cFsxXSAhPSAnXDAnKSB8fAorCSAgICAobXVsdGlw
bGllciA9IGdldGVudl9wYXJzZV9zdWZmaXgodnRwWzBdKSkgPT0gMCkgeworCQkvKiAKKwkJICog
Q2F0Y2ggZXJyb3JzIGluIHBhcnNpbmcgdGhlIG51bWJlciwgYmFkIGlucHV0LCBvciB0aGUKKwkJ
ICogc3VmZml4IGlmIG9uZSB3YXMgc3BlY2lmaWVkLgorCQkgKi8KKwkJOworCX0gZWxzZSB7CisJ
CXVpdiAqPSBtdWx0aXBsaWVyOworCQlpZiAobWluIDw9IHVpdiAmJiB1aXYgPD0gbWF4KSB7CisJ
CQkqZGF0YSA9IHVpdjsKKwkJCXJldF9jb2RlID0gMTsKKwkJfQorCX0KKwlmcmVlZW52KHZhbHVl
KTsKKwlyZXR1cm4gKHJldF9jb2RlKTsKK30KKworLyoKICAqIFJldHVybiBhbiBpbnRlZ2VyIHZh
bHVlIGZyb20gYW4gZW52aXJvbm1lbnQgdmFyaWFibGUuCiAgKi8KIGludAogZ2V0ZW52X2ludChj
b25zdCBjaGFyICpuYW1lLCBpbnQgKmRhdGEpCiB7Ci0JcXVhZF90IHRtcDsKKwlpbnRtYXhfdCB0
bXA7CiAJaW50IHJ2YWw7CiAKLQlydmFsID0gZ2V0ZW52X3F1YWQobmFtZSwgJnRtcCk7CisJcnZh
bCA9IGdldGVudl9zaWduZWQobmFtZSwgJnRtcCwgSU5UX01JTiwgSU5UX01BWCk7CiAJaWYgKHJ2
YWwpCiAJCSpkYXRhID0gKGludCkgdG1wOwogCXJldHVybiAocnZhbCk7CkBAIC00NzksMTAgKzU2
MywxMCBAQAogaW50CiBnZXRlbnZfdWludChjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbnQg
KmRhdGEpCiB7Ci0JcXVhZF90IHRtcDsKKwlpbnRtYXhfdCB0bXA7CiAJaW50IHJ2YWw7CiAKLQly
dmFsID0gZ2V0ZW52X3F1YWQobmFtZSwgJnRtcCk7CisJcnZhbCA9IGdldGVudl91bnNpZ25lZChu
YW1lLCAmdG1wLCAwLCBVSU5UX01BWCk7CiAJaWYgKHJ2YWwpCiAJCSpkYXRhID0gKHVuc2lnbmVk
IGludCkgdG1wOwogCXJldHVybiAocnZhbCk7CkBAIC00OTQsMTAgKzU3OCwxMCBAQAogaW50CiBn
ZXRlbnZfbG9uZyhjb25zdCBjaGFyICpuYW1lLCBsb25nICpkYXRhKQogewotCXF1YWRfdCB0bXA7
CisJaW50bWF4X3QgdG1wOwogCWludCBydmFsOwogCi0JcnZhbCA9IGdldGVudl9xdWFkKG5hbWUs
ICZ0bXApOworCXJ2YWwgPSBnZXRlbnZfc2lnbmVkKG5hbWUsICZ0bXAsIExPTkdfTUlOLCBMT05H
X01BWCk7CiAJaWYgKHJ2YWwpCiAJCSpkYXRhID0gKGxvbmcpIHRtcDsKIAlyZXR1cm4gKHJ2YWwp
OwpAQCAtNTA5LDUxICs1OTMsOTAgQEAKIGludAogZ2V0ZW52X3Vsb25nKGNvbnN0IGNoYXIgKm5h
bWUsIHVuc2lnbmVkIGxvbmcgKmRhdGEpCiB7Ci0JcXVhZF90IHRtcDsKKwlpbnRtYXhfdCB0bXA7
CiAJaW50IHJ2YWw7CiAKLQlydmFsID0gZ2V0ZW52X3F1YWQobmFtZSwgJnRtcCk7CisJcnZhbCA9
IGdldGVudl91bnNpZ25lZChuYW1lLCAmdG1wLCAwLCBVTE9OR19NQVgpOwogCWlmIChydmFsKQog
CQkqZGF0YSA9ICh1bnNpZ25lZCBsb25nKSB0bXA7CiAJcmV0dXJuIChydmFsKTsKIH0KIAogLyoK
KyAqIFJldHVybiBhIHBvaW50ZXIgZnJvbSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAqLwor
aW50CitnZXRlbnZfcG9pbnRlcihjb25zdCBjaGFyICpuYW1lLCB1aW50cHRyX3QgKmRhdGEpCit7
CisJaW50bWF4X3QgdG1wOworCWludCBydmFsOworCisJcnZhbCA9IGdldGVudl91bnNpZ25lZChu
YW1lLCAmdG1wLCAwLCBVSU5UUFRSX01BWCk7CisJaWYgKHJ2YWwpCisJCSpkYXRhID0gKHVpbnRw
dHJfdCkgdG1wOworCXJldHVybiAocnZhbCk7Cit9CisKKy8qCiAgKiBSZXR1cm4gYSBxdWFkX3Qg
dmFsdWUgZnJvbSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KICAqLwogaW50CiBnZXRlbnZfcXVh
ZChjb25zdCBjaGFyICpuYW1lLCBxdWFkX3QgKmRhdGEpCiB7Ci0JY2hhcgkqdmFsdWU7Ci0JY2hh
cgkqdnRwOwotCXF1YWRfdAlpdjsKKwlpbnRtYXhfdCB0bXA7CisJaW50IHJ2YWw7CiAKLQl2YWx1
ZSA9IGdldGVudihuYW1lKTsKLQlpZiAodmFsdWUgPT0gTlVMTCkKKwlydmFsID0gZ2V0ZW52X3Np
Z25lZChuYW1lLCAmdG1wLCBRVUFEX01JTiwgUVVBRF9NQVgpOworCWlmIChydmFsKQorCQkqZGF0
YSA9IChxdWFkX3QpIHRtcDsKKwlyZXR1cm4gKHJ2YWwpOworfQorCisvKgorICogUmV0dXJuIGEg
dXF1YWRfdCB2YWx1ZSBmcm9tIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgorICovCitpbnQKK2dl
dGVudl91cXVhZChjb25zdCBjaGFyICpuYW1lLCB1cXVhZF90ICpkYXRhKQoreworCWludG1heF90
IHRtcDsKKwlpbnQgcnZhbDsKKworCXJ2YWwgPSBnZXRlbnZfdW5zaWduZWQobmFtZSwgJnRtcCwg
MCwgVVFVQURfTUFYKTsKKwlpZiAocnZhbCkKKwkJKmRhdGEgPSAodXF1YWRfdCkgdG1wOworCXJl
dHVybiAocnZhbCk7Cit9CisKKy8qCisgKiBSZXR1cm4gYSBzaXplX3QgdmFsdWUgZnJvbSBhbiBl
bnZpcm9ubWVudCB2YXJpYWJsZS4KKyAqLworaW50CitnZXRlbnZfc2l6ZShjb25zdCBjaGFyICpu
YW1lLCBzaXplX3QgKmRhdGEpCit7CisJaW50bWF4X3QgdG1wOworCWludCBydmFsOworCisJcnZh
bCA9IGdldGVudl91bnNpZ25lZChuYW1lLCAmdG1wLCAwLCBTSVpFX01BWCk7CisJaWYgKHJ2YWwp
CisJCSpkYXRhID0gKHNpemVfdCkgdG1wOworCXJldHVybiAocnZhbCk7Cit9CisKKy8qCisgKiBS
ZXR1cm4gYSBzdHJpbmcgdmFsdWUgZnJvbSBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAqLwor
aW50CitnZXRlbnZfc3RyaW5nKGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIgKmRhdGEsIHNpemVfdCBz
aXplKQoreworCWNoYXIgKnRtcDsKKworCXRtcCA9IGdldGVudihuYW1lKTsKKwlpZiAodG1wICE9
IE5VTEwpIHsKKwkJc3RybGNweShkYXRhLCB0bXAsIHNpemUpOworCQlmcmVlZW52KHRtcCk7CisJ
CXJldHVybiAoMSk7CisJfSBlbHNlCiAJCXJldHVybiAoMCk7Ci0JaXYgPSBzdHJ0b3EodmFsdWUs
ICZ2dHAsIDApOwotCWlmICh2dHAgPT0gdmFsdWUgfHwgKHZ0cFswXSAhPSAnXDAnICYmIHZ0cFsx
XSAhPSAnXDAnKSkgewotCQlmcmVlZW52KHZhbHVlKTsKLQkJcmV0dXJuICgwKTsKLQl9Ci0Jc3dp
dGNoICh2dHBbMF0pIHsKLQljYXNlICd0JzogY2FzZSAnVCc6Ci0JCWl2ICo9IDEwMjQ7Ci0JY2Fz
ZSAnZyc6IGNhc2UgJ0cnOgotCQlpdiAqPSAxMDI0OwotCWNhc2UgJ20nOiBjYXNlICdNJzoKLQkJ
aXYgKj0gMTAyNDsKLQljYXNlICdrJzogY2FzZSAnSyc6Ci0JCWl2ICo9IDEwMjQ7Ci0JY2FzZSAn
XDAnOgotCQlicmVhazsKLQlkZWZhdWx0OgotCQlmcmVlZW52KHZhbHVlKTsKLQkJcmV0dXJuICgw
KTsKLQl9Ci0JKmRhdGEgPSBpdjsKLQlmcmVlZW52KHZhbHVlKTsKLQlyZXR1cm4gKDEpOwogfQog
CiAvKgpAQCAtNTgzLDYgKzcwNiwxNCBAQAogfQogCiB2b2lkCit0dW5hYmxlX3VpbnRfaW5pdCh2
b2lkICpkYXRhKQoreworCXN0cnVjdCB0dW5hYmxlX3VpbnQgKmQgPSAoc3RydWN0IHR1bmFibGVf
dWludCAqKWRhdGE7CisKKwlUVU5BQkxFX1VJTlRfRkVUQ0goZC0+cGF0aCwgZC0+dmFyKTsKK30K
Kwordm9pZAogdHVuYWJsZV9sb25nX2luaXQodm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgdHVuYWJs
ZV9sb25nICpkID0gKHN0cnVjdCB0dW5hYmxlX2xvbmcgKilkYXRhOwpAQCAtNTk5LDYgKzczMCwx
NCBAQAogfQogCiB2b2lkCit0dW5hYmxlX3BvaW50ZXJfaW5pdCh2b2lkICpkYXRhKQoreworCXN0
cnVjdCB0dW5hYmxlX3BvaW50ZXIgKmQgPSAoc3RydWN0IHR1bmFibGVfcG9pbnRlciAqKWRhdGE7
CisKKwlUVU5BQkxFX1BPSU5URVJfRkVUQ0goZC0+cGF0aCwgZC0+dmFyKTsKK30KKwordm9pZAog
dHVuYWJsZV9xdWFkX2luaXQodm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgdHVuYWJsZV9xdWFkICpk
ID0gKHN0cnVjdCB0dW5hYmxlX3F1YWQgKilkYXRhOwpAQCAtNjA3LDYgKzc0NiwyMiBAQAogfQog
CiB2b2lkCit0dW5hYmxlX3VxdWFkX2luaXQodm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgdHVuYWJs
ZV91cXVhZCAqZCA9IChzdHJ1Y3QgdHVuYWJsZV91cXVhZCAqKWRhdGE7CisKKwlUVU5BQkxFX1VR
VUFEX0ZFVENIKGQtPnBhdGgsIGQtPnZhcik7Cit9CisKK3ZvaWQKK3R1bmFibGVfc2l6ZV9pbml0
KHZvaWQgKmRhdGEpCit7CisJc3RydWN0IHR1bmFibGVfc2l6ZSAqZCA9IChzdHJ1Y3QgdHVuYWJs
ZV9zaXplICopZGF0YTsKKworCVRVTkFCTEVfU0laRV9GRVRDSChkLT5wYXRoLCBkLT52YXIpOwor
fQorCit2b2lkCiB0dW5hYmxlX3N0cl9pbml0KHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IHR1bmFi
bGVfc3RyICpkID0gKHN0cnVjdCB0dW5hYmxlX3N0ciAqKWRhdGE7CkluZGV4OiBzeXMvc3lzL2tl
cm5lbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9zeXMva2VybmVsLmgJKHJldmlzaW9uIDIxMzkzNykK
KysrIHN5cy9zeXMva2VybmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw3ICsyNzUsOSBAQAog
CiAvKgogICogaW50Ci0gKiBwbGVhc2UgYXZvaWQgdXNpbmcgZm9yIG5ldyB0dW5hYmxlcyEKKyAq
CisgKiBQbGVhc2UgZG8gbm90IHVzZSBmb3IgYWRkcmVzc2VzIG9yIHBvaW50ZXJzICh1c2UgdGhl
IHBvaW50ZXIgdHVuYWJsZQorICogaW5zdGVhZCksIG9yIHNpemVzICh1c2UgdGhlIHNpemUgdHVu
YWJsZSBpbnN0ZWFkKS4KICAqLwogZXh0ZXJuIHZvaWQgdHVuYWJsZV9pbnRfaW5pdCh2b2lkICop
Owogc3RydWN0IHR1bmFibGVfaW50IHsKQEAgLTI5NCw2ICsyOTYsMjggQEAKICNkZWZpbmUJVFVO
QUJMRV9JTlRfRkVUQ0gocGF0aCwgdmFyKQlnZXRlbnZfaW50KChwYXRoKSwgKHZhcikpCiAKIC8q
CisgKiB1bnNpZ25lZCBpbnQKKyAqCisgKiBQbGVhc2UgZG8gbm90IHVzZSBmb3IgYWRkcmVzc2Vz
IG9yIHBvaW50ZXJzICh1c2UgdGhlIHBvaW50ZXIgdHVuYWJsZQorICogaW5zdGVhZCksIG9yIHNp
emVzICh1c2UgdGhlIHNpemUgdHVuYWJsZSBpbnN0ZWFkKS4KKyAqLworZXh0ZXJuIHZvaWQgdHVu
YWJsZV91aW50X2luaXQodm9pZCAqKTsKK3N0cnVjdCB0dW5hYmxlX3VpbnQgeworCWNvbnN0IGNo
YXIgKnBhdGg7CisJdW5zaWduZWQgaW50ICp2YXI7Cit9OworI2RlZmluZQlUVU5BQkxFX1VJTlQo
cGF0aCwgdmFyKQkJCQkJXAorCXN0YXRpYyBzdHJ1Y3QgdHVuYWJsZV91aW50IF9fQ09OQ0FUKF9f
dHVuYWJsZV91aW50XywgX19MSU5FX18pID0geyBcCisJCShwYXRoKSwJCQkJCQlcCisJCSh2YXIp
LAkJCQkJCVwKKwl9OwkJCQkJCQlcCisJU1lTSU5JVChfX0NPTkNBVChfX1R1bmFibGVfaW5pdF8s
IF9fTElORV9fKSwJCVwKKwkgICAgU0lfU1VCX1RVTkFCTEVTLCBTSV9PUkRFUl9NSURETEUsIHR1
bmFibGVfdWludF9pbml0LCBcCisJICAgICZfX0NPTkNBVChfX3R1bmFibGVfdWludF8sIF9fTElO
RV9fKSkKKworI2RlZmluZQlUVU5BQkxFX1VJTlRfRkVUQ0gocGF0aCwgdmFyKQlnZXRlbnZfdWlu
dCgocGF0aCksICh2YXIpKQorCisvKgogICogbG9uZwogICovCiBleHRlcm4gdm9pZCB0dW5hYmxl
X2xvbmdfaW5pdCh2b2lkICopOwpAQCAtMzMyLDggKzM1NiwyOCBAQAogI2RlZmluZQlUVU5BQkxF
X1VMT05HX0ZFVENIKHBhdGgsIHZhcikJZ2V0ZW52X3Vsb25nKChwYXRoKSwgKHZhcikpCiAKIC8q
Ci0gKiBxdWFkCisgKiBwb2ludGVyCiAgKi8KK2V4dGVybiB2b2lkIHR1bmFibGVfcG9pbnRlcl9p
bml0KHZvaWQgKik7CitzdHJ1Y3QgdHVuYWJsZV9wb2ludGVyIHsKKwljb25zdCBjaGFyICpwYXRo
OworCXVpbnRwdHJfdCAqdmFyOworfTsKKyNkZWZpbmUJVFVOQUJMRV9QT0lOVEVSKHBhdGgsIHZh
cikJCQkJXAorCXN0YXRpYyBzdHJ1Y3QgdHVuYWJsZV9wb2ludGVyIF9fQ09OQ0FUKF9fdHVuYWJs
ZV9wb2ludGVyXywgX19MSU5FX18pID0geyBcCisJCShwYXRoKSwJCQkJCQlcCisJCSh2YXIpLAkJ
CQkJCVwKKwl9OwkJCQkJCQlcCisJU1lTSU5JVChfX0NPTkNBVChfX1R1bmFibGVfaW5pdF8sIF9f
TElORV9fKSwJCVwKKwkgICAgU0lfU1VCX1RVTkFCTEVTLCBTSV9PUkRFUl9NSURETEUsIHR1bmFi
bGVfcG9pbnRlcl9pbml0LCBcCisJICAgICZfX0NPTkNBVChfX3R1bmFibGVfcG9pbnRlcl8sIF9f
TElORV9fKSkKKworI2RlZmluZQlUVU5BQkxFX1BPSU5URVJfRkVUQ0gocGF0aCwgdmFyKQkJCVwK
KwlnZXRlbnZfcG9pbnRlcigocGF0aCksICh2YXIpKQorCisvKgorICogcXVhZF90CisgKi8KIGV4
dGVybiB2b2lkIHR1bmFibGVfcXVhZF9pbml0KHZvaWQgKik7CiBzdHJ1Y3QgdHVuYWJsZV9xdWFk
IHsKIAljb25zdCBjaGFyICpwYXRoOwpAQCAtMzUwLDYgKzM5NCwyOCBAQAogCiAjZGVmaW5lCVRV
TkFCTEVfUVVBRF9GRVRDSChwYXRoLCB2YXIpCWdldGVudl9xdWFkKChwYXRoKSwgKHZhcikpCiAK
Ky8qCisgKiBzaXplX3QKKyAqLworZXh0ZXJuIHZvaWQgdHVuYWJsZV9zaXplX2luaXQodm9pZCAq
KTsKK3N0cnVjdCB0dW5hYmxlX3NpemUgeworCWNvbnN0IGNoYXIgKnBhdGg7CisJc2l6ZV90ICp2
YXI7Cit9OworI2RlZmluZQlUVU5BQkxFX1NJWkUocGF0aCwgdmFyKQkJCQkJXAorCXN0YXRpYyBz
dHJ1Y3QgdHVuYWJsZV9zaXplIF9fQ09OQ0FUKF9fdHVuYWJsZV9zaXplXywgX19MSU5FX18pID0g
eyBcCisJCShwYXRoKSwJCQkJCQlcCisJCSh2YXIpLAkJCQkJCVwKKwl9OwkJCQkJCQlcCisJU1lT
SU5JVChfX0NPTkNBVChfX1R1bmFibGVfaW5pdF8sIF9fTElORV9fKSwJCVwKKwkgICAgU0lfU1VC
X1RVTkFCTEVTLCBTSV9PUkRFUl9NSURETEUsIHR1bmFibGVfc2l6ZV9pbml0LCBcCisJICAgICZf
X0NPTkNBVChfX3R1bmFibGVfc2l6ZV8sIF9fTElORV9fKSkKKworI2RlZmluZQlUVU5BQkxFX1NJ
WkVfRkVUQ0gocGF0aCwgdmFyKQlnZXRlbnZfc2l6ZSgocGF0aCksICh2YXIpKQorCisvKgorICog
c3RyaW5ncworICovCiBleHRlcm4gdm9pZCB0dW5hYmxlX3N0cl9pbml0KHZvaWQgKik7CiBzdHJ1
Y3QgdHVuYWJsZV9zdHIgewogCWNvbnN0IGNoYXIgKnBhdGg7CkBAIC0zNjksNiArNDM1LDI1IEBA
CiAjZGVmaW5lCVRVTkFCTEVfU1RSX0ZFVENIKHBhdGgsIHZhciwgc2l6ZSkJCQlcCiAJZ2V0ZW52
X3N0cmluZygocGF0aCksICh2YXIpLCAoc2l6ZSkpCiAKKy8qCisgKiB1cXVhZF90CisgKi8KK2V4
dGVybiB2b2lkIHR1bmFibGVfdXF1YWRfaW5pdCh2b2lkICopOworc3RydWN0IHR1bmFibGVfdXF1
YWQgeworCWNvbnN0IGNoYXIgKnBhdGg7CisJdXF1YWRfdCAqdmFyOworfTsKKyNkZWZpbmUJVFVO
QUJMRV9VUVVBRChwYXRoLCB2YXIpCQkJCQlcCisJc3RhdGljIHN0cnVjdCB0dW5hYmxlX3VxdWFk
IF9fQ09OQ0FUKF9fdHVuYWJsZV91cXVhZF8sIF9fTElORV9fKSA9IHsgXAorCQkocGF0aCksCQkJ
CQkJXAorCQkodmFyKSwJCQkJCQlcCisJfTsJCQkJCQkJXAorCVNZU0lOSVQoX19DT05DQVQoX19U
dW5hYmxlX2luaXRfLCBfX0xJTkVfXyksCQlcCisJICAgIFNJX1NVQl9UVU5BQkxFUywgU0lfT1JE
RVJfTUlERExFLCB0dW5hYmxlX3VxdWFkX2luaXQsIFwKKwkgICAgJl9fQ09OQ0FUKF9fdHVuYWJs
ZV91cXVhZF8sIF9fTElORV9fKSkKKworI2RlZmluZQlUVU5BQkxFX1VRVUFEX0ZFVENIKHBhdGgs
IHZhcikJZ2V0ZW52X3VxdWFkKChwYXRoKSwgKHZhcikpCisKIHN0cnVjdCBpbnRyX2NvbmZpZ19o
b29rIHsKIAlUQUlMUV9FTlRSWShpbnRyX2NvbmZpZ19ob29rKSBpY2hfbGlua3M7CiAJdm9pZAko
KmljaF9mdW5jKSh2b2lkICphcmcpOwpJbmRleDogc3lzL3N5cy9zeXN0bS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHN5cy9zeXMvc3lzdG0uaAkocmV2aXNpb24gMjEzOTM3KQorKysgc3lzL3N5cy9zeXN0bS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsMTIgKzI2MCwyMCBAQAogCiBjaGFyCSpnZXRlbnYoY29u
c3QgY2hhciAqbmFtZSk7CiB2b2lkCWZyZWVlbnYoY2hhciAqZW52KTsKK3VpbnRtYXhfdCBnZXRl
bnZfcGFyc2Vfc3VmZml4KGNvbnN0IGNoYXIgc3VmZml4KTsKK2ludAlnZXRlbnZfc2lnbmVkKGNv
bnN0IGNoYXIgKm5hbWUsIGludG1heF90ICpkYXRhLCBjb25zdCBpbnRtYXhfdCBtaW4sCisJICAg
IGNvbnN0IGludG1heF90IG1heCk7CitpbnQJZ2V0ZW52X3Vuc2lnbmVkKGNvbnN0IGNoYXIgKm5h
bWUsIHVpbnRtYXhfdCAqZGF0YSwKKwkgICAgY29uc3QgdWludG1heF90IG1pbiwgY29uc3QgdWlu
dG1heF90IG1heCk7CiBpbnQJZ2V0ZW52X2ludChjb25zdCBjaGFyICpuYW1lLCBpbnQgKmRhdGEp
OwogaW50CWdldGVudl91aW50KGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGludCAqZGF0YSk7
CiBpbnQJZ2V0ZW52X2xvbmcoY29uc3QgY2hhciAqbmFtZSwgbG9uZyAqZGF0YSk7CiBpbnQJZ2V0
ZW52X3Vsb25nKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGxvbmcgKmRhdGEpOwotaW50CWdl
dGVudl9zdHJpbmcoY29uc3QgY2hhciAqbmFtZSwgY2hhciAqZGF0YSwgaW50IHNpemUpOworaW50
CWdldGVudl9wb2ludGVyKGNvbnN0IGNoYXIgKm5hbWUsIHVpbnRwdHJfdCAqZGF0YSk7CiBpbnQJ
Z2V0ZW52X3F1YWQoY29uc3QgY2hhciAqbmFtZSwgcXVhZF90ICpkYXRhKTsKK2ludAlnZXRlbnZf
dXF1YWQoY29uc3QgY2hhciAqbmFtZSwgdXF1YWRfdCAqZGF0YSk7CitpbnQJZ2V0ZW52X3NpemUo
Y29uc3QgY2hhciAqbmFtZSwgc2l6ZV90ICpkYXRhKTsKK2ludAlnZXRlbnZfc3RyaW5nKGNvbnN0
IGNoYXIgKm5hbWUsIGNoYXIgKmRhdGEsIHNpemVfdCBzaXplKTsKIGludAlzZXRlbnYoY29uc3Qg
Y2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwogaW50CXVuc2V0ZW52KGNvbnN0IGNoYXIg
Km5hbWUpOwogaW50CXRlc3RlbnYoY29uc3QgY2hhciAqbmFtZSk7CkluZGV4OiBzeXMvc3lzL3N5
c3RtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gc3lzL3N5cy9zeXN0bS5oCShyZXZpc2lvbiAyMTM5MzcpCisr
KyBzeXMvc3lzL3N5c3RtLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2MCwxMiArMjYwLDIwIEBACiAK
IGNoYXIJKmdldGVudihjb25zdCBjaGFyICpuYW1lKTsKIHZvaWQJZnJlZWVudihjaGFyICplbnYp
OwordWludG1heF90IGdldGVudl9wYXJzZV9zdWZmaXgoY29uc3QgY2hhciBzdWZmaXgpOworaW50
CWdldGVudl9zaWduZWQoY29uc3QgY2hhciAqbmFtZSwgaW50bWF4X3QgKmRhdGEsIGNvbnN0IGlu
dG1heF90IG1pbiwKKwkgICAgY29uc3QgaW50bWF4X3QgbWF4KTsKK2ludAlnZXRlbnZfdW5zaWdu
ZWQoY29uc3QgY2hhciAqbmFtZSwgdWludG1heF90ICpkYXRhLAorCSAgICBjb25zdCB1aW50bWF4
X3QgbWluLCBjb25zdCB1aW50bWF4X3QgbWF4KTsKIGludAlnZXRlbnZfaW50KGNvbnN0IGNoYXIg
Km5hbWUsIGludCAqZGF0YSk7CiBpbnQJZ2V0ZW52X3VpbnQoY29uc3QgY2hhciAqbmFtZSwgdW5z
aWduZWQgaW50ICpkYXRhKTsKIGludAlnZXRlbnZfbG9uZyhjb25zdCBjaGFyICpuYW1lLCBsb25n
ICpkYXRhKTsKIGludAlnZXRlbnZfdWxvbmcoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgbG9u
ZyAqZGF0YSk7Ci1pbnQJZ2V0ZW52X3N0cmluZyhjb25zdCBjaGFyICpuYW1lLCBjaGFyICpkYXRh
LCBpbnQgc2l6ZSk7CitpbnQJZ2V0ZW52X3BvaW50ZXIoY29uc3QgY2hhciAqbmFtZSwgdWludHB0
cl90ICpkYXRhKTsKIGludAlnZXRlbnZfcXVhZChjb25zdCBjaGFyICpuYW1lLCBxdWFkX3QgKmRh
dGEpOworaW50CWdldGVudl91cXVhZChjb25zdCBjaGFyICpuYW1lLCB1cXVhZF90ICpkYXRhKTsK
K2ludAlnZXRlbnZfc2l6ZShjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgKmRhdGEpOworaW50CWdl
dGVudl9zdHJpbmcoY29uc3QgY2hhciAqbmFtZSwgY2hhciAqZGF0YSwgc2l6ZV90IHNpemUpOwog
aW50CXNldGVudihjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7CiBpbnQJdW5z
ZXRlbnYoY29uc3QgY2hhciAqbmFtZSk7CiBpbnQJdGVzdGVudihjb25zdCBjaGFyICpuYW1lKTsK
SW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvbG9uZy90ZXN0X2xvbmdfdHVuYWJsZS5z
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL2xvbmcvdGVzdF9sb25n
X3R1bmFibGUuc2gJKHJldmlzaW9uIDApCisrKyB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL2xv
bmcvdGVzdF9sb25nX3R1bmFibGUuc2gJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKyMh
L2Jpbi9zaAorIworIyBFeHBlY3RlZCB2YWx1ZXM6CisjICh1bnNldCkgICAgOiAgICAgICAgICAg
MAorIyAgICAgICAwICAgIDogICAgICAgICAgIDAKKyMgICAgICA0MiAgICA6ICAgICAgICAgIDQy
CisjIGFzZGYxMjM0ICAgOiAgICAgICAgICAgMCAocmVqZWN0KQorIyBMT05HX01JTi0xIDogIExP
TkdfTUlOCisjIExPTkdfTUlOKzEgOiAgTE9OR19NSU4rMQorIyBMT05HX01BWC0xIDogIExPTkdf
TUFYLTEKKyMgTE9OR19NQVgrMSA6ICBMT05HX01BWAorIworCitNT0ROQU1FPSIkKGJhc2VuYW1l
ICIkMCIgLnNoKSIKKwordGVzdF9tb2R1bGUoKSB7CisJa2xkbG9hZCAuLyRNT0ROQU1FLmtvCisJ
a2xkdW5sb2FkIC4vJE1PRE5BTUUua28KK30KKworY2FzZSAiJCgkKGRpcm5hbWUgIiQwIikvLi4v
dG9vbHMvZ2V0d29yZHNpemUpIiBpbgorMzIpCisJTE9OR19NSU5fTUlOVVNfMT0iLTIxNDc0ODM2
NDkiCisJTE9OR19NSU5fUExVU18xPSItMjE0NzQ4MzY0NyIKKwlMT05HX01BWF9NSU5VU18xPTIx
NDc0ODM2NDcKKwlMT05HX01BWF9QTFVTXzE9MjE0NzQ4MzY0OQorCTs7Cis2NCkKKwlMT05HX01J
Tl9NSU5VU18xPSItOTIyMzM3MjAzNjg1NDc3NTgwOSIKKwlMT05HX01JTl9QTFVTXzE9Ii05MjIz
MzcyMDM2ODU0Nzc1ODA3IgorCUxPTkdfTUFYX01JTlVTXzE9OTIyMzM3MjAzNjg1NDc3NTgwNgor
CUxPTkdfTUFYX1BMVVNfMT05MjIzMzcyMDM2ODU0Nzc1ODA4CisJOzsKK2VzYWMKK2tlbnYgLXUg
JE1PRE5BTUUudHVuYWJsZSAyPi9kZXYvbnVsbAordGVzdF9tb2R1bGUKK2ZvciBpIGluIDAgNDIg
YXNkZjEyMzQgJExPTkdfTUlOX01JTlVTXzEgJExPTkdfTUlOX1BMVVNfMSAkTE9OR19NQVhfTUlO
VVNfMSAkTE9OR19NQVhfUExVU18xIDsgZG8KKwlrZW52ICRNT0ROQU1FLnR1bmFibGU9IiRpIgor
CXRlc3RfbW9kdWxlCitkb25lCkluZGV4OiB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL2xvbmcv
dGVzdF9sb25nX3R1bmFibGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1bmFi
bGVzL2xvbmcvdGVzdF9sb25nX3R1bmFibGUuYwkocmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jl
c3Npb24vdHVuYWJsZXMvbG9uZy90ZXN0X2xvbmdfdHVuYWJsZS5jCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMxIEBACisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVz
Lmg+CisjaW5jbHVkZSA8c3lzL3Byb2MuaD4KKyNpbmNsdWRlIDxzeXMvbW9kdWxlLmg+CisjaW5j
bHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgorCisjZGVmaW5lIE1P
RFVMRV9OQU1FCSJ0ZXN0X2xvbmdfdHVuYWJsZSIKKworc3RhdGljIGxvbmcgdHVuYWJsZSA9IDA7
CisKK1RVTkFCTEVfTE9ORygidGVzdF9sb25nX3R1bmFibGUudHVuYWJsZSIsICZ0dW5hYmxlKTsK
Kworc3RhdGljIGludAorbG9hZCAobW9kdWxlX3QgbSwgaW50IHdoYXQsIHZvaWQgKmFyZykKK3sK
Kwlzd2l0Y2ggKHdoYXQpIHsKKwljYXNlIE1PRF9MT0FEOgorCQlwcmludGYoIiVzOiAlbGRcbiIs
IE1PRFVMRV9OQU1FLCB0dW5hYmxlKTsKKwkJYnJlYWs7CisJfQorCXJldHVybiAoMCk7Cit9CisK
K3N0YXRpYyBtb2R1bGVkYXRhX3QgdGVzdF9sb25nX3R1bmFibGVfbW9kID0geworCU1PRFVMRV9O
QU1FLAorCWxvYWQsCit9OworREVDTEFSRV9NT0RVTEUodGVzdF9sb25nX3R1bmFibGUsIHRlc3Rf
bG9uZ190dW5hYmxlX21vZCwgU0lfU1VCX0tMRCwKKyAgICBTSV9PUkRFUl9BTlkpOworTU9EVUxF
X1ZFUlNJT04odGVzdF9sb25nX3R1bmFibGUsIDEpOwpJbmRleDogdG9vbHMvcmVncmVzc2lvbi90
dW5hYmxlcy9sb25nL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRvb2xzL3JlZ3Jlc3Npb24vdHVu
YWJsZXMvbG9uZy9NYWtlZmlsZQkocmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVu
YWJsZXMvbG9uZy9NYWtlZmlsZQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitLTU9EPQl0
ZXN0X2xvbmdfdHVuYWJsZQorU1JDUz0JdGVzdF9sb25nX3R1bmFibGUuYworCisuaW5jbHVkZSA8
YnNkLmttb2QubWs+CkluZGV4OiB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3VpbnQvdGVzdF91
aW50X3R1bmFibGUuc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy91
aW50L3Rlc3RfdWludF90dW5hYmxlLnNoCShyZXZpc2lvbiAwKQorKysgdG9vbHMvcmVncmVzc2lv
bi90dW5hYmxlcy91aW50L3Rlc3RfdWludF90dW5hYmxlLnNoCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI5IEBACisjIS9iaW4vc2gKKyMKKyMgRXhwZWN0ZWQgdmFsdWVzOgorIyAodW5zZXQpICAg
OiAgICAgICAgICAwCisjICAgICAgLTEgICA6ICAgICAgICAgIDAgKHJlamVjdCkgCisjICAgICAg
IDAgICA6ICAgICAgICAgIDAKKyMgICAgICA0MiAgIDogICAgICAgICA0MgorIyBhc2RmMTIzNCAg
OiAgICAgICAgICAwIChyZWplY3QpCisjIElOVF9NQVgrMSA6ICBJTlRfTUFYKzEKKyMgVUlOVF9N
QVgtMTogVUlOVF9NQVgtMQorIyBVSU5UX01BWCsxOiAgICAgICAgICAwIChyZWplY3QpCisjCisK
K01PRE5BTUU9IiQoYmFzZW5hbWUgIiQwIiAuc2gpIgorCit0ZXN0X21vZHVsZSgpIHsKKwlrbGRs
b2FkIC4vJE1PRE5BTUUua28KKwlrbGR1bmxvYWQgLi8kTU9ETkFNRS5rbworfQorCitJTlRfTUFY
X1BMVVNfT05FPTIxNDc0ODM2NDgKK1VJTlRfTUFYX01JTlVTX09ORT00Mjk0OTY3Mjk0CitVSU5U
X01BWF9QTFVTX09ORT00Mjk0OTY3Mjk2CitrZW52IC11ICRNT0ROQU1FLnR1bmFibGUgMj4vZGV2
L251bGwKK3Rlc3RfbW9kdWxlCitmb3IgaSBpbiAtMSAwIDQyIGFzZGYxMjM0ICRJTlRfTUFYX1BM
VVNfT05FICRVSU5UX01BWF9NSU5VU19PTkUgJFVJTlRfTUFYX1BMVVNfT05FOyBkbworCWtlbnYg
JE1PRE5BTUUudHVuYWJsZT0iJGkiCisJdGVzdF9tb2R1bGUKK2RvbmUKSW5kZXg6IHRvb2xzL3Jl
Z3Jlc3Npb24vdHVuYWJsZXMvdWludC90ZXN0X3VpbnRfdHVuYWJsZS5jCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdWludC90ZXN0X3VpbnRfdHVuYWJsZS5jCShyZXZp
c2lvbiAwKQorKysgdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy91aW50L3Rlc3RfdWludF90dW5h
YmxlLmMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEgQEAKKyNpbmNsdWRlIDxzeXMvcGFyYW0u
aD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvcHJvYy5oPgorI2luY2x1
ZGUgPHN5cy9tb2R1bGUuaD4KKyNpbmNsdWRlIDxzeXMva2VybmVsLmg+CisjaW5jbHVkZSA8c3lz
L3N5c3RtLmg+CisKKyNkZWZpbmUgTU9EVUxFX05BTUUJInRlc3RfdWludF90dW5hYmxlIgorCitz
dGF0aWMgdW5zaWduZWQgaW50IHR1bmFibGUgPSAwOworCitUVU5BQkxFX1VJTlQoInRlc3RfdWlu
dF90dW5hYmxlLnR1bmFibGUiLCAmdHVuYWJsZSk7CisKK3N0YXRpYyBpbnQKK2xvYWQgKG1vZHVs
ZV90IG0sIGludCB3aGF0LCB2b2lkICphcmcpCit7CisJc3dpdGNoICh3aGF0KSB7CisJY2FzZSBN
T0RfTE9BRDoKKwkJcHJpbnRmKCIlczogJXVcbiIsIE1PRFVMRV9OQU1FLCB0dW5hYmxlKTsKKwkJ
YnJlYWs7CisJfQorCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBtb2R1bGVkYXRhX3QgdGVzdF91
aW50X3R1bmFibGVfbW9kID0geworCU1PRFVMRV9OQU1FLAorCWxvYWQsCit9OworREVDTEFSRV9N
T0RVTEUodGVzdF91aW50X3R1bmFibGUsIHRlc3RfdWludF90dW5hYmxlX21vZCwgU0lfU1VCX0tM
RCwKKyAgICBTSV9PUkRFUl9BTlkpOworTU9EVUxFX1ZFUlNJT04odGVzdF91aW50X3R1bmFibGUs
IDEpOwpJbmRleDogdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy91aW50L01ha2VmaWxlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdWludC9NYWtlZmlsZQkocmV2aXNp
b24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdWludC9NYWtlZmlsZQkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0IEBACitLTU9EPQl0ZXN0X3VpbnRfdHVuYWJsZQorU1JDUz0JdGVz
dF91aW50X3R1bmFibGUuYworCisuaW5jbHVkZSA8YnNkLmttb2QubWs+CkluZGV4OiB0b29scy9y
ZWdyZXNzaW9uL3R1bmFibGVzL3VxdWFkL3Rlc3RfdXF1YWRfdHVuYWJsZS5zaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3VxdWFkL3Rlc3RfdXF1YWRfdHVuYWJsZS5z
aAkocmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdXF1YWQvdGVzdF91
cXVhZF90dW5hYmxlLnNoCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisjIS9iaW4vc2gK
KyMKKyMgRXhwZWN0ZWQgdmFsdWVzOgorIyAodW5zZXQpICAgIDogICAgICAgICAgIDAKKyMgICAg
ICAtMSAgICA6ICAgVUxPTkdfTUFYCisjICAgICAgIDAgICAgOiAgICAgICAgICAgMAorIyAgICAg
IDQyICAgIDogICAgICAgICAgNDIKKyMgYXNkZjEyMzQgICA6ICAgICAgICAgICAwIChyZWplY3Qp
CisjIExPTkdfTUFYKzEgOiAgTE9OR19NQVgrMQorIyBVTE9OR19NQVgtMTogVUxPTkdfTUFYLTEK
KyMgVUxPTkdfTUFYKzE6ICAgVUxPTkdfTUFYCisjCisKK01PRE5BTUU9IiQoYmFzZW5hbWUgIiQw
IiAuc2gpIgorCit0ZXN0X21vZHVsZSgpIHsKKwlrbGRsb2FkIC4vJE1PRE5BTUUua28KKwlrbGR1
bmxvYWQgLi8kTU9ETkFNRS5rbworfQorCitjYXNlICIkKCQoZGlybmFtZSAiJDAiKS8uLi90b29s
cy9nZXR3b3Jkc2l6ZSkiIGluCiszMikKKwlMT05HX01BWF9QTFVTXzE9MjE0NzQ4MzY0OQorCVVM
T05HX01BWF9NSU5VU18xPTQyOTQ5NjcyOTUKKwlVTE9OR19NQVhfUExVU18xPTQyOTQ5NjcyOTcK
Kwk7OworNjQpCisJTE9OR19NQVhfUExVU18xPTkyMjMzNzIwMzY4NTQ3NzU4MDgKKwlVTE9OR19N
QVhfTUlOVVNfMT0xODQ0Njc0NDA3MzcwOTU1MTYxNAorCVVMT05HX01BWF9QTFVTXzE9MTg0NDY3
NDQwNzM3MDk1NTE2MTYKKwk7OworZXNhYwora2VudiAtdSAkTU9ETkFNRS50dW5hYmxlIDI+L2Rl
di9udWxsCit0ZXN0X21vZHVsZQorZm9yIGkgaW4gLTEgMCA0MiBhc2RmMTIzNCAkTE9OR19NQVhf
UExVU18xICRVTE9OR19NQVhfTUlOVVNfMSAkVUxPTkdfTUFYX1BMVVNfMTsgZG8KKwlrZW52ICRN
T0ROQU1FLnR1bmFibGU9IiRpIgorCXRlc3RfbW9kdWxlCitkb25lCkluZGV4OiB0b29scy9yZWdy
ZXNzaW9uL3R1bmFibGVzL3VxdWFkL3Rlc3RfdXF1YWRfdHVuYWJsZS5jCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdXF1YWQvdGVzdF91cXVhZF90dW5hYmxlLmMJKHJl
dmlzaW9uIDApCisrKyB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3VxdWFkL3Rlc3RfdXF1YWRf
dHVuYWJsZS5jCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACisjaW5jbHVkZSA8c3lzL3Bh
cmFtLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3Byb2MuaD4KKyNp
bmNsdWRlIDxzeXMvbW9kdWxlLmg+CisjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1ZGUg
PHN5cy9zeXN0bS5oPgorCisjZGVmaW5lIE1PRFVMRV9OQU1FCSJ0ZXN0X3VxdWFkX3R1bmFibGUi
CisKK3N0YXRpYyB1cXVhZF90IHR1bmFibGUgPSAwOworCitUVU5BQkxFX1VRVUFEKCJ0ZXN0X3Vx
dWFkX3R1bmFibGUudHVuYWJsZSIsICZ0dW5hYmxlKTsKKworc3RhdGljIGludAorbG9hZCAobW9k
dWxlX3QgbSwgaW50IHdoYXQsIHZvaWQgKmFyZykKK3sKKwlzd2l0Y2ggKHdoYXQpIHsKKwljYXNl
IE1PRF9MT0FEOgorCQlwcmludGYoIiVzOiAlbHVcbiIsIE1PRFVMRV9OQU1FLCB0dW5hYmxlKTsK
KwkJYnJlYWs7CisJfQorCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBtb2R1bGVkYXRhX3QgdGVz
dF91cXVhZF90dW5hYmxlX21vZCA9IHsKKwlNT0RVTEVfTkFNRSwKKwlsb2FkLAorfTsKK0RFQ0xB
UkVfTU9EVUxFKHRlc3RfdXF1YWRfdHVuYWJsZSwgdGVzdF91cXVhZF90dW5hYmxlX21vZCwgU0lf
U1VCX0tMRCwKKyAgICBTSV9PUkRFUl9BTlkpOworTU9EVUxFX1ZFUlNJT04odGVzdF91cXVhZF90
dW5hYmxlLCAxKTsKSW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdXF1YWQvTWFrZWZp
bGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy91cXVhZC9NYWtlZmls
ZQkocmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdXF1YWQvTWFrZWZp
bGUJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorS01PRD0JdGVzdF91cXVhZF90dW5hYmxl
CitTUkNTPQl0ZXN0X3VxdWFkX3R1bmFibGUuYworCisuaW5jbHVkZSA8YnNkLmttb2QubWs+Cklu
ZGV4OiB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3Rvb2xzL2dldHdvcmRzaXplLmMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy90b29scy9nZXR3b3Jkc2l6ZS5jCShy
ZXZpc2lvbiAwKQorKysgdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy90b29scy9nZXR3b3Jkc2l6
ZS5jCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKKyNpbmNsdWRlIDxzeXMvZWxmLmg+Cisj
aW5jbHVkZSA8c3RkaW8uaD4KKworaW50CittYWluKHZvaWQpCit7CisJcHJpbnRmKCIlZFxuIiwg
X19FTEZfV09SRF9TSVpFKTsKKwlyZXR1cm4gKDApOworfQpJbmRleDogdG9vbHMvcmVncmVzc2lv
bi90dW5hYmxlcy90b29scy9NYWtlZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9u
L3R1bmFibGVzL3Rvb2xzL01ha2VmaWxlCShyZXZpc2lvbiAwKQorKysgdG9vbHMvcmVncmVzc2lv
bi90dW5hYmxlcy90b29scy9NYWtlZmlsZQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitQ
Uk9HPQkJZ2V0d29yZHNpemUKKworU1JDUz0JCWdldHdvcmRzaXplLmMKKworTk9fTUFOPQkJMQor
CisuaW5jbHVkZSA8YnNkLnByb2cubWs+CkluZGV4OiB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVz
L3BvaW50ZXIvdGVzdF9wb2ludGVyX3R1bmFibGUuc2gKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdG9vbHMvcmVn
cmVzc2lvbi90dW5hYmxlcy9wb2ludGVyL3Rlc3RfcG9pbnRlcl90dW5hYmxlLnNoCShyZXZpc2lv
biAwKQorKysgdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9wb2ludGVyL3Rlc3RfcG9pbnRlcl90
dW5hYmxlLnNoCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI1IEBACisjIS9iaW4vc2gKKyMKKyMg
RXhwZWN0ZWQgdmFsdWVzOgorIyAodW5zZXQpICAgICA6ICAgICAgICAgICAgMAorIyAgICAgIC0x
ICAgICA6ICAgIEFsbCAweGYncworIyAgICAgICAwICAgICA6ICAgICAgICAgIDB4MAorIyAgICAg
IDQyICAgICA6ICAgICAgICAgMHgyQQorIyAzNzM1OTI4NTU5ICA6ICAgMHhkZWFkYmVlZgorIyBh
c2RmMTIzNCAgICA6ICAgICAgICAgICAgMCAocmVqZWN0KQorIyBody5waHlzbWVtLTE6IGh3LnBo
eXNtZW0tMQorIyBody5waHlzbWVtKzE6IGh3LnBoeXNtZW0rMQorIworCitNT0ROQU1FPSIkKGJh
c2VuYW1lICIkMCIgLnNoKSIKKwordGVzdF9tb2R1bGUoKSB7CisJa2xkbG9hZCAuLyRNT0ROQU1F
LmtvCisJa2xkdW5sb2FkIC4vJE1PRE5BTUUua28KK30KKwordGVzdF9tb2R1bGUKK2ZvciBpIGlu
IC0xIDAgNDIgMzczNTkyODU1OSBhc2RmMTIzNCAkKCggJChzeXNjdGwgLW4gaHcucGh5c21lbSkg
LSAxICkpICQoKCAkKHN5c2N0bCAtbiBody5waHlzbWVtKSArIDEgKSk7IGRvCisJa2VudiAkTU9E
TkFNRS50dW5hYmxlPSIkaSIKKwl0ZXN0X21vZHVsZQorZG9uZQpJbmRleDogdG9vbHMvcmVncmVz
c2lvbi90dW5hYmxlcy9wb2ludGVyL3Rlc3RfcG9pbnRlcl90dW5hYmxlLmMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9wb2ludGVyL3Rlc3RfcG9pbnRlcl90dW5hYmxl
LmMJKHJldmlzaW9uIDApCisrKyB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3BvaW50ZXIvdGVz
dF9wb2ludGVyX3R1bmFibGUuYwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMSBAQAorI2luY2x1
ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9w
cm9jLmg+CisjaW5jbHVkZSA8c3lzL21vZHVsZS5oPgorI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4K
KyNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KKworI2RlZmluZSBNT0RVTEVfTkFNRQkidGVzdF9wb2lu
dGVyX3R1bmFibGUiCisKK3N0YXRpYyB1aW50cHRyX3QgdHVuYWJsZTsKKworVFVOQUJMRV9QT0lO
VEVSKCJ0ZXN0X3BvaW50ZXJfdHVuYWJsZS50dW5hYmxlIiwgJnR1bmFibGUpOworCitzdGF0aWMg
aW50Citsb2FkIChtb2R1bGVfdCBtLCBpbnQgd2hhdCwgdm9pZCAqYXJnKQoreworCXN3aXRjaCAo
d2hhdCkgeworCWNhc2UgTU9EX0xPQUQ6CisJCXByaW50ZigiJXM6ICVqeFxuIiwgTU9EVUxFX05B
TUUsIHR1bmFibGUpOworCQlicmVhazsKKwl9CisJcmV0dXJuICgwKTsKK30KKworc3RhdGljIG1v
ZHVsZWRhdGFfdCB0ZXN0X3BvaW50ZXJfdHVuYWJsZV9tb2QgPSB7CisJTU9EVUxFX05BTUUsCisJ
bG9hZCwKK307CitERUNMQVJFX01PRFVMRSh0ZXN0X3BvaW50ZXJfdHVuYWJsZSwgdGVzdF9wb2lu
dGVyX3R1bmFibGVfbW9kLCBTSV9TVUJfS0xELAorICAgIFNJX09SREVSX0FOWSk7CitNT0RVTEVf
VkVSU0lPTih0ZXN0X3BvaW50ZXJfdHVuYWJsZSwgMSk7CkluZGV4OiB0b29scy9yZWdyZXNzaW9u
L3R1bmFibGVzL3BvaW50ZXIvTWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdG9vbHMvcmVncmVzc2lv
bi90dW5hYmxlcy9wb2ludGVyL01ha2VmaWxlCShyZXZpc2lvbiAwKQorKysgdG9vbHMvcmVncmVz
c2lvbi90dW5hYmxlcy9wb2ludGVyL01ha2VmaWxlCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQg
QEAKK0tNT0Q9CXRlc3RfcG9pbnRlcl90dW5hYmxlCitTUkNTPQl0ZXN0X3BvaW50ZXJfdHVuYWJs
ZS5jCisKKy5pbmNsdWRlIDxic2Qua21vZC5taz4KSW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVu
YWJsZXMvc3VmZml4L3Rlc3RfdHVuYWJsZV9zdWZmaXhlcy5jCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRvb2xz
L3JlZ3Jlc3Npb24vdHVuYWJsZXMvc3VmZml4L3Rlc3RfdHVuYWJsZV9zdWZmaXhlcy5jCShyZXZp
c2lvbiAwKQorKysgdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9zdWZmaXgvdGVzdF90dW5hYmxl
X3N1ZmZpeGVzLmMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEgQEAKKyNpbmNsdWRlIDxzeXMv
cGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvcHJvYy5oPgor
I2luY2x1ZGUgPHN5cy9tb2R1bGUuaD4KKyNpbmNsdWRlIDxzeXMva2VybmVsLmg+CisjaW5jbHVk
ZSA8c3lzL3N5c3RtLmg+CisKKyNkZWZpbmUgTU9EVUxFX05BTUUJInRlc3RfdHVuYWJsZV9zdWZm
aXhlcyIKKworc3RhdGljIGxvbmcgdHVuYWJsZSA9IDA7CisKK1RVTkFCTEVfTE9ORygidGVzdF90
dW5hYmxlX3N1ZmZpeGVzLnR1bmFibGUiLCAmdHVuYWJsZSk7CisKK3N0YXRpYyBpbnQKK2xvYWQg
KHN0cnVjdCBtb2R1bGUgKm0sIGludCB3aGF0LCB2b2lkICphcmcpCit7CisJc3dpdGNoICh3aGF0
KSB7CisJY2FzZSBNT0RfTE9BRDoKKwkJcHJpbnRmKCIlczogJWxkXG4iLCBNT0RVTEVfTkFNRSwg
dHVuYWJsZSk7CisJCWJyZWFrOworCX0KKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgbW9kdWxl
ZGF0YV90IHRlc3RfdHVuYWJsZV9zdWZmaXhlc19tb2QgPSB7CisJTU9EVUxFX05BTUUsCisJbG9h
ZCwKK307CitERUNMQVJFX01PRFVMRSh0ZXN0X3R1bmFibGVfc3VmZml4ZXMsIHRlc3RfdHVuYWJs
ZV9zdWZmaXhlc19tb2QsIFNJX1NVQl9LTEQsCisgICAgU0lfT1JERVJfQU5ZKTsKK01PRFVMRV9W
RVJTSU9OKHRlc3RfdHVuYWJsZV9zdWZmaXhlcywgMSk7CkluZGV4OiB0b29scy9yZWdyZXNzaW9u
L3R1bmFibGVzL3N1ZmZpeC9NYWtlZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9u
L3R1bmFibGVzL3N1ZmZpeC9NYWtlZmlsZQkocmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Np
b24vdHVuYWJsZXMvc3VmZml4L01ha2VmaWxlCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAK
K0tNT0Q9CXRlc3RfdHVuYWJsZV9zdWZmaXhlcworU1JDUz0JdGVzdF90dW5hYmxlX3N1ZmZpeGVz
LmMKKworLmluY2x1ZGUgPGJzZC5rbW9kLm1rPgpJbmRleDogdG9vbHMvcmVncmVzc2lvbi90dW5h
Ymxlcy9zdWZmaXgvdGVzdF90dW5hYmxlX3N1ZmZpeGVzLnNoCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRvb2xz
L3JlZ3Jlc3Npb24vdHVuYWJsZXMvc3VmZml4L3Rlc3RfdHVuYWJsZV9zdWZmaXhlcy5zaAkocmV2
aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvc3VmZml4L3Rlc3RfdHVuYWJs
ZV9zdWZmaXhlcy5zaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MSBAQAorIyEvYmluL3NoCisj
CisjIEV4cGVjdGVkIHZhbHVlczoKKyMgKHVuc2V0KSAgIDogICAgICAgICAgIDAKKyMgICAgICAg
ICAtMTogICAgICAgICAgLTEKKyMgICAgICAgIC0xZzogICAgIC0xMDI0XjMKKyMgICAgICAgIC0x
RzogICAgIC0xMDI0XjMgKHNhbWUgYXMgMWcpIAorIyAgICAgICAgLTFrOiAgICAgICAtMTAyNAor
IyAgICAgICAgLTFLOiAgICAgICAtMTAyNCAoc2FtZSBhcyAxSykKKyMgICAgICAgIC0xbTogICAg
IC0xMDI0XjIKKyMgICAgICAgIC0xTTogICAgIC0xMDI0XjIgKHNhbWUgYXMgMW0pCisjICAgICAg
ICAtMXQ6ICAgICAtMTAyNF40CisjICAgICAgICAtMVQ6ICAgICAtMTAyNF40IChzYW1lIGFzIDF0
KQorIyAgICAgICAgLTF6OiAgICAgICAgICAgMCAocmVqZWN0KQorIyAgICAgICAgICAxOiAgICAg
ICAgICAgMQorIyAgICAgICAgIDFnOiAgICAgIDEwMjReMworIyAgICAgICAgIDFHOiAgICAgIDEw
MjReMyAoc2FtZSBhcyAxZykgCisjICAgICAgICAgMWs6ICAgICAgICAxMDI0CisjICAgICAgICAg
MUs6ICAgICAgICAxMDI0IChzYW1lIGFzIDFLKQorIyAgICAgICAgIDFtOiAgICAgIDEwMjReMgor
IyAgICAgICAgIDFNOiAgICAgIDEwMjReMiAoc2FtZSBhcyAxbSkKKyMgICAgICAgICAxdDogICAg
ICAxMDI0XjQKKyMgICAgICAgICAxVDogICAgICAxMDI0XjQgKHNhbWUgYXMgMXQpCisjICAgICAg
ICAgMXo6ICAgICAgICAgICAwIChyZWplY3QpCisjICAgICAgICAgMVQ6ICAgICAgICAgICAwIChy
ZWplY3QpCisKK01PRE5BTUU9IiQoYmFzZW5hbWUgIiQwIiAuc2gpIgorCit0ZXN0X21vZHVsZSgp
IHsKKwlrbGRsb2FkIC4vJE1PRE5BTUUua28KKwlrbGR1bmxvYWQgLi8kTU9ETkFNRS5rbworfQor
CitrZW52IC11ICRNT0ROQU1FLnR1bmFibGUgMj4vZGV2L251bGwKK3Rlc3RfbW9kdWxlCitmb3Ig
aSBpbiAtMSAwIDE7IGRvCisJZm9yIGogaW4gJycgZyBHIGsgSyBtIE0gdCBUIHogWjsgZG8KKwkJ
a2VudiAkTU9ETkFNRS50dW5hYmxlPSIkaSRqIgorCQl0ZXN0X21vZHVsZQorCWRvbmUKK2RvbmUK
SW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdWxvbmcvdGVzdF91bG9uZ190dW5hYmxl
LnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdWxvbmcvdGVzdF91
bG9uZ190dW5hYmxlLnNoCShyZXZpc2lvbiAwKQorKysgdG9vbHMvcmVncmVzc2lvbi90dW5hYmxl
cy91bG9uZy90ZXN0X3Vsb25nX3R1bmFibGUuc2gJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzgg
QEAKKyMhL2Jpbi9zaAorIworIyBFeHBlY3RlZCB2YWx1ZXM6CisjICh1bnNldCkgICAgOiAgICAg
ICAgICAgMAorIyAgICAgIC0xICAgIDogICBVTE9OR19NQVgKKyMgICAgICAgMCAgICA6ICAgICAg
ICAgICAwCisjICAgICAgNDIgICAgOiAgICAgICAgICA0MgorIyBhc2RmMTIzNCAgIDogICAgICAg
ICAgIDAgKHJlamVjdCkKKyMgTE9OR19NQVgrMSA6ICBMT05HX01BWCsxCisjIFVMT05HX01BWC0x
OiBVTE9OR19NQVgtMQorIyBVTE9OR19NQVgrMTogICBVTE9OR19NQVgKKyMKKworTU9ETkFNRT0i
JChiYXNlbmFtZSAiJDAiIC5zaCkiCisKK3Rlc3RfbW9kdWxlKCkgeworCWtsZGxvYWQgLi8kTU9E
TkFNRS5rbworCWtsZHVubG9hZCAuLyRNT0ROQU1FLmtvCit9CisKK2Nhc2UgIiQoJChkaXJuYW1l
ICIkMCIpLy4uL3Rvb2xzL2dldHdvcmRzaXplKSIgaW4KKzMyKQorCUxPTkdfTUFYX1BMVVNfMT0y
MTQ3NDgzNjQ5CisJVUxPTkdfTUFYX01JTlVTXzE9NDI5NDk2NzI5NQorCVVMT05HX01BWF9QTFVT
XzE9NDI5NDk2NzI5NworCTs7Cis2NCkKKwlMT05HX01BWF9QTFVTXzE9OTIyMzM3MjAzNjg1NDc3
NTgwOAorCVVMT05HX01BWF9NSU5VU18xPTE4NDQ2NzQ0MDczNzA5NTUxNjE0CisJVUxPTkdfTUFY
X1BMVVNfMT0xODQ0Njc0NDA3MzcwOTU1MTYxNgorCTs7Citlc2FjCitrZW52IC11ICRNT0ROQU1F
LnR1bmFibGUgMj4vZGV2L251bGwKK3Rlc3RfbW9kdWxlCitmb3IgaSBpbiAtMSAwIDQyIGFzZGYx
MjM0ICRMT05HX01BWF9QTFVTXzEgJFVMT05HX01BWF9NSU5VU18xICRVTE9OR19NQVhfUExVU18x
OyBkbworCWtlbnYgJE1PRE5BTUUudHVuYWJsZT0iJGkiCisJdGVzdF9tb2R1bGUKK2RvbmUKSW5k
ZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdWxvbmcvTWFrZWZpbGUKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy91bG9uZy9NYWtlZmlsZQkocmV2aXNpb24gMCkK
KysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdWxvbmcvTWFrZWZpbGUJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNCBAQAorS01PRD0JdGVzdF91bG9uZ190dW5hYmxlCitTUkNTPQl0ZXN0X3Vs
b25nX3R1bmFibGUuYworCisuaW5jbHVkZSA8YnNkLmttb2QubWs+CkluZGV4OiB0b29scy9yZWdy
ZXNzaW9uL3R1bmFibGVzL3Vsb25nL3Rlc3RfdWxvbmdfdHVuYWJsZS5jCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvdWxvbmcvdGVzdF91bG9uZ190dW5hYmxlLmMJKHJl
dmlzaW9uIDApCisrKyB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3Vsb25nL3Rlc3RfdWxvbmdf
dHVuYWJsZS5jCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACisjaW5jbHVkZSA8c3lzL3Bh
cmFtLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3Byb2MuaD4KKyNp
bmNsdWRlIDxzeXMvbW9kdWxlLmg+CisjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1ZGUg
PHN5cy9zeXN0bS5oPgorCisjZGVmaW5lIE1PRFVMRV9OQU1FCSJ0ZXN0X3Vsb25nX3R1bmFibGUi
CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nIHR1bmFibGUgPSAwOworCitUVU5BQkxFX1VMT05HKCJ0
ZXN0X3Vsb25nX3R1bmFibGUudHVuYWJsZSIsICZ0dW5hYmxlKTsKKworc3RhdGljIGludAorbG9h
ZCAobW9kdWxlX3QgbSwgaW50IHdoYXQsIHZvaWQgKmFyZykKK3sKKwlzd2l0Y2ggKHdoYXQpIHsK
KwljYXNlIE1PRF9MT0FEOgorCQlwcmludGYoIiVzOiAlbHVcbiIsIE1PRFVMRV9OQU1FLCB0dW5h
YmxlKTsKKwkJYnJlYWs7CisJfQorCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBtb2R1bGVkYXRh
X3QgdGVzdF91bG9uZ190dW5hYmxlX21vZCA9IHsKKwlNT0RVTEVfTkFNRSwKKwlsb2FkLAorfTsK
K0RFQ0xBUkVfTU9EVUxFKHRlc3RfdWxvbmdfdHVuYWJsZSwgdGVzdF91bG9uZ190dW5hYmxlX21v
ZCwgU0lfU1VCX0tMRCwKKyAgICBTSV9PUkRFUl9BTlkpOworTU9EVUxFX1ZFUlNJT04odGVzdF91
bG9uZ190dW5hYmxlLCAxKTsKSW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvc3RyaW5n
L3Rlc3Rfc3RyaW5nX3R1bmFibGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1
bmFibGVzL3N0cmluZy90ZXN0X3N0cmluZ190dW5hYmxlLmMJKHJldmlzaW9uIDApCisrKyB0b29s
cy9yZWdyZXNzaW9uL3R1bmFibGVzL3N0cmluZy90ZXN0X3N0cmluZ190dW5hYmxlLmMJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzEgQEAKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRl
IDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvcHJvYy5oPgorI2luY2x1ZGUgPHN5cy9tb2R1
bGUuaD4KKyNpbmNsdWRlIDxzeXMva2VybmVsLmg+CisjaW5jbHVkZSA8c3lzL3N5c3RtLmg+CisK
KyNkZWZpbmUgTU9EVUxFX05BTUUJInRlc3Rfc3RyaW5nX3R1bmFibGUiCisKK3N0YXRpYyBjaGFy
IHR1bmFibGVbMTBdOworCitUVU5BQkxFX1NUUigidGVzdF9zdHJpbmdfdHVuYWJsZS50dW5hYmxl
IiwgdHVuYWJsZSwgc2l6ZW9mKHR1bmFibGUpKTsKKworc3RhdGljIGludAorbG9hZCAobW9kdWxl
X3QgbSwgaW50IHdoYXQsIHZvaWQgKmFyZykKK3sKKwlzd2l0Y2ggKHdoYXQpIHsKKwljYXNlIE1P
RF9MT0FEOgorCQlwcmludGYoIiVzOiAlc1xuIiwgTU9EVUxFX05BTUUsIHR1bmFibGUpOworCQli
cmVhazsKKwl9CisJcmV0dXJuICgwKTsKK30KKworc3RhdGljIG1vZHVsZWRhdGFfdCB0ZXN0X3N0
cmluZ190dW5hYmxlX21vZCA9IHsKKwlNT0RVTEVfTkFNRSwKKwlsb2FkLAorfTsKK0RFQ0xBUkVf
TU9EVUxFKHRlc3Rfc3RyaW5nX3R1bmFibGUsIHRlc3Rfc3RyaW5nX3R1bmFibGVfbW9kLCBTSV9T
VUJfS0xELAorICAgIFNJX09SREVSX0FOWSk7CitNT0RVTEVfVkVSU0lPTih0ZXN0X3N0cmluZ190
dW5hYmxlLCAxKTsKSW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvc3RyaW5nL3Rlc3Rf
c3RyaW5nX3R1bmFibGUuc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdG9vbHMvcmVncmVzc2lvbi90dW5hYmxl
cy9zdHJpbmcvdGVzdF9zdHJpbmdfdHVuYWJsZS5zaAkocmV2aXNpb24gMCkKKysrIHRvb2xzL3Jl
Z3Jlc3Npb24vdHVuYWJsZXMvc3RyaW5nL3Rlc3Rfc3RyaW5nX3R1bmFibGUuc2gJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjIgQEAKKyMhL2Jpbi9zaAorIworIyBFeHBlY3RlZCB2YWx1ZXM6Cisj
ICh1bnNldCkgICAgICAgICAgICAgIDogICAgICAgICAgIiIKKyMgIiIgICAgICAgICAgICAgICAg
ICAgOiAgICAgICAgICAiIgorIyBhc2RmMTIzNCAgICAgICAgICAgICA6ICAgIGFzZGYxMjM0Cisj
IGNoYXJhY3RlciAgICAgICAgICAgIDogICBjaGFyYWN0ZXIKKyMgYXNvcnRvZmxvbmdpc2hzdHJp
bmcgOiAgIGFzb3J0b2ZsbworIworCitNT0ROQU1FPSIkKGJhc2VuYW1lICIkMCIgLnNoKSIKKwor
dGVzdF9tb2R1bGUoKSB7CisJa2xkbG9hZCAuLyRNT0ROQU1FLmtvCisJa2xkdW5sb2FkIC4vJE1P
RE5BTUUua28KK30KKwordGVzdF9tb2R1bGUKK2ZvciBpIGluICIiIGFzZGYxMjM0IGNoYXJhY3Rl
ciBhc29ydG9mbG9uZ2lzaHN0cmluZzsgZG8KKwlrZW52ICRNT0ROQU1FLnR1bmFibGU9IiRpIgor
CXRlc3RfbW9kdWxlCitkb25lCkluZGV4OiB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3N0cmlu
Zy9NYWtlZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3N0cmlu
Zy9NYWtlZmlsZQkocmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvc3Ry
aW5nL01ha2VmaWxlCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK0tNT0Q9CXRlc3Rfc3Ry
aW5nX3R1bmFibGUKK1NSQ1M9CXRlc3Rfc3RyaW5nX3R1bmFibGUuYworCisuaW5jbHVkZSA8YnNk
Lmttb2QubWs+CkluZGV4OiB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3F1YWQvdGVzdF9xdWFk
X3R1bmFibGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL3F1YWQv
dGVzdF9xdWFkX3R1bmFibGUuYwkocmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVu
YWJsZXMvcXVhZC90ZXN0X3F1YWRfdHVuYWJsZS5jCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMx
IEBACisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5j
bHVkZSA8c3lzL3Byb2MuaD4KKyNpbmNsdWRlIDxzeXMvbW9kdWxlLmg+CisjaW5jbHVkZSA8c3lz
L2tlcm5lbC5oPgorI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgorCisjZGVmaW5lIE1PRFVMRV9OQU1F
CSJ0ZXN0X3F1YWRfdHVuYWJsZSIKKworc3RhdGljIHF1YWRfdCB0dW5hYmxlID0gMDsKKworVFVO
QUJMRV9RVUFEKCJ0ZXN0X3F1YWRfdHVuYWJsZS50dW5hYmxlIiwgJnR1bmFibGUpOworCitzdGF0
aWMgaW50Citsb2FkIChtb2R1bGVfdCBtLCBpbnQgd2hhdCwgdm9pZCAqYXJnKQoreworCXN3aXRj
aCAod2hhdCkgeworCWNhc2UgTU9EX0xPQUQ6CisJCXByaW50ZigiJXM6ICVsZFxuIiwgTU9EVUxF
X05BTUUsIHR1bmFibGUpOworCQlicmVhazsKKwl9CisJcmV0dXJuICgwKTsKK30KKworc3RhdGlj
IG1vZHVsZWRhdGFfdCB0ZXN0X3F1YWRfdHVuYWJsZV9tb2QgPSB7CisJTU9EVUxFX05BTUUsCisJ
bG9hZCwKK307CitERUNMQVJFX01PRFVMRSh0ZXN0X3F1YWRfdHVuYWJsZSwgdGVzdF9xdWFkX3R1
bmFibGVfbW9kLCBTSV9TVUJfS0xELAorICAgIFNJX09SREVSX0FOWSk7CitNT0RVTEVfVkVSU0lP
Tih0ZXN0X3F1YWRfdHVuYWJsZSwgMSk7CkluZGV4OiB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVz
L3F1YWQvdGVzdF9xdWFkX3R1bmFibGUuc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdG9vbHMvcmVncmVzc2lv
bi90dW5hYmxlcy9xdWFkL3Rlc3RfcXVhZF90dW5hYmxlLnNoCShyZXZpc2lvbiAwKQorKysgdG9v
bHMvcmVncmVzc2lvbi90dW5hYmxlcy9xdWFkL3Rlc3RfcXVhZF90dW5hYmxlLnNoCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQwIEBACisjIS9iaW4vc2gKKyMKKyMgRXhwZWN0ZWQgdmFsdWVzOgor
IyAodW5zZXQpICAgIDogICAgICAgICAgIDAKKyMgICAgICAgMCAgICA6ICAgICAgICAgICAwCisj
ICAgICAgNDIgICAgOiAgICAgICAgICA0MgorIyBhc2RmMTIzNCAgIDogICAgICAgICAgIDAgKHJl
amVjdCkKKyMgTE9OR19NSU4tMSA6ICBMT05HX01JTgorIyBMT05HX01JTisxIDogIExPTkdfTUlO
KzEKKyMgTE9OR19NQVgtMSA6ICBMT05HX01BWC0xCisjIExPTkdfTUFYKzEgOiAgTE9OR19NQVgK
KyMKKworTU9ETkFNRT0iJChiYXNlbmFtZSAiJDAiIC5zaCkiCisKK3Rlc3RfbW9kdWxlKCkgewor
CWtsZGxvYWQgLi8kTU9ETkFNRS5rbworCWtsZHVubG9hZCAuLyRNT0ROQU1FLmtvCit9CisKK2Nh
c2UgIiQoJChkaXJuYW1lICIkMCIpLy4uL3Rvb2xzL2dldHdvcmRzaXplKSIgaW4KKzMyKQorCUxP
TkdfTUlOX01JTlVTXzE9Ii0yMTQ3NDgzNjQ5IgorCUxPTkdfTUlOX1BMVVNfMT0iLTIxNDc0ODM2
NDciCisJTE9OR19NQVhfTUlOVVNfMT0yMTQ3NDgzNjQ3CisJTE9OR19NQVhfUExVU18xPTIxNDc0
ODM2NDkKKwk7OworNjQpCisJTE9OR19NSU5fTUlOVVNfMT0iLTkyMjMzNzIwMzY4NTQ3NzU4MDki
CisJTE9OR19NSU5fUExVU18xPSItOTIyMzM3MjAzNjg1NDc3NTgwNyIKKwlMT05HX01BWF9NSU5V
U18xPTkyMjMzNzIwMzY4NTQ3NzU4MDYKKwlMT05HX01BWF9QTFVTXzE9OTIyMzM3MjAzNjg1NDc3
NTgwOAorCTs7Citlc2FjCitrZW52IC11ICRNT0ROQU1FLnR1bmFibGUgMj4vZGV2L251bGwKK3Rl
c3RfbW9kdWxlCitmb3IgaSBpbiAwIDQyIGFzZGYxMjM0ICRMT05HX01JTl9NSU5VU18xICRMT05H
X01JTl9QTFVTXzEgJExPTkdfTUFYX01JTlVTXzEgJExPTkdfTUFYX1BMVVNfMSA7IGRvCisJa2Vu
diAkTU9ETkFNRS50dW5hYmxlPSIkaSIKKwl0ZXN0X21vZHVsZQorZG9uZQpJbmRleDogdG9vbHMv
cmVncmVzc2lvbi90dW5hYmxlcy9xdWFkL01ha2VmaWxlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRvb2xzL3Jl
Z3Jlc3Npb24vdHVuYWJsZXMvcXVhZC9NYWtlZmlsZQkocmV2aXNpb24gMCkKKysrIHRvb2xzL3Jl
Z3Jlc3Npb24vdHVuYWJsZXMvcXVhZC9NYWtlZmlsZQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
IEBACitLTU9EPQl0ZXN0X3F1YWRfdHVuYWJsZQorU1JDUz0JdGVzdF9xdWFkX3R1bmFibGUuYwor
CisuaW5jbHVkZSA8YnNkLmttb2QubWs+CkluZGV4OiB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVz
L3NpemUvdGVzdF9zaXplX3R1bmFibGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9u
L3R1bmFibGVzL3NpemUvdGVzdF9zaXplX3R1bmFibGUuYwkocmV2aXNpb24gMCkKKysrIHRvb2xz
L3JlZ3Jlc3Npb24vdHVuYWJsZXMvc2l6ZS90ZXN0X3NpemVfdHVuYWJsZS5jCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMxIEBACisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lz
L3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3Byb2MuaD4KKyNpbmNsdWRlIDxzeXMvbW9kdWxlLmg+
CisjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgorCisjZGVm
aW5lIE1PRFVMRV9OQU1FCSJ0ZXN0X3NpemVfdHVuYWJsZSIKKworc3RhdGljIHNpemVfdCB0dW5h
YmxlID0gMDsKKworVFVOQUJMRV9TSVpFKCJ0ZXN0X3NpemVfdHVuYWJsZS50dW5hYmxlIiwgJnR1
bmFibGUpOworCitzdGF0aWMgaW50Citsb2FkIChtb2R1bGVfdCBtLCBpbnQgd2hhdCwgdm9pZCAq
YXJnKQoreworCXN3aXRjaCAod2hhdCkgeworCWNhc2UgTU9EX0xPQUQ6CisJCXByaW50ZigiJXM6
ICV6dVxuIiwgTU9EVUxFX05BTUUsIHR1bmFibGUpOworCQlicmVhazsKKwl9CisJcmV0dXJuICgw
KTsKK30KKworc3RhdGljIG1vZHVsZWRhdGFfdCB0ZXN0X3NpemVfdHVuYWJsZV9tb2QgPSB7CisJ
TU9EVUxFX05BTUUsCisJbG9hZCwKK307CitERUNMQVJFX01PRFVMRSh0ZXN0X3NpemVfdHVuYWJs
ZSwgdGVzdF9zaXplX3R1bmFibGVfbW9kLCBTSV9TVUJfS0xELAorICAgIFNJX09SREVSX0FOWSk7
CitNT0RVTEVfVkVSU0lPTih0ZXN0X3NpemVfdHVuYWJsZSwgMSk7CkluZGV4OiB0b29scy9yZWdy
ZXNzaW9uL3R1bmFibGVzL3NpemUvdGVzdF9zaXplX3R1bmFibGUuc2gKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
dG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9zaXplL3Rlc3Rfc2l6ZV90dW5hYmxlLnNoCShyZXZp
c2lvbiAwKQorKysgdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9zaXplL3Rlc3Rfc2l6ZV90dW5h
YmxlLnNoCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisjIS9iaW4vc2gKKyMKKyMgRXhw
ZWN0ZWQgdmFsdWVzOgorIyAodW5zZXQpICAgIDogICAgICAgICAgIDAKKyMgICAgICAtMSAgICA6
ICAgVUxPTkdfTUFYCisjICAgICAgIDAgICAgOiAgICAgICAgICAgMAorIyAgICAgIDQyICAgIDog
ICAgICAgICAgNDIKKyMgYXNkZjEyMzQgICA6ICAgICAgICAgICAwIChyZWplY3QpCisjIExPTkdf
TUFYKzEgOiAgTE9OR19NQVgrMQorIyBVTE9OR19NQVgtMTogVUxPTkdfTUFYLTEKKyMgVUxPTkdf
TUFYKzE6ICAgVUxPTkdfTUFYCisjCisKK01PRE5BTUU9IiQoYmFzZW5hbWUgIiQwIiAuc2gpIgor
Cit0ZXN0X21vZHVsZSgpIHsKKwlrbGRsb2FkIC4vJE1PRE5BTUUua28KKwlrbGR1bmxvYWQgLi8k
TU9ETkFNRS5rbworfQorCitjYXNlICIkKCQoZGlybmFtZSAiJDAiKS8uLi90b29scy9nZXR3b3Jk
c2l6ZSkiIGluCiszMikKKwlMT05HX01BWF9QTFVTXzE9MjE0NzQ4MzY0OQorCVVMT05HX01BWF9N
SU5VU18xPTQyOTQ5NjcyOTUKKwlVTE9OR19NQVhfUExVU18xPTQyOTQ5NjcyOTcKKwk7OworNjQp
CisJTE9OR19NQVhfUExVU18xPTkyMjMzNzIwMzY4NTQ3NzU4MDgKKwlVTE9OR19NQVhfTUlOVVNf
MT0xODQ0Njc0NDA3MzcwOTU1MTYxNAorCVVMT05HX01BWF9QTFVTXzE9MTg0NDY3NDQwNzM3MDk1
NTE2MTYKKwk7OworZXNhYwora2VudiAtdSAkTU9ETkFNRS50dW5hYmxlIDI+L2Rldi9udWxsCit0
ZXN0X21vZHVsZQorZm9yIGkgaW4gLTEgMCA0MiBhc2RmMTIzNCAkTE9OR19NQVhfUExVU18xICRV
TE9OR19NQVhfTUlOVVNfMSAkVUxPTkdfTUFYX1BMVVNfMTsgZG8KKwlrZW52ICRNT0ROQU1FLnR1
bmFibGU9IiRpIgorCXRlc3RfbW9kdWxlCitkb25lCkluZGV4OiB0b29scy9yZWdyZXNzaW9uL3R1
bmFibGVzL3NpemUvTWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdG9vbHMvcmVncmVzc2lvbi90dW5h
Ymxlcy9zaXplL01ha2VmaWxlCShyZXZpc2lvbiAwKQorKysgdG9vbHMvcmVncmVzc2lvbi90dW5h
Ymxlcy9zaXplL01ha2VmaWxlCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK0tNT0Q9CXRl
c3Rfc2l6ZV90dW5hYmxlCitTUkNTPQl0ZXN0X3NpemVfdHVuYWJsZS5jCisKKy5pbmNsdWRlIDxi
c2Qua21vZC5taz4KSW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvaW50L3Rlc3RfaW50
X3R1bmFibGUuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL2ludC90
ZXN0X2ludF90dW5hYmxlLmMJKHJldmlzaW9uIDApCisrKyB0b29scy9yZWdyZXNzaW9uL3R1bmFi
bGVzL2ludC90ZXN0X2ludF90dW5hYmxlLmMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEgQEAK
KyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRl
IDxzeXMvcHJvYy5oPgorI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KKyNpbmNsdWRlIDxzeXMvc3lz
dG0uaD4KKyNpbmNsdWRlIDxzeXMvbW9kdWxlLmg+CisKKyNkZWZpbmUgTU9EVUxFX05BTUUJInRl
c3RfaW50X3R1bmFibGUiCisKK3N0YXRpYyBpbnQgdHVuYWJsZSA9IDA7CisKK1RVTkFCTEVfSU5U
KCJ0ZXN0X2ludF90dW5hYmxlLnR1bmFibGUiLCAmdHVuYWJsZSk7CisKK3N0YXRpYyBpbnQKK2xv
YWQgKG1vZHVsZV90IG0sIGludCB3aGF0LCB2b2lkICphcmcpCit7CisJc3dpdGNoICh3aGF0KSB7
CisJY2FzZSBNT0RfTE9BRDoKKwkJcHJpbnRmKCIlczogJWRcbiIsIE1PRFVMRV9OQU1FLCB0dW5h
YmxlKTsKKwkJYnJlYWs7CisJfQorCXJldHVybiAoMCk7Cit9CisKK3N0YXRpYyBtb2R1bGVkYXRh
X3QgdGVzdF9pbnRfdHVuYWJsZV9tb2QgPSB7CisJTU9EVUxFX05BTUUsCisJbG9hZCwKK307CitE
RUNMQVJFX01PRFVMRSh0ZXN0X2ludF90dW5hYmxlLCB0ZXN0X2ludF90dW5hYmxlX21vZCwgU0lf
U1VCX0tMRCwKKyAgICBTSV9PUkRFUl9BTlkpOworTU9EVUxFX1ZFUlNJT04odGVzdF9pbnRfdHVu
YWJsZSwgMSk7CkluZGV4OiB0b29scy9yZWdyZXNzaW9uL3R1bmFibGVzL2ludC90ZXN0X2ludF90
dW5hYmxlLnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvaW50L3Rl
c3RfaW50X3R1bmFibGUuc2gJKHJldmlzaW9uIDApCisrKyB0b29scy9yZWdyZXNzaW9uL3R1bmFi
bGVzL2ludC90ZXN0X2ludF90dW5hYmxlLnNoCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBA
CisjIS9iaW4vc2gKKyMKKyMgRXhwZWN0ZWQgdmFsdWVzOgorIyAodW5zZXQpICAgOiAgICAgICAg
ICAgMAorIyAgICAgIC0xICAgOiAgICAgICAgICAtMQorIyAgICAgICAwICAgOiAgICAgICAgICAg
MAorIyAgICAgIDQyICAgOiAgICAgICAgICA0MgorIyBhc2RmMTIzNCAgOiAgICAgICAgICAgMCAo
cmVqZWN0KQorIyBJTlRfTUlOKzEgOiAgIElOVF9NSU4rMQorIyBJTlRfTUlOLTEgOiAgICAgICAg
ICAgMCAocmVqZWN0KQorIyBJTlRfTUFYLTEgOiAgIElOVF9NQVgtMQorIyBJTlRfTUFYKzEgOiAg
ICAgICAgICAgMCAocmVqZWN0KQorIworCitNT0ROQU1FPSIkKGJhc2VuYW1lICIkMCIgLnNoKSIK
KwordGVzdF9tb2R1bGUoKSB7CisJa2xkbG9hZCAuLyRNT0ROQU1FLmtvCisJa2xkdW5sb2FkIC4v
JE1PRE5BTUUua28KK30KKworSU5UX01JTl9QTFVTX09ORT0tMjE0NzQ4MzY0NworSU5UX01JTl9N
SU5VU19PTkU9LTIxNDc0ODM2NDkKK0lOVF9NQVhfTUlOVVNfT05FPTIxNDc0ODM2NDYKK0lOVF9N
QVhfUExVU19PTkU9MjE0NzQ4MzY0OAora2VudiAtdSAkTU9ETkFNRS50dW5hYmxlIDI+L2Rldi9u
dWxsCit0ZXN0X21vZHVsZQorZm9yIGkgaW4gLTEgMCA0MiBhc2RmMTIzNCAkSU5UX01JTl9QTFVT
X09ORSAkSU5UX01JTl9NSU5VU19PTkUgJElOVF9NQVhfTUlOVVNfT05FICRJTlRfTUFYX1BMVVNf
T05FOyBkbworCWtlbnYgJE1PRE5BTUUudHVuYWJsZT0iJGkiCisJdGVzdF9tb2R1bGUKK2RvbmUK
SW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvaW50L01ha2VmaWxlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvaW50L01ha2VmaWxlCShyZXZpc2lvbiAwKQor
KysgdG9vbHMvcmVncmVzc2lvbi90dW5hYmxlcy9pbnQvTWFrZWZpbGUJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNCBAQAorS01PRD0JdGVzdF9pbnRfdHVuYWJsZQorU1JDUz0JdGVzdF9pbnRfdHVu
YWJsZS5jCisKKy5pbmNsdWRlIDxic2Qua21vZC5taz4KSW5kZXg6IHRvb2xzL3JlZ3Jlc3Npb24v
dHVuYWJsZXMvTWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdG9vbHMvcmVncmVzc2lvbi90dW5hYmxl
cy9NYWtlZmlsZQkocmV2aXNpb24gMCkKKysrIHRvb2xzL3JlZ3Jlc3Npb24vdHVuYWJsZXMvTWFr
ZWZpbGUJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKK1NVQkRJUj0JCXRvb2xzCQlcCisJ
CWludCB1aW50CVwKKwkJbG9uZyB1bG9uZwlcCisJCXBvaW50ZXIJCVwKKwkJcXVhZCB1cXVhZAlc
CisJCXNpemUJCVwKKwkJc3RyaW5nCQlcCisJCXN1ZmZpeAkJXAorCisuaW5jbHVkZSA8YnNkLnN1
YmRpci5taz4K
--001485ea873c7936730492c421bb--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?AANLkTik-zV67LYAbwStXPJ5YoK2j-rDwvyEAc3H5nGD0>