From e417d28272d82b3c27d9dd5e9dda2de54f768221 Mon Sep 17 00:00:00 2001
From: Philip Sargent
+
+
If an expedition will only happen once, low-tech methods are usually adequate to record
information. Any events that need to be recorded can go in a logbook. Survey notes must be
turned into finished cave sketches, without undue concern for the future expansion of those sketches.
@@ -49,8 +51,10 @@ or even useful recipes for locally available food. The more of this information
wishes to keep, the more valuable an effective and user-friendly system of data management.
- From "
-Troggle: a novel system for cave exploration information management", by Aaron Curtis, CUCC.
+ From "Troggle:
+a novel system for cave exploration information management", by Aaron Curtis (2006) and
+updated as "Troggle:
+a revised system for cave data management" in 2020.
diff --git a/handbook/troggle/mtv_drawing2.jpg b/handbook/i/mtv_drawing2.jpg
similarity index 100%
rename from handbook/troggle/mtv_drawing2.jpg
rename to handbook/i/mtv_drawing2.jpg
diff --git a/handbook/troggle/qm-image.jpg b/handbook/i/qm-image.jpg
similarity index 100%
rename from handbook/troggle/qm-image.jpg
rename to handbook/i/qm-image.jpg
diff --git a/handbook/survey/index.htm b/handbook/survey/index.htm
index a05b169d4..9d2dbea0f 100644
--- a/handbook/survey/index.htm
+++ b/handbook/survey/index.htm
@@ -62,7 +62,7 @@ detailed topics.
rn%ml1{Fko`@nz0je&DNrLDrO| z|IlCn^U~*mO_VY
=7lZ8^^Ov^QK>#yf?3s6vX@-jp2MR*upJwjOU96-& zqUg)gmP((#SB?8GSQAf0gq9C!IcIfIiMHj|sWNaXYDsuyUk5wH##^EN^~Q*VvdaV{ zCB@0ODG+ep^+$|fksB^CBM4rd-KAB5teUb)b5#!Ne#jEz=IXb+M7mlB-gYeoKIB=L zwq{9`I~44s_Ymh6F}nFP#hc|NC~#V(8Hp6ACHo|L^MjU_9@^?2CipV@8qvYRMeEb; z5ta_1sNKqbyPrbosMlQgfrr^YZk-V9(v9l-UMxG*u?aP0-I>hKI{o#VflOn2TV_{5 z8SHsx^l}yNhgm-Udyy+atc)VLt8!uL*up73F(b>tt#xNXdK6JsYUgRR-KAC<(Q9SWljo-T18&G)zt!5BmLw!55Fh{z@ z_5sM`p4M@MRVoVet<-BOukxWNh@wlA0eT1H>*?w!cFHU+Hl<;VE2ZFI2-@{88Y(V+ zw-hFe4ta^K^Zh*>Axg&`8+Yi8ypaZ-2Xtf)N_S}2U8D74bf%))e7cOsi$CX*5=>sd z+lg&qir?XrN_|@d=ykl&ggb!bM~J-VRE$jg8SuWXqMJ*^!X$BNsQ#&Bggb{_F~nWN zPE^MjkF6-SY+gi{1sd%|HpIb2BiFtDAi6Fdle-!E03fAukwers-$|I;8;~Y}Oa2v) zCJfsDqeYG3d|CbgbPp-MDa~5?LcfgBQwbBK;y%%zegKRX+8nX*7ZsK2yPM8BIaY27 zax$*#{t3|^luot_chFL9Y3~%9HPIJd-l!E_?HE;A7yHbj`Kw?0tT?9IODdxMi0>|L z3bdkpP<;6UJ}5TM15xeG^doU`rK0ykO4%}$=1NA Ihqm2;|_YE2CT~y`7znWlE-n%w#F2HQE4i zx}RXjH%Sb`eK%}T8VCNuGNR#Y|1rZ6-_wc>55(J^>qV9^vKTP5A#}i2ZdFdGELG|J zmA!!|%(EC_&j+BmuKl&%Zr?MEDwwuFIhb~d>zNFZ< 7)2ZK=Y^g58 zUWk`uY%E4Op#-X7Azg2a^IywyZX^)vK$-D=m%`P~W>3CiKV%cJ?kO!~B*}Ts`Nl;! zu5HH56M^GIBdXqFe0PgxSv<8O(WL%`VcB&20{hAC7iv!HHH(&wbp>M}JYXGml9$9Z zq{*Z$hngG@&=#!P6ZQJ@?xM6XCw?c3c74KOIM1y{3#qM!0Z^$rh+6Uiu&brX=bSlZ zJ$*7N?nnR3yEr({hY3Y pI0zd;pHsNYUA 2>YY`x{A$W5Db8;DN!#l=^l$ zddd=ZTg!k0!d%gJZ`6YXqrvJ;VHfU#s<@sk{)l%cly36`f1AMY#M5FPV|!NfCO&8Q z>JeAmc|~dT0J7Nqo7{8GnULSM2Mh!#Ut3Dau``$qJ#9xo?piEcX{BbiX1ivgnC)0D zA>#x(eNoI+I|qIfp3Y{zdcGyIsz`3NiuP_I^8RxE3n7gM4`nGDJ6wxc9MPc+z=(0e z5a?WL-4yILva`j}Uykx=ClmtXrM_db3u~A4r-HI`2-ZA@hNDiP1`4SHO37F_DoMnm zW0>#%u%qfei6R+G${*0K&?G-e^ewu^@sMv__{po42R;CUm8!GK#9AlS4&RtJKJ!aA z!qX*o=kA<)vSE^v`toV4x+}7(jLL{wTEXVIAo=fdG`?vOsT5OGU-{_)=p%^~(gdLr zDiK8qnmAC4%8Eh;AY?&DVC<|f>JT`o{B-gwp~(~D1XesFsv((pm2`z!*c)1KHL!=+ zx5}T((J-Yn_E&@K=yh2I0nm7&W{GBOQE+U{#-c1sh6=(mGI;dI>>Zn?OO E-I^#~n07BPcV-uA#ks>&8!5 zpWBY)8(uL+L?Q{%D}uDCl_%lkV;g?ct(l&?oi1aUeQp^-2nlz+8rGxe0|ct!?*DT~ zfn`8HHHi@nm8l3`#zwHm`Lgu23qL5Lt8=eA)+9+qKp9|NWPYfZotLE4!B6=CNPSsi z3jM>S6RAt^R~ wTdqF0T`69g3Gq-(X8P)T G~b17ap*|0x%DO-nn{ zX{%D%q5NDf=FI^oY>#*Gp-C$nNfvJmy7Bf)DkHqPJ#4?Jk{+EM^ zZ77$sg@W6GXyRp%W|o3q0o4~}QY%K7u!N+jJ}P@#lhUL!AqR19eD%BF1k%-KtKxIM zTgagWTLo#9FdAq4{PNr^^%wPN1rcXWBK_wMo1o!bpoo+U>J9EX!*F4+EdP|s(i?4M z$lE8p+z24E7 uoq|r*i-8bY9uTq z1f?EAJ)<{M>lf*2$@%(v@2h*b%_Wr$8EdUr@|EP5eqU*zTB)V@J-oIIxOK`8GXJEx zRM0+4_#hx)AQ0gZ5a1y{d9KgR3y?7A09Xu6EOKlz3QE?`IzCfZ_Rk7Fw;#cYXgEM| zb@!ygemD*l^Md+@fmtffuOZ2egL7Pesf+$cc|ibRMLu^m{IFPcw?vNJV*hO#yFPws zJY|*)`t4=vU_pOTfDwYG51{*--v*}pUSQ}`!k~;9F&us`Lof0-iu+tu=K-MlZrH_% z(L1Ms^Zx88Fw|gYmIFpwMv=#BQyq&^z+iGMJ)MD-(E4e{AlMk6DQ=+M%KWhIuQtJ# z5kwRB8 yo%FZ5>s`+V?G@~+Uub5lp8rjl zIwu%fG q_amcg-|3vJ8zXN+IQn#A@Fl)A%(`ZF9E- z<#>1m(l_1@#q}4cpZt?N1Qnc)RrjxJ2bb;zPfniT{=Csu7*}>AznmCdcLb^1OLqmb zi?nn)QHz(HQNIkdkih)jcM0S`TCZnvy@{ gT5u_m+_x`J#D3aeSLBnbXEvZYA)aWLUB0BPAzYb|{I8V3_^*CfMjq$T z&`X(#1zXrjLtD7SC10+J;`~0_5eOkKsc*d9hw-PyLAC_)qqmH}oK-{PXhUZOf1AGI zFcLSmqZXVx^Y|p}GWs%at=i9l<}lT@){@dj%ntyH!HC}e!Einzb+es8nC6YvKV!mJ zqX%rIoj(@6F|?YRrfdnL?73XhL@@dst3s>Llyl+8ot^zj8g?u9*g1SR5nfc;pk>}& zTnA7U5F2kGI67lhn*GO!^RS&LeyFCpud0rT0n~|)h48=X=_op$ZyNO+yrH1TvTsb* zu6~`-!@tM|rYXiRi%)kPd9YYlG@EsZ6*?JMKT})=yWMh_i2v}V?Y7dgCY6J7BGpS< z@D-RLOOM?B@(Cy(!BUTWlqYS-UFVded*(*b6-Uyl^WW=_v0-`Na{1oQrhONDnY@8P zQ&mPmzSfRl`;y~l1x^zagUcXnFVi$0yK2{)kilhbOq3g5n$lB#CwrnAAAwVZTlDjK zU-=L(S8mmqlT?R8BnwM!LKVB+;kkA*i)~X02T7*{6#q;O$q2{u&I~yfCFU9y54U!I zv1o`!y;nuvMth!&ad@ hUgAVpqTqsK{RB8`r(N*%X0W`-5wx;maYmJL+O0F;y2j9crHIMBXz$}iM z%dL>@7D4nBv6g`WK14n_LrvrHFhn6*igCt%dA{sIOJ81wyHH9J!}+f{qODm^T;3R5 z#AZg}FzJ|L4=^U;Nw9ymM8~)y;ogN&6>W0olAh0ZLj=i?kTwY@|Lyi1Gs7EYcKgE< zTVEDm1=6ZtaY%~XhcJid0%5?pOKd^btou*k6*-z@NyI=CpVY6%+Hw4b5~cp9*EqMg zT4c!O_*1g!oak+z(lWFmy~*j$-Bk%BFj+w?p?uK5C~GiEqBkl$G*q`o#6@h8j84!O z%vM!6Q2n*=2c#@CB7lt8M|9EVycPGh^=a{9F3XpJ|Li1Vxj%;&rM<#5!J^8jrMgHy zqNt^Q9kb-bCL<$H(b_@j;)=^nd37Vo+h5CHJUvp@(*at0iv@pa%lCIWQICzN+tKNO z!3RKbPAJD~%$OyE>5u<-WmfdC%)2(3-qyq(8)$7Wq|G;?`0prHss`geI}%N-A{aNj z#%Qs6w-tl;FUF8OTFHgJT$J7dah#eWoPU^1F#3%(-W7!^)%D6oK&sjn&!igou*XuQ z>Ph`taCYYvwI9+sV&GO(@Sv>sF7@Hj^{my>6MT?h*6&9YSc{*eHLIm&9wu#%c#9K< z5%r)uj4DQd8p_X7GZ4-TPvrC&E$wc;mP_|=R^92sIxQ=5 >~=`Y?WblL&+Qy-%7729MF8Lf?e0 zN+f=d-T?H0-w7W2SdOO#?=g~JZ4FynA?B_hjJ=X4kRcZ+ygQ5%{Fa>GB8YPtkCx64`mbt-7LHu+w`) zPwo5ksNo5C2`+46f01U}b7WFP+IRDkrQrxWW0^)%z;-zsZ)^O5$!Fkixss&~W_#wJ zwiMBIj=l@TZJ_X2&+xnU&jMT0kyL8WUR^Z3+UE6-2(KyM250_tCLNf)c0B$!G^tGN zErYRSBf3T5e_b-9r&NEK!=$^!gn3eRo_2PnuMV^bR))y4Np`B*&medd9J}IwP-xk~ zA*HqtYN_py{dC0`jLe7R(Jrgg7${FSzy8iPQ-%RQdM-CZSdAmM0sNYOs@Y!=XDDDR zA$27n#PLup*>hNFZi2OSdym6~vcS`=&ZuLLMu8*`F}U*wYJSo|CB}OMdP113(2qsW z; bhp}0v3jfjpHv( zEW_W9f_?w}Oq2JPecug4uaWVBh|0opE}TM8JUCP1&D4w$Px)(is0((xh`3~JzlqIx zlF5WrsTpC9+1eSZ@r&Rui6*dB`))vCU}^w`FAiPC*(m4YDov8DYOjo%r^rzJJ2&?+ zpGYF@wa2JY4~&J;`2X?r4$zT3(e`l1wr$(CZQC{{wryu7wr!h}q~lC%JDDW&<@etI zeZ5v!)v3FBt-8Is>(<%(oU=FW Qn($-7;)2D^Qq)Cmt(con{^=JA?KrJ3PI(g zASM2mE*;!u!*Wk)8Tgc3#!@nKQWUAN40@#(5j$qJ_=S6&U}M74t(be2N@!@Mb?xF2 za6T6t9P# cO|la-$i?_a!(+-+Xz`b8qkiYU#rtQrO6r(Wk5)v6*GWhziBb?@qJmkRu~ z1s$0$aobJldslK=#a-QOhkqUZQ2y;}wnAPQZM0J;VdY3>)FcSFSmX7rzIa=zEnhA7 zXEQpPt`#HvBSW>W;PJc}A;4$m<%CR@92d%-sgF&PW6I*Ur$v$HT4EwHwYG `oN$yg)<5mJ%ok@~pD*G%ET*p{>jBU9bo3SI2 zW~k$(>fuJc?+|8ByHSHUXkw|w;Ye2JVmQPsCkJ2LTIn-uY36ts!|gl|UF+BzpLC&5 z3bROSu4 V-_#>OVl%(lrU*jey?M1H&Ak*n*U z{131*@i=d8uNlh^R-*(j{|wCm3 !)2lF7M|mHS&VA^zaqtU~~k= zUJW+v_!ot*ixXY*%&J)h0WhbjbBw9Aow6*Ue^D*nb}Rd=Ma}6INSe%F`ttqr#u)yc z(DH{QT(b@+!l14K|2VZZAj0LW(dt^$P*Jwo&SkMxin$% =pReGrvk;b-Sm{v5jXrV?{3%9TTWYz*=Xy+4QQ89bUt?%yfv^X?_8%;@Z*+t?I=2 zx_|>pdOA=BMnqqhp_b1Q@B9WIpTVg`q;Uc6i_LF|k%HY5{s2<+DW>Iw-g8q&*h7?V ztj^^LQ7_6g)o#nU1U%+ktU%l^M^f0GZHdx^4r;}dM{yuET()eje zt&9&*8s;%8n ^gu=Gky!Ai4!HVeZPH;3RKI;l>EXD!{~SIe~5AU`!vypkp$o zRShM>SWR4njSmYLGj;iONSSlz2(lV8LUH4}acmNS;L5sbk6g>WD8FgRMoHszB+U^r za{Z+{>V>>2TY(}HN|4grwSU?nPCW+ODo7fpLg $wDjzspsFzFCW0b 5>$=aPcK&G6M|^ zeGk|R`VKo05NFtQWKr5>Qvy3#O*#~!i0^~K-`3bE7K?!rb4SEnRtij81K4USw5GRk z%m{nAHP|i^OvH&;z32>T$?Yxw{kUZ$x%!a#C>Zkz6f)l|)4A&DF`guwyJhR(JVgkQ z@QMr8&@+0^%7mR7x;4q!dW98WhQ^MzCQo;MvhK;);kzz(3lH}RZrF@&-EwqP!#*j@ z9MS1)?ZJ6lkH@o(gFvo?5^C$0R~XY~6i{%*j&QqZxz$PMLAM#R=5HAv-*i@UDU>12 zKY;Y}%(J+UrTa!YG~$v%mK S~YV5SYiR z_d_qImUo>9*_=W(EpIG Cu&DkeQthd0KYJw$wqLMC@OatVo2`v?XJ)u7cc?P_v zw&q(Km4%n9l-Q78jq{LRdP}C(!|rZqbGOi0w%@R#P$)^Tv8KWr+*=x2U0FYSbO_L& zNle)4Y_}-Od1Vva=Klu>8-HCifO?IV|D8F$@b 0RqI)XP7ur<0u+XZ@(Rj&W69XZeScbNl^9^rx}CO49WmUeZw1jlF>?aL*^-iNfPMFtYQ;2RTaR*0*GrOFG|lT$^1$4(hWMVkcK1 z#;k!R%yxTKwGL!Ddx7p)W88?eTI;)X^|=$x5Ef}QZ>L{@8I)ZR*Cg@K1^blx1QOvt z02Cn~4NOvSuHdX{C#>fDiE@p(ruKN}2C0Vjk4%%Zvl`2h=?6~fce!I#q z0=py#Vh5MmFu5f;84)M$dXAUz(e{nHjPJ}77?Ha&?r_1P)waUG!NOd&rXS=8zYiN7 ztCK_$loe?ELcwe#dEn!!GqlXf=%M$Co!IxNZ)9@j;Cz0Ulk2$uEYpfwJ#__;piLcg zj%(00V_)W66(foc!Q~67_sAY&luuRgUkAd4lYLx={jjg%zUW?Z^+`yn!{@XrKL?pR z9DUQjy*ryJtFzdy9N94d-bWfl!X%NZzFp6r!aR)l;eQb<77MyFcCz?A%ZBGf)e?l>y z=s__qe0glcB@3yjFVNYAd~jdt EK^{70P_4F3;Lz3ka$@;<& zwWB$;;yF>?+(`Q3gsWksX;H+u3H8X9z(KKtsq|R#=*JImWJ>gC+*_R`x@7m 1PoIzW+Fu`Vo&U%@d?fLTEN4<%I`0?Q-FvZ73DL?LJ#6Y!HHcyJ zu>0l8jh=j@Pshg@tz&Q!+fh+%?Sfih+m(uQ#0=ESpR2psL%}vWzVG1ex*<9csa$fs znK;#!GyJ)&r1Fyo$%ra{wp;!uuYQR5R1ZI&oQ`gZ#!ayP-rxd!y&>cPzVpy_ooTaZ z+Hvoj=&5Q+fVDEj!8rkUV7IBT961w22RDr)p#VRDgLREfeW8NyRISc!R(tq+mFN7G zUW7m+W_%+8iednfht*vyrQP%(^152=ou8Nmuj}7mJadVp;JLhezC_W}E*@n1Q+QL| z<{Fu--fB$w;~`C-F)~sK+00dCf)SKb#6XC+Chr#5&Je#`nu`er@r@&NdA%$_5?xA4 z?mpxzwDatxHvXslGO8xCCbJcxaM`@y9T7Sws4WLnl#6@n9uF?F)zZ=Jp$3*4dWvu= z{69cJwAy~;Bpi~Tjfm+t>X0y$NTJVLn6{LK*3v;t>@#t%CiE^d$|2hw6q1$@$4Oj% z3GUj8xCT*lbZ%i1OZ H2Ji5GEXfi+feveg?Hz>0}T6(0~O z7nM
`s;|?-foloixd*)*qCf($6lOhrL)<_A&4=rIt$yp=afd*yD~( z-ll(QVw*iF54M9#QTD-3B2;_Ji?~F;m)I3&A{6jOsdrXY5?KjJ=e0Vm9qL^txv#Kr z&bro~Akn2upCL_Pj@;+4jEV1N7a5diULzJ5qfa0sPS7G8$pCzDH1KDaK$4yWvp2$m zN^7GC8^X=g4-?mZ!$|RY=GjzUk$`8H&)va9dcV- cFX>^xFNBw*k*S|dKITs27_>C7FFV0uHZt;&c!$e<`C12M&6uRRrVYvZUrv3Yy z4Qc2;5xoBZ{;yY`-QGY1? lkQlZ#*#bO!AL_yU-COy`&l zSuR6Uu_w{Eajb}~-AMI$T(vMDcUxQc`Sk=j1q)Bio_m 3Uyij)N0+hI zK#ycvRVPIAUTw>#ah8!-=+_uA)4Od<|FC84eHQ!YVS6&ezB|Q-bYJ=>%cI?>lb=Jk zZw+sw?eYCI^;U(4ragC+3s Hxgy6F z+^(vqI^marMJ9qZF(Zg-5wwJEoLH@m?5HW(^xjL0T!3 (c>@-WXB!sK7Ud(w)^-7J7c?s6Y|trr-EPgARGL zlo)}CJJ*WipgZ4eI8kUXWzpLxC}Ff>^x-SDka*KJVRTed+i#7YpGa7YDHPxrwNc|O zQULc=_pmNx`5v%!*+ (90BZ;kNqA32a6q?8rCkCw97(ky8y=wyE#qzq{ICgv3@@&Z@+65JT}y zw{Vph_+10LOpS;NjL_e2m1flpBPd!#YrAq1!hJELiG{cqAjZ{EvD8}O- _mbjhM{~M^7TF&537o9#`!9t`Q|9~pzbkkNn?)z4Oz;t0+}jiZ1pz6@DAQ|-nF_3 zknq9Tl}F!S{d%yOUCPjdN5CQT+?`2b_H2HdlZ_b41xKUPK#^yUh$z`852b<7$6lR2 zGN)7A rw0gk40ZUl zCroQ1gA*snaUh>b#|$P4<@L-+RVA;>eriM|4$tt=(%O}^JezD_s(<$pOJuo0g}Tw7*B!-Y(Xc_vUuuMwgm7YC#$fM>-qJfe=&o^5u^wg918rmj zFjan7Y|E_76i2tAG*sI*@Ii!U>#uYqbdLH$4>H)ZCICw>II`o@&)bRM%cbUyBq4FO zef|_q9h_Hp%bVK1AW`Nev|*pMGAT@*Bh5^(L`^yo0?G~T66GB#Q-%+6s#>9Ajm^<0 zZ5DK5o*e27c5xI;vFSLYN|+&hgL}LCGxtwCma>${x_gC?=*rJ*GY^z>W|u#%9Tv~t zOn1+Jte%YwFlfQ0s9TUN8Sn%ddr&|^e{4MHN%VY36hf!2@xuRV&l7JIcvmw2blD^d z8;Szn;SUBh7KPhzppsR)h3U-B{ZjLb$KtfCuEYCW^>!> z7?K1dE;LuNe!Gq!Hj*pfRO`3vC=02{UHhNwcrKjf`RzJtKDGc&{pz?}GYXcV@kaB3 zIY1ORb3za$!uZjEcE(g4Mjxi|WteUeIFhbxpF7uTK|Hp>e*i{486hJJ!9U&*#rv9a zf&L%3{w^5VFGlt&TsAeZhXboPR&=>u#Ce9DHWNclJ-?!-?#{T!e)LQrA;s< YkE)Y`C^vt4i-PnZ~l+4}vBS1nbIe5A*xkRO*EiI(nc-+D;tr z5jABSwhA!?z#MEn^!z?7)+3*>9KK`{1o$mR24bs{$ Tv+>@lwBW2S~_owIp|ksrmVSfw`3^p*9oD;jx$(*NrU9vXUDzaoCkj=1dMF7 zdW#U=)Y}+A2-76@W{WDtW4kg{4z%*Me5usMi?RzZ=P1QOMVGI?x;_0d{G(vnAF R=xG!3&eY5I-}3P-_HJIK_VT6CWlCX2*A3UsrxfPaFA!)XAcc83h{f6ml7gRzbg6sOntC4vs1krwv`7i3VOFFrV^=t5&D}A>w5Pe z=}Gr*@BUfG$WNIxkZVqG!+*x(RIc^Z5ko&(v8#iy9bi9e^8PTvyVYl5x!pw;sYy;H z92LB=2>PfU2GX$e{$S^cum;IXAi1MU8`r2VSxIT03?YCnO(&n8l@pXB2^u&=-eJ2T zC77pi`3Ja?C%(;AES0Z}&rnG=JBk)oq^+vzI2Q5R8g1KQe9g_fH66F;@P_z?aX3B; z!>?;zl1iz@ST+N5unRvj5{QbiHodr9(JxR;?zjqSOZNc2orx4UvvLRrm6j;yD>eIz zR`IrTMr84N)tZ;eEBF5Z(bRKs$4kdf;Ms^ie`4xZ9%Z9+1gd%ja*QEVw|@3|xR6Zg z=THC0!)ph2xlPuJ8L7WJ2~Gt%beJu*%*-{j)y%vdTg|h*I><@3_FA?j8aUv}`)_Kn z#7rA*$gER_Wyst|=>i#0aOWYoiA|#~^DTi%{FQZ-nJ4Z)(6veDD(S&v2`A0bi8oY_ z^h-e)8zX(eGx6sku27q{9$$VzbW~5wZwFa2g8Y(DQ`VcRAzV~$AnBN1&ttr^DD1?q zM!LhM)KIrSYgnhEv;}7iN;3~{ejKl;Xi{&yRWN6zU_BJWEYOL|1>x-d-Y7=;eeE-R z$=f&-oJ7`M?rIBS^ZQ~6EB3Drn yu)pId(Q!WfHHP=c}@DmTHshAU-N d_i8-L`ihBila-f8SsJH`gz=bG z+RI^(6TY^K?3jdv^*T&qcT8i#%z?tPSUbk5Gx?cd$A CS2x*h;0RVc|0;@0)d_1xgYS06ky~T+`@Ys}+dcOoC zQbW#r1eTNuqNwMZyoZ`N0+kKZ=qheh?or0ccY4>epLi3Q=nigrO@h#8_fSNT0$;g4 zS8S&@9YK0A0rt;Izv~CvyB7H*^sw*)k^~X@8s|fWG%Bw*MKHtmqhn#WGnbYy3A!x> z{8M$Ft_Hj7Wh=( nljarNp>&btZ9&WDl}MF-lBe+)LQIA6+(hH6!oG zd8^wo1cR_ 9E)sH$ongFj>O0G6ZqN{>8rEv@DlR+y Bg?OiWXG~7(zO#(@k?O>5YgfDQGLXBbuWwpP+g)p3KPR%FQwDYiPdy^ z;Df4fN&S-jV-wX+97xOy4Cwygc|K#&c@y~Nu&D1O+vB5N!wZ!bsS3|7?yK?i-gxI) zI#{wL;didM4;;ipIoB}>UYyaXIFM^I+j$;o^vtTaJDpLs=@V|NnBNSq5WO3spsO6y z5fV@H2nD7n{0c;}IO XOdCd+|1gSa#3JV{} zCN9uQ#&gW(@x%=m20kTTjZ_3N`{fe1TO_XNjFydppRjhn{y=q`Wi$?3edj?pMLc5^ zjB*XGm~M4A$hcwtq4(G1iKdmmAD@GGr7N|ugD_F;f@hDaOHbsG#Fgw}IWKjOFRP6F zvgr@H5OUwxdB3Whb@i!cD<#{O{@wT_mE0kNuTJs3*#zDt@+%ejdeTND@aj^@WL;7_ zt)sno{ztQ&ZVXN3$n|!2Pw08qtMgK97Mr_u;%K~Sc4f4Qh)-&bAf~3KYrJ8y;F~o1 zeJ8E>kB#HFd9c^EH|^O}H79DRZ%V<~)=q Pz+X$uM z=_VdajWMmi_VcZx2x{7*rFpa$w6>hxL_I3a#WP%OIQS~m3i|3=TKYc-^r;OdPC?X$ z3eg=Q`e#1+)Rq?;G;S`%VX2z)>^k8}X368|yNM<9#9PPCTR7~mtB%9jRi>*ECDSrI zYCtT`?G{2Rp`{=RaAD;-qc+;Xr}Z-FqQf)VqF62)o7!-OS?EIRz(^R8T8$by>g?-b zbPsezI;fs#tF)oz#eq-VH`*?W^`}teX+Fz{)um6T^3pPoNzvckBVt-a-XkdRMyzE; zr6@?LgsJeV%TYHB6$MqON&}QZps!v19H&+nWu*p7e0v4E?VObSDLBq~wdOg$P9JCH zi^z2Hdmx^4`6w;jIr{wkwBOO{`f2+TQMLCUV|HN7E`9u;_Uqdx73!^P&DtDnqM}}A zo+Xzg$SSC&^Nl&aF3>K|j0#)eb3hW4*>+I_t6Tm7Lj0JtunPMxLXAKle(eh~oXjYB zd;s4*`+P42M&}EO?HO DU4YPxnaRrQjlX&rntGXBa3>F%(yP6sO{Xng ztAF5cH|g(K-UwuDv!lw+w15Lgj&cmj>Q}Zss#9lLdbKAEFh;dC>;;)$JlAXwv5(5< zkVE;kQ1;Upu1={Cpk?n5W(hHS)c92hq5Rns@yAau1kyeo`j{49)y|^|7=myYW?L3V zs%&aVvCB+S)aj~ R!qh%# z4>xgE9qkZigcoJ(?a@EcRD8AN)527qFi-WuO3_NECrQ!>V}+dz;S^b>UKpCXS4Nk@ zVt3Dt3T5ypy pQE(ON3pch~- z#hAt98Jr<1ctaS{EX@l}08KfvFB8@_C4zPR?&k^mO?x<^UuF*+v^gfvqw{G9&n43m zt2kA;+`NcPusB-XYNN6~x3IyVSY{h}%4{@rPqka$(_Gw=r*CWiD8yTy=cI>or4kgq zoSEof^Wxfh8M2YE{L)~JP*Iu=|J?~O&I!TFA_2XP(Z?UlJpwaF1~&`wkWugt@LTK8 z-d~4xgP*^8W#oR;ev=&6sf1YtYmYA_mF~&986hq|I^3^-{saYuQiW!Ssk2ZRXF4r@ zEYIWizGgR1_GA_pSQC!NqF(Cr)Arncy)J7#YQj?jo|l?*DJFhFmC21bR@Ls5lbQp? ztujW$0?*s<)<}ipVd*>cu0d4pFR6qqAyw=p@OkB|Ysz6ERlQv9uCL#e*9IGQ9w$X( zL+@X+wq}CXUaLhR+Kj}fgl#HE3qB@X5s5Q`{&=hX&85q%ti(ZbhX4Kvc8cH82Y=Lm zoGi9PGl&bZ=g#PTA}x-$?|mY1j*ec}adkmyl~T$y6UH34&~=P3ayB_;8bW`$KPsrS zXSi4pF!JHwNPCy+0lK?;+@>gAVriS&Y}iCOWs-LxROX!*ttxz0vE#;s_gvK{j$G;L zN<~^xcY08DT%cl0S&V}w$Yxl}x!js6ll=;Kak}Khl49+ig3%dQd44pM3-sdk_hief zX6akrS#6D)uRvOJg3A6Ot>eSqMu>610AeGy3sLz!SQ4y~C{TdZt+Pxni2&IAty;n< zC=uLHH>6NtII{Ce>4*Rx75gm-&nurSl0scS`d^>zJS%hRz+-m}W>==os2H%q?y=J- z0y0>+CldtE2YGtsZ|}W%+-CMm6~}05dk7hd7_u YvF$~Q3OTpAC%nBkYwZ-rf1pl zedO!Jl`+G$9ptvGM*;285ZtH{wmN|O({<>vwu?}+Jbn0{L2llzJS0`P`J$th{!|Ly zVcO5*ckv8_(eXuvvn*#A<$JzTPKktb(^A!nJNHuzPG|(- XFAkMrY&xwq9} zgFq~RvE-~3A{`1mDtK!(JYl2BlVamE^__MVy5&Rzt9-J)Pd0rF^lpQ6BwqAbWKxcC ztTSSdCJB@8&MM8C@hTZY+aT;xJo+rV8MEnk6wUVAmU;ii!;F)6yNAd>zylla)|;O& z4bjKetHi{?IMLPmzJu(GZyx<8V((*NUuMZW!+o{WKR_c3uj0niAcNT$WB`VL<9+3M z`=63$hhahXuOOhW|6#!n^yk^5re{ivcEwrEsK*|3@kL=D@ap-jsk8PUpc=0~0uPp1 zU^}bEvU$?Lu*`NZXhp7@Zc@7H1VoB&&~}NsHgo$~GDAGd*qIvY`&K})6qsF{6Y?~B zZ(LDV+2EP&zG-3eaGS9h%T1PS7P)}?*SugYzO{8uB61BzQCg|H_C6sJizpL7J9rD2 zYn?K9MmhYJSj#Nwa-jeNN1?x!%#AwI1)S4%ZQy*{hgFTl5q^XeTm+!n)I;43x_Z9b zO;rN40vcg|Tom|gLM}-`L>za4OUT>4qW-nJw=|8;e_tKk-k~lNxy!GPtVTgTyr%RG zG@wL_mM{~W#;;? 8VJeuD!j&W5*$9?wq+p7bgSCorgJR;~ zcgCRJK*4g_gUCTk`lq>{_uJy$`|I=ZLRv!^cW1Ko-qI59Uje~-MWBwHJk*TnxOwLB z>avjj+s$JDhV!e><9TSBJ }Qss{X15#iNJTde@im(QRhB~3b_TMda%Qq+NoxAG| zGvIomz NL}X*OiT6a;2h-b!UdM%thLJKqF`mB;n0ZVF-Kk~xG|W= zI!0#`- z1Q<01a25c2S7R1$%S;!iEAKXZfTZ)Z*XBXucx(y ixgx V*F~$Kn zk%nSBWChBFkl$r+Bq+9HfiB`-w|fdnzyEer*$d Rc-0nI4IXD~d`!)p z{cXf^ECVB!nEFEVY|xIBEsge&-r>TmvQM_l5@uNK4E2Q^1<07pTJ96HmUul)XXzkp zO&H>3&UQ7&j%zV`VK-~}QbRWCK&(w_gfz*STN8KvQL{aay8^^(NI`^%b8jiKBX`+^ z#)i4?x8C?BWprj4A9Z3ov_Wg;S(n)q *U4{JLP ayag!@Wd z2A)q9B%uqB;|de>0MJ{?0gW48jS?^2XMo|shj8MGhe &z!%1)9kT7@39&gUNQ*20uS6#c>vB=6vFNyT9YyuIoHhYJA6a7+#$=PW> z#vE}nd;(G9i^|i^1MS3LNcm|OTCEaat-F+p_=JknRx5L5HXknhsnLH&esx^FE%euc zS3OYwI}yph$+x`+>IZr1cBGpqCw6SzR!g52Y&?x`Pn|d`45s*Vt1$+7N>LWQCX-xe z=wN4thnDNu402~ExhL)5k_aBWrv$w7FK @Ld&2#e|sIB^WvRm$35SV&mTJ-T$fF2$6ik{4uP;tPJ;N9tmXu zlU&r-<}&GvNeST;MPr_3$4s&+gSH(`)4Z1C{uMBK9v6X_9a9rV3Paqd#RFzFh#k^@ z!MLruuEZV)KK`L@kwG}L21t?zqs5$g$eKX_enx|TZEK}i+;suN(>J*&{RsEnb#YAE z+w;cpm$m+4S{c1HU7@&X?qnCT!*S<1{b;WiGz_H`Z--Vg)7`c~N+?>l2@?hfK?bEZ zUH)XPp8f~un{eA@K)V7FERPDtq2xfsJk717OG}ReGX__ds9b5!vHk$fnlQjp^#_Mq zFqA4=8>f-^%AEi*{e^h(M`PM|<#xwa_D-VoH>*o`@;@a}S8!Xe zL%&vA_;S4|l*KfI<;t=jz^RbE+9I;n(chCNWnWE{hpr(zuvAF{1;m8rOA8R>)2KGe zFbXdj!0>lPhLDApp%drNG#?8E{o>Ccmi4b!rsF2NUJvf_#l<2%cSTY22D{C&PVcb1 zbWG |o1` zbi>P{A1x=mh;ru-xr fGe-R$i%&V&;S;P0w=lM-!AJd@0P{ReO zZ!LT@?ewj6jX7ppI>$tRTkvN2h{2|{fny3&ridWB%MKx@|73vKgEKN^c4F*gOVBJ| z>5eb2+6u9A4n`wa-$aiD>CiSS*`Ae?ST~)iZ(Enu(9qD)Jnz)fI7KqI*vx7qeZ$jz z^6$wq)=wfO7sI3RPoGEmPL&3oT^ys^mc-e_$?eks4u%m`f}lf-VxcgSxv=PRni21Y zoYclI O>9Q}Y%~nq9*G z#$q@ozi5M7?}p2$CCmpau#3bQW#pISs0A&(7{LGp)W|cpBha~KrVJ^#iGk5|yq-yp z7!$-fQGr4*bjXkc&_83 6zzXsPr!NvNyM2|(<`7*xjbqysfHce z4D)t{(o$%2wHyA5I5 z=nYh;jWIeAt2{o0MdE&lT*%b=52)C81TYDNgo+awhw&Hb*oUHa;?!tCMKB?uoJ8)# z!gb$E9M%k#QhF>5<~EDzPLaXEl%Te`qYp=8#b+gib}LZJ5ar9_OD0#$DhfE>MuwEB zbwfFN-dZT}<3VY*jc+tp0RG?3@~T>{ikXhJJ?&XSbawUyq+KOh4xbWyNLA(YNzxH1 zk&cDtyHg{%;!=WqynZJ>p@_K9DlgLN=-LFSj%Qtw0j*n@wAh-gDnnDg6Iwt>4v1$2 z6%1kDJPDEr&s0@2p*#zVOBIfG1_z5V8O58Ql)-$c%dUj3Au3CT-K2&QiYRt~CJ^P= z21PWKNAyOml=d=Na@d2PYOYZIcC)h~HY!aK>^9`hoiee1&LE>;im?%=FT_v)aZ+(j zcY!($-zrN}J=mWhd~x?=1Xsk|8zdEr2f{N*I!qgo`MA91BYT}n&>LyP!y+`*g2$a? z@soM#S=2(%;ZxpEs5%1Lw01)Dc9HP-NEtzf@%xG)-3kPpEc&AAt`(H%?%)Gq2gQ&0 zc dq8yKOq~qk}H!Qpe0iWR>)xFS4mT z)e|Fv_J2lANZQ)7Gle})+mJa&&7DZC)r+80Ay8SMk*t3kTMAD@_=ks0QT=J5oIU5s zq-D0#coT{IIt<>}vsNlns#*t+smw-kNWh)h$7u|z;bt`{-#{$4A84!Do}W#j5+ltE zPo1b&?M(H8e(u1)@=dFHsR(QR@-7-rlYs$aCC?Ehi3p~Er4NP9A+tL2=xW`U0IJf7 ziD4ZsT65kbL-?&Cvxr6_O>ZX&Z)D&LOF=of7yT7EJXM}d9gfb*i&96GLFY7N4m{oY zq5Q`L6E*7S11)`tv3BJ&Qg?ZPg?_-09m@7yeF07Uv!c9tR8S$q sKW`hJbF0DMyJ&|hz#pykidGGn^o|qRe>vw6|vbs*8RyEVwR;h?K6Vp z2rfx{OCL+AWRM-rJFGZfj8ImA;8IRBW1CXiX }a~VnHfWaQ8~= zYov<~bgf$xx qb3qEpvWwES%wFduPlLlXo*TI9N_8naM zhd %04!gOgK|Xw02#8k29@_FpDe5)Rotdw4J0_Wu(3X+ z5@Wbx4bkvWn5RSm9kxHuQ-1FTN2 5)6n^H<2?RW;SF9vbm *8BBCIl>>eq%emW1hlW|-e9nFVtFC6 v qXU^e44@!g@Nmh-BX*sLQ-7* zoWgF7Mm+J8a{t#&&ev~Qr#_Dl-Ng!!zdPMeqke9DoBR>*D|N)dB8;$_JAX_q41_W0 zYbsv_d`jITWbf?@!H|rTd8jD#f!k8~ttRrcRZZVVw(ga1&zPk=7cUd=G%Ddt+re6L znw@LPwiEUdoKu;OrfC!DX_H7+wI&$pG*WEwj@)$6D!4Q5uhSU0##Qh;lbM7xC)mB? zoP H@Jf$k0oz;UCoW^UWg!fzb3)d&NFurZ%*5_YV65uKE{bppm0B-Gg<9 zxGThx!ow0MX8_2@IgJRzYLjA~G6~XMj{)f6gkpXxzEnR)rM-$>|K!n4$ioW#F|eWH zVp@kh`0)!XOkPyLfuE$-0wlb1R8~B(H}!497bN|-QxU>9O{y7>MkPYhj`f%Jni%2F zq`lU|J(we$R`Vjj(V*y(T-sd|l2v CvbkvkHE|L}mwNUV+&$4Ld9`8O6w%8>H&8SART;BIBQjPEbkvTv6hU_-&V=7` z;|SCg7G_dDc;X_AgdVD7lNedCEE!Z`G!upWtRLh=)Sqoa^frq~nW5DguG~`V!5jjw zN`|UDC-@hda;LEwxx$Dr;HV!`=Yt~#JaKA-xn%eG$Qd;QcGS+NP9&D~-J+RR-6%yf z3&gS^Owap{0A^@X;~@L*s3B~ zvQb~} yxsO?7e#%KL$Stw}oSS2BiD(V>609 z^^I@-n2)Y?-6LRVT;i9mNPI^Z(UOdfF6<0`tdkW|Hda7d1Q)_^Uu&jl_D6J>INKWI zGG>j2aA(o8C%DvmlyDv)4i4{OL>+Tbu pK1+!3B3kkPVgchp~M?$@9xW3!WYY9DTeQgrw688cyg z1MUb;B9&)I*DX|EcFMy0P*_EK##myar^@v0e~IEQ3dLaZYeWQP#Gv`b_;giIli<5E{1aRn0N$|kljA=NKmac%{M~^flT`o!>@!0_KL5=EXa|=aEC#*@|Gfbqbl)8_ zw=)1_H|Reb@ZI){GtN<~4*X}`uB`cecTn{IEgpby%MtZoj~oUMBsY1&MTR2&wm?k2 zn|Q&4@A5ta->U))0`NxR0SGPk1JDECOQTVuCS?Z*MT0;bHhf=2g$DqZ0pII={GT;{ z&j7$7PXFuv?}b(;{J+C*Fo+c8TgMm_^cx8JKh5L+1%r@@O;o 4A3hw=Ci5Gv J4Rd}v {qH?-|CzLcrqg9_C}Mww9+jBVW9t_dG8v)GR _CJjNlh)$sP_`JopLMWDM4=YV`1rO*pY*cHw zbRw=vDTy0b6vMR&XQdlZ<8syFhvLb^Aw-Aof73%6DltkFM?o*0BPht?QI}H5eE8_} z!S>SJ*P!99$d~9AvosN7c07jRHGTY2P$Tjk%tnJC@5CvUX#_biT@vcF)EvPNM)$7? zQ6e5u)L!!pY89$ @#|mj}bRE35 zZRthbuAnVBPH>jP+xLMy{Dk8FFZ>+?;; >Yb=@bP|CWJ zfskJ*$&4&nj#iPWM%Il#iYIcndbVGVL|#WTa(_u&M6eAcRS- SZSF&bO8_Q4BbeBvl^7lAc^a^njw^qV|D(0PVtT#ucbW2_wBMcY&$8?1%uq ziW`L`VmtHvao7B2#!;f1xsT8%Sc=?$F!oy_z(6;Gq7U!` bruW1w0R zKMEWJ-u;}+CWhHKC=?QyWkIe9AA%p&O+5^t(E>mRB4P9tRy#Zmp_BqI9RZiAs}uAi zuyQat{s9~R08YN|8at-F6j+P^P}ijAziwg|Qu5RcG>jth11}&42ZUTDOXNryA!+0W z1lW8ajL=eok-n()uFL(ad6;vMy=g;aL%;-pLl92fG;Bm7oB~~#5W|eM2;?a3E4SU` z5IPjeW(8hTN$@1axhm8IP{ZPfL~;ykswU_# a~RgC %MvlEDa<$E|@xVM*jM`E?$2*b@$(h{|D_ zDI_(oW~-TkrWBxspTZaP9*7L(2@XUc2#6z0P$gf15!?y@ZI?kX1OOC5h=_=yH1$=- zfg~^sG`*4sKWr>_FacFpYO46)iWL?GQ6%3&g)RN*jS2_G+g g2tDuXX5CEA2g+{bvU9p(UnsUoy)BjbdJ3kU%b5PSiR zMmmOZVQyWo0w9^vv?wZV3VlQa-w5lJvl|(wi*~l;cs!=Rq*FTm6ksS0m7p-Ky_eQ( z9e^a|H%Nxck@Y-1ur`*nl?uB&-6S@}gG2)0v~PhF^2J4sYvkWIqNKEp04-4%RD)tu z0)SB6xfO9q5v7Wy6;MSWDq|!vYj&4S0JH(_0wqX4f=I{fOL&}cC{##b7P62=I0H^- zO0We|!DIFS{Gy_PShS~miseWFF=Ssva-zGV=YjS_a)#9UHMRL&q(XHh{8sEF@5lfG z0HBC8L{SnZoIrzX#VJ3NLSRLqVBu+9Qw9{r@<4G<9}O9l2x= 9R{{X;h<8m^2=L38=PyySuz$yM8)*qIwSqUl}f}5MgL?==*+K4JZ(Z}%r z0RO}QBoP4t00II70RRF60RaF20003I03k6!AW>luFmXVEk)g5w+5iXv0s#R(5dH_5 zo-Qsu`p2L`&g>vBw9ETWvBa;00$7HCRhA=~&D+(`d9@K=@HH|_)F5s$y4Ux)akO_a z^X ;V4ura8jHJ$PwX$&PRX}*h_i>9}zP15lTA3AiP*DDH>E@3M8Z# zVu;k4`Wke)MMTEws3>lNNXmdyHVpvY2r9>bSUL8;ixH$4hP|K&w5hEXSrI7F*qkT7 z)J(ui3;-&wfE9SncCv_Tmxy#()=7w4aj5M&A{Ta*5iXt4qh#{RP$e^Koa~#WeIG5? zgfz(R9JH|DH6z9uwF4p1GiYZpPATQ31nX7-zXdq;H44C`7y5%@8Y^P4zxhxziMe7G zaXtZ@=CT^JZ$cvUNdh7y5!inV`~upjcOfA5B4*Ah1aGc-0e2qA04@gT1TcvWpflTP z+hZY;FYzwHUQ!Mv%4xOO@qAqd1?^m=Qi@+V1h9d^9UDRB;tf^OdjJR_QYS2OM>3!Q zHmZOet}uf;QB|ZVB}3>uLqVrC42U@pA~@5FJ$auXO4_1u#oJI!TtnO(kX)sV2zCtd zm3l~2NEh|th7>a>-`T(ru)+Z1svPJ&8|Y1XIzi95@KWOK;OMkf0>sjf# ZN9j5^z(#2o#rW~qecNaKC z2W=1(v_NW6Jxp_-C=XVMTVw)_i4>01s0A2d64WD=UH-tnG{F}}olk%pYo$ErV|@%K z8VipkO=P@yuDRNFB3T|N3L>^5{{V;l%G!*?1WqVw#um`z+1{hC$>4&u$Cd%zQqoBQ zgbRNmN_HThA2&A9Q+&D`6d0`x9S|l|>q1!8!BBiB$$0+9USCjs$gVNA92g`CbnBcv zs@nFw)rMPRDI-T3{M>vajhPmUe(4wJCr(Wu&X9^YcrPSSi=BfD;tBE2=$vJL6cgUP z%$Ete)GPi6!1np9bV`8RNvcObPzTVH;In)I{<0{6^*Dev$OuHiL5p 5}X zxG*t2BsKvABnlE_XYphZ7$Pa-&^kcZS|e}J_YtXBYzU|u1Ok3C4^|#&O(M?lLylF6uV08^Cd?{MI&-F-e)2RsYF<5IUrF(Y#)IFcIrIH$-<1{bHloqmY|!+*pWVi zr8JfWvOt3_ZxRm^>Jh+>iH&WFwbkIot_0YaQB?pnY!1k2dZrtoy^#dMfCvaO8Q8fJ zQ~Gk1)c^w g;6G`HVIH)IAHg8UB3OaB=z5o@g%C7$aIDnyQfTmnF2(3&HbT$yz zBy2WbRL<(c4(0*e0Wdb3jJnMX0WIdrAYaK)1M`iA2u1;6#Vsug-dZ!Y$6%#@tg-K0 zQx(t~2q(BWeFF$-K#r5}P(mrz1BgU*eMrL3Q2Jy*42d9B@QnGdhzTe_z>OJHA#T!z zDyEy#7$yvXNhnz!q)OWudFtiZ0!O%YgdS9R=%)7rY1&mNrCnD7_(Cf*6tn $JU`%AZD4M@4vqlKL;+PMM+J5!}GcC{1UUTA=;{o6@a@D<^{{Rfo zq{ WwE z2N*J?QznGrc8H6&czs1n^7D&In1?|o_WJMG%W%N4Jevjwc1u3Q<7#(hL&%}hb&g;C z=K}|z(c=)S8x xaQ}G2zU`8Nnj04#G>|8-eEysG= z#ZTUE&pO~xJgSZfp4DNY6!kv$JoL{fRD`kkedh!}#Rc%w1B^(z)w1xwnXCF0n08=U zIO$Rl?j+Je&WG>^tS$*N5{GIWy#0rIlE|&!=PFgMlp#MR>kzANZ32X}^%mygnVe|MHuKG$K!j}F*^~hf43+|70%YJ7}8b#vH z-cSu? h2@f@*=cOwz$23 HFdQ~Gg&Jt@Ku54e;s6 2RobrA+U@A6 z?p&6o0HePl7Uwb;tM^nQWV0_ViZpbg8{>Y3yFOiW7bc>NR(`-ZTEKh26Z!R(=guGg zhm$NIyGV=!K(D1UB)B+Cp M$CI`(V2#OHk z4F3Q$PtWCfchP-r=E%Fn;%beO#4;jhETB{sLaM5&t?067e3@ab`Q@hrE;R%0g;Wlt zJ*yATd_wgG7Uih%Bt^6rV+Vyt!3m4dvZGrD1rbC Ce+NP1Ild{R=(bp~%msilORaI40RjRvHcB{2{ z>%YMffxsuWkA)a2(rH$tC=G#CT^TPItU9U$!@|s}40(nKHicI}ob>6mOsAMd4&6k- zhAx2yZJZ(s%mEo#zOfE`-W|EU7p4Q%h~eytL2f(N)+&CE5d>&radbjz*OKZLhcHKB zA=e7WuL=Z9(`BI{+!A#Vjtxy AQa zsq)o==zv&?S`npXH`E4b@DTt|h$mU5o1*mrb&M@q1 Dx>SHMu$>T9g&fCr z x#?(4Y#wEo(d48OwTS!h*XDUbP%yU1?dJfu_@N!3=35w1-GA2 z?jJzEXmkP1b*O>loTNc)d_mUnz((&Mfw^qQM6~|^K&5Ms$1{h^yv>rw15#PoG)*i; z07-#3XGScI3<1Z;02MK|H^l|Jco*j`my`@2ZGX?NTuZs 7YOrESFwzR2ismqn={P=rGu_CRFcp}D%NPLMF*re?*} zD(MK3{;}A{hn!kA8VZYUeC>QrY$fs>>MpAXd-{Q%jKsX8& ?G;t9Xngou0BUYuo&r{t+6r3sSPi(~>ZwqMDFc|f%V67dzI$ljUgdfBT=4Fv zeDdjjFwqokDu@afpc?zxIKKs)alV(c4=&wkRtj+Z$!9QSj=g$sh1i^Py&hD?U@wB| z4@Ygn)fuEcV^cQJaWt>+tdQ;uBEWT))~#rUP$o1JLqRigmPQ3W2P6~_l}ajARaIK5 z?N@5;et2s|Y5km=6e0v07YkET27a#dlH15DN;Gk1Hlk@TN%d4fsk{N6Dw61cgRv3$ zFe3FF61bm&$Z18?`ncbt)T4F^c1Jcpn2@L)rFR&1ds-reC_eN?zwnHJGG_SjIu}}| zr#!Ryp}Zb{>7V?d=N|kXYi+)8L@3L;<)xmf7b;Mta?WI+ns*h$iVB|dTvNsGbX(xR zvpDe Yn%02$}M@Z0`7E=)`qzZ{QvmA^vxhOyIQ z(O?#T1- #TsAAnEy$Tv;L!2ba4a0U@A2t(urA2%8DD;}1Q;X6C8Ihz `C0s8IBF_+qkqHr z$RtH9^&9n6;H@jTs5qnzf-A iaPKh=1`fmtavMw*G-};1oa=GC}NH{{Z02^TIe? z8+|Muz`f3ajjD){Q%vmx255-`Sx-2Z35X@&s8JeP2PqHsU`-v5A7nAn@SOvOF=8t} zh~$7r(3c$eq87al2kjLGzfktbh&-*m{#Z878xbD40Wd35HB;wG#@Y;c0wLO|ca%}) zY*0=8ZSN8P0L0UtM>XF$kR3oqAYyDmW4h#`4BA&CPzT6T0_ZqF%7#=)Gy;*p)Uq$I zH^EPQ^DO*b{Il!#l1QBgJuKPH7k&W%$fQB#AG~nZxW{AYPdHISvE8jiSK{E6n8eM7 zYDgXJK8?yub6guzZl8nrE$@0#)lc8_OyL;|al_y>arrR~ei8%!0H@zx@f~Wf!4w`9 z_}F~3n_s#R&`9-}!sAcLaDXKN;isdGH!wJ&tOs|lUH3!-0K`ndGb4S?2L~Ii=G%e| zDK$WoH?TS jQYV D_DjMjJbJl->dgZW zS{&qtRL~Ol2~{Y?`QJ>iuEREp6A=pBEbez0^K5W }33`~6j0BIugLWDz-UF1QnnT G#B686mPlGoQLuI$ z0~UdT078PHsx?(rR<7QwHG#={BXFapzyq+gl49=zo_? n`bh$1P`M z6#D=(j8dzF0T4%Ho6J$p$}F%!O=ae(3|U@I4?+&21;DPSTso|6$}O3YR#!KH3EBWK z&qy>LcG^wF!Ow+5h0GIVTw(wk9hgINs# mEIqrD^gOzbYkjN^@4y{pbZ4u zgnXZ>*~zBHv5lKvvh(l*JaMjLumpWHfMcRL?*gL2FBy9g2#a{eI+p=NlHiThfP~1w zMZ7(oVH3o_@Kog*&A4GjF3Q-Vu+nl50dX@_B%i^TLQv7$ot+52R?rdS#goZla9Ac` zj(5Y;j@9K5=!JMB>7cyXsDKT~6dPfR;h >5IAxH$6;-@FY?D6wE?1ssK0A#ER zF$@9Nqhg&{GCT|)EKA(-{t6YqQwWtVh>f9f2VNck$iI+(&EZx#)^o>Ap(!tj3qB`6 z)i!)8Wx8rRyFa=0Y;oayjP0y(&aE~bwmk=fw0F*hG$l0%5Z2UsXFHEgnXYt2HL~d) z?}N=KawB#xNr#;sJi`&{;vShZGk!EZ!rRsfSKJ*^gJgkJLCfS&6+i`5fE!hG0n39& zT0q(!TEf6uct3wUv5DIN#5BclSnVcVav4>5RfByjeKAa3$P3j~x=`ml6)c{nB9!py zPT;-OD&QatsOTpd5EY4I5+OtUg_*0Zl$}{p4u;s(<{DEor-0@BE;*_5WlIPZz|Tcr z!<{=gB9Fay@Nf0!sB|R#m7loLLo%E$--*q0FM(ST5vC(?2f48LQ~-c7Bt(D*&7K7# zv{vlX0DvO$NEX)HY-l*m-a6)y2dKTO%vt*J2XVC?{EA6sn&)z%Mh**%+^SS%Qz9ee z_=ON?;1Iu#fG-NT(b|Ml))Ox{=n(OoE%=itE)&q;g5c1uL(@8d!O|Dvl{vKZhriKv z2c7u*j|iL|3@Unz^)wpAB?HZC?$R0@_lh}AAndD*{{SBGuweK6QWWODw;K#gr##>l znHN?;xLOMF$ysK8?FI|6vsVB-(bIK5NI*-S7wDc+dWTN;RGtxC&$OD>zhc-46d5eO zwAoW)lUAh!NhEs#o-0JL#~Dc{N;X{4;yQ@Z@HS6lz{2Pd-rpw5C(PN}=|((&ZN+fX zjeZs1>~E_*z^H~|zTebyoDA>y7#eYFs&q`z{pa(f8TVQU{>8s$f53SgQg8@r{3QPX z9L`zBs@h2a(*dF~5hvU%{j=Y24?%-AUtoVp{@9VX;TZgt{{Uu2rL9^AGuso7**ppa zTJM+&Y_;ypvpe(=vt2#nv%K+yfl6>D!{xlb@kxx778~>r6ZD(QHD3Vga;hnqWbVYT I7u svx2qm.py. Look at the output at:
qms2019.csv
QMs - the fourfold path
- +You will be familiar with documenting newly found QMs in the survex file when you type it in. But QMs are only useful if they can be easily scanned by people planning the next pushing trip. That's what we are discussing here.
There are four (and a half) ways we have used to manage QMs: diff --git a/handbook/troggle/trogarch.html b/handbook/troggle/trogarch.html index aa7e98e2b..8581453bd 100644 --- a/handbook/troggle/trogarch.html +++ b/handbook/troggle/trogarch.html @@ -36,9 +36,9 @@ ALSO there have been tables added to the core representation which are not antic
Class Diagram (draft) -Architecture and purpose
- -Read the proposal: "Troggle: a novel system for cave exploration information management", by Aaron Curtis. But remember that this paper is an over-ambitious proposal. Only the core data management features have been built. We have none of the "person management" features, none of the "wallet progress" stuff and only two forms in use: for entering cave and cave entrance data. +
Purpose
+The reasons why we have an online system at all are described in our website history. +
There is an introductory article "Troggle: a revised system for cave data management".
Implementation in software
diff --git a/handbook/troggle/trogindex.html b/handbook/troggle/trogindex.html index 4d0bbbe63..96bceb3d2 100644 --- a/handbook/troggle/trogindex.html +++ b/handbook/troggle/trogindex.html @@ -26,7 +26,6 @@
- Troggle Architecture Speculations - as in April 2020
- Troggle in 2025-2030 - architectural evolution proposal
The second, the django administration user, is part of the core django Users/Groups system'django.contrib.auth'.
The original design of Troggle envisaged that expo cavers would have their own individual logins and manage their own accounts, which is what 'django-registration' is designed for. It easily handles the hundreds of accounts which would be necessary. (See "Troggle: a novel system for cave exploration information management", by Aaron Curtis) +
The original design of Troggle envisaged that expo cavers would have their own individual logins and manage their own accounts, which is what 'django-registration' is designed for. It easily handles the hundreds of accounts which would be necessary. (See " +Troggle: a revised system for cave data management")
The django administrator account is built-in by default and created when the database is initiated.
diff --git a/handbook/troggle/trogsimpler.html b/handbook/troggle/trogsimpler.html
index 958c65a2f..1ec0775e1 100644
--- a/handbook/troggle/trogsimpler.html
+++ b/handbook/troggle/trogsimpler.html
@@ -52,7 +52,7 @@ for displaying a table of members by expedition year, but what if you wanted to
logbook about a certain cave in a certain expedition year? Theoretically, all of the necessary information to produce that
list has been recorded in the logbook, but there is no way to access it because there is no connection between the
person's name in folk.csv and the entries he wrote in the logbook".
-[Adrian Curtis]
+[Aaron Curtis]
And for ensuring survey data does not get lost we need to coordinate people, trips, survex blocks,
survex files, drawing files (several formats), QMs, wallet-progress pages, rigging guides, entrance photos, GPS tracks, kataster boundaries, scans of sketches, scans of underground notes, and dates for all those - Philip Sargent]
Troggle today has 8,200 lines of python (including comments and blank lines), plus 600 in imagekit and 200 in flatpages. 2,200 of those are in the parsers. Django itself has a lot more, including integration with TinyMCE in-browser HTML editor. ]
+ Troggle today has 6,400 non-comment lines of python and 2,500 non-comment lines of django HTML template code. Plus there is the integration with the in-browser HTML editor in JavaScript. Half of the python is in the parsers which will not change whatever we do. Django itself is much, much bigger and includes all the security middleware necessary in the web today.
+ But maintaining the code with the regular Django updates is a heavy job.]
Troggle is the software which runs the the expo cave survey data management and website.
- In early 2019 the university computing service upgraded its firewall rules which took the
-server offline completely.
-
-Wookey eventually managed to find us free space (a virtual machine)
-on a debian mirror server somewhere in Leicestershire (we think).
-This move to a different secure server means that all ssh to the server now needs to use cryptographic keys tied to individual machines. There is an expo-nerds email list (all mailing lists are now hosted on wookware.org as the university list system restricted what non-Raven-users could do) to coordinate server fettling.
-
- At the beginning of the 2019 expo two repos had been moved from mercurial to git: troggle and drawings (formerly called tunneldata).
-
-
- The troggle software has been migrated to git, and the old erebus and cvs branches (pre 2010) removed. Some decrufting was done to get rid of log files, old copies of embedded javascript (codemirror, jquery etc) and some fat images no longer used.
-
-The tunneldata repo has also been migrated to git, and renamed 'drawings' as it includes therion data too these days.
-
-The loser repo and expoweb repo need more care in migration (expoweb is the website content - which is published by troggle). Loser should have the old 1999-2004 CVS history restored, and maybe Tom's annual snapshots from before that, so ancient history can usefully be researched (sometimes useful). It's also a good idea to add the 2015, 2016 and 2017 ARGE data we got (in 2017) added in the correct years so that it's possible to go back to an 'end of this year' checkout and get an accurate view of what was found (for making plots and length stats). All of that requires some history rewriting, which is best done at the time of conversion.
-
-Similarly expoweb is full of bloat from fat images and surveys and one 82MB thesis that got checked in and then removed. Clearing that out is a good idea. I have a set of 'unused fat blob' lists which can be stripped out with git-gilter. It's not hard to make a 'do the conversion' script, ready for sometime after expo 2019 has calmed down.
+ For earlier history see Website history.
-Wookey has now moved 'expoweb' from mercurial to git largely "as-is" and will to use the git tools to patch up the history and to remove redundancies, rather than the original plan to tidy them up "at the time of conversion". Mark Shinwell is working on loser with him.
- Sam continues to work on upgrading django from v1.7 on python 2.7.17 . We would like to upgrade django as quickly as possible because old versions of django have unpatched security issues.
-Upgrading to later django versions is a real pig - not helped by the fact that all the tools to help do it are now out of date for these very old django releases.
+Wookey has now moved 'expoweb' from mercurial to git largely "as-is" and will to use the git tools to patch up the history and to remove redundancies, rather than the original plan to tidy them up "at the time of conversion". Mark Shinwell is working with him on the loser (survex files) migration to git.
+ In May we were on django 1.7 and python 2.7.17. Sam continued to work on upgrading django from v1.7 . We wanted to upgrade django as quickly as possible because old versions of django had unpatched security issues.
+[Upgrading to later django versions is a real pig - not helped by the fact that all the tools to help do it are now out of date for these very old django releases.]
Enforced time at home is giving us a new impetus to writing and restructuring the documentation for everything.
Sam was a bit overworked in trying to get an entire university to work remotely so Philip [Sargent] got troggle on django 1.7 to work on python 3.5 and then 3.8. He then did the slog of migrating it through the django versions up to 1.11.29 - the last version before django 2.0 . 1.11.29 is an LTS (long term support) version of django. In doing this we had to retreat to python3.7 due to a django incompatibility.
+ Sam was a bit overworked in trying to get an entire university to work remotely so Philip [Sargent] got troggle on django 1.7 to work on python 3.5 and then 3.8. He then did the slog of migrating it through the django versions up to 1.11.29 - the last version before django 2.0 . 1.11.29 is an LTS (long term support) version of django. In doing this we had to retreat to python3.7 due to a django plugin incompatibility.
In the course of these migrations several unused or partly-used django plugins were dropped as they caused migration problems (notably staticfiles) and the plug-ins pillow, django-registration, six and sqlparse were brought up to recent versions. This was all done with pip in a python venv (virtual environment) on a Windows 10 machine running ubuntu 20.04 under WSL (Windows Systems for Linux) v1.
Missing troggle functions were repaired and partly-implemented pages, such as the list of all cavers and their surveyed passages, were finished and made to work. The logbook parsing acquired a cacheing system to re-load pre-parsed files. The survex file parsing was completely rebuilt to reduce the excessive memory footprint. While doing so the parser was extended to cover nearly the full range of survex syntax and modified to parse, but not store, all the survey stations locations. A great many unused classes and some partly written code ideas were deleted.
diff --git a/handbook/website-history.html b/handbook/website-history.html
index bf15f75e2..8d31545c6 100644
--- a/handbook/website-history.html
+++ b/handbook/website-history.html
@@ -92,12 +92,16 @@ haphazard nature of the development of the "script and spreadsheet" method meant
had an individual system for storing QMs. Without a standard system, it was sometimes unclear
how to correctly enter data.
- From "
-Troggle: a novel system for cave exploration information management", by Aaron Curtis, CUCC [with some additions]
+ From "
+Troggle: a revised system for cave data management", by Philip Sargent and Aaron Curtis, CUCC [with some additions].
+
+Original (2006) paper: "
+Troggle: a novel system for cave exploration information management", by Aaron Curtis.
The CUCC Website, which publishes the cave data, was originally created by
Andy Waddington in the early 1990s and was hosted by Wookey.
@@ -130,8 +134,6 @@ troggle, the survey data, the tunnel data. Seagrass was turned off at
the end of 2013, and the site has been hosted by Sam Wenham at the
university since Feb 2014.
-
-
In 2018 we had 4 repositories, 2 mercurial, 2 git
@@ -145,6 +147,26 @@ university since Feb 2014.
In spring 2018 Sam, Wookey and Paul Fox updated the Linux version and the Django version (i.e. troggle) to
something vaguely acceptable to the university computing service and fixed all the problems that were then observed.
+ In early 2019 the university computing service upgraded its firewall rules which took the
+server offline completely.
+
+Wookey eventually managed to find us free space (a virtual machine)
+on a debian mirror server somewhere in Leicestershire (we think).
+This move to a different secure server means that all ssh to the server now needs to use cryptographic keys tied to individual machines. There is an expo-nerds email list (all mailing lists are now hosted on wookware.org as the university list system restricted what non-Raven-users could do) to coordinate server fettling.
+
+ At the beginning of the 2019 expo two repos had been moved from mercurial to git: troggle and drawings (formerly called tunneldata).
+
+
+ The troggle software has been migrated to git, and the old erebus and cvs branches (pre 2010) removed. Some decrufting was done to get rid of log files, old copies of embedded javascript (codemirror, jquery etc) and some fat images no longer used.
+
+The tunneldata repo has also been migrated to git, and renamed 'drawings' as it includes therion data too these days.
+
+The loser repo and expoweb repo need more care in hg->git migration (expoweb is the website content - which is published by troggle). Loser should have the old 1999-2004 CVS history restored, and maybe Tom's annual snapshots from before that, so ancient history can usefully be researched (sometimes useful). It's also a good idea to add the 2015, 2016 and 2017 ARGE data we got (in 2017) added in the correct years so that it's possible to go back to an 'end of this year' checkout and get an accurate view of what was found (for making plots and length stats). All of that requires some history rewriting, which is best done at the time of conversion.
+
+Similarly expoweb is full of bloat from fat images and surveys and one 82MB thesis that got checked in and then removed. Clearing that out is a good idea. I have a set of 'unused fat blob' lists which can be stripped out with git-gilter. It's not hard to make a 'do the conversion' script, ready for sometime after expo 2019 has calmed down.
+
For the current situation see expo systems status.
diff --git a/handbook/troggle/trogstatus.html b/handbook/troggle/trogstatus.html
index bb13ba525..df70d7a63 100644
--- a/handbook/troggle/trogstatus.html
+++ b/handbook/troggle/trogstatus.html
@@ -10,31 +10,13 @@
Troggle & Expo Systems - status update
Early 2019
-Wookey: July 2019
-May 2020 and django versions
June 2020
-
History in summary
+
2018
Early 2019
+Wookey: July 2019
+More recent