From 7ff1f5acc17cfa3152e3d08552dc11de797e28db Mon Sep 17 00:00:00 2001 From: DrVanScott Date: Sat, 16 Jul 2016 13:27:08 +0200 Subject: [PATCH] initial release --- .git-clone-init | 6 ++++++ LICENSE | 22 ++++++++++++++++++++ README.md | 41 +++++++++++++++++++++++++++++++++++++ about.png | Bin 0 -> 38623 bytes post-checkout | 53 ++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 122 insertions(+) create mode 100644 .git-clone-init create mode 100644 LICENSE create mode 100644 README.md create mode 100644 about.png create mode 100755 post-checkout diff --git a/.git-clone-init b/.git-clone-init new file mode 100644 index 0000000..4cae6b7 --- /dev/null +++ b/.git-clone-init @@ -0,0 +1,6 @@ +#!/bin/bash + +case "$url" in + *@github.com:* ) email=""; name="";; + *//github.com/* ) email=""; name="";; +esac diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..17eb83f --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2016 DrVanScott, https://github.com/DrVanScott + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..d6b9b25 --- /dev/null +++ b/README.md @@ -0,0 +1,41 @@ +# Automatic setup of user identity on git clone + +![Screenshot of a git clone](/about.png) + +Whenever a repository is cloned, author information (user.email, user.name) is set according defined patterns. No longer pushing commits with your corporate email address by accident. + +## Installation + +In case you do not already have a git template directory, create and register one: + +```bash +mkdir -p ~/.git-templates/hooks +git config --global init.templatedir ~/.git-templates +``` +Copy the file "post-checkout" to your registered git template directory: +```bash +cp post-checkout ~/.git-templates/hooks/ +``` + +## Configuration + +You can use the file ".git-clone-init" as a starting point. Keep in mind to create a pattern for each protokoll you are using, normally ssh and https. + +Example: +```bash +case "$url" in + *@github.com:* ) email="my-public@email"; name="public name";; + *//github.com/* ) email="my-public@email"; name="public name";; + *@corp.com:* ) email="my-corporate@email"; name="real name";; + *//corp.com/* ) email="my-corporate@email"; name="real name";; +esac +``` + +## Usage + +Just do a normal "git clone" as usual. + +## Known issues + +git-clone-init won't work if you clone using "-n". + diff --git a/about.png b/about.png new file mode 100644 index 0000000000000000000000000000000000000000..f9f5bdff233a4980fb0bf4512d585192b041c341 GIT binary patch literal 38623 zcmd43bx<7bx-U9-a6)hi?(Xgk?(P=c-7QEUxVyU(+#$HTySux?A>X&wK4+c1*1mPC z?jN_R8MXRx`JRv3Jd`O7SZy0A_XNYf`em?mW3K0+qG}tlk3n(#h z%Q=*sz#u8J?(Nw1wm;*^*a*jaGLJ(&9IIS2Ha^lPaM17kwR|XspnrDok;qRz9{xPp zh4A+i!Ma>0Sp&Cq_VyajK`8dHIhfVa=MDD9X#L)Bh9P(KGju$Z(X2?HP@JRcfp%H5 zR}itxB;KT8;y3jzqd&RWfgl#+8irxAqVbPm(KfNM`d8mv)+j>nSJzapo*9$Jo)p8M zishDnYo}b(IjD^^X9j)QeY2^SKX|{dZW6&_*55-~+hwg4NhL4gFtBJ(1Y#bs;l$G% zSCe1A&2(?>CoPJVT@GU&y|Z-Y{K^eqC0+GMnC^}eLkLyJaqsggnHz73$vGZNFV=p1 z5pji>l&Oz8e4FnK^;YehB!T0(+R6+##jKo@7*xPm;^7n*JG_z4_gT+eLpytGk#bz# zAoTNbuQfZ+y@sc0Q}i+a8SB^tUp|QzVxF+z9hLZ=nj5py+HqrxUqhhmwHIqh8noLX zk~n7_E7XDs6MMw49N!DW$(uA8mXqn?_Zpu4`aoH{RI}o@>K=IJf`zVu&trR80 z?J;#t;bd;GjwZ(YNp?$L>X-1%rS@-ka%qS*lkhE{Xb zy-@S{4Yx%*yqj)Zh8haXLk<;7)GE7Z@8_wg+hYeirKaJUt_3@@k&s4WacB^lD0g9a zZQAVa4gp$&7io|)J&JVxyCIZEYMoCBSlmzTn;O|)9d7kP)rqHEDoNv?4x85pvC}ty zfu7VI3nGWS;K9m3fTL9>;h@Fh-ZR@b2n3Craim=7J-?zWeo4leJC1Z&oku*saLblC zq<6i{{<8m#sB7rx%8X$R!5tX@sP=DoWhz-1-aJ<%m^_aad_k~`JZv1v$voLdJ6uke zk1mlsZ_N-os2@m{rpxtujSCV(8;c_U@piiPp`vG_ zsp-V8!~LaGJxIRn2G2V3hQQO!T~c@;Cs%lIot4P;Ek%ZQxNM1C_| zHT6un)BRxX+~G}k?7|#}$;iQmVv_Zw+SLv{;l4AR7gKw0B2jzaR0qIc_PNsy z!CQHaEk%7==He=6I4Y-wh?)T=W5p{bB9=z*)$ba@=$foy1#PSDNRV-?Qgkr{>Oa5m zP(wsEl=H*|-!ePZww+ZnJ1wn6*$dpQ;z|ZRta5B%rB^>mjrMF?_x0-Rr4kKY(sfNU zrsV7-NVk*i15qU+L|uT29X4A2Q0#qTyU|v3>TjI~*ArxM?+qR+e6@ z<>m!k3_I|Fz-eDLh_75iC9@dNuF*ecpLu7f#BHo%M+&2U-+Krz92L1sxb;-%dPg}Z zdjCO?ZEU}2^2jEtOyU}reo|`V(Pg5P*YtSkN(=ZjG z6~j-=4{|YiNFLR8Tl=WG)6oy7Ihgi;UjChRYNt%hib5h!ppC|I&CZ^#cU|U@5afK3~f3mVg?Kpsv z{zX1uDzHG1T||PIUzTL@xe5Z*S8Xq`NO#(>T)NQo*sjHkZxeu&E*J*m(vXsM=D=I% z-J@ElbBzeM#mt#Lm$hcUYm*Cux{t&8Xp@Pw+@alhHzKdhd3qhP89x7cyx$VwnjnUI zvEaSE(~U^GYmu~|USiUiWXUzK1rh*JD0b6k()Mj=5nc5f!qshJt2d)>3};(#_& zf$qqjS8T0oXjjc!PaN?6)2-L;g4?VTjcsf zVCzmiSDCi@ioZ4|AojE4yT~VOd`fZak(P4O+_;x1zD;6nG_&y5q+f-bmc9d7Ew0|grR-4ETzdMOyxb?n#6^E-k2)pGA6DgFGiXA!vloPBpjsz@V{G35^xYQ zhF!aFx9X%DRW(uy7Qq80;>w1l;nk3@Loz`A)SfI-rV|b0Rle;nzvQoF;Te<)fnFQ2 zwNZIuau{wD2;2n`bG)wv@pO}mdX1cPcg70wXW{z?A2P-HU&DZ#o@B|a6<6j?0ug4Ct-AE3>fA*=pdUQJGDyQm8E@d3q5p_+e_@Wv&9?J zsF1iLwq>zg>KjiSQ8-~t;oNx0!hnQW?7o;DKG-yo9S?_Q_y_bqZ6~!E%2hhCUOn=Ez4x!I&D6iqf*Gh{~dEp zrxN%+0Daei@=S;XJgY^|8INPK zL4yQJZAsd_Bfo!wW7x)?)bd&;7^bxa#pCH_d%lm!Jy}MD!reYqog{)~0N)nW7imo~ zhm`Lwq(7l5S2{s!_?-DPbG3UQv*C9UveIvh$1Z=@9C4z$Px2qP9_h~xEEW9UAh~*K zlBl<@wVG4_7*vavc~I!zAitiz)C&XhLXcHv-gK-@$*VDa9hK^(SaWIxHb8kJLe093 z#cDa0kPOz)KKYKsBXh!5K9(i-Ks(mz7}JmUJz08|Ryw%~48-@(u2L76NmATo&Ibjz z-xgq?>kEmeU-~%3VC=kPrTyvb-{ubVu(k^hr-1NKRY7j4BiJi(UUPHP3FT?^midDc znc%dwhhGA7o5Q`Wp3pr^Ba~8p+Pc(UB zh?!$YChjhF)fQuUd$v+4fZchng5G!hPvZ(cr>tQypE@%>4QElG$L7Y3AU#^Wb^ zZ_uL@!*HDE-0lkp8DC5e;2Sv8UX%x_y-cK3X`38)iWR6WqJEG2VC%xQjgSVrvxg+2 zyS@oP4meN7k!qjV)@)tzJ53Bk2p*HTreOg%jLeSi?<%)Ia{bF1k9j7;`z=0j#nhDo z{F2leUA9>u8imBou8?bDZ}pFWz9@#0-|p$!L?3quQmQGCMfrxPjoKa3)LbdXF( z%hdmiC7XoZWG^+h%{EFS*N8%NK4N&WL@YEo_aof(W_h+BAu0Qg zv+)|^c10tJ7p$y0FNz zcE^Uq`@lpq2(1*q6iAxAA3mJ2f)+<>yD4^bYs9Fwwuds`Xp9d)hf~!>+(q7kxOm4c zU7B&$soBw9q6=7z1#EmpBF(l@&7$4(Z0d$eh!0|03wBbE+s&LpihOH+q8BuN^j6)))6&TGuNYR-)skE2Cw4UiXE3Qf3@$ zmoufBK-sAaWtFnP!c@Wil{+|o#homP$*8eFRU~3!(>E5*0okI~at(i6R;>8wfI^bq zF`igJP`z*&FKuWl63?N;Zi-O<$Z9#;W!IiEgee7v%Qy4Xs72*lo z;4XfSempK5Ig_t;_FpzV_c7RF1?5*JP89{{++IE&p9D&3TPK5k3i*bIms-`o?*;(^ z5O%BG_6*w6MmR?Nn&3Yahg9jtB@-0)#di>{X1z_~?lK2g_6i(uaoAV!iYDufqw@u+ zc^f_z0N5}N;v37TLxS~*A-Q8FUY_^#6I@Ggfex?yOgx7l{>9!?g^pa!x<)_aHko7! z@Ov<_qxN*N&hcwFK_R2wS$2LYCIH}Scjcf;r8-`#@p*r^#l)D>#dP1EZCoA2TiyT? z!WW5o#KR#Lk=+g6R@-^wz_In@RlT3TgZV20fIlvvv9h^!e?5N;#0RW{__A!Uof#>JL#Km?iIAu#iW^Q7T173&xoVfEV5c(Dk=lP$ zpg&9Ie)CFDGteKwc%QaB8XUjzWTgkaI8DX78OjxtEgg^cK2u7I3tcBT^cMk8+{c+t ztU2lJwgOfj^L~rSGRd$AWrNO>9f?qTac5^@?iv!%)-XFr4_nv#F6Gcd56=!#@MV;! zR4g>0q(M69D-2i4r!Px(+3_*sV9_DZUkD1(c&ygESRrFH$PeY>v`* zlO60PPkroXh{bY!4~}vGFaP?->ySMY=oXEKJ{wAHMuXjQMo@}oc)`mt$u55!Ny|Pd z?~yl<5M)`)fnh#xrTQ;?eeuXVs@mZ?NUY9R1jf>(mJ46IK^|d^xV))bZ*pZ!jGt{_ zxP@!%+a4J!F%%Q>^k@At2eR$E(ZgcKTQ*Z)YR0Um+Nja)zZH6q?CVLazH8Ogdl(%Q zd}75y=A$7FLDmUqeX$51$~5?`u;ciA6VuHJm(<}CK1I_4YsbdV9LMNB!Mep=v@{{&Ba5B^I2QkXOv-7khf2x+=`5A@st)4 z;sQ)eI$GOIhT01uK=bx8QILVrCp(5 zRhu?PmG1|pZ<}oDSm1lrC0IvOelahyBw9F4f9Y=@I@&))Iq3f;%3bQha2?%0mOs0( z%U4)Y_U`nbwJM^Wx3pCnwz&KXbkb)`zb(YNRW$349F?y-IcMT%*mtt-M_h=0DD~2M zRMZ6fBk}QBEqtGJB2&|Cy=+YC-60O_(Oxp=;m-hlC=^Zo@y4<~G1WrD=O(CcdVfGn zkUuRNzxIY}sjhwVPfhH~WB8>+1HfB(*K+@>=!hwkn2Ce>ou#?lvnIGl_jFqV@H@|a z#M!9IF9Ok+IajQa<&UCx`K;iR9D7hdK;*d}+(o8yEX#OJVg3pa>5>O+3uxu$s=_fn z5m2^LE6&=eo-K1}t~+0^d%rjFHq<86P|zMB0IxGrUT?1xI%agboY)H9uZ>QqX-?zr zF&|yF^4xseYG|V}qkJXfT39Z7Rm9DbIw7>T_;W3{T*jT{l*19Nzsfs!jAqvNdwvb# z^K_l|dY)Tlz?tL#31?WA(HYlg;GiI=lqpMjabqG4sm@-0^xa7!NBE=E^gfrRE*8@+ z%4Hr^{+9$)?7b-p0+^T;wc$9+j33$gm2}d8sQXyPq(ayMoat&d{Bbg54E&K&;(OFJ z@zC6YyqO4ZIM6~3SqFSH3S2Z=_dZNrGrHWOr9St^_F`-vNxlu5nMZ5ZZI73q_suJ$ z<4K5A&Hq{J8EQ88e~V?21qPQ})nl7Ixrd=n2lO+c zs4qYl7R6~qXINEL0%T!lYx8qQyWk!|d>7>g2F^sYqat?G_5ELif#cQe+lQ`a~dmBs%5yl>FKNk zgKat+*wrqvG$TJ@R$ZQNeAj*`Qz6a`h%!m~o_tX0USC9;Rzx8qU8+P~9=J4xXm)sR z(Q{Odk@>5e5BT8Wm1uOp@~v8=+C?uT3k~-6`Iqr-*xB+{``L6H`j zFiHW4)`az(hOa5=s@P8IBSk_cFS_Z(&76GXE^k*YcGHfLjInO(E?`i<+h^7aMv?3U zt%rCmj;UfW02?cQ;EuZBf9g*8fb#}$5>e-iwhA5IioifOvMWsk8o!24iGbUGQHVEj zDRHars*)&_c#5$MYw$=#F#JMl8XeGpRMbSM5`PhA%faXT(X!Gvd}~xh3|y>2K8@Mk zf~bGOYxmVJ#14?-OP+077ISK&=b8I)6BvvlsA`op7CojSif`tDRF^|>Ne3GjMIYNl zQdr2H_kBPKci+fbuV)fgU3kb}#fr)312s9gtX?i=v-S(2v?8p9k5;O{K2PZj56Sa9(v5TG6pIsUlnaF#cBjM~vnftMU_X%jG{HT8F0j{} z-92ZLmUyc15SZ${sl=PYr`*=@41kY?iwAu<&H=~tf|_?TSMvUP-DkcG<`QBHz!zrC z75AxYqdIIWm-(SyH2Z3jvK(mk8=5}d^s72hgLp`LaWk^Ugr=t})9`XB@6%r`6TV{y zp?0PMt^G1pA~8(Ot@Nbfb%3P&I_3huA32pF7Oy5+=JTH>hy4Lxyz@NNsn7alUX#W< z;&0zC5+?Hj8I0DkrU$5>mD4sLwZ=zxTcHQ35 zy$4gN|1#(By@BKd;D7JRE&Mr}kNrU0VBM)%d$01ev^np^EwsrDu_GC$HEXLpKS+!} zt>L{JL8_qUO)1x#vSS&FB=8MtuW_}yng;M{8StYcVMbqh)u)NvJh4&8>E)|i1qoWL%z zUIQ_z@a4f<{(rk??=yC>O8xE4j?K<&G>~_&ZtB&A(x9P(k5Ah?l|ue^iiYl3>Nq?e zEF`Q2J5QdcrDIdTk!rE>R8Ad*F(c5xJPqo`57-2PiK9pcAhy|1OOlmTl7X-dO5g zzaH-^y>^Iq%?NwsE;7r^=WK4%;qvvJy){4pVHx)fSN}M5{ULa5NaUkT-hJQ)PBu4+Kzh#abgzJxLhZ=;*==qZcO(${M@oVSZj>HAYn zmwwv;P4dOzJ6x&}lK{t6pWW~=TQ!ioC1yYtId*e8qFBVwtzStvDr&9c&B^HpIZwdJ zG@s;d0~LB3zK+L@<|-|sYgj&le+y)gSMBs)ON7?X9PL44yF-j0tu*HppN4u?b4Z0JU#EXrZo;YvNG6ok&7yq)rEBpJ%Mf z2nhg?=T5u8p61%>);)KeeP8K8y^1Uo_N(@2GDQo8blL02{;X&|H7VKQ;FqAaE%rby zz)m;FpQ^QL38iecwTUvT9yOzJs=19)XSRYf3l~{%)xG)uEs{zVmMEKEw9I~ z!HzKQ<1E?ru+p1)Xw`N7@_PH4;Mc!A_f?|DJ%w{g=Uz31)5=DSLq2|k!MVD!{S-P= zK6-DjaJvbBPd;8uT3+f6L0N3XE*>fY0k%DMvm8j+@SIbGF@{T*+;p!bJn16oBIOD@ zI7VL1HI{{a?swf9B^a`VRLnJb`OhpsDh*nqEDBK6ZD5nmZotBW_0h1X$1%}moJLgbeI{sM@^Ox{bvE>{ud zw(JwXH0I~Zd`mnJG&z;jt>bih6qcO;R zA@p6?a2y-7$+%jS?_UzfV=))hRa6utGg9L;;lb*5NV1Idp_G?<%o9K@uC+`e;dpw`c$8M?G|3oteKYv2|N3HHXa)V^l(R&>Z9tgBa<)g>HlEp}>7g ziv$bw(}!z|*3Q0os~JZpvfdls5IhEU*I}w&Q)w#9@4KnU;kd66DV>aMvLi^JD@e|D zY1qlqk;{x1`<-D`&(Lw*)<^sxi<@AY=nlc-9WkBrE-`$4+QZUGy?=5epvKH0aiVAd z%1}(;Fv~$8H}H;FttC{VM$5EhtS)*Hdl^ifF5lBWuDiu)P?%c&Fm}VtV!icq8ixfa znVo)*O}n$^+NaWHALJ;)iIrDO3@p=Z|1R*z&Tqekc6#`IPDNEvF|X^aH@~Kjrkw5PX;wrry@Rsh%IcN$eUaQvpp{9pmpV z-o23&b*P*WO`l_axp+(mhi*PE=@(ME<83q)`O*DLkeyk+{=hmQW~Oh>ihKeLD#@Y| zer^G+^d|bQ38-x-klP@QJy<>nWr#cdcsr6JxmC6rSL) ztcS=IrE$mX@&AD zJ?DTzsye!|TUc^i=p#K#RYqBNXbxU0X>*wlZ)11EDzODY2X_YwhWjcf^E*u@>GN$< zSbs4{lwtzfc`?7Wiq_X61gym>^>QS$N62A^bop)NpFP24M`$p|R@P4L6-CGH6Ti&5PW0J}zGG?z?2{n9z$8i(XHp93&t^hSPeF{l z8<}e&CIXd@LdR<<`5&If4C0mFH%Sew7p20$!tX<$Vk=_G?Ib)9pgv&Q14K2h>zIFc zfBE>5?#+?y$i26M9gR?3i}7Q5D1o}6n-2GLXLL=etQF5`7oRO(^wPIO&f~Mk`2tAq zMaFtoGS<2!_Z69EOly50GYf80!#rJ~J#dcXqlX7tIVkHF7^M9?#hxtX^&VSw>Ng2m z!a{w2N&u)c)LwSew_^;jaL1k$4g#pzAd^zg(trO2o;~UxyzT+>4pK zCjh_Kz09UzCbp$Ajk;kaNPf9!ti3Ouf!rs69PTB%cA-n!pj#-!VF4qF;Q3bELhM#z z!GEv*(w5L#J3nlnsKZuWkg0F+$nY!my3(?Z)Z3|7Z4B(7Ds7;*`)uM$76LBBH3r7- zs zCvz4SCSln!$;8X}Co{nIYMai=!;vOE2(|%|^xuj69Vrb>It3C`CAS&X&dKE|D1Zj? zyT?TmYZJd?E%j78$6oV38PU{SUQK!(l^s;YW1?u~TZZDuQ;8<+RJLZfGAQRQp~#N< zRm+=6gp#Y^s=*>Hp^**>+4(fndK23 zi+EgHrBRR{Bx?)GkPGRZ?cbBEle?cBrdSU1G*hEuVwCY;t(%Le=$zR~pE|6(#M{Ir zao<^S6|hX5PjEvx{w7i#Ehhg~(mlP&Cx-^6(-K)pNpndE7|Gn|x8SmQ7f0qcKruFJ zlYB#n)OEX8rihpc{;2s@;LU@6e{r)dsPC++!hegn{|r(7p;7<<`QLo)jUZ5J@+{%) z+n`Yg?zHl zyEIn_Sa||nQXYlCo#_9`;i}E_E1#3r?;LP+<1=PY8bXQPmsj_CaMN<|mmXr=nY0lz zB6v9qJ-7m*V^)o==~<45!v7rT<$E&JK^x7=t4s2M#EY+ZY6Vy4(^hzY?+2`=AU>N? zIR?4v=-v_i-@5RdqApWD=iO}nbX|)X!!KQNR)DYgZPMwG0R%4Ih^e7#;CBn|mm0;S zw74kKaU;kO6nUUy8-#WAJuQ&;qV}9bIZ-vqhmqWF9|^+FnKA~i`aUlGt);uKl#YR_ zqgByg+$DL({Y?hsLxcsAK3nOoi55UBPdn|8%~W`L6ScnO+8T=5DUQk1+)$j$cBHTxe%w)%) zF+5rSI(?k5>y0@+im(Wx1OUBaVm&HNN)h|wLf<~YwlzE&OYX8^&uhyRy*U zS0qez-btcGvMzfB@s3`1?Om<|8Dg}_=w|k~?;^`f#b)GP^$)(QbLmjftu%cz#oj6S zSfzf%Cs~ddtq&7Fud6=m8&Q*fr1^SWxejLOD9wiaPw#c5qz&!WD*4u&bopArPyzha z9ixLiYNSD^@t#iSgAOjdRR-18mML>pykIi(7&WImw;vhKSmdjto|3`L4`~3inkp3) z)4T+<1XgG}`Qx>2m<~&PA&vQc4qc~};*EJ!0$Qe?mO<(NNJ7Ol#pdWfRP*OuO-!dz z8TY5DZ;!6CbZp(4dP0D#f%mEnC4N1EkMEIT(N31g1>5oWKq&d&kzbg-(|tBPEw%)U z9a$rxhHH>P2Km1ZA@p9It!8@O@sqaKO~Uq@`rsc5>HT~WKhF7$WHJF|Z;12eRECU< zo}N)Dfq5wfWEU4zib=*frsm#j0bOY`?cg znRUbO|CLQ$G{93%Mf)|s+cv}ql`B);78^L|oVn?CD^C$RDDHmMlik1`La0jjxa0f5 zW8F-tjh|0qB!KTD;m+uB@%9_)xl4Fij3?hdq2A zdr);2nd?BFINeN)ZN$@^7f#P5&LNDG9S~004X`n4c`7vY7kGUTB|EpRED%Wyc%*Ty zDxayO)9cyt(u)4*{EMpVcLC!?Vh-2Sms$X%xP7JAIpz0gYH^xwaSbI(3=Efoby}3B zd(?l}5N#heM7yThH^D!vA*1$eL7#JXpH=fmf`mD|X4Bf8weQf*;TaueFxsLVAk5pN zHEqxEVL>w>?-vCO7N<5i9*5IBQ8w_QkYDtb4Gx+mc9?g#r6rSmB7B~^Q(NyU>j)k9~@Fo1yZVJT| z0j5|!+8ic#w*ka+StT^=J1*9QZ(CEz@zIBFv&bbW)n;y<0Q_k9AG0wmr(3m8;AC6dl;=Ld;o|?9awBdkFQU(=Y2`Q`LD5}j?qDHe z<&1^Z?B!}0$UcZyO#3Z7P7-fTro!^YLq}c%Et}a}Lbtbp!Kl$N@$+l^;(6BxuY}G( zlb$9=boTDG9+R(2Zr8DKZXU;~wBHvL82+N96n{zPm2MKZvVL?yE-g53dRfBPBZrdg z4wU}ruUqplTmV28=WU9Qo?LD?J9!GJg%u}IGjjR#85+v>0L4J5v1JzADf8Os!|5&% z?ic=q+=zx7LqyokUdc9gJgbf-DaTq>qcm>Iu;?7s3-$?CCi=i*+`T`phOS}{);vUU zni5sgBD?-ZNaN`l%kF5XSo2u<|Deb<>!i}Tg^((-DDls)XW1w;*))c*=c-!J0KiUf z01vzgm@s4;kHBTzV4pOCWnT)@>tdI{jq(1$b*ArxZU{4w<53H?9P>dP{Me`VDxVMvtN zj6wpEhF}1G=C<9h(&Cbz+3g;=lfS1M8IjcOG>JFO(#uKefJy|QDU+SKcx;|~k5*Ez zTt6+O4|l1`grZz`7sjN!yZEgXS)Q?Vpzo~JtnqHWSy%RK65R8ek3H1fWyKHY_NCs^ zyUS#j>b&7^;I?pxf^3jnem+F0scKe0htYVEcP**^IZF*Ox7RfG71PrfeVnRaEnN;p zQC_-4b?2{=P@YOHn5el5*CKz|-Kx{~N0AFv$2{eYfGp9D!!kCuO9O=YfqcKV%aWrH z%Vw*lLTPuudtB-q^~BWr)D~pHq@kXe#eUP;uaarX(D6B9o1NL~6{$3E{q}gdMyW7} zo2KUpt2RgXFA}{88<`iR+f?mVCC;{3>Gmy#(C#xz;l9%MvLDo_{QvZ(Cd*bOQa6W| zTIa`Mv!9V@iqSOu3ph-(V2Gc%KM47c5<>V{sm0)ezgV=ptbKS9a$#_$lg<9X=Uhj$ z^<$&8^W8Z0wWiaqrX%oJrW7V`h)}4dMCnyo?cEF}1~AL)Ti7(D@#x0v<*S#x<4U zwZW!N;0Bv|rkdLUzyWmsQn?BJPsAHy2j~}&)hQbzG>C9uIfntoAsBf*}>hq1(q_Iw^Bx92)sE#BU@ZtulJz~(bYg> z2`2oK9uld|PNBeN1bVq+r$e;uA(nfvB;+tUD)0@!M$mkYLInW;&EmSFiA6~#Sq2Ktw2ZT0P7Y>St;l9qc^6Bpx|7fD5qp+MVr=A}6UKlmETy+&iPWEm z9S)JWRFEmN?iac9IX?+O!6doWm5W2=|CdT2ujC=~rx25kI&W|wBH%UfTKG(sb~CI$ zi}%*S&7P&~Hqibsj9!)Nt--_LXnC5Mo2GpMyZ=(mlTcA}mf>S%zL7}m^6%ZhkTS{U z_aWHjy^=1eUiL4`Y&r8BFKI2u5#tDT9A9%boGz>_oy)c6zxy-i%ARXr&E;?m zvonGg@@S0juC{IhaYh`pF^W?EpF)0-!mJ-@l1aK2fDEF)wOFm4MV|2`Jy>Gds&9NJFT z$!)wtG9By<(p!8>z5ltrSW8Pud*$S!f3XJ5U{kibr{!7pKPnHv+9*ev_(>Pr^g@x{ zeFmGddLG-tPc~KX#W4yf@t=>irIil>zn|l9+SKYY;G zQ5A(~@(wz)y43M22Y7k#tx_pEn|*PGavZ?pW369(w-% z4)dGt{eqJ|&_9%cqt=$te8Y&joCt}J$#nbK7{V+)F#w7qVIeH}CFwQPC2(oBi_Kf{ zFy=FrP5kFmjab9T*~)Xea82V@;xvEa8BbA)pbt!XHx?DT=qV@?1?1zeu)Ea>Q=%>8rKWyx;4G==K@HEF2J)TIdQ@1hS ztVRfm+02T!*9(Lsz(yn5gczVcTxNYJK{!>aqwtI-cNJM6Ctz&M+s$J<&Px_{>F}E* zatNok$Wl^@bDZB$+CjH7mo>`P00fPHkql3jz4wvQ>4Vf{q?-W@81-A+VDlAzv70=U zoMG+lZZ6yCy7!6K?R|Dpn6>I)Quns%nwN6O%ZJXQ0rr2$EcGe>U1oW?(n);&TUiM_ z8K5lYnssZbiyo>ZLMS^|CNW5xM5l`FtRTNh}Wz!?lF^Ps5z= z{2n}Yx$9~4;Mn`COx*KN?TEn}hK|#H_I66`g?nL=meCbG^BK{Usb<=Db~?$UQAZwE z&ZmR4GldSD1%d>{C{}LG@ z25jE-!K9G>Bd|7^F${;&>qJb-XLwG*_39E7uBvOGQomOY9<6N+MfXjC$GD|hO`so& zZHYZB)!sQJU-vMe{JsH${C%IS?LCWCtU0Xqk_nQ$i;O25s1%qTTF>o@tkG#;zXsL8 zSv4hw>IM0ZzUwk3sT%mkWYdTP@e4umK65DoH?x^HFBkyA)liK~xt(Z2mH-ycQ`Dr( zlEsLUM{u2$AFB(32LMzKy}V@0{&(B`xC24_KiTf&PgZK~HrJyGLpC^QAL0q=o9;)f zSV8$o*7;Y1`g0*C|Kk08Q`ZDojk9C;T9ZS6o4Q2~<qVmR&U;Dn9Q31 z)X6%N6HPAS`TL8Q`M?++Qma)%T>RM8`7NCaK=QTf=)d~<7)*W30+rq*f{I@)JKhb< z31hq6UoR`3pEhxe0DzcRD;d&0Mvk(gol+0kjF#)4sIgAprfVZ^Ka*>J8>x?-cTkg( zkr*ibQcCKxwkByjP+_TJSX2yCL<<*Q8EVo^hdmHAcdK4jvMmGAQSr$xIh%5<8lrMU zT+(%1LQH13476xSR>GL1)r4f%_9CGn>c5X}YBc%f43H1PzQXXOv1ABs*xDE3=~Kj3HbUY&Tx?K8WAIEt*n+Gv#nP|~$5%Q=$^P<%a}|CX^f>(g zm=_Ly;_=$~JAH7=H6_3Eu4YS#|10WaJSFL*u`s#?zCEutAT@D>qU+(~YYL-nNMH9Ub$BQlxx200LA@%5Evw2_@9c(klN0mtw+1kRGS(-+cV06l_gtSx51+*B ztGIR59K+a*3&ORaP>~-FXn4(T_rQg^8V^-ns@!+|EV7@pn;o|G{w4o^kW1*q|3xja zoK2Wl3)T4Kn@GB{+;(X!qmK$Ku3X%c4jQ-JCVj!4y`r-VcNBn0N04?EmzAn)@9b=`ekqpY^{63_z=lhhrkD7_=`HRTh(-e(KvBNg* z*WT{2DzLaB@yDI)4yD8@k)eD<8#15R^X!r^zQbeg+?_X-AW<{qW|2_U*UNmboU|#& zoZ?Zd0cmGehBX1CFmG(Fz*lLjg39^S^s}12(v>E;i4+fT8VrQIA141U3qT;8l-NT- zeEsMni@oL46kaRvKTW01xt1*X33>06Zqd=Et79f-sM2JYP^2czv$y6_$~tl$b~Mg) zd&Xav!n`!ZlP~6pY6xF+yd)Bq=TpFQoL{>hAitHa8y3s7?crg}n6ATx6bx#l%1q8} zJ3o7Of#7onVxXQ`vk0v2dtw5R@+l@6KKp@J0E2dd2k6I+!>`?)5_*y2q)(`4nY5(p zaSbm4U4DwhPak}pVfQ4o^wBS6Yo=DBcS@s(<~1tetz9Io+5QO9RC(p65v}Dn>Mb!# z>EmYUNpo>n5P&&jcZJd1D-$mWHp}}A(#KHL43u{$Zr1;IPCS24KCoKxTqX)T{&f_J zx_F6Hr3OVUb)VD2@B&1KyAtP{lc2m*Av5$O0xR*S=ta9$VqU^@16CE)BSC@En&(k$ z1P;T(7`d64AO)3?n&1Uc5PoXKurGTqXh$fF9IyAa1jdQW3fOK8`m)`NfM|j9VATfd zG_pr2IC7*(P_dse?P{d)1su+S|vg3KQ4Q+iiad~}`xfd5lte7sgC9i4o& zcx3H?#a7XCD{c@xtSog?a-V48g)YyDsX6q_=r8Pe+U;A$zS2$`*k*EZ=EjbQe;XDM z3QK)tY@BePw6*G+eHluaxphPPf)bQ*|H;bVx}hu(z<Ex2$tdSbck4?_W0QeZwxQP;oYf6;>$U=L^(<@mTp%%q0Gq5`t*+? z+J+$3l4+p~w70ei{?yNMaul_f%%cKe%J_E2-CFvg*YY0Y;W1)Mj2|f~8`fxJxEnZ* z7B!HMe(4Jq2YegIq@RV#hS9_FEpydc1)TxwKGiRxi~5ozs|F1n#{ z@T?-|8AEM+->3Tmk zK&Jn;%bF-wn{EiM;JovgS~l#f4XjatR9omzQ)fEnSE};0^n`YSfqr?w^?jrg_@k6Ynw@ejpH9-DR6AJi;mjJ3;n|Eb>uyoS;Q+SQ0-*P7QRIVpsw6qV zglt`R3tn8i7I%`Tpx2Y|3F|B;e@PrtlOG9&j?0P=(RU#sLm0N{{LG#{AP9hd!u zb2?Y?V+Om}id_XYCWnzv^a#8m1S$-nT8ZKKsTxh;YmMQcu*6Pu=w$hFcbO3lcrh)} zvwSsTliMT7H2`0mwh|IcI`kh2=Mc~nv=#oo_6R+{*yt#D$*`OFRmE!vz+b_G+f+m& z&)7m-8ws#jgohDIFRr^H@$M$$S`tCC~G1#cM|9HYMWM z__na4%dTp02}3p{Kq*20x*R6yA;W9c)xgR>{ZW3(uy{=&V1g4VPX2J&Vltiy*X;ui z2B-FUr4bx?0HU_+ds|b?WV&UG$XmXNpuLW9A8p{6WV}k8HB!xqfcQg~FE9L(g$ZrJ(!omO`;4X>1nBx1fyx-s+$biThL& zb^^FNSn)^Cg?K%a`m7-Eu36(`+$g1r5jsq9+R}S$Uj3MC={}72{eFMoDDJS(wTa9j zNz8R<0f(tbC+>W!!t@8-mZ-IqL$95D9>){jN!xju{r*=ALTm1u8wjiiBeyyMEQZu6 z2wC736_RG-ptaU`{oJ!~jfJ0XiZY*L_SzO$Z01OwyR6F!n|AnN^_Hb@b5YtS9c2n8 zK!VlwCMTpYIeFJdPHh2L!CLE|V zeXuZ^pYeT*^jQYzG|Z>JTq$xn9-pa=oCqO&-bzwT0P>VeCfINHVuwF*CHxT(yGS`Ffp?CTCY;5$vTZ zr_2dp$Vz#^kC3__hDqBG&~~RHuL;6jxXJ`v)evbEh1>Q{ISH_S5>vwug?|s zeLMYhV_oMjJ8WpMu#~YlcwX%8%7WA$;>zYJ7B%LD*F#3(tS}I{lha%4L{WWz*Epc* z=Go(ph0cBOXw*8a_1L^bgM-SK*vBW*mfDYj7b>aC(Kx5JNLnh90J9DMo|&n=qxALqGm{>g>F~93rO!atMz|SYG(GMq-Ybjmi3LVA29fqT zg}RovjS@8|1|AXypY0+$Vs)J@*6m1Yp#@e(oy!Mw1~IG&j{&}_8HCqAl!G7u$_imQ z%-`Efi)jb|u9>l)kQSSt_QO9jhAN7mbG?AV1kt1w6}+aO9RbI@Y%~H|e$D91gM%_4pK*e4Y;Tprr0#nCBK>!8d{ zr&>1y_A4@xnK$K-DEXpelcqaM4VWPwUp<1~Tj^E?_pD_a_rBey8Z5{hv8);YcZ(_u z!WMNN-g66=%lK2kw9WVa?_aEBbr(74dizHx&qlq!%2_ou7uF6hE{AB!whJ-A)F2q* z!S)G+0Z_Yr5E(w*|Gd3gbsISh8r#Sfg+wu;2LZ-WZCN9)Z8aN|IY0m5b@%yuo!Oj2 zHAB21cH|#Em~}({<2o^kfQp9w<7n{{%&PjU&JPv@HQrjMQSpoq51QPXkWs%@O1VFj zlnPnH8Tw#BkdGX_WtaOlD3BlvfD6sJomHr?7|Fo|_e3)IhsthvH8Su`Iwk8>7Cu!^ z$KqQxPnb54o>BO0qC69l&GRp_OQ1h{ON8Dmq;NO{!e0s)#U~HR)$#}-x{p78{h1l} zNn+*>k?-_C>qA)*GqRGVLqh2#^>ivZoz#Vm;@j zW63T&L{wO=q?>%mNyY|cz7%?l@zBzmb?MpebNR>e5?4NT_L@r`vB}KYjKRRR~#E}g0^PdolDu~ z*dQ%(9;kqsh|Bx%p4{P{5hg1UC|1U&DwJEWRP5xaF7n|NV?tjx2hUW=U1cYnWuC?8 zad4vN-GMrbkDs^Zl>oAMctX7{X)5suofkCht zKW0B|rZq>qk4&2`8!4ne3^>3yh7995Zrx4&q-BA)tf;tgeE6^$*QIVa!e6IFK3v;w zZu%mEhUNI10qFT2+FFpR0(IB|@>G1&Fv1(hSO^ecE_#4KCeD7-fuZP`)(!Nwm7Ou5ql!FZR7YJ{{@PywTv*JPmyc zAxVFeaNEotH;{s8S8Xpt$LIA}KrBU$+0x&;mufvxfP|rI_jE5_+}37c++num14t-T z6NT-u$S8uG@@ z!V>hf^;X|&(Plri9PCb%I0uzCxJZCFG@dnW#t3)jW<{{EKT{P%S820*c|T+Fjg=-n zQ47V%xfL3R14GE}QJFhpS+E_=ftF55_oQ}yb?`zMm9N{VXOIcoE&5o|JYoah?57J2 zz`rhXKR^0pM}#{qexs&{=&=@D#*UvrEB+g3Qbbht=sws?C2a}N5z|ULap7qQ z=Yqz!PMW%aSoVx%K;o(HQf0BD1}goK(KzxZk^!dl9+HoHD?VxEfJoo!4BG3gl%sAi zslh$^3~J6dL&14Y?sl&_6c?vhagY4|5WI9aH?<{xNQq}2{qsEFpp1z6nnMgDUJfs& zvz<*~R!Vu{tMt=1#phI`^h{U;re*$&=S8!Xipc|*>_JtYK|4w{HAISSK2oXTu&Ir? z1|_UHxRFt*;bQ_joTsis5ouL?RHK97gc1x68A#094qSc7&>Gq}U89bPoc2E-YBN)p zn&hE}@^ufxio=PzMO)^Zc?WYz9jE872%JIhS}VA4`z7rBo#Iv}yKTvCB+q;`hVzTS zll$~iW4>usB*n{XVuiTIHOFX9t4-(5x0%j{c7){OTEpFH&HD_#&do-j-U#li3kh@W zj5f*N>pV8fc<5-WBK0uaX<=G2nF03slAx z9)-fE>Jnx0o8&LOx)*sEHkb}4gKl(8dsEN|RH7kza_ywmgScU6&2DwL{B=e4X#jmv z;CKcq!O@r&CG?fz@cul7(tO;RV=}Yq&{IucYJbvqQq@AsXXv9ON`1>!+13E=FV(1N zA^j&RYSM|^hLID|X6i3bhy;~=bXLDkc8UnvT~vit&-5U&!DdV(7lJp2t)JYZsp+N6 zEHIB~KMD1452nYZt5WHs`mFx&5(0*ee{_C#5NVCH`?ygIr^}?9&40BQKCli9SI0g` z^?wD*o%1yI+=}S(eG3veCgpe@o5CrcNJUcUY%@sg-|@7}kqqmRi&dVlPmTZKHQ=Ge z-xBO)@VHznK~O8~O87f&`A1LKCli~OFV);z)*9z0AGfRkuEqh+KTK5k%-rAOT|2Es zUObgtNJb9Q5ga*^+&8UlOzN)fJz2783Gpgjy6i@Otm_&+uFekEe7RXW5v`ete2N%x~qm;DZ6g+Bd~*x6zplJ?qk-%+_3`kf&6cZ2J3dO}s%eVw6_X6{0|5 zC+Idq$tZ7~?w7s7Awaj}n=}C2CSL?*aqL>R%((#g8O7XG5}vqsWhlf<>CDuG`#|8fDB#BsaiqItqgSNMVuAuDAXO(L4h}#(sWCUrW_FQCVyju=aGgSC@vE!M zD>W%|ZrW^JQ3BuGY#8OT7{k(6=?KfoREDQ^AXlC!9AucEo~tK0J-Au3*ectnbi70s@Agi4&0?*7 zIQFQ6A|un3Tp4)7xC?|m*~&v+&>jrfXs`tfgaKlUSxdV*Ub=#6>fO3xt;*>hptoEkW-@AH_^9+Q!3~EKOd-wNYVG{n^`7}hFxZlEW~CAjRBY{) za@b$m>AKVKIUjRG03`Ji=4wvgA6l)oRi)%pIgx2}MLc04G~f(A(F!@VG4GaUGLPyE zDD`AjOE&3J-be>Gv669~h5p9Q9Exgn9yiPPYoWTNWfIZl?idv)-V!^V&^J7JGN{-) z3Ah~BcI%^Q>GaqN9HyZ?w@8loaqD4X|7zyeQy&L?_0ll#olJ-sEO~saGGSt@-IC4l zgv<_s;M=wr3bQB{xXY2G9sm-B%T1oDh2Y`BOyjOJY11Q}aVJc=b{2E6MZpyrx7xKp zSo6XNBK(qhR^=>X zexe~|?M;xN^$qvcytaGoZwWjwNu&1zRTvup*Ix*4xkM{B zZzz}Er6`xT@@rqjozj?<6t+jyH#VzzZV~y8^N zOo4{m$HUVINnRn(+%R+{t9}}^0W+RMU-0{p*7n&?Sy=~GF#5Dq+;4dcnqocI8H>L7 z{D7B!%40v-%44hXXSfdTsXhwwVayMX=W(mza_eBf5mb?)O{N_^4lIg||@xe$g(c+DFjce!H5AUj|E&C>46xhXkw-cZ{Oh-EU7Uh`pXUXep7G1HERmW!c z#2KMAen$-4H$A9 z<{3V?172+9Ly|aNWvY=On;7@;Nb^q__O4GDz>a3Ba(Kgcj%u4m(Zru^51!Fe8JGI1 zfmt;Zj_O0wbT2Kf=nB8eC`ZSC3<_xHm@uCd*;zQ?$vt^G)0QBveVs&cnG6fQX8O0Q{S+{F7jbzih z0|pB&0^fu$!{{mRX8_ia9wvF)%V98B$=wqrVVFt(D6h z4Z6ug0+%8Ydo3idS3E7c2^s}}{T}@@T;%%eh2<|N;GWNEA3dYh$Mc2|70NmZkd^!V z3sm>lG7d9WJ$5q&`bVqXFv`JE?LUGKa|B$k*eW=&76-QlGFR1V*{EONv^VAGNt){E z-~j|JCfqh0H91^}^a59cc3rH;c@-~BwQbIy#1>EPI8XcdG1Q5(Sm(sivVK->Ga&M8 zHg2v~bn>c+5gH=HRIYz#D|#7d3&A)+npT+2DA`c@B2Q>z)+yS~+Q*LXL!BGKY?+x# zFEMVUc6ipHdGOdKDJb*xMEPKDRRwv@-fp@)Ts9ALzW(FzvFR<8vp&@JjCA9L`0*%% zl#zanVT#{3N!1<~X>paW-%>>66Hp;z>%yLF-4(5bggyk!#1eQ?O)c*GCh_dr^Zs1l z;r<|X!aQfVHBbUEwVK3z{+?1ghA*$l*kGeY-G$y zGg{vZxfKL7JY5qER$KD;!HQ~4I!&*81!xF>hP`!$Tf6&4#Tw6%Y{&w2YEz{WO>@Vd z5t=t>+z5(T{Hl=N-S+)Cfmot?b>w} z6nyoM=5R)kpV#n@<4MdjW#_m2P?;VA2aH^t@)YXJ-fPjt&rU|49Mno}bXXm1nIFi-?$IjbuTS;N-`QS~Wx(bS~p6F5#g`azgtWu)9XN zax7-BwP!Nu5JvpSj5;b9cL?j1d9vo*|9$?+mW-;TNm;U$QBV_$&)H?|N>y^IRzj#+ zm=RQcyc&FfwjYaSeXZgA4cPf(DY?esu%+h|Z=rI-fE2vTddTaH$c?__2UHi$<%XV8 zwe@y`k;=a62M9nr?`zm-F5aURKImm({5z8KDU!QsZ)g}Qt%Xh?Bt*!~3LgM)?p|Xd zxhsrF_2(lk<W}5)acXY3o0(|v}EM)g?&f}z! z@D?+mAdPCn$lB-YoCBEej27~B&7y1lpcM!=1@KcW4+`l0H+=zjOPC6vL=sqcu2oJD2uSJVoB!p*pCo7-dY8vbh9#C72 z%VBUQttr@D+TXK3eP`LYzVgfpNgiXCGKE$N?Tn~jBrH757;F?a5Pi55(6V;IN9sC8 zq2QnEcCtS5`+zcM>8q9*o-c+Jf+L&~)hpGpfmJ0H5V_{k(bVl>*SGb1I%?tv6&-aU zm&-LS9v6x4e90_!r*g*rrVM>#XlKgTG0wDU=2Q7geEG<*+CV$+|2bV@l{hPY{bMF z3Q7angwJOLIvi&g5Kf-C?FnAJ5Uih%M@G0ev22G6KK6CEM<<0$YAC3W0*UXF{r7!-dwz#J=BnSSIQ#K@w`dm%_r-=rNXd%J^x{IlAioUQ2#IyqvTx2Wd36mhdNUgy%S@E z-$^Ou-^k~X7O&@}(xcY(wvC4wUf`l@?(mio2Slxp=$H^Pp82+e^+pwZ5;?z}?f|~O zd95l>85@q~^W@De-i{ASCnBFU=mtRauT@1x!D=K2A@~c~Fd%JU3-k}~5k9r%Bz2Gw zOO(JTH%;~BRU)${kh!h2ti2>4ioLsZ8|`FN>tyiAa1+MoI6g@LV%sxS zbhfdJKmJY1b-4F5mH^qe6`q^ATnF;1b!LqEuP{+>36A!|#MwS0h<{2Tv0!;VQ@01G z;}B>YzmBdT-80N29+008xV@W(+!2jB(J|~fw-%xAcE5@X(|j=+e&^@9D#ucvS*3N2 z@;egno-*?da~{7l4y zkbPJEc2z6O;tZ+)ZHx?!TJxDuIgV(23#OedK+;?aMO~&%>&+11m@K*}8^SUvGx6qb z!9gSZ{QNt=72^*Aize7!j@xA%Tw5=+8W}78k+1*5IqJ(i`2!xDI z-|9C`!b%f^6%mrk!mVGhKGy8tKDogT{Y*Qzd&8V_XxPF^B1gd(mq}j{Xg|D?dEVtY zpOvlc^!Y9y0(Rjpg3~Z=EZ)?cSt`6sz-}Q05c2*5Gy8&bhi_kyL`f`CxYWf9EjR3M zZ%sDhViT|kmw6i)#ysXUR@g!^;*8aT@PCzxTb`c|x@z;8lHi*)n(v~|yt)iudol1F zO6Y+?uz5a@aVIDy&sXyqb!XM^`cuL*UABYL3mMzr_y$H#+rMY;wr*u~(nbzG1zR)b zMYyz@g?}Gv|I=lmu_w~`z=nlIv54_Zm#1xjHl)m|=w82HThRUI+NSR+h?d{g{LWaI zzx3jVB!j%%6x|mlRGBVv#I0vKJr8V;d-A-fHw-FfF!>?{BF-|i;Vj4dR2S{nZBd&+ zWbXc>fl&drSHug2v$&l&(`tjLq7b(-W93zHuQF2DkY)rxDUzk(P)FPZ8IO#!P9ynF z*%=bUN9u{ffbg1P(3e~)Kft}yKPh+)W+xwH1@SKs%}p2Gj8V#-u<#^fvYADo+O zmV_Tc?e6C9+(tIRd;NAKEr1h(kqfp~E7q{v7SXdSL@QfahaQ_%uen+*_W)*WT% ziW0azkg*8?0NH--4u%%sNNFD=N2EhLj~n)_^8*vD1yBJLe0ICS)h;j%>9CU0QC^sv=VKPVjS3 z0zbW+l5R`}*7N4=xz35WO~Brl_yPTW z_3i$iX`<+v%hntlV-wu*TuLT61yq?bDO9;G?2~I+M?tOa=~EM+{sEcZQIrVlteyP) zUK5hF&$n{-LzeQ-5$Uw}MW;Ntob{FG=W88ydkQn^K7<}L&6Ce<>CPU%`!(ALqMUz_(ojTDH}Jv_7qa((-w?8X-BWe$Sw%p;Sg( z4*^DF{Vbc0cLHD9&sW|;O+wmMuyh;_Vs1%6a}sGcT>Bof<^xt6T>bD2!4nAPn}>h4!^t>`bM=-asYWJ2Zda5~F4kA5QU#_^Otg{n->KR)|EGAx z1lMOSi+AAwKkLI^^n!$}??_Ifs})Teh=9WXVSH`QM2Tel2p;pW(aAEu;y1ZH!lVJ^ z@K58_)pB(FbzPTw#-QX&QMy|xwz5%`y^1wHi;Lb#;4KpB0@PN#WcSydQqy$Tha!!C zM{|#&i-|q^93NNSSzg)L-5#5(xv#)OZPdFI+lX?0)v;Lc;@(z2pcT_=&$8dIEd2f; zPAvh>SKju`(9uU;UWoj1eoO)SrwS^i5CTx_=g-~@pntnHxXT+z*VuKbSn^HTnOxfUhw;&Cby|B<)fR*%_OZX#jSQ4?Tw zL^TwuYQXz6km~&5dt%iz07~9hlmraCOUxh_UcE}GgP(5an*oUQbQMcP0V$JZR54ms zuh}?wdHT$BImfe2=EFhjNjvKb(}}btGat|8ns!vbQAhCnf~hnBSz$q*GIsEBfTGcc z(@OGc8UwHdra%TT6}MeQ>t^DQA#yoQnUREWnnK#92wU#+lY1o1Y1(G*pYK^5lAOe^ zlzR%vnWk$jxEgjf<1Ss^tqSeY`o)8cpnFHmWa`U^Q*#fydNPuhr#I|eVx zlt-vFT1i=JceLxHE=cC+ui}thXy=73qJI&z!w`b|iJ`^YL9Ov6nC;Zos~^gaKKFee z;*?d^7e3>m9N$muJk4AMT2LbFJTerfnFEt}lvz!7e}++w*_MQ(vZK&f28{E}y90f3!$JTd)ErArmVVJbg|Tj`kOX z?OQ>1kW>h4uwKAt(ok4@iqcfoPCG8GF4#aDLx0AI3_%5^j?GRpy_3gs6{cTK$uB$f zLMw*+ynPtwQGv>eS}>&cS3Qs_%5Ee8p@vFQDD!ZEf57(-T#Dr9>zS_`HzpkDnB_}w`lQ=9%fk+ zfdc@aIM}0T^Vw9gczHMkO1ICgbd-+=E85DrukV7s48R$idF(}1JF==`0`zwJ_XB?3 z{Y3IWgiLTM7!@}DzA1J;rr*E}7T6!eUFrRwm=#0J-r`l zp{R$&1)YTUkm1|E(yT^LgqEEp~KXvhw_={J3GCGyFYS$%MmCnLD-Y`UpkihPBD#J$x7Uu> z4bFO-EtVzWkym~+%F^n(s)zOmI!3(PfkE%a5q_t~oL)?Z=!#~%l%?5cH>aZd4O@(& ztVAy$pR=p;P@|XEb&zNI{h&HJD5Af}JUuudNS%IR-_WofJOw&j>RdX?NF?8z(F(Kz zHuwv{i40X(sA~eyk8NN?FscC}^;&6;$6IK{K~CkuSKJz2e%fl?zX7%&yzpSf*?7!| zG#>+l)7M?vsD?n($#lM1I0ul~UYRxj%%W+bkTgj}%@}P@%h`zlnj8CVHZA3;tw^7H zPJ6C+kb=1o+&&oTnKZB0>>Ya8eeI5)?BY#>LZ4r0eM4by<&)v5mi>weOZAOy8j@;z z1qLf5{btQ}qI*N^x44{=U1_|tu5TnEtSs)sEx56SIYY0cOXHd_a9Qif^%AeCo~7}K@A=sOsIV%Fw@m@Oa7fD%}(#a6BB+(nu+bf39HmQydST5x42 zD7r7x4B}6dV}IvQM|7~#hX2N&I(rfAma)!}Q#)^+H*!Ep;Fd=(BEb5~O{l{#T%#L( zYr(#5pQZFtv!nLrUBvOiITH$)9>)&l-Gr zsuJdP6hMHV}6-L(lF91aFx%hlYf|#Xkk%|Cs(aBGh@>`1g7LQr7s483YOv)^-IPFZt}U-1MFzmzB}VY!>Wd_TJ5` z#BuOp5!IE>YmLhtJoyS2u22@Zl20o!stmjD>gF@2GN=OBwOd+b864+%D;EnG$9@v? zPrt}SM@Uv3+BV)88$y7{!npH`HLOK)CH_>hrku=R9`v`BIyX7Ro5%-IbcYu>y#-#! zTIc9y*N3g*tLDAI4Q3BYyy{EQxc*UVXyf;v$pOUdvjh999r`#7Ql48KKe-_1j4Peh zESMYavJZIdfR?hD-DnEBmn7B@AY)*6lJ4bz^s3!0s`0Mc_5U54SpF+E zL7e6X71CE;5o!DjFd6<|)p+maRRP5OJ?=@hy|5!uBhgfRyOX=&l$2q_OP}0-W*zam zsFwa>rZNX{mLD5*C(+o=&g0X+J_=YKQ&W`jT5Xv+F%jYzY|XfAluIEw5>Whzhw%M} z-wfu%M@EeEwznYtkf$6g3YL(MxqrFdyr-%lK9x>XeQbJcN)gRB5zW_LGGdc_A+kM! z47>X6O-7QCU1OMs52z_(@pJ%o4BHp)$k zcOjc&;s$Oo^c=k3){&h1m8E()O2*1;bmSu+WQ0gAK}i54Xb(vMXyus`IAYD-ohUG4 zFMJ^y3<}w}vR|v`c$}f%jJsbeEs#H~Yg$NRXOw$k#m9^$G;rZ0<_M51Y^Q75uXpmy zlx4Xwbn~K(>dfS~$N`V=cIflT^9)VLK5)6Abg|1cgsaM2eY zm$VAL0j<%r{{tzU`8)T*Oc9q%imOVZ~ zpneI_|L24PUw6;z{#L1Lnt>9&-8^+$G|8<%s`hb3Iu(%_dNL4P+HiJVQ1`fDWx{zd z7SG6$9v_quYY807ZhU7)-u)Q~rJdaG=DgeHB%Cuvy;k3{=v&2vqWr2pz-#KfK|P$^2sK6C(5T5E-N zXfPJJ+2uL3k4A2GQX%FCa4hokKgmgc#$OQvj~{Qur%GSo7zrmA(FKy8#tM9*f+1* zQN0=^xi=3v*2T7J-PnY)^{#t-fcVI!OyqS<8p*j&v54I0h()4lPeu?Ncvz=fF}kR{ z?*8^JAH#~>QsfNI&D|#g^#~)b2;#1y9j62}iLIF`lL$cQVY~!RMQz~_;ar@{o!#~t<0N} zxcHeIUmq(Qo9PtZCAN206l{#%c4pc`N1zjfQCSP~&jvTD0U70to?d_s23{Z^srV!Ra}ox^TNtkm)20U5dub3jzZ zf6vwEqYl%BZ0|fx5CwyEr{*`-T7t5BH)TPb&n=aLeVX2% z_}JqRAW4J4^svDKQeX-!7~38lH=&Z$RhPlLc5T6$IBVzXRyd9^>DIj*dudrRizZZ+ zJP#&6w|%!=!ta8`hW15~5c&OCeeDG1F&_Cio@byF+m-x*&;~+uZ4DfB1Zb_Z2jQR-o5JtpthnWdwl9ntitOIBgUrvU-Ej?G*-sn zZn?CUAgv^?DrprAZ$9F1CIU$nySds;i@LlTe0Qn&QJuiY=DI|qxr@dpK?ec1fCb$( zf?zZ^3i#T4TQHmQyg*>=y#6+9mD>pTApz%N<)i!0oFtvjUr|_8$CDo?F7-^jU^WhB#r#T`pxZFR+IC&>)j#JY&BjL+IIlcijn(JB(Nm6`|-G;)<@qGqql9Vo@n zMn>JeNv=snuTAQFG4em*l?c|u8bb#qA}f;ghJ35J|LrL^gTi@K0IT8aEm`jV%szf@ zPK*F(O(1sv(N(DnrH^o(@CnxeZsag|Hp?uP9mzaw9cAOk_edgeA!(v`-LE?XGT<|Y)+TYFq9U%K}dyoHf zGbH^#?Iu81{KxJ{f3I=qI}ZfaPITg+`r;2zkb=}ZZC?brZgS?Bzn$!k>0pZT3xbLL z!!YQ*4=(NN$q+I^kv#+|kkE(8SsBtl@x%7OkD-RvB13=#5hGtPJV_>DCaiBLq<^+T zcSIuvd=P|hqJd-~gO*NX1r@f_9^f(H%gc$8J5kqo8KmW$GFnUL zq;VWa78#4otMwBjBU3}*NaTsVKv8KQBdT)|r`(N2Y{-+(cCfGT zyhAgI@PJ#o3a{9khL3hYK-blO$8^+5v=*aNr;vn-p%WCy{Y{7jMPGT9gmu|AiP5_4 zpv#`4Il~rNekk;|yZ}i$Z>FbNI;*0B^Q`wD*A23s5TYdI30I@Y@|cwpS0j`J5;8Eh zbrl|Ldj3UW^j;CSjrV`hz6ttZfy*5%Mm}jadvtKEa~1`vgt9Ju#>J`M z<-Jf65codvvE?A~9EqyJM(Ma6O{!ZDUlCNM_!zV7EB?9s^O!TBwuSiK$yrCAMbN>` znEiCTwWT34j_Lmdp&vE=k5#|W3&D@LeA|thjE5`c&$17kd2OUST3{+e!D%f_PDHjM zg{T>rIy{Y|wNs@G^-TM2m9-w)jDcCQVHSo#nedPJx3>Q8@$buk`G1n$^gNIHTd`e# z7n1&Ov%cTEC#;ah;PKI^%PFW`2G89CH{ViZd$&I>yNxOEl@hk`z4Bq~+EL?2`c+|i zuSSE9QD?!lnM56N65E$RCU2t+=5GK1ri_G$kdpc)6%@etKNKJQve|T7f(8h6|JE}f zk@{0pKt3(JN*@x649cCwta(#oB=cubYb(zMJT}ifH0-Cw39g?}FK_1}vODxPK7>n4 zhrn*`&3!R=hPol=9x&S9G1q;r-_MDyVb1lBY@)c=HsBXVmu-8H+{~BsCf@-o-hkKK z4mIyFRmB0n^cZvg4exJwGXdSgSmstW`X)~(;j}k$+biI19wYAo;Z?q3&9g!vWgS0N zZ@cPnY5Q6x;1#|Esjs{yab%UWmh@E_b!WiZk-gKs!2Kpxik0Fo%}FLJaUAD;_=B;r zPd+H7ZtVyJ>vDUa6rv3hj%8^&>O2eo{yVQk(mfg+6sc0RWWlH9d@~CRrL*j= z#5U^V*BvB3e>ok?wa5K{`jG}=5z3Jv)BTbGnvk>jZ~B^M6;Z1tf1)1(lU>yZgv1mM zA0H*Yb-M#d{kg+!r6Wd8b&-XSG!eDy<_?S^#uMO`CI~M`@`Koig=xUODy2lL8c_4~ zGUtZvH5$b8%x!9@ANHby{tRPVysh@@+$5bpg<_S_$7#1&q=F6b0BOq$_xIMF$_h); z(YVH-9l4)9EtY>mgu;V0%WKdW?PKxmPu$;WtvF5%)!7a+HKMU2WwsPBxgM9&+BJ&5 zSJO(XSg~esCo5sMU7vTIK&Q328(Y46dxb`7y@c#&R{pjO?i1&68T`h=wi^Ush7m_Y zI}~o~3onc}&M4`lC$V7yc_na8)tqcy`fH=R;*xBF_F1cdak4IcCPQ$h`&-sB-u!{Ck)%9B$5@AA=cOJ{CJrC$Sz28JL4MT z(yrDP?gw$+gBA~ONx!q64E-Z2(>(wkm{eciY92<{0g=NwMk!d!WGj*Z4{g zQyahl^g%!y^oDn`e-*^Q08RB=62q4#3*~!WHQQ(zGrHEg1yj1{9&0dSx~>KEB}{X+ z?T;U?Lq9qlM!l>qXv5}W*4u)Kxb7#+j}0!uqRXQQkwOEsoGla;X`dG+u_O+CQoi3- zqSBHl;q!RtnZ}PV2k1Gx<T>ZDM6v*KU139gV7~U=ntvcmdFx7wI>U!wu zreZqZZLxKV*{tWH@gV=uh39uj6fW70&yK}aeXGw!`=`2fF8mL5OP3zCs`OeaMMz1g z&ZT2ZPnEYRrHAlkke3{cSn^w1c8_FpW|s^8QuOa8N`C`SQh~E&w!#GHBO9Ss_2muwKKpsK#fk-can#`F$`X4v*$uq6+DS`soXn)Vl@n^VJ7sI}!$7 zf>*klnAK-xtjXMZ)!S#O)L-d!m&a7yE?L+|Of!p;W0R)H8FQsRxkMJe&^(b2BgTXJ zci>J{V=7WJwzo5O4vkkDIk$6pev#9bGiubIE8uTw(ogX7uSnQ$MQM%Hc5^~@vjy!I zn0g9e2!X@)yNDn+g8!r^cirW98pKha={-?KYxVfVKmn4R)LJ>V1S%dc-WV4A6j7W` znYODQJ$D@zW)l&1DVp^*u%}V9C1%LXSDwBPE+d&x+9_?;02bAGNa@}6n^N!2(uSY58aJ6r#cGx;gte^eq0 zVTe|X;=d(P0y_G6n#2N#MXBFQS{AVylugzrW32RO+G&^p4XgxVf z$A-dzAlAqU&6bM>X5B?wv?Ux!MIpT{_(d0P%~L^H8x=dq+2?>tL5eK|v|ItB&*f{h7S&;B`0c08BN|Y~(m0mMATvf|a6%gV4K5`2s!snZ^vt$x2JcZc$&YPHc1Xc99^9!KoKy?QqB(TOy`MDZ zXdLh@+@)KpuE}&F0RY056>n3`sYbTxPZx@kf)|5*M#5(v*z0k}#^zII$yp^w;PO^K zPT2IyOU{&DTLW)o&)V%}x3_i|+rm`9K5#+#?W7VZIwj5f@8C}|)ocI4jMf_J$`c!L z(ihtFIEkJ~et(I7zMjblQ^dqwDN}Eaz{F7Ry3d_C!&~Xp)*YKZkxb@Ni?L(8VLM^t zm~?f<`sA79`dAX{!t!q1o*bV|oAw^!F5PU_x>NC8*NoG%LX?XA0n9Sp9B_XD6*k%5!^Kk7+tsz*VZ4`(XPe==0B zTf*mZvG)EfYRVCpUn{x~nbn^5tE3utFiFEG>PEAvc$Sflp1-?j?&_Dysx~%df!msZ zta5&VN0jnk5P-Bj|Kz0pfl@x}RIsX2MWRfNCZNFH^|#MI7oO8A5!Ng`pMEm6vS0i6 z{_!olO6n&(*nBQgYqVQoF1;=d1oPF&@b2HORa(pYuj0|2nP&)rw<|<0>)z8;^6?-n zb`k{X%jnWKgXe|g(gsfcY|rD>{s0Sho9i@tI}`h5XMm}Uspa;aTw9y+Bh%;2xv@_5 z%9bbW!fbbZhO0$TR)oZ^q4s)T^ucWC=~zM(SP0}2wR+?;&-1S?ME#{0YDEL-3>Jdj zOEFj_0i{I>d!vhSKbvj5J#g<1_wjzY z_sd!5p8emyeRgH)@aK~W5<;PtnkzJ}i0GbvpU@-gs5E24#aeS2$lBZMa;Tf*&|0E6 z3Aiod^>R`W(rb?$xShzib+_EQ%Ul@LitwXm7K3pJ=mi>k!^cZxheKImlpTeRN;u3i z<~2kFsF9QA6sdHx?-q`dP+ZxGJ&D0uIG=31h z7`XAcq_^>tlz{+pOtTq}pFNfnzILkDvr2QIR?**uq=FchtZPL}N%OZuJL@rqRVsxW z4H#GEh_HeKkmP$$#>T#@vh7VHoYhP zA0mHgNw{hE?DR9GRM)EQA1a*L+@S0Z3eNY}Ihv$XZIVCz1kB12QZk-RC_j$W7hnkC zS3!;nfZn#{%tulw#Vvyn<_op$gPv3XbuP|%#KFx@+B~$i81KJ4=g|x|i4KXwzMr z+u>WWEP$Hd?RN2D*G>Oq$#PcDu;X{3As-8vOW3jZj)VIl$O~MTPbbZ%FzrxY_Z(=+{CS7;rR8ey14!kNyK7HL)7OJrPji zzH)B?=ZLVjSZLvW5g_KrY6c1bz~fxBr%HOueOOfoc}JmaY%~G!M(Jg1wfcLU#K=>) zB41~7)Jvt22pVX2dXs8FCLBp{*&WHM(_|ExcUGE`U8%qZRhFb0B9Czgw+*!IsxCgG zOWYwQZW#I4$!PvX25RlI#gj0hhBo|o4jzVD>EE|k@qQ~2Bv~45lY8O2a3*dU5JNuB~5W!0$sp;SX5QMz6 zTGk)dbngcEG`#A59b6l{P40cbh@QGxsP~|0F)l&htly5u*J~_Qfj9ohloUI#?!y1a zKS-TWumf_M%b12)Lc9c)eLjFyl1`L7OEmHEd%33anYKsdJ+nB&oLfc>(=;1gOSAX; z$Sz3#AjtiHltVV3?PlbF_dx6ykH)f&Q=&LW@rvIPeaI>xcF~nZ2y8&__?r_1XQqRx z-`Q&<34)sT#+}N#%2Q-sNZS`aXEGQNVT{1DG4uJa{R7@nZb*|9+D5I-2xFAL=HMA! z8UCMm>d*-T)JpD%jlI_&h<}H`VT1xYcbO$A_!dWj?fTolT|p z?oH`igrjIItg#18y|SnoK8vGxIfd%DVRDsv-b+{}(n!X7DRdi=uX*7pr^V>IYYdL& zF=wQuvliSdvaGPRM6kqJuSE`J{BIfxneR?{gV1RkFm8YHBzb6LJsI z(d;}EgYRHUV}LIDPSskSN&vogGW*b>6}Grx>Of3A)?6{4Q-b$e)MioDv?#;)D6A*E zGNrKY4tmCO(|fih;7wW6iR6Ki?{85Z+^Gdu5&7NlXEeO#jBFvDb$JuXTLVtG46MG4 zsdrBO6e%MB7t7!BeJQ$e`IIhqI)!HEO-2t(*ZnIk*8bH4Q_)VJWVi6u&YRTG{l>8k zE;wD)m&z}!VQVxTj!F`pthUgyDbKtP5^9X0`a8_ni=JRs5M9wpiR@~UzUQ;d0ZlU@cRxS)RDzp%Q=2 zcGv}dhw0v(<@#~CV@lc3M1QrfvSLZLvD$6DTl|N%?m=AI4wGc>-y8_{WyKe{XM*~> z*$U3A305YAU%zxZLT_@S5JSIOrgzg5dB{7zG@b*-mbVl6def8vHI{$NeJub0rI=)) z&pUD)RBYLVgHVTjMiD1ew>Z(IIZ7%sCu^Ulpo#a`X}{T-gb^_)pChy&5J1Y5X$ zJ_dw$06?JC+ uDpSi(S14~9qwr=xNP1`p#Ty5hKB|7Rx&W>~hx<{U0PQ<^kmB2q!u|w5+{cLk literal 0 HcmV?d00001 diff --git a/post-checkout b/post-checkout new file mode 100755 index 0000000..4928daa --- /dev/null +++ b/post-checkout @@ -0,0 +1,53 @@ +#!/bin/bash + +#checkout hook to locally set user name and email based on user defined patterns +#The patterns are matched against the clone url. +# +#Based on http://www.dvratil.cz/2015/12/git-trick-628-automatically-set-commit-author-based-on-repo-url/ + +function warn { + echo -e "\n$1 Email and author not initialized in local config!" +} + +email="$(git config --local user.email)" +name="$(git config --local user.name)" + +if [[ $1 != "0000000000000000000000000000000000000000" || -n $email || -n $name ]]; then + exit 0 +fi + +#get remote name: +# only one: take it +# more: take "origin", or fail +remote="$([[ $(git remote | wc -l) -eq 1 ]] && git remote || git remote | grep "^origin$")" + +if [[ -z $remote ]]; then + warn "Failed to detect remote." + exit 0 +fi + +url="$(git config --local remote.${remote}.url)" + +if [[ ! -f ~/.git-clone-init ]]; then +cat << INPUT > ~/.git-clone-init +#!/bin/bash + +case "\$url" in + *@github.com:* ) email=""; name="";; + *//github.com/* ) email=""; name="";; +esac +INPUT + warn "\nMissing file ~/.git-clone-init. Template created..." + exit 0 +fi +. ~/.git-clone-init + +if [[ -z $name || -z $email ]]; then + warn "Failed to detect identity using ~/.git-clone-init." + exit 0 +fi + +git config --local user.email "$email" +git config --local user.name "$name" + +echo -e "\nIdentity set to $name <$email>"