Re: Fix formatting glitches.

Andreas Scherer <[email protected]> Mon, 13 May 2024 17:17:33 +0200
Newsgroups gmane.comp.tex.metapost
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------hdAXmepwQb0i0xBdFagQaEC0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Am 12.05.24 um 14:51 schrieb Andreas Scherer:
> And half a radio interview later, here are the "final" patches for MP.W.

Scrolling through MP.PDF a second time from Section 1 to the Index 
produces another set of fixes sprinkled all over the document.

Happy hacking!
Andreas
--------------hdAXmepwQb0i0xBdFagQaEC0
Content-Type: text/x-patch; charset=UTF-8;
 name="0147-Scroll-through-mp.pdf-a-second-time.patch"
Content-Disposition: attachment;
 filename="0147-Scroll-through-mp.pdf-a-second-time.patch"
Content-Transfer-Encoding: base64

RnJvbSA1ZTk1MTVjNzdmZDg2YTVhMGE2ZGZjYmU5NjRlMDRmOTQxM2YwYjBiIE1vbiBTZXAg
MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZWFzIFNjaGVyZXIgPGFuZHJlYXNfZ2l0aHVi
QGZyZWVuZXQuZGU+CkRhdGU6IFN1biwgMTIgTWF5IDIwMjQgMTY6MzE6MDAgKzAyMDAKU3Vi
amVjdDogW1BBVENIIDE0Ny8xNDddIFNjcm9sbCB0aHJvdWdoIG1wLnBkZiBhIHNlY29uZCB0
aW1lLgoKLS0tCiBtcC53IHwgMTUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgODMgaW5zZXJ0
aW9ucygrKSwgNzAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbXAudyBiL21wLncKaW5k
ZXggNWZiOGU3Yi4uNmMwZjI4NSAxMDA2NDQKLS0tIGEvbXAudworKysgYi9tcC53CkBAIC0z
ODEsNyArMzgxLDcgQEAgdGhlIHxBbGxvY2F0ZSBvciBpbml0aWFsaXplIHZhcmlhYmxlc3wg
YmxvY2suCiAKIEBkIHNldF9jYWxsYmFja19vcHRpb24oQSkgZG8geyBtcC0+QSA9IG1wXyMj
QTsKICAgaWYgKG9wdC0+QSE9TlVMTCkgbXAtPkEgPSBvcHQtPkE7Ci19IHdoaWxlICgwKQor
fSB3aGlsZSAoMClAOwogCiBAYwogc3RhdGljIE1QIG1wX2RvX25ldyAoam1wX2J1ZiAqIGJ1
ZikgewpAQCAtODEzLDcgKzgxMyw3IEBAIGludCB1dGY4X21vZGU7CiBAIEA8RGVhbGxvYyB2
YXJpYWJsZXNAPj0KIHhmcmVlIChtcC0+YmFubmVyKTsKIAotQCBAZCBzZXRfbG93ZXJfbGlt
aXRlZF92YWx1ZShhLGIsYykgZG8geyBhPWM7IGlmIChiPmMpIGE9YjsgfSB3aGlsZSAoMCkK
K0AgQGQgc2V0X2xvd2VyX2xpbWl0ZWRfdmFsdWUoYSxiLGMpIGRvIHsgYT1jOyBpZiAoYj5j
KSBhPWI7IH0gd2hpbGUgKDApQDsKIAogQDxBbGxvY2F0ZSBvciAuLi5APj0KIG1wLT5wYXJh
bV9zaXplID0gNDsKQEAgLTEzMjgsNyArMTMyOCw3IEBAIHRvIHRoZSBpbnB1dCBidWZmZXIu
ICBUaGUgdmFyaWFibGUgfGNvbW1hbmRfbGluZXwgd2lsbCBiZSBmaWxsZWQgYnkgdGhlCiBA
ZCB0X29wZW5fb3V0KCkgIGRvIHsvKiBvcGVuIHRoZSB0ZXJtaW5hbCBmb3IgdGV4dCBvdXRw
dXQgKi8KICAgICBtcC0+dGVybV9vdXQgPSAobXAtPm9wZW5fZmlsZSkobXAsInRlcm1pbmFs
IiwgInciLCBtcF9maWxldHlwZV90ZXJtaW5hbCk7CiAgICAgbXAtPmVycl9vdXQgPSAobXAt
Pm9wZW5fZmlsZSkobXAsImVycm9yIiwgInciLCBtcF9maWxldHlwZV9lcnJvcik7Ci19IHdo
aWxlICgwKQorfSB3aGlsZSAoMClAOwogQGQgdF9vcGVuX2luKCkgIGRvIHsgLyogb3BlbiB0
aGUgdGVybWluYWwgZm9yIHRleHQgaW5wdXQgKi8KICAgICBtcC0+dGVybV9pbiA9IChtcC0+
b3Blbl9maWxlKShtcCwidGVybWluYWwiLCAiciIsIG1wX2ZpbGV0eXBlX3Rlcm1pbmFsKTsK
ICAgICBpZiAobXAtPmNvbW1hbmRfbGluZSE9TlVMTCkgewpAQCAtMTM0MSw3ICsxMzQxLDcg
QEAgdG8gdGhlIGlucHV0IGJ1ZmZlci4gIFRoZSB2YXJpYWJsZSB8Y29tbWFuZF9saW5lfCB3
aWxsIGJlIGZpbGxlZCBieSB0aGUKICAgICB9IGVsc2UgewogCSAgbXAtPmxhc3QgPSAwOwog
ICAgIH0KLX0gd2hpbGUgKDApCit9IHdoaWxlICgwKUA7CiAKIEA8T3B0aW9uIHZhcmlhYmxl
c0A+PQogY2hhciAqY29tbWFuZF9saW5lOwpAQCAtMTY4MiwxMSArMTY4MiwxMSBAQCBzdGF0
aWMgdm9pZCBtcF9wcmludF92aXNpYmxlX2NoYXIgKE1QIG1wLCBBU0NJSV9jb2RlIHMpIHsK
ICAgICBpZiAobXAtPnRlcm1fb2Zmc2V0ID09ICh1bnNpZ25lZCkgbXAtPm1heF9wcmludF9s
aW5lKSB7CiAgICAgICB3dGVybV9jcjsKICAgICAgIG1wLT50ZXJtX29mZnNldCA9IDA7Ci0g
ICAgfTsKKyAgICB9CiAgICAgaWYgKG1wLT5maWxlX29mZnNldCA9PSAodW5zaWduZWQpIG1w
LT5tYXhfcHJpbnRfbGluZSkgewogICAgICAgd2xvZ19jcjsKICAgICAgIG1wLT5maWxlX29m
ZnNldCA9IDA7Ci0gICAgfTsKKyAgICB9CiAgICAgYnJlYWs7CiAgIGNhc2UgbG9nX29ubHk6
CiAgICAgd2xvZ19jaHIgKHhjaHIgKHMpKTsKQEAgLTE4ODQsNyArMTg4NCw3IEBAIFRoaXMg
cHJvY2VkdXJlIGlzIG5ldmVyIGNhbGxlZCB3aGVuIHxpbnRlcmFjdGlvbjxtcF9zY3JvbGxf
bW9kZXwuCiAgICAgICBtcF9wcmludChtcCwgKEEpKTsKICAgICB9CiAgICAgbXBfdGVybV9p
bnB1dChtcCk7Ci0gIH0gd2hpbGUgKDApIC8qIHByaW50cyBhIHN0cmluZyBhbmQgZ2V0cyBh
IGxpbmUgb2YgaW5wdXQgKi8KKyAgfSB3aGlsZSAoMClAOyAvKiBwcmludHMgYSBzdHJpbmcg
YW5kIGdldHMgYSBsaW5lIG9mIGlucHV0ICovCiAKIEBjCiB2b2lkIG1wX3Rlcm1faW5wdXQg
KE1QIG1wKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGdldHMgYSBsaW5l
IGZyb20gdGhlIHRlcm1pbmFsICovCkBAIC0yMDk0LDYgKzIwOTQsOCBAQCBJbmRpdmlkdWFs
IGxpbmVzIG9mIGhlbHAgYXJlIHJlY29yZGVkIGluIHRoZSBhcnJheSB8aGVscF9saW5lfCwg
d2hpY2gKIGNvbnRhaW5zIGVudHJpZXMgaW4gcG9zaXRpb25zIHwwLi4oaGVscF9wdHItMSl8
LiBUaGV5IHNob3VsZCBiZSBwcmludGVkCiBpbiByZXZlcnNlIG9yZGVyLCBpLmUuLCB3aXRo
IHxoZWxwX2xpbmVbMF18IGFwcGVhcmluZyBsYXN0LgogCitAcyBtcF9zeW0gaW50CisKIEBj
CiB2b2lkIG1wX2Vycm9yIChNUCBtcCwgY29uc3QgY2hhciAqbXNnLCBjb25zdCBjaGFyICoq
aGxwLCBib29sZWFuIGRlbGV0aW9uc19hbGxvd2VkKSB7CiAgIEFTQ0lJX2NvZGUgYzsgLyog
d2hhdCB0aGUgdXNlciB0eXBlcyAqLwpAQCAtMjE2NSw2ICsyMTY3LDggQEAgZmlsZSB0aGF0
IHNob3VsZCBiZQogZWRpdGVkIGFuZCB0aGUgcmVsZXZhbnQgbGluZSBudW1iZXIuCiBAXnN5
c3RlbSBkZXBlbmRlbmNpZXNAPgogCitAcyBtcF9lZGl0b3JfY21kIGludAorCiBAPEV4cG9y
dGVkIHR5cGVzQD49CiB0eXBlZGVmIHZvaWQgKCptcF9lZGl0b3JfY21kKSAoTVAsIGNoYXIg
KiwgaW50KTsKIApAQCAtMjU3OCw3ICsyNTgyLDcgQEAgYW4gYXJpdGhtZXRpYyBlcnJvciBo
YXMgYmVlbiBkZXRlY3RlZC4KIEBkIGNoZWNrX2FyaXRoKCkgZG8gewogICBpZiAoIG1wLT5h
cml0aF9lcnJvciApCiAgICAgbXBfY2xlYXJfYXJpdGgobXApOwotfSB3aGlsZSAoMCkKK30g
d2hpbGUgKDApQDsKIAogQGMKIHN0YXRpYyB2b2lkIG1wX2NsZWFyX2FyaXRoIChNUCBtcCkg
ewpAQCAtMjg5Miw3ICsyODk2LDcgQEAgaW50IG1hdGhfbW9kZTsgICAgICAgICAgICAgICAv
KiBtYXRoIG1vZGUgKi8KIEAgQDxBbGxvY2F0ZSBvciBpbml0aWFsaXplIC4uLkA+PQogbXAt
Pm1hdGhfbW9kZSA9IG9wdC0+bWF0aF9tb2RlOwogCi1AIEBkIHhmcmVlKEEpIGRvIHsgbXBf
eGZyZWUoQSk7IEE9TlVMTDsgfSB3aGlsZSAoMCkKK0AgQGQgeGZyZWUoQSkgZG8geyBtcF94
ZnJlZShBKTsgQT1OVUxMOyB9IHdoaWxlICgwKUA7CiBAZCB4cmVhbGxvYyhQLEEsQikgbXBf
eHJlYWxsb2MobXAsUCwoc2l6ZV90KUEsQikKIEBkIHhtYWxsb2MoQSxCKSAgbXBfeG1hbGxv
YyhtcCwoc2l6ZV90KUEsQikKIEBkIHhzdHJkdXAoQSkgIG1wX3hzdHJkdXAobXAsQSkKQEAg
LTMwNDEsNyArMzA0NSw3IEBAIGNvbnRyb2wgb2Ygd2hhdCBlcnJvciBtZXNzYWdlcyB0aGUg
dXNlciByZWNlaXZlcy4KICAgIG1wX25vZGUgZCA9IChCKTsKICAgIC8qIHxwcmludGYoInNl
dCBsaW5rICAgIG9mICVwIHRvICVwIG9uIGxpbmUgJWRcbiIsIChBKSwgZCwgX19MSU5FX18p
O3wgKi8KICAgIG1wX2xpbmsoKEEpKSA9IGQ7Ci0gfSB3aGlsZSAoMCkKKyB9IHdoaWxlICgw
KUA7CiBAZCBtcF90eXBlKEEpICAgICAgKEEpLT50eXBlIC8qIGlkZW50aWZpZXMgd2hhdCBr
aW5kIG9mIHZhbHVlIHRoaXMgaXMgKi8KIEBkIG1wX25hbWVfdHlwZShBKSAoQSktPm5hbWVf
dHlwZSAvKiBhIGNsdWUgdG8gdGhlIG5hbWUgb2YgdGhpcyB2YWx1ZSAqLwogCkBAIC0zMDY1
LDcgKzMwNjksNyBAQCBjYW4gdXNlIHRoZSBzcGVjaWFsIGZlYXR1cmVzIHRoYXQga2VlcCB0
cmFjayBvZiBjdXJyZW50IGFuZCBtYXhpbXVtIG1lbW9yeSB1c2FnZQogQGQgYWRkX3Zhcl91
c2VkKGEpIGRvIHsKICAgIG1wLT52YXJfdXNlZCs9KGEpOwogICAgaWYgKG1wLT52YXJfdXNl
ZD5tcC0+dmFyX3VzZWRfbWF4KSBtcC0+dmFyX3VzZWRfbWF4PW1wLT52YXJfdXNlZDsKLX0g
d2hpbGUgKDApCit9IHdoaWxlICgwKUA7CiAKIEA8R2xvYi4uLkA+PQogc2l6ZV90IHZhcl91
c2VkOyAgICAgICAgLyogaG93IG11Y2ggbWVtb3J5IGlzIGluIHVzZSAqLwpAQCAtNDE3OCw3
ICs0MTgyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgewogI2RlZmluZSBpbnRlcm5hbF92YWx1ZShB
KSBAW21wLT5pbnRlcm5hbFsoQSldLnYuZGF0YS5uQF0KICNkZWZpbmUgc2V0X2ludGVybmFs
X2Zyb21fbnVtYmVyKEEsQikgZG8geyBcCiAgIG51bWJlcl9jbG9uZSAoaW50ZXJuYWxfdmFs
dWUgKChBKSksKEIpKTtcCi19IHdoaWxlICgwKQorfSB3aGlsZSAoMClAOwogI2RlZmluZSBp
bnRlcm5hbF9zdHJpbmcoQSkgQFsobXBfc3RyaW5nKW1wLT5pbnRlcm5hbFsoQSldLnYuZGF0
YS5zdHJAXQogI2RlZmluZSBzZXRfaW50ZXJuYWxfc3RyaW5nKEEsQikgQFttcC0+aW50ZXJu
YWxbKEEpXS52LmRhdGEuc3RyPShCKUBdCiAjZGVmaW5lIGludGVybmFsX25hbWUoQSkgQFtt
cC0+aW50ZXJuYWxbKEEpXS5pbnRuYW1lQF0KQEAgLTQxOTIsNyArNDE5Niw3IEBAIHR5cGVk
ZWYgc3RydWN0IHsKICAgfSBlbHNlIHsgXAogICAgICAgc2V0X2ludGVybmFsX2Zyb21fbnVt
YmVyICgoQSksIGN1cl9leHBfdmFsdWVfbnVtYmVyICgpKTsgXAogICB9IFwKLX0gd2hpbGUg
KDApCit9IHdoaWxlICgwKUA7CiAKIAogCkBAIC00NjUwLDMwICs0NjU0LDMwIEBAIHRoYXQg
aG9sZHMgdGhlIGN1cnJlbnQgY29tbWFuZCB2YWx1ZSBvZiB0aGUgdG9rZW4sIGFuZCBhbgog
QGQgc2V0X3RleHQoQSkgICAgIGRvIHsKICAgIEZVTkNUSU9OX1RSQUNFMyAoInNldF90ZXh0
KCVwLCAlcClcbiIsKEEpLChCKSk7CiAgICAoQSktPnRleHQ9KEIpIDsKLX0gd2hpbGUgKDAp
Cit9IHdoaWxlICgwKUA7CiAKIEBkIHNldF9lcV90eXBlKEEsQikgIGRvIHsKICAgIEZVTkNU
SU9OX1RSQUNFMyAoInNldF9lcV90eXBlKCVwLCAlZClcbiIsKEEpLChCKSk7CiAgICAoQSkt
PnR5cGU9KEIpIDsKLX0gd2hpbGUgKDApCit9IHdoaWxlICgwKUA7CiAKIEBkIHNldF9lcXVp
dihBLEIpICBkbyB7CiAgICBGVU5DVElPTl9UUkFDRTMgKCJzZXRfZXF1aXYoJXAsICVkKVxu
IiwoQSksKEIpKTsKICAgIChBKS0+di5kYXRhLm5vZGU9TlVMTCA7CiAgICAoQSktPnYuZGF0
YS5pbmRlcC5zZXJpYWw9KEIpOwotfSB3aGlsZSAoMCkKK30gd2hpbGUgKDApQDsKIAogQGQg
c2V0X2VxdWl2X25vZGUoQSxCKSAgZG8gewogICAgRlVOQ1RJT05fVFJBQ0UzICgic2V0X2Vx
dWl2X25vZGUoJXAsICVwKVxuIiwoQSksKEIpKTsKICAgIChBKS0+di5kYXRhLm5vZGU9KEIp
IDsKICAgIChBKS0+di5kYXRhLmluZGVwLnNlcmlhbD0wOwotfSB3aGlsZSAoMCkKK30gd2hp
bGUgKDApQDsKIAogQGQgc2V0X2VxdWl2X3N5bShBLEIpICBkbyB7CiAgICBGVU5DVElPTl9U
UkFDRTMgKCJzZXRfZXF1aXZfc3ltKCVwLCAlcClcbiIsKEEpLChCKSk7CiAgICAoQSktPnYu
ZGF0YS5ub2RlPShtcF9ub2RlKShCKTsKICAgIChBKS0+di5kYXRhLmluZGVwLnNlcmlhbD0w
OwotfSB3aGlsZSAoMCkKK30gd2hpbGUgKDApQDsKIAogQCBAYwogI2lmIERFQlVHCkBAIC00
NzI3LDcgKzQ3MzEsNyBAQCB0eXBlZGVmIHN0cnVjdCBtcF9zeW1ib2xfZW50cnkgewogICB2
b2lkICpwYXJlbnQ7CiB9IG1wX3N5bWJvbF9lbnRyeTsKIAotQCBAPEdsb2IuLi5APj0KK0Ag
QHMgYXZsX3RyZWUgaW50IEA8R2xvYi4uLkA+PQogaW50ZWdlciBzdF9jb3VudDsgICAgICAg
LyogdG90YWwgbnVtYmVyIG9mIGtub3duIGlkZW50aWZpZXJzICovCiBhdmxfdHJlZSBzeW1i
b2xzOyAgICAgICAvKiBhdmwgdHJlZSBvZiBzeW1ib2xpYyB0b2tlbnMgKi8KIGF2bF90cmVl
IGZyb3plbl9zeW1ib2xzOyAgICAgICAgLyogYXZsIHRyZWUgb2YgZnJvemVuIHN5bWJvbGlj
IHRva2VucyAqLwpAQCAtNjA2NSw3ICs2MDY5LDcgQEAgc3RhdGljIHZvaWQgZG9fc2V0X3Bh
cmVudCAoTVAgbXAsIG1wX3ZhbHVlX25vZGUgQSwgbXBfbm9kZSBkKSB7CiBAIEBkIG1wX2Zy
ZWVfYXR0cl9ub2RlKGEsYikgZG8gewogICAgYXNzZXJ0KChiKS0+dHlwZSA9PSBtcF9hdHRy
X25vZGVfdHlwZSB8fCAoYiktPm5hbWVfdHlwZSA9PSBtcF9hdHRyKTsKICAgIG1wX2ZyZWVf
dmFsdWVfbm9kZShhLGIpOwotfSB3aGlsZSAoMCkKK30gd2hpbGUgKDApQDsKIAogQGMKIHN0
YXRpYyBtcF92YWx1ZV9ub2RlIG1wX2dldF9hdHRyX25vZGUgKE1QIG1wKSB7CkBAIC03MTkw
LDggKzcxOTQsNyBAQCB0eXBlZGVmIHN0cnVjdCBtcF9rbm90X2RhdGEgewogfSBtcF9rbm90
X2RhdGE7CiAKIAotQAotQGQgbXBfZ3JfbmV4dF9rbm90KEEpICAgKEEpLT5uZXh0IC8qIHRo
ZSBuZXh0IGtub3QgaW4gdGhpcyBsaXN0ICovCitAIEBkIG1wX2dyX25leHRfa25vdChBKSAg
IChBKS0+bmV4dCAvKiB0aGUgbmV4dCBrbm90IGluIHRoaXMgbGlzdCAqLwogCiBAPEV4cG9y
dGVkIHR5cGVzLi4uQD49CiB0eXBlZGVmIHN0cnVjdCBtcF9ncl9rbm90X2RhdGEgKm1wX2dy
X2tub3Q7CkBAIC03ODYwLDcgKzc4NjMsNyBAQCBkbyB7CiAgICAgbnVtYmVyX2Nsb25lIChx
LT5sZWZ0X3ksIHAtPnlfY29vcmQpOwogICB9CiAgIHAgPSBxOwotfSB3aGlsZSAocCAhPSBr
bm90cykKK30gd2hpbGUgKHAgIT0ga25vdHMpQDsKIAogQCBJZiB0aGVyZSBhcmUgbm8gYnJl
YWtwb2ludHMsIGl0IGlzIG5lY2Vzc2FyeSB0byBjb21wdXRlIHRoZSBkaXJlY3Rpb24KIGFu
Z2xlcyBhcm91bmQgYW4gZW50aXJlIGN5Y2xlLiBJbiB0aGlzIGNhc2UgdGhlIHxtcF9sZWZ0
X3R5cGV8IG9mIHRoZSBmaXJzdApAQCAtMTA5NDgsOCArMTA5NTEsNiBAQCB3aGVyZSB0aGUg
fHRoZW58IGNsYXVzZSBpcyBub3QgZXhlY3V0ZWQuCiBvZmZzZXQgYXNzb2NpYXRlZCB3aXRo
IHRoZSBnaXZlbiBkaXJlY3Rpb24gfCh4LHkpfC4gIElmIHR3byBkaWZmZXJlbnQgb2Zmc2V0
cwogYXBwbHksIGl0IGNob29zZXMgb25lIG9mIHRoZW0uCiAKLUBzIG1wX2ZyYWN0aW9uIGlu
dAotCiBAYwogc3RhdGljIHZvaWQgbXBfZmluZF9vZmZzZXQgKE1QIG1wLCBtcF9udW1iZXIg
eF9vcmlnLCBtcF9udW1iZXIgeV9vcmlnLCBtcF9rbm90IGgpIHsKICAgbXBfa25vdCBwLCBx
OyAvKiBjb25zZWN1dGl2ZSBrbm90cyAqLwpAQCAtMTExNjQsNiArMTExNjUsOSBAQCBzdGF0
aWMgdm9pZCBtcF9wZW5fYmJveCAoTVAgbXAsIG1wX2tub3QgaCkgewogCiBUaGlzIGZpcnN0
IHNldCBnb2VzIGludG8gdGhlIGhlYWRlcgogCitAcyBtcF9mcmFjdGlvbiBtcF9udW1iZXIK
K0BzIG1wX2FuZ2xlIG1wX251bWJlcgorCiBAPE1QbGliIGludGVybmFsIGhlYWRlciBzdHVm
ZkA+PQogI2RlZmluZSBtcF9mcmFjdGlvbiBtcF9udW1iZXIKICNkZWZpbmUgbXBfYW5nbGUg
bXBfbnVtYmVyCkBAIC0xMTE5Miw3ICsxMTE5Niw3IEBAIFRoaXMgZmlyc3Qgc2V0IGdvZXMg
aW50byB0aGUgaGVhZGVyCiBAZCBzZXRfbnVtYmVyX3RvX3VuaXR5KEEpCSAgICAgICAoKCht
YXRoX2RhdGEgKikobXAtPm1hdGgpKS0+Y2xvbmUpKCYoQSksIHVuaXR5X3QpCiBAZCBzZXRf
bnVtYmVyX3RvX3plcm8oQSkJICAgICAgICgoKG1hdGhfZGF0YSAqKShtcC0+bWF0aCkpLT5j
bG9uZSkoJihBKSwgemVyb190KQogQGQgc2V0X251bWJlcl90b19pbmYoQSkJCSAgICAgICAo
KChtYXRoX2RhdGEgKikobXAtPm1hdGgpKS0+Y2xvbmUpKCYoQSksIGluZl90KQotQGQgc2V0
X251bWJlcl90b19uZWdfaW5mKEEpCSAgICAgICBkbyB7IHNldF9udW1iZXJfdG9faW5mKEEp
OyBudW1iZXJfbmVnYXRlIChBKTsgfSB3aGlsZSAoMCkKK0BkIHNldF9udW1iZXJfdG9fbmVn
X2luZihBKQkgICAgICAgZG8geyBzZXRfbnVtYmVyX3RvX2luZihBKTsgbnVtYmVyX25lZ2F0
ZSAoQSk7IH0gd2hpbGUgKDApQDsKIEAjCiBAZCBpbml0X3JhbmRvbXMoQSkgICAgICAgICAg
ICAgICAgICAgICAoKChtYXRoX2RhdGEgKikobXAtPm1hdGgpKS0+aW5pdF9yYW5kb21zKSht
cCxBKQogQGQgcHJpbnRfbnVtYmVyKEEpICAgICAgICAgICAgICAgICAgICAgKCgobWF0aF9k
YXRhICopKG1wLT5tYXRoKSktPnByaW50KShtcCxBKQpAQCAtMTEzMTQsNyArMTEzMTgsNyBA
QCB0eXBlZGVmIHN0cnVjdCBtcF9maWxsX25vZGVfZGF0YSB7CiB0eXBlZGVmIHN0cnVjdCBt
cF9maWxsX25vZGVfZGF0YSAqbXBfZmlsbF9ub2RlOwogCiBAIEA8R3JhcGhpY2FsIG9iamVj
dCBjb2Rlc0A+PQotbXBfZmlsbF9jb2RlID0gMSwKK21wX2ZpbGxfY29kZSA9IDEsQFtAXUA7
CiAKIEAgTWFrZSBhIGZpbGwgbm9kZSBmb3IgY3ljbGljIHBhdGggfHB8IGFuZCBjb2xvciBi
bGFjay4KIApAQCAtMTEzOTksNyArMTE0MDMsNyBAQCB0eXBlZGVmIHN0cnVjdCBtcF9zdHJv
a2VkX25vZGVfZGF0YSAqbXBfc3Ryb2tlZF9ub2RlOwogCiAKIEAgQDxHcmFwaGljYWwgb2Jq
ZWN0IGNvZGVzQD49Ci1tcF9zdHJva2VkX2NvZGUgPSAyLAorbXBfc3Ryb2tlZF9jb2RlID0g
MixAW0BdQDsKIAogQCAgTWFrZSBhIHN0cm9rZWQgbm9kZSBmb3IgcGF0aCB8cHwgd2l0aCB8
bXBfcGVuX3AocCl8IHRlbXBvcmFyaWx5IHxOVUxMfC4KIApAQCAtMTE2MDIsNyArMTE2MDYs
NyBAQCB0eXBlZGVmIHN0cnVjdCBtcF90ZXh0X25vZGVfZGF0YSB7CiB0eXBlZGVmIHN0cnVj
dCBtcF90ZXh0X25vZGVfZGF0YSAqbXBfdGV4dF9ub2RlOwogCiBAIEA8R3JhcGhpY2FsIG9i
amVjdCBjb2Rlc0A+PQotbXBfdGV4dF9jb2RlID0gMywKK21wX3RleHRfY29kZSA9IDMsQFtA
XUA7CiAKIEAgIE1ha2UgYSB0ZXh0IG5vZGUgZm9yIGZvbnQgfGZ8IGFuZCB0ZXh0IHN0cmlu
ZyB8c3wuCiAKQEAgLTExNzAzLDcgKzExNzA3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgbXBfc3Rv
cF9ib3VuZHNfbm9kZV9kYXRhICptcF9zdG9wX2JvdW5kc19ub2RlOwogbXBfc3RhcnRfY2xp
cF9jb2RlID0gNCwgICAgICAgICAvKiB8dHlwZXwgb2YgYSBub2RlIHRoYXQgc3RhcnRzIGNs
aXBwaW5nICovCiAgIG1wX3N0YXJ0X2JvdW5kc19jb2RlID0gNSwgICAgIC8qIHx0eXBlfCBv
ZiBhIG5vZGUgdGhhdCBnaXZlcyBhIFwme3NldGJvdW5kc30gcGF0aCAqLwogICBtcF9zdG9w
X2NsaXBfY29kZSA9IDYsICAgICAgICAvKiB8dHlwZXwgb2YgYSBub2RlIHRoYXQgc3RvcHMg
Y2xpcHBpbmcgKi8KLSAgbXBfc3RvcF9ib3VuZHNfY29kZSA9IDcsICAgICAgLyogfHR5cGV8
IG9mIGEgbm9kZSB0aGF0IHN0b3BzIFwme3NldGJvdW5kc30gKi8KKyAgbXBfc3RvcF9ib3Vu
ZHNfY29kZSA9IDcsQFtAXUA7ICAgICAgLyogfHR5cGV8IG9mIGEgbm9kZSB0aGF0IHN0b3Bz
IFwme3NldGJvdW5kc30gKi8KIAogCiBACkBAIC0xMjAzNSw2ICsxMjAzOSw4IEBAIG51bWJl
cl9jbG9uZShoaC0+ZGFzaF95LCBoLT5kYXNoX3kgKQogCiBAIHxofCBpcyBhbiBlZGdlIHN0
cnVjdHVyZQogCitAcyBtcF9kYXNoX29iamVjdCBpbnQKKwogQGMKIHN0YXRpYyBtcF9kYXNo
X29iamVjdCAqbXBfZXhwb3J0X2Rhc2hlcyAoTVAgbXAsIG1wX3N0cm9rZWRfbm9kZSBxLCBt
cF9udW1iZXIgdykgewogICBtcF9kYXNoX29iamVjdCAqZDsKQEAgLTE4OTQ3LDcgKzE4OTUz
LDcgQEAgc3RhdGljIGludCBtb3ZlX3RvX25leHRfbGluZSAoTVAgbXApIHsKICAgICAgICAg
ICBtcF9maXJtX3VwX3RoZV9saW5lIChtcCk7IC8qIHRoaXMgc2V0cyB8bGltaXR8ICovCiAg
ICAgICAgIGVsc2UKICAgICAgICAgICBtcC0+Zm9yY2VfZW9mID0gdHJ1ZTsKLSAgICAgIH07
CisgICAgICB9CiAgICAgICBpZiAobXAtPmZvcmNlX2VvZikgewogICAgICAgICBtcC0+Zm9y
Y2VfZW9mID0gZmFsc2U7CiAgICAgICAgIGRlY3IgKGxvYyk7CkBAIC0yMTY0OSw3ICsyMTY1
NSw3IEBAIG9mIHRoZSBvY2N1cnJlbmNlcyBvZiBhcmVhIGFuZCBleHRlbnNpb24gZGVsaW1p
dGVycy4KIGludGVnZXIgYXJlYV9kZWxpbWl0ZXI7CiAgIC8qIG1vc3QgcmVjZW50IGBcLj4n
IG9yIGBcLjonIHJlbGF0aXZlIHRvIHxzdHJfc3RhcnRbc3RyX3B0cl18ICovCiBpbnRlZ2Vy
IGV4dF9kZWxpbWl0ZXI7ICAvKiB0aGUgcmVsZXZhbnQgYFwuLicsIGlmIGFueSAqLwotYm9v
bGVhbiBxdW90ZWRfZmlsZW5hbWU7ICAgICAgICAvKiB3aGV0aGVyIHRoZSBmaWxlbmFtZSBp
cyB3cmFwcGVkIGluICIgbWFya2VycyAqLworYm9vbGVhbiBxdW90ZWRfZmlsZW5hbWU7ICAg
ICAgICAvKiB3aGV0aGVyIHRoZSBmaWxlbmFtZSBpcyB3cmFwcGVkIGluIGBcLiInIG1hcmtl
cnMgKi8KIAogQCBIZXJlIG5vdyBpcyB0aGUgZmlyc3Qgb2YgdGhlIHN5c3RlbS1kZXBlbmRl
bnQgcm91dGluZXMgZm9yIGZpbGUgbmFtZSBzY2FubmluZy4KIEBec3lzdGVtIGRlcGVuZGVu
Y2llc0A+CkBAIC0yMTcwNyw3ICsyMTcxMyw3IEBAIGJvb2xlYW4gbXBfbW9yZV9uYW1lIChN
UCBtcCwgQVNDSUlfY29kZSBjKSB7CiB2b2lkIG1wX2VuZF9uYW1lIChNUCBtcCkgewogICBz
aXplX3QgcyA9IDA7IC8qIGxlbmd0aCBvZiBhcmVhLCBuYW1lLCBhbmQgZXh0ZW5zaW9uICov
CiAgIHNpemVfdCBsZW47Ci0gIC8qICJteS93Lm1wIiAqLworICAvKiBcLnsibXkvdy5tcCJ9
ICovCiAgIGlmIChtcC0+YXJlYV9kZWxpbWl0ZXIgPCAwKSB7CiAgICAgbXAtPmN1cl9hcmVh
ID0geHN0cmR1cCAoIiIpOwogICB9IGVsc2UgewpAQCAtMjQ4MDYsNyArMjQ4MTIsNyBAQCBD
T05USU5VRV9QQVRIOgogICAgICAgc2V0X251bWJlcl90b191bml0eSh5KTsKICAgICAgIG1w
X2JhY2tfaW5wdXQgKG1wKTsgICAgICAgICAvKiBkZWZhdWx0IHRlbnNpb24gKi8KICAgICAg
IGdvdG8gRE9ORTsKLSAgICB9OworICAgIH0KICAgICBpZiAoY3VyX2NtZCgpICE9IG1wX3Bh
dGhfam9pbikgewogICAgICAgY29uc3QgY2hhciAqaGxwW10gPSB7ICJBIHBhdGggam9pbiBj
b21tYW5kIHNob3VsZCBlbmQgd2l0aCB0d28gZG90cy4iLCBOVUxMfTsKICAgICAgIG1wX2Jh
Y2tfZXJyb3IgKG1wLCAiTWlzc2luZyBgLi4nIGhhcyBiZWVuIGluc2VydGVkIiwgaGxwLCB0
cnVlKTsKQEAgLTI0OTI4LDcgKzI0OTM0LDcgQEAgQ09OVElOVUVfUEFUSDoKICAgICBpZiAo
dCAhPSBtcF9vcGVuKSB7CiAgICAgICBudW1iZXJfY2xvbmUgKHBwLT5sZWZ0X3gsIHgpOwog
ICAgICAgbXBfbGVmdF90eXBlIChwcCkgPSAodW5zaWduZWQgc2hvcnQpIHQ7Ci0gICAgfTsK
KyAgICB9CiAgIH0KICAgcGF0aF9xID0gcXE7CiAKQEAgLTI1MTcyLDcgKzI1MTc4LDcgQEAg
c3VwcG9zZWQgdG8gYmUgZWl0aGVyIHx0cnVlX2NvZGV8IG9yIHxmYWxzZV9jb2RlfC4KICAg
aWYgKG1wLT5jdXJfZXhwLnR5cGUgIT0gbXBfYm9vbGVhbl90eXBlKSB7CiAgICAgZG9fYm9v
bGVhbl9lcnJvcihtcCk7CiAgIH0KLX0gd2hpbGUgKDApCit9IHdoaWxlICgwKUA7CiAKIEA8
RGVjbGFyZSB0aGUgYmFzaWMgcGFyc2luZyBzdWJyb3V0aW5lc0A+PQogc3RhdGljIHZvaWQg
ZG9fYm9vbGVhbl9lcnJvciAoTVAgbXApIHsKQEAgLTI1NTI1LDExICsyNTUzMSwxMSBAQCBm
b3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgLgogQGQgY3VyX3BpY19pdGVtIG1wX2xpbmso
ZWRnZV9saXN0KGN1cl9leHBfbm9kZSgpKSkKIEBkIHBpY3RfY29sb3JfdHlwZShBKSAoKGN1
cl9waWNfaXRlbSE9TlVMTCkgJiYKICAgICAgICAgICgoIWhhc19jb2xvcihjdXJfcGljX2l0
ZW0pKQotICAgICAgICAgIHx8CisgICAgICAgICAgfHwgQHwKICAgICAgICAgICgoKG1wX2Nv
bG9yX21vZGVsKGN1cl9waWNfaXRlbSk9PUEpCi0gICAgICAgICAgfHwKLSAgICAgICAgICAo
KG1wX2NvbG9yX21vZGVsKGN1cl9waWNfaXRlbSk9PW1wX3VuaW5pdGlhbGl6ZWRfbW9kZWwp
ICYmCi0gICAgICAgICAgIChudW1iZXJfdG9fc2NhbGVkIChpbnRlcm5hbF92YWx1ZShtcF9k
ZWZhdWx0X2NvbG9yX21vZGVsKSkvbnVtYmVyX3RvX3NjYWxlZCAodW5pdHlfdCkpPT0oQSkp
KSkpKQorICAgICAgICAgIHx8IEB8CisgICAgICAgICAgKChtcF9jb2xvcl9tb2RlbChjdXJf
cGljX2l0ZW0pPT1tcF91bmluaXRpYWxpemVkX21vZGVsKSAmJiBAfAorICAgICAgICAgICAo
bnVtYmVyX3RvX3NjYWxlZCAoaW50ZXJuYWxfdmFsdWUobXBfZGVmYXVsdF9jb2xvcl9tb2Rl
bCkpLyBAfCBudW1iZXJfdG9fc2NhbGVkICh1bml0eV90KSk9PShBKSkpKSkpCiAKIEBkIGJv
b2xlYW5fcmVzZXQoQSkgaWYgKCAoQSkgKSBzZXRfY3VyX2V4cF92YWx1ZV9ib29sZWFuKG1w
X3RydWVfY29kZSk7IGVsc2Ugc2V0X2N1cl9leHBfdmFsdWVfYm9vbGVhbihtcF9mYWxzZV9j
b2RlKQogCkBAIC0yNjI5Nyw3ICsyNjMwMyw3IEBAIHN0YXRpYyB2b2lkIG1wX2JhZF9jb2xv
cl9wYXJ0IChNUCBtcCwgcXVhcnRlcndvcmQgYykgewogICBjaGFyIG1zZ1syNTZdOwogICBp
bnQgb2xkX3NldHRpbmc7CiAgIG1wX3N0cmluZyBzbmFtZTsKLSAgY29uc3QgY2hhciAqaGxw
W10gPSB7CisgIGNvbnN0IGNoYXIgKmhscFtdID0ge0B8CiAgICAgICJZb3UgY2FuIG9ubHkg
YXNrIGZvciB0aGUgcmVkcGFydCwgZ3JlZW5wYXJ0LCBibHVlcGFydCBvZiBhIHJnYiBvYmpl
Y3QsIiwKICAgICAgInRoZSBjeWFucGFydCwgbWFnZW50YXBhcnQsIHllbGxvd3BhcnQgb3Ig
YmxhY2twYXJ0IG9mIGEgY215ayBvYmplY3QsICIsCiAgICAgICJvciB0aGUgZ3JleXBhcnQg
b2YgYSBncmV5IG9iamVjdC4gTm8gbWl4aW5nIGFuZCBtYXRjaGluZywgcGxlYXNlLiIsCkBA
IC0yNjUxOSw3ICsyNjUyNSw3IEBAIHN0YXRpYyB2b2lkIG1wX3Rha2VfcGljdF9wYXJ0IChN
UCBtcCwgcXVhcnRlcndvcmQgYykgewogICAgICAgICBhZGRfc3RyX3JlZiAobmV3X2V4cHIu
ZGF0YS5zdHIpOwogICAgICAgICBtcF9mbHVzaF9jdXJfZXhwIChtcCwgbmV3X2V4cHIpOwog
ICAgICAgICBtcC0+Y3VyX2V4cC50eXBlID0gbXBfc3RyaW5nX3R5cGU7Ci0gICAgICB9Owor
ICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBtcF9wcmVzY3JpcHRfcGFydDoKICAg
ICAgIGlmICghaGFzX2NvbG9yIChwKSkgewpAQCAtMjY1MzMsNyArMjY1MzksNyBAQCBzdGF0
aWMgdm9pZCBtcF90YWtlX3BpY3RfcGFydCAoTVAgbXAsIHF1YXJ0ZXJ3b3JkIGMpIHsKICAg
ICAgICAgfQogICAgICAgICBtcF9mbHVzaF9jdXJfZXhwIChtcCwgbmV3X2V4cHIpOwogICAg
ICAgICBtcC0+Y3VyX2V4cC50eXBlID0gbXBfc3RyaW5nX3R5cGU7Ci0gICAgICB9OworICAg
ICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBtcF9wb3N0c2NyaXB0X3BhcnQ6CiAgICAg
ICBpZiAoIWhhc19jb2xvciAocCkpIHsKQEAgLTI2NTQ3LDcgKzI2NTUzLDcgQEAgc3RhdGlj
IHZvaWQgbXBfdGFrZV9waWN0X3BhcnQgKE1QIG1wLCBxdWFydGVyd29yZCBjKSB7CiAgICAg
ICAgIH0KICAgICAgICAgbXBfZmx1c2hfY3VyX2V4cCAobXAsIG5ld19leHByKTsKICAgICAg
ICAgbXAtPmN1cl9leHAudHlwZSA9IG1wX3N0cmluZ190eXBlOwotICAgICAgfTsKKyAgICAg
IH0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgbXBfZm9udF9wYXJ0OgogICAgICAgaWYgKG1w
X3R5cGUgKHApICE9IG1wX3RleHRfbm9kZV90eXBlKQpAQCAtMjY1NTcsNyArMjY1NjMsNyBA
QCBzdGF0aWMgdm9pZCBtcF90YWtlX3BpY3RfcGFydCAoTVAgbXAsIHF1YXJ0ZXJ3b3JkIGMp
IHsKICAgICAgICAgYWRkX3N0cl9yZWYgKG5ld19leHByLmRhdGEuc3RyKTsKICAgICAgICAg
bXBfZmx1c2hfY3VyX2V4cCAobXAsIG5ld19leHByKTsKICAgICAgICAgbXAtPmN1cl9leHAu
dHlwZSA9IG1wX3N0cmluZ190eXBlOwotICAgICAgfTsKKyAgICAgIH0KICAgICAgIGJyZWFr
OwogICAgIGNhc2UgbXBfcGF0aF9wYXJ0OgogICAgICAgaWYgKG1wX3R5cGUgKHApID09IG1w
X3RleHRfbm9kZV90eXBlKSB7CkBAIC0yOTQ0Niw2ICsyOTQ1Miw4IEBAIHN0YXRpYyB2b2lk
IG1wX3NldF91cF9ib3VuZGluZ3BhdGggKE1QIG1wLCBtcF9ub2RlIHApIHsKIEAgVGhpcyBp
cyBwcmV0dHkgc3RyYWlnaHRmb3dhcmQuIFRoZSBvbmUgc2lsbHkgdGhpbmcgaXMgdGhhdAog
dGhlIG91dHB1dCBvZiB8bXBfcHNfZG9fZm9udF9jaGFyc3RyaW5nfCBoYXMgdG8gYmUgdW4t
ZXhwb3J0ZWQuCiAKK0BzIG1wX3BzX2ZvbnQgaW50CisKIEA8RGVjbGFyZSBiaW5hcnkgYWN0
aW9uLi4uQD49CiBzdGF0aWMgdm9pZCBtcF9zZXRfdXBfZ2x5cGhfaW5mb250IChNUCBtcCwg
bXBfbm9kZSBwKSB7CiAgIG1wX2VkZ2Vfb2JqZWN0ICpoID0gTlVMTDsKQEAgLTMxODIwLDE5
ICszMTgyOCwyMyBAQCBwaWN0dXJlIHdpbGwgZXZlciBjb250YWluIGEgY29sb3Igb3V0c2lk
ZSB0aGUgbGVnYWwgcmFuZ2UgZm9yIFxwc1wgZ3JhcGhpY3MuCiAKIEBjCiBzdGF0aWMgaW50
IGlzX2ludmFsaWRfd2l0aF9saXN0IChNUCBtcCwgbXBfdmFyaWFibGVfdHlwZSB0KSB7Ci0g
IHJldHVybiAoKHQgPT0gd2l0aF9tcF9wcmVfc2NyaXB0KSAmJiAobXAtPmN1cl9leHAudHlw
ZSAhPSBtcF9zdHJpbmdfdHlwZSkpIHx8Ci0gICAgICAgICgodCA9PSB3aXRoX21wX3Bvc3Rf
c2NyaXB0KSAmJiAobXAtPmN1cl9leHAudHlwZSAhPSBtcF9zdHJpbmdfdHlwZSkpIHx8Ci0g
ICAgICAgICgodCA9PSAobXBfdmFyaWFibGVfdHlwZSkgbXBfdW5pbml0aWFsaXplZF9tb2Rl
bCkgJiYKLSAgICAgICAgICgobXAtPmN1cl9leHAudHlwZSAhPSBtcF9jbXlrY29sb3JfdHlw
ZSkKLSAgICAgICAgICAmJiAobXAtPmN1cl9leHAudHlwZSAhPSBtcF9jb2xvcl90eXBlKQot
ICAgICAgICAgICYmIChtcC0+Y3VyX2V4cC50eXBlICE9IG1wX2tub3duKQotICAgICAgICAg
ICYmIChtcC0+Y3VyX2V4cC50eXBlICE9IG1wX2Jvb2xlYW5fdHlwZSkpKSB8fCAoKHQgPT0g
KG1wX3ZhcmlhYmxlX3R5cGUpIG1wX2NteWtfbW9kZWwpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobXAtPmN1cl9leHAu
dHlwZSAhPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1wX2NteWtjb2xvcl90eXBlKSkKLSAgICAgICAgfHwgKCh0ID09
IChtcF92YXJpYWJsZV90eXBlKSBtcF9yZ2JfbW9kZWwpICYmIChtcC0+Y3VyX2V4cC50eXBl
ICE9IG1wX2NvbG9yX3R5cGUpKQotICAgICAgICB8fCAoKHQgPT0gKG1wX3ZhcmlhYmxlX3R5
cGUpIG1wX2dyZXlfbW9kZWwpICYmIChtcC0+Y3VyX2V4cC50eXBlICE9IG1wX2tub3duKSkK
LSAgICAgICAgfHwgKCh0ID09IChtcF92YXJpYWJsZV90eXBlKSBtcF9wZW5fdHlwZSkgJiYg
KG1wLT5jdXJfZXhwLnR5cGUgIT0gdCkpCi0gICAgICAgIHx8ICgodCA9PSAobXBfdmFyaWFi
bGVfdHlwZSkgbXBfcGljdHVyZV90eXBlKSAmJiAobXAtPmN1cl9leHAudHlwZSAhPSB0KSk7
CisgIHJldHVybiAoKHQgPT0gd2l0aF9tcF9wcmVfc2NyaXB0KSAmJiAobXAtPmN1cl9leHAu
dHlwZSAhPSBtcF9zdHJpbmdfdHlwZSkpIHx8IEB8CisgICAgICAgICgodCA9PSB3aXRoX21w
X3Bvc3Rfc2NyaXB0KSAmJiAobXAtPmN1cl9leHAudHlwZSAhPSBtcF9zdHJpbmdfdHlwZSkp
IHx8IEB8CisgICAgICAgICgodCA9PSAobXBfdmFyaWFibGVfdHlwZSkgbXBfdW5pbml0aWFs
aXplZF9tb2RlbCkgJiYgQHwKKyAgICAgICAgICgobXAtPmN1cl9leHAudHlwZSAhPSBtcF9j
bXlrY29sb3JfdHlwZSkgQHwKKyAgICAgICAgICAmJiAobXAtPmN1cl9leHAudHlwZSAhPSBt
cF9jb2xvcl90eXBlKSBAfAorICAgICAgICAgICYmIChtcC0+Y3VyX2V4cC50eXBlICE9IG1w
X2tub3duKSBAfAorICAgICAgICAgICYmIChtcC0+Y3VyX2V4cC50eXBlICE9IG1wX2Jvb2xl
YW5fdHlwZSkpKSB8fCBAfAorICAgICAgICAoKHQgPT0gKG1wX3ZhcmlhYmxlX3R5cGUpIG1w
X2NteWtfbW9kZWwpIEB8CisgICAgICAgICAgJiYgKG1wLT5jdXJfZXhwLnR5cGUgIT0gbXBf
Y215a2NvbG9yX3R5cGUpKSB8fCBAfAorICAgICAgICAoKHQgPT0gKG1wX3ZhcmlhYmxlX3R5
cGUpIG1wX3JnYl9tb2RlbCkgQHwKKyAgICAgICAgICAmJiAobXAtPmN1cl9leHAudHlwZSAh
PSBtcF9jb2xvcl90eXBlKSkgfHwgQHwKKyAgICAgICAgKCh0ID09IChtcF92YXJpYWJsZV90
eXBlKSBtcF9ncmV5X21vZGVsKSBAfAorICAgICAgICAgICYmIChtcC0+Y3VyX2V4cC50eXBl
ICE9IG1wX2tub3duKSkgfHwgQHwKKyAgICAgICAgKCh0ID09IChtcF92YXJpYWJsZV90eXBl
KSBtcF9wZW5fdHlwZSkgQHwKKyAgICAgICAgICAmJiAobXAtPmN1cl9leHAudHlwZSAhPSB0
KSkgfHwgQHwKKyAgICAgICAgKCh0ID09IChtcF92YXJpYWJsZV90eXBlKSBtcF9waWN0dXJl
X3R5cGUpIEB8CisgICAgICAgICAgJiYgKG1wLT5jdXJfZXhwLnR5cGUgIT0gdCkpOwogfQog
c3RhdGljIHZvaWQgY29tcGxhaW5faW52YWxpZF93aXRoX2xpc3QgKE1QIG1wLCBtcF92YXJp
YWJsZV90eXBlIHQpIHsKICAgIC8qIENvbXBsYWluIGFib3V0IGltcHJvcGVyIHR5cGUgKi8K
QEAgLTMzMTczLDcgKzMzMTg1LDggQEAgbXAtPnRmbV9pdGFsX2NvcnJbY10gPSBtcF90Zm1f
Y2hlY2sgKG1wLCBtcF9jaGFyX2ljKQogQCBOb3cgbGV0J3MgY29uc2lkZXIgXE1QJ3Mgc3Bl
Y2lhbCBcLntURk19LW9yaWVudGVkIGNvbW1hbmRzLgogCiAKLUAgQGQgY2hhcl9saXN0X2Nv
ZGUgMAorQAorQGQgY2hhcl9saXN0X2NvZGUgMAogQGQgbGlnX3RhYmxlX2NvZGUgMQogQGQg
ZXh0ZW5zaWJsZV9jb2RlIDIKIEBkIGhlYWRlcl9ieXRlX2NvZGUgMwpAQCAtMzMzODQsNyAr
MzMzOTcsNyBAQCBDT05USU5VRToKICAgfSBlbHNlIHsKICAgICBtcF9iYWNrX2lucHV0ICht
cCk7CiAgICAgYyA9IG1wX2dldF9jb2RlIChtcCk7Ci0gIH07CisgIH0KICAgaWYgKChjdXJf
Y21kKCkgPT0gbXBfY29sb24pIHx8IChjdXJfY21kKCkgPT0gbXBfZG91YmxlX2NvbG9uKSkg
ewogICAgIEA8UmVjb3JkIGEgbGFiZWwgaW4gYSBsaWcva2VybiBzdWJwcm9ncmFtIGFuZCB8
Z290byBjb250aW51ZXxAPjsKICAgfQpAQCAtMzQ0OTAsNyArMzQ1MDMsNyBAQCBUaGUgY29y
cmVzcG9uZGluZyB3b3JkcyBpbiB0aGUgd2lkdGgsIGhlaWdodCwgYW5kIGRlcHRoIHRhYmxl
cyBhcmUgc3RvcmVkIGFzCiB8c2NhbGVkfCB2YWx1ZXMgaW4gdW5pdHMgb2YgXHBzXCBwb2lu
dHMuCiAKIFdpdGggdGhlIG1hY3JvcyBiZWxvdywgdGhlIHxjaGFyX2luZm98IHdvcmQgZm9y
IGNoYXJhY3Rlcn58Y3wgaW4gZm9udH58ZnwgaXMKLXxjaGFyX21wX2luZm8oZixjKXwgYW5k
IHRoZSB3aWR0aCBpcworfGNoYXJfbXBfaW5mbyhmLGMpfCBhbmQgdGhlIHdpZHRofmlzCiAk
JFxoYm94e3xjaGFyX3dpZHRoKGYsY2hhcl9tcF9pbmZvKGYsYykpLnNjfC59JCQKIAogQGQg
Y2hhcl9tcF9pbmZvKEEsQikgbXAtPmZvbnRfaW5mb1ttcC0+Y2hhcl9iYXNlWyhBKV0rKEIp
XS5xcXFxCkBAIC0zNDg4MSw3ICszNDg5NCw3IEBAIGNoYXIgKm1wX3NldF9vdXRwdXRfZmls
ZV9uYW1lIChNUCBtcCwgaW50ZWdlciBjKSB7CiAgICAgICAgICAgaWYgKG4tPmxlbiA9PSAw
KQogICAgICAgICAgICAgbiA9IG1wX21ha2Vfc3RyaW5nIChtcCk7CiAgICAgICAgIG1wX3By
aW50X2NoYXIgKG1wLCAqKGZ0ZW1wbGF0ZS0+c3RyICsgaSkpOwotICAgICAgfTsKKyAgICAg
IH0KICAgICAgIGluY3IgKGkpOwogICAgIH0KICAgICBzID0gbXBfbWFrZV9zdHJpbmcgKG1w
KTsKQEAgLTM0OTg0LDEzICszNDk5NywxMyBAQCBlbHNlIGlmICgobXAtPnRlcm1fb2Zmc2V0
ID4gMCkgfHwgKG1wLT5maWxlX29mZnNldCA+IDApKQogICBtcF9wcmludF9jaGFyIChtcCwg
eG9yZCAoJyAnKSk7CiBtcF9wcmludF9jaGFyIChtcCwgeG9yZCAoJ1snKSk7CiBpZiAoYyA+
PSAwKQotICBtcF9wcmludF9pbnQgKG1wLCBjKQorICBtcF9wcmludF9pbnQgKG1wLCBjKUA7
CiAKIAogQCBAPEVuZCBwcm9ncmVzcyByZXBvcnRAPj0KIG1wX3ByaW50X2NoYXIgKG1wLCB4
b3JkICgnXScpKTsKIHVwZGF0ZV90ZXJtaW5hbCgpOwotaW5jciAobXAtPnRvdGFsX3NoaXBw
ZWQpCitpbmNyIChtcC0+dG90YWxfc2hpcHBlZClAOwogCiAKIEAgQDxFeHBsYWluIHdoYXQg
b3V0cHV0IGZpbGVzIHdlcmUgd3JpdHRlbkA+PQpAQCAtMzUwNjQsNyArMzUwNzcsNyBAQCB2
b2lkIG1wX2RvX3NwZWNpYWwgKE1QIG1wKSB7CiBAIE9uIHRoZSBleHBvcnQgc2lkZSwgd2Ug
bmVlZCBhbiBleHRyYSBvYmplY3QgdHlwZSBmb3Igc3BlY2lhbCBzdHJpbmdzLgogCiBAPEdy
YXBoaWNhbCBvYmplY3QgY29kZXNAPj0KLW1wX3NwZWNpYWxfY29kZSA9IDgsCittcF9zcGVj
aWFsX2NvZGUgPSA4LEBbQF1AOwogCiBAIEA8RXhwb3J0IHBlbmRpbmcgc3BlY2lhbHNAPj0K
IHAgPSBtcF9saW5rIChtcC0+c3BlY19oZWFkKTsKQEAgLTM1MDgxLDcgKzM1MDk0LDcgQEAg
d2hpbGUgKHAgIT0gTlVMTCkgewogfQogbXBfZmx1c2hfdG9rZW5fbGlzdCAobXAsIG1wX2xp
bmsgKG1wLT5zcGVjX2hlYWQpKTsKIG1wX2xpbmsgKG1wLT5zcGVjX2hlYWQpID0gTlVMTDsK
LW1wLT5sYXN0X3BlbmRpbmcgPSBtcC0+c3BlY19oZWFkCittcC0+bGFzdF9wZW5kaW5nID0g
bXAtPnNwZWNfaGVhZEA7CiAKIEAgV2UgYXJlIG5vdyByZWFkeSBmb3IgdGhlIG1haW4gb3V0
cHV0IHByb2NlZHVyZS4gIE5vdGUgdGhhdCB0aGUgfHNlbGVjdG9yfAogc2V0dGluZyBpcyBz
YXZlZCBpbiBhIGdsb2JhbCB2YXJpYWJsZSBzbyB0aGF0IHxiZWdpbl9kaWFnbm9zdGljfCBj
YW4gYWNjZXNzIGl0LgpAQCAtMzUxMDEsMTEgKzM1MTE0LDExIEBAIHN0YXRpYyB2b2lkIG1w
X3NoaXBfb3V0IChNUCBtcCwgbXBfbm9kZSBoKTsKIAogQGQgZXhwb3J0X2NvbG9yKHEscCkK
ICAgaWYgKCBtcF9jb2xvcl9tb2RlbChwKT09bXBfdW5pbml0aWFsaXplZF9tb2RlbCApIHsK
LSAgICBncl9jb2xvcl9tb2RlbChxKSAgPSAodW5zaWduZWQgY2hhcikobnVtYmVyX3RvX3Nj
YWxlZCAoaW50ZXJuYWxfdmFsdWUobXBfZGVmYXVsdF9jb2xvcl9tb2RlbCkpLzY1NTM2KTsK
KyAgICBncl9jb2xvcl9tb2RlbChxKSAgPSAodW5zaWduZWQgY2hhcilAfChudW1iZXJfdG9f
c2NhbGVkIChpbnRlcm5hbF92YWx1ZShtcF9kZWZhdWx0X2NvbG9yX21vZGVsKSkvNjU1MzYp
OwogICAgIGdyX2N5YW5fdmFsKHEpICAgICA9IDA7CiAJZ3JfbWFnZW50YV92YWwocSkgID0g
MDsKIAlncl95ZWxsb3dfdmFsKHEpICAgPSAwOwotCWdyX2JsYWNrX3ZhbChxKSAgICA9ICgo
Z3JfY29sb3JfbW9kZWwocSk9PW1wX2NteWtfbW9kZWwgPyBudW1iZXJfdG9fc2NhbGVkICh1
bml0eV90KSA6IDApIC8gNjU1MzYuMCk7CisJZ3JfYmxhY2tfdmFsKHEpICAgID0gKChncl9j
b2xvcl9tb2RlbChxKT09bXBfY215a19tb2RlbCA/IEB8IG51bWJlcl90b19zY2FsZWQgKHVu
aXR5X3QpIDogMCkgLyA2NTUzNi4wKTsKICAgfSBlbHNlIHsKICAgICBncl9jb2xvcl9tb2Rl
bChxKSAgPSAodW5zaWduZWQgY2hhciltcF9jb2xvcl9tb2RlbChwKTsKICAgICBncl9jeWFu
X3ZhbChxKSAgICAgPSBudW1iZXJfdG9fZG91YmxlKHAtPmN5YW4pOwpAQCAtMzU0NTksNyAr
MzU0NzIsNyBAQCBib29sZWFuIG1wX2xvYWRfcHJlbG9hZF9maWxlIChNUCBtcCkgewogICBt
cC0+cmVhZGluZ19wcmVsb2FkID0gdHJ1ZTsKICAgZG8gewogICAgIG1wX2RvX3N0YXRlbWVu
dCAobXApOwotICB9IHdoaWxlICghKGN1cl9jbWQoKSA9PSBtcF9zdG9wKSk7ICAgICAvKiAi
ZHVtcCIgb3IgRU9GICovCisgIH0gd2hpbGUgKCEoY3VyX2NtZCgpID09IG1wX3N0b3ApKTsg
ICAgIC8qIGBgZHVtcCcnIG9yIEVPRiAqLwogICBtcC0+cmVhZGluZ19wcmVsb2FkID0gZmFs
c2U7CiAgIG1wX3ByaW1pdGl2ZSAobXAsICJkdW1wIiwgbXBfcmVsYXgsIDApOyAvKiByZXNl
dCB8ZHVtcHwgKi8KICAgd2hpbGUgKG1wLT5pbnB1dF9wdHIgPiAwKSB7CkBAIC0zNTQ3Myw3
ICszNTQ4Niw3IEBAIGJvb2xlYW4gbXBfbG9hZF9wcmVsb2FkX2ZpbGUgKE1QIG1wKSB7CiAg
IHdoaWxlIChtcC0+b3Blbl9wYXJlbnMgPiAwKSB7CiAgICAgbXBfcHJpbnQgKG1wLCAiICki
KTsKICAgICBkZWNyIChtcC0+b3Blbl9wYXJlbnMpOwotICB9OworICB9CiAgIHdoaWxlICht
cC0+Y29uZF9wdHIgIT0gTlVMTCkgewogICAgIG1wX3ByaW50X25sIChtcCwgIihkdW1wIG9j
Y3VycmVkIHdoZW4gIik7CiBALmR1bXAgb2NjdXJyZWQuLi5APgotLSAKMi40My4yCgo=

--------------hdAXmepwQb0i0xBdFagQaEC0
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

--
http://tug.org/metapost/

--------------hdAXmepwQb0i0xBdFagQaEC0--