Fwd: Re: [Lcdproc] Re: VLSYS L.I.S 2005 Driver written

Daryl F daryl@rainyday.ca
Thu May 24 01:31:01 2007


This is a multi-part message in MIME format.
--------------070803070901000808020407
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit

Peter Marschall wrote:
> Hi Daryl,
> 
> On Monday, 14. May 2007 06:21, Daryl F wrote:
>> I obtained the latest CVS tarball and retrofitted my changes to it as
>> you requested.
>>
>> I addressed one of the issues from paul_c and Todd Luliak, namely I
>> added a test for the correct level of support in libftdi to acinclude.m4.
>>
>> The other issue of 'configure: error: Unknown driver lis' will already
>> be handled when compiling from CVS due to the use of `sh autogen.sh` to
>> run aclocal, automake, and autoconf. That also reduces the size of my
>> patch greatly since I don't have to provide an update to the configure
>> script, just patch acinclude.m4.
>>
>> If I need to make any more changes I look forward to your requests.
> 
> I committed the lis driver to CVS (with a few little aesthetical
> changes ;-).
> 
> While browsing through the code a bit, I found a few issues:
> - I consider set_custom_chars() a kludge.
>   In principle it does the same as the standard set_chars(),
>   but uses a different way of 
>   Try to switch to set_char().
>   This will make the implementation of hbar() simpler,
>   and allow for a simple implementation of vbar()
>   as well as num() because you can use the helper functions
>   that use set_char().
>   Have a look at the IOWarrior or CFontzPacket() drivers
>   for examples.
> 
> - Please add the missing functions:
>   cellheight(), cellwidth(), get_free_chars()
>   You'll need them, because the support functions require them.
> 
> - Please document the requirements (required libraries)
>   of the lis driver and its restrictions in the docbook file
>   so that users know what they need to get it running and
>   what they can expect from it.
>   (Hopefully you do not need to document restrictions
>    due to my constant nagging ;-)))
> 
> Thanks for supporting LCDproc
> Peter
> 

Hi Peter,

I analyzed the CFontPacket and IOWarrior code's use of the helper
functions. They won't work well with lis because the device won't let me
write to specific columns and only has eight customizable characters.

The problem occurs when the lib_hbar function writes on the left side of
the display and uses custom characters to do it. Later, if a client
writes on the right side of the display, also using say bignums, the
custom characters for the horizontal bar are no longer present in the
device when lis is forced to rewrite the line starting at column 1.
Garbage results. Too bad VLSystem wouldn't release more information on
the device.

I can't believe I managed to lose my updates to the docbook files. But
it turned out for the best. In thoroughly documenting it I found I'd
left support in for Device= in the config file from an earlier attempt
to use libusb. It should be VendorID= and ProductID= now that I'm using
libftdi.

I documented the requirement to have libftdi installed when building
lcdproc with the lis driver.

I also cleaned up the lis.c source file a bit, moving some constants to
lis.h where they belong, getting rid of some spaces that should have
been tabs to make the code format better. And removing some unreachable
code, namely a test function I'd used in the past.

Cleaned unneeded function prototypes out of lis.h

Also changed the default Brightness= in lis.c to 1000 as that is what
the comments in LCDd.conf actually said. Update the comments in
LCDd.conf as Brightness= can only control four different settings on the
actual device.

Regards,
Daryl

--------------070803070901000808020407
Content-Type: text/plain;
 name="lcdproc-CVS-current-20070521-lis-r1.patch"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
 filename="lcdproc-CVS-current-20070521-lis-r1.patch"

