From 2d759274a87fae8651c28a06b9822a82571fa997 Mon Sep 17 00:00:00 2001 From: Trey t Date: Thu, 19 Feb 2026 23:49:29 -0600 Subject: [PATCH] Add F-068, F-069, F-070 UI tests for custom itinerary item lifecycle Co-Authored-By: Claude Opus 4.6 --- .../Views/AddItem/QuickAddItemSheet.swift | 2 + .../Views/ItineraryTableViewController.swift | 2 + SportsTimeUITests/Framework/Screens.swift | 142 ++++++++++++++++ .../Tests/TripCustomItemTests.swift | 153 ++++++++++++++++++ docs/SportsTime_QA_Test_Plan.xlsx | Bin 33932 -> 34091 bytes 5 files changed, 299 insertions(+) create mode 100644 SportsTimeUITests/Tests/TripCustomItemTests.swift diff --git a/SportsTime/Features/Trip/Views/AddItem/QuickAddItemSheet.swift b/SportsTime/Features/Trip/Views/AddItem/QuickAddItemSheet.swift index 82a1776..ef16131 100644 --- a/SportsTime/Features/Trip/Views/AddItem/QuickAddItemSheet.swift +++ b/SportsTime/Features/Trip/Views/AddItem/QuickAddItemSheet.swift @@ -80,6 +80,7 @@ struct QuickAddItemSheet: View { .foregroundStyle(canSave ? Theme.warmOrange : Theme.textMuted(colorScheme)) .disabled(!canSave) .accessibilityLabel(saveButtonAccessibilityLabel) + .accessibilityIdentifier("quickAdd.saveButton") } } .sheet(isPresented: $showLocationSearch) { @@ -137,6 +138,7 @@ struct QuickAddItemSheet: View { ) .accessibilityLabel("Item description") .accessibilityHint(placeholderText) + .accessibilityIdentifier("quickAdd.titleField") // Character hint if !title.isEmpty { diff --git a/SportsTime/Features/Trip/Views/ItineraryTableViewController.swift b/SportsTime/Features/Trip/Views/ItineraryTableViewController.swift index 7421ec3..006db92 100644 --- a/SportsTime/Features/Trip/Views/ItineraryTableViewController.swift +++ b/SportsTime/Features/Trip/Views/ItineraryTableViewController.swift @@ -1113,6 +1113,7 @@ final class ItineraryTableViewController: UITableViewController { cell.backgroundColor = .clear cell.selectionStyle = .default // Shows highlight on tap + cell.accessibilityIdentifier = "tripDetail.customItem" } } @@ -1175,6 +1176,7 @@ struct DaySectionHeaderView: View { .tint(Theme.warmOrange) .accessibilityLabel("Add item to Day \(dayNumber)") .accessibilityHint("Add restaurants, activities, or notes to this day") + .accessibilityIdentifier("tripDetail.addItemButton") } .padding(.horizontal, Theme.Spacing.lg) .padding(.top, Theme.Spacing.lg) // More space above for section separation diff --git a/SportsTimeUITests/Framework/Screens.swift b/SportsTimeUITests/Framework/Screens.swift index b6351a7..7a89a6f 100644 --- a/SportsTimeUITests/Framework/Screens.swift +++ b/SportsTimeUITests/Framework/Screens.swift @@ -456,6 +456,54 @@ struct TripDetailScreen { XCTAssertEqual(favoriteButton.label, expected, "Favorite button label should reflect saved state") } + + // MARK: - Custom Item Elements + + /// The "Add" button on any day header row (first match). + var addItemButton: XCUIElement { + app.buttons["tripDetail.addItemButton"].firstMatch + } + + /// A custom item cell in the itinerary (first match). + var customItemCell: XCUIElement { + app.cells["tripDetail.customItem"].firstMatch + } + + // MARK: - Custom Item Actions + + /// Scrolls to and taps the first "Add" button on a day header. + func tapAddItem() { + let button = addItemButton + var scrollAttempts = 0 + while !(button.exists && button.isHittable) && scrollAttempts < 15 { + app.swipeUp(velocity: .slow) + scrollAttempts += 1 + } + button.waitUntilHittable().tap() + } + + /// Taps a custom item cell to open the edit sheet. + func tapCustomItem() { + let cell = customItemCell + var scrollAttempts = 0 + while !(cell.exists && cell.isHittable) && scrollAttempts < 15 { + app.swipeUp(velocity: .slow) + scrollAttempts += 1 + } + cell.waitUntilHittable().tap() + } + + /// Long-presses a custom item to show the context menu. + func longPressCustomItem() { + let cell = customItemCell + var scrollAttempts = 0 + while !(cell.exists && cell.isHittable) && scrollAttempts < 15 { + app.swipeUp(velocity: .slow) + scrollAttempts += 1 + } + cell.waitUntilHittable() + cell.press(forDuration: 1.0) + } } // MARK: - My Trips Screen @@ -792,6 +840,68 @@ struct StadiumVisitSheetScreen { } } +// MARK: - Quick Add Item Sheet Screen + +struct QuickAddItemSheetScreen { + let app: XCUIApplication + + // MARK: Elements + + var titleField: XCUIElement { + app.textFields["quickAdd.titleField"] + } + + var saveButton: XCUIElement { + app.buttons["quickAdd.saveButton"] + } + + var cancelButton: XCUIElement { + app.navigationBars.buttons["Cancel"] + } + + // MARK: Actions + + @discardableResult + func waitForLoad() -> QuickAddItemSheetScreen { + titleField.waitForExistenceOrFail( + timeout: BaseUITestCase.defaultTimeout, + "Quick add item sheet should appear with title field" + ) + return self + } + + /// Waits for the sheet to dismiss by checking the title field disappears. + func waitForDismiss() { + titleField.waitForNonExistence( + timeout: BaseUITestCase.defaultTimeout, + "Quick add item sheet should dismiss" + ) + } + + /// Types a title into the description field. + func typeTitle(_ text: String) { + titleField.waitUntilHittable().tap() + titleField.typeText(text) + } + + /// Clears existing text and types a new title (for edit mode). + func clearAndTypeTitle(_ text: String) { + let field = titleField + field.waitUntilHittable().tap() + // Triple-tap to select all existing text + field.tap(withNumberOfTaps: 3, numberOfTouches: 1) + field.typeText(text) + } + + func tapSave() { + saveButton.waitUntilHittable().tap() + } + + func tapCancel() { + cancelButton.waitUntilHittable().tap() + } +} + // MARK: - Games History Screen struct GamesHistoryScreen { @@ -980,4 +1090,36 @@ enum TestFlows { return (wizard, detail) } + + /// Plans a trip, saves it, navigates back to My Trips, and opens the saved trip. + /// Returns a TripDetailScreen with `allowCustomItems` enabled. + @MainActor @discardableResult + static func planSaveAndOpenFromMyTrips( + app: XCUIApplication + ) -> TripDetailScreen { + let (wizard, detail) = planAndSelectFirstTrip(app: app) + + // Save the trip + detail.assertSaveState(isSaved: false) + detail.tapFavorite() + detail.assertSaveState(isSaved: true) + + // Navigate back: Detail → Options → Wizard → Cancel + app.navigationBars.buttons.firstMatch.tap() + let optionsBackBtn = app.navigationBars.buttons.firstMatch + optionsBackBtn.waitUntilHittable(timeout: BaseUITestCase.shortTimeout).tap() + wizard.tapCancel() + + // Switch to My Trips tab and open the saved trip + let home = HomeScreen(app: app) + home.switchToTab(home.myTripsTab) + + let myTrips = MyTripsScreen(app: app) + myTrips.assertHasTrips() + myTrips.tapTrip(at: 0) + + let savedDetail = TripDetailScreen(app: app) + savedDetail.waitForLoad() + return savedDetail + } } diff --git a/SportsTimeUITests/Tests/TripCustomItemTests.swift b/SportsTimeUITests/Tests/TripCustomItemTests.swift new file mode 100644 index 0000000..59b7fb4 --- /dev/null +++ b/SportsTimeUITests/Tests/TripCustomItemTests.swift @@ -0,0 +1,153 @@ +// +// TripCustomItemTests.swift +// SportsTimeUITests +// +// Tests for custom itinerary item lifecycle: add, edit, delete. +// QA Sheet: F-068, F-069, F-070 +// + +import XCTest + +final class TripCustomItemTests: BaseUITestCase { + + // MARK: - Helpers + + /// Plans a trip, saves it, and opens it from My Trips (enables custom items). + @MainActor + private func openSavedTripDetail() -> TripDetailScreen { + return TestFlows.planSaveAndOpenFromMyTrips(app: app) + } + + /// Adds a custom item with the given title via the add sheet flow. + @MainActor + private func addCustomItem(detail: TripDetailScreen, title: String) { + detail.tapAddItem() + + let addSheet = QuickAddItemSheetScreen(app: app) + addSheet.waitForLoad() + addSheet.typeTitle(title) + addSheet.tapSave() + + // Wait for sheet to dismiss + addSheet.waitForDismiss() + } + + // MARK: - F-068: Add custom item to day + + /// F-068: Open saved trip → tap Add on day header → fill in title → save → item appears. + @MainActor + func testF068_AddCustomItemToDay() { + let detail = openSavedTripDetail() + + // Tap "Add" on a day header + detail.tapAddItem() + + let addSheet = QuickAddItemSheetScreen(app: app) + addSheet.waitForLoad() + + // Save button should be disabled without a title + XCTAssertFalse( + addSheet.saveButton.isEnabled, + "Save button should be disabled without a title" + ) + + // Type a description + addSheet.typeTitle("Lunch at Pizzeria") + + // Save button should now be enabled + XCTAssertTrue( + addSheet.saveButton.isEnabled, + "Save button should be enabled after entering a title" + ) + + addSheet.tapSave() + + // Sheet should dismiss + addSheet.waitForDismiss() + + // Custom item should appear in the itinerary + let customItem = detail.customItemCell + XCTAssertTrue( + customItem.waitForExistence(timeout: BaseUITestCase.defaultTimeout), + "Custom item should appear in itinerary after adding" + ) + + captureScreenshot(named: "F068-CustomItemAdded") + } + + // MARK: - F-069: Edit custom item + + /// F-069: Add a custom item → tap to edit → change title → save → updated title visible. + @MainActor + func testF069_EditCustomItem() { + let detail = openSavedTripDetail() + + // Add an item first + addCustomItem(detail: detail, title: "Original Title") + + // Verify item exists + XCTAssertTrue( + detail.customItemCell.waitForExistence(timeout: BaseUITestCase.defaultTimeout), + "Custom item should exist before editing" + ) + + // Tap the custom item to open edit sheet + detail.tapCustomItem() + + let editSheet = QuickAddItemSheetScreen(app: app) + editSheet.waitForLoad() + + // Clear and type new title + editSheet.clearAndTypeTitle("Updated Title") + editSheet.tapSave() + + // Sheet should dismiss + editSheet.waitForDismiss() + + // Verify updated title is visible + let updatedItem = app.staticTexts["Updated Title"] + XCTAssertTrue( + updatedItem.waitForExistence(timeout: BaseUITestCase.defaultTimeout), + "Updated custom item title should be visible in itinerary" + ) + + captureScreenshot(named: "F069-CustomItemEdited") + } + + // MARK: - F-070: Delete custom item + + /// F-070: Add a custom item → long-press → tap Delete in context menu → item removed. + @MainActor + func testF070_DeleteCustomItem() { + let detail = openSavedTripDetail() + + // Add an item first + addCustomItem(detail: detail, title: "Item to Delete") + + // Verify item exists + let customItem = detail.customItemCell + XCTAssertTrue( + customItem.waitForExistence(timeout: BaseUITestCase.defaultTimeout), + "Custom item should exist before deletion" + ) + + // Long-press to show context menu + detail.longPressCustomItem() + + // Tap "Delete" in the context menu + let deleteButton = app.buttons["Delete"] + XCTAssertTrue( + deleteButton.waitForExistence(timeout: BaseUITestCase.shortTimeout), + "Delete button should appear in context menu" + ) + deleteButton.tap() + + // Custom item should disappear + customItem.waitForNonExistence( + timeout: BaseUITestCase.defaultTimeout, + "Custom item should be removed after deletion" + ) + + captureScreenshot(named: "F070-CustomItemDeleted") + } +} diff --git a/docs/SportsTime_QA_Test_Plan.xlsx b/docs/SportsTime_QA_Test_Plan.xlsx index 7d1f5d771775215fb28bfdeea07c3ce489683209..638cc4e748da74401a53d2a951ba69fdde514535 100644 GIT binary patch delta 17375 zcmZs@1yoy2*fol~yF)3iEfR`Tq*!rx4el<5AjPc^q`13#ad(&CR@|jn@k{&l{qDN= z|Fc%sIcst>MRX zzULiUumSwe8lRjbywW`Cj6BsFCFEXKnO4>u%iP|g)#aJQa@a1|W1@$Ny@@#4ll)T{ zp^$MCs)!3S2RYLG8*4YJUpQ2UuzdJ4@28^2^a#^(E{Jb75}p;k;krDbF{FtlQ0NRd z38_nEa`Q2YicslWr%=~G!Dhk4=nGk(oON6o%y8Erkcn9du@47cO-J!=s(@I~A z_b{qdoI>5CuYEFa?$Suz2RBX*E`a(x)wVPcD>9G-^TEF3*f`kWGDNNon6Qx}^+T#A zhoEV@3D5lue8k=nQFRo#x>)*-pmn#=$(6nDFyun3is|Qso~prrMuGopmD*cqAq31n zc1c=nFoOLE1*K614fX>Pfhhyv!A3~9ATXtwdBJc4jgIl=kK@tNjLUur+4wP1>Djn= z+_UnBRdy062}R4RO!bnRwB*mtq*NEUNE?`3zE6o}2A6vu*aFTX?l@jfR-Ki~e0c>% z=_f9zhlTS>J&K>r63rrt6hWgI7?)}Uk}4;4-zghnqN6bhm1@4+K2+X!teSPafV9P9 zk`4sM0*((Z8r>x&dwyO>6yBbm-x|!gzE?=RuqD_&>Z2akXW#U^KWTI?ci#d1kj=$%l7wyl+bvnM5Z?Sn=fQ7-obxt3>MHKG7 z7Z@C1<`$Ps@rSoX2F^b~1g7%gK@!dPL=)j79zq(}%Vz-=$~5d3r6AP`*n}vk;uL38nt?@CqtWng{-S@FV)<>jh<8`@egOfv5@=pQl4v~oocUi z5bez7U88&9S%9TL#N6d3+mjpla$~;1DNXv`{R`rHQ2u&lDgsFPYN1@vkC zMAq$Cr;s9~!PUZ^*Cj>(gZyZ6(P{r$07LI+(pFn^g72y!vun@6hCI5FyqO{d_sF4U zXVTJ}OuoFwa)v2gE2P#I(Eu55sBUG-E&mI!4iIJgo%5ST_dQq%g&L&vGT$TGmn}># zUp5hR%o&+$oZi>fbjV9|CcF3`n?~4`e~(#A0NDVA`K_nGr|Ln25%0#LJFSi2=?HTYs#XJqq5B)`Hr3W!|Z3}7)PN@ zP#8s%yv25@LJ)|f4v98`WOx;QSTEEmRZPnbtd!`(Eb#eAxFTt$>0VS0!jmSZ6+P#q zg}!F(H$vGjjC9hGlZP~0w7wH1OtpfjMB=vrd<8q)_mB-ioUYElwAr;Nvjs#|QFCb4J5x;oo4JUytx^L_R$U zk;~O9h`_%lg8?s=Ec$-BO*9N4qV`73kf#^4qOW^sR$i z6$LyzleQq9F=i-vh7u-qhUo*n4|@Xw^WpT`*l*A%_b z7*CwyhwV7>YtAGQCxIm?Rarp@(ek{}InGsi`mCXGHr$0lVG?{0-Ql+=j~2T;dH2g- z1e1#ZndN&ZQhFw++jXXnaT0fzAsbE^fQrKG!>7yn9hyOK(_u-x>@&C07B<1;7CBUc zwJ)x)M4est&x6ad^REOZ7T7Wb+yV*!j|>rTF1jpeKnSnt{c?h?K~v?`o%%b`i1&Ye z8Cgh5r0^zkfGn~m6)pGJ8(Xej2v|&V1TP`;c4XmMx^0#Fq3L7<+B(xEXPWU1qXnQ~ zpejB0(S8-P%Rz-IgvHlJWh8uoMQGtmi-whMPC;;QIY~|lG?V1+0Y-YBE^G4W4Bgw= zEl|i|zMB31_&oJngCM5we^bIxXu0zXf|1Zq!^Bn7@4)qmkpb1QCQE_laQ%)c5|N7C z+7YYRu4p|=GyEAM&Id%vAG+bxU-sok5B1K1&k<_t$TNaz-n77E_rpzbe5bpk9y+P% zS(DQ)df(G1NWzN;>Dja9j((odMkfY<(gki!J}hUaB48DD?|WlA9`Vf!t%uuKybmVG zHdT7t;;LF+PuV3QZ{u{pT|IMt8L_eZI57peOPbmvb;Bo5eBVhYX5$njS5ZBLlp0wr z&5$xnI*Ki+UB$@NE3NSlp-KI_ws)Ao^a#r5% z>Sc+y!Nl!g$Q_V!^%|PFOuJIxub~ZLiJ-S??q&j%lM8k2k3A5CmQntG&JZdxFHU*> z<=S0g6V+Pp;1NQXZK1r^hGV1+vK@RN9%(s7^hioahAQtyWDX)PU;cbOAo+r(dA{R; z@>m-0D@41}`%~x%#o~f4x%5s&z9Zz&yZ3CKtFEh7)Y1Mat@YR0uhV)5kr z62h>1B^A9mj}nwovbggEWb|3h3bm>`q;}|g}_b1Z%?H?K#}$%hamm6 zhZOtm^4LIOE@TNX-*ZA9Bp^loD74Su2KM*J_>;@ihZsy02)_y_*_ztPxKgT#*psr? z+O{ZV$w;^E3&dsFUgUyoIf|vZbDvRW!HAAQ(!S5Xo_vXcUdW;;f1g?Lit@$G=!DC! z-ZjrqFa2nM-b(JNBhO#~v=q~d@2J@qo?xMDUO!!?typJOeb0OjTLuF!1u896aJ-8$ zyZdSk@yT0=2oR0pK^h*}({ydvf%=+d>e#EsjEE85&yq0(s4y(1O83A|$wt5b#P@Mz zP>(78%clj?NIB7|JPbWr@_H{17+5*BHad0fyGKi`A}usj%t)b5(EkxVsU_12+KM8U z)j5Fk+-j_4PN+twJ(zNqvfZgtfiGu)4#J=Hujb8a1p|VW)9gM#8QqQ-vX{_Lrp~uZ zSSi;K;$7TQdr1Eh_xbwdRnI*c-gvKE`6b8In(!J8<1k^zG+-Ha z61i7jI-H%qJ&vQm&u*_aEud0BK|L$^LJ>y;5t|AL*PE^F>xeZymuaKPq#>+8e;s^@c6`;MlGwf0uq=mvaj3i`v^Ni*dIPu!GnqS4%t**v^VX3T~^MFalO;VULQH0#(Tg1UY-!vQHr!mDUagBbYadIlU2=w-9K2tq>8`t-@`?z8)& zmab_fP37_va~F%u?ib9C2)jU#e*0%3b-St|qSUWB(mo(B+O@hEs{XQJjK?oTusp^U zpT3j(f8G-1W@yRQ!?55j=*#lbo$%d)F3I|Jax}bO-Be6IRdUA~?@9oyeCVRqPEOB( zV?@ni-M6L6nZx;b#iv1K41N#zlUAV#43OX))d;mg|4c&h#S^xSZ&n}^FO>&Z%(bI- zx)}Z8(-{2TkK0bPMb{H0sNBrAI{^X_I~Wj1x#OLbqd+| zp0|Ja=*ctb5=tw!#$*9UMLFHuU@+q4u~(~ueMTC9VTK6}5%>nL0p`3I1={KoE5Oh02;_KC?24ZAlYfrPNK zM)e82)7;jh&0r;#Y|U^P`OjeF6EZATCe@)3nb#pHEZWv$DSfaV-CR(mV6y1pOSi?C zPDaZlt5#uU+HY2y;qor9Y)>gyb4(8Kr4XMY&#+;>aG}956HY!i z5t1Qz1GtL$gY|GLdmoc#0nA#DyLN1%v(*)h{U8~wT8sB1z>`h;#T zaY+(WU>7(w3$yH7kC zT?V-?f*o7q-M5a?U}$Pw&?1vW2|9i;pi~o9m^~+{^P-_)PH*S>0}`9QWgri`L10!1 zWe#QZ3H`7jzBjN}@Wn+tTJ|UjLh(cQOe7{yjpL5Q{NZD}Ol^0@4=&~mD>RWstYcBd zbEzKpWito-4c22+l@1lC0go>g<$@MSwcwrv^bI_K1wqUwFVsv7C{PEl)??MXNpKAX7q zYsw8c`!3Z)CF|VAHz<(XWXp3a{|xKsAzS#GqiBNbC!we}}cJrO8m>X{!kq&?Y?S%^=cH zzylsP3>tYSaY_{3nMS9kF)42iL})yvkT^tgGyHXQG&6b$I(HF(`L%z4lf|it3&pWE zwQI&?m^hXWwYE!ohqGbI}iVajV#Pf-dcSVZmDx^6>$-=0cLZe5bSsU>Cioyc-?RJ zWG>EjgtmVw6d$8SK1t+7YVj%zV0jYzUbA9FUR#7AqFxI^@Eh4-BwAo)wix7f5R8&+ z8>mUyjc#V$W}+*mXWU-%R35=Ma$~?L+v3GIPhKB1`b@`?PCejXIV|x zyFbm0oh;+bY8jaH`DvdW+bDyvrYVXmcj%#kqm3wQQFe&>2-gafY(q<%;;`g~G0(Q6 z$&}c=tPDY*9iHOIqD4!`83dUU%KQjw_;?wvKC%$LvPqh+$k{htq??d0L`ld0V>P*o zxZ1*<;8?E)I;SAM%Z{dkT%&a1R`e*cRn5__-#EoW8L=5>hVLD@VF=`_e*V7OFDB<$@*iRtu`GR7a#s)VZC8~r1ZpoH)9{>J(t z_?Lc}B5$xR$#YsA=niLS3L#{^3n=&kZBY)&7>v0v7(|FvW|?3y5_M=oa0-bbVjpir z3E3Vs7@Bkf8UmgoC5LVWpOH#|K*Dd(56*pY*ug_TCAeZ{LFVR$RBn*Bk{=uNqNVG* zexXex+4%;Ze)#?781Owhl7}t2>#he-|`U&x?KXD-P) zoi%c$-=KfT$nUF6*&o;{br9O+lJeV>9xGp<-c=|a0q^|}4eV=ufA2PIb@LG_vnyYs z8P8v(*I8Mzn;>~Lt~o*+mXhI_h6~It1FmbY$dSeQ_)qomdW$ZZq9l2zY=zB=I>X;L z;r##U$!N=bI@j!!Ss;Yw6>!7ZguSM~6nxr-ed2FfYpO(Pi(40Ed$KVXEYx`r&EyVI46zdffP}P9gM?}|J5!(%V-MN;=ebS^};>E zeYk+GhOh|2hg+Vhh8lKc zh8kg_;Jcsk(xMT5M5&YFRuRUYQ1vAgM445d%Wam!h;)^A&49ja^?4|}&6p$dJlcYa zx@LY=*Dm=6uGzj2;5G9GJ=E&?pys1sMwu+~i0-$605k~mYFoP^I8m%;!>4J=RhXzU z$#GK1it=p6>czLo<{A_;rWLF`KSIqu-2QW9JY7tV*pXP*TCnk9x z(3LFc#K3!7Z$F|{anYsBf)En8=7Od*lM?#{~7IsRd+~rA{ z=mtq<3XN}(;^%>f#%t%e-y*mz(bakdyuv}*s3j|VS&Pfo&7ko#uj8qVZYDwMora;= ziBLBRF9lsU_o;c2zWf%p7P;B_)2SZ0l8I2X1EuQ-!=Zt0l0Ou1f8Cu>H5b^eorFK< zmznuxWB={?)kZV3sW2RsP0%xq-uP}9aeonLLd`vsC4y%XL&n&`{m3p$~}$k~ZgBKoWr%<7T$&j`8x1sXiL!{6%KI+#|rdg|7&zA)`I zTeJu0&Tr~JoHttA06r%m4Mq2+n_y?uNkvhN(h)b_BJ^8vIS~>bjb7EK&S0&{qK35T z!Ew#1Zu;fUi;EmJP>x;}&%0yap3GE-;It+tq(NBof)aN0#!=(_nAUx1=~~Gfl|)2;8@hxPB(%jJ`Il zCFb(TSrG~w0(J26n^4G9jw^Z6`K#KoJL6X>*8$tBt)Gb*$B&K;BlAD}{mDpX#tOvz zA8gEhuRm$Bcwv&P+y5D8g$&emyMPDj;zv0Y3itwTL@NOZ47n5U}3CHKP;pqPZ_l5P!+g^&XN7dnE z=eQQ|@an}DU##1Gu)5#O%Gu;LvMQRvuR@d%OJBrS$*(JJ9h>lL%o}*BMnN#VN|mW& zF4;}dt%V*>1jW7$tz%#U0V{86Eh%@U-N}fAH+{oo0AdrcB3H4PHlwp(ZkiOaVD(V` zd~YjN`qbqm>uR_UWorlN%FD&Yh+t|BX%hGUWm2RD*bPW>M&qTSvs@ zbt`BgFQs81afBCkc~h}%N$SOIO?NG^?}i#Zqe2zKB2QztyTXoc$-RPhsc?_M;@)nW z{BV)0WyEk{nRfAwl~|KOmwEAj@IN6Farlw7WFWk>6LS+;UUf=JH)`x`Kkb}aU;geS zk1AYmeu!~_OIE`ry^>RG%{k{X0u=q5_y7swPhy(@4l6^m97wfV>IAL1HF2TVCqx>7 zWox}o5WTJmD}O~$dRlKnMX0@fg&doFlItw1S(84M4MczVffAOg%zZOFdlW4!xC?Fg zJ;y!;%^nC+2Hp&lm~=mV=*fxG1ilqL@mwukl^aXhmHwBrFWcoIflP^>=Hg(Il7WO# zXEb021+xQ;@K+`WcBQ8xOouNry8@+DD8`Vm@$RJ!V$fG^kb2+LLDDbhGxHmdq)Vlu zE^)JRPQwQ4WXRdT?Jvo-aMelUzh2S_;~!95IjCNuIS-r+;FKmSd3 zr}L*Y)o|;Ga*@oRAIF5bF08z``o{5&32C#Z#e>3UFQk#Gg4RKs(a)0ASokbh5P>Vtjm6--fU`=A=BP%^_BsclL7!0YIc8Sg|m@&zh+(68ZUmY`| z8$m~sWyh8+%Wi5M$^hgz6^AI#fX*AQi~jm`SsVOCnx0>vHaKPHt8(*c-1b*YKZE11Cf~ zp}EGJsPDr1hDv+1#f>}QT$In=IXP0QP<~~`rJ<(YVMqe+($aurd^HctsW*j~56b zsrlZcg3rGp+@a8=cmI%~Pa1Vm59F9f4`FB6t>yiqPBHo(!a5=9`!1D)hyNYj?(YC% z5j@9+Swsy@T?Mx(J;l`UA71Iqy4C+P<3c_!BM;*BcX}No^lR=hE2^kgnm~DX=uqNX_6@_YQyYs39rl=OwPbH_!AX??He{m{~ZG^!X*ED*a1pA%bkM@xb_F{@d;HS{i_SKmn{`SvASUBjo& zmSW~G7ECzfnx_xk@U6}PHm!8a_h%eHk|XiI0&87HBvwCFu3v@wCm@eOWciAQ-q+|0 z06W*78@9iyJA zfbiuzTPB7@kS@Am=@2ow-@f@2?o>x)2Ye~lZT*uCPy`Dwcz^fK}QP3+J1N7ddN*XYdyPuzp2!Ap#zIn_2Yi|4w-f%~ntM~wLqxuFquDP8MjLXa!8%F*p%;k9{ zmu>bYCR1!UU!PBH-88!FYU*|`$XNH%%_E)Q;_+PG5xX2RTKgd~0@>U8e27g3-%2<6 zULTC#I)ez&-1V0{^z6v_TIP~+fS#LE)s49%gxb>u*;@-O+UIQMQQ z&rZyrVXfDOu|k_APqi#RW8ecB8tBVQF|Kjx%xH784R2P$c`Vcobl~!lhAy`)rSC*a zepX4h^}3hSJ%+{T+l9TL)TezuJ4i+7*wuY@2fsTP5!}{B2Ni`cM7wL|RTqW)nJtfY zp*>6&Q9ApIf9*#pN%e&1=O-R?n zG7FFpL?VKON*NR?$Mw?v4k@1<=kNtYe@4yTZo0bD4kE;AFcPx#m5Qq-m zix)z63HNTEvt|JJnJXL~ur(bkGKc%U!iva$ureu=%^!raid;GgEeuz5d;+7*3QGwW za~VGlJns~38rMTzDhVg_}PUM#4u%|X~+N-~LMx7ha56~RMXqLwya|LJfp zb(m#FyajnpfArsPNPzYspH^wda*vB=m$lnKDS80{U`6MdV&S*+G*ObJFj^E{p3H@q z<#v!%Q>ABJJDWj`%e*XTo#sXF+>C8a;ZSTHDe;1eB)vSo)tyjWFVMhr!lb@Ih!#tp z(I5H1se^1;s3^s66vVX=^4)gB_I4|=Cdo>VK$#)O_SCB;bKA7IA9Tso=qVe4LdFb> zwIX1Ub!K??`p85&d5YU@Oqr8P&J{1cGEWPP2RzfXeoGfG$ZN zmtX%O)9>a6e!Z5ZYya6(n3hA1U-?=(ss(|N_`|11v+e5d~B&yVf|(54d#eiE*_Dx5EM zcg>McP?>$HBIQ>LVrbg^$C+MF*aj!VbZ(DQ-wPLmLgRPRI3>sWF0@ZH`tpKz0SfL- z)X4RTk;jg>rW04~ZN{YAF_saI6N^(&YVWFtP_0 zkvKCZOv@XeLO-QGP-~&zmZh>{gSEy%G{Y(|-(tH1e=&s|14F@`mnUdRj;=A5#rY;{ zZ3RJp>GL=5khQn=K4f33`QE0?Vpq&2s}zl=)oi{w$Hh+6D|ga-GZ26pl-%s_<6|Qm zXM-#85qhjl8z5v(}JkMCIxT1*sAp7cCQeD%R9gm~yu4Kxi;Uo#n635YDo3q-Z+*lV9B1<4i+4XfkYtWh;n}G~0eh`N;ugS3tr~Mc(Vrh41QNE{5M* zEfa%s6I)i}^4ZLLa3pDv6j)L$!Sb8M*CK*28~gmrJH5D8)UiU9&JvXW%8?n314eU2 z1zsS$@CN-f;wj>NZ2O+6j7DnP%R}pL4V_IaE2jD0pHu!V#cNFx1mNGhB}cZ`X5c4! z{-KEj(?;G;IQUj*ABzc3R2)-zg3UoKp=?EZK-22|fPa}csGc)IjHf5Bg^cw(Y!C+B z#I|B&e3O{yyQY3Jd?+Rn2z{pcbL*nVc4;rb=DYNt!Vg0u^ z6|`}#tN6kxc88Zp_r{Eu{+AO{!R9U7Dq?bU?i8yCN4~4zkY7PQVHCxjrnUE8%$tT0 zF&&{GI#(O!>K(Lj*1|Gz)JJg}|5Ekew%W5poG;18fmAyfBIFSPaA#YX3Y1rE)AxJ_ z6ES>@DKEM71M^x8YAmT<*#gT_@PhOT6VBJ5cn0Ywdr@NS#{;eq^OjJSB8aIIX&6fz z;wsiIp~rz`aBL$rMw6z=s|eawCmA80)szQmCBK?^8^*Js^{s$A*6x9=OI6TsYPS*T zsQvWoya?K}?}Xl1exoy1{1`Kl~}*kT)}fSs%D>@PzY=>o}`a(`o&zE)Xf zJS)X%xCGRxK%?T;rmE8MdCwM{^_67!&MLoIkTfUHNwgZ1aVW1&4GWGQxoR!}w3LYc zS(ncfYl0eb#ZuOiX7MqKre{fSCvqn%q zex4bs-fs|3oHd(&_-=R~*Ehx*>HUJs+R>lULNB8GG{x@B+Lq^>?mpg++dQpjclA;3 z?aZPSC9n58`-jbh3aHkf?+mU7b+8c?SiXhQxe74*Z=<2mn3v@sK8g$YA0a5D7ez_b zE)L-ljCIs(TT)yOlz|***-9r}yln%64KJQ(_I6~#!MEJcZ$7x!)WbVr<6AL_nuixb zw8G$mR?rv>jMHIg*=u^!S-quf^e3E3bDN5mZBo{B6F-~CIFG9`*nu<&Zq>ziWY&5W z_>`zIEx^|9<4dVQw4S(m9ZYN^nnJO*4VrfREMo9Gk@!#Faz|^9b;5C)_VTZlpxn6Q z>*CYwRQ3DeZ5Q?qY}IRJ*cfm5zjzlcXCI^A4u^-h5+cI`u=f?JL#O|{ZKC53Xl_)2 zW#J)YK!nsg5W)1TffNS4qy9e*7 zL@5+thR1npDi)=J)OOo7VN4l{`q2xw%l zqG)*Ok5Ld7?DXYPv7J%+=~AN)p172uW{hBP0Ao;5ir0izWSb#yWmF?jH-qqX4hoce zYD8SZbnSd9XM~_uU$_D>95dsf&4Xm=ru;s2`V0@i6Co%e&qeq*Sc%OrF={;daZPDV z-eH>IcFL`NOL9sQ=?UG^1g}KHbK>}`u;^o<5@b;_cIg=Y)}{}_txeBTmYANuJCR9! z+E!<;(%q8U#}`W{YwOj7$v}E{f~!5s9Y@Irr%q7t0Aj4@&E zw|+%H@D|M?)>T3b7>d%WyD6RG?}9X*;@6ipI=`smW3!_q=0Cw=a>i>iNLs2=17T*Y za)j{v4D7f?lwRuUnR&U1_>;8rF1h$;CAA{Km*^l zyp&(Wb$#TrX#`%V>JBPX)6de7)6Nig7~m?T6OAw(>-CHqO=ehX0-Zhsb-70=*Y87qOr)4%lagJLvC(nUdG@qIJ%QKP`NwDOAhiHA#jp#nb zXuI;8tP^atWZfe5BDS}-)UhS`MK`TOymX?EUK}`R@w>FS>gP3a3bUeTB=X;bj9cnS z*)5I_^J~f=#B*{B1(L?kv#D7IxiDVmXH(~5=V5gVCq|dbq@PEV9qh*kYGxY)UR2^@ z=a*@l{7t{wioQmJsU(Nho1r4t-jT#kB|75YIMB2`h+Q1$6?SKqx$y3RT9gthcsi=w z;MBG6#%#tCIF#;wo6q>b5!1UX*(&$siaiw{rdT$R@F>CXyYGd#W1DM;ms?1`Du=9q z&DQRQYADwk#p&feI>iarY-T){{4JA!Z}C-f49hkjkECQ+UEqpcdympOm4XR=KSQ0E z?S;NXtV=32{)DuhaOhFQgWKXbGYoluN0sLuip;BZvp|AKX{O)|HTyx#=}zTP>E|Ak zMgC);AO3&3oI2PCvgRe#M|-rPeHeCuS?5bh7dX9k?fJ!FY>w1Ojy5Nn`3V% zcN|VNh|OM|Gyj)gfVRDcbM4F!jgefU!S!zZk1T5?fy)NHikXl2xVPM%K6>J$3`Tz= z0n0VMia@#hH4<&l8MS>C^YW_8j-ZC3qxm}u&+owvH^1Di<;E6(S5V|&%+ z9>|*vIQBV7+e4>9VJlUl(ad-^)G0yi8L^bHt;h9T%I25i$i;CV1|Q}ed;X74 zZ*BvJKzuU~x-#EyT^p>ueLi5G%Qxd&u|U0(U!41os4QH*76I^bv|F*@$$%tXVYEIW zX@OXnCT~xM-2COMoZgk3wQg10C=2=ot=4 zeT3IahO~r{RUZZ}n$LiG-G4AzepsPBD%;G-R%Oc$NCVN*E!p4#lTRk(e~iVu)I9sZ zad=HvYNs&fS`WKEvq5M$QY$!m(ItK@bkjaA%|}};VPH@ry?CURL6!&twmJ4kED^Zy zqxTZn{10^NobwsWl7_Rg>Z8C#!?f1qrdHl`t|sSlo+L_J^61Rn!BS*J&LPak|H7^V zH1;pHN#a5;eyU$zGN~J?eUPm(N41LwHnNES|n3wFGVB(L5K*k19XA=n>mf$hPzftq-XUgNQM#H2m`a_>>?lI&V5SP9}oz z4&;|BLXE|K<*o=agBUorpx!fxk7$W94tPBaxlfjT+Kt0{df)Ii%p>1gib&pszP!I| z307L|e8oW{@m`$@B%^=f)gl7;rtt@vXZ?>q{E|T&VQ%e5BzqEp85p|-cu41zENZ>` z$iS28DqpPrx(*|6Fytkv-{)n5@Rboj8I{LlUX(EIUy9Gj0E=%+Ol(q(=um;?g(f0J zW2OvkYZ&nh{}gYQi)t)}s>D+3E+QE`L+o$E_jxl|vV!Qh+*Xu*Oat-4#=OmUmycUT z6K|1!H68@=MU1s-J4<^H)~}5!6!PVK-NjL?TghFg9OZUQe*G~Bd5j#Mh) zwqLGa#<4}?#y-VGn|`pr8X{me$ZpT-e3ABsFtFYJ1vH zDZL%La-fNB#W_g{P!#(w(>@*)y-COT8aKb=mkUMf#^Qc|Q0B9nN2QQQ7A`b>^f`*i zyq04D(>f-E{TE2U*AJ!GH3nF5RmzgmTYD|=y}0r=CE+C)xY3Bis3Cbu;|t-m9=t(Y+;ftpph=wV}-+VjYMc5MGVYBcp_{dig9wmX23=7xb)13!n@s{ ze+MX5=^5*L?ZOkKT;obH%;RmpKF+H5zU#D~=#F{IX-xzR+qU6@J6tRVp7>I0IN~QV z;CPomCb#*QFiz+DBHfk^rI7ByCmPu?*I*Jl$5N`$o5J#Gr#6pB&UD-($MpEcGhsL$ zD->*%0#gb|dUSf$E_6@*7C1!cEp!67REP=|5snc&E<^;QTnFA4VgNnFrhNVVCdey1 zNEL0 z2wHa^h4qwrs`wg%NTt~S@c&`28~H&#YJL)+5*|h}R&&ETEF5r|Or=LrP)jV!5~>EY zTP@v{^lk_-C5DHtRDpnnK7lJ;)Kh926MbxxiRV;P-8`08Dv*=N-82&~`{m|~+DyG# z(-EB?JMQ7c%Znd0DG7`(%jNj$)d%c1L8kI)4plEi)*_Aj7$>ZzZ zoa+2qXV~I_c6Fb2RZN9xCS~CN-@J53BOI zg%k=hT82efe9F`eMoo>e(gwiUB1F(0;ARnC7(oE|T7(5=ejWVwBNK>;n_}>*&h$~P z1z8MN8Jd7~5!K2a9g-e=lj8cZzkk&rHJ|iYPoqi==PUrK9Rbndzm)6RlTy`VP;&JM zL-{a#KGY6qba`%0o7}rR7`pWdCP^5lmGDw@0Q)ZI8tDo%QI}(dMf~3XSqH){zNnN} z)GNERBE5U^0*NLoV3rT+5q5cUx$~I?YGY(AZhS}o59ztc)rwKo@-Zrzpe2dN5a?~W zzF)>iO-f?RFuBs8PfOy5waF3(DMx!@nx-wTws^(lAw=~D14hCtY{dx^=_u5O2rlOq z?-Yt<^zD;65Ja&X{_w{$S#}X>P!0w=9yCZYS$N|JX$y#naFz=5UgxGHEG>eZmq+O$ zG63a>)6iQC-$X&dTnNq^v~W~7ny>CHcPf8$>N1W{PbG4d=YQ@w?d`DK8-AU1P;+j1 zy(ZJ7%7c|Cp2}K6Zd8mKl#jvA0xg+rwK1a1YJh|!N?kOvAuyBG9BesO@v->^3IOWK z9KDoBo>W|h&LB;j>-w+2F3e?g%`TYz$xXY#(8Kt!))(LT9z*@e<`>ycMyjvKw_l|O z2raCEo096N|aiK6t%vrr?g24ZX+BTzppCD7>eI0&zwYg<4p@0m|_y zEl??48}AAZ?|bF9ZH`Ay*o2+~x{S2;N$I7Fh=KCnax{742Z6px2Gi{wTA!X%J_wln zsV_GdmA-i?emp!!!EuQ9O!NV5@P0s|6Nd%4kcq<@9{unG9ht?DFj!nU8vAAsee&G0 zL8-@tsvp7^Os}<7WcOkB-mZ*^u!cR6s$1-aOhtQ{*&3{zN87SJ0UD%Ve*EZYC0+F; z_Gw4{pT%RJco6p*8@o;@-IM0`ZecUTHGgIKk5&1PsllcmAprijq=#fhA5I6B$R-hj zVEwoD9}~~K{5Fi)#TxhnuYDwDu6u8#`fH@jf7eYJ33C0DdFO# z?aN2V3Qs#1bMC22?r5%YO-u^xiWbL(Elo{+n`3K83Z{z!x;W8)+Ug4*^=HiRcY6Bx zaMAig{?EpHh+W+c?aSK&xtgE=C4&KuH2+|s$i1UYUVVZgn(n5qRCT_>J4t~tSKo6( z0?DA1ph@=`(`L1xxg9a39|tG#yy*4xP!0YLf&VlMs;1eyBGH z&PZIe0&whY>c|~!HGzK23On*4!HT)iOr#co|6ruZg^DYcV%Da)H4TZZO*O#A6o{K@ z*|(D9RuKbJUpFp!>j5^E&;>Qe7-J<4i5mD+y{V0qG@0DFdjE7v>>4oQ@B?;5pUe}< zecDE(%@m2$^i$7&5uE+D<0|WMdPhQHV?RjI?ZL>A{{zyjFzJ`}>_?~6K6dHmafn52 zq!6ph{i3nwyPqd~UWIpj>>3?v!n`&&V{6hbA6XIF7tzHDZ9xA-suW+2EM_>Ho<8=g zA!*i&8owWXcpt0i-=qYNI*xib{IRsP`OsNc?T3^s;7(kmEgj?1uX#|=1h(&=43i`8 zF_CoS4Gx!0nt%4o#T47<{|p~sq5c7?8ZV$|mOXLZQZ0Z<CV7*`bKN1F)AFY^7Ye z0k?mm1>JZQwptcR?^MhjoxF?qPb_Lls__Pw$RueX`{yQUWhwqR3J6c{b(Y0J%B6ZD zBJ?L0n$sY4on2Uz9)F9>K2q#Z*GMU$V5M5@OYQ~@sW20odBfRLYA!fKaIMY(lCgW0 zcBTL<#lJ;&>;V$P!1=jc()@#8E-2}r07)>T?6tdZRUW|zpz>};neZ~9RxP%eXcV(M}$eS9a2 z5G~Z!ferCLg<2gg>Vk%!Ls5wZEy-S8v%I%sLIPCr863WmM(kn%4gI42E|~{)xgnY_ z^@Q`wJe?&)wEHB%zA}GN)#&n2$K{}%h8sU(&uc1NmA(0UYGG|HZn|(jre~WTAL+i> zUzXf=xym*v!o2qILHgiz5Wo7}tq`|#x3pL|Um!z~=8%*t;3@>BC?vla=elL>Ob9Df z2EwhDUMyr(ss*}M_s~T6!W<<``|Q!CM?xAZ{HIH_s1PrE;dGt5CynM~7YjCqiA`e1 zJJ|&<_umhd%-pC?ctC}^cRVrXObb&X;I$U2Tr!>=%5azbB40v*0*P3*s}7-oDX#HB zk*6mXxrkqwOuKLLgJ*+Yo?oEu z__L~dvS%I=2@3_ag$HK#paW4Y<&~Gz`7UUPkyUNCj=o2`KiZ2B!|BwRVx3+HP(1ej zaw{OT%-fw8k0{?^%aAZ9w4=pa&!bF0NnWUHYaug?>G_c}h^9#@OjWPiZCF$hCut+z z$()PGLtaMHY=UkP5T&f8UHT<;s93NneUWCUc5ZWNDJwWGUYozW&{6+`QGv;)ma}LI*MsSpJuRW|B z+RHRGCikM7yQ*F!(^*HnYjcgO5n(^p_NSz;sdgj5ek|)1fzpq6uOC->bF}i*)ceJj zHy5k4jY@o$aITQNnc_-yNRirMTkwK)PbTb)lT9ux!RD+P=L9LI-{nfq&y-NCs_592 zNS+Y#qZBEVk0^W$Cu~k~ z#df(FQcGFo91}E!8*v8_Tbfq_jvorvu-)CAH$RpCxEKpNG97OLI^OcoSJak0kA;yw zzTFJypc^lakSokdpRMh;>hkWL^$j3oS)0}xVcm)Yx`OO`Houz@0_B2|OpDhxg-$NEp$VH{Rx&$!EgCqv+z9~a3S64Omamj~(f zj?CaIBHlQVIKrtwk-Y1LfWD_e-tK7@rrp?&EwcZAcZ2|sdhh? z8>T=y(0?1){rUgjO(Ve0{(!%&W&WhlN8mw!YO4R=#tBeFue(kB_ww^+K>{lV;J@yq zfc^Kv32lD@Ei5P~BCXf=e^Ur7yf!@m|1`bh zV)L-IQIv&-!GrzZjV*LxRQ{ix-*ShYfuTL)*}lhHxf5pehaX>CRZhWD&M>rkvpZkU|dqRO_v5hMx#f}x2q delta 17313 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 Lav0)(-;MtV;)Q|V