From be72367fb178f1183074cb0bc0ca48a79ba37043 Mon Sep 17 00:00:00 2001 From: Trey t Date: Fri, 20 Feb 2026 00:37:34 -0600 Subject: [PATCH] Add F-040, F-081, F-083 UI tests for review step and polls section Co-Authored-By: Claude Opus 4.6 --- SportsTimeUITests/Tests/HomeTests.swift | 46 +++++++++++++++++- .../Tests/TripWizardFlowTests.swift | 31 ++++++++++++ docs/SportsTime_QA_Test_Plan.xlsx | Bin 34279 -> 34332 bytes 3 files changed, 75 insertions(+), 2 deletions(-) diff --git a/SportsTimeUITests/Tests/HomeTests.swift b/SportsTimeUITests/Tests/HomeTests.swift index 65d5c63..3404bb0 100644 --- a/SportsTimeUITests/Tests/HomeTests.swift +++ b/SportsTimeUITests/Tests/HomeTests.swift @@ -2,8 +2,8 @@ // HomeTests.swift // SportsTimeUITests // -// Tests for the Home tab: hero card, start planning, toolbar button, and recent trips. -// QA Sheet: F-012, F-013, F-014, F-017, F-018, F-019, F-020 +// Tests for the Home tab: hero card, start planning, toolbar button, recent trips, polls. +// QA Sheet: F-012, F-013, F-014, F-017, F-018, F-019, F-020, F-081, F-083 // import XCTest @@ -162,4 +162,46 @@ final class HomeTests: BaseUITestCase { captureScreenshot(named: "F019-PlanningTips") } + + // MARK: - Polls Section (F-081, F-083) + + /// F-081: Group Polls section is visible on My Trips tab. + @MainActor + func testF081_PollsSectionVisible() { + let home = HomeScreen(app: app) + home.waitForLoad() + home.switchToTab(home.myTripsTab) + + // Scroll to find "Group Polls" text + let groupPollsText = app.staticTexts["Group Polls"] + var scrollAttempts = 0 + while !groupPollsText.exists && scrollAttempts < 10 { + app.swipeUp(velocity: .slow) + scrollAttempts += 1 + } + XCTAssertTrue(groupPollsText.exists, + "Group Polls section should be visible on My Trips tab") + + captureScreenshot(named: "F081-PollsSectionVisible") + } + + /// F-083: Create poll button hidden when fewer than 2 trips saved. + @MainActor + func testF083_CreatePollButtonHiddenLessThan2Trips() { + let home = HomeScreen(app: app) + home.waitForLoad() + home.switchToTab(home.myTripsTab) + + // With 0 saved trips, create poll button should not exist + let createPollButton = app.buttons["Create poll"] + var scrollAttempts = 0 + while scrollAttempts < 5 { + app.swipeUp(velocity: .slow) + scrollAttempts += 1 + } + XCTAssertFalse(createPollButton.exists, + "Create poll button should not appear with fewer than 2 saved trips") + + captureScreenshot(named: "F083-CreatePollHidden") + } } diff --git a/SportsTimeUITests/Tests/TripWizardFlowTests.swift b/SportsTimeUITests/Tests/TripWizardFlowTests.swift index aef3de5..554684d 100644 --- a/SportsTimeUITests/Tests/TripWizardFlowTests.swift +++ b/SportsTimeUITests/Tests/TripWizardFlowTests.swift @@ -388,6 +388,37 @@ final class TripWizardFlowTests: BaseUITestCase { ) } + // MARK: - Review Step (F-040) + + /// F-040: Review step shows summary of selections. + @MainActor + func testF040_ReviewStepShowsSummary() { + let (_, wizard) = openWizard() + wizard.selectDateRangeMode() + + // Fill required fields + wizard.selectDateRange( + targetMonth: "June", + targetYear: "2026", + startDay: "2026-06-11", + endDay: "2026-06-16" + ) + wizard.selectSport("mlb") + wizard.selectRegion("central") + + // Scroll to find the review section + let reviewSubtitle = app.staticTexts["Review your selections"] + reviewSubtitle.scrollIntoView(in: app.scrollViews.firstMatch) + XCTAssertTrue(reviewSubtitle.exists, + "Review step subtitle should be visible") + + // Mode label should be present in the review + let modeLabel = app.staticTexts["Mode"] + XCTAssertTrue(modeLabel.exists, "Mode label should appear in review step") + + captureScreenshot(named: "F040-ReviewStep") + } + // MARK: - Plan Button Enabled (F-041) /// F-041: Plan My Trip button becomes enabled after filling all required fields. diff --git a/docs/SportsTime_QA_Test_Plan.xlsx b/docs/SportsTime_QA_Test_Plan.xlsx index b18377356df302918c2cc4509b2c544ae289622a..3a3c7f577fe3fcdb6da621d2a79631d004cc2cf2 100644 GIT binary patch delta 12275 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 L16LRH{@DKqK=`v9 delta 12283 zcmZvC1ymbM(=M*Xt+*8TBEemP6nB>rT#6Sc1gA)$5TwQ3J-9<@DefAexVx7k7y7;L z_n-gXn{&vX-LsjQotkIA$JF_anM6sy9=@U6MySY_w?0};t-`4V30ooO&|LKhNF z`Xwys=iUGrh|Yd*oz!JG3WvJJ#C!&>VFz53ha_hTSGFCw%GW?-49^?GeS4uJ*@~aC zmo-;_c#uv3G1B_Ry%A#UHi?bgCN3_@wQpUioG%hGS+zl!f#5s`I*V@m1rX82hn?o85Rd;bs0pnV=;>`umsdT=r%$C1v`)99AI*@w!#b8cgK5<$jAHo}4(6v^lr z&c;%PiPPr!yA{wVc7j6T6Rs?$9C#xJT%L&rdUbbu#jsboEk@1OMxn-5*BcV{<4BNI z1gK1N4e*}-+9KvqR|XsG>;Z(%q^>DdUQZbCB4~g5HSzI!&GwhZ6Q|(`;yw>I1Ja8Fzxf^Y$ zHcZDg+m&{%`e@ZTM>buh0l;kAS0tlCae0-Slbj-Q$w;^0hXdyEbJ)0hQJuh;It4~a zN|*^#GEC8#2+TU+wS6x?a!<-Wp_y{Fh~vI(aNrH0>;V(lKz}9!YmXoTs28eiY*+ERl_}64kSbv+NtZgv9TzabU-8x2N9E05r)t zjC*-GY7)OC>M)=&JYg?PO1}jy z!?rFci=jv@v-LeBX))D`%&AkS75U9niCZn@e5iLwA3)$f%mgNDX-3Z#my`|1FRY#r z%19AZA<@WmGO;hiCC*ifG1ImioSeE}cO7Q81=_s%uzg`WPQ@j?@W86b=A0XVPZvET0lk8Ysrff#^Lt3q)I0(NWN<-T0M77dh?$TVv( zadr|@sRA>=7+OiDnZ!G_2YuMb+;VIRs>Fs#Kbg__&m%A4J0EY5k6!q%lrH)x!2*Z! zN-=622RBc7l~#Jqc9GKAC;O7^&PPV>hj}l4xPJ*}%(2z9X_+|iRfq1^rc#~|d`YHU zS`_xXiV_|ua;e=TX zLYM{)AzxbIXMiC?GP_9Drs&l=_S5 z9zJ=rBD;%qGS(&N20!#2n&X_NIQ?4|N!$r7YI({KQnRvnptSxb22~w!p`&Y|n-BPpBpX{1FnvQO({I9tb znAq>#lm)_np;8~;UV}gQHrY&mU9Y{JvkFwHtnTLrkXl0Uo+0b|O-EA?Cv#!1#*O2| zJ*9nKT;8iQ`h2=v-)5qrsCEz?1-5pAHtTB?lwp-35Lwf%5K_bj0;7=aCY5xQ8Krq; zu%&tJ3Sp$~r#Z&@?hPNAzYGi(yT`DVX*RQS%PpJrty8f){w0!!(tO$2H%2}qMV57l zud=70XQ_u1Wg@2AjvRn%_pT>e{@7j=3@KPddMo}H447y`YQ2=+c>+V z`F&Ft>95WN1l7N_D7aqp+m>+=qtLF2rB9tw7c2G1e^vYne5sF2bVI8hOnk%GJ5l>{C6~Ktm=BA43Y#C2uq)p#$x1g$bg5M43-B-bfidJ=;j9# z|4sP|N@Bvndm3>>5<%3V#Od+1W0_j}*F}?7>AlgfTWyGCrB|F2yS_zddAgftx6ZYL z(hr9T7Qmg->xjuPr!$sZ0HoQ;ZC1a^rnzADRmWpaBM)|~zWkGi4|I7Z@I+gu-zKT8 zpw1^Pxx8A^*uA`Jm%QI~5EaVKPs9kmS>eo-`}KR3LEDoQ(}f`g;3~~8 zQB>A0R-Z@>N34*yS{UE?Zki3}9gBv#eZb0bSAH8;S)caf*IN0Davv-B14qP_QD#9? z8&t{i6?2F>UkRc0M^b8Cv5IV9Ryig`O1mTTyER*2$qVk}|oUPhV@ zu4JZ^_ZhDcN7rqW4SUQ#fFt}~rJi$@pplqyID5A--WK4i>t8claJ+=m4o~?m=Q)RV zSM;X8`Vw8;rxe$P6U^3{1w&f&0%SMhGTX9$U0`fR^D6?!T^vzs=Ka8$ioWj5%@N4|#xWxIq@uavBI8y0 zu{i{@Dzf0qMaJO6xA_yTlWW_KJ3a0XFPATlM~)sMzT-xV{=Y!n*P$E56CL&FRr=Yb z_L$$kbRb9Iavt=;+K!K9R7Q5u?nW86d@-@%!Q8hK+~$wFD?FlE8Y#r(J2?ghl;FW11NQ82?Jt!4D-soZ^H8dNNvkl)EXuA6*^BKJHYs-+`15q)E?DeT#D9A|<0}gh z?n|0+N2!)ycZ}hoj<-b#Jj6^VcYSk-4YQm9b(KRoCln zz2l+Ii2TM{Vj*$2zIg_>>07N^;h&aP_)W{#z<1QGn@KRAJJC22N6Vh>aR5`4I@^GP zfJSiaLfpP?bIkIN+mvyW8_b9{!j>I9l94|*j!kjrrIIwT+!y^0ZoKPH57lFi^OUu- zZxrK!X{9o5DTN^+qd&chFrmM2pGQ(U*VjD?JkSB=Q046vK z_EY__?zfV2PBCfAwl_q)PepZt zE+?c6bUWUTN^q^S3$*4Z?%p?ot(2N`UM0^s#Zu%jCfPZ8Z0u~rr|tx)P4i#qc6F2P z%RFuCwi2~)`0bN^rzic;gZl`SF$9j47vE_JknIevbW{lBYn&_GDka`(~lSpVnCNZu_~u zCyU(uE>RG@EoNAwhd5^s00PB1p*vr9%zA$XgHrz_P+dvY@L6CKLq`Nc4pEQXlMRge zN8S+oH}YY}HY&<|Br}xn{KI*{bg}0+i9Bg=k(7`IMt$tKd3%Ekr7p>7^cvxUqjq@8 zxSfGY=px~Lsj>R#BsV!`fd?uqJbh(t>So@T^H~JKnIf^0G>>zj?JN=c2)X?N;@|*t zX9n)D)Fg=jY?c(?Rc-%_2&ksFL?%&`>oBa_)36sBBJy3XPLp?ZjfV5b0smOTPjAgf zUZxCiY#Or-kSVUTW(W~y`dmCelRUmn#}&6PBKHYwYe}|VACT~DzMHN@;HI?yf#km< zwOLJ;(GT(#vwoM0x0$6i&D5Usa^HOdFU=z#XCTL`9#&hvsC?h_xc$2Nbh)3^mf`C( zqa9A1D)nxKUUhByZRzSejAzm`V#k0(B?I<3`I3YhM7^ec)iL!}U4bnYVe5PM3&^=aJ1?rW0Stt438Ouftid^Ikv!}EzFm%GXSc4#}8(K1uON9Iq!*K3F^Ayam9h_?NQ52%?KKWJS6%+j@U>Sk|RX5n~ zbrDX*5i^C2#)GD_M=7xgAM?511*}}>clYHU%tw3VmzKM(_Q?m#I z_WZwF&TE8j$E2b-VzeP0$KtoB< z#YkdGAY%F_D{usR5z5}ZV+=qE*Sxr=UEKEEp_S<1c^in@nQP@Lm7j zJjCja<*4NvBOJBOYXjoUMjpX=#%2n8F&{MR^v#M_?U24vms|eb?aO8NwTj3PZe8Oi zl=dX8xgijxyw%l43ZUz$-S-bGcPSfVKpW>lP#XJP6nT#AxY;FKawdPj)?cYgZ=orw z{d;ICMTEL9Iugv3QOmKL@$(_(%rXPMw#fI_vTSF8+TA|2Z`tZeR1(P(P#p@|(#Zak(<=_W$AMV?@+PjGVjnSJqt5wQ<(=aaRsW$clImF@jEsu zDibVyQ2LM&0#is9^4E58#^MqjKd6X%GTi2`;lf~dgz2vYx}twAFVn$h+t7cP!>vVv zJ-agllF@A3Etg7gEj6G{JX_Dybl2MRjrJ%BfUY>Z6JypVzi@^?^_dDXo2*lii53s)6$r zg!52{hn?t2rZ{<0_1(Jv!$Ze2D}n<){Iqeh}9VkIrm>3{d9{6^1c4cDG^ws&S5*zmST2b*SZkmRN-lP#xo(QZ;nJ;ux9RC`rL*cnn{~Of&1fM`k?8?XNF9bT^P7Y}H0Q1NE~04FJA@Z(IxQ5Z6i1 z-WISRL$A5U8QEBKPNifhuVd1y}v`jOAx_=Nc$(F{$(cFZwPF88jqFLVbaN>VI<5H)q{05vx4#p>l)^qdHL1bRC!(r#L1DTy|7NJp zV_=p-;el^XVZhfBOeQIG{zT}erl%i3R&n!-CAIp5vRxSsnkv3|1zSA_`Ijb-Gn!2K z(p>}nMxpUwGR5%vNDnu+v*KT^zJN$A_OE|SB6mYY#v*+l3!SIHbHgwm{tmIfD}vgA z$L~M0mke_<@pNC*C+zz%c|R~2e)uFNU=!GMn`gFV=&NEQtda4F$)f|=PB-4z!JQhs3r21hD_d2cyKcu4_q1|pU3sQTIqH@uX6rg0#FU^jhVqAy#$mX*u zik|(u4ZCv2V>1Dn%hvp5q2MGpo8Cr}7UV&Xn!2;WZ!MqZ5Yo^tiu9fB%z5q22?hY< zFT5yFL_SOD9?Qh?gbaTOQN$PH(wt`aG`}kn^)@0?mC&MPxk;0EFo%4Gkv5L0yN~tM zyQ9oW#gNSl)yiPYF9*p9CHumsRb4tw12Ij#VLq^SUotYTlCQe?1O}d)^}F8Os|179 zG|f*m?)%S6er)TL&AlL-Gv=>ub~fjA{MQbwId?K#d-kGozK;|x(2K8{v#0G!yk_@e zJP5Ru?`N3;#jtRQQlO&DG6yK5x6p0kZ`Zt%FIcs&Yf~qK2A9kYQ1V7yot?2iG7{Wx zvXOlZ1z8+Vf(^~jgRl!D7u-B9^gCD-nJ)CcBa`lP)DENk1Y-YGcM}4Am)>9wSsc;} zG0tRvY!V+nvLM~#x+FMNu|UzO-(H_QNKJLHAYMJO*RLg*d<+j#l99VL6@fBQfL-w5|R*UYJQMK z$M?DEGNADP^sDzG!%L!b6TCXEPVe*@D>6>Qf{?}b+cWq<a zPP5ad10hV>=ZZ^wH-k3 zzpp9(XCp7Bf(SF!g+P~58_Y5bLn#yQVsw-zOEVsSY$y{tt1y8sHqa~Lgnjg-GRjI* z58nCejL)>R>}y}Qi)O(Vv5?Ymz$cMvwS3j2{MG27G~p}`V2B+pR-xxljL@GN8w59* z72B`;N?nY~a}BanGlzS9A}!~M(kP=!MA|Y8mE;N9)yBPN`qPG~;@$)LA7?I^+TTnEUy(yNlCM$gD+pDc`sb^ z&5fCnqrP{1j`uDRH#N+Du?iVe52RS0liDiG55$i)Nmd@=+5|s&aSEue7tjfs-%RKG z{X~SRoEr-?{rbsC_$DD;)nVU($u!S^=XFHO8auRz@CMz$f$b~m)c&aFZ_yuEp;Xfs z4l&1$A}>A+b6@EFWM~eW1HW2u{Cx0HjD!BF4%=rHUvPkau!FO|f6;L@f0CW?8yya> zHaHaf!%m`W+2Ghx)4hXBiT@3D9n&YHAA2feRT}V1kJs<2sXs7sc)8EDjiJ1C_gze* ztYyD!UwKTl+PL&mbfzJ-c!nL#e0+?d0*^iASuMl6L`9SiS;_truxYhINEys;!M1zJ z(smzaax zAtBkiEVTBx1~$trPCMCK_KN4c8t6CeCsnJaxcf1q;h9~=TA#evgOy;5z|FkgnWEaP z8>ssJv+Z1$^;8#Qq7z`p7$DHL$OUkRQWAUq2)P` zX`2C$O+RFWR6C6G*qpcEEHK#6Mc2K3vOnKJh1l$J3!K=Ljj1hq-r&T!EJZ|c&F|xH zB1_I}G54$j*E6x2ShMFz1^$x?S&&(~A?WJ9jov5zmY9+(Lu}zS6MvNojhM5T9v9tp z))$$e-H#DertaGkzt)(w?zeD&j|ig=#Zm?fel>S27Uk0`F$wlJKzsE2hsyTDrx5tg z0B#BjW?XQ@Jz%!w$j`3F_CdxH96%cExK%A)U}aZ(muKZ-&6>hKKpmn=t%A(ggo{CB zG1C{&gwJa5X5M%U)O6i*s}=Qi76z&g!U%VgeuBLe5ZQs2sNC~snR%Cnb+y3^;EhF| zjDiD4j%y`=aIV@0S}){KRavdfdtcB7CTmUF2qSxeJ1=?G^Y2NO|H`NS^TxFB1_Rd$ zGXXkh7HN?Ig=`t!l2(>H;GO})0>nAVFk!Do452FkVv2^Slv?Tfs0=6XYMPnZpQC0j zVTV}RJ8MrvUQtPF4TuPQ$ORza0>r3rn6v#Sh~=z>o-_^ zYqN8UA5SQTt!tj@*EME*m)zNn`6Kbj#cF8)JK>dRs%T0C_iox_Is?QEfxp;z%$d8L zoF?<`t=|3gvf=1`Q%o&gr1fKVM!z*|&YigZ)DHqPqLh^8V98r>&NZ#are11j=21B> z@+R3BGh>Nx{u`KJ4-q51t+n z;R?T<;VNj7r}YjwWu5$Etn|g()6~&#ToC6(w}r@_9gbV|Xy)J8wDkxr1`y^Nw&5aE zfXKQd8T?`CA-FhiUmf;)1*ulMahJOEt=Bkeiur@*mwtS*;=Ek;I~h1RzT3+SN1zAb zCj8?m$Im-xicZi(E~@h`07(G(d2Z!V$DJ$rV!-c<$o9f~DZG0WKnMyz56iKVeC`GL zTnyPwkgg-qwx${G(j`7SlN~u95w)JrB?vYu*??3kz!qx(j}e zXhcI`fSt_mg70jhT^fN6L07r)NrgC{5=kiKJZ(%f3c7g{uVG)6vpu%k_B~QtHw##| zl7*L`9ffi}nkh`KWg!a1Ig;1&D>V2G|2b!{@F__Put15#Tu5L9V2~`0in>T4=IT1m zG(pS8_Yc1gnI5Nq#27oj2as!XMrSEL=3!cJT_mY`Wf{k|60kp^DUeQ%p>cnf4@0mqurhA2!ewPcaglMH+>u$*5>XKu_Mc5fiHyyk z2v1OoCixwhCrO9Pb>XcJww^X~ZN=o&_?Qe0)r`Ho^LOqv_%!56cl*{6h<~a%`L7aEpNWxCmd;bYX@HPl3cK_Jv zBvn=i3N;T_cV6C4*Q~g6dnXx>^T74#&qEfMGxc{dqXm(hD@5-PB`!>W`B$ZH9rrC5 zF+nzEZzYR|t(e=Fu@mS1$+w(=M3~}^7e-+~F4b7h04>KIn&ie97WE?p%1P4Za^doKW;Pl0!$Nh`h9U*)L zR3#cG)6a;p2)?y>OTl@5y>Y%Q^89=pQzs5$G^vVPHO5>FgMr~iI z0FFDFVQuR1K)15D{KdnP;5kVwaQ8n+556ET+(Q^w$u#9jXyRPW;%*W2>MJBzG~SK* zR-uZA-!ffw&|IQijH+$m{6?HLe?~0XV7jW-mO@PrYF^s0%%=N5o*48?Ip3JF8FKNv zMf6{~yD~ohUKlH(+9D0J^HT=;1vOQ;fLCZ{ZRuJf_O7Q|p; z4%kYF;pL5`MEvTtk3P9A;N2J@sax%@>sdq~DFqw@;-y>@5+$ zj62j0H7U;4|D+c)>7rghqxWj$R5=~>HjqY+t@saC!f(+`di(SpgXkki&lM#87hQEy zQGn^%xaqQ)<89tY-|&ZprbK|c`qM&`D3J>gi4p--2TuzDYtA>y?}G9fX#*5;GA(J7 zdM?Pdi+}8d2J_2$ur(vqV@TF@4-1wWP|EHe-k>{Wmp_5#iAzms=nAVF*qxJ6ze_|< z@^=Vb?%b3UC3zXf8V#C4nt)hAUb^FVGM0Xf9O5ju=hn%?SfI05-`wi=F>Tb;QYVKu zC0|U*Bbx`WPPeg0)L`Y4JcqWYWozukMA(FK+AKm)o&x(xy{z2+?>C=0u_tyD8HjsJ zc^Z$j&+{l@GPNxPKoSbJv2eCz%2Yt2+9i~iq z+Lsu&^%j`owvu$XVi;zPh$4*t!e~SI_6-SmpSR5xjRNErRF&z4I>(s{O>O>uQg;cl@~f@xlJyYsxJH zXEa$11fwP(nq={rQZ8$r*JvZJ2$F2uGvqci`Kh#oZV?Yz4NG6vm3*iqFx5Ss9j(^> zu1Xj15w@fRld3?ecFaCB|EId_ni%(LQHSlG1iyNhSc7yHYf!EoGNaHwFW?`i(!zc< zK?J_V2rcu~Vp{Z2(gr`ompvATXGZg-0eQXLrhuz1noQ1j_G+V?7jn&wcBaNfcP|@S zlj=eiFyZDU7yp|s@?RZ!tioqva{&;5qzZ{jpHO*LlP@?m_+o)%x+t0a+PFuKl%bWu z>18fnza;go@G|nZR$;93r1s=+W+8}z|0GB-V8xxjlryndxJ~wnE8JL_r5Oo>jbe7s zf8QPa5tsR-w4FdF#@wXXc{s*>#KTHgfg2fpv$I+U#w$6kQdKu8KeH$QeQ*Efs~S%E zPZN@EAHGIm>kvci?D>^1SpS}Pe3UvRm^ua6Rjlwp(qR-PC%!Mx#82-c=@P-(dkSRv zYOMHv`#cy06qi);6pmsE;aWS_8{l8H>7F8J70L`xGmw%VcRS(-_0%bZ}WP`bYn zbSEUOL4qMiY0CV>oxokQcs~ZIUMveBTQ(f%5D1ZoxH;#pks=e#*mQZJu>Oe6963N0 z0nhCh4Hf8$s2r*8JA00RQR-#ID!a$z_gr_?ww&0g|83z-4AAtsEgf;&&^q%<{$OCtu%b zwTucqP{rv@;3hti2bjOQ3_LzL#pFLSwU}zQZRNy@i9Fv|pb19NBbc>^sq8PF@)-`# z*=`r+Y9-EWYP_?m2xKnelUeE(K-+ z{&0sJ5>h+nt(u_DJCJ^rs-Tbo0p4>`Pbh<-FYftW-~V{NJnDw#(OhN+PpuNsuP~pp z|9R+guO^9!M0wZ|{D{&u;|f1JOvSH0wzJ-QCk^>@HZo6WPYq`eVe=I(O3OCAF})fy zqb8X}S%|lV29@PeUJfmEG_6v?jBmhBj*th}0I;h-oBzvzX7mTD;gm;=Z~;G?#>VbL zYHyNRn`{3}S$((8pyBMGVI9P@eH6fdFE_@sWA`RPN|jSc5QElF4w8?316M4$WEw<5 zF8$>o({tB~-`%1O3ST4xj)4APeLss@y(FluGvg$1T%xRbWAI=YyeQDY&6aoMkvEiQ zSsRy%xM;w0o@dJt$l}#-?nI!IZFHu&22@O;@<+H&C?SGvLIW3>cOgHs(EP)uIzNvniv| zwCj{4gjEk_f@=tR7xE8vL(~U0?Mkf{4wi*?jbpMaH0d^oP0F3N0q|WM>o{DU^g)4a zYMZ(d;p%zttmL+Ue_2kk2VWZ1lw(UUSVd!7%21hl_&N`ooxq5336 z0x7y^wV6Wa{I-hy&d+s&c2Nlmf0;n*_?Z;zUp5&Udp8ksrVLIYAqvVPk)A({_liFTl7IHt^F%d0pme0pQhs#?|fjs4%u2)3rw*+eU4H8Ev)3M%U$>D5Y1RxkWf4n>-n;0rBd zB(EENGp8wyw>C^darABMMLpxo0fb^@8U?qWbI97QslTNohF(-Y%Wj6jVl)fB0CAIu zX>^};_OBh&BCY*V_=#lXR66e=v6JqVIHAoJ*C8DbB_%=UmOPUJgQ=o=nR(klql`f* zu9vv56=Upw*J4Q-wu8nhD`rZI5Nm1)YUGM8;u~PR{hV|NxeB&R*p%arR)F8?4pWN1 zW!T^nHsA{jg@M_AnJGg{dbXw;cP9K5?OBOOFLH@WOg&x;sM*-C34@iW&wN`w0Amr= zPnEml*zS%DP@Q`3^cMHs#RN<1>qAv0-C;c~u#%5xj)I5X7}^9iMmAM)q0-c`Z|5IL z8djZIZO_8n&F?>S_UfUQ! zYqV|=6%H+6^#}VZI|C5sv)k@Lz^kV`9I5^CI zg*>%^@MQjQaAs~GM|UpH=kNb*07Ny60v-|K5JvT^DLRY-fhG{*8c4zRzo%&%t1mqc avcbc_9V0*K_+Rp=AtzysD1O1ugZ~F8O?oE)