From 05d77684c2307a189527a4859f97c2a47a34dfec Mon Sep 17 00:00:00 2001 From: Daniel Kraus Date: Tue, 29 Jan 2013 21:14:30 +0100 Subject: [PATCH] Introduce smart mode ($wgLinkTitlesSmartmode). Smart mode generates aliases for page titles if a case mismatch is detected. --- LinkTitles.body.php | 41 ++++++++++++++++++++++++-------- LinkTitles.php | 3 ++- NEWS | 7 +++++- release/LinkTitles-1.3.2.tar.gz | Bin 10260 -> 0 bytes release/LinkTitles-2.0.0.tar.gz | Bin 0 -> 10985 bytes 5 files changed, 39 insertions(+), 12 deletions(-) delete mode 100644 release/LinkTitles-1.3.2.tar.gz create mode 100644 release/LinkTitles-2.0.0.tar.gz diff --git a/LinkTitles.body.php b/LinkTitles.body.php index e99f4b8..ecba0d4 100755 --- a/LinkTitles.body.php +++ b/LinkTitles.body.php @@ -29,7 +29,7 @@ }; class LinkTitles { - static $st; + static $safeTitle; /// Setup function, hooks the extension's functions to MediaWiki events. public static function setup() { @@ -72,6 +72,7 @@ /// This function performs the actual parsing of the content. static function parseContent( &$article, &$text ) { + // Configuration variables need to be defined here as globals. global $wgLinkTitlesPreferShortTitles; global $wgLinkTitlesMinimumTitleLength; @@ -82,6 +83,7 @@ global $wgLinkTitlesWordStartOnly; global $wgLinkTitlesWordEndOnly; // global $wgLinkTitlesIgnoreCase; + global $wgLinkTitlesSmartMode; ( $wgLinkTitlesWordStartOnly ) ? $wordStartDelim = '\b' : $wordStartDelim = ''; ( $wgLinkTitlesWordEndOnly ) ? $wordEndDelim = '\b' : $wordEndDelim = ''; @@ -142,34 +144,53 @@ $title = str_replace('_', ' ', $row->page_title); if ( $title != $myTitle ) { + LinkTitles::$safeTitle = str_replace( '/', '\/', $title ); + // split the string by [[...]] groups // credits to inhan @ StackOverflow for suggesting preg_split // see http://stackoverflow.com/questions/10672286 $arr = preg_split( $delimiter, $text, -1, PREG_SPLIT_DELIM_CAPTURE ); - // dump( $arr ); - $safeTitle = str_replace( '/', '\/', $title ); - LinkTitles::$st = $safeTitle; + for ( $i = 0; $i < count( $arr ); $i+=2 ) { // even indexes will point to text that is not enclosed by brackets - $arr[$i] = preg_replace_callback( '/(?= 0 ) && ( $count > 0 )) { break; }; }; $text = implode( '', $arr ); + + if ($wgLinkTitlesSmartMode) { + // split the string by [[...]] groups + // credits to inhan @ StackOverflow for suggesting preg_split + // see http://stackoverflow.com/questions/10672286 + $arr = preg_split( $delimiter, $text, -1, PREG_SPLIT_DELIM_CAPTURE ); + + for ( $i = 0; $i < count( $arr ); $i+=2 ) { + // even indexes will point to text that is not enclosed by brackets + $arr[$i] = preg_replace_callback( '/(?= 0 ) && ( $count > 0 )) { + break; + }; + }; + $text = implode( '', $arr ); + } }; // if $title != $myTitle }; // foreach $res as $row return true; } static function CallBack($matches) { - if ( strcmp(substr(LinkTitles::$st, 1), substr($matches[0], 1)) == 0 ) { + if ( strcmp(substr(LinkTitles::$safeTitle, 1), substr($matches[0], 1)) == 0 ) { return '[[' . $matches[0] . ']]'; } else { - return '[[' . LinkTitles::$st . '|' . $matches[0] . ']]'; + return '[[' . LinkTitles::$safeTitle . '|' . $matches[0] . ']]'; } } } diff --git a/LinkTitles.php b/LinkTitles.php index 2900938..e86c94d 100755 --- a/LinkTitles.php +++ b/LinkTitles.php @@ -43,13 +43,14 @@ $wgLinkTitlesWordStartOnly = true; $wgLinkTitlesWordEndOnly = true; // $wgLinkTitlesIgnoreCase = true; + $wgLinkTitlesSmartMode = true; $wgExtensionCredits['parserhook'][] = array( 'path' => __FILE__, 'name' => 'LinkTitles', 'author' => '[http://www.mediawiki.org/wiki/User:Bovender Daniel Kraus]', 'url' => 'http://www.mediawiki.org/wiki/Extension:LinkTitles', - 'version' => '1.8.1', + 'version' => '2.0.0', 'descriptionmsg' => 'linktitles-desc' ); diff --git a/NEWS b/NEWS index 49eb0d2..7d5172f 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,8 @@ +LinkTitles 2.0.0: 2013-01-29 +* Introduced a new 'smart mode' ($wgLinkTitlesSmartMode) which is enabled by + default and will automatically generate aliased links if there is a case + mismatch. To increase performance, this smart mode can be disabled. + LinkTitles 1.8.1: 2013-01-26 * The extension will now automatically generate aliases for case-mismatched page titles. @@ -66,4 +71,4 @@ LinkTitles 0.0.2: 2012-05-20 LinkTitles 0.0.1: 2012-05-20 * Initial release. -# vim: fo=tqn:flp=\*\s +# vim: tw=76:fo=tqn:flp=^\*\s diff --git a/release/LinkTitles-1.3.2.tar.gz b/release/LinkTitles-1.3.2.tar.gz deleted file mode 100644 index 514b60dd9463b3f7b29592cbc39078bcf5cac2dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10260 zcmb7{Q$r;T!vIgVjZD&lZi**beB&$37aiJ3@nE{#+Zc2sVu8T~OCyw1*TwHW$usfoQwr-OkHLv5#4Nh;5xRQNk`@YEK*|_WT zd4+=9^aXZZ{RSSc&Tk&fcdz@Xm|Syjd))6oJFj!hJDFN~RW^6AV~!QfltD@todLv9 zJi7chGP^%X0#@S>&sWmjHaX3VSyUGX7kkA%<$HN6T4l!!1jw^YJS;+l726%}tMm(2 zr(wjddh!xf%>UdP=CDY9wB=Xo9C++YhjS=upG|XC7VF!A@~w5qZ@&oR=8AF;8{u|i4Z?{ z78uc_;=E6G`-5J7rDhJP?jrdkB)NN>X0nGy62UlETsG7$%t6zlmInlaJR!|zd@jWp zAXOYKl+(S~wIWK!N! z-&0-q5|SO!14kpkXyyF54U5z81XKhoHX^9BOKXf57f#+;?oi`vIUnfj6`BH&DzOL< zNRzDm=E`ZFe$A-v##z+<9&STDhBAVH!5tmaz8&RJei2-)c(zNx6;+Lr1ojFCqw_CG z1$KggkG(A?D0EwbUk*agHmap(K&?2%Eh!|>bk+Nf!dx+jktxuNBfM5r*2%My%HK(j z_)EIgHNl6%YH!1s=~kV}^y|O#w26>tElA8kaHR*sax9SeRhUzO&kp3xs1lMzYa5HF zBX^YnMg{&v2$Eu*dyT9v_{4dP1$M?9d=TD{h^IsUg2+M2k>?z#sJJPk=PrIi%#khz zYE$CVEK5+bA`*qqBR~_~(N@xvm&Qsin4*OShm%QU>3q|Us7NW=Vr-DaS-I=ws%S%z zZv^{F_kHk4`K&QVrw^nFF~J70p|S_ZXB6%%V7Sm|Nkj*KCb^>`Cip~Pj^2fQUn!LS zLQF)H>CdPJsrOKD&skL~UGTlqAz6$Tvo0w@kZ8mFZN`Th@aqGD`A7P5m8-+kqUtF{ zWB#)WDv3UsssAmTk>J1Vr0%qa(DOt%1HmO{7(s~g8#>jW1!EG?&{7c!P1Owdl|hov zi;a5F6E6+08>A<5yDzK4&t9wQQYPLKDQBK>(U+?4(hB_u!HvV=P`&)c1t=tqLG;19 zKnv&A5)#4Io-*9#H}Y>6QxA`w*NdyO4TYu-HZSnuV_C?}w>71M#R`Gq7(!H7u)x#D zogoXfw$Au%qHEt(7%(0e*ldY8_z4*^7oA$Xo$?onP}Hl<&=~g3e~H;!V7@I98EG@H z0_7c-IT{tD&=lgp4Lg@Y24Ql;;DidH#T!RAVoxq~6y~BC)EdkI4GWg)BV5WB0i%^S zPeKq_hOiX@5M&Q?e{_dOrdOC!f`XQ9Oh!a(oMiC@&RjHwSLLFXI3p54Y1(QcRP!&e zLSYDZ;%ssa*Q&5J_PLeoNCj;T_xrC9=ex?fj~e#U^X3~t?muRnweJtfLC%x3Awc7i zmK+e#pzD*nnF}6}l>~5pklUDqjX>eP!kI}1jq+QEFF@uBx(58AJoy!=@Co+LT1jkW zzzm5#7OMH_*^a<&xPrM-8QvP8O(Y=RaeCarbpyx@no6<+*tMME~x3ofGiV(U7>7 ze`)Zs4>6eUTYM;bcKE1^Al^&dMEX~l+AcScCF-$;{K59(;7Df$-Yv={a`+}m#Wu7! zhjSu^OyfMqg*?B2>qpsh3)!W_6(}5m*hSANE~|Jc$@IdG?+s0W6TJ)Fwu)b_`7#zT zK2Jrke+5=gMFET0A*6HuM!(V25ON~NhRa_9vC;5=G$7dKZ)FcN3Nt0Hi2G(dSm5^) z3B^aEYj|2mABWWdXO~7&Wtokt5O1#Z0vW(J)(6aQaC;lo{K_J@0Ha0U0_CLR1m>H4 z!%C_9z*wO-4WLTu&Qk3K9*w;WA_6^hNoV5k`@2(W$!2q-H|#Zb1v#5SJoScxA9Fys ziAaXGlxOd}&)CKVbe>vO!NpBd|LErt7`jYPkd4ClS6Yt>O)KCezx%Vn zohNApDrXAPOywty8>Cy{n0Gw)a%E2a*0RmJFbSX ziuTL@sT|aW@o70&2`?8aZwERJt&@d!Rhe)PYR1rHPXC#PCSzqy#1MBYq5Ut)$W*|kTVDCvRE!#4pMiw} zxV{y8`XXqXc1KYM?Y@gqlOg4fBhD-Sg_UK|t1b%Z1Nu!Ue}sI*47=|A9MB@FxkeV* zT1VK=T&^KiYSSn6XqGdGS`CeFct#ODS~R3~#;_;U6#+Tc&+`a=5N;xsjlcu!-wJXl zwHqgpS=g#xG!K;n-dM{+P4uH9W=aUS^9_ZUAL$3g-kD+%R~WwG$ze+UiAQv#9uutM z1G9ej`1s0vI&@ml5g`UMNJxTXyzzfv!=yE=q`jX<49HEG4l0C#x`Ygul|E8>M_=r; zP_Drij}TlbI!6}#hZ`h`I^eCs3XsXlZ^@@dt3yy6r*fy>qy8oG8ziQb9pKteUw~_b z9+^0zBEz1m05}R-4p77b>cW~`tUye@i4^6vKFx3#A{!u_ngq^ltI$sqLt{&wT6i|HnCCK3 zP$yUDkPEwrx36r>d#{r1&xvDfHYl!QRzU^uvX#Kqg48|F$S-`5AS+IUqWgt%3sKR4 z7|(fYmEc>9LToQ;_1ao{bHF_K`HdQ=pELqDq*k~P^;LhVLtUV6yqp&Vw3a)tL{v`2 zZ!bgfx_Hn@A0;A_Y$;j!Sg$FFi1hLs{*0Us8$5q%OnyY-F_D?7U9CrN72&#~bu3hW zQ_M$X_Mv1QK1a$I+!tW~Fib2vs{#C+lm+C4WXkFdyqPuxVZ<*;-*+0n6WEfT&7n4N$9{YMn2 zR+g~`+CR0a$fla8U>`8uWFJ5GlV<`x1zLIy+@Pz@XL;Y4vW5Jx+@R1B{n8WO!| zLo<-W<$iSKtcFwP#R`rxh`|}rE`Q$}7gtZN2mC5QCvz56QW0KiiNCJXf@JgL0*%hP zH22VVHSKPJo}B(0EGIlmw0D(oX~=Cx<}dAWXDl&ZuT!MWM*X8(E;=^KGR{DSJTQ=L zVlx?lHZAVP0~r25ywY=yJ*=%N+(OJ4?!SIj1@5@kklfek8uhSin52r0aW+K zj0#4KXMhq!z1Kw-s>Pc7WREV}-WCnL+4zi*fIu!MZi`|zIXLGA3^SIfn{>0kbCYy_ zyypA8?0m5C-tZLi)pj6!EYO6X7&|yYga!W~t8lZ}u~>=Q?9`%20ukeh>F@3?-z}N9_N37mN1uN&a%kne-8-%j!4~S(HhfMm*4q1}OuLwR$&^Wsq=#`ZmNxM&#k9EC2U@o>{3PhB&ZfxDF z*40IvQy4~CUL-_0Da;slIle7d6}=CkV>FVa#C#&w2-3D7#z^{~YSIQU3QbN9&n@8a zTU4SPcclDQ7e&-@C|eYRFaoksk)@{{{KXK7$Bg0PHYVqGmd4%Ar)_~1Zm?Hl%8ZsyY$cy4o@LD5iMi2MjJ9m!<3wGoFxv`~z&y4a1d zvrecde_pmP`KT>K(WzXq%U>H_*XKDQ)!xcTw>po|ywz&fk9Zf^aJ_q3c}F|M_HarJ zwZlqu5b3kEMJ7UHFno`T8PaIwOIy-v}H>2(WtjPMRt^5m!dvl`WwY}9W%?6YpY%GC!khKR%oaaSx4GpK?!;z72~P|RPCow zNM)+6Nd@*{e{YXE(UL2|OUH7Q`b*rW1`M?G5T`=0-t-$g3wI=tw}fp zsxX4Q_QDJM=UwL%XBO2_nDvS(b=`9z7d)v;tWj5Gv$VIJ+Ty*93dvZ&|H-Rq8`-Nw zV{!Q&#S1q5#bIP~na;HQ`wqb(H9S9?mY$TrgR`lbI5bDt!cp%f2+meD2R2Ge~ zTxS412hH2F^MiOM7s7hnA+~bL(C=_`v#ce(J=oSm$~85?xB68A6$$z5wAJE1RzTz2 zs4bH8#;KnWrj$I?RZy#BX4nC|<+rFApqk#pOOX6Aha2U1gByQE#5DZr5i&+S7pYLh z7vST%pPe`>ECBBdyhH_B#)i~aFd7#u9Uax5Q=n2uf6+e*Eka9yvTzqRs`ov8HOuX< z1Km88`DdgytRjI&m=q_Tnk8wh#@PS1OzV9&7)`fIwS@8iN=+ciQ(}C``qeM-#!#19 zRQ9of>Mmpx&68^y`MnY=54(ioXNs|plo+!lZc=cFKhWp)ZU_-=ViYp1>=%nfNlF(I zw1!qo$jtJ3bIUZk0b0cDa9OW3oaUN0dCI~>aHUH$IYqHX-t#$!F?CfCLz&I7^hpv2 zFPeP{<=_!9z6jLk0p{&Fs%gRGOX<|_e6d`+Hj)m?8Zx_Z>)!UM77MvYij9`~S0%oc zH9~~e3Nj%GVTDA3EeB$*bd~ zVrR@!b|WN>tTJ@W^US%S5WfP$djui~Dllo&wNz5-Db89Pf3MZ0G{4agr#|-1&{X$v zbz^Aq)!7tcVpEhil5>cu)1>!u(oJaFCeP4z+=*l3M<~)L@0m)w(~E-@&wcg#HzJQg z*l&=<43_<&%}Z-JbMErjIuy&dFl?YT|2l*78r{MtcKbghO@(qE>UWk|CUd zX%B_dsrcl@R24<`kH!i4*9#g;=J8SorbDP~JQgkydEFZp4ExJJg+Vv>S6@jGOrwJDARv;jQx zI!o0kSJ7lSPaYZ`F&hin_UvE77fye04q#W3aU5bNrLqbk4{?|}Xm(NA`6+0>9?lWa(@ zE!r2Kn!p}w{T`cThb>bCiMF~r>lH9S(aibnN?vD8<9{6%dbur~dj76=LhMY80QZNz z;u87H+kl}O5OE7*$HiCYN`_nP-fk;co_uQr#)kRDmucswfR_xQp8cia>se2un-|1w zrKkLJgIz6;u`Kq`uxabU*LRrqtmL6WFpZqwU9i*Ic{@|v!TqnT{bU{HsqA@ONw0YW zvi#{ZYEm8M`4;TznZ|G{kZIFAj7mdd3EvxlIy2KLNVSHyx6V(suvU-FLjrNvy|_X# zcU!&5XOY)rBy~k0VCyz(2zS9{%X$)~K_#~~w0u15Q5M1tB>x2f3p8lq^;4dXr3(If ztIU7^zW|S3JX!w*T-p*ka9s|2pkt$`yGsOPQF^Cf@MqvbUj$i0q{vW{~3>d>7)f zUn`GUO)%28XFw$w1v1=fz~Nve9_4sU5jtUYhCZ%uy*F1Zs$hXBL<@E7yYyx9m3&^=irICif z2Thj;0f$C@ukA~cI?mI~bMJ3OJg6LYd-SL(Wd$mCv&V#Cz+K^cFNw(vTfG;==CLUl zZx=-6`ES9sPA9XwxWAY05Xh;*PGfZ}`!|gc>h%u7>g4xb&YVnx5CPjUi zY?)^;+QI9&a<-rCa!|nhzCG8uR>E3kc;)EOJ1VBmL`$}6PwQwov*1j{=&M>KQDY`rD8UF$(WFqdkj8DNEW-!fHni84&Kby zU=lt-vmSqW96uJ4-wiIZeVyKVk2=X4QbatU>H>!}Mh#vB?Hi*#gs$(D9>;HOfcy8Q z9dsWZ{n}3OIb>@V16&IVp||?UJjO!dO>FwzF?|HRhs=EquTjJoPUtbQhEvwT1Ml(NbHDxza?Vjf zg%q;YJ&vFx=)7*9e4=9{MY^%an=QpfQ|7NeLu!3RLw@_aZ|J4f>I_qYY5!kWiK{>{ zdbFxsj@`2-pHM6 zLssUMUH-bRt(1|-0=6wJXLu7S5504AO_vL3U8huse`(2D+JPkYmodLxr|%&i)cN*} z9wtBgdF*uj<`keB{>YorzUBR4u%7$K)35gYS$w{E$idmYzOn`R^n4kAtjplGK45<9 z_Wqo|xJN!{@Wzi~c28Rs@wXwB!eVYOX&yOR2@MsrH=an%G93;U4dgK5M zC`9aR(#5_U^Qfr38ZjHT-=9&kcwyhDQ(Iv~TZe7Oji+a~8BTh(wrIwn=QUwhAO#Hz z7|Zf}P6M8NO5I_8nHsA4o}c>@o;vQLkP6pk(AIRTRDXFpz2H^*j7(dn=e}UDxoe?2 zu7h>14t(0a3~;o_&nqUnnZwa;Ag%zX2n6#Od){xqNo+@bc z^iy8-Ci+YS-2=x#QXEPJvEml=4w2gF-`=)7iX!|y#8^d;h+hr^`F*}9K}xCikH*Kf z^?;A{G(!VLsx~?o1BCZ;!ZWApG~ri@r(}=N|LiB7#A2JImDz@SHhr4)bRc_qVZMdQ zL#+|jbL+7@l3McHTMr|wG6WzkCxUzMtcy;9t0bl)A`PC!)_+B}-esnK^XUy4n|9oWW&Mn?8YsuoQ^|KjE1ES!OaGOr~-=`mlj{mzQ$&#&# z>rX#Cl87TZCyz+VVkS~MhyRolHds-6`B$k{RaNGq2Ik<`+-$0hT2U+vcmWs_PgOdo zLIiAXYy>XKH(K6UuLgh)byS{P@4I#X@vGU(3;p-?(r+WE8-6?L^(dK%dcKYSHQ>St z+f6$bH_!$%s`LD3PLD56dr#@c$7qV8o7KT~iB~jDfNY~Sum&?`8Z5@ zd7HmCAy_WoH-zR0-s(shtBlTZCLoq9IT~ru%j_4C75;z16MV1$=2$I{9g0e|N(VikgV z8eeX_nG|rHAQ?w8FrFxRe^Ty;^|_-_3!9xyd#5ZBPw_QLyeroP-6}?2vA%074-Qc(cMj0pH_o2gG=tLmfnV8AyCDVl4 zV*_FLnM!8r%i!S6bQln-X>;@^zZJf0$jPvQ#-4J6FL%m9j+y-#z+n)_hEbw@xC^G- zJmNl;)f%EIBG(OejOe#Jw@t}rG(BS^)}8tDSPn(}drquTtI)r4pQL`C!_+*MZFi8= z(CzPiz`40Hg1xxX}Qa_pnko8m(XO=O|ugU-A(x<;;lme{N4zjG_%@ef~2e^ z%OV?Sx|4(DZuS*0X*Tp+qVU{n=lx^$q$1Hoh+ou`_I^k_FBglQr;aY;8kHvIIS>AQbKS7Tk;f^dd*)CC`}%J zb)cy_xHg6j8GDkb+-tLy{TbKDe@3R4EKBs^tiXbri1F3qU_*dTMr#(9xP6d-pfmfq z&kuv~0C`s}76n!E@U)$0v-w#@Ncl$l;-8u0Hot8szDTRd2RwRgza54$HxNfG3ieLE zln~YcU&;gd*Ep$a8e6yBmcixax}m>?cih)VSGKXZC}M%d*S~Xh3HeZ}#~U~~%W7^q zABwWFSbI_)WUdbQUKN!-YL}(AU|asEhW9|>G}UiXGT3?_3*Zpr#|pR3+{Ou2CJgOy z@W~&1Y}tY1;vg68)$do8M0&?Okse<&N~--ahqqIq1NCBeqo~LgT`3%Nj#tpJNL`C6 ziw#3A4=Q6+s)O&MR#9?nrWERiTi|5X0+m_hhGzb4fdC>}n|7ShlS#fQJJQNo{=J&4 z?BK%kaso|xiY9|N0(HMmsFtO`Hl5aHn1gffdGREu*|%H`pWNy*SET=@^jFl&id8j2 zC0bM0*EKhO9UR}>5F6a_*{dq*5<2ZsgCdeItendJV`S8^v*W>`y1toKx-9nbbXw~= zGcIC5z%CH9#1vz`E{m%_ZR!jj%C}A!S$(xDD9Q=)f?@`XTqgSdOsFkA&fjmmeQ`t3 zPKt7sz!`#mZ%oCRP-zJhc6JVk(wG$7!gvztkVS@Bkg3a}NGT!-^!6t7ZV+{tgS!3< zi!)TjUj+pyc{qJB1t zz1K8|U7<3X)04f}^K?=>3u8fnDCvR}8B15UJ*+QxwbU!;AS1n#7thpHzrY-j_-@=>-X-@hHri2!}jycLmJcS7jf_8pG%ORCjF--W&G6RA>8w0%-FEuN7M=F z&*L94i4=u5x1A#R5zfEpoc%60jWM>Vp7relSTIG0NHhQ?zyF9u2tfqiCni9m8HIYEO{SK6zeV?DlXkN!ATmp18Q}iD4%y_p1S@%qZ95s+v^l{zw~1mzY+a zg%L{mRV&Jo_Y2o7`3*k_VFxfRI*4JRaDg~EN3WAsrjd3FDh(aYZG%+={~M!zW9m*3 zUyr{3`tpG=c)I-4(1Au(#PDf)318>w0+{Dc7-UDlrDa{Chudz3yBbt{`0CXbRc^8z z4iV3pa_!3>Ggp`j*X#HAi5F)~{7@yF`s2NLC6Oj9`A;aG1X#uGz&+eXA6t3FV)E!a zxJFDE>WpJbA&KAsmTxms$^3GZPPDlbIcx^7%FAE6h}?V4+wju^U7CMY=RGz0uFSq` U{lDPHAnym#7~uN|$Oi!a4{V*o{Qv*} diff --git a/release/LinkTitles-2.0.0.tar.gz b/release/LinkTitles-2.0.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..1e8ad35cf77a889b5bd230f46fc8982d39fa6e35 GIT binary patch literal 10985 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 X{5*ahKaZb({^$Pz24q4@0H6Q>!u20r literal 0 HcmV?d00001