From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31536 invoked by alias); 2 Feb 2007 23:28:23 -0000 Received: (qmail 31527 invoked by uid 22791); 2 Feb 2007 23:28:21 -0000 X-Spam-Check-By: sourceware.org Received: from viper.snap.net.nz (HELO viper.snap.net.nz) (202.37.101.8) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 02 Feb 2007 23:28:14 +0000 Received: from kahikatea.snap.net.nz (250.63.255.123.dynamic.snap.net.nz [123.255.63.250]) by viper.snap.net.nz (Postfix) with ESMTP id 18FDA2F46BE; Sat, 3 Feb 2007 12:28:04 +1300 (NZDT) Received: by kahikatea.snap.net.nz (Postfix, from userid 500) id 609464F71C; Sat, 3 Feb 2007 12:28:01 +1300 (NZDT) From: Nick Roberts MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Sp3ovyvc9L" Content-Transfer-Encoding: 7bit Message-ID: <17859.51456.360072.344506@kahikatea.snap.net.nz> Date: Fri, 02 Feb 2007 23:28:00 -0000 To: Eli Zaretskii Cc: gdb-patches@sources.redhat.com Subject: Re: [PATCH] MI: new timing command In-Reply-To: References: <17814.10139.269708.848818@kahikatea.snap.net.nz> <17814.58031.865155.682869@kahikatea.snap.net.nz> <20061231042547.GA3236@nevyn.them.org> <17815.18190.987950.612053@kahikatea.snap.net.nz> <20061231054946.GA4873@nevyn.them.org> <17815.27092.497145.908734@kahikatea.snap.net.nz> <20061231151527.GC16449@nevyn.them.org> <200612311524.kBVFObud010411@brahms.sibelius.xs4all.nl> <200612311609.kBVG9Fgh022431@brahms.sibelius.xs4all.nl> <17816.34925.514170.51734@farnswood.snap.net.nz> <17817.34304.221915.628057@kahikatea.snap.net.nz> <17836.26941.915573.399839@kahikatea.snap.net.nz> <17842.33386.836316.276127@kahikatea.snap.net.nz> <17851.52589.491047.323275@kahikatea.snap.net.nz> <17852.13579.802713.886821@kahikatea.snap.net.nz> X-Mailer: VM 7.19 under Emacs 22.0.93.5 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2007-02/txt/msg00024.txt.bz2 --Sp3ovyvc9L Content-Type: text/plain; charset=us-ascii Content-Description: message body and .signature Content-Transfer-Encoding: 7bit Content-length: 2595 > This is okay with me, but please use 1000000L rather than just 1000000 > here: > > > + tv->utime.tv_usec = usec - 1000000*tv->utime.tv_sec; > > and here: > > > + static long > > + timeval_diff (struct timeval start, struct timeval end) > > + { > > + return ((end.tv_sec - start.tv_sec) * 1000000) > > + + (end.tv_usec - start.tv_usec); > > + } > > This is to avoid a possible overflow of a 32-bit int on systems where > tv_sec is a 32-bit type. I was so immersed in trying to commit my changes correctly that I missed this so I had to do it retrospectively. > Other than that, this patch can go in, but please show here the exact > patch you commit, since you didn't show it in the message to which I'm > replying. I am sending it as an attachment with your change listed separately. Maybe I've made mistakes (I've not made changes to configury before) but I'll be available to correct it if necessary. Thanks for your help. -- Nick http://www.inet.net.nz/~nickrob *** mi-main.c 03 Feb 2007 11:31:46 +1300 1.92 --- mi-main.c 03 Feb 2007 12:17:14 +1300 *************** mi_load_progress (const char *section_na *** 1461,1467 **** if (delta.tv_usec < 0) { delta.tv_sec -= 1; ! delta.tv_usec += 1000000; } new_section = (previous_sect_name ? --- 1461,1467 ---- if (delta.tv_usec < 0) { delta.tv_sec -= 1; ! delta.tv_usec += 1000000L; } new_section = (previous_sect_name ? *************** timestamp (struct mi_timestamp *tv) *** 1537,1544 **** tv->stime.tv_usec = rusage.ru_stime.tv_usec; #else usec = get_run_time (); ! tv->utime.tv_sec = usec/1000000; ! tv->utime.tv_usec = usec - 1000000*tv->utime.tv_sec; tv->stime.tv_sec = 0; tv->stime.tv_usec = 0; #endif --- 1537,1544 ---- tv->stime.tv_usec = rusage.ru_stime.tv_usec; #else usec = get_run_time (); ! tv->utime.tv_sec = usec/1000000L; ! tv->utime.tv_usec = usec - 1000000L*tv->utime.tv_sec; tv->stime.tv_sec = 0; tv->stime.tv_usec = 0; #endif *************** print_diff_now (struct mi_timestamp *sta *** 1555,1561 **** static long timeval_diff (struct timeval start, struct timeval end) { ! return ((end.tv_sec - start.tv_sec) * 1000000) + (end.tv_usec - start.tv_usec); } --- 1555,1561 ---- static long timeval_diff (struct timeval start, struct timeval end) { ! return ((end.tv_sec - start.tv_sec) * 1000000L) + (end.tv_usec - start.tv_usec); } --Sp3ovyvc9L Content-Type: application/octet-stream Content-Description: timing patch Content-Disposition: attachment; filename="final_timing.diff" Content-Transfer-Encoding: base64 Content-length: 26881 SW5kZXg6IGNvbmZpZ3VyZS5hYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJD UyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2NvbmZpZ3VyZS5hYyx2CnJldHJp ZXZpbmcgcmV2aXNpb24gMS40MQpkaWZmIC1jIC1wIC1yMS40MSBjb25maWd1 cmUuYWMKKioqIGNvbmZpZ3VyZS5hYwk5IEphbiAyMDA3IDIxOjM0OjI5IC0w MDAwCTEuNDEKLS0tIGNvbmZpZ3VyZS5hYwkyIEZlYiAyMDA3IDIyOjQyOjU5 IC0wMDAwCioqKioqKioqKioqKioqKiBBQ19DSEVDS19IRUFERVJTKHN5cy9m aWxlLmgpCioqKiAzNzYsMzgxICoqKioKLS0tIDM3NiwzODIgLS0tLQogIEFD X0NIRUNLX0hFQURFUlMoc3lzL2ZpbGlvLmgpCiAgQUNfQ0hFQ0tfSEVBREVS UyhzeXMvaW9jdGwuaCkKICBBQ19DSEVDS19IRUFERVJTKHN5cy9wYXJhbS5o KQorIEFDX0NIRUNLX0hFQURFUlMoc3lzL3Jlc291cmNlLmgpCiAgQUNfQ0hF Q0tfSEVBREVSUyhzeXMvcHJvYy5oLCBbXSwgW10sCiAgWyNpZiBIQVZFX1NZ U19QQVJBTV9ICiAgIyBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKioqKioqKioq KioqKioqIEFDX0ZVTkNfQUxMT0NBCioqKiA0NjMsNDY4ICoqKioKLS0tIDQ2 NCw0NzAgLS0tLQogIEFDX0ZVTkNfTU1BUAogIEFDX0ZVTkNfVkZPUksKICBB Q19DSEVDS19GVU5DUyhjYW5vbmljYWxpemVfZmlsZV9uYW1lIHJlYWxwYXRo KQorIEFDX0NIRUNLX0ZVTkNTKGdldHJ1c2FnZSkKICBBQ19DSEVDS19GVU5D UyhnZXR1aWQgZ2V0Z2lkKQogIEFDX0NIRUNLX0ZVTkNTKHBvbGwpCiAgQUNf Q0hFQ0tfRlVOQ1MocHJlYWQ2NCkKSW5kZXg6IGNvbmZpZ3VyZQo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2Nv bmZpZ3VyZSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4yMjAKZGlmZiAtYyAt cCAtcjEuMjIwIGNvbmZpZ3VyZQoqKiogY29uZmlndXJlCTkgSmFuIDIwMDcg MjE6MzQ6MzAgLTAwMDAJMS4yMjAKLS0tIGNvbmZpZ3VyZQkyIEZlYiAyMDA3 IDIyOjQzOjQ3IC0wMDAwCioqKioqKioqKioqKioqKiBmaQoqKiogOTA2MSw5 MDY2ICoqKioKLS0tIDkwNjEsOTIxNiAtLS0tCiAgZG9uZQogIAogIAorIGZv ciBhY19oZWFkZXIgaW4gc3lzL3Jlc291cmNlLmgKKyBkbworIGFzX2FjX0hl YWRlcj1gZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3Ry X3NoYAorIGlmIGV2YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1c IiA9IHNldCI7IHRoZW4KKyAgIGVjaG8gIiRhc19tZTokTElORU5POiBjaGVj a2luZyBmb3IgJGFjX2hlYWRlciIgPiY1CisgZWNobyAkRUNIT19OICJjaGVj a2luZyBmb3IgJGFjX2hlYWRlci4uLiAkRUNIT19DIiA+JjYKKyBpZiBldmFs ICJ0ZXN0IFwiXCR7JGFzX2FjX0hlYWRlcitzZXR9XCIgPSBzZXQiOyB0aGVu CisgICBlY2hvICRFQ0hPX04gIihjYWNoZWQpICRFQ0hPX0MiID4mNgorIGZp CisgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogYGV2YWwgZWNobyAn JHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNQorIGVjaG8gIiR7RUNIT19UfWBl dmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYKKyBlbHNlCisg ICAjIElzIHRoZSBoZWFkZXIgY29tcGlsYWJsZT8KKyBlY2hvICIkYXNfbWU6 JExJTkVOTzogY2hlY2tpbmcgJGFjX2hlYWRlciB1c2FiaWxpdHkiID4mNQor IGVjaG8gJEVDSE9fTiAiY2hlY2tpbmcgJGFjX2hlYWRlciB1c2FiaWxpdHku Li4gJEVDSE9fQyIgPiY2CisgY2F0ID5jb25mdGVzdC4kYWNfZXh0IDw8X0FD RU9GCisgLyogY29uZmRlZnMuaC4gICovCisgX0FDRU9GCisgY2F0IGNvbmZk ZWZzLmggPj5jb25mdGVzdC4kYWNfZXh0CisgY2F0ID4+Y29uZnRlc3QuJGFj X2V4dCA8PF9BQ0VPRgorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAkYWNf aW5jbHVkZXNfZGVmYXVsdAorICNpbmNsdWRlIDwkYWNfaGVhZGVyPgorIF9B Q0VPRgorIHJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQKKyBpZiB7IChldmFs IGVjaG8gIiRhc19tZTokTElORU5POiBcIiRhY19jb21waWxlXCIiKSA+JjUK KyAgIChldmFsICRhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVyMQorICAgYWNf c3RhdHVzPSQ/CisgICBncmVwIC12ICdeICorJyBjb25mdGVzdC5lcjEgPmNv bmZ0ZXN0LmVycgorICAgcm0gLWYgY29uZnRlc3QuZXIxCisgICBjYXQgY29u ZnRlc3QuZXJyID4mNQorICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwkPyA9 ICRhY19zdGF0dXMiID4mNQorICAgKGV4aXQgJGFjX3N0YXR1cyk7IH0gJiYK KyAJIHsgYWNfdHJ5PSd0ZXN0IC16ICIkYWNfY193ZXJyb3JfZmxhZyIKKyAJ CQkgfHwgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVycicKKyAgIHsgKGV2YWwgZWNo byAiJGFzX21lOiRMSU5FTk86IFwiJGFjX3RyeVwiIikgPiY1CisgICAoZXZh bCAkYWNfdHJ5KSAyPiY1CisgICBhY19zdGF0dXM9JD8KKyAgIGVjaG8gIiRh c19tZTokTElORU5POiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgIChleGl0 ICRhY19zdGF0dXMpOyB9OyB9ICYmCisgCSB7IGFjX3RyeT0ndGVzdCAtcyBj b25mdGVzdC4kYWNfb2JqZXh0JworICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6 JExJTkVOTzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgIChldmFsICRhY190cnkp IDI+JjUKKyAgIGFjX3N0YXR1cz0kPworICAgZWNobyAiJGFzX21lOiRMSU5F Tk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAgKGV4aXQgJGFjX3N0YXR1 cyk7IH07IH07IHRoZW4KKyAgIGFjX2hlYWRlcl9jb21waWxlcj15ZXMKKyBl bHNlCisgICBlY2hvICIkYXNfbWU6IGZhaWxlZCBwcm9ncmFtIHdhczoiID4m NQorIHNlZCAncy9eL3wgLycgY29uZnRlc3QuJGFjX2V4dCA+JjUKKyAKKyBh Y19oZWFkZXJfY29tcGlsZXI9bm8KKyBmaQorIHJtIC1mIGNvbmZ0ZXN0LmVy ciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKyBlY2hv ICIkYXNfbWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX2NvbXBpbGVy IiA+JjUKKyBlY2hvICIke0VDSE9fVH0kYWNfaGVhZGVyX2NvbXBpbGVyIiA+ JjYKKyAKKyAjIElzIHRoZSBoZWFkZXIgcHJlc2VudD8KKyBlY2hvICIkYXNf bWU6JExJTkVOTzogY2hlY2tpbmcgJGFjX2hlYWRlciBwcmVzZW5jZSIgPiY1 CisgZWNobyAkRUNIT19OICJjaGVja2luZyAkYWNfaGVhZGVyIHByZXNlbmNl Li4uICRFQ0hPX0MiID4mNgorIGNhdCA+Y29uZnRlc3QuJGFjX2V4dCA8PF9B Q0VPRgorIC8qIGNvbmZkZWZzLmguICAqLworIF9BQ0VPRgorIGNhdCBjb25m ZGVmcy5oID4+Y29uZnRlc3QuJGFjX2V4dAorIGNhdCA+PmNvbmZ0ZXN0LiRh Y19leHQgPDxfQUNFT0YKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lu Y2x1ZGUgPCRhY19oZWFkZXI+CisgX0FDRU9GCisgaWYgeyAoZXZhbCBlY2hv ICIkYXNfbWU6JExJTkVOTzogXCIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHRc IiIpID4mNQorICAgKGV2YWwgJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0KSAy PmNvbmZ0ZXN0LmVyMQorICAgYWNfc3RhdHVzPSQ/CisgICBncmVwIC12ICde ICorJyBjb25mdGVzdC5lcjEgPmNvbmZ0ZXN0LmVycgorICAgcm0gLWYgY29u ZnRlc3QuZXIxCisgICBjYXQgY29uZnRlc3QuZXJyID4mNQorICAgZWNobyAi JGFzX21lOiRMSU5FTk86IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICAgKGV4 aXQgJGFjX3N0YXR1cyk7IH0gPi9kZXYvbnVsbDsgdGhlbgorICAgaWYgdGVz dCAtcyBjb25mdGVzdC5lcnI7IHRoZW4KKyAgICAgYWNfY3BwX2Vycj0kYWNf Y19wcmVwcm9jX3dhcm5fZmxhZworICAgICBhY19jcHBfZXJyPSRhY19jcHBf ZXJyJGFjX2Nfd2Vycm9yX2ZsYWcKKyAgIGVsc2UKKyAgICAgYWNfY3BwX2Vy cj0KKyAgIGZpCisgZWxzZQorICAgYWNfY3BwX2Vycj15ZXMKKyBmaQorIGlm IHRlc3QgLXogIiRhY19jcHBfZXJyIjsgdGhlbgorICAgYWNfaGVhZGVyX3By ZXByb2M9eWVzCisgZWxzZQorICAgZWNobyAiJGFzX21lOiBmYWlsZWQgcHJv Z3JhbSB3YXM6IiA+JjUKKyBzZWQgJ3MvXi98IC8nIGNvbmZ0ZXN0LiRhY19l eHQgPiY1CisgCisgICBhY19oZWFkZXJfcHJlcHJvYz1ubworIGZpCisgcm0g LWYgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19leHQKKyBlY2hvICIkYXNf bWU6JExJTkVOTzogcmVzdWx0OiAkYWNfaGVhZGVyX3ByZXByb2MiID4mNQor IGVjaG8gIiR7RUNIT19UfSRhY19oZWFkZXJfcHJlcHJvYyIgPiY2CisgCisg IyBTbz8gIFdoYXQgYWJvdXQgdGhpcyBoZWFkZXI/CisgY2FzZSAkYWNfaGVh ZGVyX2NvbXBpbGVyOiRhY19oZWFkZXJfcHJlcHJvYzokYWNfY19wcmVwcm9j X3dhcm5fZmxhZyBpbgorICAgeWVzOm5vOiApCisgICAgIHsgZWNobyAiJGFz X21lOiRMSU5FTk86IFdBUk5JTkc6ICRhY19oZWFkZXI6IGFjY2VwdGVkIGJ5 IHRoZSBjb21waWxlciwgcmVqZWN0ZWQgYnkgdGhlIHByZXByb2Nlc3NvciEi ID4mNQorIGVjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogYWNj ZXB0ZWQgYnkgdGhlIGNvbXBpbGVyLCByZWplY3RlZCBieSB0aGUgcHJlcHJv Y2Vzc29yISIgPiYyO30KKyAgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzog V0FSTklORzogJGFjX2hlYWRlcjogcHJvY2VlZGluZyB3aXRoIHRoZSBjb21w aWxlcidzIHJlc3VsdCIgPiY1CisgZWNobyAiJGFzX21lOiBXQVJOSU5HOiAk YWNfaGVhZGVyOiBwcm9jZWVkaW5nIHdpdGggdGhlIGNvbXBpbGVyJ3MgcmVz dWx0IiA+JjI7fQorICAgICBhY19oZWFkZXJfcHJlcHJvYz15ZXMKKyAgICAg OzsKKyAgIG5vOnllczoqICkKKyAgICAgeyBlY2hvICIkYXNfbWU6JExJTkVO TzogV0FSTklORzogJGFjX2hlYWRlcjogcHJlc2VudCBidXQgY2Fubm90IGJl IGNvbXBpbGVkIiA+JjUKKyBlY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19o ZWFkZXI6IHByZXNlbnQgYnV0IGNhbm5vdCBiZSBjb21waWxlZCIgPiYyO30K KyAgICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogV0FSTklORzogJGFjX2hl YWRlcjogICAgIGNoZWNrIGZvciBtaXNzaW5nIHByZXJlcXVpc2l0ZSBoZWFk ZXJzPyIgPiY1CisgZWNobyAiJGFzX21lOiBXQVJOSU5HOiAkYWNfaGVhZGVy OiAgICAgY2hlY2sgZm9yIG1pc3NpbmcgcHJlcmVxdWlzaXRlIGhlYWRlcnM/ IiA+JjI7fQorICAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5H OiAkYWNfaGVhZGVyOiBzZWUgdGhlIEF1dG9jb25mIGRvY3VtZW50YXRpb24i ID4mNQorIGVjaG8gIiRhc19tZTogV0FSTklORzogJGFjX2hlYWRlcjogc2Vl IHRoZSBBdXRvY29uZiBkb2N1bWVudGF0aW9uIiA+JjI7fQorICAgICB7IGVj aG8gIiRhc19tZTokTElORU5POiBXQVJOSU5HOiAkYWNfaGVhZGVyOiAgICAg c2VjdGlvbiBcIlByZXNlbnQgQnV0IENhbm5vdCBCZSBDb21waWxlZFwiIiA+ JjUKKyBlY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFkZXI6ICAgICBz ZWN0aW9uIFwiUHJlc2VudCBCdXQgQ2Fubm90IEJlIENvbXBpbGVkXCIiID4m Mjt9CisgICAgIHsgZWNobyAiJGFzX21lOiRMSU5FTk86IFdBUk5JTkc6ICRh Y19oZWFkZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3Mg cmVzdWx0IiA+JjUKKyBlY2hvICIkYXNfbWU6IFdBUk5JTkc6ICRhY19oZWFk ZXI6IHByb2NlZWRpbmcgd2l0aCB0aGUgcHJlcHJvY2Vzc29yJ3MgcmVzdWx0 IiA+JjI7fQorICAgICB7IGVjaG8gIiRhc19tZTokTElORU5POiBXQVJOSU5H OiAkYWNfaGVhZGVyOiBpbiB0aGUgZnV0dXJlLCB0aGUgY29tcGlsZXIgd2ls bCB0YWtlIHByZWNlZGVuY2UiID4mNQorIGVjaG8gIiRhc19tZTogV0FSTklO RzogJGFjX2hlYWRlcjogaW4gdGhlIGZ1dHVyZSwgdGhlIGNvbXBpbGVyIHdp bGwgdGFrZSBwcmVjZWRlbmNlIiA+JjI7fQorICAgICAoCisgICAgICAgY2F0 IDw8XF9BU0JPWAorICMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSAjIworICMjIFJlcG9ydCB0aGlzIHRvIHRoZSBBQ19Q QUNLQUdFX05BTUUgbGlzdHMuICAjIworICMjIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIF9BU0JPWAorICAgICAp IHwKKyAgICAgICBzZWQgInMvXi8kYXNfbWU6IFdBUk5JTkc6ICAgICAvIiA+ JjIKKyAgICAgOzsKKyBlc2FjCisgZWNobyAiJGFzX21lOiRMSU5FTk86IGNo ZWNraW5nIGZvciAkYWNfaGVhZGVyIiA+JjUKKyBlY2hvICRFQ0hPX04gImNo ZWNraW5nIGZvciAkYWNfaGVhZGVyLi4uICRFQ0hPX0MiID4mNgorIGlmIGV2 YWwgInRlc3QgXCJcJHskYXNfYWNfSGVhZGVyK3NldH1cIiA9IHNldCI7IHRo ZW4KKyAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Cisg ZWxzZQorICAgZXZhbCAiJGFzX2FjX0hlYWRlcj1cJGFjX2hlYWRlcl9wcmVw cm9jIgorIGZpCisgZWNobyAiJGFzX21lOiRMSU5FTk86IHJlc3VsdDogYGV2 YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRlcid9J2AiID4mNQorIGVjaG8gIiR7 RUNIT19UfWBldmFsIGVjaG8gJyR7JyRhc19hY19IZWFkZXInfSdgIiA+JjYK KyAKKyBmaQorIGlmIHRlc3QgYGV2YWwgZWNobyAnJHsnJGFzX2FjX0hlYWRl cid9J2AgPSB5ZXM7IHRoZW4KKyAgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNF T0YKKyAjZGVmaW5lIGBlY2hvICJIQVZFXyRhY19oZWFkZXIiIHwgJGFzX3Ry X2NwcGAgMQorIF9BQ0VPRgorIAorIGZpCisgCisgZG9uZQorIAorIAogIGZv ciBhY19oZWFkZXIgaW4gc3lzL3Byb2MuaAogIGRvCiAgYXNfYWNfSGVhZGVy PWBlY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hg CioqKioqKioqKioqKioqKiBmaQoqKiogMTY1NjEsMTY1NjYgKioqKgotLS0g MTY3MTEsMTY4MTggLS0tLQogIGRvbmUKICAKICAKKyBmb3IgYWNfZnVuYyBp biBnZXRydXNhZ2UKKyBkbworIGFzX2FjX3Zhcj1gZWNobyAiYWNfY3ZfZnVu Y18kYWNfZnVuYyIgfCAkYXNfdHJfc2hgCisgZWNobyAiJGFzX21lOiRMSU5F Tk86IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CisgZWNobyAkRUNIT19O ICJjaGVja2luZyBmb3IgJGFjX2Z1bmMuLi4gJEVDSE9fQyIgPiY2CisgaWYg ZXZhbCAidGVzdCBcIlwkeyRhc19hY192YXIrc2V0fVwiID0gc2V0IjsgdGhl bgorICAgZWNobyAkRUNIT19OICIoY2FjaGVkKSAkRUNIT19DIiA+JjYKKyBl bHNlCisgICBjYXQgPmNvbmZ0ZXN0LiRhY19leHQgPDxfQUNFT0YKKyAvKiBj b25mZGVmcy5oLiAgKi8KKyBfQUNFT0YKKyBjYXQgY29uZmRlZnMuaCA+PmNv bmZ0ZXN0LiRhY19leHQKKyBjYXQgPj5jb25mdGVzdC4kYWNfZXh0IDw8X0FD RU9GCisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIC8qIERlZmluZSAkYWNf ZnVuYyB0byBhbiBpbm5vY3VvdXMgdmFyaWFudCwgaW4gY2FzZSA8bGltaXRz Lmg+IGRlY2xhcmVzICRhY19mdW5jLgorICAgIEZvciBleGFtcGxlLCBIUC1V WCAxMWkgPGxpbWl0cy5oPiBkZWNsYXJlcyBnZXR0aW1lb2ZkYXkuICAqLwor ICNkZWZpbmUgJGFjX2Z1bmMgaW5ub2N1b3VzXyRhY19mdW5jCisgCisgLyog U3lzdGVtIGhlYWRlciB0byBkZWZpbmUgX19zdHViIG1hY3JvcyBhbmQgaG9w ZWZ1bGx5IGZldyBwcm90b3R5cGVzLAorICAgICB3aGljaCBjYW4gY29uZmxp Y3Qgd2l0aCBjaGFyICRhY19mdW5jICgpOyBiZWxvdy4KKyAgICAgUHJlZmVy IDxsaW1pdHMuaD4gdG8gPGFzc2VydC5oPiBpZiBfX1NURENfXyBpcyBkZWZp bmVkLCBzaW5jZQorICAgICA8bGltaXRzLmg+IGV4aXN0cyBldmVuIG9uIGZy ZWVzdGFuZGluZyBjb21waWxlcnMuICAqLworIAorICNpZmRlZiBfX1NURENf XworICMgaW5jbHVkZSA8bGltaXRzLmg+CisgI2Vsc2UKKyAjIGluY2x1ZGUg PGFzc2VydC5oPgorICNlbmRpZgorIAorICN1bmRlZiAkYWNfZnVuYworIAor IC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBh dm9pZCBhbiBlcnJvci4gICovCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0 ZXJuICJDIgorIHsKKyAjZW5kaWYKKyAvKiBXZSB1c2UgY2hhciBiZWNhdXNl IGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCisg ICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdv dWxkIHN0aWxsIGFwcGx5LiAgKi8KKyBjaGFyICRhY19mdW5jICgpOworIC8q IFRoZSBHTlUgQyBsaWJyYXJ5IGRlZmluZXMgdGhpcyBmb3IgZnVuY3Rpb25z IHdoaWNoIGl0IGltcGxlbWVudHMKKyAgICAgdG8gYWx3YXlzIGZhaWwgd2l0 aCBFTk9TWVMuICBTb21lIGZ1bmN0aW9ucyBhcmUgYWN0dWFsbHkgbmFtZWQK KyAgICAgc29tZXRoaW5nIHN0YXJ0aW5nIHdpdGggX18gYW5kIHRoZSBub3Jt YWwgbmFtZSBpcyBhbiBhbGlhcy4gICovCisgI2lmIGRlZmluZWQgKF9fc3R1 Yl8kYWNfZnVuYykgfHwgZGVmaW5lZCAoX19zdHViX19fJGFjX2Z1bmMpCisg Y2hva2UgbWUKKyAjZWxzZQorIGNoYXIgKCpmKSAoKSA9ICRhY19mdW5jOwor ICNlbmRpZgorICNpZmRlZiBfX2NwbHVzcGx1cworIH0KKyAjZW5kaWYKKyAK KyBpbnQKKyBtYWluICgpCisgeworIHJldHVybiBmICE9ICRhY19mdW5jOwor ICAgOworICAgcmV0dXJuIDA7CisgfQorIF9BQ0VPRgorIHJtIC1mIGNvbmZ0 ZXN0LiRhY19vYmpleHQgY29uZnRlc3QkYWNfZXhlZXh0CisgaWYgeyAoZXZh bCBlY2hvICIkYXNfbWU6JExJTkVOTzogXCIkYWNfbGlua1wiIikgPiY1Cisg ICAoZXZhbCAkYWNfbGluaykgMj5jb25mdGVzdC5lcjEKKyAgIGFjX3N0YXR1 cz0kPworICAgZ3JlcCAtdiAnXiAqKycgY29uZnRlc3QuZXIxID5jb25mdGVz dC5lcnIKKyAgIHJtIC1mIGNvbmZ0ZXN0LmVyMQorICAgY2F0IGNvbmZ0ZXN0 LmVyciA+JjUKKyAgIGVjaG8gIiRhc19tZTokTElORU5POiBcJD8gPSAkYWNf c3RhdHVzIiA+JjUKKyAgIChleGl0ICRhY19zdGF0dXMpOyB9ICYmCisgCSB7 IGFjX3RyeT0ndGVzdCAteiAiJGFjX2Nfd2Vycm9yX2ZsYWciCisgCQkJIHx8 IHRlc3QgISAtcyBjb25mdGVzdC5lcnInCisgICB7IChldmFsIGVjaG8gIiRh c19tZTokTElORU5POiBcIiRhY190cnlcIiIpID4mNQorICAgKGV2YWwgJGFj X3RyeSkgMj4mNQorICAgYWNfc3RhdHVzPSQ/CisgICBlY2hvICIkYXNfbWU6 JExJTkVOTzogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgICAoZXhpdCAkYWNf c3RhdHVzKTsgfTsgfSAmJgorIAkgeyBhY190cnk9J3Rlc3QgLXMgY29uZnRl c3QkYWNfZXhlZXh0JworICAgeyAoZXZhbCBlY2hvICIkYXNfbWU6JExJTkVO TzogXCIkYWNfdHJ5XCIiKSA+JjUKKyAgIChldmFsICRhY190cnkpIDI+JjUK KyAgIGFjX3N0YXR1cz0kPworICAgZWNobyAiJGFzX21lOiRMSU5FTk86IFwk PyA9ICRhY19zdGF0dXMiID4mNQorICAgKGV4aXQgJGFjX3N0YXR1cyk7IH07 IH07IHRoZW4KKyAgIGV2YWwgIiRhc19hY192YXI9eWVzIgorIGVsc2UKKyAg IGVjaG8gIiRhc19tZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiY1Cisgc2Vk ICdzL14vfCAvJyBjb25mdGVzdC4kYWNfZXh0ID4mNQorIAorIGV2YWwgIiRh c19hY192YXI9bm8iCisgZmkKKyBybSAtZiBjb25mdGVzdC5lcnIgY29uZnRl c3QuJGFjX29iamV4dCBcCisgICAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNv bmZ0ZXN0LiRhY19leHQKKyBmaQorIGVjaG8gIiRhc19tZTokTElORU5POiBy ZXN1bHQ6IGBldmFsIGVjaG8gJyR7JyRhc19hY192YXInfSdgIiA+JjUKKyBl Y2hvICIke0VDSE9fVH1gZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCIg PiY2CisgaWYgdGVzdCBgZXZhbCBlY2hvICckeyckYXNfYWNfdmFyJ30nYCA9 IHllczsgdGhlbgorICAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorICNk ZWZpbmUgYGVjaG8gIkhBVkVfJGFjX2Z1bmMiIHwgJGFzX3RyX2NwcGAgMQor IF9BQ0VPRgorIAorIGZpCisgZG9uZQorIAorIAogIAogIGZvciBhY19mdW5j IGluIGdldHVpZCBnZXRnaWQKICBkbwpJbmRleDogY29uZmlnLmluCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvc3JjL3NyYy9nZGIv Y29uZmlnLmluLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjg3CmRpZmYgLWMg LXAgLXIxLjg3IGNvbmZpZy5pbgoqKiogY29uZmlnLmluCTkgSmFuIDIwMDcg MjE6MzQ6MzAgLTAwMDAJMS44NwotLS0gY29uZmlnLmluCTIgRmViIDIwMDcg MjI6NDM6NDkgLTAwMDAKKioqKioqKioqKioqKioqCioqKiAxMjIsMTI3ICoq KioKLS0tIDEyMiwxMzAgLS0tLQogIC8qIERlZmluZSB0byAxIGlmIHlvdSBo YXZlIHRoZSBgZ2V0cGFnZXNpemUnIGZ1bmN0aW9uLiAqLwogICN1bmRlZiBI QVZFX0dFVFBBR0VTSVpFCiAgCisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhh dmUgdGhlIGBnZXRydXNhZ2UnIGZ1bmN0aW9uLiAqLworICN1bmRlZiBIQVZF X0dFVFJVU0FHRQorIAogIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo ZSBgZ2V0dWlkJyBmdW5jdGlvbi4gKi8KICAjdW5kZWYgSEFWRV9HRVRVSUQK ICAKKioqKioqKioqKioqKioqCioqKiAzODgsMzkzICoqKioKLS0tIDM5MSwz OTkgLS0tLQogIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lz L3JlZy5oPiBoZWFkZXIgZmlsZS4gKi8KICAjdW5kZWYgSEFWRV9TWVNfUkVH X0gKICAKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9y ZXNvdXJjZS5oPiBoZWFkZXIgZmlsZS4gKi8KKyAjdW5kZWYgSEFWRV9TWVNf UkVTT1VSQ0VfSAorIAogIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRo ZSA8c3lzL3NlbGVjdC5oPiBoZWFkZXIgZmlsZS4gKi8KICAjdW5kZWYgSEFW RV9TWVNfU0VMRUNUX0gKICAKSW5kZXg6IG1pL21pLW1haW4uYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL21p L21pLW1haW4uYyx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS45MQpkaWZmIC1j IC1wIC1yMS45MSBtaS1tYWluLmMKKioqIG1pL21pLW1haW4uYwkyMyBKYW4g MjAwNyAyMDoyNzo1OCAtMDAwMAkxLjkxCi0tLSBtaS9taS1tYWluLmMJMiBG ZWIgMjAwNyAyMjo0Mzo1MSAtMDAwMAoqKioqKioqKioqKioqKioKKioqIDUw LDU1ICoqKioKLS0tIDUwLDYzIC0tLS0KICAjaW5jbHVkZSA8Y3R5cGUuaD4K ICAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KICAKKyAjaWYgZGVmaW5lZCBIQVZF X1NZU19SRVNPVVJDRV9ICisgI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgor ICNlbmRpZgorIAorICNpZmRlZiBIQVZFX0dFVFJVU0FHRQorIHN0cnVjdCBy dXNhZ2UgcnVzYWdlOworICNlbmRpZgorIAogIGVudW0KICAgIHsKICAgICAg RlJPTV9UVFkgPSAwCioqKioqKioqKioqKioqKiBzdHJ1Y3QgY2FwdHVyZWRf bWlfZXhlY3V0ZV9jb21tYW5kX2FyZ3MKKioqIDgxLDg2ICoqKioKLS0tIDg5 LDEwMCAtLS0tCiAgaW50IG1pX2RlYnVnX3A7CiAgc3RydWN0IHVpX2ZpbGUg KnJhd19zdGRvdXQ7CiAgCisgLyogVGhpcyBpcyB1c2VkIHRvIHBhc3MgdGhl IGN1cnJlbnQgY29tbWFuZCB0aW1lc3RhbXAKKyAgICBkb3duIHRvIGNvbnRp bnVhdGlvbiByb3V0aW5lcy4gICovCisgc3RhdGljIHN0cnVjdCBtaV90aW1l c3RhbXAgKmN1cnJlbnRfY29tbWFuZF90czsKKyAKKyBzdGF0aWMgaW50IGRv X3RpbWluZ3MgPSAwOworIAogIC8qIFRoZSB0b2tlbiBvZiB0aGUgbGFzdCBh c3luY2hyb25vdXMgY29tbWFuZCAqLwogIHN0YXRpYyBjaGFyICpsYXN0X2Fz eW5jX2NvbW1hbmQ7CiAgc3RhdGljIGNoYXIgKnByZXZpb3VzX2FzeW5jX2Nv bW1hbmQ7CioqKioqKioqKioqKioqKiBzdGF0aWMgaW50IGdldF9yZWdpc3Rl ciAoaW50IHJlZ251bSwgaW50CioqKiAxMDMsMTA4ICoqKioKLS0tIDExNywx MjcgLS0tLQogICAgIGxheWVyIHRoYXQgY2FsbHMgbGliZ2RiLiAgQW55IG9w ZXJhdGlvbiB1c2VkIGluIHRoZSBiZWxvdyBzaG91bGQgYmUKICAgICBmb3Jt YWxpemVkLiAqLwogIAorIHN0YXRpYyB2b2lkIHRpbWVzdGFtcCAoc3RydWN0 IG1pX3RpbWVzdGFtcCAqdHYpOworIAorIHN0YXRpYyB2b2lkIHByaW50X2Rp ZmZfbm93IChzdHJ1Y3QgbWlfdGltZXN0YW1wICpzdGFydCk7Cisgc3RhdGlj IHZvaWQgcHJpbnRfZGlmZiAoc3RydWN0IG1pX3RpbWVzdGFtcCAqc3RhcnQs IHN0cnVjdCBtaV90aW1lc3RhbXAgKmVuZCk7CisgCiAgZW51bSBtaV9jbWRf cmVzdWx0CiAgbWlfY21kX2dkYl9leGl0IChjaGFyICpjb21tYW5kLCBjaGFy ICoqYXJndiwgaW50IGFyZ2MpCiAgewoqKioqKioqKioqKioqKiogbWlfY21k X2V4ZWNfY29udGludWUgKGNoYXIgKmFyZ3MsIGludCBmcgoqKiogMTk0LDIw MCAqKioqCiAgfQogIAogIC8qIEludGVycnVwdCB0aGUgZXhlY3V0aW9uIG9m IHRoZSB0YXJnZXQuIE5vdGUgaG93IHdlIG11c3QgcGxheSBhcm91bmQKISAg ICB3aXRoIHRoZSB0b2tlbiB2YXJpYWxiZXMsIGluIG9yZGVyIHRvIGRpc3Bs YXkgdGhlIGN1cnJlbnQgdG9rZW4gaW4KICAgICB0aGUgcmVzdWx0IG9mIHRo ZSBpbnRlcnJ1cHQgY29tbWFuZCwgYW5kIHRoZSBwcmV2aW91cyBleGVjdXRp b24KICAgICB0b2tlbiB3aGVuIHRoZSB0YXJnZXQgZmluYWxseSBzdG9wcy4g U2VlIGNvbW1lbnRzIGluCiAgICAgbWlfY21kX2V4ZWN1dGUuICovCi0tLSAy MTMsMjE5IC0tLS0KICB9CiAgCiAgLyogSW50ZXJydXB0IHRoZSBleGVjdXRp b24gb2YgdGhlIHRhcmdldC4gTm90ZSBob3cgd2UgbXVzdCBwbGF5IGFyb3Vu ZAohICAgIHdpdGggdGhlIHRva2VuIHZhcmlhYmxlcywgaW4gb3JkZXIgdG8g ZGlzcGxheSB0aGUgY3VycmVudCB0b2tlbiBpbgogICAgIHRoZSByZXN1bHQg b2YgdGhlIGludGVycnVwdCBjb21tYW5kLCBhbmQgdGhlIHByZXZpb3VzIGV4 ZWN1dGlvbgogICAgIHRva2VuIHdoZW4gdGhlIHRhcmdldCBmaW5hbGx5IHN0 b3BzLiBTZWUgY29tbWVudHMgaW4KICAgICBtaV9jbWRfZXhlY3V0ZS4gKi8K KioqKioqKioqKioqKioqIG1pX2NtZF9kYXRhX3dyaXRlX21lbW9yeSAoY2hh ciAqY29tbWFuZCwKKioqIDEwMTMsMTAxOCAqKioqCi0tLSAxMDMyLDEwNjEg LS0tLQogICAgcmV0dXJuIE1JX0NNRF9ET05FOwogIH0KICAKKyBlbnVtIG1p X2NtZF9yZXN1bHQKKyBtaV9jbWRfZW5hYmxlX3RpbWluZ3MgKGNoYXIgKmNv bW1hbmQsIGNoYXIgKiphcmd2LCBpbnQgYXJnYykKKyB7CisgICBpZiAoYXJn YyA9PSAwKQorICAgICBkb190aW1pbmdzID0gMTsKKyAgIGVsc2UgaWYgKGFy Z2MgPT0gMSkKKyAgICAgeworICAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbMF0s ICJ5ZXMiKSA9PSAwKQorIAlkb190aW1pbmdzID0gMTsKKyAgICAgICBlbHNl IGlmIChzdHJjbXAgKGFyZ3ZbMF0sICJubyIpID09IDApCisgCWRvX3RpbWlu Z3MgPSAwOworICAgICAgIGVsc2UKKyAJZ290byB1c2FnZV9lcnJvcjsKKyAg ICAgfQorICAgZWxzZQorICAgICBnb3RvIHVzYWdlX2Vycm9yOworICAgICAK KyAgIHJldHVybiBNSV9DTURfRE9ORTsKKyAKKyAgdXNhZ2VfZXJyb3I6Cisg ICBlcnJvciAoIm1pX2NtZF9lbmFibGVfdGltaW5nczogVXNhZ2U6ICVzIHt5 ZXN8bm99IiwgY29tbWFuZCk7CisgICByZXR1cm4gTUlfQ01EX0VSUk9SOwor IH0KKyAKICAvKiBFeGVjdXRlIGEgY29tbWFuZCB3aXRoaW4gYSBzYWZlIGVu dmlyb25tZW50LgogICAgIFJldHVybiA8MCBmb3IgZXJyb3I7ID49MCBmb3Ig b2suCiAgCioqKioqKioqKioqKioqKiBjYXB0dXJlZF9taV9leGVjdXRlX2Nv bW1hbmQgKHN0cnVjdCB1aV9vCioqKiAxMDI3LDEwMzIgKioqKgotLS0gMTA3 MCwxMDc3IC0tLS0KICAgICAgKHN0cnVjdCBjYXB0dXJlZF9taV9leGVjdXRl X2NvbW1hbmRfYXJncyAqKSBkYXRhOwogICAgc3RydWN0IG1pX3BhcnNlICpj b250ZXh0ID0gYXJncy0+Y29tbWFuZDsKICAKKyAgIHN0cnVjdCBtaV90aW1l c3RhbXAgY21kX2ZpbmlzaGVkOworIAogICAgc3dpdGNoIChjb250ZXh0LT5v cCkKICAgICAgewogIAoqKioqKioqKioqKioqKiogY2FwdHVyZWRfbWlfZXhl Y3V0ZV9jb21tYW5kIChzdHJ1Y3QgdWlfbwoqKiogMTA0MSwxMDQ4ICoqKioK LS0tIDEwODYsMTEwMCAtLS0tCiAgICAgICAgICAgaW5kaWNhdGlvbiBvZiB3 aGF0IGFjdGlvbiBpcyByZXF1aXJlZCBhbmQgdGhlbiBzd2l0Y2ggb24KICAg ICAgICAgICB0aGF0LiAqLwogICAgICAgIGFyZ3MtPmFjdGlvbiA9IEVYRUNV VEVfQ09NTUFORF9ESVNQTEFZX1BST01QVDsKKyAKKyAgICAgICBpZiAoZG9f dGltaW5ncykKKyAJY3VycmVudF9jb21tYW5kX3RzID0gY29udGV4dC0+Y21k X3N0YXJ0OworIAogICAgICAgIGFyZ3MtPnJjID0gbWlfY21kX2V4ZWN1dGUg KGNvbnRleHQpOwogIAorICAgICAgIGlmIChkb190aW1pbmdzKQorICAgICAg ICAgICB0aW1lc3RhbXAgKCZjbWRfZmluaXNoZWQpOworIAogICAgICAgIGlm ICghdGFyZ2V0X2Nhbl9hc3luY19wICgpIHx8ICF0YXJnZXRfZXhlY3V0aW5n KQogIAl7CiAgCSAgLyogcHJpbnQgdGhlIHJlc3VsdCBpZiB0aGVyZSB3ZXJl IG5vIGVycm9ycwoqKioqKioqKioqKioqKiogY2FwdHVyZWRfbWlfZXhlY3V0 ZV9jb21tYW5kIChzdHJ1Y3QgdWlfbwoqKiogMTA1NywxMDYyICoqKioKLS0t IDExMDksMTExOCAtLS0tCiAgCSAgICAgIGZwdXRzX3VuZmlsdGVyZWQgKCJe ZG9uZSIsIHJhd19zdGRvdXQpOwogIAkgICAgICBtaV9vdXRfcHV0ICh1aW91 dCwgcmF3X3N0ZG91dCk7CiAgCSAgICAgIG1pX291dF9yZXdpbmQgKHVpb3V0 KTsKKyAJICAgICAgLyogSGF2ZSB0byBjaGVjayBjbWRfc3RhcnQsIHNpbmNl IHRoZSBjb21tYW5kIGNvdWxkIGJlCisgCQkgLWVuYWJsZS10aW1pbmdzLiAg Ki8KKyAJICAgICAgaWYgKGRvX3RpbWluZ3MgJiYgY29udGV4dC0+Y21kX3N0 YXJ0KQorIAkJICBwcmludF9kaWZmIChjb250ZXh0LT5jbWRfc3RhcnQsICZj bWRfZmluaXNoZWQpOwogIAkgICAgICBmcHV0c191bmZpbHRlcmVkICgiXG4i LCByYXdfc3Rkb3V0KTsKICAJICAgIH0KICAJICBlbHNlIGlmIChhcmdzLT5y YyA9PSBNSV9DTURfRVJST1IpCioqKioqKioqKioqKioqKiBtaV9leGVjdXRl X2NvbW1hbmQgKGNoYXIgKmNtZCwgaW50IGZyb21fCioqKiAxMTUyLDExNTcg KioqKgotLS0gMTIwOCwxMjIxIC0tLS0KICAgIGlmIChjb21tYW5kICE9IE5V TEwpCiAgICAgIHsKICAgICAgICBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiByZXN1 bHQ7CisgCisgICAgICAgaWYgKGRvX3RpbWluZ3MpCisgCXsKKyAJICBjb21t YW5kLT5jbWRfc3RhcnQgPSAoc3RydWN0IG1pX3RpbWVzdGFtcCAqKQorIAkg ICAgeG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgbWlfdGltZXN0YW1wKSk7Cisg CSAgdGltZXN0YW1wIChjb21tYW5kLT5jbWRfc3RhcnQpOworIAl9CisgCiAg ICAgICAgLyogRklYTUU6IGNhZ25leS8xOTk5LTExLTA0OiBDYW4gdGhpcyB1 c2Ugb2YgY2F0Y2hfZXhjZXB0aW9ucyBlaXRoZXIKICAgICAgICAgICBiZSBw dXNoZWQgZXZlbiBmdXJ0aGVyIGRvd24gb3IgZXZlbiBlbGltaW5hdGVkPyAq LwogICAgICAgIGFyZ3MuY29tbWFuZCA9IGNvbW1hbmQ7CioqKioqKioqKioq KioqKiBtaV9leGVjdXRlX2FzeW5jX2NsaV9jb21tYW5kIChjaGFyICptaSwg CioqKiAxMzQxLDEzNDYgKioqKgotLS0gMTQwNSwxNDEyIC0tLS0KICAgICAg ICBmcHV0c191bmZpbHRlcmVkICgiKnN0b3BwZWQiLCByYXdfc3Rkb3V0KTsK ICAgICAgICBtaV9vdXRfcHV0ICh1aW91dCwgcmF3X3N0ZG91dCk7CiAgICAg ICAgbWlfb3V0X3Jld2luZCAodWlvdXQpOworICAgICAgIGlmIChkb190aW1p bmdzKQorICAgICAgIAlwcmludF9kaWZmX25vdyAoY3VycmVudF9jb21tYW5k X3RzKTsKICAgICAgICBmcHV0c191bmZpbHRlcmVkICgiXG4iLCByYXdfc3Rk b3V0KTsKICAgICAgICByZXR1cm4gTUlfQ01EX1FVSUVUOwogICAgICB9Cioq KioqKioqKioqKioqKiBfaW5pdGlhbGl6ZV9taV9tYWluICh2b2lkKQoqKiog MTQ1NywxNDU5ICoqKioKLS0tIDE1MjMsMTU3MSAtLS0tCiAgICBERVBSRUNB VEVEX1JFR0lTVEVSX0dEQkFSQ0hfU1dBUCAob2xkX3JlZ3MpOwogICAgZGVw cmVjYXRlZF9yZWdpc3Rlcl9nZGJhcmNoX3N3YXAgKE5VTEwsIDAsIG1pX3Nl dHVwX2FyY2hpdGVjdHVyZV9kYXRhKTsKICB9CisgCisgc3RhdGljIHZvaWQg CisgdGltZXN0YW1wIChzdHJ1Y3QgbWlfdGltZXN0YW1wICp0dikKKyAgIHsK KyAgICAgbG9uZyB1c2VjOworICAgICBnZXR0aW1lb2ZkYXkgKCZ0di0+d2Fs bGNsb2NrLCBOVUxMKTsKKyAjaWZkZWYgSEFWRV9HRVRSVVNBR0UKKyAgICAg Z2V0cnVzYWdlIChSVVNBR0VfU0VMRiwgJnJ1c2FnZSk7CisgICAgIHR2LT51 dGltZS50dl9zZWMgPSBydXNhZ2UucnVfdXRpbWUudHZfc2VjOworICAgICB0 di0+dXRpbWUudHZfdXNlYyA9IHJ1c2FnZS5ydV91dGltZS50dl91c2VjOwor ICAgICB0di0+c3RpbWUudHZfc2VjID0gcnVzYWdlLnJ1X3N0aW1lLnR2X3Nl YzsKKyAgICAgdHYtPnN0aW1lLnR2X3VzZWMgPSBydXNhZ2UucnVfc3RpbWUu dHZfdXNlYzsKKyAjZWxzZQorICAgICB1c2VjID0gZ2V0X3J1bl90aW1lICgp OworICAgICB0di0+dXRpbWUudHZfc2VjID0gdXNlYy8xMDAwMDAwOworICAg ICB0di0+dXRpbWUudHZfdXNlYyA9IHVzZWMgLSAxMDAwMDAwKnR2LT51dGlt ZS50dl9zZWM7CisgICAgIHR2LT5zdGltZS50dl9zZWMgPSAwOworICAgICB0 di0+c3RpbWUudHZfdXNlYyA9IDA7CisgI2VuZGlmCisgICB9CisgCisgc3Rh dGljIHZvaWQgCisgcHJpbnRfZGlmZl9ub3cgKHN0cnVjdCBtaV90aW1lc3Rh bXAgKnN0YXJ0KQorICAgeworICAgICBzdHJ1Y3QgbWlfdGltZXN0YW1wIG5v dzsKKyAgICAgdGltZXN0YW1wICgmbm93KTsKKyAgICAgcHJpbnRfZGlmZiAo c3RhcnQsICZub3cpOworICAgfQorIAorIHN0YXRpYyBsb25nIAorIHRpbWV2 YWxfZGlmZiAoc3RydWN0IHRpbWV2YWwgc3RhcnQsIHN0cnVjdCB0aW1ldmFs IGVuZCkKKyAgIHsKKyAgICAgcmV0dXJuICgoZW5kLnR2X3NlYyAtIHN0YXJ0 LnR2X3NlYykgKiAxMDAwMDAwKQorICAgICAgICsgKGVuZC50dl91c2VjIC0g c3RhcnQudHZfdXNlYyk7CisgICB9CisgCisgc3RhdGljIHZvaWQgCisgcHJp bnRfZGlmZiAoc3RydWN0IG1pX3RpbWVzdGFtcCAqc3RhcnQsIHN0cnVjdCBt aV90aW1lc3RhbXAgKmVuZCkKKyAgIHsKKyAgICAgZnByaW50Zl91bmZpbHRl cmVkCisgICAgICAgKHJhd19zdGRvdXQsCisgICAgICAgICIsdGltZT17d2Fs bGNsb2NrPVwiJTAuNWZcIix1c2VyPVwiJTAuNWZcIixzeXN0ZW09XCIlMC41 ZlwifSIsIAorICAgICAgICB0aW1ldmFsX2RpZmYgKHN0YXJ0LT53YWxsY2xv Y2ssIGVuZC0+d2FsbGNsb2NrKSAvIDEwMDAwMDAuMCwgCisgICAgICAgIHRp bWV2YWxfZGlmZiAoc3RhcnQtPnV0aW1lLCBlbmQtPnV0aW1lKSAvIDEwMDAw MDAuMCwgCisgICAgICAgIHRpbWV2YWxfZGlmZiAoc3RhcnQtPnN0aW1lLCBl bmQtPnN0aW1lKSAvIDEwMDAwMDAuMCk7CisgICB9CkluZGV4OiBtaS9taS1j bWRzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9z cmMvc3JjL2dkYi9taS9taS1jbWRzLmMsdgpyZXRyaWV2aW5nIHJldmlzaW9u IDEuMjMKZGlmZiAtYyAtcCAtcjEuMjMgbWktY21kcy5jCioqKiBtaS9taS1j bWRzLmMJOSBKYW4gMjAwNyAxNzo1OTowOCAtMDAwMAkxLjIzCi0tLSBtaS9t aS1jbWRzLmMJMiBGZWIgMjAwNyAyMjo0Mzo1MiAtMDAwMAoqKioqKioqKioq KioqKiogc3RydWN0IG1pX2NtZCBtaV9jbWRzW10gPQoqKiogNTMsNTggKioq KgotLS0gNTMsNTkgLS0tLQogICAgeyAiZGF0YS1yZWFkLW1lbW9yeSIsIHsg TlVMTCwgMCB9LCAwLCBtaV9jbWRfZGF0YV9yZWFkX21lbW9yeX0sCiAgICB7 ICJkYXRhLXdyaXRlLW1lbW9yeSIsIHsgTlVMTCwgMCB9LCAwLCBtaV9jbWRf ZGF0YV93cml0ZV9tZW1vcnl9LAogICAgeyAiZGF0YS13cml0ZS1yZWdpc3Rl ci12YWx1ZXMiLCB7IE5VTEwsIDAgfSwgMCwgbWlfY21kX2RhdGFfd3JpdGVf cmVnaXN0ZXJfdmFsdWVzfSwKKyAgIHsgImVuYWJsZS10aW1pbmdzIiwgeyBO VUxMLCAwIH0sIDAsIG1pX2NtZF9lbmFibGVfdGltaW5nc30sCiAgICB7ICJl bnZpcm9ubWVudC1jZCIsIHsgTlVMTCwgMCB9LCAwLCBtaV9jbWRfZW52X2Nk fSwKICAgIHsgImVudmlyb25tZW50LWRpcmVjdG9yeSIsIHsgTlVMTCwgMCB9 LCAwLCBtaV9jbWRfZW52X2Rpcn0sCiAgICB7ICJlbnZpcm9ubWVudC1wYXRo IiwgeyBOVUxMLCAwIH0sIDAsIG1pX2NtZF9lbnZfcGF0aH0sCkluZGV4OiBt aS9taS1jbWRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTog L2N2cy9zcmMvc3JjL2dkYi9taS9taS1jbWRzLmgsdgpyZXRyaWV2aW5nIHJl dmlzaW9uIDEuMjAKZGlmZiAtYyAtcCAtcjEuMjAgbWktY21kcy5oCioqKiBt aS9taS1jbWRzLmgJOSBKYW4gMjAwNyAxNzo1OTowOCAtMDAwMAkxLjIwCi0t LSBtaS9taS1jbWRzLmgJMiBGZWIgMjAwNyAyMjo0Mzo1MiAtMDAwMAoqKioq KioqKioqKioqKiogZXh0ZXJuIG1pX2NtZF9hcmd2X2Z0eXBlIG1pX2NtZF9k YXRhX2xpcwoqKiogNzIsNzcgKioqKgotLS0gNzIsNzggLS0tLQogIGV4dGVy biBtaV9jbWRfYXJndl9mdHlwZSBtaV9jbWRfZGF0YV9yZWFkX21lbW9yeTsK ICBleHRlcm4gbWlfY21kX2FyZ3ZfZnR5cGUgbWlfY21kX2RhdGFfd3JpdGVf bWVtb3J5OwogIGV4dGVybiBtaV9jbWRfYXJndl9mdHlwZSBtaV9jbWRfZGF0 YV93cml0ZV9yZWdpc3Rlcl92YWx1ZXM7CisgZXh0ZXJuIG1pX2NtZF9hcmd2 X2Z0eXBlIG1pX2NtZF9lbmFibGVfdGltaW5nczsKICBleHRlcm4gbWlfY21k X2FyZ3ZfZnR5cGUgbWlfY21kX2Vudl9jZDsKICBleHRlcm4gbWlfY21kX2Fy Z3ZfZnR5cGUgbWlfY21kX2Vudl9kaXI7CiAgZXh0ZXJuIG1pX2NtZF9hcmd2 X2Z0eXBlIG1pX2NtZF9lbnZfcGF0aDsKSW5kZXg6IG1pL21pLXBhcnNlLmgK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj L2dkYi9taS9taS1wYXJzZS5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjYK ZGlmZiAtYyAtcCAtcjEuNiBtaS1wYXJzZS5oCioqKiBtaS9taS1wYXJzZS5o CTkgSmFuIDIwMDcgMTc6NTk6MDggLTAwMDAJMS42Ci0tLSBtaS9taS1wYXJz ZS5oCTIgRmViIDIwMDcgMjI6NDM6NTIgLTAwMDAKKioqKioqKioqKioqKioq CioqKiAyNCwyOSAqKioqCi0tLSAyNCwzNiAtLS0tCiAgCiAgLyogTUkgcGFy c2VyICovCiAgCisgLyogVGltZXN0YW1wcyBmb3IgY3VycmVudCBjb21tYW5k IGFuZCBsYXN0IGFzeW5jaHJvbm91cyBjb21tYW5kLiAgKi8KKyBzdHJ1Y3Qg bWlfdGltZXN0YW1wIHsKKyAgIHN0cnVjdCB0aW1ldmFsIHdhbGxjbG9jazsK KyAgIHN0cnVjdCB0aW1ldmFsIHV0aW1lOworICAgc3RydWN0IHRpbWV2YWwg c3RpbWU7CisgfTsKKyAKICBlbnVtIG1pX2NvbW1hbmRfdHlwZQogICAgewog ICAgICBNSV9DT01NQU5ELCBDTElfQ09NTUFORAoqKioqKioqKioqKioqKiog c3RydWN0IG1pX3BhcnNlCioqKiAzNSw0MCAqKioqCi0tLSA0Miw0OCAtLS0t CiAgICAgIGNoYXIgKmNvbW1hbmQ7CiAgICAgIGNoYXIgKnRva2VuOwogICAg ICBjb25zdCBzdHJ1Y3QgbWlfY21kICpjbWQ7CisgICAgIHN0cnVjdCBtaV90 aW1lc3RhbXAgKmNtZF9zdGFydDsKICAgICAgY2hhciAqYXJnczsKICAgICAg Y2hhciAqKmFyZ3Y7CiAgICAgIGludCBhcmdjOwo= --Sp3ovyvc9L--