From 8c3a3cf06eaa4e0b0a34480e37221f2109bcf995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Cuevas-Rozo?= Date: Tue, 30 Jul 2019 05:04:18 +0200 Subject: [PATCH] finite-topological-spaces-core.lisp file added --- kenzo.asd | 3 +- src/finite-topological-spaces-aux.lisp | 21 ++++ src/finite-topological-spaces-class.lisp | 10 +- src/finite-topological-spaces-core.lisp | 124 +++++++++++++++++++++++ src/kenzo.fas | Bin 0 -> 63208 bytes 5 files changed, 150 insertions(+), 8 deletions(-) create mode 100644 src/finite-topological-spaces-core.lisp create mode 100755 src/kenzo.fas diff --git a/kenzo.asd b/kenzo.asd index f185647..b229f82 100644 --- a/kenzo.asd +++ b/kenzo.asd @@ -59,7 +59,8 @@ (:file "smith") (:file "sage-interface") (:file "finite-topological-spaces-aux") - (:file "finite-topological-spaces-class") + (:file "finite-topological-spaces-class") + (:file "finite-topological-spaces-core") (:module "anromero" :components ((:file "resolutions") diff --git a/src/finite-topological-spaces-aux.lisp b/src/finite-topological-spaces-aux.lisp index e282352..5cd65dd 100644 --- a/src/finite-topological-spaces-aux.lisp +++ b/src/finite-topological-spaces-aux.lisp @@ -97,6 +97,27 @@ rslt)))) +(DEFUN MATRICE-TO-LMTRX (mtrx) + (let* ((column-n (ncol mtrx)) + (rslt (make-array column-n))) + (dotimes (j column-n) + (let ((rsltj '()) + (columnj-pair-list + (let ((ptc (basecol mtrx (1+ j))) + (res '())) + (do ((pc (up ptc) (up pc))) + ((eq pc ptc)) + (push (list (ilig pc) (val pc)) res)) + res))) + + (mapcar #'(lambda (pair) + (push (list (1- (first pair)) (second pair)) rsltj)) + columnj-pair-list) + + (setf (svref rslt j) (nreverse rsltj) ))) + rslt)) + + (DEFUN SAFE-* (arg1 arg2) #| This is in 'NewSmith' |# (declare (type fixnum arg1 arg2)) diff --git a/src/finite-topological-spaces-class.lisp b/src/finite-topological-spaces-class.lisp index 973c130..47edfdb 100644 --- a/src/finite-topological-spaces-class.lisp +++ b/src/finite-topological-spaces-class.lisp @@ -79,8 +79,6 @@ (DEFUN SUBMATRIX (mtrx rows cols) #| Extract the submatrix of 'mtrx' formed by the rows whose indexes are in 'rows' and the columns whose indexes are in 'cols' |# - (declare (type matrice mtrx) - (type list rows cols)) (let ((rslt (creer-matrice (length rows) (length cols)))) (do ((k 1 (1+ k)) (columnas cols (cdr columnas))) @@ -230,18 +228,18 @@ `(stongmat (randomtop ,dim ,dens))) -(DEFUN ALTUR (stong lst) +(DEFUN HEIGHTS-AUX (stong lst) (if (null lst) NIL (let ((minimals (loop for n in lst if (null (loop for i from 0 to (1- (position n lst)) thereis (eq (terme stong (nth i lst) n) 1))) collect n))) - (cons minimals (altur stong (reverse (set-difference lst minimals))))))) + (cons minimals (heights-aux stong (set-difference lst minimals)))))) ; 'set-difference' must be in ascending order (DEFMETHOD HEIGHTS ((stong matrice)) #| List of elements separated by heights |# - (altur stong ( 1 (ncol stong)))) + (heights-aux stong ( 1 (ncol stong)))) (DEFCLASS FINITE-SPACE () @@ -334,7 +332,6 @@ (DEFMETHOD ADMISSIBLE-P ((topogenous matrice)) - (the boolean (let ((fin T) (stong (stongmat topogenous))) @@ -346,7 +343,6 @@ (DEFMETHOD ADMISSIBLE-P ((finspace finite-space)) - (the boolean (let ((fin T)) (do ((j 2 (1+ j))) ((or (null fin) (> j (ncol (top finspace)))) fin) diff --git a/src/finite-topological-spaces-core.lisp b/src/finite-topological-spaces-core.lisp new file mode 100644 index 0000000..8d0e68d --- /dev/null +++ b/src/finite-topological-spaces-core.lisp @@ -0,0 +1,124 @@ +;;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Base: 10 -* + +;; FINITE-TOPOLOGICAL-SPACES FINITE-TOPOLOGICAL-SPACES FINITE-TOPOLOGICAL-SPACES +;; FINITE-TOPOLOGICAL-SPACES FINITE-TOPOLOGICAL-SPACES FINITE-TOPOLOGICAL-SPACES +;; FINITE-TOPOLOGICAL-SPACES FINITE-TOPOLOGICAL-SPACES FINITE-TOPOLOGICAL-SPACES + +(IN-PACKAGE #:cat) + +(PROVIDE "finite-topological-spaces-core") + +;; +;; Point reductions: beat points and weak beat points +;; + + +(DEFUN DOWNBP (topogenous n list) + #| T if Xn is a down beat point of the submatrix 'list'x'list' |# + (the boolean + (let ((maximal (loop for k in (reverse (subseq list 0 (position n list))) + thereis (and (eq (terme topogenous k n) 1) k)))) + + (unless (or (null maximal) + (loop for i in (subseq list 0 (position n list)) + thereis (not (eq (terme topogenous i maximal) (terme topogenous i n))))) + +TRUE+)))) + + +(DEFUN UPBP (topogenous n list) ; T if Xn is an up beat point of the submatrix 'list'x'list' + (the boolean + (let ((minimal (loop for k in (subseq list (1+ (position n list))) + thereis (and (eq (terme topogenous n k) 1) k)))) + (unless (or (null minimal) + (loop for i in (subseq list (1+ (position n list))) + thereis (not (eq (terme topogenous minimal i) (terme topogenous n i))))) + +TRUE+)))) + + +(DEFUN BEATPOINT (topogenous n list) ; T if Xn is a beat point of the submatrix 'list'x'list' + (the boolean + (if (< (1+ n) (/ (ncol topogenous) 2)) + (if (downbp topogenous n list) + +TRUE+ + (upbp topogenous n list)) + (if (upbp topogenous n list) + +TRUE+ + (downbp topogenous n list))))) + + +(DEFUN CORE_LIST (topogenous list) ; List of the elements of the core of the submatrix 'list'x'list' + (let ((eliminar NIL)) + (setf eliminar (loop for n in list + thereis (and (beatpoint topogenous n list) n))) + (if (null eliminar) + (return-from core_list list) + (core_list topogenous (remove eliminar list))))) + + +(DEFMACRO Un-N (topogenous n list) ; List of the elements in Un-{Xn} + `(loop for i in (subseq ,list 0 (position ,n ,list)) + when (eq (terme ,topogenous i ,n) 1) + collect i)) + + +(DEFMACRO Fn-N (topogenous n list) ; List of the elements in Fn-{Xn} + `(loop for j in (subseq ,list (1+ (position ,n ,list))) + when (eq (terme ,topogenous ,n j) 1) + collect j)) + + +(DEFMACRO LINK_LIST (topogenous n list) ; List of the elements in the link of Xn + `(append (Un-N ,topogenea ,n ,list) (Fn-N ,topogenous ,n ,list))) + + +(DEFUN WEAKPOINT (topogenous n list) ; T if Xn is a weak beat point of the submatrix 'list'x'list' + (the boolean + (or (eq (length (core_list topogenous (Un-N topogenous n list))) 1) + (eq (length (core_list topogenous (Fn-N topogenous n list))) 1)))) + + +(DEFUN WEAKCORE_LIST (topogenous list) ; List of the elements of a "weak core" of the submatrix 'list'x'list' + (let ((eliminar NIL)) + (setf eliminar (loop for n in list + thereis (and (or (beatpoint topogenous n list) (weakpoint topogenous n list)) n))) + (if (null eliminar) + (return-from weakcore_list list) + (weakcore_list topogenous (remove eliminar list))))) + + +(DEFMETHOD CORE ((topogenous matrice) &optional list) ; Matrice of the core of 'topogenous' + (the matrice + (let* ((list2 (if list + list + ( 1 (nlig topogenous)))) + (corelist (core_list topogenous list2))) + (submatrix topogenous corelist corelist)))) + + +(DEFMETHOD CORE ((finspace finite-space) &optional list) ; Finite-Space whose 'top' is the topogenous matrix of the core of (top 'finspace') + (let ((already (find `(CORE ,finspace) *finite-space-list* :test #'equal :key #'orgn))) + (declare (type (or finite-space null) already)) + (if already + already + (build-finite-space :orgn `(CORE ,finspace) + :top (core (top finspace) list))))) + + +(DEFMETHOD WEAKCORE ((topogenous matrice) &optional list) ; Matrice of a "weak core" of 'topogenea' + (the matrice + (let* ((list2 (if list + list + ( 1 (nlig topogenous)))) + (weakcorelist (weakcore_list topogenous (core_list topogenous list2)))) + (submatrix topogenous weakcorelist weakcorelist)))) + + +(DEFMETHOD WEAKCORE ((finspace finite-space) &optional list) ; Finite-Space whose 'top' is the topogenous matrix of a "weak core" of (top 'finspace') + (let ((already (find `(WEAK-CORE ,finspace) *finite-space-list* :test #'equal :key #'orgn))) + (declare (type (or finite-space null) already)) + (if already + already + (build-finite-space :orgn `(WEAK-CORE ,finspace) + :top (weakcore (top finspace) list))))) + + diff --git a/src/kenzo.fas b/src/kenzo.fas new file mode 100755 index 0000000000000000000000000000000000000000..db5ed5ff70c6497284d62809960eebc79b591a18 GIT binary patch literal 63208 zcmeFa34B!L)jxjkOaeoIVJ2)D!ZIvlBASq}gaJhY0Sy*xRIs?c!z7s`BS~hQnLw~E zC~CnNi}tmp)+*K3QtLup`r?jD1#7LSt+lmPYHLkgai^`7-}if-=ia%Kgx2@{{XYNC z@ALn4bmpGzIp;j*InQ$MoCy~#U4FdFG!5(JHjXoh?H{2i)tb@sjs|e4Hp0eWd`>f_ zifn$C)eqWvtRh)g!w3q2HU{DCTOcT|K>@7mLARn8<*BRH&IOe1_Um^0bvyg2yRu(j zJ-Rv7@V!^l`(CGMIqOPUzUp4jG!ia7M$mp&-95v)TJ26oJNo%WUp_5(ine#SxEx>r z@UpJDJJPpNpfhYIoV3b#^^6zRJ$=h@6MnqB>a(7`;~%}?noItR?Z^+|&35!}^X|!} zF}ivgX(f0ch4Hz8=nf8`|6$Muvired=z|cyf#kn?82Pfp`19Fe8$rDLzTO03pnjDeroT%-_xDu-obzTNJ?jobpKuuZPY>hIq{H}Adl)^hLeD^c z-hLQ*{$cba4&zT4^dR1SU%tcm`6L7fiqCb2vAgFm^i!Z`N?)VEs}5r~2D;A}Yj_p~ zb6Rx@y~rr-L%#%4g~l-Bz(^(jSwLM|wR~SaQ7yk)FGLX~4x7|7#CU1ACg{r;p$|9S zF3Y7Gkw|k}qCJw%L{pha#E8V(;~68;go_bbwsJ+JF_wxo$J3cuYUPTW)Q+P2`F#h z5Q(OmJKAFHnKWCZH?-9!S_N!HKco$TN-_zob~JB_t#`Dhw+-n?VqGlN)S6h2SRqUe zYaXDFQf*PCRXUcAwUmqVASenfdQ#Ja zedyI1U(<)4ELZlo^`+}|WN#mO&{~`q<=QngzI&mf^Q_@KC+>C7dG4@Y`y6!by0Bhy z(6uW<-|wK0vy|Z4Jk%PY5LDyTSaQ8as;~nz*9P|ke`b!S_BnN%JgC2CydmQx14*CHHeTsvA&_SQ( zpx17C+f&<>|4wDlsJ(1=#&u|4?WQL@j~j>P6wVA9heD(9Ibu>ZAmS}-*}MM`UZDcw zCh>iOyNENzdv^=|H>hl3YWMCG`~%`l>E7*vze$`^y?3kNuMuZz_ihyYcf^^}y-C5J zC(cyvT_gCjZy{I8(Q`TJZacGi7@#1iy@@_x zjyO}Y_rT{Mgsvg(BfekoD~K~Sd-n-`32~-m?{2}*BR-P&PQg>enVP-Z1wV&4Q?hrf z;Pu3rioF{JKZ7_^us13ADa4t2y=w$NkvLPXw@&cI#JRNfRtr9#IG42E3c+U*XDapv z1)ow8G@7;omsf4~g2@nARok5(z_oVX!P+gaX97r#$7ZP17=HGl{Y~W~CS5A>XFtxY z$l_@KM<}fAp7T3gR@EN)Ioj7g`nkJy%YoWQdluH3Pu4#7d8P;ozo!)rqr$`K+qmFr z=rKBG)NWd^9u1%p{tT<_T95+0X8}f}rxqVi=Es4XbY~+S`|xq7T%yF!?rnmE!fP)( zlo?sOWx*0i?>Pbb3`2Ub>QwZ2EM}sb2xZg2uidgVT)Dev1Hx3>HRtE$q_kAmZrM}2 zWeV6K`XeZ+Wlh8EV~h(1e8%m+k|xcFU_hdp`ql%d5+_ zJkfKzlfPZ_cUb%Estqt&+iqL617`?mTlGZxMFO-AxHdnMP2g~QXgHh(6St5T(Z2St@2DE_;<-+4MxwvMoK!xAej+ zJUcMUFhtXtXD>Qy(bTg$h+iJploNSFJ;gO1*L%(<-$b19Vfo{B7jU&M=uPgQu&(-7}9f%HrU z^bo>e^nNb9jQ|bikgs3zbmgCQbP#?Yh9|nJwL!u!3#2yn(Us zEjNvxc2JjXc@!!#qGE+-dDl{3ZTB}SR+uVRYP%4OMTef#Ezq`Sp51668ZDA=+{c)p zUGM>&V|Kf){D7$5)d`WF?!QVR&^T4S3sl+v2#(cuttf*1V6Oe7udf5U>{bs;2$q%( zVBTuhmH%x~y=x=w50^0HUoNE1qMox4a+LGeQ4hk>l`QHR2kn>b9&zbo*kc^MuCa|S zlg2B;aJ9ORt3}GyuKW;Xy3-Z4T`;l(O<}}u8wvK@3%i%?ewa}kaaov_y7J$j&Jc74 zdtUl9CrD30Rt4!w(Q!jjusdxQbsCz4t%lQ9s7j2-?btMBb|MW==AH#e;zWbW8t24VuS%6aoPQ|K!CfT+^$`+3au(hqf zt!m5G-%G7-)%M&7bxgeza2$dg`@up&)b=!kzKr9Q|BOg~BGjLJoDZLMPhZ&wNTGU{8~BlB3QLu-Mh6mbm&v&rVFuzx z)od?BF$(*1>+I6T)@sB%M6z>D&vNBU%=TqX&k*g4$&6MDC)ci-wwbUpvtOC%>2GF@ zWyT9hNhJ*6nx3unyDR^%N60X*?lHvn=w9G@Q%bGDQ35?2qd3n}l6i36>Yh_o;|Epa zmY#2XD9UaF{_sM&(AC+}Q%<3*%NIe7nsAp%v+e`RWjXldEc(e7%jGkbfn?82W#CJ| z)ig}@yay6TX%9y!Yo^FHGf|oGV4cGN_;BenyOWlgk3!kVBzx9LfAe1j5&c-*^Oq0U zxzW!8w<42Nk@-w33Ujtk@-q};79e>xK<9GyQ6`z~h=QmC9aN*{kkvk7_J?5oK>H?afm5mfQA( z`VOeH7t6Ib#zGmt-n30vFy!I_IA;pTiF|L+Y{vFtq}!n<~Z)bovZC7!o|r1C|mE400L@BqV+FY9c3=R+Rx z+@$Pm8E_CEwQ;} z>Ghz!94fVq%F;8S%Zm7`cW8O^L%{Wlco*BNMez;A+)iP=C{9!DyQTfEee^U+sjR2< za9oW+iwJeUWJ-?h$E8nBv$^HzF%Z^Uno@he8i=W)1Z($n<;+OnmZxm5JYArepG?Yn zdY)?kCz85$y+lv{>+Kv*ccGE;^kEU|?tzP#4F_=P<0+e4o?fjq?x)6BuEr)?W2@45 zP-(;$0(~{IxutQT(%3_dBXc#5vNeuV8a+_OJ+QwdpQW}H(HL|&-@jFW6L269oYE0T1*C~yqN@GQTjcjgdT&6S{2vN_3T#XZLjnkCI zu+muFUn84a8b6&Nz4lP!({JYV`WG;udi}fzb=NA5b^SH6xux+3N~4b&H{@zO&(^q6 zY2+O@MrKWajcjgdJXL8dqQ;V3jit86a;33FX-xLl$mW(tQ)vuRUqccZwww!nF5jkJ$SiNXnj2zpCxM zJSfNB_d!+>yH!+l?@;!3_P0khmc0v*(1Wmz6eU;>$4R$FyMbHlA?4J1Sf-eN8HX_FmHQmk{soe{cGc3;AHI>}=?*kf zeZND5y7wwi_x1Ob%`HzahOp(Ss5O+OxF~_ANt)>zeL8TZ7U%Pi zl=i#o=;=THlH=*;Xrw&N6QS;xl&Aaqd&=gPr@skgJr%X5DNB!lF1z8AG}ATuPT-cO zlvAGmRxz)ku=aF}YJZWm-?f^ao|^0FO54*jM5wz*d3vC~r)+L{S_WY&rlR&X2~+-P zQG%F`SI*=Ew>+hs@^pq`_7r73ZB^}mO;XpcHT3jHujj<{Ry0yE-6=xd2bHHRMeDO0 zvbp8yCJ0-eidvVlv{sbB(-h5gjXo2&CU?runC=Jm{oPQf&_(yb9p?ks`=QI|8A795p6s1~&3J3A zk{?*~;ZG_5Ti9J%`3|1(ycOE|$WW3l2WeT?X~Eh@54uj=lK1AaO+Pc2ZTiQ85tnx2 zT(hFG7%lv8&qmEJ&*lGC@hf`PX#S6|-#Xggr})91YR%t?y~n}-w(vXDv)J+IS#L-L zHo|?(5Q*nMi_d*ftK(Cq%eh(27Txor^kC=z!w#I9J}&O_@%Q2sj&&F zdi{v5&Hv*lo4+fJuuA`XJ$RTb-`C_n3ch;AysLujMbxkX4{qgq2z*~ie%HM_!NbzA z8=dW$NRf|la}FbyvisoVZ=jt`KXOxQ7o`rq2C4sml(KWW!;hWhzeN5oaSN>Y^Rj;I zAp1VD7Ye(Y`U7mwT!H@W6xc?AJ8+As+W(|52-eR1B9Z^rNMh<4K!Sp!A?WzNv@8E9 zk+`>3^=m6N9#6sZaf`DR_I?EZ!<)tpqMFU*mXiA}ZYz|%E##vy_??|SL&-eojC)+^ zH$;DDvZwctkeC1o9oJ=w|B}+Mrspa0|Ad^BuR=Gm3cxU`mo_ZVENW&Y-Ta)Ax@s`- zI($9U+F1K}i5cls!wiASQSz3w_02zg^29X6(GsrDg7L<(re=!{q`9fAv8AlV7Hw&Su8=K3TZ6woRwX3%wR0k$n6U`f#kIt@V+LNiW_3=zgS!1j@6^o^9#%zl5T5DLz-DjeS@~IG=RWTE=%*FO-TTBT{!DsM@M3R-D(N?V? z(QssN%F32la9uPNXMt~Udd-T(CzaKF`J|Pne0e!T*&eKq1v}EQ#$YB9jJ1mp9f=~X zj|?VKK_s0JGcB>u{i^K zu2!zBSa|M$Hf2q-r7A0#8+}G``La`2mhoeHFrE%dwJ^so8sr+tv9Sl7DUv=qxV|Oc z&=QQMVgF9!3rlH@sXBXjY59Wk1GJSebQ(Lp*pY|ZfEAgVh_M)HF>`I@tI(IJT2~s&3O(6(a z4^?UounS}x&6|xza1~LtLpX4RbNsV|($BN(&f+k_c+j)#baC!Cw&2XlS+kX3-!A0t zMUDn@`)RheBkoXH!I>3E(OKmcecZ5wW$$uGGb*_b+md=ma|j>ahjxbtY8lH3f~C{i z0&TgEwJ3BlJNN(TlJvu8^HK(6gcIVED&7IwE(7B&y1;VrRs+)}- zcX@}vY`tJ*1=QZ}5UJ{C#Calc2+q}OWL6i>30eNUihhc4dT{V7`wbt?6b}B(c|dYv zr%oCUk=gy?rp_M@k*aQT~7-q5im}3Frsjjj2`9p_R&R{Sv%`u<0Q|zu5jPybppNA?vuATv+XnR%{yLt zn2o#eMJ`{~)%rb+q8|S95zXRr2)>f29l$TD~;dug!+h^%H#^G(y|g*CX_` zN?(uH*VFX1Nnh9L>*f0TO?|yZUw^8vPwK0&C@6+bsHvGBEL~NP#}^&Jx#c*Zmd%{o zA!y}=mErOVoQH*M91VGuTq;-k{$f_tIX;wpJ{D>vZ_U(SSX09xOVEU*n!FzKHJ@P& zI~J+59E^bsxlGR%OaYf`@LZINx$*}86?yIQ4E_ig_hW>otwd9oIj9R_?)Q+Uu22~$ z?uD4yt|QJR)0KZMqV8S*O0NQ#mzR$RJw`s^LHuz45Z!Pcc?>}Y-*wcz z09~H^UxMy_7W3D2^kOonVkvQ5Nv3-jZFLhI?D2SBr@T4n8aOnFu)B~SFG-^(;BsEk zG7=V{QC^^l;Eix6Z`>w=t6?&)_*Q^JHsG z=X-&;1gZ9B;D#qpkXr9D1l5x-NS*gODjp=rYHtuLvBzV63m&fV{*-MB%`vcg!+_49clQU2kd{B0b6L2?q^k*r&_@q zp~ACBV2|f*AcH=DNa2exS@1QQFFX-rU9efes}RnDEdu_H_Q%nuq5K;uvmrmy7<42q zg&#s{XfY{;f2Gt!N)>)U>LgO#ZuEKB3!E84e8b+p2Bd;-z{s$7DQFbzg1%t~2L$~4MVZ3!H{NKQk4y$r8xBP!cEQif=QKNqc zJQ{Yai$42TV+e;W6xcljgyF~2r^2ToGW_IsY2YX<9>dQaAvrl3pQD%+(*TU-P#cBJ zvf-&b5Zrgc;P8v)i)b}I$9#!m)M6CwL+TFSI0J;j8<7vgchZ%@lf3{R6z~LebNDX= zyo<6g5_JC*jfcP1Eh@i(&#{F*w*J#4R5XrWek4uKr5B$Q^tZEhzT}?&>x9)D@lT?G z$tK4zeRY)Ahz+hA`6FC2<(0zroBaHLW{cwE_wr<1b>8( zddJ;J@Hw>b7C%Vv&j3gKP!{yNuvCrML1)~&(HU`PAwJ!+pkc($GEzC0d_f83`RIjj zicp&o0AKt~=o$1oe0V$u@L6;<+HUu~?>-S$1NHG{!}qZ}0m*SsBSyYY-1h(uoO-eufEUS&k}wX+3q{! z-ikpP_a;K(GxF|1G{)^m)O}`NH7?^W9s}5w_Xy$33FqZiLdCeVX=_m4(YTD8L;ZvE z*5i;q?lgAQlec^n;0q7|-;lijBD@C4;w#Ae6;zC4`LSs{!{;atz&Ze<8TMks-9_bX7mL8x@Hw6W zjCZjy{0I!8$G7`8z$Ro2-=m*FxiO(lLuSE^44+V41%nY=1-lFWM8_Uuvpk$l@_Y~* zz8z|Pz9*-GMO}MrT>@!c0&86Yy9?grFz#hD54Q5WB`rcN-%D|XPX!*bPlbHe7|DKP|2@tB?4(B0&67#y9MZP~U z`KaU-TZuqgiNIQk!0ri+v3A4vs!WCnc$8=O_7jFzKf-Vn`ToKTrouODg#u}X0&9f= zy9-`HH+(&!upq-R@6`%-f>Gi72d4oQer_ui$SnAXi6*eC;B=;?z&cikM4|WV99z>A zjo$0oV2~h1-XC&ucmxT0Z{$!75v0_ZxCxD_eSVX_*`5T;g{GLEgw86^^vHEJOPe>-b#E(1!j}=G$h(CR=ny36J&jXwotQ86zRoONFGz*=yX175 zoCV=Y&G-W?z71vqwCYLtqb!E+JV9zFrD6!~SIsTp)M36e@-p8kI+~-G{Q#ThMm+&4 z<#RY4AQZif@$mSznJW?f0E~QFLG=xW?>h4g5&>Ort|3$(HhedjO$6frZ#22r1nMiR z4Bz+6l#mJEWOfRD)=b0q1M@1oqsAUV1!t$Y-m3G8a9b^#Tt@ zs6C!b1m=e3@pKD3L0~Rp9*-#QZu2CFq?^WVcD(RMEjx;?aN-LFHdP-9-xt*>wFboo^kr}OXZ6( z@i7Fv)c2gpO_Sz-l{K$GZC)YTyh613Upvje=rsS5)BMYleL-X5dhEcZzE{ngwZ+%6 z78R&1DnwgUh_?7Ar^P=zE&j!6u~)Jj7Wc#AZr=!3FQ%=Rcb-0<%Y(Cp;oZyC%P)w> zI|d`*8|j+JQ-^mw&q1SHvw#$NcVSBU#<*&M1igEBf*9+n2U6<&DLF;1P9PQDOPMAC z5es`?rnX|&_25){=W)RpFG#KTF{FfVqKMUbm(iU`uG=BD+RMjvzMvp$yuSj;H(8Jt zZhB`Altpy za?L%;wFi23cpsxXM~i};-a^iSauM5QjN<%pK}fAR0+EC{RVJT|?idCyXHoKkAgdW8 zDI7GIM&eay#fVzOc@~k8RXQjF@smIp!w~0CTPRNt7-Ged#ge4a+OrGUlCian+{8u{ zV|TNSVB~HPf|HmJE2R6uRSd;RuGc~Lc-~?=x|4^PsCE(o@o=)ocZTZ-Fx08@Oa-6L z8F-e9iw_j=S;EBAA+z0gnk$NhkCW{yE_-uTpy|DcIiwJm_hb%@Lfn%Q$+Y1+UD|rQ zM{=n-+eL4D-s?D=|KVb{io7=wi3k$(E~d6Mf|RPUjk*|`3U590p?? zR#L`yuIn)!%2YO#3N*cP&Q*xZD+gVLxYdavEv7xjlpjF<;5h7hCFwqMus* zr7qrgOg#W)#?(Vzs-J>cs6=dY(=>>>$2xDec}FTo1PiqK}#179{9>6;bnDCrGJxH6!#LK`M-iH(@L{`fhM7 zLE_Mt8?(MB(DcruUWK^S0aPJw@3rK7&&6A7kJry(xJeM7I?Ubd;z_8;+sv8peMzvO zcMN;>1L2f<>&dxAI2GPo>DUj&ld$)0_H2iES*^~tKN6(Y+e@Rj3R35NgVFf0OpDdt zy;N|U>zC-t8gCot;_V{V;{85n+#P}>z5BU1+$l&WhU9ewXW|~DLWS>1*HbzSd$M6r zpy_qfafRq1QHVZz?-hj}FArV5rv&k-nEc$e3ZW@d>&DZ<33?x;6Tc9o)ELBDT#tvw zC!Pf}wZ6MtyaVQd+@1AAfqHT&L{Bb-Xix6Zo~%Kt`|fpm@>A`}U%6H7lBfl}DW>av zvVN4Ral2pIR49iZ5G1S|eo&BVV`3EX3i=*#@qV0M?#_CtK<%YMw3iBTD~pecD$gX8 zEaA>q5FM|_m6y1kfRV88Sr>2gX=Gp4hywMXC`1p6LUbseQ%2OFJnuB}f(}I^$Kls5 z-romRhhG%2Qq|$#2!eU?1m;PF?{}^@wJ$GceNmw9utIc)72=+RKb>j#e(&_<4^CfR zaVE%q;phbUqadY5(Y?%b-*ES6Jh|XqgxCE#CS9Nd;0Sja!FurB+|mLa0R3(r+5>Ui zAG)s+BEXSuF0=t`Wux5Z3K8IF_iTc#IApo`#46AMaIAYVLEf1Jv{HcMv{K%fOmOoa zAkaa0qMLUGfjDnWCcAk*5a=L0#mzf}K%6%wAvf<00v&{paPw{<&1RNQ)D7Y1~#y^%$dI}yw+W3oZ#Un9a=weX(#f+QJ72;pq_D`cw zkt;M2D}X;lB+x~e*8g!Hd^6#?As3b`1N(}?UvsL1&Wk$tYvZS2pP4B|_! z(4!RlkIgW;-xXSf@$g5<>2ZbD5^1^$oCB`V^R&}Kj>jG1ug?5&83lLfNFwJDDRPIN zrlV_#1l=J{WPd9&ztkN%7Q2@}bu+Y8xI<}nAx$Lg4*i_SdUm1O9lD6&?Ysk=T6gF^ zhIhmLK#Y>q>c$qv{Ga$6?zX;KHy_J##x2WE1_kQLpb$M76r#_E zC#o4|OneCH^L%w~KGmhFle4N6s8uOMt5OKgbTgT_zQ^4+>ef$WTPx7?&ZVyk(Hn?D z-0H6FXEOIZ-d&uPPl{K1m)hf&U42rTkKy+UC+Mx?miv@U-crMz&t&m)f(~W0?uQq$ zC@nOGpUp!|VJYWA0iUN99!Uv9p0^fGC(JLC*kZUBohU8b#hFsTQ&Hi41dRgD=fe9% zv|u*~g%1$+74XSU;e#B~q6zhlX`}EV!a<&NsBSk>rl+unQ>EZP;cj8C{K+lE8StA_ zvA19Yf>QVvo9!z|pc92}pEMO2UvLQ$r0^Zm_e0%msPJ73w#Tyxp!D$u0MbX7;oE|I z^ms_|iI<*x0D3$>l27iV=pf+2lbKw%aEzw;5SCr0|Mu&qz`G|IzB|~|D7Y6M`R^1p z1+P(lCt+W~RZPF15H2bh$%XGO!oh+vPTIQ(mlh1?EW3wrMZw>=(EOBexL_>j%Pzvz z1s8KUyN_^f!3wsOz}6LKtUtKVnQ|ckYYYOL41Io%a8E%Y zWB5Gb0|kGlZ!Zu&7~=2B{l6w`n4xky_aYIG8S3F^{FaE%3=JppJ0eA9h|d=NFB1ux zp;mJKK%~?R?S~q_Jio7i0uHS_zz>@txMKL_;d`|iT1jW#dLN`(Gqj8f-ll>&GgQMi z?+{sShR&fo@A6UX8Z)$)3f{X4pN(eddiLP`SAn#cY8m~It5ebp6*68QF?&1B&;?v= z|3+;a%}@dt|7S!tn;|~r^?y!es~LKQYqvbp-)0`+rkHxDzui3I6Uw>dao7&?h<9i< zPcZyU&wnJlG1z<#`CU@#KgN823T{;S=-+>=$#1U>xhL~4kgqH~llWK1{m02S^*GwG zZwt+HAyp)|%l>N78#E?Y_~)A=r{ZD9^NjN%^A@Nb#|P*B#U{T1F@nD#qekovrQ~$H zM`8zMPAoAe0rSscHx0K(Rt%C2m2bO#P%yUPpA#i2hxa5CUQfw}k`9C#M;p1@wn4+#YDSrB*;GD8D9&}vxV z2z(9?^n&6Itik7qzo!RM5~ zm(cbi!>tOQUPMm^vAZ76@9{a#DtM~G@w`|UJe`S?#CTosv>kA&auo)+W$H(nP!JwR9&Je`lj&3Ik#G#ZEJ@w(vYdxUktQxM0H@w(vY zTZDDN(>3VIcwO-H2LxlhE_k|&!O#Uy6A*y$YcTIn@H8LyK;w16(|*Fb;AtlUHhw!4 zqu^;NzLy-Y3!a_>Tr34owK$}W*9A|P6V?S!KcaSB@YGcdSQk7UAgl|X{(&1UqkqBE zasNO!DAR zAnlOA+981lE_h<{QOPTIuLROc1lCFfc280TPcj)Mse&iM*@7o#FcrRGD-=j86j&=1 z*eZAug}UHLE7S!~oCZ|*xvfy3e^u}#3ax@C(P$Ms5wQ!Nh}Z>BL`sdIRq(VDlWsCB z>w>4r7^W{=@I+O1!4na?;E9M`@I=Hecp_pKJQ1-Ao`{5vpjGh1)nKwNcp}R#cp~C4 zf>y!PvACUK2Xw&`JMe`Ip4j%kTku5lcEJ-7yWoklAUs(YJe>*E)suC>6Or1y2@$@U~FG-cBeT4 zFd{1n^uJYQ#kJGpkyWo>l~vHHvf{SI#8d@T1`|_(U!clLT%0^ml@J`dE2etT2=2#29F|&r8S}&{wQ2`!Sfy4(>{6>s zf!L*1-v(lrTHOJ}F16YV#4fdZ1&Cd0MKQb7%7r;=ms%0AORXqoms*Vk$1b%ZVwYMG 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