Mail Archives: cygwin/2002/08/30/11:40:27
----------part3d6f91dac118b
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
This was destined for the cygwin-patches AT cygwin DOT com, but I can't post to
that list because I'm not subscribed from this address (and the webmail
interface I'm using doesn't allow you to change the From: header address).
Please treat as if posted to cygwin-patches. Thanks.
> > This small patch makes tty_list::allocate_tty more robust. On Windows
2000
> > and Windows XP it calls the new API function GetConsoleWindow. On other
> > platforms I've added a loop round FindWindow for cases where the system
is
> > heavily loaded and the console title doesn't change in time. (I've
> submitted
> > a patch for the latter change before).
> >
> > Chris
> >
> > ---
> >
> > 2002-08-30 Christopher January <chris AT atomice DOT net>
> >
> > * tty.cc (tty_list::allocate_tty): Use GetConsoleWindow on Windows
> > 2000 / XP. Call FindWindow in a loop.
> > * wincap.cc: Set flag has_get_console_window appropriately.
> > * wincap.h: Add flag has_get_console_window.
> >
> > 2002-08-30 Christopher January <chris AT atomice DOT net>
> > * wincon.h: Add declaration for GetConsoleWindow.
> >
> > ---
> >
> > Index: cygwin/tty.cc
> > ===================================================================
> > RCS file: /cvs/src/src/winsup/cygwin/tty.cc,v
> > retrieving revision 1.40
> > diff -u -p -r1.40 tty.cc
> > --- cygwin/tty.cc 2 Aug 2002 02:10:24 -0000 1.40
> > +++ cygwin/tty.cc 30 Aug 2002 15:26:21 -0000
> > @@ -196,6 +196,8 @@ tty_list::allocate_tty (int with_console
> >
> > if (!with_console)
> > console = NULL;
> > + else if (wincap.has_get_console_window())
> > + console = GetConsoleWindow ();
> > else
> > {
> > char *oldtitle = new char [TITLESIZE];
> > @@ -218,8 +220,11 @@ tty_list::allocate_tty (int with_console
> >
> > __small_sprintf (buf, "cygwin.find.console.%d", myself->pid);
> > SetConsoleTitle (buf);
> > - Sleep (40);
> > - console = FindWindow (NULL, buf);
> > + for (int times = 0; times < 25 && console == NULL; times++)
> > + {
> > + Sleep (40);
> > + console = FindWindow (NULL, buf);
> > + }
> > SetConsoleTitle (oldtitle);
> > Sleep (40);
> > ReleaseMutex (title_mutex);
> > Index: cygwin/wincap.cc
> > ===================================================================
> > RCS file: /cvs/src/src/winsup/cygwin/wincap.cc,v
> > retrieving revision 1.16
> > diff -u -p -r1.16 wincap.cc
> > --- cygwin/wincap.cc 24 Jul 2002 11:01:37 -0000 1.16
> > +++ cygwin/wincap.cc 30 Aug 2002 15:26:23 -0000
> > @@ -47,6 +47,7 @@ static NO_COPY wincaps wincap_unknown =
> > has_64bit_file_access:false,
> > has_process_io_counters:false,
> > supports_reading_modem_output_lines:false,
> > + has_get_console_window:false,
> > };
> >
> > static NO_COPY wincaps wincap_95 = {
> > @@ -85,6 +86,7 @@ static NO_COPY wincaps wincap_95 = {
> > has_64bit_file_access:false,
> > has_process_io_counters:false,
> > supports_reading_modem_output_lines:false,
> > + has_get_console_window:false,
> > };
> >
> > static NO_COPY wincaps wincap_95osr2 = {
> > @@ -123,6 +125,7 @@ static NO_COPY wincaps wincap_95osr2 = {
> > has_64bit_file_access:false,
> > has_process_io_counters:false,
> > supports_reading_modem_output_lines:false,
> > + has_get_console_window:false,
> > };
> >
> > static NO_COPY wincaps wincap_98 = {
> > @@ -161,6 +164,7 @@ static NO_COPY wincaps wincap_98 = {
> > has_64bit_file_access:false,
> > has_process_io_counters:false,
> > supports_reading_modem_output_lines:false,
> > + has_get_console_window:false,
> > };
> >
> > static NO_COPY wincaps wincap_98se = {
> > @@ -199,6 +203,7 @@ static NO_COPY wincaps wincap_98se = {
> > has_64bit_file_access:false,
> > has_process_io_counters:false,
> > supports_reading_modem_output_lines:false,
> > + has_get_console_window:false,
> > };
> >
> > static NO_COPY wincaps wincap_me = {
> > @@ -237,6 +242,7 @@ static NO_COPY wincaps wincap_me = {
> > has_64bit_file_access:false,
> > has_process_io_counters:false,
> > supports_reading_modem_output_lines:false,
> > + has_get_console_window:false,
> > };
> >
> > static NO_COPY wincaps wincap_nt3 = {
> > @@ -275,6 +281,7 @@ static NO_COPY wincaps wincap_nt3 = {
> > has_64bit_file_access:true,
> > has_process_io_counters:false,
> > supports_reading_modem_output_lines:true,
> > + has_get_console_window:false,
> > };
> >
> > static NO_COPY wincaps wincap_nt4 = {
> > @@ -313,6 +320,7 @@ static NO_COPY wincaps wincap_nt4 = {
> > has_64bit_file_access:true,
> > has_process_io_counters:false,
> > supports_reading_modem_output_lines:true,
> > + has_get_console_window:false,
> > };
> >
> > static NO_COPY wincaps wincap_nt4sp4 = {
> > @@ -351,6 +359,7 @@ static NO_COPY wincaps wincap_nt4sp4 = {
> > has_64bit_file_access:true,
> > has_process_io_counters:false,
> > supports_reading_modem_output_lines:true,
> > + has_get_console_window:false,
> > };
> >
> > static NO_COPY wincaps wincap_2000 = {
> > @@ -389,6 +398,7 @@ static NO_COPY wincaps wincap_2000 = {
> > has_64bit_file_access:true,
> > has_process_io_counters:true,
> > supports_reading_modem_output_lines:true,
> > + has_get_console_window:true,
> > };
> >
> > static NO_COPY wincaps wincap_xp = {
> > @@ -427,6 +437,7 @@ static NO_COPY wincaps wincap_xp = {
> > has_64bit_file_access:true,
> > has_process_io_counters:true,
> > supports_reading_modem_output_lines:true,
> > + has_get_console_window:true,
> > };
> >
> > wincapc wincap;
> > Index: cygwin/wincap.h
> > ===================================================================
> > RCS file: /cvs/src/src/winsup/cygwin/wincap.h,v
> > retrieving revision 1.13
> > diff -u -p -r1.13 wincap.h
> > --- cygwin/wincap.h 24 Jul 2002 11:01:37 -0000 1.13
> > +++ cygwin/wincap.h 30 Aug 2002 15:26:23 -0000
> > @@ -48,6 +48,7 @@ struct wincaps
> > unsigned has_64bit_file_access : 1;
> > unsigned has_process_io_counters : 1;
> > unsigned supports_reading_modem_output_lines : 1;
> > + unsigned has_get_console_window
> > : 1;
> > };
> >
> > class wincapc
> > @@ -100,6 +101,7 @@ public:
> > bool IMPLEMENT (has_64bit_file_access)
> > bool IMPLEMENT (has_process_io_counters)
> > bool IMPLEMENT (supports_reading_modem_output_lines)
> > + bool IMPLEMENT (has_get_console_window)
> >
> > #undef IMPLEMENT
> > };
> > Index: w32api/include/wincon.h
> > ===================================================================
> > RCS file: /cvs/src/src/winsup/w32api/include/wincon.h,v
> > retrieving revision 1.3
> > diff -u -p -r1.3 wincon.h
> > --- w32api/include/wincon.h 19 Jun 2002 01:15:45 -0000 1.3
> > +++ w32api/include/wincon.h 30 Aug 2002 15:26:30 -0000
> > @@ -90,7 +90,7 @@ typedef struct _KEY_EVENT_RECORD {
> > CHAR AsciiChar;
> > } uChar;
> > DWORD dwControlKeyState;
> > -}
> > +}
> > #ifdef __GNUC__
> > /* gcc's alignment is not what win32 expects */
> > PACKED
> > @@ -146,6 +146,7 @@ BOOL WINAPI ReadConsoleOutputCharacterA(
> > BOOL WINAPI ReadConsoleOutputCharacterW
(HANDLE,LPWSTR,DWORD,COORD,PDWORD);
> > BOOL WINAPI ReadConsoleOutputA
(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT);
> > BOOL WINAPI ReadConsoleOutputW
(HANDLE,PCHAR_INFO,COORD,COORD,PSMALL_RECT);
> > +HWND WINAPI GetConsoleWindow(void);
> > BOOL WINAPI ScrollConsoleScreenBufferA(HANDLE,const SMALL_RECT*,const
> > SMALL_RECT*,COORD,const CHAR_INFO*);
> > BOOL WINAPI ScrollConsoleScreenBufferW(HANDLE,const SMALL_RECT*,const
> > SMALL_RECT*,COORD,const CHAR_INFO*);
> > BOOL WINAPI SetConsoleActiveScreenBuffer(HANDLE);
> >
> >
>
>
--
----------part3d6f91dac118b
Content-Type: TEXT/PLAIN; name="tty.patch"
Content-Transfer-Encoding: base64
SW5kZXg6IGN5Z3dpbi90dHkuY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL3dp
bnN1cC9jeWd3aW4vdHR5LmNjLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjQwCmRpZmYgLXUgLXAg
LXIxLjQwIHR0eS5jYwotLS0gY3lnd2luL3R0eS5jYwkyIEF1ZyAyMDAyIDAyOjEwOjI0IC0wMDAw
CTEuNDAKKysrIGN5Z3dpbi90dHkuY2MJMzAgQXVnIDIwMDIgMTU6MjY6MjEgLTAwMDAKQEAgLTE5
Niw2ICsxOTYsOCBAQCB0dHlfbGlzdDo6YWxsb2NhdGVfdHR5IChpbnQgd2l0aF9jb25zb2xlCiAK
ICAgaWYgKCF3aXRoX2NvbnNvbGUpCiAgICAgY29uc29sZSA9IE5VTEw7CisgIGVsc2UgaWYgKHdp
bmNhcC5oYXNfZ2V0X2NvbnNvbGVfd2luZG93KCkpCisgICAgY29uc29sZSA9IEdldENvbnNvbGVX
aW5kb3cgKCk7CiAgIGVsc2UKICAgICB7CiAgICAgICBjaGFyICpvbGR0aXRsZSA9IG5ldyBjaGFy
IFtUSVRMRVNJWkVdOwpAQCAtMjE4LDggKzIyMCwxMSBAQCB0dHlfbGlzdDo6YWxsb2NhdGVfdHR5
IChpbnQgd2l0aF9jb25zb2xlCiAKICAgICAgIF9fc21hbGxfc3ByaW50ZiAoYnVmLCAiY3lnd2lu
LmZpbmQuY29uc29sZS4lZCIsIG15c2VsZi0+cGlkKTsKICAgICAgIFNldENvbnNvbGVUaXRsZSAo
YnVmKTsKLSAgICAgIFNsZWVwICg0MCk7Ci0gICAgICBjb25zb2xlID0gRmluZFdpbmRvdyAoTlVM
TCwgYnVmKTsKKyAgICAgIGZvciAoaW50IHRpbWVzID0gMDsgdGltZXMgPCAyNSAmJiBjb25zb2xl
ID09IE5VTEw7IHRpbWVzKyspCisgICAgICAgIHsKKyAgICAgICAgICBTbGVlcCAoNDApOworICAg
ICAgICAgIGNvbnNvbGUgPSBGaW5kV2luZG93IChOVUxMLCBidWYpOworICAgICAgICB9CiAgICAg
ICBTZXRDb25zb2xlVGl0bGUgKG9sZHRpdGxlKTsKICAgICAgIFNsZWVwICg0MCk7CiAgICAgICBS
ZWxlYXNlTXV0ZXggKHRpdGxlX211dGV4KTsKSW5kZXg6IGN5Z3dpbi93aW5jYXAuY2MKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL3dpbnN1cC9jeWd3aW4vd2luY2FwLmNjLHYKcmV0
cmlldmluZyByZXZpc2lvbiAxLjE2CmRpZmYgLXUgLXAgLXIxLjE2IHdpbmNhcC5jYwotLS0gY3ln
d2luL3dpbmNhcC5jYwkyNCBKdWwgMjAwMiAxMTowMTozNyAtMDAwMAkxLjE2CisrKyBjeWd3aW4v
d2luY2FwLmNjCTMwIEF1ZyAyMDAyIDE1OjI2OjIzIC0wMDAwCkBAIC00Nyw2ICs0Nyw3IEBAIHN0
YXRpYyBOT19DT1BZIHdpbmNhcHMgd2luY2FwX3Vua25vd24gPSAKICAgaGFzXzY0Yml0X2ZpbGVf
YWNjZXNzOmZhbHNlLAogICBoYXNfcHJvY2Vzc19pb19jb3VudGVyczpmYWxzZSwKICAgc3VwcG9y
dHNfcmVhZGluZ19tb2RlbV9vdXRwdXRfbGluZXM6ZmFsc2UsCisgIGhhc19nZXRfY29uc29sZV93
aW5kb3c6ZmFsc2UsCiB9OwogCiBzdGF0aWMgTk9fQ09QWSB3aW5jYXBzIHdpbmNhcF85NSA9IHsK
QEAgLTg1LDYgKzg2LDcgQEAgc3RhdGljIE5PX0NPUFkgd2luY2FwcyB3aW5jYXBfOTUgPSB7CiAg
IGhhc182NGJpdF9maWxlX2FjY2VzczpmYWxzZSwKICAgaGFzX3Byb2Nlc3NfaW9fY291bnRlcnM6
ZmFsc2UsCiAgIHN1cHBvcnRzX3JlYWRpbmdfbW9kZW1fb3V0cHV0X2xpbmVzOmZhbHNlLAorICBo
YXNfZ2V0X2NvbnNvbGVfd2luZG93OmZhbHNlLAogfTsKIAogc3RhdGljIE5PX0NPUFkgd2luY2Fw
cyB3aW5jYXBfOTVvc3IyID0gewpAQCAtMTIzLDYgKzEyNSw3IEBAIHN0YXRpYyBOT19DT1BZIHdp
bmNhcHMgd2luY2FwXzk1b3NyMiA9IHsKICAgaGFzXzY0Yml0X2ZpbGVfYWNjZXNzOmZhbHNlLAog
ICBoYXNfcHJvY2Vzc19pb19jb3VudGVyczpmYWxzZSwKICAgc3VwcG9ydHNfcmVhZGluZ19tb2Rl
bV9vdXRwdXRfbGluZXM6ZmFsc2UsCisgIGhhc19nZXRfY29uc29sZV93aW5kb3c6ZmFsc2UsCiB9
OwogCiBzdGF0aWMgTk9fQ09QWSB3aW5jYXBzIHdpbmNhcF85OCA9IHsKQEAgLTE2MSw2ICsxNjQs
NyBAQCBzdGF0aWMgTk9fQ09QWSB3aW5jYXBzIHdpbmNhcF85OCA9IHsKICAgaGFzXzY0Yml0X2Zp
bGVfYWNjZXNzOmZhbHNlLAogICBoYXNfcHJvY2Vzc19pb19jb3VudGVyczpmYWxzZSwKICAgc3Vw
cG9ydHNfcmVhZGluZ19tb2RlbV9vdXRwdXRfbGluZXM6ZmFsc2UsCisgIGhhc19nZXRfY29uc29s
ZV93aW5kb3c6ZmFsc2UsCiB9OwogCiBzdGF0aWMgTk9fQ09QWSB3aW5jYXBzIHdpbmNhcF85OHNl
ID0gewpAQCAtMTk5LDYgKzIwMyw3IEBAIHN0YXRpYyBOT19DT1BZIHdpbmNhcHMgd2luY2FwXzk4
c2UgPSB7CiAgIGhhc182NGJpdF9maWxlX2FjY2VzczpmYWxzZSwKICAgaGFzX3Byb2Nlc3NfaW9f
Y291bnRlcnM6ZmFsc2UsCiAgIHN1cHBvcnRzX3JlYWRpbmdfbW9kZW1fb3V0cHV0X2xpbmVzOmZh
bHNlLAorICBoYXNfZ2V0X2NvbnNvbGVfd2luZG93OmZhbHNlLAogfTsKIAogc3RhdGljIE5PX0NP
UFkgd2luY2FwcyB3aW5jYXBfbWUgPSB7CkBAIC0yMzcsNiArMjQyLDcgQEAgc3RhdGljIE5PX0NP
UFkgd2luY2FwcyB3aW5jYXBfbWUgPSB7CiAgIGhhc182NGJpdF9maWxlX2FjY2VzczpmYWxzZSwK
ICAgaGFzX3Byb2Nlc3NfaW9fY291bnRlcnM6ZmFsc2UsCiAgIHN1cHBvcnRzX3JlYWRpbmdfbW9k
ZW1fb3V0cHV0X2xpbmVzOmZhbHNlLAorICBoYXNfZ2V0X2NvbnNvbGVfd2luZG93OmZhbHNlLAog
fTsKIAogc3RhdGljIE5PX0NPUFkgd2luY2FwcyB3aW5jYXBfbnQzID0gewpAQCAtMjc1LDYgKzI4
MSw3IEBAIHN0YXRpYyBOT19DT1BZIHdpbmNhcHMgd2luY2FwX250MyA9IHsKICAgaGFzXzY0Yml0
X2ZpbGVfYWNjZXNzOnRydWUsCiAgIGhhc19wcm9jZXNzX2lvX2NvdW50ZXJzOmZhbHNlLAogICBz
dXBwb3J0c19yZWFkaW5nX21vZGVtX291dHB1dF9saW5lczp0cnVlLAorICBoYXNfZ2V0X2NvbnNv
bGVfd2luZG93OmZhbHNlLAogfTsKIAogc3RhdGljIE5PX0NPUFkgd2luY2FwcyB3aW5jYXBfbnQ0
ID0gewpAQCAtMzEzLDYgKzMyMCw3IEBAIHN0YXRpYyBOT19DT1BZIHdpbmNhcHMgd2luY2FwX250
NCA9IHsKICAgaGFzXzY0Yml0X2ZpbGVfYWNjZXNzOnRydWUsCiAgIGhhc19wcm9jZXNzX2lvX2Nv
dW50ZXJzOmZhbHNlLAogICBzdXBwb3J0c19yZWFkaW5nX21vZGVtX291dHB1dF9saW5lczp0cnVl
LAorICBoYXNfZ2V0X2NvbnNvbGVfd2luZG93OmZhbHNlLAogfTsKIAogc3RhdGljIE5PX0NPUFkg
d2luY2FwcyB3aW5jYXBfbnQ0c3A0ID0gewpAQCAtMzUxLDYgKzM1OSw3IEBAIHN0YXRpYyBOT19D
T1BZIHdpbmNhcHMgd2luY2FwX250NHNwNCA9IHsKICAgaGFzXzY0Yml0X2ZpbGVfYWNjZXNzOnRy
dWUsCiAgIGhhc19wcm9jZXNzX2lvX2NvdW50ZXJzOmZhbHNlLAogICBzdXBwb3J0c19yZWFkaW5n
X21vZGVtX291dHB1dF9saW5lczp0cnVlLAorICBoYXNfZ2V0X2NvbnNvbGVfd2luZG93OmZhbHNl
LAogfTsKIAogc3RhdGljIE5PX0NPUFkgd2luY2FwcyB3aW5jYXBfMjAwMCA9IHsKQEAgLTM4OSw2
ICszOTgsNyBAQCBzdGF0aWMgTk9fQ09QWSB3aW5jYXBzIHdpbmNhcF8yMDAwID0gewogICBoYXNf
NjRiaXRfZmlsZV9hY2Nlc3M6dHJ1ZSwKICAgaGFzX3Byb2Nlc3NfaW9fY291bnRlcnM6dHJ1ZSwK
ICAgc3VwcG9ydHNfcmVhZGluZ19tb2RlbV9vdXRwdXRfbGluZXM6dHJ1ZSwKKyAgaGFzX2dldF9j
b25zb2xlX3dpbmRvdzp0cnVlLAogfTsKIAogc3RhdGljIE5PX0NPUFkgd2luY2FwcyB3aW5jYXBf
eHAgPSB7CkBAIC00MjcsNiArNDM3LDcgQEAgc3RhdGljIE5PX0NPUFkgd2luY2FwcyB3aW5jYXBf
eHAgPSB7CiAgIGhhc182NGJpdF9maWxlX2FjY2Vzczp0cnVlLAogICBoYXNfcHJvY2Vzc19pb19j
b3VudGVyczp0cnVlLAogICBzdXBwb3J0c19yZWFkaW5nX21vZGVtX291dHB1dF9saW5lczp0cnVl
LAorICBoYXNfZ2V0X2NvbnNvbGVfd2luZG93OnRydWUsCiB9OwogCiB3aW5jYXBjIHdpbmNhcDsK
SW5kZXg6IGN5Z3dpbi93aW5jYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMv
d2luc3VwL2N5Z3dpbi93aW5jYXAuaCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4xMwpkaWZmIC11
IC1wIC1yMS4xMyB3aW5jYXAuaAotLS0gY3lnd2luL3dpbmNhcC5oCTI0IEp1bCAyMDAyIDExOjAx
OjM3IC0wMDAwCTEuMTMKKysrIGN5Z3dpbi93aW5jYXAuaAkzMCBBdWcgMjAwMiAxNToyNjoyMyAt
MDAwMApAQCAtNDgsNiArNDgsNyBAQCBzdHJ1Y3Qgd2luY2FwcwogICB1bnNpZ25lZCBoYXNfNjRi
aXRfZmlsZV9hY2Nlc3MJCQk6IDE7CiAgIHVuc2lnbmVkIGhhc19wcm9jZXNzX2lvX2NvdW50ZXJz
ICAgICAgICAgICAgICAgICAgICAgIDogMTsKICAgdW5zaWduZWQgc3VwcG9ydHNfcmVhZGluZ19t
b2RlbV9vdXRwdXRfbGluZXMgICAgICAgICAgOiAxOworICB1bnNpZ25lZCBoYXNfZ2V0X2NvbnNv
bGVfd2luZG93CQkJCQkJOiAxOwogfTsKIAogY2xhc3Mgd2luY2FwYwpAQCAtMTAwLDYgKzEwMSw3
IEBAIHB1YmxpYzoKICAgYm9vbCAgSU1QTEVNRU5UIChoYXNfNjRiaXRfZmlsZV9hY2Nlc3MpCiAg
IGJvb2wgIElNUExFTUVOVCAoaGFzX3Byb2Nlc3NfaW9fY291bnRlcnMpCiAgIGJvb2wgIElNUExF
TUVOVCAoc3VwcG9ydHNfcmVhZGluZ19tb2RlbV9vdXRwdXRfbGluZXMpCisgIGJvb2wgIElNUExF
TUVOVCAoaGFzX2dldF9jb25zb2xlX3dpbmRvdykKIAogI3VuZGVmIElNUExFTUVOVAogfTsKSW5k
ZXg6IHczMmFwaS9pbmNsdWRlL3dpbmNvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3Jj
L3NyYy93aW5zdXAvdzMyYXBpL2luY2x1ZGUvd2luY29uLmgsdgpyZXRyaWV2aW5nIHJldmlzaW9u
IDEuMwpkaWZmIC11IC1wIC1yMS4zIHdpbmNvbi5oCi0tLSB3MzJhcGkvaW5jbHVkZS93aW5jb24u
aAkxOSBKdW4gMjAwMiAwMToxNTo0NSAtMDAwMAkxLjMKKysrIHczMmFwaS9pbmNsdWRlL3dpbmNv
bi5oCTMwIEF1ZyAyMDAyIDE1OjI2OjMwIC0wMDAwCkBAIC05MCw3ICs5MCw3IEBAIHR5cGVkZWYg
c3RydWN0IF9LRVlfRVZFTlRfUkVDT1JEIHsKIAkJQ0hBUiBBc2NpaUNoYXI7CiAJfSB1Q2hhcjsK
IAlEV09SRCBkd0NvbnRyb2xLZXlTdGF0ZTsKLX0gCit9CiAjaWZkZWYgX19HTlVDX18KIC8qIGdj
YydzIGFsaWdubWVudCBpcyBub3Qgd2hhdCB3aW4zMiBleHBlY3RzICovCiAgUEFDS0VECkBAIC0x
NDYsNiArMTQ2LDcgQEAgQk9PTCBXSU5BUEkgUmVhZENvbnNvbGVPdXRwdXRDaGFyYWN0ZXJBKAog
Qk9PTCBXSU5BUEkgUmVhZENvbnNvbGVPdXRwdXRDaGFyYWN0ZXJXKEhBTkRMRSxMUFdTVFIsRFdP
UkQsQ09PUkQsUERXT1JEKTsKIEJPT0wgV0lOQVBJIFJlYWRDb25zb2xlT3V0cHV0QShIQU5ETEUs
UENIQVJfSU5GTyxDT09SRCxDT09SRCxQU01BTExfUkVDVCk7CiBCT09MIFdJTkFQSSBSZWFkQ29u
c29sZU91dHB1dFcoSEFORExFLFBDSEFSX0lORk8sQ09PUkQsQ09PUkQsUFNNQUxMX1JFQ1QpOwor
SFdORCBXSU5BUEkgR2V0Q29uc29sZVdpbmRvdyh2b2lkKTsKIEJPT0wgV0lOQVBJIFNjcm9sbENv
bnNvbGVTY3JlZW5CdWZmZXJBKEhBTkRMRSxjb25zdCBTTUFMTF9SRUNUKixjb25zdCBTTUFMTF9S
RUNUKixDT09SRCxjb25zdCBDSEFSX0lORk8qKTsKIEJPT0wgV0lOQVBJIFNjcm9sbENvbnNvbGVT
Y3JlZW5CdWZmZXJXKEhBTkRMRSxjb25zdCBTTUFMTF9SRUNUKixjb25zdCBTTUFMTF9SRUNUKixD
T09SRCxjb25zdCBDSEFSX0lORk8qKTsKIEJPT0wgV0lOQVBJIFNldENvbnNvbGVBY3RpdmVTY3Jl
ZW5CdWZmZXIoSEFORExFKTsK
- Raw text -