From 082e82dba5b5174756b3a5fc2e385ccc59626164 Mon Sep 17 00:00:00 2001 From: Russell Belfer Date: Mon, 27 Jan 2014 11:45:06 -0800 Subject: [PATCH] Update Javascript userdiff driver and tests Writing a sample Javascript driver pointed out some extra whitespace handling that needed to be done in the diff driver. This adds some tests with some sample javascript code that I pulled off of GitHub just to see what would happen. Also, to clean up the userdiff test data, I did a "git gc" and packed up the test objects. --- src/diff_driver.c | 1 + src/userdiff.h | 6 ++-- tests/diff/drivers.c | 28 ++++++++++-------- tests/resources/userdiff/.gitted/index | Bin 456 -> 912 bytes tests/resources/userdiff/.gitted/info/refs | Bin 0 -> 59 bytes .../05/d669073b39d36847315e3a5b4512cf4cba4546 | Bin 54 -> 0 bytes .../20/ab776b6ff3169fa0e5eff65df30d45187d22ba | Bin 54 -> 0 bytes .../23/20e2f1e4d9e6201a8e15949a0c10a533fa51cd | Bin 207 -> 0 bytes .../2e/a4b8a16d737c180dfdd2b119dec9501592326c | Bin 228 -> 0 bytes .../49/c0ff897b2b07a2ea0ed073e62a9dcd02704ba0 | Bin 118 -> 0 bytes .../50/346bde7428a29c9845470a14d87b1634293d48 | Bin 53 -> 0 bytes .../5a/428e7dcffb41b65984517f1e6b8547babc8dff | Bin 263 -> 0 bytes .../87/2d19663f32459389597b52beec6457c1dc971f | Bin 178 -> 0 bytes .../9d/b1d09ff9ad5190bcf12d72ea3c818ffca344c5 | Bin 132 -> 0 bytes .../d6/3c806de4f666369ed169495657bec24b558165 | Bin 76 -> 0 bytes .../ef/1641511d6cb425c6b4f59ef1feffe7762e86e0 | Bin 53 -> 0 bytes .../userdiff/.gitted/objects/info/packs | Bin 0 -> 54 bytes ...f78c35e3ca74fffd9d6c2b6dcd60d6ab6a614a.idx | Bin 0 -> 2192 bytes ...78c35e3ca74fffd9d6c2b6dcd60d6ab6a614a.pack | Bin 0 -> 5697 bytes tests/resources/userdiff/.gitted/packed-refs | Bin 0 -> 98 bytes .../userdiff/.gitted/refs/heads/master | Bin 41 -> 0 bytes .../resources/userdiff/after/file.javascript | Bin 0 -> 2785 bytes .../resources/userdiff/before/file.javascript | Bin 0 -> 2812 bytes .../userdiff/expected/driver/diff.javascript | Bin 0 -> 1343 bytes .../expected/nodriver/diff.javascript | Bin 0 -> 1181 bytes .../resources/userdiff/files/file.javascript | Bin 0 -> 2785 bytes 26 files changed, 20 insertions(+), 15 deletions(-) create mode 100644 tests/resources/userdiff/.gitted/info/refs delete mode 100644 tests/resources/userdiff/.gitted/objects/05/d669073b39d36847315e3a5b4512cf4cba4546 delete mode 100644 tests/resources/userdiff/.gitted/objects/20/ab776b6ff3169fa0e5eff65df30d45187d22ba delete mode 100644 tests/resources/userdiff/.gitted/objects/23/20e2f1e4d9e6201a8e15949a0c10a533fa51cd delete mode 100644 tests/resources/userdiff/.gitted/objects/2e/a4b8a16d737c180dfdd2b119dec9501592326c delete mode 100644 tests/resources/userdiff/.gitted/objects/49/c0ff897b2b07a2ea0ed073e62a9dcd02704ba0 delete mode 100644 tests/resources/userdiff/.gitted/objects/50/346bde7428a29c9845470a14d87b1634293d48 delete mode 100644 tests/resources/userdiff/.gitted/objects/5a/428e7dcffb41b65984517f1e6b8547babc8dff delete mode 100644 tests/resources/userdiff/.gitted/objects/87/2d19663f32459389597b52beec6457c1dc971f delete mode 100644 tests/resources/userdiff/.gitted/objects/9d/b1d09ff9ad5190bcf12d72ea3c818ffca344c5 delete mode 100644 tests/resources/userdiff/.gitted/objects/d6/3c806de4f666369ed169495657bec24b558165 delete mode 100644 tests/resources/userdiff/.gitted/objects/ef/1641511d6cb425c6b4f59ef1feffe7762e86e0 create mode 100644 tests/resources/userdiff/.gitted/objects/info/packs create mode 100644 tests/resources/userdiff/.gitted/objects/pack/pack-03f78c35e3ca74fffd9d6c2b6dcd60d6ab6a614a.idx create mode 100644 tests/resources/userdiff/.gitted/objects/pack/pack-03f78c35e3ca74fffd9d6c2b6dcd60d6ab6a614a.pack create mode 100644 tests/resources/userdiff/.gitted/packed-refs delete mode 100644 tests/resources/userdiff/.gitted/refs/heads/master create mode 100644 tests/resources/userdiff/after/file.javascript create mode 100644 tests/resources/userdiff/before/file.javascript create mode 100644 tests/resources/userdiff/expected/driver/diff.javascript create mode 100644 tests/resources/userdiff/expected/nodriver/diff.javascript create mode 100644 tests/resources/userdiff/files/file.javascript diff --git a/src/diff_driver.c b/src/diff_driver.c index 9249d1415..4c9a0af65 100644 --- a/src/diff_driver.c +++ b/src/diff_driver.c @@ -437,6 +437,7 @@ static int diff_context_line__pattern_match( i = (pmatch[1].rm_so >= 0) ? 1 : 0; git_buf_consume(line, git_buf_cstr(line) + pmatch[i].rm_so); git_buf_truncate(line, pmatch[i].rm_eo - pmatch[i].rm_so); + git_buf_rtrim(line); return true; } diff --git a/src/userdiff.h b/src/userdiff.h index 93b4d0d58..2257035ac 100644 --- a/src/userdiff.h +++ b/src/userdiff.h @@ -193,9 +193,9 @@ PATTERNS("php", "|[-+*/<>%&^|=!]=|--|\\+\\+|<<=?|>>=?|&&|\\|\\||::|->"), PATTERNS("javascript", - "^[ \t]*(\(?function[ \t].*)$\n" - "^[ \t]*(var[ \t]+[a-zA-Z_][a-zA-Z0-9_]*[ \t]*=[ \t]*function[ \t\(].*)$\n" - "^[ \t]*([a-zA-Z_][a-zA-Z0-9_]*[ \t]*:[ \t]*function[ \t\(].*)$", + "^[ \t]*(function[ \t][a-zA-Z_][^\{]*)\n" + "^[ \t]*(var[ \t]+[a-zA-Z_][a-zA-Z0-9_]*[ \t]*=[ \t]*function[ \t\(][^\{]*)\n" + "^[ \t]*([a-zA-Z_][a-zA-Z0-9_]*[ \t]*:[ \t]*function[ \t\(][^\{]*)", /* -- */ "[a-zA-Z_][a-zA-Z0-9_]*" "|[-+0-9.e]+[fFlL]?|0[xX]?[0-9a-fA-F]+[lL]?" diff --git a/tests/diff/drivers.c b/tests/diff/drivers.c index 1cbf9e211..8b12368ea 100644 --- a/tests/diff/drivers.c +++ b/tests/diff/drivers.c @@ -180,22 +180,23 @@ void test_diff_drivers__builtins(void) git_patch *patch; git_buf file = GIT_BUF_INIT, actual = GIT_BUF_INIT, expected = GIT_BUF_INIT; git_diff_options opts = GIT_DIFF_OPTIONS_INIT; - int i; - static const char *files[] = { - "html", - NULL - }; + git_vector files = GIT_VECTOR_INIT; + size_t i; + char *path, *extension; g_repo = cl_git_sandbox_init("userdiff"); + cl_git_pass(git_path_dirload("userdiff/files", 9, 0, 0, &files)); + opts.interhunk_lines = 1; opts.context_lines = 1; opts.pathspec.count = 1; - for (i = 0; files[i]; ++i) { - git_buf_sets(&file, "files/file."); - git_buf_puts(&file, files[i]); - opts.pathspec.strings = &file.ptr; + git_vector_foreach(&files, i, path) { + if (git__prefixcmp(path, "files/file.")) + continue; + extension = path + strlen("files/file."); + opts.pathspec.strings = &path; /* do diff with no special driver */ @@ -205,7 +206,7 @@ void test_diff_drivers__builtins(void) cl_git_pass(git_patch_to_buf(&actual, patch)); git_buf_sets(&expected, "userdiff/expected/nodriver/diff."); - git_buf_puts(&expected, files[i]); + git_buf_puts(&expected, extension); cl_git_pass(git_futils_readbuffer(&expected, expected.ptr)); overwrite_filemode(expected.ptr, &actual); @@ -220,7 +221,7 @@ void test_diff_drivers__builtins(void) { FILE *fp = fopen("userdiff/.gitattributes", "w"); - fprintf(fp, "*.%s diff=%s\n", files[i], files[i]); + fprintf(fp, "*.%s diff=%s\n", extension, extension); fclose(fp); } @@ -230,7 +231,7 @@ void test_diff_drivers__builtins(void) cl_git_pass(git_patch_to_buf(&actual, patch)); git_buf_sets(&expected, "userdiff/expected/driver/diff."); - git_buf_puts(&expected, files[i]); + git_buf_puts(&expected, extension); cl_git_pass(git_futils_readbuffer(&expected, expected.ptr)); overwrite_filemode(expected.ptr, &actual); @@ -240,9 +241,12 @@ void test_diff_drivers__builtins(void) git_buf_clear(&actual); git_patch_free(patch); git_diff_free(diff); + + git__free(path); } git_buf_free(&file); git_buf_free(&actual); git_buf_free(&expected); + git_vector_free(&files); } diff --git a/tests/resources/userdiff/.gitted/index b/tests/resources/userdiff/.gitted/index index 9372411cd8c99727a1e81c014a562905310f5a69..df041cf72ffbe78022a7b77cdef8226d064d9171 100644 GIT binary patch literal 912 zcmZ?q402{*U|<4buAoO><^X917|qAPz``c7^b-R^;}Ql2#;-sr5unn)$_kG@KDqf! zL8?!5$}Ap%rN+Mk&ob~Qrj?`?>8EApr0Qjq?_XJ)B0@w?D{D({Skv0vU#Wu4SMurJ;a?58sg54k*MY}9glMAt3ChQaa&|dV7**+ ztNX4!z5f{`Q!5HmlS@)l^izs5%YY%9l9`qU3E7}$TUS8b3!x$IRgpn8m(|`c^+HLS zswtb$)PMey-1M|gE)~^dkjH8+io=2KJ_U6*n1;GL5Y>F9G`%G|7UmY$Nbvr>v{CZj z$pFzwMmY@9aP#x>FLN9;RQ{`4b2&+ubw+Q zF_u9Qhxtf80H%-CVDq6g#Qi&^QO(DZKKMZ?xEMKkfZWRsbuXBPxK|+-)jS;OLlnt8 eBsYT0ThL*DKwEbE@^sPQ>kntLO%z`$O delta 56 zcmbQheuA0D#WTp6fq{Vuh*>A{1Ww!CzVcmN} L_RsI*)lqE#!?zS6 diff --git a/tests/resources/userdiff/.gitted/info/refs b/tests/resources/userdiff/.gitted/info/refs new file mode 100644 index 0000000000000000000000000000000000000000..261695f80d7283e93499ac68a2943dba7c42fc2e GIT binary patch literal 59 zcmV~$!4be92n4`)(u|ti04WC%#*ZJd|H-b@hhLb~)*}o=gFa#E25ATetEwUV+8$Y^ L>&UV+kMH{j=rIwq literal 0 HcmV?d00001 diff --git a/tests/resources/userdiff/.gitted/objects/05/d669073b39d36847315e3a5b4512cf4cba4546 b/tests/resources/userdiff/.gitted/objects/05/d669073b39d36847315e3a5b4512cf4cba4546 deleted file mode 100644 index 3a9d75cc163f2208427b0d4eaee474b5a999683f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmbS>LWXA=X$D!zO?c{ZIZsCH3s+D8r@(|@8B KVhjNZ0(Sv0TNSea diff --git a/tests/resources/userdiff/.gitted/objects/20/ab776b6ff3169fa0e5eff65df30d45187d22ba b/tests/resources/userdiff/.gitted/objects/20/ab776b6ff3169fa0e5eff65df30d45187d22ba deleted file mode 100644 index 3d57061ce386d3709125f1ba2a3bd0d830b7698c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmbwA5)&uY+SGZ5Gj^O3AG%&;Zy?I zlp|4sBT<4QQ6fJe4^<)e6YqNZ!2NRY#t#1&kYzxY0a*qV90RfpxH9aUreuER;VP$B J{|3DL&q1teT{8dx diff --git a/tests/resources/userdiff/.gitted/objects/2e/a4b8a16d737c180dfdd2b119dec9501592326c b/tests/resources/userdiff/.gitted/objects/2e/a4b8a16d737c180dfdd2b119dec9501592326c deleted file mode 100644 index e7d2fba413542584e7d20152fa21c50db040c612..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmV*(0>fV5^BSy-F)oNvJOD!s828YpJl9gg?yZedzqX zgG%X*aeWU$T-*q4(K~M+?<%k3;GtV9%-xKA!oEhM4waNhSX%5sm1U(h6GHsEFwS|# zscAs$wieIl|GtCrQ1pdLSxJ6u=g=<+WTXZqfN?Sa diff --git a/tests/resources/userdiff/.gitted/objects/49/c0ff897b2b07a2ea0ed073e62a9dcd02704ba0 b/tests/resources/userdiff/.gitted/objects/49/c0ff897b2b07a2ea0ed073e62a9dcd02704ba0 deleted file mode 100644 index 49d59c11da8e1f8de8bfe0911c6734c4349993b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118 zcmV-+0Ez#20V^p=O;s>7HexU_00M=?w35^!2G(nt?ADf-Gu#d1tfF0o&im|gb%V$! zrKaTv-jcPFyO9XD~D{Ff%bxNXyJg)ypW!&0%QQl}xiYa-G~6Ssk?RO-lH| LJJaO>IKL0@AuS0hLkBj)Nc&-ZM`z>6L==v)U%E>8oggN!Hbvb$WbM+WD)4c8wt0D}9GU$rU>mlybpy%?+?TFQi0-kiT0H z#&~1X=>+6^F9F9AE>*|Cs-K;)x6#9>&)yFGu0{|~g0TlL{FP zz4{mxr^Q5*M#X74voBl)I5nL{7TT1p^d-}WcP8TTt)dLcEdJGZ_V!t<*cK~ZVp9)- NKI!I^egW=F!^3*Ohh6{x diff --git a/tests/resources/userdiff/.gitted/objects/87/2d19663f32459389597b52beec6457c1dc971f b/tests/resources/userdiff/.gitted/objects/87/2d19663f32459389597b52beec6457c1dc971f deleted file mode 100644 index 415f40a66e519f4f508d37590237af22ab52b6fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178 zcmbjws5qsw93!TiZvRTi+B%)YnJF;nwt=gp_{bL@=X3PcAN z)&|W#wor3R@7>j!J%R6iUc7s1e8$_z`@e^x-&3p3pL0*Tw_j+v(tm7X@NE76Qxioa z&ToiI*n24IVASEN-yvIPyR9wX|Awb8xcoudi!`S^wI@i#uU+3;PPYH#&=5d@)ec*4 QvpwgJ75~L+6njV#0He85n*aa+ diff --git a/tests/resources/userdiff/.gitted/objects/9d/b1d09ff9ad5190bcf12d72ea3c818ffca344c5 b/tests/resources/userdiff/.gitted/objects/9d/b1d09ff9ad5190bcf12d72ea3c818ffca344c5 deleted file mode 100644 index c0a03a241e2809895730fb6ae6f5928a1e1cd747..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmV-~0DJ#<0hNtS4#FT1MqP7?xqxO$E0n|->K%(B!XhWBEQfwDPURF7@>I`8AZ|If?x+8#g@ i9XD~D{Ff%bxNXbk~)5|Ey&0&ag>Z?8f+i_cDOJKcRcB}iY LJ-z<{P2mx8BYhWi diff --git a/tests/resources/userdiff/.gitted/objects/info/packs b/tests/resources/userdiff/.gitted/objects/info/packs new file mode 100644 index 0000000000000000000000000000000000000000..6970fd7b0116e62a6db0752767b061bafcb642a1 GIT binary patch literal 54 zcmWGgC`e4s)-^CrGq*@KHcd57PBb@3OG`_!OfgF~N-|4HPBAk`F-uG`OEfbyNz?ToEoCWSh;bx<8tQLCf&qVQ2kh1*`ErDc9AG;kSjr$vg zBsbIro?HB8@u`+&wIeQ6%QW`O2_r27CFb(dE_KcBT%;sCBkGBDSiko0TS|M6DB{&& zv!vWV8;X<=uJQOk_63KJXy)X04ZQIlL6fxEhC(BJ$55xZ8?Vd3rJqKr39QFF8VTIy zt7gvi*X*3gZnCm>)wdLJ`KC;t_z~k`87q9~&VDss)SL??=Xzg?#+uaO!CrB@A8QSX zOATmdG6*Y`G%}`WX>JxvZwqi1?l!>^rpejtEE0JEww0x6W9qohD~-DMQeOfl{F$zh z<20P9db8hly9>zt_)Qy_>VtXj8iLFeetj?0+W;4!YPm znH>7#^JY`IO9un*K5S}C^*+#2n^!Q{oASNPL%L;rp(D~nV`nVUra`W9!Ywo?G5A&- zjTv2VYbs$!k4WJl&%avYATVr?tgKUHUrjXEVXU?yojAIU<$0se->bSUbMaB9d1& z&aJKGiNZ$%Tqx0wwOVQ_$^=8Zzw2uF$-Al?Gw{mgRr2|cs_2eFzv{b%ZDt+2R#HNq zALpj5cXuCuOirhj4Vi?|L&Jg}xZ0oOI7|rNV>3JMy)C*>CCJ-)mxx{N8jCe=6K!QQ z8Sjy^Kc_-xI!SV_sJ9FRbv?^?_e#n_Q4~>*shW5zNsp7{B8!p zd9SPK&ByR6Z-Tg}g*a-3czFtE9z-q;{@dl?lOU=h0eJVx`9e&k!n_Zh>mmADKu<2fa0lcoCLJPm8SJ9KM?)R*5z9v)6ea-3J4`ir$hrk2h-~m`ouH4yZ(6}8K^e>( z1HB(+`rw{YsG;wPeG+ZgcRQjhEsLuS%-bJqM2nW5Xxg1i4>&Rz9W_c!IxJ D#Jn9@ literal 0 HcmV?d00001 diff --git a/tests/resources/userdiff/.gitted/objects/pack/pack-03f78c35e3ca74fffd9d6c2b6dcd60d6ab6a614a.pack b/tests/resources/userdiff/.gitted/objects/pack/pack-03f78c35e3ca74fffd9d6c2b6dcd60d6ab6a614a.pack new file mode 100644 index 0000000000000000000000000000000000000000..5b263e27dcf3abc8fa2f73979b0c5d76b289665c GIT binary patch literal 5697 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 literal 0 HcmV?d00001 diff --git a/tests/resources/userdiff/.gitted/refs/heads/master b/tests/resources/userdiff/.gitted/refs/heads/master deleted file mode 100644 index 2ec79ec86a14ae18a5aba85543fd26aa1f0e4351..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41 ucmV~$$q@h`2n4Xd)o_kb4u{)+2`0JCO9^DHb5ajj_R1@r-~gu7Z2Wxw4-32i diff --git a/tests/resources/userdiff/after/file.javascript b/tests/resources/userdiff/after/file.javascript new file mode 100644 index 0000000000000000000000000000000000000000..7cd3c5a8aaf0e89037ff51ea54fb1c3d0828125c GIT binary patch literal 2785 zcmb_eQE%He5Poic#jOvuop^HEhdspghHlG{3~dvv!GIwM3Pw6v%xF;~DSKY)|Gqm? zq@~6|_b?*}Z1VWs-FM#|IXgZA_@Gw^xh@d!Z)ZgAuz=F&6;#eO_G~s=N>{b_S*};J zhgL~ZE2X!^%;rWb^&75HsO-TK(x#Gm1(j$TtSvYV_Xq-Jm1>!bY1v`Mj?C5UoX1$g%|6HjOq8WKAgd6zr=b z!no{Z^UzucmebUw2j^_3v_e+4wGHNumZb&yt2HQHFVVnSC|M9vFYIvcz9nalD65^2 zlqlA^T~_2ztQv*T2Bd5JzmA(L%ez+NCeNO~3t#guF!eyTlE%aRFm?0Q6zNTuHJfybk$x6jm-! zE-N>>n|ezi4r|Ihy1gCw-(MQpkmue?Q^Cx&(G4269o_k$fNJboL+N(DUkC6B{Lpzh z>!O;I?;U5}&*Q2rEjk#Z>ZhUo>WywF#M2lvP*vIZEtZ_&Y3IJsUH+6+3FB|1eJ|b< zUY0;65t>;_t8lV_z7?FnOAe7gyGYXkKz4rs(MQ#X`$Pt!|`Nqiz<|k_5%!;H=|toCO>NDX!tM@Y<;pPB8zi@%LRCJ>S`y<)xW4B)jd%`G zm1NDcrBfvjH)%7Z_O-P0#u%~95^`pF4raMfYTR{d_E(E$`+*MRPMbHhF}f{;6W{h@ zyBkd=QBxj26=MOVP!iOV zLiy=2znb7-pU; z6eiMh!1xgEV>1e($8wk06keU4Cerp)byt%pit{xMs<+ZQq}yXW3ha;Qg6->K8kCrT zo;)6Cq2q%(43F=oL4UL3#sB%Ci`omWC!jC8J5)E^s!SjYwcpDtsF)nX^pk>4UUR2z|@yrt=m76HgBMu!p4H&}|)(qHT&b7%&7y!AO+Fj21PLvX`~~@B5Av zWqL``JxmB3o4ot(?z@jCE{>0g-kY_g(o~YtE$Y3SHbeAZ;5}Hq?l&ldU6f=vI;-Z)IDlc15qmM!-pRo~-N) zZGlUor8k$?q*VzYn0w&(Mv_;^>XNp?(bm{M*x$4{MDL`nR9%znyUtioss+j|l6`gr zjLWQ=yWV+nT&Af5I9EHz3ani3I$3%wD@XWi4QbP^q@|6}ssd7$cJ#aL5zK?K)(eF~ zWo!CXgLq=yX-S>%UfM_ir(PT#FOJTqb>Eg=p@!*JwUyb<=o9BTK^^40Ri&St^TI}0 zs!aJ(%QY>*5!)76=-0CK;}_n>@8B^aucZG?$t|;SK~oMuco?wM3f90IkZ&e&Z!TW58b`H!PSCr>>Ro6~>no6Cg zXTs{W=@9xfVoPaGVCI1S+MjVa;P>5GKzp9F&{ zT5(^D$c5t(SCm5Q>2L^(KYMBK-@~Ew#=gMDt)6ijOJNf|j~G9O`_K$YWGoMb&FR_c zp0qtx!@EpW)yoYe_F6eF@w%B#BKs4(k#k+lqrOM>zvv!mf%`!p4&8V2sK3SW^8bAB zW)FhP1oZEj5xW~-!%QFxH6I%J*!V9;jPdwnJTmdazzC{i8?Q7E^zh{8t2aO4a>W`k nqLS4U^m4pC$&F7+9uyH(6JzkHklTZ>@kECSw40^N*ZI*u?cq~P literal 0 HcmV?d00001 diff --git a/tests/resources/userdiff/expected/driver/diff.javascript b/tests/resources/userdiff/expected/driver/diff.javascript new file mode 100644 index 0000000000000000000000000000000000000000..4e65d074662535061295fe4f92462e2ac9a5152e GIT binary patch literal 1343 zcmb7D$!^;)5Isj4*>AP8ugl3389LDEi_^xr!}Ew-~1 zEf0h=e0-dF^JXow48kxM7Fa(Mk{h>2-`Jj+REw>J)yr{DlxzMSR|Py__!y4zuB%#txzT8+skOr2HiKpT(fJ8M#=%csBNzY zznU5V+A#PFIEJ+q`~?F(#F$#Oe!C2lQ7{ERNrK5qhQg4RDC||)$WFNiP_*fy{MZn_ zMitO3N=p3nPx{pDwc-Qjxh*g0j*I6Jxjt-oo2JgdW4WyS(i%)lW{Ntf@=!Pr3d!eQw5petTM2Gjm)kD+urt?%8K!# zG`+jP3mq1CRWXIQ14@*K+n)PwQFD*{11e}ynr>^sPROJwnYvN3X3E_6?&cnNR`YOT zH4mq_wweKW4*fS=U(@S86Oqhw&CC~B`#$_?wE}cyAPYE!bxQw&0Rjn1Xr4!>Bpn4) zAZZ#*PL$vTIXkco8o_IoLf|Wbf|;*auB9@ozTeFcP{s<8otS2JLEFdfqYXqL!Dr_R z{rQoR^%=)UX^h-DA`2&$wi~P^c>!>o(zA{w(vyWO<$;lq>p<7}T(ob~??I=q2q{Nos7OK=^!@mr~b0l=q<8%_oP$$$!RyadJe zj0zoqQM@Ra;#FaH+cU>)kQMsTe2qC|n0x#QbkyF3DY=epRY$p0S2Qd8`L4{b_S*};J zhgL~ZE2X!^%;rWb^&75HsO-TK(x#Gm1(j$TtSvYV_Xq-Jm1>!bY1v`Mj?C5UoX1$g%|6HjOq8WKAgd6zr=b z!no{Z^UzucmebUw2j^_3v_e+4wGHNumZb&yt2HQHFVVnSC|M9vFYIvcz9nalD65^2 zlqlA^T~_2ztQv*T2Bd5JzmA(L%ez+NCeNO~3t#guF!eyTlE%aRFm?0Q6zNTuHJfybk$x6jm-! zE-N>>n|ezi4r|Ihy1gCw-(MQpkmue?Q^Cx&(G4269o_k$fNJboL+N(DUkC6B{Lpzh z>!O;I?;U5}&*Q2rEjk#Z>ZhUo>WywF#M2lvP*vIZEtZ_&Y3IJsUH+6+3FB|1eJ|b< zUY0;65t>;_t8lV_z7?FnOAe7gyGYXkKz4rs(MQ#X`$Pt!|`Nqiz<|k_5%!;H=|toCO>NDX!tM@Y<;pPB8zi@%LRCJ>S`y<)xW4B)jd%`G zm1NDcrBfvjH)%7Z_O-P0#u%~95^`pF4raMfYTR{d_E(E$`+*MRPMbHhF}f{;6W{h@ zyBkd=QBxj26=MOVP!iOV zLiy=2znb7-pU; z6eiMh!1xgEV>1e($8wk06keU4Cerp)byt%pit{xMs<+ZQq}yXW3ha;Qg6->K8kCrT zo;)6Cq2q%(43F=oL4UL3#sB%Ci`omWC!jC8J5)E^s!SjYwcpDtsF)nX^pk>4UUR2z|@yrt=