From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1998 invoked by alias); 10 Nov 2016 10:37:19 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 39902 Received: (qmail 3904 invoked from network); 10 Nov 2016 10:37:19 -0000 X-Qmail-Scanner-Diagnostics: from new2-smtp.messagingengine.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(66.111.4.224):SA:0(0.0/5.0):. Processed in 0.685636 secs); 10 Nov 2016 10:37:19 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=FREEMAIL_FROM,SPF_PASS, T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: psprint@fastmail.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at spf.messagingengine.com designates 66.111.4.224 as permitted sender) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=fastmail.com; h= content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to:x-me-sender:x-me-sender:x-sasl-enc; s= mesmtp; bh=3mra0n7MB3VMaaM0ldme0PGLghM=; b=6WOtjgiKz61lDUvEwTRcq 9DjU89P4uKCma2gBb9AVjLGuDxPVSq8F6FCIuNLRwhLCt05nMDHkBtYVmTtGReb1 h2W/tKJIXifwsOOQ781kO4tghU8JzNz1hglRChBGvgBnDq4Ttg2U+vE88Z9uzggE gTh01s4kiTwbic5R+p8Tpk= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=content-transfer-encoding:content-type :date:from:message-id:mime-version:subject:to:x-me-sender :x-me-sender:x-sasl-enc; s=smtpout; bh=3mra0n7MB3VMaaM0ldme0PGLg hM=; b=qnmYtbnqQbeaaBkK3eVVnB0z0nU0OCDPju8UwpBad7kMjseuYTSprx8nw z1NwGShcAaz6PvYSs7CMG+mp1hE8gdV8vF26SGax4yzftO8GPSFGUSyenTXq5NdQ EeMFv/Q6sT0DxEF/+iXxQuq/W20Pz7sRe+pBwPjTFNqiMGTcYQ= X-ME-Sender: Message-Id: <1478774232.2371010.783342705.69C81F52@webmail.messagingengine.com> From: Sebastian Gniazdowski To: zsh-workers@zsh.org MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_147877423223710100"; charset="utf-8" X-Mailer: MessagingEngine.com Webmail Interface - ajax-d68eb56e Subject: Callgrind run Date: Thu, 10 Nov 2016 02:37:12 -0800 --_----------=_147877423223710100 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Hello I've run callgrind on Zsh, when executing syntax-highlighting code that parses 823 lines of code: 2,269,560,047 ???:mb_metacharlenconv_r [/usr/local/bin/zsh-debug-opt] 1,698,947,505 ???:remnulargs [/usr/local/bin/zsh-debug-opt] 1,677,804,272 ???:_UTF8_mbrtowc [/usr/lib/system/libsystem_c.dylib] 1,425,973,736 ???:mbrtowc [/usr/lib/system/libsystem_c.dylib] 1,177,994,701 ???:untokenize [/usr/local/bin/zsh-debug-opt] 1,048,181,974 ???:mb_metacharlenconv [/usr/local/bin/zsh-debug-opt] 1,036,055,574 ???:getindex'2 [/usr/local/bin/zsh-debug-opt] 793,202,632 ???:haswilds [/usr/local/bin/zsh-debug-opt] 578,630,988 ???:mb_metastrlenend [/usr/local/bin/zsh-debug-opt] 483,051,992 ???:szone_free_definite_size [/usr/lib/system/libsystem_malloc.dylib] 436,411,797 ???:ztrsub [/usr/local/bin/zsh-debug-opt] 364,444,476 ???:tiny_malloc_from_free_list [/usr/lib/system/libsystem_malloc.dylib] 353,826,375 ???:pattrylen'2 [/usr/local/bin/zsh-debug-opt] 280,090,072 ???:tiny_free_list_add_ptr [/usr/lib/system/libsystem_malloc.dylib] 258,502,596 ???:strlen [/usr/lib/dyld] 234,273,918 ???:pattrylen [/usr/local/bin/zsh-debug-opt] 209,835,520 ???:szone_size [/usr/lib/system/libsystem_malloc.dylib] To repeat the run clone https://github.com/psprint/history-search-multi-word/ and add "valgrind --tool=3Dcallgrind" before "zsh" (after exec) in parse.zsh, then run ./parse.zsh ./to-parse.zsh. I think this is a very good real world test. Seems that Zsh execution could be greatly optimized if functions: remnulargs, untokenize, haswilds could be optimized. Not sure if the results are reasonable, as haswilds just iterates over a string and does quite basic switch. The other two functions have nested loops, so they look more likely as being time consuming. Maybe the nested loop can be changed to something else? Other pointed functions seem to be very valid / expected =E2=80=93=C2=A0mul= tibyte functions. They can be optimized if a courageous decision will be made =E2= =80=93 to do what charnext / pattern.c does: if (!(patglobflags & GF_MULTIBYTE) || !(STOUC(*x) & 0x80)) return x + 1; I.e. to optimize for ASCII as subset of UTF-8 also when calling MB_METACHARLEN, not only for MB_METASTRLEN (recent change). --=20 Sebastian Gniazdowski psprint@fastmail.com --_----------=_147877423223710100 Content-Disposition: attachment; filename="callgrind_annotate.txt" Content-Id: <1478774182.2370548.f5719c4b010cf0e9bb8caea9e3265c25632177da.2207FED2@content.messagingengine.com> Content-Transfer-Encoding: base64 Content-Type: text/plain; name="callgrind_annotate.txt" LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUHJvZmlsZSBk YXRhIGZpbGUgJ2NhbGxncmluZC5vdXQuMTE4NzknIChjcmVhdG9yOiBjYWxs Z3JpbmQtMy4xMi4wKQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpJMSBjYWNoZTogCkQxIGNhY2hlOiAKTEwgY2FjaGU6IApUaW1lcmFu Z2U6IEJhc2ljIGJsb2NrIDAgLSAyOTk1MTY0MTM1ClRyaWdnZXI6IFByb2dy YW0gdGVybWluYXRpb24KUHJvZmlsZWQgdGFyZ2V0OiAgenNoLWRlYnVnLW9w dCAtZiAtYyBzb3VyY2UgIi4vdGVzdHBhcnNlLnpzaCIgIi4vdG8tcGFyc2Uu enNoIiAiY2hhbmdlcy5vdXQiICIiIChQSUQgMTE4NzksIHBhcnQgMSkKRXZl bnRzIHJlY29yZGVkOiAgSXIKRXZlbnRzIHNob3duOiAgICAgSXIKRXZlbnQg c29ydCBvcmRlcjogSXIKVGhyZXNob2xkczogICAgICAgOTkKSW5jbHVkZSBk aXJzOiAgICAgClVzZXIgYW5ub3RhdGVkOiAgIApBdXRvLWFubm90YXRpb246 ICBvZmYKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg ICAgICAgICAgIElyIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQoxNiw3MzUsMzg4LDUzOCAgUFJPR1JBTSBUT1RBTFMKCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgSXIgIGZp bGU6ZnVuY3Rpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KMiwyNjksNTYwLDA0NyAgPz8/Om1iX21ldGFjaGFybGVuY29udl9yIFsv dXNyL2xvY2FsL2Jpbi96c2gtZGVidWctb3B0XQoxLDY5OCw5NDcsNTA1ICA/ Pz86cmVtbnVsYXJncyBbL3Vzci9sb2NhbC9iaW4venNoLWRlYnVnLW9wdF0K MSw2NzcsODA0LDI3MiAgPz8/Ol9VVEY4X21icnRvd2MgWy91c3IvbGliL3N5 c3RlbS9saWJzeXN0ZW1fYy5keWxpYl0KMSw0MjUsOTczLDczNiAgPz8/Om1i cnRvd2MgWy91c3IvbGliL3N5c3RlbS9saWJzeXN0ZW1fYy5keWxpYl0KMSwx NzcsOTk0LDcwMSAgPz8/OnVudG9rZW5pemUgWy91c3IvbG9jYWwvYmluL3pz aC1kZWJ1Zy1vcHRdCjEsMDQ4LDE4MSw5NzQgID8/PzptYl9tZXRhY2hhcmxl bmNvbnYgWy91c3IvbG9jYWwvYmluL3pzaC1kZWJ1Zy1vcHRdCjEsMDM2LDA1 NSw1NzQgID8/PzpnZXRpbmRleCcyIFsvdXNyL2xvY2FsL2Jpbi96c2gtZGVi dWctb3B0XQogIDc5MywyMDIsNjMyICA/Pz86aGFzd2lsZHMgWy91c3IvbG9j YWwvYmluL3pzaC1kZWJ1Zy1vcHRdCiAgNTc4LDYzMCw5ODggID8/PzptYl9t ZXRhc3RybGVuZW5kIFsvdXNyL2xvY2FsL2Jpbi96c2gtZGVidWctb3B0XQog IDQ4MywwNTEsOTkyICA/Pz86c3pvbmVfZnJlZV9kZWZpbml0ZV9zaXplIFsv dXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX21hbGxvYy5keWxpYl0KICA0MzYs NDExLDc5NyAgPz8/Onp0cnN1YiBbL3Vzci9sb2NhbC9iaW4venNoLWRlYnVn LW9wdF0KICAzNjQsNDQ0LDQ3NiAgPz8/OnRpbnlfbWFsbG9jX2Zyb21fZnJl ZV9saXN0IFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX21hbGxvYy5keWxp Yl0KICAzNTMsODI2LDM3NSAgPz8/OnBhdHRyeWxlbicyIFsvdXNyL2xvY2Fs L2Jpbi96c2gtZGVidWctb3B0XQogIDI4MCwwOTAsMDcyICA/Pz86dGlueV9m cmVlX2xpc3RfYWRkX3B0ciBbL3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9t YWxsb2MuZHlsaWJdCiAgMjU4LDUwMiw1OTYgID8/PzpzdHJsZW4gWy91c3Iv bGliL2R5bGRdCiAgMjM0LDI3Myw5MTggID8/PzpwYXR0cnlsZW4gWy91c3Iv bG9jYWwvYmluL3pzaC1kZWJ1Zy1vcHRdCiAgMjA5LDgzNSw1MjAgID8/Pzpz em9uZV9zaXplIFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX21hbGxvYy5k eWxpYl0KICAxOTMsOTg1LDgzNyAgPz8/OnRpbnlfZnJlZV9saXN0X3JlbW92 ZV9wdHIgWy91c3IvbGliL3N5c3RlbS9saWJzeXN0ZW1fbWFsbG9jLmR5bGli XQogIDE2OSw1ODAsMTgyICA/Pz86c3pvbmVfbWFsbG9jX3Nob3VsZF9jbGVh ciBbL3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9tYWxsb2MuZHlsaWJdCiAg MTQzLDEwOSwxMjIgID8/PzpfcGxhdGZvcm1fbWVtbW92ZSRWQVJJQU5UJE5l aGFsZW0gWy91c3IvbGliL3N5c3RlbS9saWJzeXN0ZW1fcGxhdGZvcm0uZHls aWJdCiAgIDk3LDQzMiw4MDAgID8/PzpmcmVlIFsvdXNyL2xpYi9keWxkXQog ICA5NywzMzUsMTc5ICA/Pz86aXR5cGVfZW5kIFsvdXNyL2xvY2FsL2Jpbi96 c2gtZGVidWctb3B0XQogICA5NSwzNTMsODIwICA/Pz86Z2V0X3RpbnlfZnJl ZV9zaXplIFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX21hbGxvYy5keWxp Yl0KICAgODMsOTM0LDUwMCAgPz8/OnB0aHJlYWRfZ2V0c3BlY2lmaWMgWy91 c3IvbGliL3N5c3RlbS9saWJzeXN0ZW1fcHRocmVhZC5keWxpYl0KICAgODEs MDE1LDAzNiAgPz8/OmZpbGVzdWIgWy91c3IvbG9jYWwvYmluL3pzaC1kZWJ1 Zy1vcHRdCiAgIDY4LDczOCw4NDUgID8/PzpfX3N0cmNweV9jaGsgWy91c3Iv bGliL3N5c3RlbS9saWJzeXN0ZW1fYy5keWxpYl0KICAgNjAsOTI3LDgzMiAg Pz8/Om1hbGxvY196b25lX21hbGxvYyBbL3Vzci9saWIvc3lzdGVtL2xpYnN5 c3RlbV9tYWxsb2MuZHlsaWJdCiAgIDU3LDY5OCwzNTIgID8/Pzp6YWxsb2Mg Wy91c3IvbG9jYWwvYmluL3pzaC1kZWJ1Zy1vcHRdCiAgIDU1LDE5NiwyODkg ID8/PzpiaW5fbG9nIFsvdXNyL2xvY2FsL2Jpbi96c2gtZGVidWctb3B0XQog ICA1NCw1MTcsMDE1ICA/Pz86c3RwY3B5IFsvdXNyL2xpYi9zeXN0ZW0vbGli c3lzdGVtX2MuZHlsaWJdCiAgIDUxLDU0NSwxMDUgID8/PzpzZXRhcnJ2YWx1 ZSBbL3Vzci9sb2NhbC9iaW4venNoLWRlYnVnLW9wdF0KICAgNDksMDUyLDY1 MCAgPz8/OmdldF90aW55X3ByZXZpb3VzX2ZyZWVfbXNpemUgWy91c3IvbGli L3N5c3RlbS9saWJzeXN0ZW1fbWFsbG9jLmR5bGliXQogICA0OCwxMjIsMzE0 ICA/Pz86enRyZHVwIFsvdXNyL2xvY2FsL2Jpbi96c2gtZGVidWctb3B0XQog ICA0NSwzNzEsMDc2ICA/Pz86bWF0aGV2YWxhcmcnMiBbL3Vzci9sb2NhbC9i aW4venNoLWRlYnVnLW9wdF0KICAgNDQsOTIzLDIyMSAgPz8/OmFycmxlbiBb L3Vzci9sb2NhbC9iaW4venNoLWRlYnVnLW9wdF0KICAgNDQsODg4LDc2OSAg Pz8/Ol9fdnNucHJpbnRmX2NoayBbL3Vzci9saWIvc3lzdGVtL2xpYnN5c3Rl bV9jLmR5bGliXQogICA0Myw1MjEsMzAxICA/Pz86bWFsbG9jIFsvdXNyL2xp Yi9keWxkXQogICAzMyw1NDgsMzEyICA/Pz86X19jaGtfb3ZlcmxhcCBbL3Vz ci9saWIvc3lzdGVtL2xpYnN5c3RlbV9jLmR5bGliXQogICAzMywzNzgsMzc4 ICA/Pz86ZXhlY2xpc3QnMiBbL3Vzci9sb2NhbC9iaW4venNoLWRlYnVnLW9w dF0KICAgMzIsMDI3LDMxNSAgPz8/Ol9wbGF0Zm9ybV9tZW1zZXQkVkFSSUFO VCRNZXJvbSBbL3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9wbGF0Zm9ybS5k eWxpYl0KICAgMjksNTg0LDY5OCAgPz8/Ol9wbGF0Zm9ybV9zdHJjaHIkVkFS SUFOVCRHZW5lcmljIFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX3BsYXRm b3JtLmR5bGliXQogICAyOCw3ODYsOTA0ICA/Pz86aGFzaGVyIFsvdXNyL2xv Y2FsL2Jpbi96c2gtZGVidWctb3B0XQogICAyNSw0NTksMzE5ICA/Pz86emhh bGxvYyBbL3Vzci9sb2NhbC9iaW4venNoLWRlYnVnLW9wdF0KICAgMjUsNDM2 LDA1NyAgPz8/Om1vZGlmeSBbL3Vzci9sb2NhbC9iaW4venNoLWRlYnVnLW9w dF0KICAgMjMsMjMzLDA4NSAgPz8/OnBhdGNvbXBpbGUnMiBbL3Vzci9sb2Nh bC9iaW4venNoLWRlYnVnLW9wdF0KICAgMjMsMTE0LDgzNSAgPz8/OnpzZnJl ZSBbL3Vzci9sb2NhbC9iaW4venNoLWRlYnVnLW9wdF0KICAgMjEsNzIwLDkx NSAgPz8/Ol9vc19sb2NrX3NwaW5fbG9jayBbL3Vzci9saWIvc3lzdGVtL2xp YnN5c3RlbV9wbGF0Zm9ybS5keWxpYl0KICAgMjEsMDMzLDM2NCAgPz8/OmV4 ZWNyZXN0b3JlJzIgWy91c3IvbG9jYWwvYmluL3pzaC1kZWJ1Zy1vcHRdCiAg IDIxLDAyOSw0MTYgID8/PzppbmdldGMgWy91c3IvbG9jYWwvYmluL3pzaC1k ZWJ1Zy1vcHRdCiAgIDIwLDYxOSw1NzUgID8/PzpmcmVlYXJyYXkgWy91c3Iv bG9jYWwvYmluL3pzaC1kZWJ1Zy1vcHRdCiAgIDE4LDI0NiwwNzYgID8/Pzpm ZXRjaHZhbHVlIFsvdXNyL2xvY2FsL2Jpbi96c2gtZGVidWctb3B0XQogICAx NywyODgsMDY4ICA/Pz86aXNhc2NpaSBbL3Vzci9saWIvc3lzdGVtL2xpYnN5 c3RlbV9jLmR5bGliXQogICAxNiwyNzQsODg4ICA/Pz86ZmlsZXN1YicyIFsv dXNyL2xvY2FsL2Jpbi96c2gtZGVidWctb3B0XQogICAxNSwxNjIsMjc5ICA/ Pz86aGFzd2lsZHMnMiBbL3Vzci9sb2NhbC9iaW4venNoLWRlYnVnLW9wdF0K ICAgMTIsNTkwLDU2MiAgPz8/OnBhcnNlc3Rybm9lcnIgWy91c3IvbG9jYWwv YmluL3pzaC1kZWJ1Zy1vcHRdCiAgIDEwLDg4MSw1MzAgID8/Pzpzem9uZV9t YWxsb2MgWy91c3IvbGliL3N5c3RlbS9saWJzeXN0ZW1fbWFsbG9jLmR5bGli XQogICAxMCwyMDYsOTcxICA/Pz86enN0cnRvbF91bmRlcnNjb3JlIFsvdXNy L2xvY2FsL2Jpbi96c2gtZGVidWctb3B0XQogICAgOSw5OTcsNTA4ICA/Pz86 X3B0aHJlYWRfbXV0ZXhfdW5sb2NrX3Nsb3cgWy91c3IvbGliL3N5c3RlbS9s aWJzeXN0ZW1fcHRocmVhZC5keWxpYl0KICAgIDksNjM5LDQ2OCAgPz8/Ol9w bGF0Zm9ybV9zdHJjbXAgWy91c3IvbGliL3N5c3RlbS9saWJzeXN0ZW1fcGxh dGZvcm0uZHlsaWJdCiAgICA5LDQwNCwyMjYgID8/Pzptb2RpZnknMiBbL3Vz ci9sb2NhbC9iaW4venNoLWRlYnVnLW9wdF0KICAgIDgsNjg4LDU2NiAgPz8/ Om9zX2xvY2tfdW5sb2NrIFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX3Bs YXRmb3JtLmR5bGliXQogICAgOCw2ODgsNTY2ICA/Pz86b3NfbG9ja19sb2Nr IFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX3BsYXRmb3JtLmR5bGliXQog ICAgOCw2ODgsMzY2ICA/Pz86X29zX2xvY2tfc3Bpbl91bmxvY2sgWy91c3Iv bGliL3N5c3RlbS9saWJzeXN0ZW1fcGxhdGZvcm0uZHlsaWJdCiAgICA4LDQ5 Nyw2OTIgID8/PzpvcCBbL3Vzci9sb2NhbC9iaW4venNoLWRlYnVnLW9wdF0K ICAgIDgsMzkwLDg5MCAgPz8/OnByZWZvcmsgWy91c3IvbG9jYWwvYmluL3pz aC1kZWJ1Zy1vcHRdCiAgICA4LDIyMyw4MDkgID8/PzpwYXRjb21wc3RhcnQg Wy91c3IvbG9jYWwvYmluL3pzaC1kZWJ1Zy1vcHRdCiAgICA3LDk2Miw5NzQg ID8/PzpnZXRoYXNobm9kZTIgWy91c3IvbG9jYWwvYmluL3pzaC1kZWJ1Zy1v cHRdCiAgICA3LDc2Niw3MDUgID8/PzpzY2FubWF0Y2h0YWJsZSBbL3Vzci9s b2NhbC9iaW4venNoLWRlYnVnLW9wdF0KICAgIDcsMDEzLDY5MyAgPz8/OnBh cnNlc3Rybm9lcnInMiBbL3Vzci9sb2NhbC9iaW4venNoLWRlYnVnLW9wdF0K ICAgIDYsOTE3LDU2OCAgPz8/Om9wJzIgWy91c3IvbG9jYWwvYmluL3pzaC1k ZWJ1Zy1vcHRdCiAgICA2LDkwOSw1MjEgID8/PzpnZXRpbmRleCBbL3Vzci9s b2NhbC9iaW4venNoLWRlYnVnLW9wdF0KICAgIDYsODI3LDE3MyAgPz8/Ol9w dGhyZWFkX211dGV4X2xvY2tfc2xvdyBbL3Vzci9saWIvc3lzdGVtL2xpYnN5 c3RlbV9wdGhyZWFkLmR5bGliXQogICAgNiw2OTEsMTc4ICA/Pz86aGFzYnJh Y2VzIFsvdXNyL2xvY2FsL2Jpbi96c2gtZGVidWctb3B0XQogICAgNiw2MDEs OTU3ICA/Pz86bWF0aGV2YWxhcmcgWy91c3IvbG9jYWwvYmluL3pzaC1kZWJ1 Zy1vcHRdCiAgICA2LDUyMywwOTEgID8/PzpnZXRfbm9kZV9mcm9tX3VuaXF1 aW5nX3RhYmxlIFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVtX21hbGxvYy5k eWxpYl0KICAgIDYsNDY1LDg0MCAgPz8/OmVjZ2V0c3RyIFsvdXNyL2xvY2Fs L2Jpbi96c2gtZGVidWctb3B0XQogICAgNiwxOTMsODk5ICA/Pz86Z2V0c3Ry dmFsdWUgWy91c3IvbG9jYWwvYmluL3pzaC1kZWJ1Zy1vcHRdCiAgICA2LDE3 OCw5NzUgID8/PzptYXRoZXZhbCcyIFsvdXNyL2xvY2FsL2Jpbi96c2gtZGVi dWctb3B0XQogICAgNiwwMTIsOTIzICA/Pz86cGF0Y29tcGlsZSBbL3Vzci9s b2NhbC9iaW4venNoLWRlYnVnLW9wdF0KICAgIDUsNzIxLDYzMSAgPz8/Oklt YWdlTG9hZGVyTWFjaE9Db21wcmVzc2VkOjp0cmllV2Fsayh1bnNpZ25lZCBj aGFyIGNvbnN0KiwgdW5zaWduZWQgY2hhciBjb25zdCosIGNoYXIgY29uc3Qq KSBbL3Vzci9saWIvZHlsZF0KICAgIDUsMDgzLDk1MyAgPz8/OmFkZCBbL3Vz ci9sb2NhbC9iaW4venNoLWRlYnVnLW9wdF0KICAgIDQsODY0LDkwMSAgPz8/ Ol9fdnNucHJpbnRmX2NoaycyIFsvdXNyL2xpYi9zeXN0ZW0vbGlic3lzdGVt X2MuZHlsaWJdCiAgICA0LDcyOCwyOTcgID8/PzpkdXBzdHJpbmcgWy91c3Iv bG9jYWwvYmluL3pzaC1kZWJ1Zy1vcHRdCiAgICA0LDMzMSw3MzggID8/Pzpm ZXRjaHZhbHVlJzIgWy91c3IvbG9jYWwvYmluL3pzaC1kZWJ1Zy1vcHRdCiAg ICA0LDIxMiwzMTUgID8/PzpuZXdwYXJhbXRhYmxlIFsvdXNyL2xvY2FsL2Jp bi96c2gtZGVidWctb3B0XQogICAgNCwwMzQsNzk0ICA/Pz86X192ZnByaW50 ZiBbL3Vzci9saWIvc3lzdGVtL2xpYnN5c3RlbV9jLmR5bGliXQogICAgMyw5 NzcsODA0ICA/Pz86cGF0dHJ5cmVmcyBbL3Vzci9sb2NhbC9iaW4venNoLWRl YnVnLW9wdF0KICAgIDMsNjA0LDU4OCAgPz8/OmFzc2lnbnN0cnZhbHVlIFsv dXNyL2xvY2FsL2Jpbi96c2gtZGVidWctb3B0XQogICAgMyw1MjAsNDIzICA/ Pz86bWF0aGV2YWwgWy91c3IvbG9jYWwvYmluL3pzaC1kZWJ1Zy1vcHRdCiAg ICAzLDUxOCw1NjAgID8/PzptYl9jaGFyaW5pdCBbL3Vzci9sb2NhbC9iaW4v enNoLWRlYnVnLW9wdF0KCg== --_----------=_147877423223710100--