From 68b64412d55d5ac96e949679e1b36d9fec0620bc Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Fri, 2 Jun 2023 00:11:33 +1000 Subject: [PATCH 1/6] Add wireviz plugin - Reference to inventree-wireviz-plugin --- _repo/inventree-wireviz.md | 41 +++++++++++++++++++++++++++ assets/plugins/inventree_wireviz.png | Bin 0 -> 105645 bytes 2 files changed, 41 insertions(+) create mode 100644 _repo/inventree-wireviz.md create mode 100644 assets/plugins/inventree_wireviz.png diff --git a/_repo/inventree-wireviz.md b/_repo/inventree-wireviz.md new file mode 100644 index 00000000..68ce2f42 --- /dev/null +++ b/_repo/inventree-wireviz.md @@ -0,0 +1,41 @@ +--- +name: inventree-wireviz-plugin +author: SchrodingersGat +license: MIT +open_source: true +stable: false +maintained: true +pypi: true +package_name: inventree-wireviz-plugin +github: https://github.com/inventree/inventree-wireviz +issue_tracked: https://github.com/inventree/inventree-wireviz/issues +website: https://inventree.org +categories: Extension +tags: BOM Build Part +--- + +Wireviz Extension for InvenTree + +A plugin which provides support for [wireviz](https://github.com/wireviz/WireViz), a software tool for generating harness / wiring diagrams programmatically. + +This plugin generates wireviz diagrams and integrates them natively into the InvenTree interface. Additionally, BOM data can be extracted directly from the wireviz file: + +![](/assets/plugins/inventree_wireviz.png) + +## Installation + +Install the plugin manually as follows: + +``` +pip install inventree-wireviz-plugin +``` + +Or, add to your `plugins.txt` file to install automatically using the `invoke install` command: + +``` +inventree-wireviz-plugin +``` + +## Documentation + +Refer to the [plugin documentation](https://github.com/inventree/inventree-wireviz) for further instructions and information. \ No newline at end of file diff --git a/assets/plugins/inventree_wireviz.png b/assets/plugins/inventree_wireviz.png new file mode 100644 index 0000000000000000000000000000000000000000..8f290e0ea7f660c6b608ad5976543d6683764a76 GIT binary patch literal 105645 zcmeFZcT`hp7e0!jBBG+w1`$vc5NQfZFA7FLN>o&&B&d{76C|OAVnYN}q}K$IE&@^m zp(#p-0HOCz2$0Z23FRJ~nQz9q%>4em_pWubERdYC-@W(y?Dm}a-O|%Ia_HnC1_p*B zTAJ7I0RR2Qz_7RE;9lUJ?2sfk;J-b{I~r;XnS@hh;Fo={Yr5Bfj{;dX9_!u66!hLf;FN7&t?SqBxke?thr9Z5kBFaSd%$+&mDLR?fhf?t z-mSKvq5YLCCm%o1I+*ZE^X}uX=#tZ;kRQ{pKRiB2ly_yGbRFI%uX{`@4&t4iz|#8t zi|#4|tbDEa+S`FY%KiF?PY3LGB>(I6kRd^n>91dbpMGmTPu%m%I|nZNqkehg>7KU& zyuZBj@aq4&E>mxmh(7#_gioU_>KvZ@b7@m?BHt@TvNTsnF1TZA2hY6R<)16;l=3Jk zlT-ev-9820o09MGmbNIAV<+!^ftPK_yltBQclJ?_|2)J}0mY~PX3^pT(Q~0zIM7`U zDf};YbmRj>I*O@Ajd~;npyFInH{y%f{zZKGK-wT)DU6+*2NM229havmTqjBduB-uL zk5=4O8!wLqFIsIkwoP7;AbM`hS4%|@2!!T7=G_l|ADfb!+bT|E)(>73M;|F8vC zgU`*p(w{@JbSaoZw7y1QpU7b+t1R3~JiEL3?gXSIYNqHPL@Ox#t54Zn)&eQSXB6px z@T{sEw=Ay*z1w}|nvEbj;$PkBa5JDzK`%6MoiAyQ@9->rPD|9eyE{nriWuGC8)Nixoc_|`#_n305@9EwC$>W_h!CUl^stweNFBMJp>FY%)wdiry{AkT|b68HUvDI$05uLO8Oc)a$0kb>lN9Q1N&W4YO-5Xn-sy4A_u&)D?&{fs1#LalL= zgi^J#B&0W=)!~`JuE$R)|E@;&+le8cAu_hXrSzA6($w=Wg--A41Z{@riD6 ziWlx7oZi-|XB}fcE0;~llTJ2O-o|ouhAEhJ=hSahM>`NUNSnhxnSz}V*PcYbfjKQz zh0#~O6iBf9L!V4VE)&lI?i8$@UX;xISS>8hWxPVs)T0;{t>cF1M~cE@Wsy@NA;Qs2 z!G;)_<&QjYkHV#?uFu}fX~q+c3bSuoy)NH|5fvVdjOpvi<2HMI%F#2+%Rywu?j;h8 zYUtVsB4MS9GTIGaNhdeqw|7<4JPpZ^AZpWWne(FCdWow%VqSEZxz6Kt#VcX{ zt;XdD6W1ycT2V+CoDS~3zZm}6HNPPxYi`}&7*XiD-o0(@%!kMYW85|~z@;V^Tg_dc zl_+hCd20!oWH<0{bxa33o49AXsaY_?wj?b3(RBaU-jj1w@j$OCA0!-7qyUExl#yn> z4*W0>D=f#MkM4%5+^O-J5ya>2==NC>RyHZ+0((qHt+WDGZ(0o$fI=u2ySm5lran0d zx+Iu^Gw65kHeU%&c&4K;if1yT-)JdWUQbw*j2&_5d@PVIz1?yo9__QxG0h596}J}( zmgXusg^!5C@dF_N)SxqGfFh359O!$SbB9-ggryw8|OIgIk^IT;H*oOXi-?pF)ogE z?@PYoV&Ya{%J4RExgotoyjfa#x5b{}Rtu8I-oM;eVXYjJl;YI00b>LEa7YkK-3F6} zIWgywG;zaawgeqShSttr$-t{T1n})RA@J}Pm8=-(L|!z1DN!_}Ykp()i~B{X08E7@zk|01^g0 z9`EZlOZFiNa*keRYnpD>mxsGQ`WC3&wu)le#~-v?qt-O3a`* zWPU7K7T-}aKlWXF!k2Ja#sUhf(5ie6!XLpw$4q4Mgtb8U;yCCZkk1EQN8b^xrG#`CN3@ z%A1QkAl~O5r0UC@k<#RSM(J9zZ{h46#kZelKuFS{djxzglPeBSpJ-0&C&rZ>sh42M zn;awCM({2SlQxR_o4t}%aUIqXP{(kLlztGrwH2At6{80%??S1-URKX(PlEzCRj|_H z!WzyU8PZWa77-EZv*OhmvdN;PGl zEch(WdR*F42>WK!^Ml)kU5(9ZF9@$V0iO4QD|&BXL}foq>dg({4Y2t6k+?zo*^%%( zLiB|44*j@aZyC9EY9lqCkHy% zt{XlguZkAfI%fkQmH~Ei)GCN-olC9EgPbaa!oUN@n>7_ILZ;n=AiOxZX_ox4vf&&$ z2tLxCi-2%@k9X)I28KIEgX7A=STH1uiZL?F2v(&VwNf1`c2PTs+My^xn^2w469ph; zylJ5J;GmcN_$D&bgk6NVyu~rBvNTpO0+*kUT}v(`2kDJYO>P_m5s)J0+v+zm2 z6dK5(wYb467prAUIisKM>W`tf6163Wo6gh?jR75eMcPDC3?VnyrgWyP%MT;aZ%8t| zD46j)`H8ks<&TaxIs@*`&!p!=ivoRx=k7dkHZ*SP<1Be!a)%n#Bmhd)U4hsX-%Q!C zbF-6gXflqeP?ldYRNU@p3qZi#B|UQ^G_Uxh5aKZw5zZBE0jA8l@5yKQVqGdR=>lO{ zSNC?lU(Vd%iN3lp!Anu*$gYi$(C!shC-H`wpC>|4Tl*IfJagsmNTVnCaSE&^W?+qo;g-Rl+Z4x~OLb86pgs@tu9Ac)=0TPncBIw^ zDXcsryn(W=^b^wE^$cC0)l}dlgDM!} zpz_Vz+SbJ;saD@C4*HN7>10AKzeg|kJ%uLm*oi@0{&ESZDZ(VnUq2UwkG$VKx~P}U zifZ8%1Z$ASOBE&NXM-~|Wyzn$+vRy7mjq3ZQ}?mK`ngW>)J^Rtb@`bEym}^=m7iFD zYS-H9L`bwGQCEI@O4KqUY7w0oW(Z}mX^k_5ELMfE4lWnRAPOJTJ}(mFD5}ECCikz9 z&pm(#QJ2;vUshEmUcV#}tm|SLE48UDix~}69*2RMZV3M9FZp)z{-bUS+L&_&n^9Bj zGCgxy*-TsT)-gMKMekwtEMe2+T-h}DAPM*N(wqE`H)9Z}($%(p?TChQ+LWk-!b+&V z5IAqqFQ#2IfPgb=g5*hDmJz9K`k?zk(`7#AX58zW(Bo9~2o*%^;(|yw9tkds%p2KF z{V#tc0uCP5X3_WVZY}5C;bjhOF6gDrnTP7ZCSYYdW}CI`+a$nKosqMW7$R z+n((4lug=@kHug~LMbT`Rhg$3?Oyww9@qUo$!{4-YKlDsB#n9)m6h;nsAR(12*LLA z#Qg;K-!NL-tn&kS()~U;#6;UIn1oD_q0^R~ziPpo>EUq0M8)ZH?2)&+x(L8X>eZ%4 zy59og_v5E2ij2EO@}Fr--}9cO33V1roujm>JNh}A5g9D^oLR;4HA$IvYkp9j#S9o1 z7{LOzyzm5EYWRuvGq%6sr02cGeL5ChNW7b%>9WG1ES`XS$8H3+B34 z(ZE5OsF;k%Po@7Qs~yWHAZmx8ldbI)r-?o;nH!_{$afLFhw9LP?@sei8!g^2bi1+^ zoq@1-ohP_SgE5n;D6r6`>j0bW*;b}ST795+l&7o%3 zn@MgUeh&ak2B4_@!m%nV^M%9*>*^cicg~8=bsN>{X6jn~JhNpVQ{Kx?mwinQl`A%J z0?^MB^e;_@A{G$ds>PVIoW3haOAS zNXOfR3u74;xf|6s7?du|$}X*B&J@-KQU-GT`0OZsw;=fUoO&TTOS3|}Q_u56lIZ4{ zSl-WV<0#YV$cZLl=lg+8ik0s$QdvlS2RoDJbn|=usP_L<(2_v^XGP*CZ60`OO;Mz^ zUI5A%iYF^cJFD4F%gcgPBE1LlR3Bib+6zT zEdy~$!yav&i6ezujRyDo+|}t(Aq_u-l8jKnOTJyG!6ZH8C1*Iosb6_|>9JE*e!IwA zr3598FLsX-wd6ZiinC;5C*n#!Q~YBlXnD^UjDZ@im?s<})2)*b6o#LC z#S@X~dgs1PBTqUXddNj~&|!W_TCYHq&mggNzbyt;=Luth~NqfRn zzVtzPE4{8Si+nh&bc1q{tf3Es=02>QrJ`-Z7Mq{R7*DUsGHJVxSN1>sy%QAFu+v)D zLI$G`DX3=XTMm>ZqkOY|AeVLmX={zH6=nxOWmUh7fD8u#wXFcfi~{=OI~z>F!)s}! z^Znwsvtyxy{Xsz!oejd*P##mJqK%55`h?4IYdhGriY2LIaMdo31 z=g7Kn(eq6}&EY)&^z=wf#i%rEtozHkIXICzsqE{&zcEF$5amiHS2* zq1`gDGmMHrAWzHviSj!@d_iuIZ}$Vmb`H$?3|%s7{b-AEAm}#vRGrwh5*OHMC_~2Q z-BRc&3APxi+3w~CyB?@{dFPr5CBXhp_g26&lbk-k)495v$qxFx1VX-i(~HH-Lgc+O zmoG{nR4%Q=`q5CR3{}GdiOYL-75W_DhQLsQT8vVge%T?y)lj@0bz~M)Wi#Nl7VpEQ zL$z+vwNl=;)YI72Q8WvHzvJ#HN9CGCQn97(tA^|&i?2#ogD?+N;?T=l%h9TUy@7BWmomQ zG(WUE@B-FiQ~+ez{j9^2|B~;#JSO!)eRn`OrdIRx=>LDSzbo|r6Kd283qS?_I*7id z|IhjDfxHVqm(Y8AQ{1?~ZlGihXlyFY9w=q}W%PSB?qcPYxPqR%;R3hC3E;?*?Jat| z0K~u`LZo&%M>7SY;HkN|`pY>COQQDq)&Y8V%Qc0~-xX++uFxj`F&1~cMz`y+&lOjQ z-^6|5Aginnz339aNY(Gq2mX3p<(Cqa33TqY3!=VYRcYReDVV$o3zjSt#Lq) zRv<|eb_fZKrFxQD1t2aixZb2(Cxu6xzbf&m3ha{|p=k046Te4ue?O#A0Mjf0N&Oc| ztXur3R5+!)n-kIv3?w0V0zogT#h2gfw<)5?;?S?6EV1cZEm}2Y6c^LKv#Oc^^21=T zozq(VZUyNTqYCtd8@~Ulp5`o_jK=h4W=cu70H$E_hp=9NUZ@0-S)Aw>sIsm}N)L?R z^^^pA+|K881Tffs37l8W@4YdZ5NH#mM`k>~82JymMD=YKBk?f?iRh&k4P9S?*-ghX z9gxBq~r|jNNLzR zrTT;$Z>4a&jg5_XR`x^trE59|1|+^$zvH!qD=H``n70v=v>WXYAO6p^!k?aJKeT>5 zruQhX#6&}s*@3k@GcMkN?(Xj9=FQ6;7Ftq(sRq!Dz8=GKZg}a_1F;cf! zkS)?p*2bCX>GgfI8VIWJgQjfrt;D}@@K$x+_6`|Fx&c0DG7v~q|uy_ zy$Ou@Je^%#Rg$ITQ7|2PDO|BZ@P{A&=F}hF{oQTb#Qjl>8X6kDN-cmc zCJIv0($eDNuX#0x5S^TzryN=UwWu2z88uKcj8k-?1k_LR@L1&BPPkFq#7;f{4ATEv z-&7=R5TLS{-B< zh5we$|5?DBz;cv2ArOc=k`OEJs9%pX`owd^CiLBjw{PD{{pfoQ=;|Wip#Kx*|E{Y& zpsYp(7~xcD8YwonQ~@W?MQQiBmBRQkuje_%@lThJ#>0fk#8VV`5?&n*m1F0ipjkT=OIcBwsH@ zI1Wjk3lHa9a{;t&X$5e-{!ijQJ*l*i2#%7fJiGwh`tB=P8JW6rz;1s(`7{_G7loXu ziC45&HD9ekn6BvHxDS2cT3@$lFI~WAqmK-F)#xeCIL)++x^XiyJQYwm!*F$*_|N5i zn3%BiB%0Ye^km!G*^saf9sVxzx2#4FxTK*WXqa`c|RIt$%)N1 zpK`etmpW_UZd(2sTAI`CS$IZRLh397!_x%xW~ubMf&ALdByOEns79l!LqZguHqRW- zYQFA;tM1gM8rWu@v`^t5prL0+5o3&t22EhOjME^6)3|>?kOD*Z&uw>gHUI^ECEMis zu}bejSiYt~!%&cLe*k=4 zWO}IQ)_fXzMd=hNW)H*ZstMs9Rte}>p7|^O#Q+1Fv`W)8;g?jLspn)tI)Qt;QQ0@{ zdUd9nVfi4%W9Utu?X-$BHDcxmEx~MwadBwEkm>>p5a4}p{EyAd`*h~#X8&*#pw-o4@}OIlF~QWDzqa`+0E9} zPF;xDq(fQ@O@%yjr=cAReR^)IPP`{})@QWM{F`vkfX0}sG&%JCq{!Em zqZr-mL7ALCrS2l_VMy)!qoeKYtHuK~YBVy; zTkXM>(RA87cJhUYxlK57c-+_0TNTASjOagBuJ0si&ocp*UXAoAfO8onhJY&v3wsbf zhV100egE8_4CXswih%)Whllm5-qdv3=L{*=>T_O}J*3jI~x;ZdI-|oUVG)pMpsLLw^xO|Oi8}E(D{>Cw7 znR42#>V|El_2&K!5gfmQBd(=7HrJuOm+<2oqgT*N)|2*z^tlqGIo5L6rKimL$Lq~9 z`A1duqWw{yjP+)sn%-v>s2Ye}Dey*@$5(#OWNPy0*16Yrvh|(3RU3A|!O!mfPee=S zPxC{Dk7Px=(b+&nWI9A-&57AW8M1~G;d#75aTj^ zOh4teAZea8cb&^?lu^2xI@(y|)}bv08mXUJqcOU_LZd%tKHq+zuEB@eXs9IE%J-`9 zW9&6odYcA126`5gZ};8LS#OEg44TfKmIU zyJ_k)mBr)ILitF})w`!Q#Kp?JXNx>~mW-EnX4(;__Y^M<(&N>A0ORi8m%vvSOEUK$K?{PmMmh0>Xe$wp4J2l=* zpzQm$o?L9;vG$S;V@O%=k2z#10Didb=gH2ndHo;ZmhnCB&v2ZGvbu9)c@o-jGBw(B zbjrz6XCR5+YCZ{z|3HtD*YK4%F$Qy8EMmnA3wLd-HcZsyKh~X@4{HPUtbSeUlAm#y zdqgcg5rFEHjLAdH?L$Lf#eI=;IN?KY(t42a*jdiCLwaktNXj3@!yoJZWiT!v**eP% z@qkxulIsF7qXb6GBs4yL@rfQNiwVt(jXm?(6qssXbDE0i}c<_}I1Iwr83N7x^OL-g%-^ z7S_dtIHg@N%fnITzlWhF4M*DarHjsJ>xY1!@T}*fhXf%{zDskG2THtjdSJKd#nAn# z5EImB?4@}9Mb1`~1O4VAGmM9mjGf-vtSvs^>$n(XQeJtee)%CcjHh${#w&R(GeVY$pLvK})qI8I@;s2U@a zYwae18?FY5Nk6v3jBW=>toF)BC%=Fx?9cz25)cYL=xZ|Wd9^DUgwN>L?tLZC$ckA^ zcF`EkEWk$he+h{=vIJ%nF-;cOR<(&^IXh_7zb#9=OpW*!B6xsy$ZcIleC^rdo-QxY ziD8jFW3T=ts%Vm%6W=)c9OV_1Aub3lUky0x>QN8({o3y`U|aE4(ry5sPsfCH22RUc z_;@o2xgJkfu9Ea76$9np|%!ckT!txi0V|r~|s`gu9ws-O{Og@3l&7M4|vj zZ0s3qFu%YxYk39Bo62xh<b!f^McM0<+)_GJi`cuz*r^Fmp*^VEn>cTr|KkC;HfaQ72 z9`Z+xllw)LSJ`J3k~hnia|Z3aD4Eh2VizB2iW#=ow~0yCbm`%@VzHiy3Lfx4hnGja z*!FLL%PWsO+iUW`;wmeXt%#Lm7IBaB798YrIdd*$_xmC$=pK`IL&djb$A-63Y(_bG!8#xKx1_+D?&ecFWs45w3`$EBBhL3*M-cS2lJ73aM-1gP7N zq56ryrnA)tkTBQ_9@_MA@tw2(E$Zz0TuK0>y3vz{8L5upVsv5N;%B%$EW9rWe$U~2N0Uip&Xp6R9NAm}mGYvSrge$(vs!;J8%(E6JkefUDp&BHSs1Fg9Ea5jwO zW97KPkNSISnE#~^e@~3p;vPTw9)usd7rxPY+jVb3nbUV51ugV@SAHpNE;vu~+b}w| zv?A)-iZs`O0&ifoU*3OXbfku$>GIXk?T;=VE%^%@o9@ZmR9)(!L_Vp*65k^vm$IHF z$!v`n6ZVLg+j58#<--yx(!KlG`=nQjC%H?xF0`i`tVgHcSUG$c%hkwhp(oGQW&Bug z-{Y6Grhu9KJ_&nSB&~b4nOF?m6zjt)(x(G7qS;Kz@dEu31QcN(&S|=*zCWb*i0Zh6 zw8>pmWC?oS6^7uam6|e1RP~gO=)l65_;Z_2oz0rLcbMU-ijP-T*yL}OUI(+jXv$6} zl2^7aZMc1;Cy%0qoK@}|P=)MM87PE^YR&On2gMyzN)zQc)r%StD3+sY(P>z{q_ZV2 z1YvW4@f;03R&q^s8YR9MM5bgpjIP9Hy+m)j7Ok}X&}BZ&^=}#QO|xcEN`=ZeU|~(Rv>+LF4XU4=Ht>)H2=+H z!E8caxOr}07N45;$3&0Vr-XbtVv32koz3=7Dcx4Fph2|Io_aTv^rXL#nWtXnM z()Kzg$5q2;3QU6H4FXbJnGc%O*^?5u_CZb0Jo9nMO0g3xBfhB4JuAxBhwf*)bRQMD zLDi3)&Z&%*o`_;$ohgdQ=%uaiX#L%}SaS*Jr26WLS4KIH=mla?0eeRVnmpXgHQ?GV zKUy}i;Y^LXHzaHKL5F{<-2(_MmaZ)Y7l=MvgU>e$#s|_#-ie3Jzrlnr6=Ms}-%03Q z2g-$+eb2V>5BJdy(U2m}QuagXnT>F|5OaUYq+#vs;d{Q1989@E6Yfm%1>g z-(wAvye{8d`|Vb(@V4*vCo;&)MNzE%Me z4tn#e+m*+=L}ODBqerTjX71`T;j(7*qEB2c|FvCEpxN2nJjcrLehRTQff%EVEXHk@ zxG@0@-LGFm96y|2{w-M2;rYuNd7cHa{P+&AE3uFMBf2dgA~Ab}Hf*eJ!}S4+ZDoHL2Y65yA(V zV}f29y>63KCcXiMMT5Z1z-?987*0O>^0Xrex@X_@XQcvjOBto>)5_@1p)6Auw~@-=0&~pvtUAvU$tRtHK%-Db3j7ZdUGa zrL&MB$8cItsNeqNr;U<8EZdljZ*d=)W8+G~em{Js)GdjL8pFBb*0)fBfO*Y+h}5q* ztoSHf$>|#=H&&WhDd91~5)YJwJBV0yfRJxk`)DB;mKfk&cnDg_z%bTjM)Im%8_#c@ zD?pEwE26UGkh9p@KIzOb(?ph7LL=%^6

