# HG changeset patch # User neko259 # Date 2015-08-31 10:06:58 # Node ID f6b7deb919e6a360d6c67d1b3d8f511ef0c42772 # Parent 96250c6dea772062e6d7cec330d50b4e35199ac8 Added images for different file formats diff --git a/boards/models/attachment/viewers.py b/boards/models/attachment/viewers.py --- a/boards/models/attachment/viewers.py +++ b/boards/models/attachment/viewers.py @@ -13,6 +13,12 @@ FILE_TYPES_AUDIO = ( 'mp3', ) +PLAIN_FILE_FORMATS = { + 'pdf': 'pdf', + 'djvu': 'djvu', + 'txt': 'txt', +} + def get_viewers(): return AbstractViewer.__subclasses__() @@ -35,9 +41,15 @@ class AbstractViewer: self.file_type, filesizeformat(self.file.size)) def get_format_view(self): + if self.file_type in PLAIN_FILE_FORMATS: + image = 'images/fileformats/{}.png'.format( + PLAIN_FILE_FORMATS[self.file_type]) + else: + image = FILE_STUB_IMAGE + return ''\ ''\ - ''.format(self.file.url, static(FILE_STUB_IMAGE)) + ''.format(self.file.url, static(image)) class VideoViewer(AbstractViewer): diff --git a/boards/static/images/fileformats/djvu.png b/boards/static/images/fileformats/djvu.png new file mode 100644 index 0000000000000000000000000000000000000000..d42604cf291024bd7450f27b780787fe0a781d0c GIT binary patch literal 8314 zc$@)xAcfzFP) zFFwp=Z!(O5{vtsJ3^WGD90c1JV`ZP#fMFfH)_84WcfA@|((Lq1&vcV)vPsr6Gvf0h zo>?q5$>yUvv*OoaS5;P4Mr7vqi|-kcgoF#>hYu0_K0+_i^M7u(W zKWFBD|DzxM=;uVlv+mbrL9^~a74Y%LA3uKf?Aa&XZnyR5(W6;+r>gi=O8Mg-{_uyt zoOMSogG7*X@Z`yp$9sEwpY;3v*4EY*5<%V^%sdA0C-1-i{=b`bUoHwU>kholh{-YQ zzSIHC++^l|`-@-v;vdYqFBe53$QelFxIQp5wASupO9=6^pa1;la+ZC%C=x-Y;G>T| zdM}aV>L4O8Gnh~L=HKsjyZ>YcUAi<9K_>9z$&<$~UcC5KBFELCwVp-}000sF@hx}f zjgZZ{18)5oM$@BBkD>HV2(9N z(j3==I+FvKQ-UONTo39_4qy&VtVE9M!9^lfb--K^V-xEp$Z=i) zULA2$^O7}Sa&i5%C1M2>*k_#n4Mj=Bp@B1aju z&>%^3TpdJ|$T0<#C&-g0PaY?7Tpjb61iT0;O_1B3CfjP&kAq2bydIS$$SlmNrKP3Y zYUu@zLbuz!t>$hVuIO-9fd>yBU~8*Bj|53R$K_B7g50*x(P%WV zwzh_yogFk9joJuQBFE)X34*lS?SFmu?%f+FN0w!1G#Y5P+c(|Rts|LLZ-z<`q|@o> zs?1@28==iAp)?375yb%^|;TR6>I!)8NgJG{@DEG)PS`kFy_d0*N3s#H_RA zbwVOY4Ux!keW-*Fl5lYpMKS9x)C!d#NE!_~0u=$Y!PZV!ndS3sE* zG-X>Eju`Pimn91`C#U=tQ9FW67o5uo;pyK`6XMVg+4l@EN1p)(gW|TyZ8yg>Pi&gr z=CpQWa$J@mRk8WsHdKNj7ZHZZ(cB9uvlUT0dY>VTW)DJ1SglZ*m+8b~j-p7GAX>-! z#@fOk5=>NX&$mVXckZ}uTTv8|X?0o~P3|Aw^OdyLO`s|ouo47050j%gvj%|-8Q6^D zvCYmrMW;k0@Pf>2-f$4&Sh$!ue8+&+@Y=+@#KO=1w}MRHh!}wnXSKy%bC`1o#4zM9 z4+h~}+~K%%tc1&<76dUM#HNRFWZ9cAZ1V+S;F=VcAVfq25!BflYBAegg|Ok3vo ztQ|3@wE<`VB!oXEfdB%C0&~fp0|^1G135~>&Rb=4do$E4bRe2cK4C8p4`8 zTHEZh1~hAEWi^Q-isnEj2MTt%5Z0|GSYlX$2yI4xAx@bq%sPzbn!OJagf{G7_76-$ z#$k8uxyLP=?L|=p?FI7Zpfy7)ZHUPznUIbk?iFl~=Sh;3$AwWDg1ipFtP12%N<(Q4 zU1(1lt#r^h69Q$d9P{dg%Mil|uav@kW^IMpsuDsVhhh{5&+*BBdx2xc-q&Huu>JSm z#do$OCW*pet3m82FND!jnxVC_TE+PtMq4Ol2LQ$9997UFL=iy*K?(vg=}kf*07jYM zS3%uPwOSCw_!!o#(hQ~85JYLH!u*--A>yPp2a}2rv_`B+EJ1`Y;aC!8F*zX(QDA=$ z23Rq4Y}#4*(~cyHy&%W^1^`V0uq4!^Af+%_a$;ne1QYv^u+fHqDijK3$YHdk_P&K9 zw2%Uj0)T?dBpAm32_!jNz%P=|nHFiQ8!AnZV7}OB51f!1G7P``9KZVH7$fI2`=GGo%z?$zT>HOe?&1VSNvHlgH;bm~6icahWxa zfBhN$^0RU11u+1DmG6EFf9Kscib8=|A!}sNnyo)!kFPYeW)znEMLxjO|MFM(Ur!6T z@BtA(vW;)Q{~o@7F9To*$SfcsOpt)0C|7hPV7G69hn{5sda= zXPXxcT?CUW_$lFc{)Q5Ryv8Xo9t?4`cZ_GB60*fbY<+VR5AL?nZc0c^5SA>&c z5YX`HKn}00HMBCsX>E0|@N^$1d7PV2IQi-rhdTmoXvl^DNZDu>MH&Ps3P%o&;`j(( z?iNtm8BQ8RgluI6+sl9|v^62!AfX_ov;l|7e2FD^bZsX|;{7G^f%IC3kSjqDt@UfO z*{qHJ(AwDK%4(288K<400d3439|i*XgowG-ap=~L#LOsqJv{rXK3;sjjCa0w2X|L9 z$jp#YNa1rDh6@bpY~Z~=TC+g{CzJq)ptR`+78bFx_!38l&d@O=>hB%m^A}BgYb~?p zp7|3j?1OIXITi{ zJm|DR#1NtZEexSukCft|LB=Dz{Ne;d8zeBwi~+fbt(`VdXecZH%nZ&11RG*AyKr{U z2=IN;Hezl=k8LSiUcu&~hEnj+2NyVylDt1f zHl%HmmeD!Kgw|ZrATD^pLI4mTFo#;dOGMpg$VMx zM4@vgZ8F;@1~sgS<^E$ERbs$ok8F4YAHBGpUNNJnTF(#EEhJsd> z{No{>@8(bw$IjMPu(|-R3C!=qXVxa7rnK>6v@%Y=ws{(DwU#P^2653rmx$GcO-@D? z3Ux(o2;vZD)yr8q_9+t~2qY~*q#;Gt5Xc%CWJ4OlWEn)3Vd3ruwpTKD1mA`p53#p5 zLg9qiE)=c&XwGrVQD3Y%!oWZgwl`$Sa%X6a_K$EdGyRbkl?~iYl0>`X`NXOrq9cj6kvL!4qBXQq_BYyZE1R+PLhT4r0wD;Wi$=m_ z$gTEh2xJXu|IBBZNuP-pjTYALIV}>AL~9K8M;Ljh*^q;68Aw@cI1|PGF9_rD7=Xaq z!)3H()K4bxu#e~a`6*I3=UlVG@mD7p6ey947M8HJkwFlwPvKU0H%1bJp`Bi1hSEWE zaHJ_50hA|M$RU~Eg?y7Qak<_*_tu~iKFC>FT3=os{VQe6OV*7El)7-FkT#Aljjb;- z>w_3K8-TIP6#?1u5|*0B7>`_ACSId@0}RGXXf)un%G%~zTo)WEOdXXG+I(0*DGeb6 zvb7a#EFR#C6ZjvIDscF0fYDBdW&sFYE;Ui(0rsDdpb!L;Kxl8SV6|-QJYk~Y5)P3{U^2#LQ^Rj`{kV+j~< zb5T4UX%hEcDEO?a{+I)Tc(bNda&A77h=fVN)M5$YD|m$zCj2WUT1_e)(HZqc5hh}> z6(%o)(SD9Jqv63b-lmhWblg?5t;{ z0?SY_Y;z<`K_gfJXYFF)E<|p%uq8LeS|s|NRYzV^CLg2*@Z-PpMVvx$6QV?LTFB1( zFxg`PDI;RIqcNjU>_=WV3d3nE2H1sq85j*m=9iY7LK;G5tE;%vmHuWh2&{4(d_Ba- z*Ig+?kbH>!uSbT6fT<%R!qUzPmRrtjv`IjBvIzZh@10lViLLc1?ZF(**8Mu-P}x7J zDdvhGSHYPgK;b3KM<;|i7v`6}!PpiK!jJOOnnN;cW9z{Jq#&C*F~94-IKs&&3cD5> z#mNcwj*5t;1j^dD^Pr8U6s8=X%tS9&%J25{0u5L#q0ba>w_i*IE0^34eKY_bJiz4>>m|DdlU+T-6Qn!*rZ`(-DPaAWWE#xc5b`P37&Z+ zTvF9d574fn*+#Wo{n{iZ=fR(Mf6lyb6+k5jauu*QErRg*oPZ;TE8(!UPQm1`q)`R> zLp|Y&5+E{UnJLk51+C6>bI_V`u-60GIT>zL7Xm(tCZ&K}TE_NT24M|BW&*1*_Fs&U zE0ZKF@)2HsJw(otCqxpR2g~R*s8k9ftS^PgSr6oMZjm(uUD(#XdXv#b1zlU$es|t} z)SDpQ_9NGRM)JTrCGgfC5oxv=>G~w92_Yxv;+n<7qD};h0Go=%cME3 z_d}@E?`W9tq|gyL!e=+QAUNuCh52IErufZaz3PZBfY0}I=$SZRm7O|Inxulh!tjb9z(WXz=< z8f&Y#(=lZ5^X8)vwl8IOz7pG#8DGlcl7+4;McZu(MG^Tdk%K=^s6?U=m>xz9WhGH~ z(%(p9W4jzO+=L<`>r*HYgb(frrF}^`7$|HBh938^`)r6Jgs8v(gpgQTZ$b(xjmU1V z;V8$e!xO8wVj&BEet8~SSxfCD>}+Ouev+I1YXis1w z$Y5T%@^}G2Ig`&e9p_|NYm9S+qTw>`_3~hAE`a8|d6>KcVj=4*2nu$@4c&!C#FHI0~ z=p2W8V-&uw%GG26x)@{si(}+E3^viYbLu+RnJkqtu`Ytx7Z5(l2gFG-XY9Cz*8l-# z1t#J5CkS_H$2RrY7a19OGdQcvrpbd-&IAZiciq zP+BqM!VDMZ~`D3*m&4MOPbG;gfM%o5kN0Ym5e? zbNtw_c9k>9%v!xR@%DL;?H4R^kB#4M@nODn({#c?06$dM+Dl5wJgN^b~63~IKq z^Sy2CtQg8fc^Aho?S8KR!k!NS zOFJuAX^}0<4=X?lTlFg?fwc`Kw>!AM)5PBIhEQM#4im|E*vD6Y-N#q)g(X7!-UfEY zFYue8IUl2u8GtrE7=`~SE1SCQwahBORD(yCQ9xkF0 zX@wBFB~YV{?RPq8H_R+ZVM*fWut8|jrc}JFYB2T8DkaV=mEARb`}ew7 zYKgF~a92ixtV!qUy@U|wXwB-P5*p+@IOXEX)7dVHCM9`o0+5-nz~*}grwG`YW`4W* zLbTf0cxMw2@7aapq!TbRwy7Is z@q0hm!sY_wsGUIyWtKigRNQH!WiHoJPCwQQH6Vx)20;XER-yq(f?)DDkrV*o9yS9| zNokPvP3-&(DbZNSu(-U0_3b6Bt~Aihq)o)xN?8i-cdj(@aSs1DHIB`qvf#Mrlh1B@ z8=gQ+fL)M|8xmMu#e>b~IQ%LPITQi}NvyoHhV_LEji&Stx+jMlETkz{knc)h*Kehvnhjm<~`EEvsu_wo0)cEW-LKEYLr>cd5xT$IW=(T)sG6Gk%SfuEh((P!KXvDWq0ql5TVG6Qoh5HhB>$&o_HdT z{DfC$su7Vbe01kyh+yiY!b}k%OrFEkTume$qmf)|4Iv56&2-1qitI}GIvjUWuuGA^ z5UFxyG48PnZbDg|Q4@kh)fa;N^i?7OO$;p7gM|sby4out*q3k13kyX^GCrKVt+$Q?ErRNnzi|xLq?4i8477L1u@uRyB#gH}M!- zioviUTG%BJxC!$7iRP5CC zux25fYGGlI8Du_au5cY94RmI^p=v=)ZM#0G1wnjNX;LVx)SFTBv@lHK)XkpIS^@&2 zVjO%21mD{cQd%3IZ0?|W=MEk}?)n^xly2n|+aCb&0;$eiiTgi!uI2YpW`3f-lh?#G zNC>7CMgLE<#g48<_!S;sSkBR=Dh1Uz`G{Ri$xbc~v-R@&-2o=$ely&@)bm6qfX?bKTb=yIUgG47hE;}E-Pk6hL2yzb0!Vb!Rb|arlARCgH(w1qF zV?(A;`RZ~lE!bYFe z9$~UmczRUX*^a`q5nNc<))PmOs`>Lh9IA5Ol_AJ1kmq^n^XVLf`<%2uT~Y5+%qyTM zit~3$s67%vreM;vN|;|Hf=qy!llDmPsDux4)~Y5qfubl%3BiQ**wRGQ3rR2{D) zyeqskCH!Zf_jo+U;^N|s^sg$3!lXe^KXL%)3*bcrv?@Y;lbCygxMvY2BuvBH6QpjA zdBXLg5m|KG6c|P}}W5W5EOM=ub=aF!8m^*@` zV#I{Ypb}2{b(%tTcFbd(=YYr0m_KX3%Rc+Oj+iSAlC(#{Wl;$Ya$QK|xEz#HrMj() zf{3uVxCklb`8&Vmm>YtmS%Q~`)*7SH=#73m8jY~NzV6o`t|}@)5Uur!*Tqk=p8l8EKUzcdC%3Sx#5ahB*Vcn}kN_p;-+wpjOOTC#5 zYHMO8(<jK|{?xw-%@QqXvn>v&!vWED_54U&?A20{ol z8jY#nRXw|Xo2Y~axeSu;5zy&$FdB_Y!HO))5^fquVVGCQ*@!_v}HX|Bdu4s)L8*x%oOK(} zHzLS4b==!VCC-3|riNXT_IN#7trnWiW@#YFvg}mIyxZ-TmSc6_zv@#xCkmikPkliKq;ku0$>az-=pFf5z&Vq zeDFafl2?@=2mt)}$3OlvX8u=2QH+!Js4Paz{3joN_~Cz_bw@6WYAh`g;b%Yl*$0_4GPf*6St$+8hZQVd%V6p0e=x82#DneM7QbXWDM z>gw5^-I*O#O?||0XS%DaPEDWhT=FFKB^OnU2NGbb_u{)ge z|B_Pv!)vd-_6}oA&RecY!R9T154dsT#^swgZ@$02zTUlb>C(K#@fE*GlH`q7Uw!rG z^A=wiCQS=xfnTY#@KC^_aW zO9+rsE=ei>?%j9aeP!OVv_&LH10p%52Pq|l5b9%>bN==_@4S=DQ>M0v1aaW{_3JN0 za_k?BF-R#PWi2=VgZ1_G@6SP`i4h56;o7xpmv7&`{az%;{vm{Lkplq082jM?i?b)B z^A_OiglpHXUA}YY&imWj+mRgmfbtqmP{;X?PCC{8%TuFd8=sETe z##khW1Ktzl+O=z!BRTeuMVtg|1Fs2k(A#9Y-S9XVJ;!)>OOSblRjaG32i4SpA$pGS z@G?oCM_ASEcCo&`eo)QL9BR?wyvX4TDZTR`^LjMT`Sa%wvbmWfhE?t06+!0pXr41? z&fv(ABL~^!OcBY^9^Qml^T;_k=Qwxn98R1F=O;m8&M_IhAjm=I9Gy-F8yg!qb?Ov4 zolY&?2U14j(2_69EqvbMG+eA&bNb%YRN zp|;6R6J90h5tC!l_K;5-UU-lg8te_xbL=0{g9M62-2FHUM1ll}dC!uEgh-G85y>$< zc#(rdv`3a@^A;f}ctMb84cj431Wq3@#0mtF9J4_rNC1fBm>nWPJV#8(XA3WKkO((~ z5Xkd<-eT+tzAPPz9>i1lOb(wA3F0B*`l^FNB#38_QpTkG0I^Uxh)by^jfD5BmTlT| zwV{69X&gDG(Z9B`EDF3J$X=}_y{_q&iWX&beX86Z6+}u|)iGfk5c)f+L8F7+M)Dh1Fz1vvL7Mfovrpid7?G zgG_c?HUuofF=lvAo}jcwh*QAU33whEh=FfwHRV z*tj|flr=TpH-sXv>))*{t6nK3@+_;!i18lF@IZF|?DM28qkYC|9z#l59Vf)29wkJQ zctem$ET=ORQVK&i64AeuI6ysDph`q6s8T2i%WKhgEg8o4NfD!LCmRk8h1IgyIZCOt zg7irfg7mp*BNekqp}dIdtMVEG#p94fNd`ek;YU_68N4A#TevKw6rv!FN^q5;+Qgtr zrLNT#S4yIl+zN$i3Nj|NLkmS!QSjesf-2 z%X#sAs?S7*5WPrn1Oe*g(8@?&T4Bob%0H_Eb8d8w7o zhC?%~Ak^tZY}c!8kA8mqbwgwaK9g7Z52Zf+2`AQC7-NU*+OH zS^j0^ab;;$T}C~CK?-VF)u1a?lA33*LL8kNP}zwG%CZci%sUw8hIKcrd?}lqci0BN z_MXOYGa;qzEkF!{A_gPIpegqX3BeFVf#w%RXrVlb5Sk>KES6FM^>|w68pLZD3AH09 zP;$`Ewlz2E2O#ns*>G4`Z~!PRxgv`m<+2iMLw3tBsHG{k*V0~ydO|`DsP;H7OVpy1V@^wIg>6bkrO2+i z2?&AF&Q9SKNQh(P0+ghH5n>r0gnEuK1koWIX-^S?k^1$h73al}v-&R7ds4PdvK}W2 z=LKq^%g=`5#0WKb{R@FceU%0tkQN`-CouW?L;TBL3B7KD?i2SX5Q!2lSZgN9a+65@+r;K6_2 zgcO$7sV=rESFw2t)>}rhb_7eO&!BVsFp`wlya)}i#O+_<(J#L$V*D{ybLaMLABfqzSLjwyUsyfLa(dt_?|sGgZhm z+QR6QU*XaH3s`;e8KhlnMjC*~syxS)lxO`uh7TV)CnSqYGUShLV)H+~!uCfOvGzxQ zh~ANoGtO6ehsbhs&PVl+l(mOuH7Oi}6vjYDc^y-EjY{67)XBRa*+n~eLy$JG6`lcA z91f5~9piJ3h8%>3VtR%eKz{#IY<{?ewHMAJ!!G0qJZfel-yW#P4?tau?M0FLD72_zje zZ%`v+YIIJ`gBYV)Yp0O#qHemw&X|7*lq^9J1h8Up`koH$N?G!QT15_i;u2O)_h@C+ z2o;L|#O5vR{O>0i^>d3PLyW$-h5V`WNT?Rc@;{?+f>G}j)}H-_krZpHG68Y_3v7S* z5w`F4YaUJxA7cBx50HHSJLoMl!*kkwtXRU4oOvFHo?bO)%hixB=RlHxB?)+%LUInC zrp37=0ZZy0XA$7VmfN=Z2OT;Uju5JvK^KPA)n!CQB$*d+yeM;*;_*5FTRn;8=buK> zsje+v0_Z$~EmUDE{c!{mgvGw6i zJ^sq-R(%>YKGDQb-p-JhdImC^ZhMT@UuWx*VIW9?IG2l%7+t5~7I6$ckqu-~r-kbrD{@sU zv{Tr*d$&+#UEHw<(QypPI+iY-1XEt5luybL@>};Hax0`0cFqF;)u`UsL8FaeUOubaHZr(?pS&K21=dyAi)ko^}YD2|i&~{@~NFkROqgaz9>2_!#h&7j% zWj9B$04dFV-+JQAnoz^m9Sk04<}m=gvx=mb7;_H-68X*!26Qse)xU;VU-u!ml0)QCxkq>etJ=Ag^W44=qKWgc^O_GLJt1?8UkPxf~X+k~naNks8JyQ9XaRzLD ziS3U+E3CG0K?1gM9BHTY0BRMkkl49%*VTZLgU}67+H+9C@Gf}Ix?NHNVgxbD4Nsxw zd1&&j%ePcw|YT zio6|kzV#y<`|e3_Yt?e7q@Y+hf;8XK9OCgkbCs;E2wG|EYf~f_pF?LY)k{T~l*qQX zA+jM1rtJq(I*4Qu)fzHxRASo$IF1=-?G?*tUa}GrydlW0d59jaCHaLh+*%ex%P7MU zVmTFvb&#BY9xLb8jMI6RVK^9=n}{4a0Z@#rHF^=LCO0#PVP517^fco@LOjw0Aym;V zQ{h!#ZN)c|dQ^!%7~B2cIN*!-@rEGN0@MG2gjZ-#ek&9q#{mYud=yL1{XV+Km(7GX z&ynry6pzO#%R2Re3O#db40RZ_9@}0aG=_1E@(gpAE!pKAAE<|=i=Bh8uI%dqt z&_1&&AJV%UtvW;YBEb{H-aqaPJ1nJhg;tDlAW6ZNSCFo6pmX*dIvcCSG7$Pe1R*d| zo`Z9MQ_V$HP7%r?M{(L=kq3{E^{qJ+0O%b;vcv&KM&2AstQRXT73xg4@@nNL+ifdC zbdVlfF~2jHhe4Pm36>x=MJbQb{p5zFW+~E3-@@wIWq>g~qYcK2#d>PBYm%6jR+48$ zNm;CglCmf#gmzgH^~pH~7?07h!=4Hf^6pJ!BfFOz?9c|1jyYs2oFqw+oV|=g&#W6n zU`Ya$3lkYxq^ORozeYk&WOQve4hg{$MB8BE1*#iKNTSOW!?>CNK=qy~Q~BA*8Oj_& zq(5Nqr^)X z9z&6UbMW%LWTuy47CC7B#$J5m+w~t_5TwmhO`HiiNrVBIqfjcU(%}^Yn7JoHDT%E_ zhIf*(C@Vyflq*7&=LC_32&=;}BeZf_jgn31+{GSQ8}6*9EBnf#bhNx zcqdpu}=%6%YeKM147fDpyVSsbJZ5y26}3@faW8-1gB z5%LhF1yCuB@)E8MMJmK1ZOPFHS)S|j5~v>4Q+g~lrsT4m21!t4EMn^ph9CV8w!e5% zgjTE?m0}WLhcBXc;V@XDu2CG6K*EjkMF9@ROA@GlQ8F}~1jv#9N zlpYSXEuS4Ckx?G7@)=YPaxlxHDg{)(Hp__T(VjxeDj!hmtpG>}WH&#=<{g_XviP_C z1o@LevvuyB#LCMrVre<4%~db}Jh6sjRX@w!g03W8c@WxfRn8dZE#DiXf)n2*f8Yf{ z+QzG{NkISxK?>!!atH-p#N;{=x0FSl(@FyrzZs}<7DWQ}zKrW739*Xn1jPNXFmUxt zK}hGkfxdlH6vj4S%+4vT50T>UkcH4C27}{DXY_JQxBrrA|8Z}(CPls+>00%TEBC@O2hF`-~~a9jX&ec0D6OzQc`O5 zR9?VNe-}so%<;S`N+_VRtU#4#pxU--%t=^zjw;VD{3(w8CEX5NJug^$8QnbbbaYUG z$fJot%h4_XU>9G-Qy0tch4kO(A0Y`P1RYAYhl=f7!_GlMgck&v1jbDx#L$n$B#-V_ zlZ)=nQM{&9KtYsImg#F4tA1PtFh_Otduow6H=df}qP@|!@?_*iy$BRp8er__&myMeT z4U$mrq0SlC!&E?RL0K^$AcP}tQP-E=!T3zuByH;lRFf6BN(S}U2#HX6l{PciuDqtP ze<}>M>I!`Vur0hHNSj2^m@F#}R3}RUQAKbqOQA70^$uB<8Q#NaSG8p;t5QB8%uuf^ zUpk*s)O&y^vn`|DE|r9OhNk|x)`QIwzKnc%Ly)#mme0Q70IFmc?vXJUaU_b7 zu_kh;>zpLv+_b`0SY`jz0hL>?>2ifusFc2qn%N%8Cd{Ht`t1cl5k!SqHc1pAtiogK zQc5DEL{6TD=%PuDkTjQ3g9Azi;x%l!oP;G|o-3cSuNmuUn@AAJ(TJc3;zCX7(5yss zjzL-3yxbwE&eJ;WdR!roCJEHG4Reo*t%_7Z?WG+};gliE80B{L&psbv!W)82IvFLb z_+Hlo)RhYE@G8%9?L7=dwPbO&Mat<|A0)?+((R3i95y*@f*SJf;z^w0qhn#GtADeA zFO!Sj5M)xgl+Y&2ZlT0*RBZwuSJrOJH7W(bEYncmxbu?)K5fDz7|qy4u^RB__01V7!0tvxoPxWN{Q|5ZS?#71C{yf z2roRyK};%*MzsgudW~^}AB{#juN&9z;c$qRm6e&u=gUN4^dJb29Kh}hIO*!>Ma9As zLL0Gbg z`5>nEFS#7V(AvMfWt-#5a}G)=L(x@zpzXiAtzqY>`iySL}| zL)eiRj0cI{qmCy}p44)(EX%O9wKXS+{6i1~iR7qb+#=05kkKCA6C^$WZg22C^f@Sa zk%IuuH*`^+QZgyp?kJokQQ}15oDr9^H)GruWqNLw4_2VRV&yBmCP>^2)eQAy5!dnM zpUhi^Ht>QV-EQ|M0DhxB$K1nv{CZqWPkSkZNLCY#6N zrIddwrTpf+Wr>&w9{~8PH{X2ogLw-w3A`f+07xm>TW`JfL&n&j1NdVAX929uS*!>X tn*ctSQvRHC{*PC$Uj1jrn0K!K{{g@A1q9`(cv1iW002ovPDHLkV1j!XR+s<) diff --git a/boards/static/images/fileformats/txt.png b/boards/static/images/fileformats/txt.png new file mode 100644 index 0000000000000000000000000000000000000000..ce0be107bb357adc621dc980a88c3b02d205262a GIT binary patch literal 3950 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