delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2015/05/13/04:55:53

X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f
X-Recipient: geda-user AT delorie DOT com
X-Cam-AntiVirus: no malware found
X-Cam-ScannerInfo: http://www.cam.ac.uk/cs/email/scanner/
Message-ID: <1431507326.2980.52.camel@cam.ac.uk>
Subject: Re: [geda-user] Using gerbv for assisting manual placement tasks
(INITIAL CODE ATTACHED FOR BETA-TEST)
From: Peter Clifton <pcjc2 AT cam DOT ac DOT uk>
To: geda-user AT delorie DOT com
Date: Wed, 13 May 2015 09:55:26 +0100
In-Reply-To: <201505130159.t4D1xkkd031338@envy.delorie.com>
References: <1431386490 DOT 2980 DOT 28 DOT camel AT cam DOT ac DOT uk>
<CAC4O8c9p2qhrc+1J53C7Apu=h+Jd2b_v+tdF7m70-ABng=GLfQ AT mail DOT gmail DOT com>
<201505130159 DOT t4D1xkkd031338 AT envy DOT delorie DOT com>
X-Mailer: Evolution 3.12.11-0ubuntu3
Mime-Version: 1.0
Reply-To: geda-user AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: geda-user AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

--=-pAyQzMNWHxpEFp68X8r8
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit

On Tue, 2015-05-12 at 21:59 -0400, DJ Delorie wrote:
> > You imply above that if it had been a gEDA board, you'd have had a
> > better way to do it already.  I'm curious what that way is, besides
> > poking at PCB to make the refdes visible,
> 
> I use a script that greps the BOM and highlights all matches in PCB...

Exactly.. some machine-searchable data you can look at on screen is key.

As this was non-gEDA data (not my board design), I couldn't just
search / highlight the data in PCB.

I'll probably augment my gerbv code to allow highlighting multiple
component placements with the same value in one go, rather than just
using the cross-hair.

The entire feature was prototyped in a couple of hours whilst sitting at
the prototype assembly house. It only took me a few placements to
realising the futility of eye balling the silkscreen / looking up XY
coordinates in the PnP data file by hand. Coding ensued after that.


I "think" I've got commit access to gerbv.. if no maintainer pops
forward wanting to review this stuff as patches, I'll shove stuff in. 

I'll need to clean it up a bit first, as it was rather "rapid
prototyped" in a hurry. I've promised my friend who runs the assembly
service I'd get him a Win32 copy for next week, so I should hopefully
have someone prodding me to get this done ASAP!


If anyone wanted to beta-test, my initial code is attached as a patch
against git HEAD gerbv. This is a bit kludgy in places, so needs tidying
up before it is pushed.

Load a PCB format ".xy" file, and another layer for land-marking (I used
top-silk), select the "Parts" tab.

I've also attached my "TODO" list..

Peter


-- 
Peter Clifton <peter DOT clifton AT clifton-electronics DOT co DOT uk>

Clifton Electronics

--=-pAyQzMNWHxpEFp68X8r8
Content-Disposition: attachment; filename="placement_notes.txt"
Content-Transfer-Encoding: base64
Content-Type: text/plain; name="placement_notes.txt"; charset="UTF-8"

RmVhdHVyZSBUT0RPcyBmb3IgZ2VyYnYgcGxhY2VtZW50IGhlbHBlci4KCkFkZCBwbGFjZWQgLyBu
b24tcGxhY2VkIHN0YXR1cyB0byBkYXRhLXN0cnVjdHVyZQpBZGQgYWJpbGl0eSB0byByZWFkIGlu
IHBsYWNlZCAvIG5vbi1wbGFjZWQgc3RhdHVzCkFkZCBhYmlsaXR5IHRvIHNhdmUgb3V0IHBsYWNl
bWVudCBkYXRhIHRvIG5ldyBYWSBmaWxlClNvcnQgYnkgZGlmZmVyZW50IGNvbHVtbnM/CiAgLSBT
b3J0IGJ5IHJlZmRlcwogIC0gU29ydCBieSB2YWx1ZQogIC0gU29ydCBieSBsb2NhdGlvbj8KCkV4
cGFuZCBhbGwgLyBDb2xsYXBzZSBhbGwgLyBFeHBhbmQgdW5wbGFjZWQgYnV0dG9ucz8KQWJpbGl0
eSB0byBleHBhbmQgLyBjb250YWN0IHRyZWUgbm9kZXMgd2l0aCBjdXJzb3IgYXJyb3cga2V5cwpB
dXRvbWF0aWNhbGx5IG1hcmsgcGFyZW50IG5vZGVzIGFzIHN0cnVjay10aHJvdWdoIGlmIGFsbCBj
aGlsZHJlbiBhcmUgcGxhY2VkPwpBZGQgY29tbWVudHMgZmllbGQgZm9yIG1ha2luZyBub3RlcyBh
cyB0byBhbnkgcHJvYmxlbXMgZW5jb3VudGVyZWQKClNlYXJjaCBmZWF0dXJlIChieSByZWZkZXMg
cHJvYmFibHk/KQoKCkNvdW50cywgcGVyIGdyb3VwICh1bnBsYWNlZCAvIHRvdGFsKQoKQ29kZSB0
byB1bnNldCBjcm9zc2hhaXIgd2hlbiBub3QgaW4gInBhcnQtcGxhY2VtZW50IG1vZGUiIC8gbm8g
c2VsZWN0aW9uIGlzIG1hZGUgaW4gdGhlIGxpc3QgZXRjLi4KVmlzdWFsaXNhdGlvbiBvZiBzZWxl
Y3RlZCBjb21wb25lbnQgYnkgcmluZyAvIGNvbG91ciBzYXR1cmF0aW9uIGhpZ2hsaWdodD8KVmlz
dWFsaXNhdGlvbiBvZiBtdWx0aXBsZSBzZWxlY3RlZCBjb21wb25lbnRzIHNpbXVsdGFuZW91c2x5
PwoKQ29uc2lkZXIgaG93IGJhY2stc2lkZSBwbGFjZW1lbnQgd29ya3MsIGFuZCB3aGV0aGVyIGFu
eSBjb2RlLWNoYW5nZXMgYXJlIHJlcXVpcmVkLgoKCkRPVCBmaWxlIHRvb2w6CgpBZGQgYWJpbGl0
eSB0byByZWFkIGluIC5ESUQgZmlsZSBmb3IgZG90IGRhdGEKQWRkIGFiaWxpdHkgdG8gc2F2ZSBh
IC5ESUQgZmlsZSAoZnJvbSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbikKQ2hhbmdlIERJRCBleHBv
cnQgb2YgZ2VyYmVyIGRhdGEgdG8gYSAiY3JlYXRlIG5ldyBESUQgbGF5ZXIgZnJvbSBQQVNURSBs
YXllciIKQ29uc2lkZXIgaG93IHdlIGNhbiBsb2FkIGEgbWFwcGluZyBmaWxlIHRvIGRlZmluZSBk
b3QgdHlwZSBuYW1lcyBmcm9tIHBhZCBzaXplCgoK


--=-pAyQzMNWHxpEFp68X8r8
Content-Disposition: attachment; filename="0001-Add-manual-PnP-helper-functionality.patch"
Content-Transfer-Encoding: base64
Content-Type: text/x-patch; name="0001-Add-manual-PnP-helper-functionality.patch";
	charset="UTF-8"