wm@6XsyZLtqrgO|%Ni0>MI#g)=8hYb5|Iyc=~c7ce)V$Z zzlpJecy1$_=&Xv)DU@=reg)px3{4oSJa>KAjg7_{J0?bdB>j4zgvh9PXMKN<0DjPG zIeuE0!jl^AUOYk(mS@G;P80K-;b}f#w=??!VcXS`YQ?ajPx%GohId;YEquL6@tino z`DMIp-Cd7jxRw4J!&4KMEt_7i8op74A68qgZ^%XErLWhf51#yNuw?@G1wB!4##F&N zYSH0Ydi6xHCfA0!<7BKX8ZPseZm}v&yBfCsO{9BNA8i!l$5ne|hGW>>WJOw9EiQZ$ z=nyabYZ-Iu{LPc?o3wRdFU3Xlx2a(B)t7?#sAIzOSAmGDT~E@J7w{150FqDIW&A)1 z;Oq$pyf^U+S;=`j@qXgryF5X$V048a#TQ7hWAiPq-(G>(KVy8W{8Pb&O|C;jgFw!W zkrqunCDli&7;<{>BBhW=xfimKVccorlA0TYt_r`GsNY|{1#g1n@XM&*&VrI%;-o&q z+W11KdZMM3hp>K)y&V1NwzbpgZWGeANL@E3=@X_0zm0ask0$eYZ$f|vivkBDx=0~M zLzoOMcq|a8Xd(Iher)!5`A+?U!yz!oR%h^=?}zDF)F|8Z;JnvL<%TcY+GW?RI;?5T zH}KJC6`m_Z8Iqabwz1q?{pGo7DYC5fR7${S5dQN{GC;W+w^-yp_mT{w4sV}Y4VC(m zv6>y#i{;9~d(icMX6r{1^!ZmRU zZ@sA$Q~h`v+J<_G(1Jqh6+0-Sd^d%~FJ@%{T{_5CIxBM6lhiT+y)4nS_*+1X91_vT<^c<&Mu zzH!>MgVZ+TF?2ZPhVb+9Q=5UG7rGq>TH?E>5W^8L-Y#i}z=W(76_87L?!x*k({`^8 z(1;B4R6B1ZOX5*ZFb|WQxy+xuw*%_+TD6f6O@}28xNV4E3ORZ!jX(B8p~04};&I1^ zS+CQpom3ahR=kfT=`epN2cG2p-^6ccK*Eso^EvLPp^TvJ=_`t-lr~v;8cS_%%w5$s zil!;hUbP3kxG-$12Qp*L*iV-T+G!~EoY7XHb}0Hww4RWUMjGi7$M*0)wWBQ)Y6z4wJj0DTR?P?<>FE*v-;Lwq@ zFC`&&D<`3DPOEkL&&)-LNBG>9+6!btoM%$z=mndje71pEO+_`OpR5u7C}W(8s;KLN zyrkl6yK{RQA*dWs*UL|_$mUdfV0p}`A|)&ED?XX!XJ5OwfUVH`XuH+h6p0~hbZ#ErSrx+OoxFTPZ%FvgI!h64My`6qc$d4*$ zO5qb4-1sprf;ibifD7&v>Nd|d^fqW^@zSEzAeGk#RL`)hzNijg{T}B}K@98Sz=yCN zg!)Xg%(9D)o^D_OMM4E2k}7BHC|;H~mdYEis~lj;VwdFZa1P|&9|Y*J!;D0`J9wiB zYWu1R(B*JS6IaOt?;aqbc=1a@0Zi%sX!>f(-wHL!>IU+YoepCyu;V(T)1x{*03F|} zuio|9x5b+!L!3yt6MI8zfmC9$1o=({g*#qw9(WLdiPzHzU2Rt2lxICIxzjE8yzw@V ziG_)E5E*wCEJs?$TKnHTMJI2KdK!2lmayu}tKH2(K-&**u)uPvN!q}VBkZ07zH?Bq zc>Hv(!grVM*{-y5&nL*a8q?MHkDk<0%QsflH4eKFrjDyv<&FCc5@H?3o+-E1+~5O7 zAf43|HNcl`BN{ir-4n%uUwnC7ejB!59QpXsuH7vO;q_$x4e+2x)1a#00{iSr*@*^*8{YDlR>jnBGpU zZJg$xqIC=3RR}cczvmT`S(dQ5s_xQq!lNSP@d|Ekf(sGrG3K>?enEcYL&$_vUCP{7 z7{P{}?7qzWsGfxdtm;vYon?8#|Du=+Gt}T#GXPV0eB(pvkBGGMBs(A7QLi-8LGZCI z(Z^U7vsQ}m5nM=;9`lFUe-2##z!QeHk}xhxD>Bb=r(FETa3@R&3-BY>L62IP<8z5e z5oPE4l6WFzpsEG1+(f89yWr3MJE8$dEzOu1r?9_x&!=30eqdV907G+vVKu$ep1>=$}j?$26o?a=jz7hRDN`6OVW*wheKT; zbw-L7!W~6Ps=Qk1lA=<;q|;DD8UrRp5p<>`Jv7&`_nFQU&yXyeu*xh~kKh;TL>udW zWB5YJi1Ku88qP~*<9c%NU=2ViWMFV>FU=|KR$h)a51g0H;Gc^_c0#>0n`F92`>Gos z-W>tPXl5(flDZbgdl`SN2tU;eV8WwJ3iikV_m@rsPs4X6Xt|Wz`FVMh4FD#a$s>2$B9VSvlTbrkm^wIuHXq2$EwRKQ&A?Q-lqP3OP7Z^4-j}^uO zl`^zC>Zl*dbIn~w@lo*;4l$%={HLC3V)e)}p^O8^`Bf~9mT&xvqOl6977XRTHeH4SmPYT8Yy!}lU&BG+S z8)z!0w(PkY^=CJ!6Cj97dd&w+9Jm#;HO#*SXvNX?DhK&-y1|hnM+%H!=)3MWvTwzI zdVa?!{?_~A8uiFtK4o19z$}1Pwkx;BVDCs6=^`Vp!w(_P3ZRab9152|hf3={#yy^i zk+8SJ>2x*P!dF~^2p#=1%o`tpMby_-aUQch2~rq~orwb`c+o&|%TVCgCeS|=q=8et z8gTSH%g!|9y$kS^+Riw4Rl^1#70LW9{<{O;Rj^>kz)9|dhv*Hqw8YEW2j28$G0r~G z5;eUm5Yu@550G6Th!ZInN4{p0255WvH}`xH_*((G1n_Og zx}RPkTBkIMza+2qHoScpcvGWD*f)S+k^-J}BzxH9W~8TU!+REDX#-2Jc&<37V#EJA z&C#L=z1Xq_j^?BjfRz?U)!hG`TOioU|_YHBH=Zx2!m?2!V zJkMyc7vrXx8hPIQp_S&7`mZEMV74>RU#4fXyiqso=e37GWot3qC>~;{T zs8*E>z7?<&aLl(8HJRD~-pU^=nWq~7)fAut{v^qKFaQo|0$`Ji@|L_`OI=x7JiCZ= z7ZAR8n#huCb0pJTRMf8zL`@BpsPE|NO8xG0IB&6Y{7HbP+U&GMa3A}`D-Fw!<1*+0 zMNzucG`_fx=}3@9Xi_^<*p-~#TM;s83Y`5Vh8+@qJMeKcvyAWqj@v;_Q^PZ6KE*HE z_x$Mx?WZ>HiI$&IFHgP)P_f>G4PJ5nym1=QW<=mzs89WTN6r!WI-Wn)@Ry$e^Yuv% z;1aoe9IZPa0Q4<*itcsv-TkD!Sr(0bNx78C$!7V&lzVJO8X-(Xp=W4_blVICRY+Br>2O5a9U%Bp4fI>Z+;)hTUR4}EcMJ^?66@QdMQ}cdU20&%vwk>AC=V|rlOiqZ~Qq=ws zzD53e#6?hDU7h}Cv^Ft074kpHZ?7K}LttsR#4XEEQ+0R!+GEGpbw6#tNZrEMGcxS} z_s`c=ufM8UNXCU#gL8JwP$4bWo0Xg_04*<1`izte^Q{v2W8pt_ir?Sfoa#8`QT}-nKfMt?!HDr)#-^~LELvI>yRF^mPX@0 za|P>VN(IZxKCc!*ouIrNsq5Y$9TrJ1fWW3l1N)=$wFeEBb&b90HCcLV?jOy3O3dnc z?3N&BMe8P%1uQhj zm#c}3X^xSC;a(?yryyeAPfoOx6KqM!YD&gOI*SA|qBHN#Oxf1!`ucW2NZkO-Qs}K& zr-4_vALYPpDKKK7@}2|Q*XeId^J1PVPTjnJLg9(siB087Zn6#6?iR7nz4t;b{$ZdV zi1lW7!M9j>%iLrx2A~!!&xe2{4WhTGDZE!)CKNntec3P=j8u|?EiAla zCVC|Ehq!daZK{AGEYL?zrU^&22q5p9_wBO@FU&}svNKB8ym72A^_2Cy&0R+NJcHhoF{+I zOa*8>e|QwbFPj;h&T3Zuu03HZn<*(=0&;=PN>D9k-=9mk4+ECn%l>B^vB6}Bz?8C5 zu4k7b8P~qz3yz^KvC-{`^bex!E1_0xYu~ZpQDaicPfgv-Fw;i|b%c zQBw!00_uD4?$Rw^Eq)^4e!CM0xa~la>UQII`tt8dL^^~fkU>jCWp}C@NIeO0>999K zIX&GKXEP_dU)&L>w+K8>yayO^j2l=LKzvgt)NW}7Wjc4a*4H+B=Ys2!rwgFO7mXZP-F6KD%uGhQK7$vQNRaq+_wzmt)QoQ$_RCNBV_i%@g8xcKu zz71H-AEx+wJj3@)@P*nS5D{^pI*Z_az@w=jfy@DDTQG0_^9d{~lyAUv;y|bd7>(Gbj;*YacZYb}$GAD13+D z1?2reC@?xVs5@2^GAlAskOfeZU)6VV(;F??Qg2JWOpvzP^k- z~e0%_SYCBy55LNp3hT9)**w|8FVrFJGv%T1oB@K|agW~{x_89C8qlKns9gb)0 z)b9H#72>c`|{w;I4s(NVC?Qh>*^nU&I8r=Z&XRi2X4j^ruXlrHl-t)?~$|f1S zy==OjU-V3At+<@7=w>r!iY%6>Iawx z$a3#{f155mg|6+CJeQ0ULrRx&^B)#d3PO^u$i5fe-YnmC`SnJ*aY=tb3GXc=up2hd zFOfihd+c!P?8K}o$KS|5{}*3h9TnyFe{Ebv0YODTMBoA<(j_3RAW{;N5(7#~3o|e@ z79gN>O1HGqFoc41cg=wG3^CM@Gr)V$8{Y5l-uDmJVlCF-Jm)#*6Z^CGK0oU*D{Nl@ zex*E#Gar2aSV8M3alwtkN(i;-`-*qjfl3Ibzl*xNQf_~kbbgfk*S~eEFGUY9X@C1O zXZ~m#k{M#9IR22^Y&8-Na{o_508Y0ia0++{V!_W;^>cBUH!Wm;p1b7Q|FbS2Y=X1q zXO$u^d{OO>z(Dp<1hiFNriXdwetvG?fA#}i5691=q{am}*{A+IrhjavjwH&T;qk@3 z@!_G?rT^`_z+TDmVM5)#`^PC1O`ZqCp#9LjVy2(}otja{WF7l2ijcd7;H!a9DpLxm z(&zqBAm5eZ_tySH?Xwv8Z#%4b;tB?c9Qp?a(&5nzvzauXxwH(@m(b|v(b{$&E@gw@ zKZZo+?N~i~c2&&T2FS>07K)26@TK9$BiJ;6Y``hh6ausfoo}s{@Jx^tHE`w_0EfRI zAtWgm!O$koaqGQSStp7*0tqo^;&|3HclKwz-!QC^dhvmYN8fe*Lp0xuTC=~_6PLf0 zkYEplZXb*e)tRO0ww8;{4Fv!7-Q-rt3j& z^O`fiXQs4h#2j|Yoky1^_A#xKqrgC5-^(Id-rmsXu5IQp8+=tw0Rfk;g+SZDJ5#+S<*~T zRYvQ_^>cqf4kNdPWdSN!nP7h$Q3d&hbMk`&VMW{<&p|GC$~E7}!+70l=uDmn)s57; z)<2)h8CO~3l)Eg&{|#l43acX?oG;PS$*0Vw`nhM1=8O(yC*GbI2Spjs*ggdx*7FZvvA2_Z#>T5Dt*qPZ z1=JMBD3%>!#oP|S#zur`YJg$coj~i)cL)4@kS}E=wZ#G$PMCtOYa3flW0WG=>lu(V9MY!jT*mvi>D5=f!?j53urPbmG zZK)N|o6PD`2Ez0P`-EbEAZl!>XkoN(BA9epIV`R@)7ZMzxu{v(eS>4w zk=nCOHrPR%qt<8nto*d1F8xeu$4Ei`@`G4wCk3Hbgj|_Eee3-m@Cu!wn6k@uQ`wDT zFOxd7?Z@8RMC)R)C^mC#z44+rNR&smDr;_)BzGSs(kgPOrK~ZhwF8vv6#NE>=b+5A z5`0e;PpUAeREWiGFB-!y*NiItXF?nQlB83}y%SK-nPQoTJj84 z>4vk+61ih&#({qS@h_GgZ4*8Kqu2j2H z7w%Zu;g#7&VQw0MuoUyiE_O}T2uAP_jgrwS8cv`^u%YBs*e_>aW}tv9&eaG648A4%t?AqL~#kVlAEjX zXnvNDzAb*Ar-&^~57tXE7G-n!8(0XU^PH;BBuB;68)>%oPGZEbU?LJPePYMQbsW2D zh2dYbUm+d^+HmKxQFvI}p9LFtLaoy?+b**}v)=yfwn8bIf>ovco6N?lgxK{J?)w&3 zJ%fwv{mZWAZ&JJUhwZ2WDpdI_KC7z?)bXm>)~je|4DO}rHPjvLK8%VJg+E&FcM?!q z|17PZ{O-1lJP4!|Wo_6_s!e^;bXxXH}q z-?zgaci;PspoemTf`aeq#Dw(nFM{)X;ZVd9Hmx@EtuHp(iMNSfpIAYcp0U9!8+SD< z1SB!LAW6IZjWlae`bxkJakf zhGVKy4gsaWAN4%%MG2vqilJPrn=|CIX!%s7Yx63&8p#;+H#_e%-NWdepxSr5*5hdgqN++nZ8D~o=h2LOx}T_4VVA0& zY%^M&J5HHqvZ5=$$yq<#FDh-Ai!4~>-AGKfCvg;LZ(gSj z$j_QE@qk3V%GV@ozvVeDSHB3oNbmo0|YmCHJpa@F5-Ag%L%?|V_QzinT=hY!lJ z=ihIKOccSABPBO)I8sm5%3+M}|9mG9FB08Jav6pvvqAi7^j*m9$qs>9+cueY&#hd= zCdBUmNB9{9eix>Cx1&NTRNH{;N`8en;eh+i$w*}95flOMz+kr%4r6H4>Z`^xuYYO? znL;F$pf3od+fY_h(I*^6PD8fql0`Y_KIbox1J$Cq`(`a(TJTQXv*@nKfzZ zzvk-peQMi;(8@cu~c$&wEw6Dd&TXt8Gh*_j+LAFM_KB*jf(c=^dhPUROh{jPpO<* zn;#P}@UD!b&4#^h+0LF8TR8#h+#iKr&FA?pfd}M;tA_z>CrL%7i=sP1Zh3!5D^$*t z;@q2BGp>7z{>EZ{_uB_E4f1PMK)@IqclW}`8X@7x>Fc^5!>1)`KX;y!JTmY}r{L3M zdswZVIRCcr9bj#?A-LeNuy(q(qMa8qNmuLgg^??o+qF`Po2Y84HL0AgvV3&60lwE4 z%G&Mj_?kwi&v(JDMl(^&Th@1_Wc;gKf@{Of`5j?e5h15dj^wrRsA<|Q2Vu>HR?c$y zVZJV#z8UHmMl(>IC96;x*3R^q)QMVU(FLwLzJ}8{eRnV;%yZ?r0}pX}&+qhz)nxl( z@E!4M42QEp+}yJgYPN(YIA?vL3uF7Se5-Mcj}C7q(I(yLg!W5Doj-eF-(?Ic`b24* zIsm>WJx*0)D~_9@4hZ+z%&x=F2FiK395AoOww~(93%l&~_Thx*!AtV7pxxcc!{(ut zcwNtZZ;uUo*58I4u+QuV(BvH}E*K8H!nln23%(s@{9A{;X9ck;H#$VvpC%SPJ<7(+ z*q3`gA8#A6T~csSC;S#QX%ixUh)t5T99u{$8(l3VO}c-9G1q%NQ0+pOvU)UkhAgY@ zcx$p$E|6hr(n6;MLzvI$E62*ZAoq|Yl~7Tuxm`8 zfRVc|iM@OHWb*8sUpl;c8KjEy`gY+NlvP)^xs)*MBQM=-3^OC99ytrn5hcWtM&PaB zYQFc$j}WHDv79(6R+%@IQ|D`P+X-{#%f`|1S`0r6d&3sHo8$LJ7&qR$&9r^K@8w2SPn-dG3QFeJa;pmV*`6+{)~|x0%<1icmffT&OtSvK zlRBYNC22$ZX7y;y&MnXJ2&1nlVI@W6>{9Ja7<;SAKuC2PT8DJ+LaOkVt*$vYGzxA` z$08+1tq?5->F1=@bb-DFs@iH&GoQXG5~+lwsG+=T$+$^>JC=+F-wl8#t?>VZirz; z4t1o7Ddx~BHnVe}HS4E#2YTg#c?`>RG3Q;1MD+r?R(yHEFU zy|4Y2Z||aADU&X8e_R&mL&5qaAsEQ|eq#|H zN=oY>-F!`e@@!O{LDA08z1L-A`$#|kqee_-uwt-`m>R**WG|ioSGKzQ(k`o%8+4JNkA7QFWHhVc(Y$ z$VjhsF$g;}ZD3>MwUwI&h`*g75s$R{ZYwlw0(@&DZ<;CL*sp`Wf$F_sT32oGsBk>6 zxy8`&Ald?8()458`GkvHn;1mACqqA5c!j+$06jJy`+Lf5nO}cg+JkUI zCuo};@3a}Fgpe9}uTTt?S`mZ!=;3JVG4Rw1O-GS1*6pX|E7E0je~@fv`>$PgmD69 z)bq-L4RdbtYU&2ZgeT`7-3^L!2l8qCnsW)xC%~i;2jIoV4NAkqgG#xTQRv-VU~9XI zgfF&CTanREUYb;KHNgrKltW?lm04qQ?iBY`b#<1R=|3YxN+UtOwYvLsuC#f7^@Plh zNcu_X}Q? z`F$zl6SRR%?p#%L4^$!5j*#_y%ZAOs14(R4KbGTBhCA++=UlD37ycbB19k%oF$mQ^ zu*1DoDEC>l7k#>gKda^9dbr-0Up|9|nz+4*WGk1~IRl0S14(k@fm{nKaOCFru=w)9 zHdo$K_1B|LcU);k&htj$COWxgxN-L?_JTFT;okYN4%+R~_Rh+0yq~I_{SzN@_w8(O z(H!{;zx`&XJf$;kE&Yxw%Ca%`LXi>t`3EjK9p|GbNve`7D`&%2d_8u@ zbvhsyBh-KF{`A0-T8C!36n~UjI>$9lJaG7a9*DGA=W)0NJGFOjVI~oO@4f|AInmkW zLGXSHUFXU<2}RT3!uBH9;)mjo=M;@}calH!uv~KM&k+0&;iIVlAD*g_dNLG!9D)Jc zb%~mi8uKZC%QLiqyye=XYtTO@P~4Edoilr|{K+fGA_U=g8KgZi*22p+Y&0%)HahgN zBXx==EFtCXL5Y2xaRtRVyS|y}3e4B}=7z1TUE9!e3u{$dYof*ZqW0KB$a!!n%g>m1 z-99hIePaqAv&3|Prn3F+9cGl+DpJT{80^R-SRBnowcWvWiG=#yf-hCpb#w0}Y_ZYO+3x{X0A#|gW{6SJxJ@dkfzK1z{e{3#ANp~0?YPZr?OvZL- zn7d(lhOLhhj0Jl*=7pC(*%NN>9#+psPqG=lbI*d@eUNr#?e<^ngqz$$O2Ei{!5MS1Ls*e}P#b-XA- zn5|Y9ukT@NN`1FhQD4gp=lONd(o)A1FI}({v`AD^2Udbl6KRhen{^qE z((EQyBx5h@CC;+4uzS9?@i;greh^!HU@LqBL-09`jN3s`=X|wP*MqTVC`EfUU;K9n zBL{eY4K-ei7pTHqgd10~&H5D-a7$df(T~1$DWOu>b!>`;hJ_;iI-*a;$j+oYarYk8 zT`xO(d)38{84TAQ$#c#_E~f}{>E4rYzu%^J3-x$N1eL==*;=hg^GK!P>Oj=o= z?;u{3H6s}nlJ=ag)x>U?-H7VC*E0M@Iwkpx;NIvv=L!;@Ndr^kmA=X&t!z;GM&mBD zWK0_4`lj6E5OnwV;Vj^0o}cl|aYRN;%%gH^LDdF*bf}oLmh0%A;8sX8-S+`CF)7g{ z7UKNPEalMu7VKRh+h|NsBM^zLdQM*mwntxGuzh@t+d++E7=JX(dKOs6LDSGK!@Uyw zsIS!-q_mrxEnAr+b++pPXNVvMqioKEA$u3uD8i>ZM(ocaU&)8`wc|l1@ zNy}Ym12ae`B5vGoK$#aI?wsLQD^1aI7owNThwXF0w5LJKmU5NCzO9hl?6sC{eLZ%8 z30LvqmUS`icsL9ut{(xCfBNKKy&xtFwztN^Pz>3ZvOTtpNuO^NdI|dv%`EG@Lq`Yo?2tfIq7fa6Ln^-QCT5ns=Mh-`8YGA2R(NUD z=h7_}7OB62OR$QR=}rTyk<;*|p72%RE#tmEbTEF}`^660$H?z}+>w%PyXQ<+s8yhd z8uenbxHA^*88H0z_IMabc3){Xn_TdFJ*$UB1EmA(nsKsKwGiKN)(er%W9z$T_y%9r zzgnLd#MTN5d(dHQqEy9xx0A(P$bs9w7U$2>LC(EZI#OGKa;T?k9B&EW)It|Ucwp6a zR>!gxvDUtdJJg9QCmo;nH1zgYOCL9X_}Uf`JRf^fqQl3iZf(lIw!Kla=g_frLO(F= zlti^6Fmfmis%fzi41{G8ZTsZ0D&=M|foNI1q(doXS=mp@p5qv*lGw7-d{itvD&>uq zB=b;Ba54T!TE0(R$2;S})A@m=VX|U|3_8A3??YV$k7$W7HxT;gRI}>7TlJ0Bk?3`T`axM7XH18#SBO|!9sj4YphrJR7XO?KMiCi6@??>SGs zkphuQYX4GXZr2KVgI_nSjk!-moKVMGE-^M6F6*TKqAI?ihd-+vZF&lB*H(Zy43WOc zyK_(Ik0Iy?$!TEy!q60m$&4{^ku$>kiiG!nU#ClP49vdtt=y0k?81}t%RDk<2MYU< zGA1@I*aDHPU=f#Lo)7Ibt80y?$t(ja`Sb7v>MncaI;C`#&D@3pHZ5zA+WiBly$Amo zT+y9*Y;Cq4Gb#1F{F2+jTsqN8>4Mir=`?{^=l*+kq)@Ne(P)sI5p6b8!5*f!aSrJK zb6aSEp)Th*@)&yEcd*GA&JoZlBC~ziFLc%OtA_bqmJURQjxMO_D|hiki(S01ozuYx zn12m+!k5+CE(r(97l+;1B&kcT^;i6rP?al-tt$Q$dh_PO8Q$<H6Uvv>?hZJ5E3;c_M63Ml z=1+4zvu1TqfnIi{`{{@Zg3e>Pu`XIxo}(&qYa{!~;fatg!nQ(A8)j6!n6UAFvv0YO z(n2NF?n{*dkIR1R?sFw9giFQKj(|Vh(r0$ceb4Z2yMX2zr@I!YTI@bhVI*rspAQaN zQDHi0FlRlHhXFKU1+@XN)#^>y&ZlY92?{H%8hO@WXcXrDgY8>y3ziBhRlvHbz*}F*FUI= zN|fDz-!5myeN;ueJeL0|mX;VbV(Pl=is_4%Td*O&)<{36o^sm6O)fgYpVOa^CpVAd zO(e~J@?T*ql2Ch0lWB`cS>;LTCbW5N3`1=!Vk?zaY4=?USyQ8UPT8e&N`_Rfgr3LY zrO`*6ETNdKxFEt(7qYLAHbnz@-gddQs@=GyjDv?6@-8D3r$T9nVgthB zo-(VT&k6Q~O}r%z?vS*3<8CCy98|R&s`x=eVTiD}Ys_H1yG~LRe+K(rcBUp{%xpUB zi*(FX!?wMu6umt+vlz^{{!vw&D(=HWIionUr}Z5g;?pJgjuU30&uhfu?SU_B-kqJ_ zx#UD?90;!jSFdPy(NTD|IU_e`$6t3xbM@t8u2RQ(t=*&MA23OupQBZ%&SKCq%7U%X!O7Rpmp2FA?`!cfpmC_DjQ@ z^0)rne`;f(MuT_=003z>6WLFFUDG4?{83k%yy~jnRG|`sY}GX?BVUTu;Jt?qyD@QY zUK9ARI`kdp+BZ7)La{u>wVKuK$xpwM1Z$Vdm#^PE+Q^iVB-r|LLux276QlfQ@(#YQ z4{Hz$)9vHQ@;fREelh`@vx^0v!ARNZBPr`=h-kTNR&P!`f!4NH!fD!ng0ua}za!^@ zE`TQMrpX5TtVzSvaUt0KSxsk{&4f;l;N`_p_@;3#)h=GU>;Lj?TQqr9T zhmFR5>&xI5wgRU3$HcFHQbRC`UPhmA8g3u0sP;STNBir|;wzP~OwyBXvkp#nb`sne z4qv*&IqM*=xDam>eOUcL&U9anL7&r;Erj|ru8>QA0NC60K)?X{SN5m3Pc{{$})Gm zeTi%0U1gV}m$Lh&@}u-3&mW|CV(W5>a);Ced*{ zPb|KQ^`C6p`Z5sOh{w7=_%8B!bGenw2#NnP!@VYKBV>NleZ{+{t*reLb&LkW*2QbxGHnZK$?Sbc zEAikff&m`Mog&^=O(BOF{T`HP!9f99p~L49(Iii=Lg7uxd zJkQ>KY;gSKe(Ew4iUX?LXp2KWc~qDKXbt_Ya$ZFVJ9l48ZncK$*y!5(Hs>NhC9z4y z(e=Ei&da5a=94W5&K}QWbUF#c;W-<5gGqyRyRsiIv$_HVhI(vV=CmLW#LM;BTW}bA z&;J^h|DKNKL^DC4P$+P-tegtR6GI!aHX|?`cfe31BrFI*N$fK{BjV?cd#2XMm)_&R z?@o5Mh9;Hu{io)Fq-@IFIOz|-v~?@N=LQdtu|t4YkR1FQCFx6$12WK0J&*Jx*3 znupA2@H%ws;}->`X)uo1ekxvR5Fmy}j;y_`?( z$YgXyh)_X$YG+;PP2-#LFSJrpP44LLi!oNRCGd*vF?&~K9);QIN-sRu0sFXaUd(>R zw9Ivw!}l-lZ(K722D>pFuYxhFgs(oBgT#1#zZJQ7n34+*7iW@Pj^Ec*eO+?BuY{Ao z(|VSx);@M^oV?$WZ7OgurW~o4j>y@)^#err8(Df0d}lpV7}xOdnM=u}YN*|KakN&= ztf0XCm@wo7O0?r41-ipFaeLLV@HwKuw0s#~H(G5KndCkpg>O-n)Vf}~wP_;xHlDSs zgI&^SmsbYQG0RhDyZ4wur3fYEMM#(xO~AZ2Q;Lf+IhA9SF3_DVmZ96V`-WZ= z8rtPOq^K&wYpYl1H8U8U5-CtobQ^xxI^tRa z(4fAe=ogCoLcufLBGiDX>i%8PDkw{1e{kw@#!kS&P}-#2Y@l!Ah}ay5ukD6xyLVJU zLdtB9*Oc%cRZQnHyM&BX=iXNh$kc|osW~iva;RGr z`F?%#f$7aao^TX&%&-xoWMC_z`%#{C)Zv>~GsH?oAiOtCpqeB&i12hhH6!y-aH9mz z-%&qMd^yPnfS%iW8KFz>scawPrvv8)UKlrwMblTWzcM*!-@=M<4O~|GZeQLbaxSm~ zBRi`&^t-N%y(~W%2FN+Uc}HE@*T%`EH%K zu((U+j?&X;)Xw$lGy$a4>1XK-;NC3qUE7>q=%kn!r%7C|i}f73}eR_GnljN%degxVvgeLZA!WWddU9=1_6>1D?ST5`Y0R zQ6hQpCSd*Fxkw)YdDutug?{w_30=JOBX}ASamnfs-lT2_l|iafH^)W z9cuS`@}Knhs`OP7#<3eD2T4>Zla~O)R_vDBm{5Y`!IbH#OZdUNwXhaHZ!y1!!mIT` z%6j5r_bv-0$lV;emK4Hsk6(3%RxN@vR9~pV_52*Qq-U$xcEMa9$*=aaz;yV zsuERR7Y{#)a~7Exk=7p2q-rDY%dn2g@Er4Hc5)!;fm}kd@JOD7awO?FzPTGa8%4ds zsnk4DsdsKn^&l{MERy$Wgz`KWyN*7%eZv~Qc1AN&i-#S&^?15hGVLTw#2|#v9%rTO z4h-M2DjwwNqck+c$v|7XObQ^eu9Uh|(zohkc5ZEU_(IO$!taKl-Mhrr@;v%07nPe{cUZVzB2M_2Nmhj-(ewwK7H?0#SM zJ~9dnkJJUAaO#>zfG*wRSBumbtW+yUpY2YsxInUn$my)}xXt>dmkTW5Ubh?eaW?R) zvQ<|AJC5D%KT~ZWQ$pg4PUQ2JFC$aZ3!KPUIlnh8w_=ll%Qn^yLvsaI0oa*ls^!0% zD%J!}L||lyx=Y$JO`H_PpnG2>%F>mXVEjtCE=&h7nDl(6K(xDZEWd2#uwPJt^x?k+ zzaM(HADokApAB-OL4J+;Pg(W+EdKU{0TGrk%!6HO;IPaB7zVS6Mh6PjAD>m#R~7h0 zbs(mS`n`Fl#EvJsU~2lkGasi=`6`v-zF$nZd8GUnnF_VG;TBgRSINSFRLnh^D_F5o zm!g8FuWK~=-`9!EWSDn~sm^|?0Ve#AsW~IniE%^$k}NHYo2y*olQ~v6fF#K_T3-KC zgz%S&EkW6;3X4zma%`%{{Sl^d*Ozo0^JO*3eI{+mcw(kMDLdvkBVJE|i)ir080{6G7;>_-X2E()Ch{&uwKhiIazx+hZ;{B}}N38Vr2p z7oh%x#G`N%^byCoI#u=bB?_e`cS??<>-Mw@UL^@g0@4qA^s>sbV`%#JVWXi8+##JB zV^hA28fIAQCM`#?+U_(vWB8+6C-$De9OgqK?pUMTgAI;)dsJin{Yq>d;#^1FOlWk5 zqAPJ_7eHBNcn~>FN_1iGQ$MMKVb>kqK-gh6vEM_sy}S$0y$x%skk-}UQYRnEa`c;D ziKB9%+`S)dWUG!roerxgqz;f|gE^LH*()XpaB|mBQc~*kN19f=8yxx&mK3g1_4{cV ziuMP9KuxY3UvdLTPm9?2qozy~i>{8<^ou>{4tNAEC1vdXZ~ptXw5wmCmEjuBF;f%v z&FtkVg-;?+xhJSao=^c5(?+*JZ=VE-iI8=)%F#A9(`6w1tBjv}mU*^UXcsA4Xbye+ zHqUb!C{u~4k5SS{Itg?(zJsnTi|5Wq7wVmOkCXGZtnFj@5Vs*l!vu%jdlp*G#)-?U zsJvXJgj)a=fdX6E=zH)nFZ9V~!|P+dz?C!-!D`{^^yYq`-Je0hPO=vt{~UQ?ok6T) zHTg~X=!^Qc%E@gN1~HeNnYKGSRtlD~RcPa-wH6+pgHGAd0`K2cd9o5JyWg#=sx9!X zQ~@AXKQAuUx^6rETY;Pis_4D`nC}%+U zhS5(E!C4ZvzW!AleKk_^0*y3h6NhXcr3>KuhWLbIPs*19yspL3swzuGeEq!`mUkyR z;-7Ewrz8`|F~Wt%53FBSC!1P!UYKqD{`K`-b|^3qsQTUd1|q)l<-yJoazT=H9L(+< zmHt*>98UoaZ@K+Z9i7v^fcDE;O1U_Wd=u{mPx@~ zy)MjtA_B~<-Q8%PTFtlDPrzQm0S| zM{HAxaB54HS=8p+XJ``J%;|?`k6#^6_M53InEn1H@(1=hoKh>EtwzgQ1~o}^^KONP z_u39b@~Z7doA6TCrzLRID#Y;@yTWVahsEGtyWJCu1bj)Sxjc#zBgD;nP?kn@hxI7e zD-?@5Bj+0KIiGf>reXtoqS*3af0&BP4b-ACb0WvY(blyI9rVAyF|NLY@w$U?FG1sG zIyhn3Ldx3icU8c+7ygH=85W@2$qY?Er#rm0P!FOiy)Pa~@<0^U?JX3~YKSc1>Xjp<47 z+!DAO1CLDKw@fjKhjTsJ32Otn9E^IY{qDOJjE9NDGgJ&gb1Xn|A2As}sWxW<#z)R=HJPrsWakAH#{UB9wN7)uG*R8M!>nRblCyv}H#nM8Yxm z2Ekl^`(Q4tCh#C@<$?F7-iTaqUFr2MUG#jVMHUHLvHo@!VxIl;SBiSq{T%rPBbp)4 z!c>BJNYE)N4? z7V!?gl^0I528k|y^xlj1<`aHF0CJ^crPd#b?xarol1Sq4)B&#zvXF`HiUy8G=x_mA z_efl?Y&d)817CKTZo}!1H~TM)c{TTHFtj*}i&k#pmK*)t(xwAoV)UEE6#@o(%C$1y zMQx;)`0Vdzrk1bLkjI=HkFPATZW=~Bl)_s#3I}+q)|9VxfkF8a-{H2+*8QW;UL~CS zhns++q~Bk_6{xY~K>m=94LY*^wmrV{@%f`yWi0e6gARZa(Kx{46IDzMjD>e*V?<)? z;PuxhVuYKlGtUxV|1;BF@b$Q(lxyz}uQP9|XyfXu+3d1DhIvJ+P!p)an0q;eU_c?Y ztLQLVMi$$*dDlrZ9p8@Zo!Asahw}-GWTjCIf)8zcMc3_Q?%{*&reQEw(_cF`u(^L& zJ^Uq4107N6pIl$}r{5_t1d3idhX{Cfc3R|Hh%SRV?w*J8vymvVaeoBI-9RCoo?XxqK5#yK2PkSco|a_oK>(+!I|@qujt1*)M+9 z8UjT9`R@`Mj_1`y?J1s_;MM}u;{zd7=lAaVPVRSC+hM|nn4yCQvQS<1H|s7vYP^5V zwOf6Ir~9+_UCL1bkdM=r3#mWG#~-|RRFoHnx~|WGo48yTFqRC|st&^F@P_%y;qZLp zP`h?rIWO2TlT82Q>cr%>zoc6rw5n|XR-diM;XxUyM7G>XULODlS|AaDf|VTJPla+$ zDnT*iEiv-^+5iDw^q;z}pAuQ1i2NlSkyZov$ew_Era=;N!@yIWr}~advvI!}-oCTb zdDbpYNc@GB-exX^+_Pxl7%S$nhwkUm-S{5JQ-hvsMa(CSJI-Qd%p$ze!`B-oETfsZ z9}}t*zu7fF;gIbWl;4VD5Bi%DBIs&md&tu?l^AH2cXTN^iWl%o1WRYoJt^}e!l}Y` zk`C0X4)9&aB`tVtWsA*^hP6&y+{IL{u_);w9MF1?!}0>#p;S zG*r~fNIAvMuO{4!RWrTA+nQ$>5Z`|LVB zwi;w3_o(o{=|8-Erf{{RyQE|~GrZPq8Mg;~_J(Yl>Z>B1^T7-ChL+`y4gsvBclI@F zclF8?cQHi;?W6>sJ`j7Dt+cK~c>!JgDUOXq>_B2?Z@f#ws{5;05d9A7bO8K3)txrC z9^!fO6R~@dNV+<4uZgq?{fAE>S$pyq4>R`Af^y4}Huw}jgD2i}ORIs$EgG^wC;;X( zb+Dea8K7p^^zBF|aHkoaJyRC$Ek(oNeewW|5w{IrAMQ1?o!}E?I5+qiy-3hnw{owmp+SP*t}^ zU7RqzP?<5)hF$eo4_Bp5$~N{bv-Kaaj-d|)=-V=eaGRhkYALT}F%JCT? z2rL4h-dG8Wzo`8*5Pt*J%mS zhNUkT@MCk`v5blJH5P8HC>lV_Gyf2*Zvo?X>`>J?JKRuRZX-1tLX&Ct>6u3dU4z5q zWCvA{Ir=24Tw>7uEsgZzxZ4q-evsPw(cM9|zR1t4tX)r6xG3tbZ(411t>MtPk>aaS z>&cXz3@7+G@+zLdI^=@B5+zjLc3ITh^kuf!VC5cSR4olI>u1fPHUpjxTT_{QhSZ8h zC^_g1Pv>5NrG|p!=A(Mc_wCD3dqNYq-br`pVZFlkH%oKv)>cO=;Zn1TO&26;<%I^Jy7JxI)wWIS@8B&U|>u0(Hi{7M7; zQ?LZ)6h8&(AaYy%HDi#j=fm%tS6vz>A6*)7?@WHnB8B62idLI{tCjCd)MFte4j+#1 zZ@yl=WXDV(>s*6u-`V{rz=PO24?W9aG!-kWQMZ?YD)lLApeC2xo}R2Tc)KbtvdVr; zj{H(NeDauFR_Ia=I=s{isz?~tfoOGK7J9;KjXRC(I#i{brcB)JLu=2RarhOB5y#mH z=ScYV^~OSa&wW9-6t&*W{rL{)_^P+ztZ0nS_{~KHI8tCRV|4A?1y%;HFWilrM=K=< z;BpOd>?@xsE}o%@J}OaWh&nmv#d4}o=A#+S3|=o#?;1-F`$C&l>oDti)+^ZnjUOW_ z5Lx(Gh_x-N#>R8?zBkHef;@_n(7n-p&rms<9zXa<%+gPNJBn|CfYkpUk*eQBw57@K zeWE3&r*w9DmEoD!9@)6%Dzj?sJbAC`Z$5J7eqHhwxlY+Y>-*g{9v>=FI0Dja?9-