ZGlmZiAtcnVOIGxjZHByb2MtQ1ZTLWN1cnJlbnQtMjAwNzA1MjEvTENEZC5jb25mIGxjZHBy
b2MtQ1ZTLWN1cnJlbnQtMjAwNzA1MjEtbGlzLXIxL0xDRGQuY29uZgotLS0gbGNkcHJvYy1D
VlMtY3VycmVudC0yMDA3MDUyMS9MQ0RkLmNvbmYJMjAwNy0wNS0xOCAwMjowMDozOC4wMDAw
MDAwMDAgLTA1MDAKKysrIGxjZHByb2MtQ1ZTLWN1cnJlbnQtMjAwNzA1MjEtbGlzLXIxL0xD
RGQuY29uZgkyMDA3LTA1LTIzIDA3OjA5OjQ1LjAwMDAwMDAwMCAtMDUwMApAQCAtNjIyLDEy
ICs2MjIsMTggQEAKICMjIExJUyBNQ0UgMjAwNSBkcml2ZXIgIyMKIFtsaXNdCiAKLSMgVVNC
IGRldmljZSB0byB1c2UgW2RlZmF1bHQ6IC9kZXYvdHR5VVNCMF0KLURldmljZT0vZGV2L3R0
eVVTQjAKLQogIyBTZXQgdGhlIGluaXRpYWwgYnJpZ2h0bmVzcyBbZGVmYXVsdDogMTAwMDsg
bGVnYWw6IDAgLSAxMDAwXQotQnJpZ2h0bmVzcz0xMDAwCisjIDAtMjUwID0gMjUlLCAyNTEt
NTAwID0gNTAlLCA1MDEtNzUwID0gNzUlLCA3NTEtMTAwMCA9IDEwMCUKKyNCcmlnaHRuZXNz
PTEwMDAKKworIyBDb2x1bW5zIGJ5IGxpbmVzIChkZWZhdWx0IDIweDIpCisjU2l6ZT0yMHgy
CisKKyMgVVNCIFZlbmRvciBJRCAoZGVmYXVsdCAweDA0MDMpCitWZW5kb3JJRD0weDA0MDMK
IAorIyBVU0IgUHJvZHVjdCBJRCAoZGVmYXVsdCAweDYwMDEKK1Byb2R1Y3RJRD0weDYwMDEK
IAogCiAjI1RoZSBkcml2ZXIgZm9yIHRoZSBWRkQgb2YgdGhlIE1lZGlvbiBNRDg4MDAgUEMg
IyMKZGlmZiAtcnVOIGxjZHByb2MtQ1ZTLWN1cnJlbnQtMjAwNzA1MjEvZG9jcy9sY2Rwcm9j
LXVzZXIvZHJpdmVycy9saXMuZG9jYm9vayBsY2Rwcm9jLUNWUy1jdXJyZW50LTIwMDcwNTIx
LWxpcy1yMS9kb2NzL2xjZHByb2MtdXNlci9kcml2ZXJzL2xpcy5kb2Nib29rCi0tLSBsY2Rw
cm9jLUNWUy1jdXJyZW50LTIwMDcwNTIxL2RvY3MvbGNkcHJvYy11c2VyL2RyaXZlcnMvbGlz
LmRvY2Jvb2sJMTk2OS0xMi0zMSAxODowMDowMC4wMDAwMDAwMDAgLTA2MDAKKysrIGxjZHBy
b2MtQ1ZTLWN1cnJlbnQtMjAwNzA1MjEtbGlzLXIxL2RvY3MvbGNkcHJvYy11c2VyL2RyaXZl
cnMvbGlzLmRvY2Jvb2sJMjAwNy0wNS0yMyAwNzoyNjoxOS4wMDAwMDAwMDAgLTA1MDAKQEAg
LTAsMCArMSwxMTYgQEAKKzxzZWN0MSBpZD0ibGlzLWhvd3RvIj4KKzx0aXRsZT5UaGUgbGlz
IERyaXZlcjwvdGl0bGU+CisKKzxwYXJhPgorICBUaGlzIHNlY3Rpb24gdGFsa3MgYWJvdXQg
dXNpbmcgTENEcHJvYyB3aXRoIHRoZSBWTFN5c3RlbSBMLkkuUworICBNQ0UgMjAwNSBWYWN1
dW0gRmxvdXJlc2NlbnQgRGlzcGxheSAoVkZEKSBiYXNlZCBvbiB0aGUgRlRESSBVU0ItdG8t
c2VyaWFsCisgIGNvbnZlcnRlciwgdGhlIE1pY3JvY2hpcCBQSUMtMTZGNzE2IG1pY3JvY29u
dHJvbGxlciwgYW5kCisgIHRoZSBORUMgVVBEMTYzMTQgZGlzcGxheSBkcml2ZXIgbWFudWZh
Y3R1cmVkIGJ5CisgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cudmxzeXMuY28ua3IiPlZMU3lz
dGVtIChodHRwOi8vd3d3LnZsc3lzLmNvLmtyKTwvdWxpbms+LgorPC9wYXJhPgorCis8IS0t
ICMjIFZMU3lzIGxpcyBkcml2ZXIgIyMgLS0+Cis8c2VjdDIgaWQ9Imxpcy1mZWF0dXJlcyI+
Cis8dGl0bGU+RmVhdHVyZXM8L3RpdGxlPgorCis8cGFyYT4KK1RoaXMgZGV2aWNlIHVzZXMg
YSB2YWN1dW0gZmxvdXJlc2NlbnQgZGlzcGxheSBvZiAyMCBjaGFyYWN0ZXJzIGJ5IDIgbGlu
ZXMuIEVhY2ggZWFjaAorY2hhcmFjdGVyIGlzIDUgcGl4ZWxzIHdpZGUgYnkgOCBwaXhlbHMg
aGlnaC4gVGhlIGRldmljZSBpcyBjb25uZWN0ZWQgYnkgVVNCLiBUaGUgRlRESSBjaGlwCit0
cmFuc2xhdGVzIHRoZSBVU0IgcHJvdG9jb2wgdG8gc2VyaWFsIGV4cGVjdGVkIGJ5IHRoZSBW
RkQgZHJpdmVyIGNoaXAsIGFuIE5FQyBVUEQxNjMxNC4gQQorcHJvZ3JhbW1hYmxlIGludGVy
cnVwdCBjb250cm9sbGVyIChQSUMpLCB0aGUgUElDMTZGNzE2IGJ5IE1pY3JvY2hpcCwgcHJv
dmlkZXMgdGhlIGdsdWUKK2JldHdlZW4gdGhlIEZUREkgYW5kIHRoZSBORUMgY2hpcHMuCis8
L3BhcmE+CisKKworPC9zZWN0Mj4KKworPHNlY3QyIGlkPSJsaXMtcmVxdWlyZW1lbnRzIj4K
Kzx0aXRsZT5SZXF1aXJlbWVudHM8L3RpdGxlPgorCis8cGFyYT4KK1RoZSBkcml2ZXIgZGVw
ZW5kcyBvbiBsaWJmdGRpLCB2ZXJzaW9uIDAuOCBvciBoaWdoZXIsIGZyb20KKzx1bGluayB1
cmw9Imh0dHA6Ly93d3cuaW50cmEybmV0LmNvbS9vcGVuc291cmNlL2Z0ZGkvIj4KK2h0dHA6
Ly93d3cuaW50cmEybmV0LmNvbS9vcGVuc291cmNlL2Z0ZGkvPC91bGluaz4uCis8L3BhcmE+
CisKKzwvc2VjdDI+Cis8c2VjdDIgaWQ9Imxpcy1jb21waWxpbmciPgorPHRpdGxlPkNvbXBp
bGluZzwvdGl0bGU+CisKKzxwYXJhPgorTWFrZSBzdXJlIHRoYXQgdGhlIEwuSS5TIGZpbGVz
IGFyZSBidWlsdCB3aGVuIHlvdSBydW4gY29uZmlndXJlLiBUaGlzCitjYW4gYmUgZG9uZSBi
eSBzcGVjaWZ5aW5nICItLWVuYWJsZS1kcml2ZXJzPWFsbCIgb3IgYnkKKyItLWVuYWJsZS1k
cml2ZXJzPWxpcyIuCis8L3BhcmE+CisKKzwvc2VjdDI+Cis8c2VjdDIgaWQ9Imxpcy1jb25m
aWciPgorPHRpdGxlPkNvbmZpZ3VyYXRpb24gaW4gTENEZC5jb25mPC90aXRsZT4KKworPHNl
Y3QzIGlkPSJsaXMtY29uZmlnLXNlY3Rpb24iPgorPHRpdGxlPltsaXNdPC90aXRsZT4KKwor
PHZhcmlhYmxlbGlzdD4KKzx2YXJsaXN0ZW50cnk+CisgIDx0ZXJtPgorICAgIDxjb21tYW5k
PlNpemU9PC9jb21tYW5kPgorICAgIDxhcmcgY2hvaWNlPSJwbGFpbiI+CisgICAgICA8cmVw
bGFjZWFibGU+V0lEVEg8L3JlcGxhY2VhYmxlPgorICAgICAgPGxpdGVyYWw+eDwvbGl0ZXJh
bD4KKyAgICAgIDxyZXBsYWNlYWJsZT5IRUlHSFQ8L3JlcGxhY2VhYmxlPgorICAgIDwvYXJn
PgorICA8L3Rlcm0+CisgIDxsaXN0aXRlbT48cGFyYT4KKyAgICBTZXQgdGhlIGRpc3BsYXkg
c2l6ZS4gVGhlIGRlZmF1bHQgPGxpdGVyYWw+MjB4MjwvbGl0ZXJhbD4gc2hvdWxkIGJlIHNh
ZmUKKyAgICBmb3IgbW9zdCBpZiBub3QgYWxsIHVzZXJzLCBzaW5jZSB0aGUgZGV2aWNlIHNl
ZWVtcyB0byBiZSBtYWRlIG9ubHkgd2l0aAorICAgIHRoaXMgb25lIHNpemUuCisgICAgQnV0
IHdobyBrbm93bnMgJmhlbGxpcDsKKyAgPC9wYXJhPjwvbGlzdGl0ZW0+Cis8L3Zhcmxpc3Rl
bnRyeT4KKzx2YXJsaXN0ZW50cnk+CisgIDx0ZXJtPgorICAgIDxjb21tYW5kPlZlbmRvcklE
PTwvY29tbWFuZD4KKyAgICA8YXJnIGNob2ljZT0icGxhaW4iPgorICAgICAgPHJlcGxhY2Vh
YmxlPlZFTkRPUklEPC9yZXBsYWNlYWJsZT4KKyAgICA8L2FyZz4KKyAgPC90ZXJtPgorICA8
bGlzdGl0ZW0+PHBhcmE+CisgICAgVVNCIFZlbmRvciBJRAorICAgIFtkZWZhdWx0OiA8bGl0
ZXJhbD4weDA0MDM8L2xpdGVyYWw+XS4KKyAgPC9wYXJhPjwvbGlzdGl0ZW0+Cis8L3Zhcmxp
c3RlbnRyeT4KKzx2YXJsaXN0ZW50cnk+CisgIDx0ZXJtPgorICAgIDxjb21tYW5kPlByb2R1
Y3RJRD08L2NvbW1hbmQ+CisgICAgPGFyZyBjaG9pY2U9InBsYWluIj4KKyAgICAgIDxyZXBs
YWNlYWJsZT5QUk9EVUNUSUQ8L3JlcGxhY2VhYmxlPgorICAgIDwvYXJnPgorICA8L3Rlcm0+
CisgIDxsaXN0aXRlbT48cGFyYT4KKyAgICBVU0IgUHJvZHVjdCBJRAorICAgIFtkZWZhdWx0
OiA8bGl0ZXJhbD4weDYwMDE8L2xpdGVyYWw+XS4KKyAgPC9wYXJhPjwvbGlzdGl0ZW0+Cis8
L3Zhcmxpc3RlbnRyeT4KKzx2YXJsaXN0ZW50cnk+CisgIDx0ZXJtPgorICAgIDxjb21tYW5k
PkJyaWdodG5lc3M9PC9jb21tYW5kPgorICAgIDxhcmcgY2hvaWNlPSJwbGFpbiI+PHJlcGxh
Y2VhYmxlPkJSSUdIVE5FU1M8L3JlcGxhY2VhYmxlPjwvYXJnPgorICA8L3Rlcm0+CisgIDxs
aXN0aXRlbT4KKyAgPHBhcmE+CisgICAgU2V0IHRoZSBpbml0aWFsIGJyaWdodG5lc3MgW2Rl
ZmF1bHQ6IDxsaXRlcmFsPjEwMDA8L2xpdGVyYWw+OyAKKyAgICBsZWdhbDogPGxpdGVyYWw+
MDwvbGl0ZXJhbD4gLSA8bGl0ZXJhbD4xMDAwPC9saXRlcmFsPi4gVmFsdWVzCisgICAgYmV0
d2VlbiAwIGFuZCAyNTAgZ2l2ZSAyNSUgYnJpZ2h0bmVzcywgMjUxIHRvIDUwMCBnaXZlIDUw
JSBicmlnaHRuZXNzLAorICAgIDUwMSBhbmQgNzUwLCBnaXZlIDc1JSBicmlnaHRuZXNzLCBh
bmQgdmFsdWVzIGhpZ2hlciB0aGFuIDc1MSBnaXZlIDEwMCUKKyAgICBicmlnaHRuZXNzLgor
ICA8L3BhcmE+CisgIDwvbGlzdGl0ZW0+Cis8L3Zhcmxpc3RlbnRyeT4KKworPC92YXJpYWJs
ZWxpc3Q+CisKKzwvc2VjdDM+CisKKzwvc2VjdDI+CisKKzwvc2VjdDE+CmRpZmYgLXJ1TiBs
Y2Rwcm9jLUNWUy1jdXJyZW50LTIwMDcwNTIxL3NlcnZlci9kcml2ZXJzL2xpcy5jIGxjZHBy
b2MtQ1ZTLWN1cnJlbnQtMjAwNzA1MjEtbGlzLXIxL3NlcnZlci9kcml2ZXJzL2xpcy5jCi0t
LSBsY2Rwcm9jLUNWUy1jdXJyZW50LTIwMDcwNTIxL3NlcnZlci9kcml2ZXJzL2xpcy5jCTIw
MDctMDUtMTcgMDc6MDg6MTYuMDAwMDAwMDAwIC0wNTAwCisrKyBsY2Rwcm9jLUNWUy1jdXJy
ZW50LTIwMDcwNTIxLWxpcy1yMS9zZXJ2ZXIvZHJpdmVycy9saXMuYwkyMDA3LTA1LTIzIDE5
OjQ2OjM4LjAwMDAwMDAwMCAtMDUwMApAQCAtNyw4ICs3LDcgQEAKICAqIFRoaXMgZHJpdmVy
IHVzZXMgdGhlIGxpYmZ0ZGkgbGlicmFyeSB0byBpbnRlcmZhY2UgdG8gdGhlIEZUREkgY2hp
cC4gTWFrZQogICogc3VyZSBrZXJuZWwgbW9kdWxlIGZ0ZGlfc2lvIGRvZXNuJ3QgY2xhaW0g
dGhlIGRldmljZS4KICAqCi0gKiBCYXNlZCBvbiB0aGUgdWxhMjAwIGRyaXZlciBDb3B5cmln
aHQgKEMpIDIwMDYsIEJlcm5oYXJkIFdhbGxlCi0gKiBhbmQgdGhlIENyeXN0YWxGb250eiA2
MzMgZHJpdmVyIENvcHlyaWdodCAoQykgMjAwMiBEYXZpZCBHTEFVREUKKyAqIEJhc2VkIG9u
OiAgIHVsYTIwMCBkcml2ZXIgQ29weXJpZ2h0IChDKSAyMDA2LCBCZXJuaGFyZCBXYWxsZQog
ICoKICAqIENvcHlyaWdodCAoYykgIDIwMDcsIERhcnlsIEZvbnNlY2EtSG9sdCA8d3lhdHRA
cHJhaXJpZXR1cnRsZS5jYT4KICAqCkBAIC0zMyw2ICszMiwxNiBAQAogICogd2FzIHdoaWNo
IGxpbmUgd291bGQgYmUgd3JpdHRlbiBhdCBjb2x1bW4gMS4KICAqLwogCisvKiBDSEFOR0VT
OgorICoKKyAqIAkyMDA3LzA1LzIyCVJlbW92ZWQgdXNlbGVzcyBEZXZpY2U9IGNvbmZpZyBv
cHRpb24uCisgKiAJCQlBZGRlZCBWZW5kb3JJRD0gYW5kIFByb2R1Y3RJRD0gY29uZmlnCisg
KiAJCQlvcHRpb24gcGFyc3RpbmcuIE1vdmVkIGNvbnN0YW50cyB0bworICogCQkJbGlzLmgg
d2hlcmUgdGhleSBiZWxvbmcuIEFkZGVkIAorICogCQkJbGlzX2NlbGxoZWlnaHQoKSBhbmQg
bGlzX2NlbGx3aWR0aCgpLgorICogCQkJQ29tcGxldGVseSBjb21tZW50ZWQgb3V0IGxpc190
ZXN0KCkgdG8KKyAqIAkJCXNhdmUgbWVtb3J5LgorICovCiAjaW5jbHVkZSA8c3RkbGliLmg+
CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTU3LDcgKzY2
LDcgQEAKICNpbmNsdWRlICJsY2RfbGliLmgiCiAjaW5jbHVkZSAidGltaW5nLmgiCiAKLXZv
aWQgbGlzX3Rlc3QoRHJpdmVyICpkcnZ0aGlzKTsKKy8vIHZvaWQgbGlzX3Rlc3QoRHJpdmVy
ICpkcnZ0aGlzKTsKIAogLyogVmFycyBmb3IgdGhlIHNlcnZlciBjb3JlICovCiBNT0RVTEVf
RVhQT1JUIGNoYXIgKmFwaV92ZXJzaW9uID0gQVBJX1ZFUlNJT047CkBAIC02NiwxNyArNzUs
NiBAQAogTU9EVUxFX0VYUE9SVCBjaGFyICpzeW1ib2xfcHJlZml4ID0gImxpc18iOwogCiAK
LS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIGNvbnN0YW50cwotLy8KLSNkZWZpbmUg
RElTUExBWV9WRU5ET1JfSUQgICAgMHgwNDAzCi0jZGVmaW5lIERJU1BMQVlfUFJPRFVDVF9J
RCAgIDB4NjAwMQotCi0jZGVmaW5lIENFTExXSURUSCAgNQotI2RlZmluZSBDRUxMSEVJR0hU
IDgKLQotI2RlZmluZSBERUZBVUxUX0JSSUdIVE5FU1MgNzUwCi0KIC8qCiAgKiBDaGFyYWN0
YXIgbWFwcGluZyBmb3IgVVBEMTYzMTQgZGV2aWNlIGJ5IERhcnlsIEZvbnNlY2EtSG9sdAog
ICogPHd5YXR0QHByYWlyaWV0dXJ0bGUuY2E+IHRha2VuIGZyb20gTWFyayBIYWVtbWVybGlu
ZydzIEhENDQ3ODAgdGFibGUuCkBAIC05Niw4MiArOTQsNTAgQEAKICAqLwogCiBjb25zdCB1
bnNpZ25lZCBjaGFyIFVQRDE2MzE0X2NoYXJtYXBbXSA9IHsKLSAgLyogIzAgKi8KLSAgICAw
LCAgIDEsICAgMiwgICAzLCAgIDQsICAgNSwgICA2LCAgIDcsCi0gICAgOCwgICA5LCAgMTAs
ICAxMSwgIDEyLCAgMTMsICAxNCwgIDE1LAotICAgMTYsICAxNywgIDE4LCAgMTksICAyMCwg
IDIxLCAgMjIsICAyMywKLSAgIDI0LCAgMjUsICAyNiwgIDI3LCAgMjgsICAyOSwgIDMwLCAg
MzEsCi0gIC8qICMzMiAqLwotICAgMzIsICAzMywgIDM0LCAgMzUsICAzNiwgIDM3LCAgMzgs
ICAzOSwKLSAgIDQwLCAgNDEsICA0MiwgIDQzLCAgNDQsICA0NSwgIDQ2LCAgNDcsCi0gICA0
OCwgIDQ5LCAgNTAsICA1MSwgIDUyLCAgNTMsICA1NCwgIDU1LAotICAgNTYsICA1NywgIDU4
LCAgNTksICA2MCwgIDYxLCAgNjIsICA2MywKLSAgLyogIzY0ICovCi0gICA2NCwgIDY1LCAg
NjYsICA2NywgIDY4LCAgNjksICA3MCwgIDcxLAotICAgNzIsICA3MywgIDc0LCAgNzUsICA3
NiwgIDc3LCAgNzgsICA3OSwKLSAgIDgwLCAgODEsICA4MiwgIDgzLCAgODQsICA4NSwgIDg2
LCAgODcsCi0gICA4OCwgIDg5LCAgOTAsICA5MSwgIDQ3LCAgOTMsICA5NCwgIDk1LAotICAv
KiAjOTYgKi8KLSAgIDk2LCAgOTcsICA5OCwgIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDMsCi0g
IDEwNCwgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIDExMCwgMTExLAotICAxMTIsIDExMywg
MTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwKLSAgMTIwLCAxMjEsIDEyMiwgMTIzLCAx
MjQsIDEyNSwgMTI2LCAxMjcsCi0gIC8qICMxMjggKi8KLSAgMTI4LCAxMjksIDEzMCwgMTMx
LCAxMzIsIDEzMywgMTM0LCAxMzUsCi0gIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEs
IDE0MiwgMTQzLAotICAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwK
LSAgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMTU4LCAxNTksCi0gIC8qICMxNjAg
Ki8KLSAgMTYwLCAgMzMsIDIzNiwgMjM3LCAxNjQsICA5MiwgMTI0LCAxNjcsCi0gIDE2OCwg
MTY5LCAxNzAsIDE3MSwgMTcyLCAxNzMsIDE3NCwgMTc1LAotICAxNzYsIDE3NywgMTc4LCAx
NzksIDE4MCwgMTgxLCAxODIsIDE4MywKLSAgMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDE4
OSwgMTkwLCAxOTEsCi0gIC8qICMxOTIgKi8KLSAgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYs
IDE5NywgMTk4LCAxOTksCi0gIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwg
MjA3LAotICAyMDgsIDIwOSwgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDIxNSwKLSAgMjE2
LCAyMTcsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIzLCAyMjQsCi0gIC8qICMyMjQgKi8KLSAg
MjI0LCAyMjUsIDIyNiwgMjI3LCAyMjgsIDIyOSwgMjMwLCAyMzEsCi0gIDIzMiwgMjMzLCAy
MzQsIDIzNSwgMjM3LCAyMzcsIDIzOCwgMjM5LAotICAyNDAsIDI0MSwgMjQyLCAyNDMsIDI0
NCwgMjQ1LCAyNDYsIDI0NywKLSAgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNTIsIDI1MywgMjU0
LCAzIAorCS8qICMwICovCisJIDAsICAgMSwgICAyLCAgIDMsICAgNCwgICA1LCAgIDYsICAg
NywKKwkgOCwgICA5LCAgMTAsICAxMSwgIDEyLCAgMTMsICAxNCwgIDE1LAorCSAxNiwgIDE3
LCAgMTgsICAxOSwgIDIwLCAgMjEsICAyMiwgIDIzLAorCSAyNCwgIDI1LCAgMjYsICAyNywg
IDI4LCAgMjksICAzMCwgIDMxLAorCS8qICMzMiAqLworCSAzMiwgIDMzLCAgMzQsICAzNSwg
IDM2LCAgMzcsICAzOCwgIDM5LAorCSA0MCwgIDQxLCAgNDIsICA0MywgIDQ0LCAgNDUsICA0
NiwgIDQ3LAorCSA0OCwgIDQ5LCAgNTAsICA1MSwgIDUyLCAgNTMsICA1NCwgIDU1LAorCSA1
NiwgIDU3LCAgNTgsICA1OSwgIDYwLCAgNjEsICA2MiwgIDYzLAorCS8qICM2NCAqLworCSA2
NCwgIDY1LCAgNjYsICA2NywgIDY4LCAgNjksICA3MCwgIDcxLAorCSA3MiwgIDczLCAgNzQs
ICA3NSwgIDc2LCAgNzcsICA3OCwgIDc5LAorCSA4MCwgIDgxLCAgODIsICA4MywgIDg0LCAg
ODUsICA4NiwgIDg3LAorCSA4OCwgIDg5LCAgOTAsICA5MSwgIDQ3LCAgOTMsICA5NCwgIDk1
LAorCS8qICM5NiAqLworCSA5NiwgIDk3LCAgOTgsICA5OSwgMTAwLCAxMDEsIDEwMiwgMTAz
LAorCTEwNCwgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIDExMCwgMTExLAorCTExMiwgMTEz
LCAxMTQsIDExNSwgMTE2LCAxMTcsIDExOCwgMTE5LAorCTEyMCwgMTIxLCAxMjIsIDEyMywg
MTI0LCAxMjUsIDEyNiwgMTI3LAorCS8qICMxMjggKi8KKwkxMjgsIDEyOSwgMTMwLCAxMzEs
IDEzMiwgMTMzLCAxMzQsIDEzNSwKKwkxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAx
NDIsIDE0MywKKwkxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwKKwkx
NTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAxNTgsIDE1OSwKKwkvKiAjMTYwICovCisJ
MTYwLCAzMywgIDIzNiwgMjM3LCAxNjQsICA5MiwgMTI0LCAxNjcsCisJMTY4LCAxNjksIDE3
MCwgMTcxLCAxNzIsIDE3MywgMTc0LCAxNzUsCisJMTc2LCAxNzcsIDE3OCwgMTc5LCAxODAs
IDE4MSwgMTgyLCAxODMsCisJMTg0LCAxODUsIDE4NiwgMTg3LCAxODgsIDE4OSwgMTkwLCAx
OTEsCisJLyogIzE5MiAqLworCTE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDE5OCwg
MTk5LAorCTIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMDUsIDIwNiwgMjA3LAorCTIwOCwg
MjA5LCAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LAorCTIxNiwgMjE3LCAyMTgsIDIx
OSwgMjIwLCAyMjEsIDIyMywgMjI0LAorCS8qICMyMjQgKi8KKwkyMjQsIDIyNSwgMjI2LCAy
MjcsIDIyOCwgMjI5LCAyMzAsIDIzMSwKKwkyMzIsIDIzMywgMjM0LCAyMzUsIDIzNywgMjM3
LCAyMzgsIDIzOSwKKwkyNDAsIDI0MSwgMjQyLCAyNDMsIDI0NCwgMjQ1LCAyNDYsIDI0NywK
KwkyNDgsIDI0OSwgMjUwLCAyNTEsIDI1MiwgMjUzLCAyNTQsIDMgCiB9OwogCiAKIC8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vIHByaXZhdGUgZGF0YSB0eXBlcwotLy8KLXR5cGVk
ZWYgc3RydWN0IHsKLQotICAgIC8vIHRoZSBoYW5kbGUgZm9yIHRoZSBVU0IgRlRESSBsaWJy
YXJ5Ci0gICAgc3RydWN0IGZ0ZGlfY29udGV4dCBmdGRpYzsKLQotICAgIC8vIHRoZSB3aWR0
aCBhbmQgdGhlIGhlaWdodCAoaW4gbnVtYmVyIG9mIGNoYXJhY3RlcnMpIG9mIHRoZSBsaWJy
YXJ5Ci0JaW50IHdpZHRoLCBoZWlnaHQ7Ci0KLQkvLyBUaGUgZnJhbWVidWZmZXIgYW5kIHRo
ZSBmcmFtZWJ1ZmZlciBmb3IgdGhlIGxhc3QgY29udGVudHMgKGluY3IuIHVwZGF0ZSkKLQl1
bnNpZ25lZCBjaGFyICpmcmFtZWJ1ZjsKLQotICAgIC8vIGRpcnR5IGxpbmUgZmxhZ3MKLQl1
bnNpZ25lZCBpbnQgKmxpbmVfZmxhZ3M7Ci0KLQkvLyBjaGlsZCB0aHJlYWQgZmxhZwotCWlu
dCBjaGlsZF9mbGFnOwotCi0JLy8gcGFyZW50IHRocmVhZCBmbGFnCi0JaW50IHBhcmVudF9m
bGFnOwotCi0JLy8gZGlzcGxheSBicmlnaHRuZXNzIDAtMTAwMAotCWludCBicmlnaHRuZXNz
OwotCi0JLy8gY3VzdG9tIGNoYXJhY3RlcnMgbG9hZGVkCi0JaW50CWNjX2ZsYWc7Ci0KLX0g
UHJpdmF0ZURhdGE7Ci0KLQotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogLy8gV3JpdGUg
YSBjb21tYW5kIHRvIHRoZSBkaXNwbGF5LgogLy8KIC8vIEBwYXJhbSBwIHRoZSBwcml2YXRl
IGRhdGEKQEAgLTE4MiwxOCArMTQ4LDE4IEBACiBzdGF0aWMgaW50CiBsaXNfZnRkaV93cml0
ZV9jb21tYW5kKERyaXZlciAqZHJ2dGhpcywgdW5zaWduZWQgY2hhciAqZGF0YSwgaW50IGxl
bmd0aCkKIHsKLSAgICBQcml2YXRlRGF0YSAqcCA9IChQcml2YXRlRGF0YSAqKSBkcnZ0aGlz
LT5wcml2YXRlX2RhdGE7Ci0gICAgaW50IGVycjsKKwlQcml2YXRlRGF0YSAqcCA9IChQcml2
YXRlRGF0YSAqKSBkcnZ0aGlzLT5wcml2YXRlX2RhdGE7CisJaW50IGVycjsKIAotICAgIGVy
ciA9IGZ0ZGlfd3JpdGVfZGF0YSgmcC0+ZnRkaWMsIGRhdGEsIGxlbmd0aCk7Ci0gICAgaWYg
KGVyciA8IDApIHsKLSAgICAgICAgcmVwb3J0KFJQVF9XQVJOSU5HLCAiJXM6IGZ0ZGlfd3Jp
dGVfZGF0YSBmYWlsZWQgd2l0aCAlZCIsIGRydnRoaXMtPm5hbWUsIGVycik7Ci0gICAgICAg
IHJldHVybiAtMTsKLSAgICB9CisJZXJyID0gZnRkaV93cml0ZV9kYXRhKCZwLT5mdGRpYywg
ZGF0YSwgbGVuZ3RoKTsKKwlpZiAoZXJyIDwgMCkgeworCQlyZXBvcnQoUlBUX1dBUk5JTkcs
ICIlczogZnRkaV93cml0ZV9kYXRhIGZhaWxlZCB3aXRoICVkIiwgZHJ2dGhpcy0+bmFtZSwg
ZXJyKTsKKwkJcmV0dXJuIC0xOworCX0KIAotICAgIHRpbWluZ191UGF1c2UoMTYwMDApOwor
CXRpbWluZ191UGF1c2UoMTYwMDApOwogCi0gICAgcmV0dXJuIDA7CisJcmV0dXJuIDA7CiB9
CiAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtMjAyLDMwICsxNjgsMzAgQEAKIHN0
YXRpYyBpbnQKIGxpc19mdGRpX2xpbmVfdG9fZGlzcGxheShEcml2ZXIgKmRydnRoaXMsIGlu
dCBsaW5lLCB1bnNpZ25lZCBjaGFyICpzdHJpbmcsIGludCBsZW4pCiB7Ci0gICAgUHJpdmF0
ZURhdGEgKnAgPSAoUHJpdmF0ZURhdGEgKikgZHJ2dGhpcy0+cHJpdmF0ZV9kYXRhOwotICAg
IHVuc2lnbmVkIGNoYXIgYnVmZmVyWzEyOF07Ci0gICAgaW50IGVycjsKLSAgICBpbnQgaTsK
LQotICAgIGlmIChsZW4gPiBwLT53aWR0aCB8fCBsaW5lIDwgMSB8fCBsaW5lID4gcC0+aGVp
Z2h0KSB7Ci0gICAgICAgIHJldHVybiAtRUlOVkFMOwotICAgIH0KLSAgICBidWZmZXJbMF0g
PSAweEEwICsgbGluZTsKLSAgICBidWZmZXJbMV0gPSAwOwotICAgIGJ1ZmZlclsyXSA9IDB4
QTc7Ci0KLSAgICBmb3IgKGk9MDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAJYnVmZmVyW2krM10g
PSBVUEQxNjMxNF9jaGFybWFwWyh1bnNpZ25lZCBjaGFyKXN0cmluZ1tpXV07Ci0gICAgfQot
ICAgIGJ1ZmZlcltpKzNdID0gMHgwMDsKLQotICAgIGVyciA9IGxpc19mdGRpX3dyaXRlX2Nv
bW1hbmQoZHJ2dGhpcywgYnVmZmVyLCBsZW4rNCk7Ci0gICAgaWYgKGVyciA8IDApIHsKLSAg
ICAgICAgcmVwb3J0KFJQVF9XQVJOSU5HLCAiJXM6IGxpc19mdGRpX3N0cmluZzogIgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJsaXNfZnRkaV93cml0ZV9jb21tYW5kKCkgZmFp
bGVkIiwgZHJ2dGhpcy0+bmFtZSk7Ci0gICAgfQorCVByaXZhdGVEYXRhICpwID0gKFByaXZh
dGVEYXRhICopIGRydnRoaXMtPnByaXZhdGVfZGF0YTsKKwl1bnNpZ25lZCBjaGFyIGJ1ZmZl
clsxMjhdOworCWludCBlcnI7CisJaW50IGk7CisKKwlpZiAobGVuID4gcC0+d2lkdGggfHwg
bGluZSA8IDEgfHwgbGluZSA+IHAtPmhlaWdodCkgeworCQlyZXR1cm4gLUVJTlZBTDsKKwl9
CisJYnVmZmVyWzBdID0gMHhBMCArIGxpbmU7CisJYnVmZmVyWzFdID0gMDsKKwlidWZmZXJb
Ml0gPSAweEE3OworCisJZm9yIChpPTA7IGkgPCBsZW47IGkrKykgeworCQlidWZmZXJbaSsz
XSA9IFVQRDE2MzE0X2NoYXJtYXBbKHVuc2lnbmVkIGNoYXIpc3RyaW5nW2ldXTsKKwl9CisJ
YnVmZmVyW2krM10gPSAweDAwOwogCi0gICAgcmV0dXJuIGVycjsKKwllcnIgPSBsaXNfZnRk
aV93cml0ZV9jb21tYW5kKGRydnRoaXMsIGJ1ZmZlciwgbGVuKzQpOworCWlmIChlcnIgPCAw
KSB7CisJCXJlcG9ydChSUFRfV0FSTklORywgIiVzOiBsaXNfZnRkaV9zdHJpbmc6ICIKKwkJ
CSJsaXNfZnRkaV93cml0ZV9jb21tYW5kKCkgZmFpbGVkIiwgZHJ2dGhpcy0+bmFtZSk7CisJ
fQorCisJcmV0dXJuIGVycjsKIH0KIAogCkBAIC0yNTYsMTAzICsyMjIsMTAzIEBACiBsaXNf
bG9hZF9jdXN0b21fY2hhcnMoRHJpdmVyICpkcnZ0aGlzKQogewogCVByaXZhdGVEYXRhICpw
ID0gKFByaXZhdGVEYXRhICopIGRydnRoaXMtPnByaXZhdGVfZGF0YTsKLSAgICBpbnQgaSwg
Y29sLCByb3csIGVycjsKKwlpbnQgaSwgY29sLCByb3csIGVycjsKIAl1bnNpZ25lZCBjaGFy
IGJ1ZmZlcls2NV07CiAJY2hhciBjdXN0b21fY2hhcnNbOF1bQ0VMTEhFSUdIVCpDRUxMSEVJ
R0hUXSA9IHsKLSAgICAgICB7IDAsIDAsIDAsIDAsIDAsCi0JCSAwLCAwLCAwLCAwLCAwLAot
CQkgMCwgMCwgMCwgMCwgMCwKLQkJIDAsIDAsIDAsIDAsIDAsCi0JCSAwLCAwLCAwLCAwLCAw
LAotCQkgMCwgMCwgMCwgMCwgMCwKLQkJIDAsIDAsIDAsIDAsIDAsCi0JCSAwLCAwLCAwLCAw
LCAwIH0sCi0gICAgICAgeyAxLCAwLCAwLCAwLCAwLAkJCS8qIDEtNSBjaGFyYWN0ZXJzIHVz
ZWQgYnkgaGJhcigpICovCi0JCSAxLCAwLCAwLCAwLCAwLAotCQkgMSwgMCwgMCwgMCwgMCwK
LQkJIDEsIDAsIDAsIDAsIDAsCi0JCSAxLCAwLCAwLCAwLCAwLAotCQkgMSwgMCwgMCwgMCwg
MCwKLQkJIDEsIDAsIDAsIDAsIDAsCi0JCSAxLCAwLCAwLCAwLCAwIH0sCi0gICAgICAgeyAx
LCAxLCAwLCAwLCAwLAkJCQotCQkgMSwgMSwgMCwgMCwgMCwKLQkJIDEsIDEsIDAsIDAsIDAs
Ci0JCSAxLCAxLCAwLCAwLCAwLAotCQkgMSwgMSwgMCwgMCwgMCwKLQkJIDEsIDEsIDAsIDAs
IDAsCi0JCSAxLCAxLCAwLCAwLCAwLAotCQkgMSwgMSwgMCwgMCwgMCB9LAotICAgICAgIHsg
MSwgMSwgMSwgMCwgMCwJCQkKLQkJIDEsIDEsIDEsIDAsIDAsCi0JCSAxLCAxLCAxLCAwLCAw
LAotCQkgMSwgMSwgMSwgMCwgMCwKLQkJIDEsIDEsIDEsIDAsIDAsCi0JCSAxLCAxLCAxLCAw
LCAwLAotCQkgMSwgMSwgMSwgMCwgMCwKLQkJIDEsIDEsIDEsIDAsIDAgfSwKLSAgICAgICB7
IDEsIDEsIDEsIDEsIDAsCQkJCi0JCSAxLCAxLCAxLCAxLCAwLAotCQkgMSwgMSwgMSwgMSwg
MCwKLQkJIDEsIDEsIDEsIDEsIDAsCi0JCSAxLCAxLCAxLCAxLCAwLAotCQkgMSwgMSwgMSwg
MSwgMCwKLQkJIDEsIDEsIDEsIDEsIDAsCi0JCSAxLCAxLCAxLCAxLCAwIH0sCi0gICAgICAg
eyAxLCAxLCAxLCAxLCAxLAkJCQotCQkgMSwgMSwgMSwgMSwgMSwKLQkJIDEsIDEsIDEsIDEs
IDEsCi0JCSAxLCAxLCAxLCAxLCAxLAotCQkgMSwgMSwgMSwgMSwgMSwKLQkJIDEsIDEsIDEs
IDEsIDEsCi0JCSAxLCAxLCAxLCAxLCAxLAotCQkgMSwgMSwgMSwgMSwgMSB9LAotICAgICAg
IHsgMCwgMCwgMCwgMCwgMCwKLQkJIDAsIDAsIDAsIDAsIDAsCi0JCSAxLCAxLCAxLCAxLCAx
LAotCQkgMSwgMCwgMCwgMCwgMSwKLQkJIDEsIDAsIDAsIDAsIDEsCi0JCSAxLCAwLCAwLCAw
LCAxLAotCQkgMSwgMSwgMSwgMSwgMSwKLQkJIDAsIDAsIDAsIDAsIDAgfSwKLSAgICAgICB7
IDAsIDAsIDAsIDAsIDAsCi0JCSAwLCAwLCAwLCAwLCAwLAotCQkgMSwgMSwgMSwgMSwgMSwK
LQkJIDEsIDAsIDEsIDAsIDEsCi0JCSAxLCAxLCAwLCAxLCAxLAotCQkgMSwgMCwgMSwgMCwg
MSwKLQkJIDEsIDEsIDEsIDEsIDEsCi0JCSAwLCAwLCAwLCAwLCAwIH19OworCXsgMCwgMCwg
MCwgMCwgMCwKKwkgIDAsIDAsIDAsIDAsIDAsCisJICAwLCAwLCAwLCAwLCAwLAorCSAgMCwg
MCwgMCwgMCwgMCwKKwkgIDAsIDAsIDAsIDAsIDAsCisJICAwLCAwLCAwLCAwLCAwLAorCSAg
MCwgMCwgMCwgMCwgMCwKKwkgIDAsIDAsIDAsIDAsIDAgfSwKKwl7IDEsIDAsIDAsIDAsIDAs
CQkJLyogMS01IGNoYXJhY3RlcnMgdXNlZCBieSBoYmFyKCkgKi8KKwkgIDEsIDAsIDAsIDAs
IDAsCisJICAxLCAwLCAwLCAwLCAwLAorCSAgMSwgMCwgMCwgMCwgMCwKKwkgIDEsIDAsIDAs
IDAsIDAsCisJICAxLCAwLCAwLCAwLCAwLAorCSAgMSwgMCwgMCwgMCwgMCwKKwkgIDEsIDAs
IDAsIDAsIDAgfSwKKwl7IDEsIDEsIDAsIDAsIDAsCQkJCisJICAxLCAxLCAwLCAwLCAwLAor
CSAgMSwgMSwgMCwgMCwgMCwKKwkgIDEsIDEsIDAsIDAsIDAsCisJICAxLCAxLCAwLCAwLCAw
LAorCSAgMSwgMSwgMCwgMCwgMCwKKwkgIDEsIDEsIDAsIDAsIDAsCisJICAxLCAxLCAwLCAw
LCAwIH0sCisJeyAxLCAxLCAxLCAwLCAwLAkJCQorCSAgMSwgMSwgMSwgMCwgMCwKKwkgIDEs
IDEsIDEsIDAsIDAsCisJICAxLCAxLCAxLCAwLCAwLAorCSAgMSwgMSwgMSwgMCwgMCwKKwkg
IDEsIDEsIDEsIDAsIDAsCisJICAxLCAxLCAxLCAwLCAwLAorCSAgMSwgMSwgMSwgMCwgMCB9
LAorCXsgMSwgMSwgMSwgMSwgMCwJCQkKKwkgIDEsIDEsIDEsIDEsIDAsCisJICAxLCAxLCAx
LCAxLCAwLAorCSAgMSwgMSwgMSwgMSwgMCwKKwkgIDEsIDEsIDEsIDEsIDAsCisJICAxLCAx
LCAxLCAxLCAwLAorCSAgMSwgMSwgMSwgMSwgMCwKKwkgIDEsIDEsIDEsIDEsIDAgfSwKKwl7
IDEsIDEsIDEsIDEsIDEsCQkJCisJICAxLCAxLCAxLCAxLCAxLAorCSAgMSwgMSwgMSwgMSwg
MSwKKwkgIDEsIDEsIDEsIDEsIDEsCisJICAxLCAxLCAxLCAxLCAxLAorCSAgMSwgMSwgMSwg
MSwgMSwKKwkgIDEsIDEsIDEsIDEsIDEsCisJICAxLCAxLCAxLCAxLCAxIH0sCisJeyAwLCAw
LCAwLCAwLCAwLAorCSAgMCwgMCwgMCwgMCwgMCwKKwkgIDEsIDEsIDEsIDEsIDEsCisJICAx
LCAwLCAwLCAwLCAxLAorCSAgMSwgMCwgMCwgMCwgMSwKKwkgIDEsIDAsIDAsIDAsIDEsCisJ
ICAxLCAxLCAxLCAxLCAxLAorCSAgMCwgMCwgMCwgMCwgMCB9LAorCXsgMCwgMCwgMCwgMCwg
MCwKKwkgIDAsIDAsIDAsIDAsIDAsCisJICAxLCAxLCAxLCAxLCAxLAorCSAgMSwgMCwgMSwg
MCwgMSwKKwkgIDEsIDEsIDAsIDEsIDEsCisJICAxLCAwLCAxLCAwLCAxLAorCSAgMSwgMSwg
MSwgMSwgMSwKKwkgIDAsIDAsIDAsIDAsIDAgfX07CiAKIAlidWZmZXJbMF0gPSAweEFEOwkJ
Ly8gY29tbWFuZCB0byB3cml0ZSBDR1JBTSBhdCAwCiAKLSAgICBmb3IgKGkgPSAwOyBpIDwg
ODsgaSsrKQotICAgIHsKKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQorCXsKIAotICAgICAg
ICAvKiBidWlsZCB0aGUgYnVmZmVyICovCi0gICAgICAgIGZvciAocm93ID0gMDsgcm93IDwg
Q0VMTEhFSUdIVDsgcm93KyspIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgdmFsdWUg
PSAwOworCQkvKiBidWlsZCB0aGUgYnVmZmVyICovCisJCWZvciAocm93ID0gMDsgcm93IDwg
Q0VMTEhFSUdIVDsgcm93KyspIHsKKwkJCXVuc2lnbmVkIGNoYXIgdmFsdWUgPSAwOwogCi0g
ICAgICAgICAgICBmb3IgKGNvbCA9IDA7IGNvbCA8IENFTExXSURUSDsgY29sKyspIHsKKwkJ
CWZvciAoY29sID0gMDsgY29sIDwgQ0VMTFdJRFRIOyBjb2wrKykgewogCQkJCXZhbHVlIDw8
PSAxOwogCQkJCXZhbHVlIHw9IChjdXN0b21fY2hhcnNbaV1bKHJvdyAqIENFTExXSURUSCkg
KyBjb2xdID4gMCkgPyAxIDogMDsKLSAgICAgICAgICAgIH0KKwkJCX0KIAkJCWJ1ZmZlclso
aSo4KStyb3crMV0gPSB2YWx1ZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlcnIgPSBsaXNf
ZnRkaV93cml0ZV9jb21tYW5kKGRydnRoaXMsIGJ1ZmZlciwgNjUpOwotICAgIGlmIChlcnIg
PCAwKSB7Ci0gICAgICAgIHJlcG9ydChSUFRfV0FSTklORywgIiVzOiBsaXNfbG9hZF9jdXN0
b21fY2hhcnMoKTogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXNfZnRkaV93
cml0ZV9jb21tYW5kKCkgZmFpbGVkIiwgZHJ2dGhpcy0+bmFtZSk7Ci0gICAgfQorCQl9CisJ
fQorCWVyciA9IGxpc19mdGRpX3dyaXRlX2NvbW1hbmQoZHJ2dGhpcywgYnVmZmVyLCA2NSk7
CisJaWYgKGVyciA8IDApIHsKKwkJcmVwb3J0KFJQVF9XQVJOSU5HLCAiJXM6IGxpc19sb2Fk
X2N1c3RvbV9jaGFycygpOiAiCisJCQkibGlzX2Z0ZGlfd3JpdGVfY29tbWFuZCgpIGZhaWxl
ZCIsIGRydnRoaXMtPm5hbWUpOworCX0KIAllbHNlCiAJCXAtPmNjX2ZsYWcgPSAxOwogCi0g
ICAgcmV0dXJuIGVycjsKKwlyZXR1cm4gZXJyOwogfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8KLS8vIFNlcGVyYXRlIHRocmVhZCB0byBrZWVwIGEgcmVhZCB1cCBvbiB0aGUgVVNC
IGRldmljZSBhdCBhbGwgdGltZXMKKy8vIFNlcGFyYXRlIHRocmVhZCB0byBrZWVwIGEgcmVh
ZCB1cCBvbiB0aGUgVVNCIGRldmljZSBhdCBhbGwgdGltZXMKIGludAogbGlzX3JlYWRfdGhy
ZWFkKHZvaWQgKmFyZykKIHsKQEAgLTM4OCw3ICszNTQsNyBAQAogCVByaXZhdGVEYXRhICpw
ID0gKFByaXZhdGVEYXRhICopIGRydnRoaXMtPnByaXZhdGVfZGF0YTsKIAkKIAlpZiAocHJv
bWlsbGUgPCAwIHx8IHByb21pbGxlID4gMTAwMCkgCi0gICAgICAgIHJldHVybiAtRUlOVkFM
OworCQlyZXR1cm4gLUVJTlZBTDsKIAogCWJ1ZmZlclswXSA9IDB4QTU7CiAJaWYgKCBwcm9t
aWxsZSA8IDI1MSApCkBAIC00MDAsMTEgKzM2NiwxMSBAQAogCWVsc2UKIAkJYnVmZmVyWzFd
ID0gMHgwOwkJLy8gMTAwJQogCi0gICAgZXJyID0gZnRkaV93cml0ZV9kYXRhKCZwLT5mdGRp
YywgYnVmZmVyLCAyKTsKLSAgICBpZiAoZXJyIDwgMCkgewotICAgICAgICByZXBvcnQoUlBU
X1dBUk5JTkcsICIlczogbGlzX3NldF9icmlnaHRuZXNzKCk6IGZ0ZGlfd3JpdGVfZGF0YSBm
YWlsZWQgd2l0aCAlZCIsIGRydnRoaXMtPm5hbWUsIGVycik7Ci0gICAgICAgIHJldHVybiBl
cnI7Ci0gICAgfQorCWVyciA9IGZ0ZGlfd3JpdGVfZGF0YSgmcC0+ZnRkaWMsIGJ1ZmZlciwg
Mik7CisJaWYgKGVyciA8IDApIHsKKwkJcmVwb3J0KFJQVF9XQVJOSU5HLCAiJXM6IGxpc19z
ZXRfYnJpZ2h0bmVzcygpOiBmdGRpX3dyaXRlX2RhdGEgZmFpbGVkIHdpdGggJWQiLCBkcnZ0
aGlzLT5uYW1lLCBlcnIpOworCQlyZXR1cm4gZXJyOworCX0KIAllbHNlCiAJCXAtPmJyaWdo
dG5lc3MgPSBwcm9taWxsZTsKIAlyZXR1cm4gMDsKQEAgLTQ0OCw4ICs0MTQsOCBAQAogCS8v
IEdldCBhbmQgcGFyc2Ugc2l6ZQogCXMgPSBkcnZ0aGlzLT5jb25maWdfZ2V0X3N0cmluZygg
ZHJ2dGhpcy0+bmFtZSwgInNpemUiLCAwLCAiMjB4MiIpOwogCWlmICgoc3NjYW5mKHMsICIl
ZHglZCIsICYocC0+d2lkdGgpLCAmKHAtPmhlaWdodCkpICE9IDIpCi0JICAgIHx8IChwLT53
aWR0aCA8PSAwKSB8fCAocC0+d2lkdGggPiBMQ0RfTUFYX1dJRFRIKQotCSAgICB8fCAocC0+
aGVpZ2h0IDw9IDApIHx8IChwLT5oZWlnaHQgPiBMQ0RfTUFYX0hFSUdIVCkpIHsKKwkJfHwg
KHAtPndpZHRoIDw9IDApIHx8IChwLT53aWR0aCA+IExDRF9NQVhfV0lEVEgpCisJCXx8IChw
LT5oZWlnaHQgPD0gMCkgfHwgKHAtPmhlaWdodCA+IExDRF9NQVhfSEVJR0hUKSkgewogCQly
ZXBvcnQoUlBUX0VSUiwgIiVzOiBjYW5ub3QgcmVhZCBTaXplICVzIiwgZHJ2dGhpcy0+bmFt
ZSwgcyk7CiAJCXJldHVybiAtMTsKIAl9CkBAIC00NzEsNiArNDM3LDkgQEAKIAl9CiAJcC0+
YnJpZ2h0bmVzcyA9IGNvdW50OwogCisJcC0+VmVuZG9ySUQgPSBkcnZ0aGlzLT5jb25maWdf
Z2V0X2ludChkcnZ0aGlzLT5uYW1lLCAiVmVuZG9ySUQiLCAwLCBESVNQTEFZX1ZFTkRPUl9J
RCk7CisJcC0+UHJvZHVjdElEID0gZHJ2dGhpcy0+Y29uZmlnX2dldF9pbnQoZHJ2dGhpcy0+
bmFtZSwgIlByb2R1Y3RJRCIsIDAsIERJU1BMQVlfUFJPRFVDVF9JRCk7CisKIAkvKiBFbmQg
b2YgY29uZmlnIGZpbGUgcGFyc2luZyAqLwogCiAKQEAgLTQ5Miw5ICs0NjEsMTIgQEAKIC8v
CSgmcC0+ZnRkaWMpLT51c2JfcmVhZF90aW1lb3V0ID0gMjA7CiAKIAkvLyBvcGVuIHRoZSBk
ZXZpY2UKLQllcnIgPSBmdGRpX3VzYl9vcGVuKCZwLT5mdGRpYywgRElTUExBWV9WRU5ET1Jf
SUQsIERJU1BMQVlfUFJPRFVDVF9JRCk7CisJZXJyID0gZnRkaV91c2Jfb3BlbigmcC0+ZnRk
aWMsIHAtPlZlbmRvcklELCBwLT5Qcm9kdWN0SUQpOwogCWlmIChlcnIgPCAwKSB7Ci0JCXJl
cG9ydChSUFRfRVJSLCAiJXM6IGNhbm5vdCBvcGVuIFVTQiBkZXZpY2UiLCBkcnZ0aGlzLT5u
YW1lKTsKKwkJcmVwb3J0KFJQVF9FUlIsICIlczogY2Fubm90IG9wZW4gVVNCIGRldmljZSAl
eDoleCIsIAorCQkJZHJ2dGhpcy0+bmFtZQorCQkJcC0+VmVuZG9ySUQsCisJCQlwLT5Qcm9k
dWN0SUQpOwogCQlnb3RvIGVycl9mcmFtZWJ1ZjsKIAl9CiAKQEAgLTEwNDIsMTEgKzEwMTQs
MTEgQEAKIAkvLyBkb24ndCBrbm93IHdoYXQgdGhpcyBkb2VzIGV4YWN0bHkKIAlidWZmZXJb
MF0gPSAweEE0OwogCWJ1ZmZlclsxXSA9IDB4N2Q7Ci0gICAgZXJyID0gZnRkaV93cml0ZV9k
YXRhKCZwLT5mdGRpYywgYnVmZmVyLCAyKTsKLSAgICBpZiAoZXJyIDwgMCkgewotICAgICAg
ICByZXBvcnQoUlBUX1dBUk5JTkcsICIlczogZnRkaV93cml0ZV9kYXRhIGZhaWxlZCB3aXRo
ICVkIiwgZHJ2dGhpcy0+bmFtZSwgZXJyKTsKLSAgICAgICAgZ290byBlcnJfZnRkaTsKLSAg
ICB9CisJZXJyID0gZnRkaV93cml0ZV9kYXRhKCZwLT5mdGRpYywgYnVmZmVyLCAyKTsKKwlp
ZiAoZXJyIDwgMCkgeworCQlyZXBvcnQoUlBUX1dBUk5JTkcsICIlczogZnRkaV93cml0ZV9k
YXRhIGZhaWxlZCB3aXRoICVkIiwgZHJ2dGhpcy0+bmFtZSwgZXJyKTsKKwkJZ290byBlcnJf
ZnRkaTsKKwl9CiAKIAl0aW1pbmdfdVBhdXNlKDMqMTYwMDApOwogCkBAIC0xMDU0LDcgKzEw
MjYsNyBAQAogCWJ1ZmZlclsxXSA9IDB4QUE7CiAJZm9yKGNvdW50ID0gMDsgY291bnQgPCAx
MDsgY291bnQrKykgewogCQllcnIgPSBmdGRpX3dyaXRlX2RhdGEoJnAtPmZ0ZGljLCBidWZm
ZXIsIDIpOwotCSAgICBpZiAoZXJyIDwgMCkgeworCQlpZiAoZXJyIDwgMCkgewogCQkJcmVw
b3J0KFJQVF9XQVJOSU5HLCAiJXM6IGZ0ZGlfd3JpdGVfZGF0YSBmYWlsZWQgd2l0aCAlZCIs
IGRydnRoaXMtPm5hbWUsIGVycik7CiAJCQlnb3RvIGVycl9mdGRpOwogCQl9CkBAIC0xMTgy
LDEyICsxMTU0LDEyIEBACiAvLwl0aW1pbmdfdVBhdXNlKDIqMTYwMDApOwogCiAJLy8gbm90
IHN1cmUgYWJvdXQgdGhpcwotICAgIGJ1ZmZlclswXSA9IDB4QTA7Ci0gICAgZXJyID0gbGlz
X2Z0ZGlfd3JpdGVfY29tbWFuZChkcnZ0aGlzLCBidWZmZXIsIDEpOwotICAgIGlmIChlcnIg
PCAwKSB7Ci0gICAgICAgIHJlcG9ydChSUFRfV0FSTklORywgIiVzOiBsaXNfZnRkaV9jbGVh
cjogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaXNfZnRkaV93cml0ZV9jb21t
YW5kIGZhaWxlZCIsIGRydnRoaXMtPm5hbWUpOwotICAgIH0KKwlidWZmZXJbMF0gPSAweEEw
OworCWVyciA9IGxpc19mdGRpX3dyaXRlX2NvbW1hbmQoZHJ2dGhpcywgYnVmZmVyLCAxKTsK
KwlpZiAoZXJyIDwgMCkgeworCQlyZXBvcnQoUlBUX1dBUk5JTkcsICIlczogbGlzX2Z0ZGlf
Y2xlYXI6ICIKKwkJCQkJCQkibGlzX2Z0ZGlfd3JpdGVfY29tbWFuZCBmYWlsZWQiLCBkcnZ0
aGlzLT5uYW1lKTsKKwl9CiAKIAl0aW1pbmdfdVBhdXNlKDEwKjE2MDAwKTsKIApAQCAtMTIz
NSw3ICsxMjA3LDcgQEAKIAkJZnRkaV9kZWluaXQoJnAtPmZ0ZGljKTsKIAogCQlpZiAocC0+
ZnJhbWVidWYgIT0gTlVMTCkKLSAgICAgICAgCQlmcmVlKHAtPmZyYW1lYnVmKTsKKwkJCQlm
cmVlKHAtPmZyYW1lYnVmKTsKIAogCQlmcmVlKHApOwogCX0KQEAgLTEyNzcsNiArMTI0OSw3
IEBACiAJCW1lbXNldChwLT5mcmFtZWJ1ZiArIChsaW5lICogcC0+d2lkdGgpLCAnICcsIHAt
PndpZHRoKTsKIAkJcC0+bGluZV9mbGFnc1tsaW5lXSA9IDE7CiAJfQorCXAtPmNjbW9kZSA9
IHN0YW5kYXJkOwogfQogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCkBAIC0xNDQ4LDYg
KzE0MjEsOSBAQAogfQogCiAKKworCisjaWYgMAogdm9pZAogbGlzX3Rlc3QoRHJpdmVyICpk
cnZ0aGlzKQogewpAQCAtMTQ2MywzICsxNDM5LDQgQEAKIAkJbGlzX2ZsdXNoKGRydnRoaXMp
OwogCX0KIH0KKyNlbmRpZgpkaWZmIC1ydU4gbGNkcHJvYy1DVlMtY3VycmVudC0yMDA3MDUy
MS9zZXJ2ZXIvZHJpdmVycy9saXMuaCBsY2Rwcm9jLUNWUy1jdXJyZW50LTIwMDcwNTIxLWxp
cy1yMS9zZXJ2ZXIvZHJpdmVycy9saXMuaAotLS0gbGNkcHJvYy1DVlMtY3VycmVudC0yMDA3
MDUyMS9zZXJ2ZXIvZHJpdmVycy9saXMuaAkyMDA3LTA1LTE3IDA3OjA4OjE2LjAwMDAwMDAw
MCAtMDUwMAorKysgbGNkcHJvYy1DVlMtY3VycmVudC0yMDA3MDUyMS1saXMtcjEvc2VydmVy
L2RyaXZlcnMvbGlzLmgJMjAwNy0wNS0yMyAxOTo0ODoyMy4wMDAwMDAwMDAgLTA1MDAKQEAg
LTEsMjEgKzEsMjEgQEAKIAogLyoKLSAgICBCYXNlZCBvbiB0aGUgbGlzIGRyaXZlciBDb3B5
cmlnaHQgKEMpIDIwMDYsIEJlcm5oYXJkIFdhbGxlCi0gICAgQ29weXJpZ2h0IChjKSAyMDA3
LCBEYXJ5bCBGb25zZWNhLUhvbHQgPHd5YXR0QHByYWlyaWV0dXJ0bGUuY2E+CisJQmFzZWQg
b24gdGhlIGxpcyBkcml2ZXIgQ29weXJpZ2h0IChDKSAyMDA2LCBCZXJuaGFyZCBXYWxsZQor
CUNvcHlyaWdodCAoYykgMjAwNywgRGFyeWwgRm9uc2VjYS1Ib2x0IDx3eWF0dEBwcmFpcmll
dHVydGxlLmNhPgogCi0gICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSAgICBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQot
ICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yCi0gICAgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIHBy
b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSAgICBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAgICBhbG9u
ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQotICAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSAqLworCVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisJaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkKKwl0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvcgorCWFueSBsYXRlciB2ZXJzaW9uLgorCisJVGhpcyBw
cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisJYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKwlNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisJR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKworCVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisJYWxvbmcgd2l0aCB0aGlzIHBy
b2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKwlGb3VuZGF0aW9u
LCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAy
MTEwLTEzMDEgKi8KICNpZm5kZWYgTElTX0gKICNkZWZpbmUgTElTX0gKIApAQCAtMjcsNiAr
MjcsNTUgQEAKICMgZGVmaW5lIGZhbHNlIDAKICNlbmRpZgogCisvLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vCisvLyBjb25zdGFudHMKKy8vCisjZGVmaW5lIERJU1BMQVlfVkVORE9SX0lE
CTB4MDQwMworI2RlZmluZSBESVNQTEFZX1BST0RVQ1RfSUQJMHg2MDAxCisKKyNkZWZpbmUg
Q0VMTFdJRFRIICA1CisjZGVmaW5lIENFTExIRUlHSFQgOAorCisjZGVmaW5lIERFRkFVTFRf
QlJJR0hUTkVTUyAxMDAwCisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gcHJp
dmF0ZSBkYXRhIHR5cGVzCisvLwordHlwZWRlZiBzdHJ1Y3QgeworCisJLy8gdGhlIGhhbmRs
ZSBmb3IgdGhlIFVTQiBGVERJIGxpYnJhcnkKKwlzdHJ1Y3QgZnRkaV9jb250ZXh0IGZ0ZGlj
OworCisJLy8gdGhlIHdpZHRoIGFuZCB0aGUgaGVpZ2h0IChpbiBudW1iZXIgb2YgY2hhcmFj
dGVycykgb2YgdGhlIGxpYnJhcnkKKwlpbnQgd2lkdGgsIGhlaWdodDsKKworCS8vIFRoZSBm
cmFtZWJ1ZmZlciBhbmQgdGhlIGZyYW1lYnVmZmVyIGZvciB0aGUgbGFzdCBjb250ZW50cyAo
aW5jci4gdXBkYXRlKQorCXVuc2lnbmVkIGNoYXIgKmZyYW1lYnVmOworCisJLy8gZGlydHkg
bGluZSBmbGFncworCXVuc2lnbmVkIGludCAqbGluZV9mbGFnczsKKworCS8vIGNoaWxkIHRo
cmVhZCBmbGFnCisJaW50IGNoaWxkX2ZsYWc7CisKKwkvLyBwYXJlbnQgdGhyZWFkIGZsYWcK
KwlpbnQgcGFyZW50X2ZsYWc7CisKKwkvLyBkaXNwbGF5IGJyaWdodG5lc3MgMC0xMDAwCisJ
aW50IGJyaWdodG5lc3M7CisKKwkvLyBjdXN0b20gY2hhcmFjdGVycyBsb2FkZWQ/CisJaW50
IGNjX2ZsYWc7CisKKwkvLyBVU0IgVmVuZG9yIElECisJaW50IFZlbmRvcklEOworCisJLy8g
VVNCIFByb2R1Y3QgSUQKKwlpbnQgUHJvZHVjdElEOworCit9IFByaXZhdGVEYXRhOworCiBN
T0RVTEVfRVhQT1JUIGludCAgbGlzX2luaXQoRHJpdmVyICpkcnZ0aGlzKTsKIE1PRFVMRV9F
WFBPUlQgdm9pZCBsaXNfY2xvc2UgKERyaXZlciAqZHJ2dGhpcyk7CiBNT0RVTEVfRVhQT1JU
IGludCAgbGlzX3dpZHRoIChEcml2ZXIgKmRydnRoaXMpOwpAQCAtMzQsMTEgKzgzLDkgQEAK
IE1PRFVMRV9FWFBPUlQgdm9pZCBsaXNfY2xlYXIgKERyaXZlciAqIGRydnRoaXMpOwogTU9E
VUxFX0VYUE9SVCB2b2lkIGxpc19zdHJpbmcgKERyaXZlciAqIGRydnRoaXMsIGludCB4LCBp
bnQgeSwgY2hhciBzdHJpbmdbXSk7CiBNT0RVTEVfRVhQT1JUIHZvaWQgbGlzX2NociAoRHJp
dmVyICogZHJ2dGhpcywgaW50IHgsIGludCB5LCBjaGFyIGMpOwotTU9EVUxFX0VYUE9SVCB2
b2lkIGxpc19zZXRfY2hhciAoRHJpdmVyICogZHJ2dGhpcywgaW50IG4sIGNoYXIgKmRhdCk7
CiBNT0RVTEVfRVhQT1JUIHZvaWQgbGlzX2ZsdXNoIChEcml2ZXIgKiBkcnZ0aGlzKTsKIE1P
RFVMRV9FWFBPUlQgdm9pZCBsaXNfdmJhciAoRHJpdmVyICogZHJ2dGhpcywgaW50IHgsIGlu
dCB5LCBpbnQgbGVuLCBpbnQgcHJvbWlsbGUsIGludCBvcHRpb25zKTsKIE1PRFVMRV9FWFBP
UlQgdm9pZCBsaXNfaGJhciAoRHJpdmVyICogZHJ2dGhpcywgaW50IHgsIGludCB5LCBpbnQg
bGVuLCBpbnQgcHJvbWlsbGUsIGludCBvcHRpb25zKTsKLU1PRFVMRV9FWFBPUlQgdm9pZCBs
aXNfbnVtIChEcml2ZXIgKiBkcnZ0aGlzLCBpbnQgeCwgaW50IG51bSk7CiBNT0RVTEVfRVhQ
T1JUIGludCAgbGlzX2ljb24oRHJpdmVyICogZHJ2dGhpcywgaW50IHgsIGludCB5LCBpbnQg
aWNvbik7CiAKICNlbmRpZiAvKiBMSVNfSCAqLwo=
--------------070803070901000808020407--