Date: Fri, 18 Jul 2003 06:53:43 +0100 (BST) From: "=?iso-8859-1?q?Pedro=20F.=20Giffuni?=" <giffunip@yahoo.com> To: freebsd-gnats-submit@FreeBSD.org Cc: maho@FreeBSD.org Subject: ports/54603: Update and clean CAD/SPICE Message-ID: <20030718055343.26926.qmail@web13408.mail.yahoo.com> Resent-Message-ID: <200307180600.h6I60UMC042917@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 54603 >Category: ports >Synopsis: Update and clean CAD/SPICE >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Thu Jul 17 23:00:29 PDT 2003 >Closed-Date: >Last-Modified: >Originator: Pedro F. Giffuni >Release: FreeBSD 5.0-RELEASE i386 >Organization: >Environment: System: FreeBSD giffuni.org 5.0-RELEASE FreeBSD 5.0-RELEASE #3: Wed Apr 16 22:20:49 COT 2003 pedro@giffuni.org:/usr/src/sys/i386/compile/CPQ i386 >Description: I did some REAL cleaning on this port. The files dir is now organized so the port can be maintained: previously there were multifile patches and several patches for the same file, now it is a lot cleaner. I also merged a memory leak fix and some fixes from spice3f5-spaghetti (before it became spiceng). I activated MFB and removed GNUREADLINE support because: 1) We were not building it and the patches made it difficult to maintain the filesdir. 2) Activating it showed it was broken. I also made the port respect CFLAGS and CC. I added documentation and I also renamed the port to Spice3 to match the Berkeley release notes and the program name. >How-To-Repeat: >Fix: ________________________________________________________________________ Want to chat instantly with your online friends? Get the FREE Yahoo! Messenger http://uk.messenger.yahoo.com/ --0-60008898-1058507623=:26346 Content-Type: application/octet-stream; name=port-spice Content-Transfer-Encoding: base64 Content-Description: port-spice Content-Disposition: attachment; filename=port-spice IyBUaGlzIGlzIGEgc2hlbGwgYXJjaGl2ZS4gIFNhdmUgaXQgaW4gYSBmaWxl LCByZW1vdmUgYW55dGhpbmcgYmVmb3JlCiMgdGhpcyBsaW5lLCBhbmQgdGhl biB1bnBhY2sgaXQgYnkgZW50ZXJpbmcgInNoIGZpbGUiLiAgTm90ZSwgaXQg bWF5CiMgY3JlYXRlIGRpcmVjdG9yaWVzOyBmaWxlcyBhbmQgZGlyZWN0b3Jp ZXMgd2lsbCBiZSBvd25lZCBieSB5b3UgYW5kCiMgaGF2ZSBkZWZhdWx0IHBl cm1pc3Npb25zLgojCiMgVGhpcyBhcmNoaXZlIGNvbnRhaW5zOgojCiMJc3Bp Y2UKIwlzcGljZS9NYWtlZmlsZQojCXNwaWNlL2Rpc3RpbmZvCiMJc3BpY2Uv cGtnLWRlc2NyCiMJc3BpY2UvcGtnLXBsaXN0CiMJc3BpY2UvZmlsZXMKIwlz cGljZS9maWxlcy9GcmVlQlNECiMJc3BpY2UvZmlsZXMvTWFrZWZpbGUKIwlz cGljZS9maWxlcy9wYXRjaC1zcDNmNQojCXNwaWNlL2ZpbGVzL3BhdGNoLXNy Y19saWJfZnRlX2RvcGxvdF9jCiMJc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xp Yl9mdGVfeDExX2MKIwlzcGljZS9maWxlcy9wYXRjaC1sZXZlbDEKIwlzcGlj ZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9jcGl0Zl9jCiMJc3BpY2UvZmls ZXMvcGF0Y2gtc3JjX2xpYl9mdGVfZGltZW5zX2MKIwlzcGljZS9maWxlcy9w YXRjaC1zcmNfbGliX2Z0ZV9hc3BpY2VfYwojCXNwaWNlL2ZpbGVzL3BhdGNo LXNyY19saWJfZnRlX2dyYWZfYwojCXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19p bmNsdWRlX3BhdGNobGV2X2gKIwlzcGljZS9maWxlcy9wYXRjaC1sZXZlbDIK IwlzcGljZS9maWxlcy9wYXRjaC11dGlsX3NrZWxldG9uX21ha2VfZGVmX2Jk CiMJc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9mdGVfbWlzY2NvbXNfYwoj CXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX2dyaWRfYwojCXNwaWNl L2ZpbGVzL3BhdGNoLXNyY19pbmNsdWRlX21pc2NfaAojCXNwaWNlL2ZpbGVz L3BhdGNoLXNyY19saWJfZnRlX2RldmljZV9jCiMJc3BpY2UvZmlsZXMvcGF0 Y2gtc3JjX2Jpbl9zY29udmVydF9jCiMJc3BpY2UvZmlsZXMvcGF0Y2gtc3Jj X2xpYl9mdGVfaW5wX2MKIwlzcGljZS9maWxlcy9wYXRjaC11dGlsX2J1aWxk CiMJc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9mdGVfcmVzb3VyY2VfYwoj CXNwaWNlL2ZpbGVzL3BhdGNoLXBzbW9kZWwKIwlzcGljZS9maWxlcy9wYXRj aC1zcmNfbGliX2hscF9yZWFkaGVscF9jCiMJc3BpY2UvZmlsZXMvcGF0Y2gt c3JjX2luY2x1ZGVfb3NfYnNkX2gKIwlzcGljZS9maWxlcy9wYXRjaC1zcmNf bGliX2lucF9pbnBmaW5kbF9jCiMJc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xp Yl9ja3RfZGN0cmN1cnZfYwojCXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJf ZnRlX3Bvc3Rjb21zX2MKIwlzcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0 ZV92ZWN0b3JzX2MKIwlzcGljZS9maWxlcy9wYXRjaC1jb25mX2RlZmF1bHRz CiMJc3BpY2Uvc2NyaXB0cwojCXNwaWNlL3NjcmlwdHMvY29uZmlndXJlCiMK ZWNobyBjIC0gc3BpY2UKbWtkaXIgLXAgc3BpY2UgPiAvZGV2L251bGwgMj4m MQplY2hvIHggLSBzcGljZS9NYWtlZmlsZQpzZWQgJ3MvXlgvLycgPnNwaWNl L01ha2VmaWxlIDw8ICdFTkQtb2Ytc3BpY2UvTWFrZWZpbGUnClgjIE5ldyBw b3J0cyBjb2xsZWN0aW9uIG1ha2VmaWxlIGZvcjogICAgc3BpY2UzClgjIERh dGUgY3JlYXRlZDogICAgICAgICAyNiBNYXIgOTYKWCMgV2hvbTogICAgICAg ICAgICAgICAgIEp1bGlhbiBKZW5raW5zIChvcmlnKQpYIwpYIyAkRnJlZUJT RDogcG9ydHMvY2FkL3NwaWNlL01ha2VmaWxlLHYgMS4yMyAyMDAzLzA2LzMw IDE5OjQ3OjE4IG1haG8gRXhwICQKWCMKWApYUE9SVE5BTUU9CXNwaWNlMwpY UE9SVFZFUlNJT049CTNmNS4yClhDQVRFR09SSUVTPQljYWQKWE1BU1RFUl9T SVRFUz0JZnRwOi8vaWMuZWVjcy5iZXJrZWxleS5lZHUvcHViL1NwaWNlMy86 c291cmNlcwlcClgJCWZ0cDovL2ljLmVlY3MuYmVya2VsZXkuZWR1L3B1Yi9T cGljZTMvdW0uM2YzLnBzLzpkb2NzClhFWFRSQUNUX1NVRlg9CS50YXIuWgpY RElTVEZJTEVTPQlzcDNmNC5raXQke0VYVFJBQ1RfU1VGWH06c291cmNlcwlc ClgJCWNwLnBzOmRvY3MgdG9jLnBzOmRvY3MgZG9jLnBzOmRvY3MKWERJU1Rf U1VCRElSPQlzcGljZTMKWEVYVFJBQ1RfT05MWT0Jc3AzZjQua2l0JHtFWFRS QUNUX1NVRlh9ClgKWE1BSU5UQUlORVI9CW1haG9ARnJlZUJTRC5vcmcKWENP TU1FTlQ9CUEgZ2VuZXJhbC1wdXJwb3NlIGNpcmN1aXQgc2ltdWxhdGlvbiBw cm9ncmFtClgKWFVTRV9YTElCPQl5ZXMKWFVTRV9SRUlOUExBQ0U9CXllcwpY Tk9fV1JLU1VCRElSPQl5ZXMKWE1BTjE9CQlzY29udmVydC4xIG51dG1lZy4x IHNwaWNlLjEKWE1BTjM9CQltZmIuMwpYTUFONT0JCW1mYmNhcC41ClhNTElO S1M9CQlzcGljZS4xIHNwaWNlMy4xClgKWHBvc3QtY29uZmlndXJlOgpYCUAk e1JFSU5QTEFDRV9DTUR9IC1lICdzK0BDQ0ArJHtDQ30rIDsgcytAQ0ZMQUdT QCske0NGTEFHU30rIDsgXApYCXMrQFgxMUJBU0VAKyR7WDExQkFTRX0rOycg XApYCSR7V1JLU1JDfS9jb25mL0ZyZWVCU0QKWApYcG9zdC1pbnN0YWxsOgpY LmlmICFkZWZpbmVkKE5PUE9SVERPQ1MpClgJJHtNS0RJUn0gJHtET0NTRElS fQpYCSR7Q0FUfSAke0RJU1RESVJ9LyR7RElTVF9TVUJESVJ9LyoucHMgPiAk e0RPQ1NESVJ9L3NwaWNlM2YzLnBzClgJJHtHWklQX0NNRH0gJHtET0NTRElS fS8qLnBzClgJJHtNS0RJUn0gJHtFWEFNUExFU0RJUn0KWAkke0lOU1RBTExf REFUQX0gJHtXUktTUkN9L2V4YW1wbGVzLyouY2lyICR7RVhBTVBMRVNESVJ9 ClguZW5kaWYKWApYLmluY2x1ZGUgPGJzZC5wb3J0Lm1rPgpFTkQtb2Ytc3Bp Y2UvTWFrZWZpbGUKZWNobyB4IC0gc3BpY2UvZGlzdGluZm8Kc2VkICdzL15Y Ly8nID5zcGljZS9kaXN0aW5mbyA8PCAnRU5ELW9mLXNwaWNlL2Rpc3RpbmZv JwpYTUQ1IChzcGljZTMvc3AzZjQua2l0LnRhci5aKSA9IGQ1NWViMDhhN2Y1 MjMyNDhiMWI1MDkwOTJhNDQ0YWViClhNRDUgKHNwaWNlMy9jcC5wcykgPSBl ZTkwNjVkZTZlMTFlODJmYTNmZTM0MzE4YzIzNzNmYwpYTUQ1IChzcGljZTMv dG9jLnBzKSA9IGY4NGNjZGQ5Y2E0MjNlMTEyZWM2ODEyMWE4NmMwMzJjClhN RDUgKHNwaWNlMy9kb2MucHMpID0gYmNlYTQxN2YzYmRlODU0M2Y0Mjg3ODVi ZmI1YTRkNjIKRU5ELW9mLXNwaWNlL2Rpc3RpbmZvCmVjaG8geCAtIHNwaWNl L3BrZy1kZXNjcgpzZWQgJ3MvXlgvLycgPnNwaWNlL3BrZy1kZXNjciA8PCAn RU5ELW9mLXNwaWNlL3BrZy1kZXNjcicKWFNQSUNFIGlzIGEgZ2VuZXJhbC1w dXJwb3NlIGNpcmN1aXQgc2ltdWxhdGlvbiBwcm9ncmFtIGZvciBub25saW5l YXIgREMsClhub25saW5lYXIgdHJhbnNpZW50LCBhbmQgbGluZWFyIEFDIGFu YWx5c2VzLiBDaXJjdWl0cyBtYXkgY29udGFpbiByZXNpc3RvcnMsClhjYXBh Y2l0b3JzLCBpbmR1Y3RvcnMsIG11dHVhbCBpbmR1Y3RvcnMsIGluZGVwZW5k ZW50IHZvbHRhZ2UgYW5kIGN1cnJlbnQKWHNvdXJjZXMsIGZvdXIgdHlwZXMg b2YgZGVwZW5kZW50IHNvdXJjZXMsIGxvc3NsZXNzIGFuZCBsb3NzeSB0cmFu c21pc3Npb24KWGxpbmVzICh0d28gc2VwYXJhdGUgaW1wbGVtZW50YXRpb25z KSwgc3dpdGNoZXMsIHVuaWZvcm0gZGlzdHJpYnV0ZWQgUkMKWGxpbmVzLCBh bmQgdGhlIGZpdmUgbW9zdCBjb21tb24gc2VtaWNvbmR1Y3RvciBkZXZpY2Vz OiBkaW9kZXMsIEJKVHMsIEpGRVRzLApYTUVTRkVUcywgYW5kIE1PU0ZFVHMu ClgKWAlGcm9tIHRoZSBTUElDRTMgVmVyc2lvbjNmMyBVc2VyJ3MgTWFudWFs LgpYCVRoaXMgaXMgYXZhaWxibGUgYXMgYSBwb3N0c2NyaXB0IGRvY3VtZW50 IGZyb206ClgJCWZ0cDovL2ljLmVlY3MuYmVya2VsZXkuZWR1L3B1Yi9TcGlj ZTMvdW0uM2YzLnBzClgJb3IgeW91IGNhbiByZWFkIHRoZSBvbmxpbmUgZG9j dW1lbnRhdGlvbiBvbiB0aGUgaG9tZXBhZ2UuClgKWFdXVzogaHR0cDovL2lu Zm9wYWQuZWVjcy5iZXJrZWxleS5lZHUvfmljZGVzaWduL1NQSUNFLwpYClhK dWxpYW4gSmVua2lucwpYa2F2ZW1hbkBtYWduYS5jb20uYXUKRU5ELW9mLXNw aWNlL3BrZy1kZXNjcgplY2hvIHggLSBzcGljZS9wa2ctcGxpc3QKc2VkICdz L15YLy8nID5zcGljZS9wa2ctcGxpc3QgPDwgJ0VORC1vZi1zcGljZS9wa2ct cGxpc3QnClhiaW4vc3BpY2UzClhiaW4vbnV0bWVnClhiaW4vc2NvbnZlcnQK WGJpbi9oZWxwClhiaW4vcHJvYzJtb2QKWGJpbi9tdWx0aWRlYwpYc2hhcmUv c3BpY2UzL2hlbHBkaXIvc3BpY2UudHh0ClhzaGFyZS9zcGljZTMvaGVscGRp ci9zcGljZS5pZHgKWHNoYXJlL3NwaWNlMy9zY3JpcHRzL3NldHBsb3QKWHNo YXJlL3NwaWNlMy9zY3JpcHRzL3NwaW5pdApYc2hhcmUvc3BpY2UzL21mYmNh cApYc2hhcmUvc3BpY2UzL25ld3MKWEBkaXJybSBzaGFyZS9zcGljZTMvaGVs cGRpcgpYQGRpcnJtIHNoYXJlL3NwaWNlMy9zY3JpcHRzClhAZGlycm0gc2hh cmUvc3BpY2UzClglJVBPUlRET0NTJSUlJURPQ1NESVIlJS9zcGljZTNmMy5w cy5negpYJSVQT1JURE9DUyUlJSVFWEFNUExFU0RJUiUlL2JqdG5vaXNlLmNp cgpYJSVQT1JURE9DUyUlJSVFWEFNUExFU0RJUiUlL2JzaW0xdHN0LmNpcgpY JSVQT1JURE9DUyUlJSVFWEFNUExFU0RJUiUlL2JzaW0ydHN0LmNpcgpYJSVQ T1JURE9DUyUlJSVFWEFNUExFU0RJUiUlL2RpZmZwYWlyLmNpcgpYJSVQT1JU RE9DUyUlJSVFWEFNUExFU0RJUiUlL2Rpb2Rpc3RvLmNpcgpYJSVQT1JURE9D UyUlJSVFWEFNUExFU0RJUiUlL2x0cmFfMS5jaXIKWCUlUE9SVERPQ1MlJSUl RVhBTVBMRVNESVIlJS9sdHJhXzIuY2lyClglJVBPUlRET0NTJSUlJUVYQU1Q TEVTRElSJSUvbHRyYV8zLmNpcgpYJSVQT1JURE9DUyUlJSVFWEFNUExFU0RJ UiUlL21peGRpc3RvLmNpcgpYJSVQT1JURE9DUyUlJSVFWEFNUExFU0RJUiUl L21vczZpbnYuY2lyClglJVBPUlRET0NTJSUlJUVYQU1QTEVTRElSJSUvbW9z YW1wMi5jaXIKWCUlUE9SVERPQ1MlJSUlRVhBTVBMRVNESVIlJS9tb3NtZW0u Y2lyClglJVBPUlRET0NTJSUlJUVYQU1QTEVTRElSJSUvcHoyLmNpcgpYJSVQ T1JURE9DUyUlJSVFWEFNUExFU0RJUiUlL3B6dC5jaXIKWCUlUE9SVERPQ1Ml JSUlRVhBTVBMRVNESVIlJS9yYy5jaXIKWCUlUE9SVERPQ1MlJSUlRVhBTVBM RVNESVIlJS9yY2EzMDQwLmNpcgpYJSVQT1JURE9DUyUlJSVFWEFNUExFU0RJ UiUlL3Jlc25vaXNlLmNpcgpYJSVQT1JURE9DUyUlJSVFWEFNUExFU0RJUiUl L3J0bGludi5jaXIKWCUlUE9SVERPQ1MlJSUlRVhBTVBMRVNESVIlJS9zY2ht aXR0LmNpcgpYJSVQT1JURE9DUyUlJSVFWEFNUExFU0RJUiUlL3NpbXBsZXB6 LmNpcgpYJSVQT1JURE9DUyUlQGRpcnJtIHNoYXJlL2V4YW1wbGVzL3NwaWNl MwpFTkQtb2Ytc3BpY2UvcGtnLXBsaXN0CmVjaG8gYyAtIHNwaWNlL2ZpbGVz Cm1rZGlyIC1wIHNwaWNlL2ZpbGVzID4gL2Rldi9udWxsIDI+JjEKZWNobyB4 IC0gc3BpY2UvZmlsZXMvRnJlZUJTRApzZWQgJ3MvXlgvLycgPnNwaWNlL2Zp bGVzL0ZyZWVCU0QgPDwgJ0VORC1vZi1zcGljZS9maWxlcy9GcmVlQlNEJwpY IyBGcmVlQlNEIGNvbmZpZyBleGNlcHRpb24gZmlsZQpYClhNQUtFCQk9IC91 c3IvYmluL21ha2UKWElOVEVSRkFDRV9PUFRTCT0gLURXQU5UX01GQiAtRFdB TlRfWDExClhDQwkJPSBAQ0NAClhDQ19PUFQJCSs9IEBDRkxBR1NAClhDQ19P UFRfU0FGRQkrPSAtTzIgLWZuby1zdHJlbmd0aC1yZWR1Y2UgLXBpcGUKWExE RkxBR1MJCSs9IC1MQFgxMUJBU0VAL2xpYiAtbG0gLWx0ZXJtY2FwClhTWVNf Q0ZMQUdTCT0gLURic2QKRU5ELW9mLXNwaWNlL2ZpbGVzL0ZyZWVCU0QKZWNo byB4IC0gc3BpY2UvZmlsZXMvTWFrZWZpbGUKc2VkICdzL15YLy8nID5zcGlj ZS9maWxlcy9NYWtlZmlsZSA8PCAnRU5ELW9mLXNwaWNlL2ZpbGVzL01ha2Vm aWxlJwpYClhhbGw6ClgJdXRpbC9idWlsZCBGcmVlQlNEIGRlZmF1bHQKWApY aW5zdGFsbDoKWAl1dGlsL2J1aWxkIEZyZWVCU0QgaW5zdGFsbCAKWAljaG1v ZCBhK3J4ICR7UFJFRklYfS9iaW4vc3BpY2UzICR7UFJFRklYfS9iaW4vbnV0 bWVnIFwKWAkgICR7UFJFRklYfS9iaW4vc2NvbnZlcnQgJHtQUkVGSVh9L2Jp bi9oZWxwCVwKWAkgICR7UFJFRklYfS9iaW4vcHJvYzJtb2QgJHtQUkVGSVh9 L2Jpbi9tdWx0aWRlYwpYCXN0cmlwICR7UFJFRklYfS9iaW4vc3BpY2UzICR7 UFJFRklYfS9iaW4vbnV0bWVnCVwKWAkgICR7UFJFRklYfS9iaW4vc2NvbnZl cnQgJHtQUkVGSVh9L2Jpbi9oZWxwIFwKWAkgICR7UFJFRklYfS9iaW4vcHJv YzJtb2QgJHtQUkVGSVh9L2Jpbi9tdWx0aWRlYwpYCWNobW9kIC1SIGErclgg JHtQUkVGSVh9L3NoYXJlL3NwaWNlMwpYCWluc3RhbGwgLWMgLW0gNjQ0IC1v IGJpbiAtZyBiaW4gbWFuL21hbjUvbWZiY2FwLjUgJHtQUkVGSVh9L21hbi9t YW41L21mYmNhcC41ClgJaW5zdGFsbCAtYyAtbSA2NDQgLW8gYmluIC1nIGJp biBtYW4vbWFuMS9zY29udmVydC4xICR7UFJFRklYfS9tYW4vbWFuMS9zY29u dmVydC4xClgJaW5zdGFsbCAtYyAtbSA2NDQgLW8gYmluIC1nIGJpbiBtYW4v bWFuMS9udXRtZWcuMSAke1BSRUZJWH0vbWFuL21hbjEvbnV0bWVnLjEKWAlp bnN0YWxsIC1jIC1tIDY0NCAtbyBiaW4gLWcgYmluIG1hbi9tYW4xL3NwaWNl LjEgJHtQUkVGSVh9L21hbi9tYW4xL3NwaWNlLjEKWAlpbnN0YWxsIC1jIC1t IDY0NCAtbyBiaW4gLWcgYmluIG1hbi9tYW4zL21mYi4zICR7UFJFRklYfS9t YW4vbWFuMy9tZmIuMwpFTkQtb2Ytc3BpY2UvZmlsZXMvTWFrZWZpbGUKZWNo byB4IC0gc3BpY2UvZmlsZXMvcGF0Y2gtc3AzZjUKc2VkICdzL15YLy8nID5z cGljZS9maWxlcy9wYXRjaC1zcDNmNSA8PCAnRU5ELW9mLXNwaWNlL2ZpbGVz L3BhdGNoLXNwM2Y1JwpYVGhlc2UgYXJlIG9mZmljaWFsIEJlcmtlbGV5IGZp eGVzIGZvciBzcDNmNApYKioqIHNyYy9saWIvZnRlL2dyaWQuYy5vcmlnCVN1 biBBcHIgMjUgMTQ6NTM6MTEgMTk5MwpYLS0tIHNyYy9saWIvZnRlL2dyaWQu YwlTYXQgSmFuIDI5IDEwOjQ3OjU5IDE5OTQKWCoqKioqKioqKioqKioqKgpY KioqIDE3LDIyICoqKioKWC0tLSAxNywyMyAtLS0tClggICNpbmNsdWRlICJz dWZmaXguaCIKWCAgClggICNkZWZpbmUgUkFEX1RPX0RFRwkoMTgwLjAgLyBN X1BJKQpYKyAjZGVmaW5lIExBQkVMX0NIQVJTCTIwClggIApYICBzdGF0aWMg ZG91YmxlICpsaW5ncmlkKCksICpsb2dncmlkKCk7ClggIHN0YXRpYyB2b2lk IHBvbGFyZ3JpZCgpLCBzbWl0aGdyaWQoKTsKWCoqKioqKioqKioqKioqKgpY KioqIDIyNSwyMzEgKioqKgpYICAgICAgaW50IG1heDsKWCAgICAgIHN0YXRp YyBkb3VibGUgZGRbMl07ClggICAgICBpbnQgbXVsdCA9IDE7ClghICAgICBj aGFyIGJ1ZlsxNl0sICpzOwpYICAgICAgaW50IHNsaW0sIGRpZ2l0czsKWCAg ClggICAgICBpZiAoYXhpcyA9PSB5X2F4aXMgJiYgZ3JhcGgtPmdyaWQueXNp emVkKSB7ClgtLS0gMjI2LDIzMiAtLS0tClggICAgICBpbnQgbWF4OwpYICAg ICAgc3RhdGljIGRvdWJsZSBkZFsyXTsKWCAgICAgIGludCBtdWx0ID0gMTsK WCEgICAgIGNoYXIgYnVmW0xBQkVMX0NIQVJTXSwgKnM7ClggICAgICBpbnQg c2xpbSwgZGlnaXRzOwpYICAKWCAgICAgIGlmIChheGlzID09IHlfYXhpcyAm JiBncmFwaC0+Z3JpZC55c2l6ZWQpIHsKWCoqKioqKioqKioqKioqKgpYKioq IDQ3Nyw0ODMgKioqKgpYICBkcmF3bGluZ3JpZChncmFwaCwgdW5pdHMsIHNw YWNpbmcsIG5zcCwgZHN0LCBsbXQsIGhtdCwgb25lZGVjLCBtdWx0LCBtYWcs ClggICAgICBkaWdpdHMsIGF4aXMpClggICAgICBHUkFQSCAqZ3JhcGg7Clgh ICAgICBjaGFyIHVuaXRzWzE2XTsKWCAgICAgIGJvb2wgb25lZGVjOwpYICAg ICAgaW50IG5zcCwgc3BhY2luZywgbXVsdDsKWCAgICAgIGRvdWJsZSBobXQs IGxtdCwgZHN0OwpYLS0tIDQ3OCw0ODQgLS0tLQpYICBkcmF3bGluZ3JpZChn cmFwaCwgdW5pdHMsIHNwYWNpbmcsIG5zcCwgZHN0LCBsbXQsIGhtdCwgb25l ZGVjLCBtdWx0LCBtYWcsClggICAgICBkaWdpdHMsIGF4aXMpClggICAgICBH UkFQSCAqZ3JhcGg7ClghICAgICBjaGFyICp1bml0czsKWCAgICAgIGJvb2wg b25lZGVjOwpYICAgICAgaW50IG5zcCwgc3BhY2luZywgbXVsdDsKWCAgICAg IGRvdWJsZSBobXQsIGxtdCwgZHN0OwpYKioqKioqKioqKioqKioqClgqKiog NDg4LDQ5NCAqKioqClggIApYICAgICAgaW50IGksIGo7ClggICAgICBkb3Vi bGUgbSwgc3RlcDsKWCEgICAgIGNoYXIgYnVmWzE2XTsKWCAgClggICAgICAv KiBpIGNvdW50cyBob3cgbWFueSBwaXhlbHMgd2UgaGF2ZSBkcmF3biwgYW5k IGogY291bnRzIHdoaWNoIHVuaXQKWCAgICAgICAqIHdlIGFyZSBhdC4KWC0t LSA0ODksNDk1IC0tLS0KWCAgClggICAgICBpbnQgaSwgajsKWCAgICAgIGRv dWJsZSBtLCBzdGVwOwpYISAgICAgY2hhciBidWZbTEFCRUxfQ0hBUlNdOwpY ICAKWCAgICAgIC8qIGkgY291bnRzIGhvdyBtYW55IHBpeGVscyB3ZSBoYXZl IGRyYXduLCBhbmQgaiBjb3VudHMgd2hpY2ggdW5pdApYICAgICAgICogd2Ug YXJlIGF0LgpYKioqKioqKioqKioqKioqClgqKiogNTY3LDU3MyAqKioqClgg ICAgICBkb3VibGUgazsKWCAgICAgIGRvdWJsZSBkZWNzOwpYICAgICAgZG91 YmxlIG1hZywgZ2FpbjsKWCEgICAgIGNoYXIgYnVmWzMyXSwgKnM7ClggIApY ICAgICAgaWYgKGF4aXMgPT0geF9heGlzICYmIGdyYXBoLT5ncmlkLnhzaXpl ZCkgewpYICAgICAgICBsbXQgPSBncmFwaC0+Z3JpZC54YXhpcy5sb2cubG10 OwpYLS0tIDU2OCw1NzQgLS0tLQpYICAgICAgZG91YmxlIGs7ClggICAgICBk b3VibGUgZGVjczsKWCAgICAgIGRvdWJsZSBtYWcsIGdhaW47ClghICAgICBj aGFyIGJ1ZltMQUJFTF9DSEFSU10sICpzOwpYICAKWCAgICAgIGlmIChheGlz ID09IHhfYXhpcyAmJiBncmFwaC0+Z3JpZC54c2l6ZWQpIHsKWCAgICAgICAg bG10ID0gZ3JhcGgtPmdyaWQueGF4aXMubG9nLmxtdDsKWCoqKioqKioqKioq KioqKgpYKioqIDY3MSw2NzcgKioqKgpYICB7ClggICAgICBpbnQgaSwgaiwg aywgbCwgbTsKWCAgICAgIGRvdWJsZSB0OwpYISAgICAgY2hhciBidWZbMTZd OwpYICAKWCAgICAgIC8qIE5vdyBwbG90IGV2ZXJ5IHBwJ3RoIGRlY2FkZSBs aW5lLCB3aXRoIHN1YnMgbGluZXMgYmV0d2VlbiB0aGVtLiAqLwpYICAgICAg aWYgKHN1YnMgPiAxKQpYLS0tIDY3Miw2NzggLS0tLQpYICB7ClggICAgICBp bnQgaSwgaiwgaywgbCwgbTsKWCAgICAgIGRvdWJsZSB0OwpYISAgICAgY2hh ciBidWZbTEFCRUxfQ0hBUlNdOwpYICAKWCAgICAgIC8qIE5vdyBwbG90IGV2 ZXJ5IHBwJ3RoIGRlY2FkZSBsaW5lLCB3aXRoIHN1YnMgbGluZXMgYmV0d2Vl biB0aGVtLiAqLwpYICAgICAgaWYgKHN1YnMgPiAxKQpYKioqIHNyYy9saWIv ZnRlL25ld2NvbXMuYy5vcmlnCVN1biBNYXIgIDcgMTY6MzA6NTggMTk5MwpY LS0tIHNyYy9saWIvZnRlL25ld2NvbXMuYwlXZWQgRmViIDIzIDIyOjM5OjU1 IDE5OTQKWCoqKioqKioqKioqKioqKgpYKioqIDE1MSwxNTYgKioqKgpYLS0t IDE1MSwxNjAgLS0tLQpYICAJICAgIC8qIENvcHkgZnJvbSB0aGUgZmlyc3Qg Ki8KWCAgCSAgICB2bmFtZSA9IGNwX3VucXVvdGUod2wtPndsX3dvcmQpOwpY ICAJICAgIGR2ID0gdmVjX2dldCh2bmFtZSk7ClgrIAkgICAgaWYgKCFkdikg ewpYKyAJCXByaW50ZigiJyVzJyByZWZlcmVuY2UgdmVjdG9yIG5vdCBmb3Vu ZFxuIiwgdm5hbWUpOwpYKyAJCXJldHVybjsKWCsgCSAgICB9ClggIAkgICAg bnVtZGltcyA9IGR2LT52X251bWRpbXM7ClggIAkgICAgZGltcyA9IGR2LT52 X2RpbXM7ClggIAkgICAgd2wgPSB3bC0+d2xfbmV4dDsKWCoqKiBzcmMvbGli L3NwYXJzZS9zcHNtcC5jLm9yaWcJV2VkIEZlYiAgMyAxNDoyMDo1MCAxOTkz ClgtLS0gc3JjL2xpYi9zcGFyc2Uvc3BzbXAuYwlTdW4gSmFuIDMwIDExOjUz OjEwIDE5OTQKWCoqKioqKioqKioqKioqKgpYKioqIDQ4Myw0OTIgKioqKgpY ICBpbnQgQ3JlYXRlSWZNaXNzaW5nOwpYICB7ClggIE1hdHJpeFB0ciBNYXRy aXggPSAoTWF0cml4UHRyKWVNYXRyaXg7ClghIEVsZW1lbnRQdHIgRWxlbWVu dCA9IE1hdHJpeC0+Rmlyc3RJbkNvbFtDb2xdOwpYICAKWCAgLyogQmVnaW4g YFNNUGZpbmRFbHQnLiAqLwpYICAgICAgQVNTRVJUKCBJU19TUEFSU0UoIE1h dHJpeCApICk7ClggICAgICBFbGVtZW50ID0gc3BjRmluZEVsZW1lbnRJbkNv bChNYXRyaXgsICZFbGVtZW50LCBSb3csIENvbCwgQ3JlYXRlSWZNaXNzaW5n KTsKWCAgICAgIHJldHVybiAoU01QZWxlbWVudCAqKUVsZW1lbnQ7ClggIH0K WC0tLSA0ODUsNDk3IC0tLS0KWCAgaW50IENyZWF0ZUlmTWlzc2luZzsKWCAg ewpYICBNYXRyaXhQdHIgTWF0cml4ID0gKE1hdHJpeFB0cillTWF0cml4OwpY ISBFbGVtZW50UHRyIEVsZW1lbnQ7ClggIApYICAvKiBCZWdpbiBgU01QZmlu ZEVsdCcuICovClggICAgICBBU1NFUlQoIElTX1NQQVJTRSggTWF0cml4ICkg KTsKWCsgICAgIFJvdyA9IE1hdHJpeC0+RXh0VG9JbnRSb3dNYXBbUm93XTsK WCsgICAgIENvbCA9IE1hdHJpeC0+RXh0VG9JbnRDb2xNYXBbQ29sXTsKWCsg ICAgIEVsZW1lbnQgPSBNYXRyaXgtPkZpcnN0SW5Db2xbQ29sXTsKWCAgICAg IEVsZW1lbnQgPSBzcGNGaW5kRWxlbWVudEluQ29sKE1hdHJpeCwgJkVsZW1l bnQsIFJvdywgQ29sLCBDcmVhdGVJZk1pc3NpbmcpOwpYICAgICAgcmV0dXJu IChTTVBlbGVtZW50ICopRWxlbWVudDsKWCAgfQpFTkQtb2Ytc3BpY2UvZmls ZXMvcGF0Y2gtc3AzZjUKZWNobyB4IC0gc3BpY2UvZmlsZXMvcGF0Y2gtc3Jj X2xpYl9mdGVfZG9wbG90X2MKc2VkICdzL15YLy8nID5zcGljZS9maWxlcy9w YXRjaC1zcmNfbGliX2Z0ZV9kb3Bsb3RfYyA8PCAnRU5ELW9mLXNwaWNlL2Zp bGVzL3BhdGNoLXNyY19saWJfZnRlX2RvcGxvdF9jJwpYLS0tIHNyYy9saWIv ZnRlL2RvcGxvdC5jLm9yaWcJU3VuIEFwciAyNSAyMzo0ODo0NSAxOTkzClgr Kysgc3JjL2xpYi9mdGUvZG9wbG90LmMJTW9uIEZlYiAyNiAxODowMzoyMCAy MDAxClhAQCAtMTE3LDcgKzExNyw3IEBAClggICAgIH0KWCAKWCAgICAgaWYg KCFjcF9nZXR2YXIoImhjb3B5ZGV2dHlwZSIsIFZUX1NUUklORywgYnVmKSkg ewpYLSAgICAgICAgZGV2dHlwZSA9ICJwbG90NSI7ClgrICAgICAgICBkZXZ0 eXBlID0gInBvc3RzY3JpcHQiOwpYICAgICB9IGVsc2UgewpYICAgICAgICAg ZGV2dHlwZSA9IGJ1ZjsKWCAgICAgfQpYQEAgLTE0NywxMCArMTQ3LDIzIEBA ClggCSAgICAgIERldlN3aXRjaChOVUxMKTsKWCAJICAgICAgcmV0dXJuOwpY IAkgICAgfQpYKwkgICAgLyoKWCsJICAgICAqIFNpbmNlIHRoZSBoYXJkY29w eSBvdXRwdXQgcm91dGluZXMgcmVseSBvbiBjdXJyZW50Z3JhcGgKWCsJICAg ICAqIGJlaW5nIHNldCwgd2UgbmVlZCB0byBzZXQgaXQgdG8gb3VyIHRlbXBn cmFwaC4gIE5vdGUKWCsJICAgICAqIHRoYXQgRGV2U3dpdGNoKE5VTEwpIGNh dXNlcyB0aGUgQ2xvc2UoKSBmdW5jdGlvbiBvZiB0aGUKWCsJICAgICAqIGhh cmRjb3B5IGRldmljZSB0byBiZSBjYWxsZWQgd2hpY2ggd2lsbCBpbiB0dXJu ClgrCSAgICAgKiBmaW5hbGl6ZSB0aGUgb3V0cHV0LCB0aHVzIHN0aWxsIG5l ZWRzIGEgdmFsaWQKWCsJICAgICAqIGN1cnJlbnRncmFwaC4gIEZvciB0aGF0 IHJlYXNvbiwgd2UgbWF5IG9ubHkgcG9wIHRoZQpYKwkgICAgICogY29udGV4 dCBhZnRlciBjYWxsaW5nIGl0LCBhbmQgbGlrZXdpc2Ugd2Ugc2hvdWxkIG5v dApYKwkgICAgICogZGVzdHJveSB0aGUgdGVtcGdyYXBoIHVudGlsIHRoZSBo YXJkY29weSBkZXZpY2UgaGFzClgrCSAgICAgKiBiZWVuIGNsb3NlZC4KWCsJ ICAgICAqLwpYKwkgICAgUHVzaEdyYXBoQ29udGV4dCh0ZW1wZ3JhcGgpOwpY IAkgICAgZ3JfcmVzaXplKHRlbXBncmFwaCk7ClggCSAgICBncl9yZWRyYXco dGVtcGdyYXBoKTsKWC0JICAgIERlc3Ryb3lHcmFwaCh0ZW1wZ3JhcGgtPmdy YXBoaWQpOwpYIAkgICAgRGV2U3dpdGNoKE5VTEwpOwpYKwkgICAgUG9wR3Jh cGhDb250ZXh0KCk7ClgrCSAgICBEZXN0cm95R3JhcGgodGVtcGdyYXBoLT5n cmFwaGlkKTsKWCAJICAgIGZvdW5kaXQgPSAxOwpYIAl9ClggICAgIH0KRU5E LW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX2RvcGxvdF9jCmVj aG8geCAtIHNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX3gxMV9jCnNl ZCAncy9eWC8vJyA+c3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9mdGVfeDEx X2MgPDwgJ0VORC1vZi1zcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV94 MTFfYycKWC0tLSBzcmMvbGliL2Z0ZS94MTEuYy5vcmlnCVRodSBKdWwgMTcg MTA6NTU6MDAgMjAwMwpYKysrIHNyYy9saWIvZnRlL3gxMS5jCVRodSBKdWwg MTcgMTE6Mzk6MDUgMjAwMwpYQEAgLTEyMCw3ICsxMjAsMTAgQEAKWCAJLyog ImludmVydCIgd29ya3MgYmV0dGVyIHRoYW4gInhvciIgZm9yIEImVyAqLwpY IApYIAkvKiB4b3IgZ2Mgc2hvdWxkIGJlIGEgZnVuY3Rpb24gb2YgdGhlIHBp eGVscyB0aGF0IGFyZSB3cml0dGVuIG9uICovClgtCWdjdmFsdWVzLmZ1bmN0 aW9uID0gR1h4b3I7ClgrCS8qIGdjdmFsdWVzLmZ1bmN0aW9uID0gR1h4b3I7 ICovClgrCS8qIHRoaXMgcGF0Y2ggbWFrZXMgbGluZXMgdmlzaWJsZSBvbiB0 cnVlIGNvbG9yIGRpc3BsYXlzClgrICAgICAgICAgICBHdWVudGhlciBSb2Vo cmljaCAyMi1KYW4tOTkgKi8KWCsJZ2N2YWx1ZXMuZnVuY3Rpb24gPSBHWGlu dmVydDsKWCAJZ2N2YWx1ZXMubGluZV93aWR0aCA9IDE7ClggCWdjdmFsdWVz LmZvcmVncm91bmQgPSAxOwpYIAlnY3ZhbHVlcy5iYWNrZ3JvdW5kID0gMDsK WEBAIC0zMDIsNyArMzA1LDcgQEAKWCAJcmV0dXJuICgwKTsKWCB9ClggClgt c3RhdGljClgrLyogUE4gc3RhdGljICovClggaW5pdGxpbmVzdHlsZXMoKQpY IHsKWCAKWEBAIC0zMTgsNyArMzIxLDcgQEAKWCAJcmV0dXJuOwpYIH0KWCAK WC1zdGF0aWMKWCsvKiBQTiBzdGF0aWMgKi8KWCBpbml0Y29sb3JzKGdyYXBo KQpYICAgICBHUkFQSCAqZ3JhcGg7ClggewpYQEAgLTgwNSwxMSArODA4LDEz IEBAClggewpYIApYIAlHUkFQSCAqZ3JhcGggPSAoR1JBUEggKikgY2xpZW50 X2RhdGE7ClgrCVdpZGdldCB3OwpYIApYIAkvKiBJcGxvdHMgYXJlIGRvbmUg YXN5bmNocm9ub3VzbHkgKi8KWCAJREVWREVQKGdyYXBoKS5pc29wZW4gPSAw OwpYKwl3ID0gREVWREVQKGdyYXBoKS5zaGVsbDsKWCAJRGVzdHJveUdyYXBo KGdyYXBoLT5ncmFwaGlkKTsKWC0JWHREZXN0cm95V2lkZ2V0KERFVkRFUChn cmFwaCkuc2hlbGwpOwpYKwlYdERlc3Ryb3lXaWRnZXQodyk7ClggClggfQpY IApYQEAgLTk0NSw3ICs5NTAsOCBAQApYIAkgICAgICAgICAgICAxIDw8IENv bm5lY3Rpb25OdW1iZXIoZGlzcGxheSk7ClggClggCSAgICAgIC8qIGJsb2Nr IG9uIENvbm5lY3Rpb25OdW1iZXIgYW5kIHJlcXVlc3QtPmZwICovClgtCSAg ICAgIHNlbGVjdChuZmRzICsgMSwgJnJlYWRmZHMsIChpbnQgKikgTlVMTCwg KGludCAqKSBOVUxMLCBOVUxMKTsKWCsJICAgICAgLyogUE4gYWRkZWQgZmRf c2V0ICogY2FzdGluZyAqLwpYKwkgICAgICBzZWxlY3QobmZkcyArIDEsIChm ZF9zZXQgKikgJnJlYWRmZHMsIChmZF9zZXQgKikgTlVMTCwgKGZkX3NldCAq KSBOVUxMLCBOVUxMKTsKWCAKWCAJICAgICAgLyogaGFuZGxlIFggZXZlbnRz IGZpcnN0ICovClggCSAgICAgIGlmIChyZWFkZmRzICYgKDEgPDwgQ29ubmVj dGlvbk51bWJlcihkaXNwbGF5KSkpIHsKWEBAIC05OTgsNyArMTAwNCw4IEBA ClggClggfQpYIApYLXN0YXRpYyBYX1NjcmVlbnRvRGF0YShncmFwaCwgeCwg eSwgZngsIGZ5KQpYKy8qIFBOIHN0YXRpYyAqLyAKWCtYX1NjcmVlbnRvRGF0 YShncmFwaCwgeCwgeSwgZngsIGZ5KQpYIEdSQVBIICpncmFwaDsKWCBpbnQg eCx5OwpYIGRvdWJsZSAqZngsICpmeTsKRU5ELW9mLXNwaWNlL2ZpbGVzL3Bh dGNoLXNyY19saWJfZnRlX3gxMV9jCmVjaG8geCAtIHNwaWNlL2ZpbGVzL3Bh dGNoLWxldmVsMQpzZWQgJ3MvXlgvLycgPnNwaWNlL2ZpbGVzL3BhdGNoLWxl dmVsMSA8PCAnRU5ELW9mLXNwaWNlL2ZpbGVzL3BhdGNoLWxldmVsMScKWCMg IHNwaWNlM2Y0LzNmNSBwYXRjaCBsZXZlbCAxClgjICBKdW5lIDIyLCAxOTk0 ClgjICBBbnRob255IFBhcmtlciAodG9ueXBAbXBjZS5tcS5lZHUuYXUpClgj ICBNYWNxdWFyaWUgVW5pdmVyc2l0eSwgU3lkbmV5IEF1c3RyYWxpYSAyMTA5 IApYIwpYLS0tIHNyYy9saWIvZGV2L21vczYvbW9zNml0Zi5oLm9yaWcJTW9u IFNlcCAyOCAwMzoyNToyMiAxOTkyClgrKysgc3JjL2xpYi9kZXYvbW9zNi9t b3M2aXRmLmgJVGh1IEp1bCAxNyAwMDoyMTozMyAyMDAzClhAQCAtNDYsMTMg KzQ2LDggQEAKWCAgICAgTlVMTCwgLyogTU9TNmFjTG9hZCwgWFhYICovClgg ICAgIE5VTEwsClggICAgIE1PUzZkZXN0cm95LApYLSNpZmRlZiBERUxFVEVT ClgtICAgIE1PUzZtRGVsZXRlLApYLSAgICBNT1M2ZGVsZXRlLApYLSNlbHNl IC8qIERFTEVURVMgKi8KWC0gICAgTlVMTCwKWC0gICAgTlVMTCwKWC0jZW5k aWYgLyogREVMRVRFUyAqLwpYKyAgICBOVUxMLCAvKiBERUxFVEVTICovClgr ICAgIE5VTEwsLyogREVMRVRFUyAqLwpYICAgICBNT1M2Z2V0aWMsClggICAg IE1PUzZhc2ssClggICAgIE1PUzZtQXNrLApFTkQtb2Ytc3BpY2UvZmlsZXMv cGF0Y2gtbGV2ZWwxCmVjaG8geCAtIHNwaWNlL2ZpbGVzL3BhdGNoLXNyY19s aWJfZnRlX2NwaXRmX2MKc2VkICdzL15YLy8nID5zcGljZS9maWxlcy9wYXRj aC1zcmNfbGliX2Z0ZV9jcGl0Zl9jIDw8ICdFTkQtb2Ytc3BpY2UvZmlsZXMv cGF0Y2gtc3JjX2xpYl9mdGVfY3BpdGZfYycKWC0tLSBzcmMvbGliL2Z0ZS9j cGl0Zi5jLm9yaWcJVHVlIE1hciAzMCAxNjo1NTo0MiAxOTkzClgrKysgc3Jj L2xpYi9mdGUvY3BpdGYuYwlUaHUgSnVsIDE3IDAwOjQ3OjUwIDIwMDMKWEBA IC0yMTIsNyArMjEyLDkgQEAKWCAJCWNwX2ludGVyYWN0aXZlID0gZmFsc2U7 ClggCQlpbnBfc3Bzb3VyY2UoZnAsIHRydWUsIGJ1Zik7ClggCQljcF9pbnRl cmFjdGl2ZSA9IHRydWU7ClgtCQkodm9pZCkgZmNsb3NlKGZwKTsKWCsgICAg ICAgICAgICAgICAgLyogdGhlIGZvbGxvd2luZyBjYXVzZWQgbWUgU0lHU0VH VidzIHNpbmNlIGlucF9zcHNvdXJjZQpYKyAgICAgICAgICAgICAgICAgICBh bHJlYWR5IGNsb3NlcyBmcCAtIEEuIFZlbGlhdGggMTIvNy85NyAqLwpYKwkJ LyogKHZvaWQpIGZjbG9zZShmcCk7ICovClggCQlmb3VuZCA9IHRydWU7Clgg CQlicmVhazsKWCAJICAgIH0gZWxzZSBpZiAoZnRfY29udHJvbGRiKQpFTkQt b2Ytc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9mdGVfY3BpdGZfYwplY2hv IHggLSBzcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9kaW1lbnNfYwpz ZWQgJ3MvXlgvLycgPnNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX2Rp bWVuc19jIDw8ICdFTkQtb2Ytc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9m dGVfZGltZW5zX2MnClgtLS0gc3JjL2xpYi9mdGUvZGltZW5zLmMub3JpZwlT dW4gQXByIDI1IDE4OjAzOjE5IDE5OTMKWCsrKyBzcmMvbGliL2Z0ZS9kaW1l bnMuYwlUaHUgU2VwIDMwIDEwOjAyOjEwIDE5OTkKWEBAIC0yMSw5ICsyMSwy MSBAQApYIHsKWCAgICAgaW50IGk7ClgtICAgIGNoYXIgYnVmW0JTSVpFX1NQ XTsKWCsgICAgY2hhciAqYnVmOwpYKyAgICBpZiAoIChidWYgPSAoY2hhciAq KSBtYWxsb2MoQlNJWkVfU1Aqc2l6ZW9mKGNoYXIpKSkgPT0gTlVMTCkKWCsg ICAgewpYKyAgICAgIGZwcmludGYoc3RkZXJyLCJsaWI6ZnRlOmRpbW5zOmRp bXN0cmluZzogIG1hbGxvYyBmYWlsZWRcbiIpOwpYKyAgICAgIGV4aXQoMSk7 ClgrICAgIH0KWCAKWCAgICAgaWYgKCFkYXRhIHx8IGxlbmd0aCA8IDEpClgg CXJldHVybiBOVUxMOwpYIApYKyAgICBpZiAobGVuZ3RoID4gQlNJWkVfU1Ap ClgrICAgIHsKWCsgICAgICBmcHJpbnRmKHN0ZGVyciwiV0FSTklORywgbGli OmZ0ZTpkaW1uczpkaW1zdHJpbmc6IGxlbmd0aD0lZCA+IEJTSVpFX1NQPSVk XG4iLApYKwlsZW5ndGgsQlNJWkVfU1ApOwpYKyAgICAgIGxlbmd0aCA9IEJT SVpFX1NQOwpYKyAgICB9ClgrClggICAgIGJ1ZlswXSA9ICdcMCc7ClggICAg IGZvciAoaT0wOyBpIDwgbGVuZ3RoOyBpKyspIHsKWEBAIC0zMSw1ICs0Myw1 IEBAClggCSAgICAoaSA8IGxlbmd0aCAtIDEpID8gIiwiIDogIiIpOwpYICAg ICB9ClgtICAgIC8qIFhYWCBTaG91bGQgSSByZXR1cm4gYSBjb3B5IGluc3Rl YWQ/ICovClgrICAgIApYICAgICByZXR1cm4oYnVmKTsKWCB9ClhAQCAtNDQs OCArNTYsMjEgQEAKWCB7ClggICAgIGludCBpOwpYLSAgICBjaGFyIGJ1ZltC U0laRV9TUF07ClgrICAgIGNoYXIgKmJ1ZjsgICAgICAgICAgClgrClgrICAg IGlmICggKGJ1ZiA9IChjaGFyICopIG1hbGxvYyhCU0laRV9TUCpzaXplb2Yo Y2hhcikpKSA9PSBOVUxMKQpYKyAgICB7ClgrICAgICAgZnByaW50ZihzdGRl cnIsImxpYjpmdGU6ZGltbnM6aW5kZXhzdHJpbmc6ICBtYWxsb2MgZmFpbGVk XG4iKTsKWCsgICAgICBleGl0KDEpOwpYKyAgICB9ClggClggICAgIGlmICgh ZGF0YSB8fCBsZW5ndGggPCAxKQpYIAlyZXR1cm4gTlVMTDsKWCsKWCsgICAg aWYgKGxlbmd0aCA+IEJTSVpFX1NQKQpYKyAgICB7ClgrICAgICAgZnByaW50 ZihzdGRlcnIsIldBUk5JTkcsIGxpYjpmdGU6ZGltbnM6aW5kZXhzdHJpbmc6 IGxlbmd0aD0lZCA+IEJTSVpFX1NQPSVkXG4iLApYKyAgICAgICAgbGVuZ3Ro LEJTSVpFX1NQKTsKWCsgICAgICBsZW5ndGggPSBCU0laRV9TUDsKWCsgICAg fQpYIApYICAgICBidWZbMF0gPSAnXDAnOwpFTkQtb2Ytc3BpY2UvZmlsZXMv cGF0Y2gtc3JjX2xpYl9mdGVfZGltZW5zX2MKZWNobyB4IC0gc3BpY2UvZmls ZXMvcGF0Y2gtc3JjX2xpYl9mdGVfYXNwaWNlX2MKc2VkICdzL15YLy8nID5z cGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9hc3BpY2VfYyA8PCAnRU5E LW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX2FzcGljZV9jJwpY LS0tIHNyYy9saWIvZnRlL2FzcGljZS5jLm9yaWcJU3VuIEFwciAyNSAyMDo1 Nzo1NSAxOTkzClgrKysgc3JjL2xpYi9mdGUvYXNwaWNlLmMJVGh1IFNlcCAz MCAxMTo0Mjo0MCAxOTk5ClhAQCAtMTc1LDQgKzE3NSwxMCBAQApYICAgICBG SUxFICpmcDsKWCAgICAgaW50IHBpZDsKWCsjaWZkZWYgSEFTX0lOVFdBSVRT VEFUVVMKWCsgICAgaW50IHN0YXR1czsKWCsjZWxzZQpYKyAgICB1bmlvbiB3 YWl0IHN0YXR1czsKWCsjZW5kaWYKWCsKWCAgICAgc3RhdGljIGJvb2wgaGVy ZSA9IGZhbHNlOyAgIC8qIERvbid0IHdhbnQgdG8gYmUgcmUtZW50cmFudC4g Ki8KWCAKWEBAIC0xODMsNSArMTg5LDUgQEAKWCAKWCAgICAgd2hpbGUgKG51 bWNoYW5nZWQgPiAwKSB7ClgtICAgICAgICBwaWQgPSB3YWl0KCh1bmlvbiB3 YWl0ICopIE5VTEwpOwpYKyAgICAgICAgcGlkID0gd2FpdCgmc3RhdHVzKTsK WCAgICAgICAgIGlmIChwaWQgPT0gLTEpIHsKWCAgICAgICAgICAgICBmcHJp bnRmKGNwX2VyciwgCkVORC1vZi1zcGljZS9maWxlcy9wYXRjaC1zcmNfbGli X2Z0ZV9hc3BpY2VfYwplY2hvIHggLSBzcGljZS9maWxlcy9wYXRjaC1zcmNf bGliX2Z0ZV9ncmFmX2MKc2VkICdzL15YLy8nID5zcGljZS9maWxlcy9wYXRj aC1zcmNfbGliX2Z0ZV9ncmFmX2MgPDwgJ0VORC1vZi1zcGljZS9maWxlcy9w YXRjaC1zcmNfbGliX2Z0ZV9ncmFmX2MnClgtLS0gc3JjL2xpYi9mdGUvZ3Jh Zi5jLm9yaWcJVHVlIEphbiAgNSAxNjo0Mzo0NCAxOTkzClgrKysgc3JjL2xp Yi9mdGUvZ3JhZi5jCVRodSBKdWwgMTcgMTI6MTY6NDIgMjAwMwpYQEAgLTI4 OSw5ICsyODksMTEgQEAKWCAJCWlmICgqdGljcyA9PSAoZG91YmxlKSBucCkg ewpYIAkJICAgIFRleHQoIngiLCAoaW50KSAodG94IC0gY3VycmVudGdyYXBo LT5mb250d2lkdGggLyAyKSwKWCAJCQkoaW50KSAodG95IC0gY3VycmVudGdy YXBoLT5mb250aGVpZ2h0IC8gMikpOwpYLQkJICAgIFNhdmVUZXh0KGN1cnJl bnRncmFwaCwgIngiLApYKwkgICAgICAgLyogZ3JfcmVkcmF3IHdpbGwgcmVk cmF3IHRoaXMgdy9vIG91ciBoYXZpbmcgdG8gc2F2ZSBpdApYKyAgICAgICAg ICAgICAgICAgIEd1ZW50aGVyIFJvZWhyaWNoIDIyLUphbi05OSAqLyAKWCsJ ICAgICAgIC8qICAgU2F2ZVRleHQoY3VycmVudGdyYXBoLCAieCIsClggCQkJ KGludCkgKHRveCAtIGN1cnJlbnRncmFwaC0+Zm9udHdpZHRoIC8gMiksClgt CQkJKGludCkgKHRveSAtIGN1cnJlbnRncmFwaC0+Zm9udGhlaWdodCAvIDIp KTsKWCsJCQkoaW50KSAodG95IC0gY3VycmVudGdyYXBoLT5mb250aGVpZ2h0 IC8gMikpOyAqLwpYIAkJICAgIGJyZWFrOwpYIAkJfQpYIAkgICAgfQpYQEAg LTMwMSw5ICszMDMsMTEgQEAKWCAJICAgIC8qIERyYXcgYW4gJ3gnICovClgg CSAgICBUZXh0KCJ4IiwgKGludCkgKHRveCAtIGN1cnJlbnRncmFwaC0+Zm9u dHdpZHRoIC8gMiksClggCQkoaW50KSAodG95IC0gY3VycmVudGdyYXBoLT5m b250aGVpZ2h0IC8gMikpOwpYLQkgICAgU2F2ZVRleHQoY3VycmVudGdyYXBo LCAieCIsClgrICAgICAgICAgIC8qIGdyX3JlZHJhdyB3aWxsIHJlZHJhdyB0 aGlzIHcvbyBvdXIgaGF2aW5nIHRvIHNhdmUgaXQKWCsgICAgICAgICAgICAg ICAgICBHdWVudGhlciBSb2VocmljaCAyMi1KYW4tOTkgKi8gClgrCSAgLyog U2F2ZVRleHQoY3VycmVudGdyYXBoLCAieCIsClggCQkoaW50KSAodG94IC0g Y3VycmVudGdyYXBoLT5mb250d2lkdGggLyAyKSwKWC0JCShpbnQpICh0b3kg LSBjdXJyZW50Z3JhcGgtPmZvbnRoZWlnaHQgLyAyKSk7ClgrCQkoaW50KSAo dG95IC0gY3VycmVudGdyYXBoLT5mb250aGVpZ2h0IC8gMikpOyAqLwpYIAl9 ClggICAgICAgICBicmVhazsKWCAgICAgICBjYXNlIFBMT1RfQ09NQjoKRU5E LW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX2dyYWZfYwplY2hv IHggLSBzcGljZS9maWxlcy9wYXRjaC1zcmNfaW5jbHVkZV9wYXRjaGxldl9o CnNlZCAncy9eWC8vJyA+c3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2luY2x1ZGVf cGF0Y2hsZXZfaCA8PCAnRU5ELW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19p bmNsdWRlX3BhdGNobGV2X2gnClgtLS0gc3JjL2luY2x1ZGUvcGF0Y2hsZXYu aC5vcmlnCVRodSBKdWwgMjkgMDU6MzA6MzAgMTk5MwpYKysrIHNyYy9pbmNs dWRlL3BhdGNobGV2LmgJVGh1IEp1bCAxNyAwMDoyMTozMyAyMDAzClhAQCAt MSArMSBAQApYLSNkZWZpbmUgUEFUQ0hMRVZFTAkwClgrI2RlZmluZSBQQVRD SExFVkVMCTIKRU5ELW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19pbmNsdWRl X3BhdGNobGV2X2gKZWNobyB4IC0gc3BpY2UvZmlsZXMvcGF0Y2gtbGV2ZWwy CnNlZCAncy9eWC8vJyA+c3BpY2UvZmlsZXMvcGF0Y2gtbGV2ZWwyIDw8ICdF TkQtb2Ytc3BpY2UvZmlsZXMvcGF0Y2gtbGV2ZWwyJwpYIyAgc3BpY2UzZjQv M2Y1IHBhdGNoIGxldmVsIDIKWCMgIEFkZHMgc3BlYyBjb21tYW5kIGZvciBz cGVjdHJ1bSBhbmFseXNpcyB1c2luZyBERlQKWCMgIEp1bHkgMTEsIDE5OTQK WCMgIEFudGhvbnkgUGFya2VyICh0b255cEBtcGNlLm1xLmVkdS5hdSkKWCMg IE1hY3F1YXJpZSBVbml2ZXJzaXR5LCBTeWRuZXkgQXVzdHJhbGlhIDIxMDkg ClgjClhkaWZmIC1ydU4gc3JjLm9yaWcvaW5jbHVkZS9mdGVleHQuaCBzcmMv aW5jbHVkZS9mdGVleHQuaApYLS0tIHNyYy5vcmlnL2luY2x1ZGUvZnRlZXh0 LmgJVHVlIEp1bCAyNyAxNDo1MToxOCAxOTkzClgrKysgc3JjL2luY2x1ZGUv ZnRlZXh0LmgJU3VuIE1heSAxOCAxMzoyNTo1MiAyMDAzClhAQCAtMjA4LDYg KzIwOCwxMCBAQApYIApYIGV4dGVybiB2b2lkIGNvbV9mb3VyaWVyKCk7Clgg ClgrLyogc3BlYy5jICovClgrClgrZXh0ZXJuIHZvaWQgY29tX3NwZWMoKTsK WCsKWCAvKiBnaW50ZXJmYWNlLmMgKi8KWCAKWCBleHRlcm4gYm9vbCBnaV9p bml0KCk7ClhkaWZmIC1ydU4gc3JjLm9yaWcvbGliL2Z0ZS9tYWtlZGVmcyBz cmMvbGliL2Z0ZS9tYWtlZGVmcwpYLS0tIHNyYy5vcmlnL2xpYi9mdGUvbWFr ZWRlZnMJTW9uIE1hciAyMiAyMDo1NjoxMCAxOTkzClgrKysgc3JjL2xpYi9m dGUvbWFrZWRlZnMJU3VuIE1heSAxOCAxMzoyNTo0NCAyMDAzClhAQCAtMTEs NyArMTEsOCBAQApYIAkJICBwYXJzZS5jIHBsb3Q1LmMgcGxvdGN1cnYuYyBw b2ludHMuYyBwb3N0Y29tcy5jIHBvc3RzYy5jIFwKWCAJCSAgcmF3ZmlsZS5j IHJlc291cmNlLmMgcnVuY29tcy5jIHNoeXUuYyBzaWduYWwuYyBzcGNtZHRh Yi5jIFwKWCAJCSAgc3BpY2VpZi5jIHN1YmNrdC5jIHR5cGVzLmMgdmVjdG9y cy5jIHdoZXJlLmMgeDEwLmMgeDExLmMgXApYLQkJICBnZW5zLmMgbmV3Y29t cy5jIGRpbWVucy5jIHhncmFwaC5jIHJ1bmNvbXMyLmMgYnJlYWtwMi5jClgr CQkgIGdlbnMuYyBuZXdjb21zLmMgZGltZW5zLmMgeGdyYXBoLmMgcnVuY29t czIuYyBicmVha3AyLmMgXApYKyAgICAgICAgICAgICAgICAgIHNwZWMuYwpY IApYIENPQkpTCQk9IGFncmFmLm8gYXJnLm8gYXNwaWNlLm8gYnJlYWtwLm8g Y2lyY3VpdHMubyBjbGlwLm8gY21hdGgxLm8gXApYIAkJICBjbWF0aDIubyBj bWF0aDMubyBjbWF0aDQubyBjb21wb3NlLm8gY3BpdGYubyBkZWJ1Z2NvbS5v IFwKWEBAIC0yMiw3ICsyMyw4IEBAClggCQkgIHBhcnNlLm8gcGxvdDUubyBw bG90Y3Vydi5vIHBvaW50cy5vIHBvc3Rjb21zLm8gcG9zdHNjLm8gXApYIAkJ ICByYXdmaWxlLm8gcmVzb3VyY2UubyBydW5jb21zLm8gc2h5dS5vIHNpZ25h bC5vIHNwY21kdGFiLm8gXApYIAkJICBzcGljZWlmLm8gc3ViY2t0Lm8gdHlw ZXMubyB2ZWN0b3JzLm8gd2hlcmUubyB4MTAubyB4MTEubyBcClgtCQkgIGdl bnMubyBuZXdjb21zLm8gZGltZW5zLm8geGdyYXBoLm8gcnVuY29tczIubyBi cmVha3AyLm8KWCsJCSAgZ2Vucy5vIG5ld2NvbXMubyBkaW1lbnMubyB4Z3Jh cGgubyBydW5jb21zMi5vIGJyZWFrcDIubyBcClgrICAgICAgICAgICAgICAg ICAgc3BlYy5vClggClggTElCUkFSWQkJPSBmdGUKWCBMSUJfVEFSR0VUCT0g JChPQkpMSUJfRElSKS8kKExJQlJBUlkpLmEKWEBAIC05MiwzICs5NCw0IEBA ClggeGdyYXBoLm86IHhncmFwaC5jClggcnVuY29tczIubzogcnVuY29tczIu YwpYIGJyZWFrcDIubzogYnJlYWtwMi5jClgrc3BlYy5vOiBzcGVjLmMKWGRp ZmYgLXJ1TiBzcmMub3JpZy9saWIvZnRlL21zYzUxLmJhdCBzcmMvbGliL2Z0 ZS9tc2M1MS5iYXQKWC0tLSBzcmMub3JpZy9saWIvZnRlL21zYzUxLmJhdAlG cmkgSnVsIDMwIDA0OjI2OjQ0IDE5OTMKWCsrKyBzcmMvbGliL2Z0ZS9tc2M1 MS5iYXQJU3VuIE1heSAxOCAxMzoyNTo0NCAyMDAzClhAQCAtNjEsNCArNjEs NSBAQApYIGNsIC9JLi5cLi5caW5jbHVkZSAvYyB4Z3JhcGguYyA+PiAuLlwu Llxtc2Mub3V0ClggY2wgL0kuLlwuLlxpbmNsdWRlIC9jIHJ1bmNvbXMyLmMg Pj4gLi5cLi5cbXNjLm91dApYIGNsIC9JLi5cLi5caW5jbHVkZSAvYyBicmVh a3AyLmMgPj4gLi5cLi5cbXNjLm91dApYK2NsIC9JLi5cLi5caW5jbHVkZSAv YyBzcGVjLmMgPj4gLi5cLi5cbXNjLm91dApYIGxpYiAuLlxmdGUubGliIEBy ZXNwb25zZS5saWIgPj4gLi5cLi5cbXNjLm91dApYZGlmZiAtcnVOIHNyYy5v cmlnL2xpYi9mdGUvcmVzcG9uc2UubGliIHNyYy9saWIvZnRlL3Jlc3BvbnNl LmxpYgpYLS0tIHNyYy5vcmlnL2xpYi9mdGUvcmVzcG9uc2UubGliCUZyaSBK dWwgMzAgMDQ6MjY6NDUgMTk5MwpYKysrIHNyYy9saWIvZnRlL3Jlc3BvbnNl LmxpYglTdW4gTWF5IDE4IDEzOjI1OjQ0IDIwMDMKWEBAIC01OSw0ICs1OSw1 IEBAClggK2RpbWVucy5vYmomClggK3hncmFwaC5vYmomClggK3J1bmNvbXMy Lm9iaiYKWCsrc3BlYy5vYmomClggK2JyZWFrcDIub2JqOwpYZGlmZiAtcnVO IHNyYy5vcmlnL2xpYi9mdGUvc3BjbWR0YWIuYyBzcmMvbGliL2Z0ZS9zcGNt ZHRhYi5jClgtLS0gc3JjLm9yaWcvbGliL2Z0ZS9zcGNtZHRhYi5jCVRodSBK dWwgMjkgMjA6NDk6MzMgMTk5MwpYKysrIHNyYy9saWIvZnRlL3NwY21kdGFi LmMJU3VuIE1heSAxOCAxMzoyNTo0NCAyMDAzClhAQCAtMTYyLDYgKzE2Miwx MCBAQApYICAgICAgIHsgMCwgMDQwMDAwLCAwNDAwMDAsIDA0MDAwMCB9LCBF X0RFRkhNQVNLLCAxLCBMT1RTLApYICAgICAgIChpbnQgKCopKCkpIE5VTEws ClggICAgICAgImZ1bmRfZnJlcSB2ZWN0b3IgLi4uIDogRG8gYSBmb3VyaWVy IGFuYWx5c2lzIG9mIHNvbWUgZGF0YS4iIH0gLApYKyAgICB7ICJzcGVjIiwg Y29tX3NwZWMsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwKWCsgICAgICB7IDAsIDAs IDAsIDAgfSwgRV9ERUZITUFTSywgNCwgTE9UUywKWCsgICAgICAoaW50ICgq KSgpKSBOVUxMLApYKyAgICAgICJzdGFydF9mcmVxIHN0b3BfZnJlcSBzdGVw X2ZyZXEgdmVjdG9yIC4uLiA6IENyZWF0ZSBhIGZyZXF1ZW5jeSBkb21haW4g cGxvdC4iIH0gLApYICAgICB7ICJzaG93IiwgY29tX3Nob3csIGZhbHNlLCB0 cnVlLCBmYWxzZSwKWCAgICAgICB7IDA0MCwgMDQwLCAwNDAsIDA0MCB9LCBF X0RFRkhNQVNLLCAwLCBMT1RTLApYICAgICAgIChpbnQgKCopKCkpIE5VTEws ClhkaWZmIC1ydU4gc3JjLm9yaWcvbGliL2Z0ZS9zcGVjLmMgc3JjL2xpYi9m dGUvc3BlYy5jClgtLS0gc3JjLm9yaWcvbGliL2Z0ZS9zcGVjLmMJV2VkIERl YyAzMSAxOTowMDowMCAxOTY5ClgrKysgc3JjL2xpYi9mdGUvc3BlYy5jCVN1 biBNYXkgMTggMTM6MjU6NDQgMjAwMwpYQEAgLTAsMCArMSwyODYgQEAKWCsv KioqKioqKioqKgpYK0NvcHlyaWdodCAxOTk0IE1hY3F1YXJpZSBVbml2ZXJz aXR5LCBTeWRuZXkgQXVzdHJhbGlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K WCtBdXRob3I6ICAgMTk5NCBBbnRob255IEUuIFBhcmtlciwgRGVwYXJ0bWVu dCBvZiBFbGVjdHJvbmljcywgTWFjcXVhcmllIFVuaS4KWCsqKioqKioqKioq LwpYKwpYKy8qClgrICogQ29kZSB0byBkbyBmb3VyaWVyIHRyYW5zZm9ybXMg b24gZGF0YS4KWCsgKi8KWCsKWCsjaW5jbHVkZSAic3BpY2UuaCIKWCsjaW5j bHVkZSAiZnRlZGVmcy5oIgpYKyNpbmNsdWRlICJmdGVkYXRhLmgiClgrI2lu Y2x1ZGUgInV0aWwuaCIKWCsjaW5jbHVkZSAic3VmZml4LmgiClgrClgrdm9p ZApYK2NvbV9zcGVjKHdsKQpYKyAgICB3b3JkbGlzdCAqd2w7ClgrewpYKyAg ICBjb21wbGV4ICoqZmR2ZWM7ClgrICAgIGRvdWJsZSAgKip0ZHZlYzsKWCsg ICAgZG91YmxlICAqZnJlcSwgKndpbiwgKnRpbWUsICpkYzsKWCsgICAgZG91 YmxlICBzdGFydGYsIHN0b3BmLCBzdGVwZiwgc3BhbjsKWCsgICAgaW50ICAg ICBmcHRzLCBpLCBqLCBrLCB0bGVuLCBuZ29vZDsKWCsgICAgYm9vbCAgICB0 cmFjZTsKWCsgICAgY2hhciAgICAqczsKWCsgICAgc3RydWN0IGR2ZWMgICpm LCAqdmxpc3QsICpsdiwgKnZlYzsKWCsgICAgc3RydWN0IHBub2RlICpuYW1l cywgKmZpcnN0X25hbWU7ClgrClgrICAgIGlmICghcGxvdF9jdXIgfHwgIXBs b3RfY3VyLT5wbF9zY2FsZSkgewpYKyAgICAgICAgZnByaW50ZihjcF9lcnIs ICJFcnJvcjogbm8gdmVjdG9ycyBsb2FkZWQuXG4iKTsKWCsgICAgICAgIHJl dHVybjsKWCsgICAgfQpYKyAgICBpZiAoIWlzcmVhbChwbG90X2N1ci0+cGxf c2NhbGUpIHx8IApYKyAgICAgICAgKChwbG90X2N1ci0+cGxfc2NhbGUpLT52 X3R5cGUgIT0gU1ZfVElNRSkpIHsKWCsgICAgICAgIGZwcmludGYoY3BfZXJy LCAiRXJyb3I6IHNwZWMgbmVlZHMgcmVhbCB0aW1lIHNjYWxlXG4iKTsKWCsg ICAgICAgIHJldHVybjsKWCsgICAgfQpYKyAgICBzID0gd2wtPndsX3dvcmQ7 ClgrICAgIHRsZW4gPSAocGxvdF9jdXItPnBsX3NjYWxlKS0+dl9sZW5ndGg7 ClgrICAgIGlmICghKGZyZXEgPSBmdF9udW1wYXJzZSgmcywgZmFsc2UpKSB8 fCAoKmZyZXEgPCAwLjApKSB7ClgrICAgICAgICBmcHJpbnRmKGNwX2Vyciwg IkVycm9yOiBiYWQgc3RhcnQgZnJlcSAlc1xuIiwgd2wtPndsX3dvcmQpOwpY KyAgICAgICAgcmV0dXJuOwpYKyAgICB9ClgrICAgIHN0YXJ0ZiA9ICpmcmVx OwpYKyAgICB3bCA9IHdsLT53bF9uZXh0OwpYKyAgICBzID0gd2wtPndsX3dv cmQ7ClgrICAgIGlmICghKGZyZXEgPSBmdF9udW1wYXJzZSgmcywgZmFsc2Up KSB8fCAoKmZyZXEgPD0gc3RhcnRmKSkgewpYKyAgICAgICAgZnByaW50Zihj cF9lcnIsICJFcnJvcjogYmFkIHN0b3AgZnJlcSAlc1xuIiwgd2wtPndsX3dv cmQpOwpYKyAgICAgICAgcmV0dXJuOwpYKyAgICB9ClgrICAgIHN0b3BmID0g KmZyZXE7ClgrICAgIHdsID0gd2wtPndsX25leHQ7ClgrICAgIHMgPSB3bC0+ d2xfd29yZDsKWCsgICAgaWYgKCEoZnJlcSA9IGZ0X251bXBhcnNlKCZzLCBm YWxzZSkpIHx8ICEoKmZyZXEgPD0gKHN0b3BmLXN0YXJ0ZikpKSB7ClgrICAg ICAgICBmcHJpbnRmKGNwX2VyciwgIkVycm9yOiBiYWQgc3RlcCBmcmVxICVz XG4iLCB3bC0+d2xfd29yZCk7ClgrICAgICAgICByZXR1cm47ClgrICAgIH0K WCsgICAgc3RlcGYgPSAqZnJlcTsKWCsgICAgd2wgPSB3bC0+d2xfbmV4dDsK WCsgICAgdGltZSA9IChwbG90X2N1ci0+cGxfc2NhbGUpLT52X3JlYWxkYXRh OwpYKyAgICBzcGFuID0gdGltZVt0bGVuLTFdIC0gdGltZVswXTsKWCsgICAg aWYgKHN0b3BmID4gMC41KnRsZW4vc3BhbikgewpYKyAgICAgICAgZnByaW50 ZihjcF9lcnIsClgrCSAgIkVycm9yOiBueXF1aXN0IGxpbWl0IGV4Y2VlZGVk LCB0cnkgc3RvcCBmcmVxIGxlc3MgdGhhbiAlZSBIelxuIiwKWCsJICAgICAg dGxlbi8yL3NwYW4pOwpYKyAgICAgICAgcmV0dXJuOwpYKyAgICB9ClgrICAg IHNwYW4gPSAoKGludCkoc3BhbipzdGVwZioxLjAwMDAwMDAwMDAwMSkpL3N0 ZXBmOwpYKyAgICBpZiAoc3BhbiA+IDApIHsKWCsgICAgICAgIHN0YXJ0ZiA9 IChpbnQpKHN0YXJ0Zi9zdGVwZioxLjAwMDAwMDAwMDAwMSkgKiBzdGVwZjsK WCsgICAgICAgIGZwdHMgPSAoc3RvcGYgLSBzdGFydGYpL3N0ZXBmICsgMTsK WCsgICAgICAgIGlmIChzdG9wZiA+IHN0YXJ0ZiArIChmcHRzLTEpKnN0ZXBm KSBmcHRzKys7ClgrICAgIH0gZWxzZSB7ClgrICAgICAgICBmcHJpbnRmKGNw X2VyciwiRXJyb3I6IHRpbWUgc3BhbiBsaW1pdHMgc3RlcCBmcmVxIHRvICUx LjFlIEh6XG4iLApYKyAgICAgICAgICAgMS8odGltZVt0bGVuLTFdIC0gdGlt ZVswXSkpOwpYKyAgICAgICAgcmV0dXJuOwpYKyAgICB9ClgrICAgIHdpbiA9 IChkb3VibGUgKikgdG1hbGxvYyh0bGVuICogc2l6ZW9mIChkb3VibGUpKTsK WCsgICAgewpYKyAgICAgICBjaGFyICAgd2luZG93W0JTSVpFX1NQXTsKWCsg ICAgICAgZG91YmxlIG1heHQgPSB0aW1lW3RsZW4tMV07ClgrICAgICAgIGlm ICghY3BfZ2V0dmFyKCJzcGVjd2luZG93IiwgVlRfU1RSSU5HLCB3aW5kb3cp KSAKWCsgICAgICAgICAgIHN0cmNweSh3aW5kb3csImhhbm5pbmciKTsKWCsg ICAgICAgaWYgKGVxKHdpbmRvdywgIm5vbmUiKSkKWCsgICAgICAgICAgZm9y KGk9MDsgaTx0bGVuOyBpKyspIHsKWCsgICAgICAgICAgICAgd2luW2ldID0g MTsKWCsgICAgICAgICAgfQpYKyAgICAgICBlbHNlIGlmIChlcSh3aW5kb3cs ICJyZWN0YW5ndWxhciIpKQpYKyAgICAgICAgICAgZm9yKGk9MDsgaTx0bGVu OyBpKyspIHsKWCsgICAgICAgICAgICAgaWYgKG1heHQtdGltZVtpXSA+IHNw YW4pIHsKWCsgICAgICAgICAgICAgICAgd2luW2ldID0gMDsKWCsgICAgICAg ICAgICAgfSBlbHNlIHsKWCsgICAgICAgICAgICAgICAgd2luW2ldID0gMTsK WCsgICAgICAgICAgICAgfQpYKyAgICAgICAgICB9ClgrICAgICAgIGVsc2Ug aWYgKGVxKHdpbmRvdywgImhhbm5pbmciKSB8fCBlcSh3aW5kb3csICJjb3Np bmUiKSkKWCsgICAgICAgICAgZm9yKGk9MDsgaTx0bGVuOyBpKyspIHsKWCsg ICAgICAgICAgICAgaWYgKG1heHQtdGltZVtpXSA+IHNwYW4pIHsKWCsgICAg ICAgICAgICAgICAgd2luW2ldID0gMDsKWCsgICAgICAgICAgICAgfSBlbHNl IHsKWCsgICAgICAgICAgICAgICAgd2luW2ldID0gMSAtIGNvcygyKk1fUEkq KHRpbWVbaV0tbWF4dCkvc3Bhbik7ClgrICAgICAgICAgICAgIH0KWCsgICAg ICAgICAgfQpYKyAgICAgICBlbHNlIGlmIChlcSh3aW5kb3csICJoYW1taW5n IikpClgrICAgICAgICAgIGZvcihpPTA7IGk8dGxlbjsgaSsrKSB7ClgrICAg ICAgICAgICAgIGlmIChtYXh0LXRpbWVbaV0gPiBzcGFuKSB7ClgrICAgICAg ICAgICAgICAgIHdpbltpXSA9IDA7ClgrICAgICAgICAgICAgIH0gZWxzZSB7 ClgrICAgICAgICAgICAgICAgIHdpbltpXSA9IDEgLSAwLjkyLzEuMDgqY29z KDIqTV9QSSoodGltZVtpXS1tYXh0KS9zcGFuKTsKWCsgICAgICAgICAgICAg fQpYKyAgICAgICAgICB9ClgrICAgICAgIGVsc2UgaWYgKGVxKHdpbmRvdywg InRyaWFuZ2xlIikgfHwgZXEod2luZG93LCAiYmFydGxldCIpKQpYKyAgICAg ICAgICBmb3IoaT0wOyBpPHRsZW47IGkrKykgewpYKyAgICAgICAgICAgICBp ZiAobWF4dC10aW1lW2ldID4gc3BhbikgewpYKyAgICAgICAgICAgICAgICB3 aW5baV0gPSAwOwpYKyAgICAgICAgICAgICB9IGVsc2UgewpYKyAgICAgICAg ICAgICAgICB3aW5baV0gPSAyIC0gZmFicygyKzQqKHRpbWVbaV0tbWF4dCkv c3Bhbik7ClgrICAgICAgICAgICAgIH0KWCsgICAgICAgICAgfQpYKyAgICAg ICBlbHNlIGlmIChlcSh3aW5kb3csICJibGFja21hbiIpKSB7ClgrICAgICAg ICAgIGludCBvcmRlcjsKWCsgICAgICAgICAgaWYgKCFjcF9nZXR2YXIoInNw ZWN3aW5kb3dvcmRlciIsIFZUX05VTSwgJm9yZGVyKSkgb3JkZXIgPSAyOwpY KyAgICAgICAgICBpZiAob3JkZXIgPCAyKSBvcmRlciA9IDI7ICAvKiBvbmx5 IG9yZGVyIDIgc3VwcG9ydGVkIGhlcmUgKi8KWCsgICAgICAgICAgZm9yKGk9 MDsgaTx0bGVuOyBpKyspIHsKWCsgICAgICAgICAgICAgaWYgKG1heHQtdGlt ZVtpXSA+IHNwYW4pIHsKWCsgICAgICAgICAgICAgICAgd2luW2ldID0gMDsK WCsgICAgICAgICAgICAgfSBlbHNlIHsKWCsgICAgICAgICAgICAgICAgd2lu W2ldICA9IDE7ClgrICAgICAgICAgICAgICAgIHdpbltpXSAtPSAwLjUwLzAu NDIqY29zKDIqTV9QSSoodGltZVtpXS1tYXh0KS9zcGFuKTsKWCsgICAgICAg ICAgICAgICAgd2luW2ldICs9IDAuMDgvMC40Mipjb3MoNCpNX1BJKih0aW1l W2ldLW1heHQpL3NwYW4pOwpYKyAgICAgICAgICAgICB9ClgrICAgICAgICAg IH0KWCsgICAgICAgfSBlbHNlIGlmIChlcSh3aW5kb3csICJnYXVzc2lhbiIp KSB7ClgrICAgICAgICAgIGludCBvcmRlcjsKWCsgICAgICAgICAgZG91Ymxl IHNjYWxlOwpYKyAgICAgICAgICBleHRlcm4gZG91YmxlIGVyZmMoKTsKWCsg ICAgICAgICAgaWYgKCFjcF9nZXR2YXIoInNwZWN3aW5kb3dvcmRlciIsIFZU X05VTSwgJm9yZGVyKSkgb3JkZXIgPSAyOwpYKyAgICAgICAgICBpZiAob3Jk ZXIgPCAyKSBvcmRlciA9IDI7ClgrICAgICAgICAgIHNjYWxlID0gcG93KDIq TV9QSS9vcmRlciwwLjUpKigwLjUtZXJmYyhwb3cob3JkZXIsMC41KSkpOwpY KyAgICAgICAgICBmb3IoaT0wOyBpPHRsZW47IGkrKykgewpYKyAgICAgICAg ICAgICBpZiAobWF4dC10aW1lW2ldID4gc3BhbikgewpYKyAgICAgICAgICAg ICAgICB3aW5baV0gPSAwOwpYKyAgICAgICAgICAgICB9IGVsc2UgewpYKyAg ICAgICAgICAgICAgICB3aW5baV0gPSBleHAoLTAuNSpvcmRlciooMS0yKiht YXh0LXRpbWVbaV0pL3NwYW4pClgrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKigxLTIqKG1heHQtdGltZVtpXSkvc3BhbikpL3Nj YWxlOwpYKyAgICAgICAgICAgICB9ClgrICAgICAgICAgIH0KWCsJICAgfSBl bHNlIHsKWCsgICAgICAgICAgZnByaW50ZihjcF9lcnIsICJXYXJuaW5nOiB1 bmtub3duIHdpbmRvdyB0eXBlICVzXG4iLCB3aW5kb3cpOwpYKyAgICAgICAg ICB0ZnJlZSh3aW4pOwpYKyAgICAgICAgICByZXR1cm47ClgrICAgICAgIH0K WCsgICAgfQpYKyAgICAKWCsgICAgbmFtZXMgPSBmdF9nZXRwbmFtZXMod2ws IHRydWUpOwpYKyAgICBmaXJzdF9uYW1lID0gbmFtZXM7ClgrICAgIHZsaXN0 ID0gTlVMTDsKWCsgICAgbmdvb2QgPSAwOwpYKyAgICB3aGlsZSAobmFtZXMp IHsKWCsgICAgICAgIHZlYyA9IGZ0X2V2YWx1YXRlKG5hbWVzKTsKWCsgICAg ICAgIG5hbWVzID0gbmFtZXMtPnBuX25leHQ7ClgrICAgICAgICB3aGlsZSAo dmVjKSB7ClgrICAgICAgICAgICAgaWYgKHZlYy0+dl9sZW5ndGggIT0gdGxl bikgewpYKyAgICAgICAgICAgICAgICBmcHJpbnRmKGNwX2VyciwgIkVycm9y OiBsZW5ndGhzIGRvbid0IG1hdGNoOiAlZCwgJWRcbiIsClgrICAgICAgICAg ICAgICAgICAgICAgICAgdmVjLT52X2xlbmd0aCwgdGxlbik7ClgrICAgICAg ICAgICAgICAgIHZlYyA9IHZlYy0+dl9saW5rMjsKWCsgICAgICAgICAgICAg ICAgY29udGludWU7ClgrICAgICAgICAgICAgfQpYKyAgICAgICAgICAgIGlm ICghaXNyZWFsKHZlYykpIHsKWCsgICAgICAgICAgICAgICAgZnByaW50Zihj cF9lcnIsICJFcnJvcjogJXMgaXNuJ3QgcmVhbCFcbiIsIApYKyAgICAgICAg ICAgICAgICAgICAgICAgIHZlYy0+dl9uYW1lKTsKWCsgICAgICAgICAgICAg ICAgdmVjID0gdmVjLT52X2xpbmsyOwpYKyAgICAgICAgICAgICAgICBjb250 aW51ZTsKWCsgICAgICAgICAgICB9ClgrICAgICAgICAgICAgaWYgKHZlYy0+ dl90eXBlID09IFNWX1RJTUUpIHsKWCsgICAgICAgICAgICAgICAgdmVjID0g dmVjLT52X2xpbmsyOwpYKyAgICAgICAgICAgICAgICBjb250aW51ZTsKWCsg ICAgICAgICAgICB9ClgrCSAgICAgICAgaWYgKCF2bGlzdCkKWCsJICAgICAg ICAgICB2bGlzdCA9IHZlYzsKWCsJICAgICAgICBlbHNlClgrCSAgICAgICAg ICAgbHYtPnZfbGluazIgPSB2ZWM7ClgrICAgICAgICAgICAgbHYgPSB2ZWM7 ClgrICAgICAgICAgICAgdmVjID0gdmVjLT52X2xpbmsyOwpYKyAgICAgICAg ICAgIG5nb29kKys7ClgrICAgICAgICB9ClgrICAgIH0KWCsgICAgZnJlZV9w bm9kZShmaXJzdF9uYW1lKTsKWCsgICAgaWYgKCFuZ29vZCkgewpYKyAgICAg ICB0ZnJlZSh3aW4pOwpYKyAgICAgICByZXR1cm47ClgrICAgIH0KWCsgClgr ICAgIHBsb3RfY3VyID0gcGxvdF9hbGxvYygic3BlY3RydW0iKTsKWCsgICAg cGxvdF9jdXItPnBsX25leHQgPSBwbG90X2xpc3Q7ClgrICAgIHBsb3RfbGlz dCA9IHBsb3RfY3VyOwpYKyAgICBwbG90X2N1ci0+cGxfdGl0bGUgPSBjb3B5 KChwbG90X2N1ci0+cGxfbmV4dCktPnBsX3RpdGxlKTsKWCsgICAgcGxvdF9j dXItPnBsX25hbWUgPSBjb3B5KCJTcGVjdHJ1bSIpOwpYKyAgICBwbG90X2N1 ci0+cGxfZGF0ZSA9IGNvcHkoZGF0ZXN0cmluZyggKSk7ClgrClgrICAgIGZy ZXEgPSAoZG91YmxlICopIHRtYWxsb2MoZnB0cyAqIHNpemVvZihkb3VibGUp KTsKWCsgICAgZiA9IGFsbG9jKHN0cnVjdCBkdmVjKTsKWCsgICAgWkVSTyhm LCBzdHJ1Y3QgZHZlYyk7ClgrICAgIGYtPnZfbmFtZSA9IGNvcHkoImZyZXF1 ZW5jeSIpOwpYKyAgICBmLT52X3R5cGUgPSBTVl9GUkVRVUVOQ1k7ClgrICAg IGYtPnZfZmxhZ3MgPSAoVkZfUkVBTCB8IFZGX1BFUk1BTkVOVCB8IFZGX1BS SU5UKTsKWCsgICAgZi0+dl9sZW5ndGggPSBmcHRzOwpYKyAgICBmLT52X3Jl YWxkYXRhID0gZnJlcTsKWCsgICAgdmVjX25ldyhmKTsKWCsKWCsgICAgdGR2 ZWMgPSAoZG91YmxlICAqKikgdG1hbGxvYyhuZ29vZCAqIHNpemVvZihkb3Vi bGUgICopKTsKWCsgICAgZmR2ZWMgPSAoY29tcGxleCAqKikgdG1hbGxvYyhu Z29vZCAqIHNpemVvZihjb21wbGV4ICopKTsKWCsgICAgZm9yIChpID0gMCwg dmVjID0gdmxpc3Q7IGk8bmdvb2Q7IGkrKykgewpYKyAgICAgICB0ZHZlY1tp XSA9IHZlYy0+dl9yZWFsZGF0YTsKWCsgICAgICAgZmR2ZWNbaV0gPSAoY29t cGxleCAqKSB0bWFsbG9jKGZwdHMgKiBzaXplb2YoY29tcGxleCkpOwpYKyAg ICAgICBmID0gYWxsb2Moc3RydWN0IGR2ZWMpOwpYKyAgICAgICBaRVJPKGYs IHN0cnVjdCBkdmVjKTsKWCsgICAgICAgZi0+dl9uYW1lID0gdmVjX2Jhc2Vu YW1lKHZlYyk7ClgrICAgICAgIGYtPnZfdHlwZSA9IHZlYy0+dl90eXBlOwpY KyAgICAgICBmLT52X2ZsYWdzID0gKFZGX0NPTVBMRVggfCBWRl9QRVJNQU5F TlQpOwpYKyAgICAgICBmLT52X2xlbmd0aCA9IGZwdHM7ClgrICAgICAgIGYt PnZfY29tcGRhdGEgPSBmZHZlY1tpXTsKWCsgICAgICAgdmVjX25ldyhmKTsK WCsgICAgICAgdmVjID0gdmVjLT52X2xpbmsyOwpYKyAgICB9ClgrClgrICAg IGRjID0gKGRvdWJsZSAgKikgdG1hbGxvYyhuZ29vZCAqIHNpemVvZihkb3Vi bGUpKTsKWCsgICAgZm9yIChpID0gMDsgaTxuZ29vZDsgaSsrKSB7ClgrICAg ICAgIGRjW2ldID0gMDsKWCsgICAgfQpYKyAgICBmb3IgKGsgPSAxOyBrPHRs ZW47IGsrKykgewpYKyAgICAgICBkb3VibGUgYW1wID0gd2luW2tdLyh0bGVu LTEpOwpYKyAgICAgICBmb3IgKGkgPSAwOyBpPG5nb29kOyBpKyspIHsKWCsJ ICAgICAgZGNbaV0gKz0gdGR2ZWNbaV1ba10qYW1wOwpYKyAgICAgICB9Clgr ICAgIH0KWCsgICAgY3BfZ2V0dmFyKCJzcGVjdHJhY2UiLCBWVF9CT09MLCAm dHJhY2UpOwpYKyAgICBmb3IgKGogPSAoc3RhcnRmPT0wID8gMSA6IDApOyBq PGZwdHM7IGorKykgewpYKyAgICAgICBmcmVxW2pdID0gc3RhcnRmICsgaipz dGVwZjsKWCsgICAgICAgaWYodHJhY2UpIGZwcmludGYoY3BfZXJyLCAic3Bl YzogJWUgSHo6IFxyIixmcmVxW2pdKTsKWCsgICAgICAgZm9yIChpID0gMDsg aTxuZ29vZDsgaSsrKSB7ClgrCSAgICAgIGZkdmVjW2ldW2pdLmN4X3JlYWwg PSAwOyAKWCsJICAgICAgZmR2ZWNbaV1bal0uY3hfaW1hZyA9IDA7ClgrICAg ICAgIH0KWCsgICAgICAgZm9yIChrID0gMTsgazx0bGVuOyBrKyspIHsKWCsg ICAgICAgICAgZG91YmxlClgrCSAgICAgICBhbXAgPSAyKndpbltrXS8odGxl bi0xKSwKWCsgICAgICAgICAgIHJhZCA9IDIqTV9QSSp0aW1lW2tdKmZyZXFb al0sClgrCSAgICAgICBjb3NhID0gYW1wKmNvcyhyYWQpLApYKwkgICAgICAg c2luYSA9IGFtcCpzaW4ocmFkKTsKWCsgICAgICAgICAgZm9yIChpID0gMDsg aTxuZ29vZDsgaSsrKSB7ClgrICAgICAgICAgICAgIGRvdWJsZSB2YWx1ZSA9 IHRkdmVjW2ldW2tdLWRjW2ldOwpYKwkgICAgICAgICBmZHZlY1tpXVtqXS5j eF9yZWFsICs9IHZhbHVlKmNvc2E7ClgrCSAgICAgICAgIGZkdmVjW2ldW2pd LmN4X2ltYWcgKz0gdmFsdWUqc2luYTsKWCsgICAgICAgICAgfQpYKyAgICAg ICB9ClgrICAgIH0KWCsgICAgaWYgKHN0YXJ0Zj09MCkgewpYKyAgICAgICBm cmVxWzBdID0gMDsKWCsgICAgICAgZm9yIChpID0gMDsgaTxuZ29vZDsgaSsr KSB7ClgrCSAgICAgIGZkdmVjW2ldWzBdLmN4X3JlYWwgPSBkY1tpXTsgClgr CSAgICAgIGZkdmVjW2ldWzBdLmN4X2ltYWcgPSAwOwpYKyAgICAgICB9Clgr ICAgIH0KWCsgICAgaWYodHJhY2UpIGZwcmludGYoY3BfZXJyLCAiICAgICAg ICAgICAgICAgICAgICAgICAgICAgXHIiKTsKWCsgICAgdGZyZWUoZGMpOwpY KyAgICB0ZnJlZSh0ZHZlYyk7ClgrICAgIHRmcmVlKGZkdmVjKTsKWCsKWCsj aWZkZWYgS0VFUFdJTkRPVwpYKyAgICBmID0gYWxsb2Moc3RydWN0IGR2ZWMp OwpYKyAgICBaRVJPKGYsIHN0cnVjdCBkdmVjKTsKWCsgICAgZi0+dl9uYW1l ID0gY29weSgid2luIik7ClgrICAgIGYtPnZfdHlwZSA9IFNWX05PVFlQRTsK WCsgICAgZi0+dl9mbGFncyA9IChWRl9SRUFMIHwgVkZfUEVSTUFORU5UKTsK WCsgICAgZi0+dl9sZW5ndGggPSB0bGVuOwpYKyAgICBmLT52X3JlYWxkYXRh ID0gd2luOwpYKyAgICB2ZWNfbmV3KGYpOwpYKyNlbHNlClgrICAgIHRmcmVl KHdpbik7ClgrI2VuZGlmClgrCQpYKyAgICByZXR1cm47ClgrfQpYKwpFTkQt b2Ytc3BpY2UvZmlsZXMvcGF0Y2gtbGV2ZWwyCmVjaG8geCAtIHNwaWNlL2Zp bGVzL3BhdGNoLXV0aWxfc2tlbGV0b25fbWFrZV9kZWZfYmQKc2VkICdzL15Y Ly8nID5zcGljZS9maWxlcy9wYXRjaC11dGlsX3NrZWxldG9uX21ha2VfZGVm X2JkIDw8ICdFTkQtb2Ytc3BpY2UvZmlsZXMvcGF0Y2gtdXRpbF9za2VsZXRv bl9tYWtlX2RlZl9iZCcKWC0tLSB1dGlsL3NrZWxldG9uL21ha2VfZGVmLmJk Lm9yaWcJVGh1IEp1bCAyOSAxNjozNToxOCAxOTkzClgrKysgdXRpbC9za2Vs ZXRvbi9tYWtlX2RlZi5iZAlUaHUgSnVsIDE3IDAwOjQ3OjUxIDIwMDMKWEBA IC04LDcgKzgsNyBAQApYIFBBVEhfU0VQCT0gLwpYIFBTCQk9IC8KWCBSRVZJ U0lPTgk9ClgtVkVSU0lPTgkJPSAzZjQKWCtWRVJTSU9OCQk9IDNmNQpYIFZF UlNJT05fUkVWSVNJT049ICQoVkVSU0lPTikkKFJFVklTSU9OKQpYIE5PVElD RQkJPQpYIFRPUAkJPSAvcHJvamVjdHMvc3BpY2UzL3NwaWNlJChWRVJTSU9O KQpFTkQtb2Ytc3BpY2UvZmlsZXMvcGF0Y2gtdXRpbF9za2VsZXRvbl9tYWtl X2RlZl9iZAplY2hvIHggLSBzcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0 ZV9taXNjY29tc19jCnNlZCAncy9eWC8vJyA+c3BpY2UvZmlsZXMvcGF0Y2gt c3JjX2xpYl9mdGVfbWlzY2NvbXNfYyA8PCAnRU5ELW9mLXNwaWNlL2ZpbGVz L3BhdGNoLXNyY19saWJfZnRlX21pc2Njb21zX2MnClgkT3BlbkJTRDogcGF0 Y2gtc3JjX2xpYl9mdGVfbWlzY2NvbXNfYyx2IDEuMSAyMDAzLzA0LzE0IDEw OjI4OjAzIGF2c20gRXhwICQKWC0tLSBzcmMvbGliL2Z0ZS9taXNjY29tcy5j Lm9yaWcJTW9uIEFwciAxNCAxMToxOToyNCAyMDAzClgrKysgc3JjL2xpYi9m dGUvbWlzY2NvbXMuYwlNb24gQXByIDE0IDExOjIxOjAwIDIwMDMKWEBAIC0y ODYsNyArMjg2LDcgQEAgY29tX3F1aXQod2wpClggICAgICAgICAgICAgZnBy aW50ZihjcF9vdXQsIApYICAgICAgICAgICAgICAgICAiXG5BcmUgeW91IHN1 cmUgeW91IHdhbnQgdG8gcXVpdCAoeWVzKT8gIik7ClggICAgICAgICAgICAg KHZvaWQpIGZmbHVzaChjcF9vdXQpOwpYLSAgICAgICAgICAgIGlmICghZmdl dHMoYnVmLCBCU0laRV9TUCwgc3RkaW4pKSB7ClgrICAgICAgICAgICAgaWYg KCFmZ2V0cyhidWYsIHNpemVvZiBidWYsIHN0ZGluKSkgewpYICAgICAgICAg ICAgICAgICBjbGVhcmVycihzdGRpbik7ClggICAgICAgICAgICAgICAgICpi dWYgPSAneSc7ClggICAgICAgICAgICAgfQpFTkQtb2Ytc3BpY2UvZmlsZXMv cGF0Y2gtc3JjX2xpYl9mdGVfbWlzY2NvbXNfYwplY2hvIHggLSBzcGljZS9m aWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9ncmlkX2MKc2VkICdzL15YLy8nID5z cGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9ncmlkX2MgPDwgJ0VORC1v Zi1zcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9ncmlkX2MnClgtLS0g c3JjL2xpYi9mdGUvZ3JpZC5jLm9yaWcJU3VuIEFwciAyNSAxNjo1MzoxMSAx OTkzClgrKysgc3JjL2xpYi9mdGUvZ3JpZC5jCVRodSBKdWwgMTcgMDA6NDc6 NTEgMjAwMwpYQEAgLTEyMzAsNyArMTIzMCwxMCBAQApYIApYICAgICAvKiBT ZXRMaW5lc3R5bGUoMSk7IHRha2VzIHRvbyBsb25nICovClggICAgIC8qIFBy b2JsZW1zIHdpdGggU3VucyBvbiB2ZXJ5IGxhcmdlIHJhZGlpICYmIGxpbmVz dHlsZSAqLwpYLSAgICBTZXRMaW5lc3R5bGUoMCk7ClgrICAgIC8qIFNldExp bmVzdHlsZSgwKTsgKi8KWCsgICAgLyogbGluZXN0eWxlIDEgbG9va3MgYmV0 dGVyClgrICAgICAgIEd1ZW50aGVyIFJvZWhyaWNoIDIyLUphbi05OSAqLwpY KyAgICBTZXRMaW5lc3R5bGUoMSk7ClggClggICAgIC8qIE5vdyBwbG90IGFs bCB0aGUgYXJjIHNldHMuICBHbyBhcyBoaWdoIGFzIDUgdGltZXMgdGhlIHJh ZGl1cyB0aGF0ClggICAgICAqIHdpbGwgZml0IG9uIHRoZSBzY3JlZW4uICBU aGUgYmFzZSBtYWduaXR1ZGUgaXMgb25lIG1vcmUgdGhhbiAKWEBAIC0xNDA5 LDcgKzE0MTIsMTAgQEAKWCAgICAgLyogTGV0J3MgYmUgbGF6eSBhbmQganVz dCBkcmF3IGV2ZXJ5dGhpbmcgLS0gd2Ugd29uJ3QgZ2V0IGNhbGxlZCB0b28K WCAgICAgICogbXVjaCBhbmQgdGhlIGNpcmNsZXMgZ2V0IGNsaXBwZWQgYW55 d2F5Li4uClggICAgICAqLwpYLSAgICBTZXRDb2xvcigxOCk7ClgrICAgIC8q IFNldENvbG9yKDE4KTsgKi8KWCsgICAgLyogZHJhdyBldmVyeXRoaW5nIGlu IGJsYWNrClgrICAgICAgIEd1ZW50aGVyIFJvZWhyaWNoIDIyLUphbi05OSAq LwpYKyAgICBTZXRDb2xvcigxKTsKWCAKWCAgICAgY2xpcGFyYygoZG91Ymxl KSAoY2VudHggKyB4b2Zmc2V0ICsgcmFkb2ZmIC0gcmFkKSwKWCAJICAgIChk b3VibGUpIChjZW50eSArIHlvZmZzZXQpLCByYWQsIDIqYW5nbGUsClhAQCAt MTQyNCw3ICsxNDMwLDEwIEBAClggICAgICAgICAgICAgTV9QSSAtIDIgKiBh bmdsZSwgY2VudHgsIGNlbnR5LCBtYXhyYWQsIDApOwpYIApYICAgICAvKiBE cmF3IHRoZSB1cHBlciBhbmQgbG93ZXIgY2lyY2xlcy4gICovClgtICAgIFNl dENvbG9yKDE5KTsKWCsgICAgLyogU2V0Q29sb3IoMTkpOyAqLwpYKyAgICAv KiBkcmF3IGV2ZXJ5dGhpbmcgaW4gYmxhY2sKWCsgICAgICAgR3VlbnRoZXIg Um9laHJpY2ggMjItSmFuLTk5ICovClgrICAgIFNldENvbG9yKDEpOwpYICAg ICBhY2xpcCA9IGNsaXBhcmMoKGRvdWJsZSkgKGNlbnR4ICsgeG9mZnNldCAr IHJhZG9mZiksClggCSAgICAoZG91YmxlKSAoY2VudHkgKyB5b2Zmc2V0ICsg aXJhZCksIGlyYWQsClggCSAgICAoZG91YmxlKSAoTV9QSSAqIDEuNSArIDIg KiBpYW5nbGUpLApYQEAgLTE0NDEsNyArMTQ1MCwxMCBAQApYIAlhZGRkZWds YWJlbChncmFwaCwgbmRlZywgeGxhYiwgeWxhYiwKWCAJICAgIGdyX3hjZW50 ZXIsIGdyX3ljZW50ZXIsIGdyX3hjZW50ZXIsIGdyX3ljZW50ZXIpOwpYICAq LwpYLQlTZXRDb2xvcigxOSk7ClgrCS8qIFNldENvbG9yKDE5KTsgKi8KWCsJ LyogZHJhdyBldmVyeXRoaW5nIGluIGJsYWNrClgrCSAgIEd1ZW50aGVyIFJv ZWhyaWNoIDIyLUphbi05OSAqLwpYKwlTZXRDb2xvcigxKTsKWCAJfQpYICAg ICB9ClggICAgIGFjbGlwID0gY2xpcGFyYygoZG91YmxlKSAoY2VudHggKyB4 b2Zmc2V0ICsgcmFkb2ZmKSwKWEBAIC0xNDU1LDcgKzE0NjcsMTAgQEAKWCAJ U2V0Q29sb3IoMSk7ClggCWFkZGRlZ2xhYmVsKGdyYXBoLCBuZGVnLCB4bGFi LCB5bGFiLApYIAkgICAgZ3JfeGNlbnRlciwgZ3JfeWNlbnRlciwgZ3JfeGNl bnRlciwgZ3JfeWNlbnRlcik7ClgtCVNldENvbG9yKDE5KTsKWCsJLyogU2V0 Q29sb3IoMTkpOyAqLwpYKwkvKiBkcmF3IGV2ZXJ5dGhpbmcgaW4gYmxhY2sK WCsJICAgR3VlbnRoZXIgUm9laHJpY2ggMjItSmFuLTk5ICovClgrCVNldENv bG9yKDEpOwpYICAgICB9ClggICAgIApYICAgICAvKiBOb3cgdG9zcyB0aGUg bGFiZWxzIG9uLi4uICovCkVORC1vZi1zcGljZS9maWxlcy9wYXRjaC1zcmNf bGliX2Z0ZV9ncmlkX2MKZWNobyB4IC0gc3BpY2UvZmlsZXMvcGF0Y2gtc3Jj X2luY2x1ZGVfbWlzY19oCnNlZCAncy9eWC8vJyA+c3BpY2UvZmlsZXMvcGF0 Y2gtc3JjX2luY2x1ZGVfbWlzY19oIDw8ICdFTkQtb2Ytc3BpY2UvZmlsZXMv cGF0Y2gtc3JjX2luY2x1ZGVfbWlzY19oJwpYKioqIHNyYy9pbmNsdWRlL21p c2MuaC5vcmlnCVRodSBEZWMgIDEgMDk6MTc6MDIgMTk5NApYLS0tIHNyYy9p bmNsdWRlL21pc2MuaAlTdW4gTWFyIDMxIDEyOjMyOjU4IDE5OTYKWCoqKioq KioqKioqKioqKgpYKioqIDg2LDkyICoqKioKWC0tLSA4Niw5NCAtLS0tClgg IGV4dGVybiBjaGFyICpyZWFsbG9jKCk7ClggIGV4dGVybiBjaGFyICpnZXRl bnYoKTsKWCAgZXh0ZXJuIGludCBlcnJubzsKWCsgI2lmbmRlZiBfX0ZyZWVC U0RfXwpYICBleHRlcm4gY2hhciAqc3lzX2Vycmxpc3RbXTsKWCsgI2VuZGlm ClggIGV4dGVybiBjaGFyICpnZXRlbnYoKTsKWCAgZXh0ZXJuIGNoYXIgKmdl dHdkKCk7ClggIGV4dGVybiBpbnQgcmFuZCgpOwpYKioqKioqKioqKioqKioq ClgqKiogMTExLDEyMiAqKioqClgtLS0gMTExLDEyNCAtLS0tClggICMgICAg ZW5kaWYgLyogY2xlYXJlcnIgKi8KWCAgIyAgZW5kaWYgLyogSEFTX0NMRUFS RVJSICovClggIApYKyAjaWZuZGVmIF9fRnJlZUJTRF9fClggICMgIGlmbmRl ZiBiemVybwpYICBleHRlcm4gaW50IGJ6ZXJvKCk7ClggICMgIGVuZGlmClgg ICMgIGlmbmRlZiBiY29weQpYICBleHRlcm4gdm9pZCBiY29weSgpOwpYICAj ICBlbmRpZgpYKyAjZW5kaWYgLyogX19GcmVlQlNEX18gKi8KWCAgClggICMg IGlmbmRlZiBpbmRleApYICAjICAgIGlmZGVmIEhBU19JTkRFWApFTkQtb2Yt c3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2luY2x1ZGVfbWlzY19oCmVjaG8geCAt IHNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX2RldmljZV9jCnNlZCAn cy9eWC8vJyA+c3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9mdGVfZGV2aWNl X2MgPDwgJ0VORC1vZi1zcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9k ZXZpY2VfYycKWC0tLSBzcmMvbGliL2Z0ZS9kZXZpY2UuYy5vcmlnCVRodSBK dWwgMjkgMjE6MDk6NTkgMTk5MwpYKysrIHNyYy9saWIvZnRlL2RldmljZS5j CVRodSBKdWwgMTcgMDA6NDc6NTAgMjAwMwpYQEAgLTY2MSw3ICs2NjEsOSBA QApYICAgICB9ClggClggICAgIGR2ID0gZnRfZXZhbHVhdGUobjItPnBuX3Jp Z2h0KTsKWC0gICAgZnJlZV9wbm9kZShuYW1lcyk7ClgrICAgIC8qIHByZXZl bnQgbmFtZXMgZnJvbSBnZXR0aW5nIGZyZWVkIHR3aWNlClgrICAgICAgIEd1 ZW50aGVyIFJvZWhyaWNoIDIyLUphbi05OSAqLwpYKyAgICAvKiBmcmVlX3Bu b2RlKG5hbWVzKTsgKi8KWCAgICAgaWYgKCFkdikKWCAJcmV0dXJuOwpYICAg ICBpZiAoZHYtPnZfbGVuZ3RoIDwgMSkgewpFTkQtb2Ytc3BpY2UvZmlsZXMv cGF0Y2gtc3JjX2xpYl9mdGVfZGV2aWNlX2MKZWNobyB4IC0gc3BpY2UvZmls ZXMvcGF0Y2gtc3JjX2Jpbl9zY29udmVydF9jCnNlZCAncy9eWC8vJyA+c3Bp Y2UvZmlsZXMvcGF0Y2gtc3JjX2Jpbl9zY29udmVydF9jIDw8ICdFTkQtb2Yt c3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2Jpbl9zY29udmVydF9jJwpYLS0tIHNy Yy9iaW4vc2NvbnZlcnQuYy5vcmlnCU1vbiBTZXAgMTQgMjE6MzA6NDEgMTk5 MgpYKysrIHNyYy9iaW4vc2NvbnZlcnQuYwlUaHUgSnVsIDE3IDAwOjQ3OjUw IDIwMDMKWEBAIC04MCwxOSArODAsMTkgQEAKWCAKWCAgICAgICAgIGNhc2Ug MTogcHJpbnRmKCJJbnB1dCBmaWxlOiAiKTsKWCAgICAgICAgICAgICAodm9p ZCkgZmZsdXNoKHN0ZG91dCk7ClgtICAgICAgICAgICAgKHZvaWQpIGdldHMo YnVmKTsKWCsgICAgICAgICAgICAodm9pZCkgZmdldHMoYnVmLEJTSVpFX1NQ LHN0ZGluKTsKWCAgICAgICAgICAgICBzZiA9IGNvcHkoYnVmKTsKWCAgICAg ICAgICAgICBwcmludGYoIklucHV0IHR5cGU6ICIpOwpYICAgICAgICAgICAg ICh2b2lkKSBmZmx1c2goc3Rkb3V0KTsKWC0gICAgICAgICAgICAodm9pZCkg Z2V0cyhidWYpOwpYKyAgICAgICAgICAgICh2b2lkKSBmZ2V0cyhidWYsQlNJ WkVfU1Asc3RkaW4pOwpYICAgICAgICAgICAgIGYgPSBidWZbMF07ClggICAg ICAgICAgICAgcHJpbnRmKCJPdXRwdXQgZmlsZTogIik7ClggICAgICAgICAg ICAgKHZvaWQpIGZmbHVzaChzdGRvdXQpOwpYLSAgICAgICAgICAgICh2b2lk KSBnZXRzKGJ1Zik7ClgrICAgICAgICAgICAgKHZvaWQpIGZnZXRzKGJ1ZixC U0laRV9TUCxzdGRpbik7ClggICAgICAgICAgICAgYWYgPSBjb3B5KGJ1Zik7 ClggICAgICAgICAgICAgcHJpbnRmKCJPdXRwdXQgdHlwZTogIik7ClggICAg ICAgICAgICAgKHZvaWQpIGZmbHVzaChzdGRvdXQpOwpYLSAgICAgICAgICAg ICh2b2lkKSBnZXRzKGJ1Zik7ClgrICAgICAgICAgICAgKHZvaWQpIGZnZXRz KGJ1ZixCU0laRV9TUCxzdGRpbik7ClggICAgICAgICAgICAgdCA9IGJ1Zlsw XTsKWCAgICAgICAgICAgICBicmVhazsKWCAgICAgICAgIGRlZmF1bHQ6CkVO RC1vZi1zcGljZS9maWxlcy9wYXRjaC1zcmNfYmluX3Njb252ZXJ0X2MKZWNo byB4IC0gc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9mdGVfaW5wX2MKc2Vk ICdzL15YLy8nID5zcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9pbnBf YyA8PCAnRU5ELW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX2lu cF9jJwpYLS0tIHNyYy9saWIvZnRlL2lucC5jLm9yaWcJVGh1IEFwciAyOSAx ODowNjoyOCAxOTkzClgrKysgc3JjL2xpYi9mdGUvaW5wLmMJVGh1IEp1bCAx NyAwMDo0Nzo1MCAyMDAzClhAQCAtNjY2LDcgKzY2Niw3IEBAClggClggICAg IGZwcmludGYoY3Bfb3V0LCAicnVuIGNpcmN1aXQ/ICIpOwpYICAgICBmZmx1 c2goY3Bfb3V0KTsKWC0gICAgKHZvaWQpIGdldHMoYnVmKTsKWCsgICAgKHZv aWQpIGZnZXRzKGJ1ZixCU0laRV9TUCxzdGRpbik7ClggICAgIGlmIChidWZb MF0gIT0gJ24nKSB7ClggICAgICAgZnByaW50ZihjcF9vdXQsICJydW5uaW5n IGNpcmN1aXRcbiIpOwpYICAgICAgIGNvbV9ydW4oTlVMTCk7CkVORC1vZi1z cGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9pbnBfYwplY2hvIHggLSBz cGljZS9maWxlcy9wYXRjaC11dGlsX2J1aWxkCnNlZCAncy9eWC8vJyA+c3Bp Y2UvZmlsZXMvcGF0Y2gtdXRpbF9idWlsZCA8PCAnRU5ELW9mLXNwaWNlL2Zp bGVzL3BhdGNoLXV0aWxfYnVpbGQnClgtLS0gdXRpbC9idWlsZC5vcmlnCVRo dSBKdWwgMjkgMDM6NDY6MzkgMTk5MwpYKysrIHV0aWwvYnVpbGQJVGh1IEp1 bCAxNyAwMDo0Nzo1MCAyMDAzClhAQCAtOTYsNyArOTYsNyBAQApYIApYIFRN UF9MRUFERVI9IiR7VE1QX0RJUn0vYnVpbGRsJCQiClggVE1QX1RSQUlMRVI9 IiR7VE1QX0RJUn0vYnVpbGR0JCQiClgtdHJhcCAncm0gLWYgJHtUTVBfTEVB REVSfSAke1RNUF9UUkFJTEVSfTsgZXhpdCAxJyAxIDIgMyA0IDYgNyA4IDkg MTAgMTIgMTMgMTQgMTUKWCt0cmFwICdybSAtZiAke1RNUF9MRUFERVJ9ICR7 VE1QX1RSQUlMRVJ9OyBleGl0IDEnIDEgMiAzIDQgNiA3IDggMTAgMTIgMTMg MTQgMTUKWCBlY2hvID4gIiR7VE1QX1RSQUlMRVJ9IgpYIEJBRD1mYWxzZQpY IERFQlVHPQpFTkQtb2Ytc3BpY2UvZmlsZXMvcGF0Y2gtdXRpbF9idWlsZApl Y2hvIHggLSBzcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9yZXNvdXJj ZV9jCnNlZCAncy9eWC8vJyA+c3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9m dGVfcmVzb3VyY2VfYyA8PCAnRU5ELW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNy Y19saWJfZnRlX3Jlc291cmNlX2MnClgtLS0gc3JjL2xpYi9mdGUvcmVzb3Vy Y2UuYy5vcmlnCVdlZCBBcHIgMjggMTc6Mzk6MDMgMTk5MwpYKysrIHNyYy9s aWIvZnRlL3Jlc291cmNlLmMJVGh1IEp1bCAxNyAwMDo0Nzo1MCAyMDAzClhA QCAtMzY5LDcgKzM2OSw5IEBAClggCWxvbmcgeDsKWCAJU0lHTkFMX1RZUEUJ KCpvcmlnX3NpZ25hbCkoICk7ClggClgrI2lmbmRlZiBfX0ZyZWVCU0RfXwpY IAlpZiAoZ2V0ZW52KCJTUElDRV9OT19EQVRBU0VHX0NIRUNLIikpClgrI2Vu ZGlmClggCQlyZXR1cm4gMDsKWCAKWCAJbG93ID0gMDsKRU5ELW9mLXNwaWNl L2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX3Jlc291cmNlX2MKZWNobyB4IC0g c3BpY2UvZmlsZXMvcGF0Y2gtcHNtb2RlbApzZWQgJ3MvXlgvLycgPnNwaWNl L2ZpbGVzL3BhdGNoLXBzbW9kZWwgPDwgJ0VORC1vZi1zcGljZS9maWxlcy9w YXRjaC1wc21vZGVsJwpYIyAgc3BpY2UzZjQvM2Y1IHBhdGNoIHRvIGFkZCBs ZXZlbCAyIEpGRVQgbW9kZWwKWCMgIEp1bmUgMjIsIDE5OTQKWCMgIEFudGhv bnkgUGFya2VyICh0b255cEBtcGNlLm1xLmVkdS5hdSkKWCMgIE1hY3F1YXJp ZSBVbml2ZXJzaXR5LCBTeWRuZXkgQXVzdHJhbGlhIDIxMDkgClgjClhkaWZm IC1ydU4gLi4vd29yay5vcmlnL2NvbmYvZGVmYXVsdHMgLi9jb25mL2RlZmF1 bHRzClgtLS0gLi4vd29yay5vcmlnL2NvbmYvZGVmYXVsdHMJVGh1IEp1bCAy OSAxNjozMzo1NiAxOTkzClgrKysgLi9jb25mL2RlZmF1bHRzCVN1biBNYXkg MTggMTM6NDY6NDcgMjAwMwpYQEAgLTI0Niw2ICsyNDYsNyBAQApYICMJCWlu ZDoJaW5kdWN0b3IKWCAjCQlpc3JjOgljdXJyZW50IHNvdXJjZQpYICMJCWpm ZXQ6CUp1bmN0aW9uIEZFVApYKyMJCWpmZXQyOglQUyBNb2RlbCBKdW5jdGlv biBGRVQvTUVTRkVUClggIwkJbWVzOglNRVMgRkVUIChHYUFzKQpYICMJCW1v czE6CU1PUywgc2ltcGxlc3QgYW5hbHl0aWMgbW9kZWwKWCAjCQltb3MyOglN T1MsIHNpbXBsZXN0ClhAQCAtMjYwLDcgKzI2MSw3IEBAClggIwkJdnNyYzoJ dm9sdGFnZSBzb3VyY2UKWCAKWCBERVZJQ0VTCQk9IGFzcmMgYmp0IGJzaW0x IGJzaW0yIGNhcCBjY2NzIGNjdnMgY3N3IGRpbyBpbmQgaXNyYyBcClgtCQkg IGpmZXQgbHRyYSBtZXMgbW9zMSBtb3MyIG1vczMgbW9zNiByZXMgc3cgdHJh IHVyYyBcClgrCQkgIGpmZXQgamZldDIgbHRyYSBtZXMgbW9zMSBtb3MyIG1v czMgbW9zNiByZXMgc3cgdHJhIHVyYyBcClggCQkgIHZjY3MgdmN2cyB2c3Jj ClggClggIwlBTkFMWVNFUyBsaXN0IHRoZSBhbmFseXNpcyB0eXBlcyB0aGF0 IHlvdSB3YW50IHRvIGhhdmUgYXZhaWxhYmxlIGluClhkaWZmIC1ydU4gLi4v d29yay5vcmlnL3NyYy9iaW4vY29uZmlnLmMgLi9zcmMvYmluL2NvbmZpZy5j ClgtLS0gLi4vd29yay5vcmlnL3NyYy9iaW4vY29uZmlnLmMJVGh1IEp1bCAy OSAxNjozNjo0OSAxOTkzClgrKysgLi9zcmMvYmluL2NvbmZpZy5jCVN1biBN YXkgMTggMTM6NDY6NDcgMjAwMwpYQEAgLTcxLDYgKzcxLDcgQEAKWCAjaW5j bHVkZSAibW9zMml0Zi5oIgpYICNpbmNsdWRlICJtb3MzaXRmLmgiClggI2lu Y2x1ZGUgImpmZXRpdGYuaCIKWCsjaW5jbHVkZSAiamZldDJpdGYuaCIKWCAj aW5jbHVkZSAibWVzaXRmLmgiClggI2luY2x1ZGUgImx0cmFpdGYuaCIKWCAj aW5jbHVkZSAidHJhaXRmLmgiClhAQCAtMTAzLDYgKzEwNCw3IEBAClggI2lu Y2x1ZGUgIm1vczIvbW9zMml0Zi5oIgpYICNpbmNsdWRlICJtb3MzL21vczNp dGYuaCIKWCAjaW5jbHVkZSAiamZldC9qZmV0aXRmLmgiClgrI2luY2x1ZGUg ImpmZXQyL2pmZXQyaXRmLmgiClggI2luY2x1ZGUgIm1lcy9tZXNpdGYuaCIK WCAjaW5jbHVkZSAibHRyYS9sdHJhaXRmLmgiClggI2luY2x1ZGUgInRyYS90 cmFpdGYuaCIKWEBAIC0yMDcsNiArMjA5LDkgQEAKWCAjZW5kaWYKWCAjaWZk ZWYgREVWX2pmZXQKWCAgICAgICAgICZKRkVUaW5mbywKWCsjZW5kaWYKWCsj aWZkZWYgREVWX2pmZXQyClgrICAgICAgICAmSkZFVDJpbmZvLApYICNlbmRp ZgpYICNpZmRlZiBERVZfbHRyYQpYICAgICAgICAgJkxUUkFpbmZvLApYZGlm ZiAtcnVOIC4uL3dvcmsub3JpZy9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0Mi5j IC4vc3JjL2xpYi9kZXYvamZldDIvamZldDIuYwpYLS0tIC4uL3dvcmsub3Jp Zy9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0Mi5jCVdlZCBEZWMgMzEgMTk6MDA6 MDAgMTk2OQpYKysrIC4vc3JjL2xpYi9kZXYvamZldDIvamZldDIuYwlUdWUg SnVuIDIxIDE0OjM0OjM0IDE5OTQKWEBAIC0wLDAgKzEsNzYgQEAKWCsvKioq KioqKioqKgpYK0Jhc2VkIG9uIGpmZXQuYyAKWCtDb3B5cmlnaHQgMTk5MCBS ZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwg cmlnaHRzIHJlc2VydmVkLgpYK0F1dGhvcjogMTk4NSBUaG9tYXMgTC4gUXVh cmxlcwpYKwpYK01vZGlmaWVkIHRvIGFkZCBQUyBtb2RlbCBhbmQgbmV3IHBh cmFtZXRlciBkZWZpbml0aW9ucyAoIEFudGhvbnkgRS4gUGFya2VyICkKWCsg ICBDb3B5cmlnaHQgMTk5NCAgTWFjcXVhcmllIFVuaXZlcnNpdHksIFN5ZG5l eSBBdXN0cmFsaWEuClgrICAgMTAgRmViIDE5OTQ6ICBQYXJhbWV0ZXIgZGVm aW5pdGlvbnMgY2FsbGVkIGZyb20gamZldHBhcm0uaApYKyAgICAgICAgICAg ICAgICAgRXh0cmEgc3RhdGUgdmVjdG9ycyBhZGRlZCB0byBKRkVUMnBUYWJs ZQpYKyoqKioqKioqKiovClgrClgrI2luY2x1ZGUgInNwaWNlLmgiClgrI2lu Y2x1ZGUgPHN0ZGlvLmg+ClgrI2luY2x1ZGUgImlmc2ltLmgiClgrI2luY2x1 ZGUgImRldmRlZnMuaCIKWCsjaW5jbHVkZSAiamZldDJkZWZzLmgiClgrI2lu Y2x1ZGUgInN1ZmZpeC5oIgpYKwpYK0lGcGFybSBKRkVUMnBUYWJsZVtdID0g eyAvKiBkZXZpY2UgcGFyYW1ldGVycyAqLyAKWCsgSU9QVSgib2ZmIiwgICAg ICAgICBKRkVUMl9PRkYsICAgICAgICAgICAgSUZfRkxBRywgICAiRGV2aWNl IGluaXRpYWxseSBvZmYiKSwKWCsgSU9QQVUoImljIiwgICAgICAgICBKRkVU Ml9JQywgICAgICAgICAgICAgSUZfUkVBTFZFQywiSW5pdGlhbCBWRFMsVkdT IHZlY3RvciIpLApYKyBJT1BVKCJhcmVhIiwgICAgICAgIEpGRVQyX0FSRUEs ICAgICAgICAgICBJRl9SRUFMLCAgICJBcmVhIGZhY3RvciIpLApYKyBJT1BB VSgiaWMtdmRzIiwgICAgIEpGRVQyX0lDX1ZEUywgICAgICAgICBJRl9SRUFM LCAgICJJbml0aWFsIEQtUyB2b2x0YWdlIiksClgrIElPUEFVKCJpYy12Z3Mi LCAgICAgSkZFVDJfSUNfVkdTLCAgICAgICAgIElGX1JFQUwsICAgIkluaXRp YWwgRy1TIHZvbHJhZ2UiKSwKWCsgSU9QVSgidGVtcCIsICAgICAgICBKRkVU Ml9URU1QLCAgICAgICAgICAgSUZfUkVBTCwgICAiSW5zdGFuY2UgdGVtcGVy YXR1cmUiKSwKWCsgT1BVKCJkcmFpbi1ub2RlIiwgICBKRkVUMl9EUkFJTk5P REUsICAgICAgSUZfSU5URUdFUiwiTnVtYmVyIG9mIGRyYWluIG5vZGUiKSwK WCsgT1BVKCJnYXRlLW5vZGUiLCAgICBKRkVUMl9HQVRFTk9ERSwgICAgICAg SUZfSU5URUdFUiwiTnVtYmVyIG9mIGdhdGUgbm9kZSIpLApYKyBPUFUoInNv dXJjZS1ub2RlIiwgIEpGRVQyX1NPVVJDRU5PREUsICAgICBJRl9JTlRFR0VS LCJOdW1iZXIgb2Ygc291cmNlIG5vZGUiKSwKWCsgT1BVKCJkcmFpbi1wcmlt ZS1ub2RlIiwgSkZFVDJfRFJBSU5QUklNRU5PREUsIElGX0lOVEVHRVIsIklu dGVybmFsIGRyYWluIG5vZGUiKSwKWCsgT1BVKCJzb3VyY2UtcHJpbWUtbm9k ZSIsSkZFVDJfU09VUkNFUFJJTUVOT0RFLElGX0lOVEVHRVIsIkludGVybmFs IHNvdXJjZSBub2RlIiksClgrIE9QKCJ2Z3MiLCAgIEpGRVQyX1ZHUywgIElG X1JFQUwsICJWb2x0YWdlIEctUyIpLApYKyBPUCgidmdkIiwgICBKRkVUMl9W R0QsICBJRl9SRUFMLCAiVm9sdGFnZSBHLUQiKSwKWCsgT1AoImlnIiwgICAg SkZFVDJfQ0csICAgSUZfUkVBTCwgIkN1cnJlbnQgYXQgZ2F0ZSBub2RlIiks ClgrIE9QKCJpZCIsICAgIEpGRVQyX0NELCAgIElGX1JFQUwsICJDdXJyZW50 IGF0IGRyYWluIG5vZGUiKSwKWCsgT1AoImlzIiwgICAgSkZFVDJfQ1MsICAg SUZfUkVBTCwgIlNvdXJjZSBjdXJyZW50IiksClgrIE9QKCJpZ2QiLCAgIEpG RVQyX0NHRCwgIElGX1JFQUwsICJDdXJyZW50IEctRCIpLApYKyBPUCgiZ20i LCAgICBKRkVUMl9HTSwgICBJRl9SRUFMLCAiVHJhbnNjb25kdWN0YW5jZSIp LApYKyBPUCgiZ2RzIiwgICBKRkVUMl9HRFMsICBJRl9SRUFMLCAiQ29uZHVj dGFuY2UgRC1TIiksClgrIE9QKCJnZ3MiLCAgIEpGRVQyX0dHUywgIElGX1JF QUwsICJDb25kdWN0YW5jZSBHLVMiKSwKWCsgT1AoImdnZCIsICAgSkZFVDJf R0dELCAgSUZfUkVBTCwgIkNvbmR1Y3RhbmNlIEctRCIpLApYKyBPUFUoInFn cyIsICBKRkVUMl9RR1MsICBJRl9SRUFMLCAiQ2hhcmdlIHN0b3JhZ2UgRy1T IGp1bmN0aW9uIiksClgrIE9QVSgicWdkIiwgIEpGRVQyX1FHRCwgIElGX1JF QUwsICJDaGFyZ2Ugc3RvcmFnZSBHLUQganVuY3Rpb24iKSwKWCsgT1BVKCJj cWdzIiwgSkZFVDJfQ1FHUywgSUZfUkVBTCwgIkNhcGFjaXRhbmNlIGR1ZSB0 byBjaGFyZ2Ugc3RvcmFnZSBHLVMganVuY3Rpb24iKSwKWCsgT1BVKCJjcWdk IiwgSkZFVDJfQ1FHRCwgSUZfUkVBTCwgIkNhcGFjaXRhbmNlIGR1ZSB0byBj aGFyZ2Ugc3RvcmFnZSBHLUQganVuY3Rpb24iKSwKWCsgT1BVKCJwIiwgICAg SkZFVDJfUE9XRVIsSUZfUkVBTCwgIlBvd2VyIGRpc3NpcGF0ZWQgYnkgdGhl IEpGRVQyIiksClgrIE9QVSgidnRyYXAiLEpGRVQyX1ZUUkFQLElGX1JFQUws ICJRdWllc2NlbnQgZHJhaW4gZmVlZGJhY2sgcG90ZW50aWFsIiksClgrIE9Q VSgidnBhdmUiLEpGRVQyX1BBVkUsIElGX1JFQUwsICJRdWllc2NlbnQgcG93 ZXIgZGlzc2lwYXRpb24iKSwKWCt9OwpYKwpYK0lGcGFybSBKRkVUMm1QVGFi bGVbXSA9IHsgLyogbW9kZWwgcGFyYW1ldGVycyAqLwpYKyBPUCgidHlwZSIs ICAgICBKRkVUMl9NT0RfVFlQRSwgICAgSUZfU1RSSU5HLCAiTi10eXBlIG9y IFAtdHlwZSBKRkVUMiBtb2RlbCIpLApYKyBJT1AoIm5qZiIsICAgICBKRkVU Ml9NT0RfTkpGLCAgICAgSUZfRkxBRywiTiB0eXBlIEpGRVQyIG1vZGVsIiks ClgrIElPUCgicGpmIiwgICAgIEpGRVQyX01PRF9QSkYsICAgICBJRl9GTEFH LCJQIHR5cGUgSkZFVDIgbW9kZWwiKSwKWCsgSU9QUigidnQwIiwgICAgSkZF VDJfTU9EX1ZUTywgICAgIElGX1JFQUwsIlRocmVzaG9sZCB2b2x0YWdlIiks ClgrIElPUFIoInZiaSIsICAgIEpGRVQyX01PRF9QQiwgICAgICBJRl9SRUFM LCJHYXRlIGp1bmN0aW9uIHBvdGVudGlhbCIpLApYKyNkZWZpbmUgIFBBUkFN KGNvZGUsaWQsZmxhZyxyZWYsZGVmYXVsdCxkZXNjcmlwKSBJT1AoY29kZSxp ZCxJRl9SRUFMLGRlc2NyaXApLApYKyNkZWZpbmUgUEFSQU1BKGNvZGUsaWQs ZmxhZyxyZWYsZGVmYXVsdCxkZXNjcmlwKSBJT1BBKGNvZGUsaWQsSUZfUkVB TCxkZXNjcmlwKSwKWCsjaW5jbHVkZSAiamZldDJwYXJtLmgiClgrClgrIE9Q VSgiZ2QiLCBKRkVUMl9NT0RfRFJBSU5DT05EVUNULCBJRl9SRUFMLCJEcmFp biBjb25kdWN0YW5jZSIpLApYKyBPUFUoImdzIiwgSkZFVDJfTU9EX1NPVVJD RUNPTkRVQ1QsSUZfUkVBTCwiU291cmNlIGNvbmR1Y3RhbmNlIiksClgrIElP UFUoInRub20iLCAgIEpGRVQyX01PRF9UTk9NLCAgICBJRl9SRUFMLCJwYXJh bWV0ZXIgbWVhc3VyZW1lbnQgdGVtcGVyYXR1cmUiKSwKWCt9OwpYKwpYKwpY K2NoYXIgKkpGRVQybmFtZXNbXSA9IHsKWCsgICAgIkRyYWluIiwKWCsgICAg IkdhdGUiLApYKyAgICAiU291cmNlIgpYK307ClgrClgraW50CUpGRVQyblNp emUgPSBOVU1FTEVNUyhKRkVUMm5hbWVzKTsKWCtpbnQJSkZFVDJwVFNpemUg PSBOVU1FTEVNUyhKRkVUMnBUYWJsZSk7ClgraW50CUpGRVQybVBUU2l6ZSA9 IE5VTUVMRU1TKEpGRVQybVBUYWJsZSk7ClgraW50CUpGRVQyaVNpemUgPSBz aXplb2YoSkZFVDJpbnN0YW5jZSk7ClgraW50CUpGRVQybVNpemUgPSBzaXpl b2YoSkZFVDJtb2RlbCk7ClhkaWZmIC1ydU4gLi4vd29yay5vcmlnL3NyYy9s aWIvZGV2L2pmZXQyL2pmZXQyYWNsZC5jIC4vc3JjL2xpYi9kZXYvamZldDIv amZldDJhY2xkLmMKWC0tLSAuLi93b3JrLm9yaWcvc3JjL2xpYi9kZXYvamZl dDIvamZldDJhY2xkLmMJV2VkIERlYyAzMSAxOTowMDowMCAxOTY5ClgrKysg Li9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0MmFjbGQuYwlUdWUgSnVuIDI4IDA4 OjQ3OjQyIDE5OTQKWEBAIC0wLDAgKzEsOTEgQEAKWCsvKioqKioqKioqKgpY K0Jhc2VkIG9uIGpmZXRhY2xkLmMKWCtDb3B5cmlnaHQgMTk5MCBSZWdlbnRz IG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmlnaHRz IHJlc2VydmVkLgpYK0F1dGhvcjogMTk4NSBUaG9tYXMgTC4gUXVhcmxlcwpY KwpYK01vZGlmaWVkIHRvIGFkZCBQUyBtb2RlbCBhbmQgbmV3IHBhcmFtZXRl ciBkZWZpbml0aW9ucyAoIEFudGhvbnkgRS4gUGFya2VyICkKWCsgICBDb3B5 cmlnaHQgMTk5NCAgTWFjcXVhcmllIFVuaXZlcnNpdHksIFN5ZG5leSBBdXN0 cmFsaWEuClgrICAgMTAgRmViIDE5OTQ6ICBOZXcgY2FsbCB0byBQU2FjbG9h ZCgpIHdpdGggbWF0cml4IGxvYWRpbmcKWCsqKioqKioqKioqLwpYKwpYKyNp bmNsdWRlICJzcGljZS5oIgpYKyNpbmNsdWRlIDxzdGRpby5oPgpYKyNpbmNs dWRlICJ1dGlsLmgiClgrI2luY2x1ZGUgImNrdGRlZnMuaCIKWCsjaW5jbHVk ZSAiamZldDJkZWZzLmgiClgrI2luY2x1ZGUgInNwZXJyb3IuaCIKWCsjaW5j bHVkZSAicHNtb2RlbC5oIgpYKyNpbmNsdWRlICJzdWZmaXguaCIKWCsKWCtp bnQKWCtKRkVUMmFjTG9hZChpbk1vZGVsLGNrdCkKWCsgICAgR0VObW9kZWwg KmluTW9kZWw7ClgrICAgIHJlZ2lzdGVyIENLVGNpcmN1aXQgKmNrdDsKWCt7 ClgrICAgIHJlZ2lzdGVyIEpGRVQybW9kZWwgKm1vZGVsID0gKEpGRVQybW9k ZWwqKWluTW9kZWw7ClgrICAgIHJlZ2lzdGVyIEpGRVQyaW5zdGFuY2UgKmhl cmU7ClgrICAgIGRvdWJsZSBnZHByOwpYKyAgICBkb3VibGUgZ3NwcjsKWCsg ICAgZG91YmxlIGdtOwpYKyAgICBkb3VibGUgZ2RzOwpYKyAgICBkb3VibGUg Z2dzOwpYKyAgICBkb3VibGUgeGdzOwpYKyAgICBkb3VibGUgZ2dkOwpYKyAg ICBkb3VibGUgeGdkOwpYKyAgICBkb3VibGUgeGdtLCB4Z2RzLCB2Z2QsIHZn cywgY2Q7ClgrClgrICAgIGZvciggOyBtb2RlbCAhPSBOVUxMOyBtb2RlbCA9 IG1vZGVsLT5KRkVUMm5leHRNb2RlbCApIHsKWCsgICAgICAgIApYKyAgICAg ICAgZm9yKCBoZXJlID0gbW9kZWwtPkpGRVQyaW5zdGFuY2VzOyBoZXJlICE9 IE5VTEw7IApYKyAgICAgICAgICAgICAgICBoZXJlID0gaGVyZS0+SkZFVDJu ZXh0SW5zdGFuY2UpIHsKWCsKWCsKWCsgICAgICAgICAgICBnZHByPW1vZGVs LT5KRkVUMmRyYWluQ29uZHVjdCAqIGhlcmUtPkpGRVQyYXJlYTsKWCsgICAg ICAgICAgICBnc3ByPW1vZGVsLT5KRkVUMnNvdXJjZUNvbmR1Y3QgKiBoZXJl LT5KRkVUMmFyZWE7ClgrICAgICAgICAgICAgZ209ICooY2t0LT5DS1RzdGF0 ZTAgKyBoZXJlLT5KRkVUMmdtKSA7ClgrICAgICAgICAgICAgZ2RzPSAqKGNr dC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJnZHMpIDsKWCsgICAgICAgICAg ICBnZ3M9ICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMmdncykgOwpY KyAgICAgICAgICAgIHhncz0gKihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpG RVQycWdzKSAqIGNrdC0+Q0tUb21lZ2EgOwpYKyAgICAgICAgICAgIGdnZD0g Kihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQyZ2dkKSA7ClgrICAgICAg ICAgICAgeGdkPSAqKGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJxZ2Qp ICogY2t0LT5DS1RvbWVnYSA7ClgrClgrICAgICAgICAgICAgdmdzID0gKihj a3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQydmdzKTsKWCsgICAgICAgICAg ICB2Z2QgPSAqKGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJ2Z2QpOwpY KyAgICAgICAgICAgIGNkID0gKihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpG RVQyY2QpOwpYKyAgICAgICAgICAgIFBTYWNsb2FkKGNrdCxtb2RlbCwgaGVy ZSwgdmdzLCB2Z2QsIGNkLCBja3QtPkNLVG9tZWdhLApYKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdtLCAmeGdtLCAmZ2RzLCAm eGdkcyk7ClgrICAgICAgICAgICAgeGdkcyArPSAqKGNrdC0+Q0tUc3RhdGUw ICsgaGVyZS0+SkZFVDJxZHMpICogY2t0LT5DS1RvbWVnYSA7ClgrICAgICAg ICAgICAgKihoZXJlLT5KRkVUMmRyYWluUHJpbWVEcmFpblByaW1lUHRyICsx KSAgICs9IHhnZHM7ClgrICAgICAgICAgICAgKihoZXJlLT5KRkVUMnNvdXJj ZVByaW1lU291cmNlUHJpbWVQdHIgKzEpICs9IHhnZHMreGdtOwpYKyAgICAg ICAgICAgICooaGVyZS0+SkZFVDJkcmFpblByaW1lR2F0ZVB0ciArMSkgICAg ICAgICArPSAgICAgIHhnbTsKWCsgICAgICAgICAgICAqKGhlcmUtPkpGRVQy ZHJhaW5QcmltZVNvdXJjZVByaW1lUHRyICsxKSAgLT0geGdkcyt4Z207Clgr ICAgICAgICAgICAgKihoZXJlLT5KRkVUMnNvdXJjZVByaW1lR2F0ZVB0ciAr MSkgICAgICAgIC09ICAgICAgeGdtOwpYKyAgICAgICAgICAgICooaGVyZS0+ SkZFVDJzb3VyY2VQcmltZURyYWluUHJpbWVQdHIgKzEpICAtPSB4Z2RzOwpY KwpYKyAgICAgICAgICAgICooaGVyZS0+SkZFVDJkcmFpbkRyYWluUHRyICkg Kz0gZ2RwcjsKWCsgICAgICAgICAgICAqKGhlcmUtPkpGRVQyZ2F0ZUdhdGVQ dHIgKSArPSBnZ2QrZ2dzOwpYKyAgICAgICAgICAgICooaGVyZS0+SkZFVDJn YXRlR2F0ZVB0ciArMSkgKz0geGdkK3hnczsKWCsgICAgICAgICAgICAqKGhl cmUtPkpGRVQyc291cmNlU291cmNlUHRyICkgKz0gZ3NwcjsKWCsgICAgICAg ICAgICAqKGhlcmUtPkpGRVQyZHJhaW5QcmltZURyYWluUHJpbWVQdHIgKSAr PSBnZHByK2dkcytnZ2Q7ClgrICAgICAgICAgICAgKihoZXJlLT5KRkVUMmRy YWluUHJpbWVEcmFpblByaW1lUHRyICsxKSArPSB4Z2Q7ClgrICAgICAgICAg ICAgKihoZXJlLT5KRkVUMnNvdXJjZVByaW1lU291cmNlUHJpbWVQdHIgKSAr PSBnc3ByK2dkcytnbStnZ3M7ClgrICAgICAgICAgICAgKihoZXJlLT5KRkVU MnNvdXJjZVByaW1lU291cmNlUHJpbWVQdHIgKzEpICs9IHhnczsKWCsgICAg ICAgICAgICAqKGhlcmUtPkpGRVQyZHJhaW5EcmFpblByaW1lUHRyICkgLT0g Z2RwcjsKWCsgICAgICAgICAgICAqKGhlcmUtPkpGRVQyZ2F0ZURyYWluUHJp bWVQdHIgKSAtPSBnZ2Q7ClgrICAgICAgICAgICAgKihoZXJlLT5KRkVUMmdh dGVEcmFpblByaW1lUHRyICsxKSAtPSB4Z2Q7ClgrICAgICAgICAgICAgKiho ZXJlLT5KRkVUMmdhdGVTb3VyY2VQcmltZVB0ciApIC09IGdnczsKWCsgICAg ICAgICAgICAqKGhlcmUtPkpGRVQyZ2F0ZVNvdXJjZVByaW1lUHRyICsxKSAt PSB4Z3M7ClgrICAgICAgICAgICAgKihoZXJlLT5KRkVUMnNvdXJjZVNvdXJj ZVByaW1lUHRyICkgLT0gZ3NwcjsKWCsgICAgICAgICAgICAqKGhlcmUtPkpG RVQyZHJhaW5QcmltZURyYWluUHRyICkgLT0gZ2RwcjsKWCsgICAgICAgICAg ICAqKGhlcmUtPkpGRVQyZHJhaW5QcmltZUdhdGVQdHIgKSArPSAoLWdnZCtn bSk7ClgrICAgICAgICAgICAgKihoZXJlLT5KRkVUMmRyYWluUHJpbWVHYXRl UHRyICsxKSAtPSB4Z2Q7ClgrICAgICAgICAgICAgKihoZXJlLT5KRkVUMmRy YWluUHJpbWVTb3VyY2VQcmltZVB0ciApICs9ICgtZ2RzLWdtKTsKWCsgICAg ICAgICAgICAqKGhlcmUtPkpGRVQyc291cmNlUHJpbWVHYXRlUHRyICkgKz0g KC1nZ3MtZ20pOwpYKyAgICAgICAgICAgICooaGVyZS0+SkZFVDJzb3VyY2VQ cmltZUdhdGVQdHIgKzEpIC09IHhnczsKWCsgICAgICAgICAgICAqKGhlcmUt PkpGRVQyc291cmNlUHJpbWVTb3VyY2VQdHIgKSAtPSBnc3ByOwpYKyAgICAg ICAgICAgICooaGVyZS0+SkZFVDJzb3VyY2VQcmltZURyYWluUHJpbWVQdHIg KSAtPSBnZHM7ClgrClgrICAgICAgICB9ClgrICAgIH0KWCsgICAgcmV0dXJu KE9LKTsKWCt9ClhkaWZmIC1ydU4gLi4vd29yay5vcmlnL3NyYy9saWIvZGV2 L2pmZXQyL2pmZXQyYXNrLmMgLi9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0MmFz ay5jClgtLS0gLi4vd29yay5vcmlnL3NyYy9saWIvZGV2L2pmZXQyL2pmZXQy YXNrLmMJV2VkIERlYyAzMSAxOTowMDowMCAxOTY5ClgrKysgLi9zcmMvbGli L2Rldi9qZmV0Mi9qZmV0MmFzay5jCVR1ZSBKdW4gMjEgMTQ6MzQ6NDEgMTk5 NApYQEAgLTAsMCArMSwxNDIgQEAKWCsvKioqKioqKioqKgpYK0Jhc2VkIG9u IGpmZXRhc2suYwpYK0NvcHlyaWdodCAxOTkwIFJlZ2VudHMgb2YgdGhlIFVu aXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu ClgrQXV0aG9yOiAxOTg3IE1hdGhldyBMZXcgYW5kIFRob21hcyBMLiBRdWFy bGVzClgrClgrTW9kaWZpZWQgdG8gYWRkIFBTIG1vZGVsIGFuZCBuZXcgcGFy YW1ldGVyIGRlZmluaXRpb25zICggQW50aG9ueSBFLiBQYXJrZXIgKQpYKyAg IENvcHlyaWdodCAxOTk0ICBNYWNxdWFyaWUgVW5pdmVyc2l0eSwgU3lkbmV5 IEF1c3RyYWxpYS4KWCsgICAxMCBGZWIgMTk5NDogICBKRkVUMnZ0cmFwIGFu ZCBKRkVUMnBhdmUgYWRkZWQKWCsqKioqKioqKioqLwpYKwpYKyNpbmNsdWRl ICJzcGljZS5oIgpYKyNpbmNsdWRlIDxzdGRpby5oPgpYKyNpbmNsdWRlICJj b25zdC5oIgpYKyNpbmNsdWRlICJpZnNpbS5oIgpYKyNpbmNsdWRlICJja3Rk ZWZzLmgiClgrI2luY2x1ZGUgImRldmRlZnMuaCIKWCsjaW5jbHVkZSAiamZl dDJkZWZzLmgiClgrI2luY2x1ZGUgInNwZXJyb3IuaCIKWCsjaW5jbHVkZSAi dXRpbC5oIgpYKyNpbmNsdWRlICJzdWZmaXguaCIKWCsKWCsKWCsvKkFSR1NV U0VEKi8KWCtpbnQKWCtKRkVUMmFzayhja3QsaW5zdCx3aGljaCx2YWx1ZSxz ZWxlY3QpClgrICAgIENLVGNpcmN1aXQgKmNrdDsKWCsgICAgR0VOaW5zdGFu Y2UgKmluc3Q7ClgrICAgIGludCB3aGljaDsKWCsgICAgSUZ2YWx1ZSAqdmFs dWU7ClgrICAgIElGdmFsdWUgKnNlbGVjdDsKWCt7ClgrICAgIEpGRVQyaW5z dGFuY2UgKmhlcmUgPSAoSkZFVDJpbnN0YW5jZSopaW5zdDsKWCsgICAgc3Rh dGljIGNoYXIgKm1zZyA9ICJDdXJyZW50IGFuZCBwb3dlciBub3QgYXZhaWxh YmxlIGZvciBhYyBhbmFseXNpcyI7ClgrICAgIHN3aXRjaCh3aGljaCkgewpY KyAgICAgICAgY2FzZSBKRkVUMl9URU1QOgpYKyAgICAgICAgICAgIHZhbHVl LT5yVmFsdWUgPSBoZXJlLT5KRkVUMnRlbXAtQ09OU1RDdG9LOwpYKyAgICAg ICAgICAgIHJldHVybihPSyk7ClgrICAgICAgICBjYXNlIEpGRVQyX0FSRUE6 ClgrICAgICAgICAgICAgdmFsdWUtPnJWYWx1ZSA9IGhlcmUtPkpGRVQyYXJl YTsKWCsgICAgICAgICAgICByZXR1cm4oT0spOwpYKyAgICAgICAgY2FzZSBK RkVUMl9JQ19WRFM6ClgrICAgICAgICAgICAgdmFsdWUtPnJWYWx1ZSA9IGhl cmUtPkpGRVQyaWNWRFM7ClgrICAgICAgICAgICAgcmV0dXJuKE9LKTsKWCsg ICAgICAgIGNhc2UgSkZFVDJfSUNfVkdTOgpYKyAgICAgICAgICAgIHZhbHVl LT5yVmFsdWUgPSBoZXJlLT5KRkVUMmljVkdTOwpYKyAgICAgICAgICAgIHJl dHVybihPSyk7ClgrICAgICAgICBjYXNlIEpGRVQyX09GRjoKWCsgICAgICAg ICAgICB2YWx1ZS0+aVZhbHVlID0gaGVyZS0+SkZFVDJvZmY7ClgrICAgICAg ICAgICAgcmV0dXJuKE9LKTsKWCsgICAgICAgIGNhc2UgSkZFVDJfRFJBSU5O T0RFOgpYKyAgICAgICAgICAgIHZhbHVlLT5pVmFsdWUgPSBoZXJlLT5KRkVU MmRyYWluTm9kZTsKWCsgICAgICAgICAgICByZXR1cm4oT0spOwpYKyAgICAg ICAgY2FzZSBKRkVUMl9HQVRFTk9ERToKWCsgICAgICAgICAgICB2YWx1ZS0+ aVZhbHVlID0gaGVyZS0+SkZFVDJnYXRlTm9kZTsKWCsgICAgICAgICAgICBy ZXR1cm4oT0spOwpYKyAgICAgICAgY2FzZSBKRkVUMl9TT1VSQ0VOT0RFOgpY KyAgICAgICAgICAgIHZhbHVlLT5pVmFsdWUgPSBoZXJlLT5KRkVUMnNvdXJj ZU5vZGU7ClgrICAgICAgICAgICAgcmV0dXJuKE9LKTsKWCsgICAgICAgIGNh c2UgSkZFVDJfRFJBSU5QUklNRU5PREU6ClgrICAgICAgICAgICAgdmFsdWUt PmlWYWx1ZSA9IGhlcmUtPkpGRVQyZHJhaW5QcmltZU5vZGU7ClgrICAgICAg ICAgICAgcmV0dXJuKE9LKTsKWCsgICAgICAgIGNhc2UgSkZFVDJfU09VUkNF UFJJTUVOT0RFOgpYKyAgICAgICAgICAgIHZhbHVlLT5pVmFsdWUgPSBoZXJl LT5KRkVUMnNvdXJjZVByaW1lTm9kZTsKWCsgICAgICAgICAgICByZXR1cm4o T0spOwpYKyAgICAgICAgY2FzZSBKRkVUMl9WR1M6ClgrICAgICAgICAgICAg dmFsdWUtPnJWYWx1ZSA9ICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVU MnZncyk7ClgrICAgICAgICAgICAgcmV0dXJuKE9LKTsKWCsgICAgICAgIGNh c2UgSkZFVDJfVkdEOgpYKyAgICAgICAgICAgIHZhbHVlLT5yVmFsdWUgPSAq KGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJ2Z2QpOwpYKyAgICAgICAg ICAgIHJldHVybihPSyk7ClgrICAgICAgICBjYXNlIEpGRVQyX0NHOgpYKyAg ICAgICAgICAgIHZhbHVlLT5yVmFsdWUgPSAqKGNrdC0+Q0tUc3RhdGUwICsg aGVyZS0+SkZFVDJjZyk7ClgrICAgICAgICAgICAgcmV0dXJuKE9LKTsKWCsg ICAgICAgIGNhc2UgSkZFVDJfQ0Q6ClgrICAgICAgICAgICAgdmFsdWUtPnJW YWx1ZSA9ICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMmNkKTsKWCsg ICAgICAgICAgICByZXR1cm4oT0spOwpYKyAgICAgICAgY2FzZSBKRkVUMl9D R0Q6ClgrICAgICAgICAgICAgdmFsdWUtPnJWYWx1ZSA9ICooY2t0LT5DS1Rz dGF0ZTAgKyBoZXJlLT5KRkVUMmNnZCk7ClgrICAgICAgICAgICAgcmV0dXJu KE9LKTsKWCsgICAgICAgIGNhc2UgSkZFVDJfR006ClgrICAgICAgICAgICAg dmFsdWUtPnJWYWx1ZSA9ICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVU MmdtKTsKWCsgICAgICAgICAgICByZXR1cm4oT0spOwpYKyAgICAgICAgY2Fz ZSBKRkVUMl9HRFM6ClgrICAgICAgICAgICAgdmFsdWUtPnJWYWx1ZSA9ICoo Y2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMmdkcyk7ClgrICAgICAgICAg ICAgcmV0dXJuKE9LKTsKWCsgICAgICAgIGNhc2UgSkZFVDJfR0dTOgpYKyAg ICAgICAgICAgIHZhbHVlLT5yVmFsdWUgPSAqKGNrdC0+Q0tUc3RhdGUwICsg aGVyZS0+SkZFVDJnZ3MpOwpYKyAgICAgICAgICAgIHJldHVybihPSyk7Clgr ICAgICAgICBjYXNlIEpGRVQyX0dHRDoKWCsgICAgICAgICAgICB2YWx1ZS0+ clZhbHVlID0gKihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQyZ2dkKTsK WCsgICAgICAgICAgICByZXR1cm4oT0spOwpYKyAgICAgICAgY2FzZSBKRkVU Ml9RR1M6ClgrICAgICAgICAgICAgdmFsdWUtPnJWYWx1ZSA9ICooY2t0LT5D S1RzdGF0ZTAgKyBoZXJlLT5KRkVUMnFncyk7ClgrICAgICAgICAgICAgcmV0 dXJuKE9LKTsKWCsgICAgICAgIGNhc2UgSkZFVDJfQ1FHUzoKWCsgICAgICAg ICAgICB2YWx1ZS0+clZhbHVlID0gKihja3QtPkNLVHN0YXRlMCArIGhlcmUt PkpGRVQyY3Fncyk7ClgrICAgICAgICAgICAgcmV0dXJuKE9LKTsKWCsgICAg ICAgIGNhc2UgSkZFVDJfUUdEOgpYKyAgICAgICAgICAgIHZhbHVlLT5yVmFs dWUgPSAqKGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJxZ2QpOwpYKyAg ICAgICAgICAgIHJldHVybihPSyk7ClgrICAgICAgICBjYXNlIEpGRVQyX0NR R0Q6ClgrICAgICAgICAgICAgdmFsdWUtPnJWYWx1ZSA9ICooY2t0LT5DS1Rz dGF0ZTAgKyBoZXJlLT5KRkVUMmNxZ2QpOwpYKyAgICAgICAgICAgIHJldHVy bihPSyk7ClgrICAgICAgICBjYXNlIEpGRVQyX1ZUUkFQOgpYKyAgICAgICAg ICAgIHZhbHVlLT5yVmFsdWUgPSAqKGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+ SkZFVDJ2dHJhcCk7ClgrICAgICAgICAgICAgcmV0dXJuKE9LKTsKWCsgICAg ICAgIGNhc2UgSkZFVDJfUEFWRToKWCsgICAgICAgICAgICB2YWx1ZS0+clZh bHVlID0gKihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQycGF2ZSk7Clgr ICAgICAgICAgICAgcmV0dXJuKE9LKTsKWCsgICAgICAgIGNhc2UgSkZFVDJf Q1MgOgpYKyAgICAgICAgICAgIGlmIChja3QtPkNLVGN1cnJlbnRBbmFseXNp cyAmIERPSU5HX0FDKSB7ClgrICAgICAgICAgICAgICAgIGVyck1zZyA9IE1B TExPQyhzdHJsZW4obXNnKSsxKTsKWCsgICAgICAgICAgICAgICAgZXJyUnRu ID0gIkpGRVQyYXNrIjsKWCsgICAgICAgICAgICAgICAgc3RyY3B5KGVyck1z Zyxtc2cpOwpYKyAgICAgICAgICAgICAgICByZXR1cm4oRV9BU0tDVVJSRU5U KTsKWCsgICAgICAgICAgICB9IGVsc2UgewpYKyAgICAgICAgICAgICAgICB2 YWx1ZS0+clZhbHVlID0gLSooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVU MmNkKTsKWCsgICAgICAgICAgICAgICAgdmFsdWUtPnJWYWx1ZSAtPSAqKGNr dC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJjZyk7ClgrICAgICAgICAgICAg fQpYKyAgICAgICAgICAgIHJldHVybihPSyk7ClgrICAgICAgICBjYXNlIEpG RVQyX1BPV0VSIDoKWCsgICAgICAgICAgICBpZiAoY2t0LT5DS1RjdXJyZW50 QW5hbHlzaXMgJiBET0lOR19BQykgewpYKyAgICAgICAgICAgICAgICBlcnJN c2cgPSBNQUxMT0Moc3RybGVuKG1zZykrMSk7ClgrICAgICAgICAgICAgICAg IGVyclJ0biA9ICJKRkVUMmFzayI7ClgrICAgICAgICAgICAgICAgIHN0cmNw eShlcnJNc2csbXNnKTsKWCsgICAgICAgICAgICAgICAgcmV0dXJuKEVfQVNL UE9XRVIpOwpYKyAgICAgICAgICAgIH0gZWxzZSB7ClgrICAgICAgICAgICAg ICAgIHZhbHVlLT5yVmFsdWUgPSAqKGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+ SkZFVDJjZCkgKgpYKyAgICAgICAgICAgICAgICAgICAgICAgICooY2t0LT5D S1RyaHNPbGQgKyBoZXJlLT5KRkVUMmRyYWluTm9kZSk7ClgrICAgICAgICAg ICAgICAgIHZhbHVlLT5yVmFsdWUgKz0gKihja3QtPkNLVHN0YXRlMCArIGhl cmUtPkpGRVQyY2cpICogClgrICAgICAgICAgICAgICAgICAgICAgICAgKihj a3QtPkNLVHJoc09sZCArIGhlcmUtPkpGRVQyZ2F0ZU5vZGUpOwpYKyAgICAg ICAgICAgICAgICB2YWx1ZS0+clZhbHVlIC09ICgqKGNrdC0+Q0tUc3RhdGUw ICsgaGVyZS0+SkZFVDJjZCkgKwpYKyAgICAgICAgICAgICAgICAgICAgICAg ICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMmNnKSkgKgpYKyAgICAg ICAgICAgICAgICAqKGNrdC0+Q0tUcmhzT2xkICsgaGVyZS0+SkZFVDJzb3Vy Y2VOb2RlKTsKWCsgICAgICAgICAgICB9ClgrICAgICAgICAgICAgcmV0dXJu KE9LKTsKWCsgICAgICAgIGRlZmF1bHQ6ClgrICAgICAgICAgICAgcmV0dXJu KEVfQkFEUEFSTSk7ClgrICAgIH0KWCsgICAgLyogTk9UUkVBQ0hFRCAqLwpY K30KWCsKWGRpZmYgLXJ1TiAuLi93b3JrLm9yaWcvc3JjL2xpYi9kZXYvamZl dDIvamZldDJkZWZzLmggLi9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0MmRlZnMu aApYLS0tIC4uL3dvcmsub3JpZy9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0MmRl ZnMuaAlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkKWCsrKyAuL3NyYy9saWIv ZGV2L2pmZXQyL2pmZXQyZGVmcy5oCVR1ZSBKdW4gMjggMDg6MjU6NDAgMTk5 NApYQEAgLTAsMCArMSwyNTMgQEAKWCsvKioqKioqKioqKgpYK0Jhc2VkIG9u IGpmZXRkZWZzLmgKWCtDb3B5cmlnaHQgMTk5MCBSZWdlbnRzIG9mIHRoZSBV bml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVk LgpYK0F1dGhvcjogMTk4NSBUaG9tYXMgTC4gUXVhcmxlcwpYKwpYK01vZGlm aWVkIHRvIGFkZCBQUyBtb2RlbCBhbmQgbmV3IHBhcmFtZXRlciBkZWZpbml0 aW9ucyAoIEFudGhvbnkgRS4gUGFya2VyICkKWCsgICBDb3B5cmlnaHQgMTk5 NCAgTWFjcXVhcmllIFVuaXZlcnNpdHksIFN5ZG5leSBBdXN0cmFsaWEuClgr ICAgMTAgRmViIDE5OTQ6IEFkZGVkIHhpd29vLCBkMyBhbmQgYWxwaGEgdG8g SkZFVDJpbnN0YW5jZQpYKyAgICAgICAgICAgICAgICBKRkVUMnBhdmUsIEpG RVQydnRyYXAgYWQgSkZFVDJfU1RBVEVfQ09VTlQKWCsgICAgICAgICAgICAg ICAgQ2hhbmdlZCBtb2RlbCB0byBjYWxsIGpmZXRwYXJtLmgsIGFkZGVkIEpG RVQyemEgdG8gbW9kZWwgc3RydWN0ClgrICAgICAgICAgICAgICAgIERlZmlu ZWQgSkZFVDJfVlRSQVAgYW5kIEpGRVQyX1BBVkUKWCsqKioqKioqKioqLwpY KwpYKyNpZm5kZWYgSkZFVDIKWCsjZGVmaW5lIEpGRVQyClgrClgrI2luY2x1 ZGUgImlmc2ltLmgiClgrI2luY2x1ZGUgImdlbmRlZnMuaCIKWCsjaW5jbHVk ZSAiY2t0ZGVmcy5oIgpYKyNpbmNsdWRlICJjb21wbGV4LmgiClgrI2luY2x1 ZGUgIm5vaXNlZGVmLmgiClgrClgrICAgIC8qIHN0cnVjdHVyZXMgdXNlZCB0 byBkZXNjcmliZSBKdW5jdGlvbiBGaWVsZCBFZmZlY3QgVHJhbnNpc3RvcnMg Ki8KWCsKWCsKWCsvKiBpbmZvcm1hdGlvbiB1c2VkIHRvIGRlc2NyaWJlIGEg c2luZ2xlIGluc3RhbmNlICovClgrClgrdHlwZWRlZiBzdHJ1Y3Qgc0pGRVQy aW5zdGFuY2UgewpYKyAgICBzdHJ1Y3Qgc0pGRVQybW9kZWwgKkpGRVQybW9k UHRyOyAgLyogYmFja3BvaW50ZXIgdG8gbW9kZWwgKi8KWCsgICAgc3RydWN0 IHNKRkVUMmluc3RhbmNlICpKRkVUMm5leHRJbnN0YW5jZTsgLyogcG9pbnRl ciB0byBuZXh0IGluc3RhbmNlIG9mIApYKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICogY3VycmVudCBtb2RlbCovClgr ICAgIElGdWlkIEpGRVQybmFtZTsgLyogcG9pbnRlciB0byBjaGFyYWN0ZXIg c3RyaW5nIG5hbWluZyB0aGlzIGluc3RhbmNlICovClgrICAgIGludCBKRkVU MnN0YXRlOyAvKiBwb2ludGVyIHRvIHN0YXJ0IG9mIHN0YXRlIHZlY3RvciBm b3IgamZldCAqLwpYKyAgICBpbnQgSkZFVDJkcmFpbk5vZGU7ICAvKiBudW1i ZXIgb2YgZHJhaW4gbm9kZSBvZiBqZmV0ICovClgrICAgIGludCBKRkVUMmdh dGVOb2RlOyAgIC8qIG51bWJlciBvZiBnYXRlIG5vZGUgb2YgamZldCAqLwpY KyAgICBpbnQgSkZFVDJzb3VyY2VOb2RlOyAvKiBudW1iZXIgb2Ygc291cmNl IG5vZGUgb2YgamZldCAqLwpYKyAgICBpbnQgSkZFVDJkcmFpblByaW1lTm9k ZTsgLyogbnVtYmVyIG9mIGludGVybmFsIGRyYWluIG5vZGUgb2YgamZldCAq LwpYKyAgICBpbnQgSkZFVDJzb3VyY2VQcmltZU5vZGU7ICAgIC8qIG51bWJl ciBvZiBpbnRlcm5hbCBzb3VyY2Ugbm9kZSBvZiBqZmV0ICovClgrClgrICAg IGRvdWJsZSAqSkZFVDJkcmFpbkRyYWluUHJpbWVQdHI7IC8qIHBvaW50ZXIg dG8gc3BhcnNlIG1hdHJpeCBhdCAKWCsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKiAoZHJhaW4sZHJhaW4gcHJpbWUpICovClgrICAg IGRvdWJsZSAqSkZFVDJnYXRlRHJhaW5QcmltZVB0cjsgIC8qIHBvaW50ZXIg dG8gc3BhcnNlIG1hdHJpeCBhdCAKWCsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKiAoZ2F0ZSxkcmFpbiBwcmltZSkgKi8KWCsgICAg ZG91YmxlICpKRkVUMmdhdGVTb3VyY2VQcmltZVB0cjsgLyogcG9pbnRlciB0 byBzcGFyc2UgbWF0cml4IGF0IApYKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAqIChnYXRlLHNvdXJjZSBwcmltZSkgKi8KWCsgICAg ZG91YmxlICpKRkVUMnNvdXJjZVNvdXJjZVByaW1lUHRyOyAgIC8qIHBvaW50 ZXIgdG8gc3BhcnNlIG1hdHJpeCBhdCAKWCsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICogKHNvdXJjZSxzb3VyY2UgcHJpbWUp ICovClgrICAgIGRvdWJsZSAqSkZFVDJkcmFpblByaW1lRHJhaW5QdHI7IC8q IHBvaW50ZXIgdG8gc3BhcnNlIG1hdHJpeCBhdCAKWCsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKiAoZHJhaW4gcHJpbWUsZHJhaW4p ICovClgrICAgIGRvdWJsZSAqSkZFVDJkcmFpblByaW1lR2F0ZVB0cjsgIC8q IHBvaW50ZXIgdG8gc3BhcnNlIG1hdHJpeCBhdCAKWCsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKiAoZHJhaW4gcHJpbWUsZ2F0ZSkg Ki8KWCsgICAgZG91YmxlICpKRkVUMmRyYWluUHJpbWVTb3VyY2VQcmltZVB0 cjsgICAvKiBwb2ludGVyIHRvIHNwYXJzZSBtYXRyaXgKWCsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIChkcmFpbiBw cmltZSxzb3VyY2UgcHJpbWUpICovClgrICAgIGRvdWJsZSAqSkZFVDJzb3Vy Y2VQcmltZUdhdGVQdHI7IC8qIHBvaW50ZXIgdG8gc3BhcnNlIG1hdHJpeCBh dCAKWCsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAo c291cmNlIHByaW1lLGdhdGUpICovClgrICAgIGRvdWJsZSAqSkZFVDJzb3Vy Y2VQcmltZVNvdXJjZVB0cjsgICAvKiBwb2ludGVyIHRvIHNwYXJzZSBtYXRy aXggYXQgClgrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqIChzb3VyY2UgcHJpbWUsc291cmNlKSAqLwpYKyAgICBkb3VibGUg KkpGRVQyc291cmNlUHJpbWVEcmFpblByaW1lUHRyOyAgIC8qIHBvaW50ZXIg dG8gc3BhcnNlIG1hdHJpeApYKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICogKHNvdXJjZSBwcmltZSxkcmFpbiBwcmlt ZSkgKi8KWCsgICAgZG91YmxlICpKRkVUMmRyYWluRHJhaW5QdHI7ICAvKiBw b2ludGVyIHRvIHNwYXJzZSBtYXRyaXggYXQgClgrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKiAoZHJhaW4sZHJhaW4pICovClgrICAgIGRv dWJsZSAqSkZFVDJnYXRlR2F0ZVB0cjsgICAgLyogcG9pbnRlciB0byBzcGFy c2UgbWF0cml4IGF0IApYKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICogKGdhdGUsZ2F0ZSkgKi8KWCsgICAgZG91YmxlICpKRkVUMnNvdXJj ZVNvdXJjZVB0cjsgICAgLyogcG9pbnRlciB0byBzcGFyc2UgbWF0cml4IGF0 IApYKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIChz b3VyY2Usc291cmNlKSAqLwpYKyAgICBkb3VibGUgKkpGRVQyZHJhaW5Qcmlt ZURyYWluUHJpbWVQdHI7ICAgIC8qIHBvaW50ZXIgdG8gc3BhcnNlIG1hdHJp eApYKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICogKGRyYWluIHByaW1lLGRyYWluIHByaW1lKSAqLwpYKyAgICBkb3Vi bGUgKkpGRVQyc291cmNlUHJpbWVTb3VyY2VQcmltZVB0cjsgIC8qIHBvaW50 ZXIgdG8gc3BhcnNlIG1hdHJpeApYKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICogKHNvdXJjZSBwcmltZSxzb3VyY2Ug cHJpbWUpICovClgrClgrCWludCBKRkVUMm1vZGU7ClgrCS8qIGRpc3RvcnRp b24gYW5hbHlzaXMgVGF5bG9yIGNvZWZmcy4gKi8KWCsKWCsvKgpYKyAqIG5h bWluZyBjb252ZW50aW9uOgpYKyAqIHggPSB2Z3MKWCsgKiB5ID0gdmRzClgr ICogY2RyID0gY2RyYWluClgrICovClgrClgrI2RlZmluZSBKRkVUMk5EQ09F RkZTCTIxClgrClgrI2lmbmRlZiBOT0RJU1RPClgrCWRvdWJsZSBKRkVUMmRD b2VmZnNbSkZFVDJORENPRUZGU107ClgrI2Vsc2UgLyogTk9ESVNUTyAqLwpY Kwlkb3VibGUgKkpGRVQyZENvZWZmczsKWCsjZW5kaWYgLyogTk9ESVNUTyAq LwpYKwpYKyNpZm5kZWYgQ09ORklHClgrClgrI2RlZmluZQljZHJfeAkJSkZF VDJkQ29lZmZzWzBdClgrI2RlZmluZQljZHJfeQkJSkZFVDJkQ29lZmZzWzFd ClgrI2RlZmluZQljZHJfeDIJCUpGRVQyZENvZWZmc1syXQpYKyNkZWZpbmUJ Y2RyX3kyCQlKRkVUMmRDb2VmZnNbM10KWCsjZGVmaW5lCWNkcl94eQkJSkZF VDJkQ29lZmZzWzRdClgrI2RlZmluZQljZHJfeDMJCUpGRVQyZENvZWZmc1s1 XQpYKyNkZWZpbmUJY2RyX3kzCQlKRkVUMmRDb2VmZnNbNl0KWCsjZGVmaW5l CWNkcl94MnkJCUpGRVQyZENvZWZmc1s3XQpYKyNkZWZpbmUJY2RyX3h5MgkJ SkZFVDJkQ29lZmZzWzhdClgrClgrI2RlZmluZQlnZ3MxCQlKRkVUMmRDb2Vm ZnNbOV0KWCsjZGVmaW5lCWdnZDEJCUpGRVQyZENvZWZmc1sxMF0KWCsjZGVm aW5lCWdnczIJCUpGRVQyZENvZWZmc1sxMV0KWCsjZGVmaW5lCWdnZDIJCUpG RVQyZENvZWZmc1sxMl0KWCsjZGVmaW5lCWdnczMJCUpGRVQyZENvZWZmc1sx M10KWCsjZGVmaW5lCWdnZDMJCUpGRVQyZENvZWZmc1sxNF0KWCsjZGVmaW5l CWNhcGdzMQkJSkZFVDJkQ29lZmZzWzE1XQpYKyNkZWZpbmUJY2FwZ2QxCQlK RkVUMmRDb2VmZnNbMTZdClgrI2RlZmluZQljYXBnczIJCUpGRVQyZENvZWZm c1sxN10KWCsjZGVmaW5lCWNhcGdkMgkJSkZFVDJkQ29lZmZzWzE4XQpYKyNk ZWZpbmUJY2FwZ3MzCQlKRkVUMmRDb2VmZnNbMTldClgrI2RlZmluZQljYXBn ZDMJCUpGRVQyZENvZWZmc1syMF0KWCsKWCsjZW5kaWYKWCsKWCsvKiBpbmRp Y2VzIHRvIGFuIGFycmF5IG9mIEpGRVQyIG5vaXNlIHNvdXJjZXMgKi8KWCsK WCsjZGVmaW5lIEpGRVQyUkROT0laICAgICAgIDAKWCsjZGVmaW5lIEpGRVQy UlNOT0laICAgICAgIDEKWCsjZGVmaW5lIEpGRVQySUROT0laICAgICAgIDIK WCsjZGVmaW5lIEpGRVQyRkxOT0laIDMKWCsjZGVmaW5lIEpGRVQyVE9UTk9J WiAgICA0ClgrClgrI2RlZmluZSBKRkVUMk5TUkNTICAgICA1ClgrClgrI2lm bmRlZiBOT05PSVNFClgrICAgIGRvdWJsZSBKRkVUMm5WYXJbTlNUQVRWQVJT XVtKRkVUMk5TUkNTXTsKWCsjZWxzZSAvKiBOT05PSVNFICovClgrCWRvdWJs ZSAqKkpGRVQyblZhcjsKWCsjZW5kaWYgLyogTk9OT0lTRSAqLwpYKwpYKyAg ICB1bnNpZ25lZCBKRkVUMm9mZiA6MTsgICAgICAgICAgICAvKiAnb2ZmJyBm bGFnIGZvciBqZmV0ICovClgrICAgIHVuc2lnbmVkIEpGRVQyYXJlYUdpdmVu ICA6IDE7ICAgIC8qIGZsYWcgdG8gaW5kaWNhdGUgYXJlYSB3YXMgc3BlY2lm aWVkICovClgrICAgIHVuc2lnbmVkIEpGRVQyaWNWRFNHaXZlbiA6IDE7ICAg IC8qIGluaXRpYWwgY29uZGl0aW9uIGdpdmVuIGZsYWcgZm9yIFYgRC1TKi8K WCsgICAgdW5zaWduZWQgSkZFVDJpY1ZHU0dpdmVuIDogMTsgICAgLyogaW5p dGlhbCBjb25kaXRpb24gZ2l2ZW4gZmxhZyBmb3IgViBHLVMqLwpYKyAgICB1 bnNpZ25lZCBKRkVUMnRlbXBHaXZlbiAgOiAxOyAgICAvKiBmbGFnIHRvIGlu ZGljYXRlIGluc3RhbmNlIHRlbXAgZ2l2ZW4gKi8KWCsKWCsKWCsgICAgZG91 YmxlIEpGRVQyYXJlYTsgICAgLyogYXJlYSBmYWN0b3IgZm9yIHRoZSBqZmV0 ICovClgrICAgIGRvdWJsZSBKRkVUMmljVkRTOyAgIC8qIGluaXRpYWwgY29u ZGl0aW9uIHZvbHRhZ2UgRC1TKi8KWCsgICAgZG91YmxlIEpGRVQyaWNWR1M7 ICAgLyogaW5pdGlhbCBjb25kaXRpb24gdm9sdGFnZSBHLVMqLwpYKyAgICBk b3VibGUgSkZFVDJ0ZW1wOyAgICAvKiBvcGVyYXRpbmcgdGVtcGVyYXR1cmUg Ki8KWCsgICAgZG91YmxlIEpGRVQydFNhdEN1cjsgLyogdGVtcGVyYXR1cmUg YWRqdXN0ZWQgc2F0dXJhdGlvbiBjdXJyZW50ICovClgrICAgIGRvdWJsZSBK RkVUMnRHYXRlUG90OyAgICAvKiB0ZW1wZXJhdHVyZSBhZGp1c3RlZCBnYXRl IHBvdGVudGlhbCAqLwpYKyAgICBkb3VibGUgSkZFVDJ0Q0dTOyAgICAvKiB0 ZW1wZXJhdHVyZSBjb3JyZWN0ZWQgRy1TIGNhcGFjaXRhbmNlICovClgrICAg IGRvdWJsZSBKRkVUMnRDR0Q7ICAgIC8qIHRlbXBlcmF0dXJlIGNvcnJlY3Rl ZCBHLUQgY2FwYWNpdGFuY2UgKi8KWCsgICAgZG91YmxlIEpGRVQyY29yRGVw Q2FwOyAgIC8qIGpvaW5pbmcgcG9pbnQgb2YgdGhlIGZ3ZCBiaWFzIGRlcC4g Y2FwIGVxLnMgKi8KWCsgICAgZG91YmxlIEpGRVQydmNyaXQ7ICAgLyogY3Jp dGljYWwgdm9sdGFnZSBmb3IgdGhlIGluc3RhbmNlICovClgrICAgIGRvdWJs ZSBKRkVUMmYxOyAgICAgIC8qIGNvZWZmaWNpZW50IG9mIGNhcGFjaXRhbmNl IHBvbHlub21pYWwgZXhwICovClgrICAgIGRvdWJsZSBKRkVUMnhpd29vOyAg ICAgICAvKiB2ZWxvY2l0eSBzYXR1cmF0aW9uIHBvdGVudGlhbCAqLwpYKyAg ICBkb3VibGUgSkZFVDJkMzsgICAgICAgICAgLyogRHVhbCBQb3dlci1sYXcg cGFyYW1ldGVyICovClgrICAgIGRvdWJsZSBKRkVUMmFscGhhOyAgICAgICAv KiBjYXBhY2l0YW5jZSBtb2RlbCB0cmFuc2l0aW9uIHBhcmFtZXRlciAqLwpY KwpYK30gSkZFVDJpbnN0YW5jZSA7ClgrClgrI2RlZmluZSBKRkVUMnZncyAg ICAgIEpGRVQyc3RhdGUgClgrI2RlZmluZSBKRkVUMnZnZCAgICAgIEpGRVQy c3RhdGUrMSAKWCsjZGVmaW5lIEpGRVQyY2cgICAgICAgSkZFVDJzdGF0ZSsy IApYKyNkZWZpbmUgSkZFVDJjZCAgICAgICBKRkVUMnN0YXRlKzMgClgrI2Rl ZmluZSBKRkVUMmNnZCAgICAgIEpGRVQyc3RhdGUrNCAKWCsjZGVmaW5lIEpG RVQyZ20gICAgICAgSkZFVDJzdGF0ZSs1IApYKyNkZWZpbmUgSkZFVDJnZHMg ICAgICBKRkVUMnN0YXRlKzYgClgrI2RlZmluZSBKRkVUMmdncyAgICAgIEpG RVQyc3RhdGUrNyAKWCsjZGVmaW5lIEpGRVQyZ2dkICAgICAgSkZFVDJzdGF0 ZSs4IApYKyNkZWZpbmUgSkZFVDJxZ3MgICAgICBKRkVUMnN0YXRlKzkgClgr I2RlZmluZSBKRkVUMmNxZ3MgICAgIEpGRVQyc3RhdGUrMTAgClgrI2RlZmlu ZSBKRkVUMnFnZCAgICAgIEpGRVQyc3RhdGUrMTEgClgrI2RlZmluZSBKRkVU MmNxZ2QgICAgIEpGRVQyc3RhdGUrMTIgClgrI2RlZmluZSBKRkVUMnFkcyAg ICAgIEpGRVQyc3RhdGUrMTMKWCsjZGVmaW5lIEpGRVQyY3FkcyAgICAgSkZF VDJzdGF0ZSsxNApYKyNkZWZpbmUgSkZFVDJwYXZlICAgICBKRkVUMnN0YXRl KzE1ClgrI2RlZmluZSBKRkVUMnZ0cmFwICAgIEpGRVQyc3RhdGUrMTYKWCsj ZGVmaW5lIEpGRVQydmdzdHJhcCAgSkZFVDJzdGF0ZSsxNwpYKyNkZWZpbmUg SkZFVDJfU1RBVEVfQ09VTlQgICAgMTgKWCsKWCsvKiBwZXIgbW9kZWwgZGF0 YSAqLwpYKwpYK3R5cGVkZWYgc3RydWN0IHNKRkVUMm1vZGVsIHsgICAgICAg LyogbW9kZWwgc3RydWN0dXJlIGZvciBhIGpmZXQgKi8KWCsgICAgaW50IEpG RVQybW9kVHlwZTsgICAgLyogdHlwZSBpbmRleCBvZiB0aGlzIGRldmljZSB0 eXBlICovClgrICAgIHN0cnVjdCBzSkZFVDJtb2RlbCAqSkZFVDJuZXh0TW9k ZWw7ICAgLyogcG9pbnRlciB0byBuZXh0IHBvc3NpYmxlIG1vZGVsIGluIApY KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBs aW5rZWQgbGlzdCAqLwpYKyAgICBKRkVUMmluc3RhbmNlICogSkZFVDJpbnN0 YW5jZXM7IC8qIHBvaW50ZXIgdG8gbGlzdCBvZiBpbnN0YW5jZXMgClgrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoYXQgaGF2ZSB0 aGlzIG1vZGVsICovClgrICAgIElGdWlkIEpGRVQybW9kTmFtZTsgLyogcG9p bnRlciB0byBjaGFyYWN0ZXIgc3RyaW5nIG5hbWluZyB0aGlzIG1vZGVsICov ClgrICAgIGludCBKRkVUMnR5cGU7ClgrClgrI2RlZmluZSAgUEFSQU0oY29k ZSxpZCxmbGFnLHJlZixkZWZhdWx0LGRlc2NyaXApIGRvdWJsZSByZWY7Clgr I2luY2x1ZGUgImpmZXQycGFybS5oIgpYKwpYKyAgICBkb3VibGUgSkZFVDJk cmFpbkNvbmR1Y3Q7ClgrICAgIGRvdWJsZSBKRkVUMnNvdXJjZUNvbmR1Y3Q7 ClgrICAgIGRvdWJsZSBKRkVUMmYyOwpYKyAgICBkb3VibGUgSkZFVDJmMzsK WCsgICAgZG91YmxlIEpGRVQyemE7ICAgICAgLyogc2F0dXJhdGlvbiBpbmRl eCBwYXJhbWV0ZXIgKi8KWCsgICAgZG91YmxlIEpGRVQydG5vbTsgICAgLyog dGVtcGVyYXR1cmUgYXQgd2hpY2ggcGFyYW1ldGVycyB3ZXJlIG1lYXN1cmVk ICovClgrClgrI2RlZmluZSAgUEFSQU0oY29kZSxpZCxmbGFnLHJlZixkZWZh dWx0LGRlc2NyaXApIHVuc2lnbmVkIGZsYWcgOiAxOwpYKyNpbmNsdWRlICJq ZmV0MnBhcm0uaCIKWCsgICAgdW5zaWduZWQgSkZFVDJ0bm9tR2l2ZW4gOiAx OyAvKiB1c2VyIHNwZWNpZmllZCBUbm9tIGZvciBtb2RlbCAqLwpYKwpYK30g SkZFVDJtb2RlbDsKWCsKWCsjaWZuZGVmIE5KRgpYKwpYKyNkZWZpbmUgTkpG IDEKWCsjZGVmaW5lIFBKRiAtMQpYKwpYKyNlbmRpZiAvKk5KRiovClgrClgr LyogZGV2aWNlIHBhcmFtZXRlcnMgKi8KWCsjZGVmaW5lIEpGRVQyX0FSRUEg MQpYKyNkZWZpbmUgSkZFVDJfSUNfVkRTIDIKWCsjZGVmaW5lIEpGRVQyX0lD X1ZHUyAzClgrI2RlZmluZSBKRkVUMl9JQyA0ClgrI2RlZmluZSBKRkVUMl9P RkYgNQpYKyNkZWZpbmUgSkZFVDJfVEVNUCA2ClgrClgrLyogZGV2aWNlIHF1 ZXN0aW9ucyAqLwpYKyNkZWZpbmUgSkZFVDJfRFJBSU5OT0RFICAgICAgICAz MDEKWCsjZGVmaW5lIEpGRVQyX0dBVEVOT0RFICAgICAgICAgMzAyClgrI2Rl ZmluZSBKRkVUMl9TT1VSQ0VOT0RFICAgICAgIDMwMwpYKyNkZWZpbmUgSkZF VDJfRFJBSU5QUklNRU5PREUgICAzMDQKWCsjZGVmaW5lIEpGRVQyX1NPVVJD RVBSSU1FTk9ERSAgMzA1ClgrI2RlZmluZSBKRkVUMl9WR1MgICAgICAgICAg ICAgIDMwNgpYKyNkZWZpbmUgSkZFVDJfVkdEICAgICAgICAgICAgICAzMDcK WCsjZGVmaW5lIEpGRVQyX0NHICAgICAgICAgICAgICAgMzA4ClgrI2RlZmlu ZSBKRkVUMl9DRCAgICAgICAgICAgICAgIDMwOQpYKyNkZWZpbmUgSkZFVDJf Q0dEICAgICAgICAgICAgICAzMTAKWCsjZGVmaW5lIEpGRVQyX0dNICAgICAg ICAgICAgICAgMzExClgrI2RlZmluZSBKRkVUMl9HRFMgICAgICAgICAgICAg IDMxMgpYKyNkZWZpbmUgSkZFVDJfR0dTICAgICAgICAgICAgICAzMTMKWCsj ZGVmaW5lIEpGRVQyX0dHRCAgICAgICAgICAgICAgMzE0ClgrI2RlZmluZSBK RkVUMl9RR1MgICAgICAgICAgICAgIDMxNQpYKyNkZWZpbmUgSkZFVDJfQ1FH UyAgICAgICAgICAgICAzMTYKWCsjZGVmaW5lIEpGRVQyX1FHRCAgICAgICAg ICAgICAgMzE3ClgrI2RlZmluZSBKRkVUMl9DUUdEICAgICAgICAgICAgIDMx OApYKyNkZWZpbmUgSkZFVDJfQ1MgICAgICAgICAgICAgICAzMTkKWCsjZGVm aW5lIEpGRVQyX1BPV0VSICAgICAgICAgICAgMzIwClgrI2RlZmluZSBKRkVU Ml9WVFJBUCAgICAgICAgICAgIDMyMQpYKyNkZWZpbmUgSkZFVDJfUEFWRSAg ICAgICAgICAgICAzMjIKWCsKWCsvKiBtb2RlbCBxdWVzdGlvbnMgKi8KWCsj ZGVmaW5lIEpGRVQyX01PRF9EUkFJTkNPTkRVQ1QgICAzMDEKWCsjZGVmaW5l IEpGRVQyX01PRF9TT1VSQ0VDT05EVUNUICAzMDIKWCsjZGVmaW5lIEpGRVQy X01PRF9ERVBMRVRJT05DQVAgICAzMDMKWCsjZGVmaW5lIEpGRVQyX01PRF9W Q1JJVCAgICAgICAgICAzMDQKWCsjZGVmaW5lIEpGRVQyX01PRF9UWVBFICAg ICAgICAgICAzMDUKWCsKWCsvKiBmdW5jdGlvbiBkZWZpbml0aW9ucyAqLwpY KwpYKyNpbmNsdWRlICJqZmV0MmV4dC5oIgpYKwpYKyNlbmRpZiAvKkpGRVQy Ki8KWGRpZmYgLXJ1TiAuLi93b3JrLm9yaWcvc3JjL2xpYi9kZXYvamZldDIv amZldDJkZWwuYyAuL3NyYy9saWIvZGV2L2pmZXQyL2pmZXQyZGVsLmMKWC0t LSAuLi93b3JrLm9yaWcvc3JjL2xpYi9kZXYvamZldDIvamZldDJkZWwuYwlX ZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkKWCsrKyAuL3NyYy9saWIvZGV2L2pm ZXQyL2pmZXQyZGVsLmMJVHVlIEp1biAyMSAxNDozNDo0OCAxOTk0ClhAQCAt MCwwICsxLDQxIEBAClgrLyoqKioqKioqKioKWCtCYXNlZCBvbiBqZmV0ZGVs LmMKWCtDb3B5cmlnaHQgMTk5MCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5 IG9mIENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgpYK0F1dGhv cjogMTk4NSBUaG9tYXMgTC4gUXVhcmxlcwpYKwpYK01vZGlmaWVkIHRvIGpm ZXQyIGZvciBQUyBtb2RlbCBkZWZpbml0aW9uICggQW50aG9ueSBFLiBQYXJr ZXIgKQpYKyAgIENvcHlyaWdodCAxOTk0ICBNYWNxdWFyaWUgVW5pdmVyc2l0 eSwgU3lkbmV5IEF1c3RyYWxpYS4KWCsqKioqKioqKioqLwpYKwpYKyNpbmNs dWRlICJzcGljZS5oIgpYKyNpbmNsdWRlIDxzdGRpby5oPgpYKyNpbmNsdWRl ICJ1dGlsLmgiClgrI2luY2x1ZGUgImpmZXQyZGVmcy5oIgpYKyNpbmNsdWRl ICJzcGVycm9yLmgiClgrI2luY2x1ZGUgInN1ZmZpeC5oIgpYKwpYKwpYK2lu dApYK0pGRVQyZGVsZXRlKGluTW9kZWwsbmFtZSxpbnN0KQpYKyAgICBHRU5t b2RlbCAqaW5Nb2RlbDsKWCsgICAgSUZ1aWQgbmFtZTsKWCsgICAgR0VOaW5z dGFuY2UgKippbnN0OwpYK3sKWCsgICAgSkZFVDJtb2RlbCAqbW9kZWwgPSAo SkZFVDJtb2RlbCopaW5Nb2RlbDsKWCsgICAgSkZFVDJpbnN0YW5jZSAqKmZh c3QgPSAoSkZFVDJpbnN0YW5jZSoqKWluc3Q7ClgrICAgIEpGRVQyaW5zdGFu Y2UgKipwcmV2ID0gTlVMTDsKWCsgICAgSkZFVDJpbnN0YW5jZSAqaGVyZTsK WCsKWCsgICAgZm9yKCA7IG1vZGVsIDsgbW9kZWwgPSBtb2RlbC0+SkZFVDJu ZXh0TW9kZWwpIHsKWCsgICAgICAgIHByZXYgPSAmKG1vZGVsLT5KRkVUMmlu c3RhbmNlcyk7ClgrICAgICAgICBmb3IoaGVyZSA9ICpwcmV2OyBoZXJlIDsg aGVyZSA9ICpwcmV2KSB7ClgrICAgICAgICAgICAgaWYoaGVyZS0+SkZFVDJu YW1lID09IG5hbWUgfHwgKGZhc3QgJiYgaGVyZT09KmZhc3QpICkgewpYKyAg ICAgICAgICAgICAgICAqcHJldj0gaGVyZS0+SkZFVDJuZXh0SW5zdGFuY2U7 ClgrICAgICAgICAgICAgICAgIEZSRUUoaGVyZSk7ClgrICAgICAgICAgICAg ICAgIHJldHVybihPSyk7ClgrICAgICAgICAgICAgfQpYKyAgICAgICAgICAg IHByZXYgPSAmKGhlcmUtPkpGRVQybmV4dEluc3RhbmNlKTsKWCsgICAgICAg IH0KWCsgICAgfQpYKyAgICByZXR1cm4oRV9OT0RFVik7ClgrfQpYZGlmZiAt cnVOIC4uL3dvcmsub3JpZy9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0MmRlc3Qu YyAuL3NyYy9saWIvZGV2L2pmZXQyL2pmZXQyZGVzdC5jClgtLS0gLi4vd29y ay5vcmlnL3NyYy9saWIvZGV2L2pmZXQyL2pmZXQyZGVzdC5jCVdlZCBEZWMg MzEgMTk6MDA6MDAgMTk2OQpYKysrIC4vc3JjL2xpYi9kZXYvamZldDIvamZl dDJkZXN0LmMJVHVlIEp1biAyMSAxNDozNDo1MSAxOTk0ClhAQCAtMCwwICsx LDQxIEBAClgrLyoqKioqKioqKioKWCtCYXNlZCBvbiBqZmV0ZGVzdC5jClgr Q29weXJpZ2h0IDE5OTAgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBD YWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KWCtBdXRob3I6IDE5 ODUgVGhvbWFzIEwuIFF1YXJsZXMKWCsKWCtNb2RpZmllZCB0byBqZmV0MiBm b3IgUFMgbW9kZWwgZGVmaW5pdGlvbiAoIEFudGhvbnkgRS4gUGFya2VyICkK WCsgICBDb3B5cmlnaHQgMTk5NCAgTWFjcXVhcmllIFVuaXZlcnNpdHksIFN5 ZG5leSBBdXN0cmFsaWEuClgrKioqKioqKioqKi8KWCsvKgpYKyAqLwpYKwpY KyNpbmNsdWRlICJzcGljZS5oIgpYKyNpbmNsdWRlIDxzdGRpby5oPgpYKyNp bmNsdWRlICJ1dGlsLmgiClgrI2luY2x1ZGUgImpmZXQyZGVmcy5oIgpYKyNp bmNsdWRlICJzdWZmaXguaCIKWCsKWCsKWCt2b2lkClgrSkZFVDJkZXN0cm95 KGluTW9kZWwpClgrICAgIEdFTm1vZGVsICoqaW5Nb2RlbDsKWCt7ClgrICAg IEpGRVQybW9kZWwgKiptb2RlbCA9IChKRkVUMm1vZGVsKiopaW5Nb2RlbDsK WCsgICAgSkZFVDJpbnN0YW5jZSAqaGVyZTsKWCsgICAgSkZFVDJpbnN0YW5j ZSAqcHJldiA9IE5VTEw7ClgrICAgIEpGRVQybW9kZWwgKm1vZCA9ICptb2Rl bDsKWCsgICAgSkZFVDJtb2RlbCAqb2xkbW9kID0gTlVMTDsKWCsKWCsgICAg Zm9yKCA7IG1vZCA7IG1vZCA9IG1vZC0+SkZFVDJuZXh0TW9kZWwpIHsKWCsg ICAgICAgIGlmKG9sZG1vZCkgRlJFRShvbGRtb2QpOwpYKyAgICAgICAgb2xk bW9kID0gbW9kOwpYKyAgICAgICAgcHJldiA9IChKRkVUMmluc3RhbmNlICop TlVMTDsKWCsgICAgICAgIGZvcihoZXJlID0gbW9kLT5KRkVUMmluc3RhbmNl cyA7IGhlcmUgOyBoZXJlID0gaGVyZS0+SkZFVDJuZXh0SW5zdGFuY2UpIHsK WCsgICAgICAgICAgICBpZihwcmV2KSBGUkVFKHByZXYpOwpYKyAgICAgICAg ICAgIHByZXYgPSBoZXJlOwpYKyAgICAgICAgfQpYKyAgICAgICAgaWYocHJl dikgRlJFRShwcmV2KTsKWCsgICAgfQpYKyAgICBpZihvbGRtb2QpIEZSRUUo b2xkbW9kKTsKWCsgICAgKm1vZGVsID0gTlVMTDsKWCt9ClhkaWZmIC1ydU4g Li4vd29yay5vcmlnL3NyYy9saWIvZGV2L2pmZXQyL2pmZXQyZXh0LmggLi9z cmMvbGliL2Rldi9qZmV0Mi9qZmV0MmV4dC5oClgtLS0gLi4vd29yay5vcmln L3NyYy9saWIvZGV2L2pmZXQyL2pmZXQyZXh0LmgJV2VkIERlYyAzMSAxOTow MDowMCAxOTY5ClgrKysgLi9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0MmV4dC5o CVR1ZSBKdW4gMjEgMTQ6MzQ6NTQgMTk5NApYQEAgLTAsMCArMSw0MyBAQApY Ky8qKioqKioqKioqClgrQmFzZWQgb24gamZldGV4dC5oClgrQ29weXJpZ2h0 IDE5OTAgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlh LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KWCtBdXRob3I6IDE5ODUgVGhvbWFz IEwuIFF1YXJsZXMKWCsKWCtNb2RpZmllZCB0byBhZGQgUFMgbW9kZWwgYW5k IG5ldyBwYXJhbWV0ZXIgZGVmaW5pdGlvbnMgKCBBbnRob255IEUuIFBhcmtl ciApClgrICAgQ29weXJpZ2h0IDE5OTQgIE1hY3F1YXJpZSBVbml2ZXJzaXR5 LCBTeWRuZXkgQXVzdHJhbGlhLgpYKyoqKioqKioqKiovClgrClgrI2lmZGVm IF9fU1REQ19fClgrZXh0ZXJuIGludCBKRkVUMmFjTG9hZChHRU5tb2RlbCos Q0tUY2lyY3VpdCopOwpYK2V4dGVybiBpbnQgSkZFVDJhc2soQ0tUY2lyY3Vp dCosR0VOaW5zdGFuY2UqLGludCxJRnZhbHVlKixJRnZhbHVlKik7ClgrZXh0 ZXJuIGludCBKRkVUMmRlbGV0ZShHRU5tb2RlbCosSUZ1aWQsR0VOaW5zdGFu Y2UqKik7ClgrZXh0ZXJuIHZvaWQgSkZFVDJkZXN0cm95KEdFTm1vZGVsKiop OwpYK2V4dGVybiBpbnQgSkZFVDJnZXRpYyhHRU5tb2RlbCosQ0tUY2lyY3Vp dCopOwpYK2V4dGVybiBpbnQgSkZFVDJsb2FkKEdFTm1vZGVsKixDS1RjaXJj dWl0Kik7ClgrZXh0ZXJuIGludCBKRkVUMm1Bc2soQ0tUY2lyY3VpdCosR0VO bW9kZWwqLGludCxJRnZhbHVlKik7ClgrZXh0ZXJuIGludCBKRkVUMm1EZWxl dGUoR0VObW9kZWwqKixJRnVpZCxHRU5tb2RlbCopOwpYK2V4dGVybiBpbnQg SkZFVDJtUGFyYW0oaW50LElGdmFsdWUqLEdFTm1vZGVsKik7ClgrZXh0ZXJu IGludCBKRkVUMnBhcmFtKGludCxJRnZhbHVlKixHRU5pbnN0YW5jZSosSUZ2 YWx1ZSopOwpYK2V4dGVybiBpbnQgSkZFVDJzZXR1cChTTVBtYXRyaXgqLEdF Tm1vZGVsKixDS1RjaXJjdWl0KixpbnQqKTsKWCtleHRlcm4gaW50IEpGRVQy dW5zZXR1cChHRU5tb2RlbCosQ0tUY2lyY3VpdCopOwpYK2V4dGVybiBpbnQg SkZFVDJ0ZW1wKEdFTm1vZGVsKixDS1RjaXJjdWl0Kik7ClgrZXh0ZXJuIGlu dCBKRkVUMnRydW5jKEdFTm1vZGVsKixDS1RjaXJjdWl0Kixkb3VibGUqKTsK WCtleHRlcm4gaW50IEpGRVQybm9pc2UoaW50LGludCxHRU5tb2RlbCosQ0tU Y2lyY3VpdCosTmRhdGEqLGRvdWJsZSopOwpYKwpYKyNlbHNlIC8qIHN0ZGMg Ki8KWCtleHRlcm4gaW50IEpGRVQyYWNMb2FkKCk7ClgrZXh0ZXJuIGludCBK RkVUMmFzaygpOwpYK2V4dGVybiBpbnQgSkZFVDJkZWxldGUoKTsKWCtleHRl cm4gdm9pZCBKRkVUMmRlc3Ryb3koKTsKWCtleHRlcm4gaW50IEpGRVQyZ2V0 aWMoKTsKWCtleHRlcm4gaW50IEpGRVQybG9hZCgpOwpYK2V4dGVybiBpbnQg SkZFVDJtQXNrKCk7ClgrZXh0ZXJuIGludCBKRkVUMm1EZWxldGUoKTsKWCtl eHRlcm4gaW50IEpGRVQybVBhcmFtKCk7ClgrZXh0ZXJuIGludCBKRkVUMnBh cmFtKCk7ClgrZXh0ZXJuIGludCBKRkVUMnNldHVwKCk7ClgrZXh0ZXJuIGlu dCBKRkVUMnVuc2V0dXAoKTsKWCtleHRlcm4gaW50IEpGRVQydGVtcCgpOwpY K2V4dGVybiBpbnQgSkZFVDJ0cnVuYygpOwpYK2V4dGVybiBpbnQgSkZFVDJu b2lzZSgpOwpYKyNlbmRpZiAvKiBzdGRjICovClhkaWZmIC1ydU4gLi4vd29y ay5vcmlnL3NyYy9saWIvZGV2L2pmZXQyL2pmZXQyaWMuYyAuL3NyYy9saWIv ZGV2L2pmZXQyL2pmZXQyaWMuYwpYLS0tIC4uL3dvcmsub3JpZy9zcmMvbGli L2Rldi9qZmV0Mi9qZmV0MmljLmMJV2VkIERlYyAzMSAxOTowMDowMCAxOTY5 ClgrKysgLi9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0MmljLmMJVHVlIEp1biAy MSAxNDozNDo1NyAxOTk0ClhAQCAtMCwwICsxLDQ3IEBAClgrLyoqKioqKioq KioKWCtCYXNlZCBvbiBqZmV0aWMuYwpYK0NvcHlyaWdodCAxOTkwIFJlZ2Vu dHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdo dHMgcmVzZXJ2ZWQuClgrQXV0aG9yOiAxOTg1IFRob21hcyBMLiBRdWFybGVz ClgrClgrTW9kaWZpZWQgdG8gamZldDIgZm9yIFBTIG1vZGVsIGRlZmluaXRp b24gKCBBbnRob255IEUuIFBhcmtlciApClgrICAgQ29weXJpZ2h0IDE5OTQg IE1hY3F1YXJpZSBVbml2ZXJzaXR5LCBTeWRuZXkgQXVzdHJhbGlhLgpYKyoq KioqKioqKiovClgrLyoKWCsgKi8KWCsKWCsjaW5jbHVkZSAic3BpY2UuaCIK WCsjaW5jbHVkZSA8c3RkaW8uaD4KWCsjaW5jbHVkZSAiY2t0ZGVmcy5oIgpY KyNpbmNsdWRlICJqZmV0MmRlZnMuaCIKWCsjaW5jbHVkZSAic3BlcnJvci5o IgpYKyNpbmNsdWRlICJzdWZmaXguaCIKWCsKWCsKWCtpbnQKWCtKRkVUMmdl dGljKGluTW9kZWwsY2t0KQpYKyAgICBHRU5tb2RlbCAqaW5Nb2RlbDsKWCsg ICAgQ0tUY2lyY3VpdCAqY2t0OwpYK3sKWCsgICAgSkZFVDJtb2RlbCAqbW9k ZWwgPSAoSkZFVDJtb2RlbCopaW5Nb2RlbDsKWCsgICAgSkZFVDJpbnN0YW5j ZSAqaGVyZTsKWCsgICAgLyoKWCsgICAgICogZ3JhYiBpbml0aWFsIGNvbmRp dGlvbnMgb3V0IG9mIHJocyBhcnJheS4gICBVc2VyIHNwZWNpZmllZCwgc28g dXNlClgrICAgICAqIGV4dGVybmFsIG5vZGVzIHRvIGdldCB2YWx1ZXMKWCsg ICAgICovClgrClgrICAgIGZvciggOyBtb2RlbCA7IG1vZGVsID0gbW9kZWwt PkpGRVQybmV4dE1vZGVsKSB7ClgrICAgICAgICBmb3IoaGVyZSA9IG1vZGVs LT5KRkVUMmluc3RhbmNlczsgaGVyZSA7IGhlcmUgPSBoZXJlLT5KRkVUMm5l eHRJbnN0YW5jZSkgewpYKyAgICAgICAgICAgIGlmKCFoZXJlLT5KRkVUMmlj VkRTR2l2ZW4pIHsKWCsgICAgICAgICAgICAgICAgaGVyZS0+SkZFVDJpY1ZE UyA9IApYKyAgICAgICAgICAgICAgICAgICAgICAgICooY2t0LT5DS1RyaHMg KyBoZXJlLT5KRkVUMmRyYWluTm9kZSkgLSAKWCsgICAgICAgICAgICAgICAg ICAgICAgICAqKGNrdC0+Q0tUcmhzICsgaGVyZS0+SkZFVDJzb3VyY2VOb2Rl KTsKWCsgICAgICAgICAgICB9ClgrICAgICAgICAgICAgaWYoIWhlcmUtPkpG RVQyaWNWR1NHaXZlbikgewpYKyAgICAgICAgICAgICAgICBoZXJlLT5KRkVU MmljVkdTID0gClgrICAgICAgICAgICAgICAgICAgICAgICAgKihja3QtPkNL VHJocyArIGhlcmUtPkpGRVQyZ2F0ZU5vZGUpIC0gClgrICAgICAgICAgICAg ICAgICAgICAgICAgKihja3QtPkNLVHJocyArIGhlcmUtPkpGRVQyc291cmNl Tm9kZSk7ClgrICAgICAgICAgICAgfQpYKyAgICAgICAgfQpYKyAgICB9Clgr ICAgIHJldHVybihPSyk7ClgrfQpYZGlmZiAtcnVOIC4uL3dvcmsub3JpZy9z cmMvbGliL2Rldi9qZmV0Mi9qZmV0Mml0Zi5oIC4vc3JjL2xpYi9kZXYvamZl dDIvamZldDJpdGYuaApYLS0tIC4uL3dvcmsub3JpZy9zcmMvbGliL2Rldi9q ZmV0Mi9qZmV0Mml0Zi5oCVdlZCBEZWMgMzEgMTk6MDA6MDAgMTk2OQpYKysr IC4vc3JjL2xpYi9kZXYvamZldDIvamZldDJpdGYuaAlUdWUgSnVuIDIxIDE0 OjM1OjAxIDE5OTQKWEBAIC0wLDAgKzEsODUgQEAKWCsvKioqKioqKioqKgpY K0Jhc2VkIG9uIGpmZXRpdGYuaApYK0NvcHlyaWdodCAxOTkwIFJlZ2VudHMg b2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMg cmVzZXJ2ZWQuClgrClgrTW9kaWZpZWQgdG8gYWRkIFBTIG1vZGVsIGFuZCBu ZXcgcGFyYW1ldGVyIGRlZmluaXRpb25zICggQW50aG9ueSBFLiBQYXJrZXIg KQpYKyAgIENvcHlyaWdodCAxOTk0ICBNYWNxdWFyaWUgVW5pdmVyc2l0eSwg U3lkbmV5IEF1c3RyYWxpYS4KWCsgICBweiBhbmQgZGlzdG8gbm90IHN1cHBv cnRlZApYKyoqKioqKioqKiovClgrI2lmZGVmIERFVl9qZmV0MgpYKwpYKyNp Zm5kZWYgREVWX0pGRVQyClgrI2RlZmluZSBERVZfSkZFVDIKWCsKWCsjaW5j bHVkZSAiamZldDJleHQuaCIKWCtleHRlcm4gSUZwYXJtIEpGRVQycFRhYmxl WyBdOwpYK2V4dGVybiBJRnBhcm0gSkZFVDJtUFRhYmxlWyBdOwpYK2V4dGVy biBjaGFyICpKRkVUMm5hbWVzWyBdOwpYK2V4dGVybiBpbnQgSkZFVDJwVFNp emU7ClgrZXh0ZXJuIGludCBKRkVUMm1QVFNpemU7ClgrZXh0ZXJuIGludCBK RkVUMm5TaXplOwpYK2V4dGVybiBpbnQgSkZFVDJpU2l6ZTsKWCtleHRlcm4g aW50IEpGRVQybVNpemU7ClgrClgrU1BJQ0VkZXYgSkZFVDJpbmZvID0gewpY KyAgICB7ClgrICAgICAgICAiSkZFVDIiLApYKyAgICAgICAgIlNob3J0IGNo YW5uZWwgZmllbGQgZWZmZWN0IHRyYW5zaXN0b3IiLApYKwpYKyAgICAgICAg JkpGRVQyblNpemUsClgrICAgICAgICAmSkZFVDJuU2l6ZSwKWCsgICAgICAg IEpGRVQybmFtZXMsClgrClgrICAgICAgICAmSkZFVDJwVFNpemUsClgrICAg ICAgICBKRkVUMnBUYWJsZSwKWCsKWCsgICAgICAgICZKRkVUMm1QVFNpemUs ClgrICAgICAgICBKRkVUMm1QVGFibGUsClgrCURFVl9ERUZBVUxUClgrICAg IH0sClgrClgrICAgIEpGRVQycGFyYW0sClgrICAgIEpGRVQybVBhcmFtLApY KyAgICBKRkVUMmxvYWQsClgrICAgIEpGRVQyc2V0dXAsClgrICAgIEpGRVQy dW5zZXR1cCwKWCsgICAgSkZFVDJzZXR1cCwKWCsgICAgSkZFVDJ0ZW1wLApY KyAgICBKRkVUMnRydW5jLApYKyAgICBOVUxMLApYKyAgICBKRkVUMmFjTG9h ZCwKWCsgICAgTlVMTCwKWCsgICAgSkZFVDJkZXN0cm95LApYKyNpZmRlZiBE RUxFVEVTClgrICAgIEpGRVQybURlbGV0ZSwKWCsgICAgSkZFVDJkZWxldGUs ClgrI2Vsc2UgLyogREVMRVRFUyAqLwpYKyAgICBOVUxMLApYKyAgICBOVUxM LApYKyNlbmRpZiAvKiBERUxFVEVTICovClgrICAgIEpGRVQyZ2V0aWMsClgr ICAgIEpGRVQyYXNrLApYKyAgICBKRkVUMm1Bc2ssClgrICAgIE5VTEwsIC8q IEFOX3B6ICovClgrICAgIE5VTEwsClgrICAgIE5VTEwsClgrICAgIE5VTEws ClgrICAgIE5VTEwsClgrICAgIE5VTEwsClgrICAgIE5VTEwsClgrICAgIE5V TEwsClgrICAgIE5VTEwsIC8qIEFOX2Rpc3RvICovClgrI2lmZGVmIEFOX25v aXNlClgrICAgIEpGRVQybm9pc2UsClgrI2Vsc2UJLyogQU5fbm9pc2UgKi8K WCsgICAgTlVMTCwKWCsjZW5kaWYJLyogQU5fbm9pc2UgKi8KWCsKWCsgICAg JkpGRVQyaVNpemUsClgrICAgICZKRkVUMm1TaXplClgrClgrfTsKWCsKWCsK WCsjZW5kaWYKWCsjZW5kaWYKWGRpZmYgLXJ1TiAuLi93b3JrLm9yaWcvc3Jj L2xpYi9kZXYvamZldDIvamZldDJsb2FkLmMgLi9zcmMvbGliL2Rldi9qZmV0 Mi9qZmV0MmxvYWQuYwpYLS0tIC4uL3dvcmsub3JpZy9zcmMvbGliL2Rldi9q ZmV0Mi9qZmV0MmxvYWQuYwlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkKWCsr KyAuL3NyYy9saWIvZGV2L2pmZXQyL2pmZXQybG9hZC5jCVR1ZSBKdW4gMjgg MDk6MTA6NDQgMTk5NApYQEAgLTAsMCArMSwzMzcgQEAKWCsvKioqKioqKioq KgpYK0Jhc2VkIG9uIGpmZXRsb2FkLmMKWCtDb3B5cmlnaHQgMTk5MCBSZWdl bnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEuICBBbGwgcmln aHRzIHJlc2VydmVkLgpYK0F1dGhvcjogMTk4NSBUaG9tYXMgTC4gUXVhcmxl cwpYKwpYK01vZGlmaWVkIHRvIGFkZCBQUyBtb2RlbCBhbmQgbmV3IHBhcmFt ZXRlciBkZWZpbml0aW9ucyAoIEFudGhvbnkgRS4gUGFya2VyICkKWCsgICBD b3B5cmlnaHQgMTk5NCAgTWFjcXVhcmllIFVuaXZlcnNpdHksIFN5ZG5leSBB dXN0cmFsaWEuClgrICAgMTAgRmViIDE5OTQ6ICBOZXcgY29kZSBhZGRlZCB0 byBjYWxsIHBzbW9kZWwuYyByb3V0aW5lcwpYKyoqKioqKioqKiovClgrClgr I2luY2x1ZGUgInNwaWNlLmgiClgrI2luY2x1ZGUgPHN0ZGlvLmg+ClgrI2lu Y2x1ZGUgInV0aWwuaCIKWCsjaW5jbHVkZSAiY2t0ZGVmcy5oIgpYKyNpbmNs dWRlICJqZmV0MmRlZnMuaCIKWCsjaW5jbHVkZSAiY29uc3QuaCIKWCsjaW5j bHVkZSAidHJhbmRlZnMuaCIKWCsjaW5jbHVkZSAic3BlcnJvci5oIgpYKyNp bmNsdWRlICJkZXZkZWZzLmgiClgrI2luY2x1ZGUgInBzbW9kZWwuaCIKWCsj aW5jbHVkZSAic3VmZml4LmgiClgrClgraW50ClgrSkZFVDJsb2FkKGluTW9k ZWwsY2t0KQpYKyAgICBHRU5tb2RlbCAqaW5Nb2RlbDsKWCsgICAgQ0tUY2ly Y3VpdCAqY2t0OwpYKyAgICAgICAgLyogYWN0dWFsbHkgbG9hZCB0aGUgY3Vy cmVudCByZXNpc3RhbmNlIHZhbHVlIGludG8gdGhlIApYKyAgICAgICAgICog c3BhcnNlIG1hdHJpeCBwcmV2aW91c2x5IHByb3ZpZGVkIApYKyAgICAgICAg ICovClgrewpYKyAgICByZWdpc3RlciBKRkVUMm1vZGVsICptb2RlbCA9IChK RkVUMm1vZGVsKilpbk1vZGVsOwpYKyAgICByZWdpc3RlciBKRkVUMmluc3Rh bmNlICpoZXJlOwpYKyAgICBkb3VibGUgY2FwZ2Q7ClgrICAgIGRvdWJsZSBj YXBnczsKWCsgICAgZG91YmxlIGNkOwpYKyAgICBkb3VibGUgY2RoYXQ7Clgr ICAgIGRvdWJsZSBjZHJlcTsKWCsgICAgZG91YmxlIGNlcTsKWCsgICAgZG91 YmxlIGNlcWdkOwpYKyAgICBkb3VibGUgY2VxZ3M7ClgrICAgIGRvdWJsZSBj ZzsKWCsgICAgZG91YmxlIGNnZDsKWCsgICAgZG91YmxlIGNnaGF0OwpYKyAg ICBkb3VibGUgY3pnZDsKWCsgICAgZG91YmxlIGN6Z2RmMjsKWCsgICAgZG91 YmxlIGN6Z3M7ClgrICAgIGRvdWJsZSBjemdzZjI7ClgrICAgIGRvdWJsZSBk ZWx2ZHM7ClgrICAgIGRvdWJsZSBkZWx2Z2Q7ClgrICAgIGRvdWJsZSBkZWx2 Z3M7ClgrICAgIGRvdWJsZSBmY3BiMjsKWCsgICAgZG91YmxlIGdkcHI7Clgr ICAgIGRvdWJsZSBnZHM7ClgrICAgIGRvdWJsZSBnZXE7ClgrICAgIGRvdWJs ZSBnZ2Q7ClgrICAgIGRvdWJsZSBnZ3M7ClgrICAgIGRvdWJsZSBnbTsKWCsg ICAgZG91YmxlIGdzcHI7ClgrICAgIGRvdWJsZSBzYXJnOwpYKyAgICBkb3Vi bGUgdHdvcDsKWCsgICAgZG91YmxlIHZkczsKWCsgICAgZG91YmxlIHZnZDsK WCsgICAgZG91YmxlIHZnczsKWCsgICAgZG91YmxlIHhmYWN0OwpYKyAgICBp bnQgaWNoZWNrOwpYKyAgICBpbnQgaWNoazE7ClgrICAgIGludCBlcnJvcjsK WCsKWCsgICAgLyogIGxvb3AgdGhyb3VnaCBhbGwgdGhlIG1vZGVscyAqLwpY KyAgICBmb3IoIDsgbW9kZWwgIT0gTlVMTDsgbW9kZWwgPSBtb2RlbC0+SkZF VDJuZXh0TW9kZWwgKSB7ClgrClgrICAgICAgICAvKiBsb29wIHRocm91Z2gg YWxsIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsICovClgrICAgICAgICBm b3IgKGhlcmUgPSBtb2RlbC0+SkZFVDJpbnN0YW5jZXM7IGhlcmUgIT0gTlVM TCA7ClgrICAgICAgICAgICAgICAgIGhlcmU9aGVyZS0+SkZFVDJuZXh0SW5z dGFuY2UpIHsKWCsKWCsgICAgICAgICAgICAvKgpYKyAgICAgICAgICAgICAq ICBkYyBtb2RlbCBwYXJhbWV0ZXJzIApYKyAgICAgICAgICAgICAqLwpYKyAg ICAgICAgICAgIGdkcHI9bW9kZWwtPkpGRVQyZHJhaW5Db25kdWN0KmhlcmUt PkpGRVQyYXJlYTsKWCsgICAgICAgICAgICBnc3ByPW1vZGVsLT5KRkVUMnNv dXJjZUNvbmR1Y3QqaGVyZS0+SkZFVDJhcmVhOwpYKyAgICAgICAgICAgIC8q ClgrICAgICAgICAgICAgICogICAgaW5pdGlhbGl6YXRpb24KWCsgICAgICAg ICAgICAgKi8KWCsgICAgICAgICAgICBpY2hlY2s9MTsKWCsgICAgICAgICAg ICBpZiggY2t0LT5DS1Rtb2RlICYgTU9ERUlOSVRTTVNJRykgewpYKyAgICAg ICAgICAgICAgICB2Z3M9ICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVU MnZncyk7ClgrICAgICAgICAgICAgICAgIHZnZD0gKihja3QtPkNLVHN0YXRl MCArIGhlcmUtPkpGRVQydmdkKTsKWCsgICAgICAgICAgICB9IGVsc2UgaWYg KGNrdC0+Q0tUbW9kZSAmIE1PREVJTklUVFJBTikgewpYKyAgICAgICAgICAg ICAgICB2Z3M9ICooY2t0LT5DS1RzdGF0ZTEgKyBoZXJlLT5KRkVUMnZncyk7 ClgrICAgICAgICAgICAgICAgIHZnZD0gKihja3QtPkNLVHN0YXRlMSArIGhl cmUtPkpGRVQydmdkKTsKWCsgICAgICAgICAgICB9IGVsc2UgaWYgKCAoY2t0 LT5DS1Rtb2RlICYgTU9ERUlOSVRKQ1QpICYmClgrICAgICAgICAgICAgICAg ICAgICAoY2t0LT5DS1Rtb2RlICYgTU9ERVRSQU5PUCkgJiYKWCsgICAgICAg ICAgICAgICAgICAgIChja3QtPkNLVG1vZGUgJiBNT0RFVUlDKSApIHsKWCsg ICAgICAgICAgICAgICAgdmRzPW1vZGVsLT5KRkVUMnR5cGUqaGVyZS0+SkZF VDJpY1ZEUzsKWCsgICAgICAgICAgICAgICAgdmdzPW1vZGVsLT5KRkVUMnR5 cGUqaGVyZS0+SkZFVDJpY1ZHUzsKWCsgICAgICAgICAgICAgICAgdmdkPXZn cy12ZHM7ClgrICAgICAgICAgICAgfSBlbHNlIGlmICggKGNrdC0+Q0tUbW9k ZSAmIE1PREVJTklUSkNUKSAmJgpYKyAgICAgICAgICAgICAgICAgICAgKGhl cmUtPkpGRVQyb2ZmID09IDApICApIHsKWCsgICAgICAgICAgICAgICAgdmdz ID0gLTE7ClgrICAgICAgICAgICAgICAgIHZnZCA9IC0xOwpYKyAgICAgICAg ICAgIH0gZWxzZSBpZiggKGNrdC0+Q0tUbW9kZSAmIE1PREVJTklUSkNUKSB8 fApYKyAgICAgICAgICAgICAgICAgICAgKChja3QtPkNLVG1vZGUgJiBNT0RF SU5JVEZJWCkgJiYgKGhlcmUtPkpGRVQyb2ZmKSkpIHsKWCsgICAgICAgICAg ICAgICAgdmdzID0gMDsKWCsgICAgICAgICAgICAgICAgdmdkID0gMDsKWCsg ICAgICAgICAgICB9IGVsc2UgewpYKyNpZm5kZWYgUFJFRElDVE9SClgrICAg ICAgICAgICAgICAgIGlmKGNrdC0+Q0tUbW9kZSAmIE1PREVJTklUUFJFRCkg ewpYKyAgICAgICAgICAgICAgICAgICAgeGZhY3Q9Y2t0LT5DS1RkZWx0YS9j a3QtPkNLVGRlbHRhT2xkWzFdOwpYKyAgICAgICAgICAgICAgICAgICAgKihj a3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQydmdzKT0gClgrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICooY2t0LT5DS1RzdGF0ZTEgKyBoZXJlLT5K RkVUMnZncyk7ClgrICAgICAgICAgICAgICAgICAgICB2Z3M9KDEreGZhY3Qp KiAqKGNrdC0+Q0tUc3RhdGUxICsgaGVyZS0+SkZFVDJ2Z3MpLXhmYWN0KgpY KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKGNrdC0+Q0tUc3RhdGUy ICsgaGVyZS0+SkZFVDJ2Z3MpOwpYKyAgICAgICAgICAgICAgICAgICAgKihj a3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQydmdkKT0gClgrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICooY2t0LT5DS1RzdGF0ZTEgKyBoZXJlLT5K RkVUMnZnZCk7ClgrICAgICAgICAgICAgICAgICAgICB2Z2Q9KDEreGZhY3Qp KiAqKGNrdC0+Q0tUc3RhdGUxICsgaGVyZS0+SkZFVDJ2Z2QpLXhmYWN0KgpY KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKGNrdC0+Q0tUc3RhdGUy ICsgaGVyZS0+SkZFVDJ2Z2QpOwpYKyAgICAgICAgICAgICAgICAgICAgKihj a3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQyY2cpPSAKWCsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKihja3QtPkNLVHN0YXRlMSArIGhlcmUtPkpG RVQyY2cpOwpYKyAgICAgICAgICAgICAgICAgICAgKihja3QtPkNLVHN0YXRl MCArIGhlcmUtPkpGRVQyY2QpPSAKWCsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKihja3QtPkNLVHN0YXRlMSArIGhlcmUtPkpGRVQyY2QpOwpYKyAg ICAgICAgICAgICAgICAgICAgKihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpG RVQyY2dkKT0KWCsgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihja3Qt PkNLVHN0YXRlMSArIGhlcmUtPkpGRVQyY2dkKTsKWCsgICAgICAgICAgICAg ICAgICAgICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMmdtKT0KWCsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKihja3QtPkNLVHN0YXRlMSAr IGhlcmUtPkpGRVQyZ20pOwpYKyAgICAgICAgICAgICAgICAgICAgKihja3Qt PkNLVHN0YXRlMCArIGhlcmUtPkpGRVQyZ2RzKT0KWCsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKihja3QtPkNLVHN0YXRlMSArIGhlcmUtPkpGRVQy Z2RzKTsKWCsgICAgICAgICAgICAgICAgICAgICooY2t0LT5DS1RzdGF0ZTAg KyBoZXJlLT5KRkVUMmdncyk9ClgrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICooY2t0LT5DS1RzdGF0ZTEgKyBoZXJlLT5KRkVUMmdncyk7ClgrICAg ICAgICAgICAgICAgICAgICAqKGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZF VDJnZ2QpPQpYKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKGNrdC0+ Q0tUc3RhdGUxICsgaGVyZS0+SkZFVDJnZ2QpOwpYKyAgICAgICAgICAgICAg ICB9IGVsc2UgewpYKyNlbmRpZiAvKlBSRURJQ1RPUiovClgrICAgICAgICAg ICAgICAgICAgICAvKgpYKyAgICAgICAgICAgICAgICAgICAgICogIGNvbXB1 dGUgbmV3IG5vbmxpbmVhciBicmFuY2ggdm9sdGFnZXMgClgrICAgICAgICAg ICAgICAgICAgICAgKi8KWCsgICAgICAgICAgICAgICAgICAgIHZncz1tb2Rl bC0+SkZFVDJ0eXBlKgpYKyAgICAgICAgICAgICAgICAgICAgICAgICgqKGNr dC0+Q0tUcmhzT2xkKyBoZXJlLT5KRkVUMmdhdGVOb2RlKS0KWCsgICAgICAg ICAgICAgICAgICAgICAgICAqKGNrdC0+Q0tUcmhzT2xkKyAKWCsgICAgICAg ICAgICAgICAgICAgICAgICBoZXJlLT5KRkVUMnNvdXJjZVByaW1lTm9kZSkp OwpYKyAgICAgICAgICAgICAgICAgICAgdmdkPW1vZGVsLT5KRkVUMnR5cGUq ClgrICAgICAgICAgICAgICAgICAgICAgICAgKCooY2t0LT5DS1RyaHNPbGQr aGVyZS0+SkZFVDJnYXRlTm9kZSktClgrICAgICAgICAgICAgICAgICAgICAg ICAgKihja3QtPkNLVHJoc09sZCsKWCsgICAgICAgICAgICAgICAgICAgICAg ICBoZXJlLT5KRkVUMmRyYWluUHJpbWVOb2RlKSk7ClgrI2lmbmRlZiBQUkVE SUNUT1IKWCsgICAgICAgICAgICAgICAgfQpYKyNlbmRpZiAvKlBSRURJQ1RP UiovClgrICAgICAgICAgICAgICAgIGRlbHZncz12Z3MtICooY2t0LT5DS1Rz dGF0ZTAgKyBoZXJlLT5KRkVUMnZncyk7ClgrICAgICAgICAgICAgICAgIGRl bHZnZD12Z2QtICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMnZnZCk7 ClgrICAgICAgICAgICAgICAgIGRlbHZkcz1kZWx2Z3MtZGVsdmdkOwpYKyAg ICAgICAgICAgICAgICBjZ2hhdD0gKihja3QtPkNLVHN0YXRlMCArIGhlcmUt PkpGRVQyY2cpKyAKWCsgICAgICAgICAgICAgICAgICAgICAgICAqKGNrdC0+ Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJnZ2QpKmRlbHZnZCsKWCsgICAgICAg ICAgICAgICAgICAgICAgICAqKGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZF VDJnZ3MpKmRlbHZnczsKWCsgICAgICAgICAgICAgICAgY2RoYXQ9ICooY2t0 LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMmNkKSsKWCsgICAgICAgICAgICAg ICAgICAgICAgICAqKGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJnbSkq ZGVsdmdzKwpYKyAgICAgICAgICAgICAgICAgICAgICAgICooY2t0LT5DS1Rz dGF0ZTAgKyBoZXJlLT5KRkVUMmdkcykqZGVsdmRzLQpYKyAgICAgICAgICAg ICAgICAgICAgICAgICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMmdn ZCkqZGVsdmdkOwpYKyAgICAgICAgICAgICAgICAvKgpYKyAgICAgICAgICAg ICAgICAgKiAgIGJ5cGFzcyBpZiBzb2x1dGlvbiBoYXMgbm90IGNoYW5nZWQg ClgrICAgICAgICAgICAgICAgICAqLwpYKyAgICAgICAgICAgICAgICBpZigo Y2t0LT5DS1RieXBhc3MpICYmClgrICAgICAgICAgICAgICAgICAgICAoIShj a3QtPkNLVG1vZGUgJiBNT0RFSU5JVFBSRUQpKSAmJgpYKyAgICAgICAgICAg ICAgICAgICAgKEZBQlMoZGVsdmdzKSA8IGNrdC0+Q0tUcmVsdG9sKk1BWChG QUJTKHZncyksClgrICAgICAgICAgICAgICAgICAgICAgICAgRkFCUygqKGNr dC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJ2Z3MpKSkrClgrICAgICAgICAg ICAgICAgICAgICAgICAgY2t0LT5DS1R2b2x0VG9sKSApClgrICAgICAgICBp ZiAoIChGQUJTKGRlbHZnZCkgPCBja3QtPkNLVHJlbHRvbCpNQVgoRkFCUyh2 Z2QpLApYKyAgICAgICAgICAgICAgICAgICAgICAgIEZBQlMoKihja3QtPkNL VHN0YXRlMCArIGhlcmUtPkpGRVQydmdkKSkpKwpYKyAgICAgICAgICAgICAg ICAgICAgICAgIGNrdC0+Q0tUdm9sdFRvbCkpClgrICAgICAgICBpZiAoIChG QUJTKGNnaGF0LSooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMmNnKSkg ClgrICAgICAgICAgICAgICAgICAgICAgICAgPCBja3QtPkNLVHJlbHRvbCpN QVgoRkFCUyhjZ2hhdCksClgrICAgICAgICAgICAgICAgICAgICAgICAgRkFC UygqKGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJjZykpKSsKWCsgICAg ICAgICAgICAgICAgICAgICAgICBja3QtPkNLVGFic3RvbCkgKSBpZiAoIC8q IGhhY2sgLSBleHByZXNzaW9uIHRvbyBiaWcgKi8KWCsgICAgICAgICAgICAg ICAgICAgIChGQUJTKGNkaGF0LSooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5K RkVUMmNkKSkKWCsgICAgICAgICAgICAgICAgICAgICAgICA8IGNrdC0+Q0tU cmVsdG9sKk1BWChGQUJTKGNkaGF0KSwKWCsgICAgICAgICAgICAgICAgICAg ICAgICBGQUJTKCooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMmNkKSkp KwpYKyAgICAgICAgICAgICAgICAgICAgICAgIGNrdC0+Q0tUYWJzdG9sKSAp IHsKWCsKWCsgICAgICAgICAgICAgICAgICAgIC8qIHdlIGNhbiBkbyBhIGJ5 cGFzcyAqLwpYKyAgICAgICAgICAgICAgICAgICAgdmdzPSAqKGNrdC0+Q0tU c3RhdGUwICsgaGVyZS0+SkZFVDJ2Z3MpOwpYKyAgICAgICAgICAgICAgICAg ICAgdmdkPSAqKGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJ2Z2QpOwpY KyAgICAgICAgICAgICAgICAgICAgdmRzPSB2Z3MtdmdkOwpYKyAgICAgICAg ICAgICAgICAgICAgY2c9ICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVU MmNnKTsKWCsgICAgICAgICAgICAgICAgICAgIGNkPSAqKGNrdC0+Q0tUc3Rh dGUwICsgaGVyZS0+SkZFVDJjZCk7ClgrICAgICAgICAgICAgICAgICAgICBj Z2Q9ICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMmNnZCk7ClgrICAg ICAgICAgICAgICAgICAgICBnbT0gKihja3QtPkNLVHN0YXRlMCArIGhlcmUt PkpGRVQyZ20pOwpYKyAgICAgICAgICAgICAgICAgICAgZ2RzPSAqKGNrdC0+ Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJnZHMpOwpYKyAgICAgICAgICAgICAg ICAgICAgZ2dzPSAqKGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJnZ3Mp OwpYKyAgICAgICAgICAgICAgICAgICAgZ2dkPSAqKGNrdC0+Q0tUc3RhdGUw ICsgaGVyZS0+SkZFVDJnZ2QpOwpYKyAgICAgICAgICAgICAgICAgICAgZ290 byBsb2FkOwpYKyAgICAgICAgICAgICAgICB9ClgrICAgICAgICAgICAgICAg IC8qClgrICAgICAgICAgICAgICAgICAqICBsaW1pdCBub25saW5lYXIgYnJh bmNoIHZvbHRhZ2VzIApYKyAgICAgICAgICAgICAgICAgKi8KWCsgICAgICAg ICAgICAgICAgaWNoazE9MTsKWCsgICAgICAgICAgICAgICAgdmdzID0gREVW cG5qbGltKHZncywqKGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJ2Z3Mp LApYKyAgICAgICAgICAgICAgICAgICAgICAgIChoZXJlLT5KRkVUMnRlbXAq Q09OU1RLb3ZlclEpLCBoZXJlLT5KRkVUMnZjcml0LCAmaWNoZWNrKTsKWCsg ICAgICAgICAgICAgICAgdmdkID0gREVWcG5qbGltKHZnZCwqKGNrdC0+Q0tU c3RhdGUwICsgaGVyZS0+SkZFVDJ2Z2QpLApYKyAgICAgICAgICAgICAgICAg ICAgICAgIChoZXJlLT5KRkVUMnRlbXAqQ09OU1RLb3ZlclEpLCBoZXJlLT5K RkVUMnZjcml0LCZpY2hrMSk7ClgrICAgICAgICAgICAgICAgIGlmIChpY2hr MSA9PSAxKSB7ClgrICAgICAgICAgICAgICAgICAgICBpY2hlY2s9MTsKWCsg ICAgICAgICAgICAgICAgfQpYKyAgICAgICAgICAgICAgICB2Z3MgPSBERVZm ZXRsaW0odmdzLCooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMnZncyks ClgrICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWwtPkpGRVQydnRvKTsK WCsgICAgICAgICAgICAgICAgdmdkID0gREVWZmV0bGltKHZnZCwqKGNrdC0+ Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJ2Z2QpLApYKyAgICAgICAgICAgICAg ICAgICAgICAgIG1vZGVsLT5KRkVUMnZ0byk7ClgrICAgICAgICAgICAgfQpY KyAgICAgICAgICAgIC8qClgrICAgICAgICAgICAgICogICBkZXRlcm1pbmUg ZGMgY3VycmVudCBhbmQgZGVyaXZhdGl2ZXMgClgrICAgICAgICAgICAgICov ClgrICAgICAgICAgICAgdmRzPXZncy12Z2Q7ClgrICAgICAgICAgICAgaWYg KHZkcyA8IDAuMCkgewpYKyAgICAgICAgICAgICAgIGNkID0gLVBTaWRzKGNr dCwgbW9kZWwsIGhlcmUsIHZnZCwgdmdzLApYKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmY2dkLCAmY2csICZnZ2QsICZnZ3MsICZnbSwgJmdkcyk7 ClgrICAgICAgICAgICAgICAgZ2RzICs9IGdtOwpYKyAgICAgICAgICAgICAg IGdtICA9IC1nbTsKWCsgICAgICAgICAgICB9IGVsc2UgewpYKyAgICAgICAg ICAgICAgIGNkID0gIFBTaWRzKGNrdCwgbW9kZWwsIGhlcmUsIHZncywgdmdk LCAKWCsgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNnLCAmY2dkLCAm Z2dzLCAmZ2dkLCAmZ20sICZnZHMpOwpYKyAgICAgICAgICAgIH0KWCsgICAg ICAgICAgICBjZyA9IGNnICsgY2dkOwpYKyAgICAgICAgICAgIGNkID0gY2Qg LSBjZ2Q7ClgrClgrICAgICAgICAgICAgaWYgKCAoY2t0LT5DS1Rtb2RlICYg KE1PREVUUkFOIHwgTU9ERUFDIHwgTU9ERUlOSVRTTVNJRykgKSB8fApYKyAg ICAgICAgICAgICAgICAgICAgKChja3QtPkNLVG1vZGUgJiBNT0RFVFJBTk9Q KSAmJiAoY2t0LT5DS1Rtb2RlICYgTU9ERVVJQykpICl7ClgrICAgICAgICAg ICAgICAgIC8qIApYKyAgICAgICAgICAgICAgICAgKiAgICBjaGFyZ2Ugc3Rv cmFnZSBlbGVtZW50cyAKWCsgICAgICAgICAgICAgICAgICovClgrICAgICAg ICAgICAgICAgIGRvdWJsZSBjYXBkcyA9IG1vZGVsLT5KRkVUMmNhcGRzKmhl cmUtPkpGRVQyYXJlYTsKWCsKWCsgICAgICAgICAgICAgICAgUFNjaGFyZ2Uo Y2t0LCBtb2RlbCwgaGVyZSwgdmdzLCB2Z2QsICZjYXBncywgJmNhcGdkKTsK WCsKWCsgICAgICAgICAgICAgICAgKihja3QtPkNLVHN0YXRlMCArIGhlcmUt PkpGRVQycWRzKSA9IGNhcGRzICogdmRzOwpYKyAgICAgICAgICAgIApYKyAg ICAgICAgICAgICAgICAvKgpYKyAgICAgICAgICAgICAgICAgKiAgIHN0b3Jl IHNtYWxsLXNpZ25hbCBwYXJhbWV0ZXJzIApYKyAgICAgICAgICAgICAgICAg Ki8KWCsgICAgICAgICAgICAgICAgaWYoICghKGNrdC0+Q0tUbW9kZSAmIE1P REVUUkFOT1ApKSB8fCAKWCsgICAgICAgICAgICAgICAgICAgICAgICAoIShj a3QtPkNLVG1vZGUgJiBNT0RFVUlDKSkgKSB7ClgrICAgICAgICAgICAgICAg ICAgICBpZihja3QtPkNLVG1vZGUgJiBNT0RFSU5JVFNNU0lHKSB7ClgrICAg ICAgICAgICAgICAgICAgICAgICAgKihja3QtPkNLVHN0YXRlMCArIGhlcmUt PkpGRVQycWdzKSA9IGNhcGdzOwpYKyAgICAgICAgICAgICAgICAgICAgICAg ICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMnFnZCkgPSBjYXBnZDsK WCsgICAgICAgICAgICAgICAgICAgICAgICAqKGNrdC0+Q0tUc3RhdGUwICsg aGVyZS0+SkZFVDJxZHMpID0gY2FwZHM7ClgrICAgICAgICAgICAgICAgICAg ICAgICAgY29udGludWU7IC8qZ28gdG8gMTAwMCovClgrICAgICAgICAgICAg ICAgICAgICB9ClgrICAgICAgICAgICAgICAgICAgICAvKgpYKyAgICAgICAg ICAgICAgICAgICAgICogICB0cmFuc2llbnQgYW5hbHlzaXMgClgrICAgICAg ICAgICAgICAgICAgICAgKi8KWCsgICAgICAgICAgICAgICAgICAgIGlmKGNr dC0+Q0tUbW9kZSAmIE1PREVJTklUVFJBTikgewpYKyAgICAgICAgICAgICAg ICAgICAgICAgICooY2t0LT5DS1RzdGF0ZTEgKyBoZXJlLT5KRkVUMnFncykg PQpYKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKihja3QtPkNL VHN0YXRlMCArIGhlcmUtPkpGRVQycWdzKTsKWCsgICAgICAgICAgICAgICAg ICAgICAgICAqKGNrdC0+Q0tUc3RhdGUxICsgaGVyZS0+SkZFVDJxZ2QpID0K WCsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICooY2t0LT5DS1Rz dGF0ZTAgKyBoZXJlLT5KRkVUMnFnZCk7ClgrICAgICAgICAgICAgICAgICAg ICAgICAgKihja3QtPkNLVHN0YXRlMSArIGhlcmUtPkpGRVQycWRzKSA9Clgr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKGNrdC0+Q0tUc3Rh dGUwICsgaGVyZS0+SkZFVDJxZHMpOwpYKyAgICAgICAgICAgICAgICAgICAg fQpYKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBOSWludGVncmF0ZShj a3QsJmdlcSwmY2VxLGNhcGdzLGhlcmUtPkpGRVQycWdzKTsKWCsgICAgICAg ICAgICAgICAgICAgIGlmKGVycm9yKSByZXR1cm4oZXJyb3IpOwpYKyAgICAg ICAgICAgICAgICAgICAgZ2dzID0gZ2dzICsgZ2VxOwpYKyAgICAgICAgICAg ICAgICAgICAgY2cgPSBjZyArICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5K RkVUMmNxZ3MpOwpYKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBOSWlu dGVncmF0ZShja3QsJmdlcSwmY2VxLGNhcGdkLGhlcmUtPkpGRVQycWdkKTsK WCsgICAgICAgICAgICAgICAgICAgIGlmKGVycm9yKSByZXR1cm4oZXJyb3Ip OwpYKyAgICAgICAgICAgICAgICAgICAgZ2dkID0gZ2dkICsgZ2VxOwpYKyAg ICAgICAgICAgICAgICAgICAgY2cgPSBjZyArICooY2t0LT5DS1RzdGF0ZTAg KyBoZXJlLT5KRkVUMmNxZ2QpOwpYKyAgICAgICAgICAgICAgICAgICAgY2Qg PSBjZCAtICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMmNxZ2QpOwpY KyAgICAgICAgICAgICAgICAgICAgY2dkID0gY2dkICsgKihja3QtPkNLVHN0 YXRlMCArIGhlcmUtPkpGRVQyY3FnZCk7ClgrICAgICAgICAgICAgICAgICAg ICBlcnJvciA9IE5JaW50ZWdyYXRlKGNrdCwmZ2VxLCZjZXEsY2FwZHMsaGVy ZS0+SkZFVDJxZHMpOwpYKyAgICAgICAgICAgICAgICAgICAgY2QgPSBjZCAr ICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMmNxZHMpOwpYKyAgICAg ICAgICAgICAgICAgICAgaWYoZXJyb3IpIHJldHVybihlcnJvcik7ClgrICAg ICAgICAgICAgICAgICAgICBpZiAoY2t0LT5DS1Rtb2RlICYgTU9ERUlOSVRU UkFOKSB7ClgrICAgICAgICAgICAgICAgICAgICAgICAgKihja3QtPkNLVHN0 YXRlMSArIGhlcmUtPkpGRVQyY3FncykgPQpYKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQy Y3Fncyk7ClgrICAgICAgICAgICAgICAgICAgICAgICAgKihja3QtPkNLVHN0 YXRlMSArIGhlcmUtPkpGRVQyY3FnZCkgPQpYKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQy Y3FnZCk7ClgrICAgICAgICAgICAgICAgICAgICAgICAgKihja3QtPkNLVHN0 YXRlMSArIGhlcmUtPkpGRVQyY3FkcykgPQpYKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQy Y3Fkcyk7ClgrICAgICAgICAgICAgICAgICAgICB9ClgrICAgICAgICAgICAg ICAgIH0KWCsgICAgICAgICAgICB9ClgrICAgICAgICAgICAgLyoKWCsgICAg ICAgICAgICAgKiAgY2hlY2sgY29udmVyZ2VuY2UgClgrICAgICAgICAgICAg ICovClgrICAgICAgICAgICAgaWYoICghKGNrdC0+Q0tUbW9kZSAmIE1PREVJ TklURklYKSkgfCAoIShja3QtPkNLVG1vZGUgJiBNT0RFVUlDKSkpIHsKWCsg ICAgICAgICAgICAgICAgaWYoIChpY2hlY2sgPT0gMSkKWCsjaWZuZGVmIE5F V0NPTlYKWCsvKiBYWFggKi8KWCsjZW5kaWYgLypORVdDT05WKi8KWCsgICAg ICAgICAgICAgICAgICAgICAgICB8fCAoRkFCUyhjZ2hhdC1jZykgPj0gY2t0 LT5DS1RyZWx0b2wqClgrICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1B WChGQUJTKGNnaGF0KSxGQUJTKGNnKSkrY2t0LT5DS1RhYnN0b2wpIHx8Clgr ICAgICAgICAgICAgICAgICAgICAgICAgKEZBQlMoY2RoYXQtY2QpID4gY2t0 LT5DS1RyZWx0b2wqClgrICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1B WChGQUJTKGNkaGF0KSxGQUJTKGNkKSkrY2t0LT5DS1RhYnN0b2wpIApYKyAg ICAgICAgICAgICAgICAgICAgICAgICkgewpYKyAgICAgICAgICAgICAgICAg ICAgY2t0LT5DS1Rub25jb24rKzsKWCsJCSAgICBja3QtPkNLVHRyb3VibGVF bHQgPSAoR0VOaW5zdGFuY2UgKikgaGVyZTsKWCsgICAgICAgICAgICAgICAg fQpYKyAgICAgICAgICAgIH0KWCsgICAgICAgICAgICAqKGNrdC0+Q0tUc3Rh dGUwICsgaGVyZS0+SkZFVDJ2Z3MpID0gdmdzOwpYKyAgICAgICAgICAgICoo Y2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMnZnZCkgPSB2Z2Q7ClgrICAg ICAgICAgICAgKihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQyY2cpID0g Y2c7ClgrICAgICAgICAgICAgKihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpG RVQyY2QpID0gY2Q7ClgrICAgICAgICAgICAgKihja3QtPkNLVHN0YXRlMCAr IGhlcmUtPkpGRVQyY2dkKSA9IGNnZDsKWCsgICAgICAgICAgICAqKGNrdC0+ Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJnbSkgPSBnbTsKWCsgICAgICAgICAg ICAqKGNrdC0+Q0tUc3RhdGUwICsgaGVyZS0+SkZFVDJnZHMpID0gZ2RzOwpY KyAgICAgICAgICAgICooY2t0LT5DS1RzdGF0ZTAgKyBoZXJlLT5KRkVUMmdn cykgPSBnZ3M7ClgrICAgICAgICAgICAgKihja3QtPkNLVHN0YXRlMCArIGhl cmUtPkpGRVQyZ2dkKSA9IGdnZDsKWCsgICAgICAgICAgICAvKgpYKyAgICAg ICAgICAgICAqICAgIGxvYWQgY3VycmVudCB2ZWN0b3IKWCsgICAgICAgICAg ICAgKi8KWCtsb2FkOgpYKyAgICAgICAgICAgIGNlcWdkPW1vZGVsLT5KRkVU MnR5cGUqKGNnZC1nZ2QqdmdkKTsKWCsgICAgICAgICAgICBjZXFncz1tb2Rl bC0+SkZFVDJ0eXBlKigoY2ctY2dkKS1nZ3MqdmdzKTsKWCsgICAgICAgICAg ICBjZHJlcT1tb2RlbC0+SkZFVDJ0eXBlKigoY2QrY2dkKS1nZHMqdmRzLWdt KnZncyk7ClgrICAgICAgICAgICAgKihja3QtPkNLVHJocyArIGhlcmUtPkpG RVQyZ2F0ZU5vZGUpICs9ICgtY2VxZ3MtY2VxZ2QpOwpYKyAgICAgICAgICAg ICooY2t0LT5DS1RyaHMgKyBoZXJlLT5KRkVUMmRyYWluUHJpbWVOb2RlKSAr PQpYKyAgICAgICAgICAgICAgICAgICAgKC1jZHJlcStjZXFnZCk7ClgrICAg ICAgICAgICAgKihja3QtPkNLVHJocyArIGhlcmUtPkpGRVQyc291cmNlUHJp bWVOb2RlKSArPQpYKyAgICAgICAgICAgICAgICAgICAgKGNkcmVxK2NlcWdz KTsKWCsgICAgICAgICAgICAvKgpYKyAgICAgICAgICAgICAqICAgIGxvYWQg eSBtYXRyaXggClgrICAgICAgICAgICAgICovClgrICAgICAgICAgICAgKiho ZXJlLT5KRkVUMmRyYWluRHJhaW5QcmltZVB0cikgKz0gKC1nZHByKTsKWCsg ICAgICAgICAgICAqKGhlcmUtPkpGRVQyZ2F0ZURyYWluUHJpbWVQdHIpICs9 ICgtZ2dkKTsKWCsgICAgICAgICAgICAqKGhlcmUtPkpGRVQyZ2F0ZVNvdXJj ZVByaW1lUHRyKSArPSAoLWdncyk7ClgrICAgICAgICAgICAgKihoZXJlLT5K RkVUMnNvdXJjZVNvdXJjZVByaW1lUHRyKSArPSAoLWdzcHIpOwpYKyAgICAg ICAgICAgICooaGVyZS0+SkZFVDJkcmFpblByaW1lRHJhaW5QdHIpICs9ICgt Z2Rwcik7ClgrICAgICAgICAgICAgKihoZXJlLT5KRkVUMmRyYWluUHJpbWVH YXRlUHRyKSArPSAoZ20tZ2dkKTsKWCsgICAgICAgICAgICAqKGhlcmUtPkpG RVQyZHJhaW5QcmltZVNvdXJjZVByaW1lUHRyKSArPSAoLWdkcy1nbSk7Clgr ICAgICAgICAgICAgKihoZXJlLT5KRkVUMnNvdXJjZVByaW1lR2F0ZVB0cikg Kz0gKC1nZ3MtZ20pOwpYKyAgICAgICAgICAgICooaGVyZS0+SkZFVDJzb3Vy Y2VQcmltZVNvdXJjZVB0cikgKz0gKC1nc3ByKTsKWCsgICAgICAgICAgICAq KGhlcmUtPkpGRVQyc291cmNlUHJpbWVEcmFpblByaW1lUHRyKSArPSAoLWdk cyk7ClgrICAgICAgICAgICAgKihoZXJlLT5KRkVUMmRyYWluRHJhaW5QdHIp ICs9IChnZHByKTsKWCsgICAgICAgICAgICAqKGhlcmUtPkpGRVQyZ2F0ZUdh dGVQdHIpICs9IChnZ2QrZ2dzKTsKWCsgICAgICAgICAgICAqKGhlcmUtPkpG RVQyc291cmNlU291cmNlUHRyKSArPSAoZ3Nwcik7ClgrICAgICAgICAgICAg KihoZXJlLT5KRkVUMmRyYWluUHJpbWVEcmFpblByaW1lUHRyKSArPSAoZ2Rw citnZHMrZ2dkKTsKWCsgICAgICAgICAgICAqKGhlcmUtPkpGRVQyc291cmNl UHJpbWVTb3VyY2VQcmltZVB0cikgKz0gKGdzcHIrZ2RzK2dtK2dncyk7Clgr ICAgICAgICB9ClgrICAgIH0KWCsgICAgcmV0dXJuKE9LKTsKWCt9ClhkaWZm IC1ydU4gLi4vd29yay5vcmlnL3NyYy9saWIvZGV2L2pmZXQyL2pmZXQybWFz ay5jIC4vc3JjL2xpYi9kZXYvamZldDIvamZldDJtYXNrLmMKWC0tLSAuLi93 b3JrLm9yaWcvc3JjL2xpYi9kZXYvamZldDIvamZldDJtYXNrLmMJV2VkIERl YyAzMSAxOTowMDowMCAxOTY5ClgrKysgLi9zcmMvbGliL2Rldi9qZmV0Mi9q ZmV0Mm1hc2suYwlUdWUgSnVuIDIxIDE0OjM1OjA3IDE5OTQKWEBAIC0wLDAg KzEsNTkgQEAKWCsvKioqKioqKioqKgpYK0Jhc2VkIG9uIGpmZXRtYXNrLmMK WCtDb3B5cmlnaHQgMTk5MCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9m IENhbGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgpYK0F1dGhvcjog MTk4NyBNYXRoZXcgTGV3IGFuZCBUaG9tYXMgTC4gUXVhcmxlcwpYKwpYK01v ZGlmaWVkIHRvIGFkZCBQUyBtb2RlbCBhbmQgbmV3IHBhcmFtZXRlciBkZWZp bml0aW9ucyAoIEFudGhvbnkgRS4gUGFya2VyICkKWCsgICBDb3B5cmlnaHQg MTk5NCAgTWFjcXVhcmllIFVuaXZlcnNpdHksIFN5ZG5leSBBdXN0cmFsaWEu ClgrICAgMTAgRmViIDE5OTQ6IEFkZGVkIGNhbGwgdG8gamZldHBhcm0uaApY KyoqKioqKioqKiovClgrLyoKWCsgKi8KWCsKWCsjaW5jbHVkZSAic3BpY2Uu aCIKWCsjaW5jbHVkZSA8c3RkaW8uaD4KWCsjaW5jbHVkZSAiY29uc3QuaCIK WCsjaW5jbHVkZSAiaWZzaW0uaCIKWCsjaW5jbHVkZSAiY2t0ZGVmcy5oIgpY KyNpbmNsdWRlICJkZXZkZWZzLmgiClgrI2luY2x1ZGUgImpmZXQyZGVmcy5o IgpYKyNpbmNsdWRlICJzcGVycm9yLmgiClgrI2luY2x1ZGUgInN1ZmZpeC5o IgpYKwpYKwpYKy8qQVJHU1VTRUQqLwpYK2ludApYK0pGRVQybUFzayhja3Qs aW5Nb2RlbCx3aGljaCx2YWx1ZSkKWCsgICAgQ0tUY2lyY3VpdCAqY2t0OwpY KyAgICBHRU5tb2RlbCAqaW5Nb2RlbDsKWCsgICAgaW50IHdoaWNoOwpYKyAg ICBJRnZhbHVlICp2YWx1ZTsKWCt7ClgrICAgIEpGRVQybW9kZWwgKm1vZGVs ID0gKEpGRVQybW9kZWwqKWluTW9kZWw7ClgrICAgIHN3aXRjaCh3aGljaCkg ewpYKyAgICAgICAgY2FzZSBKRkVUMl9NT0RfVE5PTToKWCsgICAgICAgICAg ICB2YWx1ZS0+clZhbHVlID0gbW9kZWwtPkpGRVQydG5vbS1DT05TVEN0b0s7 ClgrICAgICAgICAgICAgcmV0dXJuKE9LKTsKWCsgClgrI2RlZmluZSBQQVJB TShjb2RlLGlkLGZsYWcscmVmLGRlZmF1bHQsZGVzY3JpcCkgY2FzZSBpZDog XApYKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUt PnJWYWx1ZSA9IG1vZGVsLT5yZWY7IHJldHVybihPSyk7ClgrI2luY2x1ZGUg ImpmZXQycGFybS5oIgpYKyAKWCsgICAgICAgIGNhc2UgSkZFVDJfTU9EX0RS QUlOQ09ORFVDVDoKWCsgICAgICAgICAgICB2YWx1ZS0+clZhbHVlID0gbW9k ZWwtPkpGRVQyZHJhaW5Db25kdWN0OwpYKyAgICAgICAgICAgIHJldHVybihP Syk7ClgrICAgICAgICBjYXNlIEpGRVQyX01PRF9TT1VSQ0VDT05EVUNUOgpY KyAgICAgICAgICAgIHZhbHVlLT5yVmFsdWUgPSBtb2RlbC0+SkZFVDJzb3Vy Y2VDb25kdWN0OwpYKyAgICAgICAgICAgIHJldHVybihPSyk7ClgrICAgICAg ICBjYXNlIEpGRVQyX01PRF9UWVBFOgpYKwkgICAgaWYgKG1vZGVsLT5KRkVU MnR5cGUgPT0gTkpGKQpYKyAgICAgICAgICAgICAgICB2YWx1ZS0+c1ZhbHVl ID0gIm5qZiI7ClgrCSAgICBlbHNlClgrICAgICAgICAgICAgICAgIHZhbHVl LT5zVmFsdWUgPSAicGpmIjsKWCsgICAgICAgICAgICByZXR1cm4oT0spOwpY KyAgICAgICAgZGVmYXVsdDoKWCsgICAgICAgICAgICByZXR1cm4oRV9CQURQ QVJNKTsKWCsgICAgfQpYKyAgICAvKiBOT1RSRUFDSEVEICovClgrfQpYKwpY ZGlmZiAtcnVOIC4uL3dvcmsub3JpZy9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0 Mm1kZWwuYyAuL3NyYy9saWIvZGV2L2pmZXQyL2pmZXQybWRlbC5jClgtLS0g Li4vd29yay5vcmlnL3NyYy9saWIvZGV2L2pmZXQyL2pmZXQybWRlbC5jCVdl ZCBEZWMgMzEgMTk6MDA6MDAgMTk2OQpYKysrIC4vc3JjL2xpYi9kZXYvamZl dDIvamZldDJtZGVsLmMJVHVlIEp1biAyMSAxNDozNToxMSAxOTk0ClhAQCAt MCwwICsxLDQ5IEBAClgrLyoqKioqKioqKioKWCtiYXNlZCBvbiBqZmV0bWRl bC5jClgrQ29weXJpZ2h0IDE5OTAgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0 eSBvZiBDYWxpZm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KWCtBdXRo b3I6IDE5ODUgVGhvbWFzIEwuIFF1YXJsZXMKWCsKWCtNb2RpZmllZCB0byBq ZmV0MiBmb3IgUFMgbW9kZWwgZGVmaW5pdGlvbiAoIEFudGhvbnkgRS4gUGFy a2VyICkKWCsgICBDb3B5cmlnaHQgMTk5NCAgTWFjcXVhcmllIFVuaXZlcnNp dHksIFN5ZG5leSBBdXN0cmFsaWEuClgrKioqKioqKioqKi8KWCsvKgpYKyAq LwpYKwpYKyNpbmNsdWRlICJzcGljZS5oIgpYKyNpbmNsdWRlIDxzdGRpby5o PgpYKyNpbmNsdWRlICJ1dGlsLmgiClgrI2luY2x1ZGUgImpmZXQyZGVmcy5o IgpYKyNpbmNsdWRlICJzcGVycm9yLmgiClgrI2luY2x1ZGUgInN1ZmZpeC5o IgpYKwpYKwpYK2ludApYK0pGRVQybURlbGV0ZShpbk1vZGVsLG1vZG5hbWUs a2lsbCkKWCsgICAgR0VObW9kZWwgKippbk1vZGVsOwpYKyAgICBJRnVpZCBt b2RuYW1lOwpYKyAgICBHRU5tb2RlbCAqa2lsbDsKWCt7ClgrICAgIEpGRVQy bW9kZWwgKiptb2RlbCA9IChKRkVUMm1vZGVsKiopaW5Nb2RlbDsKWCsgICAg SkZFVDJtb2RlbCAqbW9kZmFzdCA9IChKRkVUMm1vZGVsKilraWxsOwpYKyAg ICBKRkVUMmluc3RhbmNlICpoZXJlOwpYKyAgICBKRkVUMmluc3RhbmNlICpw cmV2ID0gTlVMTDsKWCsgICAgSkZFVDJtb2RlbCAqKm9sZG1vZDsKWCsgICAg b2xkbW9kID0gbW9kZWw7ClgrICAgIGZvciggOyAqbW9kZWwgOyBtb2RlbCA9 ICYoKCptb2RlbCktPkpGRVQybmV4dE1vZGVsKSkgewpYKyAgICAgICAgaWYo ICgqbW9kZWwpLT5KRkVUMm1vZE5hbWUgPT0gbW9kbmFtZSB8fCAKWCsgICAg ICAgICAgICAgICAgKG1vZGZhc3QgJiYgKm1vZGVsID09IG1vZGZhc3QpICkg Z290byBkZWxnb3Q7ClgrICAgICAgICBvbGRtb2QgPSBtb2RlbDsKWCsgICAg fQpYKyAgICByZXR1cm4oRV9OT01PRCk7ClgrClgrZGVsZ290OgpYKyAgICAq b2xkbW9kID0gKCptb2RlbCktPkpGRVQybmV4dE1vZGVsOyAvKiBjdXQgZGVs ZXRlZCBkZXZpY2Ugb3V0IG9mIGxpc3QgKi8KWCsgICAgZm9yKGhlcmUgPSAo Km1vZGVsKS0+SkZFVDJpbnN0YW5jZXMgOyBoZXJlIDsgaGVyZSA9IGhlcmUt PkpGRVQybmV4dEluc3RhbmNlKSB7ClgrICAgICAgICBpZihwcmV2KSBGUkVF KHByZXYpOwpYKyAgICAgICAgcHJldiA9IGhlcmU7ClgrICAgIH0KWCsgICAg aWYocHJldikgRlJFRShwcmV2KTsKWCsgICAgRlJFRSgqbW9kZWwpOwpYKyAg ICByZXR1cm4oT0spOwpYKwpYK30KWGRpZmYgLXJ1TiAuLi93b3JrLm9yaWcv c3JjL2xpYi9kZXYvamZldDIvamZldDJtcGFyLmMgLi9zcmMvbGliL2Rldi9q ZmV0Mi9qZmV0Mm1wYXIuYwpYLS0tIC4uL3dvcmsub3JpZy9zcmMvbGliL2Rl di9qZmV0Mi9qZmV0Mm1wYXIuYwlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkK WCsrKyAuL3NyYy9saWIvZGV2L2pmZXQyL2pmZXQybXBhci5jCVR1ZSBKdW4g MjEgMTQ6MzU6MTQgMTk5NApYQEAgLTAsMCArMSw1MCBAQApYKy8qKioqKioq KioqClgrQmFzZWQgb24gamZldG1wYXIuYwpYK0NvcHlyaWdodCAxOTkwIFJl Z2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCBy aWdodHMgcmVzZXJ2ZWQuClgrQXV0aG9yOiAxOTg1IFRob21hcyBMLiBRdWFy bGVzClgrClgrTW9kaWZpZWQgdG8gYWRkIFBTIG1vZGVsIGFuZCBuZXcgcGFy YW1ldGVyIGRlZmluaXRpb25zICggQW50aG9ueSBFLiBQYXJrZXIgKQpYKyAg IENvcHlyaWdodCAxOTk0ICBNYWNxdWFyaWUgVW5pdmVyc2l0eSwgU3lkbmV5 IEF1c3RyYWxpYS4KWCsgICAxMCBGZWIgMTk5NDogQWRkZWQgY2FsbCB0byBq ZmV0cGFybS5oClgrKioqKioqKioqKi8KWCsKWCsjaW5jbHVkZSAic3BpY2Uu aCIKWCsjaW5jbHVkZSA8c3RkaW8uaD4KWCsjaW5jbHVkZSAiY29uc3QuaCIK WCsjaW5jbHVkZSAiaWZzaW0uaCIKWCsjaW5jbHVkZSAidXRpbC5oIgpYKyNp bmNsdWRlICJqZmV0MmRlZnMuaCIKWCsjaW5jbHVkZSAic3BlcnJvci5oIgpY KyNpbmNsdWRlICJzdWZmaXguaCIKWCsKWCsKWCtpbnQKWCtKRkVUMm1QYXJh bShwYXJhbSx2YWx1ZSxpbk1vZGVscykKWCsgICAgaW50IHBhcmFtOwpYKyAg ICBJRnZhbHVlICp2YWx1ZTsKWCsgICAgR0VObW9kZWwgKmluTW9kZWxzOwpY K3sKWCsgICAgSkZFVDJtb2RlbCAqbW9kZWwgPSAoSkZFVDJtb2RlbCopaW5N b2RlbHM7ClgrICAgIHN3aXRjaChwYXJhbSkgewpYKyAgICAgICAgY2FzZSBK RkVUMl9NT0RfVE5PTToKWCsgICAgICAgICAgICBtb2RlbC0+SkZFVDJ0bm9t R2l2ZW4gPSBUUlVFOwpYKyAgICAgICAgICAgIG1vZGVsLT5KRkVUMnRub20g PSB2YWx1ZS0+clZhbHVlK0NPTlNUQ3RvSzsKWCsgICAgICAgICAgICBicmVh azsKWCsjZGVmaW5lIFBBUkFNKGNvZGUsaWQsZmxhZyxyZWYsZGVmYXVsdCxk ZXNjcmlwKSBjYXNlIGlkOiBcClgrICAgICAgICAgICAgICAgICAgICAgIG1v ZGVsLT5mbGFnID0gVFJVRTsgbW9kZWwtPnJlZiA9IHZhbHVlLT5yVmFsdWU7 IGJyZWFrOwpYKyNpbmNsdWRlICJqZmV0MnBhcm0uaCIKWCsgICAgICAgIGNh c2UgSkZFVDJfTU9EX05KRjoKWCsgICAgICAgICAgICBpZih2YWx1ZS0+aVZh bHVlKSB7ClgrICAgICAgICAgICAgICAgIG1vZGVsLT5KRkVUMnR5cGUgPSBO SkY7ClgrICAgICAgICAgICAgfQpYKyAgICAgICAgICAgIGJyZWFrOwpYKyAg ICAgICAgY2FzZSBKRkVUMl9NT0RfUEpGOgpYKyAgICAgICAgICAgIGlmKHZh bHVlLT5pVmFsdWUpIHsKWCsgICAgICAgICAgICAgICAgbW9kZWwtPkpGRVQy dHlwZSA9IFBKRjsKWCsgICAgICAgICAgICB9ClgrICAgICAgICAgICAgYnJl YWs7ClgrICAgICAgICBkZWZhdWx0OgpYKyAgICAgICAgICAgIHJldHVybihF X0JBRFBBUk0pOwpYKyAgICB9ClgrICAgIHJldHVybihPSyk7ClgrfQpYZGlm ZiAtcnVOIC4uL3dvcmsub3JpZy9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0Mm5v aS5jIC4vc3JjL2xpYi9kZXYvamZldDIvamZldDJub2kuYwpYLS0tIC4uL3dv cmsub3JpZy9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0Mm5vaS5jCVdlZCBEZWMg MzEgMTk6MDA6MDAgMTk2OQpYKysrIC4vc3JjL2xpYi9kZXYvamZldDIvamZl dDJub2kuYwlUdWUgSnVuIDIxIDE0OjM1OjE4IDE5OTQKWEBAIC0wLDAgKzEs MjIxIEBAClgrLyoqKioqKioqKioKWCtiYXNlZCBvbiBqZmV0bm9pLmMKWCtD b3B5cmlnaHQgMTk5MCBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENh bGlmb3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgpYK0F1dGhvcjogMTk4 NyBHYXJ5IFcuIE5nClgrClgrTW9kaWZpZWQgdG8gamZldDIgZm9yIFBTIG1v ZGVsIGRlZmluaXRpb24gKCBBbnRob255IEUuIFBhcmtlciApClgrICAgQ29w eXJpZ2h0IDE5OTQgIE1hY3F1YXJpZSBVbml2ZXJzaXR5LCBTeWRuZXkgQXVz dHJhbGlhLgpYKyoqKioqKioqKiovClgrClgrI2luY2x1ZGUgInNwaWNlLmgi ClgrI2luY2x1ZGUgPHN0ZGlvLmg+ClgrI2luY2x1ZGUgImpmZXQyZGVmcy5o IgpYKyNpbmNsdWRlICJja3RkZWZzLmgiClgrI2luY2x1ZGUgImZ0ZWNvbnN0 LmgiClgrI2luY2x1ZGUgImlmZXJybXNnLmgiClgrI2luY2x1ZGUgIm5vaXNl ZGVmLmgiClgrI2luY2x1ZGUgInV0aWwuaCIKWCsjaW5jbHVkZSAic3VmZml4 LmgiClgrClgrLyoKWCsgKiBKRkVUMm5vaXNlIChtb2RlLCBvcGVyYXRpb24s IGZpcnN0TW9kZWwsIGNrdCwgZGF0YSwgT25EZW5zKQpYKyAqICAgIFRoaXMg cm91dGluZSBuYW1lcyBhbmQgZXZhbHVhdGVzIGFsbCBvZiB0aGUgbm9pc2Ug c291cmNlcwpYKyAqICAgIGFzc29jaWF0ZWQgd2l0aCBKRkVUMidzLiAgSXQg c3RhcnRzIHdpdGggdGhlIG1vZGVsICpmaXJzdE1vZGVsIGFuZApYKyAqICAg IHRyYXZlcnNlcyBhbGwgb2YgaXRzIGluc3RzLiAgSXQgdGhlbiBwcm9jZWVk cyB0byBhbnkgb3RoZXIgbW9kZWxzClgrICogICAgb24gdGhlIGxpbmtlZCBs aXN0LiAgVGhlIHRvdGFsIG91dHB1dCBub2lzZSBkZW5zaXR5IGdlbmVyYXRl ZCBieQpYKyAqICAgIGFsbCBvZiB0aGUgSkZFVDIncyBpcyBzdW1tZWQgd2l0 aCB0aGUgdmFyaWFibGUgIk9uRGVucyIuClgrICovClgrClgrZXh0ZXJuIHZv aWQgICBOZXZhbFNyYygpOwpYK2V4dGVybiBkb3VibGUgTmludGVncmF0ZSgp OwpYKwpYK2ludApYK0pGRVQybm9pc2UgKG1vZGUsIG9wZXJhdGlvbiwgZ2Vu bW9kZWwsIGNrdCwgZGF0YSwgT25EZW5zKQpYKyAgICBpbnQgbW9kZTsKWCsg ICAgaW50IG9wZXJhdGlvbjsKWCsgICAgR0VObW9kZWwgKmdlbm1vZGVsOwpY KyAgICBDS1RjaXJjdWl0ICpja3Q7ClgrICAgIHJlZ2lzdGVyIE5kYXRhICpk YXRhOwpYKyAgICBkb3VibGUgKk9uRGVuczsKWCt7ClgrICAgIEpGRVQybW9k ZWwgKmZpcnN0TW9kZWwgPSAoSkZFVDJtb2RlbCAqKSBnZW5tb2RlbDsKWCsg ICAgcmVnaXN0ZXIgSkZFVDJtb2RlbCAqbW9kZWw7ClgrICAgIHJlZ2lzdGVy IEpGRVQyaW5zdGFuY2UgKmluc3Q7ClgrICAgIGNoYXIgbmFtZVtOX01YVkxO VEhdOwpYKyAgICBkb3VibGUgdGVtcE9ub2lzZTsKWCsgICAgZG91YmxlIHRl bXBJbm9pc2U7ClgrICAgIGRvdWJsZSBub2l6RGVuc1tKRkVUMk5TUkNTXTsK WCsgICAgZG91YmxlIGxuTmRlbnNbSkZFVDJOU1JDU107ClgrICAgIGludCBl cnJvcjsKWCsgICAgaW50IGk7ClgrClgrICAgIC8qIGRlZmluZSB0aGUgbmFt ZXMgb2YgdGhlIG5vaXNlIHNvdXJjZXMgKi8KWCsKWCsgICAgc3RhdGljIGNo YXIgKkpGRVQybk5hbWVzW0pGRVQyTlNSQ1NdID0geyAgICAgICAvKiBOb3Rl IHRoYXQgd2UgaGF2ZSB0byBrZWVwIHRoZSBvcmRlciAqLwpYKwkiX3JkIiwg ICAgICAgICAgICAgIC8qIG5vaXNlIGR1ZSB0byByZCAqLyAgICAgICAgLyog Y29uc2lzdGVudCB3aXRoIHRoZSBpbmRleCBkZWZpbml0aW9ucyAqLwpYKwki X3JzIiwgICAgICAgICAgICAgIC8qIG5vaXNlIGR1ZSB0byBycyAqLyAgICAg ICAgLyogaW4gSkZFVDJkZWZzLmggKi8KWCsJIl9pZCIsICAgICAgICAgICAg ICAvKiBub2lzZSBkdWUgdG8gaWQgKi8KWCsJIl8xb3ZlcmYiLCAgICAgICAg ICAvKiBmbGlja2VyICgxL2YpIG5vaXNlICovClgrCSIiICAgICAgICAgICAg ICAgICAgLyogdG90YWwgdHJhbnNpc3RvciBub2lzZSAqLwpYKyAgICB9OwpY KwpYKyAgICBmb3IgKG1vZGVsPWZpcnN0TW9kZWw7IG1vZGVsICE9IE5VTEw7 IG1vZGVsPW1vZGVsLT5KRkVUMm5leHRNb2RlbCkgewpYKwlmb3IgKGluc3Q9 bW9kZWwtPkpGRVQyaW5zdGFuY2VzOyBpbnN0ICE9IE5VTEw7IGluc3Q9aW5z dC0+SkZFVDJuZXh0SW5zdGFuY2UpIHsKWCsJICAgIHN3aXRjaCAob3BlcmF0 aW9uKSB7ClgrClgrCSAgICBjYXNlIE5fT1BFTjoKWCsKWCsJCS8qIHNlZSBp ZiB3ZSBoYXZlIHRvIHRvIHByb2R1Y2UgYSBzdW1tYXJ5IHJlcG9ydCAqLwpY KwkJLyogaWYgc28sIG5hbWUgYWxsIHRoZSBub2lzZSBnZW5lcmF0b3JzICov ClgrClgrCQlpZiAoKChOT0lTRUFOKilja3QtPkNLVGN1ckpvYiktPk5TdHBz U20gIT0gMCkgewpYKwkJICAgIHN3aXRjaCAobW9kZSkgewpYKwpYKwkJICAg IGNhc2UgTl9ERU5TOgpYKwkJCWZvciAoaT0wOyBpIDwgSkZFVDJOU1JDUzsg aSsrKSB7ClgrCQkJICAgICh2b2lkKXNwcmludGYobmFtZSwib25vaXNlXyVz JXMiLGluc3QtPkpGRVQybmFtZSxKRkVUMm5OYW1lc1tpXSk7ClgrClgrClgr ZGF0YS0+bmFtZWxpc3QgPSAoSUZ1aWQgKil0cmVhbGxvYygoY2hhciAqKWRh dGEtPm5hbWVsaXN0LChkYXRhLT5udW1QbG90cyArIDEpKnNpemVvZihJRnVp ZCkpOwpYK2lmICghZGF0YS0+bmFtZWxpc3QpIHJldHVybihFX05PTUVNKTsK WCsJCSgqKFNQZnJvbnRFbmQtPklGbmV3VWlkKSkoY2t0LApYKwkJCSYoZGF0 YS0+bmFtZWxpc3RbZGF0YS0+bnVtUGxvdHMrK10pLApYKwkJCShJRnVpZClO VUxMLG5hbWUsVUlEX09USEVSLChHRU5FUklDICoqKU5VTEwpOwpYKwkJCQkv KiB3ZSd2ZSBhZGRlZCBvbmUgbW9yZSBwbG90ICovClgrClgrClgrCQkJfQpY KwkJCWJyZWFrOwpYKwpYKwkJICAgIGNhc2UgSU5UX05PSVo6ClgrCQkJZm9y IChpPTA7IGkgPCBKRkVUMk5TUkNTOyBpKyspIHsKWCsJCQkgICAgKHZvaWQp c3ByaW50ZihuYW1lLCJvbm9pc2VfdG90YWxfJXMlcyIsaW5zdC0+SkZFVDJu YW1lLEpGRVQybk5hbWVzW2ldKTsKWCsKWCsKWCtkYXRhLT5uYW1lbGlzdCA9 IChJRnVpZCAqKXRyZWFsbG9jKChjaGFyICopZGF0YS0+bmFtZWxpc3QsKGRh dGEtPm51bVBsb3RzICsgMSkqc2l6ZW9mKElGdWlkKSk7ClgraWYgKCFkYXRh LT5uYW1lbGlzdCkgcmV0dXJuKEVfTk9NRU0pOwpYKwkJKCooU1Bmcm9udEVu ZC0+SUZuZXdVaWQpKShja3QsClgrCQkJJihkYXRhLT5uYW1lbGlzdFtkYXRh LT5udW1QbG90cysrXSksClgrCQkJKElGdWlkKU5VTEwsbmFtZSxVSURfT1RI RVIsKEdFTkVSSUMgKiopTlVMTCk7ClgrCQkJCS8qIHdlJ3ZlIGFkZGVkIG9u ZSBtb3JlIHBsb3QgKi8KWCsKWCsKWCsJCQkgICAgKHZvaWQpc3ByaW50Zihu YW1lLCJpbm9pc2VfdG90YWxfJXMlcyIsaW5zdC0+SkZFVDJuYW1lLEpGRVQy bk5hbWVzW2ldKTsKWCsKWCsKWCtkYXRhLT5uYW1lbGlzdCA9IChJRnVpZCAq KXRyZWFsbG9jKChjaGFyICopZGF0YS0+bmFtZWxpc3QsKGRhdGEtPm51bVBs b3RzICsgMSkqc2l6ZW9mKElGdWlkKSk7ClgraWYgKCFkYXRhLT5uYW1lbGlz dCkgcmV0dXJuKEVfTk9NRU0pOwpYKwkJKCooU1Bmcm9udEVuZC0+SUZuZXdV aWQpKShja3QsClgrCQkJJihkYXRhLT5uYW1lbGlzdFtkYXRhLT5udW1QbG90 cysrXSksClgrCQkJKElGdWlkKU5VTEwsbmFtZSxVSURfT1RIRVIsKEdFTkVS SUMgKiopTlVMTCk7ClgrCQkJCS8qIHdlJ3ZlIGFkZGVkIG9uZSBtb3JlIHBs b3QgKi8KWCsKWCsJCQl9ClgrCQkJYnJlYWs7ClgrCQkgICAgfQpYKwkJfQpY KwkJYnJlYWs7ClgrClgrCSAgICBjYXNlIE5fQ0FMQzoKWCsJCXN3aXRjaCAo bW9kZSkgewpYKwpYKwkJY2FzZSBOX0RFTlM6ClgrCQkgICAgTmV2YWxTcmMo Jm5vaXpEZW5zW0pGRVQyUkROT0laXSwmbG5OZGVuc1tKRkVUMlJETk9JWl0s ClgrCQkJCSBja3QsVEhFUk1OT0lTRSxpbnN0LT5KRkVUMmRyYWluUHJpbWVO b2RlLGluc3QtPkpGRVQyZHJhaW5Ob2RlLApYKwkJCQkgbW9kZWwtPkpGRVQy ZHJhaW5Db25kdWN0ICogaW5zdC0+SkZFVDJhcmVhKTsKWCsKWCsJCSAgICBO ZXZhbFNyYygmbm9pekRlbnNbSkZFVDJSU05PSVpdLCZsbk5kZW5zW0pGRVQy UlNOT0laXSwKWCsJCQkJIGNrdCxUSEVSTU5PSVNFLGluc3QtPkpGRVQyc291 cmNlUHJpbWVOb2RlLApYKwkJCQkgaW5zdC0+SkZFVDJzb3VyY2VOb2RlLG1v ZGVsLT5KRkVUMnNvdXJjZUNvbmR1Y3QqaW5zdC0+SkZFVDJhcmVhKTsKWCsK WCsJCSAgICBOZXZhbFNyYygmbm9pekRlbnNbSkZFVDJJRE5PSVpdLCZsbk5k ZW5zW0pGRVQySUROT0laXSwKWCsJCQkJIGNrdCxUSEVSTU5PSVNFLGluc3Qt PkpGRVQyZHJhaW5QcmltZU5vZGUsClgrCQkJCSBpbnN0LT5KRkVUMnNvdXJj ZVByaW1lTm9kZSwKWCsJCQkJICgyLjAvMy4wICogRkFCUygqKGNrdC0+Q0tU c3RhdGUwICsgaW5zdC0+SkZFVDJnbSkpKSk7ClgrClgrCQkgICAgTmV2YWxT cmMoJm5vaXpEZW5zW0pGRVQyRkxOT0laXSwoZG91YmxlKilOVUxMLGNrdCwK WCsJCQkJIE5fR0FJTixpbnN0LT5KRkVUMmRyYWluUHJpbWVOb2RlLApYKwkJ CQkgaW5zdC0+SkZFVDJzb3VyY2VQcmltZU5vZGUsIChkb3VibGUpMC4wKTsK WCsJCSAgICBub2l6RGVuc1tKRkVUMkZMTk9JWl0gKj0gbW9kZWwtPkpGRVQy Zk5jb2VmICogClgrCQkJCSBleHAobW9kZWwtPkpGRVQyZk5leHAgKgpYKwkJ CQkgbG9nKE1BWChGQUJTKCooY2t0LT5DS1RzdGF0ZTAgKyBpbnN0LT5KRkVU MmNkKSksTl9NSU5MT0cpKSkgLwpYKwkJCQkgZGF0YS0+ZnJlcTsKWCsJCSAg ICBsbk5kZW5zW0pGRVQyRkxOT0laXSA9IApYKwkJCQkgbG9nKE1BWChub2l6 RGVuc1tKRkVUMkZMTk9JWl0sTl9NSU5MT0cpKTsKWCsKWCsJCSAgICBub2l6 RGVuc1tKRkVUMlRPVE5PSVpdID0gbm9pekRlbnNbSkZFVDJSRE5PSVpdICsK WCsJCQkJCQkgICAgIG5vaXpEZW5zW0pGRVQyUlNOT0laXSArClgrCQkJCQkJ ICAgICBub2l6RGVuc1tKRkVUMklETk9JWl0gKwpYKwkJCQkJCSAgICAgbm9p ekRlbnNbSkZFVDJGTE5PSVpdOwpYKwkJICAgIGxuTmRlbnNbSkZFVDJUT1RO T0laXSA9IApYKwkJCQkgbG9nKE1BWChub2l6RGVuc1tKRkVUMlRPVE5PSVpd LCBOX01JTkxPRykpOwpYKwpYKwkJICAgICpPbkRlbnMgKz0gbm9pekRlbnNb SkZFVDJUT1ROT0laXTsKWCsKWCsJCSAgICBpZiAoZGF0YS0+ZGVsRnJlcSA9 PSAwLjApIHsgClgrClgrCQkJLyogaWYgd2UgaGF2ZW4ndCBkb25lIGFueSBw cmV2aW91cyBpbnRlZ3JhdGlvbiwgd2UgbmVlZCB0byAqLwpYKwkJCS8qIGlu aXRpYWxpemUgb3VyICJoaXN0b3J5IiB2YXJpYWJsZXMgICAgICAgICAgICAg ICAgICAgICAgKi8KWCsKWCsJCQlmb3IgKGk9MDsgaSA8IEpGRVQyTlNSQ1M7 IGkrKykgewpYKwkJCSAgICBpbnN0LT5KRkVUMm5WYXJbTE5MU1RERU5TXVtp XSA9IGxuTmRlbnNbaV07ClgrCQkJfQpYKwpYKwkJCS8qIGNsZWFyIG91dCBv dXIgaW50ZWdyYXRpb24gdmFyaWFibGVzIGlmIGl0J3MgdGhlIGZpcnN0IHBh c3MgKi8KWCsKWCsJCQlpZiAoZGF0YS0+ZnJlcSA9PSAoKE5PSVNFQU4qKWNr dC0+Q0tUY3VySm9iKS0+TnN0YXJ0RnJlcSkgewpYKwkJCSAgICBmb3IgKGk9 MDsgaSA8IEpGRVQyTlNSQ1M7IGkrKykgewpYKwkJCQlpbnN0LT5KRkVUMm5W YXJbT1VUTk9JWl1baV0gPSAwLjA7ClgrCQkJCWluc3QtPkpGRVQyblZhcltJ Tk5PSVpdW2ldID0gMC4wOwpYKwkJCSAgICB9ClgrCQkJfQpYKwkJICAgIH0g ZWxzZSB7ICAgLyogZGF0YS0+ZGVsRnJlcSAhPSAwLjAgKHdlIGhhdmUgdG8g aW50ZWdyYXRlKSAqLwpYKwkJCWZvciAoaT0wOyBpIDwgSkZFVDJOU1JDUzsg aSsrKSB7ClgrCQkJICAgIGlmIChpICE9IEpGRVQyVE9UTk9JWikgewpYKwkJ CQl0ZW1wT25vaXNlID0gTmludGVncmF0ZShub2l6RGVuc1tpXSwgbG5OZGVu c1tpXSwKWCsJCQkJICAgICAgaW5zdC0+SkZFVDJuVmFyW0xOTFNUREVOU11b aV0sIGRhdGEpOwpYKwkJCQl0ZW1wSW5vaXNlID0gTmludGVncmF0ZShub2l6 RGVuc1tpXSAqIGRhdGEtPkdhaW5TcUludiAsClgrCQkJCSAgICAgIGxuTmRl bnNbaV0gKyBkYXRhLT5sbkdhaW5JbnYsClgrCQkJCSAgICAgIGluc3QtPkpG RVQyblZhcltMTkxTVERFTlNdW2ldICsgZGF0YS0+bG5HYWluSW52LApYKwkJ CQkgICAgICBkYXRhKTsKWCsJCQkJaW5zdC0+SkZFVDJuVmFyW0xOTFNUREVO U11baV0gPSBsbk5kZW5zW2ldOwpYKwkJCQlkYXRhLT5vdXROb2l6ICs9IHRl bXBPbm9pc2U7ClgrCQkJCWRhdGEtPmluTm9pc2UgKz0gdGVtcElub2lzZTsK WCsJCQkJaWYgKCgoTk9JU0VBTiopY2t0LT5DS1RjdXJKb2IpLT5OU3Rwc1Nt ICE9IDApIHsKWCsJCQkJICAgIGluc3QtPkpGRVQyblZhcltPVVROT0laXVtp XSArPSB0ZW1wT25vaXNlOwpYKwkJCQkgICAgaW5zdC0+SkZFVDJuVmFyW09V VE5PSVpdW0pGRVQyVE9UTk9JWl0gKz0gdGVtcE9ub2lzZTsKWCsJCQkJICAg IGluc3QtPkpGRVQyblZhcltJTk5PSVpdW2ldICs9IHRlbXBJbm9pc2U7Clgr CQkJCSAgICBpbnN0LT5KRkVUMm5WYXJbSU5OT0laXVtKRkVUMlRPVE5PSVpd ICs9IHRlbXBJbm9pc2U7ClgrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9ClgrCQkJICAgIH0KWCsJCQl9ClgrCQkgICAgfQpYKwkJICAgIGlm IChkYXRhLT5wcnRTdW1tYXJ5KSB7ClgrCQkJZm9yIChpPTA7IGkgPCBKRkVU Mk5TUkNTOyBpKyspIHsgICAgIC8qIHByaW50IGEgc3VtbWFyeSByZXBvcnQg Ki8KWCsJCQkgICAgZGF0YS0+b3V0cFZlY3RvcltkYXRhLT5vdXROdW1iZXIr K10gPSBub2l6RGVuc1tpXTsKWCsJCQl9ClgrCQkgICAgfQpYKwkJICAgIGJy ZWFrOwpYKwpYKwkJY2FzZSBJTlRfTk9JWjogICAgICAgIC8qIGFscmVhZHkg Y2FsY3VsYXRlZCwganVzdCBvdXRwdXQgKi8KWCsJCSAgICBpZiAoKChOT0lT RUFOKilja3QtPkNLVGN1ckpvYiktPk5TdHBzU20gIT0gMCkgewpYKwkJCWZv ciAoaT0wOyBpIDwgSkZFVDJOU1JDUzsgaSsrKSB7ClgrCQkJICAgIGRhdGEt Pm91dHBWZWN0b3JbZGF0YS0+b3V0TnVtYmVyKytdID0gaW5zdC0+SkZFVDJu VmFyW09VVE5PSVpdW2ldOwpYKwkJCSAgICBkYXRhLT5vdXRwVmVjdG9yW2Rh dGEtPm91dE51bWJlcisrXSA9IGluc3QtPkpGRVQyblZhcltJTk5PSVpdW2ld OwpYKwkJCX0KWCsJCSAgICB9ICAgIC8qIGlmICovClgrCQkgICAgYnJlYWs7 ClgrCQl9ICAgIC8qIHN3aXRjaCAobW9kZSkgKi8KWCsJCWJyZWFrOwpYKwpY KwkgICAgY2FzZSBOX0NMT1NFOgpYKwkJcmV0dXJuIChPSyk7ICAgICAgICAg LyogZG8gbm90aGluZywgdGhlIG1haW4gY2FsbGluZyByb3V0aW5lIHdpbGwg Y2xvc2UgKi8KWCsJCWJyZWFrOyAgICAgICAgICAgICAgIC8qIHRoZSBwbG90 cyAqLwpYKwkgICAgfSAgICAvKiBzd2l0Y2ggKG9wZXJhdGlvbikgKi8KWCsJ fSAgICAvKiBmb3IgaW5zdCAqLwpYKyAgICB9ICAgIC8qIGZvciBtb2RlbCAq LwpYKwpYK3JldHVybihPSyk7ClgrfQpYKyAgICAgICAgICAgIApYKwpYZGlm ZiAtcnVOIC4uL3dvcmsub3JpZy9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0MnBh ci5jIC4vc3JjL2xpYi9kZXYvamZldDIvamZldDJwYXIuYwpYLS0tIC4uL3dv cmsub3JpZy9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0MnBhci5jCVdlZCBEZWMg MzEgMTk6MDA6MDAgMTk2OQpYKysrIC4vc3JjL2xpYi9kZXYvamZldDIvamZl dDJwYXIuYwlUdWUgSnVuIDIxIDE0OjM1OjIxIDE5OTQKWEBAIC0wLDAgKzEs NjggQEAKWCsvKioqKioqKioqKgpYK2Jhc2VkIG9uIGpmZXRwYXIuYwpYK0Nv cHlyaWdodCAxOTkwIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2Fs aWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuClgrQXV0aG9yOiAxOTg1 IFRob21hcyBMLiBRdWFybGVzClgrClgrTW9kaWZpZWQgdG8gamZldDIgZm9y IFBTIG1vZGVsIGRlZmluaXRpb24gKCBBbnRob255IEUuIFBhcmtlciApClgr ICAgQ29weXJpZ2h0IDE5OTQgIE1hY3F1YXJpZSBVbml2ZXJzaXR5LCBTeWRu ZXkgQXVzdHJhbGlhLgpYKyoqKioqKioqKiovClgrLyoKWCsgKi8KWCsKWCsj aW5jbHVkZSAic3BpY2UuaCIKWCsjaW5jbHVkZSA8c3RkaW8uaD4KWCsjaW5j bHVkZSAiY29uc3QuaCIKWCsjaW5jbHVkZSAiaWZzaW0uaCIKWCsjaW5jbHVk ZSAidXRpbC5oIgpYKyNpbmNsdWRlICJqZmV0MmRlZnMuaCIKWCsjaW5jbHVk ZSAic3BlcnJvci5oIgpYKyNpbmNsdWRlICJzdWZmaXguaCIKWCsKWCsKWCsv KiBBUkdTVVNFRCAqLwpYK2ludApYK0pGRVQycGFyYW0ocGFyYW0sdmFsdWUs aW5zdCxzZWxlY3QpClgrICAgIGludCBwYXJhbTsKWCsgICAgSUZ2YWx1ZSAq dmFsdWU7ClgrICAgIEdFTmluc3RhbmNlICppbnN0OwpYKyAgICBJRnZhbHVl ICpzZWxlY3Q7ClgrewpYKyAgICBKRkVUMmluc3RhbmNlICpoZXJlID0gKEpG RVQyaW5zdGFuY2UgKilpbnN0OwpYKyAgICBzd2l0Y2gocGFyYW0pIHsKWCsg ICAgICAgIGNhc2UgSkZFVDJfVEVNUDoKWCsgICAgICAgICAgICBoZXJlLT5K RkVUMnRlbXAgPSB2YWx1ZS0+clZhbHVlK0NPTlNUQ3RvSzsKWCsgICAgICAg ICAgICBoZXJlLT5KRkVUMnRlbXBHaXZlbiA9IFRSVUU7ClgrICAgICAgICAg ICAgYnJlYWs7ClgrICAgICAgICBjYXNlIEpGRVQyX0FSRUE6ClgrICAgICAg ICAgICAgaGVyZS0+SkZFVDJhcmVhID0gdmFsdWUtPnJWYWx1ZTsKWCsgICAg ICAgICAgICBoZXJlLT5KRkVUMmFyZWFHaXZlbiA9IFRSVUU7ClgrICAgICAg ICAgICAgYnJlYWs7ClgrICAgICAgICBjYXNlIEpGRVQyX0lDX1ZEUzoKWCsg ICAgICAgICAgICBoZXJlLT5KRkVUMmljVkRTID0gdmFsdWUtPnJWYWx1ZTsK WCsgICAgICAgICAgICBoZXJlLT5KRkVUMmljVkRTR2l2ZW4gPSBUUlVFOwpY KyAgICAgICAgICAgIGJyZWFrOwpYKyAgICAgICAgY2FzZSBKRkVUMl9JQ19W R1M6ClgrICAgICAgICAgICAgaGVyZS0+SkZFVDJpY1ZHUyA9IHZhbHVlLT5y VmFsdWU7ClgrICAgICAgICAgICAgaGVyZS0+SkZFVDJpY1ZHU0dpdmVuID0g VFJVRTsKWCsgICAgICAgICAgICBicmVhazsKWCsgICAgICAgIGNhc2UgSkZF VDJfT0ZGOgpYKyAgICAgICAgICAgIGhlcmUtPkpGRVQyb2ZmID0gdmFsdWUt PmlWYWx1ZTsKWCsgICAgICAgICAgICBicmVhazsKWCsgICAgICAgIGNhc2Ug SkZFVDJfSUM6ClgrICAgICAgICAgICAgc3dpdGNoKHZhbHVlLT52Lm51bVZh bHVlKSB7ClgrICAgICAgICAgICAgICAgIGNhc2UgMjoKWCsgICAgICAgICAg ICAgICAgICAgIGhlcmUtPkpGRVQyaWNWR1MgPSAqKHZhbHVlLT52LnZlYy5y VmVjKzEpOwpYKyAgICAgICAgICAgICAgICAgICAgaGVyZS0+SkZFVDJpY1ZH U0dpdmVuID0gVFJVRTsKWCsgICAgICAgICAgICAgICAgY2FzZSAxOgpYKyAg ICAgICAgICAgICAgICAgICAgaGVyZS0+SkZFVDJpY1ZEUyA9ICoodmFsdWUt PnYudmVjLnJWZWMpOwpYKyAgICAgICAgICAgICAgICAgICAgaGVyZS0+SkZF VDJpY1ZEU0dpdmVuID0gVFJVRTsKWCsgICAgICAgICAgICAgICAgICAgIGJy ZWFrOwpYKyAgICAgICAgICAgICAgICBkZWZhdWx0OgpYKyAgICAgICAgICAg ICAgICAgICAgcmV0dXJuKEVfQkFEUEFSTSk7ClgrICAgICAgICAgICAgfQpY KyAgICAgICAgICAgIGJyZWFrOwpYKyAgICAgICAgZGVmYXVsdDoKWCsgICAg ICAgICAgICByZXR1cm4oRV9CQURQQVJNKTsKWCsgICAgfQpYKyAgICByZXR1 cm4oT0spOwpYK30KWGRpZmYgLXJ1TiAuLi93b3JrLm9yaWcvc3JjL2xpYi9k ZXYvamZldDIvamZldDJwYXJtLmggLi9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0 MnBhcm0uaApYLS0tIC4uL3dvcmsub3JpZy9zcmMvbGliL2Rldi9qZmV0Mi9q ZmV0MnBhcm0uaAlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkKWCsrKyAuL3Ny Yy9saWIvZGV2L2pmZXQyL2pmZXQycGFybS5oCVR1ZSBKdW4gMjggMDg6MjE6 MjkgMTk5NApYQEAgLTAsMCArMSw1MiBAQApYKwpYKyNpZm5kZWYgUEFSQU1B ClgrI2RlZmluZSBQQVJBTUEoY29kZSxpZCxmbGFnLHJlZixkZWZhdWx0LGRl c2NyaXApIFBBUkFNKGNvZGUsaWQsZmxhZyxyZWYsZGVmYXVsdCxkZXNjcmlw KQpYKyNlbmRpZgpYKyNpZm5kZWYgSkZFVDJfTU9EX1ZUTwpYKyNkZWZpbmUg SkZFVDJfTU9EX1ZUTyAxNDEKWCsjZGVmaW5lIEpGRVQyX01PRF9OSkYgMTAy ClgrI2RlZmluZSBKRkVUMl9NT0RfUEpGIDEwMwpYKyNkZWZpbmUgSkZFVDJf TU9EX1ROT00gMTA0ClgrI2RlZmluZSBKRkVUMl9NT0RfUEIgMTMxClgrI2Vu ZGlmClgrICAgIFBBUkFNKCJhY2dhbSIsIDEwNywgICAgICAgICBKRkVUMmFj Z2FtR2l2ZW4sIEpGRVQyYWNnYW0sICAgIDAsICIiKQpYKyAgICBQQVJBTSgi YWYiLCAgICAxMDgsICAgICAgICAgSkZFVDJmTmV4cEdpdmVuLCBKRkVUMmZO ZXhwLCAgICAxLCAiRmxpY2tlciBOb2lzZSBFeHBvbmVudCIpClgrICAgIFBB UkFNKCJiZXRhIiwgIDEwOSwgICAgICAgICAgSkZFVDJiZXRhR2l2ZW4sIEpG RVQyYmV0YSwgIDFlLTQsICJUcmFuc2NvbmR1Y3RhbmNlIHBhcmFtZXRlciIp ClgrICAgUEFSQU1BKCJjZHMiLCAgIDE0NiwgICAgICAgICBKRkVUMmNhcERT R2l2ZW4sIEpGRVQyY2FwZHMsICAgIDAsICJELVMganVuY3Rpb24gY2FwYWNp dGFuY2UiKQpYKyAgIFBBUkFNQSgiY2dkIiwgICAxMTAsICAgICAgICAgSkZF VDJjYXBHREdpdmVuLCBKRkVUMmNhcGdkLCAgICAwLCAiRy1EIGp1bmN0aW9u IGNhcGFjaXRhbmNlIikKWCsgICBQQVJBTUEoImNncyIsICAgMTExLCAgICAg ICAgIEpGRVQyY2FwR1NHaXZlbiwgSkZFVDJjYXBncywgICAgMCwgIkctUyBq dW5jdGlvbiBjYXBhY2l0YW5jZSIpClgrICAgIFBBUkFNKCJkZWx0YSIsIDEx MywgICAgICAgICBKRkVUMmRlbHRhR2l2ZW4sIEpGRVQyZGVsdGEsICAgIDAs ICJjb2VmIG9mIHRoZXJtYWwgY3VycmVudCByZWR1Y3Rpb24iKQpYKyAgICBQ QVJBTSgiaGZldGEiLCAxMTQsICAgICAgICAgSkZFVDJoZmV0YUdpdmVuLCBK RkVUMmhmZXRhLCAgICAwLCAiZHJhaW4gZmVlZGJhY2sgbW9kdWxhdGlvbiIp ClgrICAgIFBBUkFNKCJoZmUxIiwgIDExNSwgICAgICAgICAgSkZFVDJoZmUx R2l2ZW4sIEpGRVQyaGZlMSwgICAgIDAsICIiKQpYKyAgICBQQVJBTSgiaGZl MiIsICAxMTYsICAgICAgICAgIEpGRVQyaGZlMkdpdmVuLCBKRkVUMmhmZTIs ICAgICAwLCAiIikKWCsgICAgUEFSQU0oImhmZzEiLCAgMTE3LCAgICAgICAg ICBKRkVUMmhmZzFHaXZlbiwgSkZFVDJoZmcxLCAgICAgMCwgIiIpClgrICAg IFBBUkFNKCJoZmcyIiwgIDExOCwgICAgICAgICAgSkZFVDJoZmcyR2l2ZW4s IEpGRVQyaGZnMiwgICAgIDAsICIiKQpYKyAgICBQQVJBTSgibXZzdCIsICAx MTksICAgICAgICAgIEpGRVQybXZzdEdpdmVuLCBKRkVUMm12c3QsICAgICAw LCAibW9kdWxhdGlvbiBpbmRleCBmb3Igc3VidHJlc2hvbGQgY3VycmVudCIp ClgrICAgIFBBUkFNKCJteGkiLCAgIDEyMCwgICAgICAgICAgIEpGRVQybXhp R2l2ZW4sIEpGRVQybXhpLCAgICAgIDAsICJzYXR1cmF0aW9uIHBvdGVudGlh bCBtb2R1bGF0aW9uIHBhcmFtZXRlciIpClgrICAgIFBBUkFNKCJmYyIsICAg IDEyMSwgICAgICAgICAgICBKRkVUMmZjR2l2ZW4sIEpGRVQyZmMsICAgICAw LjUsICJGb3J3YXJkIGJpYXMganVuY3Rpb24gZml0IHBhcm0uIikKWCsgICAg UEFSQU0oImliZCIsICAgMTIyLCAgICAgICAgICAgSkZFVDJpYmRHaXZlbiwg SkZFVDJpYmQsICAgICAgMCwgIkJyZWFrZG93biBjdXJyZW50IG9mIGRpb2Rl IGpuYyIpClgrICAgIFBBUkFNKCJpcyIsICAgIDEyMywgICAgICAgICAgICBK RkVUMmlzR2l2ZW4sIEpGRVQyaXMsICAgMWUtMTQsICJHYXRlIGp1bmN0aW9u IHNhdHVyYXRpb24gY3VycmVudCIpClgrICAgIFBBUkFNKCJrZiIsICAgIDEy NCwgICAgICAgICAgICBKRkVUMmtmR2l2ZW4sIEpGRVQyZk5jb2VmLCAgIDAs ICJGbGlja2VyIE5vaXNlIENvZWZmaWNpZW50IikKWCsgICAgUEFSQU0oImxh bWJkYSIsMTI1LCAgICAgICAgICAgSkZFVDJsYW1HaXZlbiwgSkZFVDJsYW1i ZGEsICAgMCwgIkNoYW5uZWwgbGVuZ3RoIG1vZHVsYXRpb24gcGFyYW0uIikK WCsgICAgUEFSQU0oImxmZ2FtIiwgMTI2LCAgICAgICAgIEpGRVQybGZnYW1H aXZlbiwgSkZFVDJsZmdhbSwgICAgMCwgImRyYWluIGZlZWRiYWNrIHBhcmFt ZXRlciIpClgrICAgIFBBUkFNKCJsZmcxIiwgIDEyNywgICAgICAgICAgSkZF VDJsZmcxR2l2ZW4sIEpGRVQybGZnMSwgICAgIDAsICIiKQpYKyAgICBQQVJB TSgibGZnMiIsICAxMjgsICAgICAgICAgIEpGRVQybGZnMkdpdmVuLCBKRkVU MmxmZzIsICAgICAwLCAiIikKWCsgICAgUEFSQU0oIm4iLCAgICAgMTI5LCAg ICAgICAgICAgICBKRkVUMm5HaXZlbiwgSkZFVDJuLCAgICAgICAgMSwgImdh dGUganVuY3Rpb24gaWRlYWxpdHkgZmFjdG9yIikKWCsgICAgUEFSQU0oInAi LCAgICAgMTMwLCAgICAgICAgICAgICBKRkVUMnBHaXZlbiwgSkZFVDJwLCAg ICAgICAgMiwgIlBvd2VyIGxhdyAodHJpb2RlIHJlZ2lvbikiKQpYKyAgICBQ QVJBTSgicGIiLCAgICBKRkVUMl9NT0RfUEIsICAgSkZFVDJwaGlHaXZlbiwg SkZFVDJwaGksICAgICAgMSwgIkdhdGUganVuY3Rpb24gcG90ZW50aWFsIikK WCsgICAgUEFSQU0oInEiLCAgICAgMTMyLCAgICAgICAgICAgICBKRkVUMnFH aXZlbiwgSkZFVDJxLCAgICAgICAgMiwgIlBvd2VyIExhdyAoU2F0dXJhdGVk IHJlZ2lvbikiKQpYKyAgICBQQVJBTSgicmQiLCAgICAxMzMsICAgICAgICAg ICAgSkZFVDJyZEdpdmVuLCBKRkVUMnJkLCAgICAgICAwLCAiRHJhaW4gb2ht aWMgcmVzaXN0YW5jZSIpClgrICAgIFBBUkFNKCJycyIsICAgIDEzNCwgICAg ICAgICAgICBKRkVUMnJzR2l2ZW4sIEpGRVQycnMsICAgICAgIDAsICJTb3Vy Y2Ugb2htaWMgcmVzaXN0YW5jZSIpClgrICAgIFBBUkFNKCJ0YXVkIiwgIDEz NSwgICAgICAgICAgSkZFVDJ0YXVkR2l2ZW4sIEpGRVQydGF1ZCwgICAgIDAs ICJUaGVybWFsIHJlbGF4YXRpb24gdGltZSIpClgrICAgIFBBUkFNKCJ0YXVn IiwgIDEzNiwgICAgICAgICAgSkZFVDJ0YXVnR2l2ZW4sIEpGRVQydGF1Zywg ICAgIDAsICJEcmFpbiBmZWVkYmFjayByZWxheGF0aW9uIHRpbWUiKQpYKyAg ICBQQVJBTSgidmJkIiwgICAxMzcsICAgICAgICAgICBKRkVUMnZiZEdpdmVu LCBKRkVUMnZiZCwgICAgICAxLCAiQnJlYWtkb3duIHBvdGVudGlhbCBvZiBk aW9kZSBqbmMiKQpYKyAgICBQQVJBTSgidmVyIiwgICAxMzksICAgICAgICAg ICBKRkVUMnZlckdpdmVuLCBKRkVUMnZlciwgICAgICAwLCAidmVyc2lvbiBu dW1iZXIgb2YgUFMgbW9kZWwiKQpYKyAgICBQQVJBTSgidnN0IiwgICAxNDAs ICAgICAgICAgICBKRkVUMnZzdEdpdmVuLCBKRkVUMnZzdCwgICAgICAwLCAi Q3JpdCBQb3RlbiBzdWJ0aHJlc2hvbGQgY29uZHVjdG4iKQpYKyAgICBQQVJB TSgidnRvIiwgICBKRkVUMl9NT0RfVlRPLCAgSkZFVDJ2dG9HaXZlbiwgSkZF VDJ2dG8sICAgICAtMiwgIlRocmVzaG9sZCB2b2x0YWdlIikKWCsgICAgUEFS QU0oInhjIiwgICAgMTQyLCAgICAgICAgICAgIEpGRVQyeGNHaXZlbiwgSkZF VDJ4YywgICAgICAgMCwgImFtb3VudCBvZiBjYXAuIHJlZCBhdCBwaW5jaC1v ZmYiKQpYKyAgICBQQVJBTSgieGkiLCAgICAxNDMsICAgICAgICAgICAgSkZF VDJ4aUdpdmVuLCBKRkVUMnhpLCAgICAxMDAwLCAidmVsb2NpdHkgc2F0dXJh dGlvbiBpbmRleCIpClgrICAgIFBBUkFNKCJ6IiwgICAgIDE0NCwgICAgICAg ICAgICAgSkZFVDJ6R2l2ZW4sIEpGRVQyeiwgICAgICAgIDEsICJyYXRlIG9m IHZlbG9jaXR5IHNhdHVyYXRpb24iKQpYKyAgICBQQVJBTSgiaGZnYW0iLCAx NDUsICAgICAgICAgICBKRkVUMmhmZ0dpdmVuLCBKRkVUMmhmZ2FtLCBtb2Rl bC0+SkZFVDJsZmdhbSwgImhpZ2ggZnJlcSBkcmFpbiBmZWVkYmFjayBwYXJt IikKWCsjdW5kZWYgICBQQVJBTQpYKyN1bmRlZiAgUEFSQU1BClgrClhkaWZm IC1ydU4gLi4vd29yay5vcmlnL3NyYy9saWIvZGV2L2pmZXQyL2pmZXQyc2V0 LmMgLi9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0MnNldC5jClgtLS0gLi4vd29y ay5vcmlnL3NyYy9saWIvZGV2L2pmZXQyL2pmZXQyc2V0LmMJV2VkIERlYyAz MSAxOTowMDowMCAxOTY5ClgrKysgLi9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0 MnNldC5jCVR1ZSBKdW4gMjEgMTQ6MzU6MjggMTk5NApYQEAgLTAsMCArMSwx MzQgQEAKWCsvKioqKioqKioqKgpYK0Jhc2VkIG9uIGpmZXRzZXQuYwpYK0Nv cHlyaWdodCAxOTkwIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2Fs aWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuClgrQXV0aG9yOiAxOTg1 IFRob21hcyBMLiBRdWFybGVzClgrClgrTW9kaWZpZWQgdG8gYWRkIFBTIG1v ZGVsIGFuZCBuZXcgcGFyYW1ldGVyIGRlZmluaXRpb25zICggQW50aG9ueSBF LiBQYXJrZXIgKQpYKyAgIENvcHlyaWdodCAxOTk0ICBNYWNxdWFyaWUgVW5p dmVyc2l0eSwgU3lkbmV5IEF1c3RyYWxpYS4KWCsgICAxMCBGZWIgMTk5NDog QWRkZWQgY2FsbCB0byBqZmV0cGFybS5oLCB1c2VkIEpGRVRfU1RBVEVfQ09V TlQKWCsqKioqKioqKioqLwpYKwpYKyNpbmNsdWRlICJzcGljZS5oIgpYKyNp bmNsdWRlIDxzdGRpby5oPgpYKyNpbmNsdWRlICJ1dGlsLmgiClgrI2luY2x1 ZGUgInNtcGRlZnMuaCIKWCsjaW5jbHVkZSAiY2t0ZGVmcy5oIgpYKyNpbmNs dWRlICJqZmV0MmRlZnMuaCIKWCsjaW5jbHVkZSAiY29uc3QuaCIKWCsjaW5j bHVkZSAic3BlcnJvci5oIgpYKyNpbmNsdWRlICJzdWZmaXguaCIKWCsKWCtp bnQKWCtKRkVUMnNldHVwKG1hdHJpeCxpbk1vZGVsLGNrdCxzdGF0ZXMpClgr ICAgIHJlZ2lzdGVyIFNNUG1hdHJpeCAqbWF0cml4OwpYKyAgICBHRU5tb2Rl bCAqaW5Nb2RlbDsKWCsgICAgQ0tUY2lyY3VpdCAqY2t0OwpYKyAgICBpbnQg KnN0YXRlczsKWCsgICAgICAgIC8qIGxvYWQgdGhlIGRpb2RlIHN0cnVjdHVy ZSB3aXRoIHRob3NlIHBvaW50ZXJzIG5lZWRlZCBsYXRlciAKWCsgICAgICAg ICAqIGZvciBmYXN0IG1hdHJpeCBsb2FkaW5nIApYKyAgICAgICAgICovClgr ewpYKyAgICByZWdpc3RlciBKRkVUMm1vZGVsICptb2RlbCA9IChKRkVUMm1v ZGVsKilpbk1vZGVsOwpYKyAgICByZWdpc3RlciBKRkVUMmluc3RhbmNlICpo ZXJlOwpYKyAgICBpbnQgZXJyb3I7ClgrICAgIENLVG5vZGUgKnRtcDsKWCsK WCsgICAgLyogIGxvb3AgdGhyb3VnaCBhbGwgdGhlIGRpb2RlIG1vZGVscyAq LwpYKyAgICBmb3IoIDsgbW9kZWwgIT0gTlVMTDsgbW9kZWwgPSBtb2RlbC0+ SkZFVDJuZXh0TW9kZWwgKSB7ClgrClgrICAgICAgICBpZiggKG1vZGVsLT5K RkVUMnR5cGUgIT0gTkpGKSAmJiAobW9kZWwtPkpGRVQydHlwZSAhPSBQSkYp ICkgewpYKyAgICAgICAgICAgIG1vZGVsLT5KRkVUMnR5cGUgPSBOSkY7Clgr ICAgICAgICB9ClgrI2RlZmluZSAgUEFSQU0oY29kZSxpZCxmbGFnLHJlZixk ZWZhdWx0LGRlc2NyaXApIFwKWCsgICAgICAgICAgICAgIGlmKCFtb2RlbC0+ ZmxhZykge21vZGVsLT5yZWYgPSBkZWZhdWx0O30KWCsjaW5jbHVkZSAiamZl dDJwYXJtLmgiClgrClgrICAgICAgICAvKiBsb29wIHRocm91Z2ggYWxsIHRo ZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsICovClgrICAgICAgICBmb3IgKGhl cmUgPSBtb2RlbC0+SkZFVDJpbnN0YW5jZXM7IGhlcmUgIT0gTlVMTCA7Clgr ICAgICAgICAgICAgICAgIGhlcmU9aGVyZS0+SkZFVDJuZXh0SW5zdGFuY2Up IHsKWCsgICAgICAgICAgICAKWCsgICAgICAgICAgICBpZighaGVyZS0+SkZF VDJhcmVhR2l2ZW4pIHsKWCsgICAgICAgICAgICAgICAgaGVyZS0+SkZFVDJh cmVhID0gMTsKWCsgICAgICAgICAgICB9ClgrICAgICAgICAgICAgaGVyZS0+ SkZFVDJzdGF0ZSA9ICpzdGF0ZXM7ClgrICAgICAgICAgICAgKnN0YXRlcyAr PSBKRkVUMl9TVEFURV9DT1VOVCArIDE7ClgrClgrICAgICAgICAgICAgaWYo bW9kZWwtPkpGRVQycnMgIT0gMCAmJiBoZXJlLT5KRkVUMnNvdXJjZVByaW1l Tm9kZT09MCkgewpYKyAgICAgICAgICAgICAgICBlcnJvciA9IENLVG1rVm9s dChja3QsJnRtcCxoZXJlLT5KRkVUMm5hbWUsInNvdXJjZSIpOwpYKyAgICAg ICAgICAgICAgICBpZihlcnJvcikgcmV0dXJuKGVycm9yKTsKWCsgICAgICAg ICAgICAgICAgaGVyZS0+SkZFVDJzb3VyY2VQcmltZU5vZGUgPSB0bXAtPm51 bWJlcjsKWCsgICAgICAgICAgICB9IGVsc2UgewpYKyAgICAgICAgICAgICAg ICBoZXJlLT5KRkVUMnNvdXJjZVByaW1lTm9kZSA9IGhlcmUtPkpGRVQyc291 cmNlTm9kZTsKWCsgICAgICAgICAgICB9ClgrICAgICAgICAgICAgaWYobW9k ZWwtPkpGRVQycmQgIT0gMCAmJiBoZXJlLT5KRkVUMmRyYWluUHJpbWVOb2Rl PT0wKSB7ClgrICAgICAgICAgICAgICAgIGVycm9yID0gQ0tUbWtWb2x0KGNr dCwmdG1wLGhlcmUtPkpGRVQybmFtZSwiZHJhaW4iKTsKWCsgICAgICAgICAg ICAgICAgaWYoZXJyb3IpIHJldHVybihlcnJvcik7ClgrICAgICAgICAgICAg ICAgIGhlcmUtPkpGRVQyZHJhaW5QcmltZU5vZGUgPSB0bXAtPm51bWJlcjsK WCsgICAgICAgICAgICB9IGVsc2UgewpYKyAgICAgICAgICAgICAgICBoZXJl LT5KRkVUMmRyYWluUHJpbWVOb2RlID0gaGVyZS0+SkZFVDJkcmFpbk5vZGU7 ClgrICAgICAgICAgICAgfQpYKwpYKy8qIG1hY3JvIHRvIG1ha2UgZWxlbWVu dHMgd2l0aCBidWlsdCBpbiB0ZXN0IGZvciBvdXQgb2YgbWVtb3J5ICovClgr I2RlZmluZSBUU1RBTExPQyhwdHIsZmlyc3Qsc2Vjb25kKSBcClgraWYoKGhl cmUtPnB0ciA9IFNNUG1ha2VFbHQobWF0cml4LGhlcmUtPmZpcnN0LGhlcmUt PnNlY29uZCkpPT0oZG91YmxlICopTlVMTCl7XApYKyAgICByZXR1cm4oRV9O T01FTSk7XApYK30KWCsKWCsgICAgICAgICAgICBUU1RBTExPQyhKRkVUMmRy YWluRHJhaW5QcmltZVB0cixKRkVUMmRyYWluTm9kZSxKRkVUMmRyYWluUHJp bWVOb2RlKQpYKyAgICAgICAgICAgIFRTVEFMTE9DKEpGRVQyZ2F0ZURyYWlu UHJpbWVQdHIsSkZFVDJnYXRlTm9kZSxKRkVUMmRyYWluUHJpbWVOb2RlKQpY KyAgICAgICAgICAgIFRTVEFMTE9DKEpGRVQyZ2F0ZVNvdXJjZVByaW1lUHRy LEpGRVQyZ2F0ZU5vZGUsSkZFVDJzb3VyY2VQcmltZU5vZGUpClgrICAgICAg ICAgICAgVFNUQUxMT0MoSkZFVDJzb3VyY2VTb3VyY2VQcmltZVB0cixKRkVU MnNvdXJjZU5vZGUsClgrICAgICAgICAgICAgICAgICAgICBKRkVUMnNvdXJj ZVByaW1lTm9kZSkKWCsgICAgICAgICAgICBUU1RBTExPQyhKRkVUMmRyYWlu UHJpbWVEcmFpblB0cixKRkVUMmRyYWluUHJpbWVOb2RlLEpGRVQyZHJhaW5O b2RlKQpYKyAgICAgICAgICAgIFRTVEFMTE9DKEpGRVQyZHJhaW5QcmltZUdh dGVQdHIsSkZFVDJkcmFpblByaW1lTm9kZSxKRkVUMmdhdGVOb2RlKQpYKyAg ICAgICAgICAgIFRTVEFMTE9DKEpGRVQyZHJhaW5QcmltZVNvdXJjZVByaW1l UHRyLEpGRVQyZHJhaW5QcmltZU5vZGUsClgrICAgICAgICAgICAgICAgICAg ICBKRkVUMnNvdXJjZVByaW1lTm9kZSkKWCsgICAgICAgICAgICBUU1RBTExP QyhKRkVUMnNvdXJjZVByaW1lR2F0ZVB0cixKRkVUMnNvdXJjZVByaW1lTm9k ZSxKRkVUMmdhdGVOb2RlKQpYKyAgICAgICAgICAgIFRTVEFMTE9DKEpGRVQy c291cmNlUHJpbWVTb3VyY2VQdHIsSkZFVDJzb3VyY2VQcmltZU5vZGUsClgr ICAgICAgICAgICAgICAgICAgICBKRkVUMnNvdXJjZU5vZGUpClgrICAgICAg ICAgICAgVFNUQUxMT0MoSkZFVDJzb3VyY2VQcmltZURyYWluUHJpbWVQdHIs SkZFVDJzb3VyY2VQcmltZU5vZGUsClgrICAgICAgICAgICAgICAgICAgICBK RkVUMmRyYWluUHJpbWVOb2RlKQpYKyAgICAgICAgICAgIFRTVEFMTE9DKEpG RVQyZHJhaW5EcmFpblB0cixKRkVUMmRyYWluTm9kZSxKRkVUMmRyYWluTm9k ZSkKWCsgICAgICAgICAgICBUU1RBTExPQyhKRkVUMmdhdGVHYXRlUHRyLEpG RVQyZ2F0ZU5vZGUsSkZFVDJnYXRlTm9kZSkKWCsgICAgICAgICAgICBUU1RB TExPQyhKRkVUMnNvdXJjZVNvdXJjZVB0cixKRkVUMnNvdXJjZU5vZGUsSkZF VDJzb3VyY2VOb2RlKQpYKyAgICAgICAgICAgIFRTVEFMTE9DKEpGRVQyZHJh aW5QcmltZURyYWluUHJpbWVQdHIsSkZFVDJkcmFpblByaW1lTm9kZSwKWCsg ICAgICAgICAgICAgICAgICAgIEpGRVQyZHJhaW5QcmltZU5vZGUpClgrICAg ICAgICAgICAgVFNUQUxMT0MoSkZFVDJzb3VyY2VQcmltZVNvdXJjZVByaW1l UHRyLEpGRVQyc291cmNlUHJpbWVOb2RlLApYKyAgICAgICAgICAgICAgICAg ICAgSkZFVDJzb3VyY2VQcmltZU5vZGUpClgrICAgICAgICB9ClgrICAgIH0K WCsgICAgcmV0dXJuKE9LKTsKWCt9ClgrClgraW50ClgrSkZFVDJ1bnNldHVw KGluTW9kZWwsY2t0KQpYKyAgICBHRU5tb2RlbCAqaW5Nb2RlbDsKWCsgICAg Q0tUY2lyY3VpdCAqY2t0OwpYK3sKWCsjaWZuZGVmIEhBU19CQVRDSFNJTQpY KyAgICBKRkVUMm1vZGVsICptb2RlbDsKWCsgICAgSkZFVDJpbnN0YW5jZSAq aGVyZTsKWCsKWCsgICAgZm9yIChtb2RlbCA9IChKRkVUMm1vZGVsICopaW5N b2RlbDsgbW9kZWwgIT0gTlVMTDsKWCsJICAgIG1vZGVsID0gbW9kZWwtPkpG RVQybmV4dE1vZGVsKQpYKyAgICB7ClgrICAgICAgICBmb3IgKGhlcmUgPSBt b2RlbC0+SkZFVDJpbnN0YW5jZXM7IGhlcmUgIT0gTlVMTDsKWCsgICAgICAg ICAgICAgICAgaGVyZT1oZXJlLT5KRkVUMm5leHRJbnN0YW5jZSkKWCsJewpY KwkgICAgaWYgKGhlcmUtPkpGRVQyc291cmNlUHJpbWVOb2RlClgrCQkgICAg JiYgaGVyZS0+SkZFVDJzb3VyY2VQcmltZU5vZGUgIT0gaGVyZS0+SkZFVDJz b3VyY2VOb2RlKQpYKwkgICAgewpYKwkJQ0tUZGx0Tk51bShja3QsIGhlcmUt PkpGRVQyc291cmNlUHJpbWVOb2RlKTsKWCsJCWhlcmUtPkpGRVQyc291cmNl UHJpbWVOb2RlID0gMDsKWCsJICAgIH0KWCsJICAgIGlmIChoZXJlLT5KRkVU MmRyYWluUHJpbWVOb2RlClgrCQkgICAgJiYgaGVyZS0+SkZFVDJkcmFpblBy aW1lTm9kZSAhPSBoZXJlLT5KRkVUMmRyYWluTm9kZSkKWCsJICAgIHsKWCsJ CUNLVGRsdE5OdW0oY2t0LCBoZXJlLT5KRkVUMmRyYWluUHJpbWVOb2RlKTsK WCsJCWhlcmUtPkpGRVQyZHJhaW5QcmltZU5vZGUgPSAwOwpYKwkgICAgfQpY Kwl9ClgrICAgIH0KWCsjZW5kaWYKWCsgICAgcmV0dXJuIE9LOwpYK30KWGRp ZmYgLXJ1TiAuLi93b3JrLm9yaWcvc3JjL2xpYi9kZXYvamZldDIvamZldDJ0 ZW1wLmMgLi9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0MnRlbXAuYwpYLS0tIC4u L3dvcmsub3JpZy9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0MnRlbXAuYwlXZWQg RGVjIDMxIDE5OjAwOjAwIDE5NjkKWCsrKyAuL3NyYy9saWIvZGV2L2pmZXQy L2pmZXQydGVtcC5jCVR1ZSBKdW4gMjEgMTQ6MzU6MzEgMTk5NApYQEAgLTAs MCArMSwxMTYgQEAKWCsvKioqKioqKioqKgpYK0Jhc2Ugb24gamZldHRlbXAu YwpYK0NvcHlyaWdodCAxOTkwIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkg b2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuClgrQXV0aG9y OiAxOTg1IFRob21hcyBMLiBRdWFybGVzClgrClgrTW9kaWZpZWQgdG8gYWRk IFBTIG1vZGVsIGFuZCBuZXcgcGFyYW1ldGVyIGRlZmluaXRpb25zICggQW50 aG9ueSBFLiBQYXJrZXIgKQpYKyAgIENvcHlyaWdodCAxOTk0ICBNYWNxdWFy aWUgVW5pdmVyc2l0eSwgU3lkbmV5IEF1c3RyYWxpYS4KWCsgICAxMCBGZWIg MTk5NDogQ2FsbCB0byBQU2luc3RhbmNlaW5pdCgpIGFkZGVkClgrICAgICAg ICAgICAgICAgIENoYW5nZSBnYXRlUG90ZW50aWFsIHRvIHBoaSBhbmQgdXNl ZCBycyBhbmQgcmQgZm9yIApYKyAgICAgICAgICAgICAgICBzb3VyY2VSZXNp c3QgYW5kIGRyYWluUmVzaXN0LCBhbmQgZmMgZm9yIGRlcGxldGlvbkNhcENv ZWYKWCsqKioqKioqKioqLwpYKwpYKyNpbmNsdWRlICJzcGljZS5oIgpYKyNp bmNsdWRlIDxzdGRpby5oPgpYKyNpbmNsdWRlICJ1dGlsLmgiClgrI2luY2x1 ZGUgInNtcGRlZnMuaCIKWCsjaW5jbHVkZSAiY2t0ZGVmcy5oIgpYKyNpbmNs dWRlICJqZmV0MmRlZnMuaCIKWCsjaW5jbHVkZSAiY29uc3QuaCIKWCsjaW5j bHVkZSAic3BlcnJvci5oIgpYKyNpbmNsdWRlICJwc21vZGVsLmgiClgrI2lu Y2x1ZGUgInN1ZmZpeC5oIgpYKwpYK2ludApYK0pGRVQydGVtcChpbk1vZGVs LGNrdCkKWCsgICAgR0VObW9kZWwgKmluTW9kZWw7ClgrICAgIENLVGNpcmN1 aXQgKmNrdDsKWCsgICAgICAgIC8qIFByZS1wcm9jZXNzIHRoZSBtb2RlbCBw YXJhbWV0ZXJzIGFmdGVyIGEgcG9zc2libGUgY2hhbmdlClgrICAgICAgICAg Ki8KWCt7ClgrICAgIHJlZ2lzdGVyIEpGRVQybW9kZWwgKm1vZGVsID0gKEpG RVQybW9kZWwqKWluTW9kZWw7ClgrICAgIHJlZ2lzdGVyIEpGRVQyaW5zdGFu Y2UgKmhlcmU7ClgrICAgIGRvdWJsZSB4ZmM7ClgrICAgIGRvdWJsZSB2dDsK WCsgICAgZG91YmxlIHZ0bm9tOwpYKyAgICBkb3VibGUga3Qsa3QxOwpYKyAg ICBkb3VibGUgYXJnLGFyZzE7ClgrICAgIGRvdWJsZSBmYWN0MSxmYWN0MjsK WCsgICAgZG91YmxlIGVnZmV0LGVnZmV0MTsKWCsgICAgZG91YmxlIHBiZmFj dCxwYmZhY3QxOwpYKyAgICBkb3VibGUgZ21hbmV3LGdtYW9sZDsKWCsgICAg ZG91YmxlIHJhdGlvMTsKWCsgICAgZG91YmxlIHBibzsKWCsgICAgZG91Ymxl IGNqZmFjdCxjamZhY3QxOwpYKwpYKyAgICAvKiAgbG9vcCB0aHJvdWdoIGFs bCB0aGUgZGlvZGUgbW9kZWxzICovClgrICAgIGZvciggOyBtb2RlbCAhPSBO VUxMOyBtb2RlbCA9IG1vZGVsLT5KRkVUMm5leHRNb2RlbCApIHsKWCsKWCsg ICAgICAgIGlmKCEobW9kZWwtPkpGRVQydG5vbUdpdmVuKSkgewpYKyAgICAg ICAgICAgIG1vZGVsLT5KRkVUMnRub20gPSBja3QtPkNLVG5vbVRlbXA7Clgr ICAgICAgICB9ClgrICAgICAgICB2dG5vbSA9IENPTlNUS292ZXJRICogbW9k ZWwtPkpGRVQydG5vbTsKWCsgICAgICAgIGZhY3QxID0gbW9kZWwtPkpGRVQy dG5vbS9SRUZURU1QOwpYKyAgICAgICAga3QxID0gQ09OU1Rib2x0eiAqIG1v ZGVsLT5KRkVUMnRub207ClgrICAgICAgICBlZ2ZldDEgPSAxLjE2LSg3LjAy ZS00Km1vZGVsLT5KRkVUMnRub20qbW9kZWwtPkpGRVQydG5vbSkvClgrICAg ICAgICAgICAgICAgIChtb2RlbC0+SkZFVDJ0bm9tKzExMDgpOwpYKyAgICAg ICAgYXJnMSA9IC1lZ2ZldDEvKGt0MStrdDEpKzEuMTE1MDg3Ny8oQ09OU1Ri b2x0eiooUkVGVEVNUCtSRUZURU1QKSk7ClgrICAgICAgICBwYmZhY3QxID0g LTIqdnRub20gKiAoMS41KmxvZyhmYWN0MSkrQ0hBUkdFKmFyZzEpOwpYKyAg ICAgICAgcGJvID0gKG1vZGVsLT5KRkVUMnBoaS1wYmZhY3QxKS9mYWN0MTsK WCsgICAgICAgIGdtYW9sZCA9IChtb2RlbC0+SkZFVDJwaGktcGJvKS9wYm87 ClgrICAgICAgICBjamZhY3QgPSAxLygxKy41Kig0ZS00Kihtb2RlbC0+SkZF VDJ0bm9tLVJFRlRFTVApLWdtYW9sZCkpOwpYKwpYKyAgICAgICAgaWYobW9k ZWwtPkpGRVQycmQgIT0gMCkgewpYKyAgICAgICAgICAgIG1vZGVsLT5KRkVU MmRyYWluQ29uZHVjdCA9IDEvbW9kZWwtPkpGRVQycmQ7ClgrICAgICAgICB9 IGVsc2UgewpYKyAgICAgICAgICAgIG1vZGVsLT5KRkVUMmRyYWluQ29uZHVj dCA9IDA7ClgrICAgICAgICB9ClgrICAgICAgICBpZihtb2RlbC0+SkZFVDJy cyAhPSAwKSB7ClgrICAgICAgICAgICAgbW9kZWwtPkpGRVQyc291cmNlQ29u ZHVjdCA9IDEvbW9kZWwtPkpGRVQycnM7ClgrICAgICAgICB9IGVsc2UgewpY KyAgICAgICAgICAgIG1vZGVsLT5KRkVUMnNvdXJjZUNvbmR1Y3QgPSAwOwpY KyAgICAgICAgfQpYKyAgICAgICAgaWYobW9kZWwtPkpGRVQyZmMgPi45NSkg ewpYKyAgICAgICAgICAgICgqKFNQZnJvbnRFbmQtPklGZXJyb3IpKShFUlJf V0FSTklORywKWCsgICAgICAgICAgICAgICAgICAgICIlczogRGVwbGV0aW9u IGNhcC4gY29lZmZpY2llbnQgdG9vIGxhcmdlLCBsaW1pdGVkIHRvIC45NSIs ClgrICAgICAgICAgICAgICAgICAgICAmKG1vZGVsLT5KRkVUMm1vZE5hbWUp KTsKWCsgICAgICAgICAgICBtb2RlbC0+SkZFVDJmYyA9IC45NTsKWCsgICAg ICAgIH0KWCsKWCsgICAgICAgIHhmYyA9IGxvZygxIC0gbW9kZWwtPkpGRVQy ZmMpOwpYKyAgICAgICAgbW9kZWwtPkpGRVQyZjIgPSBleHAoKDErLjUpKnhm Yyk7ClgrICAgICAgICBtb2RlbC0+SkZFVDJmMyA9IDEgLSBtb2RlbC0+SkZF VDJmYyAqICgxICsgLjUpOwpYKwpYKyAgICAgICAgLyogbG9vcCB0aHJvdWdo IGFsbCB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbCAqLwpYKyAgICAgICAg Zm9yIChoZXJlID0gbW9kZWwtPkpGRVQyaW5zdGFuY2VzOyBoZXJlICE9IE5V TEwgOwpYKyAgICAgICAgICAgICAgICBoZXJlPWhlcmUtPkpGRVQybmV4dElu c3RhbmNlKSB7ClgrICAgICAgICAgICAgaWYoIShoZXJlLT5KRkVUMnRlbXBH aXZlbikpIHsKWCsgICAgICAgICAgICAgICAgaGVyZS0+SkZFVDJ0ZW1wID0g Y2t0LT5DS1R0ZW1wOwpYKyAgICAgICAgICAgIH0KWCsgICAgICAgICAgICB2 dCA9IGhlcmUtPkpGRVQydGVtcCAqIENPTlNUS292ZXJROwpYKyAgICAgICAg ICAgIGZhY3QyID0gaGVyZS0+SkZFVDJ0ZW1wL1JFRlRFTVA7ClgrICAgICAg ICAgICAgcmF0aW8xID0gaGVyZS0+SkZFVDJ0ZW1wL21vZGVsLT5KRkVUMnRu b20gLTE7ClgrICAgICAgICAgICAgaGVyZS0+SkZFVDJ0U2F0Q3VyID0gbW9k ZWwtPkpGRVQyaXMgKiBleHAocmF0aW8xKjEuMTEvdnQpOwpYKyAgICAgICAg ICAgIGhlcmUtPkpGRVQydENHUyA9IG1vZGVsLT5KRkVUMmNhcGdzICogY2pm YWN0OwpYKyAgICAgICAgICAgIGhlcmUtPkpGRVQydENHRCA9IG1vZGVsLT5K RkVUMmNhcGdkICogY2pmYWN0OwpYKyAgICAgICAgICAgIGt0ID0gQ09OU1Ri b2x0eipoZXJlLT5KRkVUMnRlbXA7ClgrICAgICAgICAgICAgZWdmZXQgPSAx LjE2LSg3LjAyZS00KmhlcmUtPkpGRVQydGVtcCpoZXJlLT5KRkVUMnRlbXAp LwpYKyAgICAgICAgICAgICAgICAgICAgKGhlcmUtPkpGRVQydGVtcCsxMTA4 KTsKWCsgICAgICAgICAgICBhcmcgPSAtZWdmZXQvKGt0K2t0KSArIDEuMTE1 MDg3Ny8oQ09OU1Rib2x0eiooUkVGVEVNUCtSRUZURU1QKSk7ClgrICAgICAg ICAgICAgcGJmYWN0ID0gLTIgKiB2dCAqICgxLjUqbG9nKGZhY3QyKStDSEFS R0UqYXJnKTsKWCsgICAgICAgICAgICBoZXJlLT5KRkVUMnRHYXRlUG90ID0g ZmFjdDIgKiBwYm8gKyBwYmZhY3Q7ClgrICAgICAgICAgICAgZ21hbmV3ID0g KGhlcmUtPkpGRVQydEdhdGVQb3QtcGJvKS9wYm87ClgrICAgICAgICAgICAg Y2pmYWN0MSA9IDErLjUqKDRlLTQqKGhlcmUtPkpGRVQydGVtcC1SRUZURU1Q KS1nbWFuZXcpOwpYKyAgICAgICAgICAgIGhlcmUtPkpGRVQydENHUyAqPSBj amZhY3QxOwpYKyAgICAgICAgICAgIGhlcmUtPkpGRVQydENHRCAqPSBjamZh Y3QxOwpYKwpYKyAgICAgICAgICAgIGhlcmUtPkpGRVQyY29yRGVwQ2FwID0g bW9kZWwtPkpGRVQyZmMgKiBoZXJlLT5KRkVUMnRHYXRlUG90OwpYKyAgICAg ICAgICAgIGhlcmUtPkpGRVQyZjEgPSBoZXJlLT5KRkVUMnRHYXRlUG90ICog KDEgLSBleHAoKDEtLjUpKnhmYykpLygxLS41KTsKWCsgICAgICAgICAgICBo ZXJlLT5KRkVUMnZjcml0ID0gdnQgKiBsb2codnQvKENPTlNUcm9vdDIgKiBo ZXJlLT5KRkVUMnRTYXRDdXIpKTsKWCsKWCsgICAgICAgICAgICBQU2luc3Rh bmNlaW5pdChtb2RlbCwgaGVyZSk7ClgrICAgICAgICAgICAgClgrICAgICAg ICB9ClgrICAgIH0KWCsgICAgcmV0dXJuKE9LKTsKWCt9ClhkaWZmIC1ydU4g Li4vd29yay5vcmlnL3NyYy9saWIvZGV2L2pmZXQyL2pmZXQydHJ1bi5jIC4v c3JjL2xpYi9kZXYvamZldDIvamZldDJ0cnVuLmMKWC0tLSAuLi93b3JrLm9y aWcvc3JjL2xpYi9kZXYvamZldDIvamZldDJ0cnVuLmMJV2VkIERlYyAzMSAx OTowMDowMCAxOTY5ClgrKysgLi9zcmMvbGliL2Rldi9qZmV0Mi9qZmV0MnRy dW4uYwlUdWUgSnVuIDIxIDE0OjM1OjM0IDE5OTQKWEBAIC0wLDAgKzEsMzYg QEAKWCsvKioqKioqKioqKgpYK0Jhc2VkIG9uIGpmZXR0cnVuYy5jClgrQ29w eXJpZ2h0IDE5OTAgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxp Zm9ybmlhLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KWCtBdXRob3I6IDE5ODUg VGhvbWFzIEwuIFF1YXJsZXMKWCsKWCtNb2RpZmllZCB0byBqZmV0MiBmb3Ig UFMgbW9kZWwgZGVmaW5pdGlvbiAoIEFudGhvbnkgRS4gUGFya2VyICkKWCsg ICBDb3B5cmlnaHQgMTk5NCAgTWFjcXVhcmllIFVuaXZlcnNpdHksIFN5ZG5l eSBBdXN0cmFsaWEuClgrKioqKioqKioqKi8KWCsvKgpYKyAqLwpYKwpYKyNp bmNsdWRlICJzcGljZS5oIgpYKyNpbmNsdWRlIDxzdGRpby5oPgpYKyNpbmNs dWRlICJja3RkZWZzLmgiClgrI2luY2x1ZGUgImpmZXQyZGVmcy5oIgpYKyNp bmNsdWRlICJzcGVycm9yLmgiClgrI2luY2x1ZGUgInN1ZmZpeC5oIgpYKwpY KwpYK2ludApYK0pGRVQydHJ1bmMoaW5Nb2RlbCxja3QsdGltZVN0ZXApClgr ICAgIEdFTm1vZGVsICppbk1vZGVsOwpYKyAgICByZWdpc3RlciBDS1RjaXJj dWl0ICpja3Q7ClgrICAgIGRvdWJsZSAqdGltZVN0ZXA7ClgrewpYKyAgICBy ZWdpc3RlciBKRkVUMm1vZGVsICptb2RlbCA9IChKRkVUMm1vZGVsKilpbk1v ZGVsOwpYKyAgICByZWdpc3RlciBKRkVUMmluc3RhbmNlICpoZXJlOwpYKwpY KyAgICBmb3IoIDsgbW9kZWwgIT0gTlVMTDsgbW9kZWwgPSBtb2RlbC0+SkZF VDJuZXh0TW9kZWwpIHsKWCsgICAgICAgIGZvcihoZXJlPW1vZGVsLT5KRkVU Mmluc3RhbmNlcztoZXJlIT1OVUxMO2hlcmUgPSBoZXJlLT5KRkVUMm5leHRJ bnN0YW5jZSl7ClgrICAgICAgICAgICAgQ0tUdGVycihoZXJlLT5KRkVUMnFn cyxja3QsdGltZVN0ZXApOwpYKyAgICAgICAgICAgIENLVHRlcnIoaGVyZS0+ SkZFVDJxZ2QsY2t0LHRpbWVTdGVwKTsKWCsgICAgICAgIH0KWCsgICAgfQpY KyAgICByZXR1cm4oT0spOwpYK30KWGRpZmYgLXJ1TiAuLi93b3JrLm9yaWcv c3JjL2xpYi9kZXYvamZldDIvbWFrZWRlZnMgLi9zcmMvbGliL2Rldi9qZmV0 Mi9tYWtlZGVmcwpYLS0tIC4uL3dvcmsub3JpZy9zcmMvbGliL2Rldi9qZmV0 Mi9tYWtlZGVmcwlXZWQgRGVjIDMxIDE5OjAwOjAwIDE5NjkKWCsrKyAuL3Ny Yy9saWIvZGV2L2pmZXQyL21ha2VkZWZzCU1vbiBKdW4gMjcgMTE6MDU6NDIg MTk5NApYQEAgLTAsMCArMSwzNyBAQApYKyMjIyMjIyMjIyMjClgrIyBDb3B5 cmlnaHQgMTk5MSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlm b3JuaWEuICBBbGwgcmlnaHRzIHJlc2VydmVkLgpYKyMgTW9kaWZpZWQgMTk5 NCBmb3IgamZldDIgYW5kIHBzbW9kZWwKWCsjIyMjIyMjIyMjIwpYKwpYK0NG SUxFUwkJPSBqZmV0Mi5jIGpmZXQyYWNsZC5jIGpmZXQyYXNrLmMgamZldDJk ZWwuYyBqZmV0MmRlc3QuYyBcClgrCQkgIGpmZXQyaWMuYyBqZmV0MmxvYWQu YyBqZmV0Mm1hc2suYyBqZmV0Mm1kZWwuYyBcClgrCQkgIGpmZXQybXBhci5j IGpmZXQybm9pLmMgamZldDJwYXIuYyBqZmV0MnNldC5jIFwKWCsJCSAgamZl dDJ0ZW1wLmMgamZldDJ0cnVuLmMgcHNtb2RlbC5jClgrClgrQ09CSlMJCT0g amZldDIubyBqZmV0MmFjbGQubyBqZmV0MmFzay5vIGpmZXQyZGVsLm8gamZl dDJkZXN0Lm8gXApYKwkJICBqZmV0MmljLm8gamZldDJsb2FkLm8gamZldDJt YXNrLm8gamZldDJtZGVsLm8gXApYKwkJICBqZmV0Mm1wYXIubyBqZmV0Mm5v aS5vIGpmZXQycGFyLm8gamZldDJzZXQubyBcClgrCQkgIGpmZXQydGVtcC5v IGpmZXQydHJ1bi5vIHBzbW9kZWwubwpYKwpYK01PRFVMRQkJPSBqZmV0MgpY K0xJQlJBUlkJCT0gZGV2ClgrTU9EVUxFX1RBUkdFVAk9ICQoT0JKTElCX0RJ UikvJChNT0RVTEUpClgrClgrTlVNQkVSCQk9IDMKWCsKWCtqZmV0Mi5vOiBq ZmV0Mi5jIGpmZXQycGFybS5oClgramZldDJhY2xkLm86IGpmZXQyYWNsZC5j IGpmZXQycGFybS5oIHBzbW9kZWwuaApYK2pmZXQyYXNrLm86IGpmZXQyYXNr LmMgamZldDJwYXJtLmgKWCtqZmV0MmRlbC5vOiBqZmV0MmRlbC5jIGpmZXQy cGFybS5oClgramZldDJkZXN0Lm86IGpmZXQyZGVzdC5jIGpmZXQycGFybS5o ClgramZldDJpYy5vOiBqZmV0MmljLmMgamZldDJwYXJtLmgKWCtqZmV0Mmxv YWQubzogamZldDJsb2FkLmMgamZldDJwYXJtLmggcHNtb2RlbC5oClgramZl dDJtYXNrLm86IGpmZXQybWFzay5jIGpmZXQycGFybS5oClgramZldDJtZGVs Lm86IGpmZXQybWRlbC5jIGpmZXQycGFybS5oClgramZldDJtcGFyLm86IGpm ZXQybXBhci5jIGpmZXQycGFybS5oClgramZldDJub2kubzogamZldDJub2ku YyBqZmV0MnBhcm0uaApYK2pmZXQycGFyLm86IGpmZXQycGFyLmMgamZldDJw YXJtLmgKWCtqZmV0MnNldC5vOiBqZmV0MnNldC5jIGpmZXQycGFybS5oClgr amZldDJ0ZW1wLm86IGpmZXQydGVtcC5jIGpmZXQycGFybS5oIHBzbW9kZWwu aApYK2pmZXQydHJ1bi5vOiBqZmV0MnRydW4uYyBqZmV0MnBhcm0uaApYK3Bz bW9kZWwubzogcHNtb2RlbC5jIHBzbW9kZWwuaCBqZmV0MnBhcm0uaApYZGlm ZiAtcnVOIC4uL3dvcmsub3JpZy9zcmMvbGliL2Rldi9qZmV0Mi9tc2M1MS5i YXQgLi9zcmMvbGliL2Rldi9qZmV0Mi9tc2M1MS5iYXQKWC0tLSAuLi93b3Jr Lm9yaWcvc3JjL2xpYi9kZXYvamZldDIvbXNjNTEuYmF0CVdlZCBEZWMgMzEg MTk6MDA6MDAgMTk2OQpYKysrIC4vc3JjL2xpYi9kZXYvamZldDIvbXNjNTEu YmF0CU1vbiBKdW4gMjcgMTE6MDY6MTAgMTk5NApYQEAgLTAsMCArMSwxNyBA QApYK2NsIC9JLi5cLi5cLi5caW5jbHVkZSAvYyBqZmV0Mi5jID4+IC4uXC4u XC4uXG1zYy5vdXQKWCtjbCAvSS4uXC4uXC4uXGluY2x1ZGUgL2MgamZldDJh Y2xkLmMgPj4gLi5cLi5cLi5cbXNjLm91dApYK2NsIC9JLi5cLi5cLi5caW5j bHVkZSAvYyBqZmV0MmFzay5jID4+IC4uXC4uXC4uXG1zYy5vdXQKWCtjbCAv SS4uXC4uXC4uXGluY2x1ZGUgL2MgamZldDJkZWwuYyA+PiAuLlwuLlwuLlxt c2Mub3V0ClgrY2wgL0kuLlwuLlwuLlxpbmNsdWRlIC9jIGpmZXQyZGVzdC5j ID4+IC4uXC4uXC4uXG1zYy5vdXQKWCtjbCAvSS4uXC4uXC4uXGluY2x1ZGUg L2MgamZldDJpYy5jID4+IC4uXC4uXC4uXG1zYy5vdXQKWCtjbCAvSS4uXC4u XC4uXGluY2x1ZGUgL2MgamZldDJsb2FkLmMgPj4gLi5cLi5cLi5cbXNjLm91 dApYK2NsIC9JLi5cLi5cLi5caW5jbHVkZSAvYyBqZmV0Mm1hc2suYyA+PiAu LlwuLlwuLlxtc2Mub3V0ClgrY2wgL0kuLlwuLlwuLlxpbmNsdWRlIC9jIGpm ZXQybWRlbC5jID4+IC4uXC4uXC4uXG1zYy5vdXQKWCtjbCAvSS4uXC4uXC4u XGluY2x1ZGUgL2MgamZldDJtcGFyLmMgPj4gLi5cLi5cLi5cbXNjLm91dApY K2NsIC9JLi5cLi5cLi5caW5jbHVkZSAvYyBqZmV0Mm5vaS5jID4+IC4uXC4u XC4uXG1zYy5vdXQKWCtjbCAvSS4uXC4uXC4uXGluY2x1ZGUgL2MgamZldDJw YXIuYyA+PiAuLlwuLlwuLlxtc2Mub3V0ClgrY2wgL0kuLlwuLlwuLlxpbmNs dWRlIC9jIGpmZXQyc2V0LmMgPj4gLi5cLi5cLi5cbXNjLm91dApYK2NsIC9J Li5cLi5cLi5caW5jbHVkZSAvYyBqZmV0MnRlbXAuYyA+PiAuLlwuLlwuLlxt c2Mub3V0ClgrY2wgL0kuLlwuLlwuLlxpbmNsdWRlIC9jIGpmZXQydHJ1bi5j ID4+IC4uXC4uXC4uXG1zYy5vdXQKWCtjbCAvSS4uXC4uXC4uXGluY2x1ZGUg L2MgcHNtb2RlbC5jID4+IC4uXC4uXC4uXG1zYy5vdXQKWCtsaWIgLi5cLi5c ZGV2My5saWIgQHJlc3BvbnNlLmxpYiA+PiAuLlwuLlwuLlxtc2Mub3V0Clhk aWZmIC1ydU4gLi4vd29yay5vcmlnL3NyYy9saWIvZGV2L2pmZXQyL3BzbW9k ZWwuYyAuL3NyYy9saWIvZGV2L2pmZXQyL3BzbW9kZWwuYwpYLS0tIC4uL3dv cmsub3JpZy9zcmMvbGliL2Rldi9qZmV0Mi9wc21vZGVsLmMJV2VkIERlYyAz MSAxOTowMDowMCAxOTY5ClgrKysgLi9zcmMvbGliL2Rldi9qZmV0Mi9wc21v ZGVsLmMJU2F0IEp1bCAgNiAwMTo0MjowOSAxOTk2ClhAQCAtMCwwICsxLDM1 OSBAQApYKy8qClgrIAlQYXJrZXItU2tlbGxlcm4gTUVTRkVUIG1vZGVsClgr IAkKWCsJQ29weXJpZ2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2ICBNYWNxdWFy aWUgVW5pdmVyc2l0eSAgICAgICAgICAgICAgICAgICAgClgrCUFsbCBSaWdo dHMgUmVzZXJ2ZWQgClgrCUF1dGhvcjogQW50aG9ueSBQYXJrZXIKWCsJRGF0 ZToJMiAgRmViIDE5OTQgIGNyZWF0ZWQKWCsJICAgICAgICA5ICBGZWIgMTk5 NCAgY29ycmVjdCBOYU4gcHJvYmxlbSBpbiBzdHJvbmcgY3V0LW9mZiByZWdp b24KWCsJICAgICAgICAyMCBNQVIgMTk5NCAgY29ycmVjdGVkIGNhcGFjaXRh bmNlIGluaXRpYWxpemF0aW9uICAKWCsJICAgICAgICAyNCBNQVIgMTk5NCAg YWRkZWQgcGFyYW1ldGVyIE1WU1QgIApYKwkgICAgICAgIDI4IE1BUiAxOTk0 ICByZW9yZ2FuaXplZCBkZWNsYXJhdGlvbiBzY29wZXMgClgrICAgICAgICAg ICAgMTkgQVBSIDE5OTQgIGFkZGVkIG5ldyBwYXJhbWV0ZXJzOiBQU19IRkVU QSwgUFNfSEZFMSwgUFNfSEZFMiwKWCsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFBTX0hGRzEsIGFuZCBQU19IRkcyClgrICAgICAgICAgICAgMTgg TWF5IDE5OTQgIGNvcnJlY3RlZCAxLzAgZXJyb3Igd2hlbiBQU19WU1VCPTAK WCsgICAgICAgICAgICAxNSBKdWwgMTk5NCAgY29ycmVjdGVkIGVycm9ycyBp biBhY2xvYWQgcm91dGluZQpYKyAgICAgICAgICAgIDEwIEF1ZyAxOTk1ICBh ZGRlZCBQU19WU1VCIHRvIGdkcyArPSBnbSpQU19WU1VCKm12c3QqKHZndC12 Z3N0KihhLi4KWCsJCQkxMiBTZXAgMTk5NSAgY2hhbmdlZCBfWFhYIHRvIFBT X1hYWCB0byBhaWQgcG9ydGFiaWxpdHkKWCsgICAgICAgICAgICAxMyBTZXAg MTk5NSAgY2hhbmdlIHRvIGdpdmUgYXJnPTEtMS9zdWJmYWM7IApYKwkJCSAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHZzdCE9MCkgZ2RzKz1nbSpQ U19WU1VCLi47ClgrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdtICo9IGFyZzsKWCsJCQkxMCBGZWIgMTk5NiAgY2hhbmdlIHRv IG5hbWVzIHRvIG1hdGNoIE1pY3JvU2ltIGNvZGUuClgrCQkJNSAgSnVsIDE5 OTYgIGNvcnJlY3RlZCBkaW9kZSBlcSAoY2hhbmdlIEdtaW4qdmdzIHRvIEdt aW4qdmdkKS4KWCsgClgrKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KiovClgrClgrLyotLS0tLS0tLS0tLQpYK3wgZnVuY3Rpb25zIGRlZmluZWQg aW4gdGhpcyBmaWxlIGFyZToKWCsgICAgUFNpZHMoKSAgICAgICAgICByZXR1 cm5zIGRjIGRyYWluIHNvdXJjZSBjdXJyZW50IGFuZCBhc3NpZ25zIG90aGVy ClgrICAgICAgICAgICAgICAgICAgICAgY3VycmVudCBhbmQgYnJhbmNoIGNv bmR1Y3RhbmNlcwpYKyAgICBxZ2coKSAgICAgICAgICAgIHN0YXRpYyBmdW5j dGlvbiB0aGF0IHJldHVybnMgZ2F0ZSBjaGFyZ2UKWCsgICAgUFNjaGFyZ2Uo KSAgICAgICByZXR1cm5zIGdhdGUtc291cmNlIGFuZCBnYXRlLWRyYWluIGNo YXJnZSBhbmQgY2FwYWNpdGFuY2UKWCsgICAgUFNhY2xvYWQoKSAgICAgICBy ZXR1cm5zIHNtYWxsLXNpZ25hbCBjb25kdWN0YW5jZSBlbGVtZW50cwpYKyAg ICBQU2luc3RhbmNlaW5pdCgpIGluaXRpYWxpemVzIG1vZGVsIHBhcmFtZXRl cnMKWCsgKi8KWCsKWCsjZGVmaW5lIFBTTU9ERUxfQyAgICAgIC8qIGFjdGl2 YXRlIGxvY2FsIGRlZmluaXRpb25zIGluIHBzbWVzZmV0LmggKi8KWCsjaW5j bHVkZSAicHNtb2RlbC5oIgpYKwpYKy8qLS0tLS0tLS0tLS0KWCt8IGRjIGN1 cnJlbnQgYW5kIGNvbmR1Y3RhbmNlIGNhbGN1bGF0aW9uICovClgrZG91Ymxl ClgrUFNpZHMoY2t0LCBtb2RlbCwgaGVyZSwgdmdzLCB2Z2QsIGlncywgaWdk LCBnZ3MsIGdnZCwgR20sIEdkcykKWCtjcmVmICpja3Q7ClgrbW9kbCAqbW9k ZWw7ClgraW5zdCAqaGVyZTsKWCtkb3VibGUgdmdzOwpYK2RvdWJsZSB2Z2Q7 ClgrZG91YmxlICppZ3M7ClgrZG91YmxlICppZ2Q7ClgrZG91YmxlICpnZ3M7 ClgrZG91YmxlICpnZ2Q7ClgrZG91YmxlICpHbTsKWCtkb3VibGUgKkdkczsK WCt7ClgrI2RlZmluZSBGWCAgLTEwLjAgLyogbm90IHRvbyBzbWFsbCBlbHNl IGZhdGFsIHJvdW5kaW5nIGVycm9yIGluIChycHQtYV9ycHQpICovClgrI2Rl ZmluZSBNWCAgNDAuMCAgLyogbWF4aW11bSBleHBvbmVudGlhbCBhcmd1bWVu dCAqLwpYKyNkZWZpbmUgRU1YIDIuMzUzODUyNjY4MzcwMTk5ODQyZTE3ICAv KiBleHAoTVgpICovClgrClgrICAgZG91YmxlIGlkcmFpbiwgYXJnOwpYKyAg IGRvdWJsZSBhcmVhID0gQVJFQTsKWCsKWCsgICB7IC8qIGdhdGUganVuY3Rp b24gZGlvZGVzICovClgrICAgICAgZG91YmxlIHp6OwpYKyAgICAgIHsgLyog Z2F0ZS1qdW5jdGlvbiBmb3J3YXJkIGNvbmR1Y3Rpb24gKi8KWCsgICAgICAg ICBkb3VibGUgR21pbiAgID0gR01JTjsKWCsgICAgICAgICBkb3VibGUgVnQg ICAgID0gTlZUOwpYKyAgICAgICAgIGRvdWJsZSBpc2F0ICAgPSBJUyAgICog YXJlYTsKWCsgICAgICAgICBpZiAoKGFyZz12Z3MvVnQpID4gRlgpIHsKWCsg ICAgICAgICAgICBpZihhcmcgPCBNWCkgewpYKyAgICAgICAgICAgICAgICpn Z3M9KHp6PWlzYXQqZXhwKGFyZykpL1Z0K0dtaW47ICppZ3M9IHp6IC1pc2F0 ICtHbWluKnZnczsKWCsgICAgICAgICAgICB9IGVsc2UgewpYKyAgICAgICAg ICAgICAgICpnZ3M9KHp6PWlzYXQqRU1YKS9WdCtHbWluOyAgICAgKmlncz16 eiooYXJnLU1YKzEpLWlzYXQrR21pbip2Z3M7ClgrICAgICAgICAgICAgfQpY KyAgICAgICAgIH0gZWxzZSB7ClgrICAgICAgICAgICAgKmdncyA9IEdtaW47 ICAgICAgICAgICAgICAgICAgICAgICAqaWdzID0gLWlzYXQgKyBHbWluICog dmdzOwpYKyAgICAgICAgIH0KWCsgICAgICAgICBpZiAoKGFyZz12Z2QvVnQp ID4gRlgpIHsKWCsgICAgICAgICAgICBpZihhcmcgPCBNWCkgewpYKyAgICAg ICAgICAgICAgICpnZ2Q9KHp6PWlzYXQqZXhwKGFyZykpL1Z0K0dtaW47ICpp Z2Q9IHp6IC1pc2F0ICtHbWluKnZnZDsKWCsgICAgICAgICAgICB9IGVsc2Ug ewpYKyAgICAgICAgICAgICAgICpnZ2Q9KHp6PWlzYXQqRU1YKS9WdCtHbWlu OyAgICAgKmlnZD16eiooYXJnLU1YKzEpLWlzYXQrR21pbip2Z2Q7ClgrICAg ICAgICAgICAgfQpYKyAgICAgICAgIH0gZWxzZSB7ClgrICAgICAgICAgICAg KmdnZCA9IEdtaW47ICAgICAgICAgICAgICAgICAgICAgICAqaWdkID0gLWlz YXQgKyBHbWluICogdmdkOwpYKyAgICAgICAgIH0KWCsgICAgICB9ClgrICAg ICAgeyAvKiBnYXRlLWp1bmN0aW9uIHJldmVyc2UgJ2JyZWFrZG93bicgY29u ZHVjdGlvbiAqLwpYKyAgICAgICAgIGRvdWJsZSBWYmQgICAgPSBWQkQ7Clgr ICAgICAgICAgZG91YmxlIGliZCAgICA9IElCRCAgKiBhcmVhOwpYKyAgICAg ICAgIGlmICgoYXJnPS12Z3MvVmJkKSA+IEZYKSB7ClgrICAgICAgICAgICAg aWYoYXJnIDwgTVgpIHsKWCsgICAgICAgICAgICAgICAqZ2dzICs9ICh6ej1p YmQqZXhwKGFyZykpL1ZiZDsgICppZ3MgLT0genotaWJkOwpYKyAgICAgICAg ICAgIH0gZWxzZSB7ClgrICAgICAgICAgICAgICAgKmdncyArPSAoeno9aWJk KkVNWCkvVmJkOyAgICAgICAqaWdzIC09IHp6KigoYXJnLU1YKSsxKSAtIGli ZDsKWCsgICAgICAgICAgICB9ClgrICAgICAgICAgfSBlbHNlICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqaWdzICs9IGliZDsKWCsgICAgICAg ICBpZiAoKGFyZz0tdmdkL1ZiZCkgPiBGWCkgewpYKyAgICAgICAgICAgIGlm KGFyZyA8IE1YKSB7ClgrICAgICAgICAgICAgICAgKmdnZCArPSAoeno9aWJk KmV4cChhcmcpKS9WYmQ7ICAqaWdkIC09IHp6LWliZDsKWCsgICAgICAgICAg ICB9IGVsc2UgewpYKyAgICAgICAgICAgICAgICpnZ2QgKz0gKHp6PWliZCpF TVgpL1ZiZDsgICAgICAgKmlnZCAtPSB6eiooKGFyZy1NWCkrMSkgLSBpYmQ7 ClgrICAgICAgICAgICAgfQpYKyAgICAgICAgIH0gZWxzZSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKmlnZCArPSBpYmQ7ClgrICAgICAgfQpY KyAgIH0KWCsgICAgClgrICAgeyAvKiAgY29tcHV0ZSBkcmFpbiBjdXJyZW50 IGFuZCBkZXJpdml0aXZlcyAqLwpYKyAgICAgIGRvdWJsZSBnbSwgZ2RzOwpY KyAgICAgIGRvdWJsZSB2ZHN0ID0gdmdzIC0gdmdkOwpYKyAgICAgIGRvdWJs ZSBzdGVwb2ZvdXIgPSBTVEVQICogRk9VUlRIOwpYKyAgICAgIHsgLyogSW5j bHVkZSByYXRlIGRlcGVuZGVudCB0aHJlc2hvbGQgbW9kdWxhdGlvbiAqLwpY KyAgICAgICAgIGRvdWJsZSB2Z3N0LCBkdmdkLCBkdmdzLCBoLCB2Z2R0cmFw LCB2Z3N0cmFwLCBldGEsIGdhbTsKWCsgICAgICAgICBkb3VibGUgdnRvID0g VlRPOwpYKyAgICAgICAgIGRvdWJsZSBMRmcgPSBMRkdBTSwgICBMRmcxID0g TEZHMSwgIExGZzIgPSBMRkcyOwpYKyAgICAgICAgIGRvdWJsZSBIRmcgPSBI RkdBTSwgICBIRmcxID0gSEZHMSwgIEhGZzIgPSBIRkcyOwpYKyAgICAgICAg IGRvdWJsZSBIRmUgPSBIRkVUQSwgICBIRmUxID0gSEZFMSwgIEhGZTIgPSBI RkUyOwpYKyAgICAgICAgIGlmKFRSQU5fQU5BTCkgewpYKyAgICAgICAgICAg IGRvdWJsZSB0YXVnID0gVEFVRzsKWCsgICAgICAgICAgICBoID0gdGF1Zy8o dGF1ZyArIHN0ZXBvZm91cik7ICBoKj1oOyBoKj1oOyAvKjR0aCBwb3dlciov ClgrICAgICAgICAgICAgVkdEVFJBUF9OT1cgPSB2Z2R0cmFwID0gaCpWR0RU UkFQX0JFRk9SRSArICgxLWgpICogdmdkOwpYKyAgICAgICAgICAgIFZHU1RS QVBfTk9XID0gdmdzdHJhcCA9IGgqVkdTVFJBUF9CRUZPUkUgKyAoMS1oKSAq IHZnczsKWCsgICAgICAgICB9IGVsc2UgewpYKyAgICAgICAgICAgIGggPSAw OwpYKyAgICAgICAgICAgIFZHRFRSQVBfTk9XID0gdmdkdHJhcCA9IHZnZDsK WCsgICAgICAgICAgICBWR1NUUkFQX05PVyA9IHZnc3RyYXAgPSB2Z3M7Clgr ICAgICAgICAgfQpYKyAgICAgICAgIHZnc3QgPSB2Z3MgLSB2dG87ClgrICAg ICAgICAgdmdzdCAtPSAoICAgICAgTEZnIC0gTEZnMSp2Z3N0cmFwICsgTEZn Mip2Z2R0cmFwKSp2Z2R0cmFwOwpYKyAgICAgICAgIHZnc3QgKz0gKGV0YSA9 IEhGZSAtIEhGZTEqdmdkdHJhcCArIEhGZTIqdmdzdHJhcCkqKGR2Z3MgPSB2 Z3N0cmFwLXZncyk7ClgrICAgICAgICAgdmdzdCArPSAoZ2FtID0gSEZnIC0g SEZnMSp2Z3N0cmFwICsgSEZnMip2Z2R0cmFwKSooZHZnZCA9IHZnZHRyYXAt dmdkKTsKWCsgICAgICAgICB7IC8qIEV4cG9uZW50aWFsIFN1YnRocmVzaG9s ZCBlZmZlY3QgaWRzKHZnc3QsdmRzdCkgKi8KWCsgICAgICAgICAgICBkb3Vi bGUgdmd0LCBzdWJmYWM7ClgrICAgICAgICAgICAgZG91YmxlIG12c3QgPSBN VlNUOwpYKyAgICAgICAgICAgIGRvdWJsZSB2c3QgPSBWU1VCICogKDEgKyBt dnN0KnZkc3QpOwpYKyAgICAgICAgICAgIGlmICh2Z3N0ID4gRlgqdnN0KSB7 ClgrICAgICAgICAgICAgICAgaWYgKHZnc3QgPiAoYXJnPU1YKnZzdCkpIHsg LyogbnVtZXJpY2FsbHkgbGFyZ2UgKi8KWCsgICAgICAgICAgICAgICAgICB2 Z3QgPSAoRU1YLyhzdWJmYWMgPSBFTVgrMSkpKih2Z3N0LWFyZykgKyBhcmc7 ClgrICAgICAgICAgICAgICAgfSBlbHNlICAvKiBsaW1pdCBnYXRlIGJpYXMg ZXhwb25lbnRpYWxseSAqLwpYKyAgICAgICAgICAgICAgICAgIHZndCA9IHZz dCAqIGxvZyggc3ViZmFjPSgxICsgZXhwKHZnc3QvdnN0KSkgKTsKWCsgICAg ICAgICAgICAgICB7IC8qIER1YWwgUG93ZXItbGF3IGlkcyh2Z3QsdmRzdCkg Ki8KWCsgICAgICAgICAgICAgICAgICBkb3VibGUgbVEgID0gUTsKWCsgICAg ICAgICAgICAgICAgICBkb3VibGUgUG1RID0gUCAtIG1ROwpYKyAgICAgICAg ICAgICAgICAgIGRvdWJsZSBkdnBkX2R2ZHN0PShkb3VibGUpRDMqcG93KHZn dCxQbVEpOwpYKyAgICAgICAgICAgICAgICAgIGRvdWJsZSB2ZHAgPSB2ZHN0 KmR2cGRfZHZkc3Q7IC8qRDM9UC9RLygoVkJJLXZ0byleUG1RKSovClgrICAg ICAgICAgICAgICAgICAgeyAvKiBFYXJseSBzYXR1cmF0aW9uIGVmZmVjdCBp ZHModmd0LHZkcCkgKi8KWCsgICAgICAgICAgICAgICAgICAgICBkb3VibGUg emEgID0gKGRvdWJsZSlaQTsgLyogc3FydCgxICsgWikvMiAqLwpYKyAgICAg ICAgICAgICAgICAgICAgIGRvdWJsZSBteGkgPSBNWEk7ClgrICAgICAgICAg ICAgICAgICAgICAgZG91YmxlIHZzYXRGYWMgPSB2Z3QvKG14aSp2Z3QgICsg KGRvdWJsZSlYSV9XT08pOwpYKyAgICAgICAgICAgICAgICAgICAgIGRvdWJs ZSB2c2F0PXZndC8oMSArIHZzYXRGYWMpOwpYKyAgICAgICAgICAgICAgICAg ICAgIGRvdWJsZSAgYWEgPSB6YSp2ZHArdnNhdC8yLjA7ClgrICAgICAgICAg ICAgICAgICAgICAgZG91YmxlIGFfYWEgPSBhYS12c2F0OwpYKyAgICAgICAg ICAgICAgICAgICAgIGRvdWJsZSAgcnB0ID0gc3FydCggYWEgKiBhYSArIChh cmc9dnNhdCp2c2F0KlovNC4wKSk7ClgrICAgICAgICAgICAgICAgICAgICAg ZG91YmxlIGFfcnB0ID0gc3FydChhX2FhICogYV9hYSArIGFyZyk7ClgrICAg ICAgICAgICAgICAgICAgICAgZG91YmxlIHZkdCA9IChycHQgLSBhX3JwdCk7 ClgrICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGR2ZHRfZHZkcCA9IHph ICogKGFhL3JwdCAtIGFfYWEvYV9ycHQpOwpYKyAgICAgICAgICAgICAgICAg ICAgIGRvdWJsZSBkdmR0X2R2Z3QgPSAodmR0IC0gdmRwKmR2ZHRfZHZkcCkK WCsgICAgICAgICAgICAgICAgICAgICAgICAgICAqKDEgKyBteGkqdnNhdEZh Yyp2c2F0RmFjKS8oMSArIHZzYXRGYWMpL3ZndDsKWCsgICAgICAgICAgICAg ICAgICAgICB7IC8qIEludHJpbnNpYyBRLWxhdyBGRVQgZXF1YXRpb24gaWRz KHZndCx2ZHQpICovClgrICAgICAgICAgICAgICAgICAgICAgICAgZ2RzPXBv dyh2Z3QtdmR0LG1RLTEpOwpYKyAgICAgICAgICAgICAgICAgICAgICAgIGlk cmFpbiA9IHZkdCpnZHMgKyB2Z3QqKGdtPXBvdyh2Z3QsbVEtMSktZ2RzKTsK WCsgICAgICAgICAgICAgICAgICAgICAgICBnZHMgKj0gbVE7ClgrICAgICAg ICAgICAgICAgICAgICAgICAgZ20gKj0gbVE7ClgrICAgICAgICAgICAgICAg ICAgICAgfQpYKyAgICAgICAgICAgICAgICAgICAgIGdtICs9IGdkcypkdmR0 X2R2Z3Q7ClgrICAgICAgICAgICAgICAgICAgICAgZ2RzICo9IGR2ZHRfZHZk cDsKWCsgICAgICAgICAgICAgICAgICB9ClgrICAgICAgICAgICAgICAgICAg Z20gKz0gZ2RzKlBtUSp2ZHAvdmd0OwpYKyAgICAgICAgICAgICAgICAgIGdk cyAqPSBkdnBkX2R2ZHN0OwpYKyAgICAgICAgICAgICAgIH0KWCsgICAgICAg ICAgICAgICBhcmcgPSAxIC0gMS9zdWJmYWM7ClgrICAgICAgICAgICAgICAg aWYodnN0ICE9IDApIGdkcyArPSBnbSpWU1VCKm12c3QqKHZndC12Z3N0KmFy ZykvdnN0OwpYKyAgICAgICAgICAgICAgIGdtICo9IGFyZzsKWCsgICAgICAg ICAgICB9IGVsc2UgeyAvKiBpbiBleHRyZW1lIGN1dC1vZmYgKG51bWVyaWNh bGx5KSAqLwpYKyAgICAgICAgICAgICAgIGlkcmFpbiA9IGdtID0gZ2RzID0g MC4wZTA7ClgrICAgICAgICAgICAgfQpYKyAgICAgICAgIH0KWCsgICAgICAg ICBnZHMgKz0gZ20qKGFyZyA9IGgqZ2FtICsKWCsgICAgICAgICAgICAgICAg ICAgKDEtaCkqKEhGZTEqZHZncy1IRmcyKmR2Z2QrMipMRmcyKnZnZHRyYXAt TEZnMSp2Z3N0cmFwK0xGZykpOwpYKyAgICAgICAgIGdtICo9IDEgLSBoKmV0 YSArICgxLWgpKihIRmUyKmR2Z3MgLUhGZzEqZHZnZCArIExGZzEqdmdkdHJh cCkgLSBhcmc7ClgrICAgICAgfQpYKyAgICAgIHsgLyogYXBwbHkgY2hhbm5l bCBsZW5ndGggbW9kdWxhdGlvbiBhbmQgYmV0YSBzY2FsaW5nICovClgrICAg ICAgICAgZG91YmxlIGxhbWJkYSA9IExBTTsKWCsgICAgICAgICBkb3VibGUg YmV0YSAgID0gQkVUQSAgKiBhcmVhOwpYKyAgICAgICAgIGdtICo9IChhcmcg PSBiZXRhKigxICsgbGFtYmRhKnZkc3QpKTsKWCsgICAgICAgICBnZHMgPSBi ZXRhKmxhbWJkYSppZHJhaW4gKyBnZHMqYXJnOwpYKyAgICAgICAgIGlkcmFp biAqPSBhcmc7ClgrICAgICAgfQpYKyAgICAgICAgClgrICAgICAgeyAvKiBh cHBseSB0aGVybWFsIHJlZHVjdGlvbiBvZiBkcmFpbiBjdXJyZW50ICovClgr ICAgICAgICBkb3VibGUgaCwgcGZhYywgcEF2ZXJhZ2U7ClgrICAgICAgICBk b3VibGUgZGVsdGEgPSBERUxUIC8gYXJlYTsKWCsgICAgICAgIGlmKFRSQU5f QU5BTCkgewpYKyAgICAgICAgICAgZG91YmxlIHRhdWQgPSBUQVVEOwpYKyAg ICAgICAgICAgaCA9IHRhdWQvKHRhdWQgKyBzdGVwb2ZvdXIpOyAgICBoKj1o OyBoKj1oOwpYKyAgICAgICAgICAgUE9XUl9OT1cgPSBwQXZlcmFnZSA9IGgq UE9XUl9CRUZPUkUgKyAoMS1oKSp2ZHN0KmlkcmFpbjsKWCsgICAgICAgIH0g ZWxzZSB7ClgrICAgICAgICAgICBQT1dSX05PVyA9IFBPV1JfQkVGT1JFID0g cEF2ZXJhZ2UgPSB2ZHN0KmlkcmFpbjsgIGggPSAwOwpYKyAgICAgICAgfQpY KyAgICAgICAgaWRyYWluIC89IChwZmFjID0gMStwQXZlcmFnZSpkZWx0YSk7 ClgrICAgICAgICAqR20gID0gZ20gKiAoYXJnID0gKGgqZGVsdGEqUE9XUl9C RUZPUkUgKyAxKS9wZmFjL3BmYWMpOwpYKyAgICAgICAgKkdkcyA9IGdkcyAq IGFyZyAtICgxLWgpICogZGVsdGEqaWRyYWluKmlkcmFpbjsKWCsgICAgICB9 ClgrICAgfQpYKyAgIHJldHVybihpZHJhaW4pOwpYK30KWCsKWCsvKi0tLS0t LS0tLS0tClgrfCBjb2RlIGJhc2VkIG9uIFN0YXR6IGV0LiBhbC4gY2FwYWNp dGFuY2UgbW9kZWwsICBJRUVFIFRyYW4gRUQgRmViIDg3ICovClgrc3RhdGlj IGRvdWJsZQpYK3FnZyh2Z3MsIHZnZCwgZ2FtbWEsIHBiLCBhbHBoYSwgdnRv LCB2bWF4LCB4YywgY2dzbywgY2dkbywgY2dzLCBjZ2QpClgrZG91YmxlIHZn cywgdmdkLCBnYW1tYSwgcGIsIGFscGhhLCB2dG8sIHZtYXgsIHhjLCBjZ3Nv LCBjZ2RvLCAqY2dzLCAqY2dkOwpYK3sKWCsgICBkb3VibGUgcXJ0LCBleHQs IENnc28sIGNwbSwgY3BsdXMsIGNtaW51czsKWCsgICBkb3VibGUgdmRzICAg PSB2Z3MtdmdkOwpYKyAgIGRvdWJsZSBkMV94YyA9IDEteGM7ClgrICAgZG91 YmxlIHZlcnQgID0gc3FydCggdmRzICogdmRzICsgYWxwaGEgKTsKWCsgICBk b3VibGUgdmVmZiAgPSAwLjUqKHZncyArIHZnZCArIHZlcnQpICsgZ2FtbWEq dmRzOwpYKyAgIGRvdWJsZSB2bnIgICA9IGQxX3hjKih2ZWZmLXZ0byk7Clgr ICAgZG91YmxlIHZucnQgID0gc3FydCggdm5yKnZuciArIDAuMDQgKTsKWCsg ICBkb3VibGUgdm5ldyAgPSB2ZWZmICsgMC41Kih2bnJ0IC0gdm5yKTsKWCsg ICBpZiAoIHZuZXcgPCB2bWF4ICkgewpYKyAgICAgIGV4dCAgPSAwOwpYKyAg ICAgIHFydCAgPSBzcXJ0KDEgLSB2bmV3L3BiKTsKWCsgICAgICBDZ3NvID0g MC41KmNnc28vcXJ0KigxK3hjICsgZDFfeGMqdm5yL3ZucnQpOwpYKyAgIH0g ZWxzZSB7ClgrICAgICAgZG91YmxlIHZ4ICA9IDAuNSoodm5ldy12bWF4KTsK WCsgICAgICBkb3VibGUgcGFyID0gMSt2eC8ocGItdm1heCk7ClgrICAgICAg cXJ0ICA9IHNxcnQoMSAtIHZtYXgvcGIpOwpYKyAgICAgIGV4dCAgPSB2eCoo MSArIHBhcikvcXJ0OwpYKyAgICAgIENnc28gPSAwLjUqY2dzby9xcnQqKDEr eGMgKyBkMV94Yyp2bnIvdm5ydCkgKiBwYXI7ClgrICAgfQpYKyAgIGNwbHVz ID0gMC41KigxICsgKGNwbSA9IHZkcy92ZXJ0KSk7IGNtaW51cyA9IGNwbHVz IC0gY3BtOwpYKyAgICpjZ3MgPSBDZ3NvKihjcGx1cyArZ2FtbWEpICsgY2dk byooY21pbnVzK2dhbW1hKTsKWCsgICAqY2dkID0gQ2dzbyooY21pbnVzLWdh bW1hKSArIGNnZG8qKGNwbHVzIC1nYW1tYSk7ClgrICAgcmV0dXJuKGNnc28q KChwYitwYikqKDEtcXJ0KSArIGV4dCkgKyBjZ2RvKih2ZWZmIC0gdmVydCkp OwpYK30KWCsKWCsvKi0tLS0tLS0tLS0tClgrfCBjYWxsIGR1cmluZyBhYyBh bmFseXNpcyBpbml0aWFsaXNhdGlvbiBvciBkdXJpbmcgdHJhbnNpZW50IGFu YWx5c2lzICovClgrdm9pZApYK1BTY2hhcmdlKGNrdCwgbW9kZWwsIGhlcmUs IHZncywgdmdkLCBjYXBncywgY2FwZ2QpClgrY3JlZiAqY2t0OwpYK21vZGwg Km1vZGVsOwpYK2luc3QgKmhlcmU7ClgrZG91YmxlIHZnczsKWCtkb3VibGUg dmdkOwpYK2RvdWJsZSAqY2FwZ3M7ClgrZG91YmxlICpjYXBnZDsKWCt7Clgr I2RlZmluZSBRR0coYSxiLGMsZCkgcWdnKGEsYixnYWMscGhpYixhbHBoYSx2 dG8sdm1heCx4YyxjemdzLGN6Z2QsYyxkKQpYKy8qICBkb3VibGUgcWdnKCk7 ICovClgrICAgICAgClgrICAgZG91YmxlIGN6Z3MgPSBDR1MgKiBBUkVBOwpY KyAgIGRvdWJsZSBjemdkID0gQ0dEICogQVJFQTsKWCsgICBkb3VibGUgdnRv ICAgPSBWVE87ClgrICAgZG91YmxlIGFscGhhID0gKGRvdWJsZSlBTFBIQTsg IC8qIChYSSp3b28vKFhJKzEpLzIpXjIgKi8KWCsgICBkb3VibGUgeGMgICAg PSBYQzsKWCsgICBkb3VibGUgdm1heCAgPSBWTUFYOwpYKyAgIGRvdWJsZSBw aGliICA9IFZCSTsKWCsgICBkb3VibGUgZ2FjICAgPSBBQ0dBTTsKWCsgICAK WCsgICBpZigvKlRSQU5fSU5JVCB8fCovICFUUkFOX0FOQUwpClgrICAgICAg IFFHU19OT1cgPSBRR0RfTk9XID0gUUdTX0JFRk9SRSA9IFFHRF9CRUZPUkUK WCsgICAgICAgICAgPSBRR0codmdzLHZnZCxjYXBncyxjYXBnZCk7ClgrICAg ZWxzZSB7ClgrICAgICAgZG91YmxlIGNnc25hLGNnc25jOwpYKyAgICAgIGRv dWJsZSBjZ2RuYSxjZ2RuYiwgYV9jYXA7ClgrICAgICAgZG91YmxlIHZnczEg ID0gVkdTMTsKWCsgICAgICBkb3VibGUgdmdkMSAgPSBWR0QxOwpYKyAgICAg IGRvdWJsZSBxZ2dhPVFHRyh2Z3MgLHZnZCAsJmNnc25hLCZjZ2RuYSk7Clgr ICAgICAgZG91YmxlIHFnZ2I9UUdHKHZnczEsdmdkICwmYV9jYXAsJmNnZG5i KTsKWCsgICAgICBkb3VibGUgcWdnYz1RR0codmdzICx2Z2QxLCZjZ3NuYywm YV9jYXApOwpYKyAgICAgIGRvdWJsZSBxZ2dkPVFHRyh2Z3MxLHZnZDEsJmFf Y2FwLCZhX2NhcCk7ClgrICAgICAgUUdTX05PVyA9IFFHU19CRUZPUkUgKyAw LjUgKiAocWdnYS1xZ2diICsgcWdnYy1xZ2dkKTsKWCsgICAgICBRR0RfTk9X ID0gUUdEX0JFRk9SRSArIDAuNSAqIChxZ2dhLXFnZ2MgKyBxZ2diLXFnZ2Qp OwpYKyAgICAgICpjYXBncyA9IDAuNSAqIChjZ3NuYSArIGNnc25jKTsKWCsg ICAgICAqY2FwZ2QgPSAwLjUgKiAoY2dkbmEgKyBjZ2RuYik7ClgrICAgfQpY K30KWCsKWCsKWCsvKi0tLS0tLS0tLS0tClgrfCBjYWxsIGZvciBlYWNoIGZy ZXF1ZW5jeSBpbiBhYyBhbmFseXNpcyAqLwpYK3ZvaWQKWCtQU2FjbG9hZChj a3QsIG1vZGVsLCBoZXJlLCB2Z3MsIHZnZCwgaWRzLCBvbWVnYSwgR20sIHhH bSwgR2RzLCB4R2RzKQpYK2NyZWYgKmNrdDsKWCttb2RsICptb2RlbDsKWCtp bnN0ICpoZXJlOwpYK2RvdWJsZSB2Z3M7ClgrZG91YmxlIHZnZDsKWCtkb3Vi bGUgaWRzOwpYK2RvdWJsZSBvbWVnYTsKWCtkb3VibGUgKkdtOwpYK2RvdWJs ZSAqeEdtOwpYK2RvdWJsZSAqR2RzOwpYK2RvdWJsZSAqeEdkczsKWCt7Clgr ICAgIGRvdWJsZSBhcmc7ClgrICAgIGRvdWJsZSB2ZHMgPSB2Z3MgLSB2Z2Q7 ClgrICAgIGRvdWJsZSBMRmdhbSA9IExGR0FNOwpYKyAgICBkb3VibGUgTEZn MSA9IExGRzE7ClgrICAgIGRvdWJsZSBMRmcyID0gTEZHMip2Z2Q7ClgrICAg IGRvdWJsZSBIRmcxID0gSEZHMTsKWCsgICAgZG91YmxlIEhGZzIgPSBIRkcy KnZnZDsKWCsgICAgZG91YmxlIEhGZXRhICA9IEhGRVRBOwpYKyAgICBkb3Vi bGUgSEZlMSA9IEhGRTE7ClgrICAgIGRvdWJsZSBIRmUyID0gSEZFMip2Z3M7 ClgrICAgIGRvdWJsZSBoZmdhbT0gSEZHQU0gLSBIRmcxKnZncyArIEhGZzI7 ClgrICAgIGRvdWJsZSBldGEgID0gSEZldGEgLSBIRmUxKnZnZCArIEhGZTI7 ClgrICAgIGRvdWJsZSBsZmdhID0gTEZnYW0gLSBMRmcxKnZncyArIExGZzIg KyBMRmcyOwpYKyAgICBkb3VibGUgZ21vICA9ICpHbS8oMSAtIGxmZ2EgKyBM RmcxKnZnZCk7ClgrICAgIApYKyAgICBkb3VibGUgd3RnID0gVEFVRyAqIG9t ZWdhOwpYKyAgICBkb3VibGUgd3RnZGV0ID0gMSArIHd0Zyp3dGc7ClgrICAg IGRvdWJsZSBnd3RnZGV0ID0gZ21vL3d0Z2RldDsKWCsKWCsgICAgZG91Ymxl IGdkc2kgPSAoYXJnPWhmZ2FtIC0gbGZnYSkqZ3d0Z2RldDsKWCsgICAgZG91 YmxlIGdkc3IgPSBhcmcqZ21vIC0gZ2RzaTsKWCsgICAgZG91YmxlIGdtaSAg PSAoZXRhICsgTEZnMSp2Z2QpKmd3dGdkZXQgKyBnZHNpOwpYKyAKWCsgICAg ZG91YmxlIHhnZHMgPSB3dGcqZ2RzaTsKWCsgICAgZG91YmxlICBnZHMgPSAq R2RzICsgZ2RzcjsKWCsgICAgZG91YmxlICB4Z20gPSAtd3RnKmdtaTsKWCsg ICAgZG91YmxlICAgZ20gPSBnbWkgKyBnbW8qKDEgLWV0YSAtIGhmZ2FtKTsK WCsgICAgICAgICAgICAgICAgClgrICAgIGRvdWJsZSBkZWx0YSA9IERFTFQg LyBBUkVBOwpYKyAgICBkb3VibGUgd3RkID0gVEFVRCAqIG9tZWdhIDsKWCsg ICAgZG91YmxlIHd0ZGRldCA9IDEgKyB3dGQgKiB3dGQ7ClgrICAgIGRvdWJs ZSBmYWMgPSBkZWx0YSAqIGlkczsKWCsgICAgZG91YmxlIGRlbCA9IDEvKDEg LSBmYWMgKiB2ZHMpOwpYKyAgICBkb3VibGUgZGQgPSAoZGVsLTEpIC8gd3Rk ZGV0OwpYKyAgICBkb3VibGUgZHIgPSBkZWwgLSBkZDsKWCsgICAgZG91Ymxl IGRpID0gd3RkICogZGQ7ClgrICAgICAgICAgICAgICAgIApYKyAgICBkb3Vi bGUgY2RzcXIgPSBmYWMgKiBpZHMgKiBkZWwgKiB3dGQvd3RkZGV0OwpYKwpY KyAgICAqR20gICA9IGRyKmdtICAtIGRpKnhnbTsKWCsgICAgKnhHbSAgPSBk aSpnbSAgKyBkcip4Z207ClgrIApYKyAgICAqR2RzICA9IGRyKmdkcyAtIGRp KnhnZHMgKyBjZHNxcip3dGQ7ClgrICAgICp4R2RzID0gZGkqZ2RzICsgZHIq eGdkcyArIGNkc3FyOwpYK30KWCsKWCsKWCt2b2lkICAgIC8qIGNhbGwgd2hl biB0ZW1wZXJhdHVyZSBjaGFuZ2VzICovClgrUFNpbnN0YW5jZWluaXQobW9k ZWwsIGhlcmUpClgrbW9kbCAqbW9kZWw7ClgraW5zdCAqaGVyZTsKWCt7Clgr I2lmbmRlZiBQQVJBTV9DQVNUICAgICAvKiBhbGxvdyBjYXN0aW5nIHRvIHBh cmFtZXRlciB0eXBlICovClgrI2RlZmluZSBQQVJBTV9DQVNUICAgICAvKiBp ZiBub3Qgc3BlY2lmaWVkIHRoZW4gZG9uJ3QgY2FzdCAqLwpYKyNlbmRpZgpY KyAgICAKWCsgICAgZG91YmxlIHdvbyA9IChWQkkgLSBWVE8pOwpYKyAgICBY SV9XT08gPSBQQVJBTV9DQVNUIChYSSAqIHdvbyk7ClgrICAgIFpBICAgICA9 IFBBUkFNX0NBU1QgKHNxcnQoMSArIFopLzIpOwpYKyAgICBBTFBIQSAgPSBQ QVJBTV9DQVNUIChYSV9XT08qWElfV09PLyhYSSsxKS8oWEkrMSkvIDQpOwpY KyAgICBEMyAgICAgPSBQQVJBTV9DQVNUIChQL1EvcG93KHdvbywoUCAtIFEp KSk7ClgrfQpYZGlmZiAtcnVOIC4uL3dvcmsub3JpZy9zcmMvbGliL2Rldi9q ZmV0Mi9wc21vZGVsLmggLi9zcmMvbGliL2Rldi9qZmV0Mi9wc21vZGVsLmgK WC0tLSAuLi93b3JrLm9yaWcvc3JjL2xpYi9kZXYvamZldDIvcHNtb2RlbC5o CVdlZCBEZWMgMzEgMTk6MDA6MDAgMTk2OQpYKysrIC4vc3JjL2xpYi9kZXYv amZldDIvcHNtb2RlbC5oCVNhdCBKdWwgIDYgMDE6NDI6MDkgMTk5NgpYQEAg LTAsMCArMSwxMjEgQEAKWCsvKgpYKyAJUGFya2VyLVNrZWxsZXJuIE1FU0ZF VCBtb2RlbCwgVUNCIFNwaWNlIEdsdWUgSGVhZGVyClgrIAkKWCsJQ29weXJp Z2h0IChDKSAxOTk0LCAxOTk1LCAxOTk2ICBNYWNxdWFyaWUgVW5pdmVyc2l0 eSAgICAgICAgICAgICAgICAgICAgClgrCUFsbCBSaWdodHMgUmVzZXJ2ZWQg ClgrCUF1dGhvcjogQW50aG9ueSBQYXJrZXIKWCsJQ3JlYXRpb24gRGF0ZToJ MiBGZWIgMTk5NCAKWCsJTW9kaWZpZWQ6IDI0IE1hciAxOTk0OiAgIFBhcmFt ZXRlcnMgTVZTVCBhbmQgRVRBIGFkZGVkLiAKWCsgICAgICAgICAgMTggQXBy IDE5OTQ6ICAgQWRkZWQgbmV3IHBhcmFtZXRlcnMgYW5kIGNvbW1lbnRzClgr CSAgMTIgU2VwIDE5OTU6ICAgQ2hhbmdlZCBfWFhYIHRvIFBTX1hYWCB0byBh aWQgcG9ydGFiaWxpdHkKWCsgKi8KWCsKWCsKWCsjaWZkZWYgUFNNT0RFTF9D ICAvKiBQU01PREVMX0MgZGVmaW5lZCB3aGVuIGluY2x1ZGVkIGZyb20gInBz bW9kZWwuYyIgKi8KWCsjaW5jbHVkZSAic3BpY2UuaCIKWCsjaW5jbHVkZSAi amZldDJkZWZzLmgiClgrI2luY2x1ZGUgImNvbnN0LmgiClgrI2VuZGlmClgr ClgrLyogR2x1ZSBkZWZpbml0aW9ucyBmb3IgY3JlZiBtb2RsIGFuZCBpbnN0 ICovClgrdHlwZWRlZiAgQ0tUY2lyY3VpdCAgICBjcmVmOyAvKiBjaXJjdWl0 IHNwZWNpZmljIHZhcmlhYmxlcyAqLwpYK3R5cGVkZWYgIEpGRVQybW9kZWwg ICAgIG1vZGw7IC8qIG1vZGVsIHBhcmFtZXRlcnMgZm9yIHRoaXMgdHlwZSBv ZiBkZXZpY2UgKi8KWCt0eXBlZGVmICBKRkVUMmluc3RhbmNlICBpbnN0OyAv KiBwYXJhbWV0ZXJzIHNwZWNpZmljIHRvIHRoaXMgZGV2aWNlIGluc3RhbmNl ICovClgrClgrI2lmZGVmIF9fU1REQ19fClgrZXh0ZXJuCXZvaWQJUFNpbnN0 YW5jZWluaXQobW9kbCAqLGluc3QgKik7ClgrZXh0ZXJuCWRvdWJsZQlQU2lk cyhjcmVmICosbW9kbCAqLGluc3QgKixkb3VibGUsZG91YmxlLApYKwkJICAg ICAgICBkb3VibGUgKixkb3VibGUgKixkb3VibGUgKixkb3VibGUgKixkb3Vi bGUgKixkb3VibGUgKik7ClgrZXh0ZXJuCXZvaWQJUFNjaGFyZ2UoY3JlZiAq LG1vZGwgKixpbnN0ICosZG91YmxlLGRvdWJsZSxkb3VibGUgKixkb3VibGUg Kik7ClgrZXh0ZXJuICB2b2lkICAgIFBTYWNsb2FkKGNyZWYgKixtb2RsICos aW5zdCAqLGRvdWJsZSxkb3VibGUsZG91YmxlLGRvdWJsZSwKWCsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgKixk b3VibGUgKixkb3VibGUgKixkb3VibGUgKik7ClgrI2Vsc2UKWCtleHRlcm4J dm9pZAlQU2luc3RhbmNlaW5pdCgpOwpYK2V4dGVybiAgZG91YmxlCVBTaWRz KCk7ClgrZXh0ZXJuICB2b2lkCVBTY2hhcmdlKCk7ClgrZXh0ZXJuICB2b2lk CVBTYWNsb2FkKCk7ClgrI2VuZGlmClgrClgrI2lmZGVmIFBTTU9ERUxfQyAv KiBQU01PREVMX0MgZGVmaW5lZCB3aGVuIGluY2x1ZGVkIGZyb20gInBzbW9k ZWwuYyIgKi8KWCsvKiBUaGUgZm9sbG93aW5nIGdsdWUgZGVmaW5pdGlvbnMg bmVlZCB0byBiZSBjaGFuZ2VkIHRvIHN1aXQgdGhlIHNwZWNpZmljClgrICAg c2ltdWxhdG9yLiAgKi8KWCsvKiBzaW11bGF0b3IgbW9kZSBmbGFncyAKWCsg ICAgVFJBTl9BTkFMIHNob3VsZCBiZSB0cnVlIGR1cmluZyB0cmFuc2llbnQg YW5hbHlzaXMgaXRlcmF0aW9uLgpYKyAgICAgICAgICAgICAgKGllLiBmYWxz ZSBmb3Igb3RoZXIgYW5hbHlzaXMgZnVuY3Rpb25zIGFuZCB0cmFuIG9wZXJh dGluZyBwb2ludC4pClgrICAgIFRSQU5fSU5JVCBzaG91bGQgYmUgdHJ1ZSBv bmx5IGR1cmluZyB0aGUgZmlyc3QgY2FsY3VsYXRpb24gb2YgdGhlIGluaXRp YWwgClgrICAgICAgICAgICAgICB0cmFuc2llbnQgYW5hbHlzaXMgdGltZSBw b2ludC4gSXQgc2hvdWxkIGJlIGZhbHNlIGZvciByZW1haW5pbmcKWCsgICAg ICAgICAgICAgIGl0ZXJhdGlvbnMgYXQgdGhhdCB0aW1lIHBvaW50IGFuZCB0 aGUgcmVzdCBvZiB0aGUgdHJhbnNpZW50IGFuYWx5c2lzLgpYKyAqLwpYKyNk ZWZpbmUgVFJBTl9BTkFMICAgICAgICAgIChja3QtPkNLVG1vZGUgJiBNT0RF VFJBTikgClgrI2RlZmluZSBUUkFOX0lOSVQgICAgICAgICAgKGNrdC0+Q0tU bW9kZSAmIE1PREVJTklUVFJBTikKWCsKWCsvKiBzdGF0ZSB2YXJpYWJsZXMg Ki8KWCsvKiBpbml0aWFsaXplZCB3aGVuIFRSQU5fQU5BTCBpcyBmYWxzZSAq LwpYKyNkZWZpbmUgVkdTVFJBUF9CRUZPUkUgICAgICgqKGNrdC0+Q0tUc3Rh dGUxICsgaGVyZS0+SkZFVDJ2Z3N0cmFwKSkKWCsjZGVmaW5lIFZHU1RSQVBf Tk9XICAgICAgICAoKihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQydmdz dHJhcCkpClgrI2RlZmluZSBWR0RUUkFQX0JFRk9SRSAgICAgKCooY2t0LT5D S1RzdGF0ZTEgKyBoZXJlLT5KRkVUMnZ0cmFwKSkKWCsjZGVmaW5lIFZHRFRS QVBfTk9XICAgICAgICAoKihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQy dnRyYXApKQpYKyNkZWZpbmUgUE9XUl9CRUZPUkUgICAgICAgICgqKGNrdC0+ Q0tUc3RhdGUxICsgaGVyZS0+SkZFVDJwYXZlKSkKWCsjZGVmaW5lIFBPV1Jf Tk9XICAgICAgICAgICAoKihja3QtPkNLVHN0YXRlMCArIGhlcmUtPkpGRVQy cGF2ZSkpClgrClgrLyogaW5pdGlhbGl6ZWQgd2hlbiBUUkFOX0lOSVQgaXMg dHJ1ZSBvciBUUkFOX0FOQUwgaXMgZmFsc2UgKi8KWCsjZGVmaW5lIFFHU19C RUZPUkUgICAgICAgICAoKihja3QtPkNLVHN0YXRlMSArIGhlcmUtPkpGRVQy cWdzKSkKWCsjZGVmaW5lIFFHU19OT1cgICAgICAgICAgICAoKihja3QtPkNL VHN0YXRlMCArIGhlcmUtPkpGRVQycWdzKSkKWCsjZGVmaW5lIFFHRF9CRUZP UkUgICAgICAgICAoKihja3QtPkNLVHN0YXRlMSArIGhlcmUtPkpGRVQycWdk KSkKWCsjZGVmaW5lIFFHRF9OT1cgICAgICAgICAgICAoKihja3QtPkNLVHN0 YXRlMCArIGhlcmUtPkpGRVQycWdkKSkKWCsKWCsvKiBwYXN0IHRlcm1pbmFs IHBvdGVudGlhbHMgdXNlZCBpZiBUUkFOX0lOSVQgaXMgZmFsc2UgYW5kIFRS QU5fQU5BTCBpcyB0cnVlICovClgrI2RlZmluZSBWR1MxICAgICAgICAgICAg ICAgKCooY2t0LT5DS1RzdGF0ZTEgKyBoZXJlLT5KRkVUMnZncykpClgrI2Rl ZmluZSBWR0QxICAgICAgICAgICAgICAgKCooY2t0LT5DS1RzdGF0ZTEgKyBo ZXJlLT5KRkVUMnZnZCkpClgrClgrLyogc2ltdWxhdG9yIHNwZWNpZmljIHBh cmFtZXRlcnMgKi8KWCsjZGVmaW5lIEdNSU4gICAgY2t0LT5DS1RnbWluICAg ICAgICAgICAgICAgICAgICAgICAvKiBTUElDRSBnbWluICgxRTEyIG9obXMp ICovClgrI2RlZmluZSBOVlQgICAgIGhlcmUtPkpGRVQydGVtcCpDT05TVEtv dmVyUSptb2RlbC0+SkZFVDJuICAgICAgICAgICAgIC8qIG5rVC9xICovClgr I2RlZmluZSBTVEVQICAgIGNrdC0+Q0tUZGVsdGEgICAgICAgIC8qIHRpbWUg c3RlcCBvZiB0aGlzIHRyYW5zaWVudCBzb2x1dGlvbiAqLwpYKyNkZWZpbmUg Rk9VUlRIICAwLjI1ICAgICAgICAgICAvKiBlbGRvIHJlcXVpcmVzIDIuNWUt MTAgZm9yIHVuaXRzIGNvbnZlcnNpb24gKi8KWCsKWCsvKiBtb2RlbCBwYXJh bWV0ZXJzICovClgrLyogZGMgbW9kZWwgKi8KWCsjZGVmaW5lIEJFVEEgICAg bW9kZWwtPkpGRVQyYmV0YSAgICAgIC8qIHRyYW5zY29uZHVjdGFuY2Ugc2Nh bGluZyAqLwpYKyNkZWZpbmUgREVMVCAgICBtb2RlbC0+SkZFVDJkZWx0YSAg ICAgLyogdGhlcm1hbCBjdXJyZW50IHJlZHVjdGlvbiAqLwpYKyNkZWZpbmUg SUJEICAgICBtb2RlbC0+SkZFVDJpYmQgICAgICAgLyogYnJlYWtkb3duIGN1 cnJlbnQgKi8KWCsjZGVmaW5lIElTICAgICAgaGVyZS0+SkZFVDJ0U2F0Q3Vy ICAgIC8qIGdhdGUgcmV2ZXJzZSBzYXR1cmF0aW9uIGN1cnJlbnQgKi8KWCsj ZGVmaW5lIExBTSAgICAgbW9kZWwtPkpGRVQybGFtYmRhICAgIC8qIGNoYW5u ZWwgbGVuZ3RoIG1vZHVsYXRpb24gKi8KWCsjZGVmaW5lIExGR0FNICAgbW9k ZWwtPkpGRVQybGZnYW0gICAgIC8qIGRjIGRyYWluIGZlZWRiYWNrICovClgr I2RlZmluZSBMRkcxICAgIG1vZGVsLT5KRkVUMmxmZzEgICAgICAvKiBkYyBk cmFpbiBmZWVkYmFjayB2Z3MgbW9kdWxhdGlvbiAqLwpYKyNkZWZpbmUgTEZH MiAgICBtb2RlbC0+SkZFVDJsZmcyICAgICAgLyogZGMgZHJhaW4gZmVlZGJh Y2sgdmdkIG1vZHVsYXRpb24gKi8KWCsjZGVmaW5lIE1WU1QgICAgbW9kZWwt PkpGRVQybXZzdCAgICAgIC8qIHN1YnRocmVzaG9sZCB2ZHMgbW9kdWxhdGlv biAqLwpYKyNkZWZpbmUgTVhJICAgICBtb2RlbC0+SkZFVDJteGkgICAgICAg Lyogc2F0dXJhdGlvbiBpbmRleCB2Z3MgbW9kdWxhdGlvbiAqLwpYKyNkZWZp bmUgUCAgICAgICBtb2RlbC0+SkZFVDJwICAgICAgICAgLyogcG93ZXIgbGF3 IGluIGNvbnRyb2xsZWQgcmVzaXN0YW5jZSAqLwpYKyNkZWZpbmUgUSAgICAg ICBtb2RlbC0+SkZFVDJxICAgICAgICAgLyogcG93ZXIgbGF3IGluIGNvbnRy b2xsZWQgY3VycmVudCAqLwpYKyNkZWZpbmUgVkJEICAgICBtb2RlbC0+SkZF VDJ2YmQgICAgICAgLyogYnJlYWtkb3duIGV4cG9uZW50aWFsIGNvZWYgKi8K WCsjZGVmaW5lIFZCSSAgICAgaGVyZS0+SkZFVDJ0R2F0ZVBvdCAgIC8qIGp1 bmN0aW9uIGJ1aWx0LWluIHBvdGVudGlhbCAqLwpYKyNkZWZpbmUgVlNVQiAg ICBtb2RlbC0+SkZFVDJ2c3QgICAgICAgLyogc3VidGhyZXNob2xkIGV4cG9u ZW50aWFsIGNvZWYgKi8KWCsjZGVmaW5lIFZUTyAgICAgbW9kZWwtPkpGRVQy dnRvICAgICAgIC8qIHBpbmNoLW9mZiBwb3RlbnRpYWwgKi8KWCsjZGVmaW5l IFhJICAgICAgbW9kZWwtPkpGRVQyeGkgICAgICAgIC8qIHNhdHVyYXRpb24g aW5kZXggKi8KWCsjZGVmaW5lIFogICAgICAgbW9kZWwtPkpGRVQyeiAgICAg ICAgIC8qIHNhdHVyYXRpb24ga25lZSBjdXJ2YXR1cmUgKi8KWCsKWCsvKiBh YyBtb2RlbCAqLwpYKyNkZWZpbmUgQUNHQU0gICBtb2RlbC0+SkZFVDJhY2dh bSAgICAgLyogY2FwYWNpdGFuY2UgdmRzIG1vZHVsYXRpb24gKi8KWCsjZGVm aW5lIENHUyAgICAgaGVyZS0+SkZFVDJ0Q0dTICAgICAgIC8qIHplcm8gYmlh cyBjZ3MgKi8KWCsjZGVmaW5lIENHRCAgICAgaGVyZS0+SkZFVDJ0Q0dEICAg ICAgIC8qIHplcm8gYmlhcyBjZ2QgKi8KWCsjZGVmaW5lIEhGRVRBICAgbW9k ZWwtPkpGRVQyaGZldGEgICAgIC8qIGFjIHNvdXJjZSBmZWVkYmFjayAqLwpY KyNkZWZpbmUgSEZFMSAgICBtb2RlbC0+SkZFVDJoZmUxICAgICAgLyogYWMg c291cmNlIGZlZWRiYWNrIHZnZCBtb2R1bGF0aW9uICovClgrI2RlZmluZSBI RkUyICAgIG1vZGVsLT5KRkVUMmhmZTIgICAgICAvKiBhYyBzb3VyY2UgZmVl ZGJhY2sgdmdzIG1vZHVsYXRpb24gKi8KWCsjZGVmaW5lIEhGR0FNICAgbW9k ZWwtPkpGRVQyaGZnYW0gICAgIC8qIGFjIGRyYWluIGZlZWRiYWNrICovClgr I2RlZmluZSBIRkcxICAgIG1vZGVsLT5KRkVUMmhmZzEgICAgICAvKiBhYyBk cmFpbiBmZWVkYmFjayB2Z3MgbW9kdWxhdGlvbiAqLwpYKyNkZWZpbmUgSEZH MiAgICBtb2RlbC0+SkZFVDJoZmcyICAgICAgLyogYWMgZHJhaW4gZmVlZGJh Y2sgdmdkIG1vZHVsYXRpb24gKi8KWCsjZGVmaW5lIFRBVUQgICAgbW9kZWwt PkpGRVQydGF1ZCAgICAgIC8qIHRoZXJtYWwgdGltZSBjb25zdGFudCAqLwpY KyNkZWZpbmUgVEFVRyAgICBtb2RlbC0+SkZFVDJ0YXVnICAgICAgLyogZGMg YWMgZmVlZGJhY2sgdGltZSBjb25zdGFudCAqLwpYKyNkZWZpbmUgWEMgICAg ICBtb2RlbC0+SkZFVDJ4YyAgICAgICAgLyogY2dzIHJlZHVjdGlvbiBhdCBw aW5jaC1vZmYgKi8KWCsKWCsvKiBkZXZpY2UgaW5zdGFuY2UgKi8KWCsjZGVm aW5lIEFSRUEgICAgICAgaGVyZS0+SkZFVDJhcmVhICAgICAgIC8qIGFyZWEg ZmFjdG9yIG9mIGZldCAqLwpYKwpYKy8qIGludGVybmFsbHkgZGVyaXZlZCBt b2RlbCBwYXJhbWV0ZXJzICovClgrI2RlZmluZSBBTFBIQSAgIGhlcmUtPkpG RVQyYWxwaGEgICAgICAvKiBjZ3MgY2dkIHJldmVyc2FsIGludGVydmFsICov ClgrI2RlZmluZSBEMyAgICAgIGhlcmUtPkpGRVQyZDMgICAgICAgICAvKiBk dWFsIHBvd2VyLWxhdyBwYXJhbWV0ZXIgKi8KWCsjZGVmaW5lIFZNQVggICAg aGVyZS0+SkZFVDJjb3JEZXBDYXAgIC8qIGZvcndhcmQgY2FwYWNpdGFuY2Ug cG90ZW50aWFsICovClgrI2RlZmluZSBYSV9XT08gIGhlcmUtPkpGRVQyeGl3 b28gICAgICAvKiBzYXR1cmF0aW9uIHBvdGVudGlhbCAqLwpYKyNkZWZpbmUg WkEgICAgICBtb2RlbC0+SkZFVDJ6YSAgICAgICAgLyogc2F0dXJhdGlvbiBr bmVlIHBhcmFtZXRlciAqLwpYKyNlbmRpZgpYZGlmZiAtcnVOIC4uL3dvcmsu b3JpZy9zcmMvbGliL2Rldi9qZmV0Mi9yZXNwb25zZS5saWIgLi9zcmMvbGli L2Rldi9qZmV0Mi9yZXNwb25zZS5saWIKWC0tLSAuLi93b3JrLm9yaWcvc3Jj L2xpYi9kZXYvamZldDIvcmVzcG9uc2UubGliCVdlZCBEZWMgMzEgMTk6MDA6 MDAgMTk2OQpYKysrIC4vc3JjL2xpYi9kZXYvamZldDIvcmVzcG9uc2UubGli CU1vbiBKdW4gMjcgMTE6MDU6NTQgMTk5NApYQEAgLTAsMCArMSwxNiBAQApY KytqZmV0Mi5vYmomClgrK2pmZXQyYWNsZC5vYmomClgrK2pmZXQyYXNrLm9i aiYKWCsramZldDJkZWwub2JqJgpYKytqZmV0MmRzZXQub2JqJgpYKytqZmV0 MmljLm9iaiYKWCsramZldDJsb2FkLm9iaiYKWCsramZldDJtYXNrLm9iaiYK WCsramZldDJtZGVsLm9iaiYKWCsramZldDJtcGFyLm9iaiYKWCsramZldDJu b2kub2JqJgpYKytqZmV0MnBhci5vYmomClgrK2pmZXQyc2V0Lm9iaiYKWCsr amZldDJ0ZW1wLm9iaiYKWCsramZldDJ0cnVuLm9iaiYKWCsrcHNtb2RlbC5v Ymo7ClhkaWZmIC1ydU4gLi4vd29yay5vcmlnL3NyYy9saWIvaW5wL2lucDJq LmMgLi9zcmMvbGliL2lucC9pbnAyai5jClgtLS0gLi4vd29yay5vcmlnL3Ny Yy9saWIvaW5wL2lucDJqLmMJTW9uIEFwciAgMSAxNzoyNDoxNyAxOTkxClgr KysgLi9zcmMvbGliL2lucC9pbnAyai5jCVN1biBNYXkgMTggMTM6NDY6NDcg MjAwMwpYQEAgLTQxLDExICs0MSw2IEBAClggR0VORVJJQyAqbWRmYXN0OyAg ICAvKiBwb2ludGVyIHRvIHRoZSBhY3R1YWwgbW9kZWwgKi8KWCBJRnVpZCB1 aWQ7ICAgICAgLyogdWlkIG9mIGRlZmF1bHQgbW9kZWwgKi8KWCAKWC0gICAg bXl0eXBlID0gSU5QdHlwZWxvb2soIkpGRVQiKTsKWC0gICAgaWYobXl0eXBl IDwgMCApIHsKWC0gICAgICAgIExJVEVSUigiRGV2aWNlIHR5cGUgRGlvZGUg bm90IHN1cHBvcnRlZCBieSB0aGlzIGJpbmFyeVxuIikKWC0gICAgICAgIHJl dHVybjsKWC0gICAgfQpYICAgICBsaW5lID0gY3VycmVudC0+bGluZTsKWCAg ICAgSU5QZ2V0VG9rKCZsaW5lLCZuYW1lLDEpOwpYICAgICBJTlBpbnNlcnQo Jm5hbWUsdGFiKTsKWEBAIC01NywxNiArNTIsMjQgQEAKWCAgICAgSU5QdGVy bUluc2VydChja3QsJm5uYW1lMyx0YWIsJm5vZGUzKTsKWCAgICAgSU5QZ2V0 VG9rKCZsaW5lLCZtb2RlbCwxKTsKWCAgICAgSU5QaW5zZXJ0KCZtb2RlbCx0 YWIpOwpYKyAgICB0aGlzbW9kZWwgPSAoSU5QbW9kZWwgKilOVUxMOwpYICAg ICBjdXJyZW50LT5lcnJvciA9IElOUGdldE1vZChja3QsbW9kZWwsJnRoaXNt b2RlbCx0YWIpOwpYICAgICBpZih0aGlzbW9kZWwgIT0gTlVMTCkgewpYLSAg ICAgICAgaWYobXl0eXBlICE9IHRoaXNtb2RlbC0+SU5QbW9kVHlwZSkgewpY KyAgICAgICAgaWYgKHRoaXNtb2RlbC0+SU5QbW9kVHlwZSAhPSBJTlB0eXBl bG9vaygiSkZFVCIpClgrICAgICAgICAgICAgICAgICYmIHRoaXNtb2RlbC0+ SU5QbW9kVHlwZSAhPSBJTlB0eXBlbG9vaygiSkZFVDIiKQpYKwkJKQpYKyAg ICAgICAgewpYICAgICAgICAgICAgIExJVEVSUigiaW5jb3JyZWN0IG1vZGVs IHR5cGUiKQpYICAgICAgICAgICAgIHJldHVybjsKWCAgICAgICAgIH0KWC0g ICAgICAgIHR5cGUgPSBteXR5cGU7ClgrICAgICAgICB0eXBlID0gdGhpc21v ZGVsLT5JTlBtb2RUeXBlOwpYICAgICAgICAgbWRmYXN0ID0gKHRoaXNtb2Rl bC0+SU5QbW9kZmFzdCk7ClggICAgIH0gZWxzZSB7ClgtICAgICAgICB0eXBl ID0gbXl0eXBlOwpYKyAgICAgICAgdHlwZSA9IElOUHR5cGVsb29rKCJKRkVU Iik7ClgrICAgICAgICBpZih0eXBlIDwgMCApIHsKWCsgICAgICAgICAgIExJ VEVSUigiRGV2aWNlIHR5cGUgSkZFVCBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMg YmluYXJ5XG4iKQpYKyAgICAgICAgICAgcmV0dXJuOwpYKyAgICAgICAgfQpY ICAgICAgICAgaWYoIXRhYi0+ZGVmSm1vZCkgewpYICAgICAgICAgICAgIC8q IGNyZWF0ZSBkZWZhdWx0IEogbW9kZWwgKi8KWCAgICAgICAgICAgICBJRm5l d1VpZChja3QsJnVpZCwoSUZ1aWQpTlVMTCwiSiIsVUlEX01PREVMLChHRU5F UklDKiopTlVMTCk7ClhkaWZmIC1ydU4gLi4vd29yay5vcmlnL3NyYy9saWIv aW5wL2lucGRvbW9kLmMgLi9zcmMvbGliL2lucC9pbnBkb21vZC5jClgtLS0g Li4vd29yay5vcmlnL3NyYy9saWIvaW5wL2lucGRvbW9kLmMJVHVlIEp1bCAy MCAxNzo1NToxNCAxOTkzClgrKysgLi9zcmMvbGliL2lucC9pbnBkb21vZC5j CVN1biBNYXkgMTggMTM6NDY6NDcgMjAwMwpYQEAgLTQ0LDkgKzQ0LDI3IEBA ClggICAgICAgICB9ClggICAgICAgICBJTlBtYWtlTW9kKG1vZG5hbWUsdHlw ZSxpbWFnZSk7ClggICAgIH0gZWxzZSBpZiggKHN0cmNtcCh0eXBlbmFtZSwi bmpmIikgPT0gMCkgfHwgKHN0cmNtcCh0eXBlbmFtZSwicGpmIikgPT0gMCkp ewpYLSAgICAgICAgdHlwZSA9IElOUHR5cGVsb29rKCJKRkVUIik7ClgtICAg ICAgICBpZih0eXBlIDwgMCkgewpYLSAgICAgICAgICAgIGVyciA9IElOUG1r VGVtcCgiRGV2aWNlIHR5cGUgSkZFVCBub3QgYXZhaWxhYmxlIGluIHRoaXMg YmluYXJ5XG4iKTsKWCsgICAgICAgIGVyciA9IElOUGZpbmRMZXYobGluZSwm bGV2KTsKWCsgICAgICAgIHN3aXRjaChsZXYpIHsKWCsgICAgICAgICAgICBj YXNlIDA6ClgrICAgICAgICAgICAgY2FzZSAxOgpYKyAgICAgICAgICAgICAg ICB0eXBlID0gSU5QdHlwZWxvb2soIkpGRVQiKTsKWCsgICAgICAgICAgICAg ICAgaWYodHlwZSA8IDApIHsKWCsgICAgICAgICAgICAgICAgICAgIGVyciA9 IElOUG1rVGVtcCgKWCsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRl dmljZSB0eXBlIEpGRVQgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGJpbmFyeVxu Iik7ClgrICAgICAgICAgICAgICAgIH0KWCsgICAgICAgICAgICAgICAgYnJl YWs7ClgrICAgICAgICAgICAgY2FzZSAyOgpYKyAgICAgICAgICAgICAgICB0 eXBlID0gSU5QdHlwZWxvb2soIkpGRVQyIik7ClgrICAgICAgICAgICAgICAg IGlmKHR5cGUgPCAwKSB7ClgrICAgICAgICAgICAgICAgICAgICBlcnIgPSBJ TlBta1RlbXAoClgrICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEZXZp Y2UgdHlwZSBKRkVUMiBub3QgYXZhaWxhYmxlIGluIHRoaXMgYmluYXJ5XG4i KTsKWCsgICAgICAgICAgICAgICAgfQpYKyAgICAgICAgICAgICAgICBicmVh azsKWCsgICAgICAgICAgICBkZWZhdWx0OiAvKiBwbGFjZWhvbGRlcjsgdXNl IGxldmVsIDMgZm9yIHRoZSBuZXh0IG1vZGVsICovClgrCQllcnIgPSBJTlBt a1RlbXAoClgrCQkgICJPbmx5IEpGRVQgZGV2aWNlIGxldmVscyAxLTIgYXJl IHN1cHBvcnRlZCBpbiB0aGlzIGJpbmFyeVxuIik7ClgrICAgICAgICAgICAg ICAgIGJyZWFrOwpYICAgICAgICAgfQpYICAgICAgICAgSU5QbWFrZU1vZCht b2RuYW1lLHR5cGUsaW1hZ2UpOwpYICAgICB9IGVsc2UgaWYoIChzdHJjbXAo dHlwZW5hbWUsIm5tZiIpID09IDApIHx8IChzdHJjbXAodHlwZW5hbWUsInBt ZiIpPT0wKSApIHsKWGRpZmYgLXJ1TiAuLi93b3JrLm9yaWcvdXRpbC9kZWxh bGwuYmF0IC4vdXRpbC9kZWxhbGwuYmF0ClgtLS0gLi4vd29yay5vcmlnL3V0 aWwvZGVsYWxsLmJhdAlGcmkgSnVsIDMwIDA0OjI3OjQxIDE5OTMKWCsrKyAu L3V0aWwvZGVsYWxsLmJhdAlTdW4gTWF5IDE4IDEzOjQ2OjQ3IDIwMDMKWEBA IC0zNyw2ICszNyw3IEBAClggZGVsIHNyY1xsaWJcZGV2XG1vczFcKi4qClgg ZGVsIHNyY1xsaWJcZGV2XG1lc1wqLioKWCBkZWwgc3JjXGxpYlxkZXZcamZl dFwqLioKWCtkZWwgc3JjXGxpYlxkZXZcamZldDJcKi4qClggZGVsIHNyY1xs aWJcZGV2XGRpc3RvXCouKgpYIGRlbCBzcmNcbGliXGRldlxkaW9cKi4qClgg ZGVsIHNyY1xsaWJcZGV2XGNzd1wqLioKWEBAIC05Myw2ICs5NCw3IEBAClgg cm1kaXIgc3JjXGxpYlxkZXZcbW9zMQpYIHJtZGlyIHNyY1xsaWJcZGV2XG1l cwpYIHJtZGlyIHNyY1xsaWJcZGV2XGpmZXQKWCtybWRpciBzcmNcbGliXGRl dlxqZmV0MgpYIHJtZGlyIHNyY1xsaWJcZGV2XGRpc3RvClggcm1kaXIgc3Jj XGxpYlxkZXZcZGlvClggcm1kaXIgc3JjXGxpYlxkZXZcY3N3ClhkaWZmIC1y dU4gLi4vd29yay5vcmlnL3V0aWwvc2tlbGV0b24vbWFrZV9kZWYuYmQgLi91 dGlsL3NrZWxldG9uL21ha2VfZGVmLmJkClgtLS0gLi4vd29yay5vcmlnL3V0 aWwvc2tlbGV0b24vbWFrZV9kZWYuYmQJVGh1IEp1bCAyOSAxNjozNToxOCAx OTkzClgrKysgLi91dGlsL3NrZWxldG9uL21ha2VfZGVmLmJkCVN1biBNYXkg MTggMTM6NDY6NDcgMjAwMwpYQEAgLTExNSw3ICsxMTUsNyBAQApYIERFVl9T VUJESVJTCT0gJChERVZJQ0VTKQpYIApYIEFMTF9ERVZJQ0VTCT0gYXNyYyBi anQgYnNpbTEgYnNpbTIgY2FwIGNjY3MgY2N2cyBjc3cgZGlvIGluZCBpc3Jj IFwKWC0JCSAgamZldCBsdHJhIG1lcyBtb3MxIG1vczIgbW9zMyBtb3M2IHJl cyBzdyB0cmEgdXJjIFwKWCsJCSAgamZldCBqZmV0MiBsdHJhIG1lcyBtb3Mx IG1vczIgbW9zMyBtb3M2IHJlcyBzdyB0cmEgdXJjIFwKWCAJCSAgdmNjcyB2 Y3ZzIHZzcmMKWCAKWCBBU01fSEFDSwk9CkVORC1vZi1zcGljZS9maWxlcy9w YXRjaC1wc21vZGVsCmVjaG8geCAtIHNwaWNlL2ZpbGVzL3BhdGNoLXNyY19s aWJfaGxwX3JlYWRoZWxwX2MKc2VkICdzL15YLy8nID5zcGljZS9maWxlcy9w YXRjaC1zcmNfbGliX2hscF9yZWFkaGVscF9jIDw8ICdFTkQtb2Ytc3BpY2Uv ZmlsZXMvcGF0Y2gtc3JjX2xpYl9obHBfcmVhZGhlbHBfYycKWC0tLSBzcmMv bGliL2hscC9yZWFkaGVscC5jLm9yaWcJV2VkIEFwciAyMSAwMzo1NjowMCAx OTkzClgrKysgc3JjL2xpYi9obHAvcmVhZGhlbHAuYwlUaHUgU2VwIDMwIDEw OjA2OjMyIDE5OTkKWEBAIC00Miw2ICs0Miw2IEBAClggc3RhdGljIGNoYXIg KmdldHN1YmplY3QoKTsKWCBzdGF0aWMgdG9wbGluayAqZ2V0c3VidG9wbGlu aygpOwpYLWV4dGVybiB2b2lkIHNvcnRsaXN0KCksIHRsZnJlZSgpOwpYLWV4 dGVybiBpbnQgc29ydGNtcCgpOwpYK3N0YXRpYyB2b2lkIHNvcnRsaXN0KCks IHRsZnJlZSgpOwpYK3N0YXRpYyBpbnQgc29ydGNtcCgpOwpYIApYIHN0YXRp YyB0b3BpYyAqYWxsdG9waWNzID0gTlVMTDsKRU5ELW9mLXNwaWNlL2ZpbGVz L3BhdGNoLXNyY19saWJfaGxwX3JlYWRoZWxwX2MKZWNobyB4IC0gc3BpY2Uv ZmlsZXMvcGF0Y2gtc3JjX2luY2x1ZGVfb3NfYnNkX2gKc2VkICdzL15YLy8n ID5zcGljZS9maWxlcy9wYXRjaC1zcmNfaW5jbHVkZV9vc19ic2RfaCA8PCAn RU5ELW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19pbmNsdWRlX29zX2JzZF9o JwpYLS0tIHNyYy9pbmNsdWRlL29zX2JzZC5oLm9yaWcJU2F0IEFwciAyNCAx ODowOTo0NiAxOTkzClgrKysgc3JjL2luY2x1ZGUvb3NfYnNkLmgJVGh1IEp1 bCAxNyAwMToyNjozNiAyMDAzClhAQCAtOCwxOCArOCwzMSBAQApYIApYICNp bmNsdWRlICJvc191bml4LmgiClggClgrI2lmZGVmIF9fRnJlZUJTRF9fClgr I2RlZmluZSBIQVNfU1lTVkRJUlMJCS8qIDxzeXMvZGlyZW50Lmg+CQkJKi8K WCsjZGVmaW5lIEhBU19JTlRXQUlUU1RBVFVTCS8qIHdhaXQoMykgIHRha2Vz IGFuIGludCAqLCBub3QgYSB1bmlvbiAqLwpYKyNlbHNlClggI2RlZmluZSBI QVNfTk9fQVRSSUdIX0RFQ0wJLyogaWYgYXNpbmgoICkgaXMgbm90IGluIG1h dGguaAkJKi8KWC0jZGVmaW5lIEhBU19BVFJJR0gJCS8qIGFjb3NoKCApLCBh c2luaCggKSwgYXRhbmgoICkgICAgICAgICAqLwpYICNkZWZpbmUgSEFTX0ZU SU1FCQkvKiBmdGltZSggKSwgPHRpbWVzLmg+CQkJKi8KWCsjZGVmaW5lIEhB U19JTkRFWAkJLyogaW5kZXgoICkgaW5zdGVhZCBvZiBzdHJjaHIoICkJKi8K WCsjZGVmaW5lIEhBU19TVFJJTkdTCQkvKiB1c2UgPHN0cmluZ3MuaD4gaW5z dGVhZCBvZiA8c3RyaW5nLmg+ICovClgrI2RlZmluZSBIQVNfQlNERElSUwkJ LyogPHN5cy9kaXIuaD4JCQkJKi8KWCsjZW5kaWYKWCsKWCsjZGVmaW5lIEhB U19BVFJJR0gJCS8qIGFjb3NoKCApLCBhc2luaCggKSwgYXRhbmgoICkgICAg ICAgICAqLwpYICNkZWZpbmUgSEFTX1RFUk1DQVAJCS8qIHRnZXR4eHgoICkJ CQkJKi8KWCAjZGVmaW5lIEhBU19WRk9SSwkJLyogQlNELWlzbSwgc2hvdWxk IG5vdCBiZSBuZWNlc3NhcnkJKi8KWC0jZGVmaW5lIEhBU19JTkRFWAkJLyog aW5kZXgoICkgaW5zdGVhZCBvZiBzdHJjaHIoICkJKi8KWCAjZGVmaW5lIEhB U19CQ09QWQkJLyogYmNvcHkoICksIGJ6ZXJvKCApCQkJKi8KWCAjZGVmaW5l IEhBU19CU0RSQU5ET00JCS8qIHNyYW5kb20oICkgYW5kIHJhbmRvbSggKQkJ Ki8KWCAjZGVmaW5lIEhBU19CU0RUVFkJCS8qIDxzZ3R0eS5oPgkJCQkqLwpY LSNkZWZpbmUgSEFTX0JTRERJUlMJCS8qIDxzeXMvZGlyLmg+CQkJCSovClgg I2RlZmluZSBIQVNfQlNEUlVTQUdFCQkvKiBnZXRydXNhZ2UoICkJCQkJKi8K WCAjZGVmaW5lIEhBU19CU0RSTElNSVQJCS8qIGdldHJsaW1pdCggKQkJCQkq LwpYICNkZWZpbmUgSEFTX0RVUDIKWCAjZGVmaW5lIEhBU19HRVRXRAkJLyog Z2V0d2QoYnVmKQkJCQkqLwpYLSNkZWZpbmUgSEFTX1NUUklOR1MJCS8qIHVz ZSA8c3RyaW5ncy5oPiBpbnN0ZWFkIG9mIDxzdHJpbmcuaD4gKi8KWCsKWCsj aWZkZWYgX19GcmVlQlNEX18KWCsjZGVmaW5lIEhBU19CU0RTT0NLRVRTCQkv KiA8bmV0L2luZXQuaD4sIHNvY2tldCggKSwgZXRjLgkqLwpYKyNkZWZpbmUg SEFTX0JTRFRJTUUJCS8qIGdldHRpbWVvZmRheSggKSByZXR1cm4gdGltZQkJ Ki8KWCsjZGVmaW5lIEhBU19GTE9BVF9ICQkvKiBmbG9hdC5oCQkJCSovClgr I2RlZmluZSBIQVNfU1RSQ0hSCQkvKiBzdHJjaHIoICkgaW5zdGVhZCBvZiBp bmRleCggKQkqLwpYKyNlbmRpZgpFTkQtb2Ytc3BpY2UvZmlsZXMvcGF0Y2gt c3JjX2luY2x1ZGVfb3NfYnNkX2gKZWNobyB4IC0gc3BpY2UvZmlsZXMvcGF0 Y2gtc3JjX2xpYl9pbnBfaW5wZmluZGxfYwpzZWQgJ3MvXlgvLycgPnNwaWNl L2ZpbGVzL3BhdGNoLXNyY19saWJfaW5wX2lucGZpbmRsX2MgPDwgJ0VORC1v Zi1zcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2lucF9pbnBmaW5kbF9jJwpY LS0tIHNyYy9saWIvaW5wL2lucGZpbmRsLmMub3JpZwlNb24gQXByICA4IDIz OjQxOjM5IDE5OTEKWCsrKyBzcmMvbGliL2lucC9pbnBmaW5kbC5jCVRodSBK dWwgMTcgMDI6NDU6MDggMjAwMwpYQEAgLTEsMTEgKzEsMTMgQEAKWCAvKioq KioqKioqKgpYIENvcHlyaWdodCAxOTkwIFJlZ2VudHMgb2YgdGhlIFVuaXZl cnNpdHkgb2YgQ2FsaWZvcm5pYS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuClgg QXV0aG9yOiAxOTg1IFRob21hcyBMLiBRdWFybGVzClgrTW9kaWZpZWQ6IDE5 OTkgUGFvbG8gTmVuemkgLSBOb3cgd2UgY2FuIHVzZSBhIHR3byBkaWdpdHMg bGV2ZWwgY29kZSAtClggKioqKioqKioqKi8KWCAKWC0gICAgLyogSU5QZmlu ZExldihsaW5lKQpYKyAgICAvKiBJTlBmaW5kTGV2KGxpbmUsbGV2ZWwpClgg ICAgICAqICAgICAgZmluZCB0aGUgJ2xldmVsJyBwYXJhbWV0ZXIgb24gdGhl IGdpdmVuIGxpbmUgYW5kIHJldHVybiBpdHMKWC0gICAgICogICAgICB2YWx1 ZSAoMSwyLG9yIDMgZm9yIG5vdywgMSBkZWZhdWx0KQpYKyAgICAgKiAgICAg IHZhbHVlICgxLDIsLi4sOTkgZm9yIG5vdywgMSBkZWZhdWx0KQpYKyAgICAg KiAgTk9URTogbm93IGxpbWl0ZWQgdG8gOSBmb3IgY29tcGF0aWJpbGl0eQpY ICAgICAgKi8KWCAKWCAjaW5jbHVkZSAic3BpY2UuaCIKWEBAIC0yNCw1OCAr MjYsNDEgQEAKWCAgICAgY2hhciAqd2hlcmU7ClggClggICAgIHdoZXJlID0g bGluZTsKWC0KWC0gICAgd2hpbGUoMSkgewpYLSAgICAgICAgd2hlcmUgPSBp bmRleCh3aGVyZSwnbCcpOwpYLSAgICAgICAgaWYod2hlcmUgPT0gMCkgeyAg ICAvKiBubyAnbCcgaW4gdGhlIGxpbmUgPT4gbm8gJ2xldmVsJyA9PiBkZWZh dWx0ICovClgtICAgICAgICAgICAgKmxldmVsID0gMTsKWC0gICAgICAgICAg ICByZXR1cm4oKGNoYXIgKilOVUxMKTsKWC0gICAgICAgIH0KWC0gICAgICAg IGlmKHN0cm5jbXAod2hlcmUsImxldmVsIiw1KSE9MCkgeyAgIC8qIHRoaXMg bCBpc24ndCBpbiB0aGUgd29yZCAKWC0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqICdsZXZlbCcsIHNvIGxldHMgdHJ5 IGFnYWluICovClgtICAgICAgICAgICAgd2hlcmUrKzsgICAgLyogbWFrZSBz dXJlIHdlIGRvbid0IG1hdGNoIHNhbWUgY2hhciBhZ2FpbiAqLwpYLSAgICAg ICAgICAgIGNvbnRpbnVlOwpYLSAgICAgICAgfQpYLSAgICAgICAgLyogZm91 bmQgdGhlIHdvcmQgbGV2ZWwsIGxldHMgbG9vayBhdCB0aGUgcmVzdCBvZiB0 aGUgbGluZSAqLwpYLSAgICAgICAgd2hlcmUgKz0gNTsKWCsgICAgClgrICAg IHdoZXJlPXN0cnN0cihsaW5lLCAibGV2ZWwiKTsKWCsgICAgClgrICAgIGlm ICh3aGVyZSE9TlVMTCkgeyAgICAgICAgLyogZm91bmQgYSBsZXZlbCBrZXl3 b3JkIG9uIHRoZSBsaW5lICovClgrICAgICAgICAKWCsgICAgICAgIHdoZXJl ICs9IDU7ICAvKiBza2lwIHRoZSBsZXZlbCBrZXl3b3JkICovClggICAgICAg ICB3aGlsZSggKCp3aGVyZSA9PSAnICcpIHx8ICgqd2hlcmUgPT0gJ1x0Jykg fHwgKCp3aGVyZSA9PSAnPScpIHx8ClggICAgICAgICAgICAgICAgICgqd2hl cmUgPT0gJywnKSB8fCAoKndoZXJlID09ICcoJykgfHwgKCp3aGVyZSA9PSAn KScpIHx8ClggICAgICAgICAgICAgICAgICgqd2hlcmUgPT0gJysnKSApIHsg LyogbGVnYWwgd2hpdGUgc3BhY2UgLSBpZ25vcmUgKi8KWC0gICAgICAgICAg ICB3aGVyZSsrOwpYKyAgICAgICAgICAgICAgd2hlcmUrKzsKWCAgICAgICAg IH0KWCsgICAgClggICAgICAgICAvKiBub3cgdGhlIG1hZ2ljIG51bWJlciAq LwpYLSAgICAgICAgc3dpdGNoKCp3aGVyZSkgewpYLSAgICAgICAgY2FzZSAn MSc6ClgrICAgICAgICBzc2NhbmYod2hlcmUsIiUyZCIsbGV2ZWwpOyAgICAg LyogV2UgZ2V0IHRoZSBsZXZlbCBudW1iZXIgKi8KWCsgICAgICAgIGlmICgq bGV2ZWw8MCkgewpYKyAgICAgICAgICAqbGV2ZWw9MTsKWCsgICAgICAgICAg cmV0dXJuKElOUG1rVGVtcCgiIGlsbGVnYWwgKG5lZ2F0aXZlKSBhcmd1bWVu dCB0byBsZXZlbCBwYXJhbWV0ZXIgLSBsZXZlbD0xIGFzc3VtZWQiKSk7Clgr ICAgICAgICAgICB9IApYKyAgICAgICAgClgrICAgICAgICBpZiAoKmxldmVs PjkpIHsgLyogTGltaXQgdG8gY2hhbmdlIGluIHRoZSBmdXR1cmUgKi8gClgg ICAgICAgICAgICAgKmxldmVsPTE7ClgrICAgICAgICAgICAgcmV0dXJuKElO UG1rVGVtcCgiIGlsbGVnYWwgKHRvbyBoaWdoKSBhcmd1bWVudCB0byBsZXZl bCBwYXJhbWV0ZXIgLSBsZXZlbD0xIGFzc3VtZWQiKSk7ClgrICAgICAgICAg ICAgfQpYKyAgICAgICAgICAgIApYICAgICAgICAgICAgIHJldHVybigoY2hh ciAqKU5VTEwpOwpYLSAgICAgICAgY2FzZSAnMic6ClgtICAgICAgICAgICAg KmxldmVsPTI7ClgtICAgICAgICAgICAgcmV0dXJuKChjaGFyICopTlVMTCk7 ClgtICAgICAgICBjYXNlICczJzoKWC0gICAgICAgICAgICAqbGV2ZWw9MzsK WC0gICAgICAgICAgICByZXR1cm4oKGNoYXIgKilOVUxMKTsKWC0gICAgICAg IGNhc2UgJzQnOgpYLSAgICAgICAgICAgICpsZXZlbD00OwpYLSAgICAgICAg ICAgIHJldHVybigoY2hhciAqKU5VTEwpOwpYLSAgICAgICAgY2FzZSAnNSc6 ClgtICAgICAgICAgICAgKmxldmVsPTU7ClgtICAgICAgICAgICAgcmV0dXJu KChjaGFyICopTlVMTCk7ClgtICAgICAgICBjYXNlICc2JzoKWC0gICAgICAg ICAgICAqbGV2ZWw9NjsKWC0gICAgICAgICAgICByZXR1cm4oKGNoYXIgKilO VUxMKTsKWC0gICAgICAgIGNhc2UgJzcnOgpYLSAgICAgICAgICAgICpsZXZl bD03OwpYLSAgICAgICAgICAgIHJldHVybigoY2hhciAqKU5VTEwpOwpYLSAg ICAgICAgY2FzZSAnOCc6ClgtICAgICAgICAgICAgKmxldmVsPTg7ClgtICAg ICAgICAgICAgcmV0dXJuKChjaGFyICopTlVMTCk7ClgtICAgICAgICBjYXNl ICc5JzoKWC0gICAgICAgICAgICAqbGV2ZWw9OTsKWC0gICAgICAgICAgICBy ZXR1cm4oKGNoYXIgKilOVUxMKTsKWC0gICAgICAgIGRlZmF1bHQ6ClgtICAg ICAgICAgICAgKmxldmVsPTE7ClgtICAgICAgICAgICAgcmV0dXJuKElOUG1r VGVtcCgKWC0gICAgICAgICAgICAgICAgICAgICIgaWxsZWdhbCBhcmd1bWVu dCB0byBsZXZlbCBwYXJhbWV0ZXIgLSBsZXZlbD0xIGFzc3VtZWQiKSk7Clgt ICAgICAgICB9ClgtICAgIH0KWCsgICAgICAgICAgfSAgICAgClgrICAgIApY KwpYKyAgICAKWCsgICAgZWxzZSB7ICAgICAgICAgICAgICAgICAgLyogbm8g bGV2ZWwgb24gdGhlIGxpbmUgPT4gZGVmYXVsdCAqLwpYKyAgICAgICpsZXZl bCA9IDE7ClgrICAgICAgcmV0dXJuKChjaGFyICopTlVMTCk7ClgrICAgICAg fQpYKyAgICAgIApYKyAgClgrICAgICAgICAKWCsgICAgICAgIApYIH0KRU5E LW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfaW5wX2lucGZpbmRsX2MK ZWNobyB4IC0gc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9ja3RfZGN0cmN1 cnZfYwpzZWQgJ3MvXlgvLycgPnNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJf Y2t0X2RjdHJjdXJ2X2MgPDwgJ0VORC1vZi1zcGljZS9maWxlcy9wYXRjaC1z cmNfbGliX2NrdF9kY3RyY3Vydl9jJwpYLS0tIHNyYy9saWIvY2t0L2RjdHJj dXJ2LmMub3JpZwlNb24gQXByICA1IDE5OjUwOjIwIDE5OTMKWCsrKyBzcmMv bGliL2NrdC9kY3RyY3Vydi5jCVRodSBKdWwgMTcgMDI6NTI6MjQgMjAwMwpY QEAgLTE1LDYgKzE1LDcgQEAKWCAjZW5kaWYKWCAjaW5jbHVkZSAiY2t0ZGVm cy5oIgpYICNpbmNsdWRlICJ1dGlsLmgiClgrI2luY2x1ZGUgImNvbnN0Lmgi ClggI2luY2x1ZGUgInNwZXJyb3IuaCIKWCAjaW5jbHVkZSAic3VmZml4Lmgi ClggClhAQCAtMzgsMTcgKzM5LDYgQEAKWCAgICAgaW50IGZpcnN0VGltZT0x OwpYICAgICBzdGF0aWMgR0VORVJJQyAqcGxvdDsKWCAKWC0jaWZkZWYgSEFT X1NFTlNFMgpYLSNpZmRlZiBTRU5TREVCVUcKWC0gICAgaWYoY2t0LT5DS1Rz ZW5JbmZvICYmIChja3QtPkNLVHNlbkluZm8tPlNFTm1vZGUmRENTRU4pICl7 ClgtICAgICAgICBwcmludGYoIlxuREMgU2Vuc2l0aXZpdHkgUmVzdWx0c1xu XG4iKTsKWC0gICAgICAgIENLVHNlblByaW50KGNrdCk7ClgtICAgIH0KWC0j ZW5kaWYgLyogU0VOU0RFQlVHICovClgtI2VuZGlmClgtClgtClgtClggICAg IHZjb2RlID0gQ0tUdHlwZWxvb2soIlZzb3VyY2UiKTsKWCAgICAgaWNvZGUg PSBDS1R0eXBlbG9vaygiSXNvdXJjZSIpOwpYICAgICBpZighcmVzdGFydCAm JiBjdi0+VFJDVm5lc3RTdGF0ZSA+PSAwKSB7ClhAQCAtMTA2LDE1ICs5Niwz NyBAQApYICAgICAgICAgICAgICAgICB9ClggICAgICAgICAgICAgfQpYICAg ICAgICAgfQpYKyNpZm5kZWYgVEVNUF9DT0RFClgrI2RlZmluZSBURU1QX0NP REUgMTAyMwpYKyNlbmRpZgpYKyAgICAgICAgaWYoIXN0cmNtcChjdi0+VFJD VnZOYW1lW2ldLCAidGVtcCIpKQpYKyAgICAgICAgewpYKyAgICAgICAgICAg IGN2LT5UUkNWdlNhdmVbaV09Y2t0LT5DS1R0ZW1wOwpYKyAgICAgICAgICAg IGN2LT5UUkNWdlR5cGVbaV09VEVNUF9DT0RFOwpYKyAgICAgICAgICAgIGNr dC0+Q0tUdGVtcCA9IGN2LT5UUkNWdlN0YXJ0W2ldICsgQ09OU1RDdG9LOwpY KyAgICAgICAgICAgIGdvdG8gZm91bmQ7ClgrICAgICAgICB9ClgrICAgICAg ICAKWCAgICAgICAgICgqKFNQZnJvbnRFbmQtPklGZXJyb3IpKShFUlJfRkFU QUwsIApYICAgICAgICAgICAgICAgICAiREN0ckN1cnY6IHNvdXJjZSAlcyBu b3QgaW4gY2lyY3VpdCIsICYoY3YtPlRSQ1Z2TmFtZVtpXSkpOwpYICAgICAg ICAgcmV0dXJuKEVfTk9ERVYpOwpYIGZvdW5kOjsKWCAgICAgfQpYKyAgICBp LS07ClggICAgIGVycm9yID0gQ0tUbmFtZXMoY2t0LCZudW1OYW1lcywmbmFt ZUxpc3QpOwpYICAgICBpZihlcnJvcikgcmV0dXJuKGVycm9yKTsKWC0gICAg KCooU1Bmcm9udEVuZC0+SUZuZXdVaWQpKSgoR0VORVJJQyAqKWNrdCwmdmFy VWlkLChJRnVpZCApTlVMTCwKWC0gICAgICAgICAgICAic3dlZXAiLCBVSURf T1RIRVIsIChHRU5FUklDICoqKU5VTEwpOwpYKyAgICBpZiAoY3YtPlRSQ1Z2 VHlwZVtpXT09dmNvZGUpClgrICAgIAkoKihTUGZyb250RW5kLT5JRm5ld1Vp ZCkpKChHRU5FUklDICopY2t0LCZ2YXJVaWQsKElGdWlkIClOVUxMLApYKyAg ICAgICAgICAgICJ2LXN3ZWVwIiwgVUlEX09USEVSLCAoR0VORVJJQyAqKilO VUxMKTsKWCsgICAgZWxzZSBpZiAoY3YtPlRSQ1Z2VHlwZVtpXT09aWNvZGUp ClgrICAgIAkoKihTUGZyb250RW5kLT5JRm5ld1VpZCkpKChHRU5FUklDICop Y2t0LCZ2YXJVaWQsKElGdWlkIClOVUxMLApYKyAgICAgICAgICAgICJpLXN3 ZWVwIiwgVUlEX09USEVSLCAoR0VORVJJQyAqKilOVUxMKTsKWCsgICAgZWxz ZSBpZiAoY3YtPlRSQ1Z2VHlwZVtpXT09VEVNUF9DT0RFKQpYKyAgICAJKCoo U1Bmcm9udEVuZC0+SUZuZXdVaWQpKSgoR0VORVJJQyAqKWNrdCwmdmFyVWlk LChJRnVpZCApTlVMTCwKWCsgICAgICAgICAgICAidGVtcC1zd2VlcCIsIFVJ RF9PVEhFUiwgKEdFTkVSSUMgKiopTlVMTCk7ClgrICAgIGVsc2UKWCsgICAg CSgqKFNQZnJvbnRFbmQtPklGbmV3VWlkKSkoKEdFTkVSSUMgKilja3QsJnZh clVpZCwoSUZ1aWQgKU5VTEwsClgrICAgICAgICAgICAgIj8tc3dlZXAiLCBV SURfT1RIRVIsIChHRU5FUklDICoqKU5VTEwpOwpYICAgICBlcnJvciA9ICgq KFNQZnJvbnRFbmQtPk9VVHBCZWdpblBsb3QpKSgoR0VORVJJQyAqKWNrdCwK WCAJKEdFTkVSSUMqKWNrdC0+Q0tUY3VySm9iLCBja3QtPkNLVGN1ckpvYi0+ Sk9CbmFtZSwKWCAJdmFyVWlkLElGX1JFQUwsbnVtTmFtZXMsbmFtZUxpc3Qs IElGX1JFQUwsJnBsb3QpOwpYQEAgLTE1MCw2ICsxNjIsMTYgQEAKWCAgICAg ICAgICAgICAgICAgICAgIGlmIChpID4gY3YtPlRSQ1ZuZXN0TGV2ZWwgKSBi cmVhayA7IApYICAgICAgICAgICAgICAgICAgICAgZ290byBuZXh0c3RlcDsK WCAgICAgICAgICAgICAgICAgfQpYKyAgICAgICAgfSBlbHNlIGlmKGN2LT5U UkNWdlR5cGVbaV09PVRFTVBfQ09ERSkgeyAKWCsgICAgICAgICAgICBpZihj a3QtPkNLVHRlbXAgLSBDT05TVEN0b0sgPiBjdi0+VFJDVnZTdG9wW2ldKQpY KyAgICAgICAgICAgICAgICB7IApYKyAgICAgICAgICAgICAgICAgICAgaSsr IDsgClgrICAgICAgICAgICAgICAgICAgICBmaXJzdFRpbWU9MTsKWCsgICAg ICAgICAgICAgICAgICAgIGNrdC0+Q0tUbW9kZSA9IChja3QtPkNLVG1vZGUg JiBNT0RFVUlDKSB8IApYKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBN T0RFRENUUkFOQ1VSVkUgfCBNT0RFSU5JVEpDVCA7ClgrICAgICAgICAgICAg ICAgICAgICBpZiAoaSA+IGN2LT5UUkNWbmVzdExldmVsICkgYnJlYWsgOyAK WCsgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4dHN0ZXA7ClgrICAgICAg ICAgICAgICAgIH0KWCAgICAgICAgIH0gLyogZWxzZSAgbm90IHBvc3NpYmxl ICovClggICAgICAgICB3aGlsZSAoaSA+IDApIHsgClggICAgICAgICAgICAg LyogaW5pdChpKTsgKi8KWEBAIC0xNjAsNiArMTgyLDkgQEAKWCAgICAgICAg ICAgICB9IGVsc2UgaWYoY3YtPlRSQ1Z2VHlwZVtpXT09aWNvZGUpIHsgLyog Y3VycmVudCBzb3VyY2UgKi8KWCAgICAgICAgICAgICAgICAgKChJU1JDaW5z dGFuY2UgKikoY3YtPlRSQ1Z2RWx0W2ldKSktPklTUkNkY1ZhbHVlID0KWCAg ICAgICAgICAgICAgICAgICAgICAgICBjdi0+VFJDVnZTdGFydFtpXTsKWCsg ICAgICAgICAgICB9IGVsc2UgaWYoY3YtPlRSQ1Z2VHlwZVtpXT09VEVNUF9D T0RFKSB7IApYKyAgICAgICAgICAgICAgICBja3QtPkNLVHRlbXAgPSBjdi0+ VFJDVnZTdGFydFtpXSArIENPTlNUQ3RvSzsKWCsgICAgICAgICAgICAgICAg Q0tUdGVtcChja3QpOwpYICAgICAgICAgICAgIH0gLyogZWxzZSBub3QgcG9z c2libGUgKi8KWCAgICAgICAgIH0KWCAKWEBAIC0xODgsNyArMjEzLDExIEBA ClggICAgICAgICAgICAgY2t0LT5DS1R0aW1lID0gKChJU1JDaW5zdGFuY2Ug KikoY3YtPlRSQ1Z2RWx0W2ldKSkKWCAgICAgICAgICAgICAgICAgICAgIC0+ SVNSQ2RjVmFsdWUgOwpYICAgICAgICAgfQpYLQpYKyAgICAgICAgZWxzZQpY KyAgICAgICAgewpYKyAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJTaHVs ZG4ndCBwYXNzIHRocm91Z2ggaGVyZSFcbiIpOwpYKyAgICAgICAgICAgZXhp dCgxKTsKWCsgICAgICAgIH0KWCAjaWZkZWYgSEFTX1NFTlNFMgpYIC8qClgg ICAgICAgICBpZighY2t0LT5DS1RzZW5JbmZvKSBwcmludGYoInNlbnNpdGl2 aXR5IHN0cnVjdHVyZSBkb2VzIG5vdCBleGlzdFxuIik7ClhAQCAtMjMyLDYg KzI2MSwxMiBAQApYICAgICAgICAgfSBlbHNlIGlmKGN2LT5UUkNWdlR5cGVb aV09PWljb2RlKSB7IC8qIGN1cnJlbnQgc291cmNlICovClggICAgICAgICAg ICAgKChJU1JDaW5zdGFuY2UqKShjdi0+VFJDVnZFbHRbaV0pKS0+SVNSQ2Rj VmFsdWUgKz0KWCAgICAgICAgICAgICAgICAgICAgIGN2LT5UUkNWdlN0ZXBb aV07ClgrICAgICAgICB9ClgrLyogc2VyYmFuICovClgrICAgICAgICBlbHNl IGlmIChjdi0+VFJDVnZUeXBlW2ldPT1URU1QX0NPREUpClgrICAgICAgICB7 ClgrICAgIAkgICAgY2t0LT5DS1R0ZW1wICs9IGN2LT5UUkNWdlN0ZXBbaV07 ClgrICAgICAgICAgICAgQ0tUdGVtcChja3QpOwpYICAgICAgICAgfSAvKiBl bHNlIG5vdCBwb3NzaWJsZSAqLwpYICAgICAgICAgaWYoICgqKFNQZnJvbnRF bmQtPklGcGF1c2VUZXN0KSkoKSApIHsKWCAgICAgICAgICAgICAvKiB1c2Vy IGFza2VkIHVzIHRvIHBhdXNlLCBzbyBzYXZlIHN0YXRlICovClhAQCAtMjQ3 LDEwICsyODIsMTIgQEAKWCAgICAgICAgICAgICAoKFZTUkNpbnN0YW5jZSop KGN2LT5UUkNWdkVsdFtpXSkpLT5WU1JDZGNWYWx1ZSA9IApYICAgICAgICAg ICAgICAgICAgICAgY3YtPlRSQ1Z2U2F2ZVtpXTsKWCAgICAgICAgICAgICAo KFZTUkNpbnN0YW5jZSopKGN2LT5UUkNWdkVsdFtpXSkpLT5WU1JDZGNHaXZl biA9IGN2LT5UUkNWZ1NhdmVbaV07ClgtICAgICAgICB9IGVsc2UgLyogaWYo Y3YtPlRSQ1Z2VHlwZVtpXSA9PSBpY29kZSkgY3VycmVudCBzb3VyY2UgKi8g ewpYKyAgICAgICAgfSBlbHNlIGlmKGN2LT5UUkNWdlR5cGVbaV0gPT0gaWNv ZGUpIHsKWCAgICAgICAgICAgICAoKElTUkNpbnN0YW5jZSopKGN2LT5UUkNW dkVsdFtpXSkpLT5JU1JDZGNWYWx1ZSA9IApYICAgICAgICAgICAgICAgICAg ICAgY3YtPlRSQ1Z2U2F2ZVtpXTsKWCAgICAgICAgICAgICAoKElTUkNpbnN0 YW5jZSopKGN2LT5UUkNWdkVsdFtpXSkpLT5JU1JDZGNHaXZlbiA9IGN2LT5U UkNWZ1NhdmVbaV07ClgrICAgICAgICB9IGVsc2UgaWYoY3YtPlRSQ1Z2VHlw ZVtpXSA9PSBURU1QX0NPREUpIHsKWCsgICAgICAgICAgICBja3QtPkNLVHRl bXAgPSBjdi0+VFJDVnZTYXZlW2ldOwpYICAgICAgICAgfSAvKiBlbHNlIG5v dCBwb3NzaWJsZSAqLwpYICAgICB9ClggICAgICgqKFNQZnJvbnRFbmQtPk9V VGVuZFBsb3QpKShwbG90KTsKRU5ELW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNy Y19saWJfY2t0X2RjdHJjdXJ2X2MKZWNobyB4IC0gc3BpY2UvZmlsZXMvcGF0 Y2gtc3JjX2xpYl9mdGVfcG9zdGNvbXNfYwpzZWQgJ3MvXlgvLycgPnNwaWNl L2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX3Bvc3Rjb21zX2MgPDwgJ0VORC1v Zi1zcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9wb3N0Y29tc19jJwpY LS0tIHNyYy9saWIvZnRlL3Bvc3Rjb21zLmMub3JpZwlTYXQgSnVsIDE3IDE5 OjI4OjA1IDE5OTkKWCsrKyBzcmMvbGliL2Z0ZS9wb3N0Y29tcy5jCVRodSBK dWwgMTcgMTA6MjM6MTMgMjAwMwpYQEAgLTEzNSw3ICsxNDUsNyBAQApYICAg ICB9ClggICAgIHQgPSBmdF9ldmFsdWF0ZShubik7ClggICAgIGlmICghdCkg ewpYLQkvKiBYWFggZXJyb3IgbWVzc2FnZSAqLwpYKwlmcHJpbnRmKGNwX2Vy ciwgIkVycm9yOiBDYW4ndCBldmFsdWF0ZSAlc1xuIiwgcmhzKTsKWCAgICAg ICAgIHRmcmVlKHApOwpYICAgICAgICAgcmV0dXJuOwpYICAgICB9CkVORC1v Zi1zcGljZS9maWxlcy9wYXRjaC1zcmNfbGliX2Z0ZV9wb3N0Y29tc19jCmVj aG8geCAtIHNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRlX3ZlY3RvcnNf YwpzZWQgJ3MvXlgvLycgPnNwaWNlL2ZpbGVzL3BhdGNoLXNyY19saWJfZnRl X3ZlY3RvcnNfYyA8PCAnRU5ELW9mLXNwaWNlL2ZpbGVzL3BhdGNoLXNyY19s aWJfZnRlX3ZlY3RvcnNfYycKWC0tLSBzcmMvbGliL2Z0ZS92ZWN0b3JzLmMu b3JpZwlTYXQgSnVsIDE3IDE5OjI4OjA1IDE5OTkKWCsrKyBzcmMvbGliL2Z0 ZS92ZWN0b3JzLmMJU2F0IEp1bCAxNyAxOToyODowNSAxOTk5ClhAQCAtMjAw LDcgKzIwMCw3IEBAClggewpYICAgICBzdHJ1Y3QgZHZlYyAqZCwgKmVuZCA9 IE5VTEwsICpuZXd2ID0gTlVMTDsKWCAgICAgc3RydWN0IHBsb3QgKnBsOwpY LSAgICBjaGFyIGJ1ZltCU0laRV9TUF0sICpzLCAqd2QsICpuYW1lLCAqcGFy YW07ClgrICAgIGNoYXIgYnVmW0JTSVpFX1NQXSwgKnMsICp3ZCwgKndob2xl LCAqbmFtZSA9IE5VTEwsICpwYXJhbTsKWCAgICAgaW50IGkgPSAwOwpYICAg ICBzdHJ1Y3QgdmFyaWFibGUgKnZ2OwpYIApYQEAgLTI1MSwxOSArMjUxLDI4 IEBAClggICAgICAgICAgICAgZnByaW50ZihjcF9lcnIsIApYICAgICAgICAg ICAgICJFcnJvcjogcGxvdCB3aWxkY2FyZCAobmFtZSAlcykgbWF0Y2hlcyBu b3RoaW5nXG4iLApYICAgICAgICAgICAgICAgICAgICAgd29yZCk7ClgrICAg ICAgICAgICAgICAgICAgICAKWCsgICAgICAgICAgICAJLyogTVcuIEkgZG9u J3Qgd2FudCBjb3JlIGxlYWtzIGhlcmUgKi8KWCsgICAgICAgICAgICB0ZnJl ZSh3ZCk7ClggICAgICAgICAgICAgcmV0dXJuIChOVUxMKTsKWCAgICAgICAg IH0KWCAgICAgfQpYKyAgICAKWCAgICAgaWYgKCFkICYmICgqd29yZCA9PSBT UEVDQ0hBUikpIHsKWCAgICAgICAgIC8qIFRoaXMgaXMgYSBzcGVjaWFsIHF1 YW50aXR5Li4uICovClggICAgICAgICBpZiAoZnRfbnV0bWVnKSB7ClggICAg ICAgICAgICAgZnByaW50ZihjcF9lcnIsClggICAgICAgICAiRXJyb3I6IGNp cmN1aXQgcGFyYW1ldGVycyBvbmx5IGF2YWlsYWJsZSB3aXRoIHNwaWNlXG4i KTsKWCsgICAgICAgIApYKwkgICAgdGZyZWUod2QpOyAJLyogTVcuIE1lbW9y eSBsZWFrIGZpeGVkIGFnYWluICovICAgICAgIAkJClggICAgICAgICAgICAg cmV0dXJuIChmYWxzZSk7ClggICAgICAgICB9ClgtICAgICAgICBuYW1lID0g Kyt3b3JkOwpYKyAgICAgICAgClgrCXdob2xlPWNvcHkod29yZCk7ClgrICAg ICAgICBuYW1lID0gKyt3b3JkOyAgICAgICAgClggICAgICAgICBmb3IgKHBh cmFtID0gbmFtZTsgKnBhcmFtICYmICgqcGFyYW0gIT0gJ1snKTsgcGFyYW0r KykKWC0gICAgICAgICAgICA7ClgrICAgICAgICAgICAgOwkJClgrICAgICAg ICAgICAgClggICAgICAgICBpZiAoKnBhcmFtKSB7ClggICAgICAgICAgICAg KnBhcmFtKysgPSAnXDAnOwpYICAgICAgICAgICAgIGZvciAocyA9IHBhcmFt OyAqcyAmJiAqcyAhPSAnXSc7IHMrKykKWEBAIC0yNzEsMjcgKzI4MCwzNiBA QApYICAgICAgICAgICAgICpzID0gJ1wwJzsKWCAgICAgICAgIH0gZWxzZQpY ICAgICAgICAgICAgIHBhcmFtID0gTlVMTDsKWC0KWCsgICAgICAgICAgICAK WCsJClggCWlmIChmdF9jdXJja3QpIHsKWCsJClggCSAgICB2diA9ICgqaWZf Z2V0cGFyYW0pKGZ0X2N1cmNrdC0+Y2lfY2t0LCAmbmFtZSwgcGFyYW0sIDAs IDApOwpYIAkgICAgaWYgKCF2dikgewpYKwkgICAgICAgIHRmcmVlKHdob2xl KTsKWCsJCXRmcmVlKHdkKTsKWCAJCXJldHVybiAoTlVMTCk7ClggCSAgICB9 ClggCX0gZWxzZSB7ClggICAgICAgICAgICAgZnByaW50ZihjcF9lcnIsICJF cnJvcjogTm8gY2lyY3VpdCBsb2FkZWQuXG4iKTsKWCsJICAgIHRmcmVlKHdo b2xlKTsKWCsJICAgIHRmcmVlKHdkKTsKWCAJICAgIHJldHVybiAoTlVMTCk7 ClggCX0KWCAKWC0gICAgICAgIHRmcmVlKHdkKTsKWCAgICAgICAgIGQgPSBh bGxvYyhzdHJ1Y3QgZHZlYyk7ClggCVpFUk8oZCwgc3RydWN0IGR2ZWMpOwpY LSAgICAgICAgZC0+dl9uYW1lID0gY29weSh3b3JkKTsKWCsgICAgICAgIGQt PnZfbmFtZSA9IGNvcHkod2hvbGUpOyAvKiBNVy4gVGhlIHNhbWUgYXMgd29y ZCBiZWZvcmUgKi8KWCAgICAgICAgIGQtPnZfdHlwZSA9IFNWX05PVFlQRTsK WCAgICAgICAgIGQtPnZfZmxhZ3MgfD0gVkZfUkVBTDsgIC8qIE5vIGNvbXBs ZXggdmFsdWVzIHlldC4uLiAqLwpYICAgICAgICAgZC0+dl9yZWFsZGF0YSA9 IChkb3VibGUgKikgdG1hbGxvYyhzaXplb2YgKGRvdWJsZSkpOwpYICAgICAg ICAgZC0+dl9sZW5ndGggPSAxOwpYICAgICAgICAgKmQtPnZfcmVhbGRhdGEg PSB2di0+dmFfcmVhbDsKWCsgICAgICAgIApYKyAgICAgICAgdGZyZWUod2Qp OwkKWCAgICAgICAgIHZlY19uZXcoZCk7ClgrCXRmcmVlKHdob2xlKTsKWCsJ dGZyZWUod2QpOwpYICAgICAgICAgcmV0dXJuIChkKTsKWCAgICAgfQpYIApF TkQtb2Ytc3BpY2UvZmlsZXMvcGF0Y2gtc3JjX2xpYl9mdGVfdmVjdG9yc19j CmVjaG8geCAtIHNwaWNlL2ZpbGVzL3BhdGNoLWNvbmZfZGVmYXVsdHMKc2Vk ICdzL15YLy8nID5zcGljZS9maWxlcy9wYXRjaC1jb25mX2RlZmF1bHRzIDw8 ICdFTkQtb2Ytc3BpY2UvZmlsZXMvcGF0Y2gtY29uZl9kZWZhdWx0cycKWC0t LSBjb25mL2RlZmF1bHRzLm9yaWcJVGh1IEp1bCAxNyAxNjo0MDo1MSAyMDAz ClgrKysgY29uZi9kZWZhdWx0cwlUaHUgSnVsIDE3IDE2OjUxOjE5IDIwMDMK WEBAIC02NSw3ICs2NSw3IEBAClggIwl0aGUgZm9sbG93aW5nIGRlZmluaXRp b246ClggIwkJU1lTX0RJUgkJPSAkKERJU1RfRElSKQpYIApYLVNZU19ESVIJ CT0gJChUT1AxKS8kKFNZU1RFTSkKWCtTWVNfRElSCQk9ICQoVE9QMCkvJChT WVNURU0pClggClggIwlPQkpfVE9QIGlzIHRoZSBkaXJlY3RvcnkgaW4gd2hp Y2ggaW50ZXJtaWRpYXRlIGZpbGVzIHJlc2lkZQpYICMJVGhlc2UgYXJlICIu byIgZmlsZXMsIHN5bnRoZXNpemVkICIuYyIgZmlsZXMsICIuYSIgZmlsZXMs ClhAQCAtMTA1LDEyICsxMDUsMTIgQEAKWCAjCWlkZW50aWZpZWQgYXMgYW5k IFNZU1RFTSBpcyB0aGUgbmFtZSBvZiB0aGUgcGVyLXN5c3RlbSBkZWZpbml0 aW9ucwpYICMJZmlsZSBsaXN0ZWQgb24gdGhlICJidWlsZCIgY29tbWFuZCBs aW5lLgpYIApYLVNQSUNFX0RJUgk9ICQoVE9QMSkvJChTWVNURU0pClgtU1BJ Q0VfTElCX0RJUgk9ICQoU1BJQ0VfRElSKS9saWIKWCtTUElDRV9ESVIJPSAk e1BSRUZJWH0KWCtTUElDRV9MSUJfRElSCT0gJChTUElDRV9ESVIpL3NoYXJl L3NwaWNlMwpYIFNQSUNFX0VYRUNfRElSCT0gJChTUElDRV9ESVIpL2JpbgpY IApYIFNfU1BJQ0VfRElSCT0gJChTUElDRV9ESVIpClgtU19TUElDRV9MSUJf RElSCT0gJChTX1NQSUNFX0RJUikvbGliClgrU19TUElDRV9MSUJfRElSCT0g JChTX1NQSUNFX0RJUikvc2hhcmUvc3BpY2UzClggU19TUElDRV9FWEVDX0RJ Uj0gJChTX1NQSUNFX0RJUikvYmluClggClggIwlJTlNUQUxMX0RJUlMgbGlz dHMgdGhlIGRpcmVjdG9yaWVzIHRoYXQgbmVlZCB0byBiZSBjcmVhdGVkIGJl Zm9yZQpYQEAgLTEzMyw3ICsxMzMsNyBAQApYIApYICMJQ0NfT1BUOiBEZWZh dWx0IGNvbXBpbGUgb3B0aW9ucyAob3B0aW1pemF0aW9uL2RlYnVnIGxldmVs LCBvdGhlcikKWCAKWC1DQ19PUFQJCT0gLU8KWCtDQ19PUFQJCSs9IC1PClgg ClggIwlDQ19PUFRfU0FGRTogU3BlY2lhbCBjb21waWxlIG9wdGlvbnMgdG8g b3ZlcnJpZGUgQ0NfT1BUIGZvciBjb2RlClggIwl3aGljaCB0eXBpY2FsbHkg Y2F1c2VzIHByb2JsZW1zIGZvciBtb3N0IGNvbXBpbGVycyAoYnNpbTEgYW5k IGJzaW0yKS4KWEBAIC0yMDMsNyArMjAzLDcgQEAKWCAjCVhfRElSIGluZGlj YXRlcyB0aGUgdG9wIG9mIHRoZSBYMTEgbGliL2luY2x1ZGUgaGllcmFyY2h5 OyBpdCBpcyBvbmx5ClggIwlhIGNvbnZlbmllbmNlIHRoYXQgaXMgdXNlZCBp biB0aGUgZm9sbG93aW5nIGRlZmluaXRpb25zLgpYIApYLVhfRElSCQk9IC91 c3IKWCtYX0RJUgkJPSAke1gxMUJBU0V9ClggClggIwlJTkNYIGxpc3RzIHRo ZSBYIGluY2x1ZGUgZGlyZWN0b3JpZXMuICBUaGlzIG1heSBiZSBkaWZmZXJl bnQgYmV0d2VlbgpYICMJTUlUIFgxMXI1LCBYMTFyNCwgYW5kIHlvdXIgdmVu ZG9yJ3MgdmVyc2lvbiBvZiBYMTEsIHRob3VnaCBsaXN0aW5nCkVORC1vZi1z cGljZS9maWxlcy9wYXRjaC1jb25mX2RlZmF1bHRzCmVjaG8gYyAtIHNwaWNl L3NjcmlwdHMKbWtkaXIgLXAgc3BpY2Uvc2NyaXB0cyA+IC9kZXYvbnVsbCAy PiYxCmVjaG8geCAtIHNwaWNlL3NjcmlwdHMvY29uZmlndXJlCnNlZCAncy9e WC8vJyA+c3BpY2Uvc2NyaXB0cy9jb25maWd1cmUgPDwgJ0VORC1vZi1zcGlj ZS9zY3JpcHRzL2NvbmZpZ3VyZScKWCMhL2Jpbi9zaApYClhybSAtZiAke1dS S1NSQ30vbWFrZWZpbGUKWGNwICR7RklMRVNESVJ9L01ha2VmaWxlICR7V1JL U1JDfS9NYWtlZmlsZQpYY3AgJHtGSUxFU0RJUn0vRnJlZUJTRCAke1dSS1NS Q30vY29uZi9GcmVlQlNECkVORC1vZi1zcGljZS9zY3JpcHRzL2NvbmZpZ3Vy ZQpleGl0Cgo= --0-60008898-1058507623=:26346-- >Release-Note: >Audit-Trail: >Unformatted: --0-60008898-1058507623=:26346 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Content-Id: Content-Disposition: inline
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030718055343.26926.qmail>