Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 2 Sep 2012 23:01:09 -0700
From:      Garrett Cooper <yanegomi@gmail.com>
To:        freebsd-hackers@freebsd.org
Cc:        "freebsd-arch@FreeBSD.org Arch" <freebsd-arch@freebsd.org>
Subject:   [CFT/RFC]: refactor bsd.prog.mk to understand multiple programs instead of a singular program
Message-ID:  <CAGH67wRkOmy7rWLkxXnT2155PuSQpwOMyu7dTAKeO1WW2dju7g@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
--f46d04447dff4b7a4504c8c5de50
Content-Type: text/plain; charset=ISO-8859-1

Hello,
    I've been a bit busy working on porting over ATF from NetBSD, and
one of the pieces that's currently not available in FreeBSD that's
available in NetBSD is the ability to understand and compile multiple
programs. In order to do this I had to refactor bsd.prog.mk (a lot).
The attached patch is the end result so far, and I was wondering if
anyone could please review it and/or test it (outside of me doing so).
I wrote over 40 tests, but it's not exercising everything, and I would
like for someone to please review/test this out who has an interest in
NLS support (ala bsd.nls.mk) in particular. AFAICT this is the only
gap that I couldn't resolve right away (there isn't a ton of recent
documentation on how to use bsd.nls.mk).
    I'll run a micro benchmark and buildworld a few times (in
progress) with and without the change to measure the performance
effect.
    Any assistance would be much appreciated.
Thanks!
-Garrett

--f46d04447dff4b7a4504c8c5de50
Content-Type: application/octet-stream; 
	name="share-mk-bsd-prog-mk-CURRENT.patch"
Content-Disposition: attachment; filename="share-mk-bsd-prog-mk-CURRENT.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_h6n5s8au0

