From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Jarek Czekalski Newsgroups: gmane.emacs.bugs Subject: bug#15801: 24.3.50; bar scrolling freezes gtk emacs Date: Sun, 08 Dec 2013 17:14:15 +0100 Message-ID: <52A49AD7.9060605@poczta.onet.pl> References: <5277EA95.4070001@poczta.onet.pl> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------060208000206030802030408" X-Trace: ger.gmane.org 1386519255 23323 80.91.229.3 (8 Dec 2013 16:14:15 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 8 Dec 2013 16:14:15 +0000 (UTC) To: 15801@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Dec 08 17:14:21 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Vpgzt-0006jA-E4 for geb-bug-gnu-emacs@m.gmane.org; Sun, 08 Dec 2013 17:14:21 +0100 Original-Received: from localhost ([::1]:39964 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vpgzs-0003O2-Sn for geb-bug-gnu-emacs@m.gmane.org; Sun, 08 Dec 2013 11:14:20 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:49529) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vpgzi-0003Mu-Qo for bug-gnu-emacs@gnu.org; Sun, 08 Dec 2013 11:14:17 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vpgzb-0006Zs-LY for bug-gnu-emacs@gnu.org; Sun, 08 Dec 2013 11:14:10 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:52543) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vpgzb-0006Zo-E6 for bug-gnu-emacs@gnu.org; Sun, 08 Dec 2013 11:14:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1Vpgza-0000je-ML for bug-gnu-emacs@gnu.org; Sun, 08 Dec 2013 11:14:02 -0500 X-Loop: help-debbugs@gnu.org In-Reply-To: <5277EA95.4070001@poczta.onet.pl> Resent-From: Jarek Czekalski Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 08 Dec 2013 16:14:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 15801 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 15801-submit@debbugs.gnu.org id=B15801.13865192032769 (code B ref 15801); Sun, 08 Dec 2013 16:14:02 +0000 Original-Received: (at 15801) by debbugs.gnu.org; 8 Dec 2013 16:13:23 +0000 Original-Received: from localhost ([127.0.0.1]:38329 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Vpgyu-0000iZ-Td for submit@debbugs.gnu.org; Sun, 08 Dec 2013 11:13:22 -0500 Original-Received: from smtpo56.poczta.onet.pl ([213.180.142.187]:58154) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Vpgyp-0000iK-7l for 15801@debbugs.gnu.org; Sun, 08 Dec 2013 11:13:18 -0500 Original-Received: from [192.168.17.5] (cj.e-siemianowice.pl [95.215.234.30]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: jarekczek@poczta.onet.pl) by smtp.poczta.onet.pl (Onet) with ESMTPSA id 3dcsyf0yVFzZCVLs for <15801@debbugs.gnu.org>; Sun, 8 Dec 2013 17:13:13 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=poczta.onet.pl; s=2011; t=1386519194; bh=bztySnlEvUs6PR5poRV7aDgzGfwKnk3+Ho46AtBQo/4=; h=Message-ID:Date:From:MIME-Version:To:Subject:Content-Type; b=nM1aIpP6XooczVUKvIfzHRURtoKr6kw1HjiF5+BZQdNELoAop6gL3pLgtXXlQXBzw ddJY6P8wBmG99rLLXjN6ZL5uAW11ARg/UnHBJZcgrBLgp2by2KeSYx5NvkmiuHh2VI AKjJlhFJ1OeFrfL86VjGk32V06MCgJ7Op3c5pqjE= User-Agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.1.1 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:81624 Archived-At: This is a multi-part message in MIME format. --------------060208000206030802030408 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This time the posts consists of 3 parts: the poll, the bug, the patch. THE POLL about reproducability Jan - almost unable to reproduce using gtk 3.8.6 and 2 core Intel 2.6GHz. On a faster machine never reproduced. Steve Berman - can't touch the scroll bar without a freeze, gtk 3.10.2, AMD 3.4 GHz Jarek - reproducing with a couple of scroll bar movements, gtk 3.8.x, Celeron 3GHz So at least 2 people are reproducing easily, including me. THE BUG in gtk I submitted a bug in gtk [1], as I suspect the motion events compression introduced in 3.7.10 is responsible for the freeze. Unfortunately I cannot reproduce without Emacs. Simply inserting gtk main loop call inside motion event handler in gtk3demo app, plus some random delays, does not allow to freeze it. Maybe breaking the chain of motion events with something different is necessary. In gtk 3.10 It will be possible to switch off the motion events compression, as it introduces also another problems, as reported in gtk bug [2], "motion_compression hurts precision for drawing". The switch is not planned to be merged into 3.8. In my opinion gtk with clocks and motion compression does not make sure that the pausing/unpausing of events is always paired. Unpaired pause results in a freeze. However the requirements for the freeze may be very difficult to meet, thus the bug remains unproven. [1] https://bugzilla.gnome.org/show_bug.cgi?id=719883 [2] https://bugzilla.gnome.org/show_bug.cgi?id=702392 THE PATCH for Emacs Emacs is not free of bugs in this area. I consider a bug the behaviour, when inside a gtk signal handler (scroll bar event) we enter another gtk event loop. That's because of (almost) undocumented feature of unblock_input. It does not only process the events that came during block/unblock pair, but it also processes the queue of events that were not processed before. Emacs seems to rely on calls to ublock_input, which trigger reading the input. A function without block/unblock statements would actually be never interrupted. When block/unblock pair is inserted, it will cause input handling at the moment of unblock_input call. That does not hurt much, as stated by Stephan in [3], but introduces a counter-intuitive feature: the function containing block/unblock is usually safer than the one not containing them. It is most important in callbacks. A callback containing block/unblock is unsafe, unless it is contained in an outer block/unblock pair. The patch introduces block/unblock input wrapper around the glib main loop in xgselect.c, thus preventing main loop recursion. The recursion was occuring when unblock_input was called inside the scroll bar callback. Full backtrace attached. This time I believe the patch is something that should be applied. It contains also comments, that should make some features better noticable. One of the comments is for unblock_input. I hope it's agreeable. Jarek [3] http://emacs.1067599.n5.nabble.com/GTK-stack-busting-loop-tp219788p219791.html --------------060208000206030802030408 Content-Type: text/plain; charset=ISO-8859-1; name="reent_bt.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="reent_bt.txt" U2NyaXB0IHN0YXJ0ZWQgb24gU2F0IDA3IERlYyAyMDEzIDEwOjQzOjE4IEFNIENFVApqY2Rl YjovbS91c3Ivc3JjL2d0aysjIGdkYgggCAggCAggCGJzPTEgZ2RiIC0tYXJncyBlbWFjcyAt UQ0KR05VIGdkYiAoR0RCKSA3LjYuMSAoRGViaWFuIDcuNi4xLTEpDQpDb3B5cmlnaHQgKEMp IDIwMTMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQpMaWNlbnNlIEdQTHYzKzog R05VIEdQTCB2ZXJzaW9uIDMgb3IgbGF0ZXIgPGh0dHA6Ly9nbnUub3JnL2xpY2Vuc2VzL2dw bC5odG1sPg0KVGhpcyBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgYXJlIGZyZWUgdG8gY2hhbmdl IGFuZCByZWRpc3RyaWJ1dGUgaXQuDQpUaGVyZSBpcyBOTyBXQVJSQU5UWSwgdG8gdGhlIGV4 dGVudCBwZXJtaXR0ZWQgYnkgbGF3LiAgVHlwZSAic2hvdyBjb3B5aW5nIg0KYW5kICJzaG93 IHdhcnJhbnR5IiBmb3IgZGV0YWlscy4NClRoaXMgR0RCIHdhcyBjb25maWd1cmVkIGFzICJp NDg2LWxpbnV4LWdudSIuDQpGb3IgYnVnIHJlcG9ydGluZyBpbnN0cnVjdGlvbnMsIHBsZWFz ZSBzZWU6DQo8aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2dkYi9idWdzLz4uLi4NClJl YWRpbmcgc3ltYm9scyBmcm9tIC91c3IvbG9jYWwvYmluL2VtYWNzLTI0LjMuNTAuLi5kb25l Lg0KKGdkYikgc3RhcnQNClRlbXBvcmFyeSBicmVha3BvaW50IDEgYXQgMHg4MDU4MmYwOiBm aWxlIC4uLy4uL2VtYWNzLWNoZWNrb3V0L3NyYy9lbWFjcy5jLCBsaW5lIDY4OC4NClN0YXJ0 aW5nIHByb2dyYW06IC91c3IvbG9jYWwvYmluL2VtYWNzIC1RDQp3YXJuaW5nOiBDb3VsZCBu b3QgbG9hZCBzaGFyZWQgbGlicmFyeSBzeW1ib2xzIGZvciBsaW51eC1nYXRlLnNvLjEuDQpE byB5b3UgbmVlZCAic2V0IHNvbGliLXNlYXJjaC1wYXRoIiBvciAic2V0IHN5c3Jvb3QiPw0K W1RocmVhZCBkZWJ1Z2dpbmcgdXNpbmcgbGlidGhyZWFkX2RiIGVuYWJsZWRdDQpVc2luZyBo b3N0IGxpYnRocmVhZF9kYiBsaWJyYXJ5ICIvbGliL2kzODYtbGludXgtZ251L2k2ODYvY21v di9saWJ0aHJlYWRfZGIuc28uMSIuDQoNClRlbXBvcmFyeSBicmVha3BvaW50IDEsIG1haW4g KGFyZ2M9MiwgYXJndj0weGJmZmZmNTU0KQ0KICAgIGF0IC4uLy4uL2VtYWNzLWNoZWNrb3V0 L3NyYy9lbWFjcy5jOjY4OA0KNjg4CXsNCihnZGIpIGJyZWFrIGdka2ZyYW1lY2xvY2tpZGxl LmM6MzI5IGlmIGJzbmVzdGVkPjENCkJyZWFrcG9pbnQgMiBhdCAweGI3OGY1OWJmOiBmaWxl IGdka2ZyYW1lY2xvY2tpZGxlLmMsIGxpbmUgMzI5Lg0KKGdkYikgY29udA0KQ29udGludWlu Zy4NCltOZXcgVGhyZWFkIDB4YjVmMmRiNDAgKExXUCAxNzYwNyldDQo8W05ldyBUaHJlYWQg MHhiNTU1NGI0MCAoTFdQIDE3NjA5KV0NCltOZXcgVGhyZWFkIDB4YjRiZmZiNDAgKExXUCAx NzYxMSldDQo8bTw+Pm1QbW1tcG1tbVBtcG1tbVBwbW1tUDxwPG0+bVBtbW1wbW1QbXA8bT5t UG1wbW1tbVBwbW1QbW1wbW1tbVBwbTxtJ21GJ0BtZigwe21QKXB9bSdtRmYoMHttUClwfW0n bUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21G Zigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYo MHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7 bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21Q KXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClw fW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1t J21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdt RidAbSdAbWYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClw fW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1t J21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdt RmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZm KDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigw e21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHtt UClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVAp cH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9 bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0n bUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21G Zigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYo MHttUClwfW0nbUZmKDB7bVApcH1tbVBwbSdtRidAbWYoMG1Qe20pcH1tJ21GJ0BtZigwe21Q KXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClw fW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1t J21GZigwe21QKXB9bW1QJ21GJ0BtZigwe20pcH1tbVAnbUZwbWYoMG1Qe20pcH1tJ21GJ0Bt ZigwbVB7bSlwfW0nbUYnQG0nQG1mKDBtUHttKXB9bSdtRidAbSdAbWYoMG1Qe20pcH1tJ21G bVAnQG1mKDBwbVBwbSdtRnttUCltZnB9bUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYo MHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7 bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21Q KXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClw fW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1t J21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdt RmYoMHttUClwfW0nbUZmKDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMHttUClwfW0nbUZm KDB7bVApcH1tJ21GZigwe21QKXB9bSdtRmYoMG1Qe20pcH1tJ21GJ0BtJ0BtZigwbVB7bSlw fW0nbUZtUCdAbWYoMHttKXB9bSdtRidAbSdAbWYoMG1Qe20pcH1tJ21GZigwe21QKXB9bSdt RmYoMHttUClwfW0nbUYnQG1mKDBtUHttKXB9bSdtRidAbWYoMG1Qe20pcH1tJ21GJ0BtZigw bVB7bSlwfW1tUCdtRmYoMHBtUHBte21QKW1wfW0nbUYnQG0nQG0nQG1mKDAnbUZtUGZwbUZQ ZigxJA0KQnJlYWtwb2ludCAyLCBnZGtfZnJhbWVfY2xvY2tfZmx1c2hfaWRsZSAoZGF0YT0w eDg1ZTQ5NTApDQogICAgYXQgZ2RrZnJhbWVjbG9ja2lkbGUuYzozMjkNCjMyOQkgIGdfc2ln bmFsX2VtaXRfYnlfbmFtZSAoR19PQkpFQ1QgKGNsb2NrKSwgImZsdXNoLWV2ZW50cyIpOw0K KGdkYikgYnQNCiMwICBnZGtfZnJhbWVfY2xvY2tfZmx1c2hfaWRsZSAoZGF0YT0weDg1ZTQ5 NTApIGF0IGdka2ZyYW1lY2xvY2tpZGxlLmM6MzI5DQojMSAgMHhiNzhlNzA3NSBpbiBnZGtf dGhyZWFkc19kaXNwYXRjaCAoZGF0YT1kYXRhQGVudHJ5PTB4OGExMzIzMCkgYXQgZ2RrLmM6 Nzg4DQojMiAgMHhiNzQ4MTBiMSBpbiBnX3RpbWVvdXRfZGlzcGF0Y2ggKHNvdXJjZT1zb3Vy Y2VAZW50cnk9MHg4YTcwZWYwLCANCiAgICBjYWxsYmFjaz0weGI3OGU3MDQwIDxnZGtfdGhy ZWFkc19kaXNwYXRjaD4sIHVzZXJfZGF0YT0weDhhMTMyMzApDQogICAgYXQgL2J1aWxkL2ds aWIyLjAtT3Q4YmJDL2dsaWIyLjAtMi4zNi40Ly4vZ2xpYi9nbWFpbi5jOjQ0MTMNCiMzICAw eGI3NDgwNDJlIGluIGdfbWFpbl9kaXNwYXRjaCAoY29udGV4dD0weDg1Y2Q5MTgsIGNvbnRl eHRAZW50cnk9MHg4NWJkOWEwKQ0KICAgIGF0IC9idWlsZC9nbGliMi4wLU90OGJiQy9nbGli Mi4wLTIuMzYuNC8uL2dsaWIvZ21haW4uYzozMDU0DQojNCAgZ19tYWluX2NvbnRleHRfZGlz cGF0Y2ggKGNvbnRleHQ9Y29udGV4dEBlbnRyeT0weDg1Y2Q5MTgpDQogICAgYXQgL2J1aWxk L2dsaWIyLjAtT3Q4YmJDL2dsaWIyLjAtMi4zNi40Ly4vZ2xpYi9nbWFpbi5jOjM2MzANCiM1 ICAweGI3NDgwN2Q4IGluIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGUgKGNvbnRleHQ9Y29udGV4 dEBlbnRyeT0weDg1Y2Q5MTgsIA0KICAgIGJsb2NrPWJsb2NrQGVudHJ5PTEsIGRpc3BhdGNo PWRpc3BhdGNoQGVudHJ5PTEsIHNlbGY9PG9wdGltaXplZCBvdXQ+KQ0KICAgIGF0IC9idWls ZC9nbGliMi4wLU90OGJiQy9nbGliMi4wLTIuMzYuNC8uL2dsaWIvZ21haW4uYzozNzAxDQoj NiAgMHhiNzQ4MDg5OCBpbiBnX21haW5fY29udGV4dF9pdGVyYXRpb24gKGNvbnRleHQ9MHg4 NWNkOTE4LCANCiAgICBjb250ZXh0QGVudHJ5PTB4MCwgbWF5X2Jsb2NrPW1heV9ibG9ja0Bl bnRyeT0xKQ0KICAgIGF0IC9idWlsZC9nbGliMi4wLU90OGJiQy9nbGliMi4wLTIuMzYuNC8u L2dsaWIvZ21haW4uYzozNzYyDQojNyAgMHhiN2FlZGJkOCBpbiBndGtfbWFpbl9pdGVyYXRp b24gKCkgYXQgZ3RrbWFpbi5jOjEyNjANCiM4ICAweDA4MGYxM2ExIGluIFhUcmVhZF9zb2Nr ZXQgKHRlcm1pbmFsPTB4ODc3M2MxMCwgaG9sZF9xdWl0PTB4YmZmZmRjOWMpDQogICAgYXQg Li4vLi4vZW1hY3MtY2hlY2tvdXQvc3JjL3h0ZXJtLmM6NzA3Nw0KIzkgIDB4MDgxMjUzMjkg aW4gZ29iYmxlX2lucHV0ICgpIGF0IC4uLy4uL2VtYWNzLWNoZWNrb3V0L3NyYy9rZXlib2Fy ZC5jOjY4NDENCiMxMCAweDA4MTI0ZDA1IGluIGhhbmRsZV9hc3luY19pbnB1dCAoKQ0KICAg IGF0IC4uLy4uL2VtYWNzLWNoZWNrb3V0L3NyYy9rZXlib2FyZC5jOjcwODENCiMxMSBwcm9j ZXNzX3BlbmRpbmdfc2lnbmFscyAoKSBhdCAuLi8uLi9lbWFjcy1jaGVja291dC9zcmMva2V5 Ym9hcmQuYzo3MDk1DQojMTIgMHgwODEyNjRlMyBpbiB1bmJsb2NrX2lucHV0ICgpIGF0IC4u Ly4uL2VtYWNzLWNoZWNrb3V0L3NyYy9rZXlib2FyZC5jOjcxMjQNCi0tLVR5cGUgPHJldHVy bj4gdG8gY29udGludWUsIG9yIHEgPHJldHVybj4gdG8gcXVpdC0tLQ0KIzEzIDB4MDgwZWVj YTggaW4geF9zZW5kX3Njcm9sbF9iYXJfZXZlbnQgKHdpbmRvdz08b3B0aW1pemVkIG91dD4s IA0KICAgIHBhcnQ9PG9wdGltaXplZCBvdXQ+LCBwb3J0aW9uPTxvcHRpbWl6ZWQgb3V0Piwg d2hvbGU9d2hvbGVAZW50cnk9MTYxNzI3NSkNCiAgICBhdCAuLi8uLi9lbWFjcy1jaGVja291 dC9zcmMveHRlcm0uYzo0Mjk5DQojMTQgMHgwODBmMDgzMiBpbiB4Z19zY3JvbGxfY2FsbGJh Y2sgKHJhbmdlPXJhbmdlQGVudHJ5PTB4ODRjODIyMCwgDQogICAgc2Nyb2xsPUdUS19TQ1JP TExfSlVNUCwgdmFsdWU9dmFsdWVAZW50cnk9MTk4MDcwNy4zNTk1NTA1NjIsIA0KICAgIHVz ZXJfZGF0YT11c2VyX2RhdGFAZW50cnk9MHg4YTA2ODM4KQ0KICAgIGF0IC4uLy4uL2VtYWNz LWNoZWNrb3V0L3NyYy94dGVybS5jOjQ0NzINCiMxNSAweGI3YWVmMmYzIGluIF9ndGtfbWFy c2hhbF9CT09MRUFOX19FTlVNX0RPVUJMRSAoY2xvc3VyZT0weDhhMWY0NTgsIA0KICAgIHJl dHVybl92YWx1ZT0weGJmZmZkZWUwLCBuX3BhcmFtX3ZhbHVlcz0zLCBwYXJhbV92YWx1ZXM9 MHhiZmZmZGY1MCwgDQogICAgaW52b2NhdGlvbl9oaW50PTB4YmZmZmRlZmMsIG1hcnNoYWxf ZGF0YT0weDApIGF0IGd0a21hcnNoYWxlcnMuYzo0NDINCiMxNiAweGI3NTRiNjllIGluIGdf Y2xvc3VyZV9pbnZva2UgKGNsb3N1cmU9MHg4YTFmNDU4LCANCiAgICByZXR1cm5fdmFsdWU9 cmV0dXJuX3ZhbHVlQGVudHJ5PTB4YmZmZmRlZTAsIG5fcGFyYW1fdmFsdWVzPTMsIA0KICAg IHBhcmFtX3ZhbHVlcz1wYXJhbV92YWx1ZXNAZW50cnk9MHhiZmZmZGY1MCwgDQogICAgaW52 b2NhdGlvbl9oaW50PWludm9jYXRpb25faGludEBlbnRyeT0weGJmZmZkZWZjKQ0KICAgIGF0 IC9idWlsZC9nbGliMi4wLU90OGJiQy9nbGliMi4wLTIuMzYuNC8uL2dvYmplY3QvZ2Nsb3N1 cmUuYzo3NzcNCiMxNyAweGI3NTVkMTQ5IGluIHNpZ25hbF9lbWl0X3VubG9ja2VkX1IgKG5v ZGU9bm9kZUBlbnRyeT0weDg0YzVjYzgsIGRldGFpbD0wLCANCiAgICBpbnN0YW5jZT0weDg0 YzgyMjAsIGVtaXNzaW9uX3JldHVybj1lbWlzc2lvbl9yZXR1cm5AZW50cnk9MHhiZmZmZTAx MCwgDQogICAgaW5zdGFuY2VfYW5kX3BhcmFtcz0weGJmZmZkZjUwKQ0KICAgIGF0IC9idWls ZC9nbGliMi4wLU90OGJiQy9nbGliMi4wLTIuMzYuNC8uL2dvYmplY3QvZ3NpZ25hbC5jOjM1 ODQNCiMxOCAweGI3NTY0ODg0IGluIGdfc2lnbmFsX2VtaXRfdmFsaXN0IChpbnN0YW5jZT1p bnN0YW5jZUBlbnRyeT0weDg0YzgyMjAsIA0KICAgIHNpZ25hbF9pZD1zaWduYWxfaWRAZW50 cnk9MTUyLCBkZXRhaWw9ZGV0YWlsQGVudHJ5PTAsIA0KICAgIHZhcl9hcmdzPTB4YmZmZmUw YzggIvzg/79cMjMwdcO3IiwgdmFyX2FyZ3NAZW50cnk9MHhiZmZmZTBiYyAiXDAwMSIpDQog ICAgYXQgL2J1aWxkL2dsaWIyLjAtT3Q4YmJDL2dsaWIyLjAtMi4zNi40Ly4vZ29iamVjdC9n c2lnbmFsLmM6MzMzOA0KLS0tVHlwZSA8cmV0dXJuPiB0byBjb250aW51ZSwgb3IgcSA8cmV0 dXJuPiB0byBxdWl0LS0tDQojMTkgMHhiNzU2NGRkMyBpbiBnX3NpZ25hbF9lbWl0IChpbnN0 YW5jZT1pbnN0YW5jZUBlbnRyeT0weDg0YzgyMjAsIA0KICAgIHNpZ25hbF9pZD0xNTIsIGRl dGFpbD1kZXRhaWxAZW50cnk9MCkNCiAgICBhdCAvYnVpbGQvZ2xpYjIuMC1PdDhiYkMvZ2xp YjIuMC0yLjM2LjQvLi9nb2JqZWN0L2dzaWduYWwuYzozMzg0DQojMjAgMHhiN2IzZjYyYSBp biB1cGRhdGVfc2xpZGVyX3Bvc2l0aW9uIChyYW5nZT1yYW5nZUBlbnRyeT0weDg0YzgyMjAs IA0KICAgIG1vdXNlX3g9PG9wdGltaXplZCBvdXQ+LCBtb3VzZV95PTI5OSkgYXQgZ3RrcmFu Z2UuYzoyNzQ2DQojMjEgMHhiN2IzZmE0ZSBpbiBndGtfcmFuZ2VfbW90aW9uX25vdGlmeSAo d2lkZ2V0PTB4ODRjODIyMCwgZXZlbnQ9MHg4NTE5NzcwKQ0KICAgIGF0IGd0a3JhbmdlLmM6 MjkxMQ0KIzIyIDB4YjdhZWVjMTYgaW4gX2d0a19tYXJzaGFsX0JPT0xFQU5fX0JPWEVEdiAo Y2xvc3VyZT0weDg1YmM2YTgsIA0KICAgIHJldHVybl92YWx1ZT0weGJmZmZlMjY4LCBpbnN0 YW5jZT0weDg0YzgyMjAsIA0KICAgIGFyZ3M9MHhiZmZmZTMzYyAicFwyMjdRXGJcXOP/v1ww MjBcMjI3W1xiXDIwMGRMXGJoXDAxN+a359LCt2hcMDE35rcgXDIwMkxcYiIsIG1hcnNoYWxf ZGF0YT0weGI3YjNmOTkwIDxndGtfcmFuZ2VfbW90aW9uX25vdGlmeT4sIG5fcGFyYW1zPTEs IA0KICAgIHBhcmFtX3R5cGVzPTB4ODViYmRjOCkgYXQgZ3RrbWFyc2hhbGVycy5jOjEzMA0K IzIzIDB4Yjc1NGEwNzcgaW4gZ190eXBlX2NsYXNzX21ldGFfbWFyc2hhbHYgKGNsb3N1cmU9 MHg4NWJjNmE4LCANCiAgICByZXR1cm5fdmFsdWU9MHhiZmZmZTI2OCwgaW5zdGFuY2U9MHg4 NGM4MjIwLCANCiAgICBhcmdzPTB4YmZmZmUzM2MgInBcMjI3UVxiXFzj/79cMDIwXDIyN1tc YlwyMDBkTFxiaFwwMTfmt+fSwrdoXDAxN+a3IFwyMDJMXGIiLCBtYXJzaGFsX2RhdGE9MHhj Yywgbl9wYXJhbXM9MSwgcGFyYW1fdHlwZXM9MHg4NWJiZGM4KQ0KICAgIGF0IC9idWlsZC9n bGliMi4wLU90OGJiQy9nbGliMi4wLTIuMzYuNC8uL2dvYmplY3QvZ2Nsb3N1cmUuYzo5OTcN CiMyNCAweGI3NTRiOGRlIGluIF9nX2Nsb3N1cmVfaW52b2tlX3ZhIChjbG9zdXJlPWNsb3N1 cmVAZW50cnk9MHg4NWJjNmE4LCANCiAgICByZXR1cm5fdmFsdWU9cmV0dXJuX3ZhbHVlQGVu dHJ5PTB4YmZmZmUyNjgsIA0KICAgIGluc3RhbmNlPWluc3RhbmNlQGVudHJ5PTB4ODRjODIy MCwgDQogICAgYXJncz1hcmdzQGVudHJ5PTB4YmZmZmUzM2MgInBcMjI3UVxiXFzj/79cMDIw XDIyN1tcYlwyMDBkTFxiaFwwMTfmt+fSwrdoXDAxN+a3IFwyMDJMXGIiLCBuX3BhcmFtcz0x LCBwYXJhbV90eXBlcz0weDg1YmJkYzgpDQogICAgYXQgL2J1aWxkL2dsaWIyLjAtT3Q4YmJD L2dsaWIyLjAtMi4zNi40Ly4vZ29iamVjdC9nY2xvc3VyZS5jOjg0MA0KLS0tVHlwZSA8cmV0 dXJuPiB0byBjb250aW51ZSwgb3IgcSA8cmV0dXJuPiB0byBxdWl0LS0tDQojMjUgMHhiNzU2 NDIzNyBpbiBnX3NpZ25hbF9lbWl0X3ZhbGlzdCAoaW5zdGFuY2U9aW5zdGFuY2VAZW50cnk9 MHg4NGM4MjIwLCANCiAgICBzaWduYWxfaWQ9c2lnbmFsX2lkQGVudHJ5PTMyLCBkZXRhaWw9 ZGV0YWlsQGVudHJ5PTAsIA0KICAgIHZhcl9hcmdzPXZhcl9hcmdzQGVudHJ5PTB4YmZmZmUz M2MgInBcMjI3UVxiXFzj/79cMDIwXDIyN1tcYlwyMDBkTFxiaFwwMTfmt+fSwrdoXDAxN+a3 IFwyMDJMXGIiKQ0KICAgIGF0IC9idWlsZC9nbGliMi4wLU90OGJiQy9nbGliMi4wLTIuMzYu NC8uL2dvYmplY3QvZ3NpZ25hbC5jOjMyMzQNCiMyNiAweGI3NTY0ZGQzIGluIGdfc2lnbmFs X2VtaXQgKGluc3RhbmNlPWluc3RhbmNlQGVudHJ5PTB4ODRjODIyMCwgDQogICAgc2lnbmFs X2lkPTMyLCBkZXRhaWw9ZGV0YWlsQGVudHJ5PTApDQogICAgYXQgL2J1aWxkL2dsaWIyLjAt T3Q4YmJDL2dsaWIyLjAtMi4zNi40Ly4vZ29iamVjdC9nc2lnbmFsLmM6MzM4NA0KIzI3IDB4 YjdjMmQ4ZmIgaW4gZ3RrX3dpZGdldF9ldmVudF9pbnRlcm5hbCAod2lkZ2V0PXdpZGdldEBl bnRyeT0weDg0YzgyMjAsIA0KICAgIGV2ZW50PWV2ZW50QGVudHJ5PTB4ODUxOTc3MCkgYXQg Z3Rrd2lkZ2V0LmM6NjcyMg0KIzI4IDB4YjdjMmRiZDUgaW4gZ3RrX3dpZGdldF9ldmVudCAo d2lkZ2V0PXdpZGdldEBlbnRyeT0weDg0YzgyMjAsIA0KICAgIGV2ZW50PWV2ZW50QGVudHJ5 PTB4ODUxOTc3MCkgYXQgZ3Rrd2lkZ2V0LmM6NjM3OQ0KIzI5IDB4YjdhZWNhMjUgaW4gcHJv cGFnYXRlX2V2ZW50X3VwICh0b3Btb3N0PTxvcHRpbWl6ZWQgb3V0PiwgDQogICAgZXZlbnQ9 PG9wdGltaXplZCBvdXQ+LCB3aWRnZXQ9MHg4NGM4MjIwKSBhdCBndGttYWluLmM6MjM5Mw0K IzMwIHByb3BhZ2F0ZV9ldmVudCAod2lkZ2V0PTxvcHRpbWl6ZWQgb3V0PiwgZXZlbnQ9MHg4 NTE5NzcwLCBjYXB0dXJlZD0wLCANCiAgICB0b3Btb3N0PTB4MCkgYXQgZ3RrbWFpbi5jOjI1 MDENCiMzMSAweGI3YWVlODEwIGluIGd0a19tYWluX2RvX2V2ZW50IChldmVudD0weDg1MTk3 NzApIGF0IGd0a21haW4uYzoxNzE2DQojMzIgMHhiNzhmMDUyYyBpbiBfZ2RrX2V2ZW50X2Vt aXQgKGV2ZW50PWV2ZW50QGVudHJ5PTB4ODUxOTc3MCkNCiAgICBhdCBnZGtldmVudHMuYzo3 MQ0KIzMzIDB4Yjc4ZWYwZjggaW4gX2dka19kaXNwbGF5X2ZsdXNoX2V2ZW50cyAoZGlzcGxh eT1kaXNwbGF5QGVudHJ5PTB4ODVkYzA0MCkNCiAgICBhdCBnZGtkaXNwbGF5LmM6MjAzOQ0K IzM0IDB4Yjc4ZmJlYzYgaW4gZ2RrX3dpbmRvd19mbHVzaF9ldmVudHMgKGNsb2NrPTB4ODVl NDk1MCwgZGF0YT0weDg1ZTI5ODApDQogICAgYXQgZ2Rrd2luZG93LmM6MTE2MTANCi0tLVR5 cGUgPHJldHVybj4gdG8gY29udGludWUsIG9yIHEgPHJldHVybj4gdG8gcXVpdC0tLQ0KIzM1 IDB4Yjc1NGQzMzkgaW4gZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX1ZPSUR2IChjbG9zdXJl PTB4ODUzYTJmOCwgDQogICAgcmV0dXJuX3ZhbHVlPTB4MCwgaW5zdGFuY2U9MHg4NWU0OTUw LCBhcmdzPTB4YmZmZmU2YjggIlwwMDEiLCANCiAgICBtYXJzaGFsX2RhdGE9MHgwLCBuX3Bh cmFtcz0wLCBwYXJhbV90eXBlcz0weDApDQogICAgYXQgL2J1aWxkL2dsaWIyLjAtT3Q4YmJD L2dsaWIyLjAtMi4zNi40Ly4vZ29iamVjdC9nbWFyc2hhbC5jOjExNQ0KIzM2IDB4Yjc1NGI4 ZGUgaW4gX2dfY2xvc3VyZV9pbnZva2VfdmEgKGNsb3N1cmU9Y2xvc3VyZUBlbnRyeT0weDg1 M2EyZjgsIA0KICAgIHJldHVybl92YWx1ZT1yZXR1cm5fdmFsdWVAZW50cnk9MHgwLCBpbnN0 YW5jZT1pbnN0YW5jZUBlbnRyeT0weDg1ZTQ5NTAsIA0KICAgIGFyZ3M9YXJnc0BlbnRyeT0w eGJmZmZlNmI4ICJcMDAxIiwgbl9wYXJhbXM9MCwgcGFyYW1fdHlwZXM9MHgwKQ0KICAgIGF0 IC9idWlsZC9nbGliMi4wLU90OGJiQy9nbGliMi4wLTIuMzYuNC8uL2dvYmplY3QvZ2Nsb3N1 cmUuYzo4NDANCiMzNyAweGI3NTY0MjM3IGluIGdfc2lnbmFsX2VtaXRfdmFsaXN0IChpbnN0 YW5jZT1pbnN0YW5jZUBlbnRyeT0weDg1ZTQ5NTAsIA0KICAgIHNpZ25hbF9pZD1zaWduYWxf aWRAZW50cnk9MTM2LCBkZXRhaWw9ZGV0YWlsQGVudHJ5PTAsIA0KICAgIHZhcl9hcmdzPXZh cl9hcmdzQGVudHJ5PTB4YmZmZmU2YjggIlwwMDEiKQ0KICAgIGF0IC9idWlsZC9nbGliMi4w LU90OGJiQy9nbGliMi4wLTIuMzYuNC8uL2dvYmplY3QvZ3NpZ25hbC5jOjMyMzQNCiMzOCAw eGI3NTY1MjkxIGluIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSAoaW5zdGFuY2U9aW5zdGFuY2VA ZW50cnk9MHg4NWU0OTUwLCANCiAgICBkZXRhaWxlZF9zaWduYWw9ZGV0YWlsZWRfc2lnbmFs QGVudHJ5PTB4Yjc5MzRlMTMgImZsdXNoLWV2ZW50cyIpDQogICAgYXQgL2J1aWxkL2dsaWIy LjAtT3Q4YmJDL2dsaWIyLjAtMi4zNi40Ly4vZ29iamVjdC9nc2lnbmFsLmM6MzQyNA0KIzM5 IDB4Yjc4ZjU5ZDEgaW4gZ2RrX2ZyYW1lX2Nsb2NrX2ZsdXNoX2lkbGUgKGRhdGE9MHg4NWU0 OTUwKQ0KICAgIGF0IGdka2ZyYW1lY2xvY2tpZGxlLmM6MzI5DQojNDAgMHhiNzhlNzA3NSBp biBnZGtfdGhyZWFkc19kaXNwYXRjaCAoZGF0YT1kYXRhQGVudHJ5PTB4OGExMzM5MCkgYXQg Z2RrLmM6Nzg4DQojNDEgMHhiNzQ4MTBiMSBpbiBnX3RpbWVvdXRfZGlzcGF0Y2ggKHNvdXJj ZT1zb3VyY2VAZW50cnk9MHg4NTU1MGMwLCANCiAgICBjYWxsYmFjaz0weGI3OGU3MDQwIDxn ZGtfdGhyZWFkc19kaXNwYXRjaD4sIHVzZXJfZGF0YT0weDhhMTMzOTApDQogICAgYXQgL2J1 aWxkL2dsaWIyLjAtT3Q4YmJDL2dsaWIyLjAtMi4zNi40Ly4vZ2xpYi9nbWFpbi5jOjQ0MTMN CiM0MiAweGI3NDgwNDJlIGluIGdfbWFpbl9kaXNwYXRjaCAoY29udGV4dD0weDg1Y2Q5MTgs IGNvbnRleHRAZW50cnk9MHhiNzUzYzAwMCkNCiAgICBhdCAvYnVpbGQvZ2xpYjIuMC1PdDhi YkMvZ2xpYjIuMC0yLjM2LjQvLi9nbGliL2dtYWluLmM6MzA1NA0KLS0tVHlwZSA8cmV0dXJu PiB0byBjb250aW51ZSwgb3IgcSA8cmV0dXJuPiB0byBxdWl0LS0tDQojNDMgZ19tYWluX2Nv bnRleHRfZGlzcGF0Y2ggKGNvbnRleHQ9Y29udGV4dEBlbnRyeT0weDg1Y2Q5MTgpDQogICAg YXQgL2J1aWxkL2dsaWIyLjAtT3Q4YmJDL2dsaWIyLjAtMi4zNi40Ly4vZ2xpYi9nbWFpbi5j OjM2MzANCiM0NCAweDA4MWZmMTc4IGluIHhnX3NlbGVjdCAoZmRzX2xpbT08b3B0aW1pemVk IG91dD4sIHJmZHM9MHhiZmZmZWQ3MCwgDQogICAgd2Zkcz0weGJmZmZlZGYwLCBlZmRzPTB4 MCwgdGltZW91dD0weGJmZmZlN2M4LCBzaWdtYXNrPTB4MCkNCiAgICBhdCAuLi8uLi9lbWFj cy1jaGVja291dC9zcmMveGdzZWxlY3QuYzoxNDcNCiM0NSAweDA4MWNiMzBiIGluIHdhaXRf cmVhZGluZ19wcm9jZXNzX291dHB1dCAodGltZV9saW1pdD08b3B0aW1pemVkIG91dD4sIA0K ICAgIG5zZWNzPTAsIHJlYWRfa2JkPXJlYWRfa2JkQGVudHJ5PS0xLCBkb19kaXNwbGF5PWRv X2Rpc3BsYXlAZW50cnk9dHJ1ZSwgDQogICAgd2FpdF9mb3JfY2VsbD0xMzg4NjE1MDYsIHdh aXRfcHJvYz13YWl0X3Byb2NAZW50cnk9MHgwLCANCiAgICBqdXN0X3dhaXRfcHJvYz1qdXN0 X3dhaXRfcHJvY0BlbnRyeT0wKQ0KICAgIGF0IC4uLy4uL2VtYWNzLWNoZWNrb3V0L3NyYy9w cm9jZXNzLmM6NDU4NA0KIzQ2IDB4MDgwNjI1OTUgaW4gc2l0X2ZvciAodGltZW91dD10aW1l b3V0QGVudHJ5PTEyMCwgDQogICAgcmVhZGluZz1yZWFkaW5nQGVudHJ5PXRydWUsIGRpc3Bs YXlfb3B0aW9uPWRpc3BsYXlfb3B0aW9uQGVudHJ5PTEpDQogICAgYXQgLi4vLi4vZW1hY3Mt Y2hlY2tvdXQvc3JjL2Rpc3BuZXcuYzo1ODAwDQojNDcgMHgwODEyOTJhNiBpbiByZWFkX2No YXIgKGNvbW1hbmRmbGFnPTEsIG1hcD1tYXBAZW50cnk9MTQyMzkyNjE0LCANCiAgICBwcmV2 X2V2ZW50PTEzODg2MTUwNiwgdXNlZF9tb3VzZV9tZW51PXVzZWRfbW91c2VfbWVudUBlbnRy eT0weGJmZmZmMjViLCANCiAgICBlbmRfdGltZT1lbmRfdGltZUBlbnRyeT0weDApIGF0IC4u Ly4uL2VtYWNzLWNoZWNrb3V0L3NyYy9rZXlib2FyZC5jOjI4MDUNCiM0OCAweDA4MTJhOGE4 IGluIHJlYWRfa2V5X3NlcXVlbmNlIChrZXlidWY9a2V5YnVmQGVudHJ5PTB4YmZmZmYzMDgs IA0KICAgIHByb21wdD0xMzg4NjE1MDYsIGRvbnRfZG93bmNhc2VfbGFzdD1mYWxzZSwgZG9u dF9kb3duY2FzZV9sYXN0QGVudHJ5PTEwLCANCiAgICBjYW5fcmV0dXJuX3N3aXRjaF9mcmFt ZT1jYW5fcmV0dXJuX3N3aXRjaF9mcmFtZUBlbnRyeT10cnVlLCANCiAgICBmaXhfY3VycmVu dF9idWZmZXI9Zml4X2N1cnJlbnRfYnVmZmVyQGVudHJ5PXRydWUsIHByZXZlbnRfcmVkaXNw bGF5PWZhbHNlLCANCiAgICBwcmV2ZW50X3JlZGlzcGxheUBlbnRyeT0xMCwgYnVmc2l6ZT0z MCkNCiAgICBhdCAuLi8uLi9lbWFjcy1jaGVja291dC9zcmMva2V5Ym9hcmQuYzo5MDc0DQoj NDkgMHgwODEyYjlkNiBpbiBjb21tYW5kX2xvb3BfMSAoKSBhdCAuLi8uLi9lbWFjcy1jaGVj a291dC9zcmMva2V5Ym9hcmQuYzoxNDQ1DQotLS1UeXBlIDxyZXR1cm4+IHRvIGNvbnRpbnVl LCBvciBxIDxyZXR1cm4+IHRvIHF1aXQtLS0NCiM1MCAweDA4MThkM2FhIGluIGludGVybmFs X2NvbmRpdGlvbl9jYXNlICgNCiAgICBiZnVuPWJmdW5AZW50cnk9MHg4MTJiODIwIDxjb21t YW5kX2xvb3BfMT4sIGhhbmRsZXJzPTEzODg5NDYwMiwgDQogICAgaGZ1bj1oZnVuQGVudHJ5 PTB4ODEyMzI2MCA8Y21kX2Vycm9yPikNCiAgICBhdCAuLi8uLi9lbWFjcy1jaGVja291dC9z cmMvZXZhbC5jOjEzNDQNCiM1MSAweDA4MTIxNTE1IGluIGNvbW1hbmRfbG9vcF8yIChpZ25v cmU9aWdub3JlQGVudHJ5PTEzODg2MTUwNikNCiAgICBhdCAuLi8uLi9lbWFjcy1jaGVja291 dC9zcmMva2V5Ym9hcmQuYzoxMTcwDQojNTIgMHgwODE4ZDJjZCBpbiBpbnRlcm5hbF9jYXRj aCAodGFnPTEzODg5MjY1MCwgDQogICAgZnVuYz1mdW5jQGVudHJ5PTB4ODEyMTRmMCA8Y29t bWFuZF9sb29wXzI+LCBhcmc9MTM4ODYxNTA2KQ0KICAgIGF0IC4uLy4uL2VtYWNzLWNoZWNr b3V0L3NyYy9ldmFsLmM6MTEwOA0KIzUzIDB4MDgxMjJlNzIgaW4gY29tbWFuZF9sb29wICgp IGF0IC4uLy4uL2VtYWNzLWNoZWNrb3V0L3NyYy9rZXlib2FyZC5jOjExNDkNCiM1NCByZWN1 cnNpdmVfZWRpdF8xICgpIGF0IC4uLy4uL2VtYWNzLWNoZWNrb3V0L3NyYy9rZXlib2FyZC5j Ojc3Nw0KIzU1IDB4MDgxMjMxNGIgaW4gRnJlY3Vyc2l2ZV9lZGl0ICgpIGF0IC4uLy4uL2Vt YWNzLWNoZWNrb3V0L3NyYy9rZXlib2FyZC5jOjg0MQ0KIzU2IDB4MDgwNThlMjggaW4gbWFp biAoYXJnYz08b3B0aW1pemVkIG91dD4sIGFyZ3Y9MHhiZmZmZjU1NCkNCiAgICBhdCAuLi8u Li9lbWFjcy1jaGVja291dC9zcmMvZW1hY3MuYzoxNTk4DQooZ2RiKSBxdWl0DQpBIGRlYnVn Z2luZyBzZXNzaW9uIGlzIGFjdGl2ZS4NCg0KCUluZmVyaW9yIDEgW3Byb2Nlc3MgMTc1Njdd IHdpbGwgYmUga2lsbGVkLg0KDQpRdWl0IGFueXdheT8gKHkgb3IgbikgeQ0KamNkZWI6L20v dXNyL3NyYy9ndGsrIyBleGl0DQpleGl0DQoKU2NyaXB0IGRvbmUgb24gU2F0IDA3IERlYyAy MDEzIDEwOjQ0OjEyIEFNIENFVAo= --------------060208000206030802030408 Content-Type: text/plain; charset=ISO-8859-1; name="scroll_freeze_2_0.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="scroll_freeze_2_0.txt" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9DaGFuZ2VMb2cnCioqKiBzcmMvQ2hhbmdlTG9nCTIw MTMtMTItMDggMDg6MDU6MzYgKzAwMDAKLS0tIHNyYy9DaGFuZ2VMb2cJMjAxMy0xMi0wOCAx NjowMDo0MSArMDAwMAoqKioqKioqKioqKioqKioKKioqIDEsMyAqKioqCi0tLSAxLDkgLS0t LQorIDIwMTMtMTItMDggIEphcmVrIEN6ZWthbHNraSAgPGphcmVrY3pla0Bwb2N6dGEub25l dC5wbD4KKyAKKyAJRml4IGZyZWV6aW5nIHdpdGggc2Nyb2xsIGJhcnMgb2YgR1RLMyBUb29s a2l0IChCdWcjMTU4MDEpLgorIAkqIGtleWJvYXJkLmM6IEEgY29tbWVudCB0byB1bmJsb2Nr X2lucHV0LgorIAkqIHhnc2VsZWN0LmM6IFByZXZlbnQgR2xpYiBtYWluIGxvb3AgcmVjdXJz aW9uLgorIAogIDIwMTMtMTItMDggIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgogIAogIAlVc2UgbGliY3J5cHRvJ3MgY2hlY2tzdW0gaW1wbGVtZW50YXRpb25zIGlmIGF2 YWlsYWJsZSwgZm9yIHNwZWVkLgoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9rZXlib2FyZC5j JwoqKiogc3JjL2tleWJvYXJkLmMJMjAxMy0xMi0wNyAyMzowNDoxMCArMDAwMAotLS0gc3Jj L2tleWJvYXJkLmMJMjAxMy0xMi0wOCAxNToyMDowMCArMDAwMAoqKioqKioqKioqKioqKiog dW5ibG9ja19pbnB1dF90byAoaW50IGxldmVsKQoqKiogNzExOCw3MTI0ICoqKioKICAvKiBF bmQgY3JpdGljYWwgc2VjdGlvbi4KICAKICAgICBJZiBkb2luZyBzaWduYWwtZHJpdmVuIGlu cHV0LCBhbmQgYSBzaWduYWwgY2FtZSBpbiB3aGVuIGlucHV0IHdhcwohICAgIGJsb2NrZWQs IHJlaW52b2tlIHRoZSBzaWduYWwgaGFuZGxlciBub3cgdG8gZGVhbCB3aXRoIGl0LiAgKi8K ICAKICB2b2lkCiAgdW5ibG9ja19pbnB1dCAodm9pZCkKLS0tIDcxMTgsNzEyOSAtLS0tCiAg LyogRW5kIGNyaXRpY2FsIHNlY3Rpb24uCiAgCiAgICAgSWYgZG9pbmcgc2lnbmFsLWRyaXZl biBpbnB1dCwgYW5kIGEgc2lnbmFsIGNhbWUgaW4gd2hlbiBpbnB1dCB3YXMKISAgICBibG9j a2VkLCByZWludm9rZSB0aGUgc2lnbmFsIGhhbmRsZXIgbm93IHRvIGRlYWwgd2l0aCBpdC4K ISAKISAgICBJdCB3aWxsIGFsc28gcHJvY2VzcyBxdWV1ZWQgaW5wdXQsIGlmIGl0IHdhcyBu b3QgcmVhZCBiZWZvcmUuCiEgICAgV2hlbiBhIGxvbmdlciBjb2RlIHNlcXVlbmNlIGRvZXMg bm90IHVzZSBibG9jay91bmJsb2NrIGlucHV0CiEgICAgYXQgYWxsLCB0aGUgd2hvbGUgaW5w dXQgZ2F0aGVyZWQgdXAgdG8gdGhlIG5leHQgY2FsbCB0bwohICAgIHVuYmxvY2tfaW5wdXQg d2lsbCBiZSBwcm9jZXNzZWQgaW5zaWRlIHRoYXQgY2FsbC4gKi8KICAKICB2b2lkCiAgdW5i bG9ja19pbnB1dCAodm9pZCkKCj09PSBtb2RpZmllZCBmaWxlICdzcmMveGdzZWxlY3QuYycK KioqIHNyYy94Z3NlbGVjdC5jCTIwMTMtMDgtMjcgMTk6MzY6MjggKzAwMDAKLS0tIHNyYy94 Z3NlbGVjdC5jCTIwMTMtMTItMDggMTU6NTI6MjggKzAwMDAKKioqKioqKioqKioqKioqIGFs b25nIHdpdGggR05VIEVtYWNzLiAgSWYgbm90LCBzZWUgPGh0dHAKKioqIDI4LDMzICoqKioK LS0tIDI4LDQ0IC0tLS0KICAjaW5jbHVkZSA8dGltZXNwZWMuaD4KICAjaW5jbHVkZSAiZnJh bWUuaCIKICAKKyAvKiB4Z19zZWxlY3QgaXMgYSBwc2VsZWN0IHJlcGxhY2VtZW50LiBXaHkg ZG8gd2UgbmVlZCBhIHNlcGFyYXRlIGZ1bmN0aW9uPworICAgIDEuIFRpbWVvdXRzLiBHbGli IGFuZCBHdGsgcmVseSBvbiB0aW1lciBldmVudHMuIElmIHdlIGRpZCBwc2VsZWN0CisgICAg ICAgd2l0aCBhIGdyZWF0ZXIgdGltZW91dCB0aGVuIHRoZSBvbmUgc2NoZWR1bGVkIGJ5IEds aWIsIHdlIHdvdWxkCisgICAgICAgbm90IGFsbG93IEdsaWIgdG8gcHJvY2VzcyBpdHMgdGlt ZXIgZXZlbnRzLiBXZSB3YW50IEdsaWIgdG8KKyAgICAgICB3b3JrIHNtb290aGx5LCBzbyB3 ZSBuZWVkIHRvIHJlZHVjZSBvdXIgdGltZW91dCB0byBtYXRjaCBHbGliLgorICAgIDIuIERl c2NyaXB0b3JzLiBHbGliIG1heSBsaXN0ZW4gdG8gbW9yZSBmaWxlIGRlc2NyaXB0b3JzIHRo YW4gd2UgZG8uCisgICAgICAgU28gd2UgYWRkIEdsaWIgZGVzY3JpcHRvcnMgdG8gb3VyIHBz ZWxlY3QgcG9vbCwgYnV0IHdlIGRvbid0IGNoYW5nZQorICAgICAgIHRoZSB2YWx1ZSByZXR1 cm5lZCBieSB0aGUgZnVuY3Rpb24uIFRoZSByZXR1cm4gdmFsdWUgIG1hdGNoZXMgb25seQor ICAgICAgIHRoZSBkZXNjcmlwdG9ycyBwYXNzZWQgYXMgYXJndW1lbnRzLCBtYWtpbmcgaXQg Y29tcGF0aWJsZSB3aXRoCisgICAgICAgcGxhaW4gcHNlbGVjdC4gKi8KKyAKICBpbnQKICB4 Z19zZWxlY3QgKGludCBmZHNfbGltLCBmZF9zZXQgKnJmZHMsIGZkX3NldCAqd2ZkcywgZmRf c2V0ICplZmRzLAogIAkgICBzdHJ1Y3QgdGltZXNwZWMgY29uc3QgKnRpbWVvdXQsIHNpZ3Nl dF90IGNvbnN0ICpzaWdtYXNrKQoqKioqKioqKioqKioqKiogeGdfc2VsZWN0IChpbnQgZmRz X2xpbSwgZmRfc2V0ICpyZmRzLCBmZAoqKiogNDUsNTYgKioqKgogICAgaW50IGksIG5mZHMs IHRtb19pbl9taWxsaXNlYzsKICAgIFVTRV9TQUZFX0FMTE9DQTsKICAKLSAgIC8qIERvIG5v dCB0cnkgdG8gb3B0aW1pemUgd2l0aCBhbiBpbml0aWFsIGNoZWNrIHdpdGggZ19tYWluX2Nv bnRleHRfcGVuZGluZwotICAgICAgYW5kIGEgY2FsbCB0byBwc2VsZWN0IGlmIGl0IHJldHVy bnMgZmFsc2UuICBJZiBHZGsgaGFzIGEgdGltZW91dCBmb3IgMC4wMQotICAgICAgc2Vjb25k LCBhbmQgRW1hY3MgaGFzIGEgdGltZW91dCBmb3IgMSBzZWNvbmQsIGdfbWFpbl9jb250ZXh0 X3BlbmRpbmcgd2lsbAotICAgICAgcmV0dXJuIGZhbHNlLCBidXQgdGhlIHRpbWVvdXQgd2ls bCBiZSAxIHNlY29uZCwgdGh1cyBtaXNzaW5nIHRoZSBnZGsKLSAgICAgIHRpbWVvdXQgd2l0 aCBhIGxvdC4gICovCi0gCiAgICBjb250ZXh0ID0gZ19tYWluX2NvbnRleHRfZGVmYXVsdCAo KTsKICAKICAgIGlmIChyZmRzKSBhbGxfcmZkcyA9ICpyZmRzOwotLS0gNTYsNjEgLS0tLQoq KioqKioqKioqKioqKiogeGdfc2VsZWN0IChpbnQgZmRzX2xpbSwgZmRfc2V0ICpyZmRzLCBm ZAoqKiogMTMyLDEzOSAqKioqCi0tLSAxMzcsMTQ5IC0tLS0KICAjaWZkZWYgVVNFX0dUSwog ICAgICAgIGlmIChyZXR2YWwgPT0gMCkKICAjZW5kaWYKKyAgICAgICAgIC8qIFByZXZlbnQg Z19tYWluX2Rpc3BhdGNoIHJlY3Vyc2lvbiwgdGhhdCB3b3VsZCBvY2N1ciB3aXRob3V0Cisg ICAgICAgICAgICBibG9ja19pbnB1dCB3cmFwcGVyLCBiZWNhdXNlIGV2ZW50IGhhbmRsZXJz IGNhbGwKKyAgICAgICAgICAgIHVuYmxvY2tfaW5wdXQuIEV2ZW50IGxvb3AgcmVjdXJzaW9u IHdhcyBjYXVzaW5nIEJ1ZyMxNTgwMS4gKi8KKyAgICAgICAgIGJsb2NrX2lucHV0KCk7CiAg ICAgICAgICB3aGlsZSAoZ19tYWluX2NvbnRleHRfcGVuZGluZyAoY29udGV4dCkpCiAgICAg ICAgICAgIGdfbWFpbl9jb250ZXh0X2Rpc3BhdGNoIChjb250ZXh0KTsKKyAgICAgICAgIHVu YmxvY2tfaW5wdXQoKTsKICAKICAgICAgICAvKiBUbyBub3QgaGF2ZSB0byByZWNhbGN1bGF0 ZSB0aW1lb3V0LCByZXR1cm4gbGlrZSB0aGlzLiAgKi8KICAgICAgICBpZiAocmV0dmFsID09 IDApCgo= --------------060208000206030802030408--