From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6502 invoked by alias); 6 Apr 2011 14:30:02 -0000 Received: (qmail 6357 invoked by uid 22791); 6 Apr 2011 14:30:00 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,TW_GC,TW_LG X-Spam-Check-By: sourceware.org Received: from mail-vx0-f175.google.com (HELO mail-vx0-f175.google.com) (209.85.220.175) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 06 Apr 2011 14:29:55 +0000 Received: by vxd7 with SMTP id 7so1358253vxd.20 for ; Wed, 06 Apr 2011 07:29:54 -0700 (PDT) Received: by 10.52.177.233 with SMTP id ct9mr1529757vdc.110.1302100194442; Wed, 06 Apr 2011 07:29:54 -0700 (PDT) MIME-Version: 1.0 Received: by 10.52.162.8 with HTTP; Wed, 6 Apr 2011 07:29:14 -0700 (PDT) In-Reply-To: <4D9B112B.6000408@redhat.com> References: <4D95909E.4060309@redhat.com> <4D959C24.8030408@redhat.com> <238A96A773B3934685A7269CC8A8D04272EFEFD5C3@GVW0436EXB.americas.hpqcorp.net> <4D997D8C.9060903@redhat.com> <4D9993D4.9040704@redhat.com> <4D9ADA89.8000307@redhat.com> <4D9B112B.6000408@redhat.com> From: Erik Groeneveld Date: Wed, 06 Apr 2011 14:30:00 -0000 Message-ID: Subject: Re: GC leaks debugging To: Andrew Haley Cc: java@gcc.gnu.org Content-Type: multipart/mixed; boundary=20cf307abde98d3ed404a040d314 X-IsSubscribed: yes Mailing-List: contact java-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: java-owner@gcc.gnu.org X-SW-Source: 2011-04/txt/msg00032.txt.bz2 --20cf307abde98d3ed404a040d314 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 2182 >> The tests work fine on OpenJDK. =C2=A0What could cause GCJ to grow the h= eap >> infinitely? > > I don't know because you won't show me the tests. Yeah, of course, sorry. I forgot to tell a few things. This problem has been bothering me quite some time now, and I decided to solve it once and forever. I have written many different test, but I am still not able to pinpoint a simple program to demonstrate the results. The problem occurred initially while using Lucene, but later on also with Owlim. Having written all kinds of test programs with Lucene, from doing almost nothing to fully fletched indexing, I can make no definite conclusions yet. I am now circling around the problem, trying to enclose it from different sides and I seek your help for giving me hints on what to look for. It is not lightly that I decided to bring it into this mailing-list, knowing that it would claim many peoples time. Now the test I am running is attached. It indexes a very simple document with a unique id each, first assuring is it deleted. And each loop, it reopens the index-reader and searcher. This test starts to get in trouble above 10,000,000 loops (documents). The problem is that when I remove code (I tested systematically), it only takes longer for the heap to explode. The only test that ran properly was when I only created Documents and not index them. So perhaps it has to do something with I/O. I built the lucene dso with (full script attached): gcj -shared -fPIC $JARFILE -o liblucene-core.so -Lgccinstall/lib -lgcj -findirect-dispatch -fno-indirect-classes and the test with (full scipt attached): g++ -O0 -fPIC -g -o test test.cpp \ -I../include/lucene \ -L../gccinstall/lib64 \ -lgcj \ -L.. \ -llucene-core \ -findirect-dispatch \ GCC being the 4.6 branch from SVN, build with: ../gcc-4_6-branch/configure --prefix=3D$installdir --disable-multilib I understand that this is a high-level approach, and you'll like a smaller test that demonstrates the problem. But I don't have that yet. Any suggestions you can come up with at this level are more than welcome. Meanwhile, I dive deeper into analysis of the heap. Erik --20cf307abde98d3ed404a040d314 Content-Type: text/x-c++src; charset=US-ASCII; name="test.cpp" Content-Disposition: attachment; filename="test.cpp" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gm4w8hs50 Content-length: 5678 CiNpbmNsdWRlIDxnY2ovY25pLmg+CiNpbmNsdWRlIDxzdGRpby5oPgojaW5j bHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUg PGZzdHJlYW0+CiNpbmNsdWRlIDxpb3N0cmVhbT4KCiNpbmNsdWRlICJqYXZh L2xhbmcvVGhyb3dhYmxlLmgiCiNpbmNsdWRlICJqYXZhL2xhbmcvSW50ZWdl ci5oIgojaW5jbHVkZSAiamF2YS9sYW5nL0Jvb2xlYW4uaCIKI2luY2x1ZGUg ImphdmEvdXRpbC9Db2xsZWN0aW9uLmgiCiNpbmNsdWRlICJqYXZhL3V0aWwv QXJyYXlMaXN0LmgiCiNpbmNsdWRlICJqYXZhL2lvL0ZpbGUuaCIKCiNpbmNs dWRlICJvcmcvYXBhY2hlL2x1Y2VuZS9pbmRleC9UZXJtLmgiCiNpbmNsdWRl ICJvcmcvYXBhY2hlL2x1Y2VuZS9pbmRleC9JbmRleFJlYWRlci5oIgojaW5j bHVkZSAib3JnL2FwYWNoZS9sdWNlbmUvaW5kZXgvSW5kZXhSZWFkZXIkRmll bGRPcHRpb24uaCIKI2luY2x1ZGUgIm9yZy9hcGFjaGUvbHVjZW5lL2luZGV4 L0luZGV4V3JpdGVyLmgiCiNpbmNsdWRlICJvcmcvYXBhY2hlL2x1Y2VuZS9p bmRleC9JbmRleFdyaXRlciRNYXhGaWVsZExlbmd0aC5oIgojaW5jbHVkZSAi b3JnL2FwYWNoZS9sdWNlbmUvc2VhcmNoL0luZGV4U2VhcmNoZXIuaCIKI2lu Y2x1ZGUgIm9yZy9hcGFjaGUvbHVjZW5lL2RvY3VtZW50L0RvY3VtZW50Lmgi IAojaW5jbHVkZSAib3JnL2FwYWNoZS9sdWNlbmUvZG9jdW1lbnQvRmllbGQu aCIgCiNpbmNsdWRlICJvcmcvYXBhY2hlL2x1Y2VuZS9kb2N1bWVudC9GaWVs ZCRJbmRleC5oIiAKI2luY2x1ZGUgIm9yZy9hcGFjaGUvbHVjZW5lL2RvY3Vt ZW50L0ZpZWxkJFN0b3JlLmgiIAojaW5jbHVkZSAib3JnL2FwYWNoZS9sdWNl bmUvZG9jdW1lbnQvRmllbGRhYmxlLmgiIAojaW5jbHVkZSAib3JnL2FwYWNo ZS9sdWNlbmUvYW5hbHlzaXMvc3RhbmRhcmQvU3RhbmRhcmRBbmFseXplci5o IiAKI2luY2x1ZGUgIm9yZy9hcGFjaGUvbHVjZW5lL2FuYWx5c2lzL0FuYWx5 emVyLmgiIAojaW5jbHVkZSAib3JnL2FwYWNoZS9sdWNlbmUvdXRpbC9WZXJz aW9uLmgiCiNpbmNsdWRlICJvcmcvYXBhY2hlL2x1Y2VuZS9zdG9yZS9EaXJl Y3RvcnkuaCIKI2luY2x1ZGUgIm9yZy9hcGFjaGUvbHVjZW5lL3N0b3JlL0xv Y2tGYWN0b3J5LmgiCiNpbmNsdWRlICJvcmcvYXBhY2hlL2x1Y2VuZS9zdG9y ZS9TaW1wbGVGU0RpcmVjdG9yeS5oIgojaW5jbHVkZSAib3JnL2FwYWNoZS9s dWNlbmUvc3RvcmUvU2ltcGxlRlNMb2NrRmFjdG9yeS5oIgoKdXNpbmcgbmFt ZXNwYWNlIG9yZzo6YXBhY2hlOjpsdWNlbmU7CnVzaW5nIG5hbWVzcGFjZSBv cmc6OmFwYWNoZTo6bHVjZW5lOjp1dGlsOwp1c2luZyBuYW1lc3BhY2Ugb3Jn OjphcGFjaGU6Omx1Y2VuZTo6aW5kZXg7CnVzaW5nIG5hbWVzcGFjZSBvcmc6 OmFwYWNoZTo6bHVjZW5lOjpkb2N1bWVudDsKdXNpbmcgbmFtZXNwYWNlIG9y Zzo6YXBhY2hlOjpsdWNlbmU6OnNlYXJjaDsKdXNpbmcgbmFtZXNwYWNlIG9y Zzo6YXBhY2hlOjpsdWNlbmU6OnN0b3JlOwp1c2luZyBuYW1lc3BhY2UgamF2 YTo6bGFuZzsKdXNpbmcgbmFtZXNwYWNlIGphdmE6OnV0aWw7CgpEaXJlY3Rv cnkqIG1ha2VEaXJlY3RvcnkoU3RyaW5nKiBwYXRoKSB7CiAgICBMb2NrRmFj dG9yeSogbG9ja0ZhY3RvcnkgPSBuZXcgU2ltcGxlRlNMb2NrRmFjdG9yeSgp OwogICAgcmV0dXJuIChEaXJlY3RvcnkqKSBuZXcgU2ltcGxlRlNEaXJlY3Rv cnkobmV3IGphdmE6OmlvOjpGaWxlKHBhdGgpLCBsb2NrRmFjdG9yeSk7Cn0K CnZvaWQgX0p2X1J1bkdDKHZvaWQpOwpsb25nIF9Kdl9HQ1RvdGFsTWVtb3J5 ICh2b2lkKTsKCmludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsK ICAgIEp2Q3JlYXRlSmF2YVZNKE5VTEwpOwogICAgSnZBdHRhY2hDdXJyZW50 VGhyZWFkKE5VTEwsIE5VTEwpOwogICAgCiAgICBKdkluaXRDbGFzcygmSW50 ZWdlcjo6Y2xhc3MkKTsKICAgIEp2SW5pdENsYXNzKCZJbmRleFJlYWRlcjo6 Y2xhc3MkKTsKICAgIEp2SW5pdENsYXNzKCZJbmRleFdyaXRlcjo6Y2xhc3Mk KTsKICAgIEp2SW5pdENsYXNzKCZJbmRleFdyaXRlciRNYXhGaWVsZExlbmd0 aDo6Y2xhc3MkKTsKICAgIEp2SW5pdENsYXNzKCZJbmRleFJlYWRlciRGaWVs ZE9wdGlvbjo6Y2xhc3MkKTsKICAgIEp2SW5pdENsYXNzKCZGaWVsZDo6Y2xh c3MkKTsKICAgIEp2SW5pdENsYXNzKCZGaWVsZCRTdG9yZTo6Y2xhc3MkKTsK ICAgIEp2SW5pdENsYXNzKCZGaWVsZCRJbmRleDo6Y2xhc3MkKTsKICAgIEp2 SW5pdENsYXNzKCZWZXJzaW9uOjpjbGFzcyQpOwoKICAgIHN0b3JlOjpEaXJl Y3RvcnkqIGluZGV4RGlyZWN0b3J5ID0gbWFrZURpcmVjdG9yeShKdk5ld1N0 cmluZ1VURigiaW5kZXgyIikpOwogICAgU3RyaW5nKiBmaWVsZE5hbWUgPSBK dk5ld1N0cmluZ1VURigiZmllbGQiKTsKICAgIFN0cmluZyogdGVybSA9IEp2 TmV3U3RyaW5nVVRGKCJ0ZXJtIik7CiAgICBTdHJpbmcqIGlkRmllbGROYW1l ID0gSnZOZXdTdHJpbmdVVEYoImlkIik7CgogICAgaW5kZXg6OkluZGV4V3Jp dGVyKiB3cml0ZXIgPSBOVUxMOwogICAgdHJ5IHsgCiAgICAgICAgYW5hbHlz aXM6OkFuYWx5emVyKiBhbmFseXplciA9IG5ldyBhbmFseXNpczo6c3RhbmRh cmQ6OlN0YW5kYXJkQW5hbHl6ZXIodXRpbDo6VmVyc2lvbjo6TFVDRU5FXzMw KTsKICAgICAgICB3cml0ZXIgPSBuZXcgSW5kZXhXcml0ZXIoaW5kZXhEaXJl Y3RvcnksIGFuYWx5emVyLCB0cnVlLCBJbmRleFdyaXRlciRNYXhGaWVsZExl bmd0aDo6VU5MSU1JVEVEKTsKICAgICAgICB3cml0ZXItPmNsb3NlKCk7CiAg ICAgICAgd3JpdGVyID0gbmV3IEluZGV4V3JpdGVyKGluZGV4RGlyZWN0b3J5 LCBhbmFseXplciwgdHJ1ZSwgSW5kZXhXcml0ZXIkTWF4RmllbGRMZW5ndGg6 OlVOTElNSVRFRCk7CiAgICAgICAgSW5kZXhSZWFkZXIqIHJlYWRlciA9IElu ZGV4UmVhZGVyOjpvcGVuKGluZGV4RGlyZWN0b3J5KTsKICAgICAgICBJbmRl eFNlYXJjaGVyKiBzZWFyY2hlciA9IG5ldyBJbmRleFNlYXJjaGVyKHJlYWRl cik7CiAgICAgICAgd2hpbGUgKCB0cnVlICkgewogICAgICAgICAgICBzdGF0 aWMgaW50IGkgPSAwOwogICAgICAgICAgICBpZiAoaSsrICUgMTAwMCA9PSAw KSB7CiAgICAgICAgICAgICAgICBwcmludGYoIiVkICVkXG4iLCBpLCBfSnZf R0NUb3RhbE1lbW9yeSgpKTsKICAgICAgICAgICAgICAgIGZmbHVzaChzdGRv dXQpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIERvY3VtZW50KiBkb2Mg PSBuZXcgRG9jdW1lbnQoKTsKICAgICAgICAgICAgRmllbGRhYmxlKiBmaWVs ZCA9IChGaWVsZGFibGUqKSBuZXcgRmllbGQoZmllbGROYW1lLCB0ZXJtLCBG aWVsZCRTdG9yZTo6WUVTLCBGaWVsZCRJbmRleDo6QU5BTFlaRUQpOwogICAg ICAgICAgICBkb2MtPmFkZChmaWVsZCk7CiAgICAgICAgICAgIFN0cmluZyog aWQgPSBJbnRlZ2VyOjp0b1N0cmluZyhpKTsKICAgICAgICAgICAgRmllbGRh YmxlKiBpZEZpZWxkID0gKEZpZWxkYWJsZSopIG5ldyBGaWVsZChpZEZpZWxk TmFtZSwgaWQsIEZpZWxkJFN0b3JlOjpZRVMsIEZpZWxkJEluZGV4OjpBTkFM WVpFRCk7CiAgICAgICAgICAgIGRvYy0+YWRkKGlkRmllbGQpOwogICAgICAg ICAgICBUZXJtKiB0ZXJtID0gbmV3IFRlcm0oaWRGaWVsZE5hbWUsIGlkKTsK ICAgICAgICAgICAgd3JpdGVyLT5kZWxldGVEb2N1bWVudHModGVybSk7CiAg ICAgICAgICAgIHdyaXRlci0+YWRkRG9jdW1lbnQoZG9jKTsKICAgICAgICAg ICAgc2VhcmNoZXItPmNsb3NlKCk7CiAgICAgICAgICAgIHJlYWRlci0+Y2xv c2UoKTsKICAgICAgICAgICAgcmVhZGVyID0gSW5kZXhSZWFkZXI6Om9wZW4o aW5kZXhEaXJlY3RvcnkpOwogICAgICAgICAgICBDb2xsZWN0aW9uKiBmaWVs ZHMgPSByZWFkZXItPmdldEZpZWxkTmFtZXMoSW5kZXhSZWFkZXIkRmllbGRP cHRpb246OkFMTCk7CiAgICAgICAgICAgIHNlYXJjaGVyID0gbmV3IEluZGV4 U2VhcmNoZXIocmVhZGVyKTsKICAgICAgICB9CiAgICB9CiAgICBjYXRjaCAo VGhyb3dhYmxlKiBlKSB7CiAgICAgICAgZS0+cHJpbnRTdGFja1RyYWNlKCk7 CiAgICAgICAgaWYgKHdyaXRlciAhPSBOVUxMKSB7CiAgICAgICAgICAgIHdy aXRlci0+Y2xvc2UoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIDE7CiAg ICB9CiAgICB3cml0ZXItPmNsb3NlKCk7CiAgICAKICAgIHJldHVybiAwOwp9 Cgo= --20cf307abde98d3ed404a040d314 Content-Type: application/x-sh; name="buildlucenelib.sh" Content-Disposition: attachment; filename="buildlucenelib.sh" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gm6cnpw61 Content-length: 2741 I2luc3RhbGwgYmFzZW5hbWUKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K I0xpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOgojICAgL2hvbWUv ZXJpay9kZXYvY3EyL3phbmRiYWsvbHVjZW5lLWdjai1qdm0tbWVtbGVhay10 ZXN0cy9sdWNlbmUzLWdjajQ2L2djY2luc3RhbGwvbGliCiMKI0lmIHlvdSBl dmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQg bGlicmFyaWVzCiNpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3Ug bXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZAojc3BlY2lmeSB0aGUgZnVs bCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBgLUxMSUJE SVInCiNmbGFnIGR1cmluZyBsaW5raW5nIGFuZCBkbyBhdCBsZWFzdCBvbmUg b2YgdGhlIGZvbGxvd2luZzoKIyAgIC0gYWRkIExJQkRJUiB0byB0aGUgYExE X0xJQlJBUllfUEFUSCcgZW52aXJvbm1lbnQgdmFyaWFibGUKIyAgICAgZHVy aW5nIGV4ZWN1dGlvbgojICAgLSBhZGQgTElCRElSIHRvIHRoZSBgTERfUlVO X1BBVEgnIGVudmlyb25tZW50IHZhcmlhYmxlCiMgICAgIGR1cmluZyBsaW5r aW5nCiMgICAtIHVzZSB0aGUgYC1XbCwtcnBhdGggLVdsLExJQkRJUicgbGlu a2VyIGZsYWcKIyAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9y IGFkZCBMSUJESVIgdG8gYC9ldGMvbGQuc28uY29uZicKIwojU2VlIGFueSBv cGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxp YnJhcmllcyBmb3IKI21vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxk KDEpIGFuZCBsZC5zbyg4KSBtYW51YWwgcGFnZXMuCiMtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCgpQQVRIPWdjY2luc3RhbGwvYmluOiRQQVRICgppZiBb ICEgYHdoaWNoIHVuemlwYCBdIDsgdGhlbgogICAgZWNobyAidW56aXAgbm90 IGZvdW5kOiBpbnN0YWxsIHVuemlwIHBhY2thZ2UiCiAgICBleGl0IDEKZmkK CmlmIFsgISBgd2hpY2ggZ2NqYCBdIDsgdGhlbgogICAgZWNobyAiZ2NqIG5v dCBmb3VuZC4iCiAgICBleGl0IDEKZmkKCkpBUkZJTEU9bHVjZW5lLWNvcmUt My4xLjAuamFyCkxVQ0VORV9KQVJfVVJMPSJodHRwOi8vYXBhY2hlLnByb3Nl cnZlLm5sLy9sdWNlbmUvamF2YS8zLjEuMC9sdWNlbmUtMy4xLjAudGFyLmd6 IgoKaWYgWyAhIC1mICRKQVJGSUxFIF07IHRoZW4KICBlY2hvICJEb3dubG9h ZGluZyBMdWNlbmUgSmFyIGZyb206ICRMVUNFTkVfSkFSX1VSTCIKICB3Z2V0 IC0tcXVpZXQgLU8tICRMVUNFTkVfSkFSX1VSTCB8IHRhciB4emYgLSBsdWNl bmUtMy4xLjAvbHVjZW5lLWNvcmUtMy4xLjAuamFyIC1PID4gJEpBUkZJTEUK ZmkKCmdjaiAtc2hhcmVkIC1mUElDICRKQVJGSUxFIC1vIGxpYmx1Y2VuZS1j b3JlLnNvIC1MZ2NjaW5zdGFsbC9saWIgLWxnY2ogLWZpbmRpcmVjdC1kaXNw YXRjaCAtZm5vLWluZGlyZWN0LWNsYXNzZXMKIy1naQoKVE1QRElSPWBta3Rl bXAgLS1kaXJlY3RvcnlgCgp1bnppcCAkSkFSRklMRSAtZCRUTVBESVIKCmZv ciBjbGFzc0ZpbGUgaW4gJChmaW5kICRUTVBESVIgLW5hbWUgKi5jbGFzcykK ZG8KICAgIHRhcmdldERpcj0iaW5jbHVkZS9sdWNlbmUvJChkaXJuYW1lICRj bGFzc0ZpbGUgfCBzZWQgcywkVE1QRElSLywsKSIKICAgIGZpbGVuYW1lPSQo YmFzZW5hbWUgJGNsYXNzRmlsZSAuY2xhc3MpCiAgICB0YXJnZXRGaWxlPSR0 YXJnZXREaXIvJGZpbGVuYW1lLmgKCiAgICBta2RpciAtLXBhcmVudHMgJHRh cmdldERpcgoKICAgIGNsYXNzTmFtZT0kKGVjaG8gJGNsYXNzRmlsZXwgc2Vk IHMsLmNsYXNzLCwgfCBzZWQgcywkVE1QRElSLywsIHwgc2VkIHMsLywuLGcp CiAgICBnY2poIC1JICRUTVBESVIgLW8gJHRhcmdldEZpbGUgJGNsYXNzTmFt ZQogICAgZWNobyAkY2xhc3NOYW1lCmRvbmUKCnJtICRUTVBESVIgLXIK --20cf307abde98d3ed404a040d314 Content-Type: application/x-sh; name="buildAndRun.sh" Content-Disposition: attachment; filename="buildAndRun.sh" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gm6co3vo2 Content-length: 476 IyEvYmluL2Jhc2gKCnNldCAtZQpQQVRIPS4uL2djY2luc3RhbGwvYmluOiRQ QVRICmV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9Li46Li4vZ2NjaW5zdGFsbC9s aWI2NAoKZysrIC1PMCAtZlBJQyAtZyAtbyB0ZXN0IHRlc3QuY3BwIFwKICAg IC1JLi4vaW5jbHVkZS9sdWNlbmUgXAogICAgLUwuLi9nY2NpbnN0YWxsL2xp YjY0IFwKICAgIC1sZ2NqIFwKICAgIC1MLi4gXAogICAgLWxsdWNlbmUtY29y ZSBcCiAgICAtZmluZGlyZWN0LWRpc3BhdGNoIFwKCnJtIC1yZiBpbmRleAoK dWxpbWl0IC1jIHVubGltaXRlZApleHBvcnQgR0NfRFVNUF9SRUdVTEFSTFk9 MQojZXhwb3J0IEdDX0JBQ0tUUkFDRVM9MTAKLi90ZXN0Cgo= --20cf307abde98d3ed404a040d314--