LS0tIHNoYXJlL21rL2JzZC5wcm9nLm1rCTIwMTItMDktMDEgMTQ6MzA6MTUuOTIxNzk1NTU0IC0w
NzAwCisrKyBzaGFyZS9tay9ic2QucHJvZy5tawkyMDEyLTA5LTAyIDIyOjMxOjU5LjkxNTc0MzI2
OCAtMDcwMApAQCAtNSwxOTUgKzUsMjc3IEBACiAKIC5TVUZGSVhFUzogLm91dCAubyAuYyAuY2Mg
LmNwcCAuY3h4IC5DIC5tIC55IC5sIC5sbiAucyAuUyAuYXNtCiAKLSMgWFhYIFRoZSB1c2Ugb2Yg
Q09QVFMgaW4gbW9kZXJuIG1ha2VmaWxlcyBpcyBkaXNjb3VyYWdlZC4KLS5pZiBkZWZpbmVkKENP
UFRTKQotQ0ZMQUdTKz0ke0NPUFRTfQotLmVuZGlmCisjIExlZ2FjeSBrbm9icworLmlmIGRlZmlu
ZWQoUFJPRykgfHwgZGVmaW5lZChQUk9HX0NYWCkKKy4gaWYgZGVmaW5lZChQUk9HKQorUFJPR1M9
CQkke1BST0d9CisuIGVuZGlmCisuIGlmIGRlZmluZWQoUFJPR19DWFgpCitQUk9HUz0JCSR7UFJP
R19DWFh9CitQUk9HU19DWFg9CSR7UFJPR19DWFh9CisuIGVuZGlmCisjIExvb3Agb25jZSB0byBr
ZWVwIHBhdHRlcm4gYW5kIGF2b2lkIG5hbWVzcGFjZSBwb2xsdXRpb24KKy4gZm9yIF9QIGluICR7
UFJPR1N9CisuICBpZiAhZGVmaW5lZChNQU4pCisuICAgZm9yIHNlY3QgaW4gMSAxYW91dCAyIDMg
NCA1IDYgNyA4IDkKKy4gICAgaWYgZGVmaW5lZChNQU4ke3NlY3R9KQorTUFOLiR7X1B9PQkke01B
TiR7c2VjdH19CisuICAgIGVuZGlmCisuICAgZW5kZm9yCisuICBlbmRpZiAjICFkZWZpbmVkKE1B
TikKK01BTi4ke19QfT89CSR7X1B9LjEKKy4gIGlmIGRlZmluZWQoTkxTTkFNRSkgJiYgIWVtcHR5
KE5MU05BTUUpCitOTFNOQU1FLiR7UH06PQkke05MU05BTUV9CisuICBlbmRpZgorLiAgaWYgZGVm
aW5lZChQUkVDSU9VU1BST0cpCitQUkVDSU9VU1BST0cuJHtfUH09CisuICBlbmRpZgorLiAgaWYg
ZGVmaW5lZChQUk9HTkFNRSkKK1BST0dOQU1FLiR7X1B9PQkke1BST0dOQU1FfQorLiAgZW5kaWYK
Ky4gIGlmIGRlZmluZWQoU1JDUykKK1NSQ1MuJHtfUH06PQkke1NSQ1N9CisuICBlbmRpZgorLiBl
bmRmb3IKKy5lbHNlICMgIWRlZmluZWQoUFJPRykgJiYgIWRlZmluZWQoUFJPR19DWFgpCisuIGlm
IGRlZmluZWQoUFJPR1NfQ1hYKSAmJiAhZW1wdHkoUFJPR1NfQ1hYKQorUFJPR1MrPQkJJHtQUk9H
U19DWFh9CisuIGVuZGlmCisuZW5kaWYgIyBkZWZpbmVkKFBST0cpIHx8IGRlZmluZWQoUFJPR19D
WFgpCisKKy5pZiBkZWZpbmVkKFBST0dTX0NYWCkgJiYgIWVtcHR5KFBST0dTX0NYWCkKKy4gZm9y
IF9QIGluICR7UFJPR1NfQ1hYfQorUFJPR19DWFguJHtfUH09CisuIGVuZGZvcgorLmVuZGlmCisK
KyMgQXZvaWQgcmVjdXJzaXZlIHZhcmlhYmxlcy4gSXQgc2hvdWxkbid0IGJlIHVzZWQgdGhpcyB3
YXkgd2l0aCAke1BST0dTfSBlaXRoZXIKKy51bmRlZiBOTFNOQU1FCisKKyMgU2V0dXAgZ2xvYmFs
IENGTEFHUywgQ1hYRkxBR1MsIGFuZCBMREZMQUdTCitDRkxBR1M/PQorQ1hYRkxBR1M/PQorRFBB
REQ/PQorTERBREQ/PQorTERGTEFHUz89CiAKLS5pZiAke01LX0FTU0VSVF9ERUJVR30gPT0gIm5v
IgotQ0ZMQUdTKz0gLUROREVCVUcKLU5PX1dFUlJPUj0KKy5pZiBkZWZpbmVkKENPUFRTKQorQ0ZM
QUdTKz0JJHtDT1BUU30KIC5lbmRpZgogCiAuaWYgZGVmaW5lZChERUJVR19GTEFHUykKLUNGTEFH
Uys9JHtERUJVR19GTEFHU30KLUNYWEZMQUdTKz0ke0RFQlVHX0ZMQUdTfQotCi0uaWYgJHtNS19D
VEZ9ICE9ICJubyIgJiYgJHtERUJVR19GTEFHUzpNLWd9ICE9ICIiCi1DVEZGTEFHUys9IC1nCi0u
ZW5kaWYKKy4gaWYgJHtNS19DVEZ9ICE9ICJubyIgJiYgJHtERUJVR19GTEFHUzpNLWd9ICE9ICIi
CitDVEZGTEFHUys9CS1nCisuIGVuZGlmCitDRkxBR1MrPQktRE5ERUJVRworQ0ZMQUdTKz0JJHtE
RUJVR19GTEFHU30KK0NYWEZMQUdTKz0JJHtERUJVR19GTEFHU30KIC5lbmRpZgogCi0uaWYgZGVm
aW5lZChDUlVOQ0hfQ0ZMQUdTKQotQ0ZMQUdTKz0ke0NSVU5DSF9DRkxBR1N9Ci0uZW5kaWYKK1NU
UklQPz0JCS1zCiAKLS5pZiAhZGVmaW5lZChERUJVR19GTEFHUykKLVNUUklQPz0JLXMKLS5lbmRp
ZgotCi0uaWYgZGVmaW5lZChOT19TSEFSRUQpICYmICgke05PX1NIQVJFRH0gIT0gIm5vIiAmJiAk
e05PX1NIQVJFRH0gIT0gIk5PIikKLUxERkxBR1MrPSAtc3RhdGljCi0uZW5kaWYKLQotLmlmIGRl
ZmluZWQoUFJPR19DWFgpCi1QUk9HPQkke1BST0dfQ1hYfQotLmVuZGlmCi0KLS5pZiBkZWZpbmVk
KFBST0cpCi0uaWYgZGVmaW5lZChTUkNTKQotCi1PQkpTKz0gICR7U1JDUzpOKi5oOlI6Uy8kLy5v
L2d9Ci0KLS5pZiB0YXJnZXQoYmVmb3JlbGlua2luZykKLSR7UFJPR306ICR7T0JKU30gYmVmb3Jl
bGlua2luZwotLmVsc2UKLSR7UFJPR306ICR7T0JKU30KLS5lbmRpZgotLmlmIGRlZmluZWQoUFJP
R19DWFgpCi0JJHtDWFh9ICR7Q1hYRkxBR1N9ICR7TERGTEFHU30gLW8gJHsuVEFSR0VUfSAke09C
SlN9ICR7TERBRER9Ci0uZWxzZQotCSR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IC1vICR7LlRB
UkdFVH0gJHtPQkpTfSAke0xEQUREfQotLmVuZGlmCi0uaWYgJHtNS19DVEZ9ICE9ICJubyIKLQkk
e0NURk1FUkdFfSAke0NURkZMQUdTfSAtbyAkey5UQVJHRVR9ICR7T0JKU30KKy5pZiAke01LX0FT
U0VSVF9ERUJVR30gPT0gIm5vIgorQ0ZMQUdTKz0JLUROREVCVUcKK05PX1dFUlJPUj0KIC5lbmRp
ZgogCi0uZWxzZQkjICFkZWZpbmVkKFNSQ1MpCisuZm9yIF9QIGluICR7UFJPR1N9CiAKLS5pZiAh
dGFyZ2V0KCR7UFJPR30pCi0uaWYgZGVmaW5lZChQUk9HX0NYWCkKLVNSQ1M9CSR7UFJPR30uY2MK
LS5lbHNlCi1TUkNTPQkke1BST0d9LmMKLS5lbmRpZgorQ0ZMQUdTLiR7X1B9CT89CitDWFhGTEFH
Uy4ke19QfQk/PQorTERGTEFHUy4ke19QfQk/PQorLiBpZiAhZGVmaW5lZChOTFNESVIuJHtfUH0p
CitOTFNESVIuJHtfUH06PQkke05MU0RJUn0KKy4gZW5kaWYKKy4gdW5kZWYgTkxTRElSCisKKy4g
aWYgKGRlZmluZWQoTk9fU0hBUkVEKSAmJiAke05PX1NIQVJFRH0gIT0gIm5vIikgfHwgKGRlZmlu
ZWQoTk9fU0hBUkVELiR7X1B9KSAmJiAke05PX1NIQVJFRC4ke19QfX0gIT0gIm5vIikKK0xERkxB
R1MuJHtfUH0rPSAtc3RhdGljCisuIGVuZGlmCisKKy4gaWYgZGVmaW5lZChTUkNTLiR7X1B9KQor
CitPQkpTLiR7X1B9PQkke1NSQ1MuJHtfUH06TiouaDpSOlMvJC8uby9nfQorCisuICBpZiB0YXJn
ZXQoYmVmb3JlbGlua2luZykKKyR7X1B9OiAke09CSlMuJHtfUH19IGJlZm9yZWxpbmtpbmcKKy4g
IGVsc2UKKyR7X1B9OiAke09CSlMuJHtfUH19CisuICBlbmRpZgorLiAgaWYgZGVmaW5lZChQUk9H
X0NYWC4ke19QfSkKKwkke0NYWH0gJHtDWFhGTEFHU30gJHtDWFhGTEFHUy4ke19QfX0gJHtMREZM
QUdTfSAke0xERkxBR1MuJHtfUH19IC1vICR7LlRBUkdFVH0gJHtPQkpTLiR7X1B9fSAke0xEQURE
fSAke0xEQURELiR7X1B9fQorLiAgZWxzZQorCSR7Q0N9ICR7Q0ZMQUdTfSAke0NGTEFHUy4ke19Q
fX0gJHtMREZMQUdTfSAke0xERkxBR1MuJHtfUH19IC1vICR7LlRBUkdFVH0gJHtPQkpTLiR7X1B9
fSAke0xEQUREfSAke0xEQURELiR7X1B9fQorLiAgZW5kaWYKKy4gIGlmICR7TUtfQ1RGfSAhPSAi
bm8iCisJJHtDVEZNRVJHRX0gJHtDVEZGTEFHU30gLW8gJHsuVEFSR0VUfSAke09CSlMuJHtfUH19
CisuICBlbmRpZgorCisuIGVsc2UgIyAhZGVmaW5lZChTUkNTLiR7X1B9KQorCisuICBpZiAhdGFy
Z2V0KCR7X1B9KQorLiAgIGlmIGRlZmluZWQoUFJPR19DWFguJHtfUH0pCitTUkNTLiR7X1B9Pz0J
JHtfUH0uY2MKKy4gICBlbHNlCitTUkNTLiR7X1B9Pz0JJHtfUH0uYworLiAgIGVuZGlmCiAKICMg
QWx3YXlzIG1ha2UgYW4gaW50ZXJtZWRpYXRlIG9iamVjdCBmaWxlIGJlY2F1c2U6CiAjIC0gaXQg
c2F2ZXMgdGltZSByZWJ1aWxkaW5nIHdoZW4gb25seSB0aGUgbGlicmFyeSBoYXMgY2hhbmdlZAog
IyAtIHRoZSBuYW1lIG9mIHRoZSBvYmplY3QgZ2V0cyBwdXQgaW50byB0aGUgZXhlY3V0YWJsZSBz
eW1ib2wgdGFibGUgaW5zdGVhZCBvZgogIyAgIHRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdGVtcG9y
YXJ5IG9iamVjdC4KICMgLSBpdCdzIHVzZWZ1bCB0byBrZWVwIG9iamVjdHMgYXJvdW5kIGZvciBj
cnVuY2hpbmcuCi1PQkpTPQkke1BST0d9Lm8KK09CSlMuJHtfUH09CSR7X1B9Lm8KIAotLmlmIHRh
cmdldChiZWZvcmVsaW5raW5nKQotJHtQUk9HfTogJHtPQkpTfSBiZWZvcmVsaW5raW5nCi0uZWxz
ZQotJHtQUk9HfTogJHtPQkpTfQotLmVuZGlmCi0uaWYgZGVmaW5lZChQUk9HX0NYWCkKLQkke0NY
WH0gJHtDWFhGTEFHU30gJHtMREZMQUdTfSAtbyAkey5UQVJHRVR9ICR7T0JKU30gJHtMREFERH0K
LS5lbHNlCi0JJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30gLW8gJHsuVEFSR0VUfSAke09CSlN9
ICR7TERBRER9Ci0uZW5kaWYKLS5pZiAke01LX0NURn0gIT0gIm5vIgotCSR7Q1RGTUVSR0V9ICR7
Q1RGRkxBR1N9IC1vICR7LlRBUkdFVH0gJHtPQkpTfQotLmVuZGlmCi0uZW5kaWYKKy4gICBpZiB0
YXJnZXQoYmVmb3JlbGlua2luZykKKyR7X1B9OiAke09CSlMuJHtfUH19IGJlZm9yZWxpbmtpbmcK
Ky4gICBlbHNlCiske19QfTogJHtPQkpTLiR7X1B9fQorLiAgIGVuZGlmICMgdGFyZ2V0KGJlZm9y
ZWxpbmtpbmcpCisuICAgaWYgZGVmaW5lZChQUk9HX0NYWC4ke19QfSkKKwkke0NYWH0gJHtDWFhG
TEFHU30gJHtDWFhGTEFHUy4ke19QfX0gJHtMREZMQUdTfSAke0xERkxBR1MuJHtfUH19IC1vICR7
LlRBUkdFVH0gJHtPQkpTLiR7X1B9fSAke0xEQUREfSAke0xEQURELiR7X1B9fQorLiAgIGVsc2UK
Kwkke0NDfSAke0NGTEFHU30gJHtDRkxBR1MuJHtfUH19ICR7TERGTEFHU30gJHtMREZMQUdTLiR7
X1B9fSAtbyAkey5UQVJHRVR9ICR7T0JKUy4ke19QfX0gJHtMREFERH0gJHtMREFERC4ke19QfX0K
Ky4gICBlbmRpZgorLiAgIGlmICR7TUtfQ1RGfSAhPSAibm8iCisJJHtDVEZNRVJHRX0gJHtDVEZG
TEFHU30gLW8gJHsuVEFSR0VUfSAke09CSlMuJHtfUH19CisuICAgZW5kaWYKKworLiAgZW5kaWYg
IyAhdGFyZ2V0KCR7X1B9KQorCisuIGVuZGlmICMgZGVmaW5lZChTUkNTLiR7X1B9KQorCisjIE5l
ZWRlZCBpbiBic2QuZGVwLm1rIC4KKy4gaWYgIWVtcHR5KFNSQ1MuJHtfUH0pCitTUkNTKz0JJHtT
UkNTLiR7X1B9fQorLiBlbmRpZgogCi0uZW5kaWYKK0NMRUFORklMRVMrPSAJJHtPQkpTLiR7X1B9
fQogCi0uaWYJJHtNS19NQU59ICE9ICJubyIgJiYgIWRlZmluZWQoTUFOKSAmJiBcCi0JIWRlZmlu
ZWQoTUFOMSkgJiYgIWRlZmluZWQoTUFOMikgJiYgIWRlZmluZWQoTUFOMykgJiYgXAotCSFkZWZp
bmVkKE1BTjQpICYmICFkZWZpbmVkKE1BTjUpICYmICFkZWZpbmVkKE1BTjYpICYmIFwKLQkhZGVm
aW5lZChNQU43KSAmJiAhZGVmaW5lZChNQU44KSAmJiAhZGVmaW5lZChNQU45KSAmJiBcCi0JIWRl
ZmluZWQoTUFOMWFvdXQpCi1NQU49CSR7UFJPR30uMQotTUFOMT0JJHtNQU59Ci0uZW5kaWYKLS5l
bmRpZgorLmVuZGZvciAjIGZvciBfUCBpbiAke1BST0dTfQorCithbGw6IG9iandhcm4gJHtQUk9H
U30gJHtTQ1JJUFRTfQogCi1hbGw6IG9iandhcm4gJHtQUk9HfSAke1NDUklQVFN9CiAuaWYgJHtN
S19NQU59ICE9ICJubyIKKy4gZm9yIF9QIGluICR7UFJPR1N9CisuICBpZiBkZWZpbmVkKE1BTi4k
e19QfSkKK01BTis9CSR7TUFOLiR7X1B9fQorLiAgZW5kaWYKKy4gZW5kZm9yCiBhbGw6IF9tYW5w
YWdlcwogLmVuZGlmCiAKLS5pZiBkZWZpbmVkKFBST0cpCi1DTEVBTkZJTEVTKz0gJHtQUk9HfQot
LmVuZGlmCi0KLS5pZiBkZWZpbmVkKE9CSlMpCi1DTEVBTkZJTEVTKz0gJHtPQkpTfQotLmVuZGlm
CitDTEVBTkZJTEVTKz0gJHtQUk9HU30KIAogLmluY2x1ZGUgPGJzZC5saWJuYW1lcy5taz4KIAot
LmlmIGRlZmluZWQoUFJPRykKIF9FWFRSQURFUEVORDoKLS5pZiBkZWZpbmVkKExERkxBR1MpICYm
ICFlbXB0eShMREZMQUdTOk0tbm9zdGRsaWIpCi0uaWYgZGVmaW5lZChEUEFERCkgJiYgIWVtcHR5
KERQQUREKQotCWVjaG8gJHtQUk9HfTogJHtEUEFERH0gPj4gJHtERVBFTkRGSUxFfQotLmVuZGlm
Ci0uZWxzZQotCWVjaG8gJHtQUk9HfTogJHtMSUJDfSAke0RQQUREfSA+PiAke0RFUEVOREZJTEV9
Ci0uaWYgZGVmaW5lZChQUk9HX0NYWCkKLS5pZiAhZW1wdHkoQ1hYRkxBR1M6TS1zdGRsaWI9bGli
YysrKQotCWVjaG8gJHtQUk9HfTogJHtMSUJDUExVU1BMVVN9ID4+ICR7REVQRU5ERklMRX0KLS5l
bHNlCi0JZWNobyAke1BST0d9OiAke0xJQlNURENQTFVTUExVU30gPj4gJHtERVBFTkRGSUxFfQot
LmVuZGlmCi0uZW5kaWYKLS5lbmRpZgotLmVuZGlmCisuZm9yIF9QIGluICR7UFJPR1N9CisuIGlm
ICFlbXB0eShMREZMQUdTOk0tbm9zdGRsaWIpIHx8IChkZWZpbmVkKExERkxBR1MuJHtfUH0pICYm
ICFlbXB0eShMREZMQUdTLiR7X1B9Ok0tbm9zdGRsaWIpKQorCWVjaG8gJHtfUH06ICR7RFBBRER9
ICR7RFBBREQuJHtfUH19ID4+ICR7REVQRU5ERklMRX0KKy4gZWxzZQorCWVjaG8gJHtfUH06ICR7
TElCQ30gJHtEUEFERH0gJHtEUEFERC4ke19QfX0gPj4gJHtERVBFTkRGSUxFfQorLiAgaWYgZGVm
aW5lZChQUk9HX0NYWC4ke19QfSkKKy4gICBpZiAhZW1wdHkoQ1hYRkxBR1M6TS1zdGRsaWI9bGli
YysrKSB8fCAhZW1wdHkoQ1hYRkxBR1MuJHtfUH06TS1zdGRsaWI9bGliYysrKQorCWVjaG8gJHtf
UH06ICR7TElCQ1BMVVNQTFVTfSA+PiAke0RFUEVOREZJTEV9CisuICAgZWxzZQorCWVjaG8gJHtf
UH06ICR7TElCU1REQ1BMVVNQTFVTfSA+PiAke0RFUEVOREZJTEV9CisuICAgZW5kaWYKKy4gIGVu
ZGlmCisuIGVuZGlmCisuZW5kZm9yCiAKLS5pZiAhdGFyZ2V0KGluc3RhbGwpCisuZm9yIF9QIGlu
ICR7UFJPR1N9CitJTlNUQUxMRkxBR1MuJHtfUH0/PSAke0lOU1RBTExGTEFHU30KIAotLmlmIGRl
ZmluZWQoUFJFQ0lPVVNQUk9HKQotLmlmICFkZWZpbmVkKE5PX0ZTQ0hHKQotSU5TVEFMTEZMQUdT
Kz0gLWZzY2hnCi0uZW5kaWYKLUlOU1RBTExGTEFHUys9IC1TCi0uZW5kaWYKKy4gaWYgIXRhcmdl
dChpbnN0YWxsKQorLiAgaWYgZGVmaW5lZChQUkVDSU9VU1BST0cuJHtfUH0pCisuICAgaWYgIWRl
ZmluZWQoTk9fRlNDSEcpICYmICFkZWZpbmVkKE5PX0ZTQ0hHLiR7X1B9KQorSU5TVEFMTEZMQUdT
LiR7X1B9Kz0gLWZzY2hnCisuICAgZW5kaWYKK0lOU1RBTExGTEFHUy4ke19QfSs9IC1TCisuICBl
bmRpZgorLiBlbmRpZgorCitCSU5ESVIuJHtfUH0/PQkJJHtCSU5ESVJ9CitCSU5HUlAuJHtfUH0/
PQkJJHtCSU5HUlB9CitCSU5NT0RFLiR7X1B9Pz0JCSR7QklOTU9ERX0KK0JJTk9XTi4ke19QfT89
CQkke0JJTk9XTn0KIAotX0lOU1RBTExGTEFHUzo9CSR7SU5TVEFMTEZMQUdTfQotLmZvciBpZSBp
biAke0lOU1RBTExGTEFHU19FRElUfQotX0lOU1RBTExGTEFHUzo9CSR7X0lOU1RBTExGTEFHUyR7
aWV9fQogLmVuZGZvcgogCi0uaWYgIXRhcmdldChyZWFsaW5zdGFsbCkgJiYgIWRlZmluZWQoSU5U
RVJOQUxQUk9HKQotcmVhbGluc3RhbGw6IF9wcm9naW5zdGFsbAotLk9SREVSOiBiZWZvcmVpbnN0
YWxsIF9wcm9naW5zdGFsbAotX3Byb2dpbnN0YWxsOgotLmlmIGRlZmluZWQoUFJPRykKLS5pZiBk
ZWZpbmVkKFBST0dOQU1FKQotCSR7SU5TVEFMTH0gJHtTVFJJUH0gLW8gJHtCSU5PV059IC1nICR7
QklOR1JQfSAtbSAke0JJTk1PREV9IFwKLQkgICAgJHtfSU5TVEFMTEZMQUdTfSAke1BST0d9ICR7
REVTVERJUn0ke0JJTkRJUn0vJHtQUk9HTkFNRX0KLS5lbHNlCi0JJHtJTlNUQUxMfSAke1NUUklQ
fSAtbyAke0JJTk9XTn0gLWcgJHtCSU5HUlB9IC1tICR7QklOTU9ERX0gXAotCSAgICAke19JTlNU
QUxMRkxBR1N9ICR7UFJPR30gJHtERVNURElSfSR7QklORElSfQotLmVuZGlmCi0uZW5kaWYKLS5l
bmRpZgkjICF0YXJnZXQocmVhbGluc3RhbGwpCi0KLS5pZiBkZWZpbmVkKFNDUklQVFMpICYmICFl
bXB0eShTQ1JJUFRTKQotcmVhbGluc3RhbGw6IF9zY3JpcHRzaW5zdGFsbAotLk9SREVSOiBiZWZv
cmVpbnN0YWxsIF9zY3JpcHRzaW5zdGFsbAotCi1TQ1JJUFRTRElSPz0JJHtCSU5ESVJ9Ci1TQ1JJ
UFRTT1dOPz0JJHtCSU5PV059Ci1TQ1JJUFRTR1JQPz0JJHtCSU5HUlB9Ci1TQ1JJUFRTTU9ERT89
CSR7QklOTU9ERX0KLQotLmZvciBzY3JpcHQgaW4gJHtTQ1JJUFRTfQotLmlmIGRlZmluZWQoU0NS
SVBUU05BTUUpCi1TQ1JJUFRTTkFNRV8ke3NjcmlwdDpUfT89CSR7U0NSSVBUU05BTUV9Ci0uZWxz
ZQotU0NSSVBUU05BTUVfJHtzY3JpcHQ6VH0/PQkke3NjcmlwdDpUOlJ9Ci0uZW5kaWYKLVNDUklQ
VFNESVJfJHtzY3JpcHQ6VH0/PQkke1NDUklQVFNESVJ9Ci1TQ1JJUFRTT1dOXyR7c2NyaXB0OlR9
Pz0JJHtTQ1JJUFRTT1dOfQotU0NSSVBUU0dSUF8ke3NjcmlwdDpUfT89CSR7U0NSSVBUU0dSUH0K
LVNDUklQVFNNT0RFXyR7c2NyaXB0OlR9Pz0JJHtTQ1JJUFRTTU9ERX0KLV9zY3JpcHRzaW5zdGFs
bDogX1NDUklQVFNJTlNfJHtzY3JpcHQ6VH0KLV9TQ1JJUFRTSU5TXyR7c2NyaXB0OlR9OiAke3Nj
cmlwdH0KKy5pZiAhdGFyZ2V0KGluc3RhbGwpCisKKy4gZm9yIF9QIGluICR7UFJPR1N9CisKKy4g
IGlmICFkZWZpbmVkKElOVEVSTkFMUFJPRy4ke19QfSkKKworLk9SREVSOiBiZWZvcmVpbnN0YWxs
IF9wcm9naW5zdGFsbC4ke19QfQorX3Byb2dpbnN0YWxsLiR7X1B9OgorLiAgIGlmIGRlZmluZWQo
UFJPR05BTUUuJHtfUH0pCisJJHtJTlNUQUxMfSAke1NUUklQfSAtbyAke0JJTk9XTi4ke19QfX0g
LWcgJHtCSU5HUlAuJHtfUH19IFwKKwkgICAgLW0gJHtCSU5NT0RFLiR7X1B9fSAke0lOU1RBTExG
TEFHUy4ke19QfX0gJHtfUH0gXAorCSAgICAke0RFU1RESVJ9JHtCSU5ESVIuJHtfUH19LyR7UFJP
R05BTUUuJHtfUH19CisuICAgZWxzZQorCSR7SU5TVEFMTH0gJHtTVFJJUH0gLW8gJHtCSU5PV04u
JHtfUH19IC1nICR7QklOR1JQLiR7X1B9fSBcCisJICAgIC1tICR7QklOTU9ERS4ke19QfX0gJHtJ
TlNUQUxMRkxBR1MuJHtfUH19ICR7X1B9IFwKKwkgICAgJHtERVNURElSfSR7QklORElSLiR7X1B9
fQorLiAgIGVuZGlmIAorCityZWFsaW5zdGFsbDogX3Byb2dpbnN0YWxsLiR7X1B9CisKKy4gIGVu
ZGlmICMgIWRlZmluZWQoSU5URVJOQUxQUk9HLiR7X1B9KQorCisuIGVuZGZvciAjIGZvciBfUCBp
biAke1BST0dTfQorCisuIGlmIGRlZmluZWQoU0NSSVBUUykgJiYgIWVtcHR5KFNDUklQVFMpCitT
Q1JJUFRTRElSPz0JCSR7QklORElSfQorU0NSSVBUU09XTj89CQkke0JJTk9XTn0KK1NDUklQVFNH
UlA/PQkJJHtCSU5HUlB9CitTQ1JJUFRTTU9ERT89CQkke0JJTk1PREV9CisKK19fc2NyaXB0c2lu
c3RhbGw6IC5VU0UKIAkke0lOU1RBTEx9IC1vICR7U0NSSVBUU09XTl8key5BTExTUkM6VH19IFwK
LQkgICAgLWcgJHtTQ1JJUFRTR1JQXyR7LkFMTFNSQzpUfX0gLW0gJHtTQ1JJUFRTTU9ERV8key5B
TExTUkM6VH19IFwKKwkgICAgLWcgJHtTQ1JJUFRTR1JQXyR7LkFMTFNSQzpUfX0gXAorCSAgICAt
bSAke1NDUklQVFNNT0RFXyR7LkFMTFNSQzpUfX0gXAogCSAgICAkey5BTExTUkN9IFwKLQkgICAg
JHtERVNURElSfSR7U0NSSVBUU0RJUl8key5BTExTUkM6VH19LyR7U0NSSVBUU05BTUVfJHsuQUxM
U1JDOlR9fQotLmVuZGZvcgotLmVuZGlmCisJICAgICR7LlRBUkdFVH0KKworLiAgZm9yIFMgaW4g
JHtTQ1JJUFRTfQorCityZWFsaW5zdGFsbDogc2NyaXB0c2luc3RhbGwKKy5PUkRFUjogYmVmb3Jl
aW5zdGFsbCBzY3JpcHRzaW5zdGFsbAogCi1OTFNOQU1FPz0JJHtQUk9HfQorLiAgIGlmIGRlZmlu
ZWQoU0NSSVBUU05BTUUpCitTQ1JJUFRTTkFNRV8ke1N9Pz0JJHtTQ1JJUFRTTkFNRX0KKy4gICBl
bHNlCitTQ1JJUFRTTkFNRV8ke1N9Pz0JJHtTOlQ6Un0KKy4gICBlbmRpZgorCitTQ1JJUFRTRElS
XyR7U30/PQkke1NDUklQVFNESVJ9CitTQ1JJUFRTT1dOXyR7U30/PQkke1NDUklQVFNPV059CitT
Q1JJUFRTR1JQXyR7U30/PQkke1NDUklQVFNHUlB9CitTQ1JJUFRTTU9ERV8ke1N9Pz0JJHtTQ1JJ
UFRTTU9ERX0KKworc2NyaXB0c2luc3RhbGw6ICR7REVTVERJUn0ke1NDUklQVFNESVJfJHtTfX0v
JHtTQ1JJUFRTTkFNRV8ke1N9fQorCiske0RFU1RESVJ9JHtTQ1JJUFRTRElSXyR7U319LyR7U0NS
SVBUU05BTUVfJHtTfX06IF9fc2NyaXB0c2luc3RhbGwgJHtTfQorCisuICBlbmRmb3IgIyBmb3Ig
UyBpbiAke1NDUklQVFN9CisKKy4gZW5kaWYgIyBkZWZpbmVkKFNDUklQVFMpICYmICFlbXB0eShT
Q1JJUFRTKQorCisuZW5kaWYgIyAhdGFyZ2V0KGluc3RhbGwpCisKKyMgV3JhcCBic2QubmxzLm1r
IGJlY2F1c2UgSSBjYW4ndCBmb3JjZSB0aGF0IE1ha2VmaWxlIHNuaXBwZXQgdG8gd29yayBvbmx5
IHdpdGgKKyMgJHtQUk9HU30uCisuZm9yIF9QIGluICR7UFJPR1N9CitOTFNOQU1FLiR7X1B9Pz0J
JHtfUH0KK05MUzo9CQkke05MUy4ke19QfX0KK05MU0RJUjo9CSR7TkxTRElSLiR7X1B9fQorTkxT
TkFNRTo9CSR7TkxTTkFNRS4ke19QfX0KIC5pbmNsdWRlIDxic2QubmxzLm1rPgorLmVuZGZvcgog
CiAuaW5jbHVkZSA8YnNkLmZpbGVzLm1rPgogLmluY2x1ZGUgPGJzZC5pbmNzLm1rPgpAQCAtMjAy
LDI1ICsyODQsMzIgQEAKIC5pZiAke01LX01BTn0gIT0gIm5vIgogcmVhbGluc3RhbGw6IF9tYW5p
bnN0YWxsCiAuT1JERVI6IGJlZm9yZWluc3RhbGwgX21hbmluc3RhbGwKLS5lbmRpZgogCisuaW5j
bHVkZSA8YnNkLm1hbi5taz4KIC5lbmRpZgogCiAuaWYgIXRhcmdldChsaW50KQotbGludDogJHtT
UkNTOk0qLmN9Ci0uaWYgZGVmaW5lZChQUk9HKQotCSR7TElOVH0gJHtMSU5URkxBR1N9ICR7Q0ZM
QUdTOk0tW0RJVV0qfSAkey5BTExTUkN9Ci0uZW5kaWYKLS5lbmRpZgorLiBmb3IgX1AgaW4gJHtQ
Uk9HU30KKy4gIGlmICF0YXJnZXQobGludC4ke19QfSkKKy4gICBpZiBkZWZpbmVkKFBST0dfQ1hY
LiR7X1B9KQorbGludC4ke19QfToKKy4gICBlbHNlCitsaW50LiR7X1B9OiAke1NSQ1MuJHtfUH06
TSouY30KKwkke0xJTlR9ICR7TElOVEZMQUdTfSAke0NGTEFHUzpNLVtESVVdKn0gJHtDRkxBR1Mu
JHtfUH06TS1bRElVXSp9ICR7LkFMTFNSQ30KKy4gICBlbmRpZgorLiAgZW5kaWYKIAotLmlmICR7
TUtfTUFOfSAhPSAibm8iCi0uaW5jbHVkZSA8YnNkLm1hbi5taz4KLS5lbmRpZgorbGludDogbGlu
dC4ke19QfQorCisuIGVuZGZvcgorLmVuZGlmICMgIXRhcmdldChsaW50KQogCiAuaW5jbHVkZSA8
YnNkLmRlcC5taz4KIAotLmlmIGRlZmluZWQoUFJPRykgJiYgIWV4aXN0cygkey5PQkpESVJ9LyR7
REVQRU5ERklMRX0pCi0ke09CSlN9OiAke1NSQ1M6TSouaH0KKy5pZiAhZXhpc3RzKCR7Lk9CSkRJ
Un0vJHtERVBFTkRGSUxFfSkKKy4gZm9yIF9QIGluICR7UFJPR1N9Ciske09CSlMuJHtfUH19OiAk
e1NSQ1MuJHtfUH06TSouaH0KKy4gZW5kZm9yCiAuZW5kaWYKIAogLmluY2x1ZGUgPGJzZC5vYmou
bWs+Ci0tLSAvdXNyL3NyYy9zaGFyZS9tay9ic2QuUkVBRE1FCTIwMTItMDUtMjAgMTU6Mzc6NDAu
ODkzMDkyNTAxIC0wNzAwCisrKyBzaGFyZS9tay9ic2QuUkVBRE1FCTIwMTItMDktMDIgMjI6MjU6
NDguNDEwNzQ1MTYxIC0wNzAwCkBAIC0xLDUgKzEsNSBAQAogIwlAKCMpYnNkLlJFQURNRQk4LjIg
KEJlcmtlbGV5KSA0LzIvOTQKLSMgJEZyZWVCU0Q6IHN0YWJsZS85L3NoYXJlL21rL2JzZC5SRUFE
TUUgMjM1NTM0IDIwMTItMDUtMTcgMDc6NTk6MTVaIGpsaCAkCisjICRGcmVlQlNEOiBzcmMvc2hh
cmUvbWsvYnNkLlJFQURNRSx2IDEuMzcgMjAxMi8wNS8yNCAyMDowMDo1OCBtYXJjZWwgRXhwICQK
IAogVGhpcyBpcyB0aGUgUkVBRE1FIGZpbGUgZm9yIHRoZSAiaW5jbHVkZSIgZmlsZXMgZm9yIHRo
ZSBGcmVlQlNECiBzb3VyY2UgdHJlZS4gIFRoZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGluIC91c3Iv
c2hhcmUvbWssIGFuZCBhcmUgYnkKQEAgLTIwNyw5OCArMjA3LDE1NyBAQAogCiBJdCBzZXRzL3Vz
ZXMgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXM6CiAKLUJJTkdSUAkJQmluYXJ5IGdyb3VwLgorVmFy
aWFibGVzIGdsb2JhbCB0byBhbGwgcHJvZ3JhbXM6CiAKLUJJTk9XTgkJQmluYXJ5IG93bmVyLgor
Q0xFQU5GSUxFUwkJQWRkaXRpb25hbCBmaWxlcyB0byByZW1vdmUgYW5kCitDTEVBTkRJUlMJCWFk
ZGl0aW9uYWwgZGlyZWN0b3JpZXMgdG8gcmVtb3ZlIGR1cmluZyBjbGVhbiBhbmQgY2xlYW5kaXIK
KwkJCXRhcmdldHMuICAicm0gLWYiIGFuZCAicm0gLXJmIiB1c2VkIHJlc3BlY3RpdmVseS4KKwor
REVCVUdfRkxBR1MJCWRlYnVnZ2luZyBzcGVjaWZpYyBDRkxBR1MvTERGTEFHUzsgaWYgc2V0IGFu
eSBiaW5hcmllcworIAkJCXByb2R1Y2VkIHdpbGwgbm90IGJlIHN0cmlwcGVkLiAgU2VlIGFsc286
IFdJVEhfQ1RGCisKK0ZJTEVTCQkJQSBsaXN0IG9mIG5vbi1leGVjdXRhYmxlIGZpbGVzLgorCQkJ
VGhlIGluc3RhbGxhdGlvbiBpcyBjb250cm9sbGVkIGJ5IHRoZSBGSUxFU05BTUUsIEZJTEVTT1dO
LAorCQkJRklMRVNHUlAsIEZJTEVTTU9ERSwgRklMRVNESVIgdmFyaWFibGVzIHRoYXQgY2FuIGJl
CisJCQlmdXJ0aGVyIHNwZWNpYWxpemVkIGJ5IEZJTEVTPFZBUj5fPGZpbGU+LgorCitMSU5LUwkJ
CVRoZSBsaXN0IG9mIGJpbmFyeSBsaW5rczsgc2hvdWxkIGJlIGZ1bGwgcGF0aG5hbWVzLCB0aGUK
KwkJCWxpbmtlZC10byBmaWxlIGNvbWluZyBmaXJzdCwgZm9sbG93ZWQgYnkgdGhlIGxpbmtlZAor
CQkJZmlsZS4gIFRoZSBmaWxlcyBhcmUgaGFyZC1saW5rZWQuICBGb3IgZXhhbXBsZSwgdG8gbGlu
aworCQkJL2Jpbi90ZXN0IGFuZCAvYmluL1ssIHVzZToKIAotQklOTU9ERQkJQmluYXJ5IG1vZGUu
CisJCQlMSU5LUz0JJHtERVNURElSfS9iaW4vdGVzdCAke0RFU1RESVJ9L2Jpbi9bCiAKLUNMRUFO
RklMRVMJQWRkaXRpb25hbCBmaWxlcyB0byByZW1vdmUgYW5kCi1DTEVBTkRJUlMJYWRkaXRpb25h
bCBkaXJlY3RvcmllcyB0byByZW1vdmUgZHVyaW5nIGNsZWFuIGFuZCBjbGVhbmRpcgotCQl0YXJn
ZXRzLiAgInJtIC1mIiBhbmQgInJtIC1yZiIgdXNlZCByZXNwZWN0aXZlbHkuCitQUk9HCQkJVGhl
IG5hbWUgb2YgdGhlIHByb2dyYW0gdG8gYnVpbGQuICBJZiBub3Qgc3VwcGxpZWQsCisJCQlub3Ro
aW5nIGlzIGJ1aWx0LgogCi1DRkxBR1MJCUZsYWdzIHRvIHRoZSBjb21waWxlciB3aGVuIGNyZWF0
aW5nIEMgb2JqZWN0cy4KK1BST0dfQ1hYCQlJZiBkZWZpbmVkLCB0aGUgbmFtZSBvZiB0aGUgQysr
IHByb2dyYW0gdG8gYnVpbGQuICBBbHNvCisJCQljYXVzZXMgPGJzZC5wcm9nLm1rPiB0byBsaW5r
IHRoZSBwcm9ncmFtIHdpdGggdGhlCisJCQlzdGFuZGFyZCBDKysgbGlicmFyeS4gIFBST0dfQ1hY
IG92ZXJyaWRlcyB0aGUgdmFsdWUKKwkJCW9mIFBST0cgaWYgUFJPRyBpcyBhbHNvIHNldC4KIAot
RklMRVMJCUEgbGlzdCBvZiBub24tZXhlY3V0YWJsZSBmaWxlcy4KLQkJVGhlIGluc3RhbGxhdGlv
biBpcyBjb250cm9sbGVkIGJ5IHRoZSBGSUxFU05BTUUsIEZJTEVTT1dOLAotCQlGSUxFU0dSUCwg
RklMRVNNT0RFLCBGSUxFU0RJUiB2YXJpYWJsZXMgdGhhdCBjYW4gYmUKLQkJZnVydGhlciBzcGVj
aWFsaXplZCBieSBGSUxFUzxWQVI+XzxmaWxlPi4KK1NUUklQCQkJVGhlIGZsYWcgcGFzc2VkIHRv
IHRoZSBpbnN0YWxsIHByb2dyYW0gdG8gY2F1c2UgdGhlCisJCQliaW5hcnkgdG8gYmUgc3RyaXBw
ZWQuICBUaGlzIGlzIHRvIGJlIHVzZWQgd2hlbgorCQkJYnVpbGRpbmcgeW91ciBvd24gaW5zdGFs
bCBzY3JpcHQgc28gdGhhdCB0aGUgZW50aXJlCisJCQlzeXN0ZW0gY2FuIGJlIG1hZGUgc3RyaXBw
ZWQvbm90LXN0cmlwcGVkIHVzaW5nIGEKKwkJCXNpbmdsZSBrbm9iLgogCi1MREFERAkJQWRkaXRp
b25hbCBsb2FkZXIgb2JqZWN0cy4gIFVzdWFsbHkgdXNlZCBmb3IgbGlicmFyaWVzLgotCQlGb3Ig
ZXhhbXBsZSwgdG8gbG9hZCB3aXRoIHRoZSBjb21wYXRpYmlsaXR5IGFuZCB1dGlsaXR5Ci0JCWxp
YnJhcmllcywgdXNlOgorU1VCRElSCQkJQSBsaXN0IG9mIHN1YmRpcmVjdG9yaWVzIHRoYXQgc2hv
dWxkIGJlIGJ1aWx0IGFzIHdlbGwuCisJCQlFYWNoIG9mIHRoZSB0YXJnZXRzIHdpbGwgZXhlY3V0
ZSB0aGUgc2FtZSB0YXJnZXQgaW4gdGhlCisJCQlzdWJkaXJlY3Rvcmllcy4KIAotCQkJTERGSUxF
Uz0tbHV0aWwgLWxjb21wYXQKK1RoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGNhbiBiZSB0dW5lZCBm
b3Igc3BlY2lmaWMgcHJvZ3JhbSB1c2UgKHlvdSB3aWxsIG5lZWQKK3RvIHN1ZmZpeCB2YXJpYWJs
ZSBkZWNsYXJhdGlvbnMgd2l0aCAuJHtQUk9HfSwgZS5nLiBQUk9HPSBmb28gLT4gU1JDUy5mb28p
OgogCi1MREZMQUdTCQlBZGRpdGlvbmFsIGxvYWRlciBmbGFncy4KK0JJTkRJUgkJCUJpbmFyeSBk
aXJlY3RvcnkuCiAKLUxJTktTCQlUaGUgbGlzdCBvZiBiaW5hcnkgbGlua3M7IHNob3VsZCBiZSBm
dWxsIHBhdGhuYW1lcywgdGhlCi0JCWxpbmtlZC10byBmaWxlIGNvbWluZyBmaXJzdCwgZm9sbG93
ZWQgYnkgdGhlIGxpbmtlZAotCQlmaWxlLiAgVGhlIGZpbGVzIGFyZSBoYXJkLWxpbmtlZC4gIEZv
ciBleGFtcGxlLCB0byBsaW5rCi0JCS9iaW4vdGVzdCBhbmQgL2Jpbi9bLCB1c2U6CitCSU5HUlAJ
CQlCaW5hcnkgZ3JvdXAuCiAKLQkJCUxJTktTPQkke0RFU1RESVJ9L2Jpbi90ZXN0ICR7REVTVERJ
Un0vYmluL1sKK0JJTk9XTgkJCUJpbmFyeSBvd25lci4KKworQklOTU9ERQkJCUJpbmFyeSBtb2Rl
LgorCitDRkxBR1MJCQlGbGFncyB0byB0aGUgY29tcGlsZXIgd2hlbiBjcmVhdGluZyBDIG9iamVj
dHMuCisKK0RQQURECQkJQWRkaXRpb25hbCBkZXBlbmRlbmNpZXMgZm9yIHRoZSBwcm9ncmFtLiAg
VXN1YWxseSB1c2VkCisJCQlmb3IgbGlicmFyaWVzLiAgRm9yIGV4YW1wbGUsIHRvIGRlcGVuZCBv
biB0aGUKKwkJCWNvbXBhdGliaWxpdHkgYW5kIHV0aWxpdHkgbGlicmFyaWVzIHVzZToKKworCQkJ
CURQQUREPSR7TElCQ09NUEFUfSAke0xJQlVUSUx9CisKKwkJCVRoZXJlIGlzIGEgcHJlZGVmaW5l
ZCBpZGVudGlmaWVyIGZvciBlYWNoCisJCQkobm9uLXByb2ZpbGVkLCBub24tc2hhcmVkKSBsaWJy
YXJ5IGFuZCBvYmplY3QuICBMaWJyYXJ5CisJCQlmaWxlIG5hbWVzIGFyZSB0cmFuc2Zvcm1lZCB0
byBpZGVudGlmaWVycyBieSByZW1vdmluZworCQkJdGhlIGV4dGVuc2lvbiBhbmQgY29udmVydGlu
ZyB0byB1cHBlciBjYXNlLgorCisJCQlUaGVyZSBhcmUgbm8gc3BlY2lhbCBpZGVudGlmaWVycyBm
b3IgcHJvZmlsZWQgb3Igc2hhcmVkCisJCQlsaWJyYXJpZXMgb3Igb2JqZWN0cy4gIFRoZSBpZGVu
dGlmaWVycyBmb3IgdGhlIHN0YW5kYXJkCisJCQlsaWJyYXJpZXMgYXJlIHVzZWQgaW4gRFBBREQu
ICBUaGlzIHdvcmtzIGNvcnJlY3RseSBpZmYKKwkJCWFsbCB0aGUgbGlicmFyaWVzIGFyZSBidWls
dCBhdCB0aGUgc2FtZSB0aW1lLgorCQkJVW5mb3J0dW5hdGVseSwgaXQgY2F1c2VzIHVubmVjZXNz
YXJ5IHJlbGlua3MgdG8gc2hhcmVkCisJCQlsaWJyYXJpZXMgd2hlbiBvbmx5IHRoZSBzdGF0aWMg
bGlicmFyaWVzIGhhdmUgY2hhbmdlZC4KKwkJCURlcGVuZGVuY2llcyBvbiBzaGFyZWQgbGlicmFy
aWVzIHNob3VsZCBiZSBvbmx5IG9uIHRoZQorCQkJbGlicmFyeSB2ZXJzaW9uIG51bWJlcnMuCisK
K0lOU1RBTExGTEFHUwkJaW5zdGFsbCgxKSBmbGFncy4KKworTERBREQJCQlBZGRpdGlvbmFsIGxv
YWRlciBvYmplY3RzLiAgVXN1YWxseSB1c2VkIGZvciBsaWJyYXJpZXMuCisJCQlGb3IgZXhhbXBs
ZSwgdG8gbG9hZCB3aXRoIHRoZSBjb21wYXRpYmlsaXR5IGFuZCB1dGlsaXR5CisJCQlsaWJyYXJp
ZXMsIHVzZToKKworCQkJTERBREQ9LWx1dGlsIC1sY29tcGF0CisKK0xERkxBR1MJCQlBZGRpdGlv
bmFsIGxvYWRlciBmbGFncy4KKworTUFOCQkJTWFudWFsIHBhZ2VzIChzaG91bGQgZW5kIGluIC4x
IC0gLjkpLiAgSWYgbm8gTUFOCisJCQl2YXJpYWJsZSBpcyBkZWZpbmVkLCAiTUFOPTxQUk9HPi4x
IiBpcyBhc3N1bWVkLgorCitOT19GU0NIRwkJRG8gbm90IGNhbGwgaW5zdGFsbCgxKSB3aXRoIC1m
IHNjaGcuCisKK1BSRUNJT1VTUFJPRwkJSW5zdGFsbCB3aXRoIC1TIChzYWZlIGNvcHkpIGFuZCBo
YW5kbGUgTk9fRlNDSEcKKwkJCXZhcmlhYmxlIGNhc2UgYXMgd2VsbC4KKworUFJPR19DWFgJCUMr
KyBhcHBsaWNhdGlvbiBuYW1lKHMpOyB0aGUgc291cmNlcyBmb3IgdGhlCisJCQlhcHBsaWNhdGlv
bihzKSBhcmUgY29tcGlsZWQgdmlhICR7Q1hYfQorCitQUk9HTkFNRQkJVGhlIG5hbWUgdGhhdCB0
aGUgYWJvdmUgcHJvZ3JhbSB3aWxsIGJlIGluc3RhbGxlZCwgaWYKKwkJCWRpZmZlcmVudCBmcm9t
IDxQUk9HPi4KKworU1JDUwkJCUxpc3Qgb2Ygc291cmNlIGZpbGVzIHRvIGJ1aWxkIHRoZSBwcm9n
cmFtLiAgSWYgU1JDUyBpcworCQkJbm90IGRlZmluZWQsIGl0J3MgYXNzdW1lZCB0byBiZSAke1BS
T0d9LmMgb3IsIGlmCisJCQlQUk9HX0NYWCBpcyBkZWZpbmVkLCAke1BST0dfQ1hYfS5jYy4KKwor
U0NSSVBUUwkJCUEgbGlzdCBvZiBpbnRlcnByZXRlciBzY3JpcHRzIFtmaWxlLntzaCxjc2gscGws
YXdrLC4uLn1dLgorCQkJVGhlIGluc3RhbGxhdGlvbiBpcyBjb250cm9sbGVkIGJ5IHRoZSBTQ1JJ
UFRTTkFNRSwgU0NSSVBUU09XTiwKKwkJCVNDUklQVFNHUlAsIFNDUklQVFNNT0RFLCBTQ1JJUFRT
RElSIHZhcmlhYmxlcyB0aGF0IGNhbiBiZQorCQkJZnVydGhlciBzcGVjaWFsaXplZCBieSBTQ1JJ
UFRTPFZBUj5fPHNjcmlwdD4uCisKK1RoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGNhbiBiZSB0dW5l
ZCBmb3Igc3BlY2lmaWMgc2NyaXB0czsgeW91IHdpbGwgbmVlZAordG8gc3VmZml4IHZhcmlhYmxl
IGRlY2xhcmF0aW9ucyB3aXRoIF88U0NSSVBUPiwgZS5nLgorU0NSSVBUIC0+IGZvbywgLT4gU0NS
SVBURElSX2Zvby4gIEluIGFsbCBjYXNlcywgdGhlIHBlci1zY3JpcHQgdmFyaWFibGVzCitkZWZh
dWx0IHRvIHRoZSBlcXVpdmFsZW50IGdsb2JhbCBTQ1JJUFQqIHZhcmlhYmxlIGFuZCBmYWxsYmFj
ayB0byB0aGUKK0JJTiogZXF1aXZhbGVudHMsIGUuZy4gU0NSSVBURElSX2ZvbyBmYWxscyBiYWNr
IHRvIFNDUklQVERJUiBpZiBTQ1JJUFRESVJfZm9vCitpcyBub3QgZGVmaW5lZCwgdGhlbiBCSU5E
SVIgaWYgU0NSSVBURElSIGlzIG5vdCBkZWZpbmVkOgorCitTQ1JJUFRTRElSCQlEaXJlY3Rvcnkg
dG8gaW5zdGFsbCBhIHNjcmlwdCB0by4KKworU0NSSVBUR1JQCQlHcm91cCB0byBzZXQgZm9yIGEg
c2NyaXB0LgorCitTQ1JJUFRNT0RFCQlNb2RlIHRvIGFwcGx5IHRvIGEgc2NyaXB0LgogCi1NQU4J
CU1hbnVhbCBwYWdlcyAoc2hvdWxkIGVuZCBpbiAuMSAtIC45KS4gIElmIG5vIE1BTiB2YXJpYWJs
ZQotCQlpcyBkZWZpbmVkLCAiTUFOPSR7UFJPR30uMSIgaXMgYXNzdW1lZC4KK1NDUklQVE9XTgkJ
T3duZXIgdG8gc2V0IGZvciBhIHNjcmlwdC4KIAotUFJPRwkJVGhlIG5hbWUgb2YgdGhlIHByb2dy
YW0gdG8gYnVpbGQuICBJZiBub3Qgc3VwcGxpZWQsIG5vdGhpbmcKLQkJaXMgYnVpbHQuCitMZWdh
Y3kgdmFyaWFibGVzIGFyZSBhcyBmb2xsb3dzOgogCi1QUk9HX0NYWAlJZiBkZWZpbmVkLCB0aGUg
bmFtZSBvZiB0aGUgcHJvZ3JhbSB0byBidWlsZC4gIEFsc28KLQkJY2F1c2VzIDxic2QucHJvZy5t
az4gdG8gbGluayB0aGUgcHJvZ3JhbSB3aXRoIHRoZQotCQlzdGFuZGFyZCBDKysgbGlicmFyeS4g
IFBST0dfQ1hYIG92ZXJyaWRlcyB0aGUgdmFsdWUKLQkJb2YgUFJPRyBpZiBQUk9HIGlzIGFsc28g
c2V0LgotCi1QUk9HTkFNRQlUaGUgbmFtZSB0aGF0IHRoZSBhYm92ZSBwcm9ncmFtIHdpbGwgYmUg
aW5zdGFsbGVkIGFzLCBpZgotCQlkaWZmZXJlbnQgZnJvbSAke1BST0d9LgotCi1TUkNTCQlMaXN0
IG9mIHNvdXJjZSBmaWxlcyB0byBidWlsZCB0aGUgcHJvZ3JhbS4gIElmIFNSQ1MgaXMgbm90Ci0J
CWRlZmluZWQsIGl0J3MgYXNzdW1lZCB0byBiZSAke1BST0d9LmMgb3IsIGlmIFBST0dfQ1hYIGlz
Ci0JCWRlZmluZWQsICR7UFJPR19DWFh9LmNjLgotCi1EUEFERAkJQWRkaXRpb25hbCBkZXBlbmRl
bmNpZXMgZm9yIHRoZSBwcm9ncmFtLiAgVXN1YWxseSB1c2VkIGZvcgotCQlsaWJyYXJpZXMuICBG
b3IgZXhhbXBsZSwgdG8gZGVwZW5kIG9uIHRoZSBjb21wYXRpYmlsaXR5IGFuZAotCQl1dGlsaXR5
IGxpYnJhcmllcyB1c2U6Ci0KLQkJCVNSQ0xJQj0ke0xJQkNPTVBBVH0gJHtMSUJVVElMfQotCi0J
CVRoZXJlIGlzIGEgcHJlZGVmaW5lZCBpZGVudGlmaWVyIGZvciBlYWNoIChub24tcHJvZmlsZWQs
Ci0JCW5vbi1zaGFyZWQpIGxpYnJhcnkgYW5kIG9iamVjdC4gIExpYnJhcnkgZmlsZSBuYW1lcyBh
cmUKLQkJdHJhbnNmb3JtZWQgdG8gaWRlbnRpZmllcnMgYnkgcmVtb3ZpbmcgdGhlIGV4dGVuc2lv
biBhbmQKLQkJY29udmVydGluZyB0byB1cHBlciBjYXNlLgotCi0JCVRoZXJlIGFyZSBubyBzcGVj
aWFsIGlkZW50aWZpZXJzIGZvciBwcm9maWxlZCBvciBzaGFyZWQKLQkJbGlicmFyaWVzIG9yIG9i
amVjdHMuICBUaGUgaWRlbnRpZmllcnMgZm9yIHRoZSBzdGFuZGFyZAotCQlsaWJyYXJpZXMgYXJl
IHVzZWQgaW4gRFBBREQuICBUaGlzIHdvcmtzIGNvcnJlY3RseSBpZmYgYWxsCi0JCXRoZSBsaWJy
YXJpZXMgYXJlIGJ1aWx0IGF0IHRoZSBzYW1lIHRpbWUuICBVbmZvcnR1bmF0ZWx5LAotCQlpdCBj
YXVzZXMgdW5uZWNlc3NhcnkgcmVsaW5rcyB0byBzaGFyZWQgbGlicmFyaWVzIHdoZW4KLQkJb25s
eSB0aGUgc3RhdGljIGxpYnJhcmllcyBoYXZlIGNoYW5nZWQuICBEZXBlbmRlbmNpZXMgb24KLQkJ
c2hhcmVkIGxpYnJhcmllcyBzaG91bGQgYmUgb25seSBvbiB0aGUgbGlicmFyeSB2ZXJzaW9uCi0J
CW51bWJlcnMuCi0KLVNUUklQCQlUaGUgZmxhZyBwYXNzZWQgdG8gdGhlIGluc3RhbGwgcHJvZ3Jh
bSB0byBjYXVzZSB0aGUgYmluYXJ5Ci0JCXRvIGJlIHN0cmlwcGVkLiAgVGhpcyBpcyB0byBiZSB1
c2VkIHdoZW4gYnVpbGRpbmcgeW91cgotCQlvd24gaW5zdGFsbCBzY3JpcHQgc28gdGhhdCB0aGUg
ZW50aXJlIHN5c3RlbSBjYW4gYmUgbWFkZQotCQlzdHJpcHBlZC9ub3Qtc3RyaXBwZWQgdXNpbmcg
YSBzaW5nbGUgbm9iLgotCi1TVUJESVIJCUEgbGlzdCBvZiBzdWJkaXJlY3RvcmllcyB0aGF0IHNo
b3VsZCBiZSBidWlsdCBhcyB3ZWxsLgotCQlFYWNoIG9mIHRoZSB0YXJnZXRzIHdpbGwgZXhlY3V0
ZSB0aGUgc2FtZSB0YXJnZXQgaW4gdGhlCi0JCXN1YmRpcmVjdG9yaWVzLgotCi1TQ1JJUFRTCQlB
IGxpc3Qgb2YgaW50ZXJwcmV0ZXIgc2NyaXB0cyBbZmlsZS57c2gsY3NoLHBsLGF3aywuLi59XS4K
LQkJVGhlIGluc3RhbGxhdGlvbiBpcyBjb250cm9sbGVkIGJ5IHRoZSBTQ1JJUFRTTkFNRSwgU0NS
SVBUU09XTiwKLQkJU0NSSVBUU0dSUCwgU0NSSVBUU01PREUsIFNDUklQVFNESVIgdmFyaWFibGVz
IHRoYXQgY2FuIGJlCi0JCWZ1cnRoZXIgc3BlY2lhbGl6ZWQgYnkgU0NSSVBUUzxWQVI+XzxzY3Jp
cHQ+LgorQ09QVFMJCQlPcHRpbWl6YXRpb24gZmxhZ3MgYXBwZW5kZWQgdG8gQ0ZMQUdTOyBoaWdo
bHkKKyAJCQlkaXNjb3VyYWdlZCBpbiBtb2Rlcm4gTWFrZWZpbGVzLgorCitQUk9HCQkJTGVnYWN5
IGZvcm0gb2YgYFBST0dTYAorCitQUk9HX0NYWAkJTGVnYWN5IGZvcm0gb2YgYFBST0dTX0NYWGAK
KworVGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgYXJlIHdyYXBwZWQgdG8gYmUgbWFkZSBgUFJPR1Mg
YXdhcmVgOgorCitOTFMJCQlTZWUgYnNkLm5scy5tayBkZXNjcmlwdGlvbiBmb3IgbW9yZSBkZXRh
aWxzLgorTkxTRElSCitOTFNOQU1FCisKK0RldmVsb3BlciBjb252ZW5pZW5jZSB2YXJpYWJsZXM6
CisKK1dJVEhfQVNTRVJUX0RFQlVHCUNvbXBpbGUgd2l0aCBDRkxBR1MrPS1ETkRFQlVHCiAKIFRo
ZSBpbmNsdWRlIGZpbGUgPGJzZC5wcm9nLm1rPiBpbmNsdWRlcyB0aGUgZmlsZSBuYW1lZCAiLi4v
TWFrZWZpbGUuaW5jIgotaWYgaXQgZXhpc3RzLCBhcyB3ZWxsIGFzIHRoZSBpbmNsdWRlIGZpbGUg
PGJzZC5tYW4ubWs+LgoraWYgaXQgZXhpc3RzLCBhcyB3ZWxsIGFzIHRoZSBpbmNsdWRlIGZpbGUg
PGJzZC5tYW4ubWs+LiAgRnVydGhlcm1vcmUsIGlmCitXSVRIX05MUyBpcyBkZWZpbmVkIGFuZCBO
TFMuPFBST0c+IGlzIGFsc28gZGVmaW5lZCwgdGhlbiBic2QubmxzLm1rIGlzCitpbmNsdWRlZCBh
cyB3ZWxsLgogCiBTb21lIHNpbXBsZSBleGFtcGxlczoKIAorMS4gU2luZ2xlIEMgUHJvZ3JhbToK
KwogVG8gYnVpbGQgZm9vIGZyb20gZm9vLmMgd2l0aCBhIG1hbnVhbCBwYWdlIGZvby4xLCB1c2U6
CiAKLQlQUk9HPQlmb28KKwlQUk9HUz0JZm9vCiAKIAkuaW5jbHVkZSA8YnNkLnByb2cubWs+CiAK
QEAgLTMxNCw2ICszNzMsMzQgQEAKIAogCVNSQ1M9CWEuYyBiLmMgYy5jIGQuYwogCisyLiBTaW5n
bGUgQysrIFByb2dyYW06CisKK1RvIGJ1aWxkIGJhciB3aXRoIGJhci5jYyB3aXRoIGEgbWFucGFn
ZSBwYWdlIGJhci4xLCB1c2U6CisKKwlQUk9HU19DWFg9CWJhcgorCisJLmluY2x1ZGUgPGJzZC5w
cm9nLm1rPgorCitBbGwgb3RoZXIgY29uc3RydWN0cyBhcmUgdGhlIHNhbWUgYXMgaW4gdGhlIFNp
bmdsZSBDIFByb2dyYW0gY2FzZS4KKworMy4gTXVsdGlwbGUgQyBwcm9ncmFtczoKKworVG8gYnVp
bGQgZm9vIGZyb20gZm9vLmMgYW5kIGJhciB3aXRoIGJhci5jLCB1c2U6CisKKwlQUk9HUz0JZm9v
IGJhcgorCisJLmluY2x1ZGUgPGJzZC5wcm9nLm1rPgorCitUbyBidWlsZCBmb28gZnJvbSBiYXIu
YyBhbmQgYmFyIHdpdGggZm9vLmMsIHVzZToKKworCVBST0dTPQlmb28gYmFyCisKKwlTUkNTLmZv
bz0gYmFyLmMKKworCVNSQ1MuYmFyPSBmb28uYworCisJLmluY2x1ZGUgPGJzZC5wcm9nLm1rPgor
CiA9LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09
LT0tPS09LT0tPS09LT0tPS09CiAKIFRoZSBpbmNsdWRlIGZpbGUgPGJzZC5zdWJkaXIubWs+IGNv
bnRhaW5zIHRoZSBkZWZhdWx0IHRhcmdldHMgZm9yIGJ1aWxkaW5nCg==
--f46d04447dff4b7a4504c8c5de50--



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