From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dov Grobgeld Newsgroups: gmane.emacs.bugs Subject: bug#11380: emacs compilation fails in call to oblookup() with len=-1 Date: Sun, 29 Apr 2012 20:59:29 +0300 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=f46d044785fd5d246704bed519e4 X-Trace: dough.gmane.org 1335722464 26667 80.91.229.3 (29 Apr 2012 18:01:04 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sun, 29 Apr 2012 18:01:04 +0000 (UTC) To: 11380@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Apr 29 20:01:03 2012 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 1SOYQf-0001mP-ET for geb-bug-gnu-emacs@m.gmane.org; Sun, 29 Apr 2012 20:01:01 +0200 Original-Received: from localhost ([::1]:50255 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SOYQe-0003Tm-Jl for geb-bug-gnu-emacs@m.gmane.org; Sun, 29 Apr 2012 14:01:00 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:37844) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SOYQY-0003TX-BP for bug-gnu-emacs@gnu.org; Sun, 29 Apr 2012 14:00:59 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SOYQW-0007BK-43 for bug-gnu-emacs@gnu.org; Sun, 29 Apr 2012 14:00:53 -0400 Original-Received: from [140.186.70.43] (port=56962 helo=debbugs.gnu.org) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SOYQV-0007At-UB for bug-gnu-emacs@gnu.org; Sun, 29 Apr 2012 14:00:52 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1SOYRe-0004tz-0O for bug-gnu-emacs@gnu.org; Sun, 29 Apr 2012 14:02:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Dov Grobgeld Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 29 Apr 2012 18:02:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 11380 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.133572248618801 (code B ref -1); Sun, 29 Apr 2012 18:02:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 29 Apr 2012 18:01:26 +0000 Original-Received: from localhost ([127.0.0.1]:57996 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SOYR2-0004t9-F2 for submit@debbugs.gnu.org; Sun, 29 Apr 2012 14:01:25 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:49305) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1SOYQf-0004sJ-6c for submit@debbugs.gnu.org; Sun, 29 Apr 2012 14:01:21 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SOYPJ-0006jF-5H for submit@debbugs.gnu.org; Sun, 29 Apr 2012 13:59:39 -0400 Original-Received: from lists.gnu.org ([208.118.235.17]:59829) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SOYPI-0006j0-VO for submit@debbugs.gnu.org; Sun, 29 Apr 2012 13:59:37 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:37913) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SOYPG-0003Nq-JE for bug-gnu-emacs@gnu.org; Sun, 29 Apr 2012 13:59:36 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SOYPD-0006gU-Vt for bug-gnu-emacs@gnu.org; Sun, 29 Apr 2012 13:59:34 -0400 Original-Received: from mail-ob0-f169.google.com ([209.85.214.169]:64361) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SOYPD-0006fx-LZ for bug-gnu-emacs@gnu.org; Sun, 29 Apr 2012 13:59:31 -0400 Original-Received: by obbwd18 with SMTP id wd18so333645obb.0 for ; Sun, 29 Apr 2012 10:59:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=ElTUSaX/rdYadY4/AqxsP8wjZhvS9E08NDuUtGPHpm8=; b=mtmTUeCATKiRNC65RrNELtIex8JdXRxvV+/0kNbl5jKpULBOoALBCm9nn6Pz6dDysh MkolOkWpdowKLsDQrTl0AsdVmpqbFkOK3RhQN3uuyIIGH5GMR8np/WlVKQ3XPDZyR77b WUxrWoj+1XVRAOVqgy5eQD6BYNDJrFZMKhd3bv9Ge0Ezhv7D8KlCegOKZ1HGJ8Ji2GL3 IpqM3u4bTnrNZspXnDvQHO/+DdsAFTJN7LBoPLKpR3oGjlpLINtTV27s3+qM8juBR7el jAijx2kT2BEeUw1cspqm5frAT8LniJKUOnWxto1TSAR1dLxW+zG2p9XeiXwd6jpu9b6F MyuQ== Original-Received: by 10.182.122.4 with SMTP id lo4mr24379379obb.24.1335722369688; Sun, 29 Apr 2012 10:59:29 -0700 (PDT) Original-Received: by 10.182.52.202 with HTTP; Sun, 29 Apr 2012 10:59:29 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) 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:59628 Archived-At: --f46d044785fd5d246704bed519e4 Content-Type: text/plain; charset=UTF-8 building emacs crashes in src/doc.c::oblookup() with len=-1. The following patch solves the problem: diff --git a/src/doc.c b/src/doc.c index 9e48a4d..ce54fd2 100644 --- a/src/doc.c +++ b/src/doc.c @@ -655,41 +655,45 @@ the same file name is found in the `doc-directory'. */) } } - sym = oblookup (Vobarray, p + 2, - multibyte_chars_in_text ((unsigned char *) p + 2, - end - p - 2), - end - p - 2); - /* Check skip_file so that when a function is defined several - times in different files (typically, once in xterm, once in - w32term, ...), we only pay attention to the one that - matters. */ - if (! skip_file && SYMBOLP (sym)) - { - /* Attach a docstring to a variable? */ - if (p[1] == 'V') - { - /* Install file-position as variable-documentation property - and make it negative for a user-variable - (doc starts with a `*'). */ - if (!NILP (Fboundp (sym))) - Fput (sym, Qvariable_documentation, - make_number ((pos + end + 1 - buf) - * (end[1] == '*' ? -1 : 1))); - } - - /* Attach a docstring to a function? */ - else if (p[1] == 'F') + EMACS_INT len = end - p - 2; + if (len>0) + { + sym = oblookup (Vobarray, p + 2, + multibyte_chars_in_text ((unsigned char *) p + 2, + end - p - 2), + len); + /* Check skip_file so that when a function is defined several + times in different files (typically, once in xterm, once in + w32term, ...), we only pay attention to the one that + matters. */ + if (! skip_file && SYMBOLP (sym)) { - if (!NILP (Ffboundp (sym))) - store_function_docstring (sym, pos + end + 1 - buf); + /* Attach a docstring to a variable? */ + if (p[1] == 'V') + { + /* Install file-position as variable-documentation property + and make it negative for a user-variable + (doc starts with a `*'). */ + if (!NILP (Fboundp (sym))) + Fput (sym, Qvariable_documentation, + make_number ((pos + end + 1 - buf) + * (end[1] == '*' ? -1 : 1))); + } + + /* Attach a docstring to a function? */ + else if (p[1] == 'F') + { + if (!NILP (Ffboundp (sym))) + store_function_docstring (sym, pos + end + 1 - buf); + } + else if (p[1] == 'S') + ; /* Just a source file name boundary marker. Ignore it. */ + + else + error ("DOC file invalid at position %"pI"d", pos); } - else if (p[1] == 'S') - ; /* Just a source file name boundary marker. Ignore it. */ - - else - error ("DOC file invalid at position %"pI"d", pos); - } - } + } + } pos += end - buf; filled -= end - buf; memmove (buf, end, filled); Regards, Dov On Sun, Apr 29, 2012 at 20:41, Dov Grobgeld wrote: > Chucking out git head (git commit e3e392d from git://repo.or.cz/emacs.git) > and doing a debug build as described below > fails. The compilation looks for the non-existing file "chkmalloc.h". > > Here are the steps that I performed: > > ./autogen.sh > ./configure --prefix=/usr/local/public-dev/ CPPFLAGS=-DDEBUG CFLAGS="-g > -O0" > make > > which fails as follows: > > gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I../src -I../lib > -I/space/pub-repos/emacs.git/lib-src > -I/space/pub-repos/emacs.git/lib-src/../src > -I/space/pub-repos/emacs.git/lib-src/../lib -Wl,-znocombreloc -DDEBUG -g > -O0 -DEMACS_NAME="\"GNU Emacs\"" \ > -DVERSION="\"24.1.50\"" /space/pub-repos/emacs.git/lib-src/etags.c \ > regex.o ../lib/libgnu.a -o etags > /space/pub-repos/emacs.git/lib-src/etags.c:233:24: fatal error: > chkmalloc.h: No such file or directory > > System is: Linux grower 3.3.2-6.fc16.i686 #1 SMP Sat Apr 21 13:23:12 UTC > 2012 i686 i686 i386 GNU/Linux > > Regards, > Dov > > --f46d044785fd5d246704bed519e4 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGZvbnQgZmFjZT0iYXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWYiPmJ1 aWxkaW5nIGVtYWNzIGNyYXNoZXMgaW4gc3JjL2RvYy5jOjpvYmxvb2t1cCgpIHdpdGggbGVuPS0x LiBUaGUgZm9sbG93aW5nIHBhdGNoIHNvbHZlcyB0aGUgcHJvYmxlbTo8YnI+PGJyPmRpZmYgLS1n aXQgYS9zcmMvZG9jLmMgYi9zcmMvZG9jLmM8YnI+aW5kZXggOWU0OGE0ZC4uY2U1NGZkMiAxMDA2 NDQ8YnI+Ci0tLSBhL3NyYy9kb2MuYzxicj4rKysgYi9zcmMvZG9jLmM8YnI+QEAgLTY1NSw0MSAr NjU1LDQ1IEBAIHRoZSBzYW1lIGZpbGUgbmFtZSBpcyBmb3VuZCBpbiB0aGUgYGRvYy1kaXJlY3Rv cnkmIzM5Oy7CoCAqLyk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfTxicj7C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfTxicj7CoDxicj4twqDCoMKgIMKgIHN5bSA9IG9ibG9v a3VwIChWb2JhcnJheSwgcCArIDIsPGJyPi3CoMKgwqAgwqDCoMKgIMKgwqDCoCDCoCBtdWx0aWJ5 dGVfY2hhcnNfaW5fdGV4dCAoKHVuc2lnbmVkIGNoYXIgKikgcCArIDIsPGJyPgotwqDCoMKgIMKg wqDCoCDCoMKgwqAgwqDCoMKgIMKgwqDCoCDCoMKgwqAgwqDCoCBlbmQgLSBwIC0gMiksPGJyPi3C oMKgwqAgwqDCoMKgIMKgwqDCoCDCoCBlbmQgLSBwIC0gMik7PGJyPi3CoMKgwqAgwqAgLyogQ2hl Y2sgc2tpcF9maWxlIHNvIHRoYXQgd2hlbiBhIGZ1bmN0aW9uIGlzIGRlZmluZWQgc2V2ZXJhbDxi cj4twqDCoMKgIMKgwqDCoMKgIHRpbWVzIGluIGRpZmZlcmVudCBmaWxlcyAodHlwaWNhbGx5LCBv bmNlIGluIHh0ZXJtLCBvbmNlIGluPGJyPgotwqDCoMKgIMKgwqDCoMKgIHczMnRlcm0sIC4uLiks IHdlIG9ubHkgcGF5IGF0dGVudGlvbiB0byB0aGUgb25lIHRoYXQ8YnI+LcKgwqDCoCDCoMKgwqDC oCBtYXR0ZXJzLsKgICovPGJyPi3CoMKgwqAgwqAgaWYgKCEgc2tpcF9maWxlICZhbXA7JmFtcDsg U1lNQk9MUCAoc3ltKSk8YnI+LcKgwqDCoCDCoMKgwqAgezxicj4twqDCoMKgIMKgwqDCoMKgwqAg LyogQXR0YWNoIGEgZG9jc3RyaW5nIHRvIGEgdmFyaWFibGU/wqAgKi88YnI+LcKgwqDCoCDCoMKg wqDCoMKgIGlmIChwWzFdID09ICYjMzk7ViYjMzk7KTxicj4KLcKgwqDCoCDCoMKgwqAgezxicj4t wqDCoMKgIMKgwqDCoCDCoCAvKiBJbnN0YWxsIGZpbGUtcG9zaXRpb24gYXMgdmFyaWFibGUtZG9j dW1lbnRhdGlvbiBwcm9wZXJ0eTxicj4twqDCoMKgIMKgwqDCoCDCoMKgwqDCoCBhbmQgbWFrZSBp dCBuZWdhdGl2ZSBmb3IgYSB1c2VyLXZhcmlhYmxlPGJyPi3CoMKgwqAgwqDCoMKgIMKgwqDCoMKg IChkb2Mgc3RhcnRzIHdpdGggYSBgKiYjMzk7KS7CoCAqLzxicj4twqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpZiAoIU5JTFAgKEZib3VuZHAgKHN5bSkpKTxicj4KLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEZwdXQgKHN5bSwgUXZhcmlhYmxlX2RvY3Vt ZW50YXRpb24sPGJyPi3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBtYWtlX251bWJlciAoKHBvcyArIGVuZCArIDEgLSBidWYpPGJyPi3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICogKGVuZFsxXSA9PSAmIzM5OyomIzM5OyA/IC0xIDogMSkpKTs8YnI+LcKgwqDC oCDCoMKgwqAgfTxicj4tPGJyPgotwqDCoMKgIMKgwqDCoMKgwqAgLyogQXR0YWNoIGEgZG9jc3Ry aW5nIHRvIGEgZnVuY3Rpb24/wqAgKi88YnI+LcKgwqDCoCDCoMKgwqDCoMKgIGVsc2UgaWYgKHBb MV0gPT0gJiMzOTtGJiMzOTspPGJyPivCoMKgwqDCoMKgwqDCoMKgwqAgRU1BQ1NfSU5UIGxlbiA9 IGVuZCAtIHAgLSAyOzxicj4rwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChsZW4mZ3Q7MCk8YnI+K8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgezxicj4rwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3lt ID0gb2Jsb29rdXAgKFZvYmFycmF5LCBwICsgMiw8YnI+CivCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG11bHRpYnl0ZV9jaGFyc19pbl90 ZXh0ICgodW5zaWduZWQgY2hhciAqKSBwICsgMiw8YnI+K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbmQgLSBwIC0gMiksPGJyPivCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxlbik7PGJy PivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBDaGVjayBza2lwX2ZpbGUgc28gdGhhdCB3 aGVuIGEgZnVuY3Rpb24gaXMgZGVmaW5lZCBzZXZlcmFsPGJyPgorwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgdGltZXMgaW4gZGlmZmVyZW50IGZpbGVzICh0eXBpY2FsbHksIG9uY2Ug aW4geHRlcm0sIG9uY2UgaW48YnI+K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHcz MnRlcm0sIC4uLiksIHdlIG9ubHkgcGF5IGF0dGVudGlvbiB0byB0aGUgb25lIHRoYXQ8YnI+K8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1hdHRlcnMuwqAgKi88YnI+K8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlmICghIHNraXBfZmlsZSAmYW1wOyZhbXA7IFNZTUJPTFAgKHN5 bSkpPGJyPgrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7PGJyPi3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghTklMUCAoRmZib3VuZHAgKHN5bSkpKTxicj4t wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RvcmVfZnVuY3Rpb25fZG9j c3RyaW5nIChzeW0sIHBvcyArIGVuZCArIDEgLSBidWYpOzxicj4rwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAvKiBBdHRhY2ggYSBkb2NzdHJpbmcgdG8gYSB2YXJpYWJsZT/CoCAq Lzxicj4rwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocFsxXSA9PSAmIzM5 O1YmIzM5Oyk8YnI+CivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB7PGJy PivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogSW5zdGFsbCBm aWxlLXBvc2l0aW9uIGFzIHZhcmlhYmxlLWRvY3VtZW50YXRpb24gcHJvcGVydHk8YnI+K8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhbmQgbWFrZSBpdCBu ZWdhdGl2ZSBmb3IgYSB1c2VyLXZhcmlhYmxlPGJyPivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGRvYyBzdGFydHMgd2l0aCBhIGAqJiMzOTspLsKgICov PGJyPgorwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghTklM UCAoRmJvdW5kcCAoc3ltKSkpPGJyPivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEZwdXQgKHN5bSwgUXZhcmlhYmxlX2RvY3VtZW50YXRpb24sPGJyPivCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1h a2VfbnVtYmVyICgocG9zICsgZW5kICsgMSAtIGJ1Zik8YnI+K8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqIChlbmRbMV0gPT0gJiMzOTsqJiMzOTsgPyAtMSA6IDEpKSk7PGJyPgorwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfTxicj4rwqAgPGJyPivCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIEF0dGFjaCBhIGRvY3N0cmluZyB0byBhIGZ1bmN0 aW9uP8KgICovPGJyPivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2UgaWYg KHBbMV0gPT0gJiMzOTtGJiMzOTspPGJyPivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB7PGJyPivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aWYgKCFOSUxQIChGZmJvdW5kcCAoc3ltKSkpPGJyPgorwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdG9yZV9mdW5jdGlvbl9kb2NzdHJpbmcgKHN5bSwgcG9z ICsgZW5kICsgMSAtIGJ1Zik7PGJyPivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCB9PGJyPivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKHBb MV0gPT0gJiMzOTtTJiMzOTspPGJyPivCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCA7IC8qIEp1c3QgYSBzb3VyY2UgZmlsZSBuYW1lIGJvdW5kYXJ5IG1hcmtlci7CoCBJZ25v cmUgaXQuwqAgKi88YnI+CivCoCA8YnI+K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgZWxzZTxicj4rwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXJyb3Ig KCZxdW90O0RPQyBmaWxlIGludmFsaWQgYXQgcG9zaXRpb24gJSZxdW90O3BJJnF1b3Q7ZCZxdW90 OywgcG9zKTs8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfTxicj4twqDCoMKg IMKgwqDCoMKgwqAgZWxzZSBpZiAocFsxXSA9PSAmIzM5O1MmIzM5Oyk8YnI+LcKgwqDCoCDCoMKg wqAgOyAvKiBKdXN0IGEgc291cmNlIGZpbGUgbmFtZSBib3VuZGFyeSBtYXJrZXIuwqAgSWdub3Jl IGl0LsKgICovPGJyPgotPGJyPi3CoMKgwqAgwqDCoMKgwqDCoCBlbHNlPGJyPi3CoMKgwqAgwqDC oMKgIGVycm9yICgmcXVvdDtET0MgZmlsZSBpbnZhbGlkIGF0IHBvc2l0aW9uICUmcXVvdDtwSSZx dW90O2QmcXVvdDssIHBvcyk7PGJyPi3CoMKgwqAgwqDCoMKgIH08YnI+LcKgwqDCoCB9PGJyPivC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIH08YnI+K8KgIMKgwqDCoCB9PGJyPsKgwqDCoMKgwqDCoCBw b3MgKz0gZW5kIC0gYnVmOzxicj7CoMKgwqDCoMKgwqAgZmlsbGVkIC09IGVuZCAtIGJ1Zjs8YnI+ CsKgwqDCoMKgwqDCoCBtZW1tb3ZlIChidWYsIGVuZCwgZmlsbGVkKTs8YnI+PGJyPjwvZm9udD5S ZWdhcmRzLDxicj5Eb3Y8YnI+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj5PbiBTdW4sIEFw ciAyOSwgMjAxMiBhdCAyMDo0MSwgRG92IEdyb2JnZWxkIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEg aHJlZj0ibWFpbHRvOmRvdi5ncm9iZ2VsZEBnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5kb3Yu Z3JvYmdlbGRAZ21haWwuY29tPC9hPiZndDs8L3NwYW4+IHdyb3RlOjxicj4KPGJsb2NrcXVvdGUg Y2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAwIC44ZXg7Ym9yZGVyLWxlZnQ6 MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+PGRpdiBkaXI9Imx0ciI+PGZvbnQgZmFj ZT0iYXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWYiPkNodWNraW5nIG91dCBnaXQgaGVhZCAoZ2l0 IGNvbW1pdCBlM2UzOTJkIGZyb20gZ2l0Oi8vPGEgaHJlZj0iaHR0cDovL3JlcG8ub3IuY3ovZW1h Y3MuZ2l0IiB0YXJnZXQ9Il9ibGFuayI+cmVwby5vci5jei9lbWFjcy5naXQ8L2E+KSBhbmQgZG9p bmcgYSBkZWJ1ZyBidWlsZCBhcyBkZXNjcmliZWQgYmVsb3c8YnI+CmZhaWxzLiBUaGUgY29tcGls YXRpb24gbG9va3MgZm9yIHRoZSBub24tZXhpc3RpbmcgZmlsZSAmcXVvdDtjaGttYWxsb2MuaCZx dW90Oy48YnI+Cjxicj5IZXJlIGFyZSB0aGUgc3RlcHMgdGhhdCBJIHBlcmZvcm1lZDo8YnI+PGJy PsKgIC4vYXV0b2dlbi5zaCA8YnI+wqAgLi9jb25maWd1cmUgLS1wcmVmaXg9L3Vzci9sb2NhbC9w dWJsaWMtZGV2LyBDUFBGTEFHUz0tRERFQlVHIENGTEFHUz0mcXVvdDstZyAtTzAmcXVvdDs8YnI+ wqAgbWFrZTxicj7CoCA8YnI+d2hpY2ggZmFpbHMgYXMgZm9sbG93czo8YnI+PGJyPmdjYyAtc3Rk PWdudTk5wqDCoMKgwqAgLURIQVZFX0NPTkZJR19IIC1JLiAtSS4uL3NyYyAtSS4uL2xpYiAtSS9z cGFjZS9wdWItcmVwb3MvZW1hY3MuZ2l0L2xpYi1zcmMgLUkvc3BhY2UvcHViLXJlcG9zL2VtYWNz LmdpdC9saWItc3JjLy4uL3NyYyAtSS9zcGFjZS9wdWItcmVwb3MvZW1hY3MuZ2l0L2xpYi1zcmMv Li4vbGliwqAgLVdsLC16bm9jb21icmVsb2PCoCAtRERFQlVHIC1nIC1PMCAtREVNQUNTX05BTUU9 JnF1b3Q7XCZxdW90O0dOVSBFbWFjc1wmcXVvdDsmcXVvdDsgXDxicj4KCsKgIC1EVkVSU0lPTj0m cXVvdDtcJnF1b3Q7MjQuMS41MFwmcXVvdDsmcXVvdDsgL3NwYWNlL3B1Yi1yZXBvcy9lbWFjcy5n aXQvbGliLXNyYy9ldGFncy5jIFw8YnI+wqAgcmVnZXgubyAuLi9saWIvbGliZ251LmHCoCAtbyBl dGFnczxicj4vc3BhY2UvcHViLXJlcG9zL2VtYWNzLmdpdC9saWItc3JjL2V0YWdzLmM6MjMzOjI0 OiBmYXRhbCBlcnJvcjogY2hrbWFsbG9jLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnk8YnI+ Cgo8YnI+U3lzdGVtIGlzOiBMaW51eCBncm93ZXIgMy4zLjItNi5mYzE2Lmk2ODYgIzEgU01QIFNh dCBBcHIgMjEgMTM6MjM6MTIgVVRDPGJyPjIwMTIgaTY4NiBpNjg2IGkzODYgR05VL0xpbnV4PGJy Pjxicj5SZWdhcmRzLDxicj5Eb3Y8YnI+PGJyPjwvZm9udD48ZGl2PjwvZGl2PjwvZGl2Pgo8L2Js b2NrcXVvdGU+PC9kaXY+PGJyPjxkaXYgc3R5bGUgaWQ9ImRpdkNsZWVraUF0dHJpYiI+PC9kaXY+ PC9kaXY+Cg== --f46d044785fd5d246704bed519e4--