RnJvbSAwYmRhMjg0MjkzZGZkMDdhNTQ5MzJlMTY3OGFmNTNkZGFhODgwMWUzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBDbGlmdG9uIDxwZXRlckBjbGlmdG9uLWVsZWN0cm9u
aWNzLmNvLnVrPgpEYXRlOiBXZWQsIDEzIE1heSAyMDE1IDA5OjUxOjI4ICswMTAwClN1YmplY3Q6
IFtQQVRDSF0gQWRkIG1hbnVhbCBQblAgaGVscGVyIGZ1bmN0aW9uYWxpdHkKCi0tLQogc3JjL01h
a2VmaWxlLmFtICAgICAgfCAgIDEgKwogc3JjL2NhbGxiYWNrcy5jICAgICAgfCAgMTAgKysrKwog
c3JjL2NhbGxiYWNrcy5oICAgICAgfCAgIDEgKwogc3JjL2dlcmJ2LmggICAgICAgICAgfCAgIDgg
KysrCiBzcmMvaW50ZXJmYWNlLmMgICAgICB8IDE1OCArKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9pbnRlcmZhY2UuaCAgICAgIHwgIDE2ICsr
KysrKwogc3JjL21haW4uaCAgICAgICAgICAgfCAgIDMgKwogc3JjL3BpY2stYW5kLXBsYWNlLmMg
fCAxMjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBzcmMvcGljay1h
bmQtcGxhY2UuaCB8ICAgMSArCiBzcmMvcmVuZGVyLmMgICAgICAgICB8ICA0NiArKysrKysrKysr
KysrKysKIHNyYy9yZW5kZXIuaCAgICAgICAgIHwgICAzICsKIDExIGZpbGVzIGNoYW5nZWQsIDM2
OCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxl
LmFtIGIvc3JjL01ha2VmaWxlLmFtCmluZGV4IGEzNDYxMmYuLjNiNDQ1MzUgMTAwNjQ0Ci0tLSBh
L3NyYy9NYWtlZmlsZS5hbQorKysgYi9zcmMvTWFrZWZpbGUuYW0KQEAgLTQyLDYgKzQyLDcgQEAg
bGliZ2VyYnZfbGFfU09VUkNFUz0gXAogCQlkcmlsbC5jIGRyaWxsLmggXAogCQlkcmlsbF9zdGF0
cy5jIGRyaWxsX3N0YXRzLmggXAogCQlleHBvcnQtZHJpbGwuYyBcCisJCWV4cG9ydC1kb3RzLmMg
XAogCQlleHBvcnQtcnMyNzR4LmMgXAogCQlleHBvcnRpbWFnZS5jIFwKIAkJZ2VyYl9maWxlLmMg
Z2VyYl9maWxlLmggXApkaWZmIC0tZ2l0IGEvc3JjL2NhbGxiYWNrcy5jIGIvc3JjL2NhbGxiYWNr
cy5jCmluZGV4IGRmYjI5ZGMuLmZmNjQzNWQgMTAwNjQ0Ci0tLSBhL3NyYy9jYWxsYmFja3MuYwor
KysgYi9zcmMvY2FsbGJhY2tzLmMKQEAgLTQ2Miw2ICs0NjIsOCBAQCBjYWxsYmFja3NfZ2VuZXJp
Y19zYXZlX2FjdGl2YXRlIChHdGtNZW51SXRlbSAgICAgKm1lbnVpdGVtLAogCQl3aW5kb3dUaXRs
ZSA9IGdfc3RyZHVwIChfKCJFeHBvcnQgUlMtMjc0WCBmaWxlIGFzLi4uIikpOwogCWVsc2UgaWYg
KHByb2Nlc3NUeXBlID09IENBTExCQUNLU19TQVZFX0ZJTEVfRFJJTEwpCiAJCXdpbmRvd1RpdGxl
ID0gZ19zdHJkdXAgKF8oIkV4cG9ydCBFeGNlbGxvbiBkcmlsbCBmaWxlIGFzLi4uIikpOworCWVs
c2UgaWYgKHByb2Nlc3NUeXBlID09IENBTExCQUNLU19TQVZFX0ZJTEVfRE9UUykKKwkJd2luZG93
VGl0bGUgPSBnX3N0cmR1cCAoXygiRXhwb3J0IERvdHMgZmlsZSBhcy4uLiIpKTsKIAllbHNlIGlm
IChwcm9jZXNzVHlwZSA9PSBDQUxMQkFDS1NfU0FWRV9GSUxFX1JTMjc0WE0pCiAJCXdpbmRvd1Rp
dGxlID0gZ19zdHJkdXAgKF8oIkV4cG9ydCBSUy0yNzRYbSBmaWxlIGFzLi4uIikpOwogCWVsc2Ug
aWYgKHByb2Nlc3NUeXBlID09IENBTExCQUNLU19TQVZFX0ZJTEVfRFJJTExNKQpAQCAtNTY0LDYg
KzU2NiwxMiBAQCBjYWxsYmFja3NfZ2VuZXJpY19zYXZlX2FjdGl2YXRlIChHdGtNZW51SXRlbSAg
ICAgKm1lbnVpdGVtLAogCQkJCiAJCQlnZXJidl9leHBvcnRfZHJpbGxfZmlsZV9mcm9tX2ltYWdl
IChmaWxlbmFtZSwgbWFpblByb2plY3QtPmZpbGVbaW5kZXhdLT5pbWFnZSwKIAkJCQkmbWFpblBy
b2plY3QtPmZpbGVbaW5kZXhdLT50cmFuc2Zvcm0pOworCQl9CisJCWVsc2UgaWYgKHByb2Nlc3NU
eXBlID09IENBTExCQUNLU19TQVZFX0ZJTEVfRE9UUykgeworCQkJZ2ludCBpbmRleD1jYWxsYmFj
a3NfZ2V0X3NlbGVjdGVkX3Jvd19pbmRleCAoKTsKKworCQkJZ2VyYnZfZXhwb3J0X2RvdHNfZmls
ZV9mcm9tX2ltYWdlIChmaWxlbmFtZSwgbWFpblByb2plY3QtPmZpbGVbaW5kZXhdLT5pbWFnZSwK
KwkJCQkmbWFpblByb2plY3QtPmZpbGVbaW5kZXhdLT50cmFuc2Zvcm0pOwogCQl9CS8qIGNyZWF0
ZSBuZXcgaW1hZ2UuLi4uICAqLwogCQllbHNlIGlmIChwcm9jZXNzVHlwZSA9PSBDQUxMQkFDS1Nf
U0FWRV9GSUxFX1JTMjc0WE0pIHsKIAkJCWdlcmJ2X2ltYWdlX3QgKmltYWdlOwpAQCAtMjk1MSw2
ICsyOTU5LDggQEAgY2FsbGJhY2tzX2RyYXdpbmdhcmVhX2V4cG9zZV9ldmVudCAoR3RrV2lkZ2V0
ICp3aWRnZXQsIEdka0V2ZW50RXhwb3NlICpldmVudCkKIAkJaWYgKHNjcmVlbi50b29sID09IE1F
QVNVUkUgJiYgc2NyZWVuLnN0YXRlICE9IElOX01FQVNVUkUpIHsKIAkJCXJlbmRlcl90b2dnbGVf
bWVhc3VyZV9saW5lKCk7CiAJCX0KKworICAgICAgICAgICAgICAgIHJlbmRlcl90b2dnbGVfY3Jv
c3NoYWlyKCk7CiAgCiAJCXJldHVybiBGQUxTRTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvY2FsbGJh
Y2tzLmggYi9zcmMvY2FsbGJhY2tzLmgKaW5kZXggMjM3NWFkMi4uNWQ1OTdlMiAxMDA2NDQKLS0t
IGEvc3JjL2NhbGxiYWNrcy5oCisrKyBiL3NyYy9jYWxsYmFja3MuaApAQCAtMzQsNiArMzQsNyBA
QCBlbnVtIHsKIAlDQUxMQkFDS1NfU0FWRV9GSUxFX1BORywKIAlDQUxMQkFDS1NfU0FWRV9GSUxF
X1JTMjc0WCwKIAlDQUxMQkFDS1NfU0FWRV9GSUxFX0RSSUxMLAorCUNBTExCQUNLU19TQVZFX0ZJ
TEVfRE9UUywKIAlDQUxMQkFDS1NfU0FWRV9GSUxFX1JTMjc0WE0sCiAJQ0FMTEJBQ0tTX1NBVkVf
RklMRV9EUklMTE0sCiAJQ0FMTEJBQ0tTX1NBVkVfTEFZRVJfQVMsCmRpZmYgLS1naXQgYS9zcmMv
Z2VyYnYuaCBiL3NyYy9nZXJidi5oCmluZGV4IDAwMmYyNDkuLjQ5ZTQyZmMgMTAwNjQ0Ci0tLSBh
L3NyYy9nZXJidi5oCisrKyBiL3NyYy9nZXJidi5oCkBAIC04OTEsNiArODkxLDE0IEBAIGdlcmJ2
X2V4cG9ydF9kcmlsbF9maWxlX2Zyb21faW1hZ2UgKGNvbnN0IGdjaGFyICpmaWxlbmFtZSwgLyoh
PCB0aGUgZmlsZW5hbWUgZm9yCiAJCWdlcmJ2X3VzZXJfdHJhbnNmb3JtYXRpb25fdCAqdHJhbnNm
b3JtIC8qITwgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGFwcGx5IGJlZm9yZSBleHBvcnRpbmcgKi8K
ICk7CiAKKy8vISBFeHBvcnQgYW4gaW1hZ2UgdG8gYSBuZXcgZmlsZSBpbiBkb3RzIGZvcm1hdAor
Ly8hIFxyZXR1cm4gVFJVRSBpZiBzdWNjZXNzZnVsLCBvciBGQUxTRSBpZiBub3QKK2dib29sZWFu
CitnZXJidl9leHBvcnRfZG90c19maWxlX2Zyb21faW1hZ2UgKGNvbnN0IGdjaGFyICpmaWxlbmFt
ZSwgLyohPCB0aGUgZmlsZW5hbWUgZm9yIHRoZSBuZXcgZmlsZSAqLworCQlnZXJidl9pbWFnZV90
ICppbWFnZSwgLyohPCB0aGUgaW1hZ2UgdG8gZXhwb3J0ICovCisJCWdlcmJ2X3VzZXJfdHJhbnNm
b3JtYXRpb25fdCAqdHJhbnNmb3JtIC8qITwgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGFwcGx5IGJl
Zm9yZSBleHBvcnRpbmcgKi8KKyk7CisKIC8vISBEcmF3IGEgbGluZSBvbiB0aGUgc3BlY2lmaWVk
IGltYWdlCiB2b2lkCiBnZXJidl9pbWFnZV9jcmVhdGVfbGluZV9vYmplY3QgKGdlcmJ2X2ltYWdl
X3QgKmltYWdlLCAvKiE8IHRoZSBpbWFnZSB0byBkcmF3IHRvICovCmRpZmYgLS1naXQgYS9zcmMv
aW50ZXJmYWNlLmMgYi9zcmMvaW50ZXJmYWNlLmMKaW5kZXggYWZkYzdiNC4uNzQwZjZiOCAxMDA2
NDQKLS0tIGEvc3JjL2ludGVyZmFjZS5jCisrKyBiL3NyYy9pbnRlcmZhY2UuYwpAQCAtMTI2LDYg
KzEyNiw5NSBAQCByZXF1ZXN0X2xhYmVsX21heF9zaXplX2J5X3RleHQgKEd0a1dpZGdldCAqbGFi
ZWwsIGNvbnN0IGdjaGFyICpzdHIpCiAJZ3RrX2xhYmVsX3NldF90ZXh0IChHVEtfTEFCRUwgKGxh
YmVsKSwgIiIpOwogfQogCit2b2lkCitjYWxsYmFja3NfcGFydHNfc2VsZWN0aW9uX2NoYW5nZWQg
KEd0a1RyZWVTZWxlY3Rpb24gKnNlbGVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ3BvaW50ZXIgdXNlcmRhdGEpCit7CisgIEd0a1RyZWVJdGVyIGl0ZXI7CisgIEd0
a1RyZWVNb2RlbCAqbW9kZWw7CisgIGNoYXIgKnJlZmRlczsKKyAgZ2RvdWJsZSB4LCB5OworCisg
IGlmICghZ3RrX3RyZWVfc2VsZWN0aW9uX2dldF9zZWxlY3RlZCAoc2VsZWN0aW9uLCAmbW9kZWws
ICZpdGVyKSkKKyAgICByZXR1cm47IC8qIE5vdGhpbmcgc2VsZWN0ZWQgKi8KKworICBndGtfdHJl
ZV9tb2RlbF9nZXQgKG1vZGVsLCAmaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICBQQVJUX1JF
RkRFU19DT0xVTU4sICZyZWZkZXMsCisgICAgICAgICAgICAgICAgICAgICAgUEFSVF9YX0NPTFVN
TiwgJngsCisgICAgICAgICAgICAgICAgICAgICAgUEFSVF9ZX0NPTFVNTiwgJnksCisgICAgICAg
ICAgICAgICAgICAgICAgLTEpOworCisgIGlmIChyZWZkZXMgPT0gTlVMTCkKKyAgICByZXR1cm47
CisKKyAgc2NyZWVuLmNyb3NzaGFpcl94ID0geDsKKyAgc2NyZWVuLmNyb3NzaGFpcl95ID0geTsK
KworICBjYWxsYmFja3NfZm9yY2VfZXhwb3NlX2V2ZW50X2Zvcl9zY3JlZW4oKTsKKworICBnX2Zy
ZWUgKHJlZmRlcyk7Cit9CisKK3ZvaWQKK2NhbGxiYWNrc19wYXJ0c19yb3dfYWN0aXZhdGVkIChH
dGtUcmVlVmlldyAgICAgICAqdHJlZV92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEd0a1RyZWVQYXRoICAgICAgICpwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEd0a1RyZWVWaWV3Q29sdW1uICpjb2x1bW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ3BvaW50ZXIgdXNlcmRhdGEpCit7CisgIEd0a1RyZWVNb2RlbCAqbW9kZWw7CisgIEd0
a1RyZWVTdG9yZSAqc3RvcmU7CisgIEd0a1RyZWVJdGVyIGl0ZXI7CisgIGNoYXIgKnJlZmRlczsK
KyAgZ2Jvb2xlYW4gcGxhY2VkOworCisgIG1vZGVsID0gZ3RrX3RyZWVfdmlld19nZXRfbW9kZWwg
KHRyZWVfdmlldyk7CisgIGd0a190cmVlX21vZGVsX2dldF9pdGVyIChtb2RlbCwgJml0ZXIsIHBh
dGgpOworICBndGtfdHJlZV9tb2RlbF9nZXQgKG1vZGVsLCAmaXRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICBQQVJUX1JFRkRFU19DT0xVTU4sICZyZWZkZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgUEFSVF9QTEFDRURfQ09MVU1OLCAmcGxhY2VkLAorICAgICAgICAgICAgICAgICAgICAgIC0x
KTsKKworICBwbGFjZWQgPSAhcGxhY2VkOworCisgIHN0b3JlID0gR1RLX1RSRUVfU1RPUkUobW9k
ZWwpOyAvKiBYWFg6ID8/PyAqLworICBndGtfdHJlZV9zdG9yZV9zZXQgKHN0b3JlLCAmaXRlciwK
KyAgICAgICAgICAgICAgICAgICAgICBQQVJUX1BMQUNFRF9DT0xVTU4sIHBsYWNlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAtMSk7CisKKyAgaWYgKHJlZmRlcyA9PSBOVUxMKQorICAgIHJldHVy
bjsKKworICBwcmludGYgKCJBY3RpdmF0ZWQgcGFydCAlc1xuIiwgcmVmZGVzKTsKKworICBnX2Zy
ZWUgKHJlZmRlcyk7Cit9CisKK2dib29sZWFuCitjYWxsYmFja19wYXJ0c19zZWFyY2ggKEd0a1Ry
ZWVNb2RlbCAqbW9kZWwsCisgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgY29sdW1uLAorICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqa2V5LAorICAgICAgICAgICAgICAgICAg
ICAgICBHdGtUcmVlSXRlciAqaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIg
c2VhcmNoX2RhdGEpCit7CisgIGNoYXIgKnRleHQ7CisKKyAgZ3RrX3RyZWVfbW9kZWxfZ2V0ICht
b2RlbCwgaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICBjb2x1bW4sICZ0ZXh0LAorICAgICAg
ICAgICAgICAgICAgICAgIC0xKTsKKworICAvLyBURVNUSU5HIQorICBpZiAoa2V5WzBdID09ICdh
JykgeworICAgIGdfZnJlZSAodGV4dCk7CisgICAgcmV0dXJuIFRSVUU7CisgIH0gZWxzZSB7Cisg
ICAgZ19mcmVlICh0ZXh0KTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KK30KKworLyogWFhYOiBO
QVNUWSBHTE9CQUwgKi8KK0d0a1RyZWVTdG9yZSAqcGFydHNfdHJlZXN0b3JlOworCiAvKiAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiB2b2lkCiBpbnRl
cmZhY2VfY3JlYXRlX2d1aSAoaW50IHJlcV93aWR0aCwgaW50IHJlcV9oZWlnaHQpCkBAIC0xNTQs
NiArMjQzLDcgQEAgaW50ZXJmYWNlX2NyZWF0ZV9ndWkgKGludCByZXFfd2lkdGgsIGludCByZXFf
aGVpZ2h0KQogCUd0a1dpZGdldCAqc3ZnOwogCUd0a1dpZGdldCAqcG9zdHNjcmlwdDsKIAlHdGtX
aWRnZXQgKnJzMjc0eCwqZHJpbGwsKnJzMjc0eG0sKmRyaWxsbTsKKwlHdGtXaWRnZXQgKmRvdHM7
CiAJCiAJR3RrV2lkZ2V0ICpzZXBhcmF0b3IxOwogI2lmIEdUS19DSEVDS19WRVJTSU9OKDIsMTAs
MCkKQEAgLTI4NCw2ICszNzQsMTMgQEAgaW50ZXJmYWNlX2NyZWF0ZV9ndWkgKGludCByZXFfd2lk
dGgsIGludCByZXFfaGVpZ2h0KQogCUd0a1dpZGdldCAqY2xlYXJfbWVzc2FnZXNfYnV0dG9uOwog
CUd0a1dpZGdldCAqTWVzc2FnZV9sYWJlbDsKIAlHdGtXaWRnZXQgKnZib3gyOworCUd0a1dpZGdl
dCAqcGFydHNfdHJlZXZpZXc7CisJR3RrV2lkZ2V0ICpwYXJ0c19zY3JvbGxlZHdpbmRvdzsKKwlH
dGtUcmVlVmlld0NvbHVtbiAqcGFydHNfdGV4dDsKKwlHdGtDZWxsUmVuZGVyZXIgKnBhcnRzX3Rl
eHRfY2VsbHJlbmRlcmVyOworCUd0a1RyZWVJdGVyIHBhcnRzX2l0ZXI7CisJR3RrVHJlZVNlbGVj
dGlvbiAqcGFydHNfc2VsZWN0aW9uOworCUd0a1dpZGdldCAqcGFydHNfbGFiZWw7CiAJR3RrV2lk
Z2V0ICptYWluX3ZpZXdfdGFibGU7CiAJR3RrV2lkZ2V0ICpoUnVsZXI7CiAJR3RrV2lkZ2V0ICp2
UnVsZXI7CkBAIC00MjcsNiArNTI0LDEwIEBAIGludGVyZmFjZV9jcmVhdGVfZ3VpIChpbnQgcmVx
X3dpZHRoLCBpbnQgcmVxX2hlaWdodCkKIAlndGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5F
UiAobWVudWl0ZW1fZmlsZV9leHBvcnRfbWVudSksIGRyaWxsKTsKIAlndGtfdG9vbHRpcHNfc2V0
X3RpcCAodG9vbHRpcHMsIGRyaWxsLCBfKCJFeHBvcnQgbGF5ZXIgdG8gYW4gRXhjZWxsb24gZHJp
bGwgZmlsZSIpLCBOVUxMKTsKIAkKKwlkb3RzID0gZ3RrX21lbnVfaXRlbV9uZXdfd2l0aF9tbmVt
b25pYyAoXygiX1Bhc3RlIGRvdHMuLi4iKSk7CisJZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05U
QUlORVIgKG1lbnVpdGVtX2ZpbGVfZXhwb3J0X21lbnUpLCBkb3RzKTsKKwlndGtfdG9vbHRpcHNf
c2V0X3RpcCAodG9vbHRpcHMsIGRvdHMsIF8oIkV4cG9ydCBsYXllciB0byBhIHBhc3RlIGRvdHMg
ZmlsZSIpLCBOVUxMKTsKKwogCXJzMjc0eG0gPSBndGtfbWVudV9pdGVtX25ld193aXRoX21uZW1v
bmljIChfKCJSUy0yNzRYIE1lcmdlIChHZXJiZXIpLi4uIikpOwogCWd0a19jb250YWluZXJfYWRk
IChHVEtfQ09OVEFJTkVSIChtZW51aXRlbV9maWxlX2V4cG9ydF9tZW51KSwgcnMyNzR4bSk7CiAJ
Z3RrX3Rvb2x0aXBzX3NldF90aXAgKHRvb2x0aXBzLCByczI3NHhtLCBfKCJFeHBvcnQgKG1lcmdl
IHZpc2libGUgZ2VyYmVyIGxheWVycykgdG8gYSBSUy0yNzRYIChHZXJiZXIpIGZpbGUiKSwgTlVM
TCk7CkBAIC0xMDk2LDggKzExOTcsNjIgQEAgaW50ZXJmYWNlX2NyZWF0ZV9ndWkgKGludCByZXFf
d2lkdGgsIGludCByZXFfaGVpZ2h0KQogCQkJCSAgICBndGtfbm90ZWJvb2tfZ2V0X250aF9wYWdl
IChHVEtfTk9URUJPT0sgKHNpZGVwYW5lX25vdGVib29rKSwgMSksIAogCQkJCSAgICBNZXNzYWdl
X2xhYmVsKTsKIAorLy8vLworCisJcGFydHNfc2Nyb2xsZWR3aW5kb3cgPSBndGtfc2Nyb2xsZWRf
d2luZG93X25ldyAoTlVMTCwgTlVMTCk7CisJZ3RrX3Njcm9sbGVkX3dpbmRvd19zZXRfcG9saWN5
IChHVEtfU0NST0xMRURfV0lORE9XIChwYXJ0c19zY3JvbGxlZHdpbmRvdyksCisJCQkJCUdUS19Q
T0xJQ1lfQVVUT01BVElDLCBHVEtfUE9MSUNZX0FVVE9NQVRJQyk7CisKKwlndGtfY29udGFpbmVy
X2FkZCAoR1RLX0NPTlRBSU5FUiAoc2lkZXBhbmVfbm90ZWJvb2spLCBwYXJ0c19zY3JvbGxlZHdp
bmRvdyk7CisJZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoIChHVEtfQ09OVEFJTkVSIChw
YXJ0c19zY3JvbGxlZHdpbmRvdyksIDMpOworCisJaWYgKHBhcnRzX3RyZWVzdG9yZSA9PSBOVUxM
KSB7CisJICBwYXJ0c190cmVlc3RvcmUgPSBndGtfdHJlZV9zdG9yZV9uZXcgKFBBUlRfTlVNX0NP
TFVNTlMsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9J
TlQgLyogRGVwdGggaW4gdHJlZSAqLywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgR19UWVBFX1NUUklORyAvKiBwYWNrYWdlICovLAorCSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HIC8qIHZhbHVlICovLAorCSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HIC8qIHJlZmRl
cyAqLywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1NU
UklORyAvKiB0ZXh0ICovLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHX1RZUEVfQk9PTEVBTiAvKiBwbGFjZWQ/ICovLAorCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHX1RZUEVfRE9VQkxFIC8qIFggKi8sCisJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9ET1VCTEUgLyogWSAqLyk7CisJfQorCisJ
cGFydHNfdHJlZXZpZXcgPSBndGtfdHJlZV92aWV3X25ld193aXRoX21vZGVsIChHVEtfVFJFRV9N
T0RFTCAocGFydHNfdHJlZXN0b3JlKSk7CisJZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlO
RVIgKHBhcnRzX3Njcm9sbGVkd2luZG93KSwgcGFydHNfdHJlZXZpZXcpOworCWd0a193aWRnZXRf
c2hvd19hbGwgKHBhcnRzX3RyZWV2aWV3KTsKKworCXBhcnRzX3RleHRfY2VsbHJlbmRlcmVyID0g
Z3RrX2NlbGxfcmVuZGVyZXJfdGV4dF9uZXcgKCk7CisKKwlwYXJ0c190ZXh0ID0gZ3RrX3RyZWVf
dmlld19jb2x1bW5fbmV3X3dpdGhfYXR0cmlidXRlcyAoIkNvbXBvbmVudCIsIHBhcnRzX3RleHRf
Y2VsbHJlbmRlcmVyLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAidGV4dCIsIFBBUlRfVEVYVF9DT0xVTU4sCisJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpa2V0aHJvdWdoIiwg
UEFSVF9QTEFDRURfQ09MVU1OLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworCWd0a190cmVlX3ZpZXdfYXBwZW5kX2NvbHVt
biAoR1RLX1RSRUVfVklFVyAocGFydHNfdHJlZXZpZXcpLCBwYXJ0c190ZXh0KTsKKworCWd0a190
cmVlX3ZpZXdfc2V0X3NlYXJjaF9jb2x1bW4gKEdUS19UUkVFX1ZJRVcocGFydHNfdHJlZXZpZXcp
LCBQQVJUX1RFWFRfQ09MVU1OKTsKKworCXBhcnRzX2xhYmVsID0gZ3RrX2xhYmVsX25ldyAoXygi
UGFydHMiKSk7CisJZ3RrX25vdGVib29rX3NldF90YWJfbGFiZWwgKEdUS19OT1RFQk9PSyAoc2lk
ZXBhbmVfbm90ZWJvb2spLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGtfbm90ZWJv
b2tfZ2V0X250aF9wYWdlIChHVEtfTk9URUJPT0sgKHNpZGVwYW5lX25vdGVib29rKSwgMiksCisJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzX2xhYmVsKTsKKworCS8qIENvbm5lY3Qg
c2lnbmFsIGZvciBzZWxlY3QgYW5kIGFjdGl2YXRlICovCisKKwlnX3NpZ25hbF9jb25uZWN0KHBh
cnRzX3RyZWV2aWV3LCAicm93LWFjdGl2YXRlZCIsCisJICAgICAgICAgICAgICAgICBHX0NBTExC
QUNLKGNhbGxiYWNrc19wYXJ0c19yb3dfYWN0aXZhdGVkKSwgTlVMTCk7CisKKwlwYXJ0c19zZWxl
Y3Rpb24gPSBndGtfdHJlZV92aWV3X2dldF9zZWxlY3Rpb24oR1RLX1RSRUVfVklFVyhwYXJ0c190
cmVldmlldykpOworCWd0a190cmVlX3NlbGVjdGlvbl9zZXRfbW9kZSAocGFydHNfc2VsZWN0aW9u
LCBHVEtfU0VMRUNUSU9OX1NJTkdMRSk7CisJZ19zaWduYWxfY29ubmVjdChwYXJ0c19zZWxlY3Rp
b24sICJjaGFuZ2VkIiwKKwkgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0soY2FsbGJhY2tzX3Bh
cnRzX3NlbGVjdGlvbl9jaGFuZ2VkKSwgTlVMTCk7CisKKy8vLy8KKwogCXZib3gyID0gZ3RrX3Zi
b3hfbmV3IChGQUxTRSwgNCk7CiAJZ3RrX3BhbmVkX3BhY2syIChHVEtfUEFORUQgKGhwYW5lZDEp
LCB2Ym94MiwgVFJVRSwgRkFMU0UpOworCiAJZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRo
IChHVEtfQ09OVEFJTkVSICh2Ym94MiksIDQpOwogCQogCW1haW5fdmlld190YWJsZSA9IGd0a190
YWJsZV9uZXcgKDMsIDMsIEZBTFNFKTsKQEAgLTExOTksNiArMTM1NCw5IEBAIGludGVyZmFjZV9j
cmVhdGVfZ3VpIChpbnQgcmVxX3dpZHRoLCBpbnQgcmVxX2hlaWdodCkKIAlnX3NpZ25hbF9jb25u
ZWN0ICgoZ3BvaW50ZXIpIGRyaWxsLCAiYWN0aXZhdGUiLAogCSAgICAgICAgICAgICAgICAgIEdf
Q0FMTEJBQ0sgKGNhbGxiYWNrc19nZW5lcmljX3NhdmVfYWN0aXZhdGUpLAogCSAgICAgICAgICAg
ICAgICAgIChncG9pbnRlcikgQ0FMTEJBQ0tTX1NBVkVfRklMRV9EUklMTCk7CisJZ19zaWduYWxf
Y29ubmVjdCAoKGdwb2ludGVyKSBkb3RzLCAiYWN0aXZhdGUiLAorCSAgICAgICAgICAgICAgICAg
IEdfQ0FMTEJBQ0sgKGNhbGxiYWNrc19nZW5lcmljX3NhdmVfYWN0aXZhdGUpLAorCSAgICAgICAg
ICAgICAgICAgIChncG9pbnRlcikgQ0FMTEJBQ0tTX1NBVkVfRklMRV9ET1RTKTsKIAlnX3NpZ25h
bF9jb25uZWN0ICgoZ3BvaW50ZXIpIHJzMjc0eG0sICJhY3RpdmF0ZSIsCiAJICAgICAgICAgICAg
ICAgICAgR19DQUxMQkFDSyAoY2FsbGJhY2tzX2dlbmVyaWNfc2F2ZV9hY3RpdmF0ZSksCiAJICAg
ICAgICAgICAgICAgICAgKGdwb2ludGVyKSBDQUxMQkFDS1NfU0FWRV9GSUxFX1JTMjc0WE0pOwpk
aWZmIC0tZ2l0IGEvc3JjL2ludGVyZmFjZS5oIGIvc3JjL2ludGVyZmFjZS5oCmluZGV4IDgxOGIw
YTMuLjEwODI2NGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbnRlcmZhY2UuaAorKysgYi9zcmMvaW50ZXJm
YWNlLmgKQEAgLTE5NCwzICsxOTQsMTkgQEAgaW50ZXJmYWNlX3Nob3dfYWxlcnRfZGlhbG9nIChn
Y2hhciAqcHJpbWFyeVRleHQsCiB2b2lkCiBpbnRlcmZhY2Vfc2hvd19sYXllcl9lZGl0X2RpYWxv
ZyAoZ2VyYnZfdXNlcl90cmFuc2Zvcm1hdGlvbl90ICp0cmFuc2Zvcm0sCiAJCQkJICBnZXJidl91
bml0X3Qgc2NyZWVuVW5pdCk7CisKKworZW51bSB7CisgIFBBUlRfREVQVEhfQ09MVU1OID0gMCwK
KyAgUEFSVF9QQUNLQUdFX0NPTFVNTiwKKyAgUEFSVF9WQUxVRV9DT0xVTU4sCisgIFBBUlRfUkVG
REVTX0NPTFVNTiwKKyAgUEFSVF9URVhUX0NPTFVNTiwKKyAgUEFSVF9QTEFDRURfQ09MVU1OLAor
ICBQQVJUX1hfQ09MVU1OLAorICBQQVJUX1lfQ09MVU1OLAorICBQQVJUX05VTV9DT0xVTU5TCit9
OworCisvKiBYWFg6IE5BU1RZIEdMT0JBTCAqLworZXh0ZXJuIEd0a1RyZWVTdG9yZSAqcGFydHNf
dHJlZXN0b3JlOwpkaWZmIC0tZ2l0IGEvc3JjL21haW4uaCBiL3NyYy9tYWluLmgKaW5kZXggZDIw
ODczMC4uY2VhNjA4ZiAxMDA2NDQKLS0tIGEvc3JjL21haW4uaAorKysgYi9zcmMvbWFpbi5oCkBA
IC0xMTQsNiArMTE0LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgewogICAgIGdpbnQgb2ZmX3g7CQkJLyog
T2Zmc2V0IGN1cnJlbnQgcGl4bWFwIHdoZW4gcGFubmluZyAqLwogICAgIGdpbnQgb2ZmX3k7CiAK
KyAgICBnZG91YmxlIGNyb3NzaGFpcl94OwkvKiBDcm9zc2hhaXIgYm9hcmQgY29vcmRpbmF0ZXMg
Ki8KKyAgICBnZG91YmxlIGNyb3NzaGFpcl95OworCiAgICAgZ2RvdWJsZSBtZWFzdXJlX3N0YXJ0
X3g7CS8qIE1lYXN1cmUgc3RhcnQgYm9hcmQgY29vcmRpbmF0ZXMgKi8KICAgICBnZG91YmxlIG1l
YXN1cmVfc3RhcnRfeTsKICAgICBnZG91YmxlIG1lYXN1cmVfbGFzdF94OwkvKiBNZWFzdXJlIGVu
ZCBib2FyZCBjb29yZGluYXRlcyAqLwpkaWZmIC0tZ2l0IGEvc3JjL3BpY2stYW5kLXBsYWNlLmMg
Yi9zcmMvcGljay1hbmQtcGxhY2UuYwppbmRleCA2M2M1ZjEzLi43ZThlZWM3IDEwMDY0NAotLS0g
YS9zcmMvcGljay1hbmQtcGxhY2UuYworKysgYi9zcmMvcGljay1hbmQtcGxhY2UuYwpAQCAtMzcs
NiArMzcsMTAgQEAKICNpbmNsdWRlICJjc3YuaCIKICNpbmNsdWRlICJwaWNrLWFuZC1wbGFjZS5o
IgogCisvKiBIQUNLICovCisjaW5jbHVkZSAiaW50ZXJmYWNlLmgiCisKKwogdm9pZCBnZXJiX3Ry
YW5zZl9mcmVlKGdlcmJ2X3RyYW5zZl90ICp0cmFuc2YpCiB7CiAgICAgZ19mcmVlKHRyYW5zZik7
CkBAIC0yMDUsNyArMjA5LDI0IEBAIHBpY2tfYW5kX3BsYWNlX3BhcnNlX2ZpbGUoZ2VyYl9maWxl
X3QgKmZkKQogICAgIGdlcmJ2X3RyYW5zZl90ICp0cl9yb3QgPSBnZXJiX3RyYW5zZl9uZXcoKTsK
ICAgICBHQXJyYXkgCSpwbnBQYXJzZURhdGFBcnJheSA9IGdfYXJyYXlfbmV3IChGQUxTRSwgRkFM
U0UsIHNpemVvZihQbnBQYXJ0RGF0YSkpOwogICAgIGdib29sZWFuIGZvdW5kVmFsaWREYXRhUm93
ID0gRkFMU0U7Ci0gICAgCisgICAgR3RrVHJlZUl0ZXIgcGFja2FnZV9pdGVyOworICAgIEd0a1Ry
ZWVJdGVyIHZhbHVlX2l0ZXI7CisgICAgR3RrVHJlZUl0ZXIgcmVmZGVzX2l0ZXI7CisKKyAgICBp
ZiAocGFydHNfdHJlZXN0b3JlID09IE5VTEwpIHsKKyAgICAgIHBhcnRzX3RyZWVzdG9yZSA9IGd0
a190cmVlX3N0b3JlX25ldyAoUEFSVF9OVU1fQ09MVU1OUywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0lOVCAvKiBEZXB0aCBpbiB0cmVlICovLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5H
IC8qIHBhY2thZ2UgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEdfVFlQRV9TVFJJTkcgLyogdmFsdWUgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcgLyogcmVmZGVzICovLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HIC8qIHRleHQg
Ki8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9C
T09MRUFOIC8qIHBsYWNlZD8gKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdfVFlQRV9ET1VCTEUgLyogWCAqLywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0RPVUJMRSAvKiBZICovKTsKKyAgICB9IGVsc2Ug
eworICAgICAgZ3RrX3RyZWVfc3RvcmVfY2xlYXIgKHBhcnRzX3RyZWVzdG9yZSk7CisgICAgfQor
CiAgICAgLyoKICAgICAgKiBtYW55IGxvY2FsZXMgcmVkZWZpbmUgIi4iIGFzICIsIiBhbmQgc28g
b24sIHNvIHNzY2FuZiBoYXMgcHJvYmxlbXMgd2hlbgogICAgICAqIHJlYWRpbmcgUGljayBhbmQg
UGxhY2UgZmlsZXMgdXNpbmcgJWYgZm9ybWF0IApAQCAtMzA0LDYgKzMyNSw3IEBAIHBpY2tfYW5k
X3BsYWNlX3BhcnNlX2ZpbGUoZ2VyYl9maWxlX3QgKmZkKQogCWVsc2UgaWYgKHJvd1swXSAmJiBy
b3dbMV0gJiYgcm93WzJdICYmIHJvd1szXSAmJiByb3dbNF0gJiYgcm93WzVdICYmIHJvd1s2XSkg
ewogCSAgICBzbnByaW50ZiAocG5wUGFydERhdGEuZGVzaWduYXRvciwgc2l6ZW9mKHBucFBhcnRE
YXRhLmRlc2lnbmF0b3IpLTEsICIlcyIsIHJvd1swXSk7CiAJICAgIHNucHJpbnRmIChwbnBQYXJ0
RGF0YS5mb290cHJpbnQsIHNpemVvZihwbnBQYXJ0RGF0YS5mb290cHJpbnQpLTEsICIlcyIsIHJv
d1sxXSk7CQkKKwkgICAgc25wcmludGYgKHBucFBhcnREYXRhLnZhbHVlLCBzaXplb2YocG5wUGFy
dERhdGEudmFsdWUpLTEsICIlcyIsIHJvd1syXSk7CiAJICAgIHNucHJpbnRmIChwbnBQYXJ0RGF0
YS5sYXllciwgc2l6ZW9mKHBucFBhcnREYXRhLmxheWVyKS0xLCAiJXMiLCByb3dbNl0pOwkKIAkg
ICAgcG5wUGFydERhdGEubWlkX3ggPSBwaWNrX2FuZF9wbGFjZV9nZXRfZmxvYXRfdW5pdChyb3db
M10pOwogCSAgICBwbnBQYXJ0RGF0YS5taWRfeSA9IHBpY2tfYW5kX3BsYWNlX2dldF9mbG9hdF91
bml0KHJvd1s0XSk7CkBAIC0zNDYsNiArMzY4LDEwNCBAQCBwaWNrX2FuZF9wbGFjZV9wYXJzZV9m
aWxlKGdlcmJfZmlsZV90ICpmZCkKIAkgICAgfQogCX0gIAogCWdfYXJyYXlfYXBwZW5kX3ZhbCAo
cG5wUGFyc2VEYXRhQXJyYXksIHBucFBhcnREYXRhKTsKKworICAgICAgICBpZiAoMSkgeworICAg
ICAgICAgIGlmICghZ3RrX3RyZWVfbW9kZWxfZ2V0X2l0ZXJfZmlyc3QgKHBhcnRzX3RyZWVzdG9y
ZSwgJnBhY2thZ2VfaXRlcikpIHsKKyAgICAgICAgICAgIC8qIE5vdCBmb3VuZCwgYXBwZW5kIGFu
ZCBicmVhayAqLworCisgICAgICAgICAgICBndGtfdHJlZV9zdG9yZV9hcHBlbmQgKHBhcnRzX3Ry
ZWVzdG9yZSwgJnBhY2thZ2VfaXRlciwgTlVMTCk7CisgICAgICAgICAgICBndGtfdHJlZV9zdG9y
ZV9zZXQgKHBhcnRzX3RyZWVzdG9yZSwgJnBhY2thZ2VfaXRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUEFSVF9ERVBUSF9DT0xVTU4sIDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFBBUlRfUEFDS0FHRV9DT0xVTU4sIHBucFBhcnREYXRhLmZvb3RwcmludCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFSVF9WQUxVRV9DT0xVTU4sIE5VTEws
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfUkVGREVTX0NPTFVNTiwgTlVM
TCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFSVF9URVhUX0NPTFVNTiwgcG5w
UGFydERhdGEuZm9vdHByaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJU
X1BMQUNFRF9DT0xVTU4sIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQ
QVJUX1hfQ09MVU1OLCAwLjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRf
WV9DT0xVTU4sIDAuMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEpOworICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGNoYXIgKmZvb3Rwcmlu
dDsKKyAgICAgICAgICAgIGd0a190cmVlX21vZGVsX2dldCAocGFydHNfdHJlZXN0b3JlLCAmcGFj
a2FnZV9pdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1BBQ0tBR0Vf
Q09MVU1OLCAmZm9vdHByaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSk7
CisgICAgICAgICAgICBpZiAoc3RyY21wIChmb290cHJpbnQsIHBucFBhcnREYXRhLmZvb3Rwcmlu
dCkgPT0gMCkgLyogRm91bmQgaXQgKi8KKyAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
ICAgIGlmICghZ3RrX3RyZWVfbW9kZWxfaXRlcl9uZXh0IChwYXJ0c190cmVlc3RvcmUsICZwYWNr
YWdlX2l0ZXIpKSB7CisgICAgICAgICAgICAgIC8qIE5vdCBmb3VuZCwgYXBwZW5kIGFuZCBicmVh
ayAqLworCisgICAgICAgICAgICAgIGd0a190cmVlX3N0b3JlX2FwcGVuZCAocGFydHNfdHJlZXN0
b3JlLCAmcGFja2FnZV9pdGVyLCBOVUxMKTsKKyAgICAgICAgICAgICAgZ3RrX3RyZWVfc3RvcmVf
c2V0IChwYXJ0c190cmVlc3RvcmUsICZwYWNrYWdlX2l0ZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUEFSVF9ERVBUSF9DT0xVTU4sIDAsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUEFSVF9QQUNLQUdFX0NPTFVNTiwgcG5wUGFydERhdGEuZm9vdHByaW50
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfVkFMVUVfQ09MVU1OLCBO
VUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfUkVGREVTX0NPTFVN
TiwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1RFWFRfQ09M
VU1OLCBwbnBQYXJ0RGF0YS5mb290cHJpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUEFSVF9QTEFDRURfQ09MVU1OLCBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQQVJUX1hfQ09MVU1OLCAwLjAsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUEFSVF9ZX0NPTFVNTiwgMC4wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC0xKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgfSB3aGlsZSAoMSk7CisKKyAgICAgICAgICBpZiAoIWd0a190cmVlX21vZGVsX2l0ZXJfY2hp
bGRyZW4gKHBhcnRzX3RyZWVzdG9yZSwgJnZhbHVlX2l0ZXIsICZwYWNrYWdlX2l0ZXIpKSB7Cisg
ICAgICAgICAgICAvKiBOb3QgZm91bmQsIGFwcGVuZCBhbmQgYnJlYWsgKi8KKworICAgICAgICAg
ICAgZ3RrX3RyZWVfc3RvcmVfYXBwZW5kIChwYXJ0c190cmVlc3RvcmUsICZ2YWx1ZV9pdGVyLCAm
cGFja2FnZV9pdGVyKTsKKyAgICAgICAgICAgIGd0a190cmVlX3N0b3JlX3NldCAocGFydHNfdHJl
ZXN0b3JlLCAmdmFsdWVfaXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFS
VF9ERVBUSF9DT0xVTU4sIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRf
UEFDS0FHRV9DT0xVTU4sIHBucFBhcnREYXRhLmZvb3RwcmludCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUEFSVF9WQUxVRV9DT0xVTU4sIHBucFBhcnREYXRhLnZhbHVlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1JFRkRFU19DT0xVTU4sIE5VTEwsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfVEVYVF9DT0xVTU4sIHBucFBhcnRE
YXRhLnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1BMQUNFRF9D
T0xVTU4sIEZBTFNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1hfQ09M
VU1OLCAwLjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfWV9DT0xVTU4s
IDAuMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEpOworICAgICAgICAgIH0g
ZWxzZQorICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGNoYXIgKnZhbHVlOworICAgICAgICAg
ICAgZ3RrX3RyZWVfbW9kZWxfZ2V0IChwYXJ0c190cmVlc3RvcmUsICZ2YWx1ZV9pdGVyLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1ZBTFVFX0NPTFVNTiwgJnZhbHVlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSk7CisgICAgICAgICAgICBpZiAoc3Ry
Y21wICh2YWx1ZSwgcG5wUGFydERhdGEudmFsdWUpID09IDApIC8qIEZvdW5kIGl0ICovCisgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBpZiAoIWd0a190cmVlX21vZGVsX2l0ZXJf
bmV4dCAocGFydHNfdHJlZXN0b3JlLCAmdmFsdWVfaXRlcikpIHsKKyAgICAgICAgICAgICAgLyog
Tm90IGZvdW5kLCBhcHBlbmQgYW5kIGJyZWFrICovCisKKyAgICAgICAgICAgIGd0a190cmVlX3N0
b3JlX2FwcGVuZCAocGFydHNfdHJlZXN0b3JlLCAmdmFsdWVfaXRlciwgJnBhY2thZ2VfaXRlcik7
CisgICAgICAgICAgICBndGtfdHJlZV9zdG9yZV9zZXQgKHBhcnRzX3RyZWVzdG9yZSwgJnZhbHVl
X2l0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfREVQVEhfQ09MVU1O
LCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1BBQ0tBR0VfQ09MVU1O
LCBwbnBQYXJ0RGF0YS5mb290cHJpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBBUlRfVkFMVUVfQ09MVU1OLCBwbnBQYXJ0RGF0YS52YWx1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUEFSVF9SRUZERVNfQ09MVU1OLCBOVUxMLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQQVJUX1RFWFRfQ09MVU1OLCBwbnBQYXJ0RGF0YS52YWx1ZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFSVF9QTEFDRURfQ09MVU1OLCBGQUxTRSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFSVF9YX0NPTFVNTiwgMC4wLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1lfQ09MVU1OLCAwLjAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC0xKTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgfSB3aGlsZSAoMSk7CisKKyAgICAgICAgICBndGtfdHJlZV9z
dG9yZV9hcHBlbmQgKHBhcnRzX3RyZWVzdG9yZSwgJnJlZmRlc19pdGVyLCAmdmFsdWVfaXRlcik7
CisgICAgICAgICAgZ3RrX3RyZWVfc3RvcmVfc2V0IChwYXJ0c190cmVlc3RvcmUsICZyZWZkZXNf
aXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfREVQVEhfQ09MVU1OLCAy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFSVF9QQUNLQUdFX0NPTFVNTiwgcG5w
UGFydERhdGEuZm9vdHByaW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFSVF9W
QUxVRV9DT0xVTU4sIHBucFBhcnREYXRhLnZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUEFSVF9SRUZERVNfQ09MVU1OLCBwbnBQYXJ0RGF0YS5kZXNpZ25hdG9yLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUEFSVF9URVhUX0NPTFVNTiwgcG5wUGFydERhdGEuZGVz
aWduYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfUExBQ0VEX0NPTFVN
TiwgRkFMU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVJUX1hfQ09MVU1OLCBw
bnBQYXJ0RGF0YS5taWRfeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBUlRfWV9D
T0xVTU4sIHBucFBhcnREYXRhLm1pZF95LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
LTEpOworCisgICAgICAgIH0KKwogCXBhcnNlZExpbmVzICs9IDE7CiAgICAgfSAgIAogICAgIGdl
cmJfdHJhbnNmX2ZyZWUodHJfcm90KTsKZGlmZiAtLWdpdCBhL3NyYy9waWNrLWFuZC1wbGFjZS5o
IGIvc3JjL3BpY2stYW5kLXBsYWNlLmgKaW5kZXggOTU3MzBlYi4uN2M5OWU4MCAxMDA2NDQKLS0t
IGEvc3JjL3BpY2stYW5kLXBsYWNlLmgKKysrIGIvc3JjL3BpY2stYW5kLXBsYWNlLmgKQEAgLTQ0
LDYgKzQ0LDcgQEAgZW51bSBlX2Zvb3RwcmludCB7CiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgY2hh
ciAgICAgZGVzaWduYXRvcltNQVhMXTsKICAgICBjaGFyICAgICBmb290cHJpbnRbTUFYTF07Cisg
ICAgY2hhciAgICAgdmFsdWVbTUFYTF07CiAgICAgZG91YmxlICAgbWlkX3g7CiAgICAgZG91Ymxl
ICAgbWlkX3k7CiAgICAgZG91YmxlICAgcmVmX3g7CmRpZmYgLS1naXQgYS9zcmMvcmVuZGVyLmMg
Yi9zcmMvcmVuZGVyLmMKaW5kZXggN2YyNWE1Yi4uODVhYjU1MiAxMDA2NDQKLS0tIGEvc3JjL3Jl
bmRlci5jCisrKyBiL3NyYy9yZW5kZXIuYwpAQCAtMzIwLDYgKzMyMCw1MiBAQCByZW5kZXJfdHJp
bV9wb2ludChnZG91YmxlICpzdGFydF94LCBnZG91YmxlICpzdGFydF95LCBnZG91YmxlIGxhc3Rf
eCwgZ2RvdWJsZSBsYQogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qKiBEcmF3cy9lcmFzZXMgY3Jvc3NoYWlyCisgKi8K
K3ZvaWQKK3JlbmRlcl90b2dnbGVfY3Jvc3NoYWlyKHZvaWQpCit7CisJY29uc3QgZ2RvdWJsZSBt
YXhfY29vcmQgPSAoMTw8MTUpIC0gMjsvKiBhIHZhbHVlIHRoYXQgY2F1c2VzIG5vIG92ZXJmbG93
ICovCisKKwlHZGtHQyAqZ2M7CisJR2RrR0NWYWx1ZXMgdmFsdWVzOworCUdka0dDVmFsdWVzTWFz
ayB2YWx1ZXNfbWFzazsKKwlnZG91YmxlIGNyb3NzaGFpcl94LCBjcm9zc2hhaXJfeTsKKwlnZG91
YmxlIHN0YXJ0X3gsIHN0YXJ0X3ksIGxhc3RfeCwgbGFzdF95OworCW1lbXNldCgmdmFsdWVzLCAw
LCBzaXplb2YodmFsdWVzKSk7CisJdmFsdWVzLmZ1bmN0aW9uID0gR0RLX1hPUjsKKwlpZiAoIXNj
cmVlbi56b29tX291dGxpbmVfY29sb3IucGl4ZWwpCisJCWdka19jb2xvcm1hcF9hbGxvY19jb2xv
cihnZGtfY29sb3JtYXBfZ2V0X3N5c3RlbSgpLCAmc2NyZWVuLnpvb21fb3V0bGluZV9jb2xvciwg
RkFMU0UsIFRSVUUpOworCXZhbHVlcy5mb3JlZ3JvdW5kID0gc2NyZWVuLnpvb21fb3V0bGluZV9j
b2xvcjsKKwl2YWx1ZXNfbWFzayA9IEdES19HQ19GVU5DVElPTiB8IEdES19HQ19GT1JFR1JPVU5E
OworCWdjID0gZ2RrX2djX25ld193aXRoX3ZhbHVlcyhzY3JlZW4uZHJhd2luZ19hcmVhLT53aW5k
b3csICZ2YWx1ZXMsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc19tYXNrKTsK
KworCXJlbmRlcl9ib2FyZDJzY3JlZW4oJmNyb3NzaGFpcl94LCAmY3Jvc3NoYWlyX3ksCisJICAg
ICAgICAgICAgICAgICAgICBzY3JlZW4uY3Jvc3NoYWlyX3gsIHNjcmVlbi5jcm9zc2hhaXJfeSk7
CisKKwlzdGFydF94ID0gLW1heF9jb29yZDsKKwlzdGFydF95ID0gY3Jvc3NoYWlyX3k7CisJbGFz
dF94ID0gbWF4X2Nvb3JkOworCWxhc3RfeSA9IGNyb3NzaGFpcl95OworCXJlbmRlcl90cmltX3Bv
aW50KCZzdGFydF94LCAmc3RhcnRfeSwgbGFzdF94LCBsYXN0X3kpOworCXJlbmRlcl90cmltX3Bv
aW50KCZsYXN0X3gsICZsYXN0X3ksIHN0YXJ0X3gsIHN0YXJ0X3kpOworCWdka19kcmF3X2xpbmUo
c2NyZWVuLmRyYXdpbmdfYXJlYS0+d2luZG93LCBnYywgc3RhcnRfeCwKKwkgICAgICAgICAgICAg
IHN0YXJ0X3ksIGxhc3RfeCwgbGFzdF95KTsKKworCXN0YXJ0X3ggPSBjcm9zc2hhaXJfeDsKKwlz
dGFydF95ID0gLW1heF9jb29yZDsKKwlsYXN0X3ggPSBjcm9zc2hhaXJfeDsKKwlsYXN0X3kgPSBt
YXhfY29vcmQ7CisJcmVuZGVyX3RyaW1fcG9pbnQoJnN0YXJ0X3gsICZzdGFydF95LCBsYXN0X3gs
IGxhc3RfeSk7CisJcmVuZGVyX3RyaW1fcG9pbnQoJmxhc3RfeCwgJmxhc3RfeSwgc3RhcnRfeCwg
c3RhcnRfeSk7CisJZ2RrX2RyYXdfbGluZShzY3JlZW4uZHJhd2luZ19hcmVhLT53aW5kb3csIGdj
LCBzdGFydF94LAorCSAgICAgICAgICAgICAgc3RhcnRfeSwgbGFzdF94LCBsYXN0X3kpOworCisJ
Z2RrX2djX3VucmVmKGdjKTsKK30gLyogdG9nZ2xlX2Nyb3NzaGFpciAqLworCisvKiAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIC8qKiBE
cmF3cy9lcmFzZXMgbWVhc3VyZSBsaW5lCiAgKi8KIHZvaWQKZGlmZiAtLWdpdCBhL3NyYy9yZW5k
ZXIuaCBiL3NyYy9yZW5kZXIuaAppbmRleCBkNzY5ZDZmLi4zZGM1MzBkIDEwMDY0NAotLS0gYS9z
cmMvcmVuZGVyLmgKKysrIGIvc3JjL3JlbmRlci5oCkBAIC00OCw2ICs0OCw5IEBAIHZvaWQKIHJl
bmRlcl9kcmF3X3pvb21fb3V0bGluZShnYm9vbGVhbiBjZW50ZXJlZCk7CiAKIHZvaWQKK3JlbmRl
cl90b2dnbGVfY3Jvc3NoYWlyKHZvaWQpOworCit2b2lkCiByZW5kZXJfdG9nZ2xlX21lYXN1cmVf
bGluZSh2b2lkKTsKIAogdm9pZAotLSAKMi4xLjQKCm==


--=-pAyQzMNWHxpEFp68X8r8--

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019