Q`hR 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 JtaD0e0stYr1|k3e literal 0 HcmV?d00001 From 50a758b75e7becf566b29a0a1f91d5f0320fe938 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Thu, 27 Jul 2023 11:32:40 +1000 Subject: [PATCH 2/6] Typo fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9320f10b..9a7523c8 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,7 @@ Build site locally bundle exec jekyll build ``` -Run debug server that automatically updates. This does not recompile the tailwindcss stylesheet. If you change something in the css file, you neet to build the site fully with the command above. +Run debug server that automatically updates. This does not recompile the tailwindcss stylesheet. If you change something in the css file, you need to build the site fully with the command above. ```bash bundle exec jekyll serve --incremental From 3265b0f7bbf679a3c05d86342bd9768046e0c292 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Thu, 27 Jul 2023 11:33:38 +1000 Subject: [PATCH 3/6] Add blog post about react refactor --- _posts/2023-07-27-react.md | 84 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 _posts/2023-07-27-react.md diff --git a/_posts/2023-07-27-react.md b/_posts/2023-07-27-react.md new file mode 100644 index 00000000..b643dd40 --- /dev/null +++ b/_posts/2023-07-27-react.md @@ -0,0 +1,84 @@ +--- +author: SchrodingersGat +title: User Interface Refactor +--- + +The InvenTree development team is thrilled to share some exciting news about the ongoing efforts to significantly overhaul our user interface. To provide a major facelift to InvenTree, we are migrating our entire user interface to the [React](https://react.dev/) framework. + +### A Brief History + +The InvenTree software project started as a pure server-side app, with the pages rendered on the server using html template files, via the [django](https://www.djangoproject.com/) template engine. As the amount of data handled by InvenTree increased, this approach very quickly became untenable, with page loading times slowing noticeably. + +A significant milestone came with the introduction of the REST API (we use the [Django Rest Framework](https://www.django-rest-framework.org/)). Now, the user interface could be separated from the data, which allowed some great improvements to the user experience. Now, content could be loaded dynamically via the API, and rendered on the client side using javascript. + +While various improvements have been made, and new features implemented, this has been how the InvenTree user interface has functioned for a number of years. Functionality (and code) has grown somewhat organically, and without much in the way of an overarching design strategy. + +A lot of the user interface is still dynamically rendered on the server, with the "gaps" filled in by the client (via API calls). This approach has some drawbacks: + +- **Inconsistent:** There is no real guiding strategy as to which parts are rendered by the server or the client +- **Inefficient:** Rendering UI elements on the server via templates is very slow, and we cannot make use of modern design patterns +- **Inscrutable:** With a mix of server-side html and client-side javascript, it is very difficult to work out how a certain function works, and how to implement changes. + +So, it's time for a clean break! Moving to a modern UI framework is a daunting task, but with some very clear benefits and provides a path into the future. + +### Design Goals + +The primary design goal for our refactor is to render the entire user interface dynamically, using React. To achieve this, we have to implement the following: + +- Update the API +- Reimplement the UI +- Test everything + +#### Update API + +As it stands, the API currently provides the majority of required data to various interfaces, including the web interface, mobile app, and any third party integrations. However there are some data which are not currently accessible via the API, and rendered on-demand by the server. So, we need to ensure that all displayed data are available via API endpoints. + +#### Reimplement UI + +Every single page / view needs to be rewritten in React. While this is a lot of work, it will be significantly less work than it took to originally write it all in javascript. We can leverage the reusable components and design patterns provided by React to significantly reduce code duplication. Additionally, there are already a lot of "common" interface patterns (such as data tabulation) used in InvenTree which should cut down the required work. + +### Test Everything + +A big advantage of moving to a modern UI framework is the ability to enhance our unit testing. Currently, while the server code has good code coverage, the front-end code has very little. Our move to React will include a focus on test driven development, to ensure that our front-end is as bug free as is reasonably possible. + +### Advantages + +There are a number of significant advantages that this refactor will afford: + +- **User Experience:** A major driver here is a better user experience. The interface will be more "user friendly", pages will load more smoothly, and the interface flow (should) feel more intuitive +- **Efficiency Gains:** As the django server no longer has to render front-end code, it should me much more responsive for API requests +- **Improved API:** As a necessary requirement, our API will be enhanced. Data availability and response times will be improved. +- **Reduce Served Load:** By only loading data when necessary, we will drastically reduce the load on the server +- **Code Separation:** Good separation of code between the server (API) and front-end (UI) will result in cleaner code +- **Better for Developers:** By moving to a well-known modern framework, we will make it much easier for other developers to contribute to our codebase. +- **Future Development:** We will have a clear path forward for development of modern, responsive interface features which are not possible with our current toolchain. +- **Easier Integrations:** Developers can implement responsive integrations with external services or plugins + +### Release Timeline + +Currently, the "master" branch of InvenTree ships with the "legacy" interface, and the new interface (which we have codenamed "platform"). We will be shipping both interfaces side-by-side while we work on the development. + +When the new interface is ready to be released, we will have a clean break, with the old interface removed entirely. + +Our aim is to have the entire user interface rewritten by the end of the year. Ideally, with developer assistance we could have it done sooner! + +You can track the progress of these tasks here - [https://github.com/inventree/InvenTree/issues/5212](https://github.com/inventree/InvenTree/issues/5212) + +#### Distributing the Interface + +The intent for distributing the UI is to bundle a set of *compiled* javascript files with the installer. This means that the install / upgrade process is seamless for users: + +- End users will not need to install node / npm / yarn / etc on their system +- UI files are compiled and minified, to reduce download size + +Developers will need to install the required development packages to build the user interface on their machine. This is managed by our requirements files. + +#### Interface Preview + +The new interface is currently shipping in the "master" branch of InvenTree, and can be accessed at the `/platform/` URL. This is very much a work in progress, but is useful for users or developers who wish to see the progress of the overhaul, or (even better) help us develop it. + +You can see the latest version on the demo site, at [https://demo.inventree.org/platform/](https://demo.inventree.org/platform/) + +#### Development Assistance + +One major goal of the refactor is to attract more developers by using a well established modern framework. If you would like to contribute to the new interface, please raise a PR over on our [github page](https://github.com/inventree/inventree). From aed362e810f75ea8812e8ffbe7591ce03930e6ab Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 27 Jul 2023 15:57:23 +1000 Subject: [PATCH 4/6] Update _posts/2023-07-27-react.md Co-authored-by: Matthias Mair --- _posts/2023-07-27-react.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2023-07-27-react.md b/_posts/2023-07-27-react.md index b643dd40..88ce4080 100644 --- a/_posts/2023-07-27-react.md +++ b/_posts/2023-07-27-react.md @@ -7,7 +7,7 @@ The InvenTree development team is thrilled to share some exciting news about the ### A Brief History -The InvenTree software project started as a pure server-side app, with the pages rendered on the server using html template files, via the [django](https://www.djangoproject.com/) template engine. As the amount of data handled by InvenTree increased, this approach very quickly became untenable, with page loading times slowing noticeably. +The InvenTree software project started as a pure server-side app, with the pages rendered on the server using html template files, via the [Django](https://www.djangoproject.com/) template engine. As the amount of data handled by InvenTree increased, this approach very quickly became untenable, with page loading times slowing noticeably. A significant milestone came with the introduction of the REST API (we use the [Django Rest Framework](https://www.django-rest-framework.org/)). Now, the user interface could be separated from the data, which allowed some great improvements to the user experience. Now, content could be loaded dynamically via the API, and rendered on the client side using javascript. From 4334a001acbda2ec9b8d8fba3638ba09e303eeb6 Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 27 Jul 2023 15:57:29 +1000 Subject: [PATCH 5/6] Update _posts/2023-07-27-react.md Co-authored-by: Matthias Mair --- _posts/2023-07-27-react.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_posts/2023-07-27-react.md b/_posts/2023-07-27-react.md index 88ce4080..71c05312 100644 --- a/_posts/2023-07-27-react.md +++ b/_posts/2023-07-27-react.md @@ -81,4 +81,4 @@ You can see the latest version on the demo site, at [https://demo.inventree.org/ #### Development Assistance -One major goal of the refactor is to attract more developers by using a well established modern framework. If you would like to contribute to the new interface, please raise a PR over on our [github page](https://github.com/inventree/inventree). +One major goal of the refactor is to attract more developers by using a well-established modern framework. If you would like to contribute to the new interface, please raise a PR over on our [GitHub page](https://github.com/inventree/inventree). From 979278fced1fad47f97ecd7bf2ad383308d4f629 Mon Sep 17 00:00:00 2001 From: Oliver Date: Mon, 28 Aug 2023 12:26:54 +1000 Subject: [PATCH 6/6] Update blog post date --- _posts/{2023-07-27-react.md => 2023-08-28-react.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename _posts/{2023-07-27-react.md => 2023-08-28-react.md} (100%) diff --git a/_posts/2023-07-27-react.md b/_posts/2023-08-28-react.md similarity index 100% rename from _posts/2023-07-27-react.md rename to _posts/2023-08-28-react.md