From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dmitry Antipov Newsgroups: gmane.emacs.devel Subject: [RFC] per-frame fonts_changed and cursor_type_changed flags Date: Fri, 16 Nov 2012 15:13:12 +0400 Message-ID: <50A61FC8.6050408@yandex.ru> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------050208070807060008050400" X-Trace: ger.gmane.org 1353064387 3156 80.91.229.3 (16 Nov 2012 11:13:07 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 16 Nov 2012 11:13:07 +0000 (UTC) To: Emacs development discussions Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Nov 16 12:13:18 2012 Return-path: Envelope-to: ged-emacs-devel@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 1TZJrI-00044Q-1V for ged-emacs-devel@m.gmane.org; Fri, 16 Nov 2012 12:13:16 +0100 Original-Received: from localhost ([::1]:54521 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TZJr8-0000TS-1N for ged-emacs-devel@m.gmane.org; Fri, 16 Nov 2012 06:13:06 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:58803) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TZJr2-0000SP-OT for emacs-devel@gnu.org; Fri, 16 Nov 2012 06:13:03 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TZJqz-0000BC-L7 for emacs-devel@gnu.org; Fri, 16 Nov 2012 06:13:00 -0500 Original-Received: from forward10.mail.yandex.net ([77.88.61.49]:60002) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TZJqy-0000At-Ok for emacs-devel@gnu.org; Fri, 16 Nov 2012 06:12:57 -0500 Original-Received: from smtp6.mail.yandex.net (smtp6.mail.yandex.net [77.88.61.56]) by forward10.mail.yandex.net (Yandex) with ESMTP id E79251021559 for ; Fri, 16 Nov 2012 15:12:53 +0400 (MSK) Original-Received: from smtp6.mail.yandex.net (localhost [127.0.0.1]) by smtp6.mail.yandex.net (Yandex) with ESMTP id D2BF816400F8 for ; Fri, 16 Nov 2012 15:12:53 +0400 (MSK) Original-Received: from unknown (unknown [37.139.80.10]) by smtp6.mail.yandex.net (nwsmtp/Yandex) with ESMTP id Cq64e9ZR-Cr6iE1GX; Fri, 16 Nov 2012 15:12:53 +0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yandex.ru; s=mail; t=1353064373; bh=OCw4NFCtaBvZpO6Gj/4YrGDGxC6dTbn822bEOQwNV5c=; h=Message-ID:Date:From:User-Agent:MIME-Version:To:Subject: Content-Type; b=C6CQ1W16xSrkzdYdVCKpEQIMcTPsrCN0owb5vI73W8zMIcnEqjfHPGE7eVw4xn6dX vTkX9+5TtmaWEYPsCf9HKeIRtewjloR/5AYvIGX06S9u0zOlrhEgaWgBEHpUG25mI/ 7PwoP0QXJk1cj06gRJRpIzK3kaVoCR84LYguF2ZM= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121026 Thunderbird/16.0.2 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x-2.6.x [generic] [fuzzy] X-Received-From: 77.88.61.49 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:154877 Archived-At: This is a multi-part message in MIME format. --------------050208070807060008050400 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit This patch tries to offload redisplay from some work, assuming that changing frame font and per-frame cursor type should invalidate only the affected frame. Comments are definitely welcome. Dmitry --------------050208070807060008050400 Content-Type: text/plain; charset=UTF-8; name="redisplay_fonts_and_cursor.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="redisplay_fonts_and_cursor.patch" PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9kaXNwZXh0ZXJuLmgnCi0tLSBzcmMvZGlzcGV4dGVy bi5oCTIwMTItMTAtMDcgMjI6MzE6NTggKzAwMDAKKysrIHNyYy9kaXNwZXh0ZXJuLmgJMjAx Mi0xMS0xNiAwOTowOTowNiArMDAwMApAQCAtMTEyNiwxMiArMTEyNiw2IEBACiAgICAgICAo KFJPVyktPnBoeXNfaGVpZ2h0IC0gKFJPVyktPnBoeXNfYXNjZW50CVwKICAgICAgICA+IChS T1cpLT5oZWlnaHQgLSAoUk9XKS0+YXNjZW50KQogCi0vKiBUcnVlIG1lYW5zIHRoYXQgZm9u dHMgaGF2ZSBiZWVuIGxvYWRlZCBzaW5jZSB0aGUgbGFzdCBnbHlwaAotICAgbWF0cml4IGFk anVzdG1lbnRzLiAgVGhlIGZ1bmN0aW9uIHJlZGlzcGxheV9pbnRlcm5hbCBhZGp1c3RzIGds eXBoCi0gICBtYXRyaWNlcyB3aGVuIHRoaXMgZmxhZyBpcyB0cnVlLiAgKi8KLQotZXh0ZXJu IGJvb2wgZm9udHNfY2hhbmdlZF9wOwotCiAvKiBBIGdseXBoIGZvciBhIHNwYWNlLiAgKi8K IAogZXh0ZXJuIHN0cnVjdCBnbHlwaCBzcGFjZV9nbHlwaDsKCj09PSBtb2RpZmllZCBmaWxl ICdzcmMvZGlzcG5ldy5jJwotLS0gc3JjL2Rpc3BuZXcuYwkyMDEyLTExLTEzIDA2OjExOjQw ICswMDAwCisrKyBzcmMvZGlzcG5ldy5jCTIwMTItMTEtMTYgMDk6MTA6MTYgKzAwMDAKQEAg LTc4LDcgKzc4LDYgQEAKIHN0YXRpYyB2b2lkIHVwZGF0ZV9mcmFtZV9saW5lIChzdHJ1Y3Qg ZnJhbWUgKiwgaW50KTsKIHN0YXRpYyBpbnQgcmVxdWlyZWRfbWF0cml4X2hlaWdodCAoc3Ry dWN0IHdpbmRvdyAqKTsKIHN0YXRpYyBpbnQgcmVxdWlyZWRfbWF0cml4X3dpZHRoIChzdHJ1 Y3Qgd2luZG93ICopOwotc3RhdGljIHZvaWQgYWRqdXN0X2ZyYW1lX2dseXBocyAoc3RydWN0 IGZyYW1lICopOwogc3RhdGljIHZvaWQgY2hhbmdlX2ZyYW1lX3NpemVfMSAoc3RydWN0IGZy YW1lICosIGludCwgaW50LCBib29sLCBib29sLCBib29sKTsKIHN0YXRpYyB2b2lkIGluY3Jl bWVudF9yb3dfcG9zaXRpb25zIChzdHJ1Y3QgZ2x5cGhfcm93ICosIHB0cmRpZmZfdCwgcHRy ZGlmZl90KTsKIHN0YXRpYyB2b2lkIGZpbGxfdXBfZnJhbWVfcm93X3dpdGhfc3BhY2VzIChz dHJ1Y3QgZ2x5cGhfcm93ICosIGludCk7CkBAIC0xNjUsMTYgKzE2NCw2IEBACiAKIHN0YXRp YyBzdHJ1Y3QgZnJhbWUgKmZyYW1lX21hdHJpeF9mcmFtZTsKIAotLyogVHJ1ZSBtZWFucyB0 aGF0IGZvbnRzIGhhdmUgYmVlbiBsb2FkZWQgc2luY2UgdGhlIGxhc3QgZ2x5cGgKLSAgIG1h dHJpeCBhZGp1c3RtZW50cy4gIFJlZGlzcGxheSBtdXN0IHN0b3AsIGFuZCBnbHlwaCBtYXRy aWNlcyBtdXN0Ci0gICBiZSBhZGp1c3RlZCB3aGVuIHRoaXMgZmxhZyBiZWNvbWVzIHRydWUg ZHVyaW5nIGRpc3BsYXkuICBUaGUKLSAgIHJlYXNvbiBmb250cyBjYW4gYmUgbG9hZGVkIHNv IGxhdGUgaXMgdGhhdCBmb250cyBvZiBmb250c2V0cyBhcmUKLSAgIGxvYWRlZCBvbiBkZW1h bmQuICBBbm90aGVyIHJlYXNvbiBpcyB0aGF0IGEgbGluZSBjb250YWlucyBtYW55Ci0gICBj aGFyYWN0ZXJzIGRpc3BsYXllZCBieSB6ZXJvIHdpZHRoIG9yIHZlcnkgbmFycm93IGdseXBo cyBvZgotICAgdmFyaWFibGUtd2lkdGggZm9udHMuICAqLwotCi1ib29sIGZvbnRzX2NoYW5n ZWRfcDsKLQogLyogQ29udmVydCB2cG9zIGFuZCBocG9zIGZyb20gZnJhbWUgdG8gd2luZG93 IGFuZCB2aWNlIHZlcnNhLgogICAgVGhpcyBtYXkgb25seSBiZSB1c2VkIGZvciB0ZXJtaW5h bCBmcmFtZXMuICAqLwogCkBAIC00NDYsNyArNDM1LDcgQEAKIAkJCQkgIHx8IHJpZ2h0ICE9 IG1hdHJpeC0+cmlnaHRfbWFyZ2luX2dseXBocyk7CiAKICAgICAgIGlmICghbWFyZ2luYWxf YXJlYXNfY2hhbmdlZF9wCi0JICAmJiAhZm9udHNfY2hhbmdlZF9wCisJICAmJiAhWEZSQU1F ICh3LT5mcmFtZSktPmZvbnRzX2NoYW5nZWQKIAkgICYmICFoZWFkZXJfbGluZV9jaGFuZ2Vk X3AKIAkgICYmIG1hdHJpeC0+d2luZG93X2xlZnRfY29sID09IFdJTkRPV19MRUZUX0VER0Vf Q09MICh3KQogCSAgJiYgbWF0cml4LT53aW5kb3dfdG9wX2xpbmUgPT0gV0lORE9XX1RPUF9F REdFX0xJTkUgKHcpCkBAIC0xODIxLDEwICsxODEwLDkgQEAKIH0KIAogCi0vKiBSZS1hbGxv Y2F0ZS8gcmUtY29tcHV0ZSBnbHlwaCBtYXRyaWNlcyBvbiBmcmFtZSBGLiAgSWYgRiBpcyBu dWxsLAotICAgZG8gaXQgZm9yIGFsbCBmcmFtZXM7IG90aGVyd2lzZSBkbyBpdCBqdXN0IGZv ciB0aGUgZ2l2ZW4gZnJhbWUuCi0gICBUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIHdo ZW4gYSBuZXcgZnJhbWUgaXMgY3JlYXRlZCwgaXRzIHNpemUKLSAgIGNoYW5nZXMsIG9yIGl0 cyB3aW5kb3cgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiAgKi8KKy8qIFJlLWFsbG9jYXRlLyBy ZS1jb21wdXRlIGdseXBoIG1hdHJpY2VzIG9uIGZyYW1lIEYuICBUaGlzIGZ1bmN0aW9uIG11 c3QKKyAgIGJlIGNhbGxlZCB3aGVuIGEgbmV3IGZyYW1lIGlzIGNyZWF0ZWQsIGl0cyBzaXpl IGNoYW5nZXMsIG9yIGl0cyB3aW5kb3cKKyAgIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gICov CiAKIHZvaWQKIGFkanVzdF9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqZikKQEAgLTE4MzMsMjQg KzE4MjEsNiBAQAogICAgICBnbHlwaCBtYXRyaWNlcyBhcmUgbm90IHByb2Nlc3NlZCB3aGls ZSB3ZSBhcmUgY2hhbmdpbmcgdGhlbS4gICovCiAgIGJsb2NrX2lucHV0ICgpOwogCi0gIGlm IChmKQotICAgIGFkanVzdF9mcmFtZV9nbHlwaHMgKGYpOwotICBlbHNlCi0gICAgewotICAg ICAgTGlzcF9PYmplY3QgdGFpbCwgbGlzcF9mcmFtZTsKLQotICAgICAgRk9SX0VBQ0hfRlJB TUUgKHRhaWwsIGxpc3BfZnJhbWUpCi0JYWRqdXN0X2ZyYW1lX2dseXBocyAoWEZSQU1FIChs aXNwX2ZyYW1lKSk7Ci0gICAgfQotCi0gIHVuYmxvY2tfaW5wdXQgKCk7Ci19Ci0KLS8qIEFs bG9jYXRlL3JlYWxsb2NhdGUgZ2x5cGggbWF0cmljZXMgb2YgYSBzaW5nbGUgZnJhbWUgRi4g ICovCi0KLXN0YXRpYyB2b2lkCi1hZGp1c3RfZnJhbWVfZ2x5cGhzIChzdHJ1Y3QgZnJhbWUg KmYpCi17CiAgIGlmIChGUkFNRV9XSU5ET1dfUCAoZikpCiAgICAgYWRqdXN0X2ZyYW1lX2ds eXBoc19mb3Jfd2luZG93X3JlZGlzcGxheSAoZik7CiAgIGVsc2UKQEAgLTE4NjIsNiArMTgz Miw4IEBACiAgIGFkanVzdF9kZWNvZGVfbW9kZV9zcGVjX2J1ZmZlciAoZik7CiAKICAgZi0+ Z2x5cGhzX2luaXRpYWxpemVkX3AgPSAxOworCisgIHVuYmxvY2tfaW5wdXQgKCk7CiB9CiAK IC8qIFJldHVybiB0cnVlIGlmIGFueSB3aW5kb3cgaW4gdGhlIHRyZWUgaGFzIG5vbnplcm8g d2luZG93IG1hcmdpbnMuICBTZWUKCj09PSBtb2RpZmllZCBmaWxlICdzcmMvZm9udC5jJwot LS0gc3JjL2ZvbnQuYwkyMDEyLTExLTA2IDEzOjI2OjIwICswMDAwCisrKyBzcmMvZm9udC5j CTIwMTItMTEtMTYgMDk6MDk6MDYgKzAwMDAKQEAgLTI4NjQsMTQgKzI4NjQsMTQgQEAKICAg ICB7CiAgICAgICBGUkFNRV9TTUFMTEVTVF9DSEFSX1dJRFRIIChmKSA9IG1pbl93aWR0aDsK ICAgICAgIEZSQU1FX1NNQUxMRVNUX0ZPTlRfSEVJR0hUIChmKSA9IGhlaWdodDsKLSAgICAg IGZvbnRzX2NoYW5nZWRfcCA9IDE7CisgICAgICBmLT5mb250c19jaGFuZ2VkID0gMTsKICAg ICB9CiAgIGVsc2UKICAgICB7CiAgICAgICBpZiAoRlJBTUVfU01BTExFU1RfQ0hBUl9XSURU SCAoZikgPiBtaW5fd2lkdGgpCi0JRlJBTUVfU01BTExFU1RfQ0hBUl9XSURUSCAoZikgPSBt aW5fd2lkdGgsIGZvbnRzX2NoYW5nZWRfcCA9IDE7CisJRlJBTUVfU01BTExFU1RfQ0hBUl9X SURUSCAoZikgPSBtaW5fd2lkdGgsIGYtPmZvbnRzX2NoYW5nZWQgPSAxOwogICAgICAgaWYg KEZSQU1FX1NNQUxMRVNUX0ZPTlRfSEVJR0hUIChmKSA+IGhlaWdodCkKLQlGUkFNRV9TTUFM TEVTVF9GT05UX0hFSUdIVCAoZikgPSBoZWlnaHQsIGZvbnRzX2NoYW5nZWRfcCA9IDE7CisJ RlJBTUVfU01BTExFU1RfRk9OVF9IRUlHSFQgKGYpID0gaGVpZ2h0LCBmLT5mb250c19jaGFu Z2VkID0gMTsKICAgICB9CiAjZW5kaWYKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9mcmFt ZS5oJwotLS0gc3JjL2ZyYW1lLmgJMjAxMi0xMS0xMiAxNjowMjo0NiArMDAwMAorKysgc3Jj L2ZyYW1lLmgJMjAxMi0xMS0xNiAwOTo0ODoxMSArMDAwMApAQCAtMjI0LDYgKzIyNCwxMSBA QAogICAgICBVc2VkIHRvIHNlZSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgZm9udCBjaGFu Z2UgYW5kIGZhY2UgY2hhbmdlLiAgKi8KICAgdW5zaWduZWQgZGVmYXVsdF9mYWNlX2RvbmVf cCA6IDE7CiAKKyAgLyogTm9uemVybyBtZWFucyB0aGF0IGZvbnRzIGhhdmUgYmVlbiBsb2Fk ZWQgZm9yIHRoaXMgZnJhbWUgc2luY2UgdGhlIGxhc3QKKyAgICAgZ2x5cGggbWF0cml4IGFk anVzdG1lbnRzLiAgVGhlIGZ1bmN0aW9uIHJlZGlzcGxheV9pbnRlcm5hbCBhZGp1c3RzIGds eXBoCisgICAgIG1hdHJpY2VzIHdoZW4gdGhpcyBmbGFnIGlzIHRydWUuICAqLworICB1bnNp Z25lZCBmb250c19jaGFuZ2VkIDogMTsKKwogICAvKiBTZXQgdG8gbm9uLXplcm8gaWYgdGhp cyBmcmFtZSBoYXMgYWxyZWFkeSBiZWVuIGhzY3JvbGxlZCBkdXJpbmcKICAgICAgY3VycmVu dCByZWRpc3BsYXkuICAqLwogICB1bnNpZ25lZCBhbHJlYWR5X2hzY3JvbGxlZF9wIDogMTsK QEAgLTQzNCw2ICs0MzksOSBAQAogICAvKiBOb256ZXJvIG1lYW5zIHRoYXQgdGhlIHBvaW50 ZXIgaXMgaW52aXNpYmxlLiAqLwogICB1bnNpZ25lZCBwb2ludGVyX2ludmlzaWJsZSA6MTsK IAorICAvKiBOb256ZXJvIG1lYW5zIGEgZnJhbWUncyBjdXJzb3IgdHlwZSBoYXMgYmVlbiBj aGFuZ2VkLiAgKi8KKyAgdW5zaWduZWQgY3Vyc29yX3R5cGVfY2hhbmdlZCA6IDE7CisKICAg LyogTm9uemVybyBpZiB3ZSBzaG91bGQgYWN0dWFsbHkgZGlzcGxheSB0aGUgc2Nyb2xsIGJh cnMgb24gdGhpcyBmcmFtZS4gICovCiAgIGVudW0gdmVydGljYWxfc2Nyb2xsX2Jhcl90eXBl IHZlcnRpY2FsX3Njcm9sbF9iYXJfdHlwZTsKIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9u c2Zucy5tJwotLS0gc3JjL25zZm5zLm0JMjAxMi0xMS0wMyAwNTo1OToxNyArMDAwMAorKysg c3JjL25zZm5zLm0JMjAxMi0xMS0xNiAwOTo0Nzo1OSArMDAwMApAQCAtOTAwLDkgKzkwMCw2 IEBACiB4X3NldF9jdXJzb3JfdHlwZSAoRlJBTUVfUFRSIGYsIExpc3BfT2JqZWN0IGFyZywg TGlzcF9PYmplY3Qgb2xkdmFsKQogewogICBzZXRfZnJhbWVfY3Vyc29yX3R5cGVzIChmLCBh cmcpOwotCi0gIC8qIE1ha2Ugc3VyZSB0aGUgY3Vyc29yIGdldHMgcmVkcmF3bi4gICovCi0g IGN1cnNvcl90eXBlX2NoYW5nZWQgPSAxOwogfQogDAogCgo9PT0gbW9kaWZpZWQgZmlsZSAn c3JjL3czMmZucy5jJwotLS0gc3JjL3czMmZucy5jCTIwMTItMTEtMTIgMDQ6MDA6NTUgKzAw MDAKKysrIHNyYy93MzJmbnMuYwkyMDEyLTExLTE2IDA5OjQ2OjQ4ICswMDAwCkBAIC0xNDc0 LDkgKzE0NzQsNiBAQAogeF9zZXRfY3Vyc29yX3R5cGUgKEZSQU1FX1BUUiBmLCBMaXNwX09i amVjdCBhcmcsIExpc3BfT2JqZWN0IG9sZHZhbCkKIHsKICAgc2V0X2ZyYW1lX2N1cnNvcl90 eXBlcyAoZiwgYXJnKTsKLQotICAvKiBNYWtlIHN1cmUgdGhlIGN1cnNvciBnZXRzIHJlZHJh d24uICAqLwotICBjdXJzb3JfdHlwZV9jaGFuZ2VkID0gMTsKIH0KIAwKIHZvaWQKCj09PSBt b2RpZmllZCBmaWxlICdzcmMvd2luZG93LmgnCi0tLSBzcmMvd2luZG93LmgJMjAxMi0xMS0w MiAxMDozNDoyNiArMDAwMAorKysgc3JjL3dpbmRvdy5oCTIwMTItMTEtMTYgMDk6NDY6NTQg KzAwMDAKQEAgLTk0MywxMCArOTQzLDYgQEAKIAogZXh0ZXJuIGludCB3aW5kb3dzX29yX2J1 ZmZlcnNfY2hhbmdlZDsKIAotLyogTm9uemVybyBtZWFucyBhIGZyYW1lJ3MgY3Vyc29yIHR5 cGUgaGFzIGJlZW4gY2hhbmdlZC4gICovCi0KLWV4dGVybiBpbnQgY3Vyc29yX3R5cGVfY2hh bmdlZDsKLQogLyogTnVtYmVyIG9mIHdpbmRvd3MgZGlzcGxheWluZyB0aGUgc2VsZWN0ZWQg YnVmZmVyLiAgTm9ybWFsbHkgdGhpcyBpcwogICAgMSwgYnV0IGl0IGNhbiBiZSBtb3JlLiAg Ki8KIAoKPT09IG1vZGlmaWVkIGZpbGUgJ3NyYy94ZGlzcC5jJwotLS0gc3JjL3hkaXNwLmMJ MjAxMi0xMS0xNCAxMToxMzozMyArMDAwMAorKysgc3JjL3hkaXNwLmMJMjAxMi0xMS0xNiAx MDo1NzozOSArMDAwMApAQCAtNTUyLDEwICs1NTIsNiBAQAogCiBpbnQgd2luZG93c19vcl9i dWZmZXJzX2NoYW5nZWQ7CiAKLS8qIE5vbnplcm8gbWVhbnMgYSBmcmFtZSdzIGN1cnNvciB0 eXBlIGhhcyBiZWVuIGNoYW5nZWQuICAqLwotCi1pbnQgY3Vyc29yX3R5cGVfY2hhbmdlZDsK LQogLyogTm9uemVybyBhZnRlciBkaXNwbGF5X21vZGVfbGluZSBpZiAlbCB3YXMgdXNlZCBh bmQgaXQgZGlzcGxheWVkIGEKICAgIGxpbmUgbnVtYmVyLiAgKi8KIApAQCAtMTE5OTgsNyAr MTE5OTQsNyBAQAogCSAgaWYgKFdJTkRPV19UT1RBTF9MSU5FUyAodykgIT0gb2xkX2hlaWdo dCkKIAkgICAgewogCSAgICAgIGNsZWFyX2dseXBoX21hdHJpeCAody0+ZGVzaXJlZF9tYXRy aXgpOwotCSAgICAgIGZvbnRzX2NoYW5nZWRfcCA9IDE7CisJICAgICAgZi0+Zm9udHNfY2hh bmdlZCA9IDE7CiAJICAgICAgcmV0dXJuIDE7CiAJICAgIH0KIAl9CkBAIC0xMjEwMCw3ICsx MjA5Niw3IEBACiAJCXsKIAkJICBjbGVhcl9nbHlwaF9tYXRyaXggKHctPmRlc2lyZWRfbWF0 cml4KTsKIAkJICBmLT5uX3Rvb2xfYmFyX3Jvd3MgPSBucm93czsKLQkJICBmb250c19jaGFu Z2VkX3AgPSAxOworCQkgIGYtPmZvbnRzX2NoYW5nZWQgPSAxOwogCQkgIHJldHVybiAxOwog CQl9CiAJICAgIH0KQEAgLTEyOTM1LDYgKzEyOTMxLDE0IEBACiAgIH0gd2hpbGUgKCFFUSAo ZnJhbWUsIG9sZCkgJiYgKGZyYW1lID0gb2xkLCAxKSk7CiB9CiAKKy8qIFJlY29tcHV0ZSBG J3MgZ2x5cGggbWF0cmljZXMgZHVlIHRvIGZvbnRzIGNoYW5nZS4gIFJldHVybgorICAgMSBp ZiBnbHlwaHMgd2FzIGFkanVzdGVkLCBhbmQgMCBpZiBpdCBpc24ndCBuZWNlc3NhcnkuICAq LworCitzdGF0aWMgaW50CitmcmFtZV9mb250c19jaGFuZ2VkIChzdHJ1Y3QgZnJhbWUgKmYp Cit7CisgIHJldHVybiBmLT5mb250c19jaGFuZ2VkID8gKGFkanVzdF9nbHlwaHMgKGYpLCBm LT5mb250c19jaGFuZ2VkID0gMCwgMSkgOiAwOworfQogCiAjZGVmaW5lIFNUT1BfUE9MTElO RwkJCQkJXAogZG8geyBpZiAoISBwb2xsaW5nX3N0b3BwZWRfaGVyZSkgc3RvcF9wb2xsaW5n ICgpOwlcCkBAIC0xMjk2MCw3ICsxMjk2NCw3IEBACiAgIGludCBudW1iZXJfb2ZfdmlzaWJs ZV9mcmFtZXM7CiAgIHB0cmRpZmZfdCBjb3VudCwgY291bnQxOwogICBzdHJ1Y3QgZnJhbWUg KnNmOwotICBpbnQgcG9sbGluZ19zdG9wcGVkX2hlcmUgPSAwOworICBpbnQgY3Vyc29yX3R5 cGVfY2hhbmdlZCA9IDAsIHBvbGxpbmdfc3RvcHBlZF9oZXJlID0gMDsKICAgTGlzcF9PYmpl Y3Qgb2xkX2ZyYW1lID0gc2VsZWN0ZWRfZnJhbWU7CiAgIHN0cnVjdCBiYWNrdHJhY2UgYmFj a3RyYWNlOwogCkBAIC0xMzA0NCwxMiArMTMwNDgsNyBAQAogCiAgIC8qIElmIG5ldyBmb250 cyBoYXZlIGJlZW4gbG9hZGVkIHRoYXQgbWFrZSBhIGdseXBoIG1hdHJpeCBhZGp1c3RtZW50 CiAgICAgIG5lY2Vzc2FyeSwgZG8gaXQuICAqLwotICBpZiAoZm9udHNfY2hhbmdlZF9wKQot ICAgIHsKLSAgICAgIGFkanVzdF9nbHlwaHMgKE5VTEwpOwotICAgICAgKyt3aW5kb3dzX29y X2J1ZmZlcnNfY2hhbmdlZDsKLSAgICAgIGZvbnRzX2NoYW5nZWRfcCA9IDA7Ci0gICAgfQor ICBmcmFtZV9mb250c19jaGFuZ2VkIChmcik7CiAKICAgLyogSWYgZmFjZV9jaGFuZ2VfY291 bnQgaXMgbm9uLXplcm8sIGluaXRfaXRlcmF0b3Igd2lsbCBmcmVlIGFsbAogICAgICByZWFs aXplZCBmYWNlcywgd2hpY2ggaW5jbHVkZXMgdGhlIGZhY2VzIHJlZmVyZW5jZWQgZnJvbSBj dXJyZW50CkBAIC0xMzA4OCw2ICsxMzA4Nyw4IEBACiAJaWYgKEZSQU1FX1ZJU0lCTEVfUCAo ZikpCiAJICArK251bWJlcl9vZl92aXNpYmxlX2ZyYW1lczsKIAljbGVhcl9kZXNpcmVkX21h dHJpY2VzIChmKTsKKwkvKiBBbHNvIGNoZWNrIHdoZXRoZXIgYSBjdXJzb3IgdHlwZSB3YXMg Y2hhbmdlZCBzb21ld2hlcmUuICAqLworCWN1cnNvcl90eXBlX2NoYW5nZWQgKz0gZi0+Y3Vy c29yX3R5cGVfY2hhbmdlZDsKICAgICAgIH0KICAgfQogCkBAIC0xMzE3Niw3ICsxMzE3Nyw3 IEBACiAgICAgICBpZiAoIWRpc3BsYXlfbGFzdF9kaXNwbGF5ZWRfbWVzc2FnZV9wKQogCW1l c3NhZ2VfY2xlYXJlZF9wID0gMDsKIAotICAgICAgaWYgKGZvbnRzX2NoYW5nZWRfcCkKKyAg ICAgIGlmIChmci0+Zm9udHNfY2hhbmdlZCkKIAlnb3RvIHJldHJ5OwogICAgICAgZWxzZSBp ZiAod2luZG93X2hlaWdodF9jaGFuZ2VkX3ApCiAJewpAQCAtMTM0NzEsNiArMTM0NzIsOCBA QAogCQkgICB2YXJpYWJsZXMuICAqLwogCQlzZWxlY3RfZnJhbWVfZm9yX3JlZGlzcGxheSAo ZnJhbWUpOwogCisJICAgIHJldHJ5X2ZyYW1lOgorCiAJICAgICAgLyogTWFyayBhbGwgdGhl IHNjcm9sbCBiYXJzIHRvIGJlIHJlbW92ZWQ7IHdlJ2xsIHJlZGVlbQogCQkgdGhlIG9uZXMg d2Ugd2FudCB3aGVuIHdlIHJlZGlzcGxheSB0aGVpciB3aW5kb3dzLiAgKi8KIAkgICAgICBp ZiAoRlJBTUVfVEVSTUlOQUwgKGYpLT5jb25kZW1uX3Njcm9sbF9iYXJzX2hvb2spCkBAIC0x MzQ4OSwxMCArMTM0OTIsOCBAQAogCQlGUkFNRV9URVJNSU5BTCAoZiktPmp1ZGdlX3Njcm9s bF9iYXJzX2hvb2sgKGYpOwogCiAJICAgICAgLyogSWYgZm9udHMgY2hhbmdlZCwgZGlzcGxh eSBhZ2Fpbi4gICovCi0JICAgICAgLyogPz8/IHJtczogSSBzdXNwZWN0IGl0IGlzIGEgbWlz dGFrZSB0byBqdW1wIGFsbCB0aGUgd2F5Ci0JCSBiYWNrIHRvIHJldHJ5IGhlcmUuICBJdCBz aG91bGQganVzdCByZXRyeSB0aGlzIGZyYW1lLiAgKi8KLQkgICAgICBpZiAoZm9udHNfY2hh bmdlZF9wKQotCQlnb3RvIHJldHJ5OworCSAgICAgIGlmIChmcmFtZV9mb250c19jaGFuZ2Vk IChmKSkKKwkJZ290byByZXRyeV9mcmFtZTsKIAogCSAgICAgIGlmIChGUkFNRV9WSVNJQkxF X1AgKGYpICYmICFGUkFNRV9PQlNDVVJFRF9QIChmKSkKIAkJewpAQCAtMTM1MDEsNyArMTM1 MDIsNyBAQAogCQkgICAgewogCQkgICAgICBmLT5hbHJlYWR5X2hzY3JvbGxlZF9wID0gMTsK IAkJICAgICAgaWYgKGhzY3JvbGxfd2luZG93cyAoZi0+cm9vdF93aW5kb3cpKQotCQkJZ290 byByZXRyeTsKKwkJCWdvdG8gcmV0cnlfZnJhbWU7CiAJCSAgICB9CiAKIAkJICAvKiBQcmV2 ZW50IHZhcmlvdXMga2luZHMgb2Ygc2lnbmFscyBkdXJpbmcgZGlzcGxheQpAQCAtMTM1NjYs NyArMTM1NjcsNyBAQAogCiAgICAgdXBkYXRlOgogICAgICAgLyogSWYgZm9udHMgY2hhbmdl ZCwgZGlzcGxheSBhZ2Fpbi4gICovCi0gICAgICBpZiAoZm9udHNfY2hhbmdlZF9wKQorICAg ICAgaWYgKHNmLT5mb250c19jaGFuZ2VkKQogCWdvdG8gcmV0cnk7CiAKICAgICAgIC8qIFBy ZXZlbnQgdmFyaW91cyBraW5kcyBvZiBzaWduYWxzIGR1cmluZyBkaXNwbGF5IHVwZGF0ZS4K QEAgLTEzNjM3LDcgKzEzNjM4LDYgQEAKIAogICAgICAgdXBkYXRlX21vZGVfbGluZXMgPSAw OwogICAgICAgd2luZG93c19vcl9idWZmZXJzX2NoYW5nZWQgPSAwOwotICAgICAgY3Vyc29y X3R5cGVfY2hhbmdlZCA9IDA7CiAgICAgfQogCiAgIC8qIFN0YXJ0IFNJR0lPIGludGVycnVw dHMgY29taW5nIGFnYWluLiAgSGF2aW5nIHRoZW0gb2ZmIGR1cmluZyB0aGUKQEAgLTE1MDY0 LDcgKzE1MDY0LDcgQEAKIAkgY2FzZXMuICAqLwogICAgICAgJiYgIXVwZGF0ZV9tb2RlX2xp bmVzCiAgICAgICAmJiAhd2luZG93c19vcl9idWZmZXJzX2NoYW5nZWQKLSAgICAgICYmICFj dXJzb3JfdHlwZV9jaGFuZ2VkCisgICAgICAmJiAhZi0+Y3Vyc29yX3R5cGVfY2hhbmdlZAog ICAgICAgLyogQ2FuJ3QgdXNlIHRoaXMgY2FzZSBpZiBoaWdobGlnaHRpbmcgYSByZWdpb24u ICBXaGVuIGEKICAgICAgICAgIHJlZ2lvbiBleGlzdHMsIGN1cnNvciBtb3ZlbWVudCBoYXMg dG8gZG8gbW9yZSB0aGFuIGp1c3QKICAgICAgICAgIHNldCB0aGUgY3Vyc29yLiAgKi8KQEAg LTE1NDE4LDggKzE1NDE4LDggQEAKICAgIHNlbGVjdGVkX3dpbmRvdyBpcyByZWRpc3BsYXll ZC4KIAogICAgV2UgY2FuIHJldHVybiB3aXRob3V0IGFjdHVhbGx5IHJlZGlzcGxheWluZyB0 aGUgd2luZG93IGlmCi0gICBmb250c19jaGFuZ2VkX3AuICBJbiB0aGF0IGNhc2UsIHJlZGlz cGxheV9pbnRlcm5hbCB3aWxsCi0gICByZXRyeS4gICovCisgICBmb250cyBvZiBpdCdzIGZy YW1lIHdhcyBjaGFuZ2VkLiAgSW4gdGhhdCBjYXNlLCByZWRpc3BsYXlfaW50ZXJuYWwKKyAg IHdpbGwgcmV0cnkuICAqLwogCiBzdGF0aWMgdm9pZAogcmVkaXNwbGF5X3dpbmRvdyAoTGlz cF9PYmplY3Qgd2luZG93LCBpbnQganVzdF90aGlzX29uZV9wKQpAQCAtMTU3ODksNyArMTU3 ODksNyBAQAogICAgICAgZGVidWdfbWV0aG9kX2FkZCAodywgInRyeV93aW5kb3dfaWQgJWQi LCB0ZW0pOwogI2VuZGlmCiAKLSAgICAgIGlmIChmb250c19jaGFuZ2VkX3ApCisgICAgICBp ZiAoZi0+Zm9udHNfY2hhbmdlZCkKIAlnb3RvIG5lZWRfbGFyZ2VyX21hdHJpY2VzOwogICAg ICAgaWYgKHRlbSA+IDApCiAJZ290byBkb25lOwpAQCAtMTU4NjAsMTIgKzE1ODYwLDEyIEBA CiAJICBJRl9ERUJVRyAoZGVidWdfbWV0aG9kX2FkZCAodywgIjEiKSk7CiAJICBpZiAodHJ5 X3dpbmRvdyAod2luZG93LCBzdGFydHAsIFRSWV9XSU5ET1dfQ0hFQ0tfTUFSR0lOUykgPCAw KQogCSAgICAvKiAtMSBtZWFucyB3ZSBuZWVkIHRvIHNjcm9sbC4KLQkgICAgICAgMCBtZWFu cyB3ZSBuZWVkIG5ldyBtYXRyaWNlcywgYnV0IGZvbnRzX2NoYW5nZWRfcAorCSAgICAgICAw IG1lYW5zIHdlIG5lZWQgbmV3IG1hdHJpY2VzLCBidXQgZi0+Zm9udHNfY2hhbmdlZAogCSAg ICAgICBpcyBzZXQgaW4gdGhhdCBjYXNlLCBzbyB3ZSB3aWxsIGRldGVjdCBpdCBiZWxvdy4g ICovCiAJICAgIGdvdG8gdHJ5X3RvX3Njcm9sbDsKIAl9CiAKLSAgICAgIGlmIChmb250c19j aGFuZ2VkX3ApCisgICAgICBpZiAoZi0+Zm9udHNfY2hhbmdlZCkKIAlnb3RvIG5lZWRfbGFy Z2VyX21hdHJpY2VzOwogCiAgICAgICBpZiAody0+Y3Vyc29yLnZwb3MgPj0gMCkKQEAgLTE2 MDU2LDcgKzE2MDU2LDcgQEAKICAgLyogUmVkaXNwbGF5IHRoZSB3aW5kb3cuICAqLwogICBp ZiAoIWN1cnJlbnRfbWF0cml4X3VwX3RvX2RhdGVfcAogICAgICAgfHwgd2luZG93c19vcl9i dWZmZXJzX2NoYW5nZWQKLSAgICAgIHx8IGN1cnNvcl90eXBlX2NoYW5nZWQKKyAgICAgIHx8 IGYtPmN1cnNvcl90eXBlX2NoYW5nZWQKICAgICAgIC8qIERvbid0IHVzZSB0cnlfd2luZG93 X3JldXNpbmdfY3VycmVudF9tYXRyaXggaW4gdGhpcyBjYXNlCiAJIGJlY2F1c2UgaXQgY2Fu IGhhdmUgY2hhbmdlZCB0aGUgYnVmZmVyLiAgKi8KICAgICAgIHx8ICFOSUxQIChWd2luZG93 X3Njcm9sbF9mdW5jdGlvbnMpCkBAIC0xNjA2OSw3ICsxNjA2OSw3IEBACiAgIC8qIElmIG5l dyBmb250cyBoYXZlIGJlZW4gbG9hZGVkIChkdWUgdG8gZm9udHNldHMpLCBnaXZlIHVwLiAg V2UKICAgICAgaGF2ZSB0byBzdGFydCBhIG5ldyByZWRpc3BsYXkgc2luY2Ugd2UgbmVlZCB0 byByZS1hZGp1c3QgZ2x5cGgKICAgICAgbWF0cmljZXMuICAqLwotICBpZiAoZm9udHNfY2hh bmdlZF9wKQorICBpZiAoZi0+Zm9udHNfY2hhbmdlZCkKICAgICBnb3RvIG5lZWRfbGFyZ2Vy X21hdHJpY2VzOwogCiAgIC8qIElmIGN1cnNvciBkaWQgbm90IGFwcGVhciBhc3N1bWUgdGhh dCB0aGUgbWlkZGxlIG9mIHRoZSB3aW5kb3cgaXMKQEAgLTE2MTgxLDcgKzE2MTgxLDcgQEAK ICAgICAgIGlmIChXSU5ET1dfV0FOVFNfTU9ERUxJTkVfUCAodykKIAkgICYmIENVUlJFTlRf TU9ERV9MSU5FX0hFSUdIVCAodykgIT0gREVTSVJFRF9NT0RFX0xJTkVfSEVJR0hUICh3KSkK IAl7Ci0JICBmb250c19jaGFuZ2VkX3AgPSAxOworCSAgZi0+Zm9udHNfY2hhbmdlZCA9IDE7 CiAJICBNQVRSSVhfTU9ERV9MSU5FX1JPVyAody0+Y3VycmVudF9tYXRyaXgpLT5oZWlnaHQK IAkgICAgPSBERVNJUkVEX01PREVfTElORV9IRUlHSFQgKHcpOwogCX0KQEAgLTE2MTkxLDEy ICsxNjE5MSwxMiBAQAogICAgICAgaWYgKFdJTkRPV19XQU5UU19IRUFERVJfTElORV9QICh3 KQogCSAgJiYgQ1VSUkVOVF9IRUFERVJfTElORV9IRUlHSFQgKHcpICE9IERFU0lSRURfSEVB REVSX0xJTkVfSEVJR0hUICh3KSkKIAl7Ci0JICBmb250c19jaGFuZ2VkX3AgPSAxOworCSAg Zi0+Zm9udHNfY2hhbmdlZCA9IDE7CiAJICBNQVRSSVhfSEVBREVSX0xJTkVfUk9XICh3LT5j dXJyZW50X21hdHJpeCktPmhlaWdodAogCSAgICA9IERFU0lSRURfSEVBREVSX0xJTkVfSEVJ R0hUICh3KTsKIAl9CiAKLSAgICAgIGlmIChmb250c19jaGFuZ2VkX3ApCisgICAgICBpZiAo Zi0+Zm9udHNfY2hhbmdlZCkKIAlnb3RvIG5lZWRfbGFyZ2VyX21hdHJpY2VzOwogICAgIH0K IApAQCAtMTYyNjIsNyArMTYyNjIsNyBAQAogICAgIH0KICNlbmRpZiAvKiBIQVZFX1dJTkRP V19TWVNURU0gKi8KIAotICAvKiBXZSBnbyB0byB0aGlzIGxhYmVsLCB3aXRoIGZvbnRzX2No YW5nZWRfcCBzZXQsCisgIC8qIFdlIGdvIHRvIHRoaXMgbGFiZWwsIHdpdGggVydzIGZyYW1l IGZvbnRzX2NoYW5nZWQgc2V0LAogICAgICBpZiBpdCBpcyBuZWNlc3NhcnkgdG8gdHJ5IGFn YWluIHVzaW5nIGxhcmdlciBnbHlwaCBtYXRyaWNlcy4KICAgICAgV2UgaGF2ZSB0byByZWRl ZW0gdGhlIHNjcm9sbCBiYXIgZXZlbiBpbiB0aGlzIGNhc2UsCiAgICAgIGJlY2F1c2UgdGhl IGxvb3AgaW4gcmVkaXNwbGF5X2ludGVybmFsIGV4cGVjdHMgdGhhdC4gICovCkBAIC0xNjMz NCw3ICsxNjMzNCw3IEBACiAgICAgewogICAgICAgaWYgKGRpc3BsYXlfbGluZSAoJml0KSkK IAlsYXN0X3RleHRfcm93ID0gaXQuZ2x5cGhfcm93IC0gMTsKLSAgICAgIGlmIChmb250c19j aGFuZ2VkX3AgJiYgIShmbGFncyAmIFRSWV9XSU5ET1dfSUdOT1JFX0ZPTlRTX0NIQU5HRSkp CisgICAgICBpZiAoZi0+Zm9udHNfY2hhbmdlZCAmJiAhKGZsYWdzICYgVFJZX1dJTkRPV19J R05PUkVfRk9OVFNfQ0hBTkdFKSkKIAlyZXR1cm4gMDsKICAgICB9CiAKQEAgLTE2NDM2LDcg KzE2NDM2LDcgQEAKICAgICAgIC8qIERvbid0IHRyeSB0byByZXVzZSB0aGUgZGlzcGxheSBp ZiB3aW5kb3dzIGhhdmUgYmVlbiBzcGxpdAogCSBvciBzdWNoLiAgKi8KICAgICAgIHx8IHdp bmRvd3Nfb3JfYnVmZmVyc19jaGFuZ2VkCi0gICAgICB8fCBjdXJzb3JfdHlwZV9jaGFuZ2Vk KQorICAgICAgfHwgZi0+Y3Vyc29yX3R5cGVfY2hhbmdlZCkKICAgICByZXR1cm4gMDsKIAog ICAvKiBDYW4ndCBkbyB0aGlzIGlmIHJlZ2lvbiBtYXkgaGF2ZSBjaGFuZ2VkLiAgKi8KQEAg LTE2NDg2LDcgKzE2NDg2LDcgQEAKICAgICAgIGxhc3RfdGV4dF9yb3cgPSBsYXN0X3JldXNl ZF90ZXh0X3JvdyA9IE5VTEw7CiAKICAgICAgIHdoaWxlIChpdC5jdXJyZW50X3kgPCBpdC5s YXN0X3Zpc2libGVfeQotCSAgICAgJiYgIWZvbnRzX2NoYW5nZWRfcCkKKwkgICAgICYmICFm LT5mb250c19jaGFuZ2VkKQogCXsKIAkgIC8qIElmIHdlIGhhdmUgcmVhY2hlZCBpbnRvIHRo ZSBjaGFyYWN0ZXJzIGluIHRoZSBTVEFSVCByb3csCiAJICAgICB0aGF0IG1lYW5zIHRoZSBs aW5lIGJvdW5kYXJpZXMgaGF2ZSBjaGFuZ2VkLiAgU28gd2UKQEAgLTE2NzE0LDcgKzE2NzE0 LDcgQEAKICAgICAgIGlmIChwdF9yb3cgPT0gTlVMTCkKIAl3LT5jdXJzb3IudnBvcyA9IC0x OwogICAgICAgbGFzdF90ZXh0X3JvdyA9IE5VTEw7Ci0gICAgICB3aGlsZSAoaXQuY3VycmVu dF95IDwgaXQubGFzdF92aXNpYmxlX3kgJiYgIWZvbnRzX2NoYW5nZWRfcCkKKyAgICAgIHdo aWxlIChpdC5jdXJyZW50X3kgPCBpdC5sYXN0X3Zpc2libGVfeSAmJiAhZi0+Zm9udHNfY2hh bmdlZCkKIAlpZiAoZGlzcGxheV9saW5lICgmaXQpKQogCSAgbGFzdF90ZXh0X3JvdyA9IGl0 LmdseXBoX3JvdyAtIDE7CiAKQEAgLTE3MjM4LDcgKzE3MjM4LDcgQEAKICAgICBHSVZFX1VQ ICgxKTsKIAogICAvKiBUaGlzIGZsYWcgaXMgdXNlZCB0byBwcmV2ZW50IHJlZGlzcGxheSBv cHRpbWl6YXRpb25zLiAgKi8KLSAgaWYgKHdpbmRvd3Nfb3JfYnVmZmVyc19jaGFuZ2VkIHx8 IGN1cnNvcl90eXBlX2NoYW5nZWQpCisgIGlmICh3aW5kb3dzX29yX2J1ZmZlcnNfY2hhbmdl ZCB8fCBmLT5jdXJzb3JfdHlwZV9jaGFuZ2VkKQogICAgIEdJVkVfVVAgKDIpOwogCiAgIC8q IFZlcmlmeSB0aGF0IG5hcnJvd2luZyBoYXMgbm90IGNoYW5nZWQuCkBAIC0xNzU3Miw3ICsx NzU3Miw3IEBACiAgIGxhc3RfdGV4dF9yb3cgPSBOVUxMOwogICBvdmVybGF5X2Fycm93X3Nl ZW4gPSAwOwogICB3aGlsZSAoaXQuY3VycmVudF95IDwgaXQubGFzdF92aXNpYmxlX3kKLQkg JiYgIWZvbnRzX2NoYW5nZWRfcAorCSAmJiAhZi0+Zm9udHNfY2hhbmdlZAogCSAmJiAoZmly c3RfdW5jaGFuZ2VkX2F0X2VuZF9yb3cgPT0gTlVMTAogCSAgICAgfHwgSVRfQ0hBUlBPUyAo aXQpIDwgc3RvcF9wb3MpKQogICAgIHsKQEAgLTE3NTgwLDcgKzE3NTgwLDcgQEAKIAlsYXN0 X3RleHRfcm93ID0gaXQuZ2x5cGhfcm93IC0gMTsKICAgICB9CiAKLSAgaWYgKGZvbnRzX2No YW5nZWRfcCkKKyAgaWYgKGYtPmZvbnRzX2NoYW5nZWQpCiAgICAgcmV0dXJuIC0xOwogCiAK QEAgLTE3ODI1LDcgKzE3ODI1LDcgQEAKICAgICAgIC8qIERpc3BsYXkgdGhlIHJlc3Qgb2Yg dGhlIGxpbmVzIGF0IHRoZSB3aW5kb3cgZW5kLiAgKi8KICAgICAgIGl0LmdseXBoX3JvdyA9 IE1BVFJJWF9ST1cgKGRlc2lyZWRfbWF0cml4LCBpdC52cG9zKTsKICAgICAgIHdoaWxlIChp dC5jdXJyZW50X3kgPCBpdC5sYXN0X3Zpc2libGVfeQotCSAgICAgJiYgIWZvbnRzX2NoYW5n ZWRfcCkKKwkgICAgICYmICFmLT5mb250c19jaGFuZ2VkKQogCXsKIAkgIC8qIElzIGl0IGFs d2F5cyBzdXJlIHRoYXQgdGhlIGRpc3BsYXkgYWdyZWVzIHdpdGggbGluZXMgaW4KIAkgICAg IHRoZSBjdXJyZW50IG1hdHJpeD8gIEkgZG9uJ3QgdGhpbmsgc28sIHNvIHdlIG1hcmsgcm93 cwpAQCAtMTkzMjgsNyArMTkzMjgsNyBAQAogICAgICAgPj0gaXQtPnctPmRlc2lyZWRfbWF0 cml4LT5ucm93cykKICAgICB7CiAgICAgICBpdC0+dy0+bnJvd3Nfc2NhbGVfZmFjdG9yKys7 Ci0gICAgICBmb250c19jaGFuZ2VkX3AgPSAxOworICAgICAgaXQtPmYtPmZvbnRzX2NoYW5n ZWQgPSAxOwogICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0yMzY3OSwxMiArMjM2Nzks MTIgQEAKIAogI2RlZmluZSBJVF9FWFBBTkRfTUFUUklYX1dJRFRIKGl0LCBhcmVhKQkJXAog ICB7CQkJCQkJCVwKLSAgICBpZiAoIWZvbnRzX2NoYW5nZWRfcAkJCQlcCisgICAgaWYgKCFp dC0+Zi0+Zm9udHNfY2hhbmdlZAkJCQlcCiAJJiYgKGl0LT5nbHlwaF9yb3ctPmdseXBoc1th cmVhXQkJCVwKIAkgICAgPCBpdC0+Z2x5cGhfcm93LT5nbHlwaHNbYXJlYSArIDFdKSkJCVwK ICAgICAgIHsJCQkJCQkJXAogCWl0LT53LT5uY29sc19zY2FsZV9mYWN0b3IrKzsJCQlcCi0J Zm9udHNfY2hhbmdlZF9wID0gMTsJCQkJXAorCWl0LT5mLT5mb250c19jaGFuZ2VkID0gMTsJ CQlcCiAgICAgICB9CQkJCQkJCVwKICAgfQogCkBAIC0yNTYwNSw2ICsyNTYwNSw5IEBACiAg ICAgfQogICBlbHNlCiAgICAgRlJBTUVfQkxJTktfT0ZGX0NVUlNPUiAoZikgPSBERUZBVUxU X0NVUlNPUjsKKworICAvKiBNYWtlIHN1cmUgdGhlIGN1cnNvciBnZXRzIHJlZHJhd24gZm9y IHRoaXMgZnJhbWUuICAqLworICBmLT5jdXJzb3JfdHlwZV9jaGFuZ2VkID0gMTsKIH0KIAog Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3hmbnMuYycKLS0tIHNyYy94Zm5zLmMJMjAxMi0x MS0xMiAwNDowMDo1NSArMDAwMAorKysgc3JjL3hmbnMuYwkyMDEyLTExLTE2IDA5OjQ3OjUx ICswMDAwCkBAIC0xMDgyLDkgKzEwODIsNiBAQAogeF9zZXRfY3Vyc29yX3R5cGUgKEZSQU1F X1BUUiBmLCBMaXNwX09iamVjdCBhcmcsIExpc3BfT2JqZWN0IG9sZHZhbCkKIHsKICAgc2V0 X2ZyYW1lX2N1cnNvcl90eXBlcyAoZiwgYXJnKTsKLQotICAvKiBNYWtlIHN1cmUgdGhlIGN1 cnNvciBnZXRzIHJlZHJhd24uICAqLwotICBjdXJzb3JfdHlwZV9jaGFuZ2VkID0gMTsKIH0K IAwKIHN0YXRpYyB2b2lkCgo= --------------050208070807060008